(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else { var a = factory(); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "./src/StructV.ts"); /******/ }) /************************************************************************/ /******/ ({ /***/ "./node_modules/@ant-design/colors/dist/index.esm.js": /*!***********************************************************!*\ !*** ./node_modules/@ant-design/colors/dist/index.esm.js ***! \***********************************************************/ /*! exports provided: blue, cyan, geekblue, generate, gold, green, grey, lime, magenta, orange, presetDarkPalettes, presetPalettes, presetPrimaryColors, purple, red, volcano, yellow */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blue\", function() { return blue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cyan\", function() { return cyan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geekblue\", function() { return geekblue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generate\", function() { return generate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gold\", function() { return gold; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"green\", function() { return green; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"grey\", function() { return grey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lime\", function() { return lime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"magenta\", function() { return magenta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"orange\", function() { return orange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetDarkPalettes\", function() { return presetDarkPalettes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetPalettes\", function() { return presetPalettes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetPrimaryColors\", function() { return presetPrimaryColors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purple\", function() { return purple; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"red\", function() { return red; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"volcano\", function() { return volcano; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"yellow\", function() { return yellow; });\n/* harmony import */ var tinycolor2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tinycolor2 */ \"./node_modules/tinycolor2/tinycolor.js\");\n/* harmony import */ var tinycolor2__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tinycolor2__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n index: 7,\n opacity: 0.15\n}, {\n index: 6,\n opacity: 0.25\n}, {\n index: 5,\n opacity: 0.3\n}, {\n index: 5,\n opacity: 0.45\n}, {\n index: 5,\n opacity: 0.65\n}, {\n index: 5,\n opacity: 0.85\n}, {\n index: 4,\n opacity: 0.9\n}, {\n index: 3,\n opacity: 0.95\n}, {\n index: 2,\n opacity: 0.97\n}, {\n index: 1,\n opacity: 0.98\n}];\n\nfunction getHue(hsv, i, light) {\n var hue; // 根据色相不同,色相转向不同\n\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n\n return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n\n var saturation;\n\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n } // 边界值修正\n\n\n if (saturation > 1) {\n saturation = 1;\n } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n\n return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n var value;\n\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n\n if (value > 1) {\n value = 1;\n }\n\n return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var patterns = [];\n var pColor = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()(color);\n\n for (var i = lightColorCount; i > 0; i -= 1) {\n var hsv = pColor.toHsv();\n var colorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n }).toHexString();\n patterns.push(colorString);\n }\n\n patterns.push(pColor.toHexString());\n\n for (var _i = 1; _i <= darkColorCount; _i += 1) {\n var _hsv = pColor.toHsv();\n\n var _colorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()({\n h: getHue(_hsv, _i),\n s: getSaturation(_hsv, _i),\n v: getValue(_hsv, _i)\n }).toHexString();\n\n patterns.push(_colorString);\n } // dark theme patterns\n\n\n if (opts.theme === 'dark') {\n return darkColorMap.map(function (_ref) {\n var index = _ref.index,\n opacity = _ref.opacity;\n var darkColorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default.a.mix(opts.backgroundColor || '#141414', patterns[index], opacity * 100).toHexString();\n return darkColorString;\n });\n }\n\n return patterns;\n}\n\nvar presetPrimaryColors = {\n red: '#F5222D',\n volcano: '#FA541C',\n orange: '#FA8C16',\n gold: '#FAAD14',\n yellow: '#FADB14',\n lime: '#A0D911',\n green: '#52C41A',\n cyan: '#13C2C2',\n blue: '#1890FF',\n geekblue: '#2F54EB',\n purple: '#722ED1',\n magenta: '#EB2F96',\n grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n presetPalettes[key] = generate(presetPrimaryColors[key]);\n presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n theme: 'dark',\n backgroundColor: '#141414'\n });\n presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudC1kZXNpZ24vY29sb3JzL2Rpc3QvaW5kZXguZXNtLmpzPzAwOWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQzs7QUFFbkMsZ0JBQWdCOztBQUVoQiwwQkFBMEI7O0FBRTFCLDJCQUEyQjs7QUFFM0IsMkJBQTJCOztBQUUzQiwyQkFBMkI7O0FBRTNCLHdCQUF3Qjs7QUFFeEIsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSxVQUFVOztBQUVWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaURBQVM7O0FBRXhCLCtCQUErQixPQUFPO0FBQ3RDO0FBQ0Esc0JBQXNCLGlEQUFTO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBLGtCQUFrQixzQkFBc0I7QUFDeEM7O0FBRUEsdUJBQXVCLGlEQUFTO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixpREFBUztBQUNyQztBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVEOztBQUV2RDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTJLIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnQtZGVzaWduL2NvbG9ycy9kaXN0L2luZGV4LmVzbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0aW55Y29sb3IgZnJvbSAndGlueWNvbG9yMic7XG5cbnZhciBodWVTdGVwID0gMjsgLy8g6Imy55u46Zi25qKvXG5cbnZhciBzYXR1cmF0aW9uU3RlcCA9IDAuMTY7IC8vIOmlseWSjOW6pumYtuair++8jOa1heiJsumDqOWIhlxuXG52YXIgc2F0dXJhdGlvblN0ZXAyID0gMC4wNTsgLy8g6aWx5ZKM5bqm6Zi25qKv77yM5rex6Imy6YOo5YiGXG5cbnZhciBicmlnaHRuZXNzU3RlcDEgPSAwLjA1OyAvLyDkuq7luqbpmLbmoq/vvIzmtYXoibLpg6jliIZcblxudmFyIGJyaWdodG5lc3NTdGVwMiA9IDAuMTU7IC8vIOS6ruW6pumYtuair++8jOa3seiJsumDqOWIhlxuXG52YXIgbGlnaHRDb2xvckNvdW50ID0gNTsgLy8g5rWF6Imy5pWw6YeP77yM5Li76Imy5LiKXG5cbnZhciBkYXJrQ29sb3JDb3VudCA9IDQ7IC8vIOa3seiJsuaVsOmHj++8jOS4u+iJsuS4i1xuLy8g5pqX6Imy5Li76aKY6aKc6Imy5pig5bCE5YWz57O76KGoXG5cbnZhciBkYXJrQ29sb3JNYXAgPSBbe1xuICBpbmRleDogNyxcbiAgb3BhY2l0eTogMC4xNVxufSwge1xuICBpbmRleDogNixcbiAgb3BhY2l0eTogMC4yNVxufSwge1xuICBpbmRleDogNSxcbiAgb3BhY2l0eTogMC4zXG59LCB7XG4gIGluZGV4OiA1LFxuICBvcGFjaXR5OiAwLjQ1XG59LCB7XG4gIGluZGV4OiA1LFxuICBvcGFjaXR5OiAwLjY1XG59LCB7XG4gIGluZGV4OiA1LFxuICBvcGFjaXR5OiAwLjg1XG59LCB7XG4gIGluZGV4OiA0LFxuICBvcGFjaXR5OiAwLjlcbn0sIHtcbiAgaW5kZXg6IDMsXG4gIG9wYWNpdHk6IDAuOTVcbn0sIHtcbiAgaW5kZXg6IDIsXG4gIG9wYWNpdHk6IDAuOTdcbn0sIHtcbiAgaW5kZXg6IDEsXG4gIG9wYWNpdHk6IDAuOThcbn1dO1xuXG5mdW5jdGlvbiBnZXRIdWUoaHN2LCBpLCBsaWdodCkge1xuICB2YXIgaHVlOyAvLyDmoLnmja7oibLnm7jkuI3lkIzvvIzoibLnm7jovazlkJHkuI3lkIxcblxuICBpZiAoTWF0aC5yb3VuZChoc3YuaCkgPj0gNjAgJiYgTWF0aC5yb3VuZChoc3YuaCkgPD0gMjQwKSB7XG4gICAgaHVlID0gbGlnaHQgPyBNYXRoLnJvdW5kKGhzdi5oKSAtIGh1ZVN0ZXAgKiBpIDogTWF0aC5yb3VuZChoc3YuaCkgKyBodWVTdGVwICogaTtcbiAgfSBlbHNlIHtcbiAgICBodWUgPSBsaWdodCA/IE1hdGgucm91bmQoaHN2LmgpICsgaHVlU3RlcCAqIGkgOiBNYXRoLnJvdW5kKGhzdi5oKSAtIGh1ZVN0ZXAgKiBpO1xuICB9XG5cbiAgaWYgKGh1ZSA8IDApIHtcbiAgICBodWUgKz0gMzYwO1xuICB9IGVsc2UgaWYgKGh1ZSA+PSAzNjApIHtcbiAgICBodWUgLT0gMzYwO1xuICB9XG5cbiAgcmV0dXJuIGh1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0U2F0dXJhdGlvbihoc3YsIGksIGxpZ2h0KSB7XG4gIC8vIGdyZXkgY29sb3IgZG9uJ3QgY2hhbmdlIHNhdHVyYXRpb25cbiAgaWYgKGhzdi5oID09PSAwICYmIGhzdi5zID09PSAwKSB7XG4gICAgcmV0dXJuIGhzdi5zO1xuICB9XG5cbiAgdmFyIHNhdHVyYXRpb247XG5cbiAgaWYgKGxpZ2h0KSB7XG4gICAgc2F0dXJhdGlvbiA9IGhzdi5zIC0gc2F0dXJhdGlvblN0ZXAgKiBpO1xuICB9IGVsc2UgaWYgKGkgPT09IGRhcmtDb2xvckNvdW50KSB7XG4gICAgc2F0dXJhdGlvbiA9IGhzdi5zICsgc2F0dXJhdGlvblN0ZXA7XG4gIH0gZWxzZSB7XG4gICAgc2F0dXJhdGlvbiA9IGhzdi5zICsgc2F0dXJhdGlvblN0ZXAyICogaTtcbiAgfSAvLyDovrnnlYzlgLzkv67mraNcblxuXG4gIGlmIChzYXR1cmF0aW9uID4gMSkge1xuICAgIHNhdHVyYXRpb24gPSAxO1xuICB9IC8vIOesrOS4gOagvOeahCBzIOmZkOWItuWcqCAwLjA2LTAuMSDkuYvpl7RcblxuXG4gIGlmIChsaWdodCAmJiBpID09PSBsaWdodENvbG9yQ291bnQgJiYgc2F0dXJhdGlvbiA+IDAuMSkge1xuICAgIHNhdHVyYXRpb24gPSAwLjE7XG4gIH1cblxuICBpZiAoc2F0dXJhdGlvbiA8IDAuMDYpIHtcbiAgICBzYXR1cmF0aW9uID0gMC4wNjtcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIoc2F0dXJhdGlvbi50b0ZpeGVkKDIpKTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUoaHN2LCBpLCBsaWdodCkge1xuICB2YXIgdmFsdWU7XG5cbiAgaWYgKGxpZ2h0KSB7XG4gICAgdmFsdWUgPSBoc3YudiArIGJyaWdodG5lc3NTdGVwMSAqIGk7XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSBoc3YudiAtIGJyaWdodG5lc3NTdGVwMiAqIGk7XG4gIH1cblxuICBpZiAodmFsdWUgPiAxKSB7XG4gICAgdmFsdWUgPSAxO1xuICB9XG5cbiAgcmV0dXJuIE51bWJlcih2YWx1ZS50b0ZpeGVkKDIpKTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGUoY29sb3IpIHtcbiAgdmFyIG9wdHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICB2YXIgcGF0dGVybnMgPSBbXTtcbiAgdmFyIHBDb2xvciA9IHRpbnljb2xvcihjb2xvcik7XG5cbiAgZm9yICh2YXIgaSA9IGxpZ2h0Q29sb3JDb3VudDsgaSA+IDA7IGkgLT0gMSkge1xuICAgIHZhciBoc3YgPSBwQ29sb3IudG9Ic3YoKTtcbiAgICB2YXIgY29sb3JTdHJpbmcgPSB0aW55Y29sb3Ioe1xuICAgICAgaDogZ2V0SHVlKGhzdiwgaSwgdHJ1ZSksXG4gICAgICBzOiBnZXRTYXR1cmF0aW9uKGhzdiwgaSwgdHJ1ZSksXG4gICAgICB2OiBnZXRWYWx1ZShoc3YsIGksIHRydWUpXG4gICAgfSkudG9IZXhTdHJpbmcoKTtcbiAgICBwYXR0ZXJucy5wdXNoKGNvbG9yU3RyaW5nKTtcbiAgfVxuXG4gIHBhdHRlcm5zLnB1c2gocENvbG9yLnRvSGV4U3RyaW5nKCkpO1xuXG4gIGZvciAodmFyIF9pID0gMTsgX2kgPD0gZGFya0NvbG9yQ291bnQ7IF9pICs9IDEpIHtcbiAgICB2YXIgX2hzdiA9IHBDb2xvci50b0hzdigpO1xuXG4gICAgdmFyIF9jb2xvclN0cmluZyA9IHRpbnljb2xvcih7XG4gICAgICBoOiBnZXRIdWUoX2hzdiwgX2kpLFxuICAgICAgczogZ2V0U2F0dXJhdGlvbihfaHN2LCBfaSksXG4gICAgICB2OiBnZXRWYWx1ZShfaHN2LCBfaSlcbiAgICB9KS50b0hleFN0cmluZygpO1xuXG4gICAgcGF0dGVybnMucHVzaChfY29sb3JTdHJpbmcpO1xuICB9IC8vIGRhcmsgdGhlbWUgcGF0dGVybnNcblxuXG4gIGlmIChvcHRzLnRoZW1lID09PSAnZGFyaycpIHtcbiAgICByZXR1cm4gZGFya0NvbG9yTWFwLm1hcChmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIGluZGV4ID0gX3JlZi5pbmRleCxcbiAgICAgICAgICBvcGFjaXR5ID0gX3JlZi5vcGFjaXR5O1xuICAgICAgdmFyIGRhcmtDb2xvclN0cmluZyA9IHRpbnljb2xvci5taXgob3B0cy5iYWNrZ3JvdW5kQ29sb3IgfHwgJyMxNDE0MTQnLCBwYXR0ZXJuc1tpbmRleF0sIG9wYWNpdHkgKiAxMDApLnRvSGV4U3RyaW5nKCk7XG4gICAgICByZXR1cm4gZGFya0NvbG9yU3RyaW5nO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBhdHRlcm5zO1xufVxuXG52YXIgcHJlc2V0UHJpbWFyeUNvbG9ycyA9IHtcbiAgcmVkOiAnI0Y1MjIyRCcsXG4gIHZvbGNhbm86ICcjRkE1NDFDJyxcbiAgb3JhbmdlOiAnI0ZBOEMxNicsXG4gIGdvbGQ6ICcjRkFBRDE0JyxcbiAgeWVsbG93OiAnI0ZBREIxNCcsXG4gIGxpbWU6ICcjQTBEOTExJyxcbiAgZ3JlZW46ICcjNTJDNDFBJyxcbiAgY3lhbjogJyMxM0MyQzInLFxuICBibHVlOiAnIzE4OTBGRicsXG4gIGdlZWtibHVlOiAnIzJGNTRFQicsXG4gIHB1cnBsZTogJyM3MjJFRDEnLFxuICBtYWdlbnRhOiAnI0VCMkY5NicsXG4gIGdyZXk6ICcjNjY2NjY2J1xufTtcbnZhciBwcmVzZXRQYWxldHRlcyA9IHt9O1xudmFyIHByZXNldERhcmtQYWxldHRlcyA9IHt9O1xuT2JqZWN0LmtleXMocHJlc2V0UHJpbWFyeUNvbG9ycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIHByZXNldFBhbGV0dGVzW2tleV0gPSBnZW5lcmF0ZShwcmVzZXRQcmltYXJ5Q29sb3JzW2tleV0pO1xuICBwcmVzZXRQYWxldHRlc1trZXldLnByaW1hcnkgPSBwcmVzZXRQYWxldHRlc1trZXldWzVdOyAvLyBkYXJrIHByZXNldFBhbGV0dGVzXG5cbiAgcHJlc2V0RGFya1BhbGV0dGVzW2tleV0gPSBnZW5lcmF0ZShwcmVzZXRQcmltYXJ5Q29sb3JzW2tleV0sIHtcbiAgICB0aGVtZTogJ2RhcmsnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyMxNDE0MTQnXG4gIH0pO1xuICBwcmVzZXREYXJrUGFsZXR0ZXNba2V5XS5wcmltYXJ5ID0gcHJlc2V0RGFya1BhbGV0dGVzW2tleV1bNV07XG59KTtcbnZhciByZWQgPSBwcmVzZXRQYWxldHRlcy5yZWQ7XG52YXIgdm9sY2FubyA9IHByZXNldFBhbGV0dGVzLnZvbGNhbm87XG52YXIgZ29sZCA9IHByZXNldFBhbGV0dGVzLmdvbGQ7XG52YXIgb3JhbmdlID0gcHJlc2V0UGFsZXR0ZXMub3JhbmdlO1xudmFyIHllbGxvdyA9IHByZXNldFBhbGV0dGVzLnllbGxvdztcbnZhciBsaW1lID0gcHJlc2V0UGFsZXR0ZXMubGltZTtcbnZhciBncmVlbiA9IHByZXNldFBhbGV0dGVzLmdyZWVuO1xudmFyIGN5YW4gPSBwcmVzZXRQYWxldHRlcy5jeWFuO1xudmFyIGJsdWUgPSBwcmVzZXRQYWxldHRlcy5ibHVlO1xudmFyIGdlZWtibHVlID0gcHJlc2V0UGFsZXR0ZXMuZ2Vla2JsdWU7XG52YXIgcHVycGxlID0gcHJlc2V0UGFsZXR0ZXMucHVycGxlO1xudmFyIG1hZ2VudGEgPSBwcmVzZXRQYWxldHRlcy5tYWdlbnRhO1xudmFyIGdyZXkgPSBwcmVzZXRQYWxldHRlcy5ncmV5O1xuXG5leHBvcnQgeyBibHVlLCBjeWFuLCBnZWVrYmx1ZSwgZ2VuZXJhdGUsIGdvbGQsIGdyZWVuLCBncmV5LCBsaW1lLCBtYWdlbnRhLCBvcmFuZ2UsIHByZXNldERhcmtQYWxldHRlcywgcHJlc2V0UGFsZXR0ZXMsIHByZXNldFByaW1hcnlDb2xvcnMsIHB1cnBsZSwgcmVkLCB2b2xjYW5vLCB5ZWxsb3cgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@ant-design/colors/dist/index.esm.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/adjacent-matrix.js": /*!************************************************************!*\ !*** ./node_modules/@antv/algorithm/es/adjacent-matrix.js ***! \************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar adjMatrix = function adjMatrix(graphData, directed) {\n var nodes = graphData.nodes,\n edges = graphData.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error(\"invalid nodes data!\");\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n if (!sIndex && sIndex !== 0 || !tIndex && tIndex !== 0) return;\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (adjMatrix);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2FkamFjZW50LW1hdHJpeC5qcz84ODUwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVlLHdFQUFTIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9hZGphY2VudC1tYXRyaXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYWRqTWF0cml4ID0gZnVuY3Rpb24gYWRqTWF0cml4KGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgdmFyIG5vZGVzID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgZWRnZXMgPSBncmFwaERhdGEuZWRnZXM7XG4gIHZhciBtYXRyaXggPSBbXTsgLy8gbWFwIG5vZGUgd2l0aCBpbmRleCBpbiBkYXRhLm5vZGVzXG5cbiAgdmFyIG5vZGVNYXAgPSB7fTtcblxuICBpZiAoIW5vZGVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBub2RlcyBkYXRhIVwiKTtcbiAgfVxuXG4gIGlmIChub2Rlcykge1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgdmFyIHJvdyA9IFtdO1xuICAgICAgbWF0cml4LnB1c2gocm93KTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChlZGdlcykge1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgIHZhciBzSW5kZXggPSBub2RlTWFwW3NvdXJjZV07XG4gICAgICB2YXIgdEluZGV4ID0gbm9kZU1hcFt0YXJnZXRdO1xuICAgICAgaWYgKCFzSW5kZXggJiYgc0luZGV4ICE9PSAwIHx8ICF0SW5kZXggJiYgdEluZGV4ICE9PSAwKSByZXR1cm47XG4gICAgICBtYXRyaXhbc0luZGV4XVt0SW5kZXhdID0gMTtcblxuICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICBtYXRyaXhbdEluZGV4XVtzSW5kZXhdID0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtYXRyaXg7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBhZGpNYXRyaXg7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/adjacent-matrix.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/bfs.js": /*!************************************************!*\ !*** ./node_modules/@antv/algorithm/es/bfs.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_queue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./structs/queue */ \"./node_modules/@antv/algorithm/es/structs/queue.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n/**\n *\n * @param callbacks\n * allowTraversal: 确定 BFS 是否从顶点沿着边遍历到其邻居,默认情况下,同一个节点只能遍历一次\n * enterNode: 当 BFS 访问某个节点时调用\n * leaveNode: 当 BFS 访问访问结束某个节点时调用\n */\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n var id = next;\n\n if (!seen[id]) {\n seen[id] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * 广度优先遍历图\n * @param graph Graph 图实例\n * @param startNode 开始遍历的节点\n * @param originalCallbacks 回调\n */\n\n\nvar breadthFirstSearch = function breadthFirstSearch(graphData, startNodeId, originalCallbacks, directed) {\n if (directed === void 0) {\n directed = true;\n }\n\n var callbacks = initCallbacks(originalCallbacks);\n var nodeQueue = new _structs_queue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a; // 初始化队列元素\n\n nodeQueue.enqueue(startNodeId);\n var previousNode = '';\n\n var _loop_1 = function _loop_1() {\n var currentNode = nodeQueue.dequeue();\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n }); // 将所有邻居添加到队列中以便遍历\n\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(currentNode, edges, directed ? 'target' : undefined).forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n nodeQueue.enqueue(nextNode);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n }); // 下一次循环之前存储当前顶点\n\n previousNode = currentNode;\n }; // 遍历队列中的所有顶点\n\n\n while (!nodeQueue.isEmpty()) {\n _loop_1();\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (breadthFirstSearch);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Jmcy5qcz83NzQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFvQztBQUNFO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0Isc0RBQUs7QUFDM0I7QUFDQSxzQ0FBc0M7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUCxJQUFJLDBEQUFZO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsaUZBQWtCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9iZnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUXVldWUgZnJvbSAnLi9zdHJ1Y3RzL3F1ZXVlJztcbmltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG4vKipcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2tzXG4gKiBhbGxvd1RyYXZlcnNhbDog56Gu5a6aIEJGUyDmmK/lkKbku47pobbngrnmsr/nnYDovrnpgY3ljobliLDlhbbpgrvlsYXvvIzpu5jorqTmg4XlhrXkuIvvvIzlkIzkuIDkuKroioLngrnlj6rog73pgY3ljobkuIDmrKFcbiAqIGVudGVyTm9kZTog5b2TIEJGUyDorr/pl67mn5DkuKroioLngrnml7bosIPnlKhcbiAqIGxlYXZlTm9kZTog5b2TIEJGUyDorr/pl67orr/pl67nu5PmnZ/mn5DkuKroioLngrnml7bosIPnlKhcbiAqL1xuXG5mdW5jdGlvbiBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykge1xuICBpZiAoY2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBjYWxsYmFja3MgPSB7fTtcbiAgfVxuXG4gIHZhciBpbml0aWF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrcztcblxuICB2YXIgc3R1YkNhbGxiYWNrID0gZnVuY3Rpb24gc3R1YkNhbGxiYWNrKCkge307XG5cbiAgdmFyIGFsbG93VHJhdmVyc2FsQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlZW4gPSB7fTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKF9hKSB7XG4gICAgICB2YXIgbmV4dCA9IF9hLm5leHQ7XG4gICAgICB2YXIgaWQgPSBuZXh0O1xuXG4gICAgICBpZiAoIXNlZW5baWRdKSB7XG4gICAgICAgIHNlZW5baWRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICB9KCk7XG5cbiAgaW5pdGlhdGVkQ2FsbGJhY2suYWxsb3dUcmF2ZXJzYWwgPSBjYWxsYmFja3MuYWxsb3dUcmF2ZXJzYWwgfHwgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2suZW50ZXIgPSBjYWxsYmFja3MuZW50ZXIgfHwgc3R1YkNhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5sZWF2ZSA9IGNhbGxiYWNrcy5sZWF2ZSB8fCBzdHViQ2FsbGJhY2s7XG4gIHJldHVybiBpbml0aWF0ZWRDYWxsYmFjaztcbn1cbi8qKlxuICog5bm/5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZ3JhcGggR3JhcGgg5Zu+5a6e5L6LXG4gKiBAcGFyYW0gc3RhcnROb2RlIOW8gOWni+mBjeWOhueahOiKgueCuVxuICogQHBhcmFtIG9yaWdpbmFsQ2FsbGJhY2tzIOWbnuiwg1xuICovXG5cblxudmFyIGJyZWFkdGhGaXJzdFNlYXJjaCA9IGZ1bmN0aW9uIGJyZWFkdGhGaXJzdFNlYXJjaChncmFwaERhdGEsIHN0YXJ0Tm9kZUlkLCBvcmlnaW5hbENhbGxiYWNrcywgZGlyZWN0ZWQpIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IHRydWU7XG4gIH1cblxuICB2YXIgY2FsbGJhY2tzID0gaW5pdENhbGxiYWNrcyhvcmlnaW5hbENhbGxiYWNrcyk7XG4gIHZhciBub2RlUXVldWUgPSBuZXcgUXVldWUoKTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTsgLy8g5Yid5aeL5YyW6Zif5YiX5YWD57SgXG5cbiAgbm9kZVF1ZXVlLmVucXVldWUoc3RhcnROb2RlSWQpO1xuICB2YXIgcHJldmlvdXNOb2RlID0gJyc7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgIHZhciBjdXJyZW50Tm9kZSA9IG5vZGVRdWV1ZS5kZXF1ZXVlKCk7XG4gICAgY2FsbGJhY2tzLmVudGVyKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDlsIbmiYDmnInpgrvlsYXmt7vliqDliLDpmJ/liJfkuK3ku6Xkvr/pgY3ljoZcblxuICAgIGdldE5laWdoYm9ycyhjdXJyZW50Tm9kZSwgZWRnZXMsIGRpcmVjdGVkID8gJ3RhcmdldCcgOiB1bmRlZmluZWQpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgICBpZiAoY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsKHtcbiAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZSxcbiAgICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICAgIG5leHQ6IG5leHROb2RlXG4gICAgICB9KSkge1xuICAgICAgICBub2RlUXVldWUuZW5xdWV1ZShuZXh0Tm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2FsbGJhY2tzLmxlYXZlKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDkuIvkuIDmrKHlvqrnjq/kuYvliY3lrZjlgqjlvZPliY3pobbngrlcblxuICAgIHByZXZpb3VzTm9kZSA9IGN1cnJlbnROb2RlO1xuICB9OyAvLyDpgY3ljobpmJ/liJfkuK3nmoTmiYDmnInpobbngrlcblxuXG4gIHdoaWxlICghbm9kZVF1ZXVlLmlzRW1wdHkoKSkge1xuICAgIF9sb29wXzEoKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgYnJlYWR0aEZpcnN0U2VhcmNoOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/bfs.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/connected-component.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/algorithm/es/connected-component.js ***! \****************************************************************/ /*! exports provided: detectConnectedComponents, detectStrongConnectComponents, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectConnectedComponents\", function() { return detectConnectedComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectStrongConnectComponents\", function() { return detectStrongConnectComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getConnectedComponents; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n/**\n * Generate all connected components for an undirected graph\n * @param graph\n */\n\nvar detectConnectedComponents = function detectConnectedComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allComponents = [];\n var visited = {};\n var nodeStack = [];\n\n var getComponent = function getComponent(node) {\n nodeStack.push(node);\n visited[node.id] = true;\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(node.id, edges);\n\n var _loop_1 = function _loop_1(i) {\n var neighbor = neighbors[i];\n\n if (!visited[neighbor]) {\n var targetNode = nodes.filter(function (node) {\n return node.id === neighbor;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n }\n }\n };\n\n for (var i = 0; i < neighbors.length; ++i) {\n _loop_1(i);\n }\n };\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (!visited[node.id]) {\n // 对于无向图进行dfs遍历,每一次调用后都得到一个连通分量\n getComponent(node);\n var component = [];\n\n while (nodeStack.length > 0) {\n component.push(nodeStack.pop());\n }\n\n allComponents.push(component);\n }\n }\n\n return allComponents;\n};\n/**\n * Tarjan's Algorithm 复杂度 O(|V|+|E|)\n * For directed graph only\n * a directed graph is said to be strongly connected if \"every vertex is reachable from every other vertex\".\n * refer: http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n * @param graph\n * @return a list of strongly connected components\n */\n\nvar detectStrongConnectComponents = function detectStrongConnectComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeStack = [];\n var inStack = {}; // 辅助判断是否已经在stack中,减少查找开销\n\n var indices = {};\n var lowLink = {};\n var allComponents = [];\n var index = 0;\n\n var getComponent = function getComponent(node) {\n // Set the depth index for v to the smallest unused index\n indices[node.id] = index;\n lowLink[node.id] = index;\n index += 1;\n nodeStack.push(node);\n inStack[node.id] = true; // 考虑每个邻接点\n\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(node.id, edges, 'target').filter(function (n) {\n return nodes.map(function (node) {\n return node.id;\n }).indexOf(n) > -1;\n });\n\n var _loop_2 = function _loop_2(i) {\n var targetNodeID = neighbors[i];\n\n if (!indices[targetNodeID] && indices[targetNodeID] !== 0) {\n var targetNode = nodes.filter(function (node) {\n return node.id === targetNodeID;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n } // tree edge\n\n\n lowLink[node.id] = Math.min(lowLink[node.id], lowLink[targetNodeID]);\n } else if (inStack[targetNodeID]) {\n // back edge, target node is in the current SCC\n lowLink[node.id] = Math.min(lowLink[node.id], indices[targetNodeID]);\n }\n };\n\n for (var i = 0; i < neighbors.length; i++) {\n _loop_2(i);\n } // If node is a root node, generate an SCC\n\n\n if (lowLink[node.id] === indices[node.id]) {\n var component = [];\n\n while (nodeStack.length > 0) {\n var tmpNode = nodeStack.pop();\n inStack[tmpNode.id] = false;\n component.push(tmpNode);\n if (tmpNode === node) break;\n }\n\n if (component.length > 0) {\n allComponents.push(component);\n }\n }\n };\n\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n\n if (!indices[node.id] && indices[node.id] !== 0) {\n getComponent(node);\n }\n }\n\n return allComponents;\n};\nfunction getConnectedComponents(graphData, directed) {\n if (directed) return detectStrongConnectComponents(graphData);\n return detectConnectedComponents(graphData);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Nvbm5lY3RlZC1jb21wb25lbnQuanM/MmExMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDBEQUFZOztBQUVoQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCLG9CQUFvQiwwREFBWTtBQUNoQztBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMscUJBQXFCO0FBQ3hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvY29ubmVjdGVkLWNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gXCIuL3V0aWxcIjtcbi8qKlxuICogR2VuZXJhdGUgYWxsIGNvbm5lY3RlZCBjb21wb25lbnRzIGZvciBhbiB1bmRpcmVjdGVkIGdyYXBoXG4gKiBAcGFyYW0gZ3JhcGhcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSBmdW5jdGlvbiBkZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzKGdyYXBoRGF0YSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgbm9kZVN0YWNrID0gW107XG5cbiAgdmFyIGdldENvbXBvbmVudCA9IGZ1bmN0aW9uIGdldENvbXBvbmVudChub2RlKSB7XG4gICAgbm9kZVN0YWNrLnB1c2gobm9kZSk7XG4gICAgdmlzaXRlZFtub2RlLmlkXSA9IHRydWU7XG4gICAgdmFyIG5laWdoYm9ycyA9IGdldE5laWdoYm9ycyhub2RlLmlkLCBlZGdlcyk7XG5cbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgdmFyIG5laWdoYm9yID0gbmVpZ2hib3JzW2ldO1xuXG4gICAgICBpZiAoIXZpc2l0ZWRbbmVpZ2hib3JdKSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9yO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGFyZ2V0Tm9kZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZ2V0Q29tcG9uZW50KHRhcmdldE5vZGVbMF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgKytpKSB7XG4gICAgICBfbG9vcF8xKGkpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcblxuICAgIGlmICghdmlzaXRlZFtub2RlLmlkXSkge1xuICAgICAgLy8g5a+55LqO5peg5ZCR5Zu+6L+b6KGMZGZz6YGN5Y6G77yM5q+P5LiA5qyh6LCD55So5ZCO6YO95b6X5Yiw5LiA5Liq6L+e6YCa5YiG6YePXG4gICAgICBnZXRDb21wb25lbnQobm9kZSk7XG4gICAgICB2YXIgY29tcG9uZW50ID0gW107XG5cbiAgICAgIHdoaWxlIChub2RlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICBjb21wb25lbnQucHVzaChub2RlU3RhY2sucG9wKCkpO1xuICAgICAgfVxuXG4gICAgICBhbGxDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsQ29tcG9uZW50cztcbn07XG4vKipcbiAqIFRhcmphbidzIEFsZ29yaXRobSDlpI3mnYLluqYgIE8ofFZ8K3xFfClcbiAqIEZvciBkaXJlY3RlZCBncmFwaCBvbmx5XG4gKiBhIGRpcmVjdGVkIGdyYXBoIGlzIHNhaWQgdG8gYmUgc3Ryb25nbHkgY29ubmVjdGVkIGlmIFwiZXZlcnkgdmVydGV4IGlzIHJlYWNoYWJsZSBmcm9tIGV2ZXJ5IG90aGVyIHZlcnRleFwiLlxuICogcmVmZXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFyamFuJTI3c19zdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50c19hbGdvcml0aG1cbiAqIEBwYXJhbSBncmFwaFxuICogQHJldHVybiBhIGxpc3Qgb2Ygc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudHNcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZnVuY3Rpb24gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMoZ3JhcGhEYXRhKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlU3RhY2sgPSBbXTtcbiAgdmFyIGluU3RhY2sgPSB7fTsgLy8g6L6F5Yqp5Yik5pat5piv5ZCm5bey57uP5Zyoc3RhY2vkuK3vvIzlh4/lsJHmn6Xmib7lvIDplIBcblxuICB2YXIgaW5kaWNlcyA9IHt9O1xuICB2YXIgbG93TGluayA9IHt9O1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgaW5kZXggPSAwO1xuXG4gIHZhciBnZXRDb21wb25lbnQgPSBmdW5jdGlvbiBnZXRDb21wb25lbnQobm9kZSkge1xuICAgIC8vIFNldCB0aGUgZGVwdGggaW5kZXggZm9yIHYgdG8gdGhlIHNtYWxsZXN0IHVudXNlZCBpbmRleFxuICAgIGluZGljZXNbbm9kZS5pZF0gPSBpbmRleDtcbiAgICBsb3dMaW5rW25vZGUuaWRdID0gaW5kZXg7XG4gICAgaW5kZXggKz0gMTtcbiAgICBub2RlU3RhY2sucHVzaChub2RlKTtcbiAgICBpblN0YWNrW25vZGUuaWRdID0gdHJ1ZTsgLy8g6ICD6JmR5q+P5Liq6YK75o6l54K5XG5cbiAgICB2YXIgbmVpZ2hib3JzID0gZ2V0TmVpZ2hib3JzKG5vZGUuaWQsIGVkZ2VzLCAndGFyZ2V0JykuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmlkO1xuICAgICAgfSkuaW5kZXhPZihuKSA+IC0xO1xuICAgIH0pO1xuXG4gICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgIHZhciB0YXJnZXROb2RlSUQgPSBuZWlnaGJvcnNbaV07XG5cbiAgICAgIGlmICghaW5kaWNlc1t0YXJnZXROb2RlSURdICYmIGluZGljZXNbdGFyZ2V0Tm9kZUlEXSAhPT0gMCkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZSA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIHJldHVybiBub2RlLmlkID09PSB0YXJnZXROb2RlSUQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXROb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBnZXRDb21wb25lbnQodGFyZ2V0Tm9kZVswXSk7XG4gICAgICAgIH0gLy8gdHJlZSBlZGdlXG5cblxuICAgICAgICBsb3dMaW5rW25vZGUuaWRdID0gTWF0aC5taW4obG93TGlua1tub2RlLmlkXSwgbG93TGlua1t0YXJnZXROb2RlSURdKTtcbiAgICAgIH0gZWxzZSBpZiAoaW5TdGFja1t0YXJnZXROb2RlSURdKSB7XG4gICAgICAgIC8vIGJhY2sgZWRnZSwgdGFyZ2V0IG5vZGUgaXMgaW4gdGhlIGN1cnJlbnQgU0NDXG4gICAgICAgIGxvd0xpbmtbbm9kZS5pZF0gPSBNYXRoLm1pbihsb3dMaW5rW25vZGUuaWRdLCBpbmRpY2VzW3RhcmdldE5vZGVJRF0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgX2xvb3BfMihpKTtcbiAgICB9IC8vIElmIG5vZGUgaXMgYSByb290IG5vZGUsIGdlbmVyYXRlIGFuIFNDQ1xuXG5cbiAgICBpZiAobG93TGlua1tub2RlLmlkXSA9PT0gaW5kaWNlc1tub2RlLmlkXSkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IFtdO1xuXG4gICAgICB3aGlsZSAobm9kZVN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIHRtcE5vZGUgPSBub2RlU3RhY2sucG9wKCk7XG4gICAgICAgIGluU3RhY2tbdG1wTm9kZS5pZF0gPSBmYWxzZTtcbiAgICAgICAgY29tcG9uZW50LnB1c2godG1wTm9kZSk7XG4gICAgICAgIGlmICh0bXBOb2RlID09PSBub2RlKSBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbXBvbmVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFsbENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBfaSA9IDAsIG5vZGVzXzEgPSBub2RlczsgX2kgPCBub2Rlc18xLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBub2RlID0gbm9kZXNfMVtfaV07XG5cbiAgICBpZiAoIWluZGljZXNbbm9kZS5pZF0gJiYgaW5kaWNlc1tub2RlLmlkXSAhPT0gMCkge1xuICAgICAgZ2V0Q29tcG9uZW50KG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDb21wb25lbnRzO1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbm5lY3RlZENvbXBvbmVudHMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICBpZiAoZGlyZWN0ZWQpIHJldHVybiBkZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cyhncmFwaERhdGEpO1xuICByZXR1cm4gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/connected-component.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/constants/time.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/algorithm/es/constants/time.js ***! \***********************************************************/ /*! exports provided: secondReg, dateReg */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"secondReg\", function() { return secondReg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dateReg\", function() { return dateReg; });\nvar secondReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;\nvar dateReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2NvbnN0YW50cy90aW1lLmpzPzdhNjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU8sc0JBQXNCLElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSTtBQUNwRCxvQkFBb0IsSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJLE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9jb25zdGFudHMvdGltZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgc2Vjb25kUmVnID0gL14oXFxkezEsNH0pKC18XFwvKShcXGR7MSwyfSlcXDIoXFxkezEsMn0pJC87XG5leHBvcnQgdmFyIGRhdGVSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/constants/time.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/cosine-similarity.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/algorithm/es/cosine-similarity.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/vector */ \"./node_modules/@antv/algorithm/es/utils/vector.js\");\n\n/**\n * cosine-similarity算法 计算余弦相似度\n * @param item 元素\n * @param targetItem 目标元素\n */\n\nvar cosineSimilarity = function cosineSimilarity(item, targetItem) {\n // 目标元素向量\n var targetItemVector = new _utils_vector__WEBPACK_IMPORTED_MODULE_0__[\"default\"](targetItem); // 目标元素向量的模长\n\n var targetNodeNorm2 = targetItemVector.norm2(); // 元素向量\n\n var itemVector = new _utils_vector__WEBPACK_IMPORTED_MODULE_0__[\"default\"](item); // 元素向量的模长\n\n var itemNorm2 = itemVector.norm2(); // 计算元素向量和目标元素向量的点积\n\n var dot = targetItemVector.dot(itemVector);\n var norm2Product = targetNodeNorm2 * itemNorm2; // 计算元素向量和目标元素向量的余弦相似度\n\n var cosineSimilarity = norm2Product ? dot / norm2Product : 0;\n return cosineSimilarity;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cosineSimilarity);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Nvc2luZS1zaW1pbGFyaXR5LmpzPzA4YTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw2QkFBNkIscURBQU0sYUFBYTs7QUFFaEQsaURBQWlEOztBQUVqRCx1QkFBdUIscURBQU0sT0FBTzs7QUFFcEMscUNBQXFDOztBQUVyQztBQUNBLGlEQUFpRDs7QUFFakQ7QUFDQTtBQUNBOztBQUVlLCtFQUFnQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvY29zaW5lLXNpbWlsYXJpdHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVmVjdG9yIGZyb20gJy4vdXRpbHMvdmVjdG9yJztcbi8qKlxuICogY29zaW5lLXNpbWlsYXJpdHnnrpfms5Ug6K6h566X5L2Z5bym55u45Ly85bqmXG4gKiBAcGFyYW0gaXRlbSDlhYPntKBcbiAqIEBwYXJhbSB0YXJnZXRJdGVtIOebruagh+WFg+e0oFxuICovXG5cbnZhciBjb3NpbmVTaW1pbGFyaXR5ID0gZnVuY3Rpb24gY29zaW5lU2ltaWxhcml0eShpdGVtLCB0YXJnZXRJdGVtKSB7XG4gIC8vIOebruagh+WFg+e0oOWQkemHj1xuICB2YXIgdGFyZ2V0SXRlbVZlY3RvciA9IG5ldyBWZWN0b3IodGFyZ2V0SXRlbSk7IC8vIOebruagh+WFg+e0oOWQkemHj+eahOaooemVv1xuXG4gIHZhciB0YXJnZXROb2RlTm9ybTIgPSB0YXJnZXRJdGVtVmVjdG9yLm5vcm0yKCk7IC8vIOWFg+e0oOWQkemHj1xuXG4gIHZhciBpdGVtVmVjdG9yID0gbmV3IFZlY3RvcihpdGVtKTsgLy8g5YWD57Sg5ZCR6YeP55qE5qih6ZW/XG5cbiAgdmFyIGl0ZW1Ob3JtMiA9IGl0ZW1WZWN0b3Iubm9ybTIoKTsgLy8g6K6h566X5YWD57Sg5ZCR6YeP5ZKM55uu5qCH5YWD57Sg5ZCR6YeP55qE54K556evXG5cbiAgdmFyIGRvdCA9IHRhcmdldEl0ZW1WZWN0b3IuZG90KGl0ZW1WZWN0b3IpO1xuICB2YXIgbm9ybTJQcm9kdWN0ID0gdGFyZ2V0Tm9kZU5vcm0yICogaXRlbU5vcm0yOyAvLyDorqHnrpflhYPntKDlkJHph4/lkoznm67moIflhYPntKDlkJHph4/nmoTkvZnlvKbnm7jkvLzluqZcblxuICB2YXIgY29zaW5lU2ltaWxhcml0eSA9IG5vcm0yUHJvZHVjdCA/IGRvdCAvIG5vcm0yUHJvZHVjdCA6IDA7XG4gIHJldHVybiBjb3NpbmVTaW1pbGFyaXR5O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29zaW5lU2ltaWxhcml0eTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/cosine-similarity.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/degree.js": /*!***************************************************!*\ !*** ./node_modules/@antv/algorithm/es/degree.js ***! \***************************************************/ /*! exports provided: default, getInDegree, getOutDegree */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInDegree\", function() { return getInDegree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOutDegree\", function() { return getOutDegree; });\nvar degree = function degree(graphData) {\n var degrees = {};\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n nodes.forEach(function (node) {\n degrees[node.id] = {\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n });\n edges.forEach(function (edge) {\n degrees[edge.source].degree++;\n degrees[edge.source].outDegree++;\n degrees[edge.target].degree++;\n degrees[edge.target].inDegree++;\n });\n return degrees;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (degree);\n/**\n * 获取指定节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nvar getInDegree = function getInDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].inDegree;\n }\n\n return 0;\n};\n/**\n * 获取指定节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nvar getOutDegree = function getOutDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].outDegree;\n }\n\n return 0;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2RlZ3JlZS5qcz9jZTA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRWUscUVBQU0sRUFBQztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2RlZ3JlZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWdyZWUgPSBmdW5jdGlvbiBkZWdyZWUoZ3JhcGhEYXRhKSB7XG4gIHZhciBkZWdyZWVzID0ge307XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBkZWdyZWVzW25vZGUuaWRdID0ge1xuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICB9KTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmluRGVncmVlKys7XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGRlZ3JlZTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5YWl5bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0SW5EZWdyZWUgPSBmdW5jdGlvbiBnZXRJbkRlZ3JlZShncmFwaERhdGEsIG5vZGVJZCkge1xuICB2YXIgbm9kZURlZ3JlZSA9IGRlZ3JlZShncmFwaERhdGEpO1xuXG4gIGlmIChub2RlRGVncmVlW25vZGVJZF0pIHtcbiAgICByZXR1cm4gZGVncmVlKGdyYXBoRGF0YSlbbm9kZUlkXS5pbkRlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0T3V0RGVncmVlID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlKGdyYXBoRGF0YSwgbm9kZUlkKSB7XG4gIHZhciBub2RlRGVncmVlID0gZGVncmVlKGdyYXBoRGF0YSk7XG5cbiAgaWYgKG5vZGVEZWdyZWVbbm9kZUlkXSkge1xuICAgIHJldHVybiBkZWdyZWUoZ3JhcGhEYXRhKVtub2RlSWRdLm91dERlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/degree.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/detect-cycle.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/algorithm/es/detect-cycle.js ***! \*********************************************************/ /*! exports provided: detectAllUndirectedCycle, detectAllDirectedCycle, detectAllCycles, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllUndirectedCycle\", function() { return detectAllUndirectedCycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllDirectedCycle\", function() { return detectAllDirectedCycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllCycles\", function() { return detectAllCycles; });\n/* harmony import */ var _dfs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dfs */ \"./node_modules/@antv/algorithm/es/dfs.js\");\n/* harmony import */ var _connected_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./connected-component */ \"./node_modules/@antv/algorithm/es/connected-component.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n\n\nvar detectDirectedCycle = function detectDirectedCycle(graphData) {\n var cycle = null;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a;\n var dfsParentMap = {}; // 所有没有被访问的节点集合\n\n var unvisitedSet = {}; // 正在被访问的节点集合\n\n var visitingSet = {}; // 所有已经被访问过的节点集合\n\n var visitedSet = {}; // 初始化 unvisitedSet\n\n nodes.forEach(function (node) {\n unvisitedSet[node.id] = node;\n });\n var callbacks = {\n enter: function enter(_a) {\n var currentNode = _a.current,\n previousNode = _a.previous;\n\n if (visitingSet[currentNode]) {\n // 如果当前节点正在访问中,则说明检测到环路了\n cycle = {};\n var currentCycleNode = currentNode;\n var previousCycleNode = previousNode;\n\n while (previousCycleNode !== currentNode) {\n cycle[currentCycleNode] = previousCycleNode;\n currentCycleNode = previousCycleNode;\n previousCycleNode = dfsParentMap[previousCycleNode];\n }\n\n cycle[currentCycleNode] = previousCycleNode;\n } else {\n // 如果不存在正在访问集合中,则将其放入正在访问集合,并从未访问集合中删除\n visitingSet[currentNode] = currentNode;\n delete unvisitedSet[currentNode]; // 更新 DSF parents 列表\n\n dfsParentMap[currentNode] = previousNode;\n }\n },\n leave: function leave(_a) {\n var currentNode = _a.current; // 如果所有的节点的子节点都已经访问过了,则从正在访问集合中删除掉,并将其移入到已访问集合中,\n // 同时也意味着当前节点的所有邻居节点都被访问过了\n\n visitedSet[currentNode] = currentNode;\n delete visitingSet[currentNode];\n },\n allowTraversal: function allowTraversal(_a) {\n var nextNode = _a.next; // 如果检测到环路则需要终止所有进一步的遍历,否则会导致无限循环遍历\n\n if (cycle) {\n return false;\n } // 仅允许遍历没有访问的节点,visitedSet 中的都已经访问过了\n\n\n return !visitedSet[nextNode];\n }\n }; // 开始遍历节点\n\n while (Object.keys(unvisitedSet).length) {\n // 从第一个节点开始进行 DFS 遍历\n var firsetUnVisitedKey = Object.keys(unvisitedSet)[0];\n Object(_dfs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, firsetUnVisitedKey, callbacks);\n }\n\n return cycle;\n};\n/**\n * 检测无向图中的所有Base cycles\n * refer: https://www.codeproject.com/Articles/1158232/Enumerating-All-Cycles-in-an-Undirected-Graph\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回一组base cycles\n */\n\n\nvar detectAllUndirectedCycle = function detectAllUndirectedCycle(graphData, nodeIds, include) {\n var _a, _b;\n\n if (include === void 0) {\n include = true;\n }\n\n var allCycles = [];\n var components = Object(_connected_component__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, false); // loop through all connected components\n\n for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {\n var component = components_1[_i];\n if (!component.length) continue;\n var root = component[0];\n var rootId = root.id;\n var stack = [root];\n var parent_1 = (_a = {}, _a[rootId] = root, _a);\n var used = (_b = {}, _b[rootId] = new Set(), _b); // walk a spanning tree to find cycles\n\n while (stack.length > 0) {\n var curNode = stack.pop();\n var curNodeId = curNode.id;\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getNeighbors\"])(curNodeId, graphData.edges);\n\n var _loop_1 = function _loop_1(i) {\n var _c;\n\n var neighborId = neighbors[i];\n var neighbor = graphData.nodes.find(function (node) {\n return node.id === neighborId;\n }); // const neighborId = neighbor.get('id');\n\n if (neighborId === curNodeId) {\n // 自环\n allCycles.push((_c = {}, _c[neighborId] = curNode, _c));\n } else if (!(neighborId in used)) {\n // visit a new node\n parent_1[neighborId] = curNode;\n stack.push(neighbor);\n used[neighborId] = new Set([curNode]);\n } else if (!used[curNodeId].has(neighbor)) {\n // a cycle found\n var cycleValid = true;\n var cyclePath = [neighbor, curNode];\n var p = parent_1[curNodeId];\n\n while (used[neighborId].size && !used[neighborId].has(p)) {\n cyclePath.push(p);\n if (p === parent_1[p.id]) break;else p = parent_1[p.id];\n }\n\n cyclePath.push(p);\n\n if (nodeIds && include) {\n // 如果有指定包含的节点\n cycleValid = false;\n\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = true;\n }\n } else if (nodeIds && !include) {\n // 如果有指定不包含的节点\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = false;\n }\n } // 把 node list 形式转换为 cycle 的格式\n\n\n if (cycleValid) {\n var cycle = {};\n\n for (var index = 1; index < cyclePath.length; index += 1) {\n cycle[cyclePath[index - 1].id] = cyclePath[index];\n }\n\n if (cyclePath.length) {\n cycle[cyclePath[cyclePath.length - 1].id] = cyclePath[0];\n }\n\n allCycles.push(cycle);\n }\n\n used[neighborId].add(curNode);\n }\n };\n\n for (var i = 0; i < neighbors.length; i += 1) {\n _loop_1(i);\n }\n }\n }\n\n return allCycles;\n};\n/**\n * Johnson's algorithm, 时间复杂度 O((V + E)(C + 1))$ and space bounded by O(V + E)\n * refer: https://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF\n * refer: https://networkx.github.io/documentation/stable/_modules/networkx/algorithms/cycles.html#simple_cycles\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回所有的 simple cycles\n */\n\nvar detectAllDirectedCycle = function detectAllDirectedCycle(graphData, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n var path = []; // stack of nodes in current path\n\n var blocked = new Set();\n var B = []; // remember portions of the graph that yield no elementary circuit\n\n var allCycles = [];\n var idx2Node = {};\n var node2Idx = {}; // 辅助函数: unblock all blocked nodes\n\n var unblock = function unblock(thisNode) {\n var stack = [thisNode];\n\n while (stack.length > 0) {\n var node = stack.pop();\n\n if (blocked.has(node)) {\n blocked.delete(node);\n B[node.id].forEach(function (n) {\n stack.push(n);\n });\n B[node.id].clear();\n }\n }\n };\n\n var circuit = function circuit(node, start, adjList) {\n var closed = false; // whether a path is closed\n\n if (nodeIds && include === false && nodeIds.indexOf(node.id) > -1) return closed;\n path.push(node);\n blocked.add(node);\n var neighbors = adjList[node.id];\n\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (neighbor === start) {\n var cycle = {};\n\n for (var index = 1; index < path.length; index += 1) {\n cycle[path[index - 1].id] = path[index];\n }\n\n if (path.length) {\n cycle[path[path.length - 1].id] = path[0];\n }\n\n allCycles.push(cycle);\n closed = true;\n } else if (!blocked.has(neighbor)) {\n if (circuit(neighbor, start, adjList)) {\n closed = true;\n }\n }\n }\n\n if (closed) {\n unblock(node);\n } else {\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (!B[neighbor.id].has(node)) {\n B[neighbor.id].add(node);\n }\n }\n }\n\n path.pop();\n return closed;\n };\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a; // Johnson's algorithm 要求给节点赋顺序,先按节点在数组中的顺序\n\n for (var i = 0; i < nodes.length; i += 1) {\n var node = nodes[i];\n var nodeId = node.id;\n node2Idx[nodeId] = i;\n idx2Node[i] = node;\n } // 如果有指定包含的节点,则把指定节点排序在前,以便提早结束搜索\n\n\n if (nodeIds && include) {\n var _loop_2 = function _loop_2(i) {\n var nodeId = nodeIds[i];\n node2Idx[nodes[i].id] = node2Idx[nodeId];\n node2Idx[nodeId] = 0;\n idx2Node[0] = nodes.find(function (node) {\n return node.id === nodeId;\n });\n idx2Node[node2Idx[nodes[i].id]] = nodes[i];\n };\n\n for (var i = 0; i < nodeIds.length; i++) {\n _loop_2(i);\n }\n } // 返回 节点顺序 >= nodeOrder 的强连通分量的adjList\n\n\n var getMinComponentAdj = function getMinComponentAdj(components) {\n var _a;\n\n var minCompIdx;\n var minIdx = Infinity; // Find least component and the lowest node\n\n for (var i = 0; i < components.length; i += 1) {\n var comp = components[i];\n\n for (var j = 0; j < comp.length; j++) {\n var nodeIdx_1 = node2Idx[comp[j].id];\n\n if (nodeIdx_1 < minIdx) {\n minIdx = nodeIdx_1;\n minCompIdx = i;\n }\n }\n }\n\n var component = components[minCompIdx];\n var adjList = [];\n\n for (var i = 0; i < component.length; i += 1) {\n var node = component[i];\n adjList[node.id] = [];\n\n for (var _i = 0, _b = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getNeighbors\"])(node.id, graphData.edges, 'target').filter(function (n) {\n return component.map(function (c) {\n return c.id;\n }).indexOf(n) > -1;\n }); _i < _b.length; _i++) {\n var neighbor = _b[_i]; // 对自环情况 (点连向自身) 特殊处理:记录自环,但不加入adjList\n\n if (neighbor === node.id && !(include === false && nodeIds.indexOf(node.id) > -1)) {\n allCycles.push((_a = {}, _a[node.id] = node, _a));\n } else {\n adjList[node.id].push(node2Idx[neighbor]);\n }\n }\n }\n\n return {\n component: component,\n adjList: adjList,\n minIdx: minIdx\n };\n };\n\n var nodeIdx = 0;\n\n while (nodeIdx < nodes.length) {\n var subgraphNodes = nodes.filter(function (n) {\n return node2Idx[n.id] >= nodeIdx;\n });\n var sccs = Object(_connected_component__WEBPACK_IMPORTED_MODULE_1__[\"detectStrongConnectComponents\"])({\n nodes: subgraphNodes,\n edges: graphData.edges\n }).filter(function (component) {\n return component.length > 1;\n });\n if (sccs.length === 0) break;\n var scc = getMinComponentAdj(sccs);\n var minIdx = scc.minIdx,\n adjList = scc.adjList,\n component = scc.component;\n\n if (component.length > 1) {\n component.forEach(function (node) {\n B[node.id] = new Set();\n });\n var startNode = idx2Node[minIdx]; // startNode 不在指定要包含的节点中,提前结束搜索\n\n if (nodeIds && include && nodeIds.indexOf(startNode.id) === -1) return allCycles;\n circuit(startNode, startNode, adjList);\n nodeIdx = minIdx + 1;\n } else {\n break;\n }\n }\n\n return allCycles;\n};\n/**\n * 查找图中所有满足要求的圈\n * @param graph\n * @param directed 是否为有向图\n * @param nodeIds 节点 ID 的数组,若不指定,则返回图中所有的圈\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: Node}] 包含所有环的数组,每个环用一个Object表示,其中key为节点id,value为该节点在环中指向的下一个节点\n */\n\nvar detectAllCycles = function detectAllCycles(graphData, directed, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n if (directed) return detectAllDirectedCycle(graphData, nodeIds, include);\n return detectAllUndirectedCycle(graphData, nodeIds, include);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (detectDirectedCycle);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2RldGVjdC1jeWNsZS5qcz8wMjUyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdCO0FBQ3NFO0FBQ3hEOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEIsd0JBQXdCOztBQUV4Qix1QkFBdUI7O0FBRXZCLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLG1DQUFtQztBQUNuQzs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0EsSUFBSSxvREFBRztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR087QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsb0VBQXNCLG1CQUFtQjs7QUFFNUQsNkNBQTZDLDBCQUEwQjtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLHVCQUF1Qiw4QkFBOEI7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwwREFBWTs7QUFFbEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVg7QUFDQTtBQUNBLGlDQUFpQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRDQUE0QztBQUM1Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVzs7O0FBR1g7QUFDQTs7QUFFQSwrQkFBK0IsMEJBQTBCO0FBQ3pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixzQkFBc0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxQkFBcUI7QUFDbEM7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxxQkFBcUIsc0JBQXNCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDOztBQUV0QyxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQixtQkFBbUIsdUJBQXVCO0FBQzFDOztBQUVBLHFCQUFxQixpQkFBaUI7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBOztBQUVBLDRCQUE0QiwwREFBWTtBQUN4QztBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRSxnQkFBZ0I7QUFDekIsOEJBQThCOztBQUU5QjtBQUNBLGlDQUFpQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxlQUFlLDBGQUE2QjtBQUM1QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ2Usa0ZBQW1CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9kZXRlY3QtY3ljbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGZzIGZyb20gJy4vZGZzJztcbmltcG9ydCBnZXRDb25uZWN0ZWRDb21wb25lbnRzLCB7IGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzIH0gZnJvbSAnLi9jb25uZWN0ZWQtY29tcG9uZW50JztcbmltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG5cbnZhciBkZXRlY3REaXJlY3RlZEN5Y2xlID0gZnVuY3Rpb24gZGV0ZWN0RGlyZWN0ZWRDeWNsZShncmFwaERhdGEpIHtcbiAgdmFyIGN5Y2xlID0gbnVsbDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTtcbiAgdmFyIGRmc1BhcmVudE1hcCA9IHt9OyAvLyDmiYDmnInmsqHmnInooqvorr/pl67nmoToioLngrnpm4blkIhcblxuICB2YXIgdW52aXNpdGVkU2V0ID0ge307IC8vIOato+WcqOiiq+iuv+mXrueahOiKgueCuembhuWQiFxuXG4gIHZhciB2aXNpdGluZ1NldCA9IHt9OyAvLyDmiYDmnInlt7Lnu4/ooqvorr/pl67ov4fnmoToioLngrnpm4blkIhcblxuICB2YXIgdmlzaXRlZFNldCA9IHt9OyAvLyDliJ3lp4vljJYgdW52aXNpdGVkU2V0XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIHVudmlzaXRlZFNldFtub2RlLmlkXSA9IG5vZGU7XG4gIH0pO1xuICB2YXIgY2FsbGJhY2tzID0ge1xuICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcihfYSkge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gX2EuY3VycmVudCxcbiAgICAgICAgICBwcmV2aW91c05vZGUgPSBfYS5wcmV2aW91cztcblxuICAgICAgaWYgKHZpc2l0aW5nU2V0W2N1cnJlbnROb2RlXSkge1xuICAgICAgICAvLyDlpoLmnpzlvZPliY3oioLngrnmraPlnKjorr/pl67kuK3vvIzliJnor7TmmI7mo4DmtYvliLDnjq/ot6/kuoZcbiAgICAgICAgY3ljbGUgPSB7fTtcbiAgICAgICAgdmFyIGN1cnJlbnRDeWNsZU5vZGUgPSBjdXJyZW50Tm9kZTtcbiAgICAgICAgdmFyIHByZXZpb3VzQ3ljbGVOb2RlID0gcHJldmlvdXNOb2RlO1xuXG4gICAgICAgIHdoaWxlIChwcmV2aW91c0N5Y2xlTm9kZSAhPT0gY3VycmVudE5vZGUpIHtcbiAgICAgICAgICBjeWNsZVtjdXJyZW50Q3ljbGVOb2RlXSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgICAgIGN1cnJlbnRDeWNsZU5vZGUgPSBwcmV2aW91c0N5Y2xlTm9kZTtcbiAgICAgICAgICBwcmV2aW91c0N5Y2xlTm9kZSA9IGRmc1BhcmVudE1hcFtwcmV2aW91c0N5Y2xlTm9kZV07XG4gICAgICAgIH1cblxuICAgICAgICBjeWNsZVtjdXJyZW50Q3ljbGVOb2RlXSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g5aaC5p6c5LiN5a2Y5Zyo5q2j5Zyo6K6/6Zeu6ZuG5ZCI5Lit77yM5YiZ5bCG5YW25pS+5YWl5q2j5Zyo6K6/6Zeu6ZuG5ZCI77yM5bm25LuO5pyq6K6/6Zeu6ZuG5ZCI5Lit5Yig6ZmkXG4gICAgICAgIHZpc2l0aW5nU2V0W2N1cnJlbnROb2RlXSA9IGN1cnJlbnROb2RlO1xuICAgICAgICBkZWxldGUgdW52aXNpdGVkU2V0W2N1cnJlbnROb2RlXTsgLy8g5pu05pawIERTRiBwYXJlbnRzIOWIl+ihqFxuXG4gICAgICAgIGRmc1BhcmVudE1hcFtjdXJyZW50Tm9kZV0gPSBwcmV2aW91c05vZGU7XG4gICAgICB9XG4gICAgfSxcbiAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUoX2EpIHtcbiAgICAgIHZhciBjdXJyZW50Tm9kZSA9IF9hLmN1cnJlbnQ7IC8vIOWmguaenOaJgOacieeahOiKgueCueeahOWtkOiKgueCuemDveW3sue7j+iuv+mXrui/h+S6hu+8jOWImeS7juato+WcqOiuv+mXrumbhuWQiOS4reWIoOmZpOaOie+8jOW5tuWwhuWFtuenu+WFpeWIsOW3suiuv+mXrumbhuWQiOS4re+8jFxuICAgICAgLy8g5ZCM5pe25Lmf5oSP5ZGz552A5b2T5YmN6IqC54K555qE5omA5pyJ6YK75bGF6IqC54K56YO96KKr6K6/6Zeu6L+H5LqGXG5cbiAgICAgIHZpc2l0ZWRTZXRbY3VycmVudE5vZGVdID0gY3VycmVudE5vZGU7XG4gICAgICBkZWxldGUgdmlzaXRpbmdTZXRbY3VycmVudE5vZGVdO1xuICAgIH0sXG4gICAgYWxsb3dUcmF2ZXJzYWw6IGZ1bmN0aW9uIGFsbG93VHJhdmVyc2FsKF9hKSB7XG4gICAgICB2YXIgbmV4dE5vZGUgPSBfYS5uZXh0OyAvLyDlpoLmnpzmo4DmtYvliLDnjq/ot6/liJnpnIDopoHnu4jmraLmiYDmnInov5vkuIDmraXnmoTpgY3ljobvvIzlkKbliJnkvJrlr7zoh7Tml6DpmZDlvqrnjq/pgY3ljoZcblxuICAgICAgaWYgKGN5Y2xlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8g5LuF5YWB6K646YGN5Y6G5rKh5pyJ6K6/6Zeu55qE6IqC54K577yMdmlzaXRlZFNldCDkuK3nmoTpg73lt7Lnu4/orr/pl67ov4fkuoZcblxuXG4gICAgICByZXR1cm4gIXZpc2l0ZWRTZXRbbmV4dE5vZGVdO1xuICAgIH1cbiAgfTsgLy8g5byA5aeL6YGN5Y6G6IqC54K5XG5cbiAgd2hpbGUgKE9iamVjdC5rZXlzKHVudmlzaXRlZFNldCkubGVuZ3RoKSB7XG4gICAgLy8g5LuO56ys5LiA5Liq6IqC54K55byA5aeL6L+b6KGMIERGUyDpgY3ljoZcbiAgICB2YXIgZmlyc2V0VW5WaXNpdGVkS2V5ID0gT2JqZWN0LmtleXModW52aXNpdGVkU2V0KVswXTtcbiAgICBkZnMoZ3JhcGhEYXRhLCBmaXJzZXRVblZpc2l0ZWRLZXksIGNhbGxiYWNrcyk7XG4gIH1cblxuICByZXR1cm4gY3ljbGU7XG59O1xuLyoqXG4gKiDmo4DmtYvml6DlkJHlm77kuK3nmoTmiYDmnIlCYXNlIGN5Y2xlc1xuICogcmVmZXI6IGh0dHBzOi8vd3d3LmNvZGVwcm9qZWN0LmNvbS9BcnRpY2xlcy8xMTU4MjMyL0VudW1lcmF0aW5nLUFsbC1DeWNsZXMtaW4tYW4tVW5kaXJlY3RlZC1HcmFwaFxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gbm9kZUlkcyDoioLngrkgSUQg55qE5pWw57uEXG4gKiBAcGFyYW0gaW5jbHVkZSDljIXlkKvmiJbmjpLpmaTmjIflrprnmoToioLngrlcbiAqIEByZXR1cm4gW3tba2V5OiBzdHJpbmddOiBJTm9kZX1dIOi/lOWbnuS4gOe7hGJhc2UgY3ljbGVzXG4gKi9cblxuXG5leHBvcnQgdmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgdmFyIF9hLCBfYjtcblxuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBjb21wb25lbnRzID0gZ2V0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEsIGZhbHNlKTsgLy8gbG9vcCB0aHJvdWdoIGFsbCBjb25uZWN0ZWQgY29tcG9uZW50c1xuXG4gIGZvciAodmFyIF9pID0gMCwgY29tcG9uZW50c18xID0gY29tcG9uZW50czsgX2kgPCBjb21wb25lbnRzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNfMVtfaV07XG4gICAgaWYgKCFjb21wb25lbnQubGVuZ3RoKSBjb250aW51ZTtcbiAgICB2YXIgcm9vdCA9IGNvbXBvbmVudFswXTtcbiAgICB2YXIgcm9vdElkID0gcm9vdC5pZDtcbiAgICB2YXIgc3RhY2sgPSBbcm9vdF07XG4gICAgdmFyIHBhcmVudF8xID0gKF9hID0ge30sIF9hW3Jvb3RJZF0gPSByb290LCBfYSk7XG4gICAgdmFyIHVzZWQgPSAoX2IgPSB7fSwgX2Jbcm9vdElkXSA9IG5ldyBTZXQoKSwgX2IpOyAvLyB3YWxrIGEgc3Bhbm5pbmcgdHJlZSB0byBmaW5kIGN5Y2xlc1xuXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBjdXJOb2RlID0gc3RhY2sucG9wKCk7XG4gICAgICB2YXIgY3VyTm9kZUlkID0gY3VyTm9kZS5pZDtcbiAgICAgIHZhciBuZWlnaGJvcnMgPSBnZXROZWlnaGJvcnMoY3VyTm9kZUlkLCBncmFwaERhdGEuZWRnZXMpO1xuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICB2YXIgX2M7XG5cbiAgICAgICAgdmFyIG5laWdoYm9ySWQgPSBuZWlnaGJvcnNbaV07XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGdyYXBoRGF0YS5ub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9ySWQ7XG4gICAgICAgIH0pOyAvLyBjb25zdCBuZWlnaGJvcklkID0gbmVpZ2hib3IuZ2V0KCdpZCcpO1xuXG4gICAgICAgIGlmIChuZWlnaGJvcklkID09PSBjdXJOb2RlSWQpIHtcbiAgICAgICAgICAvLyDoh6rnjq9cbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2MgPSB7fSwgX2NbbmVpZ2hib3JJZF0gPSBjdXJOb2RlLCBfYykpO1xuICAgICAgICB9IGVsc2UgaWYgKCEobmVpZ2hib3JJZCBpbiB1c2VkKSkge1xuICAgICAgICAgIC8vIHZpc2l0IGEgbmV3IG5vZGVcbiAgICAgICAgICBwYXJlbnRfMVtuZWlnaGJvcklkXSA9IGN1ck5vZGU7XG4gICAgICAgICAgc3RhY2sucHVzaChuZWlnaGJvcik7XG4gICAgICAgICAgdXNlZFtuZWlnaGJvcklkXSA9IG5ldyBTZXQoW2N1ck5vZGVdKTtcbiAgICAgICAgfSBlbHNlIGlmICghdXNlZFtjdXJOb2RlSWRdLmhhcyhuZWlnaGJvcikpIHtcbiAgICAgICAgICAvLyBhIGN5Y2xlIGZvdW5kXG4gICAgICAgICAgdmFyIGN5Y2xlVmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHZhciBjeWNsZVBhdGggPSBbbmVpZ2hib3IsIGN1ck5vZGVdO1xuICAgICAgICAgIHZhciBwID0gcGFyZW50XzFbY3VyTm9kZUlkXTtcblxuICAgICAgICAgIHdoaWxlICh1c2VkW25laWdoYm9ySWRdLnNpemUgJiYgIXVzZWRbbmVpZ2hib3JJZF0uaGFzKHApKSB7XG4gICAgICAgICAgICBjeWNsZVBhdGgucHVzaChwKTtcbiAgICAgICAgICAgIGlmIChwID09PSBwYXJlbnRfMVtwLmlkXSkgYnJlYWs7ZWxzZSBwID0gcGFyZW50XzFbcC5pZF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3ljbGVQYXRoLnB1c2gocCk7XG5cbiAgICAgICAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrlcbiAgICAgICAgICAgIGN5Y2xlVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJZHMgJiYgIWluY2x1ZGUpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOacieaMh+WumuS4jeWMheWQq+eahOiKgueCuVxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyDmioogbm9kZSBsaXN0IOW9ouW8j+i9rOaNouS4uiBjeWNsZSDnmoTmoLzlvI9cblxuXG4gICAgICAgICAgaWYgKGN5Y2xlVmFsaWQpIHtcbiAgICAgICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgY3ljbGVQYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbaW5kZXggLSAxXS5pZF0gPSBjeWNsZVBhdGhbaW5kZXhdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3ljbGVQYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbY3ljbGVQYXRoLmxlbmd0aCAtIDFdLmlkXSA9IGN5Y2xlUGF0aFswXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHVzZWRbbmVpZ2hib3JJZF0uYWRkKGN1ck5vZGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDeWNsZXM7XG59O1xuLyoqXG4gKiBKb2huc29uJ3MgYWxnb3JpdGhtLCDml7bpl7TlpI3mnYLluqYgTygoViArIEUpKEMgKyAxKSkkIGFuZCBzcGFjZSBib3VuZGVkIGJ5IE8oViArIEUpXG4gKiByZWZlcjogaHR0cHM6Ly93d3cuY3MudHVmdHMuZWR1L2NvbXAvMTUwR0EvaG9tZXdvcmtzL2h3MS9Kb2huc29uJTIwNzUuUERGXG4gKiByZWZlcjogaHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vZG9jdW1lbnRhdGlvbi9zdGFibGUvX21vZHVsZXMvbmV0d29ya3gvYWxnb3JpdGhtcy9jeWNsZXMuaHRtbCNzaW1wbGVfY3ljbGVzXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4RcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IElOb2RlfV0g6L+U5Zue5omA5pyJ55qEIHNpbXBsZSBjeWNsZXNcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBmdW5jdGlvbiBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSkge1xuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgcGF0aCA9IFtdOyAvLyBzdGFjayBvZiBub2RlcyBpbiBjdXJyZW50IHBhdGhcblxuICB2YXIgYmxvY2tlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIEIgPSBbXTsgLy8gcmVtZW1iZXIgcG9ydGlvbnMgb2YgdGhlIGdyYXBoIHRoYXQgeWllbGQgbm8gZWxlbWVudGFyeSBjaXJjdWl0XG5cbiAgdmFyIGFsbEN5Y2xlcyA9IFtdO1xuICB2YXIgaWR4Mk5vZGUgPSB7fTtcbiAgdmFyIG5vZGUySWR4ID0ge307IC8vIOi+heWKqeWHveaVsO+8miB1bmJsb2NrIGFsbCBibG9ja2VkIG5vZGVzXG5cbiAgdmFyIHVuYmxvY2sgPSBmdW5jdGlvbiB1bmJsb2NrKHRoaXNOb2RlKSB7XG4gICAgdmFyIHN0YWNrID0gW3RoaXNOb2RlXTtcblxuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgbm9kZSA9IHN0YWNrLnBvcCgpO1xuXG4gICAgICBpZiAoYmxvY2tlZC5oYXMobm9kZSkpIHtcbiAgICAgICAgYmxvY2tlZC5kZWxldGUobm9kZSk7XG4gICAgICAgIEJbbm9kZS5pZF0uZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICAgIHN0YWNrLnB1c2gobik7XG4gICAgICAgIH0pO1xuICAgICAgICBCW25vZGUuaWRdLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciBjaXJjdWl0ID0gZnVuY3Rpb24gY2lyY3VpdChub2RlLCBzdGFydCwgYWRqTGlzdCkge1xuICAgIHZhciBjbG9zZWQgPSBmYWxzZTsgLy8gd2hldGhlciBhIHBhdGggaXMgY2xvc2VkXG5cbiAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlID09PSBmYWxzZSAmJiBub2RlSWRzLmluZGV4T2Yobm9kZS5pZCkgPiAtMSkgcmV0dXJuIGNsb3NlZDtcbiAgICBwYXRoLnB1c2gobm9kZSk7XG4gICAgYmxvY2tlZC5hZGQobm9kZSk7XG4gICAgdmFyIG5laWdoYm9ycyA9IGFkakxpc3Rbbm9kZS5pZF07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIG5laWdoYm9yID0gaWR4Mk5vZGVbbmVpZ2hib3JzW2ldXTtcblxuICAgICAgaWYgKG5laWdoYm9yID09PSBzdGFydCkge1xuICAgICAgICB2YXIgY3ljbGUgPSB7fTtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgcGF0aC5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICBjeWNsZVtwYXRoW2luZGV4IC0gMV0uaWRdID0gcGF0aFtpbmRleF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjeWNsZVtwYXRoW3BhdGgubGVuZ3RoIC0gMV0uaWRdID0gcGF0aFswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFsbEN5Y2xlcy5wdXNoKGN5Y2xlKTtcbiAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoIWJsb2NrZWQuaGFzKG5laWdoYm9yKSkge1xuICAgICAgICBpZiAoY2lyY3VpdChuZWlnaGJvciwgc3RhcnQsIGFkakxpc3QpKSB7XG4gICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbG9zZWQpIHtcbiAgICAgIHVuYmxvY2sobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGlkeDJOb2RlW25laWdoYm9yc1tpXV07XG5cbiAgICAgICAgaWYgKCFCW25laWdoYm9yLmlkXS5oYXMobm9kZSkpIHtcbiAgICAgICAgICBCW25laWdoYm9yLmlkXS5hZGQobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBwYXRoLnBvcCgpO1xuICAgIHJldHVybiBjbG9zZWQ7XG4gIH07XG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTsgLy8gSm9obnNvbidzIGFsZ29yaXRobSDopoHmsYLnu5noioLngrnotYvpobrluo/vvIzlhYjmjInoioLngrnlnKjmlbDnu4TkuK3nmoTpobrluo9cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgbm9kZUlkID0gbm9kZS5pZDtcbiAgICBub2RlMklkeFtub2RlSWRdID0gaTtcbiAgICBpZHgyTm9kZVtpXSA9IG5vZGU7XG4gIH0gLy8g5aaC5p6c5pyJ5oyH5a6a5YyF5ZCr55qE6IqC54K577yM5YiZ5oqK5oyH5a6a6IqC54K55o6S5bqP5Zyo5YmN77yM5Lul5L6/5o+Q5pep57uT5p2f5pCc57SiXG5cblxuICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlSWRzW2ldO1xuICAgICAgbm9kZTJJZHhbbm9kZXNbaV0uaWRdID0gbm9kZTJJZHhbbm9kZUlkXTtcbiAgICAgIG5vZGUySWR4W25vZGVJZF0gPSAwO1xuICAgICAgaWR4Mk5vZGVbMF0gPSBub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmlkID09PSBub2RlSWQ7XG4gICAgICB9KTtcbiAgICAgIGlkeDJOb2RlW25vZGUySWR4W25vZGVzW2ldLmlkXV0gPSBub2Rlc1tpXTtcbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfbG9vcF8yKGkpO1xuICAgIH1cbiAgfSAvLyDov5Tlm54g6IqC54K56aG65bqPID49IG5vZGVPcmRlciDnmoTlvLrov57pgJrliIbph4/nmoRhZGpMaXN0XG5cblxuICB2YXIgZ2V0TWluQ29tcG9uZW50QWRqID0gZnVuY3Rpb24gZ2V0TWluQ29tcG9uZW50QWRqKGNvbXBvbmVudHMpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgbWluQ29tcElkeDtcbiAgICB2YXIgbWluSWR4ID0gSW5maW5pdHk7IC8vIEZpbmQgbGVhc3QgY29tcG9uZW50IGFuZCB0aGUgbG93ZXN0IG5vZGVcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIGNvbXAgPSBjb21wb25lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbXAubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG5vZGVJZHhfMSA9IG5vZGUySWR4W2NvbXBbal0uaWRdO1xuXG4gICAgICAgIGlmIChub2RlSWR4XzEgPCBtaW5JZHgpIHtcbiAgICAgICAgICBtaW5JZHggPSBub2RlSWR4XzE7XG4gICAgICAgICAgbWluQ29tcElkeCA9IGk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY29tcG9uZW50ID0gY29tcG9uZW50c1ttaW5Db21wSWR4XTtcbiAgICB2YXIgYWRqTGlzdCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIHZhciBub2RlID0gY29tcG9uZW50W2ldO1xuICAgICAgYWRqTGlzdFtub2RlLmlkXSA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDAsIF9iID0gZ2V0TmVpZ2hib3JzKG5vZGUuaWQsIGdyYXBoRGF0YS5lZGdlcywgJ3RhcmdldCcpLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50Lm1hcChmdW5jdGlvbiAoYykge1xuICAgICAgICAgIHJldHVybiBjLmlkO1xuICAgICAgICB9KS5pbmRleE9mKG4pID4gLTE7XG4gICAgICB9KTsgX2kgPCBfYi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIG5laWdoYm9yID0gX2JbX2ldOyAvLyDlr7noh6rnjq/mg4XlhrUgKOeCuei/nuWQkeiHqui6qykg54m55q6K5aSE55CG77ya6K6w5b2V6Ieq546v77yM5L2G5LiN5Yqg5YWlYWRqTGlzdFxuXG4gICAgICAgIGlmIChuZWlnaGJvciA9PT0gbm9kZS5pZCAmJiAhKGluY2x1ZGUgPT09IGZhbHNlICYmIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xKSkge1xuICAgICAgICAgIGFsbEN5Y2xlcy5wdXNoKChfYSA9IHt9LCBfYVtub2RlLmlkXSA9IG5vZGUsIF9hKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRqTGlzdFtub2RlLmlkXS5wdXNoKG5vZGUySWR4W25laWdoYm9yXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICBhZGpMaXN0OiBhZGpMaXN0LFxuICAgICAgbWluSWR4OiBtaW5JZHhcbiAgICB9O1xuICB9O1xuXG4gIHZhciBub2RlSWR4ID0gMDtcblxuICB3aGlsZSAobm9kZUlkeCA8IG5vZGVzLmxlbmd0aCkge1xuICAgIHZhciBzdWJncmFwaE5vZGVzID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbm9kZTJJZHhbbi5pZF0gPj0gbm9kZUlkeDtcbiAgICB9KTtcbiAgICB2YXIgc2NjcyA9IGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzKHtcbiAgICAgIG5vZGVzOiBzdWJncmFwaE5vZGVzLFxuICAgICAgZWRnZXM6IGdyYXBoRGF0YS5lZGdlc1xuICAgIH0pLmZpbHRlcihmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gY29tcG9uZW50Lmxlbmd0aCA+IDE7XG4gICAgfSk7XG4gICAgaWYgKHNjY3MubGVuZ3RoID09PSAwKSBicmVhaztcbiAgICB2YXIgc2NjID0gZ2V0TWluQ29tcG9uZW50QWRqKHNjY3MpO1xuICAgIHZhciBtaW5JZHggPSBzY2MubWluSWR4LFxuICAgICAgICBhZGpMaXN0ID0gc2NjLmFkakxpc3QsXG4gICAgICAgIGNvbXBvbmVudCA9IHNjYy5jb21wb25lbnQ7XG5cbiAgICBpZiAoY29tcG9uZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbXBvbmVudC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIEJbbm9kZS5pZF0gPSBuZXcgU2V0KCk7XG4gICAgICB9KTtcbiAgICAgIHZhciBzdGFydE5vZGUgPSBpZHgyTm9kZVttaW5JZHhdOyAvLyBzdGFydE5vZGUg5LiN5Zyo5oyH5a6a6KaB5YyF5ZCr55qE6IqC54K55Lit77yM5o+Q5YmN57uT5p2f5pCc57SiXG5cbiAgICAgIGlmIChub2RlSWRzICYmIGluY2x1ZGUgJiYgbm9kZUlkcy5pbmRleE9mKHN0YXJ0Tm9kZS5pZCkgPT09IC0xKSByZXR1cm4gYWxsQ3ljbGVzO1xuICAgICAgY2lyY3VpdChzdGFydE5vZGUsIHN0YXJ0Tm9kZSwgYWRqTGlzdCk7XG4gICAgICBub2RlSWR4ID0gbWluSWR4ICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbEN5Y2xlcztcbn07XG4vKipcbiAqIOafpeaJvuWbvuS4reaJgOaciea7oei2s+imgeaxgueahOWciFxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKiBAcGFyYW0gbm9kZUlkcyDoioLngrkgSUQg55qE5pWw57uE77yM6Iul5LiN5oyH5a6a77yM5YiZ6L+U5Zue5Zu+5Lit5omA5pyJ55qE5ZyIXG4gKiBAcGFyYW0gaW5jbHVkZSDljIXlkKvmiJbmjpLpmaTmjIflrprnmoToioLngrlcbiAqIEByZXR1cm4gW3tba2V5OiBzdHJpbmddOiBOb2RlfV0g5YyF5ZCr5omA5pyJ546v55qE5pWw57uE77yM5q+P5Liq546v55So5LiA5LiqT2JqZWN06KGo56S677yM5YW25Lita2V55Li66IqC54K5aWTvvIx2YWx1ZeS4uuivpeiKgueCueWcqOeOr+S4reaMh+WQkeeahOS4i+S4gOS4quiKgueCuVxuICovXG5cbmV4cG9ydCB2YXIgZGV0ZWN0QWxsQ3ljbGVzID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgaWYgKGluY2x1ZGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGRpcmVjdGVkKSByZXR1cm4gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpO1xuICByZXR1cm4gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgZGV0ZWN0RGlyZWN0ZWRDeWNsZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/detect-cycle.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/dfs.js": /*!************************************************!*\ !*** ./node_modules/@antv/algorithm/es/dfs.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return depthFirstSearch; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n\n if (!seen[next]) {\n seen[next] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * @param {Graph} graph\n * @param {GraphNode} currentNode\n * @param {GraphNode} previousNode\n * @param {Callbacks} callbacks\n */\n\n\nfunction depthFirstSearchRecursive(graphData, currentNode, previousNode, callbacks) {\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n });\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a;\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(currentNode, edges, 'target').forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n depthFirstSearchRecursive(graphData, nextNode, currentNode, callbacks);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n });\n}\n/**\n * 深度优先遍历图\n * @param data GraphData 图数据\n * @param startNodeId 开始遍历的节点的 ID\n * @param originalCallbacks 回调\n */\n\n\nfunction depthFirstSearch(graphData, startNodeId, callbacks) {\n depthFirstSearchRecursive(graphData, startNodeId, '', initCallbacks(callbacks));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Rmcy5qcz84MzliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSwwREFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHZTtBQUNmO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Rmcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG5cbmZ1bmN0aW9uIGluaXRDYWxsYmFja3MoY2FsbGJhY2tzKSB7XG4gIGlmIChjYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIGNhbGxiYWNrcyA9IHt9O1xuICB9XG5cbiAgdmFyIGluaXRpYXRlZENhbGxiYWNrID0gY2FsbGJhY2tzO1xuXG4gIHZhciBzdHViQ2FsbGJhY2sgPSBmdW5jdGlvbiBzdHViQ2FsbGJhY2soKSB7fTtcblxuICB2YXIgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VlbiA9IHt9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoX2EpIHtcbiAgICAgIHZhciBuZXh0ID0gX2EubmV4dDtcblxuICAgICAgaWYgKCFzZWVuW25leHRdKSB7XG4gICAgICAgIHNlZW5bbmV4dF0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gIH0oKTtcblxuICBpbml0aWF0ZWRDYWxsYmFjay5hbGxvd1RyYXZlcnNhbCA9IGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCB8fCBhbGxvd1RyYXZlcnNhbENhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5lbnRlciA9IGNhbGxiYWNrcy5lbnRlciB8fCBzdHViQ2FsbGJhY2s7XG4gIGluaXRpYXRlZENhbGxiYWNrLmxlYXZlID0gY2FsbGJhY2tzLmxlYXZlIHx8IHN0dWJDYWxsYmFjaztcbiAgcmV0dXJuIGluaXRpYXRlZENhbGxiYWNrO1xufVxuLyoqXG4gKiBAcGFyYW0ge0dyYXBofSBncmFwaFxuICogQHBhcmFtIHtHcmFwaE5vZGV9IGN1cnJlbnROb2RlXG4gKiBAcGFyYW0ge0dyYXBoTm9kZX0gcHJldmlvdXNOb2RlXG4gKiBAcGFyYW0ge0NhbGxiYWNrc30gY2FsbGJhY2tzXG4gKi9cblxuXG5mdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgY3VycmVudE5vZGUsIHByZXZpb3VzTm9kZSwgY2FsbGJhY2tzKSB7XG4gIGNhbGxiYWNrcy5lbnRlcih7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTtcbiAgZ2V0TmVpZ2hib3JzKGN1cnJlbnROb2RlLCBlZGdlcywgJ3RhcmdldCcpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgaWYgKGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCh7XG4gICAgICBwcmV2aW91czogcHJldmlvdXNOb2RlLFxuICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICBuZXh0OiBuZXh0Tm9kZVxuICAgIH0pKSB7XG4gICAgICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgbmV4dE5vZGUsIGN1cnJlbnROb2RlLCBjYWxsYmFja3MpO1xuICAgIH1cbiAgfSk7XG4gIGNhbGxiYWNrcy5sZWF2ZSh7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbn1cbi8qKlxuICog5rex5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZGF0YSBHcmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnROb2RlSWQg5byA5aeL6YGN5Y6G55qE6IqC54K555qEIElEXG4gKiBAcGFyYW0gb3JpZ2luYWxDYWxsYmFja3Mg5Zue6LCDXG4gKi9cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsIGNhbGxiYWNrcykge1xuICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsICcnLCBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/dfs.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/dijkstra.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/algorithm/es/dijkstra.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n\n\nvar minVertex = function minVertex(D, nodes, marks) {\n // 找出最小的点\n var minDis = Infinity;\n var minNode;\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeId = nodes[i].id;\n\n if (!marks[nodeId] && D[nodeId] <= minDis) {\n minDis = D[nodeId];\n minNode = nodes[i];\n }\n }\n\n return minNode;\n};\n\nvar dijkstra = function dijkstra(graphData, source, directed, weightPropertyName) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeIds = [];\n var marks = {};\n var D = {};\n var prevs = {}; // key: 顶点, value: 顶点的前驱点数组(可能有多条等长的最短路径)\n\n nodes.forEach(function (node, i) {\n var id = node.id;\n nodeIds.push(id);\n D[id] = Infinity;\n if (id === source) D[id] = 0;\n });\n var nodeNum = nodes.length;\n\n var _loop_1 = function _loop_1(i) {\n // Process the vertices\n var minNode = minVertex(D, nodes, marks);\n var minNodeId = minNode.id;\n marks[minNodeId] = true;\n if (D[minNodeId] === Infinity) return \"continue\"; // Unreachable vertices cannot be the intermediate point\n\n var relatedEdges = [];\n if (directed) relatedEdges = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getOutEdgesNodeId\"])(minNodeId, edges);else relatedEdges = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(minNodeId, edges);\n relatedEdges.forEach(function (edge) {\n var edgeTarget = edge.target;\n var edgeSource = edge.source;\n var w = edgeTarget === minNodeId ? edgeSource : edgeTarget;\n var weight = weightPropertyName && edge[weightPropertyName] ? edge[weightPropertyName] : 1;\n\n if (D[w] > D[minNode.id] + weight) {\n D[w] = D[minNode.id] + weight;\n prevs[w] = [minNode.id];\n } else if (D[w] === D[minNode.id] + weight) {\n prevs[w].push(minNode.id);\n }\n });\n };\n\n for (var i = 0; i < nodeNum; i++) {\n _loop_1(i);\n }\n\n prevs[source] = [source]; // 每个节点存可能存在多条最短路径\n\n var paths = {};\n\n for (var target in D) {\n if (D[target] !== Infinity) {\n findAllPaths(source, target, prevs, paths);\n }\n } // 兼容之前单路径\n\n\n var path = {};\n\n for (var target in paths) {\n path[target] = paths[target][0];\n }\n\n return {\n length: D,\n path: path,\n allPath: paths\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (dijkstra);\n\nfunction findAllPaths(source, target, prevs, foundPaths) {\n if (source === target) {\n return [source];\n }\n\n if (foundPaths[target]) {\n return foundPaths[target];\n }\n\n var paths = [];\n\n for (var _i = 0, _a = prevs[target]; _i < _a.length; _i++) {\n var prev = _a[_i];\n var prevPaths = findAllPaths(source, prev, prevs, foundPaths);\n if (!prevPaths) return;\n\n for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) {\n var prePath = prevPaths_1[_b];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(prePath)) paths.push(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], prePath, true), [target], false));else paths.push([prePath, target]);\n }\n }\n\n foundPaths[target] = paths;\n return foundPaths[target];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2RpamtzdHJhLmpzPzdhMGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDRDtBQUN3Qjs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBLGlDQUFpQywrREFBaUIsbUJBQW1CLG9CQUFvQiw4REFBZ0I7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxpQkFBaUIsYUFBYTtBQUM5QjtBQUNBOztBQUVBLDJCQUEyQjs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLHVFQUFRLEVBQUM7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxzQ0FBc0MsZ0JBQWdCO0FBQ3REO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkMseUJBQXlCO0FBQ3RFO0FBQ0EsVUFBVSwwREFBTyxzQkFBc0IsMkRBQWEsQ0FBQywyREFBYSx1Q0FBdUM7QUFDekc7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2RpamtzdHJhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19zcHJlYWRBcnJheSB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZ2V0T3V0RWRnZXNOb2RlSWQsIGdldEVkZ2VzQnlOb2RlSWQgfSBmcm9tICcuL3V0aWwnO1xuXG52YXIgbWluVmVydGV4ID0gZnVuY3Rpb24gbWluVmVydGV4KEQsIG5vZGVzLCBtYXJrcykge1xuICAvLyDmib7lh7rmnIDlsI/nmoTngrlcbiAgdmFyIG1pbkRpcyA9IEluZmluaXR5O1xuICB2YXIgbWluTm9kZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGVJZCA9IG5vZGVzW2ldLmlkO1xuXG4gICAgaWYgKCFtYXJrc1tub2RlSWRdICYmIERbbm9kZUlkXSA8PSBtaW5EaXMpIHtcbiAgICAgIG1pbkRpcyA9IERbbm9kZUlkXTtcbiAgICAgIG1pbk5vZGUgPSBub2Rlc1tpXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWluTm9kZTtcbn07XG5cbnZhciBkaWprc3RyYSA9IGZ1bmN0aW9uIGRpamtzdHJhKGdyYXBoRGF0YSwgc291cmNlLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlSWRzID0gW107XG4gIHZhciBtYXJrcyA9IHt9O1xuICB2YXIgRCA9IHt9O1xuICB2YXIgcHJldnMgPSB7fTsgLy8ga2V5OiDpobbngrksIHZhbHVlOiDpobbngrnnmoTliY3pqbHngrnmlbDnu4TvvIjlj6/og73mnInlpJrmnaHnrYnplb/nmoTmnIDnn63ot6/lvoTvvIlcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGlkID0gbm9kZS5pZDtcbiAgICBub2RlSWRzLnB1c2goaWQpO1xuICAgIERbaWRdID0gSW5maW5pdHk7XG4gICAgaWYgKGlkID09PSBzb3VyY2UpIERbaWRdID0gMDtcbiAgfSk7XG4gIHZhciBub2RlTnVtID0gbm9kZXMubGVuZ3RoO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgLy8gUHJvY2VzcyB0aGUgdmVydGljZXNcbiAgICB2YXIgbWluTm9kZSA9IG1pblZlcnRleChELCBub2RlcywgbWFya3MpO1xuICAgIHZhciBtaW5Ob2RlSWQgPSBtaW5Ob2RlLmlkO1xuICAgIG1hcmtzW21pbk5vZGVJZF0gPSB0cnVlO1xuICAgIGlmIChEW21pbk5vZGVJZF0gPT09IEluZmluaXR5KSByZXR1cm4gXCJjb250aW51ZVwiOyAvLyBVbnJlYWNoYWJsZSB2ZXJ0aWNlcyBjYW5ub3QgYmUgdGhlIGludGVybWVkaWF0ZSBwb2ludFxuXG4gICAgdmFyIHJlbGF0ZWRFZGdlcyA9IFtdO1xuICAgIGlmIChkaXJlY3RlZCkgcmVsYXRlZEVkZ2VzID0gZ2V0T3V0RWRnZXNOb2RlSWQobWluTm9kZUlkLCBlZGdlcyk7ZWxzZSByZWxhdGVkRWRnZXMgPSBnZXRFZGdlc0J5Tm9kZUlkKG1pbk5vZGVJZCwgZWRnZXMpO1xuICAgIHJlbGF0ZWRFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgZWRnZVRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgdmFyIGVkZ2VTb3VyY2UgPSBlZGdlLnNvdXJjZTtcbiAgICAgIHZhciB3ID0gZWRnZVRhcmdldCA9PT0gbWluTm9kZUlkID8gZWRnZVNvdXJjZSA6IGVkZ2VUYXJnZXQ7XG4gICAgICB2YXIgd2VpZ2h0ID0gd2VpZ2h0UHJvcGVydHlOYW1lICYmIGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSA/IGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSA6IDE7XG5cbiAgICAgIGlmIChEW3ddID4gRFttaW5Ob2RlLmlkXSArIHdlaWdodCkge1xuICAgICAgICBEW3ddID0gRFttaW5Ob2RlLmlkXSArIHdlaWdodDtcbiAgICAgICAgcHJldnNbd10gPSBbbWluTm9kZS5pZF07XG4gICAgICB9IGVsc2UgaWYgKERbd10gPT09IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQpIHtcbiAgICAgICAgcHJldnNbd10ucHVzaChtaW5Ob2RlLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVOdW07IGkrKykge1xuICAgIF9sb29wXzEoaSk7XG4gIH1cblxuICBwcmV2c1tzb3VyY2VdID0gW3NvdXJjZV07IC8vIOavj+S4quiKgueCueWtmOWPr+iDveWtmOWcqOWkmuadoeacgOefrei3r+W+hFxuXG4gIHZhciBwYXRocyA9IHt9O1xuXG4gIGZvciAodmFyIHRhcmdldCBpbiBEKSB7XG4gICAgaWYgKERbdGFyZ2V0XSAhPT0gSW5maW5pdHkpIHtcbiAgICAgIGZpbmRBbGxQYXRocyhzb3VyY2UsIHRhcmdldCwgcHJldnMsIHBhdGhzKTtcbiAgICB9XG4gIH0gLy8g5YW85a655LmL5YmN5Y2V6Lev5b6EXG5cblxuICB2YXIgcGF0aCA9IHt9O1xuXG4gIGZvciAodmFyIHRhcmdldCBpbiBwYXRocykge1xuICAgIHBhdGhbdGFyZ2V0XSA9IHBhdGhzW3RhcmdldF1bMF07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogRCxcbiAgICBwYXRoOiBwYXRoLFxuICAgIGFsbFBhdGg6IHBhdGhzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBkaWprc3RyYTtcblxuZnVuY3Rpb24gZmluZEFsbFBhdGhzKHNvdXJjZSwgdGFyZ2V0LCBwcmV2cywgZm91bmRQYXRocykge1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICByZXR1cm4gW3NvdXJjZV07XG4gIH1cblxuICBpZiAoZm91bmRQYXRoc1t0YXJnZXRdKSB7XG4gICAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbiAgfVxuXG4gIHZhciBwYXRocyA9IFtdO1xuXG4gIGZvciAodmFyIF9pID0gMCwgX2EgPSBwcmV2c1t0YXJnZXRdOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBwcmV2ID0gX2FbX2ldO1xuICAgIHZhciBwcmV2UGF0aHMgPSBmaW5kQWxsUGF0aHMoc291cmNlLCBwcmV2LCBwcmV2cywgZm91bmRQYXRocyk7XG4gICAgaWYgKCFwcmV2UGF0aHMpIHJldHVybjtcblxuICAgIGZvciAodmFyIF9iID0gMCwgcHJldlBhdGhzXzEgPSBwcmV2UGF0aHM7IF9iIDwgcHJldlBhdGhzXzEubGVuZ3RoOyBfYisrKSB7XG4gICAgICB2YXIgcHJlUGF0aCA9IHByZXZQYXRoc18xW19iXTtcbiAgICAgIGlmIChpc0FycmF5KHByZVBhdGgpKSBwYXRocy5wdXNoKF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgcHJlUGF0aCwgdHJ1ZSksIFt0YXJnZXRdLCBmYWxzZSkpO2Vsc2UgcGF0aHMucHVzaChbcHJlUGF0aCwgdGFyZ2V0XSk7XG4gICAgfVxuICB9XG5cbiAgZm91bmRQYXRoc1t0YXJnZXRdID0gcGF0aHM7XG4gIHJldHVybiBmb3VuZFBhdGhzW3RhcmdldF07XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/dijkstra.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/find-path.js": /*!******************************************************!*\ !*** ./node_modules/@antv/algorithm/es/find-path.js ***! \******************************************************/ /*! exports provided: findShortestPath, findAllPath */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findShortestPath\", function() { return findShortestPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findAllPath\", function() { return findAllPath; });\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/@antv/algorithm/es/dijkstra.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\nvar findShortestPath = function findShortestPath(graphData, start, end, directed, weightPropertyName) {\n var _a = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, start, directed, weightPropertyName),\n length = _a.length,\n path = _a.path,\n allPath = _a.allPath;\n\n return {\n length: length[end],\n path: path[end],\n allPath: allPath[end]\n };\n};\nvar findAllPath = function findAllPath(graphData, start, end, directed) {\n var _a;\n\n if (start === end) return [[start]];\n var _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var visited = [start];\n var isVisited = (_a = {}, _a[start] = true, _a);\n var stack = []; // 辅助栈,用于存储访问过的节点的邻居节点\n\n var allPath = [];\n var neighbors = directed ? Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(start, edges, 'target') : Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(start, edges);\n stack.push(neighbors);\n\n while (visited.length > 0 && stack.length > 0) {\n var children = stack[stack.length - 1];\n\n if (children.length) {\n var child = children.shift();\n\n if (child) {\n visited.push(child);\n isVisited[child] = true;\n neighbors = directed ? Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(child, edges, 'target') : Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(child, edges);\n stack.push(neighbors.filter(function (neighbor) {\n return !isVisited[neighbor];\n }));\n }\n } else {\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n continue;\n }\n\n if (visited[visited.length - 1] === end) {\n var path = visited.map(function (node) {\n return node;\n });\n allPath.push(path);\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n }\n }\n\n return allPath;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2ZpbmQtcGF0aC5qcz85NjhjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUMvQjtBQUNQLFdBQVcseURBQVE7QUFDbkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsaUJBQWlCOztBQUVqQjtBQUNBLDZCQUE2QiwwREFBWSwyQkFBMkIsMERBQVk7QUFDaEY7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwwREFBWSwyQkFBMkIsMERBQVk7QUFDbEY7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvZmluZC1wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRpamtzdHJhIGZyb20gJy4vZGlqa3N0cmEnO1xuaW1wb3J0IHsgZ2V0TmVpZ2hib3JzIH0gZnJvbSAnLi91dGlsJztcbmV4cG9ydCB2YXIgZmluZFNob3J0ZXN0UGF0aCA9IGZ1bmN0aW9uIGZpbmRTaG9ydGVzdFBhdGgoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHZhciBfYSA9IGRpamtzdHJhKGdyYXBoRGF0YSwgc3RhcnQsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpLFxuICAgICAgbGVuZ3RoID0gX2EubGVuZ3RoLFxuICAgICAgcGF0aCA9IF9hLnBhdGgsXG4gICAgICBhbGxQYXRoID0gX2EuYWxsUGF0aDtcblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogbGVuZ3RoW2VuZF0sXG4gICAgcGF0aDogcGF0aFtlbmRdLFxuICAgIGFsbFBhdGg6IGFsbFBhdGhbZW5kXVxuICB9O1xufTtcbmV4cG9ydCB2YXIgZmluZEFsbFBhdGggPSBmdW5jdGlvbiBmaW5kQWxsUGF0aChncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkKSB7XG4gIHZhciBfYTtcblxuICBpZiAoc3RhcnQgPT09IGVuZCkgcmV0dXJuIFtbc3RhcnRdXTtcbiAgdmFyIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIHZpc2l0ZWQgPSBbc3RhcnRdO1xuICB2YXIgaXNWaXNpdGVkID0gKF9hID0ge30sIF9hW3N0YXJ0XSA9IHRydWUsIF9hKTtcbiAgdmFyIHN0YWNrID0gW107IC8vIOi+heWKqeagiO+8jOeUqOS6juWtmOWCqOiuv+mXrui/h+eahOiKgueCueeahOmCu+WxheiKgueCuVxuXG4gIHZhciBhbGxQYXRoID0gW107XG4gIHZhciBuZWlnaGJvcnMgPSBkaXJlY3RlZCA/IGdldE5laWdoYm9ycyhzdGFydCwgZWRnZXMsICd0YXJnZXQnKSA6IGdldE5laWdoYm9ycyhzdGFydCwgZWRnZXMpO1xuICBzdGFjay5wdXNoKG5laWdoYm9ycyk7XG5cbiAgd2hpbGUgKHZpc2l0ZWQubGVuZ3RoID4gMCAmJiBzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbi5zaGlmdCgpO1xuXG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgdmlzaXRlZC5wdXNoKGNoaWxkKTtcbiAgICAgICAgaXNWaXNpdGVkW2NoaWxkXSA9IHRydWU7XG4gICAgICAgIG5laWdoYm9ycyA9IGRpcmVjdGVkID8gZ2V0TmVpZ2hib3JzKGNoaWxkLCBlZGdlcywgJ3RhcmdldCcpIDogZ2V0TmVpZ2hib3JzKGNoaWxkLCBlZGdlcyk7XG4gICAgICAgIHN0YWNrLnB1c2gobmVpZ2hib3JzLmZpbHRlcihmdW5jdGlvbiAobmVpZ2hib3IpIHtcbiAgICAgICAgICByZXR1cm4gIWlzVmlzaXRlZFtuZWlnaGJvcl07XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2aXNpdGVkW3Zpc2l0ZWQubGVuZ3RoIC0gMV0gPT09IGVuZCkge1xuICAgICAgdmFyIHBhdGggPSB2aXNpdGVkLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH0pO1xuICAgICAgYWxsUGF0aC5wdXNoKHBhdGgpO1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsUGF0aDtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/find-path.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/floydWarshall.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/algorithm/es/floydWarshall.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/es/adjacent-matrix.js\");\n\n\nvar floydWarshall = function floydWarshall(graphData, directed) {\n var adjacentMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, directed);\n var dist = [];\n var size = adjacentMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjacentMatrix[i][j] === 0 || !adjacentMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjacentMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (floydWarshall);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Zsb3lkV2Fyc2hhbGwuanM/YzA3MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQTZDOztBQUU3QztBQUNBLHVCQUF1QixnRUFBWTtBQUNuQztBQUNBOztBQUVBLGlCQUFpQixVQUFVO0FBQzNCOztBQUVBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRWUsNEVBQWEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2Zsb3lkV2Fyc2hhbGwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0QWRqTWF0cml4IGZyb20gXCIuL2FkamFjZW50LW1hdHJpeFwiO1xuXG52YXIgZmxveWRXYXJzaGFsbCA9IGZ1bmN0aW9uIGZsb3lkV2Fyc2hhbGwoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgYWRqYWNlbnRNYXRyaXggPSBnZXRBZGpNYXRyaXgoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7XG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqYWNlbnRNYXRyaXgubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAxKSB7XG4gICAgZGlzdFtpXSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIGRpc3RbaV1bal0gPSAwO1xuICAgICAgfSBlbHNlIGlmIChhZGphY2VudE1hdHJpeFtpXVtqXSA9PT0gMCB8fCAhYWRqYWNlbnRNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkamFjZW50TWF0cml4W2ldW2pdO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBmbG95ZFxuXG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBzaXplOyBrICs9IDEpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgICAgaWYgKGRpc3RbaV1bal0gPiBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXSkge1xuICAgICAgICAgIGRpc3RbaV1bal0gPSBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXN0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZmxveWRXYXJzaGFsbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/floydWarshall.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/gSpan/gSpan.js": /*!********************************************************!*\ !*** ./node_modules/@antv/algorithm/es/gSpan/gSpan.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _struct__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./struct */ \"./node_modules/@antv/algorithm/es/gSpan/struct.js\");\n\n\n\nvar DFSedge =\n/** @class */\nfunction () {\n function DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.fromNode = fromNode;\n this.toNode = toNode;\n this.nodeEdgeNodeLabel = {\n nodeLabel1: fromNodeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"],\n edgeLabel: edgeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_EDGE_LABEL\"],\n nodeLabel2: toNodeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]\n };\n }\n\n DFSedge.prototype.equalTo = function (other) {\n return this.fromNode === other.formNode && this.toNode === other.toNode && this.nodeEdgeNodeLabel === other.nodeEdgeNodeLabel;\n };\n\n DFSedge.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n\n return DFSedge;\n}(); // DFScode 是 DESedge 的数组\n\n\nvar DFScode =\n/** @class */\nfunction () {\n function DFScode() {\n this.rmpath = [];\n this.dfsEdgeList = [];\n }\n\n DFScode.prototype.equalTo = function (other) {\n var aLength = this.dfsEdgeList.length;\n var bLength = other.length;\n if (aLength !== bLength) return false;\n\n for (var i = 0; i < aLength; i++) {\n if (this.dfsEdgeList[i] !== other[i]) return false;\n }\n\n return true;\n };\n\n DFScode.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n /** 增加一条 edge 到 DFScode */\n\n\n DFScode.prototype.pushBack = function (fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.dfsEdgeList.push(new DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel));\n return this.dfsEdgeList;\n };\n /** 根据 dfs 构建图 */\n\n\n DFScode.prototype.toGraph = function (graphId, directed) {\n if (graphId === void 0) {\n graphId = _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_GRAPH_ID\"];\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n var graph = new _struct__WEBPACK_IMPORTED_MODULE_1__[\"Graph\"](graphId, true, directed);\n this.dfsEdgeList.forEach(function (dfsEdge) {\n var fromNodeId = dfsEdge.fromNode;\n var toNodeId = dfsEdge.toNode;\n var _a = dfsEdge.nodeEdgeNodeLabel,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n if (nodeLabel1 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]) graph.addNode(fromNodeId, nodeLabel1);\n if (nodeLabel2 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]) graph.addNode(toNodeId, nodeLabel2);\n if (nodeLabel1 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"] && nodeLabel2 !== nodeLabel1) graph.addEdge(undefined, fromNodeId, toNodeId, edgeLabel);\n });\n return graph;\n }; // 建立 rightmost path\n\n\n DFScode.prototype.buildRmpath = function () {\n this.rmpath = [];\n var oldFrom = undefined;\n var selfLength = this.dfsEdgeList.length;\n\n for (var i = selfLength - 1; i >= 0; i--) {\n var dfsEdge = this.dfsEdgeList[i];\n var fromNodeIdx = dfsEdge.fromNode;\n var toNodeIdx = dfsEdge.toNode;\n\n if (fromNodeIdx < toNodeIdx && (oldFrom === undefined || toNodeIdx === oldFrom)) {\n this.rmpath.push(i);\n oldFrom = fromNodeIdx;\n }\n }\n\n return this.rmpath;\n };\n\n DFScode.prototype.getNodeNum = function () {\n var nodeMap = {};\n this.dfsEdgeList.forEach(function (dfsEdge) {\n if (!nodeMap[dfsEdge.fromNode]) nodeMap[dfsEdge.fromNode] = true;\n if (!nodeMap[dfsEdge.toNode]) nodeMap[dfsEdge.toNode] = true;\n });\n return Object.keys(nodeMap).length;\n };\n\n return DFScode;\n}();\n\nvar History =\n/** @class */\nfunction () {\n function History(pdfs) {\n this.his = {};\n this.nodesUsed = {};\n this.edgesUsed = {};\n this.edges = [];\n if (!pdfs) return;\n\n while (pdfs) {\n var e = pdfs.edge;\n this.edges.push(e);\n this.nodesUsed[e.from] = 1;\n this.nodesUsed[e.to] = 1;\n this.edgesUsed[e.id] = 1;\n pdfs = pdfs.preNode;\n } // 倒序\n\n\n this.edges = this.edges.reverse();\n }\n\n History.prototype.hasNode = function (node) {\n return this.nodesUsed[node.id] === 1;\n };\n\n History.prototype.hasEdge = function (edge) {\n return this.edgesUsed[edge.id] === 1;\n };\n\n return History;\n}();\n\nvar GSpan =\n/** @class */\nfunction () {\n function GSpan(_a) {\n var graphs = _a.graphs,\n _b = _a.minSupport,\n minSupport = _b === void 0 ? 2 : _b,\n _c = _a.minNodeNum,\n minNodeNum = _c === void 0 ? 1 : _c,\n _d = _a.maxNodeNum,\n maxNodeNum = _d === void 0 ? 4 : _d,\n _e = _a.top,\n top = _e === void 0 ? 10 : _e,\n _f = _a.directed,\n directed = _f === void 0 ? false : _f,\n _g = _a.verbose,\n verbose = _g === void 0 ? false : _g; // -------- 第零步,初始化-------\n\n this.graphs = graphs;\n this.dfsCode = new DFScode();\n this.support = 0;\n this.frequentSize1Subgraphs = [];\n this.frequentSubgraphs = [];\n this.minSupport = minSupport;\n this.top = top;\n this.directed = directed;\n this.counter = 0; // TODO? timestamp = {}\n\n this.maxNodeNum = maxNodeNum;\n this.minNodeNum = minNodeNum;\n this.verbose = verbose;\n if (this.maxNodeNum < this.minNodeNum) this.maxNodeNum = this.minNodeNum;\n this.reportDF = []; // matrix\n } // Line 352\n\n\n GSpan.prototype.findForwardRootEdges = function (graph, fromNode) {\n var _this = this;\n\n var result = [];\n var nodeMap = graph.nodeMap;\n fromNode.edges.forEach(function (edge) {\n if (_this.directed || fromNode.label <= nodeMap[edge.to].label) result.push(edge);\n });\n return result;\n };\n\n GSpan.prototype.findBackwardEdge = function (graph, edge1, edge2, history) {\n if (!this.directed && edge1 === edge2) return null;\n var nodeMap = graph.nodeMap;\n var edge2To = nodeMap[edge2.to];\n var edge2ToEdges = edge2To.edges;\n var edgeLength = edge2ToEdges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edge2ToEdges[i];\n if (history.hasEdge(edge) || edge.to !== edge1.from) continue;\n\n if (!this.directed) {\n if (edge1.label < edge.label || edge1.label === edge.label && nodeMap[edge1.to].label <= nodeMap[edge2.to].label) {\n return edge;\n }\n } else {\n if (nodeMap[edge1.from].label < nodeMap[edge2.to].label || nodeMap[edge1.from].label === nodeMap[edge2.to].label && edge1.label <= edge.label) {\n return edge;\n }\n }\n }\n\n return null;\n };\n\n GSpan.prototype.findForwardPureEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var rightmostEdgeToId = rightmostEdge.to;\n var edges = graph.nodeMap[rightmostEdgeToId].edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var toNode = graph.nodeMap[edge.to];\n\n if (minNodeLabel <= toNode.label && !history.hasNode(toNode)) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.findForwardRmpathEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var nodeMap = graph.nodeMap;\n var toNodeLabel = nodeMap[rightmostEdge.to].label;\n var fromNode = nodeMap[rightmostEdge.from];\n var edges = fromNode.edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var newToNodeLabel = nodeMap[edge.to].label;\n\n if (rightmostEdge.to === edge.to || minNodeLabel > newToNodeLabel || history.hasNode(nodeMap[edge.to])) {\n continue;\n }\n\n if (rightmostEdge.label < edge.label || rightmostEdge.label === edge.label && toNodeLabel <= newToNodeLabel) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.getSupport = function (projected) {\n var graphMap = {};\n projected.forEach(function (pro) {\n if (!graphMap[pro.graphId]) graphMap[pro.graphId] = true;\n });\n return Object.keys(graphMap).length;\n };\n\n GSpan.prototype.findMinLabel = function (obj) {\n var minLabel = undefined;\n Object.keys(obj).forEach(function (nodeEdgeNodeLabel) {\n var _a = obj[nodeEdgeNodeLabel],\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n if (!minLabel) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n return;\n }\n\n if (nodeLabel1 < minLabel.nodeLabel1 || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel < minLabel.edgeLabel || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel === minLabel.edgeLabel && nodeLabel2 < minLabel.nodeLabel2) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n }\n });\n return minLabel;\n };\n\n GSpan.prototype.isMin = function () {\n var _this = this;\n\n var dfsCode = this.dfsCode;\n if (this.verbose) console.log(\"isMin checking\", dfsCode);\n if (dfsCode.dfsEdgeList.length === 1) return true;\n var directed = this.directed;\n var graph = dfsCode.toGraph(_struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_GRAPH_ID\"], directed);\n var nodeMap = graph.nodeMap;\n var dfsCodeMin = new DFScode();\n var root = {};\n graph.nodes.forEach(function (node) {\n var forwardEdges = _this.findForwardRootEdges(graph, node);\n\n forwardEdges.forEach(function (edge) {\n var otherNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(otherNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: otherNode.label\n };\n var pdfs = {\n graphId: graph.id,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n }); // 比较 root 中每一项的 nodeEdgeNodeLabel 大小,按照 nodeLabel1、edgeLabe、nodeLabel2 的顺序比较\n\n var minLabel = this.findMinLabel(root); // line 419\n\n if (!minLabel) return;\n dfsCodeMin.dfsEdgeList.push(new DFSedge(0, 1, minLabel.nodeLabel1, minLabel.edgeLabel, minLabel.nodeLabel2)); // line 423\n\n var projectIsMin = function projectIsMin(projected) {\n // right most path\n var rmpath = dfsCodeMin.buildRmpath();\n var minNodeLabel = dfsCodeMin.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var maxToC = dfsCodeMin.dfsEdgeList[rmpath[0]].toNode; // node id\n\n var backwardRoot = {};\n var flag = false,\n newTo = 0;\n var end = directed ? -1 : 0; // 遍历到 1 还是到 0\n\n var _loop_1 = function _loop_1(i) {\n if (flag) return \"break\"; // line 435\n\n projected.forEach(function (p) {\n var history = new History(p);\n\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n // Line 441\n if (!backwardRoot[backwardEdge.label]) {\n backwardRoot[backwardEdge.label] = {\n projected: [],\n edgeLabel: backwardEdge.label\n };\n }\n\n backwardRoot[backwardEdge.label].projected.push({\n graphId: graph.id,\n edge: backwardRoot,\n preNode: p\n });\n newTo = dfsCodeMin.dfsEdgeList[rmpath[i]].fromNode;\n flag = true;\n }\n });\n };\n\n for (var i = rmpath.length - 1; i > end; i--) {\n var state_1 = _loop_1(i);\n\n if (state_1 === \"break\") break;\n }\n\n if (flag) {\n var minBackwardEdgeLabel = _this.findMinLabel(backwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(maxToC, newTo, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], minBackwardEdgeLabel.edgeLabel, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]));\n var idx_1 = dfsCodeMin.dfsEdgeList.length - 1;\n if (_this.dfsCode.dfsEdgeList[idx_1] !== dfsCodeMin.dfsEdgeList[idx_1]) return false;\n return projectIsMin(backwardRoot[minBackwardEdgeLabel.edgeLabel].projected);\n }\n\n var forwardRoot = {};\n flag = false;\n var newFrom = 0;\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n if (forwardPureEdges.length > 0) {\n flag = true;\n newFrom = maxToC;\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n var pathLength = rmpath.length;\n\n var _loop_2 = function _loop_2(i) {\n if (flag) return \"break\";\n var value = rmpath[i];\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[value], minNodeLabel, history);\n\n if (forwardRmpathEdges.length > 0) {\n flag = true;\n newFrom = dfsCodeMin.dfsEdgeList[value].fromNode;\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n };\n\n for (var i = 0; i < pathLength; i++) {\n var state_2 = _loop_2(i);\n\n if (state_2 === \"break\") break;\n }\n\n if (!flag) return true;\n\n var forwardMinEdgeNodeLabel = _this.findMinLabel(forwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(newFrom, maxToC + 1, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], forwardMinEdgeNodeLabel.edgeLabel, forwardMinEdgeNodeLabel.nodeLabel2));\n var idx = dfsCodeMin.dfsEdgeList.length - 1;\n if (dfsCode.dfsEdgeList[idx] !== dfsCodeMin.dfsEdgeList[idx]) return false;\n return projectIsMin(forwardRoot[\"\".concat(forwardMinEdgeNodeLabel.edgeLabel, \"-\").concat(forwardMinEdgeNodeLabel.nodeLabel2)].projected);\n };\n\n var key = \"\".concat(minLabel.nodeLabel1, \"-\").concat(minLabel.edgeLabel, \"-\").concat(minLabel.nodeLabel2);\n return projectIsMin(root[key].projected);\n };\n\n GSpan.prototype.report = function () {\n if (this.dfsCode.getNodeNum() < this.minNodeNum) return;\n this.counter++;\n var graph = this.dfsCode.toGraph(this.counter, this.directed);\n this.frequentSubgraphs.push(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(graph));\n };\n\n GSpan.prototype.subGraphMining = function (projected) {\n var _this = this;\n\n var support = this.getSupport(projected);\n if (support < this.minSupport) return;\n if (!this.isMin()) return;\n this.report();\n var nodeNum = this.dfsCode.getNodeNum();\n var rmpath = this.dfsCode.buildRmpath();\n var maxToC = this.dfsCode.dfsEdgeList[rmpath[0]].toNode;\n var minNodeLabel = this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var forwardRoot = {};\n var backwardRoot = {};\n projected.forEach(function (p) {\n var graph = _this.graphs[p.graphId];\n var nodeMap = graph.nodeMap;\n var history = new History(p); // backward Line 526\n\n for (var i = rmpath.length - 1; i >= 0; i--) {\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(backwardEdge.label);\n if (!backwardRoot[key]) backwardRoot[key] = {\n projected: [],\n toNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: backwardEdge.label\n };\n backwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: backwardEdge,\n preNode: p\n });\n }\n } // pure forward\n\n\n if (nodeNum >= _this.maxNodeNum) return;\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(maxToC, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: maxToC,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n\n var _loop_3 = function _loop_3(i) {\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[rmpath[i]], minNodeLabel, history);\n\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n }; // rmpath forward\n\n\n for (var i = 0; i < rmpath.length; i++) {\n _loop_3(i);\n }\n }); // backward\n\n Object.keys(backwardRoot).forEach(function (key) {\n var _a = backwardRoot[key],\n toNodeId = _a.toNodeId,\n edgeLabel = _a.edgeLabel;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(maxToC, toNodeId, \"-1\", edgeLabel, \"-1\"));\n\n _this.subGraphMining(backwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n }); // forward\n\n Object.keys(forwardRoot).forEach(function (key) {\n var _a = forwardRoot[key],\n fromNodeId = _a.fromNodeId,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(fromNodeId, maxToC + 1, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], edgeLabel, nodeLabel2));\n\n _this.subGraphMining(forwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n GSpan.prototype.generate1EdgeFrequentSubGraphs = function () {\n var graphs = this.graphs;\n var directed = this.directed;\n var minSupport = this.minSupport;\n var frequentSize1Subgraphs = this.frequentSize1Subgraphs;\n var nodeLabelCounter = {},\n nodeEdgeNodeCounter = {}; // 保存各个图和各自节点的关系 map,key 格式为 graphKey-node类型\n\n var nodeLableCounted = {}; // 保存各个图和各自边的关系 map,key 格式为 graphKey-fromNode类型-edge类型-toNode类型\n\n var nodeEdgeNodeLabelCounted = {};\n Object.keys(graphs).forEach(function (key) {\n // Line 271\n var graph = graphs[key];\n var nodeMap = graph.nodeMap; // 遍历节点,记录对应图 与 每个节点的 label 到 nodeLableCounted\n\n graph.nodes.forEach(function (node, i) {\n // Line 272\n var nodeLabel = node.label;\n var graphNodeKey = \"\".concat(key, \"-\").concat(nodeLabel);\n\n if (!nodeLableCounted[graphNodeKey]) {\n var counter = nodeLabelCounter[nodeLabel] || 0;\n counter++;\n nodeLabelCounter[nodeLabel] = counter;\n }\n\n nodeLableCounted[graphNodeKey] = {\n graphKey: key,\n label: nodeLabel\n }; // 遍历该节点的所有边,记录各个图和各自边的关系到 nodeEdgeNodeLabelCounted. Line 276\n\n node.edges.forEach(function (edge) {\n var nodeLabel1 = nodeLabel;\n var nodeLabel2 = nodeMap[edge.to].label;\n\n if (!directed && nodeLabel1 > nodeLabel2) {\n var tmp = nodeLabel2;\n nodeLabel2 = nodeLabel1;\n nodeLabel1 = tmp;\n }\n\n var edgeLabel = edge.label;\n var graphNodeEdgeNodeKey = \"\".concat(key, \"-\").concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n var nodeEdgeNodeKey = \"\".concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n\n if (!nodeEdgeNodeCounter[nodeEdgeNodeKey]) {\n var counter = nodeEdgeNodeCounter[nodeEdgeNodeKey] || 0;\n counter++;\n nodeEdgeNodeCounter[nodeEdgeNodeKey] = counter; // Line281\n }\n\n nodeEdgeNodeLabelCounted[graphNodeEdgeNodeKey] = {\n graphId: key,\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n });\n });\n }); // 计算频繁的节点\n\n Object.keys(nodeLabelCounter).forEach(function (label) {\n var count = nodeLabelCounter[label];\n if (count < minSupport) return;\n var g = {\n nodes: [],\n edges: []\n };\n g.nodes.push({\n id: \"0\",\n label: label\n });\n frequentSize1Subgraphs.push(g); // if (minNodeNum <= 1) reportSize1 TODO\n });\n return frequentSize1Subgraphs;\n };\n\n GSpan.prototype.run = function () {\n var _this = this; // -------- 第一步, _generate_1edge_frequent_subgraphs:频繁的单个节点-------\n\n\n this.frequentSize1Subgraphs = this.generate1EdgeFrequentSubGraphs();\n if (this.maxNodeNum < 2) return;\n var graphs = this.graphs;\n var directed = this.directed; // PDFS 数组的 map Line 304\n\n var root = {};\n Object.keys(graphs).forEach(function (graphId) {\n var graph = graphs[graphId];\n var nodeMap = graph.nodeMap; // Line 306\n\n graph.nodes.forEach(function (node) {\n var forwardRootEdges = _this.findForwardRootEdges(graph, node); // Line 308\n\n\n forwardRootEdges.forEach(function (edge) {\n var toNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(toNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: toNode.label\n };\n var pdfs = {\n graphId: graphId,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n });\n }); // Line 313\n\n Object.keys(root).forEach(function (nodeEdgeNodeLabel) {\n var _a = root[nodeEdgeNodeLabel],\n projected = _a.projected,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(0, 1, nodeLabel1, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n return GSpan;\n}();\n\nvar formatGraphs = function formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp) {\n var result = {};\n Object.keys(graphs).forEach(function (key, i) {\n var graph = graphs[key];\n var fGraph = new _struct__WEBPACK_IMPORTED_MODULE_1__[\"Graph\"](i, true, directed);\n var nodeIdxMap = {};\n graph.nodes.forEach(function (node, j) {\n fGraph.addNode(j, node[nodeLabelProp]);\n nodeIdxMap[node.id] = j;\n });\n graph.edges.forEach(function (edge, k) {\n var sourceIdx = nodeIdxMap[edge.source];\n var targetIdx = nodeIdxMap[edge.target];\n fGraph.addEdge(-1, sourceIdx, targetIdx, edge[edgeLabelProp]);\n });\n if (fGraph && fGraph.getNodeNum()) result[fGraph.id] = fGraph;\n });\n return result;\n};\n\nvar toGraphDatas = function toGraphDatas(graphs, nodeLabelProp, edgeLabelProp) {\n var result = [];\n graphs.forEach(function (graph) {\n var graphData = {\n nodes: [],\n edges: []\n };\n graph.nodes.forEach(function (node) {\n var _a;\n\n graphData.nodes.push((_a = {\n id: \"\".concat(node.id)\n }, _a[nodeLabelProp] = node.label, _a));\n });\n graph.edges.forEach(function (edge) {\n var _a;\n\n graphData.edges.push((_a = {\n source: \"\".concat(edge.from),\n target: \"\".concat(edge.to)\n }, _a[edgeLabelProp] = edge.label, _a));\n });\n result.push(graphData);\n });\n return result;\n};\n\nvar DEFAULT_LABEL_NAME = \"cluster\";\n/**\n * gSpan 频繁子图计算算法(frequent graph mining)\n * @param params 参数\n */\n\nvar gSpan = function gSpan(params) {\n // ------- 将图数据 GraphData 的 map 转换为格式 -------\n var graphs = params.graphs,\n _a = params.directed,\n directed = _a === void 0 ? false : _a,\n _b = params.nodeLabelProp,\n nodeLabelProp = _b === void 0 ? DEFAULT_LABEL_NAME : _b,\n _c = params.edgeLabelProp,\n edgeLabelProp = _c === void 0 ? DEFAULT_LABEL_NAME : _c;\n var formattedGraphs = formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp);\n var minSupport = params.minSupport,\n maxNodeNum = params.maxNodeNum,\n minNodeNum = params.minNodeNum,\n verbose = params.verbose,\n top = params.top; // ------- 初始化与执行算法 -------\n\n var algoParams = {\n graphs: formattedGraphs,\n minSupport: minSupport,\n maxNodeNum: maxNodeNum,\n minNodeNum: minNodeNum,\n top: top,\n verbose: verbose,\n directed: directed\n };\n var calculator = new GSpan(algoParams);\n calculator.run();\n var result = toGraphDatas(calculator.frequentSubgraphs, nodeLabelProp, edgeLabelProp);\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (gSpan);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2dTcGFuL2dTcGFuLmpzPzlmZjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ3FEOztBQUV4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx5REFBaUI7QUFDcEQsOEJBQThCLHlEQUFpQjtBQUMvQyxpQ0FBaUMseURBQWlCO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsR0FBRzs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGFBQWE7QUFDaEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsZ0JBQWdCLHVEQUFlO0FBQy9COztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsNkNBQUs7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIseURBQWlCO0FBQzFDLHlCQUF5Qix5REFBaUI7QUFDMUMseUJBQXlCLHlEQUFpQjtBQUMxQyxLQUFLO0FBQ0w7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0MsUUFBUTtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsdURBQWU7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSyxFQUFFOztBQUVQLDJDQUEyQzs7QUFFM0M7QUFDQSxpSEFBaUg7O0FBRWpIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREOztBQUU1RDtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFDQUFxQyxTQUFTO0FBQzlDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSwrREFBK0QseURBQWlCLGtDQUFrQyx5REFBaUI7QUFDbkk7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFCQUFxQixnQkFBZ0I7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxtRUFBbUUseURBQWlCO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx3REFBSztBQUNyQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DOztBQUVuQyxxQ0FBcUMsUUFBUTtBQUM3Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVE7OztBQUdSLHFCQUFxQixtQkFBbUI7QUFDeEM7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlFQUF5RSx5REFBaUI7O0FBRTFGOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsaUNBQWlDOztBQUVqQyw4QkFBOEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxxQ0FBcUM7QUFDckMsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUI7OztBQUdyQjtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQSx1RUFBdUU7OztBQUd2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZDQUFLO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxvRUFBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvZ1NwYW4vZ1NwYW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZSB9IGZyb20gXCJAYW50di91dGlsXCI7XG5pbXBvcnQgeyBHcmFwaCwgVkFDQU5UX05PREVfTEFCRUwsIFZBQ0FOVF9HUkFQSF9JRCwgVkFDQU5UX0VER0VfTEFCRUwgfSBmcm9tIFwiLi9zdHJ1Y3RcIjtcblxudmFyIERGU2VkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBERlNlZGdlKGZyb21Ob2RlLCB0b05vZGUsIGZyb21Ob2RlTGFiZWwsIGVkZ2VMYWJlbCwgdG9Ob2RlTGFiZWwpIHtcbiAgICB0aGlzLmZyb21Ob2RlID0gZnJvbU5vZGU7XG4gICAgdGhpcy50b05vZGUgPSB0b05vZGU7XG4gICAgdGhpcy5ub2RlRWRnZU5vZGVMYWJlbCA9IHtcbiAgICAgIG5vZGVMYWJlbDE6IGZyb21Ob2RlTGFiZWwgfHwgVkFDQU5UX05PREVfTEFCRUwsXG4gICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCB8fCBWQUNBTlRfRURHRV9MQUJFTCxcbiAgICAgIG5vZGVMYWJlbDI6IHRvTm9kZUxhYmVsIHx8IFZBQ0FOVF9OT0RFX0xBQkVMXG4gICAgfTtcbiAgfVxuXG4gIERGU2VkZ2UucHJvdG90eXBlLmVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tTm9kZSA9PT0gb3RoZXIuZm9ybU5vZGUgJiYgdGhpcy50b05vZGUgPT09IG90aGVyLnRvTm9kZSAmJiB0aGlzLm5vZGVFZGdlTm9kZUxhYmVsID09PSBvdGhlci5ub2RlRWRnZU5vZGVMYWJlbDtcbiAgfTtcblxuICBERlNlZGdlLnByb3RvdHlwZS5ub3RFcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgcmV0dXJuICF0aGlzLmVxdWFsVG8ob3RoZXIpO1xuICB9O1xuXG4gIHJldHVybiBERlNlZGdlO1xufSgpOyAvLyBERlNjb2RlIOaYryBERVNlZGdlIOeahOaVsOe7hFxuXG5cbnZhciBERlNjb2RlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gREZTY29kZSgpIHtcbiAgICB0aGlzLnJtcGF0aCA9IFtdO1xuICAgIHRoaXMuZGZzRWRnZUxpc3QgPSBbXTtcbiAgfVxuXG4gIERGU2NvZGUucHJvdG90eXBlLmVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICB2YXIgYUxlbmd0aCA9IHRoaXMuZGZzRWRnZUxpc3QubGVuZ3RoO1xuICAgIHZhciBiTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuICAgIGlmIChhTGVuZ3RoICE9PSBiTGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGZzRWRnZUxpc3RbaV0gIT09IG90aGVyW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgREZTY29kZS5wcm90b3R5cGUubm90RXF1YWxUbyA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgIHJldHVybiAhdGhpcy5lcXVhbFRvKG90aGVyKTtcbiAgfTtcbiAgLyoqIOWinuWKoOS4gOadoSBlZGdlIOWIsCBERlNjb2RlICovXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS5wdXNoQmFjayA9IGZ1bmN0aW9uIChmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSB7XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKGZyb21Ob2RlLCB0b05vZGUsIGZyb21Ob2RlTGFiZWwsIGVkZ2VMYWJlbCwgdG9Ob2RlTGFiZWwpKTtcbiAgICByZXR1cm4gdGhpcy5kZnNFZGdlTGlzdDtcbiAgfTtcbiAgLyoqIOagueaNriBkZnMg5p6E5bu65Zu+ICovXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS50b0dyYXBoID0gZnVuY3Rpb24gKGdyYXBoSWQsIGRpcmVjdGVkKSB7XG4gICAgaWYgKGdyYXBoSWQgPT09IHZvaWQgMCkge1xuICAgICAgZ3JhcGhJZCA9IFZBQ0FOVF9HUkFQSF9JRDtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSBuZXcgR3JhcGgoZ3JhcGhJZCwgdHJ1ZSwgZGlyZWN0ZWQpO1xuICAgIHRoaXMuZGZzRWRnZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZGZzRWRnZSkge1xuICAgICAgdmFyIGZyb21Ob2RlSWQgPSBkZnNFZGdlLmZyb21Ob2RlO1xuICAgICAgdmFyIHRvTm9kZUlkID0gZGZzRWRnZS50b05vZGU7XG4gICAgICB2YXIgX2EgPSBkZnNFZGdlLm5vZGVFZGdlTm9kZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcbiAgICAgIGlmIChub2RlTGFiZWwxICE9PSBWQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZShmcm9tTm9kZUlkLCBub2RlTGFiZWwxKTtcbiAgICAgIGlmIChub2RlTGFiZWwyICE9PSBWQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZSh0b05vZGVJZCwgbm9kZUxhYmVsMik7XG4gICAgICBpZiAobm9kZUxhYmVsMSAhPT0gVkFDQU5UX05PREVfTEFCRUwgJiYgbm9kZUxhYmVsMiAhPT0gbm9kZUxhYmVsMSkgZ3JhcGguYWRkRWRnZSh1bmRlZmluZWQsIGZyb21Ob2RlSWQsIHRvTm9kZUlkLCBlZGdlTGFiZWwpO1xuICAgIH0pO1xuICAgIHJldHVybiBncmFwaDtcbiAgfTsgLy8g5bu656uLIHJpZ2h0bW9zdCBwYXRoXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS5idWlsZFJtcGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJtcGF0aCA9IFtdO1xuICAgIHZhciBvbGRGcm9tID0gdW5kZWZpbmVkO1xuICAgIHZhciBzZWxmTGVuZ3RoID0gdGhpcy5kZnNFZGdlTGlzdC5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gc2VsZkxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZGZzRWRnZSA9IHRoaXMuZGZzRWRnZUxpc3RbaV07XG4gICAgICB2YXIgZnJvbU5vZGVJZHggPSBkZnNFZGdlLmZyb21Ob2RlO1xuICAgICAgdmFyIHRvTm9kZUlkeCA9IGRmc0VkZ2UudG9Ob2RlO1xuXG4gICAgICBpZiAoZnJvbU5vZGVJZHggPCB0b05vZGVJZHggJiYgKG9sZEZyb20gPT09IHVuZGVmaW5lZCB8fCB0b05vZGVJZHggPT09IG9sZEZyb20pKSB7XG4gICAgICAgIHRoaXMucm1wYXRoLnB1c2goaSk7XG4gICAgICAgIG9sZEZyb20gPSBmcm9tTm9kZUlkeDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ybXBhdGg7XG4gIH07XG5cbiAgREZTY29kZS5wcm90b3R5cGUuZ2V0Tm9kZU51bSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZU1hcCA9IHt9O1xuICAgIHRoaXMuZGZzRWRnZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZGZzRWRnZSkge1xuICAgICAgaWYgKCFub2RlTWFwW2Rmc0VkZ2UuZnJvbU5vZGVdKSBub2RlTWFwW2Rmc0VkZ2UuZnJvbU5vZGVdID0gdHJ1ZTtcbiAgICAgIGlmICghbm9kZU1hcFtkZnNFZGdlLnRvTm9kZV0pIG5vZGVNYXBbZGZzRWRnZS50b05vZGVdID0gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobm9kZU1hcCkubGVuZ3RoO1xuICB9O1xuXG4gIHJldHVybiBERlNjb2RlO1xufSgpO1xuXG52YXIgSGlzdG9yeSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEhpc3RvcnkocGRmcykge1xuICAgIHRoaXMuaGlzID0ge307XG4gICAgdGhpcy5ub2Rlc1VzZWQgPSB7fTtcbiAgICB0aGlzLmVkZ2VzVXNlZCA9IHt9O1xuICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICBpZiAoIXBkZnMpIHJldHVybjtcblxuICAgIHdoaWxlIChwZGZzKSB7XG4gICAgICB2YXIgZSA9IHBkZnMuZWRnZTtcbiAgICAgIHRoaXMuZWRnZXMucHVzaChlKTtcbiAgICAgIHRoaXMubm9kZXNVc2VkW2UuZnJvbV0gPSAxO1xuICAgICAgdGhpcy5ub2Rlc1VzZWRbZS50b10gPSAxO1xuICAgICAgdGhpcy5lZGdlc1VzZWRbZS5pZF0gPSAxO1xuICAgICAgcGRmcyA9IHBkZnMucHJlTm9kZTtcbiAgICB9IC8vIOWAkuW6j1xuXG5cbiAgICB0aGlzLmVkZ2VzID0gdGhpcy5lZGdlcy5yZXZlcnNlKCk7XG4gIH1cblxuICBIaXN0b3J5LnByb3RvdHlwZS5oYXNOb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlc1VzZWRbbm9kZS5pZF0gPT09IDE7XG4gIH07XG5cbiAgSGlzdG9yeS5wcm90b3R5cGUuaGFzRWRnZSA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRnZXNVc2VkW2VkZ2UuaWRdID09PSAxO1xuICB9O1xuXG4gIHJldHVybiBIaXN0b3J5O1xufSgpO1xuXG52YXIgR1NwYW4gPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHU3BhbihfYSkge1xuICAgIHZhciBncmFwaHMgPSBfYS5ncmFwaHMsXG4gICAgICAgIF9iID0gX2EubWluU3VwcG9ydCxcbiAgICAgICAgbWluU3VwcG9ydCA9IF9iID09PSB2b2lkIDAgPyAyIDogX2IsXG4gICAgICAgIF9jID0gX2EubWluTm9kZU51bSxcbiAgICAgICAgbWluTm9kZU51bSA9IF9jID09PSB2b2lkIDAgPyAxIDogX2MsXG4gICAgICAgIF9kID0gX2EubWF4Tm9kZU51bSxcbiAgICAgICAgbWF4Tm9kZU51bSA9IF9kID09PSB2b2lkIDAgPyA0IDogX2QsXG4gICAgICAgIF9lID0gX2EudG9wLFxuICAgICAgICB0b3AgPSBfZSA9PT0gdm9pZCAwID8gMTAgOiBfZSxcbiAgICAgICAgX2YgPSBfYS5kaXJlY3RlZCxcbiAgICAgICAgZGlyZWN0ZWQgPSBfZiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZixcbiAgICAgICAgX2cgPSBfYS52ZXJib3NlLFxuICAgICAgICB2ZXJib3NlID0gX2cgPT09IHZvaWQgMCA/IGZhbHNlIDogX2c7IC8vIC0tLS0tLS0tIOesrOmbtuatpe+8jOWIneWni+WMli0tLS0tLS1cblxuICAgIHRoaXMuZ3JhcGhzID0gZ3JhcGhzO1xuICAgIHRoaXMuZGZzQ29kZSA9IG5ldyBERlNjb2RlKCk7XG4gICAgdGhpcy5zdXBwb3J0ID0gMDtcbiAgICB0aGlzLmZyZXF1ZW50U2l6ZTFTdWJncmFwaHMgPSBbXTtcbiAgICB0aGlzLmZyZXF1ZW50U3ViZ3JhcGhzID0gW107XG4gICAgdGhpcy5taW5TdXBwb3J0ID0gbWluU3VwcG9ydDtcbiAgICB0aGlzLnRvcCA9IHRvcDtcbiAgICB0aGlzLmRpcmVjdGVkID0gZGlyZWN0ZWQ7XG4gICAgdGhpcy5jb3VudGVyID0gMDsgLy8gVE9ETz8gdGltZXN0YW1wID0ge31cblxuICAgIHRoaXMubWF4Tm9kZU51bSA9IG1heE5vZGVOdW07XG4gICAgdGhpcy5taW5Ob2RlTnVtID0gbWluTm9kZU51bTtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlO1xuICAgIGlmICh0aGlzLm1heE5vZGVOdW0gPCB0aGlzLm1pbk5vZGVOdW0pIHRoaXMubWF4Tm9kZU51bSA9IHRoaXMubWluTm9kZU51bTtcbiAgICB0aGlzLnJlcG9ydERGID0gW107IC8vIG1hdHJpeFxuICB9IC8vIExpbmUgMzUyXG5cblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEZvcndhcmRSb290RWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIGZyb21Ob2RlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgZnJvbU5vZGUuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKF90aGlzLmRpcmVjdGVkIHx8IGZyb21Ob2RlLmxhYmVsIDw9IG5vZGVNYXBbZWRnZS50b10ubGFiZWwpIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRCYWNrd2FyZEVkZ2UgPSBmdW5jdGlvbiAoZ3JhcGgsIGVkZ2UxLCBlZGdlMiwgaGlzdG9yeSkge1xuICAgIGlmICghdGhpcy5kaXJlY3RlZCAmJiBlZGdlMSA9PT0gZWRnZTIpIHJldHVybiBudWxsO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICB2YXIgZWRnZTJUbyA9IG5vZGVNYXBbZWRnZTIudG9dO1xuICAgIHZhciBlZGdlMlRvRWRnZXMgPSBlZGdlMlRvLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZTJUb0VkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IGVkZ2UyVG9FZGdlc1tpXTtcbiAgICAgIGlmIChoaXN0b3J5Lmhhc0VkZ2UoZWRnZSkgfHwgZWRnZS50byAhPT0gZWRnZTEuZnJvbSkgY29udGludWU7XG5cbiAgICAgIGlmICghdGhpcy5kaXJlY3RlZCkge1xuICAgICAgICBpZiAoZWRnZTEubGFiZWwgPCBlZGdlLmxhYmVsIHx8IGVkZ2UxLmxhYmVsID09PSBlZGdlLmxhYmVsICYmIG5vZGVNYXBbZWRnZTEudG9dLmxhYmVsIDw9IG5vZGVNYXBbZWRnZTIudG9dLmxhYmVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVkZ2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChub2RlTWFwW2VkZ2UxLmZyb21dLmxhYmVsIDwgbm9kZU1hcFtlZGdlMi50b10ubGFiZWwgfHwgbm9kZU1hcFtlZGdlMS5mcm9tXS5sYWJlbCA9PT0gbm9kZU1hcFtlZGdlMi50b10ubGFiZWwgJiYgZWRnZTEubGFiZWwgPD0gZWRnZS5sYWJlbCkge1xuICAgICAgICAgIHJldHVybiBlZGdlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRGb3J3YXJkUHVyZUVkZ2VzID0gZnVuY3Rpb24gKGdyYXBoLCByaWdodG1vc3RFZGdlLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIHJpZ2h0bW9zdEVkZ2VUb0lkID0gcmlnaHRtb3N0RWRnZS50bztcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5ub2RlTWFwW3JpZ2h0bW9zdEVkZ2VUb0lkXS5lZGdlcztcbiAgICB2YXIgZWRnZUxlbmd0aCA9IGVkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgICAgdmFyIHRvTm9kZSA9IGdyYXBoLm5vZGVNYXBbZWRnZS50b107XG5cbiAgICAgIGlmIChtaW5Ob2RlTGFiZWwgPD0gdG9Ob2RlLmxhYmVsICYmICFoaXN0b3J5Lmhhc05vZGUodG9Ob2RlKSkge1xuICAgICAgICByZXN1bHQucHVzaChlZGdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5maW5kRm9yd2FyZFJtcGF0aEVkZ2VzID0gZnVuY3Rpb24gKGdyYXBoLCByaWdodG1vc3RFZGdlLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwO1xuICAgIHZhciB0b05vZGVMYWJlbCA9IG5vZGVNYXBbcmlnaHRtb3N0RWRnZS50b10ubGFiZWw7XG4gICAgdmFyIGZyb21Ob2RlID0gbm9kZU1hcFtyaWdodG1vc3RFZGdlLmZyb21dO1xuICAgIHZhciBlZGdlcyA9IGZyb21Ob2RlLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICB2YXIgbmV3VG9Ob2RlTGFiZWwgPSBub2RlTWFwW2VkZ2UudG9dLmxhYmVsO1xuXG4gICAgICBpZiAocmlnaHRtb3N0RWRnZS50byA9PT0gZWRnZS50byB8fCBtaW5Ob2RlTGFiZWwgPiBuZXdUb05vZGVMYWJlbCB8fCBoaXN0b3J5Lmhhc05vZGUobm9kZU1hcFtlZGdlLnRvXSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodG1vc3RFZGdlLmxhYmVsIDwgZWRnZS5sYWJlbCB8fCByaWdodG1vc3RFZGdlLmxhYmVsID09PSBlZGdlLmxhYmVsICYmIHRvTm9kZUxhYmVsIDw9IG5ld1RvTm9kZUxhYmVsKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmdldFN1cHBvcnQgPSBmdW5jdGlvbiAocHJvamVjdGVkKSB7XG4gICAgdmFyIGdyYXBoTWFwID0ge307XG4gICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHBybykge1xuICAgICAgaWYgKCFncmFwaE1hcFtwcm8uZ3JhcGhJZF0pIGdyYXBoTWFwW3Byby5ncmFwaElkXSA9IHRydWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyYXBoTWFwKS5sZW5ndGg7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRNaW5MYWJlbCA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICB2YXIgbWluTGFiZWwgPSB1bmRlZmluZWQ7XG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlRWRnZU5vZGVMYWJlbCkge1xuICAgICAgdmFyIF9hID0gb2JqW25vZGVFZGdlTm9kZUxhYmVsXSxcbiAgICAgICAgICBub2RlTGFiZWwxID0gX2Eubm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIGlmICghbWluTGFiZWwpIHtcbiAgICAgICAgbWluTGFiZWwgPSB7XG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGVMYWJlbDEgPCBtaW5MYWJlbC5ub2RlTGFiZWwxIHx8IG5vZGVMYWJlbDEgPT09IG1pbkxhYmVsLm5vZGVMYWJlbDEgJiYgZWRnZUxhYmVsIDwgbWluTGFiZWwuZWRnZUxhYmVsIHx8IG5vZGVMYWJlbDEgPT09IG1pbkxhYmVsLm5vZGVMYWJlbDEgJiYgZWRnZUxhYmVsID09PSBtaW5MYWJlbC5lZGdlTGFiZWwgJiYgbm9kZUxhYmVsMiA8IG1pbkxhYmVsLm5vZGVMYWJlbDIpIHtcbiAgICAgICAgbWluTGFiZWwgPSB7XG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG1pbkxhYmVsO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5pc01pbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGRmc0NvZGUgPSB0aGlzLmRmc0NvZGU7XG4gICAgaWYgKHRoaXMudmVyYm9zZSkgY29uc29sZS5sb2coXCJpc01pbiBjaGVja2luZ1wiLCBkZnNDb2RlKTtcbiAgICBpZiAoZGZzQ29kZS5kZnNFZGdlTGlzdC5sZW5ndGggPT09IDEpIHJldHVybiB0cnVlO1xuICAgIHZhciBkaXJlY3RlZCA9IHRoaXMuZGlyZWN0ZWQ7XG4gICAgdmFyIGdyYXBoID0gZGZzQ29kZS50b0dyYXBoKFZBQ0FOVF9HUkFQSF9JRCwgZGlyZWN0ZWQpO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICB2YXIgZGZzQ29kZU1pbiA9IG5ldyBERlNjb2RlKCk7XG4gICAgdmFyIHJvb3QgPSB7fTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgZm9yd2FyZEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSb290RWRnZXMoZ3JhcGgsIG5vZGUpO1xuXG4gICAgICBmb3J3YXJkRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIgb3RoZXJOb2RlID0gbm9kZU1hcFtlZGdlLnRvXTtcbiAgICAgICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsID0gXCJcIi5jb25jYXQobm9kZS5sYWJlbCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG90aGVyTm9kZS5sYWJlbCk7XG4gICAgICAgIGlmICghcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0pIHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZS5sYWJlbCxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMjogb3RoZXJOb2RlLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBwZGZzID0ge1xuICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgcHJlTm9kZTogbnVsbFxuICAgICAgICB9O1xuICAgICAgICByb290W25vZGVFZGdlTm9kZUxhYmVsXS5wcm9qZWN0ZWQucHVzaChwZGZzKTtcbiAgICAgIH0pO1xuICAgIH0pOyAvLyDmr5TovoMgcm9vdCDkuK3mr4/kuIDpobnnmoQgbm9kZUVkZ2VOb2RlTGFiZWwg5aSn5bCP77yM5oyJ54WnIG5vZGVMYWJlbDHjgIFlZGdlTGFiZeOAgW5vZGVMYWJlbDIg55qE6aG65bqP5q+U6L6DXG5cbiAgICB2YXIgbWluTGFiZWwgPSB0aGlzLmZpbmRNaW5MYWJlbChyb290KTsgLy8gbGluZSA0MTlcblxuICAgIGlmICghbWluTGFiZWwpIHJldHVybjtcbiAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UoMCwgMSwgbWluTGFiZWwubm9kZUxhYmVsMSwgbWluTGFiZWwuZWRnZUxhYmVsLCBtaW5MYWJlbC5ub2RlTGFiZWwyKSk7IC8vIGxpbmUgNDIzXG5cbiAgICB2YXIgcHJvamVjdElzTWluID0gZnVuY3Rpb24gcHJvamVjdElzTWluKHByb2plY3RlZCkge1xuICAgICAgLy8gcmlnaHQgbW9zdCBwYXRoXG4gICAgICB2YXIgcm1wYXRoID0gZGZzQ29kZU1pbi5idWlsZFJtcGF0aCgpO1xuICAgICAgdmFyIG1pbk5vZGVMYWJlbCA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbMF0ubm9kZUVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMTtcbiAgICAgIHZhciBtYXhUb0MgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3JtcGF0aFswXV0udG9Ob2RlOyAvLyBub2RlIGlkXG5cbiAgICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICAgIHZhciBmbGFnID0gZmFsc2UsXG4gICAgICAgICAgbmV3VG8gPSAwO1xuICAgICAgdmFyIGVuZCA9IGRpcmVjdGVkID8gLTEgOiAwOyAvLyDpgY3ljobliLAgMSDov5jmmK/liLAgMFxuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICBpZiAoZmxhZykgcmV0dXJuIFwiYnJlYWtcIjsgLy8gbGluZSA0MzVcblxuICAgICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgICB2YXIgYmFja3dhcmRFZGdlID0gX3RoaXMuZmluZEJhY2t3YXJkRWRnZShncmFwaCwgaGlzdG9yeS5lZGdlc1tybXBhdGhbaV1dLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFswXV0sIGhpc3RvcnkpO1xuXG4gICAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgICAgLy8gTGluZSA0NDFcbiAgICAgICAgICAgIGlmICghYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0pIHtcbiAgICAgICAgICAgICAgYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0gPSB7XG4gICAgICAgICAgICAgICAgcHJvamVjdGVkOiBbXSxcbiAgICAgICAgICAgICAgICBlZGdlTGFiZWw6IGJhY2t3YXJkRWRnZS5sYWJlbFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBiYWNrd2FyZFJvb3RbYmFja3dhcmRFZGdlLmxhYmVsXS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgICAgICBlZGdlOiBiYWNrd2FyZFJvb3QsXG4gICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbmV3VG8gPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGU7XG4gICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IHJtcGF0aC5sZW5ndGggLSAxOyBpID4gZW5kOyBpLS0pIHtcbiAgICAgICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKGkpO1xuXG4gICAgICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmxhZykge1xuICAgICAgICB2YXIgbWluQmFja3dhcmRFZGdlTGFiZWwgPSBfdGhpcy5maW5kTWluTGFiZWwoYmFja3dhcmRSb290KTtcblxuICAgICAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UobWF4VG9DLCBuZXdUbywgVkFDQU5UX05PREVfTEFCRUwsIG1pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbCwgVkFDQU5UX05PREVfTEFCRUwpKTtcbiAgICAgICAgdmFyIGlkeF8xID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtpZHhfMV0gIT09IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbaWR4XzFdKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBwcm9qZWN0SXNNaW4oYmFja3dhcmRSb290W21pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbF0ucHJvamVjdGVkKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZvcndhcmRSb290ID0ge307XG4gICAgICBmbGFnID0gZmFsc2U7XG4gICAgICB2YXIgbmV3RnJvbSA9IDA7XG4gICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBpZiAoZm9yd2FyZFB1cmVFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgbmV3RnJvbSA9IG1heFRvQztcbiAgICAgICAgICBmb3J3YXJkUHVyZUVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVNYXBbZWRnZS50b10ubGFiZWwpO1xuICAgICAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVNYXBbZWRnZS50b10ubGFiZWxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3J3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgICAgZ3JhcGhJZDogZ3JhcGguaWQsXG4gICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBwYXRoTGVuZ3RoID0gcm1wYXRoLmxlbmd0aDtcblxuICAgICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgICAgaWYgKGZsYWcpIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJtcGF0aFtpXTtcbiAgICAgICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbdmFsdWVdLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpO1xuXG4gICAgICAgICAgaWYgKGZvcndhcmRSbXBhdGhFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgIG5ld0Zyb20gPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3ZhbHVlXS5mcm9tTm9kZTtcbiAgICAgICAgICAgIGZvcndhcmRSbXBhdGhFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVNYXBbZWRnZS50b10ubGFiZWwpO1xuICAgICAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICAgICAgcHJvamVjdGVkOiBbXSxcbiAgICAgICAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBmb3J3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHN0YXRlXzIgPSBfbG9vcF8yKGkpO1xuXG4gICAgICAgIGlmIChzdGF0ZV8yID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZsYWcpIHJldHVybiB0cnVlO1xuXG4gICAgICB2YXIgZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwgPSBfdGhpcy5maW5kTWluTGFiZWwoZm9yd2FyZFJvb3QpO1xuXG4gICAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UobmV3RnJvbSwgbWF4VG9DICsgMSwgVkFDQU5UX05PREVfTEFCRUwsIGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLmVkZ2VMYWJlbCwgZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMikpO1xuICAgICAgdmFyIGlkeCA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3QubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChkZnNDb2RlLmRmc0VkZ2VMaXN0W2lkeF0gIT09IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbaWR4XSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHByb2plY3RJc01pbihmb3J3YXJkUm9vdFtcIlwiLmNvbmNhdChmb3J3YXJkTWluRWRnZU5vZGVMYWJlbC5lZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQoZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMildLnByb2plY3RlZCk7XG4gICAgfTtcblxuICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtaW5MYWJlbC5ub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KG1pbkxhYmVsLmVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChtaW5MYWJlbC5ub2RlTGFiZWwyKTtcbiAgICByZXR1cm4gcHJvamVjdElzTWluKHJvb3Rba2V5XS5wcm9qZWN0ZWQpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5yZXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCkgPCB0aGlzLm1pbk5vZGVOdW0pIHJldHVybjtcbiAgICB0aGlzLmNvdW50ZXIrKztcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmRmc0NvZGUudG9HcmFwaCh0aGlzLmNvdW50ZXIsIHRoaXMuZGlyZWN0ZWQpO1xuICAgIHRoaXMuZnJlcXVlbnRTdWJncmFwaHMucHVzaChjbG9uZShncmFwaCkpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5zdWJHcmFwaE1pbmluZyA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHN1cHBvcnQgPSB0aGlzLmdldFN1cHBvcnQocHJvamVjdGVkKTtcbiAgICBpZiAoc3VwcG9ydCA8IHRoaXMubWluU3VwcG9ydCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5pc01pbigpKSByZXR1cm47XG4gICAgdGhpcy5yZXBvcnQoKTtcbiAgICB2YXIgbm9kZU51bSA9IHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCk7XG4gICAgdmFyIHJtcGF0aCA9IHRoaXMuZGZzQ29kZS5idWlsZFJtcGF0aCgpO1xuICAgIHZhciBtYXhUb0MgPSB0aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3Rbcm1wYXRoWzBdXS50b05vZGU7XG4gICAgdmFyIG1pbk5vZGVMYWJlbCA9IHRoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFswXS5ub2RlRWRnZU5vZGVMYWJlbC5ub2RlTGFiZWwxO1xuICAgIHZhciBmb3J3YXJkUm9vdCA9IHt9O1xuICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGhzW3AuZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApOyAvLyBiYWNrd2FyZCBMaW5lIDUyNlxuXG4gICAgICBmb3IgKHZhciBpID0gcm1wYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBiYWNrd2FyZEVkZ2UgPSBfdGhpcy5maW5kQmFja3dhcmRFZGdlKGdyYXBoLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFtpXV0sIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgaGlzdG9yeSk7XG5cbiAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoYmFja3dhcmRFZGdlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtrZXldKSBiYWNrd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICB0b05vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJhY2t3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICAgIGVkZ2U6IGJhY2t3YXJkRWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwdXJlIGZvcndhcmRcblxuXG4gICAgICBpZiAobm9kZU51bSA+PSBfdGhpcy5tYXhOb2RlTnVtKSByZXR1cm47XG5cbiAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgZm9yd2FyZFB1cmVFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtYXhUb0MsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgZnJvbU5vZGVJZDogbWF4VG9DLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIF9sb29wXzMgPSBmdW5jdGlvbiBfbG9vcF8zKGkpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBmb3J3YXJkUm1wYXRoRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgZnJvbU5vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICBncmFwaElkOiBwLmdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07IC8vIHJtcGF0aCBmb3J3YXJkXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBybXBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgX2xvb3BfMyhpKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gYmFja3dhcmRcblxuICAgIE9iamVjdC5rZXlzKGJhY2t3YXJkUm9vdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgX2EgPSBiYWNrd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICB0b05vZGVJZCA9IF9hLnRvTm9kZUlkLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbDtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgdG9Ob2RlSWQsIFwiLTFcIiwgZWRnZUxhYmVsLCBcIi0xXCIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoYmFja3dhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTsgLy8gZm9yd2FyZFxuXG4gICAgT2JqZWN0LmtleXMoZm9yd2FyZFJvb3QpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIF9hID0gZm9yd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICBmcm9tTm9kZUlkID0gX2EuZnJvbU5vZGVJZCxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZUlkLCBtYXhUb0MgKyAxLCBWQUNBTlRfTk9ERV9MQUJFTCwgZWRnZUxhYmVsLCBub2RlTGFiZWwyKSk7XG5cbiAgICAgIF90aGlzLnN1YkdyYXBoTWluaW5nKGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZ2VuZXJhdGUxRWRnZUZyZXF1ZW50U3ViR3JhcGhzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdyYXBocztcbiAgICB2YXIgZGlyZWN0ZWQgPSB0aGlzLmRpcmVjdGVkO1xuICAgIHZhciBtaW5TdXBwb3J0ID0gdGhpcy5taW5TdXBwb3J0O1xuICAgIHZhciBmcmVxdWVudFNpemUxU3ViZ3JhcGhzID0gdGhpcy5mcmVxdWVudFNpemUxU3ViZ3JhcGhzO1xuICAgIHZhciBub2RlTGFiZWxDb3VudGVyID0ge30sXG4gICAgICAgIG5vZGVFZGdlTm9kZUNvdW50ZXIgPSB7fTsgLy8g5L+d5a2Y5ZCE5Liq5Zu+5ZKM5ZCE6Ieq6IqC54K555qE5YWz57O7IG1hcO+8jGtleSDmoLzlvI/kuLogZ3JhcGhLZXktbm9kZeexu+Wei1xuXG4gICAgdmFyIG5vZGVMYWJsZUNvdW50ZWQgPSB7fTsgLy8g5L+d5a2Y5ZCE5Liq5Zu+5ZKM5ZCE6Ieq6L6555qE5YWz57O7IG1hcO+8jGtleSDmoLzlvI/kuLogZ3JhcGhLZXktZnJvbU5vZGXnsbvlnostZWRnZeexu+Weiy10b05vZGXnsbvlnotcblxuICAgIHZhciBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWQgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhncmFwaHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgLy8gTGluZSAyNzFcbiAgICAgIHZhciBncmFwaCA9IGdyYXBoc1trZXldO1xuICAgICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwOyAvLyDpgY3ljoboioLngrnvvIzorrDlvZXlr7nlupTlm74g5LiOIOavj+S4quiKgueCueeahCBsYWJlbCDliLAgbm9kZUxhYmxlQ291bnRlZFxuXG4gICAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgICAgIC8vIExpbmUgMjcyXG4gICAgICAgIHZhciBub2RlTGFiZWwgPSBub2RlLmxhYmVsO1xuICAgICAgICB2YXIgZ3JhcGhOb2RlS2V5ID0gXCJcIi5jb25jYXQoa2V5LCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbCk7XG5cbiAgICAgICAgaWYgKCFub2RlTGFibGVDb3VudGVkW2dyYXBoTm9kZUtleV0pIHtcbiAgICAgICAgICB2YXIgY291bnRlciA9IG5vZGVMYWJlbENvdW50ZXJbbm9kZUxhYmVsXSB8fCAwO1xuICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICBub2RlTGFiZWxDb3VudGVyW25vZGVMYWJlbF0gPSBjb3VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZUxhYmxlQ291bnRlZFtncmFwaE5vZGVLZXldID0ge1xuICAgICAgICAgIGdyYXBoS2V5OiBrZXksXG4gICAgICAgICAgbGFiZWw6IG5vZGVMYWJlbFxuICAgICAgICB9OyAvLyDpgY3ljobor6XoioLngrnnmoTmiYDmnInovrnvvIzorrDlvZXlkITkuKrlm77lkozlkIToh6rovrnnmoTlhbPns7vliLAgbm9kZUVkZ2VOb2RlTGFiZWxDb3VudGVkLiBMaW5lIDI3NlxuXG4gICAgICAgIG5vZGUuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBub2RlTGFiZWwxID0gbm9kZUxhYmVsO1xuICAgICAgICAgIHZhciBub2RlTGFiZWwyID0gbm9kZU1hcFtlZGdlLnRvXS5sYWJlbDtcblxuICAgICAgICAgIGlmICghZGlyZWN0ZWQgJiYgbm9kZUxhYmVsMSA+IG5vZGVMYWJlbDIpIHtcbiAgICAgICAgICAgIHZhciB0bXAgPSBub2RlTGFiZWwyO1xuICAgICAgICAgICAgbm9kZUxhYmVsMiA9IG5vZGVMYWJlbDE7XG4gICAgICAgICAgICBub2RlTGFiZWwxID0gdG1wO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBlZGdlTGFiZWwgPSBlZGdlLmxhYmVsO1xuICAgICAgICAgIHZhciBncmFwaE5vZGVFZGdlTm9kZUtleSA9IFwiXCIuY29uY2F0KGtleSwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KGVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwyKTtcbiAgICAgICAgICB2YXIgbm9kZUVkZ2VOb2RlS2V5ID0gXCJcIi5jb25jYXQobm9kZUxhYmVsMSwgXCItXCIpLmNvbmNhdChlZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZUxhYmVsMik7XG5cbiAgICAgICAgICBpZiAoIW5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSkge1xuICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBub2RlRWRnZU5vZGVDb3VudGVyW25vZGVFZGdlTm9kZUtleV0gfHwgMDtcbiAgICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICAgIG5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSA9IGNvdW50ZXI7IC8vIExpbmUyODFcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWRbZ3JhcGhOb2RlRWRnZU5vZGVLZXldID0ge1xuICAgICAgICAgICAgZ3JhcGhJZDoga2V5LFxuICAgICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZUxhYmVsMlxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7IC8vIOiuoeeul+mikee5geeahOiKgueCuVxuXG4gICAgT2JqZWN0LmtleXMobm9kZUxhYmVsQ291bnRlcikuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgIHZhciBjb3VudCA9IG5vZGVMYWJlbENvdW50ZXJbbGFiZWxdO1xuICAgICAgaWYgKGNvdW50IDwgbWluU3VwcG9ydCkgcmV0dXJuO1xuICAgICAgdmFyIGcgPSB7XG4gICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgZWRnZXM6IFtdXG4gICAgICB9O1xuICAgICAgZy5ub2Rlcy5wdXNoKHtcbiAgICAgICAgaWQ6IFwiMFwiLFxuICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgIH0pO1xuICAgICAgZnJlcXVlbnRTaXplMVN1YmdyYXBocy5wdXNoKGcpOyAvLyBpZiAobWluTm9kZU51bSA8PSAxKSByZXBvcnRTaXplMSBUT0RPXG4gICAgfSk7XG4gICAgcmV0dXJuIGZyZXF1ZW50U2l6ZTFTdWJncmFwaHM7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzOyAvLyAtLS0tLS0tLSDnrKzkuIDmraUsIF9nZW5lcmF0ZV8xZWRnZV9mcmVxdWVudF9zdWJncmFwaHPvvJrpopHnuYHnmoTljZXkuKroioLngrktLS0tLS0tXG5cblxuICAgIHRoaXMuZnJlcXVlbnRTaXplMVN1YmdyYXBocyA9IHRoaXMuZ2VuZXJhdGUxRWRnZUZyZXF1ZW50U3ViR3JhcGhzKCk7XG4gICAgaWYgKHRoaXMubWF4Tm9kZU51bSA8IDIpIHJldHVybjtcbiAgICB2YXIgZ3JhcGhzID0gdGhpcy5ncmFwaHM7XG4gICAgdmFyIGRpcmVjdGVkID0gdGhpcy5kaXJlY3RlZDsgLy8gUERGUyDmlbDnu4TnmoQgbWFwIExpbmUgMzA0XG5cbiAgICB2YXIgcm9vdCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhJZCkge1xuICAgICAgdmFyIGdyYXBoID0gZ3JhcGhzW2dyYXBoSWRdO1xuICAgICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwOyAvLyBMaW5lIDMwNlxuXG4gICAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBmb3J3YXJkUm9vdEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSb290RWRnZXMoZ3JhcGgsIG5vZGUpOyAvLyBMaW5lIDMwOFxuXG5cbiAgICAgICAgZm9yd2FyZFJvb3RFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgdmFyIHRvTm9kZSA9IG5vZGVNYXBbZWRnZS50b107XG4gICAgICAgICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsID0gXCJcIi5jb25jYXQobm9kZS5sYWJlbCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KHRvTm9kZS5sYWJlbCk7XG4gICAgICAgICAgaWYgKCFyb290W25vZGVFZGdlTm9kZUxhYmVsXSkgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgbm9kZUxhYmVsMTogbm9kZS5sYWJlbCxcbiAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgIG5vZGVMYWJlbDI6IHRvTm9kZS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIHBkZnMgPSB7XG4gICAgICAgICAgICBncmFwaElkOiBncmFwaElkLFxuICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IG51bGxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdLnByb2plY3RlZC5wdXNoKHBkZnMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pOyAvLyBMaW5lIDMxM1xuXG4gICAgT2JqZWN0LmtleXMocm9vdCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZUVkZ2VOb2RlTGFiZWwpIHtcbiAgICAgIHZhciBfYSA9IHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdLFxuICAgICAgICAgIHByb2plY3RlZCA9IF9hLnByb2plY3RlZCxcbiAgICAgICAgICBub2RlTGFiZWwxID0gX2Eubm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZSgwLCAxLCBub2RlTGFiZWwxLCBlZGdlTGFiZWwsIG5vZGVMYWJlbDIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcocHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gR1NwYW47XG59KCk7XG5cbnZhciBmb3JtYXRHcmFwaHMgPSBmdW5jdGlvbiBmb3JtYXRHcmFwaHMoZ3JhcGhzLCBkaXJlY3RlZCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoa2V5LCBpKSB7XG4gICAgdmFyIGdyYXBoID0gZ3JhcGhzW2tleV07XG4gICAgdmFyIGZHcmFwaCA9IG5ldyBHcmFwaChpLCB0cnVlLCBkaXJlY3RlZCk7XG4gICAgdmFyIG5vZGVJZHhNYXAgPSB7fTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBqKSB7XG4gICAgICBmR3JhcGguYWRkTm9kZShqLCBub2RlW25vZGVMYWJlbFByb3BdKTtcbiAgICAgIG5vZGVJZHhNYXBbbm9kZS5pZF0gPSBqO1xuICAgIH0pO1xuICAgIGdyYXBoLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UsIGspIHtcbiAgICAgIHZhciBzb3VyY2VJZHggPSBub2RlSWR4TWFwW2VkZ2Uuc291cmNlXTtcbiAgICAgIHZhciB0YXJnZXRJZHggPSBub2RlSWR4TWFwW2VkZ2UudGFyZ2V0XTtcbiAgICAgIGZHcmFwaC5hZGRFZGdlKC0xLCBzb3VyY2VJZHgsIHRhcmdldElkeCwgZWRnZVtlZGdlTGFiZWxQcm9wXSk7XG4gICAgfSk7XG4gICAgaWYgKGZHcmFwaCAmJiBmR3JhcGguZ2V0Tm9kZU51bSgpKSByZXN1bHRbZkdyYXBoLmlkXSA9IGZHcmFwaDtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgdG9HcmFwaERhdGFzID0gZnVuY3Rpb24gdG9HcmFwaERhdGFzKGdyYXBocywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGdyYXBocy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaCkge1xuICAgIHZhciBncmFwaERhdGEgPSB7XG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW11cbiAgICB9O1xuICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgZ3JhcGhEYXRhLm5vZGVzLnB1c2goKF9hID0ge1xuICAgICAgICBpZDogXCJcIi5jb25jYXQobm9kZS5pZClcbiAgICAgIH0sIF9hW25vZGVMYWJlbFByb3BdID0gbm9kZS5sYWJlbCwgX2EpKTtcbiAgICB9KTtcbiAgICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIGdyYXBoRGF0YS5lZGdlcy5wdXNoKChfYSA9IHtcbiAgICAgICAgc291cmNlOiBcIlwiLmNvbmNhdChlZGdlLmZyb20pLFxuICAgICAgICB0YXJnZXQ6IFwiXCIuY29uY2F0KGVkZ2UudG8pXG4gICAgICB9LCBfYVtlZGdlTGFiZWxQcm9wXSA9IGVkZ2UubGFiZWwsIF9hKSk7XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2goZ3JhcGhEYXRhKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgREVGQVVMVF9MQUJFTF9OQU1FID0gXCJjbHVzdGVyXCI7XG4vKipcbiAqIGdTcGFuIOmikee5geWtkOWbvuiuoeeul+eul+azle+8iGZyZXF1ZW50IGdyYXBoIG1pbmluZ++8iVxuICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcbiAqL1xuXG52YXIgZ1NwYW4gPSBmdW5jdGlvbiBnU3BhbihwYXJhbXMpIHtcbiAgLy8gLS0tLS0tLSDlsIblm77mlbDmja4gR3JhcGhEYXRhIOeahCBtYXAg6L2s5o2i5Li65qC85byPIC0tLS0tLS1cbiAgdmFyIGdyYXBocyA9IHBhcmFtcy5ncmFwaHMsXG4gICAgICBfYSA9IHBhcmFtcy5kaXJlY3RlZCxcbiAgICAgIGRpcmVjdGVkID0gX2EgPT09IHZvaWQgMCA/IGZhbHNlIDogX2EsXG4gICAgICBfYiA9IHBhcmFtcy5ub2RlTGFiZWxQcm9wLFxuICAgICAgbm9kZUxhYmVsUHJvcCA9IF9iID09PSB2b2lkIDAgPyBERUZBVUxUX0xBQkVMX05BTUUgOiBfYixcbiAgICAgIF9jID0gcGFyYW1zLmVkZ2VMYWJlbFByb3AsXG4gICAgICBlZGdlTGFiZWxQcm9wID0gX2MgPT09IHZvaWQgMCA/IERFRkFVTFRfTEFCRUxfTkFNRSA6IF9jO1xuICB2YXIgZm9ybWF0dGVkR3JhcGhzID0gZm9ybWF0R3JhcGhzKGdyYXBocywgZGlyZWN0ZWQsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICB2YXIgbWluU3VwcG9ydCA9IHBhcmFtcy5taW5TdXBwb3J0LFxuICAgICAgbWF4Tm9kZU51bSA9IHBhcmFtcy5tYXhOb2RlTnVtLFxuICAgICAgbWluTm9kZU51bSA9IHBhcmFtcy5taW5Ob2RlTnVtLFxuICAgICAgdmVyYm9zZSA9IHBhcmFtcy52ZXJib3NlLFxuICAgICAgdG9wID0gcGFyYW1zLnRvcDsgLy8gLS0tLS0tLSDliJ3lp4vljJbkuI7miafooYznrpfms5UgLS0tLS0tLVxuXG4gIHZhciBhbGdvUGFyYW1zID0ge1xuICAgIGdyYXBoczogZm9ybWF0dGVkR3JhcGhzLFxuICAgIG1pblN1cHBvcnQ6IG1pblN1cHBvcnQsXG4gICAgbWF4Tm9kZU51bTogbWF4Tm9kZU51bSxcbiAgICBtaW5Ob2RlTnVtOiBtaW5Ob2RlTnVtLFxuICAgIHRvcDogdG9wLFxuICAgIHZlcmJvc2U6IHZlcmJvc2UsXG4gICAgZGlyZWN0ZWQ6IGRpcmVjdGVkXG4gIH07XG4gIHZhciBjYWxjdWxhdG9yID0gbmV3IEdTcGFuKGFsZ29QYXJhbXMpO1xuICBjYWxjdWxhdG9yLnJ1bigpO1xuICB2YXIgcmVzdWx0ID0gdG9HcmFwaERhdGFzKGNhbGN1bGF0b3IuZnJlcXVlbnRTdWJncmFwaHMsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ1NwYW47Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/gSpan/gSpan.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/gSpan/struct.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/algorithm/es/gSpan/struct.js ***! \*********************************************************/ /*! exports provided: VACANT_EDGE_ID, VACANT_NODE_ID, VACANT_EDGE_LABEL, VACANT_NODE_LABEL, VACANT_GRAPH_ID, AUTO_EDGE_ID, Edge, Node, Graph */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_EDGE_ID\", function() { return VACANT_EDGE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_NODE_ID\", function() { return VACANT_NODE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_EDGE_LABEL\", function() { return VACANT_EDGE_LABEL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_NODE_LABEL\", function() { return VACANT_NODE_LABEL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_GRAPH_ID\", function() { return VACANT_GRAPH_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AUTO_EDGE_ID\", function() { return AUTO_EDGE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return Edge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Graph\", function() { return Graph; });\nvar VACANT_EDGE_ID = -1;\nvar VACANT_NODE_ID = -1;\nvar VACANT_EDGE_LABEL = \"-1\";\nvar VACANT_NODE_LABEL = \"-1\";\nvar VACANT_GRAPH_ID = -1;\nvar AUTO_EDGE_ID = \"-1\";\n\nvar Edge =\n/** @class */\nfunction () {\n function Edge(id, from, to, label) {\n if (id === void 0) {\n id = VACANT_EDGE_ID;\n }\n\n if (from === void 0) {\n from = VACANT_NODE_ID;\n }\n\n if (to === void 0) {\n to = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_EDGE_LABEL;\n }\n\n this.id = id;\n this.from = from;\n this.to = to;\n this.label = label;\n }\n\n return Edge;\n}();\n\n\n\nvar Node =\n/** @class */\nfunction () {\n function Node(id, label) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_NODE_LABEL;\n }\n\n this.id = id;\n this.label = label;\n this.edges = [];\n this.edgeMap = {};\n }\n\n Node.prototype.addEdge = function (edge) {\n this.edges.push(edge);\n this.edgeMap[edge.id] = edge;\n };\n\n return Node;\n}();\n\n\n\nvar Graph =\n/** @class */\nfunction () {\n function Graph(id, edgeIdAutoIncrease, directed) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (edgeIdAutoIncrease === void 0) {\n edgeIdAutoIncrease = true;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n this.id = id;\n this.edgeIdAutoIncrease = edgeIdAutoIncrease;\n this.edges = [];\n this.nodes = [];\n this.nodeMap = {};\n this.edgeMap = {};\n this.nodeLabelMap = {};\n this.edgeLabelMap = {};\n this.counter = 0;\n this.directed = directed;\n }\n\n Graph.prototype.getNodeNum = function () {\n return this.nodes.length;\n };\n\n Graph.prototype.addNode = function (id, label) {\n if (this.nodeMap[id]) return;\n var node = new Node(id, label);\n this.nodes.push(node);\n this.nodeMap[id] = node;\n if (!this.nodeLabelMap[label]) this.nodeLabelMap[label] = [];\n this.nodeLabelMap[label].push(id);\n };\n\n Graph.prototype.addEdge = function (id, from, to, label) {\n if (this.edgeIdAutoIncrease || id === undefined) id = this.counter++;\n if (this.nodeMap[from] && this.nodeMap[to] && this.nodeMap[to].edgeMap[id]) return;\n var edge = new Edge(id, from, to, label);\n this.edges.push(edge);\n this.edgeMap[id] = edge;\n this.nodeMap[from].addEdge(edge);\n if (!this.edgeLabelMap[label]) this.edgeLabelMap[label] = [];\n this.edgeLabelMap[label].push(edge);\n\n if (!this.directed) {\n var rEdge = new Edge(id, to, from, label);\n this.nodeMap[to].addEdge(rEdge);\n this.edgeLabelMap[label].push(rEdge);\n }\n };\n\n return Graph;\n}();\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2dTcGFuL3N0cnVjdC5qcz8wZjc1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVlOztBQUVoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWU7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvZ1NwYW4vc3RydWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBWQUNBTlRfRURHRV9JRCA9IC0xO1xuZXhwb3J0IHZhciBWQUNBTlRfTk9ERV9JRCA9IC0xO1xuZXhwb3J0IHZhciBWQUNBTlRfRURHRV9MQUJFTCA9IFwiLTFcIjtcbmV4cG9ydCB2YXIgVkFDQU5UX05PREVfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnQgdmFyIFZBQ0FOVF9HUkFQSF9JRCA9IC0xO1xuZXhwb3J0IHZhciBBVVRPX0VER0VfSUQgPSBcIi0xXCI7XG5cbnZhciBFZGdlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRWRnZShpZCwgZnJvbSwgdG8sIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX0VER0VfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGZyb20gPT09IHZvaWQgMCkge1xuICAgICAgZnJvbSA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmICh0byA9PT0gdm9pZCAwKSB7XG4gICAgICB0byA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmIChsYWJlbCA9PT0gdm9pZCAwKSB7XG4gICAgICBsYWJlbCA9IFZBQ0FOVF9FREdFX0xBQkVMO1xuICAgIH1cblxuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmZyb20gPSBmcm9tO1xuICAgIHRoaXMudG8gPSB0bztcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gIH1cblxuICByZXR1cm4gRWRnZTtcbn0oKTtcblxuZXhwb3J0IHsgRWRnZSB9O1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE5vZGUoaWQsIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX05PREVfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gIH1cblxuICBOb2RlLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2VkZ2UuaWRdID0gZWRnZTtcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oKTtcblxuZXhwb3J0IHsgTm9kZSB9O1xuXG52YXIgR3JhcGggPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHcmFwaChpZCwgZWRnZUlkQXV0b0luY3JlYXNlLCBkaXJlY3RlZCkge1xuICAgIGlmIChpZCA9PT0gdm9pZCAwKSB7XG4gICAgICBpZCA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmIChlZGdlSWRBdXRvSW5jcmVhc2UgPT09IHZvaWQgMCkge1xuICAgICAgZWRnZUlkQXV0b0luY3JlYXNlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5lZGdlSWRBdXRvSW5jcmVhc2UgPSBlZGdlSWRBdXRvSW5jcmVhc2U7XG4gICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICB0aGlzLm5vZGVNYXAgPSB7fTtcbiAgICB0aGlzLmVkZ2VNYXAgPSB7fTtcbiAgICB0aGlzLm5vZGVMYWJlbE1hcCA9IHt9O1xuICAgIHRoaXMuZWRnZUxhYmVsTWFwID0ge307XG4gICAgdGhpcy5jb3VudGVyID0gMDtcbiAgICB0aGlzLmRpcmVjdGVkID0gZGlyZWN0ZWQ7XG4gIH1cblxuICBHcmFwaC5wcm90b3R5cGUuZ2V0Tm9kZU51bSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5sZW5ndGg7XG4gIH07XG5cbiAgR3JhcGgucHJvdG90eXBlLmFkZE5vZGUgPSBmdW5jdGlvbiAoaWQsIGxhYmVsKSB7XG4gICAgaWYgKHRoaXMubm9kZU1hcFtpZF0pIHJldHVybjtcbiAgICB2YXIgbm9kZSA9IG5ldyBOb2RlKGlkLCBsYWJlbCk7XG4gICAgdGhpcy5ub2Rlcy5wdXNoKG5vZGUpO1xuICAgIHRoaXMubm9kZU1hcFtpZF0gPSBub2RlO1xuICAgIGlmICghdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdKSB0aGlzLm5vZGVMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICB0aGlzLm5vZGVMYWJlbE1hcFtsYWJlbF0ucHVzaChpZCk7XG4gIH07XG5cbiAgR3JhcGgucHJvdG90eXBlLmFkZEVkZ2UgPSBmdW5jdGlvbiAoaWQsIGZyb20sIHRvLCBsYWJlbCkge1xuICAgIGlmICh0aGlzLmVkZ2VJZEF1dG9JbmNyZWFzZSB8fCBpZCA9PT0gdW5kZWZpbmVkKSBpZCA9IHRoaXMuY291bnRlcisrO1xuICAgIGlmICh0aGlzLm5vZGVNYXBbZnJvbV0gJiYgdGhpcy5ub2RlTWFwW3RvXSAmJiB0aGlzLm5vZGVNYXBbdG9dLmVkZ2VNYXBbaWRdKSByZXR1cm47XG4gICAgdmFyIGVkZ2UgPSBuZXcgRWRnZShpZCwgZnJvbSwgdG8sIGxhYmVsKTtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2lkXSA9IGVkZ2U7XG4gICAgdGhpcy5ub2RlTWFwW2Zyb21dLmFkZEVkZ2UoZWRnZSk7XG4gICAgaWYgKCF0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0pIHRoaXMuZWRnZUxhYmVsTWFwW2xhYmVsXSA9IFtdO1xuICAgIHRoaXMuZWRnZUxhYmVsTWFwW2xhYmVsXS5wdXNoKGVkZ2UpO1xuXG4gICAgaWYgKCF0aGlzLmRpcmVjdGVkKSB7XG4gICAgICB2YXIgckVkZ2UgPSBuZXcgRWRnZShpZCwgdG8sIGZyb20sIGxhYmVsKTtcbiAgICAgIHRoaXMubm9kZU1hcFt0b10uYWRkRWRnZShyRWRnZSk7XG4gICAgICB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChyRWRnZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBHcmFwaDtcbn0oKTtcblxuZXhwb3J0IHsgR3JhcGggfTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/gSpan/struct.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/gaddi.js": /*!**************************************************!*\ !*** ./node_modules/@antv/algorithm/es/gaddi.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _floydWarshall__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./floydWarshall */ \"./node_modules/@antv/algorithm/es/floydWarshall.js\");\n/* harmony import */ var _gSpan_gSpan__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gSpan/gSpan */ \"./node_modules/@antv/algorithm/es/gSpan/gSpan.js\");\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/@antv/algorithm/es/dijkstra.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n\n\n\n/**\n * 为 graphData 中每个节点生成邻居单元数组\n * @param graphData\n * @param spm\n * @param nodeLabelProp\n * @param k k-近邻\n */\n\nvar findKNeighborUnits = function findKNeighborUnits(graphData, spm, nodeLabelProp, k) {\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (k === void 0) {\n k = 2;\n }\n\n var units = [];\n var nodes = graphData.nodes;\n spm.forEach(function (row, i) {\n units.push(findKNeighborUnit(nodes, row, i, nodeLabelProp, k));\n });\n return units;\n};\n\nvar findKNeighborUnit = function findKNeighborUnit(nodes, row, i, nodeLabelProp, k) {\n var unitNodeIdxs = [i];\n var neighbors = [];\n var labelCountMap = {};\n row.forEach(function (v, j) {\n if (v <= k && i !== j) {\n unitNodeIdxs.push(j);\n neighbors.push(nodes[j]);\n var label = nodes[j][nodeLabelProp];\n if (!labelCountMap[label]) labelCountMap[label] = {\n count: 1,\n dists: [v]\n };else {\n labelCountMap[label].count++;\n labelCountMap[label].dists.push(v);\n }\n }\n }); // 将 labelCountMap 中的 dists 按照从小到大排序,方便后面使用\n\n Object.keys(labelCountMap).forEach(function (label) {\n labelCountMap[label].dists = labelCountMap[label].dists.sort(function (a, b) {\n return a - b;\n });\n });\n return {\n nodeIdx: i,\n nodeId: nodes[i].id,\n nodeIdxs: unitNodeIdxs,\n neighbors: neighbors,\n neighborNum: unitNodeIdxs.length - 1,\n nodeLabelCountMap: labelCountMap\n };\n};\n/**\n * 随机寻找点对,满足距离小于 k\n * @param k 参数 k,表示 k-近邻\n * @param nodeNum 参数 length\n * @param maxNodePairNum 寻找点对的数量不超过 maxNodePairNum\n * @param spm 最短路径矩阵\n */\n\n\nvar findNodePairsRandomly = function findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm) {\n // 每个节点需要随机找出的点对数\n var nodePairNumEachNode = Math.ceil(maxNodePairNum / nodeNum);\n var nodePairMap = {};\n var foundNodePairCount = 0; // 遍历节点,为每个节点随机找出 nodePairNumEachNode 个点对,满足距离小于 k。找到的点对数量超过 maxNodePairNum 或所有节点遍历结束时终止\n\n kNeighborUnits.forEach(function (unit, i) {\n // 若未达到 nodePairNumEachNode,或循环次数小于最大循环次数(2 * nodeNum),继续循环\n var nodePairForICount = 0;\n var outerLoopCount = 0;\n var neighbors = unit.nodeIdxs; // the first one is the center node\n\n var neighborNum = unit.neighborNum - 1;\n\n while (nodePairForICount < nodePairNumEachNode) {\n // 另一端节点在节点数组中的的 index\n var oidx = neighbors[1 + Math.floor(Math.random() * neighborNum)];\n var innerLoopCount = 0; // 若随机得到的另一端 idx 不符合条件,则继续 random。条件是不是同一个节点、这个点对没有被记录过、距离小于 k\n\n while (nodePairMap[\"\".concat(i, \"-\").concat(oidx)] || nodePairMap[\"\".concat(oidx, \"-\").concat(i)]) {\n oidx = Math.floor(Math.random() * nodeNum);\n innerLoopCount++;\n if (innerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n }\n\n if (innerLoopCount < 2 * nodeNum) {\n // 未达到最大循环次数,说明找到了合适的另一端\n nodePairMap[\"\".concat(i, \"-\").concat(oidx)] = {\n start: i,\n end: oidx,\n distance: spm[i][oidx]\n };\n nodePairForICount++;\n foundNodePairCount++; // 如果当前找到的点对数量达到了上限,返回结果\n\n if (foundNodePairCount >= maxNodePairNum) return nodePairMap;\n }\n\n outerLoopCount++;\n if (outerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n } // 这个节点没有找到足够 nodePairNumEachNode 的点对。更新 nodePairNumEachNode,让后续节点找更多的点对\n\n\n if (nodePairForICount < nodePairNumEachNode) {\n var gap = nodePairNumEachNode - nodePairForICount;\n nodePairNumEachNode = (nodePairNumEachNode + gap) / (nodeNum - i - 1);\n }\n });\n return nodePairMap;\n};\n/**\n * 计算所有 nodePairMap 中节点对的相交邻居诱导子图\n * @param nodePairMap 节点对 map,key 为 node1.id-node2.id,value 为 { startNodeIdx, endNodeIdx, distance }\n * @param neighborUnits 每个节点的邻居元数组\n * @param graphData 原图数据\n * @param edgeMap 边的 map,方便检索\n * @param cachedInducedGraphMap 缓存的结果,下次进入该函数将继续更新该缓存,若 key 在缓存中存在则不需要重复计算\n */\n\n\nvar getIntersectNeighborInducedGraph = function getIntersectNeighborInducedGraph(nodePairMap, neighborUnits, graphData, cachedInducedGraphMap) {\n var nodes = graphData.nodes;\n if (!cachedInducedGraphMap) cachedInducedGraphMap = {};\n Object.keys(nodePairMap).forEach(function (key) {\n var _a, _b;\n\n if (cachedInducedGraphMap && cachedInducedGraphMap[key]) return;\n cachedInducedGraphMap[key] = {\n nodes: [],\n edges: []\n };\n var pair = nodePairMap[key];\n var startUnitNodeIds = (_a = neighborUnits[pair.start]) === null || _a === void 0 ? void 0 : _a.nodeIdxs;\n var endUnitNodeIds = (_b = neighborUnits[pair.end]) === null || _b === void 0 ? void 0 : _b.nodeIdxs;\n if (!startUnitNodeIds || !endUnitNodeIds) return; // 不存在邻元,返回空图\n\n var endSet = new Set(endUnitNodeIds);\n var intersect = startUnitNodeIds.filter(function (x) {\n return endSet.has(x);\n }); // 可能会爆栈(在 1580 + 6 nodes full-connected 时出现)\n\n if (!intersect || !intersect.length) return; // 没有交集,返回空图\n\n var intersectIdMap = {};\n var intersectLength = intersect.length;\n\n for (var i = 0; i < intersectLength; i++) {\n var node = nodes[intersect[i]];\n cachedInducedGraphMap[key].nodes.push(node); // 将交集中的点加入诱导子图\n\n intersectIdMap[node.id] = true;\n } // 遍历所有边数据,如果边的两端都在交集中,将该边加入诱导子图\n\n\n graphData.edges.forEach(function (edge) {\n if (intersectIdMap[edge.source] && intersectIdMap[edge.target]) cachedInducedGraphMap[key].edges.push(edge);\n });\n });\n return cachedInducedGraphMap;\n};\n/**\n * 计算 strcutre 在 graph 上的匹配数量\n * @param graph 图数据\n * @param structure 目前支持只有两个节点一条边的最简单结构\n * @param nodeLabelProp 节点类型字段名\n * @param edgeLabelProp 边类型字段名\n */\n\n\nvar getMatchedCount = function getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp) {\n var _a, _b;\n\n var nodeMap = {};\n graph.nodes.forEach(function (node) {\n nodeMap[node.id] = node;\n });\n var count = 0;\n if (!((_a = structure === null || structure === void 0 ? void 0 : structure.edges) === null || _a === void 0 ? void 0 : _a.length) || ((_b = structure === null || structure === void 0 ? void 0 : structure.nodes) === null || _b === void 0 ? void 0 : _b.length) < 2) return 0;\n graph.edges.forEach(function (e) {\n var sourceLabel = nodeMap[e.source][nodeLabelProp];\n var targetLabel = nodeMap[e.target][nodeLabelProp];\n var strNodeLabel1 = structure === null || structure === void 0 ? void 0 : structure.nodes[0][nodeLabelProp];\n var strNodeLabel2 = structure === null || structure === void 0 ? void 0 : structure.nodes[1][nodeLabelProp];\n var strEdgeLabel = structure === null || structure === void 0 ? void 0 : structure.edges[0][edgeLabelProp];\n if (e[edgeLabelProp] !== strEdgeLabel) return;\n\n if (sourceLabel === strNodeLabel1 && targetLabel === strNodeLabel2 || sourceLabel === strNodeLabel2 && targetLabel === strNodeLabel1) {\n count++;\n }\n });\n return count;\n};\n/**\n * structures 中寻找最具有代表性的一个。这个结构是使得 matchedCountMap 的分组方式类内间距最小,类间间距最大\n * @param matchedCountMap 每个 structure 分类后的各图匹配数量,格式 { [strcture.idx]: { [interInducedGraphKey]: count } }\n * @param structureNum strcuture 个数,与 matchedCountMap.length 对应\n * @param structures\n */\n\n\nvar findRepresentStructure = function findRepresentStructure(matchedCountMap, structureNum, structures) {\n var maxOffset = Infinity,\n representClusterType = 0;\n\n var _loop_1 = function _loop_1(i) {\n // 一种分组的 map,key 是 intGraph 的 key,value 是 structures[i] 的匹配个数\n var countMapI = matchedCountMap[i]; // 按照 value 为该组排序,生成 keys 的数组:\n\n var sortedGraphKeys = Object.keys(countMapI).sort(function (a, b) {\n return countMapI[a] - countMapI[b];\n }); // 共 100 个 graphKeys,将 graphKeys 按顺序分为 groupNum 组\n\n var groupNum = 10;\n var clusters = []; // 总共有 groupNum 个项\n\n sortedGraphKeys.forEach(function (key, j) {\n if (!clusters[j % groupNum]) clusters[j % groupNum] = {\n graphs: [],\n totalCount: 0,\n aveCount: 0\n };\n clusters[j % groupNum].graphs.push(key);\n clusters[j % groupNum].totalCount += countMapI[key];\n }); // 计算 cluster 与 cluster 之间的距离 innerDist,每个 cluster 内部的距离 intraDist\n\n var aveIntraDist = 0; // 该类的类内平均值\n\n var aveCounts = []; // 类内平均匹配数量,将用于计算类间距离\n\n clusters.forEach(function (graphsInCluster) {\n // 类内均值\n var aveCount = graphsInCluster.totalCount / graphsInCluster.graphs.length;\n graphsInCluster.aveCount = aveCount;\n aveCounts.push(aveCount); // 对于每类,计算类内间距平均值\n\n var aveIntraPerCluster = 0;\n var graphsNum = graphsInCluster.length;\n graphsInCluster.graphs.forEach(function (graphKey1, j) {\n var graph1Count = countMapI[graphKey1];\n graphsInCluster.graphs.forEach(function (graphKey2, k) {\n if (j === k) return;\n aveIntraPerCluster += Math.abs(graph1Count - countMapI[graphKey2]);\n });\n });\n aveIntraPerCluster /= graphsNum * (graphsNum - 1) / 2;\n aveIntraDist += aveIntraPerCluster;\n });\n aveIntraDist /= clusters.length; // 用类内均值计算类间距\n\n var aveInterDist = 0; // 类间间距平均值\n\n aveCounts.forEach(function (aveCount1, j) {\n aveCounts.forEach(function (aveCount2, k) {\n if (j === k) return;\n aveInterDist += Math.abs(aveCount1 - aveCount2);\n });\n aveInterDist /= aveCounts.length * (aveCounts.length - 1) / 2;\n }); // 寻找 (类间间距均值-类内间距均值) 最大的一种分组方式(对应的 structure 就是最终要找的唯一 DS(G))\n\n var offset = aveInterDist - aveIntraDist;\n\n if (maxOffset < offset) {\n maxOffset = offset;\n representClusterType = i;\n }\n };\n\n for (var i = 0; i < structureNum; i++) {\n _loop_1(i);\n }\n\n return {\n structure: structures[representClusterType],\n structureCountMap: matchedCountMap[representClusterType]\n };\n};\n\nvar getNodeMaps = function getNodeMaps(nodes, nodeLabelProp) {\n var nodeMap = {},\n nodeLabelMap = {};\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = {\n idx: i,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var label = node[nodeLabelProp];\n if (!nodeLabelMap[label]) nodeLabelMap[label] = [];\n nodeLabelMap[label].push(node);\n });\n return {\n nodeMap: nodeMap,\n nodeLabelMap: nodeLabelMap\n };\n};\n\nvar getEdgeMaps = function getEdgeMaps(edges, edgeLabelProp, nodeMap) {\n var edgeMap = {},\n edgeLabelMap = {};\n edges.forEach(function (edge, i) {\n edgeMap[\"\".concat(_util__WEBPACK_IMPORTED_MODULE_4__[\"uniqueId\"])] = {\n idx: i,\n edge: edge\n };\n var label = edge[edgeLabelProp];\n if (!edgeLabelMap[label]) edgeLabelMap[label] = [];\n edgeLabelMap[label].push(edge);\n var sourceNode = nodeMap[edge.source];\n\n if (sourceNode) {\n sourceNode.degree++;\n sourceNode.outDegree++;\n }\n\n var targetNode = nodeMap[edge.target];\n\n if (targetNode) {\n targetNode.degree++;\n targetNode.inDegree++;\n }\n });\n return {\n edgeMap: edgeMap,\n edgeLabelMap: edgeLabelMap\n };\n};\n/**\n * 输出最短路径的 map,key 为 sourceNode.id-targetNode.id,value 为这两个节点的最短路径长度\n * @param nodes\n * @param spm\n * @param directed\n */\n\n\nvar getSpmMap = function getSpmMap(nodes, spm, directed) {\n var length = spm.length;\n var map = {};\n spm.forEach(function (row, i) {\n var start = directed ? 0 : i + 1;\n var iId = nodes[i].id;\n\n for (var j = start; j < length; j++) {\n if (i === j) continue;\n var jId = nodes[j].id;\n var dist = row[j];\n map[\"\".concat(iId, \"-\").concat(jId)] = dist;\n if (!directed) map[\"\".concat(jId, \"-\").concat(iId)] = dist;\n }\n });\n return map;\n};\n/**\n * 计算一对节点(node1,node2)的 NDS 距离\n * @param graph 原图数据\n * @param node1\n * @param node2\n */\n\n\nvar getNDSDist = function getNDSDist(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) {\n var _a;\n\n var key = \"\".concat(node1.id, \"-\").concat(node2.id);\n if (cachedNDSMap && cachedNDSMap[key]) return cachedNDSMap[key];\n var interInducedGraph = cachedInterInducedGraph ? cachedInterInducedGraph[key] : undefined; // 若没有缓存相交邻居诱导子图,计算\n\n if (!interInducedGraph) {\n var pairMap = (_a = {}, _a[key] = {\n start: nodeMap[node1.id].idx,\n end: nodeMap[node2.id].idx,\n distance: spDist\n }, _a);\n cachedInterInducedGraph = getIntersectNeighborInducedGraph(pairMap, kNeighborUnits, graph, cachedInterInducedGraph);\n interInducedGraph = cachedInterInducedGraph[key];\n }\n\n return getMatchedCount(interInducedGraph, structure, nodeLabelProp, edgeLabelProp);\n};\n/**\n * 计算 pattern 上绩点的度数并存储到 minPatternNodeLabelDegreeMap\n */\n\n\nvar stashPatternNodeLabelDegreeMap = function stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap) {\n var _a, _b, _c;\n\n var minPatternNodeLabelDegree = (_a = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _a === void 0 ? void 0 : _a.degree;\n var minPatternNodeLabelInDegree = (_b = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _b === void 0 ? void 0 : _b.inDegree;\n var minPatternNodeLabelOutDegree = (_c = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _c === void 0 ? void 0 : _c.outDegree;\n\n if (minPatternNodeLabelDegreeMap[neighborLabel] === undefined) {\n minPatternNodeLabelDegree = Infinity;\n minPatternNodeLabelInDegree = Infinity;\n minPatternNodeLabelOutDegree = Infinity;\n patternNodeLabelMap[neighborLabel].forEach(function (patternNodeWithLabel) {\n var patternNodeDegree = patternNodeMap[patternNodeWithLabel.id].degree;\n if (minPatternNodeLabelDegree > patternNodeDegree) minPatternNodeLabelDegree = patternNodeDegree;\n var patternNodeInDegree = patternNodeMap[patternNodeWithLabel.id].inDegree;\n if (minPatternNodeLabelInDegree > patternNodeInDegree) minPatternNodeLabelInDegree = patternNodeInDegree;\n var patternNodeOutDegree = patternNodeMap[patternNodeWithLabel.id].outDegree;\n if (minPatternNodeLabelOutDegree > patternNodeOutDegree) minPatternNodeLabelOutDegree = patternNodeOutDegree;\n });\n minPatternNodeLabelDegreeMap[neighborLabel] = {\n degree: minPatternNodeLabelDegree,\n inDegree: minPatternNodeLabelInDegree,\n outDegree: minPatternNodeLabelOutDegree\n };\n }\n\n return {\n minPatternNodeLabelDegree: minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree: minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree: minPatternNodeLabelOutDegree\n };\n};\n/**\n * GADDI 模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nvar GADDI = function GADDI(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n var _a;\n\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n if (!graphData || !graphData.nodes) return; // 分为三步:\n // 0. 预计算:节点/边数,邻接矩阵、最短路径矩阵\n // 1. 处理原图 graphData。再分为 1~5 小步\n // 2. 匹配\n // console.log(\"----- stage-pre: preprocessing -------\");\n // -------- 第零步,预计算:节点/边数,邻接矩阵、最短路径矩阵-------\n\n var nodeNum = graphData.nodes.length;\n if (!nodeNum) return; // console.log(\"----- stage-pre.1: calc shortest path matrix for graph -------\");\n\n var spm = Object(_floydWarshall__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, directed); // console.log(\n // \"----- stage-pre.2: calc shortest path matrix for pattern -------\"\n // );\n\n var patternSpm = Object(_floydWarshall__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(pattern, directed); // console.log(\n // \"----- stage-pre.3: calc shortest path matrix map for graph -------\"\n // );\n\n var spmMap = getSpmMap(graphData.nodes, spm, directed); // console.log(\n // \"----- stage-pre.4: calc shortest path matrix map for pattern -------\"\n // );\n\n var patternSpmMap = getSpmMap(pattern.nodes, patternSpm, directed); // console.log(\"----- stage-pre.5: establish maps -------\");\n // 节点的 map,以 id 为 id 映射,方便后续快速检索\n\n var _b = getNodeMaps(graphData.nodes, nodeLabelProp),\n nodeMap = _b.nodeMap,\n nodeLabelMap = _b.nodeLabelMap;\n\n var _c = getNodeMaps(pattern.nodes, nodeLabelProp),\n patternNodeMap = _c.nodeMap,\n patternNodeLabelMap = _c.nodeLabelMap; // 计算节点度数\n\n\n getEdgeMaps(graphData.edges, edgeLabelProp, nodeMap);\n var patternEdgeLabelMap = getEdgeMaps(pattern.edges, edgeLabelProp, patternNodeMap).edgeLabelMap; // 若未指定 length,自动计算 pattern 半径(最短路径最大值)\n\n var patternSpmSpread = [];\n patternSpm === null || patternSpm === void 0 ? void 0 : patternSpm.forEach(function (row) {\n patternSpmSpread = patternSpmSpread.concat(row);\n });\n if (!length) length = Math.max.apply(Math, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], patternSpmSpread, false), [2], false));\n if (!k) k = length; // console.log(\"params\", directed, length, k);\n // console.log(\"----- stage-pre.6: calc k neighbor units -------\");\n // 计算每个节点的 k 邻元集合\n\n var kNeighborUnits = findKNeighborUnits(graphData, spm, nodeLabelProp, k);\n var patternKNeighborUnits = findKNeighborUnits(pattern, patternSpm, nodeLabelProp, k); // console.log(\n // \"----- stage0: going to processing graph and find intersect neighbor induced graphs -------\"\n // );\n // console.log(\"----- stage0.1: going to select random node pairs -------\");\n // -------- 第一步,处理原图 graphData-------\n // 1.1. 随机选择最多 100 个点对,满足距离小于 Length 和 k\n // 当 graphData 少于 20 个节点,则不能找出 100 个点对,只找出不多于 n(n-1)/2 个点对\n\n var maxNodePairNum = Math.min(100, nodeNum * (nodeNum - 1) / 2);\n var nodePairsMap = findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm); // console.log(\n // \"----- stage0.2: going to calculate intersect neighbor induced graphs -------\"\n // );\n // 1.2. 生成上面节点对的相应相交邻居诱导子图。格式为 {'beginNodeIdx-endNodeIdx': {nodes: [], edges: []}}\n\n var intGMap = getIntersectNeighborInducedGraph(nodePairsMap, kNeighborUnits, graphData); // 1.3. 使用 gSpan 算法(frequent graph mining)计算 ISIntG 的前 10 个频率最高的子结构(3-4条边)\n\n var top = 10,\n minSupport = 1,\n minNodeNum = 1,\n maxNodeNum = 4;\n var params = {\n graphs: intGMap,\n nodeLabelProp: nodeLabelProp,\n edgeLabelProp: edgeLabelProp,\n minSupport: minSupport,\n minNodeNum: minNodeNum,\n maxNodeNum: maxNodeNum,\n directed: directed\n }; // console.log(\n // \"----- stage1: (gSpan) going to find frequent structure dsG -------\"\n // );\n // console.log(\"----- stage1.1: going to run gSpan -------\");\n // 暂时假设生成的 sub structure 都只有一条边\n\n var freStructures = Object(_gSpan_gSpan__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(params).slice(0, top); // structureNum 可能小于 top\n\n var structureNum = freStructures.length; // 1.4. 计算上述 10 个子结构在 intGMap 中每个诱导子图的匹配个数\n\n var matchedCountMap = [];\n freStructures.forEach(function (structure, i) {\n matchedCountMap[i] = {};\n Object.keys(intGMap).forEach(function (key) {\n var graph = intGMap[key];\n var subStructureCount = getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp);\n matchedCountMap[i][key] = subStructureCount;\n });\n }); // console.log(\n // \"----- stage1.1: going to find the most represent strucutre -------\"\n // );\n // 1.5. 对于每个子结构,根据匹配个数为 intGMap 中的诱导子图分组,生成 structureNum 种分组\n // 计算每种分组的类间距和类内间距,找到类间距最大、类内间距最小的一种分组,这种分组对应的子结构被选为唯一代表性子结构 DS(G)\n\n var _d = findRepresentStructure(matchedCountMap, structureNum, freStructures),\n dsG = _d.structure,\n ndsDist = _d.structureCountMap; // -------- 第二步,匹配-------\n // 2.1 找到从 Q 中的一个节点作为起始节点,寻找 G 中的匹配。这个其实节点的标签可以在 G 中找到最多的节点\n\n\n var beginPNode = pattern.nodes[0],\n candidates = [],\n label = (_a = pattern.nodes[0]) === null || _a === void 0 ? void 0 : _a[nodeLabelProp],\n maxNodeNumWithSameLabel = -Infinity;\n pattern.nodes.forEach(function (node) {\n var pLabel = node[nodeLabelProp];\n var nodesWithSameLabel = nodeLabelMap[pLabel];\n\n if ((nodesWithSameLabel === null || nodesWithSameLabel === void 0 ? void 0 : nodesWithSameLabel.length) > maxNodeNumWithSameLabel) {\n maxNodeNumWithSameLabel = nodesWithSameLabel.length;\n candidates = nodesWithSameLabel;\n label = pLabel;\n beginPNode = node;\n }\n }); // console.log(\"----- stage2: going to find candidates -------\");\n // 全局缓存,避免重复计算\n\n var minPatternNodeLabelDegreeMap = {}; // key 是 label,value 是该 label 节点的最小度数\n\n var patternIntGraphMap = {},\n patternNDSDist = {},\n // key 为 node.id-node.id\n patternNDSDistMap = {}; // key 为 node.id-label2,value nds距离值数组(按从大到小排序,无需关心具体对应哪个 node2)\n // 2.2.2 对于 Q 中的另一个标签的 k 个节点,计算它们到 node 的最短路径以及 NDS 距离\n\n var patternSpDist = {};\n var patternSpDistBack = {};\n Object.keys(patternNodeLabelMap).forEach(function (label2, j) {\n patternSpDist[label2] = [];\n\n if (directed) {\n patternSpDistBack[label2] = [];\n }\n\n var maxDist = -Infinity;\n var patternNodesWithLabel2 = patternNodeLabelMap[label2];\n var patternNodePairMap = {};\n patternNodesWithLabel2.forEach(function (nodeWithLabel2) {\n var dist = patternSpmMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)];\n dist && patternSpDist[label2].push(dist);\n if (maxDist < dist) maxDist = dist;\n patternNodePairMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)] = {\n start: 0,\n end: patternNodeMap[nodeWithLabel2.id].idx,\n distance: dist\n };\n\n if (directed) {\n var distBack = patternSpmMap[\"\".concat(nodeWithLabel2.id, \"-\").concat(beginPNode.id)];\n distBack && patternSpDistBack[label2].push(distBack);\n }\n }); // spDist[label2] 按照从小到大排序\n\n patternSpDist[label2] = patternSpDist[label2].sort(function (a, b) {\n return a - b;\n });\n if (directed) patternSpDistBack[label2] = patternSpDistBack[label2].sort(function (a, b) {\n return a - b;\n }); // 计算 Q 中所有 label2 节点到 beginPNode 的 NDS 距离\n // 所有 label2 节点到 beginPNode 的邻居相交诱导子图:\n // key: node1.id-node2.id\n\n patternIntGraphMap = getIntersectNeighborInducedGraph(patternNodePairMap, patternKNeighborUnits, pattern, patternIntGraphMap); // pattern 中 beginNode 到当前 label2 节点 的 NDS 距离(数组,无需关心具体对应到哪个节点)\n\n var currentPatternNDSDistArray = [];\n Object.keys(patternNodePairMap).forEach(function (key) {\n if (patternNDSDist[key]) {\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var patternIntGraph = patternIntGraphMap[key];\n patternNDSDist[key] = getMatchedCount(patternIntGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n }); // 根据值为 currentPatternNDSDist 从大到小排序\n\n currentPatternNDSDistArray = currentPatternNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n patternNDSDistMap[\"\".concat(beginPNode.id, \"-\").concat(label2)] = currentPatternNDSDistArray;\n if (label2 === label) return;\n var candidatesNum = (candidates === null || candidates === void 0 ? void 0 : candidates.length) || 0;\n\n var _loop_4 = function _loop_4(m) {\n var cNode = candidates[m]; // prune1:若 candidates 中节点 cNode 的 kNeighborUnits 中标签为 label2 的节点个数少于 pattern 中 label2 个数,删去它\n\n var graphNeighborUnit = kNeighborUnits[nodeMap[cNode.id].idx];\n var graphNeighborUnitCountMap = graphNeighborUnit.nodeLabelCountMap[label2];\n var patternLabel2Num = patternNodeLabelMap[label2].length;\n\n if (!graphNeighborUnitCountMap || graphNeighborUnitCountMap.count < patternLabel2Num) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune2:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点最短路径大于 patternSpDist[label2],删去它\n // (prune2 规则即:candidate 相关的最短路径的最大 spDist[label2].length 个,按照大小顺序依次和 patternSpDist[label2] 中的值比较,只要遇到一个是 G > Q 的,就删去这个 candidate)\n\n\n var prune2Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (graphNeighborUnitCountMap.dists[n] > patternSpDist[label2][n]) {\n prune2Invalid = true;\n break;\n }\n }\n\n if (prune2Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune3:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点 NDS 距离小于 patternNDSDist[beginNode.id-label2],删去它\n // TODO:prune3,currentPatternNDSDistArray 与 currentNDSDist 的比较\n // 计算 G 中所有 label2 节点到 cNode 的 NDS 距离\n // 所有 label2 节点到 cNode 的邻居相交诱导子图:\n\n\n var cNodePairMap = {};\n graphNeighborUnit.neighbors.forEach(function (neighborNode) {\n var dist = spmMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)];\n cNodePairMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)] = {\n start: nodeMap[cNode.id].idx,\n end: nodeMap[neighborNode.id].idx,\n distance: dist\n };\n }); // 更新 intGMap\n\n intGMap = getIntersectNeighborInducedGraph(cNodePairMap, kNeighborUnits, graphData, intGMap); // candidate 到它周围 label2 节点的 NDS 距离, key 是 node.id-node.id\n\n var currentNDSDistArray = [];\n Object.keys(cNodePairMap).forEach(function (key) {\n if (ndsDist[key]) {\n currentNDSDistArray.push(ndsDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var intGraph = intGMap[key];\n ndsDist[key] = getMatchedCount(intGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentNDSDistArray.push(ndsDist[key]);\n }); // 根据值为 currentNDSDistArray 从大到小排序\n\n currentNDSDistArray = currentNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n var prune3Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (currentNDSDistArray[n] < currentPatternNDSDistArray[n]) {\n prune3Invalid = true;\n break;\n }\n }\n\n if (prune3Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n }\n };\n\n for (var m = candidatesNum - 1; m >= 0; m--) {\n _loop_4(m);\n }\n });\n var candidateGraphs = []; // console.log(\n // \"----- stage3: going to splice neighbors for each candidate graph -------\"\n // );\n // candidates 经过筛选后,以每个 candidate 为中心,生成 Length-neighbor 的邻居诱导子图\n // 并在诱导子图中去除不可能在 Q 上找到匹配的点:在 Q 上不存在的 label,其他 label 到 candidate 的最大最短距离符合 Q、NDS 距离符合 Q\n\n candidates === null || candidates === void 0 ? void 0 : candidates.forEach(function (candidate) {\n var nodeIdx = nodeMap[candidate.id].idx;\n var lengthNeighborUnit = findKNeighborUnit(graphData.nodes, spm[nodeIdx], nodeIdx, nodeLabelProp, length);\n var neighborNodes = lengthNeighborUnit.neighbors; // 删除不可能找到匹配的邻居点\n\n var neighborNum = neighborNodes.length;\n var unmatched = false;\n\n for (var i = neighborNum - 1; i >= 0; i--) {\n // 如果通过裁剪,符合条件的节点数量已过少,说明不能匹配这个 candidate 相关的图\n if (neighborNodes.length + 1 < pattern.nodes.length) {\n unmatched = true;\n return;\n }\n\n var neighborNode = neighborNodes[i];\n var neighborLabel = neighborNode[nodeLabelProp]; // prune1: 若该邻居点的 label 不存在于 pattern 中,移除这个点\n\n if (!patternNodeLabelMap[neighborLabel] || !patternNodeLabelMap[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune2: 若该邻居点到 candidate 的最短路径比和它有相同 label 的节点到 beginPNode 的最大最短路径长度长,移除这个点\n // prune2.1: 如果没有这个标签到 beginPNode 的距离记录,说明 pattern 上(可能 beginPNode 是这个 label)没有其他这个 label 的节点\n\n\n if (!patternSpDist[neighborLabel] || !patternSpDist[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n var key = \"\".concat(candidate.id, \"-\").concat(neighborNode.id); // prune2.2\n\n var distToCandidate = spmMap[key];\n var idx = patternSpDist[neighborLabel].length - 1;\n var maxDistWithLabelInPattern = patternSpDist[neighborLabel][idx]; // patternSpDist[neighborLabel] 已经按照从小到大排序\n\n if (distToCandidate > maxDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n if (directed) {\n var keyBack = \"\".concat(neighborNode.id, \"-\").concat(candidate.id);\n var distFromCandidate = spmMap[keyBack];\n idx = patternSpDistBack[neighborLabel].length - 1;\n var maxBackDistWithLabelInPattern = patternSpDistBack[neighborLabel][idx];\n\n if (distFromCandidate > maxBackDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // prune3: 若该邻居点到 candidate 的 NDS 距离比和它有相同 label 的节点到 beginPNode 的最小 NDS 距离小,移除这个点\n\n\n var ndsToCandidate = ndsDist[key] ? ndsDist[key] : getNDSDist(graphData, candidate, neighborNode, nodeMap, distToCandidate, kNeighborUnits, dsG, nodeLabelProp, edgeLabelProp, ndsDist, intGMap);\n var patternKey = \"\".concat(beginPNode.id, \"-\").concat(neighborLabel);\n var minNdsWithLabelInPattern = patternNDSDistMap[patternKey][patternNDSDistMap[patternKey].length - 1]; // patternNDSDist[key] 一定存在\n\n if (ndsToCandidate < minNdsWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune4: 若该邻居点的度数小于 pattern 同 label 节点最小度数,删去该点\n\n\n var _a = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _a.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _a.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _a.minPatternNodeLabelOutDegree;\n\n if (nodeMap[neighborNode.id].degree < minPatternNodeLabelDegree) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // 节点在个数上符合匹配(不少于 pattern 的节点个数),现在筛选相关边\n\n\n if (!unmatched) {\n candidateGraphs.push({\n nodes: [candidate].concat(neighborNodes)\n });\n }\n }); // console.log(\n // \"----- stage4: going to splice edges and neighbors for each candidate graph -------\"\n // );\n\n var undirectedLengthsToBeginPNode = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(pattern, beginPNode.id, false).length;\n var undirectedLengthsToBeginPNodeLabelMap = {};\n\n if (directed) {\n Object.keys(undirectedLengthsToBeginPNode).forEach(function (nodeId) {\n var nodeLabel = patternNodeMap[nodeId].node[nodeLabelProp];\n if (!undirectedLengthsToBeginPNodeLabelMap[nodeLabel]) undirectedLengthsToBeginPNodeLabelMap[nodeLabel] = [undirectedLengthsToBeginPNode[nodeId]];else undirectedLengthsToBeginPNodeLabelMap[nodeLabel].push(undirectedLengthsToBeginPNode[nodeId]);\n });\n Object.keys(undirectedLengthsToBeginPNodeLabelMap).forEach(function (pLabel) {\n undirectedLengthsToBeginPNodeLabelMap[pLabel].sort(function (a, b) {\n return a - b;\n });\n });\n } else {\n undirectedLengthsToBeginPNodeLabelMap = patternSpDist;\n } // 现在 candidateGraphs 里面只有节点,进行边的筛选\n\n\n var candidateGraphNum = candidateGraphs.length;\n\n var _loop_2 = function _loop_2(i) {\n var candidateGraph = candidateGraphs[i];\n var candidate = candidateGraph.nodes[0];\n var candidateNodeLabelCountMap = {};\n var candidateNodeMap = {};\n candidateGraph.nodes.forEach(function (node, q) {\n candidateNodeMap[node.id] = {\n idx: q,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var cNodeLabel = node[nodeLabelProp];\n if (!candidateNodeLabelCountMap[cNodeLabel]) candidateNodeLabelCountMap[cNodeLabel] = 1;else candidateNodeLabelCountMap[cNodeLabel]++;\n }); // 根据 candidate 和 neighborNodes 中的节点生成 G 的诱导子图\n // 即,将 graphData 上两端都在 candidateGraph.nodes 中的边放入 candidateEdges\n\n var candidateEdges = [];\n var edgeLabelCountMap = {};\n graphData.edges.forEach(function (edge) {\n if (candidateNodeMap[edge.source] && candidateNodeMap[edge.target]) {\n candidateEdges.push(edge);\n if (!edgeLabelCountMap[edge[edgeLabelProp]]) edgeLabelCountMap[edge[edgeLabelProp]] = 1;else edgeLabelCountMap[edge[edgeLabelProp]]++;\n candidateNodeMap[edge.source].degree++;\n candidateNodeMap[edge.target].degree++;\n candidateNodeMap[edge.source].outDegree++;\n candidateNodeMap[edge.target].inDegree++;\n }\n }); // prune:若有一个 edgeLabel 在 candidateGraph 上的个数少于 pattern,去除该图\n\n var pattenrEdgeLabelNum = Object.keys(patternEdgeLabelMap).length;\n var prunedByEdgeLabel = false;\n\n for (var e = 0; e < pattenrEdgeLabelNum; e++) {\n var label_1 = Object.keys(patternEdgeLabelMap)[e];\n\n if (!edgeLabelCountMap[label_1] || edgeLabelCountMap[label_1] < patternEdgeLabelMap[label_1].length) {\n prunedByEdgeLabel = true;\n break;\n }\n }\n\n if (prunedByEdgeLabel) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // 遍历 candidateEdges,进行边的筛选\n\n\n var candidateEdgeNum = candidateEdges.length; // prune:若边数过少,去除该图\n\n if (candidateEdgeNum < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"break\";\n }\n\n var candidateGraphInvalid = false;\n\n var _loop_5 = function _loop_5(e) {\n var edge = candidateEdges[e];\n var edgeLabel = edge[edgeLabelProp];\n var patternEdgesWithLabel = patternEdgeLabelMap[edgeLabel]; // prune 1: 若边的 label 不存在于 pattern 边 label 中,去除该边\n\n if (!patternEdgesWithLabel || !patternEdgesWithLabel.length) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n } // prune 2: 若边的 label +两端 label 的三元组关系不能在 pattern 中找到,去除该边\n\n\n var sourceLabel = candidateNodeMap[edge.source].node[nodeLabelProp];\n var targetLabel = candidateNodeMap[edge.target].node[nodeLabelProp];\n var edgeMatched = false;\n patternEdgesWithLabel.forEach(function (patternEdge) {\n var patternSource = patternNodeMap[patternEdge.source].node;\n var patternTarget = patternNodeMap[patternEdge.target].node;\n if (patternSource[nodeLabelProp] === sourceLabel && patternTarget[nodeLabelProp] === targetLabel) edgeMatched = true;\n if (!directed && patternSource[nodeLabelProp] === targetLabel && patternTarget[nodeLabelProp] === sourceLabel) edgeMatched = true;\n });\n\n if (!edgeMatched) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n }\n };\n\n for (var e = candidateEdgeNum - 1; e >= 0; e--) {\n var state_2 = _loop_5(e);\n\n if (state_2 === \"break\") break;\n } // prune2: 删除边的过程中,发现边数过少/边 label 数过少时,去除该图\n\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n candidateGraph.edges = candidateEdges;\n var lengthsToCandidate = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(candidateGraph, candidateGraph.nodes[0].id, false).length;\n Object.keys(lengthsToCandidate).reverse().forEach(function (targetId) {\n if (targetId === candidateGraph.nodes[0].id || candidateGraphInvalid) return; // prune4: 通过上述裁剪,可能导致该邻居子图变为不连通。裁剪掉目前在这个邻居子图中和 candidate(第一个节点)不连通的节点\n\n if (lengthsToCandidate[targetId] === Infinity) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n return;\n } // prune5: 经过边裁剪后,可能又出现了最短路径过长的节点 (比 pattern 中同 label 的节点到 beginNode 最大最短距离远),删去这些节点\n\n\n var nLabel = nodeMap[targetId].node[nodeLabelProp];\n\n if (!undirectedLengthsToBeginPNodeLabelMap[nLabel] || !undirectedLengthsToBeginPNodeLabelMap[nLabel].length || lengthsToCandidate[targetId] > undirectedLengthsToBeginPNodeLabelMap[nLabel][undirectedLengthsToBeginPNodeLabelMap[nLabel].length - 1]) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n }\n });\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n var degreeChanged = true;\n var loopCount = 0;\n\n while (degreeChanged && !candidateGraphInvalid) {\n degreeChanged = false; // candidate 度数不足,删去该图\n\n var condition = directed ? candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree || candidateNodeMap[candidate.id].inDegree < patternNodeMap[beginPNode.id].inDegree || candidateNodeMap[candidate.id].outDegree < patternNodeMap[beginPNode.id].outDegree : candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree;\n\n if (condition) {\n candidateGraphInvalid = true;\n break;\n } // candidate label 个数不足,删去该图\n\n\n if (candidateNodeLabelCountMap[candidate[nodeLabelProp]] < patternNodeLabelMap[candidate[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n } // prune6:去除度数过小的节点\n\n\n var currentCandidateNodeNum = candidateGraph.nodes.length;\n\n for (var o = currentCandidateNodeNum - 1; o >= 0; o--) {\n var cgNode = candidateGraph.nodes[o];\n var nodeDegree = candidateNodeMap[cgNode.id].degree;\n var nodeInDegree = candidateNodeMap[cgNode.id].inDegree;\n var nodeOutDegree = candidateNodeMap[cgNode.id].outDegree;\n var cNodeLabel = cgNode[nodeLabelProp];\n\n var _e = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, cNodeLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _e.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _e.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _e.minPatternNodeLabelOutDegree;\n\n var deleteCondition = directed ? nodeDegree < minPatternNodeLabelDegree || nodeInDegree < minPatternNodeLabelInDegree || nodeOutDegree < minPatternNodeLabelOutDegree : nodeDegree < minPatternNodeLabelDegree;\n\n if (deleteCondition) {\n candidateNodeLabelCountMap[cgNode[nodeLabelProp]]--; // 节点 label 个数不足\n\n if (candidateNodeLabelCountMap[cgNode[nodeLabelProp]] < patternNodeLabelMap[cgNode[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n candidateGraph.nodes.splice(o, 1);\n candidateNodeMap[cgNode.id] = undefined;\n degreeChanged = true;\n }\n }\n\n if (candidateGraphInvalid || !degreeChanged && loopCount !== 0) break; // 经过 prune5 节点裁剪,删去端点已经不在 candidateGraph 中的边\n\n candidateEdgeNum = candidateEdges.length;\n\n for (var y = candidateEdgeNum - 1; y >= 0; y--) {\n var cedge = candidateEdges[y];\n\n if (!candidateNodeMap[cedge.source] || !candidateNodeMap[cedge.target]) {\n candidateEdges.splice(y, 1);\n var edgeLabel = cedge[edgeLabelProp];\n edgeLabelCountMap[edgeLabel]--;\n\n if (candidateNodeMap[cedge.source]) {\n candidateNodeMap[cedge.source].degree--;\n candidateNodeMap[cedge.source].outDegree--;\n }\n\n if (candidateNodeMap[cedge.target]) {\n candidateNodeMap[cedge.target].degree--;\n candidateNodeMap[cedge.target].inDegree--;\n } // 边 label 数量不足\n\n\n if (patternEdgeLabelMap[edgeLabel] && edgeLabelCountMap[edgeLabel] < patternEdgeLabelMap[edgeLabel].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n degreeChanged = true;\n }\n }\n\n loopCount++;\n }\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // prune: 若节点/边数过少,节点/边 label 过少,去掉这个图\n\n\n if (candidateGraphInvalid || candidateGraph.nodes.length < pattern.nodes.length || candidateEdges.length < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n };\n\n for (var i = candidateGraphNum - 1; i >= 0; i--) {\n var state_1 = _loop_2(i);\n\n if (state_1 === \"break\") break;\n } // 此时已经生成的多个 candidateGraphs,可能有重复\n // console.log(\n // \"----- stage5: going to splice dulplicated candidate graphs -------\"\n // );\n // 删去 candidateGraphs 中一模一样的子图,通过边的 node-node-edgeLabel 作为 key,这类边个数作为 value,进行匹配\n\n\n var currentLength = candidateGraphs.length;\n\n var _loop_3 = function _loop_3(i) {\n var cg1 = candidateGraphs[i];\n var cg1EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg1.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg1EdgeMap[key]) cg1EdgeMap[key] = 1;else cg1EdgeMap[key]++;\n });\n\n var _loop_6 = function _loop_6(j) {\n var cg2 = candidateGraphs[j];\n var cg2EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg2.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg2EdgeMap[key]) cg2EdgeMap[key] = 1;else cg2EdgeMap[key]++;\n });\n var same = true;\n\n if (Object.keys(cg2EdgeMap).length !== Object.keys(cg1EdgeMap).length) {\n same = false;\n } else {\n Object.keys(cg1EdgeMap).forEach(function (key) {\n if (cg2EdgeMap[key] !== cg1EdgeMap[key]) same = false;\n });\n }\n\n if (same) {\n candidateGraphs.splice(j, 1);\n }\n };\n\n for (var j = currentLength - 1; j > i; j--) {\n _loop_6(j);\n }\n\n currentLength = candidateGraphs.length;\n };\n\n for (var i = 0; i <= currentLength - 1; i++) {\n _loop_3(i);\n }\n\n return candidateGraphs;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (GADDI);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2dhZGRpLmpzPzQwYTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNDO0FBQ007QUFDVjtBQUNBO0FBQ0E7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qjs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBLDhDQUE4QztBQUM5QyxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUCxnREFBZ0Q7O0FBRWhEO0FBQ0E7O0FBRUEsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBLGtEQUFrRDs7QUFFbEQ7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Qsa0JBQWtCLGdDQUFnQztBQUN4RztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLHlCQUF5Qjs7QUFFekIsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsb0NBQW9DOztBQUVwQyx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSyxFQUFFOztBQUVQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLHNCQUFzQiw4Q0FBUTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLFlBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZGQUE2Rjs7QUFFN0Y7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkIsWUFBWSw4REFBYSxzQkFBc0I7QUFDL0M7QUFDQTs7QUFFQSxtQkFBbUIsOERBQWEsb0JBQW9CO0FBQ3BEO0FBQ0E7O0FBRUEseURBQXlEO0FBQ3pEO0FBQ0E7O0FBRUEscUVBQXFFO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOzs7QUFHNUM7QUFDQSxtR0FBbUc7O0FBRW5HO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCw2Q0FBNkMsMkRBQWEsQ0FBQywyREFBYTtBQUN4RSxxQkFBcUI7QUFDckI7QUFDQTs7QUFFQTtBQUNBLHdGQUF3RjtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0RkFBNEY7QUFDNUY7QUFDQTtBQUNBLGtDQUFrQyw0QkFBNEI7O0FBRTlELDBGQUEwRjs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNCQUFzQiw0REFBSyx1QkFBdUI7O0FBRWxELDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFDQUFxQztBQUNyQzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFO0FBQ0w7O0FBRUEsd0NBQXdDOztBQUV4Qyw2QkFBNkI7QUFDN0IseUJBQXlCO0FBQ3pCO0FBQ0EseUJBQXlCO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSyxFQUFFO0FBQ1A7QUFDQTs7QUFFQSxrSUFBa0k7O0FBRWxJO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQsbUdBQW1HOztBQUVuRztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxxQkFBcUIsc0JBQXNCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMsUUFBUTtBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNILDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJEO0FBQ0E7O0FBRUEsaUNBQWlDLFFBQVE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNEQUFzRDs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxRUFBcUU7O0FBRXJFO0FBQ0E7QUFDQSx3RUFBd0U7O0FBRXhFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsNkdBQTZHOztBQUU3RztBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUcsRUFBRTtBQUNMO0FBQ0E7O0FBRUEsc0NBQXNDLHlEQUFRO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdKQUF3SjtBQUN4SixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEZBQThGO0FBQzlGLEtBQUssRUFBRTtBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnR0FBZ0c7QUFDaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBOztBQUVBLG1CQUFtQix5QkFBeUI7QUFDNUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTCxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTs7QUFFakU7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNDQUFzQyxRQUFRO0FBQzlDOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIseURBQVE7QUFDckM7QUFDQSxtRkFBbUY7O0FBRW5GO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRCQUE0Qjs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUEsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDhEQUE4RDs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0RUFBNEU7O0FBRTVFOztBQUVBLHdDQUF3QyxRQUFRO0FBQ2hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTs7QUFFQTtBQUNBOztBQUVlLG9FQUFLIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9nYWRkaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBmbG95ZFdhcnNoYWxsIGZyb20gJy4vZmxveWRXYXJzaGFsbCc7XG5pbXBvcnQgZ1NwYW4gZnJvbSAnLi9nU3Bhbi9nU3Bhbic7XG5pbXBvcnQgZGlqa3N0cmEgZnJvbSAnLi9kaWprc3RyYSc7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJy4vdXRpbCc7XG4vKipcbiAqIOS4uiBncmFwaERhdGEg5Lit5q+P5Liq6IqC54K555Sf5oiQ6YK75bGF5Y2V5YWD5pWw57uEXG4gKiBAcGFyYW0gZ3JhcGhEYXRhXG4gKiBAcGFyYW0gc3BtXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcFxuICogQHBhcmFtIGsgay3ov5HpgrtcbiAqL1xuXG52YXIgZmluZEtOZWlnaGJvclVuaXRzID0gZnVuY3Rpb24gZmluZEtOZWlnaGJvclVuaXRzKGdyYXBoRGF0YSwgc3BtLCBub2RlTGFiZWxQcm9wLCBrKSB7XG4gIGlmIChub2RlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBub2RlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKGsgPT09IHZvaWQgMCkge1xuICAgIGsgPSAyO1xuICB9XG5cbiAgdmFyIHVuaXRzID0gW107XG4gIHZhciBub2RlcyA9IGdyYXBoRGF0YS5ub2RlcztcbiAgc3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHVuaXRzLnB1c2goZmluZEtOZWlnaGJvclVuaXQobm9kZXMsIHJvdywgaSwgbm9kZUxhYmVsUHJvcCwgaykpO1xuICB9KTtcbiAgcmV0dXJuIHVuaXRzO1xufTtcblxudmFyIGZpbmRLTmVpZ2hib3JVbml0ID0gZnVuY3Rpb24gZmluZEtOZWlnaGJvclVuaXQobm9kZXMsIHJvdywgaSwgbm9kZUxhYmVsUHJvcCwgaykge1xuICB2YXIgdW5pdE5vZGVJZHhzID0gW2ldO1xuICB2YXIgbmVpZ2hib3JzID0gW107XG4gIHZhciBsYWJlbENvdW50TWFwID0ge307XG4gIHJvdy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBqKSB7XG4gICAgaWYgKHYgPD0gayAmJiBpICE9PSBqKSB7XG4gICAgICB1bml0Tm9kZUlkeHMucHVzaChqKTtcbiAgICAgIG5laWdoYm9ycy5wdXNoKG5vZGVzW2pdKTtcbiAgICAgIHZhciBsYWJlbCA9IG5vZGVzW2pdW25vZGVMYWJlbFByb3BdO1xuICAgICAgaWYgKCFsYWJlbENvdW50TWFwW2xhYmVsXSkgbGFiZWxDb3VudE1hcFtsYWJlbF0gPSB7XG4gICAgICAgIGNvdW50OiAxLFxuICAgICAgICBkaXN0czogW3ZdXG4gICAgICB9O2Vsc2Uge1xuICAgICAgICBsYWJlbENvdW50TWFwW2xhYmVsXS5jb3VudCsrO1xuICAgICAgICBsYWJlbENvdW50TWFwW2xhYmVsXS5kaXN0cy5wdXNoKHYpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7IC8vIOWwhiBsYWJlbENvdW50TWFwIOS4reeahCBkaXN0cyDmjInnhafku47lsI/liLDlpKfmjpLluo/vvIzmlrnkvr/lkI7pnaLkvb/nlKhcblxuICBPYmplY3Qua2V5cyhsYWJlbENvdW50TWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbCkge1xuICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmRpc3RzID0gbGFiZWxDb3VudE1hcFtsYWJlbF0uZGlzdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBub2RlSWR4OiBpLFxuICAgIG5vZGVJZDogbm9kZXNbaV0uaWQsXG4gICAgbm9kZUlkeHM6IHVuaXROb2RlSWR4cyxcbiAgICBuZWlnaGJvcnM6IG5laWdoYm9ycyxcbiAgICBuZWlnaGJvck51bTogdW5pdE5vZGVJZHhzLmxlbmd0aCAtIDEsXG4gICAgbm9kZUxhYmVsQ291bnRNYXA6IGxhYmVsQ291bnRNYXBcbiAgfTtcbn07XG4vKipcbiAqIOmaj+acuuWvu+aJvueCueWvue+8jOa7oei2s+i3neemu+Wwj+S6jiBrXG4gKiBAcGFyYW0gayDlj4LmlbAga++8jOihqOekuiBrLei/kemCu1xuICogQHBhcmFtIG5vZGVOdW0g5Y+C5pWwIGxlbmd0aFxuICogQHBhcmFtIG1heE5vZGVQYWlyTnVtIOWvu+aJvueCueWvueeahOaVsOmHj+S4jei2hei/hyBtYXhOb2RlUGFpck51bVxuICogQHBhcmFtIHNwbSDmnIDnn63ot6/lvoTnn6npmLVcbiAqL1xuXG5cbnZhciBmaW5kTm9kZVBhaXJzUmFuZG9tbHkgPSBmdW5jdGlvbiBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIGtOZWlnaGJvclVuaXRzLCBzcG0pIHtcbiAgLy8g5q+P5Liq6IqC54K56ZyA6KaB6ZqP5py65om+5Ye655qE54K55a+55pWwXG4gIHZhciBub2RlUGFpck51bUVhY2hOb2RlID0gTWF0aC5jZWlsKG1heE5vZGVQYWlyTnVtIC8gbm9kZU51bSk7XG4gIHZhciBub2RlUGFpck1hcCA9IHt9O1xuICB2YXIgZm91bmROb2RlUGFpckNvdW50ID0gMDsgLy8g6YGN5Y6G6IqC54K577yM5Li65q+P5Liq6IqC54K56ZqP5py65om+5Ye6IG5vZGVQYWlyTnVtRWFjaE5vZGUg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIGvjgILmib7liLDnmoTngrnlr7nmlbDph4/otoXov4cgbWF4Tm9kZVBhaXJOdW0g5oiW5omA5pyJ6IqC54K56YGN5Y6G57uT5p2f5pe257uI5q2iXG5cbiAga05laWdoYm9yVW5pdHMuZm9yRWFjaChmdW5jdGlvbiAodW5pdCwgaSkge1xuICAgIC8vIOiLpeacqui+vuWIsCBub2RlUGFpck51bUVhY2hOb2Rl77yM5oiW5b6q546v5qyh5pWw5bCP5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKe+8jOe7p+e7reW+queOr1xuICAgIHZhciBub2RlUGFpckZvcklDb3VudCA9IDA7XG4gICAgdmFyIG91dGVyTG9vcENvdW50ID0gMDtcbiAgICB2YXIgbmVpZ2hib3JzID0gdW5pdC5ub2RlSWR4czsgLy8gdGhlIGZpcnN0IG9uZSBpcyB0aGUgY2VudGVyIG5vZGVcblxuICAgIHZhciBuZWlnaGJvck51bSA9IHVuaXQubmVpZ2hib3JOdW0gLSAxO1xuXG4gICAgd2hpbGUgKG5vZGVQYWlyRm9ySUNvdW50IDwgbm9kZVBhaXJOdW1FYWNoTm9kZSkge1xuICAgICAgLy8g5Y+m5LiA56uv6IqC54K55Zyo6IqC54K55pWw57uE5Lit55qE55qEIGluZGV4XG4gICAgICB2YXIgb2lkeCA9IG5laWdoYm9yc1sxICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbmVpZ2hib3JOdW0pXTtcbiAgICAgIHZhciBpbm5lckxvb3BDb3VudCA9IDA7IC8vIOiLpemaj+acuuW+l+WIsOeahOWPpuS4gOerryBpZHgg5LiN56ym5ZCI5p2h5Lu277yM5YiZ57un57utIHJhbmRvbeOAguadoeS7tuaYr+S4jeaYr+WQjOS4gOS4quiKgueCueOAgei/meS4queCueWvueayoeacieiiq+iusOW9lei/h+OAgei3neemu+Wwj+S6jiBrXG5cbiAgICAgIHdoaWxlIChub2RlUGFpck1hcFtcIlwiLmNvbmNhdChpLCBcIi1cIikuY29uY2F0KG9pZHgpXSB8fCBub2RlUGFpck1hcFtcIlwiLmNvbmNhdChvaWR4LCBcIi1cIikuY29uY2F0KGkpXSkge1xuICAgICAgICBvaWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbm9kZU51bSk7XG4gICAgICAgIGlubmVyTG9vcENvdW50Kys7XG4gICAgICAgIGlmIChpbm5lckxvb3BDb3VudCA+IDIgKiBub2RlTnVtKSBicmVhazsgLy8g5b6q546v5qyh5pWw5aSn5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKei3s+WHuuW+queOr++8jOmBv+WFjeatu+W+queOr1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5uZXJMb29wQ291bnQgPCAyICogbm9kZU51bSkge1xuICAgICAgICAvLyDmnKrovr7liLDmnIDlpKflvqrnjq/mrKHmlbDvvIzor7TmmI7mib7liLDkuoblkIjpgILnmoTlj6bkuIDnq69cbiAgICAgICAgbm9kZVBhaXJNYXBbXCJcIi5jb25jYXQoaSwgXCItXCIpLmNvbmNhdChvaWR4KV0gPSB7XG4gICAgICAgICAgc3RhcnQ6IGksXG4gICAgICAgICAgZW5kOiBvaWR4LFxuICAgICAgICAgIGRpc3RhbmNlOiBzcG1baV1bb2lkeF1cbiAgICAgICAgfTtcbiAgICAgICAgbm9kZVBhaXJGb3JJQ291bnQrKztcbiAgICAgICAgZm91bmROb2RlUGFpckNvdW50Kys7IC8vIOWmguaenOW9k+WJjeaJvuWIsOeahOeCueWvueaVsOmHj+i+vuWIsOS6huS4iumZkO+8jOi/lOWbnue7k+aenFxuXG4gICAgICAgIGlmIChmb3VuZE5vZGVQYWlyQ291bnQgPj0gbWF4Tm9kZVBhaXJOdW0pIHJldHVybiBub2RlUGFpck1hcDtcbiAgICAgIH1cblxuICAgICAgb3V0ZXJMb29wQ291bnQrKztcbiAgICAgIGlmIChvdXRlckxvb3BDb3VudCA+IDIgKiBub2RlTnVtKSBicmVhazsgLy8g5b6q546v5qyh5pWw5aSn5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKei3s+WHuuW+queOr++8jOmBv+WFjeatu+W+queOr1xuICAgIH0gLy8g6L+Z5Liq6IqC54K55rKh5pyJ5om+5Yiw6Laz5aSfIG5vZGVQYWlyTnVtRWFjaE5vZGUg55qE54K55a+544CC5pu05pawIG5vZGVQYWlyTnVtRWFjaE5vZGXvvIzorqnlkI7nu63oioLngrnmib7mm7TlpJrnmoTngrnlr7lcblxuXG4gICAgaWYgKG5vZGVQYWlyRm9ySUNvdW50IDwgbm9kZVBhaXJOdW1FYWNoTm9kZSkge1xuICAgICAgdmFyIGdhcCA9IG5vZGVQYWlyTnVtRWFjaE5vZGUgLSBub2RlUGFpckZvcklDb3VudDtcbiAgICAgIG5vZGVQYWlyTnVtRWFjaE5vZGUgPSAobm9kZVBhaXJOdW1FYWNoTm9kZSArIGdhcCkgLyAobm9kZU51bSAtIGkgLSAxKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbm9kZVBhaXJNYXA7XG59O1xuLyoqXG4gKiDorqHnrpfmiYDmnIkgbm9kZVBhaXJNYXAg5Lit6IqC54K55a+555qE55u45Lqk6YK75bGF6K+x5a+85a2Q5Zu+XG4gKiBAcGFyYW0gbm9kZVBhaXJNYXAg6IqC54K55a+5IG1hcO+8jGtleSDkuLogbm9kZTEuaWQtbm9kZTIuaWTvvIx2YWx1ZSDkuLogeyBzdGFydE5vZGVJZHgsIGVuZE5vZGVJZHgsIGRpc3RhbmNlIH1cbiAqIEBwYXJhbSBuZWlnaGJvclVuaXRzIOavj+S4quiKgueCueeahOmCu+WxheWFg+aVsOe7hFxuICogQHBhcmFtIGdyYXBoRGF0YSDljp/lm77mlbDmja5cbiAqIEBwYXJhbSBlZGdlTWFwIOi+ueeahCBtYXDvvIzmlrnkvr/mo4DntKJcbiAqIEBwYXJhbSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXAg57yT5a2Y55qE57uT5p6c77yM5LiL5qyh6L+b5YWl6K+l5Ye95pWw5bCG57un57ut5pu05paw6K+l57yT5a2Y77yM6IulIGtleSDlnKjnvJPlrZjkuK3lrZjlnKjliJnkuI3pnIDopoHph43lpI3orqHnrpdcbiAqL1xuXG5cbnZhciBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaCA9IGZ1bmN0aW9uIGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKG5vZGVQYWlyTWFwLCBuZWlnaGJvclVuaXRzLCBncmFwaERhdGEsIGNhY2hlZEluZHVjZWRHcmFwaE1hcCkge1xuICB2YXIgbm9kZXMgPSBncmFwaERhdGEubm9kZXM7XG4gIGlmICghY2FjaGVkSW5kdWNlZEdyYXBoTWFwKSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXAgPSB7fTtcbiAgT2JqZWN0LmtleXMobm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBfYSwgX2I7XG5cbiAgICBpZiAoY2FjaGVkSW5kdWNlZEdyYXBoTWFwICYmIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldKSByZXR1cm47XG4gICAgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0gPSB7XG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW11cbiAgICB9O1xuICAgIHZhciBwYWlyID0gbm9kZVBhaXJNYXBba2V5XTtcbiAgICB2YXIgc3RhcnRVbml0Tm9kZUlkcyA9IChfYSA9IG5laWdoYm9yVW5pdHNbcGFpci5zdGFydF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5ub2RlSWR4cztcbiAgICB2YXIgZW5kVW5pdE5vZGVJZHMgPSAoX2IgPSBuZWlnaGJvclVuaXRzW3BhaXIuZW5kXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5vZGVJZHhzO1xuICAgIGlmICghc3RhcnRVbml0Tm9kZUlkcyB8fCAhZW5kVW5pdE5vZGVJZHMpIHJldHVybjsgLy8g5LiN5a2Y5Zyo6YK75YWD77yM6L+U5Zue56m65Zu+XG5cbiAgICB2YXIgZW5kU2V0ID0gbmV3IFNldChlbmRVbml0Tm9kZUlkcyk7XG4gICAgdmFyIGludGVyc2VjdCA9IHN0YXJ0VW5pdE5vZGVJZHMuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gZW5kU2V0Lmhhcyh4KTtcbiAgICB9KTsgLy8g5Y+v6IO95Lya54iG5qCI77yI5ZyoIDE1ODAgKyA2IG5vZGVzIGZ1bGwtY29ubmVjdGVkIOaXtuWHuueOsO+8iVxuXG4gICAgaWYgKCFpbnRlcnNlY3QgfHwgIWludGVyc2VjdC5sZW5ndGgpIHJldHVybjsgLy8g5rKh5pyJ5Lqk6ZuG77yM6L+U5Zue56m65Zu+XG5cbiAgICB2YXIgaW50ZXJzZWN0SWRNYXAgPSB7fTtcbiAgICB2YXIgaW50ZXJzZWN0TGVuZ3RoID0gaW50ZXJzZWN0Lmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW50ZXJzZWN0TGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaW50ZXJzZWN0W2ldXTtcbiAgICAgIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldLm5vZGVzLnB1c2gobm9kZSk7IC8vIOWwhuS6pOmbhuS4reeahOeCueWKoOWFpeivseWvvOWtkOWbvlxuXG4gICAgICBpbnRlcnNlY3RJZE1hcFtub2RlLmlkXSA9IHRydWU7XG4gICAgfSAvLyDpgY3ljobmiYDmnInovrnmlbDmja7vvIzlpoLmnpzovrnnmoTkuKTnq6/pg73lnKjkuqTpm4bkuK3vvIzlsIbor6XovrnliqDlhaXor7Hlr7zlrZDlm75cblxuXG4gICAgZ3JhcGhEYXRhLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGlmIChpbnRlcnNlY3RJZE1hcFtlZGdlLnNvdXJjZV0gJiYgaW50ZXJzZWN0SWRNYXBbZWRnZS50YXJnZXRdKSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXBba2V5XS5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGNhY2hlZEluZHVjZWRHcmFwaE1hcDtcbn07XG4vKipcbiAqIOiuoeeulyBzdHJjdXRyZSDlnKggZ3JhcGgg5LiK55qE5Yy56YWN5pWw6YePXG4gKiBAcGFyYW0gZ3JhcGgg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RydWN0dXJlIOebruWJjeaUr+aMgeWPquacieS4pOS4quiKgueCueS4gOadoei+ueeahOacgOeugOWNlee7k+aehFxuICogQHBhcmFtIG5vZGVMYWJlbFByb3Ag6IqC54K557G75Z6L5a2X5q615ZCNXG4gKiBAcGFyYW0gZWRnZUxhYmVsUHJvcCDovrnnsbvlnovlrZfmrrXlkI1cbiAqL1xuXG5cbnZhciBnZXRNYXRjaGVkQ291bnQgPSBmdW5jdGlvbiBnZXRNYXRjaGVkQ291bnQoZ3JhcGgsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgX2EsIF9iO1xuXG4gIHZhciBub2RlTWFwID0ge307XG4gIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBub2RlTWFwW25vZGUuaWRdID0gbm9kZTtcbiAgfSk7XG4gIHZhciBjb3VudCA9IDA7XG4gIGlmICghKChfYSA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5lZGdlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgfHwgKChfYiA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5ub2RlcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgPCAyKSByZXR1cm4gMDtcbiAgZ3JhcGguZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgIHZhciBzb3VyY2VMYWJlbCA9IG5vZGVNYXBbZS5zb3VyY2VdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciB0YXJnZXRMYWJlbCA9IG5vZGVNYXBbZS50YXJnZXRdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJOb2RlTGFiZWwxID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzWzBdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJOb2RlTGFiZWwyID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzWzFdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJFZGdlTGFiZWwgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUuZWRnZXNbMF1bZWRnZUxhYmVsUHJvcF07XG4gICAgaWYgKGVbZWRnZUxhYmVsUHJvcF0gIT09IHN0ckVkZ2VMYWJlbCkgcmV0dXJuO1xuXG4gICAgaWYgKHNvdXJjZUxhYmVsID09PSBzdHJOb2RlTGFiZWwxICYmIHRhcmdldExhYmVsID09PSBzdHJOb2RlTGFiZWwyIHx8IHNvdXJjZUxhYmVsID09PSBzdHJOb2RlTGFiZWwyICYmIHRhcmdldExhYmVsID09PSBzdHJOb2RlTGFiZWwxKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjb3VudDtcbn07XG4vKipcbiAqIHN0cnVjdHVyZXMg5Lit5a+75om+5pyA5YW35pyJ5Luj6KGo5oCn55qE5LiA5Liq44CC6L+Z5Liq57uT5p6E5piv5L2/5b6XIG1hdGNoZWRDb3VudE1hcCDnmoTliIbnu4TmlrnlvI/nsbvlhoXpl7Tot53mnIDlsI/vvIznsbvpl7Tpl7Tot53mnIDlpKdcbiAqIEBwYXJhbSBtYXRjaGVkQ291bnRNYXAg5q+P5LiqIHN0cnVjdHVyZSDliIbnsbvlkI7nmoTlkITlm77ljLnphY3mlbDph4/vvIzmoLzlvI8geyBbc3RyY3R1cmUuaWR4XTogeyBbaW50ZXJJbmR1Y2VkR3JhcGhLZXldOiBjb3VudCB9IH1cbiAqIEBwYXJhbSBzdHJ1Y3R1cmVOdW0gc3RyY3V0dXJlIOS4quaVsO+8jOS4jiBtYXRjaGVkQ291bnRNYXAubGVuZ3RoIOWvueW6lFxuICogQHBhcmFtIHN0cnVjdHVyZXNcbiAqL1xuXG5cbnZhciBmaW5kUmVwcmVzZW50U3RydWN0dXJlID0gZnVuY3Rpb24gZmluZFJlcHJlc2VudFN0cnVjdHVyZShtYXRjaGVkQ291bnRNYXAsIHN0cnVjdHVyZU51bSwgc3RydWN0dXJlcykge1xuICB2YXIgbWF4T2Zmc2V0ID0gSW5maW5pdHksXG4gICAgICByZXByZXNlbnRDbHVzdGVyVHlwZSA9IDA7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKGkpIHtcbiAgICAvLyDkuIDnp43liIbnu4TnmoQgbWFw77yMa2V5IOaYryBpbnRHcmFwaCDnmoQga2V577yMdmFsdWUg5pivIHN0cnVjdHVyZXNbaV0g55qE5Yy56YWN5Liq5pWwXG4gICAgdmFyIGNvdW50TWFwSSA9IG1hdGNoZWRDb3VudE1hcFtpXTsgLy8g5oyJ54WnIHZhbHVlIOS4uuivpee7hOaOkuW6j++8jOeUn+aIkCBrZXlzIOeahOaVsOe7hO+8mlxuXG4gICAgdmFyIHNvcnRlZEdyYXBoS2V5cyA9IE9iamVjdC5rZXlzKGNvdW50TWFwSSkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGNvdW50TWFwSVthXSAtIGNvdW50TWFwSVtiXTtcbiAgICB9KTsgLy8g5YWxIDEwMCDkuKogZ3JhcGhLZXlz77yM5bCGIGdyYXBoS2V5cyDmjInpobrluo/liIbkuLogZ3JvdXBOdW0g57uEXG5cbiAgICB2YXIgZ3JvdXBOdW0gPSAxMDtcbiAgICB2YXIgY2x1c3RlcnMgPSBbXTsgLy8g5oC75YWx5pyJIGdyb3VwTnVtIOS4qumhuVxuXG4gICAgc29ydGVkR3JhcGhLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSwgaikge1xuICAgICAgaWYgKCFjbHVzdGVyc1tqICUgZ3JvdXBOdW1dKSBjbHVzdGVyc1tqICUgZ3JvdXBOdW1dID0ge1xuICAgICAgICBncmFwaHM6IFtdLFxuICAgICAgICB0b3RhbENvdW50OiAwLFxuICAgICAgICBhdmVDb3VudDogMFxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJzW2ogJSBncm91cE51bV0uZ3JhcGhzLnB1c2goa2V5KTtcbiAgICAgIGNsdXN0ZXJzW2ogJSBncm91cE51bV0udG90YWxDb3VudCArPSBjb3VudE1hcElba2V5XTtcbiAgICB9KTsgLy8g6K6h566XIGNsdXN0ZXIg5LiOIGNsdXN0ZXIg5LmL6Ze055qE6Led56a7IGlubmVyRGlzdO+8jOavj+S4qiBjbHVzdGVyIOWGhemDqOeahOi3neemuyBpbnRyYURpc3RcblxuICAgIHZhciBhdmVJbnRyYURpc3QgPSAwOyAvLyDor6XnsbvnmoTnsbvlhoXlubPlnYflgLxcblxuICAgIHZhciBhdmVDb3VudHMgPSBbXTsgLy8g57G75YaF5bmz5Z2H5Yy56YWN5pWw6YeP77yM5bCG55So5LqO6K6h566X57G76Ze06Led56a7XG5cbiAgICBjbHVzdGVycy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaHNJbkNsdXN0ZXIpIHtcbiAgICAgIC8vIOexu+WGheWdh+WAvFxuICAgICAgdmFyIGF2ZUNvdW50ID0gZ3JhcGhzSW5DbHVzdGVyLnRvdGFsQ291bnQgLyBncmFwaHNJbkNsdXN0ZXIuZ3JhcGhzLmxlbmd0aDtcbiAgICAgIGdyYXBoc0luQ2x1c3Rlci5hdmVDb3VudCA9IGF2ZUNvdW50O1xuICAgICAgYXZlQ291bnRzLnB1c2goYXZlQ291bnQpOyAvLyDlr7nkuo7mr4/nsbvvvIzorqHnrpfnsbvlhoXpl7Tot53lubPlnYflgLxcblxuICAgICAgdmFyIGF2ZUludHJhUGVyQ2x1c3RlciA9IDA7XG4gICAgICB2YXIgZ3JhcGhzTnVtID0gZ3JhcGhzSW5DbHVzdGVyLmxlbmd0aDtcbiAgICAgIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhLZXkxLCBqKSB7XG4gICAgICAgIHZhciBncmFwaDFDb3VudCA9IGNvdW50TWFwSVtncmFwaEtleTFdO1xuICAgICAgICBncmFwaHNJbkNsdXN0ZXIuZ3JhcGhzLmZvckVhY2goZnVuY3Rpb24gKGdyYXBoS2V5Miwgaykge1xuICAgICAgICAgIGlmIChqID09PSBrKSByZXR1cm47XG4gICAgICAgICAgYXZlSW50cmFQZXJDbHVzdGVyICs9IE1hdGguYWJzKGdyYXBoMUNvdW50IC0gY291bnRNYXBJW2dyYXBoS2V5Ml0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgYXZlSW50cmFQZXJDbHVzdGVyIC89IGdyYXBoc051bSAqIChncmFwaHNOdW0gLSAxKSAvIDI7XG4gICAgICBhdmVJbnRyYURpc3QgKz0gYXZlSW50cmFQZXJDbHVzdGVyO1xuICAgIH0pO1xuICAgIGF2ZUludHJhRGlzdCAvPSBjbHVzdGVycy5sZW5ndGg7IC8vIOeUqOexu+WGheWdh+WAvOiuoeeul+exu+mXtOi3nVxuXG4gICAgdmFyIGF2ZUludGVyRGlzdCA9IDA7IC8vIOexu+mXtOmXtOi3neW5s+Wdh+WAvFxuXG4gICAgYXZlQ291bnRzLmZvckVhY2goZnVuY3Rpb24gKGF2ZUNvdW50MSwgaikge1xuICAgICAgYXZlQ291bnRzLmZvckVhY2goZnVuY3Rpb24gKGF2ZUNvdW50Miwgaykge1xuICAgICAgICBpZiAoaiA9PT0gaykgcmV0dXJuO1xuICAgICAgICBhdmVJbnRlckRpc3QgKz0gTWF0aC5hYnMoYXZlQ291bnQxIC0gYXZlQ291bnQyKTtcbiAgICAgIH0pO1xuICAgICAgYXZlSW50ZXJEaXN0IC89IGF2ZUNvdW50cy5sZW5ndGggKiAoYXZlQ291bnRzLmxlbmd0aCAtIDEpIC8gMjtcbiAgICB9KTsgLy8g5a+75om+ICjnsbvpl7Tpl7Tot53lnYflgLwt57G75YaF6Ze06Led5Z2H5YC8KSDmnIDlpKfnmoTkuIDnp43liIbnu4TmlrnlvI/vvIjlr7nlupTnmoQgc3RydWN0dXJlIOWwseaYr+acgOe7iOimgeaJvueahOWUr+S4gCBEUyhHKe+8iVxuXG4gICAgdmFyIG9mZnNldCA9IGF2ZUludGVyRGlzdCAtIGF2ZUludHJhRGlzdDtcblxuICAgIGlmIChtYXhPZmZzZXQgPCBvZmZzZXQpIHtcbiAgICAgIG1heE9mZnNldCA9IG9mZnNldDtcbiAgICAgIHJlcHJlc2VudENsdXN0ZXJUeXBlID0gaTtcbiAgICB9XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJ1Y3R1cmVOdW07IGkrKykge1xuICAgIF9sb29wXzEoaSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0cnVjdHVyZTogc3RydWN0dXJlc1tyZXByZXNlbnRDbHVzdGVyVHlwZV0sXG4gICAgc3RydWN0dXJlQ291bnRNYXA6IG1hdGNoZWRDb3VudE1hcFtyZXByZXNlbnRDbHVzdGVyVHlwZV1cbiAgfTtcbn07XG5cbnZhciBnZXROb2RlTWFwcyA9IGZ1bmN0aW9uIGdldE5vZGVNYXBzKG5vZGVzLCBub2RlTGFiZWxQcm9wKSB7XG4gIHZhciBub2RlTWFwID0ge30sXG4gICAgICBub2RlTGFiZWxNYXAgPSB7fTtcbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBpZHg6IGksXG4gICAgICBub2RlOiBub2RlLFxuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICAgIHZhciBsYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgaWYgKCFub2RlTGFiZWxNYXBbbGFiZWxdKSBub2RlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgbm9kZUxhYmVsTWFwW2xhYmVsXS5wdXNoKG5vZGUpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBub2RlTWFwOiBub2RlTWFwLFxuICAgIG5vZGVMYWJlbE1hcDogbm9kZUxhYmVsTWFwXG4gIH07XG59O1xuXG52YXIgZ2V0RWRnZU1hcHMgPSBmdW5jdGlvbiBnZXRFZGdlTWFwcyhlZGdlcywgZWRnZUxhYmVsUHJvcCwgbm9kZU1hcCkge1xuICB2YXIgZWRnZU1hcCA9IHt9LFxuICAgICAgZWRnZUxhYmVsTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UsIGkpIHtcbiAgICBlZGdlTWFwW1wiXCIuY29uY2F0KHVuaXF1ZUlkKV0gPSB7XG4gICAgICBpZHg6IGksXG4gICAgICBlZGdlOiBlZGdlXG4gICAgfTtcbiAgICB2YXIgbGFiZWwgPSBlZGdlW2VkZ2VMYWJlbFByb3BdO1xuICAgIGlmICghZWRnZUxhYmVsTWFwW2xhYmVsXSkgZWRnZUxhYmVsTWFwW2xhYmVsXSA9IFtdO1xuICAgIGVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChlZGdlKTtcbiAgICB2YXIgc291cmNlTm9kZSA9IG5vZGVNYXBbZWRnZS5zb3VyY2VdO1xuXG4gICAgaWYgKHNvdXJjZU5vZGUpIHtcbiAgICAgIHNvdXJjZU5vZGUuZGVncmVlKys7XG4gICAgICBzb3VyY2VOb2RlLm91dERlZ3JlZSsrO1xuICAgIH1cblxuICAgIHZhciB0YXJnZXROb2RlID0gbm9kZU1hcFtlZGdlLnRhcmdldF07XG5cbiAgICBpZiAodGFyZ2V0Tm9kZSkge1xuICAgICAgdGFyZ2V0Tm9kZS5kZWdyZWUrKztcbiAgICAgIHRhcmdldE5vZGUuaW5EZWdyZWUrKztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGVkZ2VNYXA6IGVkZ2VNYXAsXG4gICAgZWRnZUxhYmVsTWFwOiBlZGdlTGFiZWxNYXBcbiAgfTtcbn07XG4vKipcbiAqIOi+k+WHuuacgOefrei3r+W+hOeahCBtYXDvvIxrZXkg5Li6IHNvdXJjZU5vZGUuaWQtdGFyZ2V0Tm9kZS5pZO+8jHZhbHVlIOS4uui/meS4pOS4quiKgueCueeahOacgOefrei3r+W+hOmVv+W6plxuICogQHBhcmFtIG5vZGVzXG4gKiBAcGFyYW0gc3BtXG4gKiBAcGFyYW0gZGlyZWN0ZWRcbiAqL1xuXG5cbnZhciBnZXRTcG1NYXAgPSBmdW5jdGlvbiBnZXRTcG1NYXAobm9kZXMsIHNwbSwgZGlyZWN0ZWQpIHtcbiAgdmFyIGxlbmd0aCA9IHNwbS5sZW5ndGg7XG4gIHZhciBtYXAgPSB7fTtcbiAgc3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHZhciBzdGFydCA9IGRpcmVjdGVkID8gMCA6IGkgKyAxO1xuICAgIHZhciBpSWQgPSBub2Rlc1tpXS5pZDtcblxuICAgIGZvciAodmFyIGogPSBzdGFydDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoaSA9PT0gaikgY29udGludWU7XG4gICAgICB2YXIgaklkID0gbm9kZXNbal0uaWQ7XG4gICAgICB2YXIgZGlzdCA9IHJvd1tqXTtcbiAgICAgIG1hcFtcIlwiLmNvbmNhdChpSWQsIFwiLVwiKS5jb25jYXQoaklkKV0gPSBkaXN0O1xuICAgICAgaWYgKCFkaXJlY3RlZCkgbWFwW1wiXCIuY29uY2F0KGpJZCwgXCItXCIpLmNvbmNhdChpSWQpXSA9IGRpc3Q7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG1hcDtcbn07XG4vKipcbiAqIOiuoeeul+S4gOWvueiKgueCue+8iG5vZGUx77yMbm9kZTLvvInnmoQgTkRTIOi3neemu1xuICogQHBhcmFtIGdyYXBoIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIG5vZGUxXG4gKiBAcGFyYW0gbm9kZTJcbiAqL1xuXG5cbnZhciBnZXRORFNEaXN0ID0gZnVuY3Rpb24gZ2V0TkRTRGlzdChncmFwaCwgbm9kZTEsIG5vZGUyLCBub2RlTWFwLCBzcERpc3QsIGtOZWlnaGJvclVuaXRzLCBzdHJ1Y3R1cmUsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3AsIGNhY2hlZE5EU01hcCwgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGgpIHtcbiAgdmFyIF9hO1xuXG4gIHZhciBrZXkgPSBcIlwiLmNvbmNhdChub2RlMS5pZCwgXCItXCIpLmNvbmNhdChub2RlMi5pZCk7XG4gIGlmIChjYWNoZWRORFNNYXAgJiYgY2FjaGVkTkRTTWFwW2tleV0pIHJldHVybiBjYWNoZWRORFNNYXBba2V5XTtcbiAgdmFyIGludGVySW5kdWNlZEdyYXBoID0gY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGggPyBjYWNoZWRJbnRlckluZHVjZWRHcmFwaFtrZXldIDogdW5kZWZpbmVkOyAvLyDoi6XmsqHmnInnvJPlrZjnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm77vvIzorqHnrpdcblxuICBpZiAoIWludGVySW5kdWNlZEdyYXBoKSB7XG4gICAgdmFyIHBhaXJNYXAgPSAoX2EgPSB7fSwgX2Fba2V5XSA9IHtcbiAgICAgIHN0YXJ0OiBub2RlTWFwW25vZGUxLmlkXS5pZHgsXG4gICAgICBlbmQ6IG5vZGVNYXBbbm9kZTIuaWRdLmlkeCxcbiAgICAgIGRpc3RhbmNlOiBzcERpc3RcbiAgICB9LCBfYSk7XG4gICAgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGggPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChwYWlyTWFwLCBrTmVpZ2hib3JVbml0cywgZ3JhcGgsIGNhY2hlZEludGVySW5kdWNlZEdyYXBoKTtcbiAgICBpbnRlckluZHVjZWRHcmFwaCA9IGNhY2hlZEludGVySW5kdWNlZEdyYXBoW2tleV07XG4gIH1cblxuICByZXR1cm4gZ2V0TWF0Y2hlZENvdW50KGludGVySW5kdWNlZEdyYXBoLCBzdHJ1Y3R1cmUsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xufTtcbi8qKlxuICog6K6h566XIHBhdHRlcm4g5LiK57up54K555qE5bqm5pWw5bm25a2Y5YKo5YiwIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBcbiAqL1xuXG5cbnZhciBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAgPSBmdW5jdGlvbiBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCwgbmVpZ2hib3JMYWJlbCwgcGF0dGVybk5vZGVNYXAsIHBhdHRlcm5Ob2RlTGFiZWxNYXApIHtcbiAgdmFyIF9hLCBfYiwgX2M7XG5cbiAgdmFyIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSAoX2EgPSBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwW25laWdoYm9yTGFiZWxdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVncmVlO1xuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID0gKF9iID0gbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmluRGVncmVlO1xuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IChfYyA9IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5vdXREZWdyZWU7XG5cbiAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0gPT09IHVuZGVmaW5lZCkge1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSBJbmZpbml0eTtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBJbmZpbml0eTtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gSW5maW5pdHk7XG4gICAgcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXS5mb3JFYWNoKGZ1bmN0aW9uIChwYXR0ZXJuTm9kZVdpdGhMYWJlbCkge1xuICAgICAgdmFyIHBhdHRlcm5Ob2RlRGVncmVlID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybk5vZGVXaXRoTGFiZWwuaWRdLmRlZ3JlZTtcbiAgICAgIGlmIChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID4gcGF0dGVybk5vZGVEZWdyZWUpIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSBwYXR0ZXJuTm9kZURlZ3JlZTtcbiAgICAgIHZhciBwYXR0ZXJuTm9kZUluRGVncmVlID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybk5vZGVXaXRoTGFiZWwuaWRdLmluRGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA+IHBhdHRlcm5Ob2RlSW5EZWdyZWUpIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IHBhdHRlcm5Ob2RlSW5EZWdyZWU7XG4gICAgICB2YXIgcGF0dGVybk5vZGVPdXREZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0ub3V0RGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPiBwYXR0ZXJuTm9kZU91dERlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IHBhdHRlcm5Ob2RlT3V0RGVncmVlO1xuICAgIH0pO1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0gPSB7XG4gICAgICBkZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUsXG4gICAgICBpbkRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlLFxuICAgICAgb3V0RGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSxcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlXG4gIH07XG59O1xuLyoqXG4gKiBHQURESSDmqKHlvI/ljLnphY1cbiAqIEBwYXJhbSBncmFwaERhdGEg5Y6f5Zu+5pWw5o2uXG4gKiBAcGFyYW0gcGF0dGVybiDmkJzntKLlm77vvIjpnIDopoHlnKjljp/lm77kuIrmkJzntKLnmoTmqKHlvI/vvInmlbDmja5cbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKborqHnrpfmnInlkJHlm77vvIzpu5jorqQgZmFsc2VcbiAqIEBwYXJhbSBrIOWPguaVsCBr77yM6KGo56S6IGst6L+R6YK7XG4gKiBAcGFyYW0gbGVuZ3RoIOWPguaVsCBsZW5ndGhcbiAqIEBwYXJhbSBub2RlTGFiZWxQcm9wIOiKgueCueaVsOaNruS4reS7o+ihqOiKgueCueagh+etvu+8iOWIhuexu+S/oeaBr++8ieeahOWxnuaAp+WQjeOAgum7mOiupOS4uiBjbHVzdGVyXG4gKiBAcGFyYW0gZWRnZUxhYmVsUHJvcCDovrnmlbDmja7kuK3ku6PooajovrnmoIfnrb7vvIjliIbnsbvkv6Hmga/vvInnmoTlsZ7mgKflkI3jgILpu5jorqTkuLogY2x1c3RlclxuICovXG5cblxudmFyIEdBRERJID0gZnVuY3Rpb24gR0FEREkoZ3JhcGhEYXRhLCBwYXR0ZXJuLCBkaXJlY3RlZCwgaywgbGVuZ3RoLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciBfYTtcblxuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAobm9kZUxhYmVsUHJvcCA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZUxhYmVsUHJvcCA9ICdjbHVzdGVyJztcbiAgfVxuXG4gIGlmIChlZGdlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBlZGdlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKCFncmFwaERhdGEgfHwgIWdyYXBoRGF0YS5ub2RlcykgcmV0dXJuOyAvLyDliIbkuLrkuInmraXvvJpcbiAgLy8gMC4g6aKE6K6h566X77ya6IqC54K5L+i+ueaVsO+8jOmCu+aOpeefqemYteOAgeacgOefrei3r+W+hOefqemYtVxuICAvLyAxLiDlpITnkIbljp/lm74gZ3JhcGhEYXRh44CC5YaN5YiG5Li6IDF+NSDlsI/mraVcbiAgLy8gMi4g5Yy56YWNXG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlOiBwcmVwcm9jZXNzaW5nIC0tLS0tLS1cIik7XG4gIC8vIC0tLS0tLS0tIOesrOmbtuatpe+8jOmihOiuoeeul++8muiKgueCuS/ovrnmlbDvvIzpgrvmjqXnn6npmLXjgIHmnIDnn63ot6/lvoTnn6npmLUtLS0tLS0tXG5cbiAgdmFyIG5vZGVOdW0gPSBncmFwaERhdGEubm9kZXMubGVuZ3RoO1xuICBpZiAoIW5vZGVOdW0pIHJldHVybjsgLy8gY29uc29sZS5sb2coXCItLS0tLSBzdGFnZS1wcmUuMTogY2FsYyBzaG9ydGVzdCBwYXRoIG1hdHJpeCBmb3IgZ3JhcGggLS0tLS0tLVwiKTtcblxuICB2YXIgc3BtID0gZmxveWRXYXJzaGFsbChncmFwaERhdGEsIGRpcmVjdGVkKTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZS1wcmUuMjogY2FsYyBzaG9ydGVzdCBwYXRoIG1hdHJpeCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbSA9IGZsb3lkV2Fyc2hhbGwocGF0dGVybiwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS4zOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHNwbU1hcCA9IGdldFNwbU1hcChncmFwaERhdGEubm9kZXMsIHNwbSwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS40OiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbU1hcCA9IGdldFNwbU1hcChwYXR0ZXJuLm5vZGVzLCBwYXR0ZXJuU3BtLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjU6IGVzdGFibGlzaCBtYXBzIC0tLS0tLS1cIik7XG4gIC8vIOiKgueCueeahCBtYXDvvIzku6UgaWQg5Li6IGlkIOaYoOWwhO+8jOaWueS+v+WQjue7reW/q+mAn+ajgOe0olxuXG4gIHZhciBfYiA9IGdldE5vZGVNYXBzKGdyYXBoRGF0YS5ub2Rlcywgbm9kZUxhYmVsUHJvcCksXG4gICAgICBub2RlTWFwID0gX2Iubm9kZU1hcCxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IF9iLm5vZGVMYWJlbE1hcDtcblxuICB2YXIgX2MgPSBnZXROb2RlTWFwcyhwYXR0ZXJuLm5vZGVzLCBub2RlTGFiZWxQcm9wKSxcbiAgICAgIHBhdHRlcm5Ob2RlTWFwID0gX2Mubm9kZU1hcCxcbiAgICAgIHBhdHRlcm5Ob2RlTGFiZWxNYXAgPSBfYy5ub2RlTGFiZWxNYXA7IC8vIOiuoeeul+iKgueCueW6puaVsFxuXG5cbiAgZ2V0RWRnZU1hcHMoZ3JhcGhEYXRhLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKTtcbiAgdmFyIHBhdHRlcm5FZGdlTGFiZWxNYXAgPSBnZXRFZGdlTWFwcyhwYXR0ZXJuLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBwYXR0ZXJuTm9kZU1hcCkuZWRnZUxhYmVsTWFwOyAvLyDoi6XmnKrmjIflrpogbGVuZ3Ro77yM6Ieq5Yqo6K6h566XIHBhdHRlcm4g5Y2K5b6E77yI5pyA55+t6Lev5b6E5pyA5aSn5YC877yJXG5cbiAgdmFyIHBhdHRlcm5TcG1TcHJlYWQgPSBbXTtcbiAgcGF0dGVyblNwbSA9PT0gbnVsbCB8fCBwYXR0ZXJuU3BtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXR0ZXJuU3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgIHBhdHRlcm5TcG1TcHJlYWQgPSBwYXR0ZXJuU3BtU3ByZWFkLmNvbmNhdChyb3cpO1xuICB9KTtcbiAgaWYgKCFsZW5ndGgpIGxlbmd0aCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgcGF0dGVyblNwbVNwcmVhZCwgZmFsc2UpLCBbMl0sIGZhbHNlKSk7XG4gIGlmICghaykgayA9IGxlbmd0aDsgLy8gY29uc29sZS5sb2coXCJwYXJhbXNcIiwgZGlyZWN0ZWQsIGxlbmd0aCwgayk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjY6IGNhbGMgayBuZWlnaGJvciB1bml0cyAtLS0tLS0tXCIpO1xuICAvLyDorqHnrpfmr4/kuKroioLngrnnmoQgayDpgrvlhYPpm4blkIhcblxuICB2YXIga05laWdoYm9yVW5pdHMgPSBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspO1xuICB2YXIgcGF0dGVybktOZWlnaGJvclVuaXRzID0gZmluZEtOZWlnaGJvclVuaXRzKHBhdHRlcm4sIHBhdHRlcm5TcG0sIG5vZGVMYWJlbFByb3AsIGspOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMDogZ29pbmcgdG8gcHJvY2Vzc2luZyBncmFwaCBhbmQgZmluZCBpbnRlcnNlY3QgbmVpZ2hib3IgaW5kdWNlZCBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UwLjE6IGdvaW5nIHRvIHNlbGVjdCByYW5kb20gbm9kZSBwYWlycyAtLS0tLS0tXCIpO1xuICAvLyAtLS0tLS0tLSDnrKzkuIDmraXvvIzlpITnkIbljp/lm74gZ3JhcGhEYXRhLS0tLS0tLVxuICAvLyAxLjEuIOmaj+acuumAieaLqeacgOWkmiAxMDAg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIExlbmd0aCDlkowga1xuICAvLyDlvZMgZ3JhcGhEYXRhIOWwkeS6jiAyMCDkuKroioLngrnvvIzliJnkuI3og73mib7lh7ogMTAwIOS4queCueWvue+8jOWPquaJvuWHuuS4jeWkmuS6jiBuKG4tMSkvMiDkuKrngrnlr7lcblxuICB2YXIgbWF4Tm9kZVBhaXJOdW0gPSBNYXRoLm1pbigxMDAsIG5vZGVOdW0gKiAobm9kZU51bSAtIDEpIC8gMik7XG4gIHZhciBub2RlUGFpcnNNYXAgPSBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIGtOZWlnaGJvclVuaXRzLCBzcG0pOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMC4yOiBnb2luZyB0byBjYWxjdWxhdGUgaW50ZXJzZWN0IG5laWdoYm9yIGluZHVjZWQgZ3JhcGhzIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyAxLjIuIOeUn+aIkOS4iumdouiKgueCueWvueeahOebuOW6lOebuOS6pOmCu+WxheivseWvvOWtkOWbvuOAguagvOW8j+S4uiB7J2JlZ2luTm9kZUlkeC1lbmROb2RlSWR4Jzoge25vZGVzOiBbXSwgZWRnZXM6IFtdfX1cblxuICB2YXIgaW50R01hcCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKG5vZGVQYWlyc01hcCwga05laWdoYm9yVW5pdHMsIGdyYXBoRGF0YSk7IC8vIDEuMy4g5L2/55SoIGdTcGFuIOeul+azle+8iGZyZXF1ZW50IGdyYXBoIG1pbmluZ++8ieiuoeeulyBJU0ludEcg55qE5YmNIDEwIOS4qumikeeOh+acgOmrmOeahOWtkOe7k+aehO+8iDMtNOadoei+ue+8iVxuXG4gIHZhciB0b3AgPSAxMCxcbiAgICAgIG1pblN1cHBvcnQgPSAxLFxuICAgICAgbWluTm9kZU51bSA9IDEsXG4gICAgICBtYXhOb2RlTnVtID0gNDtcbiAgdmFyIHBhcmFtcyA9IHtcbiAgICBncmFwaHM6IGludEdNYXAsXG4gICAgbm9kZUxhYmVsUHJvcDogbm9kZUxhYmVsUHJvcCxcbiAgICBlZGdlTGFiZWxQcm9wOiBlZGdlTGFiZWxQcm9wLFxuICAgIG1pblN1cHBvcnQ6IG1pblN1cHBvcnQsXG4gICAgbWluTm9kZU51bTogbWluTm9kZU51bSxcbiAgICBtYXhOb2RlTnVtOiBtYXhOb2RlTnVtLFxuICAgIGRpcmVjdGVkOiBkaXJlY3RlZFxuICB9OyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMTogKGdTcGFuKSBnb2luZyB0byBmaW5kIGZyZXF1ZW50IHN0cnVjdHVyZSBkc0cgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UxLjE6IGdvaW5nIHRvIHJ1biBnU3BhbiAtLS0tLS0tXCIpO1xuICAvLyDmmoLml7blgYforr7nlJ/miJDnmoQgc3ViIHN0cnVjdHVyZSDpg73lj6rmnInkuIDmnaHovrlcblxuICB2YXIgZnJlU3RydWN0dXJlcyA9IGdTcGFuKHBhcmFtcykuc2xpY2UoMCwgdG9wKTsgLy8gc3RydWN0dXJlTnVtIOWPr+iDveWwj+S6jiB0b3BcblxuICB2YXIgc3RydWN0dXJlTnVtID0gZnJlU3RydWN0dXJlcy5sZW5ndGg7IC8vIDEuNC4g6K6h566X5LiK6L+wIDEwIOS4quWtkOe7k+aehOWcqCBpbnRHTWFwIOS4reavj+S4quivseWvvOWtkOWbvueahOWMuemFjeS4quaVsFxuXG4gIHZhciBtYXRjaGVkQ291bnRNYXAgPSBbXTtcbiAgZnJlU3RydWN0dXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChzdHJ1Y3R1cmUsIGkpIHtcbiAgICBtYXRjaGVkQ291bnRNYXBbaV0gPSB7fTtcbiAgICBPYmplY3Qua2V5cyhpbnRHTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBncmFwaCA9IGludEdNYXBba2V5XTtcbiAgICAgIHZhciBzdWJTdHJ1Y3R1cmVDb3VudCA9IGdldE1hdGNoZWRDb3VudChncmFwaCwgc3RydWN0dXJlLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgICAgIG1hdGNoZWRDb3VudE1hcFtpXVtrZXldID0gc3ViU3RydWN0dXJlQ291bnQ7XG4gICAgfSk7XG4gIH0pOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMS4xOiBnb2luZyB0byBmaW5kIHRoZSBtb3N0IHJlcHJlc2VudCBzdHJ1Y3V0cmUgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIDEuNS4g5a+55LqO5q+P5Liq5a2Q57uT5p6E77yM5qC55o2u5Yy56YWN5Liq5pWw5Li6IGludEdNYXAg5Lit55qE6K+x5a+85a2Q5Zu+5YiG57uE77yM55Sf5oiQIHN0cnVjdHVyZU51bSDnp43liIbnu4RcbiAgLy8g6K6h566X5q+P56eN5YiG57uE55qE57G76Ze06Led5ZKM57G75YaF6Ze06Led77yM5om+5Yiw57G76Ze06Led5pyA5aSn44CB57G75YaF6Ze06Led5pyA5bCP55qE5LiA56eN5YiG57uE77yM6L+Z56eN5YiG57uE5a+55bqU55qE5a2Q57uT5p6E6KKr6YCJ5Li65ZSv5LiA5Luj6KGo5oCn5a2Q57uT5p6EIERTKEcpXG5cbiAgdmFyIF9kID0gZmluZFJlcHJlc2VudFN0cnVjdHVyZShtYXRjaGVkQ291bnRNYXAsIHN0cnVjdHVyZU51bSwgZnJlU3RydWN0dXJlcyksXG4gICAgICBkc0cgPSBfZC5zdHJ1Y3R1cmUsXG4gICAgICBuZHNEaXN0ID0gX2Quc3RydWN0dXJlQ291bnRNYXA7IC8vIC0tLS0tLS0tIOesrOS6jOatpe+8jOWMuemFjS0tLS0tLS1cbiAgLy8gMi4xIOaJvuWIsOS7jiBRIOS4reeahOS4gOS4quiKgueCueS9nOS4uui1t+Wni+iKgueCue+8jOWvu+aJviBHIOS4reeahOWMuemFjeOAgui/meS4quWFtuWunuiKgueCueeahOagh+etvuWPr+S7peWcqCBHIOS4reaJvuWIsOacgOWkmueahOiKgueCuVxuXG5cbiAgdmFyIGJlZ2luUE5vZGUgPSBwYXR0ZXJuLm5vZGVzWzBdLFxuICAgICAgY2FuZGlkYXRlcyA9IFtdLFxuICAgICAgbGFiZWwgPSAoX2EgPSBwYXR0ZXJuLm5vZGVzWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Fbbm9kZUxhYmVsUHJvcF0sXG4gICAgICBtYXhOb2RlTnVtV2l0aFNhbWVMYWJlbCA9IC1JbmZpbml0eTtcbiAgcGF0dGVybi5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHBMYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIG5vZGVzV2l0aFNhbWVMYWJlbCA9IG5vZGVMYWJlbE1hcFtwTGFiZWxdO1xuXG4gICAgaWYgKChub2Rlc1dpdGhTYW1lTGFiZWwgPT09IG51bGwgfHwgbm9kZXNXaXRoU2FtZUxhYmVsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2Rlc1dpdGhTYW1lTGFiZWwubGVuZ3RoKSA+IG1heE5vZGVOdW1XaXRoU2FtZUxhYmVsKSB7XG4gICAgICBtYXhOb2RlTnVtV2l0aFNhbWVMYWJlbCA9IG5vZGVzV2l0aFNhbWVMYWJlbC5sZW5ndGg7XG4gICAgICBjYW5kaWRhdGVzID0gbm9kZXNXaXRoU2FtZUxhYmVsO1xuICAgICAgbGFiZWwgPSBwTGFiZWw7XG4gICAgICBiZWdpblBOb2RlID0gbm9kZTtcbiAgICB9XG4gIH0pOyAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlMjogZ29pbmcgdG8gZmluZCBjYW5kaWRhdGVzIC0tLS0tLS1cIik7XG4gIC8vIOWFqOWxgOe8k+WtmO+8jOmBv+WFjemHjeWkjeiuoeeul1xuXG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwID0ge307IC8vIGtleSDmmK8gbGFiZWzvvIx2YWx1ZSDmmK/or6UgbGFiZWwg6IqC54K555qE5pyA5bCP5bqm5pWwXG5cbiAgdmFyIHBhdHRlcm5JbnRHcmFwaE1hcCA9IHt9LFxuICAgICAgcGF0dGVybk5EU0Rpc3QgPSB7fSxcbiAgICAgIC8vIGtleSDkuLogbm9kZS5pZC1ub2RlLmlkXG4gIHBhdHRlcm5ORFNEaXN0TWFwID0ge307IC8vIGtleSDkuLogbm9kZS5pZC1sYWJlbDLvvIx2YWx1ZSBuZHPot53nprvlgLzmlbDnu4TvvIjmjInku47lpKfliLDlsI/mjpLluo/vvIzml6DpnIDlhbPlv4PlhbfkvZPlr7nlupTlk6rkuKogbm9kZTLvvIlcbiAgLy8gMi4yLjIg5a+55LqOIFEg5Lit55qE5Y+m5LiA5Liq5qCH562+55qEIGsg5Liq6IqC54K577yM6K6h566X5a6D5Lus5YiwIG5vZGUg55qE5pyA55+t6Lev5b6E5Lul5Y+KIE5EUyDot53nprtcblxuICB2YXIgcGF0dGVyblNwRGlzdCA9IHt9O1xuICB2YXIgcGF0dGVyblNwRGlzdEJhY2sgPSB7fTtcbiAgT2JqZWN0LmtleXMocGF0dGVybk5vZGVMYWJlbE1hcCkuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwyLCBqKSB7XG4gICAgcGF0dGVyblNwRGlzdFtsYWJlbDJdID0gW107XG5cbiAgICBpZiAoZGlyZWN0ZWQpIHtcbiAgICAgIHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0gPSBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWF4RGlzdCA9IC1JbmZpbml0eTtcbiAgICB2YXIgcGF0dGVybk5vZGVzV2l0aExhYmVsMiA9IHBhdHRlcm5Ob2RlTGFiZWxNYXBbbGFiZWwyXTtcbiAgICB2YXIgcGF0dGVybk5vZGVQYWlyTWFwID0ge307XG4gICAgcGF0dGVybk5vZGVzV2l0aExhYmVsMi5mb3JFYWNoKGZ1bmN0aW9uIChub2RlV2l0aExhYmVsMikge1xuICAgICAgdmFyIGRpc3QgPSBwYXR0ZXJuU3BtTWFwW1wiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobm9kZVdpdGhMYWJlbDIuaWQpXTtcbiAgICAgIGRpc3QgJiYgcGF0dGVyblNwRGlzdFtsYWJlbDJdLnB1c2goZGlzdCk7XG4gICAgICBpZiAobWF4RGlzdCA8IGRpc3QpIG1heERpc3QgPSBkaXN0O1xuICAgICAgcGF0dGVybk5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobm9kZVdpdGhMYWJlbDIuaWQpXSA9IHtcbiAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgIGVuZDogcGF0dGVybk5vZGVNYXBbbm9kZVdpdGhMYWJlbDIuaWRdLmlkeCxcbiAgICAgICAgZGlzdGFuY2U6IGRpc3RcbiAgICAgIH07XG5cbiAgICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgICB2YXIgZGlzdEJhY2sgPSBwYXR0ZXJuU3BtTWFwW1wiXCIuY29uY2F0KG5vZGVXaXRoTGFiZWwyLmlkLCBcIi1cIikuY29uY2F0KGJlZ2luUE5vZGUuaWQpXTtcbiAgICAgICAgZGlzdEJhY2sgJiYgcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXS5wdXNoKGRpc3RCYWNrKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gc3BEaXN0W2xhYmVsMl0g5oyJ54Wn5LuO5bCP5Yiw5aSn5o6S5bqPXG5cbiAgICBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0gPSBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0uc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICAgIGlmIChkaXJlY3RlZCkgcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXSA9IHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0uc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pOyAvLyDorqHnrpcgUSDkuK3miYDmnIkgbGFiZWwyIOiKgueCueWIsCBiZWdpblBOb2RlIOeahCBORFMg6Led56a7XG4gICAgLy8g5omA5pyJIGxhYmVsMiDoioLngrnliLAgYmVnaW5QTm9kZSDnmoTpgrvlsYXnm7jkuqTor7Hlr7zlrZDlm77vvJpcbiAgICAvLyBrZXk6IG5vZGUxLmlkLW5vZGUyLmlkXG5cbiAgICBwYXR0ZXJuSW50R3JhcGhNYXAgPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChwYXR0ZXJuTm9kZVBhaXJNYXAsIHBhdHRlcm5LTmVpZ2hib3JVbml0cywgcGF0dGVybiwgcGF0dGVybkludEdyYXBoTWFwKTsgLy8gcGF0dGVybiDkuK0gYmVnaW5Ob2RlIOWIsOW9k+WJjSBsYWJlbDIg6IqC54K5IOeahCBORFMg6Led56a777yI5pWw57uE77yM5peg6ZyA5YWz5b+D5YW35L2T5a+55bqU5Yiw5ZOq5Liq6IqC54K577yJXG5cbiAgICB2YXIgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkgPSBbXTtcbiAgICBPYmplY3Qua2V5cyhwYXR0ZXJuTm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKHBhdHRlcm5ORFNEaXN0W2tleV0pIHtcbiAgICAgICAgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkucHVzaChwYXR0ZXJuTkRTRGlzdFtrZXldKTtcbiAgICAgICAgcmV0dXJuOyAvLyDnvJPlrZjov4fliJnkuI3pnIDopoHlho3mrKHorqHnrpdcbiAgICAgIH1cblxuICAgICAgdmFyIHBhdHRlcm5JbnRHcmFwaCA9IHBhdHRlcm5JbnRHcmFwaE1hcFtrZXldO1xuICAgICAgcGF0dGVybk5EU0Rpc3Rba2V5XSA9IGdldE1hdGNoZWRDb3VudChwYXR0ZXJuSW50R3JhcGgsIGRzRywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG4gICAgICBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheS5wdXNoKHBhdHRlcm5ORFNEaXN0W2tleV0pO1xuICAgIH0pOyAvLyDmoLnmja7lgLzkuLogY3VycmVudFBhdHRlcm5ORFNEaXN0IOS7juWkp+WIsOWwj+aOkuW6j1xuXG4gICAgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkgPSBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYiAtIGE7XG4gICAgfSk7XG4gICAgcGF0dGVybk5EU0Rpc3RNYXBbXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChsYWJlbDIpXSA9IGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5O1xuICAgIGlmIChsYWJlbDIgPT09IGxhYmVsKSByZXR1cm47XG4gICAgdmFyIGNhbmRpZGF0ZXNOdW0gPSAoY2FuZGlkYXRlcyA9PT0gbnVsbCB8fCBjYW5kaWRhdGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjYW5kaWRhdGVzLmxlbmd0aCkgfHwgMDtcblxuICAgIHZhciBfbG9vcF80ID0gZnVuY3Rpb24gX2xvb3BfNChtKSB7XG4gICAgICB2YXIgY05vZGUgPSBjYW5kaWRhdGVzW21dOyAvLyBwcnVuZTHvvJroi6UgY2FuZGlkYXRlcyDkuK3oioLngrkgY05vZGUg55qEIGtOZWlnaGJvclVuaXRzIOS4reagh+etvuS4uiBsYWJlbDIg55qE6IqC54K55Liq5pWw5bCR5LqOIHBhdHRlcm4g5LitIGxhYmVsMiDkuKrmlbDvvIzliKDljrvlroNcblxuICAgICAgdmFyIGdyYXBoTmVpZ2hib3JVbml0ID0ga05laWdoYm9yVW5pdHNbbm9kZU1hcFtjTm9kZS5pZF0uaWR4XTtcbiAgICAgIHZhciBncmFwaE5laWdoYm9yVW5pdENvdW50TWFwID0gZ3JhcGhOZWlnaGJvclVuaXQubm9kZUxhYmVsQ291bnRNYXBbbGFiZWwyXTtcbiAgICAgIHZhciBwYXR0ZXJuTGFiZWwyTnVtID0gcGF0dGVybk5vZGVMYWJlbE1hcFtsYWJlbDJdLmxlbmd0aDtcblxuICAgICAgaWYgKCFncmFwaE5laWdoYm9yVW5pdENvdW50TWFwIHx8IGdyYXBoTmVpZ2hib3JVbml0Q291bnRNYXAuY291bnQgPCBwYXR0ZXJuTGFiZWwyTnVtKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMuc3BsaWNlKG0sIDEpO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfSAvLyBwcnVuZTLvvJroi6UgY2FuZGlkYXRlcyDkuK3oioLngrkgY05vZGUg5YiwIGtOZWlnaGJvclVuaXRzIOS4reagh+etvuS4uiBsYWJlbDIg55qE6IqC54K55pyA55+t6Lev5b6E5aSn5LqOIHBhdHRlcm5TcERpc3RbbGFiZWwyXe+8jOWIoOWOu+Wug1xuICAgICAgLy8gKHBydW5lMiDop4TliJnljbPvvJpjYW5kaWRhdGUg55u45YWz55qE5pyA55+t6Lev5b6E55qE5pyA5aSnIHNwRGlzdFtsYWJlbDJdLmxlbmd0aCDkuKrvvIzmjInnhaflpKflsI/pobrluo/kvp3mrKHlkowgcGF0dGVyblNwRGlzdFtsYWJlbDJdIOS4reeahOWAvOavlOi+g++8jOWPquimgemBh+WIsOS4gOS4quaYryBHID4gUSDnmoTvvIzlsLHliKDljrvov5nkuKogY2FuZGlkYXRlKVxuXG5cbiAgICAgIHZhciBwcnVuZTJJbnZhbGlkID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgcGF0dGVybkxhYmVsMk51bTsgbisrKSB7XG4gICAgICAgIGlmIChncmFwaE5laWdoYm9yVW5pdENvdW50TWFwLmRpc3RzW25dID4gcGF0dGVyblNwRGlzdFtsYWJlbDJdW25dKSB7XG4gICAgICAgICAgcHJ1bmUySW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBydW5lMkludmFsaWQpIHtcbiAgICAgICAgY2FuZGlkYXRlcy5zcGxpY2UobSwgMSk7XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9IC8vIHBydW5lM++8muiLpSBjYW5kaWRhdGVzIOS4reiKgueCuSBjTm9kZSDliLAga05laWdoYm9yVW5pdHMg5Lit5qCH562+5Li6IGxhYmVsMiDnmoToioLngrkgTkRTIOi3neemu+Wwj+S6jiBwYXR0ZXJuTkRTRGlzdFtiZWdpbk5vZGUuaWQtbGFiZWwyXe+8jOWIoOWOu+Wug1xuICAgICAgLy8gVE9ET++8mnBydW5lM++8jGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5IOS4jiBjdXJyZW50TkRTRGlzdCDnmoTmr5TovoNcbiAgICAgIC8vIOiuoeeulyBHIOS4reaJgOaciSBsYWJlbDIg6IqC54K55YiwIGNOb2RlIOeahCBORFMg6Led56a7XG4gICAgICAvLyDmiYDmnIkgbGFiZWwyIOiKgueCueWIsCBjTm9kZSDnmoTpgrvlsYXnm7jkuqTor7Hlr7zlrZDlm77vvJpcblxuXG4gICAgICB2YXIgY05vZGVQYWlyTWFwID0ge307XG4gICAgICBncmFwaE5laWdoYm9yVW5pdC5uZWlnaGJvcnMuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JOb2RlKSB7XG4gICAgICAgIHZhciBkaXN0ID0gc3BtTWFwW1wiXCIuY29uY2F0KGNOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5laWdoYm9yTm9kZS5pZCldO1xuICAgICAgICBjTm9kZVBhaXJNYXBbXCJcIi5jb25jYXQoY05vZGUuaWQsIFwiLVwiKS5jb25jYXQobmVpZ2hib3JOb2RlLmlkKV0gPSB7XG4gICAgICAgICAgc3RhcnQ6IG5vZGVNYXBbY05vZGUuaWRdLmlkeCxcbiAgICAgICAgICBlbmQ6IG5vZGVNYXBbbmVpZ2hib3JOb2RlLmlkXS5pZHgsXG4gICAgICAgICAgZGlzdGFuY2U6IGRpc3RcbiAgICAgICAgfTtcbiAgICAgIH0pOyAvLyDmm7TmlrAgaW50R01hcFxuXG4gICAgICBpbnRHTWFwID0gZ2V0SW50ZXJzZWN0TmVpZ2hib3JJbmR1Y2VkR3JhcGgoY05vZGVQYWlyTWFwLCBrTmVpZ2hib3JVbml0cywgZ3JhcGhEYXRhLCBpbnRHTWFwKTsgLy8gY2FuZGlkYXRlIOWIsOWug+WRqOWbtCBsYWJlbDIg6IqC54K555qEIE5EUyDot53nprssIGtleSDmmK8gbm9kZS5pZC1ub2RlLmlkXG5cbiAgICAgIHZhciBjdXJyZW50TkRTRGlzdEFycmF5ID0gW107XG4gICAgICBPYmplY3Qua2V5cyhjTm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAobmRzRGlzdFtrZXldKSB7XG4gICAgICAgICAgY3VycmVudE5EU0Rpc3RBcnJheS5wdXNoKG5kc0Rpc3Rba2V5XSk7XG4gICAgICAgICAgcmV0dXJuOyAvLyDnvJPlrZjov4fliJnkuI3pnIDopoHlho3mrKHorqHnrpdcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbnRHcmFwaCA9IGludEdNYXBba2V5XTtcbiAgICAgICAgbmRzRGlzdFtrZXldID0gZ2V0TWF0Y2hlZENvdW50KGludEdyYXBoLCBkc0csIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICAgICAgICBjdXJyZW50TkRTRGlzdEFycmF5LnB1c2gobmRzRGlzdFtrZXldKTtcbiAgICAgIH0pOyAvLyDmoLnmja7lgLzkuLogY3VycmVudE5EU0Rpc3RBcnJheSDku47lpKfliLDlsI/mjpLluo9cblxuICAgICAgY3VycmVudE5EU0Rpc3RBcnJheSA9IGN1cnJlbnRORFNEaXN0QXJyYXkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYiAtIGE7XG4gICAgICB9KTtcbiAgICAgIHZhciBwcnVuZTNJbnZhbGlkID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgcGF0dGVybkxhYmVsMk51bTsgbisrKSB7XG4gICAgICAgIGlmIChjdXJyZW50TkRTRGlzdEFycmF5W25dIDwgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXlbbl0pIHtcbiAgICAgICAgICBwcnVuZTNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJ1bmUzSW52YWxpZCkge1xuICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShtLCAxKTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgbSA9IGNhbmRpZGF0ZXNOdW0gLSAxOyBtID49IDA7IG0tLSkge1xuICAgICAgX2xvb3BfNChtKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgY2FuZGlkYXRlR3JhcGhzID0gW107IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2UzOiBnb2luZyB0byBzcGxpY2UgbmVpZ2hib3JzIGZvciBlYWNoIGNhbmRpZGF0ZSBncmFwaCAtLS0tLS0tXCJcbiAgLy8gKTtcbiAgLy8gY2FuZGlkYXRlcyDnu4/ov4fnrZvpgInlkI7vvIzku6Xmr4/kuKogY2FuZGlkYXRlIOS4uuS4reW/g++8jOeUn+aIkCBMZW5ndGgtbmVpZ2hib3Ig55qE6YK75bGF6K+x5a+85a2Q5Zu+XG4gIC8vIOW5tuWcqOivseWvvOWtkOWbvuS4reWOu+mZpOS4jeWPr+iDveWcqCBRIOS4iuaJvuWIsOWMuemFjeeahOeCue+8muWcqCBRIOS4iuS4jeWtmOWcqOeahCBsYWJlbO+8jOWFtuS7liBsYWJlbCDliLAgY2FuZGlkYXRlIOeahOacgOWkp+acgOefrei3neemu+espuWQiCBR44CBTkRTIOi3neemu+espuWQiCBRXG5cbiAgY2FuZGlkYXRlcyA9PT0gbnVsbCB8fCBjYW5kaWRhdGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjYW5kaWRhdGVzLmZvckVhY2goZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgIHZhciBub2RlSWR4ID0gbm9kZU1hcFtjYW5kaWRhdGUuaWRdLmlkeDtcbiAgICB2YXIgbGVuZ3RoTmVpZ2hib3JVbml0ID0gZmluZEtOZWlnaGJvclVuaXQoZ3JhcGhEYXRhLm5vZGVzLCBzcG1bbm9kZUlkeF0sIG5vZGVJZHgsIG5vZGVMYWJlbFByb3AsIGxlbmd0aCk7XG4gICAgdmFyIG5laWdoYm9yTm9kZXMgPSBsZW5ndGhOZWlnaGJvclVuaXQubmVpZ2hib3JzOyAvLyDliKDpmaTkuI3lj6/og73mib7liLDljLnphY3nmoTpgrvlsYXngrlcblxuICAgIHZhciBuZWlnaGJvck51bSA9IG5laWdoYm9yTm9kZXMubGVuZ3RoO1xuICAgIHZhciB1bm1hdGNoZWQgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSBuZWlnaGJvck51bSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAvLyDlpoLmnpzpgJrov4foo4HliarvvIznrKblkIjmnaHku7bnmoToioLngrnmlbDph4/lt7Lov4flsJHvvIzor7TmmI7kuI3og73ljLnphY3ov5nkuKogY2FuZGlkYXRlIOebuOWFs+eahOWbvlxuICAgICAgaWYgKG5laWdoYm9yTm9kZXMubGVuZ3RoICsgMSA8IHBhdHRlcm4ubm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHVubWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG5laWdoYm9yTm9kZSA9IG5laWdoYm9yTm9kZXNbaV07XG4gICAgICB2YXIgbmVpZ2hib3JMYWJlbCA9IG5laWdoYm9yTm9kZVtub2RlTGFiZWxQcm9wXTsgLy8gcHJ1bmUxOiDoi6Xor6XpgrvlsYXngrnnmoQgbGFiZWwg5LiN5a2Y5Zyo5LqOIHBhdHRlcm4g5Lit77yM56e76Zmk6L+Z5Liq54K5XG5cbiAgICAgIGlmICghcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXSB8fCAhcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBwcnVuZTI6IOiLpeivpemCu+WxheeCueWIsCBjYW5kaWRhdGUg55qE5pyA55+t6Lev5b6E5q+U5ZKM5a6D5pyJ55u45ZCMIGxhYmVsIOeahOiKgueCueWIsCBiZWdpblBOb2RlIOeahOacgOWkp+acgOefrei3r+W+hOmVv+W6pumVv++8jOenu+mZpOi/meS4queCuVxuICAgICAgLy8gcHJ1bmUyLjE6IOWmguaenOayoeaciei/meS4quagh+etvuWIsCBiZWdpblBOb2RlIOeahOi3neemu+iusOW9le+8jOivtOaYjiBwYXR0ZXJuIOS4iu+8iOWPr+iDvSBiZWdpblBOb2RlIOaYr+i/meS4qiBsYWJlbO+8ieayoeacieWFtuS7lui/meS4qiBsYWJlbCDnmoToioLngrlcblxuXG4gICAgICBpZiAoIXBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0gfHwgIXBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGNhbmRpZGF0ZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvck5vZGUuaWQpOyAvLyBwcnVuZTIuMlxuXG4gICAgICB2YXIgZGlzdFRvQ2FuZGlkYXRlID0gc3BtTWFwW2tleV07XG4gICAgICB2YXIgaWR4ID0gcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG1heERpc3RXaXRoTGFiZWxJblBhdHRlcm4gPSBwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdW2lkeF07IC8vIHBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0g5bey57uP5oyJ54Wn5LuO5bCP5Yiw5aSn5o6S5bqPXG5cbiAgICAgIGlmIChkaXN0VG9DYW5kaWRhdGUgPiBtYXhEaXN0V2l0aExhYmVsSW5QYXR0ZXJuKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgIHZhciBrZXlCYWNrID0gXCJcIi5jb25jYXQobmVpZ2hib3JOb2RlLmlkLCBcIi1cIikuY29uY2F0KGNhbmRpZGF0ZS5pZCk7XG4gICAgICAgIHZhciBkaXN0RnJvbUNhbmRpZGF0ZSA9IHNwbU1hcFtrZXlCYWNrXTtcbiAgICAgICAgaWR4ID0gcGF0dGVyblNwRGlzdEJhY2tbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIG1heEJhY2tEaXN0V2l0aExhYmVsSW5QYXR0ZXJuID0gcGF0dGVyblNwRGlzdEJhY2tbbmVpZ2hib3JMYWJlbF1baWR4XTtcblxuICAgICAgICBpZiAoZGlzdEZyb21DYW5kaWRhdGUgPiBtYXhCYWNrRGlzdFdpdGhMYWJlbEluUGF0dGVybikge1xuICAgICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIHBydW5lMzog6Iul6K+l6YK75bGF54K55YiwIGNhbmRpZGF0ZSDnmoQgTkRTIOi3neemu+avlOWSjOWug+acieebuOWQjCBsYWJlbCDnmoToioLngrnliLAgYmVnaW5QTm9kZSDnmoTmnIDlsI8gTkRTIOi3neemu+Wwj++8jOenu+mZpOi/meS4queCuVxuXG5cbiAgICAgIHZhciBuZHNUb0NhbmRpZGF0ZSA9IG5kc0Rpc3Rba2V5XSA/IG5kc0Rpc3Rba2V5XSA6IGdldE5EU0Rpc3QoZ3JhcGhEYXRhLCBjYW5kaWRhdGUsIG5laWdoYm9yTm9kZSwgbm9kZU1hcCwgZGlzdFRvQ2FuZGlkYXRlLCBrTmVpZ2hib3JVbml0cywgZHNHLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wLCBuZHNEaXN0LCBpbnRHTWFwKTtcbiAgICAgIHZhciBwYXR0ZXJuS2V5ID0gXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvckxhYmVsKTtcbiAgICAgIHZhciBtaW5OZHNXaXRoTGFiZWxJblBhdHRlcm4gPSBwYXR0ZXJuTkRTRGlzdE1hcFtwYXR0ZXJuS2V5XVtwYXR0ZXJuTkRTRGlzdE1hcFtwYXR0ZXJuS2V5XS5sZW5ndGggLSAxXTsgLy8gcGF0dGVybk5EU0Rpc3Rba2V5XSDkuIDlrprlrZjlnKhcblxuICAgICAgaWYgKG5kc1RvQ2FuZGlkYXRlIDwgbWluTmRzV2l0aExhYmVsSW5QYXR0ZXJuKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gcHJ1bmU0OiDoi6Xor6XpgrvlsYXngrnnmoTluqbmlbDlsI/kuo4gcGF0dGVybiDlkIwgbGFiZWwg6IqC54K55pyA5bCP5bqm5pWw77yM5Yig5Y676K+l54K5XG5cblxuICAgICAgdmFyIF9hID0gc3Rhc2hQYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAsIG5laWdoYm9yTGFiZWwsIHBhdHRlcm5Ob2RlTWFwLCBwYXR0ZXJuTm9kZUxhYmVsTWFwKSxcbiAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID0gX2EubWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBfYS5taW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IF9hLm1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWU7XG5cbiAgICAgIGlmIChub2RlTWFwW25laWdoYm9yTm9kZS5pZF0uZGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSkge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfSAvLyDoioLngrnlnKjkuKrmlbDkuIrnrKblkIjljLnphY3vvIjkuI3lsJHkuo4gcGF0dGVybiDnmoToioLngrnkuKrmlbDvvInvvIznjrDlnKjnrZvpgInnm7jlhbPovrlcblxuXG4gICAgaWYgKCF1bm1hdGNoZWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5wdXNoKHtcbiAgICAgICAgbm9kZXM6IFtjYW5kaWRhdGVdLmNvbmNhdChuZWlnaGJvck5vZGVzKVxuICAgICAgfSk7XG4gICAgfVxuICB9KTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTQ6IGdvaW5nIHRvIHNwbGljZSBlZGdlcyBhbmQgbmVpZ2hib3JzIGZvciBlYWNoIGNhbmRpZGF0ZSBncmFwaCAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGUgPSBkaWprc3RyYShwYXR0ZXJuLCBiZWdpblBOb2RlLmlkLCBmYWxzZSkubGVuZ3RoO1xuICB2YXIgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcCA9IHt9O1xuXG4gIGlmIChkaXJlY3RlZCkge1xuICAgIE9iamVjdC5rZXlzKHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlSWQpIHtcbiAgICAgIHZhciBub2RlTGFiZWwgPSBwYXR0ZXJuTm9kZU1hcFtub2RlSWRdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICBpZiAoIXVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbm9kZUxhYmVsXSkgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtub2RlTGFiZWxdID0gW3VuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlW25vZGVJZF1dO2Vsc2UgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtub2RlTGFiZWxdLnB1c2godW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVbbm9kZUlkXSk7XG4gICAgfSk7XG4gICAgT2JqZWN0LmtleXModW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcCkuZm9yRWFjaChmdW5jdGlvbiAocExhYmVsKSB7XG4gICAgICB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW3BMYWJlbF0uc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYSAtIGI7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwID0gcGF0dGVyblNwRGlzdDtcbiAgfSAvLyDnjrDlnKggY2FuZGlkYXRlR3JhcGhzIOmHjOmdouWPquacieiKgueCue+8jOi/m+ihjOi+ueeahOetm+mAiVxuXG5cbiAgdmFyIGNhbmRpZGF0ZUdyYXBoTnVtID0gY2FuZGlkYXRlR3JhcGhzLmxlbmd0aDtcblxuICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgIHZhciBjYW5kaWRhdGVHcmFwaCA9IGNhbmRpZGF0ZUdyYXBoc1tpXTtcbiAgICB2YXIgY2FuZGlkYXRlID0gY2FuZGlkYXRlR3JhcGgubm9kZXNbMF07XG4gICAgdmFyIGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwID0ge307XG4gICAgdmFyIGNhbmRpZGF0ZU5vZGVNYXAgPSB7fTtcbiAgICBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBxKSB7XG4gICAgICBjYW5kaWRhdGVOb2RlTWFwW25vZGUuaWRdID0ge1xuICAgICAgICBpZHg6IHEsXG4gICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgIGRlZ3JlZTogMCxcbiAgICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICAgIG91dERlZ3JlZTogMFxuICAgICAgfTtcbiAgICAgIHZhciBjTm9kZUxhYmVsID0gbm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgIGlmICghY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY05vZGVMYWJlbF0pIGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NOb2RlTGFiZWxdID0gMTtlbHNlIGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NOb2RlTGFiZWxdKys7XG4gICAgfSk7IC8vIOagueaNriBjYW5kaWRhdGUg5ZKMIG5laWdoYm9yTm9kZXMg5Lit55qE6IqC54K555Sf5oiQIEcg55qE6K+x5a+85a2Q5Zu+XG4gICAgLy8g5Y2z77yM5bCGIGdyYXBoRGF0YSDkuIrkuKTnq6/pg73lnKggY2FuZGlkYXRlR3JhcGgubm9kZXMg5Lit55qE6L655pS+5YWlIGNhbmRpZGF0ZUVkZ2VzXG5cbiAgICB2YXIgY2FuZGlkYXRlRWRnZXMgPSBbXTtcbiAgICB2YXIgZWRnZUxhYmVsQ291bnRNYXAgPSB7fTtcbiAgICBncmFwaERhdGEuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdICYmIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdKSB7XG4gICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnB1c2goZWRnZSk7XG4gICAgICAgIGlmICghZWRnZUxhYmVsQ291bnRNYXBbZWRnZVtlZGdlTGFiZWxQcm9wXV0pIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VbZWRnZUxhYmVsUHJvcF1dID0gMTtlbHNlIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VbZWRnZUxhYmVsUHJvcF1dKys7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLmRlZ3JlZSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5kZWdyZWUrKztcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ub3V0RGVncmVlKys7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmluRGVncmVlKys7XG4gICAgICB9XG4gICAgfSk7IC8vIHBydW5l77ya6Iul5pyJ5LiA5LiqIGVkZ2VMYWJlbCDlnKggY2FuZGlkYXRlR3JhcGgg5LiK55qE5Liq5pWw5bCR5LqOIHBhdHRlcm7vvIzljrvpmaTor6Xlm75cblxuICAgIHZhciBwYXR0ZW5yRWRnZUxhYmVsTnVtID0gT2JqZWN0LmtleXMocGF0dGVybkVkZ2VMYWJlbE1hcCkubGVuZ3RoO1xuICAgIHZhciBwcnVuZWRCeUVkZ2VMYWJlbCA9IGZhbHNlO1xuXG4gICAgZm9yICh2YXIgZSA9IDA7IGUgPCBwYXR0ZW5yRWRnZUxhYmVsTnVtOyBlKyspIHtcbiAgICAgIHZhciBsYWJlbF8xID0gT2JqZWN0LmtleXMocGF0dGVybkVkZ2VMYWJlbE1hcClbZV07XG5cbiAgICAgIGlmICghZWRnZUxhYmVsQ291bnRNYXBbbGFiZWxfMV0gfHwgZWRnZUxhYmVsQ291bnRNYXBbbGFiZWxfMV0gPCBwYXR0ZXJuRWRnZUxhYmVsTWFwW2xhYmVsXzFdLmxlbmd0aCkge1xuICAgICAgICBwcnVuZWRCeUVkZ2VMYWJlbCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcnVuZWRCeUVkZ2VMYWJlbCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfSAvLyDpgY3ljoYgY2FuZGlkYXRlRWRnZXPvvIzov5vooYzovrnnmoTnrZvpgIlcblxuXG4gICAgdmFyIGNhbmRpZGF0ZUVkZ2VOdW0gPSBjYW5kaWRhdGVFZGdlcy5sZW5ndGg7IC8vIHBydW5l77ya6Iul6L655pWw6L+H5bCR77yM5Y676Zmk6K+l5Zu+XG5cbiAgICBpZiAoY2FuZGlkYXRlRWRnZU51bSA8IHBhdHRlcm4uZWRnZXMubGVuZ3RoKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICB9XG5cbiAgICB2YXIgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gZmFsc2U7XG5cbiAgICB2YXIgX2xvb3BfNSA9IGZ1bmN0aW9uIF9sb29wXzUoZSkge1xuICAgICAgdmFyIGVkZ2UgPSBjYW5kaWRhdGVFZGdlc1tlXTtcbiAgICAgIHZhciBlZGdlTGFiZWwgPSBlZGdlW2VkZ2VMYWJlbFByb3BdO1xuICAgICAgdmFyIHBhdHRlcm5FZGdlc1dpdGhMYWJlbCA9IHBhdHRlcm5FZGdlTGFiZWxNYXBbZWRnZUxhYmVsXTsgLy8gcHJ1bmUgMTog6Iul6L6555qEIGxhYmVsIOS4jeWtmOWcqOS6jiBwYXR0ZXJuIOi+uSBsYWJlbCDkuK3vvIzljrvpmaTor6XovrlcblxuICAgICAgaWYgKCFwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgfHwgIXBhdHRlcm5FZGdlc1dpdGhMYWJlbC5sZW5ndGgpIHtcbiAgICAgICAgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXS0tOyAvLyDoi6Xov5nkuKogbGFiZWwg55qEIGNvdW50IOWHj+WwkeS5i+WQju+8jOivpSBsYWJlbCDnmoTovrnmlbDkuI3otrPvvIzljrvpmaTor6Xlm75cblxuICAgICAgICBpZiAocGF0dGVybkVkZ2VzV2l0aExhYmVsICYmIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0gPCBwYXR0ZXJuRWRnZXNXaXRoTGFiZWwubGVuZ3RoKSB7XG4gICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FuZGlkYXRlRWRnZXMuc3BsaWNlKGUsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5kZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uZGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLm91dERlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZS0tO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfSAvLyBwcnVuZSAyOiDoi6XovrnnmoQgbGFiZWwgK+S4pOerryBsYWJlbCDnmoTkuInlhYPnu4TlhbPns7vkuI3og73lnKggcGF0dGVybiDkuK3mib7liLDvvIzljrvpmaTor6XovrlcblxuXG4gICAgICB2YXIgc291cmNlTGFiZWwgPSBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgdmFyIHRhcmdldExhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgIHZhciBlZGdlTWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgcGF0dGVybkVkZ2VzV2l0aExhYmVsLmZvckVhY2goZnVuY3Rpb24gKHBhdHRlcm5FZGdlKSB7XG4gICAgICAgIHZhciBwYXR0ZXJuU291cmNlID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybkVkZ2Uuc291cmNlXS5ub2RlO1xuICAgICAgICB2YXIgcGF0dGVyblRhcmdldCA9IHBhdHRlcm5Ob2RlTWFwW3BhdHRlcm5FZGdlLnRhcmdldF0ubm9kZTtcbiAgICAgICAgaWYgKHBhdHRlcm5Tb3VyY2Vbbm9kZUxhYmVsUHJvcF0gPT09IHNvdXJjZUxhYmVsICYmIHBhdHRlcm5UYXJnZXRbbm9kZUxhYmVsUHJvcF0gPT09IHRhcmdldExhYmVsKSBlZGdlTWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIGlmICghZGlyZWN0ZWQgJiYgcGF0dGVyblNvdXJjZVtub2RlTGFiZWxQcm9wXSA9PT0gdGFyZ2V0TGFiZWwgJiYgcGF0dGVyblRhcmdldFtub2RlTGFiZWxQcm9wXSA9PT0gc291cmNlTGFiZWwpIGVkZ2VNYXRjaGVkID0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWVkZ2VNYXRjaGVkKSB7XG4gICAgICAgIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0tLTsgLy8g6Iul6L+Z5LiqIGxhYmVsIOeahCBjb3VudCDlh4/lsJHkuYvlkI7vvIzor6UgbGFiZWwg55qE6L655pWw5LiN6Laz77yM5Y676Zmk6K+l5Zu+XG5cbiAgICAgICAgaWYgKHBhdHRlcm5FZGdlc1dpdGhMYWJlbCAmJiBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdIDwgcGF0dGVybkVkZ2VzV2l0aExhYmVsLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnNwbGljZShlLCAxKTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0uZGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5vdXREZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uaW5EZWdyZWUtLTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgZSA9IGNhbmRpZGF0ZUVkZ2VOdW0gLSAxOyBlID49IDA7IGUtLSkge1xuICAgICAgdmFyIHN0YXRlXzIgPSBfbG9vcF81KGUpO1xuXG4gICAgICBpZiAoc3RhdGVfMiA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgICB9IC8vIHBydW5lMjog5Yig6Zmk6L6555qE6L+H56iL5Lit77yM5Y+R546w6L655pWw6L+H5bCRL+i+uSBsYWJlbCDmlbDov4flsJHml7bvvIzljrvpmaTor6Xlm75cblxuXG4gICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfVxuXG4gICAgY2FuZGlkYXRlR3JhcGguZWRnZXMgPSBjYW5kaWRhdGVFZGdlcztcbiAgICB2YXIgbGVuZ3Roc1RvQ2FuZGlkYXRlID0gZGlqa3N0cmEoY2FuZGlkYXRlR3JhcGgsIGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdLmlkLCBmYWxzZSkubGVuZ3RoO1xuICAgIE9iamVjdC5rZXlzKGxlbmd0aHNUb0NhbmRpZGF0ZSkucmV2ZXJzZSgpLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldElkKSB7XG4gICAgICBpZiAodGFyZ2V0SWQgPT09IGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdLmlkIHx8IGNhbmRpZGF0ZUdyYXBoSW52YWxpZCkgcmV0dXJuOyAvLyBwcnVuZTQ6IOmAmui/h+S4iui/sOijgeWJqu+8jOWPr+iDveWvvOiHtOivpemCu+WxheWtkOWbvuWPmOS4uuS4jei/numAmuOAguijgeWJquaOieebruWJjeWcqOi/meS4qumCu+WxheWtkOWbvuS4reWSjCBjYW5kaWRhdGXvvIjnrKzkuIDkuKroioLngrnvvInkuI3ov57pgJrnmoToioLngrlcblxuICAgICAgaWYgKGxlbmd0aHNUb0NhbmRpZGF0ZVt0YXJnZXRJZF0gPT09IEluZmluaXR5KSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlTGFiZWwgPSBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdLS07XG5cbiAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW3RhcmdldE5vZGVMYWJlbF0gPCBwYXR0ZXJuTm9kZUxhYmVsTWFwW3RhcmdldE5vZGVMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaWR4ID0gY2FuZGlkYXRlR3JhcGgubm9kZXMuaW5kZXhPZihjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXS5ub2RlKTtcbiAgICAgICAgY2FuZGlkYXRlR3JhcGgubm9kZXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIHBydW5lNTog57uP6L+H6L656KOB5Ymq5ZCO77yM5Y+v6IO95Y+I5Ye6546w5LqG5pyA55+t6Lev5b6E6L+H6ZW/55qE6IqC54K5IO+8iOavlCBwYXR0ZXJuIOS4reWQjCBsYWJlbCDnmoToioLngrnliLAgYmVnaW5Ob2RlIOacgOWkp+acgOefrei3neemu+i/nO+8ie+8jOWIoOWOu+i/meS6m+iKgueCuVxuXG5cbiAgICAgIHZhciBuTGFiZWwgPSBub2RlTWFwW3RhcmdldElkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuXG4gICAgICBpZiAoIXVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXSB8fCAhdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtuTGFiZWxdLmxlbmd0aCB8fCBsZW5ndGhzVG9DYW5kaWRhdGVbdGFyZ2V0SWRdID4gdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtuTGFiZWxdW3VuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXS5sZW5ndGggLSAxXSkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXS0tO1xuXG4gICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdIDwgcGF0dGVybk5vZGVMYWJlbE1hcFt0YXJnZXROb2RlTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGlkeCA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzLmluZGV4T2YoY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZSk7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cblxuICAgIHZhciBkZWdyZWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICB2YXIgbG9vcENvdW50ID0gMDtcblxuICAgIHdoaWxlIChkZWdyZWVDaGFuZ2VkICYmICFjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGRlZ3JlZUNoYW5nZWQgPSBmYWxzZTsgLy8gY2FuZGlkYXRlIOW6puaVsOS4jei2s++8jOWIoOWOu+ivpeWbvlxuXG4gICAgICB2YXIgY29uZGl0aW9uID0gZGlyZWN0ZWQgPyBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uZGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0uZGVncmVlIHx8IGNhbmRpZGF0ZU5vZGVNYXBbY2FuZGlkYXRlLmlkXS5pbkRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmluRGVncmVlIHx8IGNhbmRpZGF0ZU5vZGVNYXBbY2FuZGlkYXRlLmlkXS5vdXREZWdyZWUgPCBwYXR0ZXJuTm9kZU1hcFtiZWdpblBOb2RlLmlkXS5vdXREZWdyZWUgOiBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uZGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0uZGVncmVlO1xuXG4gICAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSAvLyBjYW5kaWRhdGUgbGFiZWwg5Liq5pWw5LiN6Laz77yM5Yig5Y676K+l5Zu+XG5cblxuICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NhbmRpZGF0ZVtub2RlTGFiZWxQcm9wXV0gPCBwYXR0ZXJuTm9kZUxhYmVsTWFwW2NhbmRpZGF0ZVtub2RlTGFiZWxQcm9wXV0ubGVuZ3RoKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSAvLyBwcnVuZTbvvJrljrvpmaTluqbmlbDov4flsI/nmoToioLngrlcblxuXG4gICAgICB2YXIgY3VycmVudENhbmRpZGF0ZU5vZGVOdW0gPSBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIG8gPSBjdXJyZW50Q2FuZGlkYXRlTm9kZU51bSAtIDE7IG8gPj0gMDsgby0tKSB7XG4gICAgICAgIHZhciBjZ05vZGUgPSBjYW5kaWRhdGVHcmFwaC5ub2Rlc1tvXTtcbiAgICAgICAgdmFyIG5vZGVEZWdyZWUgPSBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0uZGVncmVlO1xuICAgICAgICB2YXIgbm9kZUluRGVncmVlID0gY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdLmluRGVncmVlO1xuICAgICAgICB2YXIgbm9kZU91dERlZ3JlZSA9IGNhbmRpZGF0ZU5vZGVNYXBbY2dOb2RlLmlkXS5vdXREZWdyZWU7XG4gICAgICAgIHZhciBjTm9kZUxhYmVsID0gY2dOb2RlW25vZGVMYWJlbFByb3BdO1xuXG4gICAgICAgIHZhciBfZSA9IHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwLCBjTm9kZUxhYmVsLCBwYXR0ZXJuTm9kZU1hcCwgcGF0dGVybk5vZGVMYWJlbE1hcCksXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID0gX2UubWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IF9lLm1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSxcbiAgICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPSBfZS5taW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlO1xuXG4gICAgICAgIHZhciBkZWxldGVDb25kaXRpb24gPSBkaXJlY3RlZCA/IG5vZGVEZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlIHx8IG5vZGVJbkRlZ3JlZSA8IG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSB8fCBub2RlT3V0RGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA6IG5vZGVEZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlO1xuXG4gICAgICAgIGlmIChkZWxldGVDb25kaXRpb24pIHtcbiAgICAgICAgICBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dLS07IC8vIOiKgueCuSBsYWJlbCDkuKrmlbDkuI3otrNcblxuICAgICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dIDwgcGF0dGVybk5vZGVMYWJlbE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShvLCAxKTtcbiAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCB8fCAhZGVncmVlQ2hhbmdlZCAmJiBsb29wQ291bnQgIT09IDApIGJyZWFrOyAvLyDnu4/ov4cgcHJ1bmU1IOiKgueCueijgeWJqu+8jOWIoOWOu+err+eCueW3sue7j+S4jeWcqCBjYW5kaWRhdGVHcmFwaCDkuK3nmoTovrlcblxuICAgICAgY2FuZGlkYXRlRWRnZU51bSA9IGNhbmRpZGF0ZUVkZ2VzLmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgeSA9IGNhbmRpZGF0ZUVkZ2VOdW0gLSAxOyB5ID49IDA7IHktLSkge1xuICAgICAgICB2YXIgY2VkZ2UgPSBjYW5kaWRhdGVFZGdlc1t5XTtcblxuICAgICAgICBpZiAoIWNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2Uuc291cmNlXSB8fCAhY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdKSB7XG4gICAgICAgICAgY2FuZGlkYXRlRWRnZXMuc3BsaWNlKHksIDEpO1xuICAgICAgICAgIHZhciBlZGdlTGFiZWwgPSBjZWRnZVtlZGdlTGFiZWxQcm9wXTtcbiAgICAgICAgICBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdLS07XG5cbiAgICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdKSB7XG4gICAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0uZGVncmVlLS07XG4gICAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0ub3V0RGVncmVlLS07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdLmRlZ3JlZS0tO1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdLmluRGVncmVlLS07XG4gICAgICAgICAgfSAvLyDovrkgbGFiZWwg5pWw6YeP5LiN6LazXG5cblxuICAgICAgICAgIGlmIChwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF0gJiYgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXSA8IHBhdHRlcm5FZGdlTGFiZWxNYXBbZWRnZUxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZWdyZWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsb29wQ291bnQrKztcbiAgICB9XG5cbiAgICBpZiAoY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9IC8vIHBydW5lOiDoi6XoioLngrkv6L655pWw6L+H5bCR77yM6IqC54K5L+i+uSBsYWJlbCDov4flsJHvvIzljrvmjonov5nkuKrlm75cblxuXG4gICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCB8fCBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5sZW5ndGggPCBwYXR0ZXJuLm5vZGVzLmxlbmd0aCB8fCBjYW5kaWRhdGVFZGdlcy5sZW5ndGggPCBwYXR0ZXJuLmVkZ2VzLmxlbmd0aCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGkgPSBjYW5kaWRhdGVHcmFwaE51bSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8yKGkpO1xuXG4gICAgaWYgKHN0YXRlXzEgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gIH0gLy8g5q2k5pe25bey57uP55Sf5oiQ55qE5aSa5LiqIGNhbmRpZGF0ZUdyYXBoc++8jOWPr+iDveaciemHjeWkjVxuICAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlNTogZ29pbmcgdG8gc3BsaWNlIGR1bHBsaWNhdGVkIGNhbmRpZGF0ZSBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIOWIoOWOuyBjYW5kaWRhdGVHcmFwaHMg5Lit5LiA5qih5LiA5qC355qE5a2Q5Zu+77yM6YCa6L+H6L6555qEIG5vZGUtbm9kZS1lZGdlTGFiZWwg5L2c5Li6IGtlee+8jOi/meexu+i+ueS4quaVsOS9nOS4uiB2YWx1Ze+8jOi/m+ihjOWMuemFjVxuXG5cbiAgdmFyIGN1cnJlbnRMZW5ndGggPSBjYW5kaWRhdGVHcmFwaHMubGVuZ3RoO1xuXG4gIHZhciBfbG9vcF8zID0gZnVuY3Rpb24gX2xvb3BfMyhpKSB7XG4gICAgdmFyIGNnMSA9IGNhbmRpZGF0ZUdyYXBoc1tpXTtcbiAgICB2YXIgY2cxRWRnZU1hcCA9IHt9OyAvLyBbbm9kZTEuaWQtbm9kZTIuaWQtZWRnZS5sYWJlbF06IGNvdW50XG5cbiAgICBjZzEuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2Uuc291cmNlLCBcIi1cIikuY29uY2F0KGVkZ2UudGFyZ2V0LCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwpO1xuICAgICAgaWYgKCFjZzFFZGdlTWFwW2tleV0pIGNnMUVkZ2VNYXBba2V5XSA9IDE7ZWxzZSBjZzFFZGdlTWFwW2tleV0rKztcbiAgICB9KTtcblxuICAgIHZhciBfbG9vcF82ID0gZnVuY3Rpb24gX2xvb3BfNihqKSB7XG4gICAgICB2YXIgY2cyID0gY2FuZGlkYXRlR3JhcGhzW2pdO1xuICAgICAgdmFyIGNnMkVkZ2VNYXAgPSB7fTsgLy8gW25vZGUxLmlkLW5vZGUyLmlkLWVkZ2UubGFiZWxdOiBjb3VudFxuXG4gICAgICBjZzIuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoZWRnZS5zb3VyY2UsIFwiLVwiKS5jb25jYXQoZWRnZS50YXJnZXQsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCk7XG4gICAgICAgIGlmICghY2cyRWRnZU1hcFtrZXldKSBjZzJFZGdlTWFwW2tleV0gPSAxO2Vsc2UgY2cyRWRnZU1hcFtrZXldKys7XG4gICAgICB9KTtcbiAgICAgIHZhciBzYW1lID0gdHJ1ZTtcblxuICAgICAgaWYgKE9iamVjdC5rZXlzKGNnMkVkZ2VNYXApLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoY2cxRWRnZU1hcCkubGVuZ3RoKSB7XG4gICAgICAgIHNhbWUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGNnMUVkZ2VNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIGlmIChjZzJFZGdlTWFwW2tleV0gIT09IGNnMUVkZ2VNYXBba2V5XSkgc2FtZSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNhbWUpIHtcbiAgICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShqLCAxKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaiA9IGN1cnJlbnRMZW5ndGggLSAxOyBqID4gaTsgai0tKSB7XG4gICAgICBfbG9vcF82KGopO1xuICAgIH1cblxuICAgIGN1cnJlbnRMZW5ndGggPSBjYW5kaWRhdGVHcmFwaHMubGVuZ3RoO1xuICB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDw9IGN1cnJlbnRMZW5ndGggLSAxOyBpKyspIHtcbiAgICBfbG9vcF8zKGkpO1xuICB9XG5cbiAgcmV0dXJuIGNhbmRpZGF0ZUdyYXBocztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEdBRERJOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/gaddi.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/i-louvain.js": /*!******************************************************!*\ !*** ./node_modules/@antv/algorithm/es/i-louvain.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _louvain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./louvain */ \"./node_modules/@antv/algorithm/es/louvain.js\");\n\n/**\n * 社区发现 i-louvain 算法:模块度 + 惯性模块度(即节点属性相似性)\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialWeight 惯性模块度权重\n */\n\nvar iLouvain = function iLouvain(graphData, directed, weightPropertyName, threshold, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n }\n\n return Object(_louvain__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, directed, weightPropertyName, threshold, true, inertialWeight);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (iLouvain);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2ktbG91dmFpbi5qcz9kYjJlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLHdEQUFPO0FBQ2hCOztBQUVlLHVFQUFRIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9pLWxvdXZhaW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG91dmFpbiBmcm9tICcuL2xvdXZhaW4nO1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgaS1sb3V2YWluIOeul+azle+8muaooeWdl+W6piArIOaDr+aAp+aooeWdl+W6pu+8iOWNs+iKgueCueWxnuaAp+ebuOS8vOaAp++8iVxuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbmnInlkJHlm77vvIzpu5jorqTkuLogZmFsc2VcbiAqIEBwYXJhbSB3ZWlnaHRQcm9wZXJ0eU5hbWUg5p2D6YeN55qE5bGe5oCn5a2X5q61XG4gKiBAcGFyYW0gdGhyZXNob2xkIOW3ruWAvOmYiOWAvFxuICogQHBhcmFtIGluZXJ0aWFsV2VpZ2h0IOaDr+aAp+aooeWdl+W6puadg+mHjVxuICovXG5cbnZhciBpTG91dmFpbiA9IGZ1bmN0aW9uIGlMb3V2YWluKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSwgdGhyZXNob2xkLCBpbmVydGlhbFdlaWdodCkge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAod2VpZ2h0UHJvcGVydHlOYW1lID09PSB2b2lkIDApIHtcbiAgICB3ZWlnaHRQcm9wZXJ0eU5hbWUgPSAnd2VpZ2h0JztcbiAgfVxuXG4gIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgIHRocmVzaG9sZCA9IDAuMDAwMTtcbiAgfVxuXG4gIGlmIChpbmVydGlhbFdlaWdodCA9PT0gdm9pZCAwKSB7XG4gICAgaW5lcnRpYWxXZWlnaHQgPSAxO1xuICB9XG5cbiAgcmV0dXJuIGxvdXZhaW4oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQsIHRydWUsIGluZXJ0aWFsV2VpZ2h0KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGlMb3V2YWluOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/i-louvain.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/index.js": /*!**************************************************!*\ !*** ./node_modules/@antv/algorithm/es/index.js ***! \**************************************************/ /*! exports provided: getAdjMatrix, breadthFirstSearch, connectedComponent, getDegree, getInDegree, getOutDegree, detectCycle, detectDirectedCycle, detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle, depthFirstSearch, dijkstra, findAllPath, findShortestPath, floydWarshall, labelPropagation, louvain, iLouvain, kCore, kMeans, cosineSimilarity, nodesCosineSimilarity, minimumSpanningTree, pageRank, getNeighbors, Stack, GADDI, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectDirectedCycle\", function() { return detectDirectedCycle; });\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _bfs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bfs */ \"./node_modules/@antv/algorithm/es/bfs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"breadthFirstSearch\", function() { return _bfs__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _connected_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./connected-component */ \"./node_modules/@antv/algorithm/es/connected-component.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"connectedComponent\", function() { return _connected_component__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _degree__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./degree */ \"./node_modules/@antv/algorithm/es/degree.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"getInDegree\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOutDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"getOutDegree\"]; });\n\n/* harmony import */ var _detect_cycle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./detect-cycle */ \"./node_modules/@antv/algorithm/es/detect-cycle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllCycles\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllCycles\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllDirectedCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllDirectedCycle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllUndirectedCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllUndirectedCycle\"]; });\n\n/* harmony import */ var _dfs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dfs */ \"./node_modules/@antv/algorithm/es/dfs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"depthFirstSearch\", function() { return _dfs__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/@antv/algorithm/es/dijkstra.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dijkstra\", function() { return _dijkstra__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _find_path__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./find-path */ \"./node_modules/@antv/algorithm/es/find-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findAllPath\", function() { return _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findAllPath\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findShortestPath\", function() { return _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findShortestPath\"]; });\n\n/* harmony import */ var _floydWarshall__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./floydWarshall */ \"./node_modules/@antv/algorithm/es/floydWarshall.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return _floydWarshall__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _label_propagation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./label-propagation */ \"./node_modules/@antv/algorithm/es/label-propagation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"labelPropagation\", function() { return _label_propagation__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _louvain__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./louvain */ \"./node_modules/@antv/algorithm/es/louvain.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"louvain\", function() { return _louvain__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _i_louvain__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./i-louvain */ \"./node_modules/@antv/algorithm/es/i-louvain.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"iLouvain\", function() { return _i_louvain__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _k_core__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./k-core */ \"./node_modules/@antv/algorithm/es/k-core.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"kCore\", function() { return _k_core__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _k_means__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./k-means */ \"./node_modules/@antv/algorithm/es/k-means.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"kMeans\", function() { return _k_means__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _cosine_similarity__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./cosine-similarity */ \"./node_modules/@antv/algorithm/es/cosine-similarity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cosineSimilarity\", function() { return _cosine_similarity__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _nodes_cosine_similarity__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./nodes-cosine-similarity */ \"./node_modules/@antv/algorithm/es/nodes-cosine-similarity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"nodesCosineSimilarity\", function() { return _nodes_cosine_similarity__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _mts__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./mts */ \"./node_modules/@antv/algorithm/es/mts.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"minimumSpanningTree\", function() { return _mts__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _pageRank__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./pageRank */ \"./node_modules/@antv/algorithm/es/pageRank.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pageRank\", function() { return _pageRank__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _gaddi__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./gaddi */ \"./node_modules/@antv/algorithm/es/gaddi.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GADDI\", function() { return _gaddi__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _structs_stack__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./structs/stack */ \"./node_modules/@antv/algorithm/es/structs/stack.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Stack\", function() { return _structs_stack__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNeighbors\", function() { return _util__WEBPACK_IMPORTED_MODULE_20__[\"getNeighbors\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar detectDirectedCycle = _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getAdjMatrix: _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n breadthFirstSearch: _bfs__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n connectedComponent: _connected_component__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n getDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n getInDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"getInDegree\"],\n getOutDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"getOutDegree\"],\n detectCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n detectDirectedCycle: detectDirectedCycle,\n detectAllCycles: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllCycles\"],\n detectAllDirectedCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllDirectedCycle\"],\n detectAllUndirectedCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllUndirectedCycle\"],\n depthFirstSearch: _dfs__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n dijkstra: _dijkstra__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n findAllPath: _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findAllPath\"],\n findShortestPath: _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findShortestPath\"],\n floydWarshall: _floydWarshall__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n labelPropagation: _label_propagation__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n louvain: _louvain__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n iLouvain: _i_louvain__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n kCore: _k_core__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n kMeans: _k_means__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n cosineSimilarity: _cosine_similarity__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n nodesCosineSimilarity: _nodes_cosine_similarity__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n minimumSpanningTree: _mts__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n pageRank: _pageRank__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n getNeighbors: _util__WEBPACK_IMPORTED_MODULE_20__[\"getNeighbors\"],\n Stack: _structs_stack__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n GADDI: _gaddi__WEBPACK_IMPORTED_MODULE_18__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2luZGV4LmpzPzk3YjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QztBQUNOO0FBQ2dCO0FBQ3RCO0FBQ29CO0FBQzJEO0FBQzNFO0FBQ0g7QUFDMEI7QUFDaEI7QUFDTztBQUNuQjtBQUNHO0FBQ047QUFDRTtBQUNvQjtBQUNXO0FBQ3RCO0FBQ047QUFDTjtBQUNRO0FBQ0U7QUFDdEMsMEJBQTBCLHFEQUFXO0FBQ3dZO0FBQzlaO0FBQ2YsZ0JBQWdCLHdEQUFZO0FBQzVCLHNCQUFzQiw0Q0FBa0I7QUFDeEMsc0JBQXNCLDREQUFrQjtBQUN4QyxhQUFhLCtDQUFTO0FBQ3RCLGVBQWUsbURBQVc7QUFDMUIsZ0JBQWdCLG9EQUFZO0FBQzVCLGVBQWUscURBQVc7QUFDMUI7QUFDQSxtQkFBbUIsNkRBQWU7QUFDbEMsMEJBQTBCLG9FQUFzQjtBQUNoRCw0QkFBNEIsc0VBQXdCO0FBQ3BELG9CQUFvQiw0Q0FBZ0I7QUFDcEMsWUFBWSxpREFBUTtBQUNwQixlQUFlLHNEQUFXO0FBQzFCLG9CQUFvQiwyREFBZ0I7QUFDcEMsaUJBQWlCLHNEQUFhO0FBQzlCLG9CQUFvQiwwREFBZ0I7QUFDcEMsV0FBVyxpREFBTztBQUNsQixZQUFZLG1EQUFRO0FBQ3BCLFNBQVMsZ0RBQUs7QUFDZCxVQUFVLGlEQUFNO0FBQ2hCLG9CQUFvQiwyREFBZ0I7QUFDcEMseUJBQXlCLGlFQUFxQjtBQUM5Qyx1QkFBdUIsNkNBQW1CO0FBQzFDLFlBQVksa0RBQVE7QUFDcEIsZ0JBQWdCLG1EQUFZO0FBQzVCLFNBQVMsdURBQUs7QUFDZCxTQUFTLCtDQUFLO0FBQ2QsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0QWRqTWF0cml4IGZyb20gJy4vYWRqYWNlbnQtbWF0cml4JztcbmltcG9ydCBicmVhZHRoRmlyc3RTZWFyY2ggZnJvbSAnLi9iZnMnO1xuaW1wb3J0IGNvbm5lY3RlZENvbXBvbmVudCBmcm9tICcuL2Nvbm5lY3RlZC1jb21wb25lbnQnO1xuaW1wb3J0IGdldERlZ3JlZSBmcm9tICcuL2RlZ3JlZSc7XG5pbXBvcnQgeyBnZXRJbkRlZ3JlZSwgZ2V0T3V0RGVncmVlIH0gZnJvbSAnLi9kZWdyZWUnO1xuaW1wb3J0IGRldGVjdEN5Y2xlLCB7IGRldGVjdEFsbEN5Y2xlcywgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSwgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlIH0gZnJvbSAnLi9kZXRlY3QtY3ljbGUnO1xuaW1wb3J0IGRlcHRoRmlyc3RTZWFyY2ggZnJvbSAnLi9kZnMnO1xuaW1wb3J0IGRpamtzdHJhIGZyb20gJy4vZGlqa3N0cmEnO1xuaW1wb3J0IHsgZmluZEFsbFBhdGgsIGZpbmRTaG9ydGVzdFBhdGggfSBmcm9tICcuL2ZpbmQtcGF0aCc7XG5pbXBvcnQgZmxveWRXYXJzaGFsbCBmcm9tICcuL2Zsb3lkV2Fyc2hhbGwnO1xuaW1wb3J0IGxhYmVsUHJvcGFnYXRpb24gZnJvbSAnLi9sYWJlbC1wcm9wYWdhdGlvbic7XG5pbXBvcnQgbG91dmFpbiBmcm9tICcuL2xvdXZhaW4nO1xuaW1wb3J0IGlMb3V2YWluIGZyb20gJy4vaS1sb3V2YWluJztcbmltcG9ydCBrQ29yZSBmcm9tICcuL2stY29yZSc7XG5pbXBvcnQga01lYW5zIGZyb20gJy4vay1tZWFucyc7XG5pbXBvcnQgY29zaW5lU2ltaWxhcml0eSBmcm9tICcuL2Nvc2luZS1zaW1pbGFyaXR5JztcbmltcG9ydCBub2Rlc0Nvc2luZVNpbWlsYXJpdHkgZnJvbSAnLi9ub2Rlcy1jb3NpbmUtc2ltaWxhcml0eSc7XG5pbXBvcnQgbWluaW11bVNwYW5uaW5nVHJlZSBmcm9tICcuL210cyc7XG5pbXBvcnQgcGFnZVJhbmsgZnJvbSAnLi9wYWdlUmFuayc7XG5pbXBvcnQgR0FEREkgZnJvbSAnLi9nYWRkaSc7XG5pbXBvcnQgU3RhY2sgZnJvbSAnLi9zdHJ1Y3RzL3N0YWNrJztcbmltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG52YXIgZGV0ZWN0RGlyZWN0ZWRDeWNsZSA9IGRldGVjdEN5Y2xlO1xuZXhwb3J0IHsgZ2V0QWRqTWF0cml4LCBicmVhZHRoRmlyc3RTZWFyY2gsIGNvbm5lY3RlZENvbXBvbmVudCwgZ2V0RGVncmVlLCBnZXRJbkRlZ3JlZSwgZ2V0T3V0RGVncmVlLCBkZXRlY3RDeWNsZSwgZGV0ZWN0RGlyZWN0ZWRDeWNsZSwgZGV0ZWN0QWxsQ3ljbGVzLCBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlLCBkZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGUsIGRlcHRoRmlyc3RTZWFyY2gsIGRpamtzdHJhLCBmaW5kQWxsUGF0aCwgZmluZFNob3J0ZXN0UGF0aCwgZmxveWRXYXJzaGFsbCwgbGFiZWxQcm9wYWdhdGlvbiwgbG91dmFpbiwgaUxvdXZhaW4sIGtDb3JlLCBrTWVhbnMsIGNvc2luZVNpbWlsYXJpdHksIG5vZGVzQ29zaW5lU2ltaWxhcml0eSwgbWluaW11bVNwYW5uaW5nVHJlZSwgcGFnZVJhbmssIGdldE5laWdoYm9ycywgU3RhY2ssIEdBRERJIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldEFkak1hdHJpeDogZ2V0QWRqTWF0cml4LFxuICBicmVhZHRoRmlyc3RTZWFyY2g6IGJyZWFkdGhGaXJzdFNlYXJjaCxcbiAgY29ubmVjdGVkQ29tcG9uZW50OiBjb25uZWN0ZWRDb21wb25lbnQsXG4gIGdldERlZ3JlZTogZ2V0RGVncmVlLFxuICBnZXRJbkRlZ3JlZTogZ2V0SW5EZWdyZWUsXG4gIGdldE91dERlZ3JlZTogZ2V0T3V0RGVncmVlLFxuICBkZXRlY3RDeWNsZTogZGV0ZWN0Q3ljbGUsXG4gIGRldGVjdERpcmVjdGVkQ3ljbGU6IGRldGVjdERpcmVjdGVkQ3ljbGUsXG4gIGRldGVjdEFsbEN5Y2xlczogZGV0ZWN0QWxsQ3ljbGVzLFxuICBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlOiBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlLFxuICBkZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGU6IGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSxcbiAgZGVwdGhGaXJzdFNlYXJjaDogZGVwdGhGaXJzdFNlYXJjaCxcbiAgZGlqa3N0cmE6IGRpamtzdHJhLFxuICBmaW5kQWxsUGF0aDogZmluZEFsbFBhdGgsXG4gIGZpbmRTaG9ydGVzdFBhdGg6IGZpbmRTaG9ydGVzdFBhdGgsXG4gIGZsb3lkV2Fyc2hhbGw6IGZsb3lkV2Fyc2hhbGwsXG4gIGxhYmVsUHJvcGFnYXRpb246IGxhYmVsUHJvcGFnYXRpb24sXG4gIGxvdXZhaW46IGxvdXZhaW4sXG4gIGlMb3V2YWluOiBpTG91dmFpbixcbiAga0NvcmU6IGtDb3JlLFxuICBrTWVhbnM6IGtNZWFucyxcbiAgY29zaW5lU2ltaWxhcml0eTogY29zaW5lU2ltaWxhcml0eSxcbiAgbm9kZXNDb3NpbmVTaW1pbGFyaXR5OiBub2Rlc0Nvc2luZVNpbWlsYXJpdHksXG4gIG1pbmltdW1TcGFubmluZ1RyZWU6IG1pbmltdW1TcGFubmluZ1RyZWUsXG4gIHBhZ2VSYW5rOiBwYWdlUmFuayxcbiAgZ2V0TmVpZ2hib3JzOiBnZXROZWlnaGJvcnMsXG4gIFN0YWNrOiBTdGFjayxcbiAgR0FEREk6IEdBRERJXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/index.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/k-core.js": /*!***************************************************!*\ !*** ./node_modules/@antv/algorithm/es/k-core.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _degree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./degree */ \"./node_modules/@antv/algorithm/es/degree.js\");\n\n\n/**\n * k-core算法 找出符合指定核心度的紧密关联的子图结构\n * @param graphData 图数据\n * @param k 核心度数\n */\n\nvar kCore = function kCore(graphData, k) {\n var _a;\n\n if (k === void 0) {\n k = 1;\n }\n\n var data = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(graphData);\n var _b = data.nodes,\n nodes = _b === void 0 ? [] : _b;\n var _c = data.edges,\n edges = _c === void 0 ? [] : _c;\n\n var _loop_1 = function _loop_1() {\n // 获取图中节点的度数\n var degrees = Object(_degree__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n nodes: nodes,\n edges: edges\n });\n var nodeIds = Object.keys(degrees); // 按照度数进行排序\n\n nodeIds.sort(function (a, b) {\n var _a, _b;\n\n return ((_a = degrees[a]) === null || _a === void 0 ? void 0 : _a.degree) - ((_b = degrees[b]) === null || _b === void 0 ? void 0 : _b.degree);\n });\n var minIndexId = nodeIds[0];\n\n if (!nodes.length || ((_a = degrees[minIndexId]) === null || _a === void 0 ? void 0 : _a.degree) >= k) {\n return \"break\";\n }\n\n var originIndex = nodes.findIndex(function (node) {\n return node.id === minIndexId;\n }); // 移除度数小于k的节点\n\n nodes.splice(originIndex, 1); // 移除度数小于k的节点相关的边\n\n edges = edges.filter(function (edge) {\n return !(edge.source === minIndexId || edge.target === minIndexId);\n });\n };\n\n while (true) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n }\n\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (kCore);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2stY29yZS5qcz8xYTdlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNMO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSx3REFBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLHVEQUFNO0FBQ3hCO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsdUNBQXVDOztBQUV2QztBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxvRUFBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvay1jb3JlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBkZWdyZWUgZnJvbSAnLi9kZWdyZWUnO1xuLyoqXG4gKiAgay1jb3Jl566X5rOVIOaJvuWHuuespuWQiOaMh+WumuaguOW/g+W6pueahOe0p+WvhuWFs+iBlOeahOWtkOWbvue7k+aehFxuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqIEBwYXJhbSBrIOaguOW/g+W6puaVsFxuICovXG5cbnZhciBrQ29yZSA9IGZ1bmN0aW9uIGtDb3JlKGdyYXBoRGF0YSwgaykge1xuICB2YXIgX2E7XG5cbiAgaWYgKGsgPT09IHZvaWQgMCkge1xuICAgIGsgPSAxO1xuICB9XG5cbiAgdmFyIGRhdGEgPSBjbG9uZShncmFwaERhdGEpO1xuICB2YXIgX2IgPSBkYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIF9jID0gZGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2MgPT09IHZvaWQgMCA/IFtdIDogX2M7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgIC8vIOiOt+WPluWbvuS4reiKgueCueeahOW6puaVsFxuICAgIHZhciBkZWdyZWVzID0gZGVncmVlKHtcbiAgICAgIG5vZGVzOiBub2RlcyxcbiAgICAgIGVkZ2VzOiBlZGdlc1xuICAgIH0pO1xuICAgIHZhciBub2RlSWRzID0gT2JqZWN0LmtleXMoZGVncmVlcyk7IC8vIOaMieeFp+W6puaVsOi/m+ihjOaOkuW6j1xuXG4gICAgbm9kZUlkcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICB2YXIgX2EsIF9iO1xuXG4gICAgICByZXR1cm4gKChfYSA9IGRlZ3JlZXNbYV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWdyZWUpIC0gKChfYiA9IGRlZ3JlZXNbYl0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5kZWdyZWUpO1xuICAgIH0pO1xuICAgIHZhciBtaW5JbmRleElkID0gbm9kZUlkc1swXTtcblxuICAgIGlmICghbm9kZXMubGVuZ3RoIHx8ICgoX2EgPSBkZWdyZWVzW21pbkluZGV4SWRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVncmVlKSA+PSBrKSB7XG4gICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgIH1cblxuICAgIHZhciBvcmlnaW5JbmRleCA9IG5vZGVzLmZpbmRJbmRleChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG1pbkluZGV4SWQ7XG4gICAgfSk7IC8vIOenu+mZpOW6puaVsOWwj+S6jmvnmoToioLngrlcblxuICAgIG5vZGVzLnNwbGljZShvcmlnaW5JbmRleCwgMSk7IC8vIOenu+mZpOW6puaVsOWwj+S6jmvnmoToioLngrnnm7jlhbPnmoTovrlcblxuICAgIGVkZ2VzID0gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gIShlZGdlLnNvdXJjZSA9PT0gbWluSW5kZXhJZCB8fCBlZGdlLnRhcmdldCA9PT0gbWluSW5kZXhJZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICB2YXIgc3RhdGVfMSA9IF9sb29wXzEoKTtcblxuICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBub2Rlczogbm9kZXMsXG4gICAgZWRnZXM6IGVkZ2VzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBrQ29yZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/k-core.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/k-means.js": /*!****************************************************!*\ !*** ./node_modules/@antv/algorithm/es/k-means.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_node_properties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/node-properties */ \"./node_modules/@antv/algorithm/es/utils/node-properties.js\");\n/* harmony import */ var _utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/data-preprocessing */ \"./node_modules/@antv/algorithm/es/utils/data-preprocessing.js\");\n/* harmony import */ var _utils_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/vector */ \"./node_modules/@antv/algorithm/es/utils/vector.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ \"./node_modules/@antv/algorithm/es/types.js\");\n\n\n\n\n/**\n * k-means算法 根据节点属性之间的欧氏距离将节点聚类为K个簇\n * @param data 图数据\n * @param k 质心(聚类中心)个数\n * @param seedNode 种子节点\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n * @param propertyKey 属性的字段名\n * @param distanceType 距离类型\n */\n\nvar kMeans = function kMeans(data, k, involvedKeys, uninvolvedKeys, propertyKey, distanceType) {\n if (k === void 0) {\n k = 3;\n }\n\n if (involvedKeys === void 0) {\n involvedKeys = [];\n }\n\n if (uninvolvedKeys === void 0) {\n uninvolvedKeys = [];\n }\n\n if (propertyKey === void 0) {\n propertyKey = 'properties';\n }\n\n if (distanceType === void 0) {\n distanceType = _types__WEBPACK_IMPORTED_MODULE_3__[\"DistanceType\"].EuclideanDistance;\n }\n\n var nodes = data.nodes,\n edges = data.edges; // 所有节点属性集合\n\n var properties = Object(_utils_node_properties__WEBPACK_IMPORTED_MODULE_0__[\"getAllProperties\"])(nodes, propertyKey); // 所有节点属性one-hot特征向量集合s\n\n var allPropertiesWeight = Object(_utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_1__[\"oneHot\"])(properties, involvedKeys, uninvolvedKeys); // 记录节点的原始index,与allPropertiesWeight对应\n\n for (var i = 0; i < nodes.length; i++) {\n nodes[i].originIndex = i;\n } // 初始化质心(聚类中心)\n\n\n var centroids = [];\n var centroidIndexList = [];\n var clusters = [];\n\n for (var i = 0; i < k; i++) {\n if (i === 0) {\n // 随机选取质心(聚类中心)\n var randomIndex = Math.floor(Math.random() * nodes.length);\n centroids[i] = allPropertiesWeight[randomIndex];\n centroidIndexList.push(randomIndex);\n clusters[i] = [nodes[randomIndex]];\n nodes[randomIndex].clusterId = String(i);\n } else {\n var maxDistance = -Infinity;\n var maxDistanceIndex = 0; // 选取与已有质心平均距离最远的点做为新的质心\n\n for (var m = 0; m < nodes.length; m++) {\n if (!centroidIndexList.includes(m)) {\n var totalDistance = 0;\n\n for (var j = 0; j < centroids.length; j++) {\n // 求节点到质心距离(默认欧式距离)\n var distance = Object(_utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_1__[\"getDistance\"])(allPropertiesWeight[nodes[m].originIndex], centroids[j], distanceType);\n totalDistance += distance;\n } // 节点到各质心的平均距离(默认欧式距离)\n\n\n var avgDistance = totalDistance / centroids.length; // 记录到已有质心最远的的距离和节点索引\n\n if (avgDistance > maxDistance) {\n maxDistance = avgDistance;\n maxDistanceIndex = m;\n }\n }\n }\n\n centroids[i] = allPropertiesWeight[maxDistanceIndex];\n centroidIndexList.push(maxDistanceIndex);\n clusters[i] = [nodes[maxDistanceIndex]];\n nodes[maxDistanceIndex].clusterId = String(i);\n }\n }\n\n var iterations = 0;\n\n while (true) {\n for (var i = 0; i < nodes.length; i++) {\n var minDistanceIndex = 0;\n var minDistance = Infinity;\n\n if (!(iterations === 0 && centroidIndexList.includes(i))) {\n for (var j = 0; j < centroids.length; j++) {\n // 求节点到质心的距离(默认欧式距离)\n var distance = Object(_utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_1__[\"getDistance\"])(allPropertiesWeight[i], centroids[j], distanceType); // 记录节点最近的质心的索引\n\n if (distance < minDistance) {\n minDistance = distance;\n minDistanceIndex = j;\n }\n } // 从原来的类别删除节点\n\n\n if (nodes[i].clusterId !== String(minDistanceIndex)) {\n for (var n = 0; n < clusters[minDistanceIndex].length; n++) {\n if (clusters[minDistanceIndex][n].id === nodes[i].id) {\n clusters[minDistanceIndex].splice(n, 1);\n }\n } // 将节点划分到距离最小的质心(聚类中心)所对应的类中\n\n\n clusters[minDistanceIndex].push(nodes[i]);\n nodes[i].clusterId = String(minDistanceIndex);\n }\n }\n } // 是否存在质心(聚类中心)移动\n\n\n var centroidsEqualAvg = false;\n\n for (var i = 0; i < clusters.length; i++) {\n var clusterNodes = clusters[i];\n var totalVector = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"]([]);\n\n for (var j = 0; j < clusterNodes.length; j++) {\n totalVector = totalVector.add(new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[clusterNodes[j].originIndex]));\n } // 计算每个类别的均值向量\n\n\n var avgVector = totalVector.avg(clusterNodes.length); // 如果均值向量不等于质心向量\n\n if (!avgVector.equal(new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](centroids[i]))) {\n centroidsEqualAvg = true; // 移动/更新每个类别的质心(聚类中心)到该均值向量\n\n centroids[i] = avgVector.getArr();\n }\n }\n\n iterations++; // 如果不存在质心(聚类中心)移动或者迭代次数超过1000,则停止\n\n if (centroidsEqualAvg || iterations >= 1000) {\n break;\n }\n } // get the cluster edges\n\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var _a, _b;\n\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = (_a = nodes.find(function (node) {\n return node.id === source;\n })) === null || _a === void 0 ? void 0 : _a.clusterId;\n var targetClusterId = (_b = nodes.find(function (node) {\n return node.id === target;\n })) === null || _b === void 0 ? void 0 : _b.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n return {\n clusters: clusters,\n clusterEdges: clusterEdges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (kMeans);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2stbWVhbnMuanM/MTIyYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTJEO0FBQ007QUFDN0I7QUFDRztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixtREFBWTtBQUMvQjs7QUFFQTtBQUNBLHlCQUF5Qjs7QUFFekIsbUJBQW1CLCtFQUFnQixxQkFBcUI7O0FBRXhELDRCQUE0Qix3RUFBTSwyQ0FBMkM7O0FBRTdFLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSwrQkFBK0I7O0FBRS9CLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTs7QUFFQSx5QkFBeUIsc0JBQXNCO0FBQy9DO0FBQ0EsMkJBQTJCLDZFQUFXO0FBQ3RDO0FBQ0EsV0FBVzs7O0FBR1gsNkRBQTZEOztBQUU3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBLHlCQUF5Qiw2RUFBVyxxREFBcUQ7O0FBRXpGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQSx5QkFBeUIsdUNBQXVDO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7O0FBRUEsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBLDRCQUE0QixxREFBTTs7QUFFbEMscUJBQXFCLHlCQUF5QjtBQUM5QywwQ0FBMEMscURBQU07QUFDaEQsT0FBTzs7O0FBR1AsMkRBQTJEOztBQUUzRCwrQkFBK0IscURBQU07QUFDckMsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLHFFQUFNIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9rLW1lYW5zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0QWxsUHJvcGVydGllcyB9IGZyb20gJy4vdXRpbHMvbm9kZS1wcm9wZXJ0aWVzJztcbmltcG9ydCB7IG9uZUhvdCwgZ2V0RGlzdGFuY2UgfSBmcm9tICcuL3V0aWxzL2RhdGEtcHJlcHJvY2Vzc2luZyc7XG5pbXBvcnQgVmVjdG9yIGZyb20gJy4vdXRpbHMvdmVjdG9yJztcbmltcG9ydCB7IERpc3RhbmNlVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuLyoqXG4gKiAgay1tZWFuc+eul+azlSDmoLnmja7oioLngrnlsZ7mgKfkuYvpl7TnmoTmrKfmsI/ot53nprvlsIboioLngrnogZrnsbvkuLpL5Liq57CHXG4gKiBAcGFyYW0gZGF0YSDlm77mlbDmja5cbiAqIEBwYXJhbSBrIOi0qOW/g++8iOiBmuexu+S4reW/g++8ieS4quaVsFxuICogQHBhcmFtIHNlZWROb2RlIOenjeWtkOiKgueCuVxuICogQHBhcmFtIGludm9sdmVkS2V5cyDlj4LkuI7orqHnrpfnmoRrZXnpm4blkIhcbiAqIEBwYXJhbSB1bmludm9sdmVkS2V5cyDkuI3lj4LkuI7orqHnrpfnmoRrZXnpm4blkIhcbiAqIEBwYXJhbSBwcm9wZXJ0eUtleSDlsZ7mgKfnmoTlrZfmrrXlkI1cbiAqIEBwYXJhbSBkaXN0YW5jZVR5cGUg6Led56a757G75Z6LXG4gKi9cblxudmFyIGtNZWFucyA9IGZ1bmN0aW9uIGtNZWFucyhkYXRhLCBrLCBpbnZvbHZlZEtleXMsIHVuaW52b2x2ZWRLZXlzLCBwcm9wZXJ0eUtleSwgZGlzdGFuY2VUeXBlKSB7XG4gIGlmIChrID09PSB2b2lkIDApIHtcbiAgICBrID0gMztcbiAgfVxuXG4gIGlmIChpbnZvbHZlZEtleXMgPT09IHZvaWQgMCkge1xuICAgIGludm9sdmVkS2V5cyA9IFtdO1xuICB9XG5cbiAgaWYgKHVuaW52b2x2ZWRLZXlzID09PSB2b2lkIDApIHtcbiAgICB1bmludm9sdmVkS2V5cyA9IFtdO1xuICB9XG5cbiAgaWYgKHByb3BlcnR5S2V5ID09PSB2b2lkIDApIHtcbiAgICBwcm9wZXJ0eUtleSA9ICdwcm9wZXJ0aWVzJztcbiAgfVxuXG4gIGlmIChkaXN0YW5jZVR5cGUgPT09IHZvaWQgMCkge1xuICAgIGRpc3RhbmNlVHlwZSA9IERpc3RhbmNlVHlwZS5FdWNsaWRlYW5EaXN0YW5jZTtcbiAgfVxuXG4gIHZhciBub2RlcyA9IGRhdGEubm9kZXMsXG4gICAgICBlZGdlcyA9IGRhdGEuZWRnZXM7IC8vIOaJgOacieiKgueCueWxnuaAp+mbhuWQiFxuXG4gIHZhciBwcm9wZXJ0aWVzID0gZ2V0QWxsUHJvcGVydGllcyhub2RlcywgcHJvcGVydHlLZXkpOyAvLyDmiYDmnInoioLngrnlsZ7mgKdvbmUtaG9054m55b6B5ZCR6YeP6ZuG5ZCIc1xuXG4gIHZhciBhbGxQcm9wZXJ0aWVzV2VpZ2h0ID0gb25lSG90KHByb3BlcnRpZXMsIGludm9sdmVkS2V5cywgdW5pbnZvbHZlZEtleXMpOyAvLyDorrDlvZXoioLngrnnmoTljp/lp4tpbmRleO+8jOS4jmFsbFByb3BlcnRpZXNXZWlnaHTlr7nlupRcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZXNbaV0ub3JpZ2luSW5kZXggPSBpO1xuICB9IC8vIOWIneWni+WMlui0qOW/g++8iOiBmuexu+S4reW/g++8iVxuXG5cbiAgdmFyIGNlbnRyb2lkcyA9IFtdO1xuICB2YXIgY2VudHJvaWRJbmRleExpc3QgPSBbXTtcbiAgdmFyIGNsdXN0ZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrOyBpKyspIHtcbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgLy8g6ZqP5py66YCJ5Y+W6LSo5b+D77yI6IGa57G75Lit5b+D77yJXG4gICAgICB2YXIgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBub2Rlcy5sZW5ndGgpO1xuICAgICAgY2VudHJvaWRzW2ldID0gYWxsUHJvcGVydGllc1dlaWdodFtyYW5kb21JbmRleF07XG4gICAgICBjZW50cm9pZEluZGV4TGlzdC5wdXNoKHJhbmRvbUluZGV4KTtcbiAgICAgIGNsdXN0ZXJzW2ldID0gW25vZGVzW3JhbmRvbUluZGV4XV07XG4gICAgICBub2Rlc1tyYW5kb21JbmRleF0uY2x1c3RlcklkID0gU3RyaW5nKGkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbWF4RGlzdGFuY2UgPSAtSW5maW5pdHk7XG4gICAgICB2YXIgbWF4RGlzdGFuY2VJbmRleCA9IDA7IC8vIOmAieWPluS4juW3suaciei0qOW/g+W5s+Wdh+i3neemu+acgOi/nOeahOeCueWBmuS4uuaWsOeahOi0qOW/g1xuXG4gICAgICBmb3IgKHZhciBtID0gMDsgbSA8IG5vZGVzLmxlbmd0aDsgbSsrKSB7XG4gICAgICAgIGlmICghY2VudHJvaWRJbmRleExpc3QuaW5jbHVkZXMobSkpIHtcbiAgICAgICAgICB2YXIgdG90YWxEaXN0YW5jZSA9IDA7XG5cbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNlbnRyb2lkcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgLy8g5rGC6IqC54K55Yiw6LSo5b+D6Led56a777yI6buY6K6k5qyn5byP6Led56a777yJXG4gICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSBnZXREaXN0YW5jZShhbGxQcm9wZXJ0aWVzV2VpZ2h0W25vZGVzW21dLm9yaWdpbkluZGV4XSwgY2VudHJvaWRzW2pdLCBkaXN0YW5jZVR5cGUpO1xuICAgICAgICAgICAgdG90YWxEaXN0YW5jZSArPSBkaXN0YW5jZTtcbiAgICAgICAgICB9IC8vIOiKgueCueWIsOWQhOi0qOW/g+eahOW5s+Wdh+i3neemu++8iOm7mOiupOasp+W8j+i3neemu++8iVxuXG5cbiAgICAgICAgICB2YXIgYXZnRGlzdGFuY2UgPSB0b3RhbERpc3RhbmNlIC8gY2VudHJvaWRzLmxlbmd0aDsgLy8g6K6w5b2V5Yiw5bey5pyJ6LSo5b+D5pyA6L+c55qE55qE6Led56a75ZKM6IqC54K557Si5byVXG5cbiAgICAgICAgICBpZiAoYXZnRGlzdGFuY2UgPiBtYXhEaXN0YW5jZSkge1xuICAgICAgICAgICAgbWF4RGlzdGFuY2UgPSBhdmdEaXN0YW5jZTtcbiAgICAgICAgICAgIG1heERpc3RhbmNlSW5kZXggPSBtO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjZW50cm9pZHNbaV0gPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W21heERpc3RhbmNlSW5kZXhdO1xuICAgICAgY2VudHJvaWRJbmRleExpc3QucHVzaChtYXhEaXN0YW5jZUluZGV4KTtcbiAgICAgIGNsdXN0ZXJzW2ldID0gW25vZGVzW21heERpc3RhbmNlSW5kZXhdXTtcbiAgICAgIG5vZGVzW21heERpc3RhbmNlSW5kZXhdLmNsdXN0ZXJJZCA9IFN0cmluZyhpKTtcbiAgICB9XG4gIH1cblxuICB2YXIgaXRlcmF0aW9ucyA9IDA7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbWluRGlzdGFuY2VJbmRleCA9IDA7XG4gICAgICB2YXIgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcblxuICAgICAgaWYgKCEoaXRlcmF0aW9ucyA9PT0gMCAmJiBjZW50cm9pZEluZGV4TGlzdC5pbmNsdWRlcyhpKSkpIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjZW50cm9pZHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAvLyDmsYLoioLngrnliLDotKjlv4PnmoTot53nprvvvIjpu5jorqTmrKflvI/ot53nprvvvIlcbiAgICAgICAgICB2YXIgZGlzdGFuY2UgPSBnZXREaXN0YW5jZShhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldLCBjZW50cm9pZHNbal0sIGRpc3RhbmNlVHlwZSk7IC8vIOiusOW9leiKgueCueacgOi/keeahOi0qOW/g+eahOe0ouW8lVxuXG4gICAgICAgICAgaWYgKGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICAgICAgICBtaW5EaXN0YW5jZUluZGV4ID0gajtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8g5LuO5Y6f5p2l55qE57G75Yir5Yig6Zmk6IqC54K5XG5cblxuICAgICAgICBpZiAobm9kZXNbaV0uY2x1c3RlcklkICE9PSBTdHJpbmcobWluRGlzdGFuY2VJbmRleCkpIHtcbiAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGNsdXN0ZXJzW21pbkRpc3RhbmNlSW5kZXhdLmxlbmd0aDsgbisrKSB7XG4gICAgICAgICAgICBpZiAoY2x1c3RlcnNbbWluRGlzdGFuY2VJbmRleF1bbl0uaWQgPT09IG5vZGVzW2ldLmlkKSB7XG4gICAgICAgICAgICAgIGNsdXN0ZXJzW21pbkRpc3RhbmNlSW5kZXhdLnNwbGljZShuLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IC8vIOWwhuiKgueCueWIkuWIhuWIsOi3neemu+acgOWwj+eahOi0qOW/g++8iOiBmuexu+S4reW/g++8ieaJgOWvueW6lOeahOexu+S4rVxuXG5cbiAgICAgICAgICBjbHVzdGVyc1ttaW5EaXN0YW5jZUluZGV4XS5wdXNoKG5vZGVzW2ldKTtcbiAgICAgICAgICBub2Rlc1tpXS5jbHVzdGVySWQgPSBTdHJpbmcobWluRGlzdGFuY2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIOaYr+WQpuWtmOWcqOi0qOW/g++8iOiBmuexu+S4reW/g++8ieenu+WKqFxuXG5cbiAgICB2YXIgY2VudHJvaWRzRXF1YWxBdmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2x1c3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjbHVzdGVyTm9kZXMgPSBjbHVzdGVyc1tpXTtcbiAgICAgIHZhciB0b3RhbFZlY3RvciA9IG5ldyBWZWN0b3IoW10pO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNsdXN0ZXJOb2Rlcy5sZW5ndGg7IGorKykge1xuICAgICAgICB0b3RhbFZlY3RvciA9IHRvdGFsVmVjdG9yLmFkZChuZXcgVmVjdG9yKGFsbFByb3BlcnRpZXNXZWlnaHRbY2x1c3Rlck5vZGVzW2pdLm9yaWdpbkluZGV4XSkpO1xuICAgICAgfSAvLyDorqHnrpfmr4/kuKrnsbvliKvnmoTlnYflgLzlkJHph49cblxuXG4gICAgICB2YXIgYXZnVmVjdG9yID0gdG90YWxWZWN0b3IuYXZnKGNsdXN0ZXJOb2Rlcy5sZW5ndGgpOyAvLyDlpoLmnpzlnYflgLzlkJHph4/kuI3nrYnkuo7otKjlv4PlkJHph49cblxuICAgICAgaWYgKCFhdmdWZWN0b3IuZXF1YWwobmV3IFZlY3RvcihjZW50cm9pZHNbaV0pKSkge1xuICAgICAgICBjZW50cm9pZHNFcXVhbEF2ZyA9IHRydWU7IC8vIOenu+WKqC/mm7TmlrDmr4/kuKrnsbvliKvnmoTotKjlv4PvvIjogZrnsbvkuK3lv4PvvInliLDor6XlnYflgLzlkJHph49cblxuICAgICAgICBjZW50cm9pZHNbaV0gPSBhdmdWZWN0b3IuZ2V0QXJyKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaXRlcmF0aW9ucysrOyAvLyDlpoLmnpzkuI3lrZjlnKjotKjlv4PvvIjogZrnsbvkuK3lv4PvvInnp7vliqjmiJbogIXov63ku6PmrKHmlbDotoXov4cxMDAw77yM5YiZ5YGc5q2iXG5cbiAgICBpZiAoY2VudHJvaWRzRXF1YWxBdmcgfHwgaXRlcmF0aW9ucyA+PSAxMDAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH0gLy8gZ2V0IHRoZSBjbHVzdGVyIGVkZ2VzXG5cblxuICB2YXIgY2x1c3RlckVkZ2VzID0gW107XG4gIHZhciBjbHVzdGVyRWRnZU1hcCA9IHt9O1xuICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdmFyIF9hLCBfYjtcblxuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHNvdXJjZUNsdXN0ZXJJZCA9IChfYSA9IG5vZGVzLmZpbmQoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmlkID09PSBzb3VyY2U7XG4gICAgfSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbHVzdGVySWQ7XG4gICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IChfYiA9IG5vZGVzLmZpbmQoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmlkID09PSB0YXJnZXQ7XG4gICAgfSkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jbHVzdGVySWQ7XG4gICAgdmFyIG5ld0VkZ2VJZCA9IFwiXCIuY29uY2F0KHNvdXJjZUNsdXN0ZXJJZCwgXCItLS1cIikuY29uY2F0KHRhcmdldENsdXN0ZXJJZCk7XG5cbiAgICBpZiAoY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSkge1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS5jb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV3RWRnZSA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2VDbHVzdGVySWQsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0Q2x1c3RlcklkLFxuICAgICAgICBjb3VudDogMVxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0gPSBuZXdFZGdlO1xuICAgICAgY2x1c3RlckVkZ2VzLnB1c2gobmV3RWRnZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBjbHVzdGVyczogY2x1c3RlcnMsXG4gICAgY2x1c3RlckVkZ2VzOiBjbHVzdGVyRWRnZXNcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGtNZWFuczsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/k-means.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/label-propagation.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/algorithm/es/label-propagation.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\n\nvar labelPropagation = function labelPropagation(graphData, directed, weightPropertyName, maxIteration) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (maxIteration === void 0) {\n maxIteration = 1000;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"uniqueId\"])();\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {};\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n });\n ks.push(k);\n });\n var iter = 0;\n\n var _loop_1 = function _loop_1() {\n var changed = false;\n nodes.forEach(function (node) {\n var neighborClusters = {};\n Object.keys(neighbors[node.id]).forEach(function (neighborId) {\n var neighborWeight = neighbors[node.id][neighborId];\n var neighborNode = nodeMap[neighborId].node;\n var neighborClusterId = neighborNode.clusterId;\n if (!neighborClusters[neighborClusterId]) neighborClusters[neighborClusterId] = 0;\n neighborClusters[neighborClusterId] += neighborWeight;\n }); // find the cluster with max weight\n\n var maxWeight = -Infinity;\n var bestClusterIds = [];\n Object.keys(neighborClusters).forEach(function (clusterId) {\n if (maxWeight < neighborClusters[clusterId]) {\n maxWeight = neighborClusters[clusterId];\n bestClusterIds = [clusterId];\n } else if (maxWeight === neighborClusters[clusterId]) {\n bestClusterIds.push(clusterId);\n }\n });\n if (bestClusterIds.length === 1 && bestClusterIds[0] === node.clusterId) return;\n var selfClusterIdx = bestClusterIds.indexOf(node.clusterId);\n if (selfClusterIdx >= 0) bestClusterIds.splice(selfClusterIdx, 1);\n\n if (bestClusterIds && bestClusterIds.length) {\n changed = true; // remove from origin cluster\n\n var selfCluster = clusters[node.clusterId];\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node);\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // move the node to the best cluster\n\n var randomIdx = Math.floor(Math.random() * bestClusterIds.length);\n var bestCluster = clusters[bestClusterIds[randomIdx]];\n bestCluster.nodes.push(node);\n node.clusterId = bestCluster.id;\n }\n });\n if (!changed) return \"break\";\n iter++;\n };\n\n while (iter < maxIteration) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n } // delete the empty clusters\n\n\n Object.keys(clusters).forEach(function (clusterId) {\n var cluster = clusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete clusters[clusterId];\n }\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(clusters).forEach(function (clusterId) {\n clustersArray.push(clusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (labelPropagation);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2xhYmVsLXByb3BhZ2F0aW9uLmpzP2I5NTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ1g7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBLGNBQWMsc0RBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLGtCQUFrQixnRUFBWSxzQkFBc0I7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0EsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsK0VBQWdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9sYWJlbC1wcm9wYWdhdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRBZGpNYXRyaXggZnJvbSAnLi9hZGphY2VudC1tYXRyaXgnO1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICcuL3V0aWwnO1xuLyoqXG4gKiDmoIfnrb7kvKDmkq3nrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIG1heEl0ZXJhdGlvbiDmnIDlpKfov63ku6PmrKHmlbBcbiAqL1xuXG52YXIgbGFiZWxQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uIGxhYmVsUHJvcGFnYXRpb24oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCBtYXhJdGVyYXRpb24pIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHdlaWdodFByb3BlcnR5TmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgd2VpZ2h0UHJvcGVydHlOYW1lID0gJ3dlaWdodCc7XG4gIH1cblxuICBpZiAobWF4SXRlcmF0aW9uID09PSB2b2lkIDApIHtcbiAgICBtYXhJdGVyYXRpb24gPSAxMDAwO1xuICB9IC8vIHRoZSBvcmlnaW4gZGF0YVxuXG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIGNsdXN0ZXJzID0ge307XG4gIHZhciBub2RlTWFwID0ge307IC8vIGluaXQgdGhlIGNsdXN0ZXJzIGFuZCBub2RlTWFwXG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBjaWQgPSB1bmlxdWVJZCgpO1xuICAgIG5vZGUuY2x1c3RlcklkID0gY2lkO1xuICAgIGNsdXN0ZXJzW2NpZF0gPSB7XG4gICAgICBpZDogY2lkLFxuICAgICAgbm9kZXM6IFtub2RlXVxuICAgIH07XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgIG5vZGU6IG5vZGUsXG4gICAgICBpZHg6IGlcbiAgICB9O1xuICB9KTsgLy8gdGhlIGFkamFjZW50IG1hdHJpeCBvZiBjYWxOb2RlcyBpbnNpZGUgY2x1c3RlcnNcblxuICB2YXIgYWRqTWF0cml4ID0gZ2V0QWRqTWF0cml4KGdyYXBoRGF0YSwgZGlyZWN0ZWQpOyAvLyB0aGUgc3VtIG9mIGVhY2ggcm93IGluIGFkamFjZW50IG1hdHJpeFxuXG4gIHZhciBrcyA9IFtdO1xuICAvKipcbiAgICogbmVpZ2hib3Igbm9kZXMgKGlkIGZvciBrZXkgYW5kIHdlaWdodCBmb3IgdmFsdWUpIGZvciBlYWNoIG5vZGVcbiAgICogbmVpZ2hib3JzID0ge1xuICAgKiAgaWQobm9kZV9pZCk6IHsgaWQobmVpZ2hib3JfMV9pZCk6IHdlaWdodCh3ZWlnaHQgb2YgdGhlIGVkZ2UpLCBpZChuZWlnaGJvcl8yX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIC4uLiB9LFxuICAgKiAgLi4uXG4gICAqIH1cbiAgICovXG5cbiAgdmFyIG5laWdoYm9ycyA9IHt9O1xuICBhZGpNYXRyaXguZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIGsgPSAwO1xuICAgIHZhciBpaWQgPSBub2Rlc1tpXS5pZDtcbiAgICBuZWlnaGJvcnNbaWlkXSA9IHt9O1xuICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSwgaikge1xuICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuICAgICAgayArPSBlbnRyeTtcbiAgICAgIHZhciBqaWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIG5laWdoYm9yc1tpaWRdW2ppZF0gPSBlbnRyeTtcbiAgICB9KTtcbiAgICBrcy5wdXNoKGspO1xuICB9KTtcbiAgdmFyIGl0ZXIgPSAwO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMSgpIHtcbiAgICB2YXIgY2hhbmdlZCA9IGZhbHNlO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJzID0ge307XG4gICAgICBPYmplY3Qua2V5cyhuZWlnaGJvcnNbbm9kZS5pZF0pLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9ySWQpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yV2VpZ2h0ID0gbmVpZ2hib3JzW25vZGUuaWRdW25laWdoYm9ySWRdO1xuICAgICAgICB2YXIgbmVpZ2hib3JOb2RlID0gbm9kZU1hcFtuZWlnaGJvcklkXS5ub2RlO1xuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVySWQgPSBuZWlnaGJvck5vZGUuY2x1c3RlcklkO1xuICAgICAgICBpZiAoIW5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdKSBuZWlnaGJvckNsdXN0ZXJzW25laWdoYm9yQ2x1c3RlcklkXSA9IDA7XG4gICAgICAgIG5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdICs9IG5laWdoYm9yV2VpZ2h0O1xuICAgICAgfSk7IC8vIGZpbmQgdGhlIGNsdXN0ZXIgd2l0aCBtYXggd2VpZ2h0XG5cbiAgICAgIHZhciBtYXhXZWlnaHQgPSAtSW5maW5pdHk7XG4gICAgICB2YXIgYmVzdENsdXN0ZXJJZHMgPSBbXTtcbiAgICAgIE9iamVjdC5rZXlzKG5laWdoYm9yQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgICAgICBpZiAobWF4V2VpZ2h0IDwgbmVpZ2hib3JDbHVzdGVyc1tjbHVzdGVySWRdKSB7XG4gICAgICAgICAgbWF4V2VpZ2h0ID0gbmVpZ2hib3JDbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgICAgICAgIGJlc3RDbHVzdGVySWRzID0gW2NsdXN0ZXJJZF07XG4gICAgICAgIH0gZWxzZSBpZiAobWF4V2VpZ2h0ID09PSBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF0pIHtcbiAgICAgICAgICBiZXN0Q2x1c3Rlcklkcy5wdXNoKGNsdXN0ZXJJZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGJlc3RDbHVzdGVySWRzLmxlbmd0aCA9PT0gMSAmJiBiZXN0Q2x1c3Rlcklkc1swXSA9PT0gbm9kZS5jbHVzdGVySWQpIHJldHVybjtcbiAgICAgIHZhciBzZWxmQ2x1c3RlcklkeCA9IGJlc3RDbHVzdGVySWRzLmluZGV4T2Yobm9kZS5jbHVzdGVySWQpO1xuICAgICAgaWYgKHNlbGZDbHVzdGVySWR4ID49IDApIGJlc3RDbHVzdGVySWRzLnNwbGljZShzZWxmQ2x1c3RlcklkeCwgMSk7XG5cbiAgICAgIGlmIChiZXN0Q2x1c3RlcklkcyAmJiBiZXN0Q2x1c3Rlcklkcy5sZW5ndGgpIHtcbiAgICAgICAgY2hhbmdlZCA9IHRydWU7IC8vIHJlbW92ZSBmcm9tIG9yaWdpbiBjbHVzdGVyXG5cbiAgICAgICAgdmFyIHNlbGZDbHVzdGVyID0gY2x1c3RlcnNbbm9kZS5jbHVzdGVySWRdO1xuICAgICAgICB2YXIgbm9kZUluU2VsZkNsdXN0ZXJJZHggPSBzZWxmQ2x1c3Rlci5ub2Rlcy5pbmRleE9mKG5vZGUpO1xuICAgICAgICBzZWxmQ2x1c3Rlci5ub2Rlcy5zcGxpY2Uobm9kZUluU2VsZkNsdXN0ZXJJZHgsIDEpOyAvLyBtb3ZlIHRoZSBub2RlIHRvIHRoZSBiZXN0IGNsdXN0ZXJcblxuICAgICAgICB2YXIgcmFuZG9tSWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYmVzdENsdXN0ZXJJZHMubGVuZ3RoKTtcbiAgICAgICAgdmFyIGJlc3RDbHVzdGVyID0gY2x1c3RlcnNbYmVzdENsdXN0ZXJJZHNbcmFuZG9tSWR4XV07XG4gICAgICAgIGJlc3RDbHVzdGVyLm5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgIG5vZGUuY2x1c3RlcklkID0gYmVzdENsdXN0ZXIuaWQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFjaGFuZ2VkKSByZXR1cm4gXCJicmVha1wiO1xuICAgIGl0ZXIrKztcbiAgfTtcblxuICB3aGlsZSAoaXRlciA8IG1heEl0ZXJhdGlvbikge1xuICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMSgpO1xuXG4gICAgaWYgKHN0YXRlXzEgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gIH0gLy8gZGVsZXRlIHRoZSBlbXB0eSBjbHVzdGVyc1xuXG5cbiAgT2JqZWN0LmtleXMoY2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIHZhciBjbHVzdGVyID0gY2x1c3RlcnNbY2x1c3RlcklkXTtcblxuICAgIGlmICghY2x1c3Rlci5ub2RlcyB8fCAhY2x1c3Rlci5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIGRlbGV0ZSBjbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgIH1cbiAgfSk7IC8vIGdldCB0aGUgY2x1c3RlciBlZGdlc1xuXG4gIHZhciBjbHVzdGVyRWRnZXMgPSBbXTtcbiAgdmFyIGNsdXN0ZXJFZGdlTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgIHZhciB3ZWlnaHQgPSBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMTtcbiAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIG5ld0VkZ2VJZCA9IFwiXCIuY29uY2F0KHNvdXJjZUNsdXN0ZXJJZCwgXCItLS1cIikuY29uY2F0KHRhcmdldENsdXN0ZXJJZCk7XG5cbiAgICBpZiAoY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSkge1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS53ZWlnaHQgKz0gd2VpZ2h0O1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS5jb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV3RWRnZSA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2VDbHVzdGVySWQsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0Q2x1c3RlcklkLFxuICAgICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgICAgY291bnQ6IDFcbiAgICAgIH07XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdID0gbmV3RWRnZTtcbiAgICAgIGNsdXN0ZXJFZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgIH1cbiAgfSk7XG4gIHZhciBjbHVzdGVyc0FycmF5ID0gW107XG4gIE9iamVjdC5rZXlzKGNsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICBjbHVzdGVyc0FycmF5LnB1c2goY2x1c3RlcnNbY2x1c3RlcklkXSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGNsdXN0ZXJzOiBjbHVzdGVyc0FycmF5LFxuICAgIGNsdXN0ZXJFZGdlczogY2x1c3RlckVkZ2VzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsYWJlbFByb3BhZ2F0aW9uOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/label-propagation.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/louvain.js": /*!****************************************************!*\ !*** ./node_modules/@antv/algorithm/es/louvain.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony import */ var _utils_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/vector */ \"./node_modules/@antv/algorithm/es/utils/vector.js\");\n/* harmony import */ var _utils_node_properties__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/node-properties */ \"./node_modules/@antv/algorithm/es/utils/node-properties.js\");\n/* harmony import */ var _utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/data-preprocessing */ \"./node_modules/@antv/algorithm/es/utils/data-preprocessing.js\");\n\n\n\n\n\n\nvar getModularity = function getModularity(nodes, adjMatrix, ks, m) {\n var length = adjMatrix.length;\n var param = 2 * m;\n var modularity = 0;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (clusteri !== clusterj) continue;\n var entry = adjMatrix[i][j] || 0;\n var ki = ks[i] || 0;\n var kj = ks[j] || 0;\n modularity += entry - ki * kj / param;\n }\n }\n\n modularity *= 1 / param;\n return modularity;\n}; // 模块惯性度,衡量属性相似度\n\n\nvar getInertialModularity = function getInertialModularity(nodes, allPropertiesWeight) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var length = nodes.length;\n var totalProperties = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"]([]);\n\n for (var i = 0; i < length; i++) {\n totalProperties = totalProperties.add(new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]));\n } // 均值向量\n\n\n var avgProperties = totalProperties.avg(length);\n avgProperties.normalize(); // 节点集合的方差: 节点v与均值向量的平方欧式距离之和\n\n var variance = 0;\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]);\n var squareEuclideanDistance = propertiesi.squareEuclideanDistance(avgProperties);\n variance += squareEuclideanDistance;\n } // 任意两点间的欧式平方距离\n\n\n var squareEuclideanDistanceInfo = [];\n nodes.forEach(function () {\n squareEuclideanDistanceInfo.push([]);\n });\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]);\n nodes[i]['clusterInertial'] = 0;\n\n for (var j = 0; j < length; j++) {\n if (i === j) {\n squareEuclideanDistanceInfo[i][j] = 0;\n continue;\n }\n\n var propertiesj = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[j]);\n squareEuclideanDistanceInfo[i][j] = propertiesi.squareEuclideanDistance(propertiesj);\n nodes[i]['clusterInertial'] += squareEuclideanDistanceInfo[i][j];\n }\n } // 计算模块惯性度\n\n\n var inertialModularity = 0;\n var param = 2 * length * variance;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (i === j || clusteri !== clusterj) continue;\n var inertial = nodes[i].clusterInertial * nodes[j].clusterInertial / Math.pow(param, 2) - squareEuclideanDistanceInfo[i][j] / param;\n inertialModularity += inertial;\n }\n }\n\n return Number(inertialModularity.toFixed(4));\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialModularity 是否使用惯性模块度(即节点属性相似性)\n */\n\n\nvar louvain = function louvain(graphData, directed, weightPropertyName, threshold, inertialModularity, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialModularity === void 0) {\n inertialModularity = false;\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allPropertiesWeight = [];\n\n if (inertialModularity) {\n nodes.forEach(function (node, index) {\n node.properties = node.properties || {};\n node.originIndex = index;\n });\n var nodeTypeInfo_1 = [];\n\n if (nodes.every(function (node) {\n return node.hasOwnProperty('nodeType');\n })) {\n nodeTypeInfo_1 = Array.from(new Set(nodes.map(function (node) {\n return node.nodeType;\n })));\n nodes.forEach(function (node) {\n node.properties.nodeType = nodeTypeInfo_1.findIndex(function (nodeType) {\n return nodeType === node.nodeType;\n });\n });\n } // 所有节点属性集合\n\n\n var properties = Object(_utils_node_properties__WEBPACK_IMPORTED_MODULE_3__[\"getAllProperties\"])(nodes); // 所有节点属性one-hot特征向量集合\n\n allPropertiesWeight = Object(_utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_4__[\"oneHot\"])(properties);\n }\n\n var uniqueId = 1;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = String(uniqueId++);\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {}; // the sum of the weights of all edges in the graph\n\n var m = 0;\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n m += entry;\n });\n ks.push(k);\n });\n m /= 2;\n var totalModularity = Infinity;\n var previousModularity = Infinity;\n var iter = 0;\n var finalNodes = [];\n var finalClusters = {};\n\n while (true) {\n if (inertialModularity && nodes.every(function (node) {\n return node.hasOwnProperty('properties');\n })) {\n totalModularity = getModularity(nodes, adjMatrix, ks, m) + getInertialModularity(nodes, allPropertiesWeight) * inertialWeight;\n } else {\n totalModularity = getModularity(nodes, adjMatrix, ks, m);\n } // 第一次迭代previousModularity直接赋值\n\n\n if (iter === 0) {\n previousModularity = totalModularity;\n finalNodes = nodes;\n finalClusters = clusters;\n }\n\n var increaseWithinThreshold = totalModularity > 0 && totalModularity > previousModularity && totalModularity - previousModularity < threshold; // 总模块度增加才更新最优解\n\n if (totalModularity > previousModularity) {\n finalNodes = nodes.map(function (node) {\n return {\n node: node,\n clusterId: node.clusterId\n };\n });\n finalClusters = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(clusters);\n previousModularity = totalModularity;\n } // whether to terminate the iterations\n\n\n if (increaseWithinThreshold || iter > 100) {\n break;\n }\n\n ;\n iter++; // pre compute some values for current clusters\n\n Object.keys(clusters).forEach(function (clusterId) {\n // sum of weights of edges to nodes in cluster\n var sumTot = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === clusterId && targetClusterId !== clusterId || targetClusterId === clusterId && sourceClusterId !== clusterId) {\n sumTot = sumTot + (edge[weightPropertyName] || 1);\n }\n });\n clusters[clusterId].sumTot = sumTot;\n }); // move the nodes to increase the delta modularity\n\n nodes.forEach(function (node, i) {\n var selfCluster = clusters[node.clusterId];\n var bestIncrease = 0;\n var bestCluster;\n var commonParam = ks[i] / (2 * m); // sum of weights of edges from node to nodes in cluster\n\n var kiin = 0;\n var selfClusterNodes = selfCluster.nodes;\n selfClusterNodes.forEach(function (scNode) {\n var scNodeIdx = nodeMap[scNode.id].idx;\n kiin += adjMatrix[i][scNodeIdx] || 0;\n }); // the modurarity for **removing** the node i from the origin cluster of node i\n\n var removeModurarity = kiin - selfCluster.sumTot * commonParam; // nodes for **removing** node i into this neighbor cluster\n\n var selfClusterNodesAfterRemove = selfClusterNodes.filter(function (scNode) {\n return scNode.id !== node.id;\n });\n var propertiesWeightRemove = [];\n selfClusterNodesAfterRemove.forEach(function (nodeRemove, index) {\n propertiesWeightRemove[index] = allPropertiesWeight[nodeRemove.originIndex];\n }); // the inertialModularity for **removing** the node i from the origin cluster of node i\n\n var removeInertialModularity = getInertialModularity(selfClusterNodesAfterRemove, allPropertiesWeight) * inertialWeight; // the neightbors of the node\n\n var nodeNeighborIds = neighbors[node.id];\n Object.keys(nodeNeighborIds).forEach(function (neighborNodeId) {\n var neighborNode = nodeMap[neighborNodeId].node;\n var neighborClusterId = neighborNode.clusterId; // if the node and the neighbor of node are in the same cluster, reutrn\n\n if (neighborClusterId === node.clusterId) return;\n var neighborCluster = clusters[neighborClusterId];\n var clusterNodes = neighborCluster.nodes; // if the cluster is empty, remove the cluster and return\n\n if (!clusterNodes || !clusterNodes.length) return; // sum of weights of edges from node to nodes in cluster\n\n var neighborClusterKiin = 0;\n clusterNodes.forEach(function (cNode) {\n var cNodeIdx = nodeMap[cNode.id].idx;\n neighborClusterKiin += adjMatrix[i][cNodeIdx] || 0;\n }); // the modurarity for **adding** node i into this neighbor cluster\n\n var addModurarity = neighborClusterKiin - neighborCluster.sumTot * commonParam; // nodes for **adding** node i into this neighbor cluster\n\n var clusterNodesAfterAdd = clusterNodes.concat([node]);\n var propertiesWeightAdd = [];\n clusterNodesAfterAdd.forEach(function (nodeAdd, index) {\n propertiesWeightAdd[index] = allPropertiesWeight[nodeAdd.originIndex];\n }); // the inertialModularity for **adding** node i into this neighbor cluster\n\n var addInertialModularity = getInertialModularity(clusterNodesAfterAdd, allPropertiesWeight) * inertialWeight; // the increase modurarity is the difference between addModurarity and removeModurarity\n\n var increase = addModurarity - removeModurarity;\n\n if (inertialModularity) {\n increase = addModurarity + addInertialModularity - (removeModurarity + removeInertialModularity);\n } // find the best cluster to move node i into\n\n\n if (increase > bestIncrease) {\n bestIncrease = increase;\n bestCluster = neighborCluster;\n }\n }); // if found a best cluster to move into\n\n if (bestIncrease > 0) {\n bestCluster.nodes.push(node);\n var previousClusterId_1 = node.clusterId;\n node.clusterId = bestCluster.id; // move the node to the best cluster\n\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); // remove from origin cluster\n\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // update sumTot for clusters\n // sum of weights of edges to nodes in cluster\n\n var neighborClusterSumTot_1 = 0;\n var selfClusterSumTot_1 = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === bestCluster.id && targetClusterId !== bestCluster.id || targetClusterId === bestCluster.id && sourceClusterId !== bestCluster.id) {\n neighborClusterSumTot_1 = neighborClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n\n if (sourceClusterId === previousClusterId_1 && targetClusterId !== previousClusterId_1 || targetClusterId === previousClusterId_1 && sourceClusterId !== previousClusterId_1) {\n selfClusterSumTot_1 = selfClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n }); // the nodes of the clusters to move into and remove are changed, update their sumTot\n\n bestCluster.sumTot = neighborClusterSumTot_1;\n selfCluster.sumTot = selfClusterSumTot_1;\n }\n });\n } // delete the empty clusters, assign increasing clusterId\n\n\n var newClusterIdMap = {};\n var clusterIdx = 0;\n Object.keys(finalClusters).forEach(function (clusterId) {\n var cluster = finalClusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete finalClusters[clusterId];\n return;\n }\n\n var newId = String(clusterIdx + 1);\n\n if (newId === clusterId) {\n return;\n }\n\n cluster.id = newId;\n cluster.nodes = cluster.nodes.map(function (item) {\n return {\n id: item.id,\n clusterId: newId\n };\n });\n finalClusters[newId] = cluster;\n newClusterIdMap[clusterId] = newId;\n delete finalClusters[clusterId];\n clusterIdx++;\n }); // restore node clusterId\n\n finalNodes.forEach(function (nodeInfo) {\n var node = nodeInfo.node,\n clusterId = nodeInfo.clusterId;\n node.clusterId = clusterId;\n if (node.clusterId && newClusterIdMap[node.clusterId]) node.clusterId = newClusterIdMap[node.clusterId];\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(finalClusters).forEach(function (clusterId) {\n clustersArray.push(finalClusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (louvain);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL2xvdXZhaW4uanM/Yjg0NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDVTtBQUNUO0FBQ3VCO0FBQ1A7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCOztBQUVBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLHFEQUFNOztBQUVsQyxpQkFBaUIsWUFBWTtBQUM3Qiw4Q0FBOEMscURBQU07QUFDcEQsR0FBRzs7O0FBR0g7QUFDQSw0QkFBNEI7O0FBRTVCOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCLDBCQUEwQixxREFBTTtBQUNoQztBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxpQkFBaUIsWUFBWTtBQUM3QiwwQkFBMEIscURBQU07QUFDaEM7O0FBRUEsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCLHFEQUFNO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7O0FBRUEsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLOzs7QUFHTCxxQkFBcUIsK0VBQWdCLFFBQVE7O0FBRTdDLDBCQUEwQix3RUFBTTtBQUNoQzs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLGtCQUFrQixnRUFBWSxzQkFBc0I7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtKQUFrSjs7QUFFbEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHNCQUFzQix3REFBSztBQUMzQjtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQscUVBQXFFOztBQUVyRTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVCw4SEFBOEg7O0FBRTlIO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDs7QUFFdkQ7QUFDQTtBQUNBLGlEQUFpRDs7QUFFakQsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWCx1RkFBdUY7O0FBRXZGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFOztBQUVYLHNIQUFzSDs7QUFFdEg7O0FBRUE7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEMsbUVBQW1FOztBQUVuRSwwREFBMEQ7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLHNFQUFPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9sb3V2YWluLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBnZXRBZGpNYXRyaXggZnJvbSAnLi9hZGphY2VudC1tYXRyaXgnO1xuaW1wb3J0IFZlY3RvciBmcm9tICcuL3V0aWxzL3ZlY3Rvcic7XG5pbXBvcnQgeyBnZXRBbGxQcm9wZXJ0aWVzIH0gZnJvbSAnLi91dGlscy9ub2RlLXByb3BlcnRpZXMnO1xuaW1wb3J0IHsgb25lSG90IH0gZnJvbSAnLi91dGlscy9kYXRhLXByZXByb2Nlc3NpbmcnO1xuXG52YXIgZ2V0TW9kdWxhcml0eSA9IGZ1bmN0aW9uIGdldE1vZHVsYXJpdHkobm9kZXMsIGFkak1hdHJpeCwga3MsIG0pIHtcbiAgdmFyIGxlbmd0aCA9IGFkak1hdHJpeC5sZW5ndGg7XG4gIHZhciBwYXJhbSA9IDIgKiBtO1xuICB2YXIgbW9kdWxhcml0eSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBjbHVzdGVyaSA9IG5vZGVzW2ldLmNsdXN0ZXJJZDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBjbHVzdGVyaiA9IG5vZGVzW2pdLmNsdXN0ZXJJZDtcbiAgICAgIGlmIChjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGVudHJ5ID0gYWRqTWF0cml4W2ldW2pdIHx8IDA7XG4gICAgICB2YXIga2kgPSBrc1tpXSB8fCAwO1xuICAgICAgdmFyIGtqID0ga3Nbal0gfHwgMDtcbiAgICAgIG1vZHVsYXJpdHkgKz0gZW50cnkgLSBraSAqIGtqIC8gcGFyYW07XG4gICAgfVxuICB9XG5cbiAgbW9kdWxhcml0eSAqPSAxIC8gcGFyYW07XG4gIHJldHVybiBtb2R1bGFyaXR5O1xufTsgLy8g5qih5Z2X5oOv5oCn5bqm77yM6KGh6YeP5bGe5oCn55u45Ly85bqmXG5cblxudmFyIGdldEluZXJ0aWFsTW9kdWxhcml0eSA9IGZ1bmN0aW9uIGdldEluZXJ0aWFsTW9kdWxhcml0eShub2RlcywgYWxsUHJvcGVydGllc1dlaWdodCkge1xuICBpZiAobm9kZXMgPT09IHZvaWQgMCkge1xuICAgIG5vZGVzID0gW107XG4gIH1cblxuICB2YXIgbGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuICB2YXIgdG90YWxQcm9wZXJ0aWVzID0gbmV3IFZlY3RvcihbXSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHRvdGFsUHJvcGVydGllcyA9IHRvdGFsUHJvcGVydGllcy5hZGQobmV3IFZlY3RvcihhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldKSk7XG4gIH0gLy8g5Z2H5YC85ZCR6YePXG5cblxuICB2YXIgYXZnUHJvcGVydGllcyA9IHRvdGFsUHJvcGVydGllcy5hdmcobGVuZ3RoKTtcbiAgYXZnUHJvcGVydGllcy5ub3JtYWxpemUoKTsgLy8g6IqC54K56ZuG5ZCI55qE5pa55beuOiDoioLngrl25LiO5Z2H5YC85ZCR6YeP55qE5bmz5pa55qyn5byP6Led56a75LmL5ZKMXG5cbiAgdmFyIHZhcmlhbmNlID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3BlcnRpZXNpID0gbmV3IFZlY3RvcihhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldKTtcbiAgICB2YXIgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UgPSBwcm9wZXJ0aWVzaS5zcXVhcmVFdWNsaWRlYW5EaXN0YW5jZShhdmdQcm9wZXJ0aWVzKTtcbiAgICB2YXJpYW5jZSArPSBzcXVhcmVFdWNsaWRlYW5EaXN0YW5jZTtcbiAgfSAvLyDku7vmhI/kuKTngrnpl7TnmoTmrKflvI/lubPmlrnot53nprtcblxuXG4gIHZhciBzcXVhcmVFdWNsaWRlYW5EaXN0YW5jZUluZm8gPSBbXTtcbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvLnB1c2goW10pO1xuICB9KTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHByb3BlcnRpZXNpID0gbmV3IFZlY3RvcihhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldKTtcbiAgICBub2Rlc1tpXVsnY2x1c3RlckluZXJ0aWFsJ10gPSAwO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW5ndGg7IGorKykge1xuICAgICAgaWYgKGkgPT09IGopIHtcbiAgICAgICAgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdID0gMDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcm9wZXJ0aWVzaiA9IG5ldyBWZWN0b3IoYWxsUHJvcGVydGllc1dlaWdodFtqXSk7XG4gICAgICBzcXVhcmVFdWNsaWRlYW5EaXN0YW5jZUluZm9baV1bal0gPSBwcm9wZXJ0aWVzaS5zcXVhcmVFdWNsaWRlYW5EaXN0YW5jZShwcm9wZXJ0aWVzaik7XG4gICAgICBub2Rlc1tpXVsnY2x1c3RlckluZXJ0aWFsJ10gKz0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdO1xuICAgIH1cbiAgfSAvLyDorqHnrpfmqKHlnZfmg6/mgKfluqZcblxuXG4gIHZhciBpbmVydGlhbE1vZHVsYXJpdHkgPSAwO1xuICB2YXIgcGFyYW0gPSAyICogbGVuZ3RoICogdmFyaWFuY2U7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBjbHVzdGVyaSA9IG5vZGVzW2ldLmNsdXN0ZXJJZDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBjbHVzdGVyaiA9IG5vZGVzW2pdLmNsdXN0ZXJJZDtcbiAgICAgIGlmIChpID09PSBqIHx8IGNsdXN0ZXJpICE9PSBjbHVzdGVyaikgY29udGludWU7XG4gICAgICB2YXIgaW5lcnRpYWwgPSBub2Rlc1tpXS5jbHVzdGVySW5lcnRpYWwgKiBub2Rlc1tqXS5jbHVzdGVySW5lcnRpYWwgLyBNYXRoLnBvdyhwYXJhbSwgMikgLSBzcXVhcmVFdWNsaWRlYW5EaXN0YW5jZUluZm9baV1bal0gLyBwYXJhbTtcbiAgICAgIGluZXJ0aWFsTW9kdWxhcml0eSArPSBpbmVydGlhbDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTnVtYmVyKGluZXJ0aWFsTW9kdWxhcml0eS50b0ZpeGVkKDQpKTtcbn07XG4vKipcbiAqIOekvuWMuuWPkeeOsCBsb3V2YWluIOeul+azlVxuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbmnInlkJHlm77vvIzpu5jorqTkuLogZmFsc2VcbiAqIEBwYXJhbSB3ZWlnaHRQcm9wZXJ0eU5hbWUg5p2D6YeN55qE5bGe5oCn5a2X5q61XG4gKiBAcGFyYW0gdGhyZXNob2xkIOW3ruWAvOmYiOWAvFxuICogQHBhcmFtIGluZXJ0aWFsTW9kdWxhcml0eSDmmK/lkKbkvb/nlKjmg6/mgKfmqKHlnZfluqbvvIjljbPoioLngrnlsZ7mgKfnm7jkvLzmgKfvvIlcbiAqL1xuXG5cbnZhciBsb3V2YWluID0gZnVuY3Rpb24gbG91dmFpbihncmFwaERhdGEsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUsIHRocmVzaG9sZCwgaW5lcnRpYWxNb2R1bGFyaXR5LCBpbmVydGlhbFdlaWdodCkge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAod2VpZ2h0UHJvcGVydHlOYW1lID09PSB2b2lkIDApIHtcbiAgICB3ZWlnaHRQcm9wZXJ0eU5hbWUgPSAnd2VpZ2h0JztcbiAgfVxuXG4gIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgIHRocmVzaG9sZCA9IDAuMDAwMTtcbiAgfVxuXG4gIGlmIChpbmVydGlhbE1vZHVsYXJpdHkgPT09IHZvaWQgMCkge1xuICAgIGluZXJ0aWFsTW9kdWxhcml0eSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGluZXJ0aWFsV2VpZ2h0ID09PSB2b2lkIDApIHtcbiAgICBpbmVydGlhbFdlaWdodCA9IDE7XG4gIH0gLy8gdGhlIG9yaWdpbiBkYXRhXG5cblxuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgYWxsUHJvcGVydGllc1dlaWdodCA9IFtdO1xuXG4gIGlmIChpbmVydGlhbE1vZHVsYXJpdHkpIHtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpbmRleCkge1xuICAgICAgbm9kZS5wcm9wZXJ0aWVzID0gbm9kZS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgICAgbm9kZS5vcmlnaW5JbmRleCA9IGluZGV4O1xuICAgIH0pO1xuICAgIHZhciBub2RlVHlwZUluZm9fMSA9IFtdO1xuXG4gICAgaWYgKG5vZGVzLmV2ZXJ5KGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5oYXNPd25Qcm9wZXJ0eSgnbm9kZVR5cGUnKTtcbiAgICB9KSkge1xuICAgICAgbm9kZVR5cGVJbmZvXzEgPSBBcnJheS5mcm9tKG5ldyBTZXQobm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlO1xuICAgICAgfSkpKTtcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgbm9kZS5wcm9wZXJ0aWVzLm5vZGVUeXBlID0gbm9kZVR5cGVJbmZvXzEuZmluZEluZGV4KGZ1bmN0aW9uIChub2RlVHlwZSkge1xuICAgICAgICAgIHJldHVybiBub2RlVHlwZSA9PT0gbm9kZS5ub2RlVHlwZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IC8vIOaJgOacieiKgueCueWxnuaAp+mbhuWQiFxuXG5cbiAgICB2YXIgcHJvcGVydGllcyA9IGdldEFsbFByb3BlcnRpZXMobm9kZXMpOyAvLyDmiYDmnInoioLngrnlsZ7mgKdvbmUtaG9054m55b6B5ZCR6YeP6ZuG5ZCIXG5cbiAgICBhbGxQcm9wZXJ0aWVzV2VpZ2h0ID0gb25lSG90KHByb3BlcnRpZXMpO1xuICB9XG5cbiAgdmFyIHVuaXF1ZUlkID0gMTtcbiAgdmFyIGNsdXN0ZXJzID0ge307XG4gIHZhciBub2RlTWFwID0ge307IC8vIGluaXQgdGhlIGNsdXN0ZXJzIGFuZCBub2RlTWFwXG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBjaWQgPSBTdHJpbmcodW5pcXVlSWQrKyk7XG4gICAgbm9kZS5jbHVzdGVySWQgPSBjaWQ7XG4gICAgY2x1c3RlcnNbY2lkXSA9IHtcbiAgICAgIGlkOiBjaWQsXG4gICAgICBub2RlczogW25vZGVdXG4gICAgfTtcbiAgICBub2RlTWFwW25vZGUuaWRdID0ge1xuICAgICAgbm9kZTogbm9kZSxcbiAgICAgIGlkeDogaVxuICAgIH07XG4gIH0pOyAvLyB0aGUgYWRqYWNlbnQgbWF0cml4IG9mIGNhbE5vZGVzIGluc2lkZSBjbHVzdGVyc1xuXG4gIHZhciBhZGpNYXRyaXggPSBnZXRBZGpNYXRyaXgoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIHRoZSBzdW0gb2YgZWFjaCByb3cgaW4gYWRqYWNlbnQgbWF0cml4XG5cbiAgdmFyIGtzID0gW107XG4gIC8qKlxuICAgKiBuZWlnaGJvciBub2RlcyAoaWQgZm9yIGtleSBhbmQgd2VpZ2h0IGZvciB2YWx1ZSkgZm9yIGVhY2ggbm9kZVxuICAgKiBuZWlnaGJvcnMgPSB7XG4gICAqICBpZChub2RlX2lkKTogeyBpZChuZWlnaGJvcl8xX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIGlkKG5laWdoYm9yXzJfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgLi4uIH0sXG4gICAqICAuLi5cbiAgICogfVxuICAgKi9cblxuICB2YXIgbmVpZ2hib3JzID0ge307IC8vIHRoZSBzdW0gb2YgdGhlIHdlaWdodHMgb2YgYWxsIGVkZ2VzIGluIHRoZSBncmFwaFxuXG4gIHZhciBtID0gMDtcbiAgYWRqTWF0cml4LmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHZhciBrID0gMDtcbiAgICB2YXIgaWlkID0gbm9kZXNbaV0uaWQ7XG4gICAgbmVpZ2hib3JzW2lpZF0gPSB7fTtcbiAgICByb3cuZm9yRWFjaChmdW5jdGlvbiAoZW50cnksIGopIHtcbiAgICAgIGlmICghZW50cnkpIHJldHVybjtcbiAgICAgIGsgKz0gZW50cnk7XG4gICAgICB2YXIgamlkID0gbm9kZXNbal0uaWQ7XG4gICAgICBuZWlnaGJvcnNbaWlkXVtqaWRdID0gZW50cnk7XG4gICAgICBtICs9IGVudHJ5O1xuICAgIH0pO1xuICAgIGtzLnB1c2goayk7XG4gIH0pO1xuICBtIC89IDI7XG4gIHZhciB0b3RhbE1vZHVsYXJpdHkgPSBJbmZpbml0eTtcbiAgdmFyIHByZXZpb3VzTW9kdWxhcml0eSA9IEluZmluaXR5O1xuICB2YXIgaXRlciA9IDA7XG4gIHZhciBmaW5hbE5vZGVzID0gW107XG4gIHZhciBmaW5hbENsdXN0ZXJzID0ge307XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5ICYmIG5vZGVzLmV2ZXJ5KGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5oYXNPd25Qcm9wZXJ0eSgncHJvcGVydGllcycpO1xuICAgIH0pKSB7XG4gICAgICB0b3RhbE1vZHVsYXJpdHkgPSBnZXRNb2R1bGFyaXR5KG5vZGVzLCBhZGpNYXRyaXgsIGtzLCBtKSArIGdldEluZXJ0aWFsTW9kdWxhcml0eShub2RlcywgYWxsUHJvcGVydGllc1dlaWdodCkgKiBpbmVydGlhbFdlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgdG90YWxNb2R1bGFyaXR5ID0gZ2V0TW9kdWxhcml0eShub2RlcywgYWRqTWF0cml4LCBrcywgbSk7XG4gICAgfSAvLyDnrKzkuIDmrKHov63ku6NwcmV2aW91c01vZHVsYXJpdHnnm7TmjqXotYvlgLxcblxuXG4gICAgaWYgKGl0ZXIgPT09IDApIHtcbiAgICAgIHByZXZpb3VzTW9kdWxhcml0eSA9IHRvdGFsTW9kdWxhcml0eTtcbiAgICAgIGZpbmFsTm9kZXMgPSBub2RlcztcbiAgICAgIGZpbmFsQ2x1c3RlcnMgPSBjbHVzdGVycztcbiAgICB9XG5cbiAgICB2YXIgaW5jcmVhc2VXaXRoaW5UaHJlc2hvbGQgPSB0b3RhbE1vZHVsYXJpdHkgPiAwICYmIHRvdGFsTW9kdWxhcml0eSA+IHByZXZpb3VzTW9kdWxhcml0eSAmJiB0b3RhbE1vZHVsYXJpdHkgLSBwcmV2aW91c01vZHVsYXJpdHkgPCB0aHJlc2hvbGQ7IC8vIOaAu+aooeWdl+W6puWinuWKoOaJjeabtOaWsOacgOS8mOino1xuXG4gICAgaWYgKHRvdGFsTW9kdWxhcml0eSA+IHByZXZpb3VzTW9kdWxhcml0eSkge1xuICAgICAgZmluYWxOb2RlcyA9IG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgY2x1c3RlcklkOiBub2RlLmNsdXN0ZXJJZFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBmaW5hbENsdXN0ZXJzID0gY2xvbmUoY2x1c3RlcnMpO1xuICAgICAgcHJldmlvdXNNb2R1bGFyaXR5ID0gdG90YWxNb2R1bGFyaXR5O1xuICAgIH0gLy8gd2hldGhlciB0byB0ZXJtaW5hdGUgdGhlIGl0ZXJhdGlvbnNcblxuXG4gICAgaWYgKGluY3JlYXNlV2l0aGluVGhyZXNob2xkIHx8IGl0ZXIgPiAxMDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIDtcbiAgICBpdGVyKys7IC8vIHByZSBjb21wdXRlIHNvbWUgdmFsdWVzIGZvciBjdXJyZW50IGNsdXN0ZXJzXG5cbiAgICBPYmplY3Qua2V5cyhjbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgICAvLyBzdW0gb2Ygd2VpZ2h0cyBvZiBlZGdlcyB0byBub2RlcyBpbiBjbHVzdGVyXG4gICAgICB2YXIgc3VtVG90ID0gMDtcbiAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGVkZ2Uuc291cmNlLFxuICAgICAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG5cbiAgICAgICAgaWYgKHNvdXJjZUNsdXN0ZXJJZCA9PT0gY2x1c3RlcklkICYmIHRhcmdldENsdXN0ZXJJZCAhPT0gY2x1c3RlcklkIHx8IHRhcmdldENsdXN0ZXJJZCA9PT0gY2x1c3RlcklkICYmIHNvdXJjZUNsdXN0ZXJJZCAhPT0gY2x1c3RlcklkKSB7XG4gICAgICAgICAgc3VtVG90ID0gc3VtVG90ICsgKGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjbHVzdGVyc1tjbHVzdGVySWRdLnN1bVRvdCA9IHN1bVRvdDtcbiAgICB9KTsgLy8gbW92ZSB0aGUgbm9kZXMgdG8gaW5jcmVhc2UgdGhlIGRlbHRhIG1vZHVsYXJpdHlcblxuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICAgIHZhciBzZWxmQ2x1c3RlciA9IGNsdXN0ZXJzW25vZGUuY2x1c3RlcklkXTtcbiAgICAgIHZhciBiZXN0SW5jcmVhc2UgPSAwO1xuICAgICAgdmFyIGJlc3RDbHVzdGVyO1xuICAgICAgdmFyIGNvbW1vblBhcmFtID0ga3NbaV0gLyAoMiAqIG0pOyAvLyBzdW0gb2Ygd2VpZ2h0cyBvZiBlZGdlcyBmcm9tIG5vZGUgdG8gbm9kZXMgaW4gY2x1c3RlclxuXG4gICAgICB2YXIga2lpbiA9IDA7XG4gICAgICB2YXIgc2VsZkNsdXN0ZXJOb2RlcyA9IHNlbGZDbHVzdGVyLm5vZGVzO1xuICAgICAgc2VsZkNsdXN0ZXJOb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChzY05vZGUpIHtcbiAgICAgICAgdmFyIHNjTm9kZUlkeCA9IG5vZGVNYXBbc2NOb2RlLmlkXS5pZHg7XG4gICAgICAgIGtpaW4gKz0gYWRqTWF0cml4W2ldW3NjTm9kZUlkeF0gfHwgMDtcbiAgICAgIH0pOyAvLyB0aGUgbW9kdXJhcml0eSBmb3IgKipyZW1vdmluZyoqIHRoZSBub2RlIGkgZnJvbSB0aGUgb3JpZ2luIGNsdXN0ZXIgb2Ygbm9kZSBpXG5cbiAgICAgIHZhciByZW1vdmVNb2R1cmFyaXR5ID0ga2lpbiAtIHNlbGZDbHVzdGVyLnN1bVRvdCAqIGNvbW1vblBhcmFtOyAvLyBub2RlcyBmb3IgKipyZW1vdmluZyoqIG5vZGUgaSBpbnRvIHRoaXMgbmVpZ2hib3IgY2x1c3RlclxuXG4gICAgICB2YXIgc2VsZkNsdXN0ZXJOb2Rlc0FmdGVyUmVtb3ZlID0gc2VsZkNsdXN0ZXJOb2Rlcy5maWx0ZXIoZnVuY3Rpb24gKHNjTm9kZSkge1xuICAgICAgICByZXR1cm4gc2NOb2RlLmlkICE9PSBub2RlLmlkO1xuICAgICAgfSk7XG4gICAgICB2YXIgcHJvcGVydGllc1dlaWdodFJlbW92ZSA9IFtdO1xuICAgICAgc2VsZkNsdXN0ZXJOb2Rlc0FmdGVyUmVtb3ZlLmZvckVhY2goZnVuY3Rpb24gKG5vZGVSZW1vdmUsIGluZGV4KSB7XG4gICAgICAgIHByb3BlcnRpZXNXZWlnaHRSZW1vdmVbaW5kZXhdID0gYWxsUHJvcGVydGllc1dlaWdodFtub2RlUmVtb3ZlLm9yaWdpbkluZGV4XTtcbiAgICAgIH0pOyAvLyB0aGUgaW5lcnRpYWxNb2R1bGFyaXR5IGZvciAqKnJlbW92aW5nKiogdGhlIG5vZGUgaSBmcm9tIHRoZSBvcmlnaW4gY2x1c3RlciBvZiBub2RlIGlcblxuICAgICAgdmFyIHJlbW92ZUluZXJ0aWFsTW9kdWxhcml0eSA9IGdldEluZXJ0aWFsTW9kdWxhcml0eShzZWxmQ2x1c3Rlck5vZGVzQWZ0ZXJSZW1vdmUsIGFsbFByb3BlcnRpZXNXZWlnaHQpICogaW5lcnRpYWxXZWlnaHQ7IC8vIHRoZSBuZWlnaHRib3JzIG9mIHRoZSBub2RlXG5cbiAgICAgIHZhciBub2RlTmVpZ2hib3JJZHMgPSBuZWlnaGJvcnNbbm9kZS5pZF07XG4gICAgICBPYmplY3Qua2V5cyhub2RlTmVpZ2hib3JJZHMpLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9yTm9kZUlkKSB7XG4gICAgICAgIHZhciBuZWlnaGJvck5vZGUgPSBub2RlTWFwW25laWdoYm9yTm9kZUlkXS5ub2RlO1xuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVySWQgPSBuZWlnaGJvck5vZGUuY2x1c3RlcklkOyAvLyBpZiB0aGUgbm9kZSBhbmQgdGhlIG5laWdoYm9yIG9mIG5vZGUgYXJlIGluIHRoZSBzYW1lIGNsdXN0ZXIsIHJldXRyblxuXG4gICAgICAgIGlmIChuZWlnaGJvckNsdXN0ZXJJZCA9PT0gbm9kZS5jbHVzdGVySWQpIHJldHVybjtcbiAgICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlciA9IGNsdXN0ZXJzW25laWdoYm9yQ2x1c3RlcklkXTtcbiAgICAgICAgdmFyIGNsdXN0ZXJOb2RlcyA9IG5laWdoYm9yQ2x1c3Rlci5ub2RlczsgLy8gaWYgdGhlIGNsdXN0ZXIgaXMgZW1wdHksIHJlbW92ZSB0aGUgY2x1c3RlciBhbmQgcmV0dXJuXG5cbiAgICAgICAgaWYgKCFjbHVzdGVyTm9kZXMgfHwgIWNsdXN0ZXJOb2Rlcy5sZW5ndGgpIHJldHVybjsgLy8gc3VtIG9mIHdlaWdodHMgb2YgZWRnZXMgZnJvbSBub2RlIHRvIG5vZGVzIGluIGNsdXN0ZXJcblxuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVyS2lpbiA9IDA7XG4gICAgICAgIGNsdXN0ZXJOb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChjTm9kZSkge1xuICAgICAgICAgIHZhciBjTm9kZUlkeCA9IG5vZGVNYXBbY05vZGUuaWRdLmlkeDtcbiAgICAgICAgICBuZWlnaGJvckNsdXN0ZXJLaWluICs9IGFkak1hdHJpeFtpXVtjTm9kZUlkeF0gfHwgMDtcbiAgICAgICAgfSk7IC8vIHRoZSBtb2R1cmFyaXR5IGZvciAqKmFkZGluZyoqIG5vZGUgaSBpbnRvIHRoaXMgbmVpZ2hib3IgY2x1c3RlclxuXG4gICAgICAgIHZhciBhZGRNb2R1cmFyaXR5ID0gbmVpZ2hib3JDbHVzdGVyS2lpbiAtIG5laWdoYm9yQ2x1c3Rlci5zdW1Ub3QgKiBjb21tb25QYXJhbTsgLy8gbm9kZXMgZm9yICoqYWRkaW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgICAgdmFyIGNsdXN0ZXJOb2Rlc0FmdGVyQWRkID0gY2x1c3Rlck5vZGVzLmNvbmNhdChbbm9kZV0pO1xuICAgICAgICB2YXIgcHJvcGVydGllc1dlaWdodEFkZCA9IFtdO1xuICAgICAgICBjbHVzdGVyTm9kZXNBZnRlckFkZC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlQWRkLCBpbmRleCkge1xuICAgICAgICAgIHByb3BlcnRpZXNXZWlnaHRBZGRbaW5kZXhdID0gYWxsUHJvcGVydGllc1dlaWdodFtub2RlQWRkLm9yaWdpbkluZGV4XTtcbiAgICAgICAgfSk7IC8vIHRoZSBpbmVydGlhbE1vZHVsYXJpdHkgZm9yICoqYWRkaW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgICAgdmFyIGFkZEluZXJ0aWFsTW9kdWxhcml0eSA9IGdldEluZXJ0aWFsTW9kdWxhcml0eShjbHVzdGVyTm9kZXNBZnRlckFkZCwgYWxsUHJvcGVydGllc1dlaWdodCkgKiBpbmVydGlhbFdlaWdodDsgLy8gdGhlIGluY3JlYXNlIG1vZHVyYXJpdHkgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhZGRNb2R1cmFyaXR5IGFuZCByZW1vdmVNb2R1cmFyaXR5XG5cbiAgICAgICAgdmFyIGluY3JlYXNlID0gYWRkTW9kdXJhcml0eSAtIHJlbW92ZU1vZHVyYXJpdHk7XG5cbiAgICAgICAgaWYgKGluZXJ0aWFsTW9kdWxhcml0eSkge1xuICAgICAgICAgIGluY3JlYXNlID0gYWRkTW9kdXJhcml0eSArIGFkZEluZXJ0aWFsTW9kdWxhcml0eSAtIChyZW1vdmVNb2R1cmFyaXR5ICsgcmVtb3ZlSW5lcnRpYWxNb2R1bGFyaXR5KTtcbiAgICAgICAgfSAvLyBmaW5kIHRoZSBiZXN0IGNsdXN0ZXIgdG8gbW92ZSBub2RlIGkgaW50b1xuXG5cbiAgICAgICAgaWYgKGluY3JlYXNlID4gYmVzdEluY3JlYXNlKSB7XG4gICAgICAgICAgYmVzdEluY3JlYXNlID0gaW5jcmVhc2U7XG4gICAgICAgICAgYmVzdENsdXN0ZXIgPSBuZWlnaGJvckNsdXN0ZXI7XG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyBpZiBmb3VuZCBhIGJlc3QgY2x1c3RlciB0byBtb3ZlIGludG9cblxuICAgICAgaWYgKGJlc3RJbmNyZWFzZSA+IDApIHtcbiAgICAgICAgYmVzdENsdXN0ZXIubm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgdmFyIHByZXZpb3VzQ2x1c3RlcklkXzEgPSBub2RlLmNsdXN0ZXJJZDtcbiAgICAgICAgbm9kZS5jbHVzdGVySWQgPSBiZXN0Q2x1c3Rlci5pZDsgLy8gbW92ZSB0aGUgbm9kZSB0byB0aGUgYmVzdCBjbHVzdGVyXG5cbiAgICAgICAgdmFyIG5vZGVJblNlbGZDbHVzdGVySWR4ID0gc2VsZkNsdXN0ZXIubm9kZXMuaW5kZXhPZihub2RlKTsgLy8gcmVtb3ZlIGZyb20gb3JpZ2luIGNsdXN0ZXJcblxuICAgICAgICBzZWxmQ2x1c3Rlci5ub2Rlcy5zcGxpY2Uobm9kZUluU2VsZkNsdXN0ZXJJZHgsIDEpOyAvLyB1cGRhdGUgc3VtVG90IGZvciBjbHVzdGVyc1xuICAgICAgICAvLyBzdW0gb2Ygd2VpZ2h0cyBvZiBlZGdlcyB0byBub2RlcyBpbiBjbHVzdGVyXG5cbiAgICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xID0gMDtcbiAgICAgICAgdmFyIHNlbGZDbHVzdGVyU3VtVG90XzEgPSAwO1xuICAgICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgdmFyIHNvdXJjZSA9IGVkZ2Uuc291cmNlLFxuICAgICAgICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgICAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgICAgICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG5cbiAgICAgICAgICBpZiAoc291cmNlQ2x1c3RlcklkID09PSBiZXN0Q2x1c3Rlci5pZCAmJiB0YXJnZXRDbHVzdGVySWQgIT09IGJlc3RDbHVzdGVyLmlkIHx8IHRhcmdldENsdXN0ZXJJZCA9PT0gYmVzdENsdXN0ZXIuaWQgJiYgc291cmNlQ2x1c3RlcklkICE9PSBiZXN0Q2x1c3Rlci5pZCkge1xuICAgICAgICAgICAgbmVpZ2hib3JDbHVzdGVyU3VtVG90XzEgPSBuZWlnaGJvckNsdXN0ZXJTdW1Ub3RfMSArIChlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNvdXJjZUNsdXN0ZXJJZCA9PT0gcHJldmlvdXNDbHVzdGVySWRfMSAmJiB0YXJnZXRDbHVzdGVySWQgIT09IHByZXZpb3VzQ2x1c3RlcklkXzEgfHwgdGFyZ2V0Q2x1c3RlcklkID09PSBwcmV2aW91c0NsdXN0ZXJJZF8xICYmIHNvdXJjZUNsdXN0ZXJJZCAhPT0gcHJldmlvdXNDbHVzdGVySWRfMSkge1xuICAgICAgICAgICAgc2VsZkNsdXN0ZXJTdW1Ub3RfMSA9IHNlbGZDbHVzdGVyU3VtVG90XzEgKyAoZWRnZVt3ZWlnaHRQcm9wZXJ0eU5hbWVdIHx8IDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7IC8vIHRoZSBub2RlcyBvZiB0aGUgY2x1c3RlcnMgdG8gbW92ZSBpbnRvIGFuZCByZW1vdmUgYXJlIGNoYW5nZWQsIHVwZGF0ZSB0aGVpciBzdW1Ub3RcblxuICAgICAgICBiZXN0Q2x1c3Rlci5zdW1Ub3QgPSBuZWlnaGJvckNsdXN0ZXJTdW1Ub3RfMTtcbiAgICAgICAgc2VsZkNsdXN0ZXIuc3VtVG90ID0gc2VsZkNsdXN0ZXJTdW1Ub3RfMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSAvLyBkZWxldGUgdGhlIGVtcHR5IGNsdXN0ZXJzLCBhc3NpZ24gaW5jcmVhc2luZyBjbHVzdGVySWRcblxuXG4gIHZhciBuZXdDbHVzdGVySWRNYXAgPSB7fTtcbiAgdmFyIGNsdXN0ZXJJZHggPSAwO1xuICBPYmplY3Qua2V5cyhmaW5hbENsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICB2YXIgY2x1c3RlciA9IGZpbmFsQ2x1c3RlcnNbY2x1c3RlcklkXTtcblxuICAgIGlmICghY2x1c3Rlci5ub2RlcyB8fCAhY2x1c3Rlci5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIGRlbGV0ZSBmaW5hbENsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5ld0lkID0gU3RyaW5nKGNsdXN0ZXJJZHggKyAxKTtcblxuICAgIGlmIChuZXdJZCA9PT0gY2x1c3RlcklkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY2x1c3Rlci5pZCA9IG5ld0lkO1xuICAgIGNsdXN0ZXIubm9kZXMgPSBjbHVzdGVyLm5vZGVzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgIGNsdXN0ZXJJZDogbmV3SWRcbiAgICAgIH07XG4gICAgfSk7XG4gICAgZmluYWxDbHVzdGVyc1tuZXdJZF0gPSBjbHVzdGVyO1xuICAgIG5ld0NsdXN0ZXJJZE1hcFtjbHVzdGVySWRdID0gbmV3SWQ7XG4gICAgZGVsZXRlIGZpbmFsQ2x1c3RlcnNbY2x1c3RlcklkXTtcbiAgICBjbHVzdGVySWR4Kys7XG4gIH0pOyAvLyByZXN0b3JlIG5vZGUgY2x1c3RlcklkXG5cbiAgZmluYWxOb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlSW5mbykge1xuICAgIHZhciBub2RlID0gbm9kZUluZm8ubm9kZSxcbiAgICAgICAgY2x1c3RlcklkID0gbm9kZUluZm8uY2x1c3RlcklkO1xuICAgIG5vZGUuY2x1c3RlcklkID0gY2x1c3RlcklkO1xuICAgIGlmIChub2RlLmNsdXN0ZXJJZCAmJiBuZXdDbHVzdGVySWRNYXBbbm9kZS5jbHVzdGVySWRdKSBub2RlLmNsdXN0ZXJJZCA9IG5ld0NsdXN0ZXJJZE1hcFtub2RlLmNsdXN0ZXJJZF07XG4gIH0pOyAvLyBnZXQgdGhlIGNsdXN0ZXIgZWRnZXNcblxuICB2YXIgY2x1c3RlckVkZ2VzID0gW107XG4gIHZhciBjbHVzdGVyRWRnZU1hcCA9IHt9O1xuICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdmFyIHNvdXJjZSA9IGVkZ2Uuc291cmNlLFxuICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICB2YXIgd2VpZ2h0ID0gZWRnZVt3ZWlnaHRQcm9wZXJ0eU5hbWVdIHx8IDE7XG4gICAgdmFyIHNvdXJjZUNsdXN0ZXJJZCA9IG5vZGVNYXBbc291cmNlXS5ub2RlLmNsdXN0ZXJJZDtcbiAgICB2YXIgdGFyZ2V0Q2x1c3RlcklkID0gbm9kZU1hcFt0YXJnZXRdLm5vZGUuY2x1c3RlcklkO1xuICAgIHZhciBuZXdFZGdlSWQgPSBcIlwiLmNvbmNhdChzb3VyY2VDbHVzdGVySWQsIFwiLS0tXCIpLmNvbmNhdCh0YXJnZXRDbHVzdGVySWQpO1xuXG4gICAgaWYgKGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0pIHtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0ud2VpZ2h0ICs9IHdlaWdodDtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0uY291bnQrKztcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5ld0VkZ2UgPSB7XG4gICAgICAgIHNvdXJjZTogc291cmNlQ2x1c3RlcklkLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldENsdXN0ZXJJZCxcbiAgICAgICAgd2VpZ2h0OiB3ZWlnaHQsXG4gICAgICAgIGNvdW50OiAxXG4gICAgICB9O1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSA9IG5ld0VkZ2U7XG4gICAgICBjbHVzdGVyRWRnZXMucHVzaChuZXdFZGdlKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgY2x1c3RlcnNBcnJheSA9IFtdO1xuICBPYmplY3Qua2V5cyhmaW5hbENsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICBjbHVzdGVyc0FycmF5LnB1c2goZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY2x1c3RlcnM6IGNsdXN0ZXJzQXJyYXksXG4gICAgY2x1c3RlckVkZ2VzOiBjbHVzdGVyRWRnZXNcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGxvdXZhaW47Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/louvain.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/mts.js": /*!************************************************!*\ !*** ./node_modules/@antv/algorithm/es/mts.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_union_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./structs/union-find */ \"./node_modules/@antv/algorithm/es/structs/union-find.js\");\n/* harmony import */ var _structs_binary_heap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./structs/binary-heap */ \"./node_modules/@antv/algorithm/es/structs/binary-heap.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n\n/**\n * Prim algorithm,use priority queue,复杂度 O(E+V*logV), V: 节点数量,E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Prim%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n */\n\nvar primMST = function primMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 从nodes[0]开始\n\n\n var currNode = nodes[0];\n var visited = new Set();\n visited.add(currNode); // 用二叉堆维护距已加入节点的其他节点的边的权值\n\n var compareWeight = function compareWeight(a, b) {\n if (weight) {\n return a.weight - b.weight;\n }\n\n return 0;\n };\n\n var edgeQueue = new _structs_binary_heap__WEBPACK_IMPORTED_MODULE_1__[\"default\"](compareWeight);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(currNode.id, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n\n while (!edgeQueue.isEmpty()) {\n // 选取与已加入的结点之间边权最小的结点\n var currEdge = edgeQueue.delMin();\n var source = currEdge.source;\n var target = currEdge.target;\n if (visited.has(source) && visited.has(target)) continue;\n selectedEdges.push(currEdge);\n\n if (!visited.has(source)) {\n visited.add(source);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(source, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n\n if (!visited.has(target)) {\n visited.add(target);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(target, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n }\n\n return selectedEdges;\n};\n/**\n * Kruskal algorithm,复杂度 O(E*logE), E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @return IEdge[] 返回构成MST的边的数组\n */\n\n\nvar kruskalMST = function kruskalMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 若指定weight,则将所有的边按权值从小到大排序\n\n\n var weightEdges = edges.map(function (edge) {\n return edge;\n });\n\n if (weight) {\n weightEdges.sort(function (a, b) {\n return a.weight - b.weight;\n });\n }\n\n var disjointSet = new _structs_union_find__WEBPACK_IMPORTED_MODULE_0__[\"default\"](nodes.map(function (n) {\n return n.id;\n })); // 从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边\n // 直到遍历完所有点或边\n\n while (weightEdges.length > 0) {\n var curEdge = weightEdges.shift();\n var source = curEdge.source;\n var target = curEdge.target;\n\n if (!disjointSet.connected(source, target)) {\n selectedEdges.push(curEdge);\n disjointSet.union(source, target);\n }\n }\n\n return selectedEdges;\n};\n/**\n * 最小生成树\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nvar minimumSpanningTree = function minimumSpanningTree(graphData, weight, algo) {\n var algos = {\n prim: primMST,\n kruskal: kruskalMST\n };\n if (!algo) return kruskalMST(graphData, weight);\n return algos[algo](graphData, weight);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (minimumSpanningTree);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL210cy5qcz8yMjIwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ0s7QUFDUjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQiw0REFBYTtBQUNuQyxFQUFFLDhEQUFnQjtBQUNsQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sOERBQWdCO0FBQ3RCO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxNQUFNLDhEQUFnQjtBQUN0QjtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsd0JBQXdCLDJEQUFTO0FBQ2pDO0FBQ0EsR0FBRyxHQUFHO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxrRkFBbUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL210cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVbmlvbkZpbmQgZnJvbSAnLi9zdHJ1Y3RzL3VuaW9uLWZpbmQnO1xuaW1wb3J0IE1pbkJpbmFyeUhlYXAgZnJvbSAnLi9zdHJ1Y3RzL2JpbmFyeS1oZWFwJztcbmltcG9ydCB7IGdldEVkZ2VzQnlOb2RlSWQgfSBmcm9tICcuL3V0aWwnO1xuLyoqXG4gKiBQcmltIGFsZ29yaXRobe+8jHVzZSBwcmlvcml0eSBxdWV1Ze+8jOWkjeadguW6piBPKEUrVipsb2dWKSwgVjog6IqC54K55pWw6YeP77yMRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJpbSUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKi9cblxudmFyIHByaW1NU1QgPSBmdW5jdGlvbiBwcmltTVNUKGdyYXBoRGF0YSwgd2VpZ2h0KSB7XG4gIHZhciBzZWxlY3RlZEVkZ2VzID0gW107XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG5cbiAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xuICB9IC8vIOS7jm5vZGVzWzBd5byA5aeLXG5cblxuICB2YXIgY3Vyck5vZGUgPSBub2Rlc1swXTtcbiAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gIHZpc2l0ZWQuYWRkKGN1cnJOb2RlKTsgLy8g55So5LqM5Y+J5aCG57u05oqk6Led5bey5Yqg5YWl6IqC54K555qE5YW25LuW6IqC54K555qE6L6555qE5p2D5YC8XG5cbiAgdmFyIGNvbXBhcmVXZWlnaHQgPSBmdW5jdGlvbiBjb21wYXJlV2VpZ2h0KGEsIGIpIHtcbiAgICBpZiAod2VpZ2h0KSB7XG4gICAgICByZXR1cm4gYS53ZWlnaHQgLSBiLndlaWdodDtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfTtcblxuICB2YXIgZWRnZVF1ZXVlID0gbmV3IE1pbkJpbmFyeUhlYXAoY29tcGFyZVdlaWdodCk7XG4gIGdldEVkZ2VzQnlOb2RlSWQoY3Vyck5vZGUuaWQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgfSk7XG5cbiAgd2hpbGUgKCFlZGdlUXVldWUuaXNFbXB0eSgpKSB7XG4gICAgLy8g6YCJ5Y+W5LiO5bey5Yqg5YWl55qE57uT54K55LmL6Ze06L655p2D5pyA5bCP55qE57uT54K5XG4gICAgdmFyIGN1cnJFZGdlID0gZWRnZVF1ZXVlLmRlbE1pbigpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJyRWRnZS5zb3VyY2U7XG4gICAgdmFyIHRhcmdldCA9IGN1cnJFZGdlLnRhcmdldDtcbiAgICBpZiAodmlzaXRlZC5oYXMoc291cmNlKSAmJiB2aXNpdGVkLmhhcyh0YXJnZXQpKSBjb250aW51ZTtcbiAgICBzZWxlY3RlZEVkZ2VzLnB1c2goY3VyckVkZ2UpO1xuXG4gICAgaWYgKCF2aXNpdGVkLmhhcyhzb3VyY2UpKSB7XG4gICAgICB2aXNpdGVkLmFkZChzb3VyY2UpO1xuICAgICAgZ2V0RWRnZXNCeU5vZGVJZChzb3VyY2UsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIGVkZ2VRdWV1ZS5pbnNlcnQoZWRnZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXZpc2l0ZWQuaGFzKHRhcmdldCkpIHtcbiAgICAgIHZpc2l0ZWQuYWRkKHRhcmdldCk7XG4gICAgICBnZXRFZGdlc0J5Tm9kZUlkKHRhcmdldCwgZWRnZXMpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xufTtcbi8qKlxuICogS3J1c2thbCBhbGdvcml0aG3vvIzlpI3mnYLluqYgTyhFKmxvZ0UpLCBFOiDovrnnmoTmlbDph49cbiAqIHJlZmVyOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LcnVza2FsJTI3c19hbGdvcml0aG1cbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIHdlaWdodCDmjIflrprnlKjkuo7kvZzkuLrovrnmnYPph43nmoTlsZ7mgKfvvIzoi6XkuI3mjIflrprvvIzliJnorqTkuLrmiYDmnInovrnmnYPph43kuIDoh7RcbiAqIEByZXR1cm4gSUVkZ2VbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbnZhciBrcnVza2FsTVNUID0gZnVuY3Rpb24ga3J1c2thbE1TVChncmFwaERhdGEsIHdlaWdodCkge1xuICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuXG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbiAgfSAvLyDoi6XmjIflrpp3ZWlnaHTvvIzliJnlsIbmiYDmnInnmoTovrnmjInmnYPlgLzku47lsI/liLDlpKfmjpLluo9cblxuXG4gIHZhciB3ZWlnaHRFZGdlcyA9IGVkZ2VzLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiBlZGdlO1xuICB9KTtcblxuICBpZiAod2VpZ2h0KSB7XG4gICAgd2VpZ2h0RWRnZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEud2VpZ2h0IC0gYi53ZWlnaHQ7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgZGlzam9pbnRTZXQgPSBuZXcgVW5pb25GaW5kKG5vZGVzLm1hcChmdW5jdGlvbiAobikge1xuICAgIHJldHVybiBuLmlkO1xuICB9KSk7IC8vIOS7juadg+WAvOacgOWwj+eahOi+ueW8gOWni++8jOWmguaenOi/meadoei+uei/nuaOpeeahOS4pOS4quiKgueCueS6juWbvkfkuK3kuI3lnKjlkIzkuIDkuKrov57pgJrliIbph4/kuK3vvIzliJnmt7vliqDov5nmnaHovrlcbiAgLy8g55u05Yiw6YGN5Y6G5a6M5omA5pyJ54K55oiW6L65XG5cbiAgd2hpbGUgKHdlaWdodEVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgY3VyRWRnZSA9IHdlaWdodEVkZ2VzLnNoaWZ0KCk7XG4gICAgdmFyIHNvdXJjZSA9IGN1ckVkZ2Uuc291cmNlO1xuICAgIHZhciB0YXJnZXQgPSBjdXJFZGdlLnRhcmdldDtcblxuICAgIGlmICghZGlzam9pbnRTZXQuY29ubmVjdGVkKHNvdXJjZSwgdGFyZ2V0KSkge1xuICAgICAgc2VsZWN0ZWRFZGdlcy5wdXNoKGN1ckVkZ2UpO1xuICAgICAgZGlzam9pbnRTZXQudW5pb24oc291cmNlLCB0YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xufTtcbi8qKlxuICog5pyA5bCP55Sf5oiQ5qCRXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS3J1c2thbCUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcGFyYW0gYWxnbyAncHJpbScgfCAna3J1c2thbCcg566X5rOV57G75Z6LXG4gKiBAcmV0dXJuIEVkZ2VDb25maWdbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbnZhciBtaW5pbXVtU3Bhbm5pbmdUcmVlID0gZnVuY3Rpb24gbWluaW11bVNwYW5uaW5nVHJlZShncmFwaERhdGEsIHdlaWdodCwgYWxnbykge1xuICB2YXIgYWxnb3MgPSB7XG4gICAgcHJpbTogcHJpbU1TVCxcbiAgICBrcnVza2FsOiBrcnVza2FsTVNUXG4gIH07XG4gIGlmICghYWxnbykgcmV0dXJuIGtydXNrYWxNU1QoZ3JhcGhEYXRhLCB3ZWlnaHQpO1xuICByZXR1cm4gYWxnb3NbYWxnb10oZ3JhcGhEYXRhLCB3ZWlnaHQpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWluaW11bVNwYW5uaW5nVHJlZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/mts.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/nodes-cosine-similarity.js": /*!********************************************************************!*\ !*** ./node_modules/@antv/algorithm/es/nodes-cosine-similarity.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _utils_node_properties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/node-properties */ \"./node_modules/@antv/algorithm/es/utils/node-properties.js\");\n/* harmony import */ var _utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/data-preprocessing */ \"./node_modules/@antv/algorithm/es/utils/data-preprocessing.js\");\n/* harmony import */ var _cosine_similarity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./cosine-similarity */ \"./node_modules/@antv/algorithm/es/cosine-similarity.js\");\n\n\n\n\n/**\n * nodes-cosine-similarity算法 基于节点属性计算余弦相似度(基于种子节点寻找相似节点)\n * @param nodes 图节点数据\n * @param seedNode 种子节点\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n * @param propertyKey 属性的字段名\n */\n\nvar nodesCosineSimilarity = function nodesCosineSimilarity(nodes, seedNode, involvedKeys, uninvolvedKeys, propertyKey) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n if (involvedKeys === void 0) {\n involvedKeys = [];\n }\n\n if (uninvolvedKeys === void 0) {\n uninvolvedKeys = [];\n }\n\n if (propertyKey === void 0) {\n propertyKey = 'properties';\n }\n\n var similarNodes = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(nodes.filter(function (node) {\n return node.id !== seedNode.id;\n }));\n var seedNodeIndex = nodes.findIndex(function (node) {\n return node.id === seedNode.id;\n }); // 所有节点属性集合\n\n var properties = Object(_utils_node_properties__WEBPACK_IMPORTED_MODULE_1__[\"getAllProperties\"])(nodes, propertyKey); // 所有节点属性one-hot特征向量集合s\n\n var allPropertiesWeight = Object(_utils_data_preprocessing__WEBPACK_IMPORTED_MODULE_2__[\"oneHot\"])(properties, involvedKeys, uninvolvedKeys); // 种子节点属性\n\n var seedNodeProperties = allPropertiesWeight[seedNodeIndex];\n var allCosineSimilarity = [];\n similarNodes.forEach(function (node, index) {\n if (node.id !== seedNode.id) {\n // 节点属性\n var nodeProperties = allPropertiesWeight[index]; // 计算节点向量和种子节点向量的余弦相似度\n\n var cosineSimilarityValue = Object(_cosine_similarity__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(nodeProperties, seedNodeProperties);\n allCosineSimilarity.push(cosineSimilarityValue);\n node.cosineSimilarity = cosineSimilarityValue;\n }\n }); // 将返回的节点按照余弦相似度大小排序\n\n similarNodes.sort(function (a, b) {\n return b.cosineSimilarity - a.cosineSimilarity;\n });\n return {\n allCosineSimilarity: allCosineSimilarity,\n similarNodes: similarNodes\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (nodesCosineSimilarity);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL25vZGVzLWNvc2luZS1zaW1pbGFyaXR5LmpzP2VjZjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUN3QjtBQUNQO0FBQ0Q7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsd0RBQUs7QUFDMUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTCxtQkFBbUIsK0VBQWdCLHFCQUFxQjs7QUFFeEQsNEJBQTRCLHdFQUFNLDJDQUEyQzs7QUFFN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRDs7QUFFdEQsa0NBQWtDLGtFQUFnQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLG9GQUFxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvbm9kZXMtY29zaW5lLXNpbWlsYXJpdHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZ2V0QWxsUHJvcGVydGllcyB9IGZyb20gJy4vdXRpbHMvbm9kZS1wcm9wZXJ0aWVzJztcbmltcG9ydCB7IG9uZUhvdCB9IGZyb20gJy4vdXRpbHMvZGF0YS1wcmVwcm9jZXNzaW5nJztcbmltcG9ydCBjb3NpbmVTaW1pbGFyaXR5IGZyb20gJy4vY29zaW5lLXNpbWlsYXJpdHknO1xuLyoqXG4gKiAgbm9kZXMtY29zaW5lLXNpbWlsYXJpdHnnrpfms5Ug5Z+65LqO6IqC54K55bGe5oCn6K6h566X5L2Z5bym55u45Ly85bqmKOWfuuS6juenjeWtkOiKgueCueWvu+aJvuebuOS8vOiKgueCuSlcbiAqIEBwYXJhbSBub2RlcyDlm77oioLngrnmlbDmja5cbiAqIEBwYXJhbSBzZWVkTm9kZSDnp43lrZDoioLngrlcbiAqIEBwYXJhbSBpbnZvbHZlZEtleXMg5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKiBAcGFyYW0gdW5pbnZvbHZlZEtleXMg5LiN5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKiBAcGFyYW0gcHJvcGVydHlLZXkg5bGe5oCn55qE5a2X5q615ZCNXG4gKi9cblxudmFyIG5vZGVzQ29zaW5lU2ltaWxhcml0eSA9IGZ1bmN0aW9uIG5vZGVzQ29zaW5lU2ltaWxhcml0eShub2Rlcywgc2VlZE5vZGUsIGludm9sdmVkS2V5cywgdW5pbnZvbHZlZEtleXMsIHByb3BlcnR5S2V5KSB7XG4gIGlmIChub2RlcyA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZXMgPSBbXTtcbiAgfVxuXG4gIGlmIChpbnZvbHZlZEtleXMgPT09IHZvaWQgMCkge1xuICAgIGludm9sdmVkS2V5cyA9IFtdO1xuICB9XG5cbiAgaWYgKHVuaW52b2x2ZWRLZXlzID09PSB2b2lkIDApIHtcbiAgICB1bmludm9sdmVkS2V5cyA9IFtdO1xuICB9XG5cbiAgaWYgKHByb3BlcnR5S2V5ID09PSB2b2lkIDApIHtcbiAgICBwcm9wZXJ0eUtleSA9ICdwcm9wZXJ0aWVzJztcbiAgfVxuXG4gIHZhciBzaW1pbGFyTm9kZXMgPSBjbG9uZShub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5pZCAhPT0gc2VlZE5vZGUuaWQ7XG4gIH0pKTtcbiAgdmFyIHNlZWROb2RlSW5kZXggPSBub2Rlcy5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5pZCA9PT0gc2VlZE5vZGUuaWQ7XG4gIH0pOyAvLyDmiYDmnInoioLngrnlsZ7mgKfpm4blkIhcblxuICB2YXIgcHJvcGVydGllcyA9IGdldEFsbFByb3BlcnRpZXMobm9kZXMsIHByb3BlcnR5S2V5KTsgLy8g5omA5pyJ6IqC54K55bGe5oCnb25lLWhvdOeJueW+geWQkemHj+mbhuWQiHNcblxuICB2YXIgYWxsUHJvcGVydGllc1dlaWdodCA9IG9uZUhvdChwcm9wZXJ0aWVzLCBpbnZvbHZlZEtleXMsIHVuaW52b2x2ZWRLZXlzKTsgLy8g56eN5a2Q6IqC54K55bGe5oCnXG5cbiAgdmFyIHNlZWROb2RlUHJvcGVydGllcyA9IGFsbFByb3BlcnRpZXNXZWlnaHRbc2VlZE5vZGVJbmRleF07XG4gIHZhciBhbGxDb3NpbmVTaW1pbGFyaXR5ID0gW107XG4gIHNpbWlsYXJOb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpbmRleCkge1xuICAgIGlmIChub2RlLmlkICE9PSBzZWVkTm9kZS5pZCkge1xuICAgICAgLy8g6IqC54K55bGe5oCnXG4gICAgICB2YXIgbm9kZVByb3BlcnRpZXMgPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W2luZGV4XTsgLy8g6K6h566X6IqC54K55ZCR6YeP5ZKM56eN5a2Q6IqC54K55ZCR6YeP55qE5L2Z5bym55u45Ly85bqmXG5cbiAgICAgIHZhciBjb3NpbmVTaW1pbGFyaXR5VmFsdWUgPSBjb3NpbmVTaW1pbGFyaXR5KG5vZGVQcm9wZXJ0aWVzLCBzZWVkTm9kZVByb3BlcnRpZXMpO1xuICAgICAgYWxsQ29zaW5lU2ltaWxhcml0eS5wdXNoKGNvc2luZVNpbWlsYXJpdHlWYWx1ZSk7XG4gICAgICBub2RlLmNvc2luZVNpbWlsYXJpdHkgPSBjb3NpbmVTaW1pbGFyaXR5VmFsdWU7XG4gICAgfVxuICB9KTsgLy8g5bCG6L+U5Zue55qE6IqC54K55oyJ54Wn5L2Z5bym55u45Ly85bqm5aSn5bCP5o6S5bqPXG5cbiAgc2ltaWxhck5vZGVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5jb3NpbmVTaW1pbGFyaXR5IC0gYS5jb3NpbmVTaW1pbGFyaXR5O1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBhbGxDb3NpbmVTaW1pbGFyaXR5OiBhbGxDb3NpbmVTaW1pbGFyaXR5LFxuICAgIHNpbWlsYXJOb2Rlczogc2ltaWxhck5vZGVzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBub2Rlc0Nvc2luZVNpbWlsYXJpdHk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/nodes-cosine-similarity.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/pageRank.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/algorithm/es/pageRank.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _degree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./degree */ \"./node_modules/@antv/algorithm/es/degree.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/es/util.js\");\n\n\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\n\nvar pageRank = function pageRank(graphData, epsilon, linkProb) {\n if (typeof epsilon !== 'number') epsilon = 0.000001;\n if (typeof linkProb !== 'number') linkProb = 0.85;\n var distance = 1;\n var leakedRank = 0;\n var maxIterations = 1000;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodesCount = nodes.length;\n var currentRank;\n var curRanks = {};\n var prevRanks = {}; // Initialize pageranks 初始化\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n curRanks[nodeId] = 1 / nodesCount;\n prevRanks[nodeId] = 1 / nodesCount;\n }\n\n var nodeDegree = Object(_degree__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData);\n\n while (maxIterations > 0 && distance > epsilon) {\n leakedRank = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = 0;\n\n if (nodeDegree[node.id].inDegree === 0) {\n curRanks[nodeId] = 0;\n } else {\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(nodeId, edges, 'source');\n\n for (var i = 0; i < neighbors.length; ++i) {\n var neighbor = neighbors[i];\n var outDegree = nodeDegree[neighbor].outDegree;\n if (outDegree > 0) currentRank += prevRanks[neighbor] / outDegree;\n }\n\n curRanks[nodeId] = linkProb * currentRank;\n leakedRank += curRanks[nodeId];\n }\n }\n\n leakedRank = (1 - leakedRank) / nodesCount;\n distance = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = curRanks[nodeId] + leakedRank;\n distance += Math.abs(currentRank - prevRanks[nodeId]);\n prevRanks[nodeId] = currentRank;\n }\n\n maxIterations -= 1;\n }\n\n return prevRanks;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (pageRank);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3BhZ2VSYW5rLmpzP2ZkYWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQThCO0FBQ1E7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsdURBQU07O0FBRXpCO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCx3QkFBd0IsMERBQVk7O0FBRXBDLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRWUsdUVBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3BhZ2VSYW5rLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZ3JlZSBmcm9tICcuL2RlZ3JlZSc7XG5pbXBvcnQgeyBnZXROZWlnaGJvcnMgfSBmcm9tIFwiLi91dGlsXCI7XG4vKipcbiAqIFBhZ2VSYW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhZ2VSYW5rXG4gKiByZWZlcjogaHR0cHM6Ly9naXRodWIuY29tL2FudmFrYS9uZ3JhcGgucGFnZXJhbmtcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIGVwc2lsb24g5Yik5pat5piv5ZCm5pS25pWb55qE57K+5bqm5YC877yM6buY6K6kIDAuMDAwMDAxXG4gKiBAcGFyYW0gbGlua1Byb2Ig6Zi75bC857O75pWw77yIZHVtcGluZyBmYWN0b3LvvInvvIzmjIfku7vmhI/ml7bliLvvvIznlKjmiLforr/pl67liLDmn5DoioLngrnlkI7nu6fnu63orr/pl67or6XoioLngrnpk77mjqXnmoTkuIvkuIDkuKroioLngrnnmoTmpoLnjofvvIznu4/pqozlgLwgMC44NVxuICovXG5cbnZhciBwYWdlUmFuayA9IGZ1bmN0aW9uIHBhZ2VSYW5rKGdyYXBoRGF0YSwgZXBzaWxvbiwgbGlua1Byb2IpIHtcbiAgaWYgKHR5cGVvZiBlcHNpbG9uICE9PSAnbnVtYmVyJykgZXBzaWxvbiA9IDAuMDAwMDAxO1xuICBpZiAodHlwZW9mIGxpbmtQcm9iICE9PSAnbnVtYmVyJykgbGlua1Byb2IgPSAwLjg1O1xuICB2YXIgZGlzdGFuY2UgPSAxO1xuICB2YXIgbGVha2VkUmFuayA9IDA7XG4gIHZhciBtYXhJdGVyYXRpb25zID0gMTAwMDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIG5vZGVzQ291bnQgPSBub2Rlcy5sZW5ndGg7XG4gIHZhciBjdXJyZW50UmFuaztcbiAgdmFyIGN1clJhbmtzID0ge307XG4gIHZhciBwcmV2UmFua3MgPSB7fTsgLy8gSW5pdGlhbGl6ZSBwYWdlcmFua3Mg5Yid5aeL5YyWXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIGN1clJhbmtzW25vZGVJZF0gPSAxIC8gbm9kZXNDb3VudDtcbiAgICBwcmV2UmFua3Nbbm9kZUlkXSA9IDEgLyBub2Rlc0NvdW50O1xuICB9XG5cbiAgdmFyIG5vZGVEZWdyZWUgPSBkZWdyZWUoZ3JhcGhEYXRhKTtcblxuICB3aGlsZSAobWF4SXRlcmF0aW9ucyA+IDAgJiYgZGlzdGFuY2UgPiBlcHNpbG9uKSB7XG4gICAgbGVha2VkUmFuayA9IDA7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vZGVzQ291bnQ7ICsraikge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tqXTtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgICAgY3VycmVudFJhbmsgPSAwO1xuXG4gICAgICBpZiAobm9kZURlZ3JlZVtub2RlLmlkXS5pbkRlZ3JlZSA9PT0gMCkge1xuICAgICAgICBjdXJSYW5rc1tub2RlSWRdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBuZWlnaGJvcnMgPSBnZXROZWlnaGJvcnMobm9kZUlkLCBlZGdlcywgJ3NvdXJjZScpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgdmFyIG5laWdoYm9yID0gbmVpZ2hib3JzW2ldO1xuICAgICAgICAgIHZhciBvdXREZWdyZWUgPSBub2RlRGVncmVlW25laWdoYm9yXS5vdXREZWdyZWU7XG4gICAgICAgICAgaWYgKG91dERlZ3JlZSA+IDApIGN1cnJlbnRSYW5rICs9IHByZXZSYW5rc1tuZWlnaGJvcl0gLyBvdXREZWdyZWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJSYW5rc1tub2RlSWRdID0gbGlua1Byb2IgKiBjdXJyZW50UmFuaztcbiAgICAgICAgbGVha2VkUmFuayArPSBjdXJSYW5rc1tub2RlSWRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxlYWtlZFJhbmsgPSAoMSAtIGxlYWtlZFJhbmspIC8gbm9kZXNDb3VudDtcbiAgICBkaXN0YW5jZSA9IDA7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vZGVzQ291bnQ7ICsraikge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tqXTtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgICAgY3VycmVudFJhbmsgPSBjdXJSYW5rc1tub2RlSWRdICsgbGVha2VkUmFuaztcbiAgICAgIGRpc3RhbmNlICs9IE1hdGguYWJzKGN1cnJlbnRSYW5rIC0gcHJldlJhbmtzW25vZGVJZF0pO1xuICAgICAgcHJldlJhbmtzW25vZGVJZF0gPSBjdXJyZW50UmFuaztcbiAgICB9XG5cbiAgICBtYXhJdGVyYXRpb25zIC09IDE7XG4gIH1cblxuICByZXR1cm4gcHJldlJhbmtzO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcGFnZVJhbms7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/pageRank.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/structs/binary-heap.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/algorithm/es/structs/binary-heap.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar defaultCompare = function defaultCompare(a, b) {\n return a - b;\n};\n\nvar MinBinaryHeap =\n/** @class */\nfunction () {\n function MinBinaryHeap(compareFn) {\n if (compareFn === void 0) {\n compareFn = defaultCompare;\n }\n\n this.compareFn = compareFn;\n this.list = [];\n }\n\n MinBinaryHeap.prototype.getLeft = function (index) {\n return 2 * index + 1;\n };\n\n MinBinaryHeap.prototype.getRight = function (index) {\n return 2 * index + 2;\n };\n\n MinBinaryHeap.prototype.getParent = function (index) {\n if (index === 0) {\n return null;\n }\n\n return Math.floor((index - 1) / 2);\n };\n\n MinBinaryHeap.prototype.isEmpty = function () {\n return this.list.length <= 0;\n };\n\n MinBinaryHeap.prototype.top = function () {\n return this.isEmpty() ? undefined : this.list[0];\n };\n\n MinBinaryHeap.prototype.delMin = function () {\n var top = this.top();\n var bottom = this.list.pop();\n\n if (this.list.length > 0) {\n this.list[0] = bottom;\n this.moveDown(0);\n }\n\n return top;\n };\n\n MinBinaryHeap.prototype.insert = function (value) {\n if (value !== null) {\n this.list.push(value);\n var index = this.list.length - 1;\n this.moveUp(index);\n return true;\n }\n\n return false;\n };\n\n MinBinaryHeap.prototype.moveUp = function (index) {\n var parent = this.getParent(index);\n\n while (index && index > 0 && this.compareFn(this.list[parent], this.list[index]) > 0) {\n // swap\n var tmp = this.list[parent];\n this.list[parent] = this.list[index];\n this.list[index] = tmp; // [this.list[index], this.list[parent]] = [this.list[parent], this.list[index]]\n\n index = parent;\n parent = this.getParent(index);\n }\n };\n\n MinBinaryHeap.prototype.moveDown = function (index) {\n var _a;\n\n var element = index;\n var left = this.getLeft(index);\n var right = this.getRight(index);\n var size = this.list.length;\n\n if (left !== null && left < size && this.compareFn(this.list[element], this.list[left]) > 0) {\n element = left;\n } else if (right !== null && right < size && this.compareFn(this.list[element], this.list[right]) > 0) {\n element = right;\n }\n\n if (index !== element) {\n _a = [this.list[element], this.list[index]], this.list[index] = _a[0], this.list[element] = _a[1];\n this.moveDown(element);\n }\n };\n\n return MinBinaryHeap;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MinBinaryHeap);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvYmluYXJ5LWhlYXAuanM/Mjk4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyw0RUFBYSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvc3RydWN0cy9iaW5hcnktaGVhcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWZhdWx0Q29tcGFyZSA9IGZ1bmN0aW9uIGRlZmF1bHRDb21wYXJlKGEsIGIpIHtcbiAgcmV0dXJuIGEgLSBiO1xufTtcblxudmFyIE1pbkJpbmFyeUhlYXAgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNaW5CaW5hcnlIZWFwKGNvbXBhcmVGbikge1xuICAgIGlmIChjb21wYXJlRm4gPT09IHZvaWQgMCkge1xuICAgICAgY29tcGFyZUZuID0gZGVmYXVsdENvbXBhcmU7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wYXJlRm4gPSBjb21wYXJlRm47XG4gICAgdGhpcy5saXN0ID0gW107XG4gIH1cblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRMZWZ0ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgcmV0dXJuIDIgKiBpbmRleCArIDE7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuZ2V0UmlnaHQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICByZXR1cm4gMiAqIGluZGV4ICsgMjtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRQYXJlbnQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBNYXRoLmZsb29yKChpbmRleCAtIDEpIC8gMik7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5saXN0Lmxlbmd0aCA8PSAwO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLnRvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0VtcHR5KCkgPyB1bmRlZmluZWQgOiB0aGlzLmxpc3RbMF07XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuZGVsTWluID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0b3AgPSB0aGlzLnRvcCgpO1xuICAgIHZhciBib3R0b20gPSB0aGlzLmxpc3QucG9wKCk7XG5cbiAgICBpZiAodGhpcy5saXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubGlzdFswXSA9IGJvdHRvbTtcbiAgICAgIHRoaXMubW92ZURvd24oMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvcDtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubGlzdC5wdXNoKHZhbHVlKTtcbiAgICAgIHZhciBpbmRleCA9IHRoaXMubGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5tb3ZlVXAoaW5kZXgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLm1vdmVVcCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChpbmRleCk7XG5cbiAgICB3aGlsZSAoaW5kZXggJiYgaW5kZXggPiAwICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtwYXJlbnRdLCB0aGlzLmxpc3RbaW5kZXhdKSA+IDApIHtcbiAgICAgIC8vIHN3YXBcbiAgICAgIHZhciB0bXAgPSB0aGlzLmxpc3RbcGFyZW50XTtcbiAgICAgIHRoaXMubGlzdFtwYXJlbnRdID0gdGhpcy5saXN0W2luZGV4XTtcbiAgICAgIHRoaXMubGlzdFtpbmRleF0gPSB0bXA7IC8vIFt0aGlzLmxpc3RbaW5kZXhdLCB0aGlzLmxpc3RbcGFyZW50XV0gPSBbdGhpcy5saXN0W3BhcmVudF0sIHRoaXMubGlzdFtpbmRleF1dXG5cbiAgICAgIGluZGV4ID0gcGFyZW50O1xuICAgICAgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoaW5kZXgpO1xuICAgIH1cbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5tb3ZlRG93biA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBlbGVtZW50ID0gaW5kZXg7XG4gICAgdmFyIGxlZnQgPSB0aGlzLmdldExlZnQoaW5kZXgpO1xuICAgIHZhciByaWdodCA9IHRoaXMuZ2V0UmlnaHQoaW5kZXgpO1xuICAgIHZhciBzaXplID0gdGhpcy5saXN0Lmxlbmd0aDtcblxuICAgIGlmIChsZWZ0ICE9PSBudWxsICYmIGxlZnQgPCBzaXplICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W2xlZnRdKSA+IDApIHtcbiAgICAgIGVsZW1lbnQgPSBsZWZ0O1xuICAgIH0gZWxzZSBpZiAocmlnaHQgIT09IG51bGwgJiYgcmlnaHQgPCBzaXplICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W3JpZ2h0XSkgPiAwKSB7XG4gICAgICBlbGVtZW50ID0gcmlnaHQ7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ICE9PSBlbGVtZW50KSB7XG4gICAgICBfYSA9IFt0aGlzLmxpc3RbZWxlbWVudF0sIHRoaXMubGlzdFtpbmRleF1dLCB0aGlzLmxpc3RbaW5kZXhdID0gX2FbMF0sIHRoaXMubGlzdFtlbGVtZW50XSA9IF9hWzFdO1xuICAgICAgdGhpcy5tb3ZlRG93bihlbGVtZW50KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIE1pbkJpbmFyeUhlYXA7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IE1pbkJpbmFyeUhlYXA7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/structs/binary-heap.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/structs/linked-list.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/algorithm/es/structs/linked-list.js ***! \****************************************************************/ /*! exports provided: LinkedListNode, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkedListNode\", function() { return LinkedListNode; });\nvar defaultComparator = function defaultComparator(a, b) {\n if (a === b) {\n return true;\n }\n\n return false;\n};\n/**\n * 链表中单个元素节点\n */\n\n\nvar LinkedListNode =\n/** @class */\nfunction () {\n function LinkedListNode(value, next) {\n if (next === void 0) {\n next = null;\n }\n\n this.value = value;\n this.next = next;\n }\n\n LinkedListNode.prototype.toString = function (callback) {\n return callback ? callback(this.value) : \"\".concat(this.value);\n };\n\n return LinkedListNode;\n}();\n\n\n\nvar LinkedList =\n/** @class */\nfunction () {\n function LinkedList(comparator) {\n if (comparator === void 0) {\n comparator = defaultComparator;\n }\n\n this.head = null;\n this.tail = null;\n this.compare = comparator;\n }\n /**\n * 将指定元素添加到链表头部\n * @param value\n */\n\n\n LinkedList.prototype.prepend = function (value) {\n // 在头部添加一个节点\n var newNode = new LinkedListNode(value, this.head);\n this.head = newNode;\n\n if (!this.tail) {\n this.tail = newNode;\n }\n\n return this;\n };\n /**\n * 将指定元素添加到链表中\n * @param value\n */\n\n\n LinkedList.prototype.append = function (value) {\n var newNode = new LinkedListNode(value); // 如果不存在头节点,则将创建的新节点作为头节点\n\n if (!this.head) {\n this.head = newNode;\n this.tail = newNode;\n return this;\n } // 将新节点附加到链表末尾\n\n\n this.tail.next = newNode;\n this.tail = newNode;\n return this;\n };\n /**\n * 删除指定元素\n * @param value 要删除的元素\n */\n\n\n LinkedList.prototype.delete = function (value) {\n if (!this.head) {\n return null;\n }\n\n var deleteNode = null; // 如果删除的是头部元素,则将next作为头元素\n\n while (this.head && this.compare(this.head.value, value)) {\n deleteNode = this.head;\n this.head = this.head.next;\n }\n\n var currentNode = this.head;\n\n if (currentNode !== null) {\n // 如果删除了节点以后,将next节点前移\n while (currentNode.next) {\n if (this.compare(currentNode.next.value, value)) {\n deleteNode = currentNode.next;\n currentNode.next = currentNode.next.next;\n } else {\n currentNode = currentNode.next;\n }\n }\n } // 检查尾部节点是否被删除\n\n\n if (this.compare(this.tail.value, value)) {\n this.tail = currentNode;\n }\n\n return deleteNode;\n };\n /**\n * 查找指定的元素\n * @param param0\n */\n\n\n LinkedList.prototype.find = function (_a) {\n var _b = _a.value,\n value = _b === void 0 ? undefined : _b,\n _c = _a.callback,\n callback = _c === void 0 ? undefined : _c;\n\n if (!this.head) {\n return null;\n }\n\n var currentNode = this.head;\n\n while (currentNode) {\n // 如果指定了 callback,则按指定的 callback 查找\n if (callback && callback(currentNode.value)) {\n return currentNode;\n } // 如果指定了 value,则按 value 查找\n\n\n if (value !== undefined && this.compare(currentNode.value, value)) {\n return currentNode;\n }\n\n currentNode = currentNode.next;\n }\n\n return null;\n };\n /**\n * 删除尾部节点\n */\n\n\n LinkedList.prototype.deleteTail = function () {\n var deletedTail = this.tail;\n\n if (this.head === this.tail) {\n // 链表中只有一个元素\n this.head = null;\n this.tail = null;\n return deletedTail;\n }\n\n var currentNode = this.head;\n\n while (currentNode.next) {\n if (!currentNode.next.next) {\n currentNode.next = null;\n } else {\n currentNode = currentNode.next;\n }\n }\n\n this.tail = currentNode;\n return deletedTail;\n };\n /**\n * 删除头部节点\n */\n\n\n LinkedList.prototype.deleteHead = function () {\n if (!this.head) {\n return null;\n }\n\n var deletedHead = this.head;\n\n if (this.head.next) {\n this.head = this.head.next;\n } else {\n this.head = null;\n this.tail = null;\n }\n\n return deletedHead;\n };\n /**\n * 将一组元素转成链表中的节点\n * @param values 链表中的元素\n */\n\n\n LinkedList.prototype.fromArray = function (values) {\n var _this = this;\n\n values.forEach(function (value) {\n return _this.append(value);\n });\n return this;\n };\n /**\n * 将链表中的节点转成数组元素\n */\n\n\n LinkedList.prototype.toArray = function () {\n var nodes = [];\n var currentNode = this.head;\n\n while (currentNode) {\n nodes.push(currentNode);\n currentNode = currentNode.next;\n }\n\n return nodes;\n };\n /**\n * 反转链表中的元素节点\n */\n\n\n LinkedList.prototype.reverse = function () {\n var currentNode = this.head;\n var prevNode = null;\n var nextNode = null;\n\n while (currentNode) {\n // 存储下一个元素节点\n nextNode = currentNode.next; // 更改当前节点的下一个节点,以便将它连接到上一个节点上\n\n currentNode.next = prevNode; // 将 prevNode 和 currentNode 向前移动一步\n\n prevNode = currentNode;\n currentNode = nextNode;\n }\n\n this.tail = this.head;\n this.head = prevNode;\n };\n\n LinkedList.prototype.toString = function (callback) {\n if (callback === void 0) {\n callback = undefined;\n }\n\n return this.toArray().map(function (node) {\n return node.toString(callback);\n }).toString();\n };\n\n return LinkedList;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LinkedList);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvbGlua2VkLWxpc3QuanM/OTQzOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRXlCOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHlFQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmF1bHRDb21wYXJhdG9yID0gZnVuY3Rpb24gZGVmYXVsdENvbXBhcmF0b3IoYSwgYikge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbi8qKlxuICog6ZO+6KGo5Lit5Y2V5Liq5YWD57Sg6IqC54K5XG4gKi9cblxuXG52YXIgTGlua2VkTGlzdE5vZGUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSwgbmV4dCkge1xuICAgIGlmIChuZXh0ID09PSB2b2lkIDApIHtcbiAgICAgIG5leHQgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm5leHQgPSBuZXh0O1xuICB9XG5cbiAgTGlua2VkTGlzdE5vZGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrID8gY2FsbGJhY2sodGhpcy52YWx1ZSkgOiBcIlwiLmNvbmNhdCh0aGlzLnZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gTGlua2VkTGlzdE5vZGU7XG59KCk7XG5cbmV4cG9ydCB7IExpbmtlZExpc3ROb2RlIH07XG5cbnZhciBMaW5rZWRMaXN0ID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGlua2VkTGlzdChjb21wYXJhdG9yKSB7XG4gICAgaWYgKGNvbXBhcmF0b3IgPT09IHZvaWQgMCkge1xuICAgICAgY29tcGFyYXRvciA9IGRlZmF1bHRDb21wYXJhdG9yO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmNvbXBhcmUgPSBjb21wYXJhdG9yO1xuICB9XG4gIC8qKlxuICAgKiDlsIbmjIflrprlhYPntKDmt7vliqDliLDpk77ooajlpLTpg6hcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUucHJlcGVuZCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIOWcqOWktOmDqOa3u+WKoOS4gOS4quiKgueCuVxuICAgIHZhciBuZXdOb2RlID0gbmV3IExpbmtlZExpc3ROb2RlKHZhbHVlLCB0aGlzLmhlYWQpO1xuICAgIHRoaXMuaGVhZCA9IG5ld05vZGU7XG5cbiAgICBpZiAoIXRoaXMudGFpbCkge1xuICAgICAgdGhpcy50YWlsID0gbmV3Tm9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuaMh+WumuWFg+e0oOa3u+WKoOWIsOmTvuihqOS4rVxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB2YXIgbmV3Tm9kZSA9IG5ldyBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSk7IC8vIOWmguaenOS4jeWtmOWcqOWktOiKgueCue+8jOWImeWwhuWIm+W7uueahOaWsOiKgueCueS9nOS4uuWktOiKgueCuVxuXG4gICAgaWYgKCF0aGlzLmhlYWQpIHtcbiAgICAgIHRoaXMuaGVhZCA9IG5ld05vZGU7XG4gICAgICB0aGlzLnRhaWwgPSBuZXdOb2RlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSAvLyDlsIbmlrDoioLngrnpmYTliqDliLDpk77ooajmnKvlsL5cblxuXG4gICAgdGhpcy50YWlsLm5leHQgPSBuZXdOb2RlO1xuICAgIHRoaXMudGFpbCA9IG5ld05vZGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTmjIflrprlhYPntKBcbiAgICogQHBhcmFtIHZhbHVlIOimgeWIoOmZpOeahOWFg+e0oFxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgZGVsZXRlTm9kZSA9IG51bGw7IC8vIOWmguaenOWIoOmZpOeahOaYr+WktOmDqOWFg+e0oO+8jOWImeWwhm5leHTkvZzkuLrlpLTlhYPntKBcblxuICAgIHdoaWxlICh0aGlzLmhlYWQgJiYgdGhpcy5jb21wYXJlKHRoaXMuaGVhZC52YWx1ZSwgdmFsdWUpKSB7XG4gICAgICBkZWxldGVOb2RlID0gdGhpcy5oZWFkO1xuICAgICAgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5oZWFkO1xuXG4gICAgaWYgKGN1cnJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgICAvLyDlpoLmnpzliKDpmaTkuoboioLngrnku6XlkI7vvIzlsIZuZXh06IqC54K55YmN56e7XG4gICAgICB3aGlsZSAoY3VycmVudE5vZGUubmV4dCkge1xuICAgICAgICBpZiAodGhpcy5jb21wYXJlKGN1cnJlbnROb2RlLm5leHQudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICAgIGRlbGV0ZU5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgICAgICAgIGN1cnJlbnROb2RlLm5leHQgPSBjdXJyZW50Tm9kZS5uZXh0Lm5leHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyDmo4Dmn6XlsL7pg6joioLngrnmmK/lkKbooqvliKDpmaRcblxuXG4gICAgaWYgKHRoaXMuY29tcGFyZSh0aGlzLnRhaWwudmFsdWUsIHZhbHVlKSkge1xuICAgICAgdGhpcy50YWlsID0gY3VycmVudE5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZU5vZGU7XG4gIH07XG4gIC8qKlxuICAgKiDmn6Xmib7mjIflrprnmoTlhYPntKBcbiAgICogQHBhcmFtIHBhcmFtMFxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgX2IgPSBfYS52YWx1ZSxcbiAgICAgICAgdmFsdWUgPSBfYiA9PT0gdm9pZCAwID8gdW5kZWZpbmVkIDogX2IsXG4gICAgICAgIF9jID0gX2EuY2FsbGJhY2ssXG4gICAgICAgIGNhbGxiYWNrID0gX2MgPT09IHZvaWQgMCA/IHVuZGVmaW5lZCA6IF9jO1xuXG4gICAgaWYgKCF0aGlzLmhlYWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgLy8g5aaC5p6c5oyH5a6a5LqGIGNhbGxiYWNr77yM5YiZ5oyJ5oyH5a6a55qEIGNhbGxiYWNrIOafpeaJvlxuICAgICAgaWYgKGNhbGxiYWNrICYmIGNhbGxiYWNrKGN1cnJlbnROb2RlLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgICB9IC8vIOWmguaenOaMh+WumuS6hiB2YWx1Ze+8jOWImeaMiSB2YWx1ZSDmn6Xmib5cblxuXG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbXBhcmUoY3VycmVudE5vZGUudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWwvumDqOiKgueCuVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmRlbGV0ZVRhaWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRlbGV0ZWRUYWlsID0gdGhpcy50YWlsO1xuXG4gICAgaWYgKHRoaXMuaGVhZCA9PT0gdGhpcy50YWlsKSB7XG4gICAgICAvLyDpk77ooajkuK3lj6rmnInkuIDkuKrlhYPntKBcbiAgICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgcmV0dXJuIGRlbGV0ZWRUYWlsO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZS5uZXh0KSB7XG4gICAgICBpZiAoIWN1cnJlbnROb2RlLm5leHQubmV4dCkge1xuICAgICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRhaWwgPSBjdXJyZW50Tm9kZTtcbiAgICByZXR1cm4gZGVsZXRlZFRhaWw7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTlpLTpg6joioLngrlcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGVIZWFkID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgZGVsZXRlZEhlYWQgPSB0aGlzLmhlYWQ7XG5cbiAgICBpZiAodGhpcy5oZWFkLm5leHQpIHtcbiAgICAgIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZEhlYWQ7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbkuIDnu4TlhYPntKDovazmiJDpk77ooajkuK3nmoToioLngrlcbiAgICogQHBhcmFtIHZhbHVlcyDpk77ooajkuK3nmoTlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5mcm9tQXJyYXkgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIF90aGlzLmFwcGVuZCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbpk77ooajkuK3nmoToioLngrnovazmiJDmlbDnu4TlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlcyA9IFtdO1xuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgbm9kZXMucHVzaChjdXJyZW50Tm9kZSk7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9O1xuICAvKipcbiAgICog5Y+N6L2s6ZO+6KGo5Lit55qE5YWD57Sg6IqC54K5XG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUucmV2ZXJzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG4gICAgdmFyIHByZXZOb2RlID0gbnVsbDtcbiAgICB2YXIgbmV4dE5vZGUgPSBudWxsO1xuXG4gICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7XG4gICAgICAvLyDlrZjlgqjkuIvkuIDkuKrlhYPntKDoioLngrlcbiAgICAgIG5leHROb2RlID0gY3VycmVudE5vZGUubmV4dDsgLy8g5pu05pS55b2T5YmN6IqC54K555qE5LiL5LiA5Liq6IqC54K577yM5Lul5L6/5bCG5a6D6L+e5o6l5Yiw5LiK5LiA5Liq6IqC54K55LiKXG5cbiAgICAgIGN1cnJlbnROb2RlLm5leHQgPSBwcmV2Tm9kZTsgLy8g5bCGIHByZXZOb2RlIOWSjCBjdXJyZW50Tm9kZSDlkJHliY3np7vliqjkuIDmraVcblxuICAgICAgcHJldk5vZGUgPSBjdXJyZW50Tm9kZTtcbiAgICAgIGN1cnJlbnROb2RlID0gbmV4dE5vZGU7XG4gICAgfVxuXG4gICAgdGhpcy50YWlsID0gdGhpcy5oZWFkO1xuICAgIHRoaXMuaGVhZCA9IHByZXZOb2RlO1xuICB9O1xuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgaWYgKGNhbGxiYWNrID09PSB2b2lkIDApIHtcbiAgICAgIGNhbGxiYWNrID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnRvU3RyaW5nKGNhbGxiYWNrKTtcbiAgICB9KS50b1N0cmluZygpO1xuICB9O1xuXG4gIHJldHVybiBMaW5rZWRMaXN0O1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBMaW5rZWRMaXN0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/structs/linked-list.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/structs/queue.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/algorithm/es/structs/queue.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linked_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linked-list */ \"./node_modules/@antv/algorithm/es/structs/linked-list.js\");\n\n\nvar Queue =\n/** @class */\nfunction () {\n function Queue() {\n this.linkedList = new _linked_list__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n }\n /**\n * 队列是否为空\n */\n\n\n Queue.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 读取队列头部的元素, 不删除队列中的元素\n */\n\n\n Queue.prototype.peek = function () {\n if (!this.linkedList.head) {\n return null;\n }\n\n return this.linkedList.head.value;\n };\n /**\n * 在队列的尾部新增一个元素\n * @param value\n */\n\n\n Queue.prototype.enqueue = function (value) {\n this.linkedList.append(value);\n };\n /**\n * 删除队列中的头部元素,如果队列为空,则返回 null\n */\n\n\n Queue.prototype.dequeue = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Queue.prototype.toString = function (callback) {\n return this.linkedList.toString(callback);\n };\n\n return Queue;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Queue);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvcXVldWUuanM/MjRmMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvREFBVTtBQUNwQztBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyxvRUFBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvc3RydWN0cy9xdWV1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMaW5rZWRMaXN0IGZyb20gJy4vbGlua2VkLWxpc3QnO1xuXG52YXIgUXVldWUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBRdWV1ZSgpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QgPSBuZXcgTGlua2VkTGlzdCgpO1xuICB9XG4gIC8qKlxuICAgKiDpmJ/liJfmmK/lkKbkuLrnqbpcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMubGlua2VkTGlzdC5oZWFkO1xuICB9O1xuICAvKipcbiAgICog6K+75Y+W6Zif5YiX5aS06YOo55qE5YWD57Sg77yMIOS4jeWIoOmZpOmYn+WIl+S4reeahOWFg+e0oFxuICAgKi9cblxuXG4gIFF1ZXVlLnByb3RvdHlwZS5wZWVrID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5saW5rZWRMaXN0LmhlYWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxpbmtlZExpc3QuaGVhZC52YWx1ZTtcbiAgfTtcbiAgLyoqXG4gICAqIOWcqOmYn+WIl+eahOWwvumDqOaWsOWinuS4gOS4quWFg+e0oFxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHRoaXMubGlua2VkTGlzdC5hcHBlbmQodmFsdWUpO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk6Zif5YiX5Lit55qE5aS06YOo5YWD57Sg77yM5aaC5p6c6Zif5YiX5Li656m677yM5YiZ6L+U5ZueIG51bGxcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuZGVxdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVtb3ZlSGVhZCA9IHRoaXMubGlua2VkTGlzdC5kZWxldGVIZWFkKCk7XG4gICAgcmV0dXJuIHJlbW92ZUhlYWQgPyByZW1vdmVIZWFkLnZhbHVlIDogbnVsbDtcbiAgfTtcblxuICBRdWV1ZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LnRvU3RyaW5nKGNhbGxiYWNrKTtcbiAgfTtcblxuICByZXR1cm4gUXVldWU7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFF1ZXVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/structs/queue.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/structs/stack.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/algorithm/es/structs/stack.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linked_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linked-list */ \"./node_modules/@antv/algorithm/es/structs/linked-list.js\");\n\n\nvar Stack =\n/** @class */\nfunction () {\n function Stack(maxStep) {\n if (maxStep === void 0) {\n maxStep = 10;\n }\n\n this.linkedList = new _linked_list__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n this.maxStep = maxStep;\n }\n\n Object.defineProperty(Stack.prototype, \"length\", {\n get: function get() {\n return this.linkedList.toArray().length;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * 判断栈是否为空,如果链表中没有头部元素,则栈为空\n */\n\n Stack.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 是否到定义的栈的最大长度,如果达到最大长度后,不再允许入栈\n */\n\n\n Stack.prototype.isMaxStack = function () {\n return this.toArray().length >= this.maxStep;\n };\n /**\n * 访问顶端元素\n */\n\n\n Stack.prototype.peek = function () {\n if (this.isEmpty()) {\n return null;\n } // 返回头部元素,不删除元素\n\n\n return this.linkedList.head.value;\n };\n\n Stack.prototype.push = function (value) {\n this.linkedList.prepend(value);\n\n if (this.length > this.maxStep) {\n this.linkedList.deleteTail();\n }\n };\n\n Stack.prototype.pop = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Stack.prototype.toArray = function () {\n return this.linkedList.toArray().map(function (node) {\n return node.value;\n });\n };\n\n Stack.prototype.clear = function () {\n while (!this.isEmpty()) {\n this.pop();\n }\n };\n\n return Stack;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Stack);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvc3RhY2suanM/MTg5MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEIsb0RBQVU7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsb0VBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvc3RhY2suanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlua2VkTGlzdCBmcm9tICcuL2xpbmtlZC1saXN0JztcblxudmFyIFN0YWNrID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3RhY2sobWF4U3RlcCkge1xuICAgIGlmIChtYXhTdGVwID09PSB2b2lkIDApIHtcbiAgICAgIG1heFN0ZXAgPSAxMDtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmtlZExpc3QgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgIHRoaXMubWF4U3RlcCA9IG1heFN0ZXA7XG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU3RhY2sucHJvdG90eXBlLCBcImxlbmd0aFwiLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LnRvQXJyYXkoKS5sZW5ndGg7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG4gIC8qKlxuICAgKiDliKTmlq3moIjmmK/lkKbkuLrnqbrvvIzlpoLmnpzpk77ooajkuK3msqHmnInlpLTpg6jlhYPntKDvvIzliJnmoIjkuLrnqbpcbiAgICovXG5cbiAgU3RhY2sucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmxpbmtlZExpc3QuaGVhZDtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuWIsOWumuS5ieeahOagiOeahOacgOWkp+mVv+W6pu+8jOWmguaenOi+vuWIsOacgOWkp+mVv+W6puWQju+8jOS4jeWGjeWFgeiuuOWFpeagiFxuICAgKi9cblxuXG4gIFN0YWNrLnByb3RvdHlwZS5pc01heFN0YWNrID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKS5sZW5ndGggPj0gdGhpcy5tYXhTdGVwO1xuICB9O1xuICAvKipcbiAgICog6K6/6Zeu6aG256uv5YWD57SgXG4gICAqL1xuXG5cbiAgU3RhY2sucHJvdG90eXBlLnBlZWsgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIOi/lOWbnuWktOmDqOWFg+e0oO+8jOS4jeWIoOmZpOWFg+e0oFxuXG5cbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LmhlYWQudmFsdWU7XG4gIH07XG5cbiAgU3RhY2sucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QucHJlcGVuZCh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiB0aGlzLm1heFN0ZXApIHtcbiAgICAgIHRoaXMubGlua2VkTGlzdC5kZWxldGVUYWlsKCk7XG4gICAgfVxuICB9O1xuXG4gIFN0YWNrLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlbW92ZUhlYWQgPSB0aGlzLmxpbmtlZExpc3QuZGVsZXRlSGVhZCgpO1xuICAgIHJldHVybiByZW1vdmVIZWFkID8gcmVtb3ZlSGVhZC52YWx1ZSA6IG51bGw7XG4gIH07XG5cbiAgU3RhY2sucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlua2VkTGlzdC50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICB9KTtcbiAgfTtcblxuICBTdGFjay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgd2hpbGUgKCF0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgdGhpcy5wb3AoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFN0YWNrO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBTdGFjazsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/structs/stack.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/structs/union-find.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/algorithm/es/structs/union-find.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 并查集 Disjoint set to support quick union\n */\nvar UnionFind =\n/** @class */\nfunction () {\n function UnionFind(items) {\n this.count = items.length;\n this.parent = {};\n\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var i = items_1[_i];\n this.parent[i] = i;\n }\n } // find the root of the item\n\n\n UnionFind.prototype.find = function (item) {\n while (this.parent[item] !== item) {\n item = this.parent[item];\n }\n\n return item;\n };\n\n UnionFind.prototype.union = function (a, b) {\n var rootA = this.find(a);\n var rootB = this.find(b);\n if (rootA === rootB) return; // make the element with smaller root the parent\n\n if (rootA < rootB) {\n if (this.parent[b] !== b) this.union(this.parent[b], a);\n this.parent[b] = this.parent[a];\n } else {\n if (this.parent[a] !== a) this.union(this.parent[a], b);\n this.parent[a] = this.parent[b];\n }\n }; // whether a and b are connected, i.e. a and b have the same root\n\n\n UnionFind.prototype.connected = function (a, b) {\n return this.find(a) === this.find(b);\n };\n\n return UnionFind;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (UnionFind);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvdW5pb24tZmluZC5qcz8wNDAzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQyxxQkFBcUI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHdFQUFTIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy9zdHJ1Y3RzL3VuaW9uLWZpbmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOW5tuafpembhiBEaXNqb2ludCBzZXQgdG8gc3VwcG9ydCBxdWljayB1bmlvblxuICovXG52YXIgVW5pb25GaW5kID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVW5pb25GaW5kKGl0ZW1zKSB7XG4gICAgdGhpcy5jb3VudCA9IGl0ZW1zLmxlbmd0aDtcbiAgICB0aGlzLnBhcmVudCA9IHt9O1xuXG4gICAgZm9yICh2YXIgX2kgPSAwLCBpdGVtc18xID0gaXRlbXM7IF9pIDwgaXRlbXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpID0gaXRlbXNfMVtfaV07XG4gICAgICB0aGlzLnBhcmVudFtpXSA9IGk7XG4gICAgfVxuICB9IC8vIGZpbmQgdGhlIHJvb3Qgb2YgdGhlIGl0ZW1cblxuXG4gIFVuaW9uRmluZC5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgd2hpbGUgKHRoaXMucGFyZW50W2l0ZW1dICE9PSBpdGVtKSB7XG4gICAgICBpdGVtID0gdGhpcy5wYXJlbnRbaXRlbV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG5cbiAgVW5pb25GaW5kLnByb3RvdHlwZS51bmlvbiA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgdmFyIHJvb3RBID0gdGhpcy5maW5kKGEpO1xuICAgIHZhciByb290QiA9IHRoaXMuZmluZChiKTtcbiAgICBpZiAocm9vdEEgPT09IHJvb3RCKSByZXR1cm47IC8vIG1ha2UgdGhlIGVsZW1lbnQgd2l0aCBzbWFsbGVyIHJvb3QgdGhlIHBhcmVudFxuXG4gICAgaWYgKHJvb3RBIDwgcm9vdEIpIHtcbiAgICAgIGlmICh0aGlzLnBhcmVudFtiXSAhPT0gYikgdGhpcy51bmlvbih0aGlzLnBhcmVudFtiXSwgYSk7XG4gICAgICB0aGlzLnBhcmVudFtiXSA9IHRoaXMucGFyZW50W2FdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5wYXJlbnRbYV0gIT09IGEpIHRoaXMudW5pb24odGhpcy5wYXJlbnRbYV0sIGIpO1xuICAgICAgdGhpcy5wYXJlbnRbYV0gPSB0aGlzLnBhcmVudFtiXTtcbiAgICB9XG4gIH07IC8vIHdoZXRoZXIgYSBhbmQgYiBhcmUgY29ubmVjdGVkLCBpLmUuIGEgYW5kIGIgaGF2ZSB0aGUgc2FtZSByb290XG5cblxuICBVbmlvbkZpbmQucHJvdG90eXBlLmNvbm5lY3RlZCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZChhKSA9PT0gdGhpcy5maW5kKGIpO1xuICB9O1xuXG4gIHJldHVybiBVbmlvbkZpbmQ7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFVuaW9uRmluZDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/structs/union-find.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/types.js": /*!**************************************************!*\ !*** ./node_modules/@antv/algorithm/es/types.js ***! \**************************************************/ /*! exports provided: DistanceType */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DistanceType\", function() { return DistanceType; });\nvar DistanceType;\n\n(function (DistanceType) {\n DistanceType[\"EuclideanDistance\"] = \"euclideanDistance\";\n})(DistanceType || (DistanceType = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3R5cGVzLmpzPzBmMjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPOztBQUVQO0FBQ0E7QUFDQSxDQUFDLG9DQUFvQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvdHlwZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIERpc3RhbmNlVHlwZTtcblxuKGZ1bmN0aW9uIChEaXN0YW5jZVR5cGUpIHtcbiAgRGlzdGFuY2VUeXBlW1wiRXVjbGlkZWFuRGlzdGFuY2VcIl0gPSBcImV1Y2xpZGVhbkRpc3RhbmNlXCI7XG59KShEaXN0YW5jZVR5cGUgfHwgKERpc3RhbmNlVHlwZSA9IHt9KSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/types.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/util.js": /*!*************************************************!*\ !*** ./node_modules/@antv/algorithm/es/util.js ***! \*************************************************/ /*! exports provided: getNeighbors, getOutEdgesNodeId, getEdgesByNodeId, uniqueId */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNeighbors\", function() { return getNeighbors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOutEdgesNodeId\", function() { return getOutEdgesNodeId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEdgesByNodeId\", function() { return getEdgesByNodeId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return uniqueId; });\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\nvar getNeighbors = function getNeighbors(nodeId, edges, type) {\n if (edges === void 0) {\n edges = [];\n }\n\n var currentEdges = edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.source === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.target;\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.target === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.source;\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.source === nodeId ? edge.target : edge.source;\n };\n\n return currentEdges.map(neighhborsConverter);\n};\n/**\n * 获取指定节点的出边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\nvar getOutEdgesNodeId = function getOutEdgesNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId;\n });\n};\n/**\n * 获取指定节点的边,包括出边和入边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\nvar getEdgesByNodeId = function getEdgesByNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n};\n/**\n * 生成唯一的 ID,规则是序号 + 时间戳\n * @param index 序号\n */\n\nvar uniqueId = function uniqueId(index) {\n if (index === void 0) {\n index = 0;\n }\n\n var random1 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n var random2 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n return \"\".concat(index, \"-\").concat(random1).concat(random2);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3V0aWwuanM/NmZlNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5omA5pyJ6YK75bGFXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICogQHBhcmFtIHR5cGUg6YK75bGF57G75Z6LXG4gKi9cbmV4cG9ydCB2YXIgZ2V0TmVpZ2hib3JzID0gZnVuY3Rpb24gZ2V0TmVpZ2hib3JzKG5vZGVJZCwgZWRnZXMsIHR5cGUpIHtcbiAgaWYgKGVkZ2VzID09PSB2b2lkIDApIHtcbiAgICBlZGdlcyA9IFtdO1xuICB9XG5cbiAgdmFyIGN1cnJlbnRFZGdlcyA9IGVkZ2VzLmZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkIHx8IGVkZ2UudGFyZ2V0ID09PSBub2RlSWQ7XG4gIH0pO1xuXG4gIGlmICh0eXBlID09PSAndGFyZ2V0Jykge1xuICAgIC8vIOW9k+WJjeiKgueCueS4uiBzb3VyY2XvvIzlroPmiYDmjIflkJHnmoTnm67moIfoioLngrlcbiAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8xID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8xKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VycmVudEVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzEpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2UudGFyZ2V0O1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgLy8g5b2T5YmN6IqC54K55Li6IHRhcmdldO+8jOWug+aJgOaMh+WQkeeahOa6kOiKgueCuVxuICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyXzIgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyXzIoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2UudGFyZ2V0ID09PSBub2RlSWQ7XG4gICAgfTtcblxuICAgIHJldHVybiBjdXJyZW50RWRnZXMuZmlsdGVyKG5laWdoaGJvcnNDb252ZXJ0ZXJfMikubWFwKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5zb3VyY2U7XG4gICAgfSk7XG4gIH0gLy8g6Iul5pyq5oyH5a6aIHR5cGUg77yM5YiZ6L+U5Zue5omA5pyJ6YK75bGFXG5cblxuICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlciA9IGZ1bmN0aW9uIG5laWdoaGJvcnNDb252ZXJ0ZXIoZWRnZSkge1xuICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkID8gZWRnZS50YXJnZXQgOiBlZGdlLnNvdXJjZTtcbiAgfTtcblxuICByZXR1cm4gY3VycmVudEVkZ2VzLm1hcChuZWlnaGhib3JzQ29udmVydGVyKTtcbn07XG4vKipcbiAqIOiOt+WPluaMh+WumuiKgueCueeahOWHuui+uVxuICogQHBhcmFtIG5vZGVJZCDoioLngrkgSURcbiAqIEBwYXJhbSBlZGdlcyDlm77kuK3nmoTmiYDmnInovrnmlbDmja5cbiAqL1xuXG5leHBvcnQgdmFyIGdldE91dEVkZ2VzTm9kZUlkID0gZnVuY3Rpb24gZ2V0T3V0RWRnZXNOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQ7XG4gIH0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE6L6577yM5YyF5ous5Ye66L655ZKM5YWl6L65XG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICovXG5cbmV4cG9ydCB2YXIgZ2V0RWRnZXNCeU5vZGVJZCA9IGZ1bmN0aW9uIGdldEVkZ2VzQnlOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQgfHwgZWRnZS50YXJnZXQgPT09IG5vZGVJZDtcbiAgfSk7XG59O1xuLyoqXG4gKiDnlJ/miJDllK/kuIDnmoQgSUTvvIzop4TliJnmmK/luo/lj7cgKyDml7bpl7TmiLNcbiAqIEBwYXJhbSBpbmRleCDluo/lj7dcbiAqL1xuXG5leHBvcnQgdmFyIHVuaXF1ZUlkID0gZnVuY3Rpb24gdW5pcXVlSWQoaW5kZXgpIHtcbiAgaWYgKGluZGV4ID09PSB2b2lkIDApIHtcbiAgICBpbmRleCA9IDA7XG4gIH1cblxuICB2YXIgcmFuZG9tMSA9IFwiXCIuY29uY2F0KE1hdGgucmFuZG9tKCkpLnNwbGl0KCcuJylbMV0uc3Vic3RyKDAsIDUpO1xuICB2YXIgcmFuZG9tMiA9IFwiXCIuY29uY2F0KE1hdGgucmFuZG9tKCkpLnNwbGl0KCcuJylbMV0uc3Vic3RyKDAsIDUpO1xuICByZXR1cm4gXCJcIi5jb25jYXQoaW5kZXgsIFwiLVwiKS5jb25jYXQocmFuZG9tMSkuY29uY2F0KHJhbmRvbTIpO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/util.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/utils/data-preprocessing.js": /*!*********************************************************************!*\ !*** ./node_modules/@antv/algorithm/es/utils/data-preprocessing.js ***! \*********************************************************************/ /*! exports provided: getAllKeyValueMap, oneHot, getDistance, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAllKeyValueMap\", function() { return getAllKeyValueMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"oneHot\", function() { return oneHot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDistance\", function() { return getDistance; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types */ \"./node_modules/@antv/algorithm/es/types.js\");\n/* harmony import */ var _vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vector */ \"./node_modules/@antv/algorithm/es/utils/vector.js\");\n\n\n\n/**\n * 获取数据中所有的属性及其对应的值\n * @param dataList 数据集\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\n\nvar getAllKeyValueMap = function getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys) {\n var keys = []; // 指定了参与计算的keys时,使用指定的keys\n\n if (involvedKeys === null || involvedKeys === void 0 ? void 0 : involvedKeys.length) {\n keys = involvedKeys;\n } else {\n // 未指定抽取的keys时,提取数据中所有的key\n dataList.forEach(function (data) {\n keys = keys.concat(Object.keys(data));\n });\n keys = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniq\"])(keys);\n } // 获取所有值非空的key的value数组\n\n\n var allKeyValueMap = {};\n keys.forEach(function (key) {\n var value = [];\n dataList.forEach(function (data) {\n if (data[key] !== undefined && data[key] !== '') {\n value.push(data[key]);\n }\n });\n\n if (value.length && !(uninvolvedKeys === null || uninvolvedKeys === void 0 ? void 0 : uninvolvedKeys.includes(key))) {\n allKeyValueMap[key] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniq\"])(value);\n }\n });\n return allKeyValueMap;\n};\n/**\n * one-hot编码:数据特征提取\n * @param dataList 数据集\n * @param involvedKeys 参与计算的的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\n\nvar oneHot = function oneHot(dataList, involvedKeys, uninvolvedKeys) {\n // 获取数据中所有的属性及其对应的值\n var allKeyValueMap = getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys);\n var oneHotCode = []; // 对数据进行one-hot编码\n\n dataList.forEach(function (data, index) {\n var code = [];\n Object.keys(allKeyValueMap).forEach(function (key) {\n var keyValue = data[key];\n var allKeyValue = allKeyValueMap[key];\n var valueIndex = allKeyValue.findIndex(function (value) {\n return keyValue === value;\n });\n var subCode = [];\n\n for (var i = 0; i < allKeyValue.length; i++) {\n if (i === valueIndex) {\n subCode.push(1);\n } else {\n subCode.push(0);\n }\n }\n\n code = code.concat(subCode);\n });\n oneHotCode[index] = code;\n });\n return oneHotCode;\n};\n/**\n * getDistance:获取两个元素之间的距离\n * @param item\n * @param otherItem\n * @param distanceType 距离类型\n * @param graphData 图数据\n */\n\nvar getDistance = function getDistance(item, otherItem, distanceType, graphData) {\n if (distanceType === void 0) {\n distanceType = _types__WEBPACK_IMPORTED_MODULE_1__[\"DistanceType\"].EuclideanDistance;\n }\n\n var distance = 0;\n\n switch (distanceType) {\n case _types__WEBPACK_IMPORTED_MODULE_1__[\"DistanceType\"].EuclideanDistance:\n distance = new _vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](item).euclideanDistance(new _vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](otherItem));\n break;\n\n default:\n break;\n }\n\n return distance;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getAllKeyValueMap: getAllKeyValueMap,\n oneHot: oneHot,\n getDistance: getDistance\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL2RhdGEtcHJlcHJvY2Vzc2luZy5qcz80YjdlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ007QUFDVjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFdBQVcsdURBQUk7QUFDZixHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSw0QkFBNEIsdURBQUk7QUFDaEM7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBLHFCQUFxQix3QkFBd0I7QUFDN0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxtQkFBbUIsbURBQVk7QUFDL0I7O0FBRUE7O0FBRUE7QUFDQSxTQUFTLG1EQUFZO0FBQ3JCLHFCQUFxQiwrQ0FBTSw2QkFBNkIsK0NBQU07QUFDOUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL2RhdGEtcHJlcHJvY2Vzc2luZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVuaXEgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IERpc3RhbmNlVHlwZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBWZWN0b3IgZnJvbSAnLi92ZWN0b3InO1xuLyoqXG4gKiDojrflj5bmlbDmja7kuK3miYDmnInnmoTlsZ7mgKflj4rlhbblr7nlupTnmoTlgLxcbiAqIEBwYXJhbSBkYXRhTGlzdCDmlbDmja7pm4ZcbiAqIEBwYXJhbSBpbnZvbHZlZEtleXMg5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKiBAcGFyYW0gdW5pbnZvbHZlZEtleXMg5LiN5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKi9cblxuZXhwb3J0IHZhciBnZXRBbGxLZXlWYWx1ZU1hcCA9IGZ1bmN0aW9uIGdldEFsbEtleVZhbHVlTWFwKGRhdGFMaXN0LCBpbnZvbHZlZEtleXMsIHVuaW52b2x2ZWRLZXlzKSB7XG4gIHZhciBrZXlzID0gW107IC8vIOaMh+WumuS6huWPguS4juiuoeeul+eahGtleXPml7bvvIzkvb/nlKjmjIflrprnmoRrZXlzXG5cbiAgaWYgKGludm9sdmVkS2V5cyA9PT0gbnVsbCB8fCBpbnZvbHZlZEtleXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGludm9sdmVkS2V5cy5sZW5ndGgpIHtcbiAgICBrZXlzID0gaW52b2x2ZWRLZXlzO1xuICB9IGVsc2Uge1xuICAgIC8vIOacquaMh+WumuaKveWPlueahGtleXPml7bvvIzmj5Dlj5bmlbDmja7kuK3miYDmnInnmoRrZXlcbiAgICBkYXRhTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoT2JqZWN0LmtleXMoZGF0YSkpO1xuICAgIH0pO1xuICAgIGtleXMgPSB1bmlxKGtleXMpO1xuICB9IC8vIOiOt+WPluaJgOacieWAvOmdnuepuueahGtleeeahHZhbHVl5pWw57uEXG5cblxuICB2YXIgYWxsS2V5VmFsdWVNYXAgPSB7fTtcbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgdmFsdWUgPSBbXTtcbiAgICBkYXRhTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQgJiYgZGF0YVtrZXldICE9PSAnJykge1xuICAgICAgICB2YWx1ZS5wdXNoKGRhdGFba2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodmFsdWUubGVuZ3RoICYmICEodW5pbnZvbHZlZEtleXMgPT09IG51bGwgfHwgdW5pbnZvbHZlZEtleXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVuaW52b2x2ZWRLZXlzLmluY2x1ZGVzKGtleSkpKSB7XG4gICAgICBhbGxLZXlWYWx1ZU1hcFtrZXldID0gdW5pcSh2YWx1ZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGFsbEtleVZhbHVlTWFwO1xufTtcbi8qKlxuICogb25lLWhvdOe8luegge+8muaVsOaNrueJueW+geaPkOWPllxuICogQHBhcmFtIGRhdGFMaXN0IOaVsOaNrumbhlxuICogQHBhcmFtIGludm9sdmVkS2V5cyDlj4LkuI7orqHnrpfnmoTnmoRrZXnpm4blkIhcbiAqIEBwYXJhbSB1bmludm9sdmVkS2V5cyDkuI3lj4LkuI7orqHnrpfnmoRrZXnpm4blkIhcbiAqL1xuXG5leHBvcnQgdmFyIG9uZUhvdCA9IGZ1bmN0aW9uIG9uZUhvdChkYXRhTGlzdCwgaW52b2x2ZWRLZXlzLCB1bmludm9sdmVkS2V5cykge1xuICAvLyDojrflj5bmlbDmja7kuK3miYDmnInnmoTlsZ7mgKflj4rlhbblr7nlupTnmoTlgLxcbiAgdmFyIGFsbEtleVZhbHVlTWFwID0gZ2V0QWxsS2V5VmFsdWVNYXAoZGF0YUxpc3QsIGludm9sdmVkS2V5cywgdW5pbnZvbHZlZEtleXMpO1xuICB2YXIgb25lSG90Q29kZSA9IFtdOyAvLyDlr7nmlbDmja7ov5vooYxvbmUtaG9057yW56CBXG5cbiAgZGF0YUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZGF0YSwgaW5kZXgpIHtcbiAgICB2YXIgY29kZSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKGFsbEtleVZhbHVlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBrZXlWYWx1ZSA9IGRhdGFba2V5XTtcbiAgICAgIHZhciBhbGxLZXlWYWx1ZSA9IGFsbEtleVZhbHVlTWFwW2tleV07XG4gICAgICB2YXIgdmFsdWVJbmRleCA9IGFsbEtleVZhbHVlLmZpbmRJbmRleChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGtleVZhbHVlID09PSB2YWx1ZTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHN1YkNvZGUgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxLZXlWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSA9PT0gdmFsdWVJbmRleCkge1xuICAgICAgICAgIHN1YkNvZGUucHVzaCgxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdWJDb2RlLnB1c2goMCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29kZSA9IGNvZGUuY29uY2F0KHN1YkNvZGUpO1xuICAgIH0pO1xuICAgIG9uZUhvdENvZGVbaW5kZXhdID0gY29kZTtcbiAgfSk7XG4gIHJldHVybiBvbmVIb3RDb2RlO1xufTtcbi8qKlxuICogZ2V0RGlzdGFuY2XvvJrojrflj5bkuKTkuKrlhYPntKDkuYvpl7TnmoTot53nprtcbiAqIEBwYXJhbSBpdGVtXG4gKiBAcGFyYW0gb3RoZXJJdGVtXG4gKiBAcGFyYW0gZGlzdGFuY2VUeXBlIOi3neemu+exu+Wei1xuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqL1xuXG5leHBvcnQgdmFyIGdldERpc3RhbmNlID0gZnVuY3Rpb24gZ2V0RGlzdGFuY2UoaXRlbSwgb3RoZXJJdGVtLCBkaXN0YW5jZVR5cGUsIGdyYXBoRGF0YSkge1xuICBpZiAoZGlzdGFuY2VUeXBlID09PSB2b2lkIDApIHtcbiAgICBkaXN0YW5jZVR5cGUgPSBEaXN0YW5jZVR5cGUuRXVjbGlkZWFuRGlzdGFuY2U7XG4gIH1cblxuICB2YXIgZGlzdGFuY2UgPSAwO1xuXG4gIHN3aXRjaCAoZGlzdGFuY2VUeXBlKSB7XG4gICAgY2FzZSBEaXN0YW5jZVR5cGUuRXVjbGlkZWFuRGlzdGFuY2U6XG4gICAgICBkaXN0YW5jZSA9IG5ldyBWZWN0b3IoaXRlbSkuZXVjbGlkZWFuRGlzdGFuY2UobmV3IFZlY3RvcihvdGhlckl0ZW0pKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGRpc3RhbmNlO1xufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0QWxsS2V5VmFsdWVNYXA6IGdldEFsbEtleVZhbHVlTWFwLFxuICBvbmVIb3Q6IG9uZUhvdCxcbiAgZ2V0RGlzdGFuY2U6IGdldERpc3RhbmNlXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/utils/data-preprocessing.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/utils/node-properties.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/algorithm/es/utils/node-properties.js ***! \******************************************************************/ /*! exports provided: getAllSortProperties, getPropertyWeight, getAllProperties, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAllSortProperties\", function() { return getAllSortProperties; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPropertyWeight\", function() { return getPropertyWeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAllProperties\", function() { return getAllProperties; });\n/* harmony import */ var _constants_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants/time */ \"./node_modules/@antv/algorithm/es/constants/time.js\");\n // 获取所有属性并排序\n\nvar getAllSortProperties = function getAllSortProperties(nodes, n) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n if (n === void 0) {\n n = 100;\n }\n\n var propertyKeyInfo = {};\n nodes.forEach(function (node) {\n if (!node.properties) {\n return;\n }\n\n Object.keys(node.properties).forEach(function (propertyKey) {\n // 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量或者embedding\n if (propertyKey === 'id' || !\"\".concat(node.properties[propertyKey]).match(_constants_time__WEBPACK_IMPORTED_MODULE_0__[\"secondReg\"]) && !\"\".concat(node.properties[propertyKey]).match(_constants_time__WEBPACK_IMPORTED_MODULE_0__[\"dateReg\"]) && isNaN(Number(node.properties[propertyKey]))) {\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n delete propertyKeyInfo[propertyKey];\n }\n\n return;\n }\n\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n propertyKeyInfo[propertyKey] += 1;\n } else {\n propertyKeyInfo[propertyKey] = 1;\n }\n });\n }); // 取top50的属性\n\n var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) {\n return propertyKeyInfo[b] - propertyKeyInfo[a];\n });\n return sortKeys.length < n ? sortKeys : sortKeys.slice(0, n);\n};\n\nvar processProperty = function processProperty(properties, propertyKeys) {\n return propertyKeys.map(function (key) {\n if (properties.hasOwnProperty(key)) {\n // 可以转成数值的直接转成数值\n if (!isNaN(Number(properties[key]))) {\n return Number(properties[key]);\n } // 时间型的转成时间戳\n\n\n if (properties[key].match(_constants_time__WEBPACK_IMPORTED_MODULE_0__[\"secondReg\"]) || properties[key].match(_constants_time__WEBPACK_IMPORTED_MODULE_0__[\"dateReg\"])) {\n // @ts-ignore\n return Number(Date.parse(new Date(properties[key]))) / 1000;\n }\n }\n\n return 0;\n });\n}; // 获取属性特征权重\n\n\nvar getPropertyWeight = function getPropertyWeight(nodes) {\n var propertyKeys = getAllSortProperties(nodes);\n var allPropertiesWeight = [];\n\n for (var i = 0; i < nodes.length; i++) {\n allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys);\n }\n\n return allPropertiesWeight;\n}; // 获取所有节点的属性集合\n\nvar getAllProperties = function getAllProperties(nodes, key) {\n if (key === void 0) {\n key = 'properties';\n }\n\n var allProperties = [];\n nodes.forEach(function (node) {\n if (!node.properties) {\n return;\n }\n\n allProperties.push(node[key]);\n });\n return allProperties;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getAllSortProperties: getAllSortProperties,\n getPropertyWeight: getPropertyWeight,\n getAllProperties: getAllProperties\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL25vZGUtcHJvcGVydGllcy5qcz81YjlkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUQ7O0FBRWhEO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpRkFBaUYseURBQVMsb0RBQW9ELHVEQUFPO0FBQ3JKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQLGdDQUFnQyx5REFBUywyQkFBMkIsdURBQU87QUFDM0U7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0gsRUFBRTs7O0FBR0s7QUFDUDtBQUNBOztBQUVBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9lcy91dGlscy9ub2RlLXByb3BlcnRpZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZWNvbmRSZWcsIGRhdGVSZWcgfSBmcm9tICcuLi9jb25zdGFudHMvdGltZSc7IC8vIOiOt+WPluaJgOacieWxnuaAp+W5tuaOkuW6j1xuXG5leHBvcnQgdmFyIGdldEFsbFNvcnRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZ2V0QWxsU29ydFByb3BlcnRpZXMobm9kZXMsIG4pIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgaWYgKG4gPT09IHZvaWQgMCkge1xuICAgIG4gPSAxMDA7XG4gIH1cblxuICB2YXIgcHJvcGVydHlLZXlJbmZvID0ge307XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUucHJvcGVydGllcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIE9iamVjdC5rZXlzKG5vZGUucHJvcGVydGllcykuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHlLZXkpIHtcbiAgICAgIC8vIOebruWJjei/h+a7pOWPquS/neeVmeWPr+S7pei9rOaIkOaVsOWAvOWei+eahOaIluaXpeacn+Wei+eahCwgdG9kbzog57uf5LiA6L2s5oiQb25lLWhvdOeJueW+geWQkemHj+aIluiAhWVtYmVkZGluZ1xuICAgICAgaWYgKHByb3BlcnR5S2V5ID09PSAnaWQnIHx8ICFcIlwiLmNvbmNhdChub2RlLnByb3BlcnRpZXNbcHJvcGVydHlLZXldKS5tYXRjaChzZWNvbmRSZWcpICYmICFcIlwiLmNvbmNhdChub2RlLnByb3BlcnRpZXNbcHJvcGVydHlLZXldKS5tYXRjaChkYXRlUmVnKSAmJiBpc05hTihOdW1iZXIobm9kZS5wcm9wZXJ0aWVzW3Byb3BlcnR5S2V5XSkpKSB7XG4gICAgICAgIGlmIChwcm9wZXJ0eUtleUluZm8uaGFzT3duUHJvcGVydHkocHJvcGVydHlLZXkpKSB7XG4gICAgICAgICAgZGVsZXRlIHByb3BlcnR5S2V5SW5mb1twcm9wZXJ0eUtleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wZXJ0eUtleUluZm8uaGFzT3duUHJvcGVydHkocHJvcGVydHlLZXkpKSB7XG4gICAgICAgIHByb3BlcnR5S2V5SW5mb1twcm9wZXJ0eUtleV0gKz0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3BlcnR5S2V5SW5mb1twcm9wZXJ0eUtleV0gPSAxO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTsgLy8g5Y+WdG9wNTDnmoTlsZ7mgKdcblxuICB2YXIgc29ydEtleXMgPSBPYmplY3Qua2V5cyhwcm9wZXJ0eUtleUluZm8pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gcHJvcGVydHlLZXlJbmZvW2JdIC0gcHJvcGVydHlLZXlJbmZvW2FdO1xuICB9KTtcbiAgcmV0dXJuIHNvcnRLZXlzLmxlbmd0aCA8IG4gPyBzb3J0S2V5cyA6IHNvcnRLZXlzLnNsaWNlKDAsIG4pO1xufTtcblxudmFyIHByb2Nlc3NQcm9wZXJ0eSA9IGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eUtleXMpIHtcbiAgcmV0dXJuIHByb3BlcnR5S2V5cy5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIC8vIOWPr+S7pei9rOaIkOaVsOWAvOeahOebtOaOpei9rOaIkOaVsOWAvFxuICAgICAgaWYgKCFpc05hTihOdW1iZXIocHJvcGVydGllc1trZXldKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihwcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgfSAvLyDml7bpl7TlnovnmoTovazmiJDml7bpl7TmiLNcblxuXG4gICAgICBpZiAocHJvcGVydGllc1trZXldLm1hdGNoKHNlY29uZFJlZykgfHwgcHJvcGVydGllc1trZXldLm1hdGNoKGRhdGVSZWcpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIE51bWJlcihEYXRlLnBhcnNlKG5ldyBEYXRlKHByb3BlcnRpZXNba2V5XSkpKSAvIDEwMDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH0pO1xufTsgLy8g6I635Y+W5bGe5oCn54m55b6B5p2D6YeNXG5cblxuZXhwb3J0IHZhciBnZXRQcm9wZXJ0eVdlaWdodCA9IGZ1bmN0aW9uIGdldFByb3BlcnR5V2VpZ2h0KG5vZGVzKSB7XG4gIHZhciBwcm9wZXJ0eUtleXMgPSBnZXRBbGxTb3J0UHJvcGVydGllcyhub2Rlcyk7XG4gIHZhciBhbGxQcm9wZXJ0aWVzV2VpZ2h0ID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGFsbFByb3BlcnRpZXNXZWlnaHRbaV0gPSBwcm9jZXNzUHJvcGVydHkobm9kZXNbaV0ucHJvcGVydGllcywgcHJvcGVydHlLZXlzKTtcbiAgfVxuXG4gIHJldHVybiBhbGxQcm9wZXJ0aWVzV2VpZ2h0O1xufTsgLy8g6I635Y+W5omA5pyJ6IqC54K555qE5bGe5oCn6ZuG5ZCIXG5cbmV4cG9ydCB2YXIgZ2V0QWxsUHJvcGVydGllcyA9IGZ1bmN0aW9uIGdldEFsbFByb3BlcnRpZXMobm9kZXMsIGtleSkge1xuICBpZiAoa2V5ID09PSB2b2lkIDApIHtcbiAgICBrZXkgPSAncHJvcGVydGllcyc7XG4gIH1cblxuICB2YXIgYWxsUHJvcGVydGllcyA9IFtdO1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKCFub2RlLnByb3BlcnRpZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhbGxQcm9wZXJ0aWVzLnB1c2gobm9kZVtrZXldKTtcbiAgfSk7XG4gIHJldHVybiBhbGxQcm9wZXJ0aWVzO1xufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0QWxsU29ydFByb3BlcnRpZXM6IGdldEFsbFNvcnRQcm9wZXJ0aWVzLFxuICBnZXRQcm9wZXJ0eVdlaWdodDogZ2V0UHJvcGVydHlXZWlnaHQsXG4gIGdldEFsbFByb3BlcnRpZXM6IGdldEFsbFByb3BlcnRpZXNcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/utils/node-properties.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/es/utils/vector.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/algorithm/es/utils/vector.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/**\n * 向量运算\n */\n\n\nvar Vector =\n/** @class */\nfunction () {\n function Vector(arr) {\n this.arr = arr;\n }\n\n Vector.prototype.getArr = function () {\n return this.arr || [];\n };\n\n Vector.prototype.add = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] + otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.subtract = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] - otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.avg = function (length) {\n var res = [];\n\n if (length !== 0) {\n for (var index in this.arr) {\n res[index] = this.arr[index] / length;\n }\n }\n\n return new Vector(res);\n };\n\n Vector.prototype.negate = function () {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = -this.arr[index];\n }\n\n return new Vector(res);\n }; // 平方欧式距离\n\n\n Vector.prototype.squareEuclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return res;\n }\n }; // 欧式距离\n\n\n Vector.prototype.euclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return Math.sqrt(res);\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 归一化处理\n\n\n Vector.prototype.normalize = function () {\n var res = [];\n var cloneArr = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(this.arr);\n cloneArr.sort(function (a, b) {\n return a - b;\n });\n var max = cloneArr[cloneArr.length - 1];\n var min = cloneArr[0];\n\n for (var index in this.arr) {\n res[index] = (this.arr[index] - min) / (max - min);\n }\n\n return new Vector(res);\n }; // 2范数 or 模长\n\n\n Vector.prototype.norm2 = function () {\n var _a;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return 0;\n }\n\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index], 2);\n }\n\n return Math.sqrt(res);\n }; // 两个向量的点积\n\n\n Vector.prototype.dot = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += this.arr[index] * otherVector.arr[index];\n }\n\n return res;\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 两个向量比较\n\n\n Vector.prototype.equal = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) !== (otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return false;\n }\n\n for (var index in this.arr) {\n if (this.arr[index] !== otherArr[index]) {\n return false;\n }\n }\n\n return true;\n };\n\n return Vector;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vector);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL3ZlY3Rvci5qcz9iMTE2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0EsbUJBQW1CLHdEQUFLO0FBQ3hCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyxxRUFBTSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vZXMvdXRpbHMvdmVjdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDlkJHph4/ov5DnrpdcbiAqL1xuaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcblxudmFyIFZlY3RvciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZlY3RvcihhcnIpIHtcbiAgICB0aGlzLmFyciA9IGFycjtcbiAgfVxuXG4gIFZlY3Rvci5wcm90b3R5cGUuZ2V0QXJyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmFyciB8fCBbXTtcbiAgfTtcblxuICBWZWN0b3IucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3Iob3RoZXJBcnIpO1xuICAgIH1cblxuICAgIGlmICghKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3Rvcih0aGlzLmFycik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJyLmxlbmd0aCA9PT0gb3RoZXJBcnIubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzID0gW107XG5cbiAgICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlc1tpbmRleF0gPSB0aGlzLmFycltpbmRleF0gKyBvdGhlckFycltpbmRleF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gICAgfVxuICB9O1xuXG4gIFZlY3Rvci5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAob3RoZXJWZWN0b3IpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgb3RoZXJBcnIgPSBvdGhlclZlY3Rvci5hcnI7XG5cbiAgICBpZiAoISgoX2EgPSB0aGlzLmFycikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKG90aGVyQXJyKTtcbiAgICB9XG5cbiAgICBpZiAoIShvdGhlckFyciA9PT0gbnVsbCB8fCBvdGhlckFyciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3RoZXJBcnIubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3IodGhpcy5hcnIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFyci5sZW5ndGggPT09IG90aGVyQXJyLmxlbmd0aCkge1xuICAgICAgdmFyIHJlcyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgICByZXNbaW5kZXhdID0gdGhpcy5hcnJbaW5kZXhdIC0gb3RoZXJBcnJbaW5kZXhdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IFZlY3RvcihyZXMpO1xuICAgIH1cbiAgfTtcblxuICBWZWN0b3IucHJvdG90eXBlLmF2ZyA9IGZ1bmN0aW9uIChsZW5ndGgpIHtcbiAgICB2YXIgcmVzID0gW107XG5cbiAgICBpZiAobGVuZ3RoICE9PSAwKSB7XG4gICAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgICByZXNbaW5kZXhdID0gdGhpcy5hcnJbaW5kZXhdIC8gbGVuZ3RoO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07XG5cbiAgVmVjdG9yLnByb3RvdHlwZS5uZWdhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgIHJlc1tpbmRleF0gPSAtdGhpcy5hcnJbaW5kZXhdO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07IC8vIOW5s+aWueasp+W8j+i3neemu1xuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5zcXVhcmVFdWNsaWRlYW5EaXN0YW5jZSA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB8fCAhKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSAwO1xuXG4gICAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgICByZXMgKz0gTWF0aC5wb3codGhpcy5hcnJbaW5kZXhdIC0gb3RoZXJWZWN0b3IuYXJyW2luZGV4XSwgMik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICB9OyAvLyDmrKflvI/ot53nprtcblxuXG4gIFZlY3Rvci5wcm90b3R5cGUuZXVjbGlkZWFuRGlzdGFuY2UgPSBmdW5jdGlvbiAob3RoZXJWZWN0b3IpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgb3RoZXJBcnIgPSBvdGhlclZlY3Rvci5hcnI7XG5cbiAgICBpZiAoISgoX2EgPSB0aGlzLmFycikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgfHwgIShvdGhlckFyciA9PT0gbnVsbCB8fCBvdGhlckFyciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3RoZXJBcnIubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJyLmxlbmd0aCA9PT0gb3RoZXJBcnIubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzID0gMDtcblxuICAgICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgICAgcmVzICs9IE1hdGgucG93KHRoaXMuYXJyW2luZGV4XSAtIG90aGVyVmVjdG9yLmFycltpbmRleF0sIDIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gTWF0aC5zcXJ0KHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSB0d28gdmVjdG9ycyBhcmUgdW5lcXVhbCBpbiBsZW5ndGguJyk7XG4gICAgfVxuICB9OyAvLyDlvZLkuIDljJblpITnkIZcblxuXG4gIFZlY3Rvci5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgY2xvbmVBcnIgPSBjbG9uZSh0aGlzLmFycik7XG4gICAgY2xvbmVBcnIuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICAgIHZhciBtYXggPSBjbG9uZUFycltjbG9uZUFyci5sZW5ndGggLSAxXTtcbiAgICB2YXIgbWluID0gY2xvbmVBcnJbMF07XG5cbiAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgcmVzW2luZGV4XSA9ICh0aGlzLmFycltpbmRleF0gLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTsgLy8gMuiMg+aVsCBvciDmqKHplb9cblxuXG4gIFZlY3Rvci5wcm90b3R5cGUubm9ybTIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gMDtcblxuICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICByZXMgKz0gTWF0aC5wb3codGhpcy5hcnJbaW5kZXhdLCAyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gTWF0aC5zcXJ0KHJlcyk7XG4gIH07IC8vIOS4pOS4quWQkemHj+eahOeCueenr1xuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5kb3QgPSBmdW5jdGlvbiAob3RoZXJWZWN0b3IpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgb3RoZXJBcnIgPSBvdGhlclZlY3Rvci5hcnI7XG5cbiAgICBpZiAoISgoX2EgPSB0aGlzLmFycikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgfHwgIShvdGhlckFyciA9PT0gbnVsbCB8fCBvdGhlckFyciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3RoZXJBcnIubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJyLmxlbmd0aCA9PT0gb3RoZXJBcnIubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzID0gMDtcblxuICAgICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgICAgcmVzICs9IHRoaXMuYXJyW2luZGV4XSAqIG90aGVyVmVjdG9yLmFycltpbmRleF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSB0d28gdmVjdG9ycyBhcmUgdW5lcXVhbCBpbiBsZW5ndGguJyk7XG4gICAgfVxuICB9OyAvLyDkuKTkuKrlkJHph4/mr5TovoNcblxuXG4gIFZlY3Rvci5wcm90b3R5cGUuZXF1YWwgPSBmdW5jdGlvbiAob3RoZXJWZWN0b3IpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgb3RoZXJBcnIgPSBvdGhlclZlY3Rvci5hcnI7XG5cbiAgICBpZiAoKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSAhPT0gKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgIGlmICh0aGlzLmFycltpbmRleF0gIT09IG90aGVyQXJyW2luZGV4XSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIFZlY3Rvcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgVmVjdG9yOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/es/utils/vector.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/adjacent-matrix.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/adjacent-matrix.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar adjMatrix = function adjMatrix(graphData, directed) {\n var nodes = graphData.nodes,\n edges = graphData.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error(\"invalid nodes data!\");\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n if (!sIndex && sIndex !== 0 || !tIndex && tIndex !== 0) return;\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n\nvar _default = adjMatrix;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9hZGphY2VudC1tYXRyaXguanM/MTZjNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvYWRqYWNlbnQtbWF0cml4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBhZGpNYXRyaXggPSBmdW5jdGlvbiBhZGpNYXRyaXgoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgbm9kZXMgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBlZGdlcyA9IGdyYXBoRGF0YS5lZGdlcztcbiAgdmFyIG1hdHJpeCA9IFtdOyAvLyBtYXAgbm9kZSB3aXRoIGluZGV4IGluIGRhdGEubm9kZXNcblxuICB2YXIgbm9kZU1hcCA9IHt9O1xuXG4gIGlmICghbm9kZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIG5vZGVzIGRhdGEhXCIpO1xuICB9XG5cbiAgaWYgKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IGk7XG4gICAgICB2YXIgcm93ID0gW107XG4gICAgICBtYXRyaXgucHVzaChyb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGVkZ2VzKSB7XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIHNvdXJjZSA9IGVkZ2Uuc291cmNlLFxuICAgICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgdmFyIHNJbmRleCA9IG5vZGVNYXBbc291cmNlXTtcbiAgICAgIHZhciB0SW5kZXggPSBub2RlTWFwW3RhcmdldF07XG4gICAgICBpZiAoIXNJbmRleCAmJiBzSW5kZXggIT09IDAgfHwgIXRJbmRleCAmJiB0SW5kZXggIT09IDApIHJldHVybjtcbiAgICAgIG1hdHJpeFtzSW5kZXhdW3RJbmRleF0gPSAxO1xuXG4gICAgICBpZiAoIWRpcmVjdGVkKSB7XG4gICAgICAgIG1hdHJpeFt0SW5kZXhdW3NJbmRleF0gPSAxO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG1hdHJpeDtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGFkak1hdHJpeDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/adjacent-matrix.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/asyncIndex.js": /*!********************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/asyncIndex.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GADDIAsync\", {\n enumerable: true,\n get: function get() {\n return _index.GADDIAsync;\n }\n});\nObject.defineProperty(exports, \"connectedComponentAsync\", {\n enumerable: true,\n get: function get() {\n return _index.connectedComponentAsync;\n }\n});\nexports.default = void 0;\nObject.defineProperty(exports, \"detectAllCyclesAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllCyclesAsync;\n }\n});\nObject.defineProperty(exports, \"detectAllDirectedCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllDirectedCycleAsync;\n }\n});\nObject.defineProperty(exports, \"detectAllUndirectedCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllUndirectedCycleAsync;\n }\n});\nObject.defineProperty(exports, \"detectCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectCycleAsync;\n }\n});\nexports.detectDirectedCycleAsync = void 0;\nObject.defineProperty(exports, \"dijkstraAsync\", {\n enumerable: true,\n get: function get() {\n return _index.dijkstraAsync;\n }\n});\nObject.defineProperty(exports, \"findAllPathAsync\", {\n enumerable: true,\n get: function get() {\n return _index.findAllPathAsync;\n }\n});\nObject.defineProperty(exports, \"findShortestPathAsync\", {\n enumerable: true,\n get: function get() {\n return _index.findShortestPathAsync;\n }\n});\nObject.defineProperty(exports, \"floydWarshallAsync\", {\n enumerable: true,\n get: function get() {\n return _index.floydWarshallAsync;\n }\n});\nObject.defineProperty(exports, \"getAdjMatrixAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getAdjMatrixAsync;\n }\n});\nObject.defineProperty(exports, \"getDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"getInDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getInDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"getNeighborsAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getNeighborsAsync;\n }\n});\nObject.defineProperty(exports, \"getOutDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getOutDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"labelPropagationAsync\", {\n enumerable: true,\n get: function get() {\n return _index.labelPropagationAsync;\n }\n});\nObject.defineProperty(exports, \"louvainAsync\", {\n enumerable: true,\n get: function get() {\n return _index.louvainAsync;\n }\n});\nObject.defineProperty(exports, \"minimumSpanningTreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.minimumSpanningTreeAsync;\n }\n});\nObject.defineProperty(exports, \"pageRankAsync\", {\n enumerable: true,\n get: function get() {\n return _index.pageRankAsync;\n }\n});\n\nvar _index = __webpack_require__(/*! ./workers/index */ \"./node_modules/@antv/algorithm/lib/workers/index.js\");\n\nvar detectDirectedCycleAsync = _index.detectCycleAsync;\nexports.detectDirectedCycleAsync = detectDirectedCycleAsync;\nvar _default = {\n getAdjMatrixAsync: _index.getAdjMatrixAsync,\n connectedComponentAsync: _index.connectedComponentAsync,\n getDegreeAsync: _index.getDegreeAsync,\n getInDegreeAsync: _index.getInDegreeAsync,\n getOutDegreeAsync: _index.getOutDegreeAsync,\n detectCycleAsync: _index.detectCycleAsync,\n detectDirectedCycleAsync: detectDirectedCycleAsync,\n detectAllCyclesAsync: _index.detectAllCyclesAsync,\n detectAllDirectedCycleAsync: _index.detectAllDirectedCycleAsync,\n detectAllUndirectedCycleAsync: _index.detectAllUndirectedCycleAsync,\n dijkstraAsync: _index.dijkstraAsync,\n findAllPathAsync: _index.findAllPathAsync,\n findShortestPathAsync: _index.findShortestPathAsync,\n floydWarshallAsync: _index.floydWarshallAsync,\n labelPropagationAsync: _index.labelPropagationAsync,\n louvainAsync: _index.louvainAsync,\n minimumSpanningTreeAsync: _index.minimumSpanningTreeAsync,\n pageRankAsync: _index.pageRankAsync,\n getNeighborsAsync: _index.getNeighborsAsync,\n GADDIAsync: _index.GADDIAsync\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9hc3luY0luZGV4LmpzPzE2ODMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsYUFBYSxtQkFBTyxDQUFDLDRFQUFpQjs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9hc3luY0luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJHQURESUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5HQURESUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNvbm5lY3RlZENvbXBvbmVudEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5jb25uZWN0ZWRDb21wb25lbnRBc3luYztcbiAgfVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZXRlY3RBbGxDeWNsZXNBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXguZGV0ZWN0QWxsQ3ljbGVzQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5kZXRlY3RBbGxEaXJlY3RlZEN5Y2xlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRldGVjdEN5Y2xlQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmRldGVjdEN5Y2xlQXN5bmM7XG4gIH1cbn0pO1xuZXhwb3J0cy5kZXRlY3REaXJlY3RlZEN5Y2xlQXN5bmMgPSB2b2lkIDA7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkaWprc3RyYUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5kaWprc3RyYUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZpbmRBbGxQYXRoQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmZpbmRBbGxQYXRoQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZmluZFNob3J0ZXN0UGF0aEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5maW5kU2hvcnRlc3RQYXRoQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZmxveWRXYXJzaGFsbEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5mbG95ZFdhcnNoYWxsQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0QWRqTWF0cml4QXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmdldEFkak1hdHJpeEFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldERlZ3JlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXREZWdyZWVBc3luYztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRJbkRlZ3JlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXRJbkRlZ3JlZUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldE5laWdoYm9yc0FzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXROZWlnaGJvcnNBc3luYztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRPdXREZWdyZWVBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXguZ2V0T3V0RGVncmVlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibGFiZWxQcm9wYWdhdGlvbkFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5sYWJlbFByb3BhZ2F0aW9uQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibG91dmFpbkFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5sb3V2YWluQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibWluaW11bVNwYW5uaW5nVHJlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5taW5pbXVtU3Bhbm5pbmdUcmVlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicGFnZVJhbmtBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXgucGFnZVJhbmtBc3luYztcbiAgfVxufSk7XG5cbnZhciBfaW5kZXggPSByZXF1aXJlKFwiLi93b3JrZXJzL2luZGV4XCIpO1xuXG52YXIgZGV0ZWN0RGlyZWN0ZWRDeWNsZUFzeW5jID0gX2luZGV4LmRldGVjdEN5Y2xlQXN5bmM7XG5leHBvcnRzLmRldGVjdERpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdERpcmVjdGVkQ3ljbGVBc3luYztcbnZhciBfZGVmYXVsdCA9IHtcbiAgZ2V0QWRqTWF0cml4QXN5bmM6IF9pbmRleC5nZXRBZGpNYXRyaXhBc3luYyxcbiAgY29ubmVjdGVkQ29tcG9uZW50QXN5bmM6IF9pbmRleC5jb25uZWN0ZWRDb21wb25lbnRBc3luYyxcbiAgZ2V0RGVncmVlQXN5bmM6IF9pbmRleC5nZXREZWdyZWVBc3luYyxcbiAgZ2V0SW5EZWdyZWVBc3luYzogX2luZGV4LmdldEluRGVncmVlQXN5bmMsXG4gIGdldE91dERlZ3JlZUFzeW5jOiBfaW5kZXguZ2V0T3V0RGVncmVlQXN5bmMsXG4gIGRldGVjdEN5Y2xlQXN5bmM6IF9pbmRleC5kZXRlY3RDeWNsZUFzeW5jLFxuICBkZXRlY3REaXJlY3RlZEN5Y2xlQXN5bmM6IGRldGVjdERpcmVjdGVkQ3ljbGVBc3luYyxcbiAgZGV0ZWN0QWxsQ3ljbGVzQXN5bmM6IF9pbmRleC5kZXRlY3RBbGxDeWNsZXNBc3luYyxcbiAgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jOiBfaW5kZXguZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jLFxuICBkZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGVBc3luYzogX2luZGV4LmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jLFxuICBkaWprc3RyYUFzeW5jOiBfaW5kZXguZGlqa3N0cmFBc3luYyxcbiAgZmluZEFsbFBhdGhBc3luYzogX2luZGV4LmZpbmRBbGxQYXRoQXN5bmMsXG4gIGZpbmRTaG9ydGVzdFBhdGhBc3luYzogX2luZGV4LmZpbmRTaG9ydGVzdFBhdGhBc3luYyxcbiAgZmxveWRXYXJzaGFsbEFzeW5jOiBfaW5kZXguZmxveWRXYXJzaGFsbEFzeW5jLFxuICBsYWJlbFByb3BhZ2F0aW9uQXN5bmM6IF9pbmRleC5sYWJlbFByb3BhZ2F0aW9uQXN5bmMsXG4gIGxvdXZhaW5Bc3luYzogX2luZGV4LmxvdXZhaW5Bc3luYyxcbiAgbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jOiBfaW5kZXgubWluaW11bVNwYW5uaW5nVHJlZUFzeW5jLFxuICBwYWdlUmFua0FzeW5jOiBfaW5kZXgucGFnZVJhbmtBc3luYyxcbiAgZ2V0TmVpZ2hib3JzQXN5bmM6IF9pbmRleC5nZXROZWlnaGJvcnNBc3luYyxcbiAgR0FERElBc3luYzogX2luZGV4LkdBRERJQXN5bmNcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/asyncIndex.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/bfs.js": /*!*************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/bfs.js ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _queue = _interopRequireDefault(__webpack_require__(/*! ./structs/queue */ \"./node_modules/@antv/algorithm/lib/structs/queue.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n *\n * @param callbacks\n * allowTraversal: 确定 BFS 是否从顶点沿着边遍历到其邻居,默认情况下,同一个节点只能遍历一次\n * enterNode: 当 BFS 访问某个节点时调用\n * leaveNode: 当 BFS 访问访问结束某个节点时调用\n */\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n var id = next;\n\n if (!seen[id]) {\n seen[id] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * 广度优先遍历图\n * @param graph Graph 图实例\n * @param startNode 开始遍历的节点\n * @param originalCallbacks 回调\n */\n\n\nvar breadthFirstSearch = function breadthFirstSearch(graphData, startNodeId, originalCallbacks, directed) {\n if (directed === void 0) {\n directed = true;\n }\n\n var callbacks = initCallbacks(originalCallbacks);\n var nodeQueue = new _queue.default();\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a; // 初始化队列元素\n\n nodeQueue.enqueue(startNodeId);\n var previousNode = '';\n\n var _loop_1 = function _loop_1() {\n var currentNode = nodeQueue.dequeue();\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n }); // 将所有邻居添加到队列中以便遍历\n\n (0, _util.getNeighbors)(currentNode, edges, directed ? 'target' : undefined).forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n nodeQueue.enqueue(nextNode);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n }); // 下一次循环之前存储当前顶点\n\n previousNode = currentNode;\n }; // 遍历队列中的所有顶点\n\n\n while (!nodeQueue.isEmpty()) {\n _loop_1();\n }\n};\n\nvar _default = breadthFirstSearch;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9iZnMuanM/Mzg3MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLG9DQUFvQyxtQkFBTyxDQUFDLDRFQUFpQjs7QUFFN0QsWUFBWSxtQkFBTyxDQUFDLDBEQUFROztBQUU1QixzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvYmZzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfcXVldWUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3N0cnVjdHMvcXVldWVcIikpO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2tzXG4gKiBhbGxvd1RyYXZlcnNhbDog56Gu5a6aIEJGUyDmmK/lkKbku47pobbngrnmsr/nnYDovrnpgY3ljobliLDlhbbpgrvlsYXvvIzpu5jorqTmg4XlhrXkuIvvvIzlkIzkuIDkuKroioLngrnlj6rog73pgY3ljobkuIDmrKFcbiAqIGVudGVyTm9kZTog5b2TIEJGUyDorr/pl67mn5DkuKroioLngrnml7bosIPnlKhcbiAqIGxlYXZlTm9kZTog5b2TIEJGUyDorr/pl67orr/pl67nu5PmnZ/mn5DkuKroioLngrnml7bosIPnlKhcbiAqL1xuZnVuY3Rpb24gaW5pdENhbGxiYWNrcyhjYWxsYmFja3MpIHtcbiAgaWYgKGNhbGxiYWNrcyA9PT0gdm9pZCAwKSB7XG4gICAgY2FsbGJhY2tzID0ge307XG4gIH1cblxuICB2YXIgaW5pdGlhdGVkQ2FsbGJhY2sgPSBjYWxsYmFja3M7XG5cbiAgdmFyIHN0dWJDYWxsYmFjayA9IGZ1bmN0aW9uIHN0dWJDYWxsYmFjaygpIHt9O1xuXG4gIHZhciBhbGxvd1RyYXZlcnNhbENhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWVuID0ge307XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChfYSkge1xuICAgICAgdmFyIG5leHQgPSBfYS5uZXh0O1xuICAgICAgdmFyIGlkID0gbmV4dDtcblxuICAgICAgaWYgKCFzZWVuW2lkXSkge1xuICAgICAgICBzZWVuW2lkXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgfSgpO1xuXG4gIGluaXRpYXRlZENhbGxiYWNrLmFsbG93VHJhdmVyc2FsID0gY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsIHx8IGFsbG93VHJhdmVyc2FsQ2FsbGJhY2s7XG4gIGluaXRpYXRlZENhbGxiYWNrLmVudGVyID0gY2FsbGJhY2tzLmVudGVyIHx8IHN0dWJDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2subGVhdmUgPSBjYWxsYmFja3MubGVhdmUgfHwgc3R1YkNhbGxiYWNrO1xuICByZXR1cm4gaW5pdGlhdGVkQ2FsbGJhY2s7XG59XG4vKipcbiAqIOW5v+W6puS8mOWFiOmBjeWOhuWbvlxuICogQHBhcmFtIGdyYXBoIEdyYXBoIOWbvuWunuS+i1xuICogQHBhcmFtIHN0YXJ0Tm9kZSDlvIDlp4vpgY3ljobnmoToioLngrlcbiAqIEBwYXJhbSBvcmlnaW5hbENhbGxiYWNrcyDlm57osINcbiAqL1xuXG5cbnZhciBicmVhZHRoRmlyc3RTZWFyY2ggPSBmdW5jdGlvbiBicmVhZHRoRmlyc3RTZWFyY2goZ3JhcGhEYXRhLCBzdGFydE5vZGVJZCwgb3JpZ2luYWxDYWxsYmFja3MsIGRpcmVjdGVkKSB7XG4gIGlmIChkaXJlY3RlZCA9PT0gdm9pZCAwKSB7XG4gICAgZGlyZWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgdmFyIGNhbGxiYWNrcyA9IGluaXRDYWxsYmFja3Mob3JpZ2luYWxDYWxsYmFja3MpO1xuICB2YXIgbm9kZVF1ZXVlID0gbmV3IF9xdWV1ZS5kZWZhdWx0KCk7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2E7IC8vIOWIneWni+WMlumYn+WIl+WFg+e0oFxuXG4gIG5vZGVRdWV1ZS5lbnF1ZXVlKHN0YXJ0Tm9kZUlkKTtcbiAgdmFyIHByZXZpb3VzTm9kZSA9ICcnO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMSgpIHtcbiAgICB2YXIgY3VycmVudE5vZGUgPSBub2RlUXVldWUuZGVxdWV1ZSgpO1xuICAgIGNhbGxiYWNrcy5lbnRlcih7XG4gICAgICBjdXJyZW50OiBjdXJyZW50Tm9kZSxcbiAgICAgIHByZXZpb3VzOiBwcmV2aW91c05vZGVcbiAgICB9KTsgLy8g5bCG5omA5pyJ6YK75bGF5re75Yqg5Yiw6Zif5YiX5Lit5Lul5L6/6YGN5Y6GXG5cbiAgICAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShjdXJyZW50Tm9kZSwgZWRnZXMsIGRpcmVjdGVkID8gJ3RhcmdldCcgOiB1bmRlZmluZWQpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgICBpZiAoY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsKHtcbiAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZSxcbiAgICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICAgIG5leHQ6IG5leHROb2RlXG4gICAgICB9KSkge1xuICAgICAgICBub2RlUXVldWUuZW5xdWV1ZShuZXh0Tm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2FsbGJhY2tzLmxlYXZlKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDkuIvkuIDmrKHlvqrnjq/kuYvliY3lrZjlgqjlvZPliY3pobbngrlcblxuICAgIHByZXZpb3VzTm9kZSA9IGN1cnJlbnROb2RlO1xuICB9OyAvLyDpgY3ljobpmJ/liJfkuK3nmoTmiYDmnInpobbngrlcblxuXG4gIHdoaWxlICghbm9kZVF1ZXVlLmlzRW1wdHkoKSkge1xuICAgIF9sb29wXzEoKTtcbiAgfVxufTtcblxudmFyIF9kZWZhdWx0ID0gYnJlYWR0aEZpcnN0U2VhcmNoO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/bfs.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/connected-component.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/connected-component.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getConnectedComponents;\nexports.detectStrongConnectComponents = exports.detectConnectedComponents = void 0;\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\n/**\n * Generate all connected components for an undirected graph\n * @param graph\n */\nvar detectConnectedComponents = function detectConnectedComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allComponents = [];\n var visited = {};\n var nodeStack = [];\n\n var getComponent = function getComponent(node) {\n nodeStack.push(node);\n visited[node.id] = true;\n var neighbors = (0, _util.getNeighbors)(node.id, edges);\n\n var _loop_1 = function _loop_1(i) {\n var neighbor = neighbors[i];\n\n if (!visited[neighbor]) {\n var targetNode = nodes.filter(function (node) {\n return node.id === neighbor;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n }\n }\n };\n\n for (var i = 0; i < neighbors.length; ++i) {\n _loop_1(i);\n }\n };\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (!visited[node.id]) {\n // 对于无向图进行dfs遍历,每一次调用后都得到一个连通分量\n getComponent(node);\n var component = [];\n\n while (nodeStack.length > 0) {\n component.push(nodeStack.pop());\n }\n\n allComponents.push(component);\n }\n }\n\n return allComponents;\n};\n/**\n * Tarjan's Algorithm 复杂度 O(|V|+|E|)\n * For directed graph only\n * a directed graph is said to be strongly connected if \"every vertex is reachable from every other vertex\".\n * refer: http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n * @param graph\n * @return a list of strongly connected components\n */\n\n\nexports.detectConnectedComponents = detectConnectedComponents;\n\nvar detectStrongConnectComponents = function detectStrongConnectComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeStack = [];\n var inStack = {}; // 辅助判断是否已经在stack中,减少查找开销\n\n var indices = {};\n var lowLink = {};\n var allComponents = [];\n var index = 0;\n\n var getComponent = function getComponent(node) {\n // Set the depth index for v to the smallest unused index\n indices[node.id] = index;\n lowLink[node.id] = index;\n index += 1;\n nodeStack.push(node);\n inStack[node.id] = true; // 考虑每个邻接点\n\n var neighbors = (0, _util.getNeighbors)(node.id, edges, 'target').filter(function (n) {\n return nodes.map(function (node) {\n return node.id;\n }).indexOf(n) > -1;\n });\n\n var _loop_2 = function _loop_2(i) {\n var targetNodeID = neighbors[i];\n\n if (!indices[targetNodeID] && indices[targetNodeID] !== 0) {\n var targetNode = nodes.filter(function (node) {\n return node.id === targetNodeID;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n } // tree edge\n\n\n lowLink[node.id] = Math.min(lowLink[node.id], lowLink[targetNodeID]);\n } else if (inStack[targetNodeID]) {\n // back edge, target node is in the current SCC\n lowLink[node.id] = Math.min(lowLink[node.id], indices[targetNodeID]);\n }\n };\n\n for (var i = 0; i < neighbors.length; i++) {\n _loop_2(i);\n } // If node is a root node, generate an SCC\n\n\n if (lowLink[node.id] === indices[node.id]) {\n var component = [];\n\n while (nodeStack.length > 0) {\n var tmpNode = nodeStack.pop();\n inStack[tmpNode.id] = false;\n component.push(tmpNode);\n if (tmpNode === node) break;\n }\n\n if (component.length > 0) {\n allComponents.push(component);\n }\n }\n };\n\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n\n if (!indices[node.id] && indices[node.id] !== 0) {\n getComponent(node);\n }\n }\n\n return allComponents;\n};\n\nexports.detectStrongConnectComponents = detectStrongConnectComponents;\n\nfunction getConnectedComponents(graphData, directed) {\n if (directed) return detectStrongConnectComponents(graphData);\n return detectConnectedComponents(graphData);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9jb25uZWN0ZWQtY29tcG9uZW50LmpzPzg2MmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBOztBQUVBLFlBQVksbUJBQU8sQ0FBQywwREFBUTs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixrQkFBa0I7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLHFCQUFxQjtBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvY29ubmVjdGVkLWNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZ2V0Q29ubmVjdGVkQ29tcG9uZW50cztcbmV4cG9ydHMuZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMgPSBleHBvcnRzLmRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSB2b2lkIDA7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbi8qKlxuICogR2VuZXJhdGUgYWxsIGNvbm5lY3RlZCBjb21wb25lbnRzIGZvciBhbiB1bmRpcmVjdGVkIGdyYXBoXG4gKiBAcGFyYW0gZ3JhcGhcbiAqL1xudmFyIGRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSBmdW5jdGlvbiBkZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzKGdyYXBoRGF0YSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgbm9kZVN0YWNrID0gW107XG5cbiAgdmFyIGdldENvbXBvbmVudCA9IGZ1bmN0aW9uIGdldENvbXBvbmVudChub2RlKSB7XG4gICAgbm9kZVN0YWNrLnB1c2gobm9kZSk7XG4gICAgdmlzaXRlZFtub2RlLmlkXSA9IHRydWU7XG4gICAgdmFyIG5laWdoYm9ycyA9ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKG5vZGUuaWQsIGVkZ2VzKTtcblxuICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgICB2YXIgbmVpZ2hib3IgPSBuZWlnaGJvcnNbaV07XG5cbiAgICAgIGlmICghdmlzaXRlZFtuZWlnaGJvcl0pIHtcbiAgICAgICAgdmFyIHRhcmdldE5vZGUgPSBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZS5pZCA9PT0gbmVpZ2hib3I7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXROb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBnZXRDb21wb25lbnQodGFyZ2V0Tm9kZVswXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWlnaGJvcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIF9sb29wXzEoaSk7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuXG4gICAgaWYgKCF2aXNpdGVkW25vZGUuaWRdKSB7XG4gICAgICAvLyDlr7nkuo7ml6DlkJHlm77ov5vooYxkZnPpgY3ljobvvIzmr4/kuIDmrKHosIPnlKjlkI7pg73lvpfliLDkuIDkuKrov57pgJrliIbph49cbiAgICAgIGdldENvbXBvbmVudChub2RlKTtcbiAgICAgIHZhciBjb21wb25lbnQgPSBbXTtcblxuICAgICAgd2hpbGUgKG5vZGVTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbXBvbmVudC5wdXNoKG5vZGVTdGFjay5wb3AoKSk7XG4gICAgICB9XG5cbiAgICAgIGFsbENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDb21wb25lbnRzO1xufTtcbi8qKlxuICogVGFyamFuJ3MgQWxnb3JpdGhtIOWkjeadguW6piAgTyh8VnwrfEV8KVxuICogRm9yIGRpcmVjdGVkIGdyYXBoIG9ubHlcbiAqIGEgZGlyZWN0ZWQgZ3JhcGggaXMgc2FpZCB0byBiZSBzdHJvbmdseSBjb25uZWN0ZWQgaWYgXCJldmVyeSB2ZXJ0ZXggaXMgcmVhY2hhYmxlIGZyb20gZXZlcnkgb3RoZXIgdmVydGV4XCIuXG4gKiByZWZlcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYXJqYW4lMjdzX3N0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzX2FsZ29yaXRobVxuICogQHBhcmFtIGdyYXBoXG4gKiBAcmV0dXJuIGEgbGlzdCBvZiBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50c1xuICovXG5cblxuZXhwb3J0cy5kZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzID0gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cztcblxudmFyIGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZnVuY3Rpb24gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMoZ3JhcGhEYXRhKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlU3RhY2sgPSBbXTtcbiAgdmFyIGluU3RhY2sgPSB7fTsgLy8g6L6F5Yqp5Yik5pat5piv5ZCm5bey57uP5Zyoc3RhY2vkuK3vvIzlh4/lsJHmn6Xmib7lvIDplIBcblxuICB2YXIgaW5kaWNlcyA9IHt9O1xuICB2YXIgbG93TGluayA9IHt9O1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgaW5kZXggPSAwO1xuXG4gIHZhciBnZXRDb21wb25lbnQgPSBmdW5jdGlvbiBnZXRDb21wb25lbnQobm9kZSkge1xuICAgIC8vIFNldCB0aGUgZGVwdGggaW5kZXggZm9yIHYgdG8gdGhlIHNtYWxsZXN0IHVudXNlZCBpbmRleFxuICAgIGluZGljZXNbbm9kZS5pZF0gPSBpbmRleDtcbiAgICBsb3dMaW5rW25vZGUuaWRdID0gaW5kZXg7XG4gICAgaW5kZXggKz0gMTtcbiAgICBub2RlU3RhY2sucHVzaChub2RlKTtcbiAgICBpblN0YWNrW25vZGUuaWRdID0gdHJ1ZTsgLy8g6ICD6JmR5q+P5Liq6YK75o6l54K5XG5cbiAgICB2YXIgbmVpZ2hib3JzID0gKDAsIF91dGlsLmdldE5laWdoYm9ycykobm9kZS5pZCwgZWRnZXMsICd0YXJnZXQnKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiBub2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQ7XG4gICAgICB9KS5pbmRleE9mKG4pID4gLTE7XG4gICAgfSk7XG5cbiAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgdmFyIHRhcmdldE5vZGVJRCA9IG5laWdoYm9yc1tpXTtcblxuICAgICAgaWYgKCFpbmRpY2VzW3RhcmdldE5vZGVJRF0gJiYgaW5kaWNlc1t0YXJnZXROb2RlSURdICE9PSAwKSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IHRhcmdldE5vZGVJRDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRhcmdldE5vZGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGdldENvbXBvbmVudCh0YXJnZXROb2RlWzBdKTtcbiAgICAgICAgfSAvLyB0cmVlIGVkZ2VcblxuXG4gICAgICAgIGxvd0xpbmtbbm9kZS5pZF0gPSBNYXRoLm1pbihsb3dMaW5rW25vZGUuaWRdLCBsb3dMaW5rW3RhcmdldE5vZGVJRF0pO1xuICAgICAgfSBlbHNlIGlmIChpblN0YWNrW3RhcmdldE5vZGVJRF0pIHtcbiAgICAgICAgLy8gYmFjayBlZGdlLCB0YXJnZXQgbm9kZSBpcyBpbiB0aGUgY3VycmVudCBTQ0NcbiAgICAgICAgbG93TGlua1tub2RlLmlkXSA9IE1hdGgubWluKGxvd0xpbmtbbm9kZS5pZF0sIGluZGljZXNbdGFyZ2V0Tm9kZUlEXSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfbG9vcF8yKGkpO1xuICAgIH0gLy8gSWYgbm9kZSBpcyBhIHJvb3Qgbm9kZSwgZ2VuZXJhdGUgYW4gU0NDXG5cblxuICAgIGlmIChsb3dMaW5rW25vZGUuaWRdID09PSBpbmRpY2VzW25vZGUuaWRdKSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gW107XG5cbiAgICAgIHdoaWxlIChub2RlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgdG1wTm9kZSA9IG5vZGVTdGFjay5wb3AoKTtcbiAgICAgICAgaW5TdGFja1t0bXBOb2RlLmlkXSA9IGZhbHNlO1xuICAgICAgICBjb21wb25lbnQucHVzaCh0bXBOb2RlKTtcbiAgICAgICAgaWYgKHRtcE5vZGUgPT09IG5vZGUpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29tcG9uZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWxsQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIF9pID0gMCwgbm9kZXNfMSA9IG5vZGVzOyBfaSA8IG5vZGVzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc18xW19pXTtcblxuICAgIGlmICghaW5kaWNlc1tub2RlLmlkXSAmJiBpbmRpY2VzW25vZGUuaWRdICE9PSAwKSB7XG4gICAgICBnZXRDb21wb25lbnQobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbENvbXBvbmVudHM7XG59O1xuXG5leHBvcnRzLmRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHM7XG5cbmZ1bmN0aW9uIGdldENvbm5lY3RlZENvbXBvbmVudHMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICBpZiAoZGlyZWN0ZWQpIHJldHVybiBkZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cyhncmFwaERhdGEpO1xuICByZXR1cm4gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/connected-component.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/constants/time.js": /*!************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/constants/time.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.secondReg = exports.dateReg = void 0;\nvar secondReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;\nexports.secondReg = secondReg;\nvar dateReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;\nexports.dateReg = dateReg;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9jb25zdGFudHMvdGltZS5qcz84NjljIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxzQkFBc0IsSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJO0FBQ3BEO0FBQ0Esb0JBQW9CLElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sSUFBSTtBQUNoRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL2NvbnN0YW50cy90aW1lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnNlY29uZFJlZyA9IGV4cG9ydHMuZGF0ZVJlZyA9IHZvaWQgMDtcbnZhciBzZWNvbmRSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkkLztcbmV4cG9ydHMuc2Vjb25kUmVnID0gc2Vjb25kUmVnO1xudmFyIGRhdGVSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLztcbmV4cG9ydHMuZGF0ZVJlZyA9IGRhdGVSZWc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/constants/time.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/degree.js": /*!****************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/degree.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getOutDegree = exports.getInDegree = exports.default = void 0;\n\nvar degree = function degree(graphData) {\n var degrees = {};\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n nodes.forEach(function (node) {\n degrees[node.id] = {\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n });\n edges.forEach(function (edge) {\n degrees[edge.source].degree++;\n degrees[edge.source].outDegree++;\n degrees[edge.target].degree++;\n degrees[edge.target].inDegree++;\n });\n return degrees;\n};\n\nvar _default = degree;\n/**\n * 获取指定节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nexports.default = _default;\n\nvar getInDegree = function getInDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].inDegree;\n }\n\n return 0;\n};\n/**\n * 获取指定节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getInDegree = getInDegree;\n\nvar getOutDegree = function getOutDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].outDegree;\n }\n\n return 0;\n};\n\nexports.getOutDegree = getOutDegree;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9kZWdyZWUuanM/ZDljNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvZGVncmVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldE91dERlZ3JlZSA9IGV4cG9ydHMuZ2V0SW5EZWdyZWUgPSBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBkZWdyZWUgPSBmdW5jdGlvbiBkZWdyZWUoZ3JhcGhEYXRhKSB7XG4gIHZhciBkZWdyZWVzID0ge307XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBkZWdyZWVzW25vZGUuaWRdID0ge1xuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICB9KTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmluRGVncmVlKys7XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07XG5cbnZhciBfZGVmYXVsdCA9IGRlZ3JlZTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5YWl5bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuXG52YXIgZ2V0SW5EZWdyZWUgPSBmdW5jdGlvbiBnZXRJbkRlZ3JlZShncmFwaERhdGEsIG5vZGVJZCkge1xuICB2YXIgbm9kZURlZ3JlZSA9IGRlZ3JlZShncmFwaERhdGEpO1xuXG4gIGlmIChub2RlRGVncmVlW25vZGVJZF0pIHtcbiAgICByZXR1cm4gZGVncmVlKGdyYXBoRGF0YSlbbm9kZUlkXS5pbkRlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cblxuZXhwb3J0cy5nZXRJbkRlZ3JlZSA9IGdldEluRGVncmVlO1xuXG52YXIgZ2V0T3V0RGVncmVlID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlKGdyYXBoRGF0YSwgbm9kZUlkKSB7XG4gIHZhciBub2RlRGVncmVlID0gZGVncmVlKGdyYXBoRGF0YSk7XG5cbiAgaWYgKG5vZGVEZWdyZWVbbm9kZUlkXSkge1xuICAgIHJldHVybiBkZWdyZWUoZ3JhcGhEYXRhKVtub2RlSWRdLm91dERlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcblxuZXhwb3J0cy5nZXRPdXREZWdyZWUgPSBnZXRPdXREZWdyZWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/degree.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/detect-cycle.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/detect-cycle.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.detectAllUndirectedCycle = exports.detectAllDirectedCycle = exports.detectAllCycles = exports.default = void 0;\n\nvar _dfs = _interopRequireDefault(__webpack_require__(/*! ./dfs */ \"./node_modules/@antv/algorithm/lib/dfs.js\"));\n\nvar _connectedComponent = _interopRequireWildcard(__webpack_require__(/*! ./connected-component */ \"./node_modules/@antv/algorithm/lib/connected-component.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar detectDirectedCycle = function detectDirectedCycle(graphData) {\n var cycle = null;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a;\n var dfsParentMap = {}; // 所有没有被访问的节点集合\n\n var unvisitedSet = {}; // 正在被访问的节点集合\n\n var visitingSet = {}; // 所有已经被访问过的节点集合\n\n var visitedSet = {}; // 初始化 unvisitedSet\n\n nodes.forEach(function (node) {\n unvisitedSet[node.id] = node;\n });\n var callbacks = {\n enter: function enter(_a) {\n var currentNode = _a.current,\n previousNode = _a.previous;\n\n if (visitingSet[currentNode]) {\n // 如果当前节点正在访问中,则说明检测到环路了\n cycle = {};\n var currentCycleNode = currentNode;\n var previousCycleNode = previousNode;\n\n while (previousCycleNode !== currentNode) {\n cycle[currentCycleNode] = previousCycleNode;\n currentCycleNode = previousCycleNode;\n previousCycleNode = dfsParentMap[previousCycleNode];\n }\n\n cycle[currentCycleNode] = previousCycleNode;\n } else {\n // 如果不存在正在访问集合中,则将其放入正在访问集合,并从未访问集合中删除\n visitingSet[currentNode] = currentNode;\n delete unvisitedSet[currentNode]; // 更新 DSF parents 列表\n\n dfsParentMap[currentNode] = previousNode;\n }\n },\n leave: function leave(_a) {\n var currentNode = _a.current; // 如果所有的节点的子节点都已经访问过了,则从正在访问集合中删除掉,并将其移入到已访问集合中,\n // 同时也意味着当前节点的所有邻居节点都被访问过了\n\n visitedSet[currentNode] = currentNode;\n delete visitingSet[currentNode];\n },\n allowTraversal: function allowTraversal(_a) {\n var nextNode = _a.next; // 如果检测到环路则需要终止所有进一步的遍历,否则会导致无限循环遍历\n\n if (cycle) {\n return false;\n } // 仅允许遍历没有访问的节点,visitedSet 中的都已经访问过了\n\n\n return !visitedSet[nextNode];\n }\n }; // 开始遍历节点\n\n while (Object.keys(unvisitedSet).length) {\n // 从第一个节点开始进行 DFS 遍历\n var firsetUnVisitedKey = Object.keys(unvisitedSet)[0];\n (0, _dfs.default)(graphData, firsetUnVisitedKey, callbacks);\n }\n\n return cycle;\n};\n/**\n * 检测无向图中的所有Base cycles\n * refer: https://www.codeproject.com/Articles/1158232/Enumerating-All-Cycles-in-an-Undirected-Graph\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回一组base cycles\n */\n\n\nvar detectAllUndirectedCycle = function detectAllUndirectedCycle(graphData, nodeIds, include) {\n var _a, _b;\n\n if (include === void 0) {\n include = true;\n }\n\n var allCycles = [];\n var components = (0, _connectedComponent.default)(graphData, false); // loop through all connected components\n\n for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {\n var component = components_1[_i];\n if (!component.length) continue;\n var root = component[0];\n var rootId = root.id;\n var stack = [root];\n var parent_1 = (_a = {}, _a[rootId] = root, _a);\n var used = (_b = {}, _b[rootId] = new Set(), _b); // walk a spanning tree to find cycles\n\n while (stack.length > 0) {\n var curNode = stack.pop();\n var curNodeId = curNode.id;\n var neighbors = (0, _util.getNeighbors)(curNodeId, graphData.edges);\n\n var _loop_1 = function _loop_1(i) {\n var _c;\n\n var neighborId = neighbors[i];\n var neighbor = graphData.nodes.find(function (node) {\n return node.id === neighborId;\n }); // const neighborId = neighbor.get('id');\n\n if (neighborId === curNodeId) {\n // 自环\n allCycles.push((_c = {}, _c[neighborId] = curNode, _c));\n } else if (!(neighborId in used)) {\n // visit a new node\n parent_1[neighborId] = curNode;\n stack.push(neighbor);\n used[neighborId] = new Set([curNode]);\n } else if (!used[curNodeId].has(neighbor)) {\n // a cycle found\n var cycleValid = true;\n var cyclePath = [neighbor, curNode];\n var p = parent_1[curNodeId];\n\n while (used[neighborId].size && !used[neighborId].has(p)) {\n cyclePath.push(p);\n if (p === parent_1[p.id]) break;else p = parent_1[p.id];\n }\n\n cyclePath.push(p);\n\n if (nodeIds && include) {\n // 如果有指定包含的节点\n cycleValid = false;\n\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = true;\n }\n } else if (nodeIds && !include) {\n // 如果有指定不包含的节点\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = false;\n }\n } // 把 node list 形式转换为 cycle 的格式\n\n\n if (cycleValid) {\n var cycle = {};\n\n for (var index = 1; index < cyclePath.length; index += 1) {\n cycle[cyclePath[index - 1].id] = cyclePath[index];\n }\n\n if (cyclePath.length) {\n cycle[cyclePath[cyclePath.length - 1].id] = cyclePath[0];\n }\n\n allCycles.push(cycle);\n }\n\n used[neighborId].add(curNode);\n }\n };\n\n for (var i = 0; i < neighbors.length; i += 1) {\n _loop_1(i);\n }\n }\n }\n\n return allCycles;\n};\n/**\n * Johnson's algorithm, 时间复杂度 O((V + E)(C + 1))$ and space bounded by O(V + E)\n * refer: https://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF\n * refer: https://networkx.github.io/documentation/stable/_modules/networkx/algorithms/cycles.html#simple_cycles\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回所有的 simple cycles\n */\n\n\nexports.detectAllUndirectedCycle = detectAllUndirectedCycle;\n\nvar detectAllDirectedCycle = function detectAllDirectedCycle(graphData, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n var path = []; // stack of nodes in current path\n\n var blocked = new Set();\n var B = []; // remember portions of the graph that yield no elementary circuit\n\n var allCycles = [];\n var idx2Node = {};\n var node2Idx = {}; // 辅助函数: unblock all blocked nodes\n\n var unblock = function unblock(thisNode) {\n var stack = [thisNode];\n\n while (stack.length > 0) {\n var node = stack.pop();\n\n if (blocked.has(node)) {\n blocked.delete(node);\n B[node.id].forEach(function (n) {\n stack.push(n);\n });\n B[node.id].clear();\n }\n }\n };\n\n var circuit = function circuit(node, start, adjList) {\n var closed = false; // whether a path is closed\n\n if (nodeIds && include === false && nodeIds.indexOf(node.id) > -1) return closed;\n path.push(node);\n blocked.add(node);\n var neighbors = adjList[node.id];\n\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (neighbor === start) {\n var cycle = {};\n\n for (var index = 1; index < path.length; index += 1) {\n cycle[path[index - 1].id] = path[index];\n }\n\n if (path.length) {\n cycle[path[path.length - 1].id] = path[0];\n }\n\n allCycles.push(cycle);\n closed = true;\n } else if (!blocked.has(neighbor)) {\n if (circuit(neighbor, start, adjList)) {\n closed = true;\n }\n }\n }\n\n if (closed) {\n unblock(node);\n } else {\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (!B[neighbor.id].has(node)) {\n B[neighbor.id].add(node);\n }\n }\n }\n\n path.pop();\n return closed;\n };\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a; // Johnson's algorithm 要求给节点赋顺序,先按节点在数组中的顺序\n\n for (var i = 0; i < nodes.length; i += 1) {\n var node = nodes[i];\n var nodeId = node.id;\n node2Idx[nodeId] = i;\n idx2Node[i] = node;\n } // 如果有指定包含的节点,则把指定节点排序在前,以便提早结束搜索\n\n\n if (nodeIds && include) {\n var _loop_2 = function _loop_2(i) {\n var nodeId = nodeIds[i];\n node2Idx[nodes[i].id] = node2Idx[nodeId];\n node2Idx[nodeId] = 0;\n idx2Node[0] = nodes.find(function (node) {\n return node.id === nodeId;\n });\n idx2Node[node2Idx[nodes[i].id]] = nodes[i];\n };\n\n for (var i = 0; i < nodeIds.length; i++) {\n _loop_2(i);\n }\n } // 返回 节点顺序 >= nodeOrder 的强连通分量的adjList\n\n\n var getMinComponentAdj = function getMinComponentAdj(components) {\n var _a;\n\n var minCompIdx;\n var minIdx = Infinity; // Find least component and the lowest node\n\n for (var i = 0; i < components.length; i += 1) {\n var comp = components[i];\n\n for (var j = 0; j < comp.length; j++) {\n var nodeIdx_1 = node2Idx[comp[j].id];\n\n if (nodeIdx_1 < minIdx) {\n minIdx = nodeIdx_1;\n minCompIdx = i;\n }\n }\n }\n\n var component = components[minCompIdx];\n var adjList = [];\n\n for (var i = 0; i < component.length; i += 1) {\n var node = component[i];\n adjList[node.id] = [];\n\n for (var _i = 0, _b = (0, _util.getNeighbors)(node.id, graphData.edges, 'target').filter(function (n) {\n return component.map(function (c) {\n return c.id;\n }).indexOf(n) > -1;\n }); _i < _b.length; _i++) {\n var neighbor = _b[_i]; // 对自环情况 (点连向自身) 特殊处理:记录自环,但不加入adjList\n\n if (neighbor === node.id && !(include === false && nodeIds.indexOf(node.id) > -1)) {\n allCycles.push((_a = {}, _a[node.id] = node, _a));\n } else {\n adjList[node.id].push(node2Idx[neighbor]);\n }\n }\n }\n\n return {\n component: component,\n adjList: adjList,\n minIdx: minIdx\n };\n };\n\n var nodeIdx = 0;\n\n while (nodeIdx < nodes.length) {\n var subgraphNodes = nodes.filter(function (n) {\n return node2Idx[n.id] >= nodeIdx;\n });\n var sccs = (0, _connectedComponent.detectStrongConnectComponents)({\n nodes: subgraphNodes,\n edges: graphData.edges\n }).filter(function (component) {\n return component.length > 1;\n });\n if (sccs.length === 0) break;\n var scc = getMinComponentAdj(sccs);\n var minIdx = scc.minIdx,\n adjList = scc.adjList,\n component = scc.component;\n\n if (component.length > 1) {\n component.forEach(function (node) {\n B[node.id] = new Set();\n });\n var startNode = idx2Node[minIdx]; // startNode 不在指定要包含的节点中,提前结束搜索\n\n if (nodeIds && include && nodeIds.indexOf(startNode.id) === -1) return allCycles;\n circuit(startNode, startNode, adjList);\n nodeIdx = minIdx + 1;\n } else {\n break;\n }\n }\n\n return allCycles;\n};\n/**\n * 查找图中所有满足要求的圈\n * @param graph\n * @param directed 是否为有向图\n * @param nodeIds 节点 ID 的数组,若不指定,则返回图中所有的圈\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: Node}] 包含所有环的数组,每个环用一个Object表示,其中key为节点id,value为该节点在环中指向的下一个节点\n */\n\n\nexports.detectAllDirectedCycle = detectAllDirectedCycle;\n\nvar detectAllCycles = function detectAllCycles(graphData, directed, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n if (directed) return detectAllDirectedCycle(graphData, nodeIds, include);\n return detectAllUndirectedCycle(graphData, nodeIds, include);\n};\n\nexports.detectAllCycles = detectAllCycles;\nvar _default = detectDirectedCycle;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9kZXRlY3QtY3ljbGUuanM/NTE0MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYix1QkFBdUIsMkJBQTJCLDJFQUEyRSxrQ0FBa0MsbUJBQW1CLEdBQUcsRUFBRSxPQUFPLGtDQUFrQyw4SEFBOEgsR0FBRyxFQUFFLHFCQUFxQjs7QUFFeFg7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSxrQ0FBa0MsbUJBQU8sQ0FBQyx3REFBTzs7QUFFakQsa0RBQWtELG1CQUFPLENBQUMsd0ZBQXVCOztBQUVqRixZQUFZLG1CQUFPLENBQUMsMERBQVE7O0FBRTVCLGdEQUFnRCxnREFBZ0QsdUNBQXVDLHNDQUFzQyxvRkFBb0YsMkRBQTJELEVBQUUsZUFBZTs7QUFFN1Usb0RBQW9ELDZDQUE2QyxZQUFZLEVBQUUsOEVBQThFLFNBQVMsZ0JBQWdCLEVBQUUsbURBQW1ELCtCQUErQix1QkFBdUIsRUFBRSxpQkFBaUIsc0ZBQXNGLHVCQUF1QiwyRUFBMkUscUZBQXFGLHNDQUFzQywwQ0FBMEMsRUFBRSxPQUFPLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxzQkFBc0IsYUFBYSx3QkFBd0IsRUFBRSxlQUFlOztBQUVweUIsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4Qix3QkFBd0I7O0FBRXhCLHVCQUF1Qjs7QUFFdkIsc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUNBQW1DO0FBQ25DOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzRUFBc0U7O0FBRXRFLDZDQUE2QywwQkFBMEI7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQix1QkFBdUIsOEJBQThCOztBQUVyRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXOzs7QUFHWDtBQUNBOztBQUVBLCtCQUErQiwwQkFBMEI7QUFDekQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxxQkFBcUIsc0JBQXNCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDOztBQUV0QyxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQixtQkFBbUIsdUJBQXVCO0FBQzFDOztBQUVBLHFCQUFxQixpQkFBaUI7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPLEVBQUUsZ0JBQWdCO0FBQ3pCLDhCQUE4Qjs7QUFFOUI7QUFDQSxpQ0FBaUM7QUFDakMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9kZXRlY3QtY3ljbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGUgPSBleHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBleHBvcnRzLmRldGVjdEFsbEN5Y2xlcyA9IGV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9kZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2Rmc1wiKSk7XG5cbnZhciBfY29ubmVjdGVkQ29tcG9uZW50ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vY29ubmVjdGVkLWNvbXBvbmVudFwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBkZWZhdWx0OiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGRldGVjdERpcmVjdGVkQ3ljbGUgPSBmdW5jdGlvbiBkZXRlY3REaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSkge1xuICB2YXIgY3ljbGUgPSBudWxsO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hO1xuICB2YXIgZGZzUGFyZW50TWFwID0ge307IC8vIOaJgOacieayoeacieiiq+iuv+mXrueahOiKgueCuembhuWQiFxuXG4gIHZhciB1bnZpc2l0ZWRTZXQgPSB7fTsgLy8g5q2j5Zyo6KKr6K6/6Zeu55qE6IqC54K56ZuG5ZCIXG5cbiAgdmFyIHZpc2l0aW5nU2V0ID0ge307IC8vIOaJgOacieW3sue7j+iiq+iuv+mXrui/h+eahOiKgueCuembhuWQiFxuXG4gIHZhciB2aXNpdGVkU2V0ID0ge307IC8vIOWIneWni+WMliB1bnZpc2l0ZWRTZXRcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdW52aXNpdGVkU2V0W25vZGUuaWRdID0gbm9kZTtcbiAgfSk7XG4gIHZhciBjYWxsYmFja3MgPSB7XG4gICAgZW50ZXI6IGZ1bmN0aW9uIGVudGVyKF9hKSB7XG4gICAgICB2YXIgY3VycmVudE5vZGUgPSBfYS5jdXJyZW50LFxuICAgICAgICAgIHByZXZpb3VzTm9kZSA9IF9hLnByZXZpb3VzO1xuXG4gICAgICBpZiAodmlzaXRpbmdTZXRbY3VycmVudE5vZGVdKSB7XG4gICAgICAgIC8vIOWmguaenOW9k+WJjeiKgueCueato+WcqOiuv+mXruS4re+8jOWImeivtOaYjuajgOa1i+WIsOeOr+i3r+S6hlxuICAgICAgICBjeWNsZSA9IHt9O1xuICAgICAgICB2YXIgY3VycmVudEN5Y2xlTm9kZSA9IGN1cnJlbnROb2RlO1xuICAgICAgICB2YXIgcHJldmlvdXNDeWNsZU5vZGUgPSBwcmV2aW91c05vZGU7XG5cbiAgICAgICAgd2hpbGUgKHByZXZpb3VzQ3ljbGVOb2RlICE9PSBjdXJyZW50Tm9kZSkge1xuICAgICAgICAgIGN5Y2xlW2N1cnJlbnRDeWNsZU5vZGVdID0gcHJldmlvdXNDeWNsZU5vZGU7XG4gICAgICAgICAgY3VycmVudEN5Y2xlTm9kZSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgICAgIHByZXZpb3VzQ3ljbGVOb2RlID0gZGZzUGFyZW50TWFwW3ByZXZpb3VzQ3ljbGVOb2RlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN5Y2xlW2N1cnJlbnRDeWNsZU5vZGVdID0gcHJldmlvdXNDeWNsZU5vZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDlpoLmnpzkuI3lrZjlnKjmraPlnKjorr/pl67pm4blkIjkuK3vvIzliJnlsIblhbbmlL7lhaXmraPlnKjorr/pl67pm4blkIjvvIzlubbku47mnKrorr/pl67pm4blkIjkuK3liKDpmaRcbiAgICAgICAgdmlzaXRpbmdTZXRbY3VycmVudE5vZGVdID0gY3VycmVudE5vZGU7XG4gICAgICAgIGRlbGV0ZSB1bnZpc2l0ZWRTZXRbY3VycmVudE5vZGVdOyAvLyDmm7TmlrAgRFNGIHBhcmVudHMg5YiX6KGoXG5cbiAgICAgICAgZGZzUGFyZW50TWFwW2N1cnJlbnROb2RlXSA9IHByZXZpb3VzTm9kZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxlYXZlOiBmdW5jdGlvbiBsZWF2ZShfYSkge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gX2EuY3VycmVudDsgLy8g5aaC5p6c5omA5pyJ55qE6IqC54K555qE5a2Q6IqC54K56YO95bey57uP6K6/6Zeu6L+H5LqG77yM5YiZ5LuO5q2j5Zyo6K6/6Zeu6ZuG5ZCI5Lit5Yig6Zmk5o6J77yM5bm25bCG5YW256e75YWl5Yiw5bey6K6/6Zeu6ZuG5ZCI5Lit77yMXG4gICAgICAvLyDlkIzml7bkuZ/mhI/lkbPnnYDlvZPliY3oioLngrnnmoTmiYDmnInpgrvlsYXoioLngrnpg73ooqvorr/pl67ov4fkuoZcblxuICAgICAgdmlzaXRlZFNldFtjdXJyZW50Tm9kZV0gPSBjdXJyZW50Tm9kZTtcbiAgICAgIGRlbGV0ZSB2aXNpdGluZ1NldFtjdXJyZW50Tm9kZV07XG4gICAgfSxcbiAgICBhbGxvd1RyYXZlcnNhbDogZnVuY3Rpb24gYWxsb3dUcmF2ZXJzYWwoX2EpIHtcbiAgICAgIHZhciBuZXh0Tm9kZSA9IF9hLm5leHQ7IC8vIOWmguaenOajgOa1i+WIsOeOr+i3r+WImemcgOimgee7iOatouaJgOaciei/m+S4gOatpeeahOmBjeWOhu+8jOWQpuWImeS8muWvvOiHtOaXoOmZkOW+queOr+mBjeWOhlxuXG4gICAgICBpZiAoY3ljbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSAvLyDku4XlhYHorrjpgY3ljobmsqHmnInorr/pl67nmoToioLngrnvvIx2aXNpdGVkU2V0IOS4reeahOmDveW3sue7j+iuv+mXrui/h+S6hlxuXG5cbiAgICAgIHJldHVybiAhdmlzaXRlZFNldFtuZXh0Tm9kZV07XG4gICAgfVxuICB9OyAvLyDlvIDlp4vpgY3ljoboioLngrlcblxuICB3aGlsZSAoT2JqZWN0LmtleXModW52aXNpdGVkU2V0KS5sZW5ndGgpIHtcbiAgICAvLyDku47nrKzkuIDkuKroioLngrnlvIDlp4vov5vooYwgREZTIOmBjeWOhlxuICAgIHZhciBmaXJzZXRVblZpc2l0ZWRLZXkgPSBPYmplY3Qua2V5cyh1bnZpc2l0ZWRTZXQpWzBdO1xuICAgICgwLCBfZGZzLmRlZmF1bHQpKGdyYXBoRGF0YSwgZmlyc2V0VW5WaXNpdGVkS2V5LCBjYWxsYmFja3MpO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xlO1xufTtcbi8qKlxuICog5qOA5rWL5peg5ZCR5Zu+5Lit55qE5omA5pyJQmFzZSBjeWNsZXNcbiAqIHJlZmVyOiBodHRwczovL3d3dy5jb2RlcHJvamVjdC5jb20vQXJ0aWNsZXMvMTE1ODIzMi9FbnVtZXJhdGluZy1BbGwtQ3ljbGVzLWluLWFuLVVuZGlyZWN0ZWQtR3JhcGhcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIG5vZGVJZHMg6IqC54K5IElEIOeahOaVsOe7hFxuICogQHBhcmFtIGluY2x1ZGUg5YyF5ZCr5oiW5o6S6Zmk5oyH5a6a55qE6IqC54K5XG4gKiBAcmV0dXJuIFt7W2tleTogc3RyaW5nXTogSU5vZGV9XSDov5Tlm57kuIDnu4RiYXNlIGN5Y2xlc1xuICovXG5cblxudmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgdmFyIF9hLCBfYjtcblxuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBjb21wb25lbnRzID0gKDAsIF9jb25uZWN0ZWRDb21wb25lbnQuZGVmYXVsdCkoZ3JhcGhEYXRhLCBmYWxzZSk7IC8vIGxvb3AgdGhyb3VnaCBhbGwgY29ubmVjdGVkIGNvbXBvbmVudHNcblxuICBmb3IgKHZhciBfaSA9IDAsIGNvbXBvbmVudHNfMSA9IGNvbXBvbmVudHM7IF9pIDwgY29tcG9uZW50c18xLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBjb21wb25lbnQgPSBjb21wb25lbnRzXzFbX2ldO1xuICAgIGlmICghY29tcG9uZW50Lmxlbmd0aCkgY29udGludWU7XG4gICAgdmFyIHJvb3QgPSBjb21wb25lbnRbMF07XG4gICAgdmFyIHJvb3RJZCA9IHJvb3QuaWQ7XG4gICAgdmFyIHN0YWNrID0gW3Jvb3RdO1xuICAgIHZhciBwYXJlbnRfMSA9IChfYSA9IHt9LCBfYVtyb290SWRdID0gcm9vdCwgX2EpO1xuICAgIHZhciB1c2VkID0gKF9iID0ge30sIF9iW3Jvb3RJZF0gPSBuZXcgU2V0KCksIF9iKTsgLy8gd2FsayBhIHNwYW5uaW5nIHRyZWUgdG8gZmluZCBjeWNsZXNcblxuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgY3VyTm9kZSA9IHN0YWNrLnBvcCgpO1xuICAgICAgdmFyIGN1ck5vZGVJZCA9IGN1ck5vZGUuaWQ7XG4gICAgICB2YXIgbmVpZ2hib3JzID0gKDAsIF91dGlsLmdldE5laWdoYm9ycykoY3VyTm9kZUlkLCBncmFwaERhdGEuZWRnZXMpO1xuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICB2YXIgX2M7XG5cbiAgICAgICAgdmFyIG5laWdoYm9ySWQgPSBuZWlnaGJvcnNbaV07XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGdyYXBoRGF0YS5ub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9ySWQ7XG4gICAgICAgIH0pOyAvLyBjb25zdCBuZWlnaGJvcklkID0gbmVpZ2hib3IuZ2V0KCdpZCcpO1xuXG4gICAgICAgIGlmIChuZWlnaGJvcklkID09PSBjdXJOb2RlSWQpIHtcbiAgICAgICAgICAvLyDoh6rnjq9cbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2MgPSB7fSwgX2NbbmVpZ2hib3JJZF0gPSBjdXJOb2RlLCBfYykpO1xuICAgICAgICB9IGVsc2UgaWYgKCEobmVpZ2hib3JJZCBpbiB1c2VkKSkge1xuICAgICAgICAgIC8vIHZpc2l0IGEgbmV3IG5vZGVcbiAgICAgICAgICBwYXJlbnRfMVtuZWlnaGJvcklkXSA9IGN1ck5vZGU7XG4gICAgICAgICAgc3RhY2sucHVzaChuZWlnaGJvcik7XG4gICAgICAgICAgdXNlZFtuZWlnaGJvcklkXSA9IG5ldyBTZXQoW2N1ck5vZGVdKTtcbiAgICAgICAgfSBlbHNlIGlmICghdXNlZFtjdXJOb2RlSWRdLmhhcyhuZWlnaGJvcikpIHtcbiAgICAgICAgICAvLyBhIGN5Y2xlIGZvdW5kXG4gICAgICAgICAgdmFyIGN5Y2xlVmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHZhciBjeWNsZVBhdGggPSBbbmVpZ2hib3IsIGN1ck5vZGVdO1xuICAgICAgICAgIHZhciBwID0gcGFyZW50XzFbY3VyTm9kZUlkXTtcblxuICAgICAgICAgIHdoaWxlICh1c2VkW25laWdoYm9ySWRdLnNpemUgJiYgIXVzZWRbbmVpZ2hib3JJZF0uaGFzKHApKSB7XG4gICAgICAgICAgICBjeWNsZVBhdGgucHVzaChwKTtcbiAgICAgICAgICAgIGlmIChwID09PSBwYXJlbnRfMVtwLmlkXSkgYnJlYWs7ZWxzZSBwID0gcGFyZW50XzFbcC5pZF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3ljbGVQYXRoLnB1c2gocCk7XG5cbiAgICAgICAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrlcbiAgICAgICAgICAgIGN5Y2xlVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJZHMgJiYgIWluY2x1ZGUpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOacieaMh+WumuS4jeWMheWQq+eahOiKgueCuVxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyDmioogbm9kZSBsaXN0IOW9ouW8j+i9rOaNouS4uiBjeWNsZSDnmoTmoLzlvI9cblxuXG4gICAgICAgICAgaWYgKGN5Y2xlVmFsaWQpIHtcbiAgICAgICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgY3ljbGVQYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbaW5kZXggLSAxXS5pZF0gPSBjeWNsZVBhdGhbaW5kZXhdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3ljbGVQYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbY3ljbGVQYXRoLmxlbmd0aCAtIDFdLmlkXSA9IGN5Y2xlUGF0aFswXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHVzZWRbbmVpZ2hib3JJZF0uYWRkKGN1ck5vZGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDeWNsZXM7XG59O1xuLyoqXG4gKiBKb2huc29uJ3MgYWxnb3JpdGhtLCDml7bpl7TlpI3mnYLluqYgTygoViArIEUpKEMgKyAxKSkkIGFuZCBzcGFjZSBib3VuZGVkIGJ5IE8oViArIEUpXG4gKiByZWZlcjogaHR0cHM6Ly93d3cuY3MudHVmdHMuZWR1L2NvbXAvMTUwR0EvaG9tZXdvcmtzL2h3MS9Kb2huc29uJTIwNzUuUERGXG4gKiByZWZlcjogaHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vZG9jdW1lbnRhdGlvbi9zdGFibGUvX21vZHVsZXMvbmV0d29ya3gvYWxnb3JpdGhtcy9jeWNsZXMuaHRtbCNzaW1wbGVfY3ljbGVzXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4RcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IElOb2RlfV0g6L+U5Zue5omA5pyJ55qEIHNpbXBsZSBjeWNsZXNcbiAqL1xuXG5cbmV4cG9ydHMuZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlID0gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlO1xuXG52YXIgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbERpcmVjdGVkQ3ljbGUoZ3JhcGhEYXRhLCBub2RlSWRzLCBpbmNsdWRlKSB7XG4gIGlmIChpbmNsdWRlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBwYXRoID0gW107IC8vIHN0YWNrIG9mIG5vZGVzIGluIGN1cnJlbnQgcGF0aFxuXG4gIHZhciBibG9ja2VkID0gbmV3IFNldCgpO1xuICB2YXIgQiA9IFtdOyAvLyByZW1lbWJlciBwb3J0aW9ucyBvZiB0aGUgZ3JhcGggdGhhdCB5aWVsZCBubyBlbGVtZW50YXJ5IGNpcmN1aXRcblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBpZHgyTm9kZSA9IHt9O1xuICB2YXIgbm9kZTJJZHggPSB7fTsgLy8g6L6F5Yqp5Ye95pWw77yaIHVuYmxvY2sgYWxsIGJsb2NrZWQgbm9kZXNcblxuICB2YXIgdW5ibG9jayA9IGZ1bmN0aW9uIHVuYmxvY2sodGhpc05vZGUpIHtcbiAgICB2YXIgc3RhY2sgPSBbdGhpc05vZGVdO1xuXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBub2RlID0gc3RhY2sucG9wKCk7XG5cbiAgICAgIGlmIChibG9ja2VkLmhhcyhub2RlKSkge1xuICAgICAgICBibG9ja2VkLmRlbGV0ZShub2RlKTtcbiAgICAgICAgQltub2RlLmlkXS5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgc3RhY2sucHVzaChuKTtcbiAgICAgICAgfSk7XG4gICAgICAgIEJbbm9kZS5pZF0uY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGNpcmN1aXQgPSBmdW5jdGlvbiBjaXJjdWl0KG5vZGUsIHN0YXJ0LCBhZGpMaXN0KSB7XG4gICAgdmFyIGNsb3NlZCA9IGZhbHNlOyAvLyB3aGV0aGVyIGEgcGF0aCBpcyBjbG9zZWRcblxuICAgIGlmIChub2RlSWRzICYmIGluY2x1ZGUgPT09IGZhbHNlICYmIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xKSByZXR1cm4gY2xvc2VkO1xuICAgIHBhdGgucHVzaChub2RlKTtcbiAgICBibG9ja2VkLmFkZChub2RlKTtcbiAgICB2YXIgbmVpZ2hib3JzID0gYWRqTGlzdFtub2RlLmlkXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICB2YXIgbmVpZ2hib3IgPSBpZHgyTm9kZVtuZWlnaGJvcnNbaV1dO1xuXG4gICAgICBpZiAobmVpZ2hib3IgPT09IHN0YXJ0KSB7XG4gICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMTsgaW5kZXggPCBwYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGN5Y2xlW3BhdGhbaW5kZXggLSAxXS5pZF0gPSBwYXRoW2luZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCkge1xuICAgICAgICAgIGN5Y2xlW3BhdGhbcGF0aC5sZW5ndGggLSAxXS5pZF0gPSBwYXRoWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICghYmxvY2tlZC5oYXMobmVpZ2hib3IpKSB7XG4gICAgICAgIGlmIChjaXJjdWl0KG5laWdoYm9yLCBzdGFydCwgYWRqTGlzdCkpIHtcbiAgICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsb3NlZCkge1xuICAgICAgdW5ibG9jayhub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWlnaGJvcnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yID0gaWR4Mk5vZGVbbmVpZ2hib3JzW2ldXTtcblxuICAgICAgICBpZiAoIUJbbmVpZ2hib3IuaWRdLmhhcyhub2RlKSkge1xuICAgICAgICAgIEJbbmVpZ2hib3IuaWRdLmFkZChub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHBhdGgucG9wKCk7XG4gICAgcmV0dXJuIGNsb3NlZDtcbiAgfTtcblxuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hOyAvLyBKb2huc29uJ3MgYWxnb3JpdGhtIOimgeaxgue7meiKgueCuei1i+mhuuW6j++8jOWFiOaMieiKgueCueWcqOaVsOe7hOS4reeahOmhuuW6j1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIG5vZGUySWR4W25vZGVJZF0gPSBpO1xuICAgIGlkeDJOb2RlW2ldID0gbm9kZTtcbiAgfSAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrnvvIzliJnmiormjIflrproioLngrnmjpLluo/lnKjliY3vvIzku6Xkvr/mj5Dml6nnu5PmnZ/mkJzntKJcblxuXG4gIGlmIChub2RlSWRzICYmIGluY2x1ZGUpIHtcbiAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgdmFyIG5vZGVJZCA9IG5vZGVJZHNbaV07XG4gICAgICBub2RlMklkeFtub2Rlc1tpXS5pZF0gPSBub2RlMklkeFtub2RlSWRdO1xuICAgICAgbm9kZTJJZHhbbm9kZUlkXSA9IDA7XG4gICAgICBpZHgyTm9kZVswXSA9IG5vZGVzLmZpbmQoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5vZGVJZDtcbiAgICAgIH0pO1xuICAgICAgaWR4Mk5vZGVbbm9kZTJJZHhbbm9kZXNbaV0uaWRdXSA9IG5vZGVzW2ldO1xuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVJZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIF9sb29wXzIoaSk7XG4gICAgfVxuICB9IC8vIOi/lOWbniDoioLngrnpobrluo8gPj0gbm9kZU9yZGVyIOeahOW8uui/numAmuWIhumHj+eahGFkakxpc3RcblxuXG4gIHZhciBnZXRNaW5Db21wb25lbnRBZGogPSBmdW5jdGlvbiBnZXRNaW5Db21wb25lbnRBZGooY29tcG9uZW50cykge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBtaW5Db21wSWR4O1xuICAgIHZhciBtaW5JZHggPSBJbmZpbml0eTsgLy8gRmluZCBsZWFzdCBjb21wb25lbnQgYW5kIHRoZSBsb3dlc3Qgbm9kZVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICB2YXIgY29tcCA9IGNvbXBvbmVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29tcC5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbm9kZUlkeF8xID0gbm9kZTJJZHhbY29tcFtqXS5pZF07XG5cbiAgICAgICAgaWYgKG5vZGVJZHhfMSA8IG1pbklkeCkge1xuICAgICAgICAgIG1pbklkeCA9IG5vZGVJZHhfMTtcbiAgICAgICAgICBtaW5Db21wSWR4ID0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjb21wb25lbnQgPSBjb21wb25lbnRzW21pbkNvbXBJZHhdO1xuICAgIHZhciBhZGpMaXN0ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIG5vZGUgPSBjb21wb25lbnRbaV07XG4gICAgICBhZGpMaXN0W25vZGUuaWRdID0gW107XG5cbiAgICAgIGZvciAodmFyIF9pID0gMCwgX2IgPSAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShub2RlLmlkLCBncmFwaERhdGEuZWRnZXMsICd0YXJnZXQnKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5tYXAoZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgICByZXR1cm4gYy5pZDtcbiAgICAgICAgfSkuaW5kZXhPZihuKSA+IC0xO1xuICAgICAgfSk7IF9pIDwgX2IubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBuZWlnaGJvciA9IF9iW19pXTsgLy8g5a+56Ieq546v5oOF5Ya1ICjngrnov57lkJHoh6rouqspIOeJueauiuWkhOeQhu+8muiusOW9leiHqueOr++8jOS9huS4jeWKoOWFpWFkakxpc3RcblxuICAgICAgICBpZiAobmVpZ2hib3IgPT09IG5vZGUuaWQgJiYgIShpbmNsdWRlID09PSBmYWxzZSAmJiBub2RlSWRzLmluZGV4T2Yobm9kZS5pZCkgPiAtMSkpIHtcbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2EgPSB7fSwgX2Fbbm9kZS5pZF0gPSBub2RlLCBfYSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkakxpc3Rbbm9kZS5pZF0ucHVzaChub2RlMklkeFtuZWlnaGJvcl0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxuICAgICAgYWRqTGlzdDogYWRqTGlzdCxcbiAgICAgIG1pbklkeDogbWluSWR4XG4gICAgfTtcbiAgfTtcblxuICB2YXIgbm9kZUlkeCA9IDA7XG5cbiAgd2hpbGUgKG5vZGVJZHggPCBub2Rlcy5sZW5ndGgpIHtcbiAgICB2YXIgc3ViZ3JhcGhOb2RlcyA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgcmV0dXJuIG5vZGUySWR4W24uaWRdID49IG5vZGVJZHg7XG4gICAgfSk7XG4gICAgdmFyIHNjY3MgPSAoMCwgX2Nvbm5lY3RlZENvbXBvbmVudC5kZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cykoe1xuICAgICAgbm9kZXM6IHN1YmdyYXBoTm9kZXMsXG4gICAgICBlZGdlczogZ3JhcGhEYXRhLmVkZ2VzXG4gICAgfSkuZmlsdGVyKGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICAgIHJldHVybiBjb21wb25lbnQubGVuZ3RoID4gMTtcbiAgICB9KTtcbiAgICBpZiAoc2Njcy5sZW5ndGggPT09IDApIGJyZWFrO1xuICAgIHZhciBzY2MgPSBnZXRNaW5Db21wb25lbnRBZGooc2Njcyk7XG4gICAgdmFyIG1pbklkeCA9IHNjYy5taW5JZHgsXG4gICAgICAgIGFkakxpc3QgPSBzY2MuYWRqTGlzdCxcbiAgICAgICAgY29tcG9uZW50ID0gc2NjLmNvbXBvbmVudDtcblxuICAgIGlmIChjb21wb25lbnQubGVuZ3RoID4gMSkge1xuICAgICAgY29tcG9uZW50LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgQltub2RlLmlkXSA9IG5ldyBTZXQoKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHN0YXJ0Tm9kZSA9IGlkeDJOb2RlW21pbklkeF07IC8vIHN0YXJ0Tm9kZSDkuI3lnKjmjIflrpropoHljIXlkKvnmoToioLngrnkuK3vvIzmj5DliY3nu5PmnZ/mkJzntKJcblxuICAgICAgaWYgKG5vZGVJZHMgJiYgaW5jbHVkZSAmJiBub2RlSWRzLmluZGV4T2Yoc3RhcnROb2RlLmlkKSA9PT0gLTEpIHJldHVybiBhbGxDeWNsZXM7XG4gICAgICBjaXJjdWl0KHN0YXJ0Tm9kZSwgc3RhcnROb2RlLCBhZGpMaXN0KTtcbiAgICAgIG5vZGVJZHggPSBtaW5JZHggKyAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsQ3ljbGVzO1xufTtcbi8qKlxuICog5p+l5om+5Zu+5Lit5omA5pyJ5ruh6Laz6KaB5rGC55qE5ZyIXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4TvvIzoi6XkuI3mjIflrprvvIzliJnov5Tlm57lm77kuK3miYDmnInnmoTlnIhcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IE5vZGV9XSDljIXlkKvmiYDmnInnjq/nmoTmlbDnu4TvvIzmr4/kuKrnjq/nlKjkuIDkuKpPYmplY3TooajnpLrvvIzlhbbkuK1rZXnkuLroioLngrlpZO+8jHZhbHVl5Li66K+l6IqC54K55Zyo546v5Lit5oyH5ZCR55qE5LiL5LiA5Liq6IqC54K5XG4gKi9cblxuXG5leHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlO1xuXG52YXIgZGV0ZWN0QWxsQ3ljbGVzID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgaWYgKGluY2x1ZGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGRpcmVjdGVkKSByZXR1cm4gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpO1xuICByZXR1cm4gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSk7XG59O1xuXG5leHBvcnRzLmRldGVjdEFsbEN5Y2xlcyA9IGRldGVjdEFsbEN5Y2xlcztcbnZhciBfZGVmYXVsdCA9IGRldGVjdERpcmVjdGVkQ3ljbGU7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/detect-cycle.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/dfs.js": /*!*************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/dfs.js ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = depthFirstSearch;\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n\n if (!seen[next]) {\n seen[next] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * @param {Graph} graph\n * @param {GraphNode} currentNode\n * @param {GraphNode} previousNode\n * @param {Callbacks} callbacks\n */\n\n\nfunction depthFirstSearchRecursive(graphData, currentNode, previousNode, callbacks) {\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n });\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a;\n (0, _util.getNeighbors)(currentNode, edges, 'target').forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n depthFirstSearchRecursive(graphData, nextNode, currentNode, callbacks);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n });\n}\n/**\n * 深度优先遍历图\n * @param data GraphData 图数据\n * @param startNodeId 开始遍历的节点的 ID\n * @param originalCallbacks 回调\n */\n\n\nfunction depthFirstSearch(graphData, startNodeId, callbacks) {\n depthFirstSearchRecursive(graphData, startNodeId, '', initCallbacks(callbacks));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9kZnMuanM/ZmU1MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQywwREFBUTs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvZGZzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBkZXB0aEZpcnN0U2VhcmNoO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5mdW5jdGlvbiBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykge1xuICBpZiAoY2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBjYWxsYmFja3MgPSB7fTtcbiAgfVxuXG4gIHZhciBpbml0aWF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrcztcblxuICB2YXIgc3R1YkNhbGxiYWNrID0gZnVuY3Rpb24gc3R1YkNhbGxiYWNrKCkge307XG5cbiAgdmFyIGFsbG93VHJhdmVyc2FsQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlZW4gPSB7fTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKF9hKSB7XG4gICAgICB2YXIgbmV4dCA9IF9hLm5leHQ7XG5cbiAgICAgIGlmICghc2VlbltuZXh0XSkge1xuICAgICAgICBzZWVuW25leHRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICB9KCk7XG5cbiAgaW5pdGlhdGVkQ2FsbGJhY2suYWxsb3dUcmF2ZXJzYWwgPSBjYWxsYmFja3MuYWxsb3dUcmF2ZXJzYWwgfHwgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2suZW50ZXIgPSBjYWxsYmFja3MuZW50ZXIgfHwgc3R1YkNhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5sZWF2ZSA9IGNhbGxiYWNrcy5sZWF2ZSB8fCBzdHViQ2FsbGJhY2s7XG4gIHJldHVybiBpbml0aWF0ZWRDYWxsYmFjaztcbn1cbi8qKlxuICogQHBhcmFtIHtHcmFwaH0gZ3JhcGhcbiAqIEBwYXJhbSB7R3JhcGhOb2RlfSBjdXJyZW50Tm9kZVxuICogQHBhcmFtIHtHcmFwaE5vZGV9IHByZXZpb3VzTm9kZVxuICogQHBhcmFtIHtDYWxsYmFja3N9IGNhbGxiYWNrc1xuICovXG5cblxuZnVuY3Rpb24gZGVwdGhGaXJzdFNlYXJjaFJlY3Vyc2l2ZShncmFwaERhdGEsIGN1cnJlbnROb2RlLCBwcmV2aW91c05vZGUsIGNhbGxiYWNrcykge1xuICBjYWxsYmFja3MuZW50ZXIoe1xuICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgIHByZXZpb3VzOiBwcmV2aW91c05vZGVcbiAgfSk7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2E7XG4gICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKGN1cnJlbnROb2RlLCBlZGdlcywgJ3RhcmdldCcpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgaWYgKGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCh7XG4gICAgICBwcmV2aW91czogcHJldmlvdXNOb2RlLFxuICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICBuZXh0OiBuZXh0Tm9kZVxuICAgIH0pKSB7XG4gICAgICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgbmV4dE5vZGUsIGN1cnJlbnROb2RlLCBjYWxsYmFja3MpO1xuICAgIH1cbiAgfSk7XG4gIGNhbGxiYWNrcy5sZWF2ZSh7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbn1cbi8qKlxuICog5rex5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZGF0YSBHcmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnROb2RlSWQg5byA5aeL6YGN5Y6G55qE6IqC54K555qEIElEXG4gKiBAcGFyYW0gb3JpZ2luYWxDYWxsYmFja3Mg5Zue6LCDXG4gKi9cblxuXG5mdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsIGNhbGxiYWNrcykge1xuICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsICcnLCBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/dfs.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/dijkstra.js": /*!******************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/dijkstra.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _tslib = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar _util2 = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nvar minVertex = function minVertex(D, nodes, marks) {\n // 找出最小的点\n var minDis = Infinity;\n var minNode;\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeId = nodes[i].id;\n\n if (!marks[nodeId] && D[nodeId] <= minDis) {\n minDis = D[nodeId];\n minNode = nodes[i];\n }\n }\n\n return minNode;\n};\n\nvar dijkstra = function dijkstra(graphData, source, directed, weightPropertyName) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeIds = [];\n var marks = {};\n var D = {};\n var prevs = {}; // key: 顶点, value: 顶点的前驱点数组(可能有多条等长的最短路径)\n\n nodes.forEach(function (node, i) {\n var id = node.id;\n nodeIds.push(id);\n D[id] = Infinity;\n if (id === source) D[id] = 0;\n });\n var nodeNum = nodes.length;\n\n var _loop_1 = function _loop_1(i) {\n // Process the vertices\n var minNode = minVertex(D, nodes, marks);\n var minNodeId = minNode.id;\n marks[minNodeId] = true;\n if (D[minNodeId] === Infinity) return \"continue\"; // Unreachable vertices cannot be the intermediate point\n\n var relatedEdges = [];\n if (directed) relatedEdges = (0, _util2.getOutEdgesNodeId)(minNodeId, edges);else relatedEdges = (0, _util2.getEdgesByNodeId)(minNodeId, edges);\n relatedEdges.forEach(function (edge) {\n var edgeTarget = edge.target;\n var edgeSource = edge.source;\n var w = edgeTarget === minNodeId ? edgeSource : edgeTarget;\n var weight = weightPropertyName && edge[weightPropertyName] ? edge[weightPropertyName] : 1;\n\n if (D[w] > D[minNode.id] + weight) {\n D[w] = D[minNode.id] + weight;\n prevs[w] = [minNode.id];\n } else if (D[w] === D[minNode.id] + weight) {\n prevs[w].push(minNode.id);\n }\n });\n };\n\n for (var i = 0; i < nodeNum; i++) {\n _loop_1(i);\n }\n\n prevs[source] = [source]; // 每个节点存可能存在多条最短路径\n\n var paths = {};\n\n for (var target in D) {\n if (D[target] !== Infinity) {\n findAllPaths(source, target, prevs, paths);\n }\n } // 兼容之前单路径\n\n\n var path = {};\n\n for (var target in paths) {\n path[target] = paths[target][0];\n }\n\n return {\n length: D,\n path: path,\n allPath: paths\n };\n};\n\nvar _default = dijkstra;\nexports.default = _default;\n\nfunction findAllPaths(source, target, prevs, foundPaths) {\n if (source === target) {\n return [source];\n }\n\n if (foundPaths[target]) {\n return foundPaths[target];\n }\n\n var paths = [];\n\n for (var _i = 0, _a = prevs[target]; _i < _a.length; _i++) {\n var prev = _a[_i];\n var prevPaths = findAllPaths(source, prev, prevs, foundPaths);\n if (!prevPaths) return;\n\n for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) {\n var prePath = prevPaths_1[_b];\n if ((0, _util.isArray)(prePath)) paths.push((0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], prePath, true), [target], false));else paths.push([prePath, target]);\n }\n }\n\n foundPaths[target] = paths;\n return foundPaths[target];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9kaWprc3RyYS5qcz85Yjk2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsYUFBYSxtQkFBTyxDQUFDLGdEQUFPOztBQUU1QixZQUFZLG1CQUFPLENBQUMsMERBQVk7O0FBRWhDLGFBQWEsbUJBQU8sQ0FBQywwREFBUTs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBLGlGQUFpRjtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLGlCQUFpQixhQUFhO0FBQzlCO0FBQ0E7O0FBRUEsMkJBQTJCOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsc0NBQXNDLGdCQUFnQjtBQUN0RDtBQUNBO0FBQ0E7O0FBRUEsNkNBQTZDLHlCQUF5QjtBQUN0RTtBQUNBLDRJQUE0STtBQUM1STtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL2RpamtzdHJhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfdHNsaWIgPSByZXF1aXJlKFwidHNsaWJcIik7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCJAYW50di91dGlsXCIpO1xuXG52YXIgX3V0aWwyID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxudmFyIG1pblZlcnRleCA9IGZ1bmN0aW9uIG1pblZlcnRleChELCBub2RlcywgbWFya3MpIHtcbiAgLy8g5om+5Ye65pyA5bCP55qE54K5XG4gIHZhciBtaW5EaXMgPSBJbmZpbml0eTtcbiAgdmFyIG1pbk5vZGU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlSWQgPSBub2Rlc1tpXS5pZDtcblxuICAgIGlmICghbWFya3Nbbm9kZUlkXSAmJiBEW25vZGVJZF0gPD0gbWluRGlzKSB7XG4gICAgICBtaW5EaXMgPSBEW25vZGVJZF07XG4gICAgICBtaW5Ob2RlID0gbm9kZXNbaV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pbk5vZGU7XG59O1xuXG52YXIgZGlqa3N0cmEgPSBmdW5jdGlvbiBkaWprc3RyYShncmFwaERhdGEsIHNvdXJjZSwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgbm9kZUlkcyA9IFtdO1xuICB2YXIgbWFya3MgPSB7fTtcbiAgdmFyIEQgPSB7fTtcbiAgdmFyIHByZXZzID0ge307IC8vIGtleTog6aG254K5LCB2YWx1ZTog6aG254K555qE5YmN6amx54K55pWw57uE77yI5Y+v6IO95pyJ5aSa5p2h562J6ZW/55qE5pyA55+t6Lev5b6E77yJXG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBpZCA9IG5vZGUuaWQ7XG4gICAgbm9kZUlkcy5wdXNoKGlkKTtcbiAgICBEW2lkXSA9IEluZmluaXR5O1xuICAgIGlmIChpZCA9PT0gc291cmNlKSBEW2lkXSA9IDA7XG4gIH0pO1xuICB2YXIgbm9kZU51bSA9IG5vZGVzLmxlbmd0aDtcblxuICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgIC8vIFByb2Nlc3MgdGhlIHZlcnRpY2VzXG4gICAgdmFyIG1pbk5vZGUgPSBtaW5WZXJ0ZXgoRCwgbm9kZXMsIG1hcmtzKTtcbiAgICB2YXIgbWluTm9kZUlkID0gbWluTm9kZS5pZDtcbiAgICBtYXJrc1ttaW5Ob2RlSWRdID0gdHJ1ZTtcbiAgICBpZiAoRFttaW5Ob2RlSWRdID09PSBJbmZpbml0eSkgcmV0dXJuIFwiY29udGludWVcIjsgLy8gVW5yZWFjaGFibGUgdmVydGljZXMgY2Fubm90IGJlIHRoZSBpbnRlcm1lZGlhdGUgcG9pbnRcblxuICAgIHZhciByZWxhdGVkRWRnZXMgPSBbXTtcbiAgICBpZiAoZGlyZWN0ZWQpIHJlbGF0ZWRFZGdlcyA9ICgwLCBfdXRpbDIuZ2V0T3V0RWRnZXNOb2RlSWQpKG1pbk5vZGVJZCwgZWRnZXMpO2Vsc2UgcmVsYXRlZEVkZ2VzID0gKDAsIF91dGlsMi5nZXRFZGdlc0J5Tm9kZUlkKShtaW5Ob2RlSWQsIGVkZ2VzKTtcbiAgICByZWxhdGVkRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIGVkZ2VUYXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgIHZhciBlZGdlU291cmNlID0gZWRnZS5zb3VyY2U7XG4gICAgICB2YXIgdyA9IGVkZ2VUYXJnZXQgPT09IG1pbk5vZGVJZCA/IGVkZ2VTb3VyY2UgOiBlZGdlVGFyZ2V0O1xuICAgICAgdmFyIHdlaWdodCA9IHdlaWdodFByb3BlcnR5TmFtZSAmJiBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gPyBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gOiAxO1xuXG4gICAgICBpZiAoRFt3XSA+IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQpIHtcbiAgICAgICAgRFt3XSA9IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQ7XG4gICAgICAgIHByZXZzW3ddID0gW21pbk5vZGUuaWRdO1xuICAgICAgfSBlbHNlIGlmIChEW3ddID09PSBEW21pbk5vZGUuaWRdICsgd2VpZ2h0KSB7XG4gICAgICAgIHByZXZzW3ddLnB1c2gobWluTm9kZS5pZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTnVtOyBpKyspIHtcbiAgICBfbG9vcF8xKGkpO1xuICB9XG5cbiAgcHJldnNbc291cmNlXSA9IFtzb3VyY2VdOyAvLyDmr4/kuKroioLngrnlrZjlj6/og73lrZjlnKjlpJrmnaHmnIDnn63ot6/lvoRcblxuICB2YXIgcGF0aHMgPSB7fTtcblxuICBmb3IgKHZhciB0YXJnZXQgaW4gRCkge1xuICAgIGlmIChEW3RhcmdldF0gIT09IEluZmluaXR5KSB7XG4gICAgICBmaW5kQWxsUGF0aHMoc291cmNlLCB0YXJnZXQsIHByZXZzLCBwYXRocyk7XG4gICAgfVxuICB9IC8vIOWFvOWuueS5i+WJjeWNlei3r+W+hFxuXG5cbiAgdmFyIHBhdGggPSB7fTtcblxuICBmb3IgKHZhciB0YXJnZXQgaW4gcGF0aHMpIHtcbiAgICBwYXRoW3RhcmdldF0gPSBwYXRoc1t0YXJnZXRdWzBdO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsZW5ndGg6IEQsXG4gICAgcGF0aDogcGF0aCxcbiAgICBhbGxQYXRoOiBwYXRoc1xuICB9O1xufTtcblxudmFyIF9kZWZhdWx0ID0gZGlqa3N0cmE7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcblxuZnVuY3Rpb24gZmluZEFsbFBhdGhzKHNvdXJjZSwgdGFyZ2V0LCBwcmV2cywgZm91bmRQYXRocykge1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICByZXR1cm4gW3NvdXJjZV07XG4gIH1cblxuICBpZiAoZm91bmRQYXRoc1t0YXJnZXRdKSB7XG4gICAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbiAgfVxuXG4gIHZhciBwYXRocyA9IFtdO1xuXG4gIGZvciAodmFyIF9pID0gMCwgX2EgPSBwcmV2c1t0YXJnZXRdOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBwcmV2ID0gX2FbX2ldO1xuICAgIHZhciBwcmV2UGF0aHMgPSBmaW5kQWxsUGF0aHMoc291cmNlLCBwcmV2LCBwcmV2cywgZm91bmRQYXRocyk7XG4gICAgaWYgKCFwcmV2UGF0aHMpIHJldHVybjtcblxuICAgIGZvciAodmFyIF9iID0gMCwgcHJldlBhdGhzXzEgPSBwcmV2UGF0aHM7IF9iIDwgcHJldlBhdGhzXzEubGVuZ3RoOyBfYisrKSB7XG4gICAgICB2YXIgcHJlUGF0aCA9IHByZXZQYXRoc18xW19iXTtcbiAgICAgIGlmICgoMCwgX3V0aWwuaXNBcnJheSkocHJlUGF0aCkpIHBhdGhzLnB1c2goKDAsIF90c2xpYi5fX3NwcmVhZEFycmF5KSgoMCwgX3RzbGliLl9fc3ByZWFkQXJyYXkpKFtdLCBwcmVQYXRoLCB0cnVlKSwgW3RhcmdldF0sIGZhbHNlKSk7ZWxzZSBwYXRocy5wdXNoKFtwcmVQYXRoLCB0YXJnZXRdKTtcbiAgICB9XG4gIH1cblxuICBmb3VuZFBhdGhzW3RhcmdldF0gPSBwYXRocztcbiAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/dijkstra.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/find-path.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/find-path.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findShortestPath = exports.findAllPath = void 0;\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ./dijkstra */ \"./node_modules/@antv/algorithm/lib/dijkstra.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar findShortestPath = function findShortestPath(graphData, start, end, directed, weightPropertyName) {\n var _a = (0, _dijkstra.default)(graphData, start, directed, weightPropertyName),\n length = _a.length,\n path = _a.path,\n allPath = _a.allPath;\n\n return {\n length: length[end],\n path: path[end],\n allPath: allPath[end]\n };\n};\n\nexports.findShortestPath = findShortestPath;\n\nvar findAllPath = function findAllPath(graphData, start, end, directed) {\n var _a;\n\n if (start === end) return [[start]];\n var _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var visited = [start];\n var isVisited = (_a = {}, _a[start] = true, _a);\n var stack = []; // 辅助栈,用于存储访问过的节点的邻居节点\n\n var allPath = [];\n var neighbors = directed ? (0, _util.getNeighbors)(start, edges, 'target') : (0, _util.getNeighbors)(start, edges);\n stack.push(neighbors);\n\n while (visited.length > 0 && stack.length > 0) {\n var children = stack[stack.length - 1];\n\n if (children.length) {\n var child = children.shift();\n\n if (child) {\n visited.push(child);\n isVisited[child] = true;\n neighbors = directed ? (0, _util.getNeighbors)(child, edges, 'target') : (0, _util.getNeighbors)(child, edges);\n stack.push(neighbors.filter(function (neighbor) {\n return !isVisited[neighbor];\n }));\n }\n } else {\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n continue;\n }\n\n if (visited[visited.length - 1] === end) {\n var path = visited.map(function (node) {\n return node;\n });\n allPath.push(path);\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n }\n }\n\n return allPath;\n};\n\nexports.findAllPath = findAllPath;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9maW5kLXBhdGguanM/OThlMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHVDQUF1QyxtQkFBTyxDQUFDLGtFQUFZOztBQUUzRCxZQUFZLG1CQUFPLENBQUMsMERBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9maW5kLXBhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZmluZFNob3J0ZXN0UGF0aCA9IGV4cG9ydHMuZmluZEFsbFBhdGggPSB2b2lkIDA7XG5cbnZhciBfZGlqa3N0cmEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGZpbmRTaG9ydGVzdFBhdGggPSBmdW5jdGlvbiBmaW5kU2hvcnRlc3RQYXRoKGdyYXBoRGF0YSwgc3RhcnQsIGVuZCwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSkge1xuICB2YXIgX2EgPSAoMCwgX2RpamtzdHJhLmRlZmF1bHQpKGdyYXBoRGF0YSwgc3RhcnQsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpLFxuICAgICAgbGVuZ3RoID0gX2EubGVuZ3RoLFxuICAgICAgcGF0aCA9IF9hLnBhdGgsXG4gICAgICBhbGxQYXRoID0gX2EuYWxsUGF0aDtcblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogbGVuZ3RoW2VuZF0sXG4gICAgcGF0aDogcGF0aFtlbmRdLFxuICAgIGFsbFBhdGg6IGFsbFBhdGhbZW5kXVxuICB9O1xufTtcblxuZXhwb3J0cy5maW5kU2hvcnRlc3RQYXRoID0gZmluZFNob3J0ZXN0UGF0aDtcblxudmFyIGZpbmRBbGxQYXRoID0gZnVuY3Rpb24gZmluZEFsbFBhdGgoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCkge1xuICB2YXIgX2E7XG5cbiAgaWYgKHN0YXJ0ID09PSBlbmQpIHJldHVybiBbW3N0YXJ0XV07XG4gIHZhciBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciB2aXNpdGVkID0gW3N0YXJ0XTtcbiAgdmFyIGlzVmlzaXRlZCA9IChfYSA9IHt9LCBfYVtzdGFydF0gPSB0cnVlLCBfYSk7XG4gIHZhciBzdGFjayA9IFtdOyAvLyDovoXliqnmoIjvvIznlKjkuo7lrZjlgqjorr/pl67ov4fnmoToioLngrnnmoTpgrvlsYXoioLngrlcblxuICB2YXIgYWxsUGF0aCA9IFtdO1xuICB2YXIgbmVpZ2hib3JzID0gZGlyZWN0ZWQgPyAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShzdGFydCwgZWRnZXMsICd0YXJnZXQnKSA6ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKHN0YXJ0LCBlZGdlcyk7XG4gIHN0YWNrLnB1c2gobmVpZ2hib3JzKTtcblxuICB3aGlsZSAodmlzaXRlZC5sZW5ndGggPiAwICYmIHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuLnNoaWZ0KCk7XG5cbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICB2aXNpdGVkLnB1c2goY2hpbGQpO1xuICAgICAgICBpc1Zpc2l0ZWRbY2hpbGRdID0gdHJ1ZTtcbiAgICAgICAgbmVpZ2hib3JzID0gZGlyZWN0ZWQgPyAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShjaGlsZCwgZWRnZXMsICd0YXJnZXQnKSA6ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKGNoaWxkLCBlZGdlcyk7XG4gICAgICAgIHN0YWNrLnB1c2gobmVpZ2hib3JzLmZpbHRlcihmdW5jdGlvbiAobmVpZ2hib3IpIHtcbiAgICAgICAgICByZXR1cm4gIWlzVmlzaXRlZFtuZWlnaGJvcl07XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2aXNpdGVkW3Zpc2l0ZWQubGVuZ3RoIC0gMV0gPT09IGVuZCkge1xuICAgICAgdmFyIHBhdGggPSB2aXNpdGVkLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH0pO1xuICAgICAgYWxsUGF0aC5wdXNoKHBhdGgpO1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsUGF0aDtcbn07XG5cbmV4cG9ydHMuZmluZEFsbFBhdGggPSBmaW5kQWxsUGF0aDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/find-path.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/floydWarshall.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/floydWarshall.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/lib/adjacent-matrix.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar floydWarshall = function floydWarshall(graphData, directed) {\n var adjacentMatrix = (0, _adjacentMatrix.default)(graphData, directed);\n var dist = [];\n var size = adjacentMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjacentMatrix[i][j] === 0 || !adjacentMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjacentMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n\nvar _default = floydWarshall;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9mbG95ZFdhcnNoYWxsLmpzPzAyNTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSw2Q0FBNkMsbUJBQU8sQ0FBQyxnRkFBbUI7O0FBRXhFLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsVUFBVTtBQUMzQjs7QUFFQSxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdILGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9mbG95ZFdhcnNoYWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfYWRqYWNlbnRNYXRyaXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2FkamFjZW50LW1hdHJpeFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBmbG95ZFdhcnNoYWxsID0gZnVuY3Rpb24gZmxveWRXYXJzaGFsbChncmFwaERhdGEsIGRpcmVjdGVkKSB7XG4gIHZhciBhZGphY2VudE1hdHJpeCA9ICgwLCBfYWRqYWNlbnRNYXRyaXguZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7XG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqYWNlbnRNYXRyaXgubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAxKSB7XG4gICAgZGlzdFtpXSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIGRpc3RbaV1bal0gPSAwO1xuICAgICAgfSBlbHNlIGlmIChhZGphY2VudE1hdHJpeFtpXVtqXSA9PT0gMCB8fCAhYWRqYWNlbnRNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkamFjZW50TWF0cml4W2ldW2pdO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBmbG95ZFxuXG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBzaXplOyBrICs9IDEpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgICAgaWYgKGRpc3RbaV1bal0gPiBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXSkge1xuICAgICAgICAgIGRpc3RbaV1bal0gPSBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXN0O1xufTtcblxudmFyIF9kZWZhdWx0ID0gZmxveWRXYXJzaGFsbDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/floydWarshall.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/gSpan/gSpan.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/gSpan/gSpan.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar _struct = __webpack_require__(/*! ./struct */ \"./node_modules/@antv/algorithm/lib/gSpan/struct.js\");\n\nvar DFSedge =\n/** @class */\nfunction () {\n function DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.fromNode = fromNode;\n this.toNode = toNode;\n this.nodeEdgeNodeLabel = {\n nodeLabel1: fromNodeLabel || _struct.VACANT_NODE_LABEL,\n edgeLabel: edgeLabel || _struct.VACANT_EDGE_LABEL,\n nodeLabel2: toNodeLabel || _struct.VACANT_NODE_LABEL\n };\n }\n\n DFSedge.prototype.equalTo = function (other) {\n return this.fromNode === other.formNode && this.toNode === other.toNode && this.nodeEdgeNodeLabel === other.nodeEdgeNodeLabel;\n };\n\n DFSedge.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n\n return DFSedge;\n}(); // DFScode 是 DESedge 的数组\n\n\nvar DFScode =\n/** @class */\nfunction () {\n function DFScode() {\n this.rmpath = [];\n this.dfsEdgeList = [];\n }\n\n DFScode.prototype.equalTo = function (other) {\n var aLength = this.dfsEdgeList.length;\n var bLength = other.length;\n if (aLength !== bLength) return false;\n\n for (var i = 0; i < aLength; i++) {\n if (this.dfsEdgeList[i] !== other[i]) return false;\n }\n\n return true;\n };\n\n DFScode.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n /** 增加一条 edge 到 DFScode */\n\n\n DFScode.prototype.pushBack = function (fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.dfsEdgeList.push(new DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel));\n return this.dfsEdgeList;\n };\n /** 根据 dfs 构建图 */\n\n\n DFScode.prototype.toGraph = function (graphId, directed) {\n if (graphId === void 0) {\n graphId = _struct.VACANT_GRAPH_ID;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n var graph = new _struct.Graph(graphId, true, directed);\n this.dfsEdgeList.forEach(function (dfsEdge) {\n var fromNodeId = dfsEdge.fromNode;\n var toNodeId = dfsEdge.toNode;\n var _a = dfsEdge.nodeEdgeNodeLabel,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n if (nodeLabel1 !== _struct.VACANT_NODE_LABEL) graph.addNode(fromNodeId, nodeLabel1);\n if (nodeLabel2 !== _struct.VACANT_NODE_LABEL) graph.addNode(toNodeId, nodeLabel2);\n if (nodeLabel1 !== _struct.VACANT_NODE_LABEL && nodeLabel2 !== nodeLabel1) graph.addEdge(undefined, fromNodeId, toNodeId, edgeLabel);\n });\n return graph;\n }; // 建立 rightmost path\n\n\n DFScode.prototype.buildRmpath = function () {\n this.rmpath = [];\n var oldFrom = undefined;\n var selfLength = this.dfsEdgeList.length;\n\n for (var i = selfLength - 1; i >= 0; i--) {\n var dfsEdge = this.dfsEdgeList[i];\n var fromNodeIdx = dfsEdge.fromNode;\n var toNodeIdx = dfsEdge.toNode;\n\n if (fromNodeIdx < toNodeIdx && (oldFrom === undefined || toNodeIdx === oldFrom)) {\n this.rmpath.push(i);\n oldFrom = fromNodeIdx;\n }\n }\n\n return this.rmpath;\n };\n\n DFScode.prototype.getNodeNum = function () {\n var nodeMap = {};\n this.dfsEdgeList.forEach(function (dfsEdge) {\n if (!nodeMap[dfsEdge.fromNode]) nodeMap[dfsEdge.fromNode] = true;\n if (!nodeMap[dfsEdge.toNode]) nodeMap[dfsEdge.toNode] = true;\n });\n return Object.keys(nodeMap).length;\n };\n\n return DFScode;\n}();\n\nvar History =\n/** @class */\nfunction () {\n function History(pdfs) {\n this.his = {};\n this.nodesUsed = {};\n this.edgesUsed = {};\n this.edges = [];\n if (!pdfs) return;\n\n while (pdfs) {\n var e = pdfs.edge;\n this.edges.push(e);\n this.nodesUsed[e.from] = 1;\n this.nodesUsed[e.to] = 1;\n this.edgesUsed[e.id] = 1;\n pdfs = pdfs.preNode;\n } // 倒序\n\n\n this.edges = this.edges.reverse();\n }\n\n History.prototype.hasNode = function (node) {\n return this.nodesUsed[node.id] === 1;\n };\n\n History.prototype.hasEdge = function (edge) {\n return this.edgesUsed[edge.id] === 1;\n };\n\n return History;\n}();\n\nvar GSpan =\n/** @class */\nfunction () {\n function GSpan(_a) {\n var graphs = _a.graphs,\n _b = _a.minSupport,\n minSupport = _b === void 0 ? 2 : _b,\n _c = _a.minNodeNum,\n minNodeNum = _c === void 0 ? 1 : _c,\n _d = _a.maxNodeNum,\n maxNodeNum = _d === void 0 ? 4 : _d,\n _e = _a.top,\n top = _e === void 0 ? 10 : _e,\n _f = _a.directed,\n directed = _f === void 0 ? false : _f,\n _g = _a.verbose,\n verbose = _g === void 0 ? false : _g; // -------- 第零步,初始化-------\n\n this.graphs = graphs;\n this.dfsCode = new DFScode();\n this.support = 0;\n this.frequentSize1Subgraphs = [];\n this.frequentSubgraphs = [];\n this.minSupport = minSupport;\n this.top = top;\n this.directed = directed;\n this.counter = 0; // TODO? timestamp = {}\n\n this.maxNodeNum = maxNodeNum;\n this.minNodeNum = minNodeNum;\n this.verbose = verbose;\n if (this.maxNodeNum < this.minNodeNum) this.maxNodeNum = this.minNodeNum;\n this.reportDF = []; // matrix\n } // Line 352\n\n\n GSpan.prototype.findForwardRootEdges = function (graph, fromNode) {\n var _this = this;\n\n var result = [];\n var nodeMap = graph.nodeMap;\n fromNode.edges.forEach(function (edge) {\n if (_this.directed || fromNode.label <= nodeMap[edge.to].label) result.push(edge);\n });\n return result;\n };\n\n GSpan.prototype.findBackwardEdge = function (graph, edge1, edge2, history) {\n if (!this.directed && edge1 === edge2) return null;\n var nodeMap = graph.nodeMap;\n var edge2To = nodeMap[edge2.to];\n var edge2ToEdges = edge2To.edges;\n var edgeLength = edge2ToEdges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edge2ToEdges[i];\n if (history.hasEdge(edge) || edge.to !== edge1.from) continue;\n\n if (!this.directed) {\n if (edge1.label < edge.label || edge1.label === edge.label && nodeMap[edge1.to].label <= nodeMap[edge2.to].label) {\n return edge;\n }\n } else {\n if (nodeMap[edge1.from].label < nodeMap[edge2.to].label || nodeMap[edge1.from].label === nodeMap[edge2.to].label && edge1.label <= edge.label) {\n return edge;\n }\n }\n }\n\n return null;\n };\n\n GSpan.prototype.findForwardPureEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var rightmostEdgeToId = rightmostEdge.to;\n var edges = graph.nodeMap[rightmostEdgeToId].edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var toNode = graph.nodeMap[edge.to];\n\n if (minNodeLabel <= toNode.label && !history.hasNode(toNode)) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.findForwardRmpathEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var nodeMap = graph.nodeMap;\n var toNodeLabel = nodeMap[rightmostEdge.to].label;\n var fromNode = nodeMap[rightmostEdge.from];\n var edges = fromNode.edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var newToNodeLabel = nodeMap[edge.to].label;\n\n if (rightmostEdge.to === edge.to || minNodeLabel > newToNodeLabel || history.hasNode(nodeMap[edge.to])) {\n continue;\n }\n\n if (rightmostEdge.label < edge.label || rightmostEdge.label === edge.label && toNodeLabel <= newToNodeLabel) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.getSupport = function (projected) {\n var graphMap = {};\n projected.forEach(function (pro) {\n if (!graphMap[pro.graphId]) graphMap[pro.graphId] = true;\n });\n return Object.keys(graphMap).length;\n };\n\n GSpan.prototype.findMinLabel = function (obj) {\n var minLabel = undefined;\n Object.keys(obj).forEach(function (nodeEdgeNodeLabel) {\n var _a = obj[nodeEdgeNodeLabel],\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n if (!minLabel) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n return;\n }\n\n if (nodeLabel1 < minLabel.nodeLabel1 || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel < minLabel.edgeLabel || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel === minLabel.edgeLabel && nodeLabel2 < minLabel.nodeLabel2) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n }\n });\n return minLabel;\n };\n\n GSpan.prototype.isMin = function () {\n var _this = this;\n\n var dfsCode = this.dfsCode;\n if (this.verbose) console.log(\"isMin checking\", dfsCode);\n if (dfsCode.dfsEdgeList.length === 1) return true;\n var directed = this.directed;\n var graph = dfsCode.toGraph(_struct.VACANT_GRAPH_ID, directed);\n var nodeMap = graph.nodeMap;\n var dfsCodeMin = new DFScode();\n var root = {};\n graph.nodes.forEach(function (node) {\n var forwardEdges = _this.findForwardRootEdges(graph, node);\n\n forwardEdges.forEach(function (edge) {\n var otherNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(otherNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: otherNode.label\n };\n var pdfs = {\n graphId: graph.id,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n }); // 比较 root 中每一项的 nodeEdgeNodeLabel 大小,按照 nodeLabel1、edgeLabe、nodeLabel2 的顺序比较\n\n var minLabel = this.findMinLabel(root); // line 419\n\n if (!minLabel) return;\n dfsCodeMin.dfsEdgeList.push(new DFSedge(0, 1, minLabel.nodeLabel1, minLabel.edgeLabel, minLabel.nodeLabel2)); // line 423\n\n var projectIsMin = function projectIsMin(projected) {\n // right most path\n var rmpath = dfsCodeMin.buildRmpath();\n var minNodeLabel = dfsCodeMin.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var maxToC = dfsCodeMin.dfsEdgeList[rmpath[0]].toNode; // node id\n\n var backwardRoot = {};\n var flag = false,\n newTo = 0;\n var end = directed ? -1 : 0; // 遍历到 1 还是到 0\n\n var _loop_1 = function _loop_1(i) {\n if (flag) return \"break\"; // line 435\n\n projected.forEach(function (p) {\n var history = new History(p);\n\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n // Line 441\n if (!backwardRoot[backwardEdge.label]) {\n backwardRoot[backwardEdge.label] = {\n projected: [],\n edgeLabel: backwardEdge.label\n };\n }\n\n backwardRoot[backwardEdge.label].projected.push({\n graphId: graph.id,\n edge: backwardRoot,\n preNode: p\n });\n newTo = dfsCodeMin.dfsEdgeList[rmpath[i]].fromNode;\n flag = true;\n }\n });\n };\n\n for (var i = rmpath.length - 1; i > end; i--) {\n var state_1 = _loop_1(i);\n\n if (state_1 === \"break\") break;\n }\n\n if (flag) {\n var minBackwardEdgeLabel = _this.findMinLabel(backwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(maxToC, newTo, _struct.VACANT_NODE_LABEL, minBackwardEdgeLabel.edgeLabel, _struct.VACANT_NODE_LABEL));\n var idx_1 = dfsCodeMin.dfsEdgeList.length - 1;\n if (_this.dfsCode.dfsEdgeList[idx_1] !== dfsCodeMin.dfsEdgeList[idx_1]) return false;\n return projectIsMin(backwardRoot[minBackwardEdgeLabel.edgeLabel].projected);\n }\n\n var forwardRoot = {};\n flag = false;\n var newFrom = 0;\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n if (forwardPureEdges.length > 0) {\n flag = true;\n newFrom = maxToC;\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n var pathLength = rmpath.length;\n\n var _loop_2 = function _loop_2(i) {\n if (flag) return \"break\";\n var value = rmpath[i];\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[value], minNodeLabel, history);\n\n if (forwardRmpathEdges.length > 0) {\n flag = true;\n newFrom = dfsCodeMin.dfsEdgeList[value].fromNode;\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n };\n\n for (var i = 0; i < pathLength; i++) {\n var state_2 = _loop_2(i);\n\n if (state_2 === \"break\") break;\n }\n\n if (!flag) return true;\n\n var forwardMinEdgeNodeLabel = _this.findMinLabel(forwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(newFrom, maxToC + 1, _struct.VACANT_NODE_LABEL, forwardMinEdgeNodeLabel.edgeLabel, forwardMinEdgeNodeLabel.nodeLabel2));\n var idx = dfsCodeMin.dfsEdgeList.length - 1;\n if (dfsCode.dfsEdgeList[idx] !== dfsCodeMin.dfsEdgeList[idx]) return false;\n return projectIsMin(forwardRoot[\"\".concat(forwardMinEdgeNodeLabel.edgeLabel, \"-\").concat(forwardMinEdgeNodeLabel.nodeLabel2)].projected);\n };\n\n var key = \"\".concat(minLabel.nodeLabel1, \"-\").concat(minLabel.edgeLabel, \"-\").concat(minLabel.nodeLabel2);\n return projectIsMin(root[key].projected);\n };\n\n GSpan.prototype.report = function () {\n if (this.dfsCode.getNodeNum() < this.minNodeNum) return;\n this.counter++;\n var graph = this.dfsCode.toGraph(this.counter, this.directed);\n this.frequentSubgraphs.push((0, _util.clone)(graph));\n };\n\n GSpan.prototype.subGraphMining = function (projected) {\n var _this = this;\n\n var support = this.getSupport(projected);\n if (support < this.minSupport) return;\n if (!this.isMin()) return;\n this.report();\n var nodeNum = this.dfsCode.getNodeNum();\n var rmpath = this.dfsCode.buildRmpath();\n var maxToC = this.dfsCode.dfsEdgeList[rmpath[0]].toNode;\n var minNodeLabel = this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var forwardRoot = {};\n var backwardRoot = {};\n projected.forEach(function (p) {\n var graph = _this.graphs[p.graphId];\n var nodeMap = graph.nodeMap;\n var history = new History(p); // backward Line 526\n\n for (var i = rmpath.length - 1; i >= 0; i--) {\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(backwardEdge.label);\n if (!backwardRoot[key]) backwardRoot[key] = {\n projected: [],\n toNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: backwardEdge.label\n };\n backwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: backwardEdge,\n preNode: p\n });\n }\n } // pure forward\n\n\n if (nodeNum >= _this.maxNodeNum) return;\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(maxToC, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: maxToC,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n\n var _loop_3 = function _loop_3(i) {\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[rmpath[i]], minNodeLabel, history);\n\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n }; // rmpath forward\n\n\n for (var i = 0; i < rmpath.length; i++) {\n _loop_3(i);\n }\n }); // backward\n\n Object.keys(backwardRoot).forEach(function (key) {\n var _a = backwardRoot[key],\n toNodeId = _a.toNodeId,\n edgeLabel = _a.edgeLabel;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(maxToC, toNodeId, \"-1\", edgeLabel, \"-1\"));\n\n _this.subGraphMining(backwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n }); // forward\n\n Object.keys(forwardRoot).forEach(function (key) {\n var _a = forwardRoot[key],\n fromNodeId = _a.fromNodeId,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(fromNodeId, maxToC + 1, _struct.VACANT_NODE_LABEL, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(forwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n GSpan.prototype.generate1EdgeFrequentSubGraphs = function () {\n var graphs = this.graphs;\n var directed = this.directed;\n var minSupport = this.minSupport;\n var frequentSize1Subgraphs = this.frequentSize1Subgraphs;\n var nodeLabelCounter = {},\n nodeEdgeNodeCounter = {}; // 保存各个图和各自节点的关系 map,key 格式为 graphKey-node类型\n\n var nodeLableCounted = {}; // 保存各个图和各自边的关系 map,key 格式为 graphKey-fromNode类型-edge类型-toNode类型\n\n var nodeEdgeNodeLabelCounted = {};\n Object.keys(graphs).forEach(function (key) {\n // Line 271\n var graph = graphs[key];\n var nodeMap = graph.nodeMap; // 遍历节点,记录对应图 与 每个节点的 label 到 nodeLableCounted\n\n graph.nodes.forEach(function (node, i) {\n // Line 272\n var nodeLabel = node.label;\n var graphNodeKey = \"\".concat(key, \"-\").concat(nodeLabel);\n\n if (!nodeLableCounted[graphNodeKey]) {\n var counter = nodeLabelCounter[nodeLabel] || 0;\n counter++;\n nodeLabelCounter[nodeLabel] = counter;\n }\n\n nodeLableCounted[graphNodeKey] = {\n graphKey: key,\n label: nodeLabel\n }; // 遍历该节点的所有边,记录各个图和各自边的关系到 nodeEdgeNodeLabelCounted. Line 276\n\n node.edges.forEach(function (edge) {\n var nodeLabel1 = nodeLabel;\n var nodeLabel2 = nodeMap[edge.to].label;\n\n if (!directed && nodeLabel1 > nodeLabel2) {\n var tmp = nodeLabel2;\n nodeLabel2 = nodeLabel1;\n nodeLabel1 = tmp;\n }\n\n var edgeLabel = edge.label;\n var graphNodeEdgeNodeKey = \"\".concat(key, \"-\").concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n var nodeEdgeNodeKey = \"\".concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n\n if (!nodeEdgeNodeCounter[nodeEdgeNodeKey]) {\n var counter = nodeEdgeNodeCounter[nodeEdgeNodeKey] || 0;\n counter++;\n nodeEdgeNodeCounter[nodeEdgeNodeKey] = counter; // Line281\n }\n\n nodeEdgeNodeLabelCounted[graphNodeEdgeNodeKey] = {\n graphId: key,\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n });\n });\n }); // 计算频繁的节点\n\n Object.keys(nodeLabelCounter).forEach(function (label) {\n var count = nodeLabelCounter[label];\n if (count < minSupport) return;\n var g = {\n nodes: [],\n edges: []\n };\n g.nodes.push({\n id: \"0\",\n label: label\n });\n frequentSize1Subgraphs.push(g); // if (minNodeNum <= 1) reportSize1 TODO\n });\n return frequentSize1Subgraphs;\n };\n\n GSpan.prototype.run = function () {\n var _this = this; // -------- 第一步, _generate_1edge_frequent_subgraphs:频繁的单个节点-------\n\n\n this.frequentSize1Subgraphs = this.generate1EdgeFrequentSubGraphs();\n if (this.maxNodeNum < 2) return;\n var graphs = this.graphs;\n var directed = this.directed; // PDFS 数组的 map Line 304\n\n var root = {};\n Object.keys(graphs).forEach(function (graphId) {\n var graph = graphs[graphId];\n var nodeMap = graph.nodeMap; // Line 306\n\n graph.nodes.forEach(function (node) {\n var forwardRootEdges = _this.findForwardRootEdges(graph, node); // Line 308\n\n\n forwardRootEdges.forEach(function (edge) {\n var toNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(toNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: toNode.label\n };\n var pdfs = {\n graphId: graphId,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n });\n }); // Line 313\n\n Object.keys(root).forEach(function (nodeEdgeNodeLabel) {\n var _a = root[nodeEdgeNodeLabel],\n projected = _a.projected,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(0, 1, nodeLabel1, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n return GSpan;\n}();\n\nvar formatGraphs = function formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp) {\n var result = {};\n Object.keys(graphs).forEach(function (key, i) {\n var graph = graphs[key];\n var fGraph = new _struct.Graph(i, true, directed);\n var nodeIdxMap = {};\n graph.nodes.forEach(function (node, j) {\n fGraph.addNode(j, node[nodeLabelProp]);\n nodeIdxMap[node.id] = j;\n });\n graph.edges.forEach(function (edge, k) {\n var sourceIdx = nodeIdxMap[edge.source];\n var targetIdx = nodeIdxMap[edge.target];\n fGraph.addEdge(-1, sourceIdx, targetIdx, edge[edgeLabelProp]);\n });\n if (fGraph && fGraph.getNodeNum()) result[fGraph.id] = fGraph;\n });\n return result;\n};\n\nvar toGraphDatas = function toGraphDatas(graphs, nodeLabelProp, edgeLabelProp) {\n var result = [];\n graphs.forEach(function (graph) {\n var graphData = {\n nodes: [],\n edges: []\n };\n graph.nodes.forEach(function (node) {\n var _a;\n\n graphData.nodes.push((_a = {\n id: \"\".concat(node.id)\n }, _a[nodeLabelProp] = node.label, _a));\n });\n graph.edges.forEach(function (edge) {\n var _a;\n\n graphData.edges.push((_a = {\n source: \"\".concat(edge.from),\n target: \"\".concat(edge.to)\n }, _a[edgeLabelProp] = edge.label, _a));\n });\n result.push(graphData);\n });\n return result;\n};\n\nvar DEFAULT_LABEL_NAME = \"cluster\";\n/**\n * gSpan 频繁子图计算算法(frequent graph mining)\n * @param params 参数\n */\n\nvar gSpan = function gSpan(params) {\n // ------- 将图数据 GraphData 的 map 转换为格式 -------\n var graphs = params.graphs,\n _a = params.directed,\n directed = _a === void 0 ? false : _a,\n _b = params.nodeLabelProp,\n nodeLabelProp = _b === void 0 ? DEFAULT_LABEL_NAME : _b,\n _c = params.edgeLabelProp,\n edgeLabelProp = _c === void 0 ? DEFAULT_LABEL_NAME : _c;\n var formattedGraphs = formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp);\n var minSupport = params.minSupport,\n maxNodeNum = params.maxNodeNum,\n minNodeNum = params.minNodeNum,\n verbose = params.verbose,\n top = params.top; // ------- 初始化与执行算法 -------\n\n var algoParams = {\n graphs: formattedGraphs,\n minSupport: minSupport,\n maxNodeNum: maxNodeNum,\n minNodeNum: minNodeNum,\n top: top,\n verbose: verbose,\n directed: directed\n };\n var calculator = new GSpan(algoParams);\n calculator.run();\n var result = toGraphDatas(calculator.frequentSubgraphs, nodeLabelProp, edgeLabelProp);\n return result;\n};\n\nvar _default = gSpan;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9nU3Bhbi5qcz9hZGE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsWUFBWSxtQkFBTyxDQUFDLDBEQUFZOztBQUVoQyxjQUFjLG1CQUFPLENBQUMsb0VBQVU7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxHQUFHOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsYUFBYTtBQUNoQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDLFFBQVE7QUFDeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVAsMkNBQTJDOztBQUUzQztBQUNBLGlIQUFpSDs7QUFFakg7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUEscUNBQXFDLFNBQVM7QUFDOUM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFCQUFxQixnQkFBZ0I7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQzs7QUFFbkMscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87OztBQUdQOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxRQUFROzs7QUFHUixxQkFBcUIsbUJBQW1CO0FBQ3hDO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLGlDQUFpQzs7QUFFakMsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVOztBQUVWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQ7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AscUNBQXFDO0FBQ3JDLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EscUJBQXFCOzs7QUFHckI7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0EsdUVBQXVFOzs7QUFHdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9nU3Bhbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiQGFudHYvdXRpbFwiKTtcblxudmFyIF9zdHJ1Y3QgPSByZXF1aXJlKFwiLi9zdHJ1Y3RcIik7XG5cbnZhciBERlNlZGdlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gREZTZWRnZShmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSB7XG4gICAgdGhpcy5mcm9tTm9kZSA9IGZyb21Ob2RlO1xuICAgIHRoaXMudG9Ob2RlID0gdG9Ob2RlO1xuICAgIHRoaXMubm9kZUVkZ2VOb2RlTGFiZWwgPSB7XG4gICAgICBub2RlTGFiZWwxOiBmcm9tTm9kZUxhYmVsIHx8IF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwsXG4gICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCB8fCBfc3RydWN0LlZBQ0FOVF9FREdFX0xBQkVMLFxuICAgICAgbm9kZUxhYmVsMjogdG9Ob2RlTGFiZWwgfHwgX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTFxuICAgIH07XG4gIH1cblxuICBERlNlZGdlLnByb3RvdHlwZS5lcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU5vZGUgPT09IG90aGVyLmZvcm1Ob2RlICYmIHRoaXMudG9Ob2RlID09PSBvdGhlci50b05vZGUgJiYgdGhpcy5ub2RlRWRnZU5vZGVMYWJlbCA9PT0gb3RoZXIubm9kZUVkZ2VOb2RlTGFiZWw7XG4gIH07XG5cbiAgREZTZWRnZS5wcm90b3R5cGUubm90RXF1YWxUbyA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgIHJldHVybiAhdGhpcy5lcXVhbFRvKG90aGVyKTtcbiAgfTtcblxuICByZXR1cm4gREZTZWRnZTtcbn0oKTsgLy8gREZTY29kZSDmmK8gREVTZWRnZSDnmoTmlbDnu4RcblxuXG52YXIgREZTY29kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIERGU2NvZGUoKSB7XG4gICAgdGhpcy5ybXBhdGggPSBbXTtcbiAgICB0aGlzLmRmc0VkZ2VMaXN0ID0gW107XG4gIH1cblxuICBERlNjb2RlLnByb3RvdHlwZS5lcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgdmFyIGFMZW5ndGggPSB0aGlzLmRmc0VkZ2VMaXN0Lmxlbmd0aDtcbiAgICB2YXIgYkxlbmd0aCA9IG90aGVyLmxlbmd0aDtcbiAgICBpZiAoYUxlbmd0aCAhPT0gYkxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRmc0VkZ2VMaXN0W2ldICE9PSBvdGhlcltpXSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIERGU2NvZGUucHJvdG90eXBlLm5vdEVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICByZXR1cm4gIXRoaXMuZXF1YWxUbyhvdGhlcik7XG4gIH07XG4gIC8qKiDlop7liqDkuIDmnaEgZWRnZSDliLAgREZTY29kZSAqL1xuXG5cbiAgREZTY29kZS5wcm90b3R5cGUucHVzaEJhY2sgPSBmdW5jdGlvbiAoZnJvbU5vZGUsIHRvTm9kZSwgZnJvbU5vZGVMYWJlbCwgZWRnZUxhYmVsLCB0b05vZGVMYWJlbCkge1xuICAgIHRoaXMuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSk7XG4gICAgcmV0dXJuIHRoaXMuZGZzRWRnZUxpc3Q7XG4gIH07XG4gIC8qKiDmoLnmja4gZGZzIOaehOW7uuWbviAqL1xuXG5cbiAgREZTY29kZS5wcm90b3R5cGUudG9HcmFwaCA9IGZ1bmN0aW9uIChncmFwaElkLCBkaXJlY3RlZCkge1xuICAgIGlmIChncmFwaElkID09PSB2b2lkIDApIHtcbiAgICAgIGdyYXBoSWQgPSBfc3RydWN0LlZBQ0FOVF9HUkFQSF9JRDtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSBuZXcgX3N0cnVjdC5HcmFwaChncmFwaElkLCB0cnVlLCBkaXJlY3RlZCk7XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkZnNFZGdlKSB7XG4gICAgICB2YXIgZnJvbU5vZGVJZCA9IGRmc0VkZ2UuZnJvbU5vZGU7XG4gICAgICB2YXIgdG9Ob2RlSWQgPSBkZnNFZGdlLnRvTm9kZTtcbiAgICAgIHZhciBfYSA9IGRmc0VkZ2Uubm9kZUVkZ2VOb2RlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMSA9IF9hLm5vZGVMYWJlbDEsXG4gICAgICAgICAgZWRnZUxhYmVsID0gX2EuZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDIgPSBfYS5ub2RlTGFiZWwyO1xuICAgICAgaWYgKG5vZGVMYWJlbDEgIT09IF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwpIGdyYXBoLmFkZE5vZGUoZnJvbU5vZGVJZCwgbm9kZUxhYmVsMSk7XG4gICAgICBpZiAobm9kZUxhYmVsMiAhPT0gX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZSh0b05vZGVJZCwgbm9kZUxhYmVsMik7XG4gICAgICBpZiAobm9kZUxhYmVsMSAhPT0gX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCAmJiBub2RlTGFiZWwyICE9PSBub2RlTGFiZWwxKSBncmFwaC5hZGRFZGdlKHVuZGVmaW5lZCwgZnJvbU5vZGVJZCwgdG9Ob2RlSWQsIGVkZ2VMYWJlbCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyYXBoO1xuICB9OyAvLyDlu7rnq4sgcmlnaHRtb3N0IHBhdGhcblxuXG4gIERGU2NvZGUucHJvdG90eXBlLmJ1aWxkUm1wYXRoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucm1wYXRoID0gW107XG4gICAgdmFyIG9sZEZyb20gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHNlbGZMZW5ndGggPSB0aGlzLmRmc0VkZ2VMaXN0Lmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSBzZWxmTGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBkZnNFZGdlID0gdGhpcy5kZnNFZGdlTGlzdFtpXTtcbiAgICAgIHZhciBmcm9tTm9kZUlkeCA9IGRmc0VkZ2UuZnJvbU5vZGU7XG4gICAgICB2YXIgdG9Ob2RlSWR4ID0gZGZzRWRnZS50b05vZGU7XG5cbiAgICAgIGlmIChmcm9tTm9kZUlkeCA8IHRvTm9kZUlkeCAmJiAob2xkRnJvbSA9PT0gdW5kZWZpbmVkIHx8IHRvTm9kZUlkeCA9PT0gb2xkRnJvbSkpIHtcbiAgICAgICAgdGhpcy5ybXBhdGgucHVzaChpKTtcbiAgICAgICAgb2xkRnJvbSA9IGZyb21Ob2RlSWR4O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJtcGF0aDtcbiAgfTtcblxuICBERlNjb2RlLnByb3RvdHlwZS5nZXROb2RlTnVtID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlTWFwID0ge307XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkZnNFZGdlKSB7XG4gICAgICBpZiAoIW5vZGVNYXBbZGZzRWRnZS5mcm9tTm9kZV0pIG5vZGVNYXBbZGZzRWRnZS5mcm9tTm9kZV0gPSB0cnVlO1xuICAgICAgaWYgKCFub2RlTWFwW2Rmc0VkZ2UudG9Ob2RlXSkgbm9kZU1hcFtkZnNFZGdlLnRvTm9kZV0gPSB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhub2RlTWFwKS5sZW5ndGg7XG4gIH07XG5cbiAgcmV0dXJuIERGU2NvZGU7XG59KCk7XG5cbnZhciBIaXN0b3J5ID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSGlzdG9yeShwZGZzKSB7XG4gICAgdGhpcy5oaXMgPSB7fTtcbiAgICB0aGlzLm5vZGVzVXNlZCA9IHt9O1xuICAgIHRoaXMuZWRnZXNVc2VkID0ge307XG4gICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgIGlmICghcGRmcykgcmV0dXJuO1xuXG4gICAgd2hpbGUgKHBkZnMpIHtcbiAgICAgIHZhciBlID0gcGRmcy5lZGdlO1xuICAgICAgdGhpcy5lZGdlcy5wdXNoKGUpO1xuICAgICAgdGhpcy5ub2Rlc1VzZWRbZS5mcm9tXSA9IDE7XG4gICAgICB0aGlzLm5vZGVzVXNlZFtlLnRvXSA9IDE7XG4gICAgICB0aGlzLmVkZ2VzVXNlZFtlLmlkXSA9IDE7XG4gICAgICBwZGZzID0gcGRmcy5wcmVOb2RlO1xuICAgIH0gLy8g5YCS5bqPXG5cblxuICAgIHRoaXMuZWRnZXMgPSB0aGlzLmVkZ2VzLnJldmVyc2UoKTtcbiAgfVxuXG4gIEhpc3RvcnkucHJvdG90eXBlLmhhc05vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiB0aGlzLm5vZGVzVXNlZFtub2RlLmlkXSA9PT0gMTtcbiAgfTtcblxuICBIaXN0b3J5LnByb3RvdHlwZS5oYXNFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5lZGdlc1VzZWRbZWRnZS5pZF0gPT09IDE7XG4gIH07XG5cbiAgcmV0dXJuIEhpc3Rvcnk7XG59KCk7XG5cbnZhciBHU3BhbiA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEdTcGFuKF9hKSB7XG4gICAgdmFyIGdyYXBocyA9IF9hLmdyYXBocyxcbiAgICAgICAgX2IgPSBfYS5taW5TdXBwb3J0LFxuICAgICAgICBtaW5TdXBwb3J0ID0gX2IgPT09IHZvaWQgMCA/IDIgOiBfYixcbiAgICAgICAgX2MgPSBfYS5taW5Ob2RlTnVtLFxuICAgICAgICBtaW5Ob2RlTnVtID0gX2MgPT09IHZvaWQgMCA/IDEgOiBfYyxcbiAgICAgICAgX2QgPSBfYS5tYXhOb2RlTnVtLFxuICAgICAgICBtYXhOb2RlTnVtID0gX2QgPT09IHZvaWQgMCA/IDQgOiBfZCxcbiAgICAgICAgX2UgPSBfYS50b3AsXG4gICAgICAgIHRvcCA9IF9lID09PSB2b2lkIDAgPyAxMCA6IF9lLFxuICAgICAgICBfZiA9IF9hLmRpcmVjdGVkLFxuICAgICAgICBkaXJlY3RlZCA9IF9mID09PSB2b2lkIDAgPyBmYWxzZSA6IF9mLFxuICAgICAgICBfZyA9IF9hLnZlcmJvc2UsXG4gICAgICAgIHZlcmJvc2UgPSBfZyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZzsgLy8gLS0tLS0tLS0g56ys6Zu25q2l77yM5Yid5aeL5YyWLS0tLS0tLVxuXG4gICAgdGhpcy5ncmFwaHMgPSBncmFwaHM7XG4gICAgdGhpcy5kZnNDb2RlID0gbmV3IERGU2NvZGUoKTtcbiAgICB0aGlzLnN1cHBvcnQgPSAwO1xuICAgIHRoaXMuZnJlcXVlbnRTaXplMVN1YmdyYXBocyA9IFtdO1xuICAgIHRoaXMuZnJlcXVlbnRTdWJncmFwaHMgPSBbXTtcbiAgICB0aGlzLm1pblN1cHBvcnQgPSBtaW5TdXBwb3J0O1xuICAgIHRoaXMudG9wID0gdG9wO1xuICAgIHRoaXMuZGlyZWN0ZWQgPSBkaXJlY3RlZDtcbiAgICB0aGlzLmNvdW50ZXIgPSAwOyAvLyBUT0RPPyB0aW1lc3RhbXAgPSB7fVxuXG4gICAgdGhpcy5tYXhOb2RlTnVtID0gbWF4Tm9kZU51bTtcbiAgICB0aGlzLm1pbk5vZGVOdW0gPSBtaW5Ob2RlTnVtO1xuICAgIHRoaXMudmVyYm9zZSA9IHZlcmJvc2U7XG4gICAgaWYgKHRoaXMubWF4Tm9kZU51bSA8IHRoaXMubWluTm9kZU51bSkgdGhpcy5tYXhOb2RlTnVtID0gdGhpcy5taW5Ob2RlTnVtO1xuICAgIHRoaXMucmVwb3J0REYgPSBbXTsgLy8gbWF0cml4XG4gIH0gLy8gTGluZSAzNTJcblxuXG4gIEdTcGFuLnByb3RvdHlwZS5maW5kRm9yd2FyZFJvb3RFZGdlcyA9IGZ1bmN0aW9uIChncmFwaCwgZnJvbU5vZGUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICBmcm9tTm9kZS5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBpZiAoX3RoaXMuZGlyZWN0ZWQgfHwgZnJvbU5vZGUubGFiZWwgPD0gbm9kZU1hcFtlZGdlLnRvXS5sYWJlbCkgcmVzdWx0LnB1c2goZWRnZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEJhY2t3YXJkRWRnZSA9IGZ1bmN0aW9uIChncmFwaCwgZWRnZTEsIGVkZ2UyLCBoaXN0b3J5KSB7XG4gICAgaWYgKCF0aGlzLmRpcmVjdGVkICYmIGVkZ2UxID09PSBlZGdlMikgcmV0dXJuIG51bGw7XG4gICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwO1xuICAgIHZhciBlZGdlMlRvID0gbm9kZU1hcFtlZGdlMi50b107XG4gICAgdmFyIGVkZ2UyVG9FZGdlcyA9IGVkZ2UyVG8uZWRnZXM7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlMlRvRWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZTJUb0VkZ2VzW2ldO1xuICAgICAgaWYgKGhpc3RvcnkuaGFzRWRnZShlZGdlKSB8fCBlZGdlLnRvICE9PSBlZGdlMS5mcm9tKSBjb250aW51ZTtcblxuICAgICAgaWYgKCF0aGlzLmRpcmVjdGVkKSB7XG4gICAgICAgIGlmIChlZGdlMS5sYWJlbCA8IGVkZ2UubGFiZWwgfHwgZWRnZTEubGFiZWwgPT09IGVkZ2UubGFiZWwgJiYgbm9kZU1hcFtlZGdlMS50b10ubGFiZWwgPD0gbm9kZU1hcFtlZGdlMi50b10ubGFiZWwpIHtcbiAgICAgICAgICByZXR1cm4gZWRnZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG5vZGVNYXBbZWRnZTEuZnJvbV0ubGFiZWwgPCBub2RlTWFwW2VkZ2UyLnRvXS5sYWJlbCB8fCBub2RlTWFwW2VkZ2UxLmZyb21dLmxhYmVsID09PSBub2RlTWFwW2VkZ2UyLnRvXS5sYWJlbCAmJiBlZGdlMS5sYWJlbCA8PSBlZGdlLmxhYmVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVkZ2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEZvcndhcmRQdXJlRWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIHJpZ2h0bW9zdEVkZ2UsIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgcmlnaHRtb3N0RWRnZVRvSWQgPSByaWdodG1vc3RFZGdlLnRvO1xuICAgIHZhciBlZGdlcyA9IGdyYXBoLm5vZGVNYXBbcmlnaHRtb3N0RWRnZVRvSWRdLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICB2YXIgdG9Ob2RlID0gZ3JhcGgubm9kZU1hcFtlZGdlLnRvXTtcblxuICAgICAgaWYgKG1pbk5vZGVMYWJlbCA8PSB0b05vZGUubGFiZWwgJiYgIWhpc3RvcnkuaGFzTm9kZSh0b05vZGUpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIHJpZ2h0bW9zdEVkZ2UsIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgdmFyIHRvTm9kZUxhYmVsID0gbm9kZU1hcFtyaWdodG1vc3RFZGdlLnRvXS5sYWJlbDtcbiAgICB2YXIgZnJvbU5vZGUgPSBub2RlTWFwW3JpZ2h0bW9zdEVkZ2UuZnJvbV07XG4gICAgdmFyIGVkZ2VzID0gZnJvbU5vZGUuZWRnZXM7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tpXTtcbiAgICAgIHZhciBuZXdUb05vZGVMYWJlbCA9IG5vZGVNYXBbZWRnZS50b10ubGFiZWw7XG5cbiAgICAgIGlmIChyaWdodG1vc3RFZGdlLnRvID09PSBlZGdlLnRvIHx8IG1pbk5vZGVMYWJlbCA+IG5ld1RvTm9kZUxhYmVsIHx8IGhpc3RvcnkuaGFzTm9kZShub2RlTWFwW2VkZ2UudG9dKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJpZ2h0bW9zdEVkZ2UubGFiZWwgPCBlZGdlLmxhYmVsIHx8IHJpZ2h0bW9zdEVkZ2UubGFiZWwgPT09IGVkZ2UubGFiZWwgJiYgdG9Ob2RlTGFiZWwgPD0gbmV3VG9Ob2RlTGFiZWwpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZ2V0U3VwcG9ydCA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgZ3JhcGhNYXAgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocHJvKSB7XG4gICAgICBpZiAoIWdyYXBoTWFwW3Byby5ncmFwaElkXSkgZ3JhcGhNYXBbcHJvLmdyYXBoSWRdID0gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JhcGhNYXApLmxlbmd0aDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZE1pbkxhYmVsID0gZnVuY3Rpb24gKG9iaikge1xuICAgIHZhciBtaW5MYWJlbCA9IHVuZGVmaW5lZDtcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKG5vZGVFZGdlTm9kZUxhYmVsKSB7XG4gICAgICB2YXIgX2EgPSBvYmpbbm9kZUVkZ2VOb2RlTGFiZWxdLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcblxuICAgICAgaWYgKCFtaW5MYWJlbCkge1xuICAgICAgICBtaW5MYWJlbCA9IHtcbiAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVMYWJlbDJcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobm9kZUxhYmVsMSA8IG1pbkxhYmVsLm5vZGVMYWJlbDEgfHwgbm9kZUxhYmVsMSA9PT0gbWluTGFiZWwubm9kZUxhYmVsMSAmJiBlZGdlTGFiZWwgPCBtaW5MYWJlbC5lZGdlTGFiZWwgfHwgbm9kZUxhYmVsMSA9PT0gbWluTGFiZWwubm9kZUxhYmVsMSAmJiBlZGdlTGFiZWwgPT09IG1pbkxhYmVsLmVkZ2VMYWJlbCAmJiBub2RlTGFiZWwyIDwgbWluTGFiZWwubm9kZUxhYmVsMikge1xuICAgICAgICBtaW5MYWJlbCA9IHtcbiAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVMYWJlbDJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbWluTGFiZWw7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmlzTWluID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZGZzQ29kZSA9IHRoaXMuZGZzQ29kZTtcbiAgICBpZiAodGhpcy52ZXJib3NlKSBjb25zb2xlLmxvZyhcImlzTWluIGNoZWNraW5nXCIsIGRmc0NvZGUpO1xuICAgIGlmIChkZnNDb2RlLmRmc0VkZ2VMaXN0Lmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRydWU7XG4gICAgdmFyIGRpcmVjdGVkID0gdGhpcy5kaXJlY3RlZDtcbiAgICB2YXIgZ3JhcGggPSBkZnNDb2RlLnRvR3JhcGgoX3N0cnVjdC5WQUNBTlRfR1JBUEhfSUQsIGRpcmVjdGVkKTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgdmFyIGRmc0NvZGVNaW4gPSBuZXcgREZTY29kZSgpO1xuICAgIHZhciByb290ID0ge307XG4gICAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIGZvcndhcmRFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm9vdEVkZ2VzKGdyYXBoLCBub2RlKTtcblxuICAgICAgZm9yd2FyZEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgdmFyIG90aGVyTm9kZSA9IG5vZGVNYXBbZWRnZS50b107XG4gICAgICAgIHZhciBub2RlRWRnZU5vZGVMYWJlbCA9IFwiXCIuY29uY2F0KG5vZGUubGFiZWwsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChvdGhlck5vZGUubGFiZWwpO1xuICAgICAgICBpZiAoIXJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdKSByb290W25vZGVFZGdlTm9kZUxhYmVsXSA9IHtcbiAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgIG5vZGVMYWJlbDE6IG5vZGUubGFiZWwsXG4gICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG90aGVyTm9kZS5sYWJlbFxuICAgICAgICB9O1xuICAgICAgICB2YXIgcGRmcyA9IHtcbiAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0ucHJvamVjdGVkLnB1c2gocGRmcyk7XG4gICAgICB9KTtcbiAgICB9KTsgLy8g5q+U6L6DIHJvb3Qg5Lit5q+P5LiA6aG555qEIG5vZGVFZGdlTm9kZUxhYmVsIOWkp+Wwj++8jOaMieeFpyBub2RlTGFiZWwx44CBZWRnZUxhYmXjgIFub2RlTGFiZWwyIOeahOmhuuW6j+avlOi+g1xuXG4gICAgdmFyIG1pbkxhYmVsID0gdGhpcy5maW5kTWluTGFiZWwocm9vdCk7IC8vIGxpbmUgNDE5XG5cbiAgICBpZiAoIW1pbkxhYmVsKSByZXR1cm47XG4gICAgZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKDAsIDEsIG1pbkxhYmVsLm5vZGVMYWJlbDEsIG1pbkxhYmVsLmVkZ2VMYWJlbCwgbWluTGFiZWwubm9kZUxhYmVsMikpOyAvLyBsaW5lIDQyM1xuXG4gICAgdmFyIHByb2plY3RJc01pbiA9IGZ1bmN0aW9uIHByb2plY3RJc01pbihwcm9qZWN0ZWQpIHtcbiAgICAgIC8vIHJpZ2h0IG1vc3QgcGF0aFxuICAgICAgdmFyIHJtcGF0aCA9IGRmc0NvZGVNaW4uYnVpbGRSbXBhdGgoKTtcbiAgICAgIHZhciBtaW5Ob2RlTGFiZWwgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0WzBdLm5vZGVFZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDE7XG4gICAgICB2YXIgbWF4VG9DID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtybXBhdGhbMF1dLnRvTm9kZTsgLy8gbm9kZSBpZFxuXG4gICAgICB2YXIgYmFja3dhcmRSb290ID0ge307XG4gICAgICB2YXIgZmxhZyA9IGZhbHNlLFxuICAgICAgICAgIG5ld1RvID0gMDtcbiAgICAgIHZhciBlbmQgPSBkaXJlY3RlZCA/IC0xIDogMDsgLy8g6YGN5Y6G5YiwIDEg6L+Y5piv5YiwIDBcblxuICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKGkpIHtcbiAgICAgICAgaWYgKGZsYWcpIHJldHVybiBcImJyZWFrXCI7IC8vIGxpbmUgNDM1XG5cbiAgICAgICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgICAgdmFyIGJhY2t3YXJkRWRnZSA9IF90aGlzLmZpbmRCYWNrd2FyZEVkZ2UoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgaGlzdG9yeS5lZGdlc1tybXBhdGhbMF1dLCBoaXN0b3J5KTtcblxuICAgICAgICAgIGlmIChiYWNrd2FyZEVkZ2UpIHtcbiAgICAgICAgICAgIC8vIExpbmUgNDQxXG4gICAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtiYWNrd2FyZEVkZ2UubGFiZWxdKSB7XG4gICAgICAgICAgICAgIGJhY2t3YXJkUm9vdFtiYWNrd2FyZEVkZ2UubGFiZWxdID0ge1xuICAgICAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgZWRnZTogYmFja3dhcmRSb290LFxuICAgICAgICAgICAgICBwcmVOb2RlOiBwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5ld1RvID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlO1xuICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGZvciAodmFyIGkgPSBybXBhdGgubGVuZ3RoIC0gMTsgaSA+IGVuZDsgaS0tKSB7XG4gICAgICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMShpKTtcblxuICAgICAgICBpZiAoc3RhdGVfMSA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGZsYWcpIHtcbiAgICAgICAgdmFyIG1pbkJhY2t3YXJkRWRnZUxhYmVsID0gX3RoaXMuZmluZE1pbkxhYmVsKGJhY2t3YXJkUm9vdCk7XG5cbiAgICAgICAgZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgbmV3VG8sIF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwsIG1pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbCwgX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCkpO1xuICAgICAgICB2YXIgaWR4XzEgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W2lkeF8xXSAhPT0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtpZHhfMV0pIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHByb2plY3RJc01pbihiYWNrd2FyZFJvb3RbbWluQmFja3dhcmRFZGdlTGFiZWwuZWRnZUxhYmVsXS5wcm9qZWN0ZWQpO1xuICAgICAgfVxuXG4gICAgICB2YXIgZm9yd2FyZFJvb3QgPSB7fTtcbiAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgIHZhciBuZXdGcm9tID0gMDtcbiAgICAgIHByb2plY3RlZC5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgdmFyIGZvcndhcmRQdXJlRWRnZXMgPSBfdGhpcy5maW5kRm9yd2FyZFB1cmVFZGdlcyhncmFwaCwgaGlzdG9yeS5lZGdlc1tybXBhdGhbMF1dLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpO1xuXG4gICAgICAgIGlmIChmb3J3YXJkUHVyZUVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICBuZXdGcm9tID0gbWF4VG9DO1xuICAgICAgICAgIGZvcndhcmRQdXJlRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZU1hcFtlZGdlLnRvXS5sYWJlbCk7XG4gICAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIHBhdGhMZW5ndGggPSBybXBhdGgubGVuZ3RoO1xuXG4gICAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgICBpZiAoZmxhZykgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgdmFyIHZhbHVlID0gcm1wYXRoW2ldO1xuICAgICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgICB2YXIgZm9yd2FyZFJtcGF0aEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSbXBhdGhFZGdlcyhncmFwaCwgaGlzdG9yeS5lZGdlc1t2YWx1ZV0sIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSk7XG5cbiAgICAgICAgICBpZiAoZm9yd2FyZFJtcGF0aEVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgbmV3RnJvbSA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbdmFsdWVdLmZyb21Ob2RlO1xuICAgICAgICAgICAgZm9yd2FyZFJtcGF0aEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZU1hcFtlZGdlLnRvXS5sYWJlbCk7XG4gICAgICAgICAgICAgIGlmICghZm9yd2FyZFJvb3Rba2V5XSkgZm9yd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGhMZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc3RhdGVfMiA9IF9sb29wXzIoaSk7XG5cbiAgICAgICAgaWYgKHN0YXRlXzIgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICghZmxhZykgcmV0dXJuIHRydWU7XG5cbiAgICAgIHZhciBmb3J3YXJkTWluRWRnZU5vZGVMYWJlbCA9IF90aGlzLmZpbmRNaW5MYWJlbChmb3J3YXJkUm9vdCk7XG5cbiAgICAgIGRmc0NvZGVNaW4uZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShuZXdGcm9tLCBtYXhUb0MgKyAxLCBfc3RydWN0LlZBQ0FOVF9OT0RFX0xBQkVMLCBmb3J3YXJkTWluRWRnZU5vZGVMYWJlbC5lZGdlTGFiZWwsIGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDIpKTtcbiAgICAgIHZhciBpZHggPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICBpZiAoZGZzQ29kZS5kZnNFZGdlTGlzdFtpZHhdICE9PSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W2lkeF0pIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiBwcm9qZWN0SXNNaW4oZm9yd2FyZFJvb3RbXCJcIi5jb25jYXQoZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwuZWRnZUxhYmVsLCBcIi1cIikuY29uY2F0KGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDIpXS5wcm9qZWN0ZWQpO1xuICAgIH07XG5cbiAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQobWluTGFiZWwubm9kZUxhYmVsMSwgXCItXCIpLmNvbmNhdChtaW5MYWJlbC5lZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQobWluTGFiZWwubm9kZUxhYmVsMik7XG4gICAgcmV0dXJuIHByb2plY3RJc01pbihyb290W2tleV0ucHJvamVjdGVkKTtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUucmVwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmRmc0NvZGUuZ2V0Tm9kZU51bSgpIDwgdGhpcy5taW5Ob2RlTnVtKSByZXR1cm47XG4gICAgdGhpcy5jb3VudGVyKys7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5kZnNDb2RlLnRvR3JhcGgodGhpcy5jb3VudGVyLCB0aGlzLmRpcmVjdGVkKTtcbiAgICB0aGlzLmZyZXF1ZW50U3ViZ3JhcGhzLnB1c2goKDAsIF91dGlsLmNsb25lKShncmFwaCkpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5zdWJHcmFwaE1pbmluZyA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHN1cHBvcnQgPSB0aGlzLmdldFN1cHBvcnQocHJvamVjdGVkKTtcbiAgICBpZiAoc3VwcG9ydCA8IHRoaXMubWluU3VwcG9ydCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5pc01pbigpKSByZXR1cm47XG4gICAgdGhpcy5yZXBvcnQoKTtcbiAgICB2YXIgbm9kZU51bSA9IHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCk7XG4gICAgdmFyIHJtcGF0aCA9IHRoaXMuZGZzQ29kZS5idWlsZFJtcGF0aCgpO1xuICAgIHZhciBtYXhUb0MgPSB0aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3Rbcm1wYXRoWzBdXS50b05vZGU7XG4gICAgdmFyIG1pbk5vZGVMYWJlbCA9IHRoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFswXS5ub2RlRWRnZU5vZGVMYWJlbC5ub2RlTGFiZWwxO1xuICAgIHZhciBmb3J3YXJkUm9vdCA9IHt9O1xuICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGhzW3AuZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApOyAvLyBiYWNrd2FyZCBMaW5lIDUyNlxuXG4gICAgICBmb3IgKHZhciBpID0gcm1wYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBiYWNrd2FyZEVkZ2UgPSBfdGhpcy5maW5kQmFja3dhcmRFZGdlKGdyYXBoLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFtpXV0sIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgaGlzdG9yeSk7XG5cbiAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoYmFja3dhcmRFZGdlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtrZXldKSBiYWNrd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICB0b05vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJhY2t3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICAgIGVkZ2U6IGJhY2t3YXJkRWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwdXJlIGZvcndhcmRcblxuXG4gICAgICBpZiAobm9kZU51bSA+PSBfdGhpcy5tYXhOb2RlTnVtKSByZXR1cm47XG5cbiAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgZm9yd2FyZFB1cmVFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtYXhUb0MsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgZnJvbU5vZGVJZDogbWF4VG9DLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIF9sb29wXzMgPSBmdW5jdGlvbiBfbG9vcF8zKGkpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBmb3J3YXJkUm1wYXRoRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgZnJvbU5vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICBncmFwaElkOiBwLmdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07IC8vIHJtcGF0aCBmb3J3YXJkXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBybXBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgX2xvb3BfMyhpKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gYmFja3dhcmRcblxuICAgIE9iamVjdC5rZXlzKGJhY2t3YXJkUm9vdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgX2EgPSBiYWNrd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICB0b05vZGVJZCA9IF9hLnRvTm9kZUlkLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbDtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgdG9Ob2RlSWQsIFwiLTFcIiwgZWRnZUxhYmVsLCBcIi0xXCIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoYmFja3dhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTsgLy8gZm9yd2FyZFxuXG4gICAgT2JqZWN0LmtleXMoZm9yd2FyZFJvb3QpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIF9hID0gZm9yd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICBmcm9tTm9kZUlkID0gX2EuZnJvbU5vZGVJZCxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZUlkLCBtYXhUb0MgKyAxLCBfc3RydWN0LlZBQ0FOVF9OT0RFX0xBQkVMLCBlZGdlTGFiZWwsIG5vZGVMYWJlbDIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQpO1xuXG4gICAgICBfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0LnBvcCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5nZW5lcmF0ZTFFZGdlRnJlcXVlbnRTdWJHcmFwaHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBocyA9IHRoaXMuZ3JhcGhzO1xuICAgIHZhciBkaXJlY3RlZCA9IHRoaXMuZGlyZWN0ZWQ7XG4gICAgdmFyIG1pblN1cHBvcnQgPSB0aGlzLm1pblN1cHBvcnQ7XG4gICAgdmFyIGZyZXF1ZW50U2l6ZTFTdWJncmFwaHMgPSB0aGlzLmZyZXF1ZW50U2l6ZTFTdWJncmFwaHM7XG4gICAgdmFyIG5vZGVMYWJlbENvdW50ZXIgPSB7fSxcbiAgICAgICAgbm9kZUVkZ2VOb2RlQ291bnRlciA9IHt9OyAvLyDkv53lrZjlkITkuKrlm77lkozlkIToh6roioLngrnnmoTlhbPns7sgbWFw77yMa2V5IOagvOW8j+S4uiBncmFwaEtleS1ub2Rl57G75Z6LXG5cbiAgICB2YXIgbm9kZUxhYmxlQ291bnRlZCA9IHt9OyAvLyDkv53lrZjlkITkuKrlm77lkozlkIToh6rovrnnmoTlhbPns7sgbWFw77yMa2V5IOagvOW8j+S4uiBncmFwaEtleS1mcm9tTm9kZeexu+Weiy1lZGdl57G75Z6LLXRvTm9kZeexu+Wei1xuXG4gICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsQ291bnRlZCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAvLyBMaW5lIDI3MVxuICAgICAgdmFyIGdyYXBoID0gZ3JhcGhzW2tleV07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7IC8vIOmBjeWOhuiKgueCue+8jOiusOW9leWvueW6lOWbviDkuI4g5q+P5Liq6IqC54K555qEIGxhYmVsIOWIsCBub2RlTGFibGVDb3VudGVkXG5cbiAgICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICAgICAgLy8gTGluZSAyNzJcbiAgICAgICAgdmFyIG5vZGVMYWJlbCA9IG5vZGUubGFiZWw7XG4gICAgICAgIHZhciBncmFwaE5vZGVLZXkgPSBcIlwiLmNvbmNhdChrZXksIFwiLVwiKS5jb25jYXQobm9kZUxhYmVsKTtcblxuICAgICAgICBpZiAoIW5vZGVMYWJsZUNvdW50ZWRbZ3JhcGhOb2RlS2V5XSkge1xuICAgICAgICAgIHZhciBjb3VudGVyID0gbm9kZUxhYmVsQ291bnRlcltub2RlTGFiZWxdIHx8IDA7XG4gICAgICAgICAgY291bnRlcisrO1xuICAgICAgICAgIG5vZGVMYWJlbENvdW50ZXJbbm9kZUxhYmVsXSA9IGNvdW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlTGFibGVDb3VudGVkW2dyYXBoTm9kZUtleV0gPSB7XG4gICAgICAgICAgZ3JhcGhLZXk6IGtleSxcbiAgICAgICAgICBsYWJlbDogbm9kZUxhYmVsXG4gICAgICAgIH07IC8vIOmBjeWOhuivpeiKgueCueeahOaJgOaciei+ue+8jOiusOW9leWQhOS4quWbvuWSjOWQhOiHqui+ueeahOWFs+ezu+WIsCBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWQuIExpbmUgMjc2XG5cbiAgICAgICAgbm9kZS5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgdmFyIG5vZGVMYWJlbDEgPSBub2RlTGFiZWw7XG4gICAgICAgICAgdmFyIG5vZGVMYWJlbDIgPSBub2RlTWFwW2VkZ2UudG9dLmxhYmVsO1xuXG4gICAgICAgICAgaWYgKCFkaXJlY3RlZCAmJiBub2RlTGFiZWwxID4gbm9kZUxhYmVsMikge1xuICAgICAgICAgICAgdmFyIHRtcCA9IG5vZGVMYWJlbDI7XG4gICAgICAgICAgICBub2RlTGFiZWwyID0gbm9kZUxhYmVsMTtcbiAgICAgICAgICAgIG5vZGVMYWJlbDEgPSB0bXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGVkZ2VMYWJlbCA9IGVkZ2UubGFiZWw7XG4gICAgICAgICAgdmFyIGdyYXBoTm9kZUVkZ2VOb2RlS2V5ID0gXCJcIi5jb25jYXQoa2V5LCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbDEsIFwiLVwiKS5jb25jYXQoZWRnZUxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbDIpO1xuICAgICAgICAgIHZhciBub2RlRWRnZU5vZGVLZXkgPSBcIlwiLmNvbmNhdChub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KGVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwyKTtcblxuICAgICAgICAgIGlmICghbm9kZUVkZ2VOb2RlQ291bnRlcltub2RlRWRnZU5vZGVLZXldKSB7XG4gICAgICAgICAgICB2YXIgY291bnRlciA9IG5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSB8fCAwO1xuICAgICAgICAgICAgY291bnRlcisrO1xuICAgICAgICAgICAgbm9kZUVkZ2VOb2RlQ291bnRlcltub2RlRWRnZU5vZGVLZXldID0gY291bnRlcjsgLy8gTGluZTI4MVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGVFZGdlTm9kZUxhYmVsQ291bnRlZFtncmFwaE5vZGVFZGdlTm9kZUtleV0gPSB7XG4gICAgICAgICAgICBncmFwaElkOiBrZXksXG4gICAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlTGFiZWwsXG4gICAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTsgLy8g6K6h566X6aKR57mB55qE6IqC54K5XG5cbiAgICBPYmplY3Qua2V5cyhub2RlTGFiZWxDb3VudGVyKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgdmFyIGNvdW50ID0gbm9kZUxhYmVsQ291bnRlcltsYWJlbF07XG4gICAgICBpZiAoY291bnQgPCBtaW5TdXBwb3J0KSByZXR1cm47XG4gICAgICB2YXIgZyA9IHtcbiAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICBlZGdlczogW11cbiAgICAgIH07XG4gICAgICBnLm5vZGVzLnB1c2goe1xuICAgICAgICBpZDogXCIwXCIsXG4gICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgfSk7XG4gICAgICBmcmVxdWVudFNpemUxU3ViZ3JhcGhzLnB1c2goZyk7IC8vIGlmIChtaW5Ob2RlTnVtIDw9IDEpIHJlcG9ydFNpemUxIFRPRE9cbiAgICB9KTtcbiAgICByZXR1cm4gZnJlcXVlbnRTaXplMVN1YmdyYXBocztcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7IC8vIC0tLS0tLS0tIOesrOS4gOatpSwgX2dlbmVyYXRlXzFlZGdlX2ZyZXF1ZW50X3N1YmdyYXBoc++8mumikee5geeahOWNleS4quiKgueCuS0tLS0tLS1cblxuXG4gICAgdGhpcy5mcmVxdWVudFNpemUxU3ViZ3JhcGhzID0gdGhpcy5nZW5lcmF0ZTFFZGdlRnJlcXVlbnRTdWJHcmFwaHMoKTtcbiAgICBpZiAodGhpcy5tYXhOb2RlTnVtIDwgMikgcmV0dXJuO1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdyYXBocztcbiAgICB2YXIgZGlyZWN0ZWQgPSB0aGlzLmRpcmVjdGVkOyAvLyBQREZTIOaVsOe7hOeahCBtYXAgTGluZSAzMDRcblxuICAgIHZhciByb290ID0ge307XG4gICAgT2JqZWN0LmtleXMoZ3JhcGhzKS5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaElkKSB7XG4gICAgICB2YXIgZ3JhcGggPSBncmFwaHNbZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7IC8vIExpbmUgMzA2XG5cbiAgICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSb290RWRnZXMgPSBfdGhpcy5maW5kRm9yd2FyZFJvb3RFZGdlcyhncmFwaCwgbm9kZSk7IC8vIExpbmUgMzA4XG5cblxuICAgICAgICBmb3J3YXJkUm9vdEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICB2YXIgdG9Ob2RlID0gbm9kZU1hcFtlZGdlLnRvXTtcbiAgICAgICAgICB2YXIgbm9kZUVkZ2VOb2RlTGFiZWwgPSBcIlwiLmNvbmNhdChub2RlLmxhYmVsLCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQodG9Ob2RlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIXJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdKSByb290W25vZGVFZGdlTm9kZUxhYmVsXSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICBub2RlTGFiZWwxOiBub2RlLmxhYmVsLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogdG9Ob2RlLmxhYmVsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgcGRmcyA9IHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogbnVsbFxuICAgICAgICAgIH07XG4gICAgICAgICAgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0ucHJvamVjdGVkLnB1c2gocGRmcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7IC8vIExpbmUgMzEzXG5cbiAgICBPYmplY3Qua2V5cyhyb290KS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlRWRnZU5vZGVMYWJlbCkge1xuICAgICAgdmFyIF9hID0gcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0sXG4gICAgICAgICAgcHJvamVjdGVkID0gX2EucHJvamVjdGVkLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKDAsIDEsIG5vZGVMYWJlbDEsIGVkZ2VMYWJlbCwgbm9kZUxhYmVsMikpO1xuXG4gICAgICBfdGhpcy5zdWJHcmFwaE1pbmluZyhwcm9qZWN0ZWQpO1xuXG4gICAgICBfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0LnBvcCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBHU3Bhbjtcbn0oKTtcblxudmFyIGZvcm1hdEdyYXBocyA9IGZ1bmN0aW9uIGZvcm1hdEdyYXBocyhncmFwaHMsIGRpcmVjdGVkLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgT2JqZWN0LmtleXMoZ3JhcGhzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXksIGkpIHtcbiAgICB2YXIgZ3JhcGggPSBncmFwaHNba2V5XTtcbiAgICB2YXIgZkdyYXBoID0gbmV3IF9zdHJ1Y3QuR3JhcGgoaSwgdHJ1ZSwgZGlyZWN0ZWQpO1xuICAgIHZhciBub2RlSWR4TWFwID0ge307XG4gICAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaikge1xuICAgICAgZkdyYXBoLmFkZE5vZGUoaiwgbm9kZVtub2RlTGFiZWxQcm9wXSk7XG4gICAgICBub2RlSWR4TWFwW25vZGUuaWRdID0gajtcbiAgICB9KTtcbiAgICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlLCBrKSB7XG4gICAgICB2YXIgc291cmNlSWR4ID0gbm9kZUlkeE1hcFtlZGdlLnNvdXJjZV07XG4gICAgICB2YXIgdGFyZ2V0SWR4ID0gbm9kZUlkeE1hcFtlZGdlLnRhcmdldF07XG4gICAgICBmR3JhcGguYWRkRWRnZSgtMSwgc291cmNlSWR4LCB0YXJnZXRJZHgsIGVkZ2VbZWRnZUxhYmVsUHJvcF0pO1xuICAgIH0pO1xuICAgIGlmIChmR3JhcGggJiYgZkdyYXBoLmdldE5vZGVOdW0oKSkgcmVzdWx0W2ZHcmFwaC5pZF0gPSBmR3JhcGg7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIHRvR3JhcGhEYXRhcyA9IGZ1bmN0aW9uIHRvR3JhcGhEYXRhcyhncmFwaHMsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGgpIHtcbiAgICB2YXIgZ3JhcGhEYXRhID0ge1xuICAgICAgbm9kZXM6IFtdLFxuICAgICAgZWRnZXM6IFtdXG4gICAgfTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIGdyYXBoRGF0YS5ub2Rlcy5wdXNoKChfYSA9IHtcbiAgICAgICAgaWQ6IFwiXCIuY29uY2F0KG5vZGUuaWQpXG4gICAgICB9LCBfYVtub2RlTGFiZWxQcm9wXSA9IG5vZGUubGFiZWwsIF9hKSk7XG4gICAgfSk7XG4gICAgZ3JhcGguZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIF9hO1xuXG4gICAgICBncmFwaERhdGEuZWRnZXMucHVzaCgoX2EgPSB7XG4gICAgICAgIHNvdXJjZTogXCJcIi5jb25jYXQoZWRnZS5mcm9tKSxcbiAgICAgICAgdGFyZ2V0OiBcIlwiLmNvbmNhdChlZGdlLnRvKVxuICAgICAgfSwgX2FbZWRnZUxhYmVsUHJvcF0gPSBlZGdlLmxhYmVsLCBfYSkpO1xuICAgIH0pO1xuICAgIHJlc3VsdC5wdXNoKGdyYXBoRGF0YSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIERFRkFVTFRfTEFCRUxfTkFNRSA9IFwiY2x1c3RlclwiO1xuLyoqXG4gKiBnU3BhbiDpopHnuYHlrZDlm77orqHnrpfnrpfms5XvvIhmcmVxdWVudCBncmFwaCBtaW5pbmfvvIlcbiAqIEBwYXJhbSBwYXJhbXMg5Y+C5pWwXG4gKi9cblxudmFyIGdTcGFuID0gZnVuY3Rpb24gZ1NwYW4ocGFyYW1zKSB7XG4gIC8vIC0tLS0tLS0g5bCG5Zu+5pWw5o2uIEdyYXBoRGF0YSDnmoQgbWFwIOi9rOaNouS4uuagvOW8jyAtLS0tLS0tXG4gIHZhciBncmFwaHMgPSBwYXJhbXMuZ3JhcGhzLFxuICAgICAgX2EgPSBwYXJhbXMuZGlyZWN0ZWQsXG4gICAgICBkaXJlY3RlZCA9IF9hID09PSB2b2lkIDAgPyBmYWxzZSA6IF9hLFxuICAgICAgX2IgPSBwYXJhbXMubm9kZUxhYmVsUHJvcCxcbiAgICAgIG5vZGVMYWJlbFByb3AgPSBfYiA9PT0gdm9pZCAwID8gREVGQVVMVF9MQUJFTF9OQU1FIDogX2IsXG4gICAgICBfYyA9IHBhcmFtcy5lZGdlTGFiZWxQcm9wLFxuICAgICAgZWRnZUxhYmVsUHJvcCA9IF9jID09PSB2b2lkIDAgPyBERUZBVUxUX0xBQkVMX05BTUUgOiBfYztcbiAgdmFyIGZvcm1hdHRlZEdyYXBocyA9IGZvcm1hdEdyYXBocyhncmFwaHMsIGRpcmVjdGVkLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgdmFyIG1pblN1cHBvcnQgPSBwYXJhbXMubWluU3VwcG9ydCxcbiAgICAgIG1heE5vZGVOdW0gPSBwYXJhbXMubWF4Tm9kZU51bSxcbiAgICAgIG1pbk5vZGVOdW0gPSBwYXJhbXMubWluTm9kZU51bSxcbiAgICAgIHZlcmJvc2UgPSBwYXJhbXMudmVyYm9zZSxcbiAgICAgIHRvcCA9IHBhcmFtcy50b3A7IC8vIC0tLS0tLS0g5Yid5aeL5YyW5LiO5omn6KGM566X5rOVIC0tLS0tLS1cblxuICB2YXIgYWxnb1BhcmFtcyA9IHtcbiAgICBncmFwaHM6IGZvcm1hdHRlZEdyYXBocyxcbiAgICBtaW5TdXBwb3J0OiBtaW5TdXBwb3J0LFxuICAgIG1heE5vZGVOdW06IG1heE5vZGVOdW0sXG4gICAgbWluTm9kZU51bTogbWluTm9kZU51bSxcbiAgICB0b3A6IHRvcCxcbiAgICB2ZXJib3NlOiB2ZXJib3NlLFxuICAgIGRpcmVjdGVkOiBkaXJlY3RlZFxuICB9O1xuICB2YXIgY2FsY3VsYXRvciA9IG5ldyBHU3BhbihhbGdvUGFyYW1zKTtcbiAgY2FsY3VsYXRvci5ydW4oKTtcbiAgdmFyIHJlc3VsdCA9IHRvR3JhcGhEYXRhcyhjYWxjdWxhdG9yLmZyZXF1ZW50U3ViZ3JhcGhzLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGdTcGFuO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/gSpan/gSpan.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/gSpan/struct.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/gSpan/struct.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VACANT_NODE_LABEL = exports.VACANT_NODE_ID = exports.VACANT_GRAPH_ID = exports.VACANT_EDGE_LABEL = exports.VACANT_EDGE_ID = exports.Node = exports.Graph = exports.Edge = exports.AUTO_EDGE_ID = void 0;\nvar VACANT_EDGE_ID = -1;\nexports.VACANT_EDGE_ID = VACANT_EDGE_ID;\nvar VACANT_NODE_ID = -1;\nexports.VACANT_NODE_ID = VACANT_NODE_ID;\nvar VACANT_EDGE_LABEL = \"-1\";\nexports.VACANT_EDGE_LABEL = VACANT_EDGE_LABEL;\nvar VACANT_NODE_LABEL = \"-1\";\nexports.VACANT_NODE_LABEL = VACANT_NODE_LABEL;\nvar VACANT_GRAPH_ID = -1;\nexports.VACANT_GRAPH_ID = VACANT_GRAPH_ID;\nvar AUTO_EDGE_ID = \"-1\";\nexports.AUTO_EDGE_ID = AUTO_EDGE_ID;\n\nvar Edge =\n/** @class */\nfunction () {\n function Edge(id, from, to, label) {\n if (id === void 0) {\n id = VACANT_EDGE_ID;\n }\n\n if (from === void 0) {\n from = VACANT_NODE_ID;\n }\n\n if (to === void 0) {\n to = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_EDGE_LABEL;\n }\n\n this.id = id;\n this.from = from;\n this.to = to;\n this.label = label;\n }\n\n return Edge;\n}();\n\nexports.Edge = Edge;\n\nvar Node =\n/** @class */\nfunction () {\n function Node(id, label) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_NODE_LABEL;\n }\n\n this.id = id;\n this.label = label;\n this.edges = [];\n this.edgeMap = {};\n }\n\n Node.prototype.addEdge = function (edge) {\n this.edges.push(edge);\n this.edgeMap[edge.id] = edge;\n };\n\n return Node;\n}();\n\nexports.Node = Node;\n\nvar Graph =\n/** @class */\nfunction () {\n function Graph(id, edgeIdAutoIncrease, directed) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (edgeIdAutoIncrease === void 0) {\n edgeIdAutoIncrease = true;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n this.id = id;\n this.edgeIdAutoIncrease = edgeIdAutoIncrease;\n this.edges = [];\n this.nodes = [];\n this.nodeMap = {};\n this.edgeMap = {};\n this.nodeLabelMap = {};\n this.edgeLabelMap = {};\n this.counter = 0;\n this.directed = directed;\n }\n\n Graph.prototype.getNodeNum = function () {\n return this.nodes.length;\n };\n\n Graph.prototype.addNode = function (id, label) {\n if (this.nodeMap[id]) return;\n var node = new Node(id, label);\n this.nodes.push(node);\n this.nodeMap[id] = node;\n if (!this.nodeLabelMap[label]) this.nodeLabelMap[label] = [];\n this.nodeLabelMap[label].push(id);\n };\n\n Graph.prototype.addEdge = function (id, from, to, label) {\n if (this.edgeIdAutoIncrease || id === undefined) id = this.counter++;\n if (this.nodeMap[from] && this.nodeMap[to] && this.nodeMap[to].edgeMap[id]) return;\n var edge = new Edge(id, from, to, label);\n this.edges.push(edge);\n this.edgeMap[id] = edge;\n this.nodeMap[from].addEdge(edge);\n if (!this.edgeLabelMap[label]) this.edgeLabelMap[label] = [];\n this.edgeLabelMap[label].push(edge);\n\n if (!this.directed) {\n var rEdge = new Edge(id, to, from, label);\n this.nodeMap[to].addEdge(rEdge);\n this.edgeLabelMap[label].push(rEdge);\n }\n };\n\n return Graph;\n}();\n\nexports.Graph = Graph;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9zdHJ1Y3QuanM/OTE1NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9zdHJ1Y3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuVkFDQU5UX05PREVfTEFCRUwgPSBleHBvcnRzLlZBQ0FOVF9OT0RFX0lEID0gZXhwb3J0cy5WQUNBTlRfR1JBUEhfSUQgPSBleHBvcnRzLlZBQ0FOVF9FREdFX0xBQkVMID0gZXhwb3J0cy5WQUNBTlRfRURHRV9JRCA9IGV4cG9ydHMuTm9kZSA9IGV4cG9ydHMuR3JhcGggPSBleHBvcnRzLkVkZ2UgPSBleHBvcnRzLkFVVE9fRURHRV9JRCA9IHZvaWQgMDtcbnZhciBWQUNBTlRfRURHRV9JRCA9IC0xO1xuZXhwb3J0cy5WQUNBTlRfRURHRV9JRCA9IFZBQ0FOVF9FREdFX0lEO1xudmFyIFZBQ0FOVF9OT0RFX0lEID0gLTE7XG5leHBvcnRzLlZBQ0FOVF9OT0RFX0lEID0gVkFDQU5UX05PREVfSUQ7XG52YXIgVkFDQU5UX0VER0VfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnRzLlZBQ0FOVF9FREdFX0xBQkVMID0gVkFDQU5UX0VER0VfTEFCRUw7XG52YXIgVkFDQU5UX05PREVfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnRzLlZBQ0FOVF9OT0RFX0xBQkVMID0gVkFDQU5UX05PREVfTEFCRUw7XG52YXIgVkFDQU5UX0dSQVBIX0lEID0gLTE7XG5leHBvcnRzLlZBQ0FOVF9HUkFQSF9JRCA9IFZBQ0FOVF9HUkFQSF9JRDtcbnZhciBBVVRPX0VER0VfSUQgPSBcIi0xXCI7XG5leHBvcnRzLkFVVE9fRURHRV9JRCA9IEFVVE9fRURHRV9JRDtcblxudmFyIEVkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBFZGdlKGlkLCBmcm9tLCB0bywgbGFiZWwpIHtcbiAgICBpZiAoaWQgPT09IHZvaWQgMCkge1xuICAgICAgaWQgPSBWQUNBTlRfRURHRV9JRDtcbiAgICB9XG5cbiAgICBpZiAoZnJvbSA9PT0gdm9pZCAwKSB7XG4gICAgICBmcm9tID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKHRvID09PSB2b2lkIDApIHtcbiAgICAgIHRvID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX0VER0VfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZnJvbSA9IGZyb207XG4gICAgdGhpcy50byA9IHRvO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIHJldHVybiBFZGdlO1xufSgpO1xuXG5leHBvcnRzLkVkZ2UgPSBFZGdlO1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE5vZGUoaWQsIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX05PREVfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gIH1cblxuICBOb2RlLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2VkZ2UuaWRdID0gZWRnZTtcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oKTtcblxuZXhwb3J0cy5Ob2RlID0gTm9kZTtcblxudmFyIEdyYXBoID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gR3JhcGgoaWQsIGVkZ2VJZEF1dG9JbmNyZWFzZSwgZGlyZWN0ZWQpIHtcbiAgICBpZiAoaWQgPT09IHZvaWQgMCkge1xuICAgICAgaWQgPSBWQUNBTlRfTk9ERV9JRDtcbiAgICB9XG5cbiAgICBpZiAoZWRnZUlkQXV0b0luY3JlYXNlID09PSB2b2lkIDApIHtcbiAgICAgIGVkZ2VJZEF1dG9JbmNyZWFzZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZWRnZUlkQXV0b0luY3JlYXNlID0gZWRnZUlkQXV0b0luY3JlYXNlO1xuICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICB0aGlzLm5vZGVzID0gW107XG4gICAgdGhpcy5ub2RlTWFwID0ge307XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gICAgdGhpcy5ub2RlTGFiZWxNYXAgPSB7fTtcbiAgICB0aGlzLmVkZ2VMYWJlbE1hcCA9IHt9O1xuICAgIHRoaXMuY291bnRlciA9IDA7XG4gICAgdGhpcy5kaXJlY3RlZCA9IGRpcmVjdGVkO1xuICB9XG5cbiAgR3JhcGgucHJvdG90eXBlLmdldE5vZGVOdW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMubGVuZ3RoO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5hZGROb2RlID0gZnVuY3Rpb24gKGlkLCBsYWJlbCkge1xuICAgIGlmICh0aGlzLm5vZGVNYXBbaWRdKSByZXR1cm47XG4gICAgdmFyIG5vZGUgPSBuZXcgTm9kZShpZCwgbGFiZWwpO1xuICAgIHRoaXMubm9kZXMucHVzaChub2RlKTtcbiAgICB0aGlzLm5vZGVNYXBbaWRdID0gbm9kZTtcbiAgICBpZiAoIXRoaXMubm9kZUxhYmVsTWFwW2xhYmVsXSkgdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdLnB1c2goaWQpO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGlkLCBmcm9tLCB0bywgbGFiZWwpIHtcbiAgICBpZiAodGhpcy5lZGdlSWRBdXRvSW5jcmVhc2UgfHwgaWQgPT09IHVuZGVmaW5lZCkgaWQgPSB0aGlzLmNvdW50ZXIrKztcbiAgICBpZiAodGhpcy5ub2RlTWFwW2Zyb21dICYmIHRoaXMubm9kZU1hcFt0b10gJiYgdGhpcy5ub2RlTWFwW3RvXS5lZGdlTWFwW2lkXSkgcmV0dXJuO1xuICAgIHZhciBlZGdlID0gbmV3IEVkZ2UoaWQsIGZyb20sIHRvLCBsYWJlbCk7XG4gICAgdGhpcy5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgIHRoaXMuZWRnZU1hcFtpZF0gPSBlZGdlO1xuICAgIHRoaXMubm9kZU1hcFtmcm9tXS5hZGRFZGdlKGVkZ2UpO1xuICAgIGlmICghdGhpcy5lZGdlTGFiZWxNYXBbbGFiZWxdKSB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChlZGdlKTtcblxuICAgIGlmICghdGhpcy5kaXJlY3RlZCkge1xuICAgICAgdmFyIHJFZGdlID0gbmV3IEVkZ2UoaWQsIHRvLCBmcm9tLCBsYWJlbCk7XG4gICAgICB0aGlzLm5vZGVNYXBbdG9dLmFkZEVkZ2UockVkZ2UpO1xuICAgICAgdGhpcy5lZGdlTGFiZWxNYXBbbGFiZWxdLnB1c2gockVkZ2UpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gR3JhcGg7XG59KCk7XG5cbmV4cG9ydHMuR3JhcGggPSBHcmFwaDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/gSpan/struct.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/gaddi.js": /*!***************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/gaddi.js ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _tslib = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n\nvar _floydWarshall = _interopRequireDefault(__webpack_require__(/*! ./floydWarshall */ \"./node_modules/@antv/algorithm/lib/floydWarshall.js\"));\n\nvar _gSpan = _interopRequireDefault(__webpack_require__(/*! ./gSpan/gSpan */ \"./node_modules/@antv/algorithm/lib/gSpan/gSpan.js\"));\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ./dijkstra */ \"./node_modules/@antv/algorithm/lib/dijkstra.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 为 graphData 中每个节点生成邻居单元数组\n * @param graphData\n * @param spm\n * @param nodeLabelProp\n * @param k k-近邻\n */\nvar findKNeighborUnits = function findKNeighborUnits(graphData, spm, nodeLabelProp, k) {\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (k === void 0) {\n k = 2;\n }\n\n var units = [];\n var nodes = graphData.nodes;\n spm.forEach(function (row, i) {\n units.push(findKNeighborUnit(nodes, row, i, nodeLabelProp, k));\n });\n return units;\n};\n\nvar findKNeighborUnit = function findKNeighborUnit(nodes, row, i, nodeLabelProp, k) {\n var unitNodeIdxs = [i];\n var neighbors = [];\n var labelCountMap = {};\n row.forEach(function (v, j) {\n if (v <= k && i !== j) {\n unitNodeIdxs.push(j);\n neighbors.push(nodes[j]);\n var label = nodes[j][nodeLabelProp];\n if (!labelCountMap[label]) labelCountMap[label] = {\n count: 1,\n dists: [v]\n };else {\n labelCountMap[label].count++;\n labelCountMap[label].dists.push(v);\n }\n }\n }); // 将 labelCountMap 中的 dists 按照从小到大排序,方便后面使用\n\n Object.keys(labelCountMap).forEach(function (label) {\n labelCountMap[label].dists = labelCountMap[label].dists.sort(function (a, b) {\n return a - b;\n });\n });\n return {\n nodeIdx: i,\n nodeId: nodes[i].id,\n nodeIdxs: unitNodeIdxs,\n neighbors: neighbors,\n neighborNum: unitNodeIdxs.length - 1,\n nodeLabelCountMap: labelCountMap\n };\n};\n/**\n * 随机寻找点对,满足距离小于 k\n * @param k 参数 k,表示 k-近邻\n * @param nodeNum 参数 length\n * @param maxNodePairNum 寻找点对的数量不超过 maxNodePairNum\n * @param spm 最短路径矩阵\n */\n\n\nvar findNodePairsRandomly = function findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm) {\n // 每个节点需要随机找出的点对数\n var nodePairNumEachNode = Math.ceil(maxNodePairNum / nodeNum);\n var nodePairMap = {};\n var foundNodePairCount = 0; // 遍历节点,为每个节点随机找出 nodePairNumEachNode 个点对,满足距离小于 k。找到的点对数量超过 maxNodePairNum 或所有节点遍历结束时终止\n\n kNeighborUnits.forEach(function (unit, i) {\n // 若未达到 nodePairNumEachNode,或循环次数小于最大循环次数(2 * nodeNum),继续循环\n var nodePairForICount = 0;\n var outerLoopCount = 0;\n var neighbors = unit.nodeIdxs; // the first one is the center node\n\n var neighborNum = unit.neighborNum - 1;\n\n while (nodePairForICount < nodePairNumEachNode) {\n // 另一端节点在节点数组中的的 index\n var oidx = neighbors[1 + Math.floor(Math.random() * neighborNum)];\n var innerLoopCount = 0; // 若随机得到的另一端 idx 不符合条件,则继续 random。条件是不是同一个节点、这个点对没有被记录过、距离小于 k\n\n while (nodePairMap[\"\".concat(i, \"-\").concat(oidx)] || nodePairMap[\"\".concat(oidx, \"-\").concat(i)]) {\n oidx = Math.floor(Math.random() * nodeNum);\n innerLoopCount++;\n if (innerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n }\n\n if (innerLoopCount < 2 * nodeNum) {\n // 未达到最大循环次数,说明找到了合适的另一端\n nodePairMap[\"\".concat(i, \"-\").concat(oidx)] = {\n start: i,\n end: oidx,\n distance: spm[i][oidx]\n };\n nodePairForICount++;\n foundNodePairCount++; // 如果当前找到的点对数量达到了上限,返回结果\n\n if (foundNodePairCount >= maxNodePairNum) return nodePairMap;\n }\n\n outerLoopCount++;\n if (outerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n } // 这个节点没有找到足够 nodePairNumEachNode 的点对。更新 nodePairNumEachNode,让后续节点找更多的点对\n\n\n if (nodePairForICount < nodePairNumEachNode) {\n var gap = nodePairNumEachNode - nodePairForICount;\n nodePairNumEachNode = (nodePairNumEachNode + gap) / (nodeNum - i - 1);\n }\n });\n return nodePairMap;\n};\n/**\n * 计算所有 nodePairMap 中节点对的相交邻居诱导子图\n * @param nodePairMap 节点对 map,key 为 node1.id-node2.id,value 为 { startNodeIdx, endNodeIdx, distance }\n * @param neighborUnits 每个节点的邻居元数组\n * @param graphData 原图数据\n * @param edgeMap 边的 map,方便检索\n * @param cachedInducedGraphMap 缓存的结果,下次进入该函数将继续更新该缓存,若 key 在缓存中存在则不需要重复计算\n */\n\n\nvar getIntersectNeighborInducedGraph = function getIntersectNeighborInducedGraph(nodePairMap, neighborUnits, graphData, cachedInducedGraphMap) {\n var nodes = graphData.nodes;\n if (!cachedInducedGraphMap) cachedInducedGraphMap = {};\n Object.keys(nodePairMap).forEach(function (key) {\n var _a, _b;\n\n if (cachedInducedGraphMap && cachedInducedGraphMap[key]) return;\n cachedInducedGraphMap[key] = {\n nodes: [],\n edges: []\n };\n var pair = nodePairMap[key];\n var startUnitNodeIds = (_a = neighborUnits[pair.start]) === null || _a === void 0 ? void 0 : _a.nodeIdxs;\n var endUnitNodeIds = (_b = neighborUnits[pair.end]) === null || _b === void 0 ? void 0 : _b.nodeIdxs;\n if (!startUnitNodeIds || !endUnitNodeIds) return; // 不存在邻元,返回空图\n\n var endSet = new Set(endUnitNodeIds);\n var intersect = startUnitNodeIds.filter(function (x) {\n return endSet.has(x);\n }); // 可能会爆栈(在 1580 + 6 nodes full-connected 时出现)\n\n if (!intersect || !intersect.length) return; // 没有交集,返回空图\n\n var intersectIdMap = {};\n var intersectLength = intersect.length;\n\n for (var i = 0; i < intersectLength; i++) {\n var node = nodes[intersect[i]];\n cachedInducedGraphMap[key].nodes.push(node); // 将交集中的点加入诱导子图\n\n intersectIdMap[node.id] = true;\n } // 遍历所有边数据,如果边的两端都在交集中,将该边加入诱导子图\n\n\n graphData.edges.forEach(function (edge) {\n if (intersectIdMap[edge.source] && intersectIdMap[edge.target]) cachedInducedGraphMap[key].edges.push(edge);\n });\n });\n return cachedInducedGraphMap;\n};\n/**\n * 计算 strcutre 在 graph 上的匹配数量\n * @param graph 图数据\n * @param structure 目前支持只有两个节点一条边的最简单结构\n * @param nodeLabelProp 节点类型字段名\n * @param edgeLabelProp 边类型字段名\n */\n\n\nvar getMatchedCount = function getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp) {\n var _a, _b;\n\n var nodeMap = {};\n graph.nodes.forEach(function (node) {\n nodeMap[node.id] = node;\n });\n var count = 0;\n if (!((_a = structure === null || structure === void 0 ? void 0 : structure.edges) === null || _a === void 0 ? void 0 : _a.length) || ((_b = structure === null || structure === void 0 ? void 0 : structure.nodes) === null || _b === void 0 ? void 0 : _b.length) < 2) return 0;\n graph.edges.forEach(function (e) {\n var sourceLabel = nodeMap[e.source][nodeLabelProp];\n var targetLabel = nodeMap[e.target][nodeLabelProp];\n var strNodeLabel1 = structure === null || structure === void 0 ? void 0 : structure.nodes[0][nodeLabelProp];\n var strNodeLabel2 = structure === null || structure === void 0 ? void 0 : structure.nodes[1][nodeLabelProp];\n var strEdgeLabel = structure === null || structure === void 0 ? void 0 : structure.edges[0][edgeLabelProp];\n if (e[edgeLabelProp] !== strEdgeLabel) return;\n\n if (sourceLabel === strNodeLabel1 && targetLabel === strNodeLabel2 || sourceLabel === strNodeLabel2 && targetLabel === strNodeLabel1) {\n count++;\n }\n });\n return count;\n};\n/**\n * structures 中寻找最具有代表性的一个。这个结构是使得 matchedCountMap 的分组方式类内间距最小,类间间距最大\n * @param matchedCountMap 每个 structure 分类后的各图匹配数量,格式 { [strcture.idx]: { [interInducedGraphKey]: count } }\n * @param structureNum strcuture 个数,与 matchedCountMap.length 对应\n * @param structures\n */\n\n\nvar findRepresentStructure = function findRepresentStructure(matchedCountMap, structureNum, structures) {\n var maxOffset = Infinity,\n representClusterType = 0;\n\n var _loop_1 = function _loop_1(i) {\n // 一种分组的 map,key 是 intGraph 的 key,value 是 structures[i] 的匹配个数\n var countMapI = matchedCountMap[i]; // 按照 value 为该组排序,生成 keys 的数组:\n\n var sortedGraphKeys = Object.keys(countMapI).sort(function (a, b) {\n return countMapI[a] - countMapI[b];\n }); // 共 100 个 graphKeys,将 graphKeys 按顺序分为 groupNum 组\n\n var groupNum = 10;\n var clusters = []; // 总共有 groupNum 个项\n\n sortedGraphKeys.forEach(function (key, j) {\n if (!clusters[j % groupNum]) clusters[j % groupNum] = {\n graphs: [],\n totalCount: 0,\n aveCount: 0\n };\n clusters[j % groupNum].graphs.push(key);\n clusters[j % groupNum].totalCount += countMapI[key];\n }); // 计算 cluster 与 cluster 之间的距离 innerDist,每个 cluster 内部的距离 intraDist\n\n var aveIntraDist = 0; // 该类的类内平均值\n\n var aveCounts = []; // 类内平均匹配数量,将用于计算类间距离\n\n clusters.forEach(function (graphsInCluster) {\n // 类内均值\n var aveCount = graphsInCluster.totalCount / graphsInCluster.graphs.length;\n graphsInCluster.aveCount = aveCount;\n aveCounts.push(aveCount); // 对于每类,计算类内间距平均值\n\n var aveIntraPerCluster = 0;\n var graphsNum = graphsInCluster.length;\n graphsInCluster.graphs.forEach(function (graphKey1, j) {\n var graph1Count = countMapI[graphKey1];\n graphsInCluster.graphs.forEach(function (graphKey2, k) {\n if (j === k) return;\n aveIntraPerCluster += Math.abs(graph1Count - countMapI[graphKey2]);\n });\n });\n aveIntraPerCluster /= graphsNum * (graphsNum - 1) / 2;\n aveIntraDist += aveIntraPerCluster;\n });\n aveIntraDist /= clusters.length; // 用类内均值计算类间距\n\n var aveInterDist = 0; // 类间间距平均值\n\n aveCounts.forEach(function (aveCount1, j) {\n aveCounts.forEach(function (aveCount2, k) {\n if (j === k) return;\n aveInterDist += Math.abs(aveCount1 - aveCount2);\n });\n aveInterDist /= aveCounts.length * (aveCounts.length - 1) / 2;\n }); // 寻找 (类间间距均值-类内间距均值) 最大的一种分组方式(对应的 structure 就是最终要找的唯一 DS(G))\n\n var offset = aveInterDist - aveIntraDist;\n\n if (maxOffset < offset) {\n maxOffset = offset;\n representClusterType = i;\n }\n };\n\n for (var i = 0; i < structureNum; i++) {\n _loop_1(i);\n }\n\n return {\n structure: structures[representClusterType],\n structureCountMap: matchedCountMap[representClusterType]\n };\n};\n\nvar getNodeMaps = function getNodeMaps(nodes, nodeLabelProp) {\n var nodeMap = {},\n nodeLabelMap = {};\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = {\n idx: i,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var label = node[nodeLabelProp];\n if (!nodeLabelMap[label]) nodeLabelMap[label] = [];\n nodeLabelMap[label].push(node);\n });\n return {\n nodeMap: nodeMap,\n nodeLabelMap: nodeLabelMap\n };\n};\n\nvar getEdgeMaps = function getEdgeMaps(edges, edgeLabelProp, nodeMap) {\n var edgeMap = {},\n edgeLabelMap = {};\n edges.forEach(function (edge, i) {\n edgeMap[\"\".concat(_util.uniqueId)] = {\n idx: i,\n edge: edge\n };\n var label = edge[edgeLabelProp];\n if (!edgeLabelMap[label]) edgeLabelMap[label] = [];\n edgeLabelMap[label].push(edge);\n var sourceNode = nodeMap[edge.source];\n\n if (sourceNode) {\n sourceNode.degree++;\n sourceNode.outDegree++;\n }\n\n var targetNode = nodeMap[edge.target];\n\n if (targetNode) {\n targetNode.degree++;\n targetNode.inDegree++;\n }\n });\n return {\n edgeMap: edgeMap,\n edgeLabelMap: edgeLabelMap\n };\n};\n/**\n * 输出最短路径的 map,key 为 sourceNode.id-targetNode.id,value 为这两个节点的最短路径长度\n * @param nodes\n * @param spm\n * @param directed\n */\n\n\nvar getSpmMap = function getSpmMap(nodes, spm, directed) {\n var length = spm.length;\n var map = {};\n spm.forEach(function (row, i) {\n var start = directed ? 0 : i + 1;\n var iId = nodes[i].id;\n\n for (var j = start; j < length; j++) {\n if (i === j) continue;\n var jId = nodes[j].id;\n var dist = row[j];\n map[\"\".concat(iId, \"-\").concat(jId)] = dist;\n if (!directed) map[\"\".concat(jId, \"-\").concat(iId)] = dist;\n }\n });\n return map;\n};\n/**\n * 计算一对节点(node1,node2)的 NDS 距离\n * @param graph 原图数据\n * @param node1\n * @param node2\n */\n\n\nvar getNDSDist = function getNDSDist(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) {\n var _a;\n\n var key = \"\".concat(node1.id, \"-\").concat(node2.id);\n if (cachedNDSMap && cachedNDSMap[key]) return cachedNDSMap[key];\n var interInducedGraph = cachedInterInducedGraph ? cachedInterInducedGraph[key] : undefined; // 若没有缓存相交邻居诱导子图,计算\n\n if (!interInducedGraph) {\n var pairMap = (_a = {}, _a[key] = {\n start: nodeMap[node1.id].idx,\n end: nodeMap[node2.id].idx,\n distance: spDist\n }, _a);\n cachedInterInducedGraph = getIntersectNeighborInducedGraph(pairMap, kNeighborUnits, graph, cachedInterInducedGraph);\n interInducedGraph = cachedInterInducedGraph[key];\n }\n\n return getMatchedCount(interInducedGraph, structure, nodeLabelProp, edgeLabelProp);\n};\n/**\n * 计算 pattern 上绩点的度数并存储到 minPatternNodeLabelDegreeMap\n */\n\n\nvar stashPatternNodeLabelDegreeMap = function stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap) {\n var _a, _b, _c;\n\n var minPatternNodeLabelDegree = (_a = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _a === void 0 ? void 0 : _a.degree;\n var minPatternNodeLabelInDegree = (_b = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _b === void 0 ? void 0 : _b.inDegree;\n var minPatternNodeLabelOutDegree = (_c = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _c === void 0 ? void 0 : _c.outDegree;\n\n if (minPatternNodeLabelDegreeMap[neighborLabel] === undefined) {\n minPatternNodeLabelDegree = Infinity;\n minPatternNodeLabelInDegree = Infinity;\n minPatternNodeLabelOutDegree = Infinity;\n patternNodeLabelMap[neighborLabel].forEach(function (patternNodeWithLabel) {\n var patternNodeDegree = patternNodeMap[patternNodeWithLabel.id].degree;\n if (minPatternNodeLabelDegree > patternNodeDegree) minPatternNodeLabelDegree = patternNodeDegree;\n var patternNodeInDegree = patternNodeMap[patternNodeWithLabel.id].inDegree;\n if (minPatternNodeLabelInDegree > patternNodeInDegree) minPatternNodeLabelInDegree = patternNodeInDegree;\n var patternNodeOutDegree = patternNodeMap[patternNodeWithLabel.id].outDegree;\n if (minPatternNodeLabelOutDegree > patternNodeOutDegree) minPatternNodeLabelOutDegree = patternNodeOutDegree;\n });\n minPatternNodeLabelDegreeMap[neighborLabel] = {\n degree: minPatternNodeLabelDegree,\n inDegree: minPatternNodeLabelInDegree,\n outDegree: minPatternNodeLabelOutDegree\n };\n }\n\n return {\n minPatternNodeLabelDegree: minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree: minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree: minPatternNodeLabelOutDegree\n };\n};\n/**\n * GADDI 模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nvar GADDI = function GADDI(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n var _a;\n\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n if (!graphData || !graphData.nodes) return; // 分为三步:\n // 0. 预计算:节点/边数,邻接矩阵、最短路径矩阵\n // 1. 处理原图 graphData。再分为 1~5 小步\n // 2. 匹配\n // console.log(\"----- stage-pre: preprocessing -------\");\n // -------- 第零步,预计算:节点/边数,邻接矩阵、最短路径矩阵-------\n\n var nodeNum = graphData.nodes.length;\n if (!nodeNum) return; // console.log(\"----- stage-pre.1: calc shortest path matrix for graph -------\");\n\n var spm = (0, _floydWarshall.default)(graphData, directed); // console.log(\n // \"----- stage-pre.2: calc shortest path matrix for pattern -------\"\n // );\n\n var patternSpm = (0, _floydWarshall.default)(pattern, directed); // console.log(\n // \"----- stage-pre.3: calc shortest path matrix map for graph -------\"\n // );\n\n var spmMap = getSpmMap(graphData.nodes, spm, directed); // console.log(\n // \"----- stage-pre.4: calc shortest path matrix map for pattern -------\"\n // );\n\n var patternSpmMap = getSpmMap(pattern.nodes, patternSpm, directed); // console.log(\"----- stage-pre.5: establish maps -------\");\n // 节点的 map,以 id 为 id 映射,方便后续快速检索\n\n var _b = getNodeMaps(graphData.nodes, nodeLabelProp),\n nodeMap = _b.nodeMap,\n nodeLabelMap = _b.nodeLabelMap;\n\n var _c = getNodeMaps(pattern.nodes, nodeLabelProp),\n patternNodeMap = _c.nodeMap,\n patternNodeLabelMap = _c.nodeLabelMap; // 计算节点度数\n\n\n getEdgeMaps(graphData.edges, edgeLabelProp, nodeMap);\n var patternEdgeLabelMap = getEdgeMaps(pattern.edges, edgeLabelProp, patternNodeMap).edgeLabelMap; // 若未指定 length,自动计算 pattern 半径(最短路径最大值)\n\n var patternSpmSpread = [];\n patternSpm === null || patternSpm === void 0 ? void 0 : patternSpm.forEach(function (row) {\n patternSpmSpread = patternSpmSpread.concat(row);\n });\n if (!length) length = Math.max.apply(Math, (0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], patternSpmSpread, false), [2], false));\n if (!k) k = length; // console.log(\"params\", directed, length, k);\n // console.log(\"----- stage-pre.6: calc k neighbor units -------\");\n // 计算每个节点的 k 邻元集合\n\n var kNeighborUnits = findKNeighborUnits(graphData, spm, nodeLabelProp, k);\n var patternKNeighborUnits = findKNeighborUnits(pattern, patternSpm, nodeLabelProp, k); // console.log(\n // \"----- stage0: going to processing graph and find intersect neighbor induced graphs -------\"\n // );\n // console.log(\"----- stage0.1: going to select random node pairs -------\");\n // -------- 第一步,处理原图 graphData-------\n // 1.1. 随机选择最多 100 个点对,满足距离小于 Length 和 k\n // 当 graphData 少于 20 个节点,则不能找出 100 个点对,只找出不多于 n(n-1)/2 个点对\n\n var maxNodePairNum = Math.min(100, nodeNum * (nodeNum - 1) / 2);\n var nodePairsMap = findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm); // console.log(\n // \"----- stage0.2: going to calculate intersect neighbor induced graphs -------\"\n // );\n // 1.2. 生成上面节点对的相应相交邻居诱导子图。格式为 {'beginNodeIdx-endNodeIdx': {nodes: [], edges: []}}\n\n var intGMap = getIntersectNeighborInducedGraph(nodePairsMap, kNeighborUnits, graphData); // 1.3. 使用 gSpan 算法(frequent graph mining)计算 ISIntG 的前 10 个频率最高的子结构(3-4条边)\n\n var top = 10,\n minSupport = 1,\n minNodeNum = 1,\n maxNodeNum = 4;\n var params = {\n graphs: intGMap,\n nodeLabelProp: nodeLabelProp,\n edgeLabelProp: edgeLabelProp,\n minSupport: minSupport,\n minNodeNum: minNodeNum,\n maxNodeNum: maxNodeNum,\n directed: directed\n }; // console.log(\n // \"----- stage1: (gSpan) going to find frequent structure dsG -------\"\n // );\n // console.log(\"----- stage1.1: going to run gSpan -------\");\n // 暂时假设生成的 sub structure 都只有一条边\n\n var freStructures = (0, _gSpan.default)(params).slice(0, top); // structureNum 可能小于 top\n\n var structureNum = freStructures.length; // 1.4. 计算上述 10 个子结构在 intGMap 中每个诱导子图的匹配个数\n\n var matchedCountMap = [];\n freStructures.forEach(function (structure, i) {\n matchedCountMap[i] = {};\n Object.keys(intGMap).forEach(function (key) {\n var graph = intGMap[key];\n var subStructureCount = getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp);\n matchedCountMap[i][key] = subStructureCount;\n });\n }); // console.log(\n // \"----- stage1.1: going to find the most represent strucutre -------\"\n // );\n // 1.5. 对于每个子结构,根据匹配个数为 intGMap 中的诱导子图分组,生成 structureNum 种分组\n // 计算每种分组的类间距和类内间距,找到类间距最大、类内间距最小的一种分组,这种分组对应的子结构被选为唯一代表性子结构 DS(G)\n\n var _d = findRepresentStructure(matchedCountMap, structureNum, freStructures),\n dsG = _d.structure,\n ndsDist = _d.structureCountMap; // -------- 第二步,匹配-------\n // 2.1 找到从 Q 中的一个节点作为起始节点,寻找 G 中的匹配。这个其实节点的标签可以在 G 中找到最多的节点\n\n\n var beginPNode = pattern.nodes[0],\n candidates = [],\n label = (_a = pattern.nodes[0]) === null || _a === void 0 ? void 0 : _a[nodeLabelProp],\n maxNodeNumWithSameLabel = -Infinity;\n pattern.nodes.forEach(function (node) {\n var pLabel = node[nodeLabelProp];\n var nodesWithSameLabel = nodeLabelMap[pLabel];\n\n if ((nodesWithSameLabel === null || nodesWithSameLabel === void 0 ? void 0 : nodesWithSameLabel.length) > maxNodeNumWithSameLabel) {\n maxNodeNumWithSameLabel = nodesWithSameLabel.length;\n candidates = nodesWithSameLabel;\n label = pLabel;\n beginPNode = node;\n }\n }); // console.log(\"----- stage2: going to find candidates -------\");\n // 全局缓存,避免重复计算\n\n var minPatternNodeLabelDegreeMap = {}; // key 是 label,value 是该 label 节点的最小度数\n\n var patternIntGraphMap = {},\n patternNDSDist = {},\n // key 为 node.id-node.id\n patternNDSDistMap = {}; // key 为 node.id-label2,value nds距离值数组(按从大到小排序,无需关心具体对应哪个 node2)\n // 2.2.2 对于 Q 中的另一个标签的 k 个节点,计算它们到 node 的最短路径以及 NDS 距离\n\n var patternSpDist = {};\n var patternSpDistBack = {};\n Object.keys(patternNodeLabelMap).forEach(function (label2, j) {\n patternSpDist[label2] = [];\n\n if (directed) {\n patternSpDistBack[label2] = [];\n }\n\n var maxDist = -Infinity;\n var patternNodesWithLabel2 = patternNodeLabelMap[label2];\n var patternNodePairMap = {};\n patternNodesWithLabel2.forEach(function (nodeWithLabel2) {\n var dist = patternSpmMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)];\n dist && patternSpDist[label2].push(dist);\n if (maxDist < dist) maxDist = dist;\n patternNodePairMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)] = {\n start: 0,\n end: patternNodeMap[nodeWithLabel2.id].idx,\n distance: dist\n };\n\n if (directed) {\n var distBack = patternSpmMap[\"\".concat(nodeWithLabel2.id, \"-\").concat(beginPNode.id)];\n distBack && patternSpDistBack[label2].push(distBack);\n }\n }); // spDist[label2] 按照从小到大排序\n\n patternSpDist[label2] = patternSpDist[label2].sort(function (a, b) {\n return a - b;\n });\n if (directed) patternSpDistBack[label2] = patternSpDistBack[label2].sort(function (a, b) {\n return a - b;\n }); // 计算 Q 中所有 label2 节点到 beginPNode 的 NDS 距离\n // 所有 label2 节点到 beginPNode 的邻居相交诱导子图:\n // key: node1.id-node2.id\n\n patternIntGraphMap = getIntersectNeighborInducedGraph(patternNodePairMap, patternKNeighborUnits, pattern, patternIntGraphMap); // pattern 中 beginNode 到当前 label2 节点 的 NDS 距离(数组,无需关心具体对应到哪个节点)\n\n var currentPatternNDSDistArray = [];\n Object.keys(patternNodePairMap).forEach(function (key) {\n if (patternNDSDist[key]) {\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var patternIntGraph = patternIntGraphMap[key];\n patternNDSDist[key] = getMatchedCount(patternIntGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n }); // 根据值为 currentPatternNDSDist 从大到小排序\n\n currentPatternNDSDistArray = currentPatternNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n patternNDSDistMap[\"\".concat(beginPNode.id, \"-\").concat(label2)] = currentPatternNDSDistArray;\n if (label2 === label) return;\n var candidatesNum = (candidates === null || candidates === void 0 ? void 0 : candidates.length) || 0;\n\n var _loop_4 = function _loop_4(m) {\n var cNode = candidates[m]; // prune1:若 candidates 中节点 cNode 的 kNeighborUnits 中标签为 label2 的节点个数少于 pattern 中 label2 个数,删去它\n\n var graphNeighborUnit = kNeighborUnits[nodeMap[cNode.id].idx];\n var graphNeighborUnitCountMap = graphNeighborUnit.nodeLabelCountMap[label2];\n var patternLabel2Num = patternNodeLabelMap[label2].length;\n\n if (!graphNeighborUnitCountMap || graphNeighborUnitCountMap.count < patternLabel2Num) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune2:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点最短路径大于 patternSpDist[label2],删去它\n // (prune2 规则即:candidate 相关的最短路径的最大 spDist[label2].length 个,按照大小顺序依次和 patternSpDist[label2] 中的值比较,只要遇到一个是 G > Q 的,就删去这个 candidate)\n\n\n var prune2Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (graphNeighborUnitCountMap.dists[n] > patternSpDist[label2][n]) {\n prune2Invalid = true;\n break;\n }\n }\n\n if (prune2Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune3:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点 NDS 距离小于 patternNDSDist[beginNode.id-label2],删去它\n // TODO:prune3,currentPatternNDSDistArray 与 currentNDSDist 的比较\n // 计算 G 中所有 label2 节点到 cNode 的 NDS 距离\n // 所有 label2 节点到 cNode 的邻居相交诱导子图:\n\n\n var cNodePairMap = {};\n graphNeighborUnit.neighbors.forEach(function (neighborNode) {\n var dist = spmMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)];\n cNodePairMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)] = {\n start: nodeMap[cNode.id].idx,\n end: nodeMap[neighborNode.id].idx,\n distance: dist\n };\n }); // 更新 intGMap\n\n intGMap = getIntersectNeighborInducedGraph(cNodePairMap, kNeighborUnits, graphData, intGMap); // candidate 到它周围 label2 节点的 NDS 距离, key 是 node.id-node.id\n\n var currentNDSDistArray = [];\n Object.keys(cNodePairMap).forEach(function (key) {\n if (ndsDist[key]) {\n currentNDSDistArray.push(ndsDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var intGraph = intGMap[key];\n ndsDist[key] = getMatchedCount(intGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentNDSDistArray.push(ndsDist[key]);\n }); // 根据值为 currentNDSDistArray 从大到小排序\n\n currentNDSDistArray = currentNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n var prune3Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (currentNDSDistArray[n] < currentPatternNDSDistArray[n]) {\n prune3Invalid = true;\n break;\n }\n }\n\n if (prune3Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n }\n };\n\n for (var m = candidatesNum - 1; m >= 0; m--) {\n _loop_4(m);\n }\n });\n var candidateGraphs = []; // console.log(\n // \"----- stage3: going to splice neighbors for each candidate graph -------\"\n // );\n // candidates 经过筛选后,以每个 candidate 为中心,生成 Length-neighbor 的邻居诱导子图\n // 并在诱导子图中去除不可能在 Q 上找到匹配的点:在 Q 上不存在的 label,其他 label 到 candidate 的最大最短距离符合 Q、NDS 距离符合 Q\n\n candidates === null || candidates === void 0 ? void 0 : candidates.forEach(function (candidate) {\n var nodeIdx = nodeMap[candidate.id].idx;\n var lengthNeighborUnit = findKNeighborUnit(graphData.nodes, spm[nodeIdx], nodeIdx, nodeLabelProp, length);\n var neighborNodes = lengthNeighborUnit.neighbors; // 删除不可能找到匹配的邻居点\n\n var neighborNum = neighborNodes.length;\n var unmatched = false;\n\n for (var i = neighborNum - 1; i >= 0; i--) {\n // 如果通过裁剪,符合条件的节点数量已过少,说明不能匹配这个 candidate 相关的图\n if (neighborNodes.length + 1 < pattern.nodes.length) {\n unmatched = true;\n return;\n }\n\n var neighborNode = neighborNodes[i];\n var neighborLabel = neighborNode[nodeLabelProp]; // prune1: 若该邻居点的 label 不存在于 pattern 中,移除这个点\n\n if (!patternNodeLabelMap[neighborLabel] || !patternNodeLabelMap[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune2: 若该邻居点到 candidate 的最短路径比和它有相同 label 的节点到 beginPNode 的最大最短路径长度长,移除这个点\n // prune2.1: 如果没有这个标签到 beginPNode 的距离记录,说明 pattern 上(可能 beginPNode 是这个 label)没有其他这个 label 的节点\n\n\n if (!patternSpDist[neighborLabel] || !patternSpDist[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n var key = \"\".concat(candidate.id, \"-\").concat(neighborNode.id); // prune2.2\n\n var distToCandidate = spmMap[key];\n var idx = patternSpDist[neighborLabel].length - 1;\n var maxDistWithLabelInPattern = patternSpDist[neighborLabel][idx]; // patternSpDist[neighborLabel] 已经按照从小到大排序\n\n if (distToCandidate > maxDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n if (directed) {\n var keyBack = \"\".concat(neighborNode.id, \"-\").concat(candidate.id);\n var distFromCandidate = spmMap[keyBack];\n idx = patternSpDistBack[neighborLabel].length - 1;\n var maxBackDistWithLabelInPattern = patternSpDistBack[neighborLabel][idx];\n\n if (distFromCandidate > maxBackDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // prune3: 若该邻居点到 candidate 的 NDS 距离比和它有相同 label 的节点到 beginPNode 的最小 NDS 距离小,移除这个点\n\n\n var ndsToCandidate = ndsDist[key] ? ndsDist[key] : getNDSDist(graphData, candidate, neighborNode, nodeMap, distToCandidate, kNeighborUnits, dsG, nodeLabelProp, edgeLabelProp, ndsDist, intGMap);\n var patternKey = \"\".concat(beginPNode.id, \"-\").concat(neighborLabel);\n var minNdsWithLabelInPattern = patternNDSDistMap[patternKey][patternNDSDistMap[patternKey].length - 1]; // patternNDSDist[key] 一定存在\n\n if (ndsToCandidate < minNdsWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune4: 若该邻居点的度数小于 pattern 同 label 节点最小度数,删去该点\n\n\n var _a = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _a.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _a.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _a.minPatternNodeLabelOutDegree;\n\n if (nodeMap[neighborNode.id].degree < minPatternNodeLabelDegree) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // 节点在个数上符合匹配(不少于 pattern 的节点个数),现在筛选相关边\n\n\n if (!unmatched) {\n candidateGraphs.push({\n nodes: [candidate].concat(neighborNodes)\n });\n }\n }); // console.log(\n // \"----- stage4: going to splice edges and neighbors for each candidate graph -------\"\n // );\n\n var undirectedLengthsToBeginPNode = (0, _dijkstra.default)(pattern, beginPNode.id, false).length;\n var undirectedLengthsToBeginPNodeLabelMap = {};\n\n if (directed) {\n Object.keys(undirectedLengthsToBeginPNode).forEach(function (nodeId) {\n var nodeLabel = patternNodeMap[nodeId].node[nodeLabelProp];\n if (!undirectedLengthsToBeginPNodeLabelMap[nodeLabel]) undirectedLengthsToBeginPNodeLabelMap[nodeLabel] = [undirectedLengthsToBeginPNode[nodeId]];else undirectedLengthsToBeginPNodeLabelMap[nodeLabel].push(undirectedLengthsToBeginPNode[nodeId]);\n });\n Object.keys(undirectedLengthsToBeginPNodeLabelMap).forEach(function (pLabel) {\n undirectedLengthsToBeginPNodeLabelMap[pLabel].sort(function (a, b) {\n return a - b;\n });\n });\n } else {\n undirectedLengthsToBeginPNodeLabelMap = patternSpDist;\n } // 现在 candidateGraphs 里面只有节点,进行边的筛选\n\n\n var candidateGraphNum = candidateGraphs.length;\n\n var _loop_2 = function _loop_2(i) {\n var candidateGraph = candidateGraphs[i];\n var candidate = candidateGraph.nodes[0];\n var candidateNodeLabelCountMap = {};\n var candidateNodeMap = {};\n candidateGraph.nodes.forEach(function (node, q) {\n candidateNodeMap[node.id] = {\n idx: q,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var cNodeLabel = node[nodeLabelProp];\n if (!candidateNodeLabelCountMap[cNodeLabel]) candidateNodeLabelCountMap[cNodeLabel] = 1;else candidateNodeLabelCountMap[cNodeLabel]++;\n }); // 根据 candidate 和 neighborNodes 中的节点生成 G 的诱导子图\n // 即,将 graphData 上两端都在 candidateGraph.nodes 中的边放入 candidateEdges\n\n var candidateEdges = [];\n var edgeLabelCountMap = {};\n graphData.edges.forEach(function (edge) {\n if (candidateNodeMap[edge.source] && candidateNodeMap[edge.target]) {\n candidateEdges.push(edge);\n if (!edgeLabelCountMap[edge[edgeLabelProp]]) edgeLabelCountMap[edge[edgeLabelProp]] = 1;else edgeLabelCountMap[edge[edgeLabelProp]]++;\n candidateNodeMap[edge.source].degree++;\n candidateNodeMap[edge.target].degree++;\n candidateNodeMap[edge.source].outDegree++;\n candidateNodeMap[edge.target].inDegree++;\n }\n }); // prune:若有一个 edgeLabel 在 candidateGraph 上的个数少于 pattern,去除该图\n\n var pattenrEdgeLabelNum = Object.keys(patternEdgeLabelMap).length;\n var prunedByEdgeLabel = false;\n\n for (var e = 0; e < pattenrEdgeLabelNum; e++) {\n var label_1 = Object.keys(patternEdgeLabelMap)[e];\n\n if (!edgeLabelCountMap[label_1] || edgeLabelCountMap[label_1] < patternEdgeLabelMap[label_1].length) {\n prunedByEdgeLabel = true;\n break;\n }\n }\n\n if (prunedByEdgeLabel) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // 遍历 candidateEdges,进行边的筛选\n\n\n var candidateEdgeNum = candidateEdges.length; // prune:若边数过少,去除该图\n\n if (candidateEdgeNum < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"break\";\n }\n\n var candidateGraphInvalid = false;\n\n var _loop_5 = function _loop_5(e) {\n var edge = candidateEdges[e];\n var edgeLabel = edge[edgeLabelProp];\n var patternEdgesWithLabel = patternEdgeLabelMap[edgeLabel]; // prune 1: 若边的 label 不存在于 pattern 边 label 中,去除该边\n\n if (!patternEdgesWithLabel || !patternEdgesWithLabel.length) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n } // prune 2: 若边的 label +两端 label 的三元组关系不能在 pattern 中找到,去除该边\n\n\n var sourceLabel = candidateNodeMap[edge.source].node[nodeLabelProp];\n var targetLabel = candidateNodeMap[edge.target].node[nodeLabelProp];\n var edgeMatched = false;\n patternEdgesWithLabel.forEach(function (patternEdge) {\n var patternSource = patternNodeMap[patternEdge.source].node;\n var patternTarget = patternNodeMap[patternEdge.target].node;\n if (patternSource[nodeLabelProp] === sourceLabel && patternTarget[nodeLabelProp] === targetLabel) edgeMatched = true;\n if (!directed && patternSource[nodeLabelProp] === targetLabel && patternTarget[nodeLabelProp] === sourceLabel) edgeMatched = true;\n });\n\n if (!edgeMatched) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n }\n };\n\n for (var e = candidateEdgeNum - 1; e >= 0; e--) {\n var state_2 = _loop_5(e);\n\n if (state_2 === \"break\") break;\n } // prune2: 删除边的过程中,发现边数过少/边 label 数过少时,去除该图\n\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n candidateGraph.edges = candidateEdges;\n var lengthsToCandidate = (0, _dijkstra.default)(candidateGraph, candidateGraph.nodes[0].id, false).length;\n Object.keys(lengthsToCandidate).reverse().forEach(function (targetId) {\n if (targetId === candidateGraph.nodes[0].id || candidateGraphInvalid) return; // prune4: 通过上述裁剪,可能导致该邻居子图变为不连通。裁剪掉目前在这个邻居子图中和 candidate(第一个节点)不连通的节点\n\n if (lengthsToCandidate[targetId] === Infinity) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n return;\n } // prune5: 经过边裁剪后,可能又出现了最短路径过长的节点 (比 pattern 中同 label 的节点到 beginNode 最大最短距离远),删去这些节点\n\n\n var nLabel = nodeMap[targetId].node[nodeLabelProp];\n\n if (!undirectedLengthsToBeginPNodeLabelMap[nLabel] || !undirectedLengthsToBeginPNodeLabelMap[nLabel].length || lengthsToCandidate[targetId] > undirectedLengthsToBeginPNodeLabelMap[nLabel][undirectedLengthsToBeginPNodeLabelMap[nLabel].length - 1]) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n }\n });\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n var degreeChanged = true;\n var loopCount = 0;\n\n while (degreeChanged && !candidateGraphInvalid) {\n degreeChanged = false; // candidate 度数不足,删去该图\n\n var condition = directed ? candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree || candidateNodeMap[candidate.id].inDegree < patternNodeMap[beginPNode.id].inDegree || candidateNodeMap[candidate.id].outDegree < patternNodeMap[beginPNode.id].outDegree : candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree;\n\n if (condition) {\n candidateGraphInvalid = true;\n break;\n } // candidate label 个数不足,删去该图\n\n\n if (candidateNodeLabelCountMap[candidate[nodeLabelProp]] < patternNodeLabelMap[candidate[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n } // prune6:去除度数过小的节点\n\n\n var currentCandidateNodeNum = candidateGraph.nodes.length;\n\n for (var o = currentCandidateNodeNum - 1; o >= 0; o--) {\n var cgNode = candidateGraph.nodes[o];\n var nodeDegree = candidateNodeMap[cgNode.id].degree;\n var nodeInDegree = candidateNodeMap[cgNode.id].inDegree;\n var nodeOutDegree = candidateNodeMap[cgNode.id].outDegree;\n var cNodeLabel = cgNode[nodeLabelProp];\n\n var _e = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, cNodeLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _e.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _e.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _e.minPatternNodeLabelOutDegree;\n\n var deleteCondition = directed ? nodeDegree < minPatternNodeLabelDegree || nodeInDegree < minPatternNodeLabelInDegree || nodeOutDegree < minPatternNodeLabelOutDegree : nodeDegree < minPatternNodeLabelDegree;\n\n if (deleteCondition) {\n candidateNodeLabelCountMap[cgNode[nodeLabelProp]]--; // 节点 label 个数不足\n\n if (candidateNodeLabelCountMap[cgNode[nodeLabelProp]] < patternNodeLabelMap[cgNode[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n candidateGraph.nodes.splice(o, 1);\n candidateNodeMap[cgNode.id] = undefined;\n degreeChanged = true;\n }\n }\n\n if (candidateGraphInvalid || !degreeChanged && loopCount !== 0) break; // 经过 prune5 节点裁剪,删去端点已经不在 candidateGraph 中的边\n\n candidateEdgeNum = candidateEdges.length;\n\n for (var y = candidateEdgeNum - 1; y >= 0; y--) {\n var cedge = candidateEdges[y];\n\n if (!candidateNodeMap[cedge.source] || !candidateNodeMap[cedge.target]) {\n candidateEdges.splice(y, 1);\n var edgeLabel = cedge[edgeLabelProp];\n edgeLabelCountMap[edgeLabel]--;\n\n if (candidateNodeMap[cedge.source]) {\n candidateNodeMap[cedge.source].degree--;\n candidateNodeMap[cedge.source].outDegree--;\n }\n\n if (candidateNodeMap[cedge.target]) {\n candidateNodeMap[cedge.target].degree--;\n candidateNodeMap[cedge.target].inDegree--;\n } // 边 label 数量不足\n\n\n if (patternEdgeLabelMap[edgeLabel] && edgeLabelCountMap[edgeLabel] < patternEdgeLabelMap[edgeLabel].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n degreeChanged = true;\n }\n }\n\n loopCount++;\n }\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // prune: 若节点/边数过少,节点/边 label 过少,去掉这个图\n\n\n if (candidateGraphInvalid || candidateGraph.nodes.length < pattern.nodes.length || candidateEdges.length < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n };\n\n for (var i = candidateGraphNum - 1; i >= 0; i--) {\n var state_1 = _loop_2(i);\n\n if (state_1 === \"break\") break;\n } // 此时已经生成的多个 candidateGraphs,可能有重复\n // console.log(\n // \"----- stage5: going to splice dulplicated candidate graphs -------\"\n // );\n // 删去 candidateGraphs 中一模一样的子图,通过边的 node-node-edgeLabel 作为 key,这类边个数作为 value,进行匹配\n\n\n var currentLength = candidateGraphs.length;\n\n var _loop_3 = function _loop_3(i) {\n var cg1 = candidateGraphs[i];\n var cg1EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg1.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg1EdgeMap[key]) cg1EdgeMap[key] = 1;else cg1EdgeMap[key]++;\n });\n\n var _loop_6 = function _loop_6(j) {\n var cg2 = candidateGraphs[j];\n var cg2EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg2.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg2EdgeMap[key]) cg2EdgeMap[key] = 1;else cg2EdgeMap[key]++;\n });\n var same = true;\n\n if (Object.keys(cg2EdgeMap).length !== Object.keys(cg1EdgeMap).length) {\n same = false;\n } else {\n Object.keys(cg1EdgeMap).forEach(function (key) {\n if (cg2EdgeMap[key] !== cg1EdgeMap[key]) same = false;\n });\n }\n\n if (same) {\n candidateGraphs.splice(j, 1);\n }\n };\n\n for (var j = currentLength - 1; j > i; j--) {\n _loop_6(j);\n }\n\n currentLength = candidateGraphs.length;\n };\n\n for (var i = 0; i <= currentLength - 1; i++) {\n _loop_3(i);\n }\n\n return candidateGraphs;\n};\n\nvar _default = GADDI;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nYWRkaS5qcz82NDlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsYUFBYSxtQkFBTyxDQUFDLGdEQUFPOztBQUU1Qiw0Q0FBNEMsbUJBQU8sQ0FBQyw0RUFBaUI7O0FBRXJFLG9DQUFvQyxtQkFBTyxDQUFDLHdFQUFlOztBQUUzRCx1Q0FBdUMsbUJBQU8sQ0FBQyxrRUFBWTs7QUFFM0QsWUFBWSxtQkFBTyxDQUFDLDBEQUFROztBQUU1QixzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBOztBQUVBO0FBQ0EsOENBQThDO0FBQzlDLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStEO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGdEQUFnRDs7QUFFaEQ7QUFDQTs7QUFFQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxrQkFBa0IsZ0NBQWdDO0FBQ3hHO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVAseUJBQXlCOztBQUV6Qix1QkFBdUI7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxvQ0FBb0M7O0FBRXBDLHlCQUF5Qjs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLLEVBQUU7O0FBRVA7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLFlBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZGQUE2Rjs7QUFFN0Y7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkIsNkRBQTZEO0FBQzdEO0FBQ0E7O0FBRUEsa0VBQWtFO0FBQ2xFO0FBQ0E7O0FBRUEseURBQXlEO0FBQ3pEO0FBQ0E7O0FBRUEscUVBQXFFO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOzs7QUFHNUM7QUFDQSxtR0FBbUc7O0FBRW5HO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBOztBQUVBO0FBQ0Esd0ZBQXdGO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRGQUE0RjtBQUM1RjtBQUNBO0FBQ0Esa0NBQWtDLDRCQUE0Qjs7QUFFOUQsMEZBQTBGOztBQUUxRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0VBQWdFOztBQUVoRSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTtBQUNMOztBQUVBLHdDQUF3Qzs7QUFFeEMsNkJBQTZCO0FBQzdCLHlCQUF5QjtBQUN6QjtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUssRUFBRTtBQUNQO0FBQ0E7O0FBRUEsa0lBQWtJOztBQUVsSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7OztBQUdBOztBQUVBLHFCQUFxQixzQkFBc0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVULG1HQUFtRzs7QUFFbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLFFBQVE7QUFDM0M7QUFDQTtBQUNBLEdBQUc7QUFDSCwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBOztBQUVBLGlDQUFpQyxRQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzREFBc0Q7O0FBRXREO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUVBQXFFOztBQUVyRTtBQUNBO0FBQ0Esd0VBQXdFOztBQUV4RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBLDZHQUE2Rzs7QUFFN0c7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHLEVBQUU7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0pBQXdKO0FBQ3hKLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4RkFBOEY7QUFDOUYsS0FBSyxFQUFFO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdHQUFnRztBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7O0FBRUEsbUJBQW1CLHlCQUF5QjtBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMLGlEQUFpRDs7QUFFakQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFOztBQUVqRTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0NBQXNDLFFBQVE7QUFDOUM7O0FBRUE7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtRkFBbUY7O0FBRW5GO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRCQUE0Qjs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUEsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDhEQUE4RDs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0RUFBNEU7O0FBRTVFOztBQUVBLHdDQUF3QyxRQUFRO0FBQ2hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9nYWRkaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3RzbGliID0gcmVxdWlyZShcInRzbGliXCIpO1xuXG52YXIgX2Zsb3lkV2Fyc2hhbGwgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2Zsb3lkV2Fyc2hhbGxcIikpO1xuXG52YXIgX2dTcGFuID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9nU3Bhbi9nU3BhblwiKSk7XG5cbnZhciBfZGlqa3N0cmEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiDkuLogZ3JhcGhEYXRhIOS4reavj+S4quiKgueCueeUn+aIkOmCu+WxheWNleWFg+aVsOe7hFxuICogQHBhcmFtIGdyYXBoRGF0YVxuICogQHBhcmFtIHNwbVxuICogQHBhcmFtIG5vZGVMYWJlbFByb3BcbiAqIEBwYXJhbSBrIGst6L+R6YK7XG4gKi9cbnZhciBmaW5kS05laWdoYm9yVW5pdHMgPSBmdW5jdGlvbiBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspIHtcbiAgaWYgKG5vZGVMYWJlbFByb3AgPT09IHZvaWQgMCkge1xuICAgIG5vZGVMYWJlbFByb3AgPSAnY2x1c3Rlcic7XG4gIH1cblxuICBpZiAoayA9PT0gdm9pZCAwKSB7XG4gICAgayA9IDI7XG4gIH1cblxuICB2YXIgdW5pdHMgPSBbXTtcbiAgdmFyIG5vZGVzID0gZ3JhcGhEYXRhLm5vZGVzO1xuICBzcG0uZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdW5pdHMucHVzaChmaW5kS05laWdoYm9yVW5pdChub2Rlcywgcm93LCBpLCBub2RlTGFiZWxQcm9wLCBrKSk7XG4gIH0pO1xuICByZXR1cm4gdW5pdHM7XG59O1xuXG52YXIgZmluZEtOZWlnaGJvclVuaXQgPSBmdW5jdGlvbiBmaW5kS05laWdoYm9yVW5pdChub2Rlcywgcm93LCBpLCBub2RlTGFiZWxQcm9wLCBrKSB7XG4gIHZhciB1bml0Tm9kZUlkeHMgPSBbaV07XG4gIHZhciBuZWlnaGJvcnMgPSBbXTtcbiAgdmFyIGxhYmVsQ291bnRNYXAgPSB7fTtcbiAgcm93LmZvckVhY2goZnVuY3Rpb24gKHYsIGopIHtcbiAgICBpZiAodiA8PSBrICYmIGkgIT09IGopIHtcbiAgICAgIHVuaXROb2RlSWR4cy5wdXNoKGopO1xuICAgICAgbmVpZ2hib3JzLnB1c2gobm9kZXNbal0pO1xuICAgICAgdmFyIGxhYmVsID0gbm9kZXNbal1bbm9kZUxhYmVsUHJvcF07XG4gICAgICBpZiAoIWxhYmVsQ291bnRNYXBbbGFiZWxdKSBsYWJlbENvdW50TWFwW2xhYmVsXSA9IHtcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIGRpc3RzOiBbdl1cbiAgICAgIH07ZWxzZSB7XG4gICAgICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmNvdW50Kys7XG4gICAgICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmRpc3RzLnB1c2godik7XG4gICAgICB9XG4gICAgfVxuICB9KTsgLy8g5bCGIGxhYmVsQ291bnRNYXAg5Lit55qEIGRpc3RzIOaMieeFp+S7juWwj+WIsOWkp+aOkuW6j++8jOaWueS+v+WQjumdouS9v+eUqFxuXG4gIE9iamVjdC5rZXlzKGxhYmVsQ291bnRNYXApLmZvckVhY2goZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgbGFiZWxDb3VudE1hcFtsYWJlbF0uZGlzdHMgPSBsYWJlbENvdW50TWFwW2xhYmVsXS5kaXN0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYSAtIGI7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG5vZGVJZHg6IGksXG4gICAgbm9kZUlkOiBub2Rlc1tpXS5pZCxcbiAgICBub2RlSWR4czogdW5pdE5vZGVJZHhzLFxuICAgIG5laWdoYm9yczogbmVpZ2hib3JzLFxuICAgIG5laWdoYm9yTnVtOiB1bml0Tm9kZUlkeHMubGVuZ3RoIC0gMSxcbiAgICBub2RlTGFiZWxDb3VudE1hcDogbGFiZWxDb3VudE1hcFxuICB9O1xufTtcbi8qKlxuICog6ZqP5py65a+75om+54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIGtcbiAqIEBwYXJhbSBrIOWPguaVsCBr77yM6KGo56S6IGst6L+R6YK7XG4gKiBAcGFyYW0gbm9kZU51bSDlj4LmlbAgbGVuZ3RoXG4gKiBAcGFyYW0gbWF4Tm9kZVBhaXJOdW0g5a+75om+54K55a+555qE5pWw6YeP5LiN6LaF6L+HIG1heE5vZGVQYWlyTnVtXG4gKiBAcGFyYW0gc3BtIOacgOefrei3r+W+hOefqemYtVxuICovXG5cblxudmFyIGZpbmROb2RlUGFpcnNSYW5kb21seSA9IGZ1bmN0aW9uIGZpbmROb2RlUGFpcnNSYW5kb21seShrLCBub2RlTnVtLCBtYXhOb2RlUGFpck51bSwga05laWdoYm9yVW5pdHMsIHNwbSkge1xuICAvLyDmr4/kuKroioLngrnpnIDopoHpmo/mnLrmib7lh7rnmoTngrnlr7nmlbBcbiAgdmFyIG5vZGVQYWlyTnVtRWFjaE5vZGUgPSBNYXRoLmNlaWwobWF4Tm9kZVBhaXJOdW0gLyBub2RlTnVtKTtcbiAgdmFyIG5vZGVQYWlyTWFwID0ge307XG4gIHZhciBmb3VuZE5vZGVQYWlyQ291bnQgPSAwOyAvLyDpgY3ljoboioLngrnvvIzkuLrmr4/kuKroioLngrnpmo/mnLrmib7lh7ogbm9kZVBhaXJOdW1FYWNoTm9kZSDkuKrngrnlr7nvvIzmu6HotrPot53nprvlsI/kuo4ga+OAguaJvuWIsOeahOeCueWvueaVsOmHj+i2hei/hyBtYXhOb2RlUGFpck51bSDmiJbmiYDmnInoioLngrnpgY3ljobnu5PmnZ/ml7bnu4jmraJcblxuICBrTmVpZ2hib3JVbml0cy5mb3JFYWNoKGZ1bmN0aW9uICh1bml0LCBpKSB7XG4gICAgLy8g6Iul5pyq6L6+5YiwIG5vZGVQYWlyTnVtRWFjaE5vZGXvvIzmiJblvqrnjq/mrKHmlbDlsI/kuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p77yM57un57ut5b6q546vXG4gICAgdmFyIG5vZGVQYWlyRm9ySUNvdW50ID0gMDtcbiAgICB2YXIgb3V0ZXJMb29wQ291bnQgPSAwO1xuICAgIHZhciBuZWlnaGJvcnMgPSB1bml0Lm5vZGVJZHhzOyAvLyB0aGUgZmlyc3Qgb25lIGlzIHRoZSBjZW50ZXIgbm9kZVxuXG4gICAgdmFyIG5laWdoYm9yTnVtID0gdW5pdC5uZWlnaGJvck51bSAtIDE7XG5cbiAgICB3aGlsZSAobm9kZVBhaXJGb3JJQ291bnQgPCBub2RlUGFpck51bUVhY2hOb2RlKSB7XG4gICAgICAvLyDlj6bkuIDnq6/oioLngrnlnKjoioLngrnmlbDnu4TkuK3nmoTnmoQgaW5kZXhcbiAgICAgIHZhciBvaWR4ID0gbmVpZ2hib3JzWzEgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBuZWlnaGJvck51bSldO1xuICAgICAgdmFyIGlubmVyTG9vcENvdW50ID0gMDsgLy8g6Iul6ZqP5py65b6X5Yiw55qE5Y+m5LiA56uvIGlkeCDkuI3nrKblkIjmnaHku7bvvIzliJnnu6fnu60gcmFuZG9t44CC5p2h5Lu25piv5LiN5piv5ZCM5LiA5Liq6IqC54K544CB6L+Z5Liq54K55a+55rKh5pyJ6KKr6K6w5b2V6L+H44CB6Led56a75bCP5LqOIGtcblxuICAgICAgd2hpbGUgKG5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KGksIFwiLVwiKS5jb25jYXQob2lkeCldIHx8IG5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KG9pZHgsIFwiLVwiKS5jb25jYXQoaSldKSB7XG4gICAgICAgIG9pZHggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBub2RlTnVtKTtcbiAgICAgICAgaW5uZXJMb29wQ291bnQrKztcbiAgICAgICAgaWYgKGlubmVyTG9vcENvdW50ID4gMiAqIG5vZGVOdW0pIGJyZWFrOyAvLyDlvqrnjq/mrKHmlbDlpKfkuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p6Lez5Ye65b6q546v77yM6YG/5YWN5q275b6q546vXG4gICAgICB9XG5cbiAgICAgIGlmIChpbm5lckxvb3BDb3VudCA8IDIgKiBub2RlTnVtKSB7XG4gICAgICAgIC8vIOacqui+vuWIsOacgOWkp+W+queOr+asoeaVsO+8jOivtOaYjuaJvuWIsOS6huWQiOmAgueahOWPpuS4gOerr1xuICAgICAgICBub2RlUGFpck1hcFtcIlwiLmNvbmNhdChpLCBcIi1cIikuY29uY2F0KG9pZHgpXSA9IHtcbiAgICAgICAgICBzdGFydDogaSxcbiAgICAgICAgICBlbmQ6IG9pZHgsXG4gICAgICAgICAgZGlzdGFuY2U6IHNwbVtpXVtvaWR4XVxuICAgICAgICB9O1xuICAgICAgICBub2RlUGFpckZvcklDb3VudCsrO1xuICAgICAgICBmb3VuZE5vZGVQYWlyQ291bnQrKzsgLy8g5aaC5p6c5b2T5YmN5om+5Yiw55qE54K55a+55pWw6YeP6L6+5Yiw5LqG5LiK6ZmQ77yM6L+U5Zue57uT5p6cXG5cbiAgICAgICAgaWYgKGZvdW5kTm9kZVBhaXJDb3VudCA+PSBtYXhOb2RlUGFpck51bSkgcmV0dXJuIG5vZGVQYWlyTWFwO1xuICAgICAgfVxuXG4gICAgICBvdXRlckxvb3BDb3VudCsrO1xuICAgICAgaWYgKG91dGVyTG9vcENvdW50ID4gMiAqIG5vZGVOdW0pIGJyZWFrOyAvLyDlvqrnjq/mrKHmlbDlpKfkuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p6Lez5Ye65b6q546v77yM6YG/5YWN5q275b6q546vXG4gICAgfSAvLyDov5nkuKroioLngrnmsqHmnInmib7liLDotrPlpJ8gbm9kZVBhaXJOdW1FYWNoTm9kZSDnmoTngrnlr7njgILmm7TmlrAgbm9kZVBhaXJOdW1FYWNoTm9kZe+8jOiuqeWQjue7reiKgueCueaJvuabtOWkmueahOeCueWvuVxuXG5cbiAgICBpZiAobm9kZVBhaXJGb3JJQ291bnQgPCBub2RlUGFpck51bUVhY2hOb2RlKSB7XG4gICAgICB2YXIgZ2FwID0gbm9kZVBhaXJOdW1FYWNoTm9kZSAtIG5vZGVQYWlyRm9ySUNvdW50O1xuICAgICAgbm9kZVBhaXJOdW1FYWNoTm9kZSA9IChub2RlUGFpck51bUVhY2hOb2RlICsgZ2FwKSAvIChub2RlTnVtIC0gaSAtIDEpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBub2RlUGFpck1hcDtcbn07XG4vKipcbiAqIOiuoeeul+aJgOaciSBub2RlUGFpck1hcCDkuK3oioLngrnlr7nnmoTnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm75cbiAqIEBwYXJhbSBub2RlUGFpck1hcCDoioLngrnlr7kgbWFw77yMa2V5IOS4uiBub2RlMS5pZC1ub2RlMi5pZO+8jHZhbHVlIOS4uiB7IHN0YXJ0Tm9kZUlkeCwgZW5kTm9kZUlkeCwgZGlzdGFuY2UgfVxuICogQHBhcmFtIG5laWdoYm9yVW5pdHMg5q+P5Liq6IqC54K555qE6YK75bGF5YWD5pWw57uEXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIGVkZ2VNYXAg6L6555qEIG1hcO+8jOaWueS+v+ajgOe0olxuICogQHBhcmFtIGNhY2hlZEluZHVjZWRHcmFwaE1hcCDnvJPlrZjnmoTnu5PmnpzvvIzkuIvmrKHov5vlhaXor6Xlh73mlbDlsIbnu6fnu63mm7TmlrDor6XnvJPlrZjvvIzoi6Uga2V5IOWcqOe8k+WtmOS4reWtmOWcqOWImeS4jemcgOimgemHjeWkjeiuoeeul1xuICovXG5cblxudmFyIGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoID0gZnVuY3Rpb24gZ2V0SW50ZXJzZWN0TmVpZ2hib3JJbmR1Y2VkR3JhcGgobm9kZVBhaXJNYXAsIG5laWdoYm9yVW5pdHMsIGdyYXBoRGF0YSwgY2FjaGVkSW5kdWNlZEdyYXBoTWFwKSB7XG4gIHZhciBub2RlcyA9IGdyYXBoRGF0YS5ub2RlcztcbiAgaWYgKCFjYWNoZWRJbmR1Y2VkR3JhcGhNYXApIGNhY2hlZEluZHVjZWRHcmFwaE1hcCA9IHt9O1xuICBPYmplY3Qua2V5cyhub2RlUGFpck1hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIF9hLCBfYjtcblxuICAgIGlmIChjYWNoZWRJbmR1Y2VkR3JhcGhNYXAgJiYgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0pIHJldHVybjtcbiAgICBjYWNoZWRJbmR1Y2VkR3JhcGhNYXBba2V5XSA9IHtcbiAgICAgIG5vZGVzOiBbXSxcbiAgICAgIGVkZ2VzOiBbXVxuICAgIH07XG4gICAgdmFyIHBhaXIgPSBub2RlUGFpck1hcFtrZXldO1xuICAgIHZhciBzdGFydFVuaXROb2RlSWRzID0gKF9hID0gbmVpZ2hib3JVbml0c1twYWlyLnN0YXJ0XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZHhzO1xuICAgIHZhciBlbmRVbml0Tm9kZUlkcyA9IChfYiA9IG5laWdoYm9yVW5pdHNbcGFpci5lbmRdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iubm9kZUlkeHM7XG4gICAgaWYgKCFzdGFydFVuaXROb2RlSWRzIHx8ICFlbmRVbml0Tm9kZUlkcykgcmV0dXJuOyAvLyDkuI3lrZjlnKjpgrvlhYPvvIzov5Tlm57nqbrlm75cblxuICAgIHZhciBlbmRTZXQgPSBuZXcgU2V0KGVuZFVuaXROb2RlSWRzKTtcbiAgICB2YXIgaW50ZXJzZWN0ID0gc3RhcnRVbml0Tm9kZUlkcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBlbmRTZXQuaGFzKHgpO1xuICAgIH0pOyAvLyDlj6/og73kvJrniIbmoIjvvIjlnKggMTU4MCArIDYgbm9kZXMgZnVsbC1jb25uZWN0ZWQg5pe25Ye6546w77yJXG5cbiAgICBpZiAoIWludGVyc2VjdCB8fCAhaW50ZXJzZWN0Lmxlbmd0aCkgcmV0dXJuOyAvLyDmsqHmnInkuqTpm4bvvIzov5Tlm57nqbrlm75cblxuICAgIHZhciBpbnRlcnNlY3RJZE1hcCA9IHt9O1xuICAgIHZhciBpbnRlcnNlY3RMZW5ndGggPSBpbnRlcnNlY3QubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnRlcnNlY3RMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpbnRlcnNlY3RbaV1dO1xuICAgICAgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0ubm9kZXMucHVzaChub2RlKTsgLy8g5bCG5Lqk6ZuG5Lit55qE54K55Yqg5YWl6K+x5a+85a2Q5Zu+XG5cbiAgICAgIGludGVyc2VjdElkTWFwW25vZGUuaWRdID0gdHJ1ZTtcbiAgICB9IC8vIOmBjeWOhuaJgOaciei+ueaVsOaNru+8jOWmguaenOi+ueeahOS4pOerr+mDveWcqOS6pOmbhuS4re+8jOWwhuivpei+ueWKoOWFpeivseWvvOWtkOWbvlxuXG5cbiAgICBncmFwaERhdGEuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKGludGVyc2VjdElkTWFwW2VkZ2Uuc291cmNlXSAmJiBpbnRlcnNlY3RJZE1hcFtlZGdlLnRhcmdldF0pIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gY2FjaGVkSW5kdWNlZEdyYXBoTWFwO1xufTtcbi8qKlxuICog6K6h566XIHN0cmN1dHJlIOWcqCBncmFwaCDkuIrnmoTljLnphY3mlbDph49cbiAqIEBwYXJhbSBncmFwaCDlm77mlbDmja5cbiAqIEBwYXJhbSBzdHJ1Y3R1cmUg55uu5YmN5pSv5oyB5Y+q5pyJ5Lik5Liq6IqC54K55LiA5p2h6L6555qE5pyA566A5Y2V57uT5p6EXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcCDoioLngrnnsbvlnovlrZfmrrXlkI1cbiAqIEBwYXJhbSBlZGdlTGFiZWxQcm9wIOi+ueexu+Wei+Wtl+auteWQjVxuICovXG5cblxudmFyIGdldE1hdGNoZWRDb3VudCA9IGZ1bmN0aW9uIGdldE1hdGNoZWRDb3VudChncmFwaCwgc3RydWN0dXJlLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciBfYSwgX2I7XG5cbiAgdmFyIG5vZGVNYXAgPSB7fTtcbiAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICB9KTtcbiAgdmFyIGNvdW50ID0gMDtcbiAgaWYgKCEoKF9hID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLmVkZ2VzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB8fCAoKF9iID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA8IDIpIHJldHVybiAwO1xuICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHNvdXJjZUxhYmVsID0gbm9kZU1hcFtlLnNvdXJjZV1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHRhcmdldExhYmVsID0gbm9kZU1hcFtlLnRhcmdldF1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ck5vZGVMYWJlbDEgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUubm9kZXNbMF1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ck5vZGVMYWJlbDIgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUubm9kZXNbMV1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ckVkZ2VMYWJlbCA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5lZGdlc1swXVtlZGdlTGFiZWxQcm9wXTtcbiAgICBpZiAoZVtlZGdlTGFiZWxQcm9wXSAhPT0gc3RyRWRnZUxhYmVsKSByZXR1cm47XG5cbiAgICBpZiAoc291cmNlTGFiZWwgPT09IHN0ck5vZGVMYWJlbDEgJiYgdGFyZ2V0TGFiZWwgPT09IHN0ck5vZGVMYWJlbDIgfHwgc291cmNlTGFiZWwgPT09IHN0ck5vZGVMYWJlbDIgJiYgdGFyZ2V0TGFiZWwgPT09IHN0ck5vZGVMYWJlbDEpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvdW50O1xufTtcbi8qKlxuICogc3RydWN0dXJlcyDkuK3lr7vmib7mnIDlhbfmnInku6PooajmgKfnmoTkuIDkuKrjgILov5nkuKrnu5PmnoTmmK/kvb/lvpcgbWF0Y2hlZENvdW50TWFwIOeahOWIhue7hOaWueW8j+exu+WGhemXtOi3neacgOWwj++8jOexu+mXtOmXtOi3neacgOWkp1xuICogQHBhcmFtIG1hdGNoZWRDb3VudE1hcCDmr4/kuKogc3RydWN0dXJlIOWIhuexu+WQjueahOWQhOWbvuWMuemFjeaVsOmHj++8jOagvOW8jyB7IFtzdHJjdHVyZS5pZHhdOiB7IFtpbnRlckluZHVjZWRHcmFwaEtleV06IGNvdW50IH0gfVxuICogQHBhcmFtIHN0cnVjdHVyZU51bSBzdHJjdXR1cmUg5Liq5pWw77yM5LiOIG1hdGNoZWRDb3VudE1hcC5sZW5ndGgg5a+55bqUXG4gKiBAcGFyYW0gc3RydWN0dXJlc1xuICovXG5cblxudmFyIGZpbmRSZXByZXNlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbiBmaW5kUmVwcmVzZW50U3RydWN0dXJlKG1hdGNoZWRDb3VudE1hcCwgc3RydWN0dXJlTnVtLCBzdHJ1Y3R1cmVzKSB7XG4gIHZhciBtYXhPZmZzZXQgPSBJbmZpbml0eSxcbiAgICAgIHJlcHJlc2VudENsdXN0ZXJUeXBlID0gMDtcblxuICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgIC8vIOS4gOenjeWIhue7hOeahCBtYXDvvIxrZXkg5pivIGludEdyYXBoIOeahCBrZXnvvIx2YWx1ZSDmmK8gc3RydWN0dXJlc1tpXSDnmoTljLnphY3kuKrmlbBcbiAgICB2YXIgY291bnRNYXBJID0gbWF0Y2hlZENvdW50TWFwW2ldOyAvLyDmjInnhacgdmFsdWUg5Li66K+l57uE5o6S5bqP77yM55Sf5oiQIGtleXMg55qE5pWw57uE77yaXG5cbiAgICB2YXIgc29ydGVkR3JhcGhLZXlzID0gT2JqZWN0LmtleXMoY291bnRNYXBJKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gY291bnRNYXBJW2FdIC0gY291bnRNYXBJW2JdO1xuICAgIH0pOyAvLyDlhbEgMTAwIOS4qiBncmFwaEtleXPvvIzlsIYgZ3JhcGhLZXlzIOaMiemhuuW6j+WIhuS4uiBncm91cE51bSDnu4RcblxuICAgIHZhciBncm91cE51bSA9IDEwO1xuICAgIHZhciBjbHVzdGVycyA9IFtdOyAvLyDmgLvlhbHmnIkgZ3JvdXBOdW0g5Liq6aG5XG5cbiAgICBzb3J0ZWRHcmFwaEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5LCBqKSB7XG4gICAgICBpZiAoIWNsdXN0ZXJzW2ogJSBncm91cE51bV0pIGNsdXN0ZXJzW2ogJSBncm91cE51bV0gPSB7XG4gICAgICAgIGdyYXBoczogW10sXG4gICAgICAgIHRvdGFsQ291bnQ6IDAsXG4gICAgICAgIGF2ZUNvdW50OiAwXG4gICAgICB9O1xuICAgICAgY2x1c3RlcnNbaiAlIGdyb3VwTnVtXS5ncmFwaHMucHVzaChrZXkpO1xuICAgICAgY2x1c3RlcnNbaiAlIGdyb3VwTnVtXS50b3RhbENvdW50ICs9IGNvdW50TWFwSVtrZXldO1xuICAgIH0pOyAvLyDorqHnrpcgY2x1c3RlciDkuI4gY2x1c3RlciDkuYvpl7TnmoTot53nprsgaW5uZXJEaXN077yM5q+P5LiqIGNsdXN0ZXIg5YaF6YOo55qE6Led56a7IGludHJhRGlzdFxuXG4gICAgdmFyIGF2ZUludHJhRGlzdCA9IDA7IC8vIOivpeexu+eahOexu+WGheW5s+Wdh+WAvFxuXG4gICAgdmFyIGF2ZUNvdW50cyA9IFtdOyAvLyDnsbvlhoXlubPlnYfljLnphY3mlbDph4/vvIzlsIbnlKjkuo7orqHnrpfnsbvpl7Tot53nprtcblxuICAgIGNsdXN0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGdyYXBoc0luQ2x1c3Rlcikge1xuICAgICAgLy8g57G75YaF5Z2H5YC8XG4gICAgICB2YXIgYXZlQ291bnQgPSBncmFwaHNJbkNsdXN0ZXIudG90YWxDb3VudCAvIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMubGVuZ3RoO1xuICAgICAgZ3JhcGhzSW5DbHVzdGVyLmF2ZUNvdW50ID0gYXZlQ291bnQ7XG4gICAgICBhdmVDb3VudHMucHVzaChhdmVDb3VudCk7IC8vIOWvueS6juavj+exu++8jOiuoeeul+exu+WGhemXtOi3neW5s+Wdh+WAvFxuXG4gICAgICB2YXIgYXZlSW50cmFQZXJDbHVzdGVyID0gMDtcbiAgICAgIHZhciBncmFwaHNOdW0gPSBncmFwaHNJbkNsdXN0ZXIubGVuZ3RoO1xuICAgICAgZ3JhcGhzSW5DbHVzdGVyLmdyYXBocy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaEtleTEsIGopIHtcbiAgICAgICAgdmFyIGdyYXBoMUNvdW50ID0gY291bnRNYXBJW2dyYXBoS2V5MV07XG4gICAgICAgIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhLZXkyLCBrKSB7XG4gICAgICAgICAgaWYgKGogPT09IGspIHJldHVybjtcbiAgICAgICAgICBhdmVJbnRyYVBlckNsdXN0ZXIgKz0gTWF0aC5hYnMoZ3JhcGgxQ291bnQgLSBjb3VudE1hcElbZ3JhcGhLZXkyXSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBhdmVJbnRyYVBlckNsdXN0ZXIgLz0gZ3JhcGhzTnVtICogKGdyYXBoc051bSAtIDEpIC8gMjtcbiAgICAgIGF2ZUludHJhRGlzdCArPSBhdmVJbnRyYVBlckNsdXN0ZXI7XG4gICAgfSk7XG4gICAgYXZlSW50cmFEaXN0IC89IGNsdXN0ZXJzLmxlbmd0aDsgLy8g55So57G75YaF5Z2H5YC86K6h566X57G76Ze06LedXG5cbiAgICB2YXIgYXZlSW50ZXJEaXN0ID0gMDsgLy8g57G76Ze06Ze06Led5bmz5Z2H5YC8XG5cbiAgICBhdmVDb3VudHMuZm9yRWFjaChmdW5jdGlvbiAoYXZlQ291bnQxLCBqKSB7XG4gICAgICBhdmVDb3VudHMuZm9yRWFjaChmdW5jdGlvbiAoYXZlQ291bnQyLCBrKSB7XG4gICAgICAgIGlmIChqID09PSBrKSByZXR1cm47XG4gICAgICAgIGF2ZUludGVyRGlzdCArPSBNYXRoLmFicyhhdmVDb3VudDEgLSBhdmVDb3VudDIpO1xuICAgICAgfSk7XG4gICAgICBhdmVJbnRlckRpc3QgLz0gYXZlQ291bnRzLmxlbmd0aCAqIChhdmVDb3VudHMubGVuZ3RoIC0gMSkgLyAyO1xuICAgIH0pOyAvLyDlr7vmib4gKOexu+mXtOmXtOi3neWdh+WAvC3nsbvlhoXpl7Tot53lnYflgLwpIOacgOWkp+eahOS4gOenjeWIhue7hOaWueW8j++8iOWvueW6lOeahCBzdHJ1Y3R1cmUg5bCx5piv5pyA57uI6KaB5om+55qE5ZSv5LiAIERTKEcp77yJXG5cbiAgICB2YXIgb2Zmc2V0ID0gYXZlSW50ZXJEaXN0IC0gYXZlSW50cmFEaXN0O1xuXG4gICAgaWYgKG1heE9mZnNldCA8IG9mZnNldCkge1xuICAgICAgbWF4T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgcmVwcmVzZW50Q2x1c3RlclR5cGUgPSBpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cnVjdHVyZU51bTsgaSsrKSB7XG4gICAgX2xvb3BfMShpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RydWN0dXJlOiBzdHJ1Y3R1cmVzW3JlcHJlc2VudENsdXN0ZXJUeXBlXSxcbiAgICBzdHJ1Y3R1cmVDb3VudE1hcDogbWF0Y2hlZENvdW50TWFwW3JlcHJlc2VudENsdXN0ZXJUeXBlXVxuICB9O1xufTtcblxudmFyIGdldE5vZGVNYXBzID0gZnVuY3Rpb24gZ2V0Tm9kZU1hcHMobm9kZXMsIG5vZGVMYWJlbFByb3ApIHtcbiAgdmFyIG5vZGVNYXAgPSB7fSxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IHt9O1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgIGlkeDogaSxcbiAgICAgIG5vZGU6IG5vZGUsXG4gICAgICBkZWdyZWU6IDAsXG4gICAgICBpbkRlZ3JlZTogMCxcbiAgICAgIG91dERlZ3JlZTogMFxuICAgIH07XG4gICAgdmFyIGxhYmVsID0gbm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICBpZiAoIW5vZGVMYWJlbE1hcFtsYWJlbF0pIG5vZGVMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICBub2RlTGFiZWxNYXBbbGFiZWxdLnB1c2gobm9kZSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG5vZGVNYXA6IG5vZGVNYXAsXG4gICAgbm9kZUxhYmVsTWFwOiBub2RlTGFiZWxNYXBcbiAgfTtcbn07XG5cbnZhciBnZXRFZGdlTWFwcyA9IGZ1bmN0aW9uIGdldEVkZ2VNYXBzKGVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKSB7XG4gIHZhciBlZGdlTWFwID0ge30sXG4gICAgICBlZGdlTGFiZWxNYXAgPSB7fTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSwgaSkge1xuICAgIGVkZ2VNYXBbXCJcIi5jb25jYXQoX3V0aWwudW5pcXVlSWQpXSA9IHtcbiAgICAgIGlkeDogaSxcbiAgICAgIGVkZ2U6IGVkZ2VcbiAgICB9O1xuICAgIHZhciBsYWJlbCA9IGVkZ2VbZWRnZUxhYmVsUHJvcF07XG4gICAgaWYgKCFlZGdlTGFiZWxNYXBbbGFiZWxdKSBlZGdlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgZWRnZUxhYmVsTWFwW2xhYmVsXS5wdXNoKGVkZ2UpO1xuICAgIHZhciBzb3VyY2VOb2RlID0gbm9kZU1hcFtlZGdlLnNvdXJjZV07XG5cbiAgICBpZiAoc291cmNlTm9kZSkge1xuICAgICAgc291cmNlTm9kZS5kZWdyZWUrKztcbiAgICAgIHNvdXJjZU5vZGUub3V0RGVncmVlKys7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldE5vZGUgPSBub2RlTWFwW2VkZ2UudGFyZ2V0XTtcblxuICAgIGlmICh0YXJnZXROb2RlKSB7XG4gICAgICB0YXJnZXROb2RlLmRlZ3JlZSsrO1xuICAgICAgdGFyZ2V0Tm9kZS5pbkRlZ3JlZSsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZWRnZU1hcDogZWRnZU1hcCxcbiAgICBlZGdlTGFiZWxNYXA6IGVkZ2VMYWJlbE1hcFxuICB9O1xufTtcbi8qKlxuICog6L6T5Ye65pyA55+t6Lev5b6E55qEIG1hcO+8jGtleSDkuLogc291cmNlTm9kZS5pZC10YXJnZXROb2RlLmlk77yMdmFsdWUg5Li66L+Z5Lik5Liq6IqC54K555qE5pyA55+t6Lev5b6E6ZW/5bqmXG4gKiBAcGFyYW0gbm9kZXNcbiAqIEBwYXJhbSBzcG1cbiAqIEBwYXJhbSBkaXJlY3RlZFxuICovXG5cblxudmFyIGdldFNwbU1hcCA9IGZ1bmN0aW9uIGdldFNwbU1hcChub2Rlcywgc3BtLCBkaXJlY3RlZCkge1xuICB2YXIgbGVuZ3RoID0gc3BtLmxlbmd0aDtcbiAgdmFyIG1hcCA9IHt9O1xuICBzcG0uZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIHN0YXJ0ID0gZGlyZWN0ZWQgPyAwIDogaSArIDE7XG4gICAgdmFyIGlJZCA9IG5vZGVzW2ldLmlkO1xuXG4gICAgZm9yICh2YXIgaiA9IHN0YXJ0OyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSBjb250aW51ZTtcbiAgICAgIHZhciBqSWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIHZhciBkaXN0ID0gcm93W2pdO1xuICAgICAgbWFwW1wiXCIuY29uY2F0KGlJZCwgXCItXCIpLmNvbmNhdChqSWQpXSA9IGRpc3Q7XG4gICAgICBpZiAoIWRpcmVjdGVkKSBtYXBbXCJcIi5jb25jYXQoaklkLCBcIi1cIikuY29uY2F0KGlJZCldID0gZGlzdDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbWFwO1xufTtcbi8qKlxuICog6K6h566X5LiA5a+56IqC54K577yIbm9kZTHvvIxub2RlMu+8ieeahCBORFMg6Led56a7XG4gKiBAcGFyYW0gZ3JhcGgg5Y6f5Zu+5pWw5o2uXG4gKiBAcGFyYW0gbm9kZTFcbiAqIEBwYXJhbSBub2RlMlxuICovXG5cblxudmFyIGdldE5EU0Rpc3QgPSBmdW5jdGlvbiBnZXRORFNEaXN0KGdyYXBoLCBub2RlMSwgbm9kZTIsIG5vZGVNYXAsIHNwRGlzdCwga05laWdoYm9yVW5pdHMsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCwgY2FjaGVkTkRTTWFwLCBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCkge1xuICB2YXIgX2E7XG5cbiAgdmFyIGtleSA9IFwiXCIuY29uY2F0KG5vZGUxLmlkLCBcIi1cIikuY29uY2F0KG5vZGUyLmlkKTtcbiAgaWYgKGNhY2hlZE5EU01hcCAmJiBjYWNoZWRORFNNYXBba2V5XSkgcmV0dXJuIGNhY2hlZE5EU01hcFtrZXldO1xuICB2YXIgaW50ZXJJbmR1Y2VkR3JhcGggPSBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCA/IGNhY2hlZEludGVySW5kdWNlZEdyYXBoW2tleV0gOiB1bmRlZmluZWQ7IC8vIOiLpeayoeaciee8k+WtmOebuOS6pOmCu+WxheivseWvvOWtkOWbvu+8jOiuoeeul1xuXG4gIGlmICghaW50ZXJJbmR1Y2VkR3JhcGgpIHtcbiAgICB2YXIgcGFpck1hcCA9IChfYSA9IHt9LCBfYVtrZXldID0ge1xuICAgICAgc3RhcnQ6IG5vZGVNYXBbbm9kZTEuaWRdLmlkeCxcbiAgICAgIGVuZDogbm9kZU1hcFtub2RlMi5pZF0uaWR4LFxuICAgICAgZGlzdGFuY2U6IHNwRGlzdFxuICAgIH0sIF9hKTtcbiAgICBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKHBhaXJNYXAsIGtOZWlnaGJvclVuaXRzLCBncmFwaCwgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGgpO1xuICAgIGludGVySW5kdWNlZEdyYXBoID0gY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGhba2V5XTtcbiAgfVxuXG4gIHJldHVybiBnZXRNYXRjaGVkQ291bnQoaW50ZXJJbmR1Y2VkR3JhcGgsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG59O1xuLyoqXG4gKiDorqHnrpcgcGF0dGVybiDkuIrnu6nngrnnmoTluqbmlbDlubblrZjlgqjliLAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFxuICovXG5cblxudmFyIHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCA9IGZ1bmN0aW9uIHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwLCBuZWlnaGJvckxhYmVsLCBwYXR0ZXJuTm9kZU1hcCwgcGF0dGVybk5vZGVMYWJlbE1hcCkge1xuICB2YXIgX2EsIF9iLCBfYztcblxuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IChfYSA9IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWdyZWU7XG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSAoX2IgPSBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwW25laWdoYm9yTGFiZWxdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuaW5EZWdyZWU7XG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gKF9jID0gbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm91dERlZ3JlZTtcblxuICBpZiAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IEluZmluaXR5O1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IEluZmluaXR5O1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPSBJbmZpbml0eTtcbiAgICBwYXR0ZXJuTm9kZUxhYmVsTWFwW25laWdoYm9yTGFiZWxdLmZvckVhY2goZnVuY3Rpb24gKHBhdHRlcm5Ob2RlV2l0aExhYmVsKSB7XG4gICAgICB2YXIgcGF0dGVybk5vZGVEZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0uZGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPiBwYXR0ZXJuTm9kZURlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IHBhdHRlcm5Ob2RlRGVncmVlO1xuICAgICAgdmFyIHBhdHRlcm5Ob2RlSW5EZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0uaW5EZWdyZWU7XG4gICAgICBpZiAobWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID4gcGF0dGVybk5vZGVJbkRlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID0gcGF0dGVybk5vZGVJbkRlZ3JlZTtcbiAgICAgIHZhciBwYXR0ZXJuTm9kZU91dERlZ3JlZSA9IHBhdHRlcm5Ob2RlTWFwW3BhdHRlcm5Ob2RlV2l0aExhYmVsLmlkXS5vdXREZWdyZWU7XG4gICAgICBpZiAobWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA+IHBhdHRlcm5Ob2RlT3V0RGVncmVlKSBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gcGF0dGVybk5vZGVPdXREZWdyZWU7XG4gICAgfSk7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSA9IHtcbiAgICAgIGRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgIGluRGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICBvdXREZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlLFxuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlLFxuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWVcbiAgfTtcbn07XG4vKipcbiAqIEdBRERJIOaooeW8j+WMuemFjVxuICogQHBhcmFtIGdyYXBoRGF0YSDljp/lm77mlbDmja5cbiAqIEBwYXJhbSBwYXR0ZXJuIOaQnOe0ouWbvu+8iOmcgOimgeWcqOWOn+WbvuS4iuaQnOe0oueahOaooeW8j++8ieaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuiuoeeul+acieWQkeWbvu+8jOm7mOiupCBmYWxzZVxuICogQHBhcmFtIGsg5Y+C5pWwIGvvvIzooajnpLogay3ov5HpgrtcbiAqIEBwYXJhbSBsZW5ndGgg5Y+C5pWwIGxlbmd0aFxuICogQHBhcmFtIG5vZGVMYWJlbFByb3Ag6IqC54K55pWw5o2u5Lit5Luj6KGo6IqC54K55qCH562+77yI5YiG57G75L+h5oGv77yJ55qE5bGe5oCn5ZCN44CC6buY6K6k5Li6IGNsdXN0ZXJcbiAqIEBwYXJhbSBlZGdlTGFiZWxQcm9wIOi+ueaVsOaNruS4reS7o+ihqOi+ueagh+etvu+8iOWIhuexu+S/oeaBr++8ieeahOWxnuaAp+WQjeOAgum7mOiupOS4uiBjbHVzdGVyXG4gKi9cblxuXG52YXIgR0FEREkgPSBmdW5jdGlvbiBHQURESShncmFwaERhdGEsIHBhdHRlcm4sIGRpcmVjdGVkLCBrLCBsZW5ndGgsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApIHtcbiAgdmFyIF9hO1xuXG4gIGlmIChkaXJlY3RlZCA9PT0gdm9pZCAwKSB7XG4gICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChub2RlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBub2RlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKGVkZ2VMYWJlbFByb3AgPT09IHZvaWQgMCkge1xuICAgIGVkZ2VMYWJlbFByb3AgPSAnY2x1c3Rlcic7XG4gIH1cblxuICBpZiAoIWdyYXBoRGF0YSB8fCAhZ3JhcGhEYXRhLm5vZGVzKSByZXR1cm47IC8vIOWIhuS4uuS4ieatpe+8mlxuICAvLyAwLiDpooTorqHnrpfvvJroioLngrkv6L655pWw77yM6YK75o6l55+p6Zi144CB5pyA55+t6Lev5b6E55+p6Zi1XG4gIC8vIDEuIOWkhOeQhuWOn+WbviBncmFwaERhdGHjgILlho3liIbkuLogMX41IOWwj+atpVxuICAvLyAyLiDljLnphY1cbiAgLy8gY29uc29sZS5sb2coXCItLS0tLSBzdGFnZS1wcmU6IHByZXByb2Nlc3NpbmcgLS0tLS0tLVwiKTtcbiAgLy8gLS0tLS0tLS0g56ys6Zu25q2l77yM6aKE6K6h566X77ya6IqC54K5L+i+ueaVsO+8jOmCu+aOpeefqemYteOAgeacgOefrei3r+W+hOefqemYtS0tLS0tLS1cblxuICB2YXIgbm9kZU51bSA9IGdyYXBoRGF0YS5ub2Rlcy5sZW5ndGg7XG4gIGlmICghbm9kZU51bSkgcmV0dXJuOyAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlLXByZS4xOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IGZvciBncmFwaCAtLS0tLS0tXCIpO1xuXG4gIHZhciBzcG0gPSAoMCwgX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2UtcHJlLjI6IGNhbGMgc2hvcnRlc3QgcGF0aCBtYXRyaXggZm9yIHBhdHRlcm4gLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHBhdHRlcm5TcG0gPSAoMCwgX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdCkocGF0dGVybiwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS4zOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHNwbU1hcCA9IGdldFNwbU1hcChncmFwaERhdGEubm9kZXMsIHNwbSwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS40OiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbU1hcCA9IGdldFNwbU1hcChwYXR0ZXJuLm5vZGVzLCBwYXR0ZXJuU3BtLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjU6IGVzdGFibGlzaCBtYXBzIC0tLS0tLS1cIik7XG4gIC8vIOiKgueCueeahCBtYXDvvIzku6UgaWQg5Li6IGlkIOaYoOWwhO+8jOaWueS+v+WQjue7reW/q+mAn+ajgOe0olxuXG4gIHZhciBfYiA9IGdldE5vZGVNYXBzKGdyYXBoRGF0YS5ub2Rlcywgbm9kZUxhYmVsUHJvcCksXG4gICAgICBub2RlTWFwID0gX2Iubm9kZU1hcCxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IF9iLm5vZGVMYWJlbE1hcDtcblxuICB2YXIgX2MgPSBnZXROb2RlTWFwcyhwYXR0ZXJuLm5vZGVzLCBub2RlTGFiZWxQcm9wKSxcbiAgICAgIHBhdHRlcm5Ob2RlTWFwID0gX2Mubm9kZU1hcCxcbiAgICAgIHBhdHRlcm5Ob2RlTGFiZWxNYXAgPSBfYy5ub2RlTGFiZWxNYXA7IC8vIOiuoeeul+iKgueCueW6puaVsFxuXG5cbiAgZ2V0RWRnZU1hcHMoZ3JhcGhEYXRhLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKTtcbiAgdmFyIHBhdHRlcm5FZGdlTGFiZWxNYXAgPSBnZXRFZGdlTWFwcyhwYXR0ZXJuLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBwYXR0ZXJuTm9kZU1hcCkuZWRnZUxhYmVsTWFwOyAvLyDoi6XmnKrmjIflrpogbGVuZ3Ro77yM6Ieq5Yqo6K6h566XIHBhdHRlcm4g5Y2K5b6E77yI5pyA55+t6Lev5b6E5pyA5aSn5YC877yJXG5cbiAgdmFyIHBhdHRlcm5TcG1TcHJlYWQgPSBbXTtcbiAgcGF0dGVyblNwbSA9PT0gbnVsbCB8fCBwYXR0ZXJuU3BtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXR0ZXJuU3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgIHBhdHRlcm5TcG1TcHJlYWQgPSBwYXR0ZXJuU3BtU3ByZWFkLmNvbmNhdChyb3cpO1xuICB9KTtcbiAgaWYgKCFsZW5ndGgpIGxlbmd0aCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsICgwLCBfdHNsaWIuX19zcHJlYWRBcnJheSkoKDAsIF90c2xpYi5fX3NwcmVhZEFycmF5KShbXSwgcGF0dGVyblNwbVNwcmVhZCwgZmFsc2UpLCBbMl0sIGZhbHNlKSk7XG4gIGlmICghaykgayA9IGxlbmd0aDsgLy8gY29uc29sZS5sb2coXCJwYXJhbXNcIiwgZGlyZWN0ZWQsIGxlbmd0aCwgayk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjY6IGNhbGMgayBuZWlnaGJvciB1bml0cyAtLS0tLS0tXCIpO1xuICAvLyDorqHnrpfmr4/kuKroioLngrnnmoQgayDpgrvlhYPpm4blkIhcblxuICB2YXIga05laWdoYm9yVW5pdHMgPSBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspO1xuICB2YXIgcGF0dGVybktOZWlnaGJvclVuaXRzID0gZmluZEtOZWlnaGJvclVuaXRzKHBhdHRlcm4sIHBhdHRlcm5TcG0sIG5vZGVMYWJlbFByb3AsIGspOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMDogZ29pbmcgdG8gcHJvY2Vzc2luZyBncmFwaCBhbmQgZmluZCBpbnRlcnNlY3QgbmVpZ2hib3IgaW5kdWNlZCBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UwLjE6IGdvaW5nIHRvIHNlbGVjdCByYW5kb20gbm9kZSBwYWlycyAtLS0tLS0tXCIpO1xuICAvLyAtLS0tLS0tLSDnrKzkuIDmraXvvIzlpITnkIbljp/lm74gZ3JhcGhEYXRhLS0tLS0tLVxuICAvLyAxLjEuIOmaj+acuumAieaLqeacgOWkmiAxMDAg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIExlbmd0aCDlkowga1xuICAvLyDlvZMgZ3JhcGhEYXRhIOWwkeS6jiAyMCDkuKroioLngrnvvIzliJnkuI3og73mib7lh7ogMTAwIOS4queCueWvue+8jOWPquaJvuWHuuS4jeWkmuS6jiBuKG4tMSkvMiDkuKrngrnlr7lcblxuICB2YXIgbWF4Tm9kZVBhaXJOdW0gPSBNYXRoLm1pbigxMDAsIG5vZGVOdW0gKiAobm9kZU51bSAtIDEpIC8gMik7XG4gIHZhciBub2RlUGFpcnNNYXAgPSBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIGtOZWlnaGJvclVuaXRzLCBzcG0pOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMC4yOiBnb2luZyB0byBjYWxjdWxhdGUgaW50ZXJzZWN0IG5laWdoYm9yIGluZHVjZWQgZ3JhcGhzIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyAxLjIuIOeUn+aIkOS4iumdouiKgueCueWvueeahOebuOW6lOebuOS6pOmCu+WxheivseWvvOWtkOWbvuOAguagvOW8j+S4uiB7J2JlZ2luTm9kZUlkeC1lbmROb2RlSWR4Jzoge25vZGVzOiBbXSwgZWRnZXM6IFtdfX1cblxuICB2YXIgaW50R01hcCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKG5vZGVQYWlyc01hcCwga05laWdoYm9yVW5pdHMsIGdyYXBoRGF0YSk7IC8vIDEuMy4g5L2/55SoIGdTcGFuIOeul+azle+8iGZyZXF1ZW50IGdyYXBoIG1pbmluZ++8ieiuoeeulyBJU0ludEcg55qE5YmNIDEwIOS4qumikeeOh+acgOmrmOeahOWtkOe7k+aehO+8iDMtNOadoei+ue+8iVxuXG4gIHZhciB0b3AgPSAxMCxcbiAgICAgIG1pblN1cHBvcnQgPSAxLFxuICAgICAgbWluTm9kZU51bSA9IDEsXG4gICAgICBtYXhOb2RlTnVtID0gNDtcbiAgdmFyIHBhcmFtcyA9IHtcbiAgICBncmFwaHM6IGludEdNYXAsXG4gICAgbm9kZUxhYmVsUHJvcDogbm9kZUxhYmVsUHJvcCxcbiAgICBlZGdlTGFiZWxQcm9wOiBlZGdlTGFiZWxQcm9wLFxuICAgIG1pblN1cHBvcnQ6IG1pblN1cHBvcnQsXG4gICAgbWluTm9kZU51bTogbWluTm9kZU51bSxcbiAgICBtYXhOb2RlTnVtOiBtYXhOb2RlTnVtLFxuICAgIGRpcmVjdGVkOiBkaXJlY3RlZFxuICB9OyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMTogKGdTcGFuKSBnb2luZyB0byBmaW5kIGZyZXF1ZW50IHN0cnVjdHVyZSBkc0cgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UxLjE6IGdvaW5nIHRvIHJ1biBnU3BhbiAtLS0tLS0tXCIpO1xuICAvLyDmmoLml7blgYforr7nlJ/miJDnmoQgc3ViIHN0cnVjdHVyZSDpg73lj6rmnInkuIDmnaHovrlcblxuICB2YXIgZnJlU3RydWN0dXJlcyA9ICgwLCBfZ1NwYW4uZGVmYXVsdCkocGFyYW1zKS5zbGljZSgwLCB0b3ApOyAvLyBzdHJ1Y3R1cmVOdW0g5Y+v6IO95bCP5LqOIHRvcFxuXG4gIHZhciBzdHJ1Y3R1cmVOdW0gPSBmcmVTdHJ1Y3R1cmVzLmxlbmd0aDsgLy8gMS40LiDorqHnrpfkuIrov7AgMTAg5Liq5a2Q57uT5p6E5ZyoIGludEdNYXAg5Lit5q+P5Liq6K+x5a+85a2Q5Zu+55qE5Yy56YWN5Liq5pWwXG5cbiAgdmFyIG1hdGNoZWRDb3VudE1hcCA9IFtdO1xuICBmcmVTdHJ1Y3R1cmVzLmZvckVhY2goZnVuY3Rpb24gKHN0cnVjdHVyZSwgaSkge1xuICAgIG1hdGNoZWRDb3VudE1hcFtpXSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGludEdNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGdyYXBoID0gaW50R01hcFtrZXldO1xuICAgICAgdmFyIHN1YlN0cnVjdHVyZUNvdW50ID0gZ2V0TWF0Y2hlZENvdW50KGdyYXBoLCBzdHJ1Y3R1cmUsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICAgICAgbWF0Y2hlZENvdW50TWFwW2ldW2tleV0gPSBzdWJTdHJ1Y3R1cmVDb3VudDtcbiAgICB9KTtcbiAgfSk7IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2UxLjE6IGdvaW5nIHRvIGZpbmQgdGhlIG1vc3QgcmVwcmVzZW50IHN0cnVjdXRyZSAtLS0tLS0tXCJcbiAgLy8gKTtcbiAgLy8gMS41LiDlr7nkuo7mr4/kuKrlrZDnu5PmnoTvvIzmoLnmja7ljLnphY3kuKrmlbDkuLogaW50R01hcCDkuK3nmoTor7Hlr7zlrZDlm77liIbnu4TvvIznlJ/miJAgc3RydWN0dXJlTnVtIOenjeWIhue7hFxuICAvLyDorqHnrpfmr4/np43liIbnu4TnmoTnsbvpl7Tot53lkoznsbvlhoXpl7Tot53vvIzmib7liLDnsbvpl7Tot53mnIDlpKfjgIHnsbvlhoXpl7Tot53mnIDlsI/nmoTkuIDnp43liIbnu4TvvIzov5nnp43liIbnu4Tlr7nlupTnmoTlrZDnu5PmnoTooqvpgInkuLrllK/kuIDku6PooajmgKflrZDnu5PmnoQgRFMoRylcblxuICB2YXIgX2QgPSBmaW5kUmVwcmVzZW50U3RydWN0dXJlKG1hdGNoZWRDb3VudE1hcCwgc3RydWN0dXJlTnVtLCBmcmVTdHJ1Y3R1cmVzKSxcbiAgICAgIGRzRyA9IF9kLnN0cnVjdHVyZSxcbiAgICAgIG5kc0Rpc3QgPSBfZC5zdHJ1Y3R1cmVDb3VudE1hcDsgLy8gLS0tLS0tLS0g56ys5LqM5q2l77yM5Yy56YWNLS0tLS0tLVxuICAvLyAyLjEg5om+5Yiw5LuOIFEg5Lit55qE5LiA5Liq6IqC54K55L2c5Li66LW35aeL6IqC54K577yM5a+75om+IEcg5Lit55qE5Yy56YWN44CC6L+Z5Liq5YW25a6e6IqC54K555qE5qCH562+5Y+v5Lul5ZyoIEcg5Lit5om+5Yiw5pyA5aSa55qE6IqC54K5XG5cblxuICB2YXIgYmVnaW5QTm9kZSA9IHBhdHRlcm4ubm9kZXNbMF0sXG4gICAgICBjYW5kaWRhdGVzID0gW10sXG4gICAgICBsYWJlbCA9IChfYSA9IHBhdHRlcm4ubm9kZXNbMF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVtub2RlTGFiZWxQcm9wXSxcbiAgICAgIG1heE5vZGVOdW1XaXRoU2FtZUxhYmVsID0gLUluZmluaXR5O1xuICBwYXR0ZXJuLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICB2YXIgcExhYmVsID0gbm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICB2YXIgbm9kZXNXaXRoU2FtZUxhYmVsID0gbm9kZUxhYmVsTWFwW3BMYWJlbF07XG5cbiAgICBpZiAoKG5vZGVzV2l0aFNhbWVMYWJlbCA9PT0gbnVsbCB8fCBub2Rlc1dpdGhTYW1lTGFiZWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVzV2l0aFNhbWVMYWJlbC5sZW5ndGgpID4gbWF4Tm9kZU51bVdpdGhTYW1lTGFiZWwpIHtcbiAgICAgIG1heE5vZGVOdW1XaXRoU2FtZUxhYmVsID0gbm9kZXNXaXRoU2FtZUxhYmVsLmxlbmd0aDtcbiAgICAgIGNhbmRpZGF0ZXMgPSBub2Rlc1dpdGhTYW1lTGFiZWw7XG4gICAgICBsYWJlbCA9IHBMYWJlbDtcbiAgICAgIGJlZ2luUE5vZGUgPSBub2RlO1xuICAgIH1cbiAgfSk7IC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UyOiBnb2luZyB0byBmaW5kIGNhbmRpZGF0ZXMgLS0tLS0tLVwiKTtcbiAgLy8g5YWo5bGA57yT5a2Y77yM6YG/5YWN6YeN5aSN6K6h566XXG5cbiAgdmFyIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAgPSB7fTsgLy8ga2V5IOaYryBsYWJlbO+8jHZhbHVlIOaYr+ivpSBsYWJlbCDoioLngrnnmoTmnIDlsI/luqbmlbBcblxuICB2YXIgcGF0dGVybkludEdyYXBoTWFwID0ge30sXG4gICAgICBwYXR0ZXJuTkRTRGlzdCA9IHt9LFxuICAgICAgLy8ga2V5IOS4uiBub2RlLmlkLW5vZGUuaWRcbiAgcGF0dGVybk5EU0Rpc3RNYXAgPSB7fTsgLy8ga2V5IOS4uiBub2RlLmlkLWxhYmVsMu+8jHZhbHVlIG5kc+i3neemu+WAvOaVsOe7hO+8iOaMieS7juWkp+WIsOWwj+aOkuW6j++8jOaXoOmcgOWFs+W/g+WFt+S9k+WvueW6lOWTquS4qiBub2RlMu+8iVxuICAvLyAyLjIuMiDlr7nkuo4gUSDkuK3nmoTlj6bkuIDkuKrmoIfnrb7nmoQgayDkuKroioLngrnvvIzorqHnrpflroPku6zliLAgbm9kZSDnmoTmnIDnn63ot6/lvoTku6Xlj4ogTkRTIOi3neemu1xuXG4gIHZhciBwYXR0ZXJuU3BEaXN0ID0ge307XG4gIHZhciBwYXR0ZXJuU3BEaXN0QmFjayA9IHt9O1xuICBPYmplY3Qua2V5cyhwYXR0ZXJuTm9kZUxhYmVsTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbDIsIGopIHtcbiAgICBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0gPSBbXTtcblxuICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXSA9IFtdO1xuICAgIH1cblxuICAgIHZhciBtYXhEaXN0ID0gLUluZmluaXR5O1xuICAgIHZhciBwYXR0ZXJuTm9kZXNXaXRoTGFiZWwyID0gcGF0dGVybk5vZGVMYWJlbE1hcFtsYWJlbDJdO1xuICAgIHZhciBwYXR0ZXJuTm9kZVBhaXJNYXAgPSB7fTtcbiAgICBwYXR0ZXJuTm9kZXNXaXRoTGFiZWwyLmZvckVhY2goZnVuY3Rpb24gKG5vZGVXaXRoTGFiZWwyKSB7XG4gICAgICB2YXIgZGlzdCA9IHBhdHRlcm5TcG1NYXBbXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChub2RlV2l0aExhYmVsMi5pZCldO1xuICAgICAgZGlzdCAmJiBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0ucHVzaChkaXN0KTtcbiAgICAgIGlmIChtYXhEaXN0IDwgZGlzdCkgbWF4RGlzdCA9IGRpc3Q7XG4gICAgICBwYXR0ZXJuTm9kZVBhaXJNYXBbXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChub2RlV2l0aExhYmVsMi5pZCldID0ge1xuICAgICAgICBzdGFydDogMCxcbiAgICAgICAgZW5kOiBwYXR0ZXJuTm9kZU1hcFtub2RlV2l0aExhYmVsMi5pZF0uaWR4LFxuICAgICAgICBkaXN0YW5jZTogZGlzdFxuICAgICAgfTtcblxuICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgIHZhciBkaXN0QmFjayA9IHBhdHRlcm5TcG1NYXBbXCJcIi5jb25jYXQobm9kZVdpdGhMYWJlbDIuaWQsIFwiLVwiKS5jb25jYXQoYmVnaW5QTm9kZS5pZCldO1xuICAgICAgICBkaXN0QmFjayAmJiBwYXR0ZXJuU3BEaXN0QmFja1tsYWJlbDJdLnB1c2goZGlzdEJhY2spO1xuICAgICAgfVxuICAgIH0pOyAvLyBzcERpc3RbbGFiZWwyXSDmjInnhafku47lsI/liLDlpKfmjpLluo9cblxuICAgIHBhdHRlcm5TcERpc3RbbGFiZWwyXSA9IHBhdHRlcm5TcERpc3RbbGFiZWwyXS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYSAtIGI7XG4gICAgfSk7XG4gICAgaWYgKGRpcmVjdGVkKSBwYXR0ZXJuU3BEaXN0QmFja1tsYWJlbDJdID0gcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYSAtIGI7XG4gICAgfSk7IC8vIOiuoeeulyBRIOS4reaJgOaciSBsYWJlbDIg6IqC54K55YiwIGJlZ2luUE5vZGUg55qEIE5EUyDot53nprtcbiAgICAvLyDmiYDmnIkgbGFiZWwyIOiKgueCueWIsCBiZWdpblBOb2RlIOeahOmCu+WxheebuOS6pOivseWvvOWtkOWbvu+8mlxuICAgIC8vIGtleTogbm9kZTEuaWQtbm9kZTIuaWRcblxuICAgIHBhdHRlcm5JbnRHcmFwaE1hcCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKHBhdHRlcm5Ob2RlUGFpck1hcCwgcGF0dGVybktOZWlnaGJvclVuaXRzLCBwYXR0ZXJuLCBwYXR0ZXJuSW50R3JhcGhNYXApOyAvLyBwYXR0ZXJuIOS4rSBiZWdpbk5vZGUg5Yiw5b2T5YmNIGxhYmVsMiDoioLngrkg55qEIE5EUyDot53nprvvvIjmlbDnu4TvvIzml6DpnIDlhbPlv4PlhbfkvZPlr7nlupTliLDlk6rkuKroioLngrnvvIlcblxuICAgIHZhciBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKHBhdHRlcm5Ob2RlUGFpck1hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAocGF0dGVybk5EU0Rpc3Rba2V5XSkge1xuICAgICAgICBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheS5wdXNoKHBhdHRlcm5ORFNEaXN0W2tleV0pO1xuICAgICAgICByZXR1cm47IC8vIOe8k+WtmOi/h+WImeS4jemcgOimgeWGjeasoeiuoeeul1xuICAgICAgfVxuXG4gICAgICB2YXIgcGF0dGVybkludEdyYXBoID0gcGF0dGVybkludEdyYXBoTWFwW2tleV07XG4gICAgICBwYXR0ZXJuTkRTRGlzdFtrZXldID0gZ2V0TWF0Y2hlZENvdW50KHBhdHRlcm5JbnRHcmFwaCwgZHNHLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgICAgIGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5LnB1c2gocGF0dGVybk5EU0Rpc3Rba2V5XSk7XG4gICAgfSk7IC8vIOagueaNruWAvOS4uiBjdXJyZW50UGF0dGVybk5EU0Rpc3Qg5LuO5aSn5Yiw5bCP5o6S5bqPXG5cbiAgICBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheSA9IGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBiIC0gYTtcbiAgICB9KTtcbiAgICBwYXR0ZXJuTkRTRGlzdE1hcFtcIlwiLmNvbmNhdChiZWdpblBOb2RlLmlkLCBcIi1cIikuY29uY2F0KGxhYmVsMildID0gY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXk7XG4gICAgaWYgKGxhYmVsMiA9PT0gbGFiZWwpIHJldHVybjtcbiAgICB2YXIgY2FuZGlkYXRlc051bSA9IChjYW5kaWRhdGVzID09PSBudWxsIHx8IGNhbmRpZGF0ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNhbmRpZGF0ZXMubGVuZ3RoKSB8fCAwO1xuXG4gICAgdmFyIF9sb29wXzQgPSBmdW5jdGlvbiBfbG9vcF80KG0pIHtcbiAgICAgIHZhciBjTm9kZSA9IGNhbmRpZGF0ZXNbbV07IC8vIHBydW5lMe+8muiLpSBjYW5kaWRhdGVzIOS4reiKgueCuSBjTm9kZSDnmoQga05laWdoYm9yVW5pdHMg5Lit5qCH562+5Li6IGxhYmVsMiDnmoToioLngrnkuKrmlbDlsJHkuo4gcGF0dGVybiDkuK0gbGFiZWwyIOS4quaVsO+8jOWIoOWOu+Wug1xuXG4gICAgICB2YXIgZ3JhcGhOZWlnaGJvclVuaXQgPSBrTmVpZ2hib3JVbml0c1tub2RlTWFwW2NOb2RlLmlkXS5pZHhdO1xuICAgICAgdmFyIGdyYXBoTmVpZ2hib3JVbml0Q291bnRNYXAgPSBncmFwaE5laWdoYm9yVW5pdC5ub2RlTGFiZWxDb3VudE1hcFtsYWJlbDJdO1xuICAgICAgdmFyIHBhdHRlcm5MYWJlbDJOdW0gPSBwYXR0ZXJuTm9kZUxhYmVsTWFwW2xhYmVsMl0ubGVuZ3RoO1xuXG4gICAgICBpZiAoIWdyYXBoTmVpZ2hib3JVbml0Q291bnRNYXAgfHwgZ3JhcGhOZWlnaGJvclVuaXRDb3VudE1hcC5jb3VudCA8IHBhdHRlcm5MYWJlbDJOdW0pIHtcbiAgICAgICAgY2FuZGlkYXRlcy5zcGxpY2UobSwgMSk7XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9IC8vIHBydW5lMu+8muiLpSBjYW5kaWRhdGVzIOS4reiKgueCuSBjTm9kZSDliLAga05laWdoYm9yVW5pdHMg5Lit5qCH562+5Li6IGxhYmVsMiDnmoToioLngrnmnIDnn63ot6/lvoTlpKfkuo4gcGF0dGVyblNwRGlzdFtsYWJlbDJd77yM5Yig5Y675a6DXG4gICAgICAvLyAocHJ1bmUyIOinhOWImeWNs++8mmNhbmRpZGF0ZSDnm7jlhbPnmoTmnIDnn63ot6/lvoTnmoTmnIDlpKcgc3BEaXN0W2xhYmVsMl0ubGVuZ3RoIOS4qu+8jOaMieeFp+Wkp+Wwj+mhuuW6j+S+neasoeWSjCBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0g5Lit55qE5YC85q+U6L6D77yM5Y+q6KaB6YGH5Yiw5LiA5Liq5pivIEcgPiBRIOeahO+8jOWwseWIoOWOu+i/meS4qiBjYW5kaWRhdGUpXG5cblxuICAgICAgdmFyIHBydW5lMkludmFsaWQgPSBmYWxzZTtcblxuICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBwYXR0ZXJuTGFiZWwyTnVtOyBuKyspIHtcbiAgICAgICAgaWYgKGdyYXBoTmVpZ2hib3JVbml0Q291bnRNYXAuZGlzdHNbbl0gPiBwYXR0ZXJuU3BEaXN0W2xhYmVsMl1bbl0pIHtcbiAgICAgICAgICBwcnVuZTJJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJ1bmUySW52YWxpZCkge1xuICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShtLCAxKTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH0gLy8gcHJ1bmUz77ya6IulIGNhbmRpZGF0ZXMg5Lit6IqC54K5IGNOb2RlIOWIsCBrTmVpZ2hib3JVbml0cyDkuK3moIfnrb7kuLogbGFiZWwyIOeahOiKgueCuSBORFMg6Led56a75bCP5LqOIHBhdHRlcm5ORFNEaXN0W2JlZ2luTm9kZS5pZC1sYWJlbDJd77yM5Yig5Y675a6DXG4gICAgICAvLyBUT0RP77yacHJ1bmUz77yMY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkg5LiOIGN1cnJlbnRORFNEaXN0IOeahOavlOi+g1xuICAgICAgLy8g6K6h566XIEcg5Lit5omA5pyJIGxhYmVsMiDoioLngrnliLAgY05vZGUg55qEIE5EUyDot53nprtcbiAgICAgIC8vIOaJgOaciSBsYWJlbDIg6IqC54K55YiwIGNOb2RlIOeahOmCu+WxheebuOS6pOivseWvvOWtkOWbvu+8mlxuXG5cbiAgICAgIHZhciBjTm9kZVBhaXJNYXAgPSB7fTtcbiAgICAgIGdyYXBoTmVpZ2hib3JVbml0Lm5laWdoYm9ycy5mb3JFYWNoKGZ1bmN0aW9uIChuZWlnaGJvck5vZGUpIHtcbiAgICAgICAgdmFyIGRpc3QgPSBzcG1NYXBbXCJcIi5jb25jYXQoY05vZGUuaWQsIFwiLVwiKS5jb25jYXQobmVpZ2hib3JOb2RlLmlkKV07XG4gICAgICAgIGNOb2RlUGFpck1hcFtcIlwiLmNvbmNhdChjTm9kZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvck5vZGUuaWQpXSA9IHtcbiAgICAgICAgICBzdGFydDogbm9kZU1hcFtjTm9kZS5pZF0uaWR4LFxuICAgICAgICAgIGVuZDogbm9kZU1hcFtuZWlnaGJvck5vZGUuaWRdLmlkeCxcbiAgICAgICAgICBkaXN0YW5jZTogZGlzdFxuICAgICAgICB9O1xuICAgICAgfSk7IC8vIOabtOaWsCBpbnRHTWFwXG5cbiAgICAgIGludEdNYXAgPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChjTm9kZVBhaXJNYXAsIGtOZWlnaGJvclVuaXRzLCBncmFwaERhdGEsIGludEdNYXApOyAvLyBjYW5kaWRhdGUg5Yiw5a6D5ZGo5Zu0IGxhYmVsMiDoioLngrnnmoQgTkRTIOi3neemuywga2V5IOaYryBub2RlLmlkLW5vZGUuaWRcblxuICAgICAgdmFyIGN1cnJlbnRORFNEaXN0QXJyYXkgPSBbXTtcbiAgICAgIE9iamVjdC5rZXlzKGNOb2RlUGFpck1hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmIChuZHNEaXN0W2tleV0pIHtcbiAgICAgICAgICBjdXJyZW50TkRTRGlzdEFycmF5LnB1c2gobmRzRGlzdFtrZXldKTtcbiAgICAgICAgICByZXR1cm47IC8vIOe8k+WtmOi/h+WImeS4jemcgOimgeWGjeasoeiuoeeul1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGludEdyYXBoID0gaW50R01hcFtrZXldO1xuICAgICAgICBuZHNEaXN0W2tleV0gPSBnZXRNYXRjaGVkQ291bnQoaW50R3JhcGgsIGRzRywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG4gICAgICAgIGN1cnJlbnRORFNEaXN0QXJyYXkucHVzaChuZHNEaXN0W2tleV0pO1xuICAgICAgfSk7IC8vIOagueaNruWAvOS4uiBjdXJyZW50TkRTRGlzdEFycmF5IOS7juWkp+WIsOWwj+aOkuW6j1xuXG4gICAgICBjdXJyZW50TkRTRGlzdEFycmF5ID0gY3VycmVudE5EU0Rpc3RBcnJheS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBiIC0gYTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHBydW5lM0ludmFsaWQgPSBmYWxzZTtcblxuICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBwYXR0ZXJuTGFiZWwyTnVtOyBuKyspIHtcbiAgICAgICAgaWYgKGN1cnJlbnRORFNEaXN0QXJyYXlbbl0gPCBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheVtuXSkge1xuICAgICAgICAgIHBydW5lM0ludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwcnVuZTNJbnZhbGlkKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMuc3BsaWNlKG0sIDEpO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBtID0gY2FuZGlkYXRlc051bSAtIDE7IG0gPj0gMDsgbS0tKSB7XG4gICAgICBfbG9vcF80KG0pO1xuICAgIH1cbiAgfSk7XG4gIHZhciBjYW5kaWRhdGVHcmFwaHMgPSBbXTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTM6IGdvaW5nIHRvIHNwbGljZSBuZWlnaGJvcnMgZm9yIGVhY2ggY2FuZGlkYXRlIGdyYXBoIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyBjYW5kaWRhdGVzIOe7j+i/h+etm+mAieWQju+8jOS7peavj+S4qiBjYW5kaWRhdGUg5Li65Lit5b+D77yM55Sf5oiQIExlbmd0aC1uZWlnaGJvciDnmoTpgrvlsYXor7Hlr7zlrZDlm75cbiAgLy8g5bm25Zyo6K+x5a+85a2Q5Zu+5Lit5Y676Zmk5LiN5Y+v6IO95ZyoIFEg5LiK5om+5Yiw5Yy56YWN55qE54K577ya5ZyoIFEg5LiK5LiN5a2Y5Zyo55qEIGxhYmVs77yM5YW25LuWIGxhYmVsIOWIsCBjYW5kaWRhdGUg55qE5pyA5aSn5pyA55+t6Led56a756ym5ZCIIFHjgIFORFMg6Led56a756ym5ZCIIFFcblxuICBjYW5kaWRhdGVzID09PSBudWxsIHx8IGNhbmRpZGF0ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNhbmRpZGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAoY2FuZGlkYXRlKSB7XG4gICAgdmFyIG5vZGVJZHggPSBub2RlTWFwW2NhbmRpZGF0ZS5pZF0uaWR4O1xuICAgIHZhciBsZW5ndGhOZWlnaGJvclVuaXQgPSBmaW5kS05laWdoYm9yVW5pdChncmFwaERhdGEubm9kZXMsIHNwbVtub2RlSWR4XSwgbm9kZUlkeCwgbm9kZUxhYmVsUHJvcCwgbGVuZ3RoKTtcbiAgICB2YXIgbmVpZ2hib3JOb2RlcyA9IGxlbmd0aE5laWdoYm9yVW5pdC5uZWlnaGJvcnM7IC8vIOWIoOmZpOS4jeWPr+iDveaJvuWIsOWMuemFjeeahOmCu+WxheeCuVxuXG4gICAgdmFyIG5laWdoYm9yTnVtID0gbmVpZ2hib3JOb2Rlcy5sZW5ndGg7XG4gICAgdmFyIHVubWF0Y2hlZCA9IGZhbHNlO1xuXG4gICAgZm9yICh2YXIgaSA9IG5laWdoYm9yTnVtIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIC8vIOWmguaenOmAmui/h+ijgeWJqu+8jOespuWQiOadoeS7tueahOiKgueCueaVsOmHj+W3sui/h+Wwke+8jOivtOaYjuS4jeiDveWMuemFjei/meS4qiBjYW5kaWRhdGUg55u45YWz55qE5Zu+XG4gICAgICBpZiAobmVpZ2hib3JOb2Rlcy5sZW5ndGggKyAxIDwgcGF0dGVybi5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgdW5tYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmVpZ2hib3JOb2RlID0gbmVpZ2hib3JOb2Rlc1tpXTtcbiAgICAgIHZhciBuZWlnaGJvckxhYmVsID0gbmVpZ2hib3JOb2RlW25vZGVMYWJlbFByb3BdOyAvLyBwcnVuZTE6IOiLpeivpemCu+WxheeCueeahCBsYWJlbCDkuI3lrZjlnKjkuo4gcGF0dGVybiDkuK3vvIznp7vpmaTov5nkuKrngrlcblxuICAgICAgaWYgKCFwYXR0ZXJuTm9kZUxhYmVsTWFwW25laWdoYm9yTGFiZWxdIHx8ICFwYXR0ZXJuTm9kZUxhYmVsTWFwW25laWdoYm9yTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIHBydW5lMjog6Iul6K+l6YK75bGF54K55YiwIGNhbmRpZGF0ZSDnmoTmnIDnn63ot6/lvoTmr5TlkozlroPmnInnm7jlkIwgbGFiZWwg55qE6IqC54K55YiwIGJlZ2luUE5vZGUg55qE5pyA5aSn5pyA55+t6Lev5b6E6ZW/5bqm6ZW/77yM56e76Zmk6L+Z5Liq54K5XG4gICAgICAvLyBwcnVuZTIuMTog5aaC5p6c5rKh5pyJ6L+Z5Liq5qCH562+5YiwIGJlZ2luUE5vZGUg55qE6Led56a76K6w5b2V77yM6K+05piOIHBhdHRlcm4g5LiK77yI5Y+v6IO9IGJlZ2luUE5vZGUg5piv6L+Z5LiqIGxhYmVs77yJ5rKh5pyJ5YW25LuW6L+Z5LiqIGxhYmVsIOeahOiKgueCuVxuXG5cbiAgICAgIGlmICghcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXSB8fCAhcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoY2FuZGlkYXRlLmlkLCBcIi1cIikuY29uY2F0KG5laWdoYm9yTm9kZS5pZCk7IC8vIHBydW5lMi4yXG5cbiAgICAgIHZhciBkaXN0VG9DYW5kaWRhdGUgPSBzcG1NYXBba2V5XTtcbiAgICAgIHZhciBpZHggPSBwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdLmxlbmd0aCAtIDE7XG4gICAgICB2YXIgbWF4RGlzdFdpdGhMYWJlbEluUGF0dGVybiA9IHBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF1baWR4XTsgLy8gcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXSDlt7Lnu4/mjInnhafku47lsI/liLDlpKfmjpLluo9cblxuICAgICAgaWYgKGRpc3RUb0NhbmRpZGF0ZSA+IG1heERpc3RXaXRoTGFiZWxJblBhdHRlcm4pIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlyZWN0ZWQpIHtcbiAgICAgICAgdmFyIGtleUJhY2sgPSBcIlwiLmNvbmNhdChuZWlnaGJvck5vZGUuaWQsIFwiLVwiKS5jb25jYXQoY2FuZGlkYXRlLmlkKTtcbiAgICAgICAgdmFyIGRpc3RGcm9tQ2FuZGlkYXRlID0gc3BtTWFwW2tleUJhY2tdO1xuICAgICAgICBpZHggPSBwYXR0ZXJuU3BEaXN0QmFja1tuZWlnaGJvckxhYmVsXS5sZW5ndGggLSAxO1xuICAgICAgICB2YXIgbWF4QmFja0Rpc3RXaXRoTGFiZWxJblBhdHRlcm4gPSBwYXR0ZXJuU3BEaXN0QmFja1tuZWlnaGJvckxhYmVsXVtpZHhdO1xuXG4gICAgICAgIGlmIChkaXN0RnJvbUNhbmRpZGF0ZSA+IG1heEJhY2tEaXN0V2l0aExhYmVsSW5QYXR0ZXJuKSB7XG4gICAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gcHJ1bmUzOiDoi6Xor6XpgrvlsYXngrnliLAgY2FuZGlkYXRlIOeahCBORFMg6Led56a75q+U5ZKM5a6D5pyJ55u45ZCMIGxhYmVsIOeahOiKgueCueWIsCBiZWdpblBOb2RlIOeahOacgOWwjyBORFMg6Led56a75bCP77yM56e76Zmk6L+Z5Liq54K5XG5cblxuICAgICAgdmFyIG5kc1RvQ2FuZGlkYXRlID0gbmRzRGlzdFtrZXldID8gbmRzRGlzdFtrZXldIDogZ2V0TkRTRGlzdChncmFwaERhdGEsIGNhbmRpZGF0ZSwgbmVpZ2hib3JOb2RlLCBub2RlTWFwLCBkaXN0VG9DYW5kaWRhdGUsIGtOZWlnaGJvclVuaXRzLCBkc0csIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3AsIG5kc0Rpc3QsIGludEdNYXApO1xuICAgICAgdmFyIHBhdHRlcm5LZXkgPSBcIlwiLmNvbmNhdChiZWdpblBOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5laWdoYm9yTGFiZWwpO1xuICAgICAgdmFyIG1pbk5kc1dpdGhMYWJlbEluUGF0dGVybiA9IHBhdHRlcm5ORFNEaXN0TWFwW3BhdHRlcm5LZXldW3BhdHRlcm5ORFNEaXN0TWFwW3BhdHRlcm5LZXldLmxlbmd0aCAtIDFdOyAvLyBwYXR0ZXJuTkRTRGlzdFtrZXldIOS4gOWumuWtmOWcqFxuXG4gICAgICBpZiAobmRzVG9DYW5kaWRhdGUgPCBtaW5OZHNXaXRoTGFiZWxJblBhdHRlcm4pIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBwcnVuZTQ6IOiLpeivpemCu+WxheeCueeahOW6puaVsOWwj+S6jiBwYXR0ZXJuIOWQjCBsYWJlbCDoioLngrnmnIDlsI/luqbmlbDvvIzliKDljrvor6XngrlcblxuXG4gICAgICB2YXIgX2EgPSBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCwgbmVpZ2hib3JMYWJlbCwgcGF0dGVybk5vZGVNYXAsIHBhdHRlcm5Ob2RlTGFiZWxNYXApLFxuICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSBfYS5taW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlLFxuICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IF9hLm1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSxcbiAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gX2EubWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZTtcblxuICAgICAgaWYgKG5vZGVNYXBbbmVpZ2hib3JOb2RlLmlkXS5kZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9IC8vIOiKgueCueWcqOS4quaVsOS4iuespuWQiOWMuemFje+8iOS4jeWwkeS6jiBwYXR0ZXJuIOeahOiKgueCueS4quaVsO+8ie+8jOeOsOWcqOetm+mAieebuOWFs+i+uVxuXG5cbiAgICBpZiAoIXVubWF0Y2hlZCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnB1c2goe1xuICAgICAgICBub2RlczogW2NhbmRpZGF0ZV0uY29uY2F0KG5laWdoYm9yTm9kZXMpXG4gICAgICB9KTtcbiAgICB9XG4gIH0pOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlNDogZ29pbmcgdG8gc3BsaWNlIGVkZ2VzIGFuZCBuZWlnaGJvcnMgZm9yIGVhY2ggY2FuZGlkYXRlIGdyYXBoIC0tLS0tLS1cIlxuICAvLyApO1xuXG4gIHZhciB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZSA9ICgwLCBfZGlqa3N0cmEuZGVmYXVsdCkocGF0dGVybiwgYmVnaW5QTm9kZS5pZCwgZmFsc2UpLmxlbmd0aDtcbiAgdmFyIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXAgPSB7fTtcblxuICBpZiAoZGlyZWN0ZWQpIHtcbiAgICBPYmplY3Qua2V5cyh1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZSkuZm9yRWFjaChmdW5jdGlvbiAobm9kZUlkKSB7XG4gICAgICB2YXIgbm9kZUxhYmVsID0gcGF0dGVybk5vZGVNYXBbbm9kZUlkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgaWYgKCF1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25vZGVMYWJlbF0pIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbm9kZUxhYmVsXSA9IFt1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZVtub2RlSWRdXTtlbHNlIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbm9kZUxhYmVsXS5wdXNoKHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlW25vZGVJZF0pO1xuICAgIH0pO1xuICAgIE9iamVjdC5rZXlzKHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXApLmZvckVhY2goZnVuY3Rpb24gKHBMYWJlbCkge1xuICAgICAgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtwTGFiZWxdLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgLSBiO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcCA9IHBhdHRlcm5TcERpc3Q7XG4gIH0gLy8g546w5ZyoIGNhbmRpZGF0ZUdyYXBocyDph4zpnaLlj6rmnInoioLngrnvvIzov5vooYzovrnnmoTnrZvpgIlcblxuXG4gIHZhciBjYW5kaWRhdGVHcmFwaE51bSA9IGNhbmRpZGF0ZUdyYXBocy5sZW5ndGg7XG5cbiAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICB2YXIgY2FuZGlkYXRlR3JhcGggPSBjYW5kaWRhdGVHcmFwaHNbaV07XG4gICAgdmFyIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdO1xuICAgIHZhciBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcCA9IHt9O1xuICAgIHZhciBjYW5kaWRhdGVOb2RlTWFwID0ge307XG4gICAgY2FuZGlkYXRlR3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgcSkge1xuICAgICAgY2FuZGlkYXRlTm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgICAgaWR4OiBxLFxuICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICBkZWdyZWU6IDAsXG4gICAgICAgIGluRGVncmVlOiAwLFxuICAgICAgICBvdXREZWdyZWU6IDBcbiAgICAgIH07XG4gICAgICB2YXIgY05vZGVMYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICBpZiAoIWNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NOb2RlTGFiZWxdKSBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjTm9kZUxhYmVsXSA9IDE7ZWxzZSBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjTm9kZUxhYmVsXSsrO1xuICAgIH0pOyAvLyDmoLnmja4gY2FuZGlkYXRlIOWSjCBuZWlnaGJvck5vZGVzIOS4reeahOiKgueCueeUn+aIkCBHIOeahOivseWvvOWtkOWbvlxuICAgIC8vIOWNs++8jOWwhiBncmFwaERhdGEg5LiK5Lik56uv6YO95ZyoIGNhbmRpZGF0ZUdyYXBoLm5vZGVzIOS4reeahOi+ueaUvuWFpSBjYW5kaWRhdGVFZGdlc1xuXG4gICAgdmFyIGNhbmRpZGF0ZUVkZ2VzID0gW107XG4gICAgdmFyIGVkZ2VMYWJlbENvdW50TWFwID0ge307XG4gICAgZ3JhcGhEYXRhLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGlmIChjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXSAmJiBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICBjYW5kaWRhdGVFZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgICBpZiAoIWVkZ2VMYWJlbENvdW50TWFwW2VkZ2VbZWRnZUxhYmVsUHJvcF1dKSBlZGdlTGFiZWxDb3VudE1hcFtlZGdlW2VkZ2VMYWJlbFByb3BdXSA9IDE7ZWxzZSBlZGdlTGFiZWxDb3VudE1hcFtlZGdlW2VkZ2VMYWJlbFByb3BdXSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5kZWdyZWUrKztcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uZGVncmVlKys7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZSsrO1xuICAgICAgfVxuICAgIH0pOyAvLyBwcnVuZe+8muiLpeacieS4gOS4qiBlZGdlTGFiZWwg5ZyoIGNhbmRpZGF0ZUdyYXBoIOS4iueahOS4quaVsOWwkeS6jiBwYXR0ZXJu77yM5Y676Zmk6K+l5Zu+XG5cbiAgICB2YXIgcGF0dGVuckVkZ2VMYWJlbE51bSA9IE9iamVjdC5rZXlzKHBhdHRlcm5FZGdlTGFiZWxNYXApLmxlbmd0aDtcbiAgICB2YXIgcHJ1bmVkQnlFZGdlTGFiZWwgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGUgPSAwOyBlIDwgcGF0dGVuckVkZ2VMYWJlbE51bTsgZSsrKSB7XG4gICAgICB2YXIgbGFiZWxfMSA9IE9iamVjdC5rZXlzKHBhdHRlcm5FZGdlTGFiZWxNYXApW2VdO1xuXG4gICAgICBpZiAoIWVkZ2VMYWJlbENvdW50TWFwW2xhYmVsXzFdIHx8IGVkZ2VMYWJlbENvdW50TWFwW2xhYmVsXzFdIDwgcGF0dGVybkVkZ2VMYWJlbE1hcFtsYWJlbF8xXS5sZW5ndGgpIHtcbiAgICAgICAgcHJ1bmVkQnlFZGdlTGFiZWwgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJ1bmVkQnlFZGdlTGFiZWwpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH0gLy8g6YGN5Y6GIGNhbmRpZGF0ZUVkZ2Vz77yM6L+b6KGM6L6555qE562b6YCJXG5cblxuICAgIHZhciBjYW5kaWRhdGVFZGdlTnVtID0gY2FuZGlkYXRlRWRnZXMubGVuZ3RoOyAvLyBwcnVuZe+8muiLpei+ueaVsOi/h+Wwke+8jOWOu+mZpOivpeWbvlxuXG4gICAgaWYgKGNhbmRpZGF0ZUVkZ2VOdW0gPCBwYXR0ZXJuLmVkZ2VzLmxlbmd0aCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgfVxuXG4gICAgdmFyIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IGZhbHNlO1xuXG4gICAgdmFyIF9sb29wXzUgPSBmdW5jdGlvbiBfbG9vcF81KGUpIHtcbiAgICAgIHZhciBlZGdlID0gY2FuZGlkYXRlRWRnZXNbZV07XG4gICAgICB2YXIgZWRnZUxhYmVsID0gZWRnZVtlZGdlTGFiZWxQcm9wXTtcbiAgICAgIHZhciBwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgPSBwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF07IC8vIHBydW5lIDE6IOiLpei+ueeahCBsYWJlbCDkuI3lrZjlnKjkuo4gcGF0dGVybiDovrkgbGFiZWwg5Lit77yM5Y676Zmk6K+l6L65XG5cbiAgICAgIGlmICghcGF0dGVybkVkZ2VzV2l0aExhYmVsIHx8ICFwYXR0ZXJuRWRnZXNXaXRoTGFiZWwubGVuZ3RoKSB7XG4gICAgICAgIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0tLTsgLy8g6Iul6L+Z5LiqIGxhYmVsIOeahCBjb3VudCDlh4/lsJHkuYvlkI7vvIzor6UgbGFiZWwg55qE6L655pWw5LiN6Laz77yM5Y676Zmk6K+l5Zu+XG5cbiAgICAgICAgaWYgKHBhdHRlcm5FZGdlc1dpdGhMYWJlbCAmJiBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdIDwgcGF0dGVybkVkZ2VzV2l0aExhYmVsLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnNwbGljZShlLCAxKTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0uZGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5vdXREZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uaW5EZWdyZWUtLTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH0gLy8gcHJ1bmUgMjog6Iul6L6555qEIGxhYmVsICvkuKTnq68gbGFiZWwg55qE5LiJ5YWD57uE5YWz57O75LiN6IO95ZyoIHBhdHRlcm4g5Lit5om+5Yiw77yM5Y676Zmk6K+l6L65XG5cblxuICAgICAgdmFyIHNvdXJjZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgIHZhciB0YXJnZXRMYWJlbCA9IGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICB2YXIgZWRnZU1hdGNoZWQgPSBmYWxzZTtcbiAgICAgIHBhdHRlcm5FZGdlc1dpdGhMYWJlbC5mb3JFYWNoKGZ1bmN0aW9uIChwYXR0ZXJuRWRnZSkge1xuICAgICAgICB2YXIgcGF0dGVyblNvdXJjZSA9IHBhdHRlcm5Ob2RlTWFwW3BhdHRlcm5FZGdlLnNvdXJjZV0ubm9kZTtcbiAgICAgICAgdmFyIHBhdHRlcm5UYXJnZXQgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuRWRnZS50YXJnZXRdLm5vZGU7XG4gICAgICAgIGlmIChwYXR0ZXJuU291cmNlW25vZGVMYWJlbFByb3BdID09PSBzb3VyY2VMYWJlbCAmJiBwYXR0ZXJuVGFyZ2V0W25vZGVMYWJlbFByb3BdID09PSB0YXJnZXRMYWJlbCkgZWRnZU1hdGNoZWQgPSB0cnVlO1xuICAgICAgICBpZiAoIWRpcmVjdGVkICYmIHBhdHRlcm5Tb3VyY2Vbbm9kZUxhYmVsUHJvcF0gPT09IHRhcmdldExhYmVsICYmIHBhdHRlcm5UYXJnZXRbbm9kZUxhYmVsUHJvcF0gPT09IHNvdXJjZUxhYmVsKSBlZGdlTWF0Y2hlZCA9IHRydWU7XG4gICAgICB9KTtcblxuICAgICAgaWYgKCFlZGdlTWF0Y2hlZCkge1xuICAgICAgICBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdLS07IC8vIOiLpei/meS4qiBsYWJlbCDnmoQgY291bnQg5YeP5bCR5LmL5ZCO77yM6K+lIGxhYmVsIOeahOi+ueaVsOS4jei2s++8jOWOu+mZpOivpeWbvlxuXG4gICAgICAgIGlmIChwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgJiYgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXSA8IHBhdHRlcm5FZGdlc1dpdGhMYWJlbC5sZW5ndGgpIHtcbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjYW5kaWRhdGVFZGdlcy5zcGxpY2UoZSwgMSk7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5kZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ub3V0RGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmluRGVncmVlLS07XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGUgPSBjYW5kaWRhdGVFZGdlTnVtIC0gMTsgZSA+PSAwOyBlLS0pIHtcbiAgICAgIHZhciBzdGF0ZV8yID0gX2xvb3BfNShlKTtcblxuICAgICAgaWYgKHN0YXRlXzIgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfSAvLyBwcnVuZTI6IOWIoOmZpOi+ueeahOi/h+eoi+S4re+8jOWPkeeOsOi+ueaVsOi/h+WwkS/ovrkgbGFiZWwg5pWw6L+H5bCR5pe277yM5Y676Zmk6K+l5Zu+XG5cblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cblxuICAgIGNhbmRpZGF0ZUdyYXBoLmVkZ2VzID0gY2FuZGlkYXRlRWRnZXM7XG4gICAgdmFyIGxlbmd0aHNUb0NhbmRpZGF0ZSA9ICgwLCBfZGlqa3N0cmEuZGVmYXVsdCkoY2FuZGlkYXRlR3JhcGgsIGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdLmlkLCBmYWxzZSkubGVuZ3RoO1xuICAgIE9iamVjdC5rZXlzKGxlbmd0aHNUb0NhbmRpZGF0ZSkucmV2ZXJzZSgpLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldElkKSB7XG4gICAgICBpZiAodGFyZ2V0SWQgPT09IGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdLmlkIHx8IGNhbmRpZGF0ZUdyYXBoSW52YWxpZCkgcmV0dXJuOyAvLyBwcnVuZTQ6IOmAmui/h+S4iui/sOijgeWJqu+8jOWPr+iDveWvvOiHtOivpemCu+WxheWtkOWbvuWPmOS4uuS4jei/numAmuOAguijgeWJquaOieebruWJjeWcqOi/meS4qumCu+WxheWtkOWbvuS4reWSjCBjYW5kaWRhdGXvvIjnrKzkuIDkuKroioLngrnvvInkuI3ov57pgJrnmoToioLngrlcblxuICAgICAgaWYgKGxlbmd0aHNUb0NhbmRpZGF0ZVt0YXJnZXRJZF0gPT09IEluZmluaXR5KSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlTGFiZWwgPSBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdLS07XG5cbiAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW3RhcmdldE5vZGVMYWJlbF0gPCBwYXR0ZXJuTm9kZUxhYmVsTWFwW3RhcmdldE5vZGVMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaWR4ID0gY2FuZGlkYXRlR3JhcGgubm9kZXMuaW5kZXhPZihjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXS5ub2RlKTtcbiAgICAgICAgY2FuZGlkYXRlR3JhcGgubm9kZXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIHBydW5lNTog57uP6L+H6L656KOB5Ymq5ZCO77yM5Y+v6IO95Y+I5Ye6546w5LqG5pyA55+t6Lev5b6E6L+H6ZW/55qE6IqC54K5IO+8iOavlCBwYXR0ZXJuIOS4reWQjCBsYWJlbCDnmoToioLngrnliLAgYmVnaW5Ob2RlIOacgOWkp+acgOefrei3neemu+i/nO+8ie+8jOWIoOWOu+i/meS6m+iKgueCuVxuXG5cbiAgICAgIHZhciBuTGFiZWwgPSBub2RlTWFwW3RhcmdldElkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuXG4gICAgICBpZiAoIXVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXSB8fCAhdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtuTGFiZWxdLmxlbmd0aCB8fCBsZW5ndGhzVG9DYW5kaWRhdGVbdGFyZ2V0SWRdID4gdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtuTGFiZWxdW3VuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXS5sZW5ndGggLSAxXSkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXS0tO1xuXG4gICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdIDwgcGF0dGVybk5vZGVMYWJlbE1hcFt0YXJnZXROb2RlTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGlkeCA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzLmluZGV4T2YoY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZSk7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cblxuICAgIHZhciBkZWdyZWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICB2YXIgbG9vcENvdW50ID0gMDtcblxuICAgIHdoaWxlIChkZWdyZWVDaGFuZ2VkICYmICFjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGRlZ3JlZUNoYW5nZWQgPSBmYWxzZTsgLy8gY2FuZGlkYXRlIOW6puaVsOS4jei2s++8jOWIoOWOu+ivpeWbvlxuXG4gICAgICB2YXIgY29uZGl0aW9uID0gZGlyZWN0ZWQgPyBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uZGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0uZGVncmVlIHx8IGNhbmRpZGF0ZU5vZGVNYXBbY2FuZGlkYXRlLmlkXS5pbkRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmluRGVncmVlIHx8IGNhbmRpZGF0ZU5vZGVNYXBbY2FuZGlkYXRlLmlkXS5vdXREZWdyZWUgPCBwYXR0ZXJuTm9kZU1hcFtiZWdpblBOb2RlLmlkXS5vdXREZWdyZWUgOiBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uZGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0uZGVncmVlO1xuXG4gICAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSAvLyBjYW5kaWRhdGUgbGFiZWwg5Liq5pWw5LiN6Laz77yM5Yig5Y676K+l5Zu+XG5cblxuICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NhbmRpZGF0ZVtub2RlTGFiZWxQcm9wXV0gPCBwYXR0ZXJuTm9kZUxhYmVsTWFwW2NhbmRpZGF0ZVtub2RlTGFiZWxQcm9wXV0ubGVuZ3RoKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSAvLyBwcnVuZTbvvJrljrvpmaTluqbmlbDov4flsI/nmoToioLngrlcblxuXG4gICAgICB2YXIgY3VycmVudENhbmRpZGF0ZU5vZGVOdW0gPSBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIG8gPSBjdXJyZW50Q2FuZGlkYXRlTm9kZU51bSAtIDE7IG8gPj0gMDsgby0tKSB7XG4gICAgICAgIHZhciBjZ05vZGUgPSBjYW5kaWRhdGVHcmFwaC5ub2Rlc1tvXTtcbiAgICAgICAgdmFyIG5vZGVEZWdyZWUgPSBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0uZGVncmVlO1xuICAgICAgICB2YXIgbm9kZUluRGVncmVlID0gY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdLmluRGVncmVlO1xuICAgICAgICB2YXIgbm9kZU91dERlZ3JlZSA9IGNhbmRpZGF0ZU5vZGVNYXBbY2dOb2RlLmlkXS5vdXREZWdyZWU7XG4gICAgICAgIHZhciBjTm9kZUxhYmVsID0gY2dOb2RlW25vZGVMYWJlbFByb3BdO1xuXG4gICAgICAgIHZhciBfZSA9IHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwLCBjTm9kZUxhYmVsLCBwYXR0ZXJuTm9kZU1hcCwgcGF0dGVybk5vZGVMYWJlbE1hcCksXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID0gX2UubWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IF9lLm1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSxcbiAgICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPSBfZS5taW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlO1xuXG4gICAgICAgIHZhciBkZWxldGVDb25kaXRpb24gPSBkaXJlY3RlZCA/IG5vZGVEZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlIHx8IG5vZGVJbkRlZ3JlZSA8IG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSB8fCBub2RlT3V0RGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA6IG5vZGVEZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlO1xuXG4gICAgICAgIGlmIChkZWxldGVDb25kaXRpb24pIHtcbiAgICAgICAgICBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dLS07IC8vIOiKgueCuSBsYWJlbCDkuKrmlbDkuI3otrNcblxuICAgICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dIDwgcGF0dGVybk5vZGVMYWJlbE1hcFtjZ05vZGVbbm9kZUxhYmVsUHJvcF1dLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShvLCAxKTtcbiAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCB8fCAhZGVncmVlQ2hhbmdlZCAmJiBsb29wQ291bnQgIT09IDApIGJyZWFrOyAvLyDnu4/ov4cgcHJ1bmU1IOiKgueCueijgeWJqu+8jOWIoOWOu+err+eCueW3sue7j+S4jeWcqCBjYW5kaWRhdGVHcmFwaCDkuK3nmoTovrlcblxuICAgICAgY2FuZGlkYXRlRWRnZU51bSA9IGNhbmRpZGF0ZUVkZ2VzLmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgeSA9IGNhbmRpZGF0ZUVkZ2VOdW0gLSAxOyB5ID49IDA7IHktLSkge1xuICAgICAgICB2YXIgY2VkZ2UgPSBjYW5kaWRhdGVFZGdlc1t5XTtcblxuICAgICAgICBpZiAoIWNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2Uuc291cmNlXSB8fCAhY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdKSB7XG4gICAgICAgICAgY2FuZGlkYXRlRWRnZXMuc3BsaWNlKHksIDEpO1xuICAgICAgICAgIHZhciBlZGdlTGFiZWwgPSBjZWRnZVtlZGdlTGFiZWxQcm9wXTtcbiAgICAgICAgICBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdLS07XG5cbiAgICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdKSB7XG4gICAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0uZGVncmVlLS07XG4gICAgICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0ub3V0RGVncmVlLS07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdLmRlZ3JlZS0tO1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS50YXJnZXRdLmluRGVncmVlLS07XG4gICAgICAgICAgfSAvLyDovrkgbGFiZWwg5pWw6YeP5LiN6LazXG5cblxuICAgICAgICAgIGlmIChwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF0gJiYgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXSA8IHBhdHRlcm5FZGdlTGFiZWxNYXBbZWRnZUxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZWdyZWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsb29wQ291bnQrKztcbiAgICB9XG5cbiAgICBpZiAoY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9IC8vIHBydW5lOiDoi6XoioLngrkv6L655pWw6L+H5bCR77yM6IqC54K5L+i+uSBsYWJlbCDov4flsJHvvIzljrvmjonov5nkuKrlm75cblxuXG4gICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCB8fCBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5sZW5ndGggPCBwYXR0ZXJuLm5vZGVzLmxlbmd0aCB8fCBjYW5kaWRhdGVFZGdlcy5sZW5ndGggPCBwYXR0ZXJuLmVkZ2VzLmxlbmd0aCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGkgPSBjYW5kaWRhdGVHcmFwaE51bSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8yKGkpO1xuXG4gICAgaWYgKHN0YXRlXzEgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gIH0gLy8g5q2k5pe25bey57uP55Sf5oiQ55qE5aSa5LiqIGNhbmRpZGF0ZUdyYXBoc++8jOWPr+iDveaciemHjeWkjVxuICAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlNTogZ29pbmcgdG8gc3BsaWNlIGR1bHBsaWNhdGVkIGNhbmRpZGF0ZSBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIOWIoOWOuyBjYW5kaWRhdGVHcmFwaHMg5Lit5LiA5qih5LiA5qC355qE5a2Q5Zu+77yM6YCa6L+H6L6555qEIG5vZGUtbm9kZS1lZGdlTGFiZWwg5L2c5Li6IGtlee+8jOi/meexu+i+ueS4quaVsOS9nOS4uiB2YWx1Ze+8jOi/m+ihjOWMuemFjVxuXG5cbiAgdmFyIGN1cnJlbnRMZW5ndGggPSBjYW5kaWRhdGVHcmFwaHMubGVuZ3RoO1xuXG4gIHZhciBfbG9vcF8zID0gZnVuY3Rpb24gX2xvb3BfMyhpKSB7XG4gICAgdmFyIGNnMSA9IGNhbmRpZGF0ZUdyYXBoc1tpXTtcbiAgICB2YXIgY2cxRWRnZU1hcCA9IHt9OyAvLyBbbm9kZTEuaWQtbm9kZTIuaWQtZWRnZS5sYWJlbF06IGNvdW50XG5cbiAgICBjZzEuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2Uuc291cmNlLCBcIi1cIikuY29uY2F0KGVkZ2UudGFyZ2V0LCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwpO1xuICAgICAgaWYgKCFjZzFFZGdlTWFwW2tleV0pIGNnMUVkZ2VNYXBba2V5XSA9IDE7ZWxzZSBjZzFFZGdlTWFwW2tleV0rKztcbiAgICB9KTtcblxuICAgIHZhciBfbG9vcF82ID0gZnVuY3Rpb24gX2xvb3BfNihqKSB7XG4gICAgICB2YXIgY2cyID0gY2FuZGlkYXRlR3JhcGhzW2pdO1xuICAgICAgdmFyIGNnMkVkZ2VNYXAgPSB7fTsgLy8gW25vZGUxLmlkLW5vZGUyLmlkLWVkZ2UubGFiZWxdOiBjb3VudFxuXG4gICAgICBjZzIuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoZWRnZS5zb3VyY2UsIFwiLVwiKS5jb25jYXQoZWRnZS50YXJnZXQsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCk7XG4gICAgICAgIGlmICghY2cyRWRnZU1hcFtrZXldKSBjZzJFZGdlTWFwW2tleV0gPSAxO2Vsc2UgY2cyRWRnZU1hcFtrZXldKys7XG4gICAgICB9KTtcbiAgICAgIHZhciBzYW1lID0gdHJ1ZTtcblxuICAgICAgaWYgKE9iamVjdC5rZXlzKGNnMkVkZ2VNYXApLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoY2cxRWRnZU1hcCkubGVuZ3RoKSB7XG4gICAgICAgIHNhbWUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGNnMUVkZ2VNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIGlmIChjZzJFZGdlTWFwW2tleV0gIT09IGNnMUVkZ2VNYXBba2V5XSkgc2FtZSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNhbWUpIHtcbiAgICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShqLCAxKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaiA9IGN1cnJlbnRMZW5ndGggLSAxOyBqID4gaTsgai0tKSB7XG4gICAgICBfbG9vcF82KGopO1xuICAgIH1cblxuICAgIGN1cnJlbnRMZW5ndGggPSBjYW5kaWRhdGVHcmFwaHMubGVuZ3RoO1xuICB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDw9IGN1cnJlbnRMZW5ndGggLSAxOyBpKyspIHtcbiAgICBfbG9vcF8zKGkpO1xuICB9XG5cbiAgcmV0dXJuIGNhbmRpZGF0ZUdyYXBocztcbn07XG5cbnZhciBfZGVmYXVsdCA9IEdBRERJO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/gaddi.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/label-propagation.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/label-propagation.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\nvar labelPropagation = function labelPropagation(graphData, directed, weightPropertyName, maxIteration) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (maxIteration === void 0) {\n maxIteration = 1000;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = (0, _util.uniqueId)();\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = (0, _adjacentMatrix.default)(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {};\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n });\n ks.push(k);\n });\n var iter = 0;\n\n var _loop_1 = function _loop_1() {\n var changed = false;\n nodes.forEach(function (node) {\n var neighborClusters = {};\n Object.keys(neighbors[node.id]).forEach(function (neighborId) {\n var neighborWeight = neighbors[node.id][neighborId];\n var neighborNode = nodeMap[neighborId].node;\n var neighborClusterId = neighborNode.clusterId;\n if (!neighborClusters[neighborClusterId]) neighborClusters[neighborClusterId] = 0;\n neighborClusters[neighborClusterId] += neighborWeight;\n }); // find the cluster with max weight\n\n var maxWeight = -Infinity;\n var bestClusterIds = [];\n Object.keys(neighborClusters).forEach(function (clusterId) {\n if (maxWeight < neighborClusters[clusterId]) {\n maxWeight = neighborClusters[clusterId];\n bestClusterIds = [clusterId];\n } else if (maxWeight === neighborClusters[clusterId]) {\n bestClusterIds.push(clusterId);\n }\n });\n if (bestClusterIds.length === 1 && bestClusterIds[0] === node.clusterId) return;\n var selfClusterIdx = bestClusterIds.indexOf(node.clusterId);\n if (selfClusterIdx >= 0) bestClusterIds.splice(selfClusterIdx, 1);\n\n if (bestClusterIds && bestClusterIds.length) {\n changed = true; // remove from origin cluster\n\n var selfCluster = clusters[node.clusterId];\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node);\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // move the node to the best cluster\n\n var randomIdx = Math.floor(Math.random() * bestClusterIds.length);\n var bestCluster = clusters[bestClusterIds[randomIdx]];\n bestCluster.nodes.push(node);\n node.clusterId = bestCluster.id;\n }\n });\n if (!changed) return \"break\";\n iter++;\n };\n\n while (iter < maxIteration) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n } // delete the empty clusters\n\n\n Object.keys(clusters).forEach(function (clusterId) {\n var cluster = clusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete clusters[clusterId];\n }\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(clusters).forEach(function (clusterId) {\n clustersArray.push(clusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nvar _default = labelPropagation;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9sYWJlbC1wcm9wYWdhdGlvbi5qcz82MWJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsNkNBQTZDLG1CQUFPLENBQUMsZ0ZBQW1COztBQUV4RSxZQUFZLG1CQUFPLENBQUMsMERBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTCxvRUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0EsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL2xhYmVsLXByb3BhZ2F0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfYWRqYWNlbnRNYXRyaXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2FkamFjZW50LW1hdHJpeFwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICog5qCH562+5Lyg5pKt566X5rOVXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuacieWQkeWbvu+8jOm7mOiupOS4uiBmYWxzZVxuICogQHBhcmFtIHdlaWdodFByb3BlcnR5TmFtZSDmnYPph43nmoTlsZ7mgKflrZfmrrVcbiAqIEBwYXJhbSBtYXhJdGVyYXRpb24g5pyA5aSn6L+t5Luj5qyh5pWwXG4gKi9cbnZhciBsYWJlbFByb3BhZ2F0aW9uID0gZnVuY3Rpb24gbGFiZWxQcm9wYWdhdGlvbihncmFwaERhdGEsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUsIG1heEl0ZXJhdGlvbikge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAod2VpZ2h0UHJvcGVydHlOYW1lID09PSB2b2lkIDApIHtcbiAgICB3ZWlnaHRQcm9wZXJ0eU5hbWUgPSAnd2VpZ2h0JztcbiAgfVxuXG4gIGlmIChtYXhJdGVyYXRpb24gPT09IHZvaWQgMCkge1xuICAgIG1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gIH0gLy8gdGhlIG9yaWdpbiBkYXRhXG5cblxuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgY2x1c3RlcnMgPSB7fTtcbiAgdmFyIG5vZGVNYXAgPSB7fTsgLy8gaW5pdCB0aGUgY2x1c3RlcnMgYW5kIG5vZGVNYXBcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGNpZCA9ICgwLCBfdXRpbC51bmlxdWVJZCkoKTtcbiAgICBub2RlLmNsdXN0ZXJJZCA9IGNpZDtcbiAgICBjbHVzdGVyc1tjaWRdID0ge1xuICAgICAgaWQ6IGNpZCxcbiAgICAgIG5vZGVzOiBbbm9kZV1cbiAgICB9O1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBub2RlOiBub2RlLFxuICAgICAgaWR4OiBpXG4gICAgfTtcbiAgfSk7IC8vIHRoZSBhZGphY2VudCBtYXRyaXggb2YgY2FsTm9kZXMgaW5zaWRlIGNsdXN0ZXJzXG5cbiAgdmFyIGFkak1hdHJpeCA9ICgwLCBfYWRqYWNlbnRNYXRyaXguZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIHRoZSBzdW0gb2YgZWFjaCByb3cgaW4gYWRqYWNlbnQgbWF0cml4XG5cbiAgdmFyIGtzID0gW107XG4gIC8qKlxuICAgKiBuZWlnaGJvciBub2RlcyAoaWQgZm9yIGtleSBhbmQgd2VpZ2h0IGZvciB2YWx1ZSkgZm9yIGVhY2ggbm9kZVxuICAgKiBuZWlnaGJvcnMgPSB7XG4gICAqICBpZChub2RlX2lkKTogeyBpZChuZWlnaGJvcl8xX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIGlkKG5laWdoYm9yXzJfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgLi4uIH0sXG4gICAqICAuLi5cbiAgICogfVxuICAgKi9cblxuICB2YXIgbmVpZ2hib3JzID0ge307XG4gIGFkak1hdHJpeC5mb3JFYWNoKGZ1bmN0aW9uIChyb3csIGkpIHtcbiAgICB2YXIgayA9IDA7XG4gICAgdmFyIGlpZCA9IG5vZGVzW2ldLmlkO1xuICAgIG5laWdoYm9yc1tpaWRdID0ge307XG4gICAgcm93LmZvckVhY2goZnVuY3Rpb24gKGVudHJ5LCBqKSB7XG4gICAgICBpZiAoIWVudHJ5KSByZXR1cm47XG4gICAgICBrICs9IGVudHJ5O1xuICAgICAgdmFyIGppZCA9IG5vZGVzW2pdLmlkO1xuICAgICAgbmVpZ2hib3JzW2lpZF1bamlkXSA9IGVudHJ5O1xuICAgIH0pO1xuICAgIGtzLnB1c2goayk7XG4gIH0pO1xuICB2YXIgaXRlciA9IDA7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgIHZhciBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlcnMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKG5laWdoYm9yc1tub2RlLmlkXSkuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JJZCkge1xuICAgICAgICB2YXIgbmVpZ2hib3JXZWlnaHQgPSBuZWlnaGJvcnNbbm9kZS5pZF1bbmVpZ2hib3JJZF07XG4gICAgICAgIHZhciBuZWlnaGJvck5vZGUgPSBub2RlTWFwW25laWdoYm9ySWRdLm5vZGU7XG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJJZCA9IG5laWdoYm9yTm9kZS5jbHVzdGVySWQ7XG4gICAgICAgIGlmICghbmVpZ2hib3JDbHVzdGVyc1tuZWlnaGJvckNsdXN0ZXJJZF0pIG5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdID0gMDtcbiAgICAgICAgbmVpZ2hib3JDbHVzdGVyc1tuZWlnaGJvckNsdXN0ZXJJZF0gKz0gbmVpZ2hib3JXZWlnaHQ7XG4gICAgICB9KTsgLy8gZmluZCB0aGUgY2x1c3RlciB3aXRoIG1heCB3ZWlnaHRcblxuICAgICAgdmFyIG1heFdlaWdodCA9IC1JbmZpbml0eTtcbiAgICAgIHZhciBiZXN0Q2x1c3RlcklkcyA9IFtdO1xuICAgICAgT2JqZWN0LmtleXMobmVpZ2hib3JDbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgICAgIGlmIChtYXhXZWlnaHQgPCBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF0pIHtcbiAgICAgICAgICBtYXhXZWlnaHQgPSBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgICAgICAgYmVzdENsdXN0ZXJJZHMgPSBbY2x1c3RlcklkXTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXhXZWlnaHQgPT09IG5laWdoYm9yQ2x1c3RlcnNbY2x1c3RlcklkXSkge1xuICAgICAgICAgIGJlc3RDbHVzdGVySWRzLnB1c2goY2x1c3RlcklkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoYmVzdENsdXN0ZXJJZHMubGVuZ3RoID09PSAxICYmIGJlc3RDbHVzdGVySWRzWzBdID09PSBub2RlLmNsdXN0ZXJJZCkgcmV0dXJuO1xuICAgICAgdmFyIHNlbGZDbHVzdGVySWR4ID0gYmVzdENsdXN0ZXJJZHMuaW5kZXhPZihub2RlLmNsdXN0ZXJJZCk7XG4gICAgICBpZiAoc2VsZkNsdXN0ZXJJZHggPj0gMCkgYmVzdENsdXN0ZXJJZHMuc3BsaWNlKHNlbGZDbHVzdGVySWR4LCAxKTtcblxuICAgICAgaWYgKGJlc3RDbHVzdGVySWRzICYmIGJlc3RDbHVzdGVySWRzLmxlbmd0aCkge1xuICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsgLy8gcmVtb3ZlIGZyb20gb3JpZ2luIGNsdXN0ZXJcblxuICAgICAgICB2YXIgc2VsZkNsdXN0ZXIgPSBjbHVzdGVyc1tub2RlLmNsdXN0ZXJJZF07XG4gICAgICAgIHZhciBub2RlSW5TZWxmQ2x1c3RlcklkeCA9IHNlbGZDbHVzdGVyLm5vZGVzLmluZGV4T2Yobm9kZSk7XG4gICAgICAgIHNlbGZDbHVzdGVyLm5vZGVzLnNwbGljZShub2RlSW5TZWxmQ2x1c3RlcklkeCwgMSk7IC8vIG1vdmUgdGhlIG5vZGUgdG8gdGhlIGJlc3QgY2x1c3RlclxuXG4gICAgICAgIHZhciByYW5kb21JZHggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBiZXN0Q2x1c3Rlcklkcy5sZW5ndGgpO1xuICAgICAgICB2YXIgYmVzdENsdXN0ZXIgPSBjbHVzdGVyc1tiZXN0Q2x1c3Rlcklkc1tyYW5kb21JZHhdXTtcbiAgICAgICAgYmVzdENsdXN0ZXIubm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgbm9kZS5jbHVzdGVySWQgPSBiZXN0Q2x1c3Rlci5pZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIWNoYW5nZWQpIHJldHVybiBcImJyZWFrXCI7XG4gICAgaXRlcisrO1xuICB9O1xuXG4gIHdoaWxlIChpdGVyIDwgbWF4SXRlcmF0aW9uKSB7XG4gICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKCk7XG5cbiAgICBpZiAoc3RhdGVfMSA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgfSAvLyBkZWxldGUgdGhlIGVtcHR5IGNsdXN0ZXJzXG5cblxuICBPYmplY3Qua2V5cyhjbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgdmFyIGNsdXN0ZXIgPSBjbHVzdGVyc1tjbHVzdGVySWRdO1xuXG4gICAgaWYgKCFjbHVzdGVyLm5vZGVzIHx8ICFjbHVzdGVyLm5vZGVzLmxlbmd0aCkge1xuICAgICAgZGVsZXRlIGNsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgfVxuICB9KTsgLy8gZ2V0IHRoZSBjbHVzdGVyIGVkZ2VzXG5cbiAgdmFyIGNsdXN0ZXJFZGdlcyA9IFtdO1xuICB2YXIgY2x1c3RlckVkZ2VNYXAgPSB7fTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHdlaWdodCA9IGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxO1xuICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcbiAgICB2YXIgbmV3RWRnZUlkID0gXCJcIi5jb25jYXQoc291cmNlQ2x1c3RlcklkLCBcIi0tLVwiKS5jb25jYXQodGFyZ2V0Q2x1c3RlcklkKTtcblxuICAgIGlmIChjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdKSB7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLndlaWdodCArPSB3ZWlnaHQ7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLmNvdW50Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBuZXdFZGdlID0ge1xuICAgICAgICBzb3VyY2U6IHNvdXJjZUNsdXN0ZXJJZCxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXRDbHVzdGVySWQsXG4gICAgICAgIHdlaWdodDogd2VpZ2h0LFxuICAgICAgICBjb3VudDogMVxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0gPSBuZXdFZGdlO1xuICAgICAgY2x1c3RlckVkZ2VzLnB1c2gobmV3RWRnZSk7XG4gICAgfVxuICB9KTtcbiAgdmFyIGNsdXN0ZXJzQXJyYXkgPSBbXTtcbiAgT2JqZWN0LmtleXMoY2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIGNsdXN0ZXJzQXJyYXkucHVzaChjbHVzdGVyc1tjbHVzdGVySWRdKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY2x1c3RlcnM6IGNsdXN0ZXJzQXJyYXksXG4gICAgY2x1c3RlckVkZ2VzOiBjbHVzdGVyRWRnZXNcbiAgfTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGxhYmVsUHJvcGFnYXRpb247XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/label-propagation.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/louvain.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/louvain.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _vector = _interopRequireDefault(__webpack_require__(/*! ./utils/vector */ \"./node_modules/@antv/algorithm/lib/utils/vector.js\"));\n\nvar _nodeProperties = __webpack_require__(/*! ./utils/node-properties */ \"./node_modules/@antv/algorithm/lib/utils/node-properties.js\");\n\nvar _dataPreprocessing = __webpack_require__(/*! ./utils/data-preprocessing */ \"./node_modules/@antv/algorithm/lib/utils/data-preprocessing.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getModularity = function getModularity(nodes, adjMatrix, ks, m) {\n var length = adjMatrix.length;\n var param = 2 * m;\n var modularity = 0;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (clusteri !== clusterj) continue;\n var entry = adjMatrix[i][j] || 0;\n var ki = ks[i] || 0;\n var kj = ks[j] || 0;\n modularity += entry - ki * kj / param;\n }\n }\n\n modularity *= 1 / param;\n return modularity;\n}; // 模块惯性度,衡量属性相似度\n\n\nvar getInertialModularity = function getInertialModularity(nodes, allPropertiesWeight) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var length = nodes.length;\n var totalProperties = new _vector.default([]);\n\n for (var i = 0; i < length; i++) {\n totalProperties = totalProperties.add(new _vector.default(allPropertiesWeight[i]));\n } // 均值向量\n\n\n var avgProperties = totalProperties.avg(length);\n avgProperties.normalize(); // 节点集合的方差: 节点v与均值向量的平方欧式距离之和\n\n var variance = 0;\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _vector.default(allPropertiesWeight[i]);\n var squareEuclideanDistance = propertiesi.squareEuclideanDistance(avgProperties);\n variance += squareEuclideanDistance;\n } // 任意两点间的欧式平方距离\n\n\n var squareEuclideanDistanceInfo = [];\n nodes.forEach(function () {\n squareEuclideanDistanceInfo.push([]);\n });\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _vector.default(allPropertiesWeight[i]);\n nodes[i]['clusterInertial'] = 0;\n\n for (var j = 0; j < length; j++) {\n if (i === j) {\n squareEuclideanDistanceInfo[i][j] = 0;\n continue;\n }\n\n var propertiesj = new _vector.default(allPropertiesWeight[j]);\n squareEuclideanDistanceInfo[i][j] = propertiesi.squareEuclideanDistance(propertiesj);\n nodes[i]['clusterInertial'] += squareEuclideanDistanceInfo[i][j];\n }\n } // 计算模块惯性度\n\n\n var inertialModularity = 0;\n var param = 2 * length * variance;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (i === j || clusteri !== clusterj) continue;\n var inertial = nodes[i].clusterInertial * nodes[j].clusterInertial / Math.pow(param, 2) - squareEuclideanDistanceInfo[i][j] / param;\n inertialModularity += inertial;\n }\n }\n\n return Number(inertialModularity.toFixed(4));\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialModularity 是否使用惯性模块度(即节点属性相似性)\n */\n\n\nvar louvain = function louvain(graphData, directed, weightPropertyName, threshold, inertialModularity, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialModularity === void 0) {\n inertialModularity = false;\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allPropertiesWeight = [];\n\n if (inertialModularity) {\n nodes.forEach(function (node, index) {\n node.properties = node.properties || {};\n node.originIndex = index;\n });\n var nodeTypeInfo_1 = [];\n\n if (nodes.every(function (node) {\n return node.hasOwnProperty('nodeType');\n })) {\n nodeTypeInfo_1 = Array.from(new Set(nodes.map(function (node) {\n return node.nodeType;\n })));\n nodes.forEach(function (node) {\n node.properties.nodeType = nodeTypeInfo_1.findIndex(function (nodeType) {\n return nodeType === node.nodeType;\n });\n });\n } // 所有节点属性集合\n\n\n var properties = (0, _nodeProperties.getAllProperties)(nodes); // 所有节点属性one-hot特征向量集合\n\n allPropertiesWeight = (0, _dataPreprocessing.oneHot)(properties);\n }\n\n var uniqueId = 1;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = String(uniqueId++);\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = (0, _adjacentMatrix.default)(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {}; // the sum of the weights of all edges in the graph\n\n var m = 0;\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n m += entry;\n });\n ks.push(k);\n });\n m /= 2;\n var totalModularity = Infinity;\n var previousModularity = Infinity;\n var iter = 0;\n var finalNodes = [];\n var finalClusters = {};\n\n while (true) {\n if (inertialModularity && nodes.every(function (node) {\n return node.hasOwnProperty('properties');\n })) {\n totalModularity = getModularity(nodes, adjMatrix, ks, m) + getInertialModularity(nodes, allPropertiesWeight) * inertialWeight;\n } else {\n totalModularity = getModularity(nodes, adjMatrix, ks, m);\n } // 第一次迭代previousModularity直接赋值\n\n\n if (iter === 0) {\n previousModularity = totalModularity;\n finalNodes = nodes;\n finalClusters = clusters;\n }\n\n var increaseWithinThreshold = totalModularity > 0 && totalModularity > previousModularity && totalModularity - previousModularity < threshold; // 总模块度增加才更新最优解\n\n if (totalModularity > previousModularity) {\n finalNodes = nodes.map(function (node) {\n return {\n node: node,\n clusterId: node.clusterId\n };\n });\n finalClusters = (0, _util.clone)(clusters);\n previousModularity = totalModularity;\n } // whether to terminate the iterations\n\n\n if (increaseWithinThreshold || iter > 100) {\n break;\n }\n\n ;\n iter++; // pre compute some values for current clusters\n\n Object.keys(clusters).forEach(function (clusterId) {\n // sum of weights of edges to nodes in cluster\n var sumTot = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === clusterId && targetClusterId !== clusterId || targetClusterId === clusterId && sourceClusterId !== clusterId) {\n sumTot = sumTot + (edge[weightPropertyName] || 1);\n }\n });\n clusters[clusterId].sumTot = sumTot;\n }); // move the nodes to increase the delta modularity\n\n nodes.forEach(function (node, i) {\n var selfCluster = clusters[node.clusterId];\n var bestIncrease = 0;\n var bestCluster;\n var commonParam = ks[i] / (2 * m); // sum of weights of edges from node to nodes in cluster\n\n var kiin = 0;\n var selfClusterNodes = selfCluster.nodes;\n selfClusterNodes.forEach(function (scNode) {\n var scNodeIdx = nodeMap[scNode.id].idx;\n kiin += adjMatrix[i][scNodeIdx] || 0;\n }); // the modurarity for **removing** the node i from the origin cluster of node i\n\n var removeModurarity = kiin - selfCluster.sumTot * commonParam; // nodes for **removing** node i into this neighbor cluster\n\n var selfClusterNodesAfterRemove = selfClusterNodes.filter(function (scNode) {\n return scNode.id !== node.id;\n });\n var propertiesWeightRemove = [];\n selfClusterNodesAfterRemove.forEach(function (nodeRemove, index) {\n propertiesWeightRemove[index] = allPropertiesWeight[nodeRemove.originIndex];\n }); // the inertialModularity for **removing** the node i from the origin cluster of node i\n\n var removeInertialModularity = getInertialModularity(selfClusterNodesAfterRemove, allPropertiesWeight) * inertialWeight; // the neightbors of the node\n\n var nodeNeighborIds = neighbors[node.id];\n Object.keys(nodeNeighborIds).forEach(function (neighborNodeId) {\n var neighborNode = nodeMap[neighborNodeId].node;\n var neighborClusterId = neighborNode.clusterId; // if the node and the neighbor of node are in the same cluster, reutrn\n\n if (neighborClusterId === node.clusterId) return;\n var neighborCluster = clusters[neighborClusterId];\n var clusterNodes = neighborCluster.nodes; // if the cluster is empty, remove the cluster and return\n\n if (!clusterNodes || !clusterNodes.length) return; // sum of weights of edges from node to nodes in cluster\n\n var neighborClusterKiin = 0;\n clusterNodes.forEach(function (cNode) {\n var cNodeIdx = nodeMap[cNode.id].idx;\n neighborClusterKiin += adjMatrix[i][cNodeIdx] || 0;\n }); // the modurarity for **adding** node i into this neighbor cluster\n\n var addModurarity = neighborClusterKiin - neighborCluster.sumTot * commonParam; // nodes for **adding** node i into this neighbor cluster\n\n var clusterNodesAfterAdd = clusterNodes.concat([node]);\n var propertiesWeightAdd = [];\n clusterNodesAfterAdd.forEach(function (nodeAdd, index) {\n propertiesWeightAdd[index] = allPropertiesWeight[nodeAdd.originIndex];\n }); // the inertialModularity for **adding** node i into this neighbor cluster\n\n var addInertialModularity = getInertialModularity(clusterNodesAfterAdd, allPropertiesWeight) * inertialWeight; // the increase modurarity is the difference between addModurarity and removeModurarity\n\n var increase = addModurarity - removeModurarity;\n\n if (inertialModularity) {\n increase = addModurarity + addInertialModularity - (removeModurarity + removeInertialModularity);\n } // find the best cluster to move node i into\n\n\n if (increase > bestIncrease) {\n bestIncrease = increase;\n bestCluster = neighborCluster;\n }\n }); // if found a best cluster to move into\n\n if (bestIncrease > 0) {\n bestCluster.nodes.push(node);\n var previousClusterId_1 = node.clusterId;\n node.clusterId = bestCluster.id; // move the node to the best cluster\n\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); // remove from origin cluster\n\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // update sumTot for clusters\n // sum of weights of edges to nodes in cluster\n\n var neighborClusterSumTot_1 = 0;\n var selfClusterSumTot_1 = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === bestCluster.id && targetClusterId !== bestCluster.id || targetClusterId === bestCluster.id && sourceClusterId !== bestCluster.id) {\n neighborClusterSumTot_1 = neighborClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n\n if (sourceClusterId === previousClusterId_1 && targetClusterId !== previousClusterId_1 || targetClusterId === previousClusterId_1 && sourceClusterId !== previousClusterId_1) {\n selfClusterSumTot_1 = selfClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n }); // the nodes of the clusters to move into and remove are changed, update their sumTot\n\n bestCluster.sumTot = neighborClusterSumTot_1;\n selfCluster.sumTot = selfClusterSumTot_1;\n }\n });\n } // delete the empty clusters, assign increasing clusterId\n\n\n var newClusterIdMap = {};\n var clusterIdx = 0;\n Object.keys(finalClusters).forEach(function (clusterId) {\n var cluster = finalClusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete finalClusters[clusterId];\n return;\n }\n\n var newId = String(clusterIdx + 1);\n\n if (newId === clusterId) {\n return;\n }\n\n cluster.id = newId;\n cluster.nodes = cluster.nodes.map(function (item) {\n return {\n id: item.id,\n clusterId: newId\n };\n });\n finalClusters[newId] = cluster;\n newClusterIdMap[clusterId] = newId;\n delete finalClusters[clusterId];\n clusterIdx++;\n }); // restore node clusterId\n\n finalNodes.forEach(function (nodeInfo) {\n var node = nodeInfo.node,\n clusterId = nodeInfo.clusterId;\n node.clusterId = clusterId;\n if (node.clusterId && newClusterIdMap[node.clusterId]) node.clusterId = newClusterIdMap[node.clusterId];\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(finalClusters).forEach(function (clusterId) {\n clustersArray.push(finalClusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nvar _default = louvain;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9sb3V2YWluLmpzP2IxNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSxZQUFZLG1CQUFPLENBQUMsMERBQVk7O0FBRWhDLDZDQUE2QyxtQkFBTyxDQUFDLGdGQUFtQjs7QUFFeEUscUNBQXFDLG1CQUFPLENBQUMsMEVBQWdCOztBQUU3RCxzQkFBc0IsbUJBQU8sQ0FBQyw0RkFBeUI7O0FBRXZELHlCQUF5QixtQkFBTyxDQUFDLGtHQUE0Qjs7QUFFN0Qsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCOztBQUVBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQSxHQUFHOzs7QUFHSDtBQUNBLDRCQUE0Qjs7QUFFNUI7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxpQkFBaUIsWUFBWTtBQUM3QjtBQUNBOztBQUVBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQSxpQkFBaUIsWUFBWTtBQUM3Qjs7QUFFQSxtQkFBbUIsWUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7OztBQUdMLGtFQUFrRTs7QUFFbEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLG9FQUFvRTs7QUFFcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0dBQW9HO0FBQ3hIO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0pBQWtKOztBQUVsSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQscUVBQXFFOztBQUVyRTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVCw4SEFBOEg7O0FBRTlIO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDs7QUFFdkQ7QUFDQTtBQUNBLGlEQUFpRDs7QUFFakQsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWCx1RkFBdUY7O0FBRXZGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFOztBQUVYLHNIQUFzSDs7QUFFdEg7O0FBRUE7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEMsbUVBQW1FOztBQUVuRSwwREFBMEQ7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9sb3V2YWluLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCJAYW50di91dGlsXCIpO1xuXG52YXIgX2FkamFjZW50TWF0cml4ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9hZGphY2VudC1tYXRyaXhcIikpO1xuXG52YXIgX3ZlY3RvciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbHMvdmVjdG9yXCIpKTtcblxudmFyIF9ub2RlUHJvcGVydGllcyA9IHJlcXVpcmUoXCIuL3V0aWxzL25vZGUtcHJvcGVydGllc1wiKTtcblxudmFyIF9kYXRhUHJlcHJvY2Vzc2luZyA9IHJlcXVpcmUoXCIuL3V0aWxzL2RhdGEtcHJlcHJvY2Vzc2luZ1wiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGdldE1vZHVsYXJpdHkgPSBmdW5jdGlvbiBnZXRNb2R1bGFyaXR5KG5vZGVzLCBhZGpNYXRyaXgsIGtzLCBtKSB7XG4gIHZhciBsZW5ndGggPSBhZGpNYXRyaXgubGVuZ3RoO1xuICB2YXIgcGFyYW0gPSAyICogbTtcbiAgdmFyIG1vZHVsYXJpdHkgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2x1c3RlcmkgPSBub2Rlc1tpXS5jbHVzdGVySWQ7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgY2x1c3RlcmogPSBub2Rlc1tqXS5jbHVzdGVySWQ7XG4gICAgICBpZiAoY2x1c3RlcmkgIT09IGNsdXN0ZXJqKSBjb250aW51ZTtcbiAgICAgIHZhciBlbnRyeSA9IGFkak1hdHJpeFtpXVtqXSB8fCAwO1xuICAgICAgdmFyIGtpID0ga3NbaV0gfHwgMDtcbiAgICAgIHZhciBraiA9IGtzW2pdIHx8IDA7XG4gICAgICBtb2R1bGFyaXR5ICs9IGVudHJ5IC0ga2kgKiBraiAvIHBhcmFtO1xuICAgIH1cbiAgfVxuXG4gIG1vZHVsYXJpdHkgKj0gMSAvIHBhcmFtO1xuICByZXR1cm4gbW9kdWxhcml0eTtcbn07IC8vIOaooeWdl+aDr+aAp+W6pu+8jOihoemHj+WxnuaAp+ebuOS8vOW6plxuXG5cbnZhciBnZXRJbmVydGlhbE1vZHVsYXJpdHkgPSBmdW5jdGlvbiBnZXRJbmVydGlhbE1vZHVsYXJpdHkobm9kZXMsIGFsbFByb3BlcnRpZXNXZWlnaHQpIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aDtcbiAgdmFyIHRvdGFsUHJvcGVydGllcyA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoW10pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB0b3RhbFByb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYWRkKG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSkpO1xuICB9IC8vIOWdh+WAvOWQkemHj1xuXG5cbiAgdmFyIGF2Z1Byb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYXZnKGxlbmd0aCk7XG4gIGF2Z1Byb3BlcnRpZXMubm9ybWFsaXplKCk7IC8vIOiKgueCuembhuWQiOeahOaWueW3rjog6IqC54K5duS4juWdh+WAvOWQkemHj+eahOW5s+aWueasp+W8j+i3neemu+S5i+WSjFxuXG4gIHZhciB2YXJpYW5jZSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgdmFyIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UoYXZnUHJvcGVydGllcyk7XG4gICAgdmFyaWFuY2UgKz0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2U7XG4gIH0gLy8g5Lu75oSP5Lik54K56Ze055qE5qyn5byP5bmz5pa56Led56a7XG5cblxuICB2YXIgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvID0gW107XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mby5wdXNoKFtdKTtcbiAgfSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddID0gMDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXSA9IDA7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcGVydGllc2ogPSBuZXcgX3ZlY3Rvci5kZWZhdWx0KGFsbFByb3BlcnRpZXNXZWlnaHRbal0pO1xuICAgICAgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UocHJvcGVydGllc2opO1xuICAgICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddICs9IHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXTtcbiAgICB9XG4gIH0gLy8g6K6h566X5qih5Z2X5oOv5oCn5bqmXG5cblxuICB2YXIgaW5lcnRpYWxNb2R1bGFyaXR5ID0gMDtcbiAgdmFyIHBhcmFtID0gMiAqIGxlbmd0aCAqIHZhcmlhbmNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2x1c3RlcmkgPSBub2Rlc1tpXS5jbHVzdGVySWQ7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgY2x1c3RlcmogPSBub2Rlc1tqXS5jbHVzdGVySWQ7XG4gICAgICBpZiAoaSA9PT0gaiB8fCBjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGluZXJ0aWFsID0gbm9kZXNbaV0uY2x1c3RlckluZXJ0aWFsICogbm9kZXNbal0uY2x1c3RlckluZXJ0aWFsIC8gTWF0aC5wb3cocGFyYW0sIDIpIC0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdIC8gcGFyYW07XG4gICAgICBpbmVydGlhbE1vZHVsYXJpdHkgKz0gaW5lcnRpYWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE51bWJlcihpbmVydGlhbE1vZHVsYXJpdHkudG9GaXhlZCg0KSk7XG59O1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgbG91dmFpbiDnrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIHRocmVzaG9sZCDlt67lgLzpmIjlgLxcbiAqIEBwYXJhbSBpbmVydGlhbE1vZHVsYXJpdHkg5piv5ZCm5L2/55So5oOv5oCn5qih5Z2X5bqm77yI5Y2z6IqC54K55bGe5oCn55u45Ly85oCn77yJXG4gKi9cblxuXG52YXIgbG91dmFpbiA9IGZ1bmN0aW9uIGxvdXZhaW4oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQsIGluZXJ0aWFsTW9kdWxhcml0eSwgaW5lcnRpYWxXZWlnaHQpIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHdlaWdodFByb3BlcnR5TmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgd2VpZ2h0UHJvcGVydHlOYW1lID0gJ3dlaWdodCc7XG4gIH1cblxuICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICB0aHJlc2hvbGQgPSAwLjAwMDE7XG4gIH1cblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5ID09PSB2b2lkIDApIHtcbiAgICBpbmVydGlhbE1vZHVsYXJpdHkgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpbmVydGlhbFdlaWdodCA9PT0gdm9pZCAwKSB7XG4gICAgaW5lcnRpYWxXZWlnaHQgPSAxO1xuICB9IC8vIHRoZSBvcmlnaW4gZGF0YVxuXG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIGFsbFByb3BlcnRpZXNXZWlnaHQgPSBbXTtcblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5KSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaW5kZXgpIHtcbiAgICAgIG5vZGUucHJvcGVydGllcyA9IG5vZGUucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIG5vZGUub3JpZ2luSW5kZXggPSBpbmRleDtcbiAgICB9KTtcbiAgICB2YXIgbm9kZVR5cGVJbmZvXzEgPSBbXTtcblxuICAgIGlmIChub2Rlcy5ldmVyeShmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaGFzT3duUHJvcGVydHkoJ25vZGVUeXBlJyk7XG4gICAgfSkpIHtcbiAgICAgIG5vZGVUeXBlSW5mb18xID0gQXJyYXkuZnJvbShuZXcgU2V0KG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZTtcbiAgICAgIH0pKSk7XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIG5vZGUucHJvcGVydGllcy5ub2RlVHlwZSA9IG5vZGVUeXBlSW5mb18xLmZpbmRJbmRleChmdW5jdGlvbiAobm9kZVR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZVR5cGUgPT09IG5vZGUubm9kZVR5cGU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSAvLyDmiYDmnInoioLngrnlsZ7mgKfpm4blkIhcblxuXG4gICAgdmFyIHByb3BlcnRpZXMgPSAoMCwgX25vZGVQcm9wZXJ0aWVzLmdldEFsbFByb3BlcnRpZXMpKG5vZGVzKTsgLy8g5omA5pyJ6IqC54K55bGe5oCnb25lLWhvdOeJueW+geWQkemHj+mbhuWQiFxuXG4gICAgYWxsUHJvcGVydGllc1dlaWdodCA9ICgwLCBfZGF0YVByZXByb2Nlc3Npbmcub25lSG90KShwcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHZhciB1bmlxdWVJZCA9IDE7XG4gIHZhciBjbHVzdGVycyA9IHt9O1xuICB2YXIgbm9kZU1hcCA9IHt9OyAvLyBpbml0IHRoZSBjbHVzdGVycyBhbmQgbm9kZU1hcFxuXG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICB2YXIgY2lkID0gU3RyaW5nKHVuaXF1ZUlkKyspO1xuICAgIG5vZGUuY2x1c3RlcklkID0gY2lkO1xuICAgIGNsdXN0ZXJzW2NpZF0gPSB7XG4gICAgICBpZDogY2lkLFxuICAgICAgbm9kZXM6IFtub2RlXVxuICAgIH07XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgIG5vZGU6IG5vZGUsXG4gICAgICBpZHg6IGlcbiAgICB9O1xuICB9KTsgLy8gdGhlIGFkamFjZW50IG1hdHJpeCBvZiBjYWxOb2RlcyBpbnNpZGUgY2x1c3RlcnNcblxuICB2YXIgYWRqTWF0cml4ID0gKDAsIF9hZGphY2VudE1hdHJpeC5kZWZhdWx0KShncmFwaERhdGEsIGRpcmVjdGVkKTsgLy8gdGhlIHN1bSBvZiBlYWNoIHJvdyBpbiBhZGphY2VudCBtYXRyaXhcblxuICB2YXIga3MgPSBbXTtcbiAgLyoqXG4gICAqIG5laWdoYm9yIG5vZGVzIChpZCBmb3Iga2V5IGFuZCB3ZWlnaHQgZm9yIHZhbHVlKSBmb3IgZWFjaCBub2RlXG4gICAqIG5laWdoYm9ycyA9IHtcbiAgICogIGlkKG5vZGVfaWQpOiB7IGlkKG5laWdoYm9yXzFfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgaWQobmVpZ2hib3JfMl9pZCk6IHdlaWdodCh3ZWlnaHQgb2YgdGhlIGVkZ2UpLCAuLi4gfSxcbiAgICogIC4uLlxuICAgKiB9XG4gICAqL1xuXG4gIHZhciBuZWlnaGJvcnMgPSB7fTsgLy8gdGhlIHN1bSBvZiB0aGUgd2VpZ2h0cyBvZiBhbGwgZWRnZXMgaW4gdGhlIGdyYXBoXG5cbiAgdmFyIG0gPSAwO1xuICBhZGpNYXRyaXguZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIGsgPSAwO1xuICAgIHZhciBpaWQgPSBub2Rlc1tpXS5pZDtcbiAgICBuZWlnaGJvcnNbaWlkXSA9IHt9O1xuICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSwgaikge1xuICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuICAgICAgayArPSBlbnRyeTtcbiAgICAgIHZhciBqaWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIG5laWdoYm9yc1tpaWRdW2ppZF0gPSBlbnRyeTtcbiAgICAgIG0gKz0gZW50cnk7XG4gICAgfSk7XG4gICAga3MucHVzaChrKTtcbiAgfSk7XG4gIG0gLz0gMjtcbiAgdmFyIHRvdGFsTW9kdWxhcml0eSA9IEluZmluaXR5O1xuICB2YXIgcHJldmlvdXNNb2R1bGFyaXR5ID0gSW5maW5pdHk7XG4gIHZhciBpdGVyID0gMDtcbiAgdmFyIGZpbmFsTm9kZXMgPSBbXTtcbiAgdmFyIGZpbmFsQ2x1c3RlcnMgPSB7fTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChpbmVydGlhbE1vZHVsYXJpdHkgJiYgbm9kZXMuZXZlcnkoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmhhc093blByb3BlcnR5KCdwcm9wZXJ0aWVzJyk7XG4gICAgfSkpIHtcbiAgICAgIHRvdGFsTW9kdWxhcml0eSA9IGdldE1vZHVsYXJpdHkobm9kZXMsIGFkak1hdHJpeCwga3MsIG0pICsgZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KG5vZGVzLCBhbGxQcm9wZXJ0aWVzV2VpZ2h0KSAqIGluZXJ0aWFsV2VpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0b3RhbE1vZHVsYXJpdHkgPSBnZXRNb2R1bGFyaXR5KG5vZGVzLCBhZGpNYXRyaXgsIGtzLCBtKTtcbiAgICB9IC8vIOesrOS4gOasoei/reS7o3ByZXZpb3VzTW9kdWxhcml0eeebtOaOpei1i+WAvFxuXG5cbiAgICBpZiAoaXRlciA9PT0gMCkge1xuICAgICAgcHJldmlvdXNNb2R1bGFyaXR5ID0gdG90YWxNb2R1bGFyaXR5O1xuICAgICAgZmluYWxOb2RlcyA9IG5vZGVzO1xuICAgICAgZmluYWxDbHVzdGVycyA9IGNsdXN0ZXJzO1xuICAgIH1cblxuICAgIHZhciBpbmNyZWFzZVdpdGhpblRocmVzaG9sZCA9IHRvdGFsTW9kdWxhcml0eSA+IDAgJiYgdG90YWxNb2R1bGFyaXR5ID4gcHJldmlvdXNNb2R1bGFyaXR5ICYmIHRvdGFsTW9kdWxhcml0eSAtIHByZXZpb3VzTW9kdWxhcml0eSA8IHRocmVzaG9sZDsgLy8g5oC75qih5Z2X5bqm5aKe5Yqg5omN5pu05paw5pyA5LyY6KejXG5cbiAgICBpZiAodG90YWxNb2R1bGFyaXR5ID4gcHJldmlvdXNNb2R1bGFyaXR5KSB7XG4gICAgICBmaW5hbE5vZGVzID0gbm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICBjbHVzdGVySWQ6IG5vZGUuY2x1c3RlcklkXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGZpbmFsQ2x1c3RlcnMgPSAoMCwgX3V0aWwuY2xvbmUpKGNsdXN0ZXJzKTtcbiAgICAgIHByZXZpb3VzTW9kdWxhcml0eSA9IHRvdGFsTW9kdWxhcml0eTtcbiAgICB9IC8vIHdoZXRoZXIgdG8gdGVybWluYXRlIHRoZSBpdGVyYXRpb25zXG5cblxuICAgIGlmIChpbmNyZWFzZVdpdGhpblRocmVzaG9sZCB8fCBpdGVyID4gMTAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICA7XG4gICAgaXRlcisrOyAvLyBwcmUgY29tcHV0ZSBzb21lIHZhbHVlcyBmb3IgY3VycmVudCBjbHVzdGVyc1xuXG4gICAgT2JqZWN0LmtleXMoY2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgICAgLy8gc3VtIG9mIHdlaWdodHMgb2YgZWRnZXMgdG8gbm9kZXMgaW4gY2x1c3RlclxuICAgICAgdmFyIHN1bVRvdCA9IDA7XG4gICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgICAgICB2YXIgdGFyZ2V0Q2x1c3RlcklkID0gbm9kZU1hcFt0YXJnZXRdLm5vZGUuY2x1c3RlcklkO1xuXG4gICAgICAgIGlmIChzb3VyY2VDbHVzdGVySWQgPT09IGNsdXN0ZXJJZCAmJiB0YXJnZXRDbHVzdGVySWQgIT09IGNsdXN0ZXJJZCB8fCB0YXJnZXRDbHVzdGVySWQgPT09IGNsdXN0ZXJJZCAmJiBzb3VyY2VDbHVzdGVySWQgIT09IGNsdXN0ZXJJZCkge1xuICAgICAgICAgIHN1bVRvdCA9IHN1bVRvdCArIChlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY2x1c3RlcnNbY2x1c3RlcklkXS5zdW1Ub3QgPSBzdW1Ub3Q7XG4gICAgfSk7IC8vIG1vdmUgdGhlIG5vZGVzIHRvIGluY3JlYXNlIHRoZSBkZWx0YSBtb2R1bGFyaXR5XG5cbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgICB2YXIgc2VsZkNsdXN0ZXIgPSBjbHVzdGVyc1tub2RlLmNsdXN0ZXJJZF07XG4gICAgICB2YXIgYmVzdEluY3JlYXNlID0gMDtcbiAgICAgIHZhciBiZXN0Q2x1c3RlcjtcbiAgICAgIHZhciBjb21tb25QYXJhbSA9IGtzW2ldIC8gKDIgKiBtKTsgLy8gc3VtIG9mIHdlaWdodHMgb2YgZWRnZXMgZnJvbSBub2RlIHRvIG5vZGVzIGluIGNsdXN0ZXJcblxuICAgICAgdmFyIGtpaW4gPSAwO1xuICAgICAgdmFyIHNlbGZDbHVzdGVyTm9kZXMgPSBzZWxmQ2x1c3Rlci5ub2RlcztcbiAgICAgIHNlbGZDbHVzdGVyTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoc2NOb2RlKSB7XG4gICAgICAgIHZhciBzY05vZGVJZHggPSBub2RlTWFwW3NjTm9kZS5pZF0uaWR4O1xuICAgICAgICBraWluICs9IGFkak1hdHJpeFtpXVtzY05vZGVJZHhdIHx8IDA7XG4gICAgICB9KTsgLy8gdGhlIG1vZHVyYXJpdHkgZm9yICoqcmVtb3ZpbmcqKiB0aGUgbm9kZSBpIGZyb20gdGhlIG9yaWdpbiBjbHVzdGVyIG9mIG5vZGUgaVxuXG4gICAgICB2YXIgcmVtb3ZlTW9kdXJhcml0eSA9IGtpaW4gLSBzZWxmQ2x1c3Rlci5zdW1Ub3QgKiBjb21tb25QYXJhbTsgLy8gbm9kZXMgZm9yICoqcmVtb3ZpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgdmFyIHNlbGZDbHVzdGVyTm9kZXNBZnRlclJlbW92ZSA9IHNlbGZDbHVzdGVyTm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChzY05vZGUpIHtcbiAgICAgICAgcmV0dXJuIHNjTm9kZS5pZCAhPT0gbm9kZS5pZDtcbiAgICAgIH0pO1xuICAgICAgdmFyIHByb3BlcnRpZXNXZWlnaHRSZW1vdmUgPSBbXTtcbiAgICAgIHNlbGZDbHVzdGVyTm9kZXNBZnRlclJlbW92ZS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlUmVtb3ZlLCBpbmRleCkge1xuICAgICAgICBwcm9wZXJ0aWVzV2VpZ2h0UmVtb3ZlW2luZGV4XSA9IGFsbFByb3BlcnRpZXNXZWlnaHRbbm9kZVJlbW92ZS5vcmlnaW5JbmRleF07XG4gICAgICB9KTsgLy8gdGhlIGluZXJ0aWFsTW9kdWxhcml0eSBmb3IgKipyZW1vdmluZyoqIHRoZSBub2RlIGkgZnJvbSB0aGUgb3JpZ2luIGNsdXN0ZXIgb2Ygbm9kZSBpXG5cbiAgICAgIHZhciByZW1vdmVJbmVydGlhbE1vZHVsYXJpdHkgPSBnZXRJbmVydGlhbE1vZHVsYXJpdHkoc2VsZkNsdXN0ZXJOb2Rlc0FmdGVyUmVtb3ZlLCBhbGxQcm9wZXJ0aWVzV2VpZ2h0KSAqIGluZXJ0aWFsV2VpZ2h0OyAvLyB0aGUgbmVpZ2h0Ym9ycyBvZiB0aGUgbm9kZVxuXG4gICAgICB2YXIgbm9kZU5laWdoYm9ySWRzID0gbmVpZ2hib3JzW25vZGUuaWRdO1xuICAgICAgT2JqZWN0LmtleXMobm9kZU5laWdoYm9ySWRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuZWlnaGJvck5vZGVJZCkge1xuICAgICAgICB2YXIgbmVpZ2hib3JOb2RlID0gbm9kZU1hcFtuZWlnaGJvck5vZGVJZF0ubm9kZTtcbiAgICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlcklkID0gbmVpZ2hib3JOb2RlLmNsdXN0ZXJJZDsgLy8gaWYgdGhlIG5vZGUgYW5kIHRoZSBuZWlnaGJvciBvZiBub2RlIGFyZSBpbiB0aGUgc2FtZSBjbHVzdGVyLCByZXV0cm5cblxuICAgICAgICBpZiAobmVpZ2hib3JDbHVzdGVySWQgPT09IG5vZGUuY2x1c3RlcklkKSByZXR1cm47XG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXIgPSBjbHVzdGVyc1tuZWlnaGJvckNsdXN0ZXJJZF07XG4gICAgICAgIHZhciBjbHVzdGVyTm9kZXMgPSBuZWlnaGJvckNsdXN0ZXIubm9kZXM7IC8vIGlmIHRoZSBjbHVzdGVyIGlzIGVtcHR5LCByZW1vdmUgdGhlIGNsdXN0ZXIgYW5kIHJldHVyblxuXG4gICAgICAgIGlmICghY2x1c3Rlck5vZGVzIHx8ICFjbHVzdGVyTm9kZXMubGVuZ3RoKSByZXR1cm47IC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIGZyb20gbm9kZSB0byBub2RlcyBpbiBjbHVzdGVyXG5cbiAgICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlcktpaW4gPSAwO1xuICAgICAgICBjbHVzdGVyTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoY05vZGUpIHtcbiAgICAgICAgICB2YXIgY05vZGVJZHggPSBub2RlTWFwW2NOb2RlLmlkXS5pZHg7XG4gICAgICAgICAgbmVpZ2hib3JDbHVzdGVyS2lpbiArPSBhZGpNYXRyaXhbaV1bY05vZGVJZHhdIHx8IDA7XG4gICAgICAgIH0pOyAvLyB0aGUgbW9kdXJhcml0eSBmb3IgKiphZGRpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgICB2YXIgYWRkTW9kdXJhcml0eSA9IG5laWdoYm9yQ2x1c3RlcktpaW4gLSBuZWlnaGJvckNsdXN0ZXIuc3VtVG90ICogY29tbW9uUGFyYW07IC8vIG5vZGVzIGZvciAqKmFkZGluZyoqIG5vZGUgaSBpbnRvIHRoaXMgbmVpZ2hib3IgY2x1c3RlclxuXG4gICAgICAgIHZhciBjbHVzdGVyTm9kZXNBZnRlckFkZCA9IGNsdXN0ZXJOb2Rlcy5jb25jYXQoW25vZGVdKTtcbiAgICAgICAgdmFyIHByb3BlcnRpZXNXZWlnaHRBZGQgPSBbXTtcbiAgICAgICAgY2x1c3Rlck5vZGVzQWZ0ZXJBZGQuZm9yRWFjaChmdW5jdGlvbiAobm9kZUFkZCwgaW5kZXgpIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzV2VpZ2h0QWRkW2luZGV4XSA9IGFsbFByb3BlcnRpZXNXZWlnaHRbbm9kZUFkZC5vcmlnaW5JbmRleF07XG4gICAgICAgIH0pOyAvLyB0aGUgaW5lcnRpYWxNb2R1bGFyaXR5IGZvciAqKmFkZGluZyoqIG5vZGUgaSBpbnRvIHRoaXMgbmVpZ2hib3IgY2x1c3RlclxuXG4gICAgICAgIHZhciBhZGRJbmVydGlhbE1vZHVsYXJpdHkgPSBnZXRJbmVydGlhbE1vZHVsYXJpdHkoY2x1c3Rlck5vZGVzQWZ0ZXJBZGQsIGFsbFByb3BlcnRpZXNXZWlnaHQpICogaW5lcnRpYWxXZWlnaHQ7IC8vIHRoZSBpbmNyZWFzZSBtb2R1cmFyaXR5IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYWRkTW9kdXJhcml0eSBhbmQgcmVtb3ZlTW9kdXJhcml0eVxuXG4gICAgICAgIHZhciBpbmNyZWFzZSA9IGFkZE1vZHVyYXJpdHkgLSByZW1vdmVNb2R1cmFyaXR5O1xuXG4gICAgICAgIGlmIChpbmVydGlhbE1vZHVsYXJpdHkpIHtcbiAgICAgICAgICBpbmNyZWFzZSA9IGFkZE1vZHVyYXJpdHkgKyBhZGRJbmVydGlhbE1vZHVsYXJpdHkgLSAocmVtb3ZlTW9kdXJhcml0eSArIHJlbW92ZUluZXJ0aWFsTW9kdWxhcml0eSk7XG4gICAgICAgIH0gLy8gZmluZCB0aGUgYmVzdCBjbHVzdGVyIHRvIG1vdmUgbm9kZSBpIGludG9cblxuXG4gICAgICAgIGlmIChpbmNyZWFzZSA+IGJlc3RJbmNyZWFzZSkge1xuICAgICAgICAgIGJlc3RJbmNyZWFzZSA9IGluY3JlYXNlO1xuICAgICAgICAgIGJlc3RDbHVzdGVyID0gbmVpZ2hib3JDbHVzdGVyO1xuICAgICAgICB9XG4gICAgICB9KTsgLy8gaWYgZm91bmQgYSBiZXN0IGNsdXN0ZXIgdG8gbW92ZSBpbnRvXG5cbiAgICAgIGlmIChiZXN0SW5jcmVhc2UgPiAwKSB7XG4gICAgICAgIGJlc3RDbHVzdGVyLm5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgIHZhciBwcmV2aW91c0NsdXN0ZXJJZF8xID0gbm9kZS5jbHVzdGVySWQ7XG4gICAgICAgIG5vZGUuY2x1c3RlcklkID0gYmVzdENsdXN0ZXIuaWQ7IC8vIG1vdmUgdGhlIG5vZGUgdG8gdGhlIGJlc3QgY2x1c3RlclxuXG4gICAgICAgIHZhciBub2RlSW5TZWxmQ2x1c3RlcklkeCA9IHNlbGZDbHVzdGVyLm5vZGVzLmluZGV4T2Yobm9kZSk7IC8vIHJlbW92ZSBmcm9tIG9yaWdpbiBjbHVzdGVyXG5cbiAgICAgICAgc2VsZkNsdXN0ZXIubm9kZXMuc3BsaWNlKG5vZGVJblNlbGZDbHVzdGVySWR4LCAxKTsgLy8gdXBkYXRlIHN1bVRvdCBmb3IgY2x1c3RlcnNcbiAgICAgICAgLy8gc3VtIG9mIHdlaWdodHMgb2YgZWRnZXMgdG8gbm9kZXMgaW4gY2x1c3RlclxuXG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJTdW1Ub3RfMSA9IDA7XG4gICAgICAgIHZhciBzZWxmQ2x1c3RlclN1bVRvdF8xID0gMDtcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgICAgICAgdmFyIHNvdXJjZUNsdXN0ZXJJZCA9IG5vZGVNYXBbc291cmNlXS5ub2RlLmNsdXN0ZXJJZDtcbiAgICAgICAgICB2YXIgdGFyZ2V0Q2x1c3RlcklkID0gbm9kZU1hcFt0YXJnZXRdLm5vZGUuY2x1c3RlcklkO1xuXG4gICAgICAgICAgaWYgKHNvdXJjZUNsdXN0ZXJJZCA9PT0gYmVzdENsdXN0ZXIuaWQgJiYgdGFyZ2V0Q2x1c3RlcklkICE9PSBiZXN0Q2x1c3Rlci5pZCB8fCB0YXJnZXRDbHVzdGVySWQgPT09IGJlc3RDbHVzdGVyLmlkICYmIHNvdXJjZUNsdXN0ZXJJZCAhPT0gYmVzdENsdXN0ZXIuaWQpIHtcbiAgICAgICAgICAgIG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xID0gbmVpZ2hib3JDbHVzdGVyU3VtVG90XzEgKyAoZWRnZVt3ZWlnaHRQcm9wZXJ0eU5hbWVdIHx8IDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzb3VyY2VDbHVzdGVySWQgPT09IHByZXZpb3VzQ2x1c3RlcklkXzEgJiYgdGFyZ2V0Q2x1c3RlcklkICE9PSBwcmV2aW91c0NsdXN0ZXJJZF8xIHx8IHRhcmdldENsdXN0ZXJJZCA9PT0gcHJldmlvdXNDbHVzdGVySWRfMSAmJiBzb3VyY2VDbHVzdGVySWQgIT09IHByZXZpb3VzQ2x1c3RlcklkXzEpIHtcbiAgICAgICAgICAgIHNlbGZDbHVzdGVyU3VtVG90XzEgPSBzZWxmQ2x1c3RlclN1bVRvdF8xICsgKGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pOyAvLyB0aGUgbm9kZXMgb2YgdGhlIGNsdXN0ZXJzIHRvIG1vdmUgaW50byBhbmQgcmVtb3ZlIGFyZSBjaGFuZ2VkLCB1cGRhdGUgdGhlaXIgc3VtVG90XG5cbiAgICAgICAgYmVzdENsdXN0ZXIuc3VtVG90ID0gbmVpZ2hib3JDbHVzdGVyU3VtVG90XzE7XG4gICAgICAgIHNlbGZDbHVzdGVyLnN1bVRvdCA9IHNlbGZDbHVzdGVyU3VtVG90XzE7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gLy8gZGVsZXRlIHRoZSBlbXB0eSBjbHVzdGVycywgYXNzaWduIGluY3JlYXNpbmcgY2x1c3RlcklkXG5cblxuICB2YXIgbmV3Q2x1c3RlcklkTWFwID0ge307XG4gIHZhciBjbHVzdGVySWR4ID0gMDtcbiAgT2JqZWN0LmtleXMoZmluYWxDbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgdmFyIGNsdXN0ZXIgPSBmaW5hbENsdXN0ZXJzW2NsdXN0ZXJJZF07XG5cbiAgICBpZiAoIWNsdXN0ZXIubm9kZXMgfHwgIWNsdXN0ZXIubm9kZXMubGVuZ3RoKSB7XG4gICAgICBkZWxldGUgZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBuZXdJZCA9IFN0cmluZyhjbHVzdGVySWR4ICsgMSk7XG5cbiAgICBpZiAobmV3SWQgPT09IGNsdXN0ZXJJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNsdXN0ZXIuaWQgPSBuZXdJZDtcbiAgICBjbHVzdGVyLm5vZGVzID0gY2x1c3Rlci5ub2Rlcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICBjbHVzdGVySWQ6IG5ld0lkXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGZpbmFsQ2x1c3RlcnNbbmV3SWRdID0gY2x1c3RlcjtcbiAgICBuZXdDbHVzdGVySWRNYXBbY2x1c3RlcklkXSA9IG5ld0lkO1xuICAgIGRlbGV0ZSBmaW5hbENsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgY2x1c3RlcklkeCsrO1xuICB9KTsgLy8gcmVzdG9yZSBub2RlIGNsdXN0ZXJJZFxuXG4gIGZpbmFsTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZUluZm8pIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVJbmZvLm5vZGUsXG4gICAgICAgIGNsdXN0ZXJJZCA9IG5vZGVJbmZvLmNsdXN0ZXJJZDtcbiAgICBub2RlLmNsdXN0ZXJJZCA9IGNsdXN0ZXJJZDtcbiAgICBpZiAobm9kZS5jbHVzdGVySWQgJiYgbmV3Q2x1c3RlcklkTWFwW25vZGUuY2x1c3RlcklkXSkgbm9kZS5jbHVzdGVySWQgPSBuZXdDbHVzdGVySWRNYXBbbm9kZS5jbHVzdGVySWRdO1xuICB9KTsgLy8gZ2V0IHRoZSBjbHVzdGVyIGVkZ2VzXG5cbiAgdmFyIGNsdXN0ZXJFZGdlcyA9IFtdO1xuICB2YXIgY2x1c3RlckVkZ2VNYXAgPSB7fTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHdlaWdodCA9IGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxO1xuICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcbiAgICB2YXIgbmV3RWRnZUlkID0gXCJcIi5jb25jYXQoc291cmNlQ2x1c3RlcklkLCBcIi0tLVwiKS5jb25jYXQodGFyZ2V0Q2x1c3RlcklkKTtcblxuICAgIGlmIChjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdKSB7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLndlaWdodCArPSB3ZWlnaHQ7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLmNvdW50Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBuZXdFZGdlID0ge1xuICAgICAgICBzb3VyY2U6IHNvdXJjZUNsdXN0ZXJJZCxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXRDbHVzdGVySWQsXG4gICAgICAgIHdlaWdodDogd2VpZ2h0LFxuICAgICAgICBjb3VudDogMVxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0gPSBuZXdFZGdlO1xuICAgICAgY2x1c3RlckVkZ2VzLnB1c2gobmV3RWRnZSk7XG4gICAgfVxuICB9KTtcbiAgdmFyIGNsdXN0ZXJzQXJyYXkgPSBbXTtcbiAgT2JqZWN0LmtleXMoZmluYWxDbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgY2x1c3RlcnNBcnJheS5wdXNoKGZpbmFsQ2x1c3RlcnNbY2x1c3RlcklkXSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGNsdXN0ZXJzOiBjbHVzdGVyc0FycmF5LFxuICAgIGNsdXN0ZXJFZGdlczogY2x1c3RlckVkZ2VzXG4gIH07XG59O1xuXG52YXIgX2RlZmF1bHQgPSBsb3V2YWluO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/louvain.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/mts.js": /*!*************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/mts.js ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _unionFind = _interopRequireDefault(__webpack_require__(/*! ./structs/union-find */ \"./node_modules/@antv/algorithm/lib/structs/union-find.js\"));\n\nvar _binaryHeap = _interopRequireDefault(__webpack_require__(/*! ./structs/binary-heap */ \"./node_modules/@antv/algorithm/lib/structs/binary-heap.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Prim algorithm,use priority queue,复杂度 O(E+V*logV), V: 节点数量,E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Prim%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n */\nvar primMST = function primMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 从nodes[0]开始\n\n\n var currNode = nodes[0];\n var visited = new Set();\n visited.add(currNode); // 用二叉堆维护距已加入节点的其他节点的边的权值\n\n var compareWeight = function compareWeight(a, b) {\n if (weight) {\n return a.weight - b.weight;\n }\n\n return 0;\n };\n\n var edgeQueue = new _binaryHeap.default(compareWeight);\n (0, _util.getEdgesByNodeId)(currNode.id, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n\n while (!edgeQueue.isEmpty()) {\n // 选取与已加入的结点之间边权最小的结点\n var currEdge = edgeQueue.delMin();\n var source = currEdge.source;\n var target = currEdge.target;\n if (visited.has(source) && visited.has(target)) continue;\n selectedEdges.push(currEdge);\n\n if (!visited.has(source)) {\n visited.add(source);\n (0, _util.getEdgesByNodeId)(source, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n\n if (!visited.has(target)) {\n visited.add(target);\n (0, _util.getEdgesByNodeId)(target, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n }\n\n return selectedEdges;\n};\n/**\n * Kruskal algorithm,复杂度 O(E*logE), E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @return IEdge[] 返回构成MST的边的数组\n */\n\n\nvar kruskalMST = function kruskalMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 若指定weight,则将所有的边按权值从小到大排序\n\n\n var weightEdges = edges.map(function (edge) {\n return edge;\n });\n\n if (weight) {\n weightEdges.sort(function (a, b) {\n return a.weight - b.weight;\n });\n }\n\n var disjointSet = new _unionFind.default(nodes.map(function (n) {\n return n.id;\n })); // 从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边\n // 直到遍历完所有点或边\n\n while (weightEdges.length > 0) {\n var curEdge = weightEdges.shift();\n var source = curEdge.source;\n var target = curEdge.target;\n\n if (!disjointSet.connected(source, target)) {\n selectedEdges.push(curEdge);\n disjointSet.union(source, target);\n }\n }\n\n return selectedEdges;\n};\n/**\n * 最小生成树\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nvar minimumSpanningTree = function minimumSpanningTree(graphData, weight, algo) {\n var algos = {\n prim: primMST,\n kruskal: kruskalMST\n };\n if (!algo) return kruskalMST(graphData, weight);\n return algos[algo](graphData, weight);\n};\n\nvar _default = minimumSpanningTree;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9tdHMuanM/M2VmOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHdDQUF3QyxtQkFBTyxDQUFDLHNGQUFzQjs7QUFFdEUseUNBQXlDLG1CQUFPLENBQUMsd0ZBQXVCOztBQUV4RSxZQUFZLG1CQUFPLENBQUMsMERBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLEdBQUcsR0FBRztBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL210cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3VuaW9uRmluZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vc3RydWN0cy91bmlvbi1maW5kXCIpKTtcblxudmFyIF9iaW5hcnlIZWFwID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9zdHJ1Y3RzL2JpbmFyeS1oZWFwXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBQcmltIGFsZ29yaXRobe+8jHVzZSBwcmlvcml0eSBxdWV1Ze+8jOWkjeadguW6piBPKEUrVipsb2dWKSwgVjog6IqC54K55pWw6YeP77yMRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJpbSUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKi9cbnZhciBwcmltTVNUID0gZnVuY3Rpb24gcHJpbU1TVChncmFwaERhdGEsIHdlaWdodCkge1xuICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuXG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbiAgfSAvLyDku45ub2Rlc1swXeW8gOWni1xuXG5cbiAgdmFyIGN1cnJOb2RlID0gbm9kZXNbMF07XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2aXNpdGVkLmFkZChjdXJyTm9kZSk7IC8vIOeUqOS6jOWPieWghue7tOaKpOi3neW3suWKoOWFpeiKgueCueeahOWFtuS7luiKgueCueeahOi+ueeahOadg+WAvFxuXG4gIHZhciBjb21wYXJlV2VpZ2h0ID0gZnVuY3Rpb24gY29tcGFyZVdlaWdodChhLCBiKSB7XG4gICAgaWYgKHdlaWdodCkge1xuICAgICAgcmV0dXJuIGEud2VpZ2h0IC0gYi53ZWlnaHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH07XG5cbiAgdmFyIGVkZ2VRdWV1ZSA9IG5ldyBfYmluYXJ5SGVhcC5kZWZhdWx0KGNvbXBhcmVXZWlnaHQpO1xuICAoMCwgX3V0aWwuZ2V0RWRnZXNCeU5vZGVJZCkoY3Vyck5vZGUuaWQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgfSk7XG5cbiAgd2hpbGUgKCFlZGdlUXVldWUuaXNFbXB0eSgpKSB7XG4gICAgLy8g6YCJ5Y+W5LiO5bey5Yqg5YWl55qE57uT54K55LmL6Ze06L655p2D5pyA5bCP55qE57uT54K5XG4gICAgdmFyIGN1cnJFZGdlID0gZWRnZVF1ZXVlLmRlbE1pbigpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJyRWRnZS5zb3VyY2U7XG4gICAgdmFyIHRhcmdldCA9IGN1cnJFZGdlLnRhcmdldDtcbiAgICBpZiAodmlzaXRlZC5oYXMoc291cmNlKSAmJiB2aXNpdGVkLmhhcyh0YXJnZXQpKSBjb250aW51ZTtcbiAgICBzZWxlY3RlZEVkZ2VzLnB1c2goY3VyckVkZ2UpO1xuXG4gICAgaWYgKCF2aXNpdGVkLmhhcyhzb3VyY2UpKSB7XG4gICAgICB2aXNpdGVkLmFkZChzb3VyY2UpO1xuICAgICAgKDAsIF91dGlsLmdldEVkZ2VzQnlOb2RlSWQpKHNvdXJjZSwgZWRnZXMpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdmlzaXRlZC5oYXModGFyZ2V0KSkge1xuICAgICAgdmlzaXRlZC5hZGQodGFyZ2V0KTtcbiAgICAgICgwLCBfdXRpbC5nZXRFZGdlc0J5Tm9kZUlkKSh0YXJnZXQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIGVkZ2VRdWV1ZS5pbnNlcnQoZWRnZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbn07XG4vKipcbiAqIEtydXNrYWwgYWxnb3JpdGht77yM5aSN5p2C5bqmIE8oRSpsb2dFKSwgRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS3J1c2thbCUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcmV0dXJuIElFZGdlW10g6L+U5Zue5p6E5oiQTVNU55qE6L6555qE5pWw57uEXG4gKi9cblxuXG52YXIga3J1c2thbE1TVCA9IGZ1bmN0aW9uIGtydXNrYWxNU1QoZ3JhcGhEYXRhLCB3ZWlnaHQpIHtcbiAgdmFyIHNlbGVjdGVkRWRnZXMgPSBbXTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcblxuICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHNlbGVjdGVkRWRnZXM7XG4gIH0gLy8g6Iul5oyH5a6ad2VpZ2h077yM5YiZ5bCG5omA5pyJ55qE6L655oyJ5p2D5YC85LuO5bCP5Yiw5aSn5o6S5bqPXG5cblxuICB2YXIgd2VpZ2h0RWRnZXMgPSBlZGdlcy5tYXAoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZTtcbiAgfSk7XG5cbiAgaWYgKHdlaWdodCkge1xuICAgIHdlaWdodEVkZ2VzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLndlaWdodCAtIGIud2VpZ2h0O1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGRpc2pvaW50U2V0ID0gbmV3IF91bmlvbkZpbmQuZGVmYXVsdChub2Rlcy5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICByZXR1cm4gbi5pZDtcbiAgfSkpOyAvLyDku47mnYPlgLzmnIDlsI/nmoTovrnlvIDlp4vvvIzlpoLmnpzov5nmnaHovrnov57mjqXnmoTkuKTkuKroioLngrnkuo7lm75H5Lit5LiN5Zyo5ZCM5LiA5Liq6L+e6YCa5YiG6YeP5Lit77yM5YiZ5re75Yqg6L+Z5p2h6L65XG4gIC8vIOebtOWIsOmBjeWOhuWujOaJgOacieeCueaIlui+uVxuXG4gIHdoaWxlICh3ZWlnaHRFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgdmFyIGN1ckVkZ2UgPSB3ZWlnaHRFZGdlcy5zaGlmdCgpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJFZGdlLnNvdXJjZTtcbiAgICB2YXIgdGFyZ2V0ID0gY3VyRWRnZS50YXJnZXQ7XG5cbiAgICBpZiAoIWRpc2pvaW50U2V0LmNvbm5lY3RlZChzb3VyY2UsIHRhcmdldCkpIHtcbiAgICAgIHNlbGVjdGVkRWRnZXMucHVzaChjdXJFZGdlKTtcbiAgICAgIGRpc2pvaW50U2V0LnVuaW9uKHNvdXJjZSwgdGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbn07XG4vKipcbiAqIOacgOWwj+eUn+aIkOagkVxuICogcmVmZXI6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tydXNrYWwlMjdzX2FsZ29yaXRobVxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gd2VpZ2h0IOaMh+WumueUqOS6juS9nOS4uui+ueadg+mHjeeahOWxnuaAp++8jOiLpeS4jeaMh+Wumu+8jOWImeiupOS4uuaJgOaciei+ueadg+mHjeS4gOiHtFxuICogQHBhcmFtIGFsZ28gJ3ByaW0nIHwgJ2tydXNrYWwnIOeul+azleexu+Wei1xuICogQHJldHVybiBFZGdlQ29uZmlnW10g6L+U5Zue5p6E5oiQTVNU55qE6L6555qE5pWw57uEXG4gKi9cblxuXG52YXIgbWluaW11bVNwYW5uaW5nVHJlZSA9IGZ1bmN0aW9uIG1pbmltdW1TcGFubmluZ1RyZWUoZ3JhcGhEYXRhLCB3ZWlnaHQsIGFsZ28pIHtcbiAgdmFyIGFsZ29zID0ge1xuICAgIHByaW06IHByaW1NU1QsXG4gICAga3J1c2thbDoga3J1c2thbE1TVFxuICB9O1xuICBpZiAoIWFsZ28pIHJldHVybiBrcnVza2FsTVNUKGdyYXBoRGF0YSwgd2VpZ2h0KTtcbiAgcmV0dXJuIGFsZ29zW2FsZ29dKGdyYXBoRGF0YSwgd2VpZ2h0KTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IG1pbmltdW1TcGFubmluZ1RyZWU7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/mts.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/pageRank.js": /*!******************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/pageRank.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _degree = _interopRequireDefault(__webpack_require__(/*! ./degree */ \"./node_modules/@antv/algorithm/lib/degree.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\nvar pageRank = function pageRank(graphData, epsilon, linkProb) {\n if (typeof epsilon !== 'number') epsilon = 0.000001;\n if (typeof linkProb !== 'number') linkProb = 0.85;\n var distance = 1;\n var leakedRank = 0;\n var maxIterations = 1000;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodesCount = nodes.length;\n var currentRank;\n var curRanks = {};\n var prevRanks = {}; // Initialize pageranks 初始化\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n curRanks[nodeId] = 1 / nodesCount;\n prevRanks[nodeId] = 1 / nodesCount;\n }\n\n var nodeDegree = (0, _degree.default)(graphData);\n\n while (maxIterations > 0 && distance > epsilon) {\n leakedRank = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = 0;\n\n if (nodeDegree[node.id].inDegree === 0) {\n curRanks[nodeId] = 0;\n } else {\n var neighbors = (0, _util.getNeighbors)(nodeId, edges, 'source');\n\n for (var i = 0; i < neighbors.length; ++i) {\n var neighbor = neighbors[i];\n var outDegree = nodeDegree[neighbor].outDegree;\n if (outDegree > 0) currentRank += prevRanks[neighbor] / outDegree;\n }\n\n curRanks[nodeId] = linkProb * currentRank;\n leakedRank += curRanks[nodeId];\n }\n }\n\n leakedRank = (1 - leakedRank) / nodesCount;\n distance = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = curRanks[nodeId] + leakedRank;\n distance += Math.abs(currentRank - prevRanks[nodeId]);\n prevRanks[nodeId] = currentRank;\n }\n\n maxIterations -= 1;\n }\n\n return prevRanks;\n};\n\nvar _default = pageRank;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9wYWdlUmFuay5qcz8wNzY1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEscUNBQXFDLG1CQUFPLENBQUMsOERBQVU7O0FBRXZELFlBQVksbUJBQU8sQ0FBQywwREFBUTs7QUFFNUIsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvcGFnZVJhbmsuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9kZWdyZWUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RlZ3JlZVwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogUGFnZVJhbmsgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFnZVJhbmtcbiAqIHJlZmVyOiBodHRwczovL2dpdGh1Yi5jb20vYW52YWthL25ncmFwaC5wYWdlcmFua1xuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gZXBzaWxvbiDliKTmlq3mmK/lkKbmlLbmlZvnmoTnsr7luqblgLzvvIzpu5jorqQgMC4wMDAwMDFcbiAqIEBwYXJhbSBsaW5rUHJvYiDpmLvlsLzns7vmlbDvvIhkdW1waW5nIGZhY3Rvcu+8ie+8jOaMh+S7u+aEj+aXtuWIu++8jOeUqOaIt+iuv+mXruWIsOafkOiKgueCueWQjue7p+e7reiuv+mXruivpeiKgueCuemTvuaOpeeahOS4i+S4gOS4quiKgueCueeahOamgueOh++8jOe7j+mqjOWAvCAwLjg1XG4gKi9cbnZhciBwYWdlUmFuayA9IGZ1bmN0aW9uIHBhZ2VSYW5rKGdyYXBoRGF0YSwgZXBzaWxvbiwgbGlua1Byb2IpIHtcbiAgaWYgKHR5cGVvZiBlcHNpbG9uICE9PSAnbnVtYmVyJykgZXBzaWxvbiA9IDAuMDAwMDAxO1xuICBpZiAodHlwZW9mIGxpbmtQcm9iICE9PSAnbnVtYmVyJykgbGlua1Byb2IgPSAwLjg1O1xuICB2YXIgZGlzdGFuY2UgPSAxO1xuICB2YXIgbGVha2VkUmFuayA9IDA7XG4gIHZhciBtYXhJdGVyYXRpb25zID0gMTAwMDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIG5vZGVzQ291bnQgPSBub2Rlcy5sZW5ndGg7XG4gIHZhciBjdXJyZW50UmFuaztcbiAgdmFyIGN1clJhbmtzID0ge307XG4gIHZhciBwcmV2UmFua3MgPSB7fTsgLy8gSW5pdGlhbGl6ZSBwYWdlcmFua3Mg5Yid5aeL5YyWXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIGN1clJhbmtzW25vZGVJZF0gPSAxIC8gbm9kZXNDb3VudDtcbiAgICBwcmV2UmFua3Nbbm9kZUlkXSA9IDEgLyBub2Rlc0NvdW50O1xuICB9XG5cbiAgdmFyIG5vZGVEZWdyZWUgPSAoMCwgX2RlZ3JlZS5kZWZhdWx0KShncmFwaERhdGEpO1xuXG4gIHdoaWxlIChtYXhJdGVyYXRpb25zID4gMCAmJiBkaXN0YW5jZSA+IGVwc2lsb24pIHtcbiAgICBsZWFrZWRSYW5rID0gMDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbm9kZXNDb3VudDsgKytqKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgICAgdmFyIG5vZGVJZCA9IG5vZGUuaWQ7XG4gICAgICBjdXJyZW50UmFuayA9IDA7XG5cbiAgICAgIGlmIChub2RlRGVncmVlW25vZGUuaWRdLmluRGVncmVlID09PSAwKSB7XG4gICAgICAgIGN1clJhbmtzW25vZGVJZF0gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5laWdoYm9ycyA9ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKG5vZGVJZCwgZWRnZXMsICdzb3VyY2UnKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIHZhciBuZWlnaGJvciA9IG5laWdoYm9yc1tpXTtcbiAgICAgICAgICB2YXIgb3V0RGVncmVlID0gbm9kZURlZ3JlZVtuZWlnaGJvcl0ub3V0RGVncmVlO1xuICAgICAgICAgIGlmIChvdXREZWdyZWUgPiAwKSBjdXJyZW50UmFuayArPSBwcmV2UmFua3NbbmVpZ2hib3JdIC8gb3V0RGVncmVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VyUmFua3Nbbm9kZUlkXSA9IGxpbmtQcm9iICogY3VycmVudFJhbms7XG4gICAgICAgIGxlYWtlZFJhbmsgKz0gY3VyUmFua3Nbbm9kZUlkXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZWFrZWRSYW5rID0gKDEgLSBsZWFrZWRSYW5rKSAvIG5vZGVzQ291bnQ7XG4gICAgZGlzdGFuY2UgPSAwO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbal07XG4gICAgICB2YXIgbm9kZUlkID0gbm9kZS5pZDtcbiAgICAgIGN1cnJlbnRSYW5rID0gY3VyUmFua3Nbbm9kZUlkXSArIGxlYWtlZFJhbms7XG4gICAgICBkaXN0YW5jZSArPSBNYXRoLmFicyhjdXJyZW50UmFuayAtIHByZXZSYW5rc1tub2RlSWRdKTtcbiAgICAgIHByZXZSYW5rc1tub2RlSWRdID0gY3VycmVudFJhbms7XG4gICAgfVxuXG4gICAgbWF4SXRlcmF0aW9ucyAtPSAxO1xuICB9XG5cbiAgcmV0dXJuIHByZXZSYW5rcztcbn07XG5cbnZhciBfZGVmYXVsdCA9IHBhZ2VSYW5rO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/pageRank.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/structs/binary-heap.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/structs/binary-heap.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar defaultCompare = function defaultCompare(a, b) {\n return a - b;\n};\n\nvar MinBinaryHeap =\n/** @class */\nfunction () {\n function MinBinaryHeap(compareFn) {\n if (compareFn === void 0) {\n compareFn = defaultCompare;\n }\n\n this.compareFn = compareFn;\n this.list = [];\n }\n\n MinBinaryHeap.prototype.getLeft = function (index) {\n return 2 * index + 1;\n };\n\n MinBinaryHeap.prototype.getRight = function (index) {\n return 2 * index + 2;\n };\n\n MinBinaryHeap.prototype.getParent = function (index) {\n if (index === 0) {\n return null;\n }\n\n return Math.floor((index - 1) / 2);\n };\n\n MinBinaryHeap.prototype.isEmpty = function () {\n return this.list.length <= 0;\n };\n\n MinBinaryHeap.prototype.top = function () {\n return this.isEmpty() ? undefined : this.list[0];\n };\n\n MinBinaryHeap.prototype.delMin = function () {\n var top = this.top();\n var bottom = this.list.pop();\n\n if (this.list.length > 0) {\n this.list[0] = bottom;\n this.moveDown(0);\n }\n\n return top;\n };\n\n MinBinaryHeap.prototype.insert = function (value) {\n if (value !== null) {\n this.list.push(value);\n var index = this.list.length - 1;\n this.moveUp(index);\n return true;\n }\n\n return false;\n };\n\n MinBinaryHeap.prototype.moveUp = function (index) {\n var parent = this.getParent(index);\n\n while (index && index > 0 && this.compareFn(this.list[parent], this.list[index]) > 0) {\n // swap\n var tmp = this.list[parent];\n this.list[parent] = this.list[index];\n this.list[index] = tmp; // [this.list[index], this.list[parent]] = [this.list[parent], this.list[index]]\n\n index = parent;\n parent = this.getParent(index);\n }\n };\n\n MinBinaryHeap.prototype.moveDown = function (index) {\n var _a;\n\n var element = index;\n var left = this.getLeft(index);\n var right = this.getRight(index);\n var size = this.list.length;\n\n if (left !== null && left < size && this.compareFn(this.list[element], this.list[left]) > 0) {\n element = left;\n } else if (right !== null && right < size && this.compareFn(this.list[element], this.list[right]) > 0) {\n element = right;\n }\n\n if (index !== element) {\n _a = [this.list[element], this.list[index]], this.list[index] = _a[0], this.list[element] = _a[1];\n this.moveDown(element);\n }\n };\n\n return MinBinaryHeap;\n}();\n\nvar _default = MinBinaryHeap;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2JpbmFyeS1oZWFwLmpzPzljMmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qjs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL3N0cnVjdHMvYmluYXJ5LWhlYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIGRlZmF1bHRDb21wYXJlID0gZnVuY3Rpb24gZGVmYXVsdENvbXBhcmUoYSwgYikge1xuICByZXR1cm4gYSAtIGI7XG59O1xuXG52YXIgTWluQmluYXJ5SGVhcCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1pbkJpbmFyeUhlYXAoY29tcGFyZUZuKSB7XG4gICAgaWYgKGNvbXBhcmVGbiA9PT0gdm9pZCAwKSB7XG4gICAgICBjb21wYXJlRm4gPSBkZWZhdWx0Q29tcGFyZTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbXBhcmVGbiA9IGNvbXBhcmVGbjtcbiAgICB0aGlzLmxpc3QgPSBbXTtcbiAgfVxuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmdldExlZnQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICByZXR1cm4gMiAqIGluZGV4ICsgMTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRSaWdodCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHJldHVybiAyICogaW5kZXggKyAyO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKGluZGV4IC0gMSkgLyAyKTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3QubGVuZ3RoIDw9IDA7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUudG9wID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmlzRW1wdHkoKSA/IHVuZGVmaW5lZCA6IHRoaXMubGlzdFswXTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5kZWxNaW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRvcCA9IHRoaXMudG9wKCk7XG4gICAgdmFyIGJvdHRvbSA9IHRoaXMubGlzdC5wb3AoKTtcblxuICAgIGlmICh0aGlzLmxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5saXN0WzBdID0gYm90dG9tO1xuICAgICAgdGhpcy5tb3ZlRG93bigwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9wO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5saXN0LnB1c2godmFsdWUpO1xuICAgICAgdmFyIGluZGV4ID0gdGhpcy5saXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLm1vdmVVcChpbmRleCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUubW92ZVVwID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KGluZGV4KTtcblxuICAgIHdoaWxlIChpbmRleCAmJiBpbmRleCA+IDAgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W3BhcmVudF0sIHRoaXMubGlzdFtpbmRleF0pID4gMCkge1xuICAgICAgLy8gc3dhcFxuICAgICAgdmFyIHRtcCA9IHRoaXMubGlzdFtwYXJlbnRdO1xuICAgICAgdGhpcy5saXN0W3BhcmVudF0gPSB0aGlzLmxpc3RbaW5kZXhdO1xuICAgICAgdGhpcy5saXN0W2luZGV4XSA9IHRtcDsgLy8gW3RoaXMubGlzdFtpbmRleF0sIHRoaXMubGlzdFtwYXJlbnRdXSA9IFt0aGlzLmxpc3RbcGFyZW50XSwgdGhpcy5saXN0W2luZGV4XV1cblxuICAgICAgaW5kZXggPSBwYXJlbnQ7XG4gICAgICBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChpbmRleCk7XG4gICAgfVxuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLm1vdmVEb3duID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIGVsZW1lbnQgPSBpbmRleDtcbiAgICB2YXIgbGVmdCA9IHRoaXMuZ2V0TGVmdChpbmRleCk7XG4gICAgdmFyIHJpZ2h0ID0gdGhpcy5nZXRSaWdodChpbmRleCk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmxpc3QubGVuZ3RoO1xuXG4gICAgaWYgKGxlZnQgIT09IG51bGwgJiYgbGVmdCA8IHNpemUgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W2VsZW1lbnRdLCB0aGlzLmxpc3RbbGVmdF0pID4gMCkge1xuICAgICAgZWxlbWVudCA9IGxlZnQ7XG4gICAgfSBlbHNlIGlmIChyaWdodCAhPT0gbnVsbCAmJiByaWdodCA8IHNpemUgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W2VsZW1lbnRdLCB0aGlzLmxpc3RbcmlnaHRdKSA+IDApIHtcbiAgICAgIGVsZW1lbnQgPSByaWdodDtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggIT09IGVsZW1lbnQpIHtcbiAgICAgIF9hID0gW3RoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W2luZGV4XV0sIHRoaXMubGlzdFtpbmRleF0gPSBfYVswXSwgdGhpcy5saXN0W2VsZW1lbnRdID0gX2FbMV07XG4gICAgICB0aGlzLm1vdmVEb3duKGVsZW1lbnQpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gTWluQmluYXJ5SGVhcDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gTWluQmluYXJ5SGVhcDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/structs/binary-heap.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/structs/linked-list.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/structs/linked-list.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.LinkedListNode = void 0;\n\nvar defaultComparator = function defaultComparator(a, b) {\n if (a === b) {\n return true;\n }\n\n return false;\n};\n/**\n * 链表中单个元素节点\n */\n\n\nvar LinkedListNode =\n/** @class */\nfunction () {\n function LinkedListNode(value, next) {\n if (next === void 0) {\n next = null;\n }\n\n this.value = value;\n this.next = next;\n }\n\n LinkedListNode.prototype.toString = function (callback) {\n return callback ? callback(this.value) : \"\".concat(this.value);\n };\n\n return LinkedListNode;\n}();\n\nexports.LinkedListNode = LinkedListNode;\n\nvar LinkedList =\n/** @class */\nfunction () {\n function LinkedList(comparator) {\n if (comparator === void 0) {\n comparator = defaultComparator;\n }\n\n this.head = null;\n this.tail = null;\n this.compare = comparator;\n }\n /**\n * 将指定元素添加到链表头部\n * @param value\n */\n\n\n LinkedList.prototype.prepend = function (value) {\n // 在头部添加一个节点\n var newNode = new LinkedListNode(value, this.head);\n this.head = newNode;\n\n if (!this.tail) {\n this.tail = newNode;\n }\n\n return this;\n };\n /**\n * 将指定元素添加到链表中\n * @param value\n */\n\n\n LinkedList.prototype.append = function (value) {\n var newNode = new LinkedListNode(value); // 如果不存在头节点,则将创建的新节点作为头节点\n\n if (!this.head) {\n this.head = newNode;\n this.tail = newNode;\n return this;\n } // 将新节点附加到链表末尾\n\n\n this.tail.next = newNode;\n this.tail = newNode;\n return this;\n };\n /**\n * 删除指定元素\n * @param value 要删除的元素\n */\n\n\n LinkedList.prototype.delete = function (value) {\n if (!this.head) {\n return null;\n }\n\n var deleteNode = null; // 如果删除的是头部元素,则将next作为头元素\n\n while (this.head && this.compare(this.head.value, value)) {\n deleteNode = this.head;\n this.head = this.head.next;\n }\n\n var currentNode = this.head;\n\n if (currentNode !== null) {\n // 如果删除了节点以后,将next节点前移\n while (currentNode.next) {\n if (this.compare(currentNode.next.value, value)) {\n deleteNode = currentNode.next;\n currentNode.next = currentNode.next.next;\n } else {\n currentNode = currentNode.next;\n }\n }\n } // 检查尾部节点是否被删除\n\n\n if (this.compare(this.tail.value, value)) {\n this.tail = currentNode;\n }\n\n return deleteNode;\n };\n /**\n * 查找指定的元素\n * @param param0\n */\n\n\n LinkedList.prototype.find = function (_a) {\n var _b = _a.value,\n value = _b === void 0 ? undefined : _b,\n _c = _a.callback,\n callback = _c === void 0 ? undefined : _c;\n\n if (!this.head) {\n return null;\n }\n\n var currentNode = this.head;\n\n while (currentNode) {\n // 如果指定了 callback,则按指定的 callback 查找\n if (callback && callback(currentNode.value)) {\n return currentNode;\n } // 如果指定了 value,则按 value 查找\n\n\n if (value !== undefined && this.compare(currentNode.value, value)) {\n return currentNode;\n }\n\n currentNode = currentNode.next;\n }\n\n return null;\n };\n /**\n * 删除尾部节点\n */\n\n\n LinkedList.prototype.deleteTail = function () {\n var deletedTail = this.tail;\n\n if (this.head === this.tail) {\n // 链表中只有一个元素\n this.head = null;\n this.tail = null;\n return deletedTail;\n }\n\n var currentNode = this.head;\n\n while (currentNode.next) {\n if (!currentNode.next.next) {\n currentNode.next = null;\n } else {\n currentNode = currentNode.next;\n }\n }\n\n this.tail = currentNode;\n return deletedTail;\n };\n /**\n * 删除头部节点\n */\n\n\n LinkedList.prototype.deleteHead = function () {\n if (!this.head) {\n return null;\n }\n\n var deletedHead = this.head;\n\n if (this.head.next) {\n this.head = this.head.next;\n } else {\n this.head = null;\n this.tail = null;\n }\n\n return deletedHead;\n };\n /**\n * 将一组元素转成链表中的节点\n * @param values 链表中的元素\n */\n\n\n LinkedList.prototype.fromArray = function (values) {\n var _this = this;\n\n values.forEach(function (value) {\n return _this.append(value);\n });\n return this;\n };\n /**\n * 将链表中的节点转成数组元素\n */\n\n\n LinkedList.prototype.toArray = function () {\n var nodes = [];\n var currentNode = this.head;\n\n while (currentNode) {\n nodes.push(currentNode);\n currentNode = currentNode.next;\n }\n\n return nodes;\n };\n /**\n * 反转链表中的元素节点\n */\n\n\n LinkedList.prototype.reverse = function () {\n var currentNode = this.head;\n var prevNode = null;\n var nextNode = null;\n\n while (currentNode) {\n // 存储下一个元素节点\n nextNode = currentNode.next; // 更改当前节点的下一个节点,以便将它连接到上一个节点上\n\n currentNode.next = prevNode; // 将 prevNode 和 currentNode 向前移动一步\n\n prevNode = currentNode;\n currentNode = nextNode;\n }\n\n this.tail = this.head;\n this.head = prevNode;\n };\n\n LinkedList.prototype.toString = function (callback) {\n if (callback === void 0) {\n callback = undefined;\n }\n\n return this.toArray().map(function (node) {\n return node.toString(callback);\n }).toString();\n };\n\n return LinkedList;\n}();\n\nvar _default = LinkedList;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzPzVjYjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLkxpbmtlZExpc3ROb2RlID0gdm9pZCAwO1xuXG52YXIgZGVmYXVsdENvbXBhcmF0b3IgPSBmdW5jdGlvbiBkZWZhdWx0Q29tcGFyYXRvcihhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuLyoqXG4gKiDpk77ooajkuK3ljZXkuKrlhYPntKDoioLngrlcbiAqL1xuXG5cbnZhciBMaW5rZWRMaXN0Tm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExpbmtlZExpc3ROb2RlKHZhbHVlLCBuZXh0KSB7XG4gICAgaWYgKG5leHQgPT09IHZvaWQgMCkge1xuICAgICAgbmV4dCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gIH1cblxuICBMaW5rZWRMaXN0Tm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gY2FsbGJhY2sgPyBjYWxsYmFjayh0aGlzLnZhbHVlKSA6IFwiXCIuY29uY2F0KHRoaXMudmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiBMaW5rZWRMaXN0Tm9kZTtcbn0oKTtcblxuZXhwb3J0cy5MaW5rZWRMaXN0Tm9kZSA9IExpbmtlZExpc3ROb2RlO1xuXG52YXIgTGlua2VkTGlzdCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExpbmtlZExpc3QoY29tcGFyYXRvcikge1xuICAgIGlmIChjb21wYXJhdG9yID09PSB2b2lkIDApIHtcbiAgICAgIGNvbXBhcmF0b3IgPSBkZWZhdWx0Q29tcGFyYXRvcjtcbiAgICB9XG5cbiAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgIHRoaXMudGFpbCA9IG51bGw7XG4gICAgdGhpcy5jb21wYXJlID0gY29tcGFyYXRvcjtcbiAgfVxuICAvKipcbiAgICog5bCG5oyH5a6a5YWD57Sg5re75Yqg5Yiw6ZO+6KGo5aS06YOoXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnByZXBlbmQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyDlnKjlpLTpg6jmt7vliqDkuIDkuKroioLngrlcbiAgICB2YXIgbmV3Tm9kZSA9IG5ldyBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSwgdGhpcy5oZWFkKTtcbiAgICB0aGlzLmhlYWQgPSBuZXdOb2RlO1xuXG4gICAgaWYgKCF0aGlzLnRhaWwpIHtcbiAgICAgIHRoaXMudGFpbCA9IG5ld05vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbmjIflrprlhYPntKDmt7vliqDliLDpk77ooajkuK1cbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgdmFyIG5ld05vZGUgPSBuZXcgTGlua2VkTGlzdE5vZGUodmFsdWUpOyAvLyDlpoLmnpzkuI3lrZjlnKjlpLToioLngrnvvIzliJnlsIbliJvlu7rnmoTmlrDoioLngrnkvZzkuLrlpLToioLngrlcblxuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICB0aGlzLmhlYWQgPSBuZXdOb2RlO1xuICAgICAgdGhpcy50YWlsID0gbmV3Tm9kZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gLy8g5bCG5paw6IqC54K56ZmE5Yqg5Yiw6ZO+6KGo5pyr5bC+XG5cblxuICAgIHRoaXMudGFpbC5uZXh0ID0gbmV3Tm9kZTtcbiAgICB0aGlzLnRhaWwgPSBuZXdOb2RlO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB2YWx1ZSDopoHliKDpmaTnmoTlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoIXRoaXMuaGVhZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGRlbGV0ZU5vZGUgPSBudWxsOyAvLyDlpoLmnpzliKDpmaTnmoTmmK/lpLTpg6jlhYPntKDvvIzliJnlsIZuZXh05L2c5Li65aS05YWD57SgXG5cbiAgICB3aGlsZSAodGhpcy5oZWFkICYmIHRoaXMuY29tcGFyZSh0aGlzLmhlYWQudmFsdWUsIHZhbHVlKSkge1xuICAgICAgZGVsZXRlTm9kZSA9IHRoaXMuaGVhZDtcbiAgICAgIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIGlmIChjdXJyZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgLy8g5aaC5p6c5Yig6Zmk5LqG6IqC54K55Lul5ZCO77yM5bCGbmV4dOiKgueCueWJjeenu1xuICAgICAgd2hpbGUgKGN1cnJlbnROb2RlLm5leHQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcGFyZShjdXJyZW50Tm9kZS5uZXh0LnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICBkZWxldGVOb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gY3VycmVudE5vZGUubmV4dC5uZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8g5qOA5p+l5bC+6YOo6IqC54K55piv5ZCm6KKr5Yig6ZmkXG5cblxuICAgIGlmICh0aGlzLmNvbXBhcmUodGhpcy50YWlsLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMudGFpbCA9IGN1cnJlbnROb2RlO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVOb2RlO1xuICB9O1xuICAvKipcbiAgICog5p+l5om+5oyH5a6a55qE5YWD57SgXG4gICAqIEBwYXJhbSBwYXJhbTBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIF9iID0gX2EudmFsdWUsXG4gICAgICAgIHZhbHVlID0gX2IgPT09IHZvaWQgMCA/IHVuZGVmaW5lZCA6IF9iLFxuICAgICAgICBfYyA9IF9hLmNhbGxiYWNrLFxuICAgICAgICBjYWxsYmFjayA9IF9jID09PSB2b2lkIDAgPyB1bmRlZmluZWQgOiBfYztcblxuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUpIHtcbiAgICAgIC8vIOWmguaenOaMh+WumuS6hiBjYWxsYmFja++8jOWImeaMieaMh+WumueahCBjYWxsYmFjayDmn6Xmib5cbiAgICAgIGlmIChjYWxsYmFjayAmJiBjYWxsYmFjayhjdXJyZW50Tm9kZS52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgICAgfSAvLyDlpoLmnpzmjIflrprkuoYgdmFsdWXvvIzliJnmjIkgdmFsdWUg5p+l5om+XG5cblxuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb21wYXJlKGN1cnJlbnROb2RlLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTlsL7pg6joioLngrlcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGVUYWlsID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBkZWxldGVkVGFpbCA9IHRoaXMudGFpbDtcblxuICAgIGlmICh0aGlzLmhlYWQgPT09IHRoaXMudGFpbCkge1xuICAgICAgLy8g6ZO+6KGo5Lit5Y+q5pyJ5LiA5Liq5YWD57SgXG4gICAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICAgIHJldHVybiBkZWxldGVkVGFpbDtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUubmV4dCkge1xuICAgICAgaWYgKCFjdXJyZW50Tm9kZS5uZXh0Lm5leHQpIHtcbiAgICAgICAgY3VycmVudE5vZGUubmV4dCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50YWlsID0gY3VycmVudE5vZGU7XG4gICAgcmV0dXJuIGRlbGV0ZWRUYWlsO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk5aS06YOo6IqC54K5XG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuZGVsZXRlSGVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuaGVhZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGRlbGV0ZWRIZWFkID0gdGhpcy5oZWFkO1xuXG4gICAgaWYgKHRoaXMuaGVhZC5uZXh0KSB7XG4gICAgICB0aGlzLmhlYWQgPSB0aGlzLmhlYWQubmV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICAgIHRoaXMudGFpbCA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZWRIZWFkO1xuICB9O1xuICAvKipcbiAgICog5bCG5LiA57uE5YWD57Sg6L2s5oiQ6ZO+6KGo5Lit55qE6IqC54K5XG4gICAqIEBwYXJhbSB2YWx1ZXMg6ZO+6KGo5Lit55qE5YWD57SgXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuZnJvbUFycmF5ID0gZnVuY3Rpb24gKHZhbHVlcykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBfdGhpcy5hcHBlbmQodmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5bCG6ZO+6KGo5Lit55qE6IqC54K56L2s5oiQ5pWw57uE5YWD57SgXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZXMgPSBbXTtcbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUpIHtcbiAgICAgIG5vZGVzLnB1c2goY3VycmVudE5vZGUpO1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgIH1cblxuICAgIHJldHVybiBub2RlcztcbiAgfTtcbiAgLyoqXG4gICAqIOWPjei9rOmTvuihqOS4reeahOWFg+e0oOiKgueCuVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnJldmVyc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5oZWFkO1xuICAgIHZhciBwcmV2Tm9kZSA9IG51bGw7XG4gICAgdmFyIG5leHROb2RlID0gbnVsbDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgLy8g5a2Y5YKo5LiL5LiA5Liq5YWD57Sg6IqC54K5XG4gICAgICBuZXh0Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7IC8vIOabtOaUueW9k+WJjeiKgueCueeahOS4i+S4gOS4quiKgueCue+8jOS7peS+v+WwhuWug+i/nuaOpeWIsOS4iuS4gOS4quiKgueCueS4ilxuXG4gICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gcHJldk5vZGU7IC8vIOWwhiBwcmV2Tm9kZSDlkowgY3VycmVudE5vZGUg5ZCR5YmN56e75Yqo5LiA5q2lXG5cbiAgICAgIHByZXZOb2RlID0gY3VycmVudE5vZGU7XG4gICAgICBjdXJyZW50Tm9kZSA9IG5leHROb2RlO1xuICAgIH1cblxuICAgIHRoaXMudGFpbCA9IHRoaXMuaGVhZDtcbiAgICB0aGlzLmhlYWQgPSBwcmV2Tm9kZTtcbiAgfTtcblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIGlmIChjYWxsYmFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBjYWxsYmFjayA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50b1N0cmluZyhjYWxsYmFjayk7XG4gICAgfSkudG9TdHJpbmcoKTtcbiAgfTtcblxuICByZXR1cm4gTGlua2VkTGlzdDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gTGlua2VkTGlzdDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/structs/linked-list.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/structs/queue.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/structs/queue.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _linkedList = _interopRequireDefault(__webpack_require__(/*! ./linked-list */ \"./node_modules/@antv/algorithm/lib/structs/linked-list.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Queue =\n/** @class */\nfunction () {\n function Queue() {\n this.linkedList = new _linkedList.default();\n }\n /**\n * 队列是否为空\n */\n\n\n Queue.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 读取队列头部的元素, 不删除队列中的元素\n */\n\n\n Queue.prototype.peek = function () {\n if (!this.linkedList.head) {\n return null;\n }\n\n return this.linkedList.head.value;\n };\n /**\n * 在队列的尾部新增一个元素\n * @param value\n */\n\n\n Queue.prototype.enqueue = function (value) {\n this.linkedList.append(value);\n };\n /**\n * 删除队列中的头部元素,如果队列为空,则返回 null\n */\n\n\n Queue.prototype.dequeue = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Queue.prototype.toString = function (callback) {\n return this.linkedList.toString(callback);\n };\n\n return Queue;\n}();\n\nvar _default = Queue;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL3F1ZXVlLmpzPzUyYjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSx5Q0FBeUMsbUJBQU8sQ0FBQyxnRkFBZTs7QUFFaEUsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvc3RydWN0cy9xdWV1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2xpbmtlZExpc3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpbmtlZC1saXN0XCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIFF1ZXVlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUXVldWUoKSB7XG4gICAgdGhpcy5saW5rZWRMaXN0ID0gbmV3IF9saW5rZWRMaXN0LmRlZmF1bHQoKTtcbiAgfVxuICAvKipcbiAgICog6Zif5YiX5piv5ZCm5Li656m6XG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmxpbmtlZExpc3QuaGVhZDtcbiAgfTtcbiAgLyoqXG4gICAqIOivu+WPlumYn+WIl+WktOmDqOeahOWFg+e0oO+8jCDkuI3liKDpmaTpmJ/liJfkuK3nmoTlhYPntKBcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUucGVlayA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMubGlua2VkTGlzdC5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LmhlYWQudmFsdWU7XG4gIH07XG4gIC8qKlxuICAgKiDlnKjpmJ/liJfnmoTlsL7pg6jmlrDlop7kuIDkuKrlhYPntKBcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmVucXVldWUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QuYXBwZW5kKHZhbHVlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOmYn+WIl+S4reeahOWktOmDqOWFg+e0oO+8jOWmguaenOmYn+WIl+S4uuepuu+8jOWImei/lOWbniBudWxsXG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmRlcXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlbW92ZUhlYWQgPSB0aGlzLmxpbmtlZExpc3QuZGVsZXRlSGVhZCgpO1xuICAgIHJldHVybiByZW1vdmVIZWFkID8gcmVtb3ZlSGVhZC52YWx1ZSA6IG51bGw7XG4gIH07XG5cbiAgUXVldWUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMubGlua2VkTGlzdC50b1N0cmluZyhjYWxsYmFjayk7XG4gIH07XG5cbiAgcmV0dXJuIFF1ZXVlO1xufSgpO1xuXG52YXIgX2RlZmF1bHQgPSBRdWV1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/structs/queue.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/structs/union-find.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/structs/union-find.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/**\n * 并查集 Disjoint set to support quick union\n */\nvar UnionFind =\n/** @class */\nfunction () {\n function UnionFind(items) {\n this.count = items.length;\n this.parent = {};\n\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var i = items_1[_i];\n this.parent[i] = i;\n }\n } // find the root of the item\n\n\n UnionFind.prototype.find = function (item) {\n while (this.parent[item] !== item) {\n item = this.parent[item];\n }\n\n return item;\n };\n\n UnionFind.prototype.union = function (a, b) {\n var rootA = this.find(a);\n var rootB = this.find(b);\n if (rootA === rootB) return; // make the element with smaller root the parent\n\n if (rootA < rootB) {\n if (this.parent[b] !== b) this.union(this.parent[b], a);\n this.parent[b] = this.parent[a];\n } else {\n if (this.parent[a] !== a) this.union(this.parent[a], b);\n this.parent[a] = this.parent[b];\n }\n }; // whether a and b are connected, i.e. a and b have the same root\n\n\n UnionFind.prototype.connected = function (a, b) {\n return this.find(a) === this.find(b);\n };\n\n return UnionFind;\n}();\n\nvar _default = UnionFind;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL3VuaW9uLWZpbmQuanM/ODNhZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMscUJBQXFCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvc3RydWN0cy91bmlvbi1maW5kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbi8qKlxuICog5bm25p+l6ZuGIERpc2pvaW50IHNldCB0byBzdXBwb3J0IHF1aWNrIHVuaW9uXG4gKi9cbnZhciBVbmlvbkZpbmQgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBVbmlvbkZpbmQoaXRlbXMpIHtcbiAgICB0aGlzLmNvdW50ID0gaXRlbXMubGVuZ3RoO1xuICAgIHRoaXMucGFyZW50ID0ge307XG5cbiAgICBmb3IgKHZhciBfaSA9IDAsIGl0ZW1zXzEgPSBpdGVtczsgX2kgPCBpdGVtc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGkgPSBpdGVtc18xW19pXTtcbiAgICAgIHRoaXMucGFyZW50W2ldID0gaTtcbiAgICB9XG4gIH0gLy8gZmluZCB0aGUgcm9vdCBvZiB0aGUgaXRlbVxuXG5cbiAgVW5pb25GaW5kLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB3aGlsZSAodGhpcy5wYXJlbnRbaXRlbV0gIT09IGl0ZW0pIHtcbiAgICAgIGl0ZW0gPSB0aGlzLnBhcmVudFtpdGVtXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcblxuICBVbmlvbkZpbmQucHJvdG90eXBlLnVuaW9uID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICB2YXIgcm9vdEEgPSB0aGlzLmZpbmQoYSk7XG4gICAgdmFyIHJvb3RCID0gdGhpcy5maW5kKGIpO1xuICAgIGlmIChyb290QSA9PT0gcm9vdEIpIHJldHVybjsgLy8gbWFrZSB0aGUgZWxlbWVudCB3aXRoIHNtYWxsZXIgcm9vdCB0aGUgcGFyZW50XG5cbiAgICBpZiAocm9vdEEgPCByb290Qikge1xuICAgICAgaWYgKHRoaXMucGFyZW50W2JdICE9PSBiKSB0aGlzLnVuaW9uKHRoaXMucGFyZW50W2JdLCBhKTtcbiAgICAgIHRoaXMucGFyZW50W2JdID0gdGhpcy5wYXJlbnRbYV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnBhcmVudFthXSAhPT0gYSkgdGhpcy51bmlvbih0aGlzLnBhcmVudFthXSwgYik7XG4gICAgICB0aGlzLnBhcmVudFthXSA9IHRoaXMucGFyZW50W2JdO1xuICAgIH1cbiAgfTsgLy8gd2hldGhlciBhIGFuZCBiIGFyZSBjb25uZWN0ZWQsIGkuZS4gYSBhbmQgYiBoYXZlIHRoZSBzYW1lIHJvb3RcblxuXG4gIFVuaW9uRmluZC5wcm90b3R5cGUuY29ubmVjdGVkID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kKGEpID09PSB0aGlzLmZpbmQoYik7XG4gIH07XG5cbiAgcmV0dXJuIFVuaW9uRmluZDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gVW5pb25GaW5kO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/structs/union-find.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/types.js": /*!***************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/types.js ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DistanceType = void 0;\nvar DistanceType;\nexports.DistanceType = DistanceType;\n\n(function (DistanceType) {\n DistanceType[\"EuclideanDistance\"] = \"euclideanDistance\";\n})(DistanceType || (exports.DistanceType = DistanceType = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi90eXBlcy5qcz81ZDZmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDLDJEQUEyRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9hbGdvcml0aG0vbGliL3R5cGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkRpc3RhbmNlVHlwZSA9IHZvaWQgMDtcbnZhciBEaXN0YW5jZVR5cGU7XG5leHBvcnRzLkRpc3RhbmNlVHlwZSA9IERpc3RhbmNlVHlwZTtcblxuKGZ1bmN0aW9uIChEaXN0YW5jZVR5cGUpIHtcbiAgRGlzdGFuY2VUeXBlW1wiRXVjbGlkZWFuRGlzdGFuY2VcIl0gPSBcImV1Y2xpZGVhbkRpc3RhbmNlXCI7XG59KShEaXN0YW5jZVR5cGUgfHwgKGV4cG9ydHMuRGlzdGFuY2VUeXBlID0gRGlzdGFuY2VUeXBlID0ge30pKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/types.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/util.js": /*!**************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/util.js ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uniqueId = exports.getOutEdgesNodeId = exports.getNeighbors = exports.getEdgesByNodeId = void 0;\n\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\nvar getNeighbors = function getNeighbors(nodeId, edges, type) {\n if (edges === void 0) {\n edges = [];\n }\n\n var currentEdges = edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.source === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.target;\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.target === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.source;\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.source === nodeId ? edge.target : edge.source;\n };\n\n return currentEdges.map(neighhborsConverter);\n};\n/**\n * 获取指定节点的出边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\n\nexports.getNeighbors = getNeighbors;\n\nvar getOutEdgesNodeId = function getOutEdgesNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId;\n });\n};\n/**\n * 获取指定节点的边,包括出边和入边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\n\nexports.getOutEdgesNodeId = getOutEdgesNodeId;\n\nvar getEdgesByNodeId = function getEdgesByNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n};\n/**\n * 生成唯一的 ID,规则是序号 + 时间戳\n * @param index 序号\n */\n\n\nexports.getEdgesByNodeId = getEdgesByNodeId;\n\nvar uniqueId = function uniqueId(index) {\n if (index === void 0) {\n index = 0;\n }\n\n var random1 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n var random2 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n return \"\".concat(index, \"-\").concat(random1).concat(random2);\n};\n\nexports.uniqueId = uniqueId;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi91dGlsLmpzP2RjZmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy51bmlxdWVJZCA9IGV4cG9ydHMuZ2V0T3V0RWRnZXNOb2RlSWQgPSBleHBvcnRzLmdldE5laWdoYm9ycyA9IGV4cG9ydHMuZ2V0RWRnZXNCeU5vZGVJZCA9IHZvaWQgMDtcblxuLyoqXG4gKiDojrflj5bmjIflrproioLngrnnmoTmiYDmnInpgrvlsYVcbiAqIEBwYXJhbSBub2RlSWQg6IqC54K5IElEXG4gKiBAcGFyYW0gZWRnZXMg5Zu+5Lit55qE5omA5pyJ6L655pWw5o2uXG4gKiBAcGFyYW0gdHlwZSDpgrvlsYXnsbvlnotcbiAqL1xudmFyIGdldE5laWdoYm9ycyA9IGZ1bmN0aW9uIGdldE5laWdoYm9ycyhub2RlSWQsIGVkZ2VzLCB0eXBlKSB7XG4gIGlmIChlZGdlcyA9PT0gdm9pZCAwKSB7XG4gICAgZWRnZXMgPSBbXTtcbiAgfVxuXG4gIHZhciBjdXJyZW50RWRnZXMgPSBlZGdlcy5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZCB8fCBlZGdlLnRhcmdldCA9PT0gbm9kZUlkO1xuICB9KTtcblxuICBpZiAodHlwZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAvLyDlvZPliY3oioLngrnkuLogc291cmNl77yM5a6D5omA5oyH5ZCR55qE55uu5qCH6IqC54K5XG4gICAgdmFyIG5laWdoaGJvcnNDb252ZXJ0ZXJfMSA9IGZ1bmN0aW9uIG5laWdoaGJvcnNDb252ZXJ0ZXJfMShlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGN1cnJlbnRFZGdlcy5maWx0ZXIobmVpZ2hoYm9yc0NvbnZlcnRlcl8xKS5tYXAoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnRhcmdldDtcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSAnc291cmNlJykge1xuICAgIC8vIOW9k+WJjeiKgueCueS4uiB0YXJnZXTvvIzlroPmiYDmjIflkJHnmoTmupDoioLngrlcbiAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8yID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8yKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnRhcmdldCA9PT0gbm9kZUlkO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VycmVudEVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzIpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2Uuc291cmNlO1xuICAgIH0pO1xuICB9IC8vIOiLpeacquaMh+WumiB0eXBlIO+8jOWImei/lOWbnuaJgOaciemCu+WxhVxuXG5cbiAgdmFyIG5laWdoaGJvcnNDb252ZXJ0ZXIgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZCA/IGVkZ2UudGFyZ2V0IDogZWRnZS5zb3VyY2U7XG4gIH07XG5cbiAgcmV0dXJuIGN1cnJlbnRFZGdlcy5tYXAobmVpZ2hoYm9yc0NvbnZlcnRlcik7XG59O1xuLyoqXG4gKiDojrflj5bmjIflrproioLngrnnmoTlh7rovrlcbiAqIEBwYXJhbSBub2RlSWQg6IqC54K5IElEXG4gKiBAcGFyYW0gZWRnZXMg5Zu+5Lit55qE5omA5pyJ6L655pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmdldE5laWdoYm9ycyA9IGdldE5laWdoYm9ycztcblxudmFyIGdldE91dEVkZ2VzTm9kZUlkID0gZnVuY3Rpb24gZ2V0T3V0RWRnZXNOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQ7XG4gIH0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE6L6577yM5YyF5ous5Ye66L655ZKM5YWl6L65XG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5nZXRPdXRFZGdlc05vZGVJZCA9IGdldE91dEVkZ2VzTm9kZUlkO1xuXG52YXIgZ2V0RWRnZXNCeU5vZGVJZCA9IGZ1bmN0aW9uIGdldEVkZ2VzQnlOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQgfHwgZWRnZS50YXJnZXQgPT09IG5vZGVJZDtcbiAgfSk7XG59O1xuLyoqXG4gKiDnlJ/miJDllK/kuIDnmoQgSUTvvIzop4TliJnmmK/luo/lj7cgKyDml7bpl7TmiLNcbiAqIEBwYXJhbSBpbmRleCDluo/lj7dcbiAqL1xuXG5cbmV4cG9ydHMuZ2V0RWRnZXNCeU5vZGVJZCA9IGdldEVkZ2VzQnlOb2RlSWQ7XG5cbnZhciB1bmlxdWVJZCA9IGZ1bmN0aW9uIHVuaXF1ZUlkKGluZGV4KSB7XG4gIGlmIChpbmRleCA9PT0gdm9pZCAwKSB7XG4gICAgaW5kZXggPSAwO1xuICB9XG5cbiAgdmFyIHJhbmRvbTEgPSBcIlwiLmNvbmNhdChNYXRoLnJhbmRvbSgpKS5zcGxpdCgnLicpWzFdLnN1YnN0cigwLCA1KTtcbiAgdmFyIHJhbmRvbTIgPSBcIlwiLmNvbmNhdChNYXRoLnJhbmRvbSgpKS5zcGxpdCgnLicpWzFdLnN1YnN0cigwLCA1KTtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KGluZGV4LCBcIi1cIikuY29uY2F0KHJhbmRvbTEpLmNvbmNhdChyYW5kb20yKTtcbn07XG5cbmV4cG9ydHMudW5pcXVlSWQgPSB1bmlxdWVJZDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/util.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/utils/data-preprocessing.js": /*!**********************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/utils/data-preprocessing.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.oneHot = exports.getDistance = exports.getAllKeyValueMap = exports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar _types = __webpack_require__(/*! ../types */ \"./node_modules/@antv/algorithm/lib/types.js\");\n\nvar _vector = _interopRequireDefault(__webpack_require__(/*! ./vector */ \"./node_modules/@antv/algorithm/lib/utils/vector.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 获取数据中所有的属性及其对应的值\n * @param dataList 数据集\n * @param involvedKeys 参与计算的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\nvar getAllKeyValueMap = function getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys) {\n var keys = []; // 指定了参与计算的keys时,使用指定的keys\n\n if (involvedKeys === null || involvedKeys === void 0 ? void 0 : involvedKeys.length) {\n keys = involvedKeys;\n } else {\n // 未指定抽取的keys时,提取数据中所有的key\n dataList.forEach(function (data) {\n keys = keys.concat(Object.keys(data));\n });\n keys = (0, _util.uniq)(keys);\n } // 获取所有值非空的key的value数组\n\n\n var allKeyValueMap = {};\n keys.forEach(function (key) {\n var value = [];\n dataList.forEach(function (data) {\n if (data[key] !== undefined && data[key] !== '') {\n value.push(data[key]);\n }\n });\n\n if (value.length && !(uninvolvedKeys === null || uninvolvedKeys === void 0 ? void 0 : uninvolvedKeys.includes(key))) {\n allKeyValueMap[key] = (0, _util.uniq)(value);\n }\n });\n return allKeyValueMap;\n};\n/**\n * one-hot编码:数据特征提取\n * @param dataList 数据集\n * @param involvedKeys 参与计算的的key集合\n * @param uninvolvedKeys 不参与计算的key集合\n */\n\n\nexports.getAllKeyValueMap = getAllKeyValueMap;\n\nvar oneHot = function oneHot(dataList, involvedKeys, uninvolvedKeys) {\n // 获取数据中所有的属性及其对应的值\n var allKeyValueMap = getAllKeyValueMap(dataList, involvedKeys, uninvolvedKeys);\n var oneHotCode = []; // 对数据进行one-hot编码\n\n dataList.forEach(function (data, index) {\n var code = [];\n Object.keys(allKeyValueMap).forEach(function (key) {\n var keyValue = data[key];\n var allKeyValue = allKeyValueMap[key];\n var valueIndex = allKeyValue.findIndex(function (value) {\n return keyValue === value;\n });\n var subCode = [];\n\n for (var i = 0; i < allKeyValue.length; i++) {\n if (i === valueIndex) {\n subCode.push(1);\n } else {\n subCode.push(0);\n }\n }\n\n code = code.concat(subCode);\n });\n oneHotCode[index] = code;\n });\n return oneHotCode;\n};\n/**\n * getDistance:获取两个元素之间的距离\n * @param item\n * @param otherItem\n * @param distanceType 距离类型\n * @param graphData 图数据\n */\n\n\nexports.oneHot = oneHot;\n\nvar getDistance = function getDistance(item, otherItem, distanceType, graphData) {\n if (distanceType === void 0) {\n distanceType = _types.DistanceType.EuclideanDistance;\n }\n\n var distance = 0;\n\n switch (distanceType) {\n case _types.DistanceType.EuclideanDistance:\n distance = new _vector.default(item).euclideanDistance(new _vector.default(otherItem));\n break;\n\n default:\n break;\n }\n\n return distance;\n};\n\nexports.getDistance = getDistance;\nvar _default = {\n getAllKeyValueMap: getAllKeyValueMap,\n oneHot: oneHot,\n getDistance: getDistance\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi91dGlscy9kYXRhLXByZXByb2Nlc3NpbmcuanM/NzE2MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQywwREFBWTs7QUFFaEMsYUFBYSxtQkFBTyxDQUFDLDZEQUFVOztBQUUvQixxQ0FBcUMsbUJBQU8sQ0FBQyxvRUFBVTs7QUFFdkQsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxxQkFBcUIsd0JBQXdCO0FBQzdDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi91dGlscy9kYXRhLXByZXByb2Nlc3NpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMub25lSG90ID0gZXhwb3J0cy5nZXREaXN0YW5jZSA9IGV4cG9ydHMuZ2V0QWxsS2V5VmFsdWVNYXAgPSBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCJAYW50di91dGlsXCIpO1xuXG52YXIgX3R5cGVzID0gcmVxdWlyZShcIi4uL3R5cGVzXCIpO1xuXG52YXIgX3ZlY3RvciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdmVjdG9yXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiDojrflj5bmlbDmja7kuK3miYDmnInnmoTlsZ7mgKflj4rlhbblr7nlupTnmoTlgLxcbiAqIEBwYXJhbSBkYXRhTGlzdCDmlbDmja7pm4ZcbiAqIEBwYXJhbSBpbnZvbHZlZEtleXMg5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKiBAcGFyYW0gdW5pbnZvbHZlZEtleXMg5LiN5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKi9cbnZhciBnZXRBbGxLZXlWYWx1ZU1hcCA9IGZ1bmN0aW9uIGdldEFsbEtleVZhbHVlTWFwKGRhdGFMaXN0LCBpbnZvbHZlZEtleXMsIHVuaW52b2x2ZWRLZXlzKSB7XG4gIHZhciBrZXlzID0gW107IC8vIOaMh+WumuS6huWPguS4juiuoeeul+eahGtleXPml7bvvIzkvb/nlKjmjIflrprnmoRrZXlzXG5cbiAgaWYgKGludm9sdmVkS2V5cyA9PT0gbnVsbCB8fCBpbnZvbHZlZEtleXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGludm9sdmVkS2V5cy5sZW5ndGgpIHtcbiAgICBrZXlzID0gaW52b2x2ZWRLZXlzO1xuICB9IGVsc2Uge1xuICAgIC8vIOacquaMh+WumuaKveWPlueahGtleXPml7bvvIzmj5Dlj5bmlbDmja7kuK3miYDmnInnmoRrZXlcbiAgICBkYXRhTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoT2JqZWN0LmtleXMoZGF0YSkpO1xuICAgIH0pO1xuICAgIGtleXMgPSAoMCwgX3V0aWwudW5pcSkoa2V5cyk7XG4gIH0gLy8g6I635Y+W5omA5pyJ5YC86Z2e56m655qEa2V555qEdmFsdWXmlbDnu4RcblxuXG4gIHZhciBhbGxLZXlWYWx1ZU1hcCA9IHt9O1xuICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgIGRhdGFMaXN0LmZvckVhY2goZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCAmJiBkYXRhW2tleV0gIT09ICcnKSB7XG4gICAgICAgIHZhbHVlLnB1c2goZGF0YVtrZXldKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh2YWx1ZS5sZW5ndGggJiYgISh1bmludm9sdmVkS2V5cyA9PT0gbnVsbCB8fCB1bmludm9sdmVkS2V5cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdW5pbnZvbHZlZEtleXMuaW5jbHVkZXMoa2V5KSkpIHtcbiAgICAgIGFsbEtleVZhbHVlTWFwW2tleV0gPSAoMCwgX3V0aWwudW5pcSkodmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBhbGxLZXlWYWx1ZU1hcDtcbn07XG4vKipcbiAqIG9uZS1ob3TnvJbnoIHvvJrmlbDmja7nibnlvoHmj5Dlj5ZcbiAqIEBwYXJhbSBkYXRhTGlzdCDmlbDmja7pm4ZcbiAqIEBwYXJhbSBpbnZvbHZlZEtleXMg5Y+C5LiO6K6h566X55qE55qEa2V56ZuG5ZCIXG4gKiBAcGFyYW0gdW5pbnZvbHZlZEtleXMg5LiN5Y+C5LiO6K6h566X55qEa2V56ZuG5ZCIXG4gKi9cblxuXG5leHBvcnRzLmdldEFsbEtleVZhbHVlTWFwID0gZ2V0QWxsS2V5VmFsdWVNYXA7XG5cbnZhciBvbmVIb3QgPSBmdW5jdGlvbiBvbmVIb3QoZGF0YUxpc3QsIGludm9sdmVkS2V5cywgdW5pbnZvbHZlZEtleXMpIHtcbiAgLy8g6I635Y+W5pWw5o2u5Lit5omA5pyJ55qE5bGe5oCn5Y+K5YW25a+55bqU55qE5YC8XG4gIHZhciBhbGxLZXlWYWx1ZU1hcCA9IGdldEFsbEtleVZhbHVlTWFwKGRhdGFMaXN0LCBpbnZvbHZlZEtleXMsIHVuaW52b2x2ZWRLZXlzKTtcbiAgdmFyIG9uZUhvdENvZGUgPSBbXTsgLy8g5a+55pWw5o2u6L+b6KGMb25lLWhvdOe8lueggVxuXG4gIGRhdGFMaXN0LmZvckVhY2goZnVuY3Rpb24gKGRhdGEsIGluZGV4KSB7XG4gICAgdmFyIGNvZGUgPSBbXTtcbiAgICBPYmplY3Qua2V5cyhhbGxLZXlWYWx1ZU1hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIga2V5VmFsdWUgPSBkYXRhW2tleV07XG4gICAgICB2YXIgYWxsS2V5VmFsdWUgPSBhbGxLZXlWYWx1ZU1hcFtrZXldO1xuICAgICAgdmFyIHZhbHVlSW5kZXggPSBhbGxLZXlWYWx1ZS5maW5kSW5kZXgoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBrZXlWYWx1ZSA9PT0gdmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHZhciBzdWJDb2RlID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsS2V5VmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPT09IHZhbHVlSW5kZXgpIHtcbiAgICAgICAgICBzdWJDb2RlLnB1c2goMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3ViQ29kZS5wdXNoKDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvZGUgPSBjb2RlLmNvbmNhdChzdWJDb2RlKTtcbiAgICB9KTtcbiAgICBvbmVIb3RDb2RlW2luZGV4XSA9IGNvZGU7XG4gIH0pO1xuICByZXR1cm4gb25lSG90Q29kZTtcbn07XG4vKipcbiAqIGdldERpc3RhbmNl77ya6I635Y+W5Lik5Liq5YWD57Sg5LmL6Ze055qE6Led56a7XG4gKiBAcGFyYW0gaXRlbVxuICogQHBhcmFtIG90aGVySXRlbVxuICogQHBhcmFtIGRpc3RhbmNlVHlwZSDot53nprvnsbvlnotcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLm9uZUhvdCA9IG9uZUhvdDtcblxudmFyIGdldERpc3RhbmNlID0gZnVuY3Rpb24gZ2V0RGlzdGFuY2UoaXRlbSwgb3RoZXJJdGVtLCBkaXN0YW5jZVR5cGUsIGdyYXBoRGF0YSkge1xuICBpZiAoZGlzdGFuY2VUeXBlID09PSB2b2lkIDApIHtcbiAgICBkaXN0YW5jZVR5cGUgPSBfdHlwZXMuRGlzdGFuY2VUeXBlLkV1Y2xpZGVhbkRpc3RhbmNlO1xuICB9XG5cbiAgdmFyIGRpc3RhbmNlID0gMDtcblxuICBzd2l0Y2ggKGRpc3RhbmNlVHlwZSkge1xuICAgIGNhc2UgX3R5cGVzLkRpc3RhbmNlVHlwZS5FdWNsaWRlYW5EaXN0YW5jZTpcbiAgICAgIGRpc3RhbmNlID0gbmV3IF92ZWN0b3IuZGVmYXVsdChpdGVtKS5ldWNsaWRlYW5EaXN0YW5jZShuZXcgX3ZlY3Rvci5kZWZhdWx0KG90aGVySXRlbSkpO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gZGlzdGFuY2U7XG59O1xuXG5leHBvcnRzLmdldERpc3RhbmNlID0gZ2V0RGlzdGFuY2U7XG52YXIgX2RlZmF1bHQgPSB7XG4gIGdldEFsbEtleVZhbHVlTWFwOiBnZXRBbGxLZXlWYWx1ZU1hcCxcbiAgb25lSG90OiBvbmVIb3QsXG4gIGdldERpc3RhbmNlOiBnZXREaXN0YW5jZVxufTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/utils/data-preprocessing.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/utils/node-properties.js": /*!*******************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/utils/node-properties.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPropertyWeight = exports.getAllSortProperties = exports.getAllProperties = exports.default = void 0;\n\nvar _time = __webpack_require__(/*! ../constants/time */ \"./node_modules/@antv/algorithm/lib/constants/time.js\");\n\n// 获取所有属性并排序\nvar getAllSortProperties = function getAllSortProperties(nodes, n) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n if (n === void 0) {\n n = 100;\n }\n\n var propertyKeyInfo = {};\n nodes.forEach(function (node) {\n if (!node.properties) {\n return;\n }\n\n Object.keys(node.properties).forEach(function (propertyKey) {\n // 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量或者embedding\n if (propertyKey === 'id' || !\"\".concat(node.properties[propertyKey]).match(_time.secondReg) && !\"\".concat(node.properties[propertyKey]).match(_time.dateReg) && isNaN(Number(node.properties[propertyKey]))) {\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n delete propertyKeyInfo[propertyKey];\n }\n\n return;\n }\n\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n propertyKeyInfo[propertyKey] += 1;\n } else {\n propertyKeyInfo[propertyKey] = 1;\n }\n });\n }); // 取top50的属性\n\n var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) {\n return propertyKeyInfo[b] - propertyKeyInfo[a];\n });\n return sortKeys.length < n ? sortKeys : sortKeys.slice(0, n);\n};\n\nexports.getAllSortProperties = getAllSortProperties;\n\nvar processProperty = function processProperty(properties, propertyKeys) {\n return propertyKeys.map(function (key) {\n if (properties.hasOwnProperty(key)) {\n // 可以转成数值的直接转成数值\n if (!isNaN(Number(properties[key]))) {\n return Number(properties[key]);\n } // 时间型的转成时间戳\n\n\n if (properties[key].match(_time.secondReg) || properties[key].match(_time.dateReg)) {\n // @ts-ignore\n return Number(Date.parse(new Date(properties[key]))) / 1000;\n }\n }\n\n return 0;\n });\n}; // 获取属性特征权重\n\n\nvar getPropertyWeight = function getPropertyWeight(nodes) {\n var propertyKeys = getAllSortProperties(nodes);\n var allPropertiesWeight = [];\n\n for (var i = 0; i < nodes.length; i++) {\n allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys);\n }\n\n return allPropertiesWeight;\n}; // 获取所有节点的属性集合\n\n\nexports.getPropertyWeight = getPropertyWeight;\n\nvar getAllProperties = function getAllProperties(nodes, key) {\n if (key === void 0) {\n key = 'properties';\n }\n\n var allProperties = [];\n nodes.forEach(function (node) {\n if (!node.properties) {\n return;\n }\n\n allProperties.push(node[key]);\n });\n return allProperties;\n};\n\nexports.getAllProperties = getAllProperties;\nvar _default = {\n getAllSortProperties: getAllSortProperties,\n getPropertyWeight: getPropertyWeight,\n getAllProperties: getAllProperties\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi91dGlscy9ub2RlLXByb3BlcnRpZXMuanM/MjdmNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQywrRUFBbUI7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUcsRUFBRTs7QUFFTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSCxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBOztBQUVBO0FBQ0EsRUFBRTs7O0FBR0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvdXRpbHMvbm9kZS1wcm9wZXJ0aWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldFByb3BlcnR5V2VpZ2h0ID0gZXhwb3J0cy5nZXRBbGxTb3J0UHJvcGVydGllcyA9IGV4cG9ydHMuZ2V0QWxsUHJvcGVydGllcyA9IGV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF90aW1lID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy90aW1lXCIpO1xuXG4vLyDojrflj5bmiYDmnInlsZ7mgKflubbmjpLluo9cbnZhciBnZXRBbGxTb3J0UHJvcGVydGllcyA9IGZ1bmN0aW9uIGdldEFsbFNvcnRQcm9wZXJ0aWVzKG5vZGVzLCBuKSB7XG4gIGlmIChub2RlcyA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZXMgPSBbXTtcbiAgfVxuXG4gIGlmIChuID09PSB2b2lkIDApIHtcbiAgICBuID0gMTAwO1xuICB9XG5cbiAgdmFyIHByb3BlcnR5S2V5SW5mbyA9IHt9O1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKCFub2RlLnByb3BlcnRpZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBPYmplY3Qua2V5cyhub2RlLnByb3BlcnRpZXMpLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5S2V5KSB7XG4gICAgICAvLyDnm67liY3ov4fmu6Tlj6rkv53nlZnlj6/ku6XovazmiJDmlbDlgLzlnovnmoTmiJbml6XmnJ/lnovnmoQsIHRvZG86IOe7n+S4gOi9rOaIkG9uZS1ob3TnibnlvoHlkJHph4/miJbogIVlbWJlZGRpbmdcbiAgICAgIGlmIChwcm9wZXJ0eUtleSA9PT0gJ2lkJyB8fCAhXCJcIi5jb25jYXQobm9kZS5wcm9wZXJ0aWVzW3Byb3BlcnR5S2V5XSkubWF0Y2goX3RpbWUuc2Vjb25kUmVnKSAmJiAhXCJcIi5jb25jYXQobm9kZS5wcm9wZXJ0aWVzW3Byb3BlcnR5S2V5XSkubWF0Y2goX3RpbWUuZGF0ZVJlZykgJiYgaXNOYU4oTnVtYmVyKG5vZGUucHJvcGVydGllc1twcm9wZXJ0eUtleV0pKSkge1xuICAgICAgICBpZiAocHJvcGVydHlLZXlJbmZvLmhhc093blByb3BlcnR5KHByb3BlcnR5S2V5KSkge1xuICAgICAgICAgIGRlbGV0ZSBwcm9wZXJ0eUtleUluZm9bcHJvcGVydHlLZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydHlLZXlJbmZvLmhhc093blByb3BlcnR5KHByb3BlcnR5S2V5KSkge1xuICAgICAgICBwcm9wZXJ0eUtleUluZm9bcHJvcGVydHlLZXldICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wZXJ0eUtleUluZm9bcHJvcGVydHlLZXldID0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7IC8vIOWPlnRvcDUw55qE5bGe5oCnXG5cbiAgdmFyIHNvcnRLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydHlLZXlJbmZvKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIHByb3BlcnR5S2V5SW5mb1tiXSAtIHByb3BlcnR5S2V5SW5mb1thXTtcbiAgfSk7XG4gIHJldHVybiBzb3J0S2V5cy5sZW5ndGggPCBuID8gc29ydEtleXMgOiBzb3J0S2V5cy5zbGljZSgwLCBuKTtcbn07XG5cbmV4cG9ydHMuZ2V0QWxsU29ydFByb3BlcnRpZXMgPSBnZXRBbGxTb3J0UHJvcGVydGllcztcblxudmFyIHByb2Nlc3NQcm9wZXJ0eSA9IGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eUtleXMpIHtcbiAgcmV0dXJuIHByb3BlcnR5S2V5cy5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIC8vIOWPr+S7pei9rOaIkOaVsOWAvOeahOebtOaOpei9rOaIkOaVsOWAvFxuICAgICAgaWYgKCFpc05hTihOdW1iZXIocHJvcGVydGllc1trZXldKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihwcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgfSAvLyDml7bpl7TlnovnmoTovazmiJDml7bpl7TmiLNcblxuXG4gICAgICBpZiAocHJvcGVydGllc1trZXldLm1hdGNoKF90aW1lLnNlY29uZFJlZykgfHwgcHJvcGVydGllc1trZXldLm1hdGNoKF90aW1lLmRhdGVSZWcpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIE51bWJlcihEYXRlLnBhcnNlKG5ldyBEYXRlKHByb3BlcnRpZXNba2V5XSkpKSAvIDEwMDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH0pO1xufTsgLy8g6I635Y+W5bGe5oCn54m55b6B5p2D6YeNXG5cblxudmFyIGdldFByb3BlcnR5V2VpZ2h0ID0gZnVuY3Rpb24gZ2V0UHJvcGVydHlXZWlnaHQobm9kZXMpIHtcbiAgdmFyIHByb3BlcnR5S2V5cyA9IGdldEFsbFNvcnRQcm9wZXJ0aWVzKG5vZGVzKTtcbiAgdmFyIGFsbFByb3BlcnRpZXNXZWlnaHQgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgYWxsUHJvcGVydGllc1dlaWdodFtpXSA9IHByb2Nlc3NQcm9wZXJ0eShub2Rlc1tpXS5wcm9wZXJ0aWVzLCBwcm9wZXJ0eUtleXMpO1xuICB9XG5cbiAgcmV0dXJuIGFsbFByb3BlcnRpZXNXZWlnaHQ7XG59OyAvLyDojrflj5bmiYDmnInoioLngrnnmoTlsZ7mgKfpm4blkIhcblxuXG5leHBvcnRzLmdldFByb3BlcnR5V2VpZ2h0ID0gZ2V0UHJvcGVydHlXZWlnaHQ7XG5cbnZhciBnZXRBbGxQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZ2V0QWxsUHJvcGVydGllcyhub2Rlcywga2V5KSB7XG4gIGlmIChrZXkgPT09IHZvaWQgMCkge1xuICAgIGtleSA9ICdwcm9wZXJ0aWVzJztcbiAgfVxuXG4gIHZhciBhbGxQcm9wZXJ0aWVzID0gW107XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUucHJvcGVydGllcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFsbFByb3BlcnRpZXMucHVzaChub2RlW2tleV0pO1xuICB9KTtcbiAgcmV0dXJuIGFsbFByb3BlcnRpZXM7XG59O1xuXG5leHBvcnRzLmdldEFsbFByb3BlcnRpZXMgPSBnZXRBbGxQcm9wZXJ0aWVzO1xudmFyIF9kZWZhdWx0ID0ge1xuICBnZXRBbGxTb3J0UHJvcGVydGllczogZ2V0QWxsU29ydFByb3BlcnRpZXMsXG4gIGdldFByb3BlcnR5V2VpZ2h0OiBnZXRQcm9wZXJ0eVdlaWdodCxcbiAgZ2V0QWxsUHJvcGVydGllczogZ2V0QWxsUHJvcGVydGllc1xufTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/utils/node-properties.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/utils/vector.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/utils/vector.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n/**\n * 向量运算\n */\nvar Vector =\n/** @class */\nfunction () {\n function Vector(arr) {\n this.arr = arr;\n }\n\n Vector.prototype.getArr = function () {\n return this.arr || [];\n };\n\n Vector.prototype.add = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] + otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.subtract = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = this.arr[index] - otherArr[index];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.avg = function (length) {\n var res = [];\n\n if (length !== 0) {\n for (var index in this.arr) {\n res[index] = this.arr[index] / length;\n }\n }\n\n return new Vector(res);\n };\n\n Vector.prototype.negate = function () {\n var res = [];\n\n for (var index in this.arr) {\n res[index] = -this.arr[index];\n }\n\n return new Vector(res);\n }; // 平方欧式距离\n\n\n Vector.prototype.squareEuclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return res;\n }\n }; // 欧式距离\n\n\n Vector.prototype.euclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index] - otherVector.arr[index], 2);\n }\n\n return Math.sqrt(res);\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 归一化处理\n\n\n Vector.prototype.normalize = function () {\n var res = [];\n var cloneArr = (0, _util.clone)(this.arr);\n cloneArr.sort(function (a, b) {\n return a - b;\n });\n var max = cloneArr[cloneArr.length - 1];\n var min = cloneArr[0];\n\n for (var index in this.arr) {\n res[index] = (this.arr[index] - min) / (max - min);\n }\n\n return new Vector(res);\n }; // 2范数 or 模长\n\n\n Vector.prototype.norm2 = function () {\n var _a;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return 0;\n }\n\n var res = 0;\n\n for (var index in this.arr) {\n res += Math.pow(this.arr[index], 2);\n }\n\n return Math.sqrt(res);\n }; // 两个向量的点积\n\n\n Vector.prototype.dot = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var index in this.arr) {\n res += this.arr[index] * otherVector.arr[index];\n }\n\n return res;\n } else {\n console.error('The two vectors are unequal in length.');\n }\n }; // 两个向量比较\n\n\n Vector.prototype.equal = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) !== (otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return false;\n }\n\n for (var index in this.arr) {\n if (this.arr[index] !== otherArr[index]) {\n return false;\n }\n }\n\n return true;\n };\n\n return Vector;\n}();\n\nvar _default = Vector;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi91dGlscy92ZWN0b3IuanM/MGM2MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQywwREFBWTs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvdXRpbHMvdmVjdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCJAYW50di91dGlsXCIpO1xuXG4vKipcbiAqIOWQkemHj+i/kOeul1xuICovXG52YXIgVmVjdG9yID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVmVjdG9yKGFycikge1xuICAgIHRoaXMuYXJyID0gYXJyO1xuICB9XG5cbiAgVmVjdG9yLnByb3RvdHlwZS5nZXRBcnIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyIHx8IFtdO1xuICB9O1xuXG4gIFZlY3Rvci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3RvcihvdGhlckFycik7XG4gICAgfVxuXG4gICAgaWYgKCEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHRoaXMuYXJyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgICAgcmVzW2luZGV4XSA9IHRoaXMuYXJyW2luZGV4XSArIG90aGVyQXJyW2luZGV4XTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgICB9XG4gIH07XG5cbiAgVmVjdG9yLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3Iob3RoZXJBcnIpO1xuICAgIH1cblxuICAgIGlmICghKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3Rvcih0aGlzLmFycik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJyLmxlbmd0aCA9PT0gb3RoZXJBcnIubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzID0gW107XG5cbiAgICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlc1tpbmRleF0gPSB0aGlzLmFycltpbmRleF0gLSBvdGhlckFycltpbmRleF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gICAgfVxuICB9O1xuXG4gIFZlY3Rvci5wcm90b3R5cGUuYXZnID0gZnVuY3Rpb24gKGxlbmd0aCkge1xuICAgIHZhciByZXMgPSBbXTtcblxuICAgIGlmIChsZW5ndGggIT09IDApIHtcbiAgICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlc1tpbmRleF0gPSB0aGlzLmFycltpbmRleF0gLyBsZW5ndGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTtcblxuICBWZWN0b3IucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzID0gW107XG5cbiAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgcmVzW2luZGV4XSA9IC10aGlzLmFycltpbmRleF07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTsgLy8g5bmz5pa55qyn5byP6Led56a7XG5cblxuICBWZWN0b3IucHJvdG90eXBlLnNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHx8ICEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFyci5sZW5ndGggPT09IG90aGVyQXJyLmxlbmd0aCkge1xuICAgICAgdmFyIHJlcyA9IDA7XG5cbiAgICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlcyArPSBNYXRoLnBvdyh0aGlzLmFycltpbmRleF0gLSBvdGhlclZlY3Rvci5hcnJbaW5kZXhdLCAyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gIH07IC8vIOasp+W8j+i3neemu1xuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5ldWNsaWRlYW5EaXN0YW5jZSA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB8fCAhKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSAwO1xuXG4gICAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgICByZXMgKz0gTWF0aC5wb3codGhpcy5hcnJbaW5kZXhdIC0gb3RoZXJWZWN0b3IuYXJyW2luZGV4XSwgMik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBNYXRoLnNxcnQocmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignVGhlIHR3byB2ZWN0b3JzIGFyZSB1bmVxdWFsIGluIGxlbmd0aC4nKTtcbiAgICB9XG4gIH07IC8vIOW9kuS4gOWMluWkhOeQhlxuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHZhciBjbG9uZUFyciA9ICgwLCBfdXRpbC5jbG9uZSkodGhpcy5hcnIpO1xuICAgIGNsb25lQXJyLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTtcbiAgICB2YXIgbWF4ID0gY2xvbmVBcnJbY2xvbmVBcnIubGVuZ3RoIC0gMV07XG4gICAgdmFyIG1pbiA9IGNsb25lQXJyWzBdO1xuXG4gICAgZm9yICh2YXIgaW5kZXggaW4gdGhpcy5hcnIpIHtcbiAgICAgIHJlc1tpbmRleF0gPSAodGhpcy5hcnJbaW5kZXhdIC0gbWluKSAvIChtYXggLSBtaW4pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07IC8vIDLojIPmlbAgb3Ig5qih6ZW/XG5cblxuICBWZWN0b3IucHJvdG90eXBlLm5vcm0yID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYTtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IDA7XG5cbiAgICBmb3IgKHZhciBpbmRleCBpbiB0aGlzLmFycikge1xuICAgICAgcmVzICs9IE1hdGgucG93KHRoaXMuYXJyW2luZGV4XSwgMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIE1hdGguc3FydChyZXMpO1xuICB9OyAvLyDkuKTkuKrlkJHph4/nmoTngrnnp69cblxuXG4gIFZlY3Rvci5wcm90b3R5cGUuZG90ID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHx8ICEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFyci5sZW5ndGggPT09IG90aGVyQXJyLmxlbmd0aCkge1xuICAgICAgdmFyIHJlcyA9IDA7XG5cbiAgICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlcyArPSB0aGlzLmFycltpbmRleF0gKiBvdGhlclZlY3Rvci5hcnJbaW5kZXhdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdUaGUgdHdvIHZlY3RvcnMgYXJlIHVuZXF1YWwgaW4gbGVuZ3RoLicpO1xuICAgIH1cbiAgfTsgLy8g5Lik5Liq5ZCR6YeP5q+U6L6DXG5cblxuICBWZWN0b3IucHJvdG90eXBlLmVxdWFsID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCgoX2EgPSB0aGlzLmFycikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgIT09IChvdGhlckFyciA9PT0gbnVsbCB8fCBvdGhlckFyciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3RoZXJBcnIubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAodmFyIGluZGV4IGluIHRoaXMuYXJyKSB7XG4gICAgICBpZiAodGhpcy5hcnJbaW5kZXhdICE9PSBvdGhlckFycltpbmRleF0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIHJldHVybiBWZWN0b3I7XG59KCk7XG5cbnZhciBfZGVmYXVsdCA9IFZlY3RvcjtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/utils/vector.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/workers/algorithm.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/workers/algorithm.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GADDI\", {\n enumerable: true,\n get: function get() {\n return _gaddi.default;\n }\n});\nObject.defineProperty(exports, \"breadthFirstSearch\", {\n enumerable: true,\n get: function get() {\n return _bfs.default;\n }\n});\nObject.defineProperty(exports, \"connectedComponent\", {\n enumerable: true,\n get: function get() {\n return _connectedComponent.default;\n }\n});\nObject.defineProperty(exports, \"depthFirstSearch\", {\n enumerable: true,\n get: function get() {\n return _dfs.default;\n }\n});\nObject.defineProperty(exports, \"detectCycle\", {\n enumerable: true,\n get: function get() {\n return _detectCycle.default;\n }\n});\nObject.defineProperty(exports, \"dijkstra\", {\n enumerable: true,\n get: function get() {\n return _dijkstra.default;\n }\n});\nObject.defineProperty(exports, \"findAllPath\", {\n enumerable: true,\n get: function get() {\n return _findPath.findAllPath;\n }\n});\nObject.defineProperty(exports, \"findShortestPath\", {\n enumerable: true,\n get: function get() {\n return _findPath.findShortestPath;\n }\n});\nObject.defineProperty(exports, \"floydWarshall\", {\n enumerable: true,\n get: function get() {\n return _floydWarshall.default;\n }\n});\nObject.defineProperty(exports, \"getAdjMatrix\", {\n enumerable: true,\n get: function get() {\n return _adjacentMatrix.default;\n }\n});\nObject.defineProperty(exports, \"getDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.default;\n }\n});\nObject.defineProperty(exports, \"getInDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.getInDegree;\n }\n});\nObject.defineProperty(exports, \"getNeighbors\", {\n enumerable: true,\n get: function get() {\n return _util.getNeighbors;\n }\n});\nObject.defineProperty(exports, \"getOutDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.getOutDegree;\n }\n});\nObject.defineProperty(exports, \"labelPropagation\", {\n enumerable: true,\n get: function get() {\n return _labelPropagation.default;\n }\n});\nObject.defineProperty(exports, \"louvain\", {\n enumerable: true,\n get: function get() {\n return _louvain.default;\n }\n});\nObject.defineProperty(exports, \"minimumSpanningTree\", {\n enumerable: true,\n get: function get() {\n return _mts.default;\n }\n});\nObject.defineProperty(exports, \"pageRank\", {\n enumerable: true,\n get: function get() {\n return _pageRank.default;\n }\n});\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ../adjacent-matrix */ \"./node_modules/@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _bfs = _interopRequireDefault(__webpack_require__(/*! ../bfs */ \"./node_modules/@antv/algorithm/lib/bfs.js\"));\n\nvar _connectedComponent = _interopRequireDefault(__webpack_require__(/*! ../connected-component */ \"./node_modules/@antv/algorithm/lib/connected-component.js\"));\n\nvar _degree = _interopRequireWildcard(__webpack_require__(/*! ../degree */ \"./node_modules/@antv/algorithm/lib/degree.js\"));\n\nvar _detectCycle = _interopRequireDefault(__webpack_require__(/*! ../detect-cycle */ \"./node_modules/@antv/algorithm/lib/detect-cycle.js\"));\n\nvar _dfs = _interopRequireDefault(__webpack_require__(/*! ../dfs */ \"./node_modules/@antv/algorithm/lib/dfs.js\"));\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ../dijkstra */ \"./node_modules/@antv/algorithm/lib/dijkstra.js\"));\n\nvar _findPath = __webpack_require__(/*! ../find-path */ \"./node_modules/@antv/algorithm/lib/find-path.js\");\n\nvar _floydWarshall = _interopRequireDefault(__webpack_require__(/*! ../floydWarshall */ \"./node_modules/@antv/algorithm/lib/floydWarshall.js\"));\n\nvar _labelPropagation = _interopRequireDefault(__webpack_require__(/*! ../label-propagation */ \"./node_modules/@antv/algorithm/lib/label-propagation.js\"));\n\nvar _louvain = _interopRequireDefault(__webpack_require__(/*! ../louvain */ \"./node_modules/@antv/algorithm/lib/louvain.js\"));\n\nvar _mts = _interopRequireDefault(__webpack_require__(/*! ../mts */ \"./node_modules/@antv/algorithm/lib/mts.js\"));\n\nvar _pageRank = _interopRequireDefault(__webpack_require__(/*! ../pageRank */ \"./node_modules/@antv/algorithm/lib/pageRank.js\"));\n\nvar _gaddi = _interopRequireDefault(__webpack_require__(/*! ../gaddi */ \"./node_modules/@antv/algorithm/lib/gaddi.js\"));\n\nvar _util = __webpack_require__(/*! ../util */ \"./node_modules/@antv/algorithm/lib/util.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2FsZ29yaXRobS5qcz8yNjRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLHVCQUF1QiwyQkFBMkIsMkVBQTJFLGtDQUFrQyxtQkFBbUIsR0FBRyxFQUFFLE9BQU8sa0NBQWtDLDhIQUE4SCxHQUFHLEVBQUUscUJBQXFCOztBQUV4WDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCw2Q0FBNkMsbUJBQU8sQ0FBQyxpRkFBb0I7O0FBRXpFLGtDQUFrQyxtQkFBTyxDQUFDLHlEQUFROztBQUVsRCxpREFBaUQsbUJBQU8sQ0FBQyx5RkFBd0I7O0FBRWpGLHNDQUFzQyxtQkFBTyxDQUFDLCtEQUFXOztBQUV6RCwwQ0FBMEMsbUJBQU8sQ0FBQywyRUFBaUI7O0FBRW5FLGtDQUFrQyxtQkFBTyxDQUFDLHlEQUFROztBQUVsRCx1Q0FBdUMsbUJBQU8sQ0FBQyxtRUFBYTs7QUFFNUQsZ0JBQWdCLG1CQUFPLENBQUMscUVBQWM7O0FBRXRDLDRDQUE0QyxtQkFBTyxDQUFDLDZFQUFrQjs7QUFFdEUsK0NBQStDLG1CQUFPLENBQUMscUZBQXNCOztBQUU3RSxzQ0FBc0MsbUJBQU8sQ0FBQyxpRUFBWTs7QUFFMUQsa0NBQWtDLG1CQUFPLENBQUMseURBQVE7O0FBRWxELHVDQUF1QyxtQkFBTyxDQUFDLG1FQUFhOztBQUU1RCxvQ0FBb0MsbUJBQU8sQ0FBQyw2REFBVTs7QUFFdEQsWUFBWSxtQkFBTyxDQUFDLDJEQUFTOztBQUU3QixnREFBZ0QsZ0RBQWdELHVDQUF1QyxzQ0FBc0Msb0ZBQW9GLDJEQUEyRCxFQUFFLGVBQWU7O0FBRTdVLG9EQUFvRCw2Q0FBNkMsWUFBWSxFQUFFLDhFQUE4RSxTQUFTLGdCQUFnQixFQUFFLG1EQUFtRCwrQkFBK0IsdUJBQXVCLEVBQUUsaUJBQWlCLHNGQUFzRix1QkFBdUIsMkVBQTJFLHFGQUFxRixzQ0FBc0MsMENBQTBDLEVBQUUsT0FBTyx3QkFBd0IsRUFBRSxFQUFFLEVBQUUsc0JBQXNCLGFBQWEsd0JBQXdCLEVBQUUsZUFBZTs7QUFFcHlCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvd29ya2Vycy9hbGdvcml0aG0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiR0FERElcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2dhZGRpLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiYnJlYWR0aEZpcnN0U2VhcmNoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9iZnMuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjb25uZWN0ZWRDb21wb25lbnRcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Nvbm5lY3RlZENvbXBvbmVudC5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlcHRoRmlyc3RTZWFyY2hcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Rmcy5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRldGVjdEN5Y2xlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZXRlY3RDeWNsZS5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRpamtzdHJhXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kaWprc3RyYS5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZpbmRBbGxQYXRoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9maW5kUGF0aC5maW5kQWxsUGF0aDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJmaW5kU2hvcnRlc3RQYXRoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9maW5kUGF0aC5maW5kU2hvcnRlc3RQYXRoO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZsb3lkV2Fyc2hhbGxcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRBZGpNYXRyaXhcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2FkamFjZW50TWF0cml4LmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0RGVncmVlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZWdyZWUuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRJbkRlZ3JlZVwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfZGVncmVlLmdldEluRGVncmVlO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldE5laWdoYm9yc1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfdXRpbC5nZXROZWlnaGJvcnM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0T3V0RGVncmVlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZWdyZWUuZ2V0T3V0RGVncmVlO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImxhYmVsUHJvcGFnYXRpb25cIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2xhYmVsUHJvcGFnYXRpb24uZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJsb3V2YWluXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9sb3V2YWluLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibWluaW11bVNwYW5uaW5nVHJlZVwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfbXRzLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicGFnZVJhbmtcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX3BhZ2VSYW5rLmRlZmF1bHQ7XG4gIH1cbn0pO1xuXG52YXIgX2FkamFjZW50TWF0cml4ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vYWRqYWNlbnQtbWF0cml4XCIpKTtcblxudmFyIF9iZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9iZnNcIikpO1xuXG52YXIgX2Nvbm5lY3RlZENvbXBvbmVudCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2Nvbm5lY3RlZC1jb21wb25lbnRcIikpO1xuXG52YXIgX2RlZ3JlZSA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuLi9kZWdyZWVcIikpO1xuXG52YXIgX2RldGVjdEN5Y2xlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZGV0ZWN0LWN5Y2xlXCIpKTtcblxudmFyIF9kZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9kZnNcIikpO1xuXG52YXIgX2RpamtzdHJhID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZGlqa3N0cmFcIikpO1xuXG52YXIgX2ZpbmRQYXRoID0gcmVxdWlyZShcIi4uL2ZpbmQtcGF0aFwiKTtcblxudmFyIF9mbG95ZFdhcnNoYWxsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZmxveWRXYXJzaGFsbFwiKSk7XG5cbnZhciBfbGFiZWxQcm9wYWdhdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2xhYmVsLXByb3BhZ2F0aW9uXCIpKTtcblxudmFyIF9sb3V2YWluID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbG91dmFpblwiKSk7XG5cbnZhciBfbXRzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbXRzXCIpKTtcblxudmFyIF9wYWdlUmFuayA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL3BhZ2VSYW5rXCIpKTtcblxudmFyIF9nYWRkaSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2dhZGRpXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBkZWZhdWx0OiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/workers/algorithm.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/workers/constant.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/workers/constant.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MESSAGE = exports.ALGORITHM = void 0;\nvar ALGORITHM = {\n pageRank: 'pageRank',\n breadthFirstSearch: 'breadthFirstSearch',\n connectedComponent: 'connectedComponent',\n depthFirstSearch: 'depthFirstSearch',\n detectCycle: 'detectCycle',\n detectDirectedCycle: 'detectDirectedCycle',\n detectAllCycles: 'detectAllCycles',\n detectAllDirectedCycle: 'detectAllDirectedCycle',\n detectAllUndirectedCycle: 'detectAllUndirectedCycle',\n dijkstra: 'dijkstra',\n findAllPath: 'findAllPath',\n findShortestPath: 'findShortestPath',\n floydWarshall: 'floydWarshall',\n getAdjMatrix: 'getAdjMatrix',\n getDegree: 'getDegree',\n getInDegree: 'getInDegree',\n getNeighbors: 'getNeighbors',\n getOutDegree: 'getOutDegree',\n labelPropagation: 'labelPropagation',\n louvain: 'louvain',\n GADDI: 'GADDI',\n minimumSpanningTree: 'minimumSpanningTree',\n SUCCESS: 'SUCCESS',\n FAILURE: 'FAILURE'\n};\nexports.ALGORITHM = ALGORITHM;\nvar MESSAGE = {\n SUCCESS: 'SUCCESS',\n FAILURE: 'FAILURE'\n};\nexports.MESSAGE = MESSAGE;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NvbnN0YW50LmpzPzkwMjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NvbnN0YW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLk1FU1NBR0UgPSBleHBvcnRzLkFMR09SSVRITSA9IHZvaWQgMDtcbnZhciBBTEdPUklUSE0gPSB7XG4gIHBhZ2VSYW5rOiAncGFnZVJhbmsnLFxuICBicmVhZHRoRmlyc3RTZWFyY2g6ICdicmVhZHRoRmlyc3RTZWFyY2gnLFxuICBjb25uZWN0ZWRDb21wb25lbnQ6ICdjb25uZWN0ZWRDb21wb25lbnQnLFxuICBkZXB0aEZpcnN0U2VhcmNoOiAnZGVwdGhGaXJzdFNlYXJjaCcsXG4gIGRldGVjdEN5Y2xlOiAnZGV0ZWN0Q3ljbGUnLFxuICBkZXRlY3REaXJlY3RlZEN5Y2xlOiAnZGV0ZWN0RGlyZWN0ZWRDeWNsZScsXG4gIGRldGVjdEFsbEN5Y2xlczogJ2RldGVjdEFsbEN5Y2xlcycsXG4gIGRldGVjdEFsbERpcmVjdGVkQ3ljbGU6ICdkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlJyxcbiAgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlOiAnZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlJyxcbiAgZGlqa3N0cmE6ICdkaWprc3RyYScsXG4gIGZpbmRBbGxQYXRoOiAnZmluZEFsbFBhdGgnLFxuICBmaW5kU2hvcnRlc3RQYXRoOiAnZmluZFNob3J0ZXN0UGF0aCcsXG4gIGZsb3lkV2Fyc2hhbGw6ICdmbG95ZFdhcnNoYWxsJyxcbiAgZ2V0QWRqTWF0cml4OiAnZ2V0QWRqTWF0cml4JyxcbiAgZ2V0RGVncmVlOiAnZ2V0RGVncmVlJyxcbiAgZ2V0SW5EZWdyZWU6ICdnZXRJbkRlZ3JlZScsXG4gIGdldE5laWdoYm9yczogJ2dldE5laWdoYm9ycycsXG4gIGdldE91dERlZ3JlZTogJ2dldE91dERlZ3JlZScsXG4gIGxhYmVsUHJvcGFnYXRpb246ICdsYWJlbFByb3BhZ2F0aW9uJyxcbiAgbG91dmFpbjogJ2xvdXZhaW4nLFxuICBHQURESTogJ0dBRERJJyxcbiAgbWluaW11bVNwYW5uaW5nVHJlZTogJ21pbmltdW1TcGFubmluZ1RyZWUnLFxuICBTVUNDRVNTOiAnU1VDQ0VTUycsXG4gIEZBSUxVUkU6ICdGQUlMVVJFJ1xufTtcbmV4cG9ydHMuQUxHT1JJVEhNID0gQUxHT1JJVEhNO1xudmFyIE1FU1NBR0UgPSB7XG4gIFNVQ0NFU1M6ICdTVUNDRVNTJyxcbiAgRkFJTFVSRTogJ0ZBSUxVUkUnXG59O1xuZXhwb3J0cy5NRVNTQUdFID0gTUVTU0FHRTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/workers/constant.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/workers/createWorker.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/workers/createWorker.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/algorithm/lib/workers/constant.js\");\n\nvar _index = _interopRequireDefault(__webpack_require__(/*! ./index.worker */ \"./node_modules/@antv/algorithm/lib/workers/index.worker.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 创建一个在worker中运行的算法\n * @param type 算法类型\n */\nvar createWorker = function createWorker(type) {\n return function () {\n var data = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n\n return new Promise(function (resolve, reject) {\n var worker = new _index.default();\n worker.postMessage({\n _algorithmType: type,\n data: data\n });\n\n worker.onmessage = function (event) {\n var _a = event.data,\n data = _a.data,\n _algorithmType = _a._algorithmType;\n\n if (_constant.MESSAGE.SUCCESS === _algorithmType) {\n resolve(data);\n } else {\n reject();\n }\n\n worker.terminate();\n };\n });\n };\n};\n\nvar _default = createWorker;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NyZWF0ZVdvcmtlci5qcz9jMGQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsZ0JBQWdCLG1CQUFPLENBQUMsMEVBQVk7O0FBRXBDLG9DQUFvQyxtQkFBTyxDQUFDLGtGQUFnQjs7QUFFNUQsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NyZWF0ZVdvcmtlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2NvbnN0YW50ID0gcmVxdWlyZShcIi4vY29uc3RhbnRcIik7XG5cbnZhciBfaW5kZXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2luZGV4LndvcmtlclwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICog5Yib5bu65LiA5Liq5Zyod29ya2Vy5Lit6L+Q6KGM55qE566X5rOVXG4gKiBAcGFyYW0gdHlwZSDnrpfms5XnsbvlnotcbiAqL1xudmFyIGNyZWF0ZVdvcmtlciA9IGZ1bmN0aW9uIGNyZWF0ZVdvcmtlcih0eXBlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRhdGEgPSBbXTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBkYXRhW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciB3b3JrZXIgPSBuZXcgX2luZGV4LmRlZmF1bHQoKTtcbiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgIF9hbGdvcml0aG1UeXBlOiB0eXBlLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcblxuICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB2YXIgX2EgPSBldmVudC5kYXRhLFxuICAgICAgICAgICAgZGF0YSA9IF9hLmRhdGEsXG4gICAgICAgICAgICBfYWxnb3JpdGhtVHlwZSA9IF9hLl9hbGdvcml0aG1UeXBlO1xuXG4gICAgICAgIGlmIChfY29uc3RhbnQuTUVTU0FHRS5TVUNDRVNTID09PSBfYWxnb3JpdGhtVHlwZSkge1xuICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9O1xufTtcblxudmFyIF9kZWZhdWx0ID0gY3JlYXRlV29ya2VyO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/workers/createWorker.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/workers/index.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/workers/index.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pageRankAsync = exports.minimumSpanningTreeAsync = exports.louvainAsync = exports.labelPropagationAsync = exports.getOutDegreeAsync = exports.getNeighborsAsync = exports.getInDegreeAsync = exports.getDegreeAsync = exports.getAdjMatrixAsync = exports.floydWarshallAsync = exports.findShortestPathAsync = exports.findAllPathAsync = exports.dijkstraAsync = exports.detectCycleAsync = exports.detectAllUndirectedCycleAsync = exports.detectAllDirectedCycleAsync = exports.detectAllCyclesAsync = exports.connectedComponentAsync = exports.GADDIAsync = void 0;\n\nvar _createWorker = _interopRequireDefault(__webpack_require__(/*! ./createWorker */ \"./node_modules/@antv/algorithm/lib/workers/createWorker.js\"));\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/algorithm/lib/workers/constant.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\nvar getAdjMatrixAsync = function getAdjMatrixAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getAdjMatrix).apply(void 0, [graphData, directed]);\n};\n/**\n * 图的连通分量\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\n\n\nexports.getAdjMatrixAsync = getAdjMatrixAsync;\n\nvar connectedComponentAsync = function connectedComponentAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.connectedComponent).apply(void 0, [graphData, directed]);\n};\n/**\n * 获取节点的度\n * @param graphData 图数据\n */\n\n\nexports.connectedComponentAsync = connectedComponentAsync;\n\nvar getDegreeAsync = function getDegreeAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getDegree)(graphData);\n};\n/**\n * 获取节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getDegreeAsync = getDegreeAsync;\n\nvar getInDegreeAsync = function getInDegreeAsync(graphData, nodeId) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getInDegree)(graphData, nodeId);\n};\n/**\n * 获取节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getInDegreeAsync = getInDegreeAsync;\n\nvar getOutDegreeAsync = function getOutDegreeAsync(graphData, nodeId) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getOutDegree)(graphData, nodeId);\n};\n/**\n * 检测图中的(有向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.getOutDegreeAsync = getOutDegreeAsync;\n\nvar detectCycleAsync = function detectCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectCycle)(graphData);\n};\n/**\n * 检测图中的(无向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectCycleAsync = detectCycleAsync;\n\nvar detectAllCyclesAsync = function detectAllCyclesAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllCycles)(graphData);\n};\n/**\n * 检测图中的所有(有向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectAllCyclesAsync = detectAllCyclesAsync;\n\nvar detectAllDirectedCycleAsync = function detectAllDirectedCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllDirectedCycle)(graphData);\n};\n/**\n * 检测图中的所有(无向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectAllDirectedCycleAsync = detectAllDirectedCycleAsync;\n\nvar detectAllUndirectedCycleAsync = function detectAllUndirectedCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllUndirectedCycle)(graphData);\n};\n/**\n * Dijkstra's algorithm, See {@link https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm}\n * @param graphData 图数据\n */\n\n\nexports.detectAllUndirectedCycleAsync = detectAllUndirectedCycleAsync;\n\nvar dijkstraAsync = function dijkstraAsync(graphData, source, directed, weightPropertyName) {\n return (0, _createWorker.default)(_constant.ALGORITHM.dijkstra).apply(void 0, [graphData, source, directed, weightPropertyName]);\n};\n/**\n * 查找两点之间的所有路径\n * @param graphData 图数据\n * @param start 路径起始点ID\n * @param end 路径终点ID\n * @param directed 是否为有向图\n */\n\n\nexports.dijkstraAsync = dijkstraAsync;\n\nvar findAllPathAsync = function findAllPathAsync(graphData, start, end, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.findAllPath).apply(void 0, [graphData, start, end, directed]);\n};\n/**\n * 查找两点之间的所有路径\n * @param graphData 图数据\n * @param start 路径起始点ID\n * @param end 路径终点ID\n * @param directed 是否为有向图\n * @param weightPropertyName 边权重的属名称,若数据中没有权重,则默认每条边权重为 1\n */\n\n\nexports.findAllPathAsync = findAllPathAsync;\n\nvar findShortestPathAsync = function findShortestPathAsync(graphData, start, end, directed, weightPropertyName) {\n return (0, _createWorker.default)(_constant.ALGORITHM.findShortestPath).apply(void 0, [graphData, start, end, directed, weightPropertyName]);\n};\n/**\n * Floyd–Warshall algorithm, See {@link https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm}\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\n\n\nexports.findShortestPathAsync = findShortestPathAsync;\n\nvar floydWarshallAsync = function floydWarshallAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.floydWarshall).apply(void 0, [graphData, directed]);\n};\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\n\n\nexports.floydWarshallAsync = floydWarshallAsync;\n\nvar labelPropagationAsync = function labelPropagationAsync(graphData, directed, weightPropertyName, maxIteration) {\n if (maxIteration === void 0) {\n maxIteration = 1000;\n }\n\n return (0, _createWorker.default)(_constant.ALGORITHM.labelPropagation)(graphData, directed, weightPropertyName, maxIteration);\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold\n */\n\n\nexports.labelPropagationAsync = labelPropagationAsync;\n\nvar louvainAsync = function louvainAsync(graphData, directed, weightPropertyName, threshold) {\n return (0, _createWorker.default)(_constant.ALGORITHM.louvain)(graphData, directed, weightPropertyName, threshold);\n};\n/**\n * 最小生成树,See {@link https://en.wikipedia.org/wiki/Kruskal%27s_algorithm}\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nexports.louvainAsync = louvainAsync;\n\nvar minimumSpanningTreeAsync = function minimumSpanningTreeAsync(graphData, weight, algo) {\n return (0, _createWorker.default)(_constant.ALGORITHM.minimumSpanningTree).apply(void 0, [graphData, weight, algo]);\n};\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\n\n\nexports.minimumSpanningTreeAsync = minimumSpanningTreeAsync;\n\nvar pageRankAsync = function pageRankAsync(graphData, epsilon, linkProb) {\n return (0, _createWorker.default)(_constant.ALGORITHM.pageRank).apply(void 0, [graphData, epsilon, linkProb]);\n};\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\n\n\nexports.pageRankAsync = pageRankAsync;\n\nvar getNeighborsAsync = function getNeighborsAsync(nodeId, edges, type) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getNeighbors).apply(void 0, [nodeId, edges, type]);\n};\n/**\n * GADDI 图模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nexports.getNeighborsAsync = getNeighborsAsync;\n\nvar GADDIAsync = function GADDIAsync(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n return (0, _createWorker.default)(_constant.ALGORITHM.GADDI).apply(void 0, [graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp]);\n};\n\nexports.GADDIAsync = GADDIAsync;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4LmpzP2U5OGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSwyQ0FBMkMsbUJBQU8sQ0FBQyxrRkFBZ0I7O0FBRW5FLGdCQUFnQixtQkFBTyxDQUFDLDBFQUFZOztBQUVwQyxzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnBhZ2VSYW5rQXN5bmMgPSBleHBvcnRzLm1pbmltdW1TcGFubmluZ1RyZWVBc3luYyA9IGV4cG9ydHMubG91dmFpbkFzeW5jID0gZXhwb3J0cy5sYWJlbFByb3BhZ2F0aW9uQXN5bmMgPSBleHBvcnRzLmdldE91dERlZ3JlZUFzeW5jID0gZXhwb3J0cy5nZXROZWlnaGJvcnNBc3luYyA9IGV4cG9ydHMuZ2V0SW5EZWdyZWVBc3luYyA9IGV4cG9ydHMuZ2V0RGVncmVlQXN5bmMgPSBleHBvcnRzLmdldEFkak1hdHJpeEFzeW5jID0gZXhwb3J0cy5mbG95ZFdhcnNoYWxsQXN5bmMgPSBleHBvcnRzLmZpbmRTaG9ydGVzdFBhdGhBc3luYyA9IGV4cG9ydHMuZmluZEFsbFBhdGhBc3luYyA9IGV4cG9ydHMuZGlqa3N0cmFBc3luYyA9IGV4cG9ydHMuZGV0ZWN0Q3ljbGVBc3luYyA9IGV4cG9ydHMuZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmMgPSBleHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYyA9IGV4cG9ydHMuZGV0ZWN0QWxsQ3ljbGVzQXN5bmMgPSBleHBvcnRzLmNvbm5lY3RlZENvbXBvbmVudEFzeW5jID0gZXhwb3J0cy5HQURESUFzeW5jID0gdm9pZCAwO1xuXG52YXIgX2NyZWF0ZVdvcmtlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vY3JlYXRlV29ya2VyXCIpKTtcblxudmFyIF9jb25zdGFudCA9IHJlcXVpcmUoXCIuL2NvbnN0YW50XCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKi9cbnZhciBnZXRBZGpNYXRyaXhBc3luYyA9IGZ1bmN0aW9uIGdldEFkak1hdHJpeEFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZ2V0QWRqTWF0cml4KS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDlm77nmoTov57pgJrliIbph49cbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKi9cblxuXG5leHBvcnRzLmdldEFkak1hdHJpeEFzeW5jID0gZ2V0QWRqTWF0cml4QXN5bmM7XG5cbnZhciBjb25uZWN0ZWRDb21wb25lbnRBc3luYyA9IGZ1bmN0aW9uIGNvbm5lY3RlZENvbXBvbmVudEFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uY29ubmVjdGVkQ29tcG9uZW50KS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDojrflj5boioLngrnnmoTluqZcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmNvbm5lY3RlZENvbXBvbmVudEFzeW5jID0gY29ubmVjdGVkQ29tcG9uZW50QXN5bmM7XG5cbnZhciBnZXREZWdyZWVBc3luYyA9IGZ1bmN0aW9uIGdldERlZ3JlZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5nZXREZWdyZWUpKGdyYXBoRGF0YSk7XG59O1xuLyoqXG4gKiDojrflj5boioLngrnnmoTlhaXluqZcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuUlEXG4gKi9cblxuXG5leHBvcnRzLmdldERlZ3JlZUFzeW5jID0gZ2V0RGVncmVlQXN5bmM7XG5cbnZhciBnZXRJbkRlZ3JlZUFzeW5jID0gZnVuY3Rpb24gZ2V0SW5EZWdyZWVBc3luYyhncmFwaERhdGEsIG5vZGVJZCkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5nZXRJbkRlZ3JlZSkoZ3JhcGhEYXRhLCBub2RlSWQpO1xufTtcbi8qKlxuICog6I635Y+W6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cblxuZXhwb3J0cy5nZXRJbkRlZ3JlZUFzeW5jID0gZ2V0SW5EZWdyZWVBc3luYztcblxudmFyIGdldE91dERlZ3JlZUFzeW5jID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlQXN5bmMoZ3JhcGhEYXRhLCBub2RlSWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZ2V0T3V0RGVncmVlKShncmFwaERhdGEsIG5vZGVJZCk7XG59O1xuLyoqXG4gKiDmo4DmtYvlm77kuK3nmoQo5pyJ5ZCRKSBDeWNsZVxuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqL1xuXG5cbmV4cG9ydHMuZ2V0T3V0RGVncmVlQXN5bmMgPSBnZXRPdXREZWdyZWVBc3luYztcblxudmFyIGRldGVjdEN5Y2xlQXN5bmMgPSBmdW5jdGlvbiBkZXRlY3RDeWNsZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5kZXRlY3RDeWNsZSkoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIOajgOa1i+WbvuS4reeahCjml6DlkJEpIEN5Y2xlXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RDeWNsZUFzeW5jID0gZGV0ZWN0Q3ljbGVBc3luYztcblxudmFyIGRldGVjdEFsbEN5Y2xlc0FzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzQXN5bmMoZ3JhcGhEYXRhKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmRldGVjdEFsbEN5Y2xlcykoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIOajgOa1i+WbvuS4reeahOaJgOaciSjmnInlkJEpIEN5Y2xlXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RBbGxDeWNsZXNBc3luYyA9IGRldGVjdEFsbEN5Y2xlc0FzeW5jO1xuXG52YXIgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5kZXRlY3RBbGxEaXJlY3RlZEN5Y2xlKShncmFwaERhdGEpO1xufTtcbi8qKlxuICog5qOA5rWL5Zu+5Lit55qE5omA5pyJKOaXoOWQkSkgQ3ljbGVcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYztcblxudmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmMoZ3JhcGhEYXRhKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSkoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIERpamtzdHJhJ3MgYWxnb3JpdGhtLCBTZWUge0BsaW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpamtzdHJhJTI3c19hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jO1xuXG52YXIgZGlqa3N0cmFBc3luYyA9IGZ1bmN0aW9uIGRpamtzdHJhQXN5bmMoZ3JhcGhEYXRhLCBzb3VyY2UsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZGlqa3N0cmEpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgc291cmNlLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lXSk7XG59O1xuLyoqXG4gKiDmn6Xmib7kuKTngrnkuYvpl7TnmoTmiYDmnInot6/lvoRcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnQg6Lev5b6E6LW35aeL54K5SURcbiAqIEBwYXJhbSBlbmQg6Lev5b6E57uI54K5SURcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqL1xuXG5cbmV4cG9ydHMuZGlqa3N0cmFBc3luYyA9IGRpamtzdHJhQXN5bmM7XG5cbnZhciBmaW5kQWxsUGF0aEFzeW5jID0gZnVuY3Rpb24gZmluZEFsbFBhdGhBc3luYyhncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmZpbmRBbGxQYXRoKS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDmn6Xmib7kuKTngrnkuYvpl7TnmoTmiYDmnInot6/lvoRcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnQg6Lev5b6E6LW35aeL54K5SURcbiAqIEBwYXJhbSBlbmQg6Lev5b6E57uI54K5SURcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqIEBwYXJhbSB3ZWlnaHRQcm9wZXJ0eU5hbWUg6L655p2D6YeN55qE5bGe5ZCN56ew77yM6Iul5pWw5o2u5Lit5rKh5pyJ5p2D6YeN77yM5YiZ6buY6K6k5q+P5p2h6L655p2D6YeN5Li6IDFcbiAqL1xuXG5cbmV4cG9ydHMuZmluZEFsbFBhdGhBc3luYyA9IGZpbmRBbGxQYXRoQXN5bmM7XG5cbnZhciBmaW5kU2hvcnRlc3RQYXRoQXN5bmMgPSBmdW5jdGlvbiBmaW5kU2hvcnRlc3RQYXRoQXN5bmMoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmZpbmRTaG9ydGVzdFBhdGgpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgc3RhcnQsIGVuZCwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZV0pO1xufTtcbi8qKlxuICogRmxveWTigJNXYXJzaGFsbCBhbGdvcml0aG0sIFNlZSB7QGxpbmsgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmxveWQlRTIlODAlOTNXYXJzaGFsbF9hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuS4uuacieWQkeWbvlxuICovXG5cblxuZXhwb3J0cy5maW5kU2hvcnRlc3RQYXRoQXN5bmMgPSBmaW5kU2hvcnRlc3RQYXRoQXN5bmM7XG5cbnZhciBmbG95ZFdhcnNoYWxsQXN5bmMgPSBmdW5jdGlvbiBmbG95ZFdhcnNoYWxsQXN5bmMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5mbG95ZFdhcnNoYWxsKS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDmoIfnrb7kvKDmkq3nrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIG1heEl0ZXJhdGlvbiDmnIDlpKfov63ku6PmrKHmlbBcbiAqL1xuXG5cbmV4cG9ydHMuZmxveWRXYXJzaGFsbEFzeW5jID0gZmxveWRXYXJzaGFsbEFzeW5jO1xuXG52YXIgbGFiZWxQcm9wYWdhdGlvbkFzeW5jID0gZnVuY3Rpb24gbGFiZWxQcm9wYWdhdGlvbkFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSwgbWF4SXRlcmF0aW9uKSB7XG4gIGlmIChtYXhJdGVyYXRpb24gPT09IHZvaWQgMCkge1xuICAgIG1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gIH1cblxuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5sYWJlbFByb3BhZ2F0aW9uKShncmFwaERhdGEsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUsIG1heEl0ZXJhdGlvbik7XG59O1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgbG91dmFpbiDnrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIHRocmVzaG9sZFxuICovXG5cblxuZXhwb3J0cy5sYWJlbFByb3BhZ2F0aW9uQXN5bmMgPSBsYWJlbFByb3BhZ2F0aW9uQXN5bmM7XG5cbnZhciBsb3V2YWluQXN5bmMgPSBmdW5jdGlvbiBsb3V2YWluQXN5bmMoZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0ubG91dmFpbikoZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQpO1xufTtcbi8qKlxuICog5pyA5bCP55Sf5oiQ5qCR77yMU2VlIHtAbGluayBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LcnVza2FsJTI3c19hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcGFyYW0gYWxnbyAncHJpbScgfCAna3J1c2thbCcg566X5rOV57G75Z6LXG4gKiBAcmV0dXJuIEVkZ2VDb25maWdbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbmV4cG9ydHMubG91dmFpbkFzeW5jID0gbG91dmFpbkFzeW5jO1xuXG52YXIgbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jID0gZnVuY3Rpb24gbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jKGdyYXBoRGF0YSwgd2VpZ2h0LCBhbGdvKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLm1pbmltdW1TcGFubmluZ1RyZWUpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgd2VpZ2h0LCBhbGdvXSk7XG59O1xuLyoqXG4gKiBQYWdlUmFuayBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYWdlUmFua1xuICogcmVmZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnZha2EvbmdyYXBoLnBhZ2VyYW5rXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBlcHNpbG9uIOWIpOaWreaYr+WQpuaUtuaVm+eahOeyvuW6puWAvO+8jOm7mOiupCAwLjAwMDAwMVxuICogQHBhcmFtIGxpbmtQcm9iIOmYu+WwvOezu+aVsO+8iGR1bXBpbmcgZmFjdG9y77yJ77yM5oyH5Lu75oSP5pe25Yi777yM55So5oi36K6/6Zeu5Yiw5p+Q6IqC54K55ZCO57un57ut6K6/6Zeu6K+l6IqC54K56ZO+5o6l55qE5LiL5LiA5Liq6IqC54K555qE5qaC546H77yM57uP6aqM5YC8IDAuODVcbiAqL1xuXG5cbmV4cG9ydHMubWluaW11bVNwYW5uaW5nVHJlZUFzeW5jID0gbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jO1xuXG52YXIgcGFnZVJhbmtBc3luYyA9IGZ1bmN0aW9uIHBhZ2VSYW5rQXN5bmMoZ3JhcGhEYXRhLCBlcHNpbG9uLCBsaW5rUHJvYikge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5wYWdlUmFuaykuYXBwbHkodm9pZCAwLCBbZ3JhcGhEYXRhLCBlcHNpbG9uLCBsaW5rUHJvYl0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5omA5pyJ6YK75bGFXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICogQHBhcmFtIHR5cGUg6YK75bGF57G75Z6LXG4gKi9cblxuXG5leHBvcnRzLnBhZ2VSYW5rQXN5bmMgPSBwYWdlUmFua0FzeW5jO1xuXG52YXIgZ2V0TmVpZ2hib3JzQXN5bmMgPSBmdW5jdGlvbiBnZXROZWlnaGJvcnNBc3luYyhub2RlSWQsIGVkZ2VzLCB0eXBlKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmdldE5laWdoYm9ycykuYXBwbHkodm9pZCAwLCBbbm9kZUlkLCBlZGdlcywgdHlwZV0pO1xufTtcbi8qKlxuICogR0FEREkg5Zu+5qih5byP5Yy56YWNXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIHBhdHRlcm4g5pCc57Si5Zu+77yI6ZyA6KaB5Zyo5Y6f5Zu+5LiK5pCc57Si55qE5qih5byP77yJ5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm6K6h566X5pyJ5ZCR5Zu+77yM6buY6K6kIGZhbHNlXG4gKiBAcGFyYW0gayDlj4LmlbAga++8jOihqOekuiBrLei/kemCu1xuICogQHBhcmFtIGxlbmd0aCDlj4LmlbAgbGVuZ3RoXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcCDoioLngrnmlbDmja7kuK3ku6PooajoioLngrnmoIfnrb7vvIjliIbnsbvkv6Hmga/vvInnmoTlsZ7mgKflkI3jgILpu5jorqTkuLogY2x1c3RlclxuICogQHBhcmFtIGVkZ2VMYWJlbFByb3Ag6L655pWw5o2u5Lit5Luj6KGo6L655qCH562+77yI5YiG57G75L+h5oGv77yJ55qE5bGe5oCn5ZCN44CC6buY6K6k5Li6IGNsdXN0ZXJcbiAqL1xuXG5cbmV4cG9ydHMuZ2V0TmVpZ2hib3JzQXN5bmMgPSBnZXROZWlnaGJvcnNBc3luYztcblxudmFyIEdBRERJQXN5bmMgPSBmdW5jdGlvbiBHQURESUFzeW5jKGdyYXBoRGF0YSwgcGF0dGVybiwgZGlyZWN0ZWQsIGssIGxlbmd0aCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAobm9kZUxhYmVsUHJvcCA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZUxhYmVsUHJvcCA9ICdjbHVzdGVyJztcbiAgfVxuXG4gIGlmIChlZGdlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBlZGdlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uR0FEREkpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgcGF0dGVybiwgZGlyZWN0ZWQsIGssIGxlbmd0aCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcF0pO1xufTtcblxuZXhwb3J0cy5HQURESUFzeW5jID0gR0FERElBc3luYzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/workers/index.js\n"); /***/ }), /***/ "./node_modules/@antv/algorithm/lib/workers/index.worker.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/algorithm/lib/workers/index.worker.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar algorithm = _interopRequireWildcard(__webpack_require__(/*! ./algorithm */ \"./node_modules/@antv/algorithm/lib/workers/algorithm.js\"));\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/algorithm/lib/workers/constant.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ctx = typeof self !== 'undefined' ? self : {};\n\nctx.onmessage = function (event) {\n var _a = event.data,\n _algorithmType = _a._algorithmType,\n data = _a.data; // 如果发送内容没有私有类型。说明不是自己发的。不管\n // fix: https://github.com/antvis/algorithm/issues/25\n\n if (!_algorithmType) {\n return;\n }\n\n if (typeof algorithm[_algorithmType] === 'function') {\n var result = algorithm[_algorithmType].apply(algorithm, data);\n\n ctx.postMessage({\n _algorithmType: _constant.MESSAGE.SUCCESS,\n data: result\n });\n return;\n }\n\n ctx.postMessage({\n _algorithmType: _constant.MESSAGE.FAILURE\n });\n}; // https://stackoverflow.com/questions/50210416/webpack-worker-loader-fails-to-compile-typescript-worker\n\n\nvar _default = null;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4Lndvcmtlci5qcz85ZmJhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLHVCQUF1QiwyQkFBMkIsMkVBQTJFLGtDQUFrQyxtQkFBbUIsR0FBRyxFQUFFLE9BQU8sa0NBQWtDLDhIQUE4SCxHQUFHLEVBQUUscUJBQXFCOztBQUV4WDtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHdDQUF3QyxtQkFBTyxDQUFDLDRFQUFhOztBQUU3RCxnQkFBZ0IsbUJBQU8sQ0FBQywwRUFBWTs7QUFFcEMsZ0RBQWdELGdEQUFnRCx1Q0FBdUMsc0NBQXNDLG9GQUFvRiwyREFBMkQsRUFBRSxlQUFlOztBQUU3VSxvREFBb0QsNkNBQTZDLFlBQVksRUFBRSw4RUFBOEUsU0FBUyxnQkFBZ0IsRUFBRSxtREFBbUQsK0JBQStCLHVCQUF1QixFQUFFLGlCQUFpQixzRkFBc0YsdUJBQXVCLDJFQUEyRSxxRkFBcUYsc0NBQXNDLDBDQUEwQyxFQUFFLE9BQU8sd0JBQXdCLEVBQUUsRUFBRSxFQUFFLHNCQUFzQixhQUFhLHdCQUF3QixFQUFFLGVBQWU7O0FBRXB5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSCxFQUFFOzs7QUFHRjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2FsZ29yaXRobS9saWIvd29ya2Vycy9pbmRleC53b3JrZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgYWxnb3JpdGhtID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vYWxnb3JpdGhtXCIpKTtcblxudmFyIF9jb25zdGFudCA9IHJlcXVpcmUoXCIuL2NvbnN0YW50XCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgZGVmYXVsdDogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09iai5kZWZhdWx0ID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBjdHggPSB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge307XG5cbmN0eC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgdmFyIF9hID0gZXZlbnQuZGF0YSxcbiAgICAgIF9hbGdvcml0aG1UeXBlID0gX2EuX2FsZ29yaXRobVR5cGUsXG4gICAgICBkYXRhID0gX2EuZGF0YTsgLy8g5aaC5p6c5Y+R6YCB5YaF5a655rKh5pyJ56eB5pyJ57G75Z6L44CC6K+05piO5LiN5piv6Ieq5bex5Y+R55qE44CC5LiN566hXG4gIC8vIGZpeDogaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9hbGdvcml0aG0vaXNzdWVzLzI1XG5cbiAgaWYgKCFfYWxnb3JpdGhtVHlwZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYWxnb3JpdGhtW19hbGdvcml0aG1UeXBlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXN1bHQgPSBhbGdvcml0aG1bX2FsZ29yaXRobVR5cGVdLmFwcGx5KGFsZ29yaXRobSwgZGF0YSk7XG5cbiAgICBjdHgucG9zdE1lc3NhZ2Uoe1xuICAgICAgX2FsZ29yaXRobVR5cGU6IF9jb25zdGFudC5NRVNTQUdFLlNVQ0NFU1MsXG4gICAgICBkYXRhOiByZXN1bHRcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjdHgucG9zdE1lc3NhZ2Uoe1xuICAgIF9hbGdvcml0aG1UeXBlOiBfY29uc3RhbnQuTUVTU0FHRS5GQUlMVVJFXG4gIH0pO1xufTsgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTAyMTA0MTYvd2VicGFjay13b3JrZXItbG9hZGVyLWZhaWxzLXRvLWNvbXBpbGUtdHlwZXNjcmlwdC13b3JrZXJcblxuXG52YXIgX2RlZmF1bHQgPSBudWxsO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/algorithm/lib/workers/index.worker.js\n"); /***/ }), /***/ "./node_modules/@antv/dom-util/esm/add-event-listener.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/dom-util/esm/add-event-listener.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return addEventListener; });\nfunction addEventListener(target, eventType, callback) {\n if (target) {\n if (typeof target.addEventListener === 'function') {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function () {\n target.removeEventListener(eventType, callback, false);\n },\n };\n // @ts-ignore\n }\n if (typeof target.attachEvent === 'function') {\n // @ts-ignore\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function () {\n // @ts-ignore\n target.detachEvent('on' + eventType, callback);\n },\n };\n }\n }\n}\n//# sourceMappingURL=add-event-listener.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2FkZC1ldmVudC1saXN0ZW5lci5qcz9mNTg3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2RvbS11dGlsL2VzbS9hZGQtZXZlbnQtbGlzdGVuZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKHRhcmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaykge1xuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0LmF0dGFjaEV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0YXJnZXQuYXR0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZGV0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWRkLWV2ZW50LWxpc3RlbmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/add-event-listener.js\n"); /***/ }), /***/ "./node_modules/@antv/dom-util/esm/create-dom.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/dom-util/esm/create-dom.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return createDom; });\n/**\n * 创建DOM 节点\n * @param {String} str Dom 字符串\n * @return {HTMLElement} DOM 节点\n */\nvar TABLE;\nvar TABLE_TR;\nvar FRAGMENT_REG;\nvar CONTAINERS;\nfunction initConstants() {\n TABLE = document.createElement('table');\n TABLE_TR = document.createElement('tr');\n FRAGMENT_REG = /^\\s*<(\\w+|!)[^>]*>/;\n CONTAINERS = {\n tr: document.createElement('tbody'),\n tbody: TABLE,\n thead: TABLE,\n tfoot: TABLE,\n td: TABLE_TR,\n th: TABLE_TR,\n '*': document.createElement('div'),\n };\n}\nfunction createDom(str) {\n if (!TABLE) {\n initConstants();\n }\n var name = FRAGMENT_REG.test(str) && RegExp.$1;\n if (!name || !(name in CONTAINERS)) {\n name = '*';\n }\n var container = CONTAINERS[name];\n str = typeof str === 'string' ? str.replace(/(^\\s*)|(\\s*$)/g, '') : str;\n container.innerHTML = '' + str;\n var dom = container.childNodes[0];\n if (dom && container.contains(dom)) {\n container.removeChild(dom);\n }\n return dom;\n}\n//# sourceMappingURL=create-dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2NyZWF0ZS1kb20uanM/M2E2MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixZQUFZLFlBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2NyZWF0ZS1kb20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOWIm+W7ukRPTSDoioLngrlcbiAqIEBwYXJhbSAge1N0cmluZ30gc3RyIERvbSDlrZfnrKbkuLJcbiAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSAgRE9NIOiKgueCuVxuICovXG52YXIgVEFCTEU7XG52YXIgVEFCTEVfVFI7XG52YXIgRlJBR01FTlRfUkVHO1xudmFyIENPTlRBSU5FUlM7XG5mdW5jdGlvbiBpbml0Q29uc3RhbnRzKCkge1xuICAgIFRBQkxFID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcbiAgICBUQUJMRV9UUiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgRlJBR01FTlRfUkVHID0gL15cXHMqPChcXHcrfCEpW14+XSo+LztcbiAgICBDT05UQUlORVJTID0ge1xuICAgICAgICB0cjogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJvZHknKSxcbiAgICAgICAgdGJvZHk6IFRBQkxFLFxuICAgICAgICB0aGVhZDogVEFCTEUsXG4gICAgICAgIHRmb290OiBUQUJMRSxcbiAgICAgICAgdGQ6IFRBQkxFX1RSLFxuICAgICAgICB0aDogVEFCTEVfVFIsXG4gICAgICAgICcqJzogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksXG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZURvbShzdHIpIHtcbiAgICBpZiAoIVRBQkxFKSB7XG4gICAgICAgIGluaXRDb25zdGFudHMoKTtcbiAgICB9XG4gICAgdmFyIG5hbWUgPSBGUkFHTUVOVF9SRUcudGVzdChzdHIpICYmIFJlZ0V4cC4kMTtcbiAgICBpZiAoIW5hbWUgfHwgIShuYW1lIGluIENPTlRBSU5FUlMpKSB7XG4gICAgICAgIG5hbWUgPSAnKic7XG4gICAgfVxuICAgIHZhciBjb250YWluZXIgPSBDT05UQUlORVJTW25hbWVdO1xuICAgIHN0ciA9IHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnID8gc3RyLnJlcGxhY2UoLyheXFxzKil8KFxccyokKS9nLCAnJykgOiBzdHI7XG4gICAgY29udGFpbmVyLmlubmVySFRNTCA9ICcnICsgc3RyO1xuICAgIHZhciBkb20gPSBjb250YWluZXIuY2hpbGROb2Rlc1swXTtcbiAgICBpZiAoZG9tICYmIGNvbnRhaW5lci5jb250YWlucyhkb20pKSB7XG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChkb20pO1xuICAgIH1cbiAgICByZXR1cm4gZG9tO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlLWRvbS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/create-dom.js\n"); /***/ }), /***/ "./node_modules/@antv/dom-util/esm/get-height.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/dom-util/esm/get-height.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/@antv/dom-util/esm/get-style.js\");\n\nfunction getHeight(el, defaultValue) {\n var height = Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'height', defaultValue);\n if (height === 'auto') {\n height = el.offsetHeight;\n }\n return parseFloat(height);\n}\n//# sourceMappingURL=get-height.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC1oZWlnaHQuanM/YjJlNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDcEI7QUFDZixpQkFBaUIsMERBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2RvbS11dGlsL2VzbS9nZXQtaGVpZ2h0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldFN0eWxlIGZyb20gJy4vZ2V0LXN0eWxlJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhlaWdodChlbCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIGhlaWdodCA9IGdldFN0eWxlKGVsLCAnaGVpZ2h0JywgZGVmYXVsdFZhbHVlKTtcbiAgICBpZiAoaGVpZ2h0ID09PSAnYXV0bycpIHtcbiAgICAgICAgaGVpZ2h0ID0gZWwub2Zmc2V0SGVpZ2h0O1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VGbG9hdChoZWlnaHQpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LWhlaWdodC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-height.js\n"); /***/ }), /***/ "./node_modules/@antv/dom-util/esm/get-outer-height.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/dom-util/esm/get-outer-height.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getOuterHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/@antv/dom-util/esm/get-style.js\");\n/* harmony import */ var _get_height__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-height */ \"./node_modules/@antv/dom-util/esm/get-height.js\");\n\n\nfunction getOuterHeight(el, defaultValue) {\n var height = Object(_get_height__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(el, defaultValue);\n var bTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderTopWidth')) || 0;\n var pTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingTop')) || 0;\n var pBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingBottom')) || 0;\n var bBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderBottomWidth')) || 0;\n var mTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginTop')) || 0;\n var mBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginBottom')) || 0;\n return height + bTop + bBottom + pTop + pBottom + mTop + mBottom;\n}\n//# sourceMappingURL=get-outer-height.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC1vdXRlci1oZWlnaHQuanM/NGIwMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNFO0FBQ3RCO0FBQ2YsaUJBQWlCLDJEQUFTO0FBQzFCLDBCQUEwQiwwREFBUTtBQUNsQywwQkFBMEIsMERBQVE7QUFDbEMsNkJBQTZCLDBEQUFRO0FBQ3JDLDZCQUE2QiwwREFBUTtBQUNyQywwQkFBMEIsMERBQVE7QUFDbEMsNkJBQTZCLDBEQUFRO0FBQ3JDO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9kb20tdXRpbC9lc20vZ2V0LW91dGVyLWhlaWdodC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRTdHlsZSBmcm9tICcuL2dldC1zdHlsZSc7XG5pbXBvcnQgZ2V0SGVpZ2h0IGZyb20gJy4vZ2V0LWhlaWdodCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPdXRlckhlaWdodChlbCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIGhlaWdodCA9IGdldEhlaWdodChlbCwgZGVmYXVsdFZhbHVlKTtcbiAgICB2YXIgYlRvcCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdib3JkZXJUb3BXaWR0aCcpKSB8fCAwO1xuICAgIHZhciBwVG9wID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ3BhZGRpbmdUb3AnKSkgfHwgMDtcbiAgICB2YXIgcEJvdHRvbSA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdwYWRkaW5nQm90dG9tJykpIHx8IDA7XG4gICAgdmFyIGJCb3R0b20gPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAnYm9yZGVyQm90dG9tV2lkdGgnKSkgfHwgMDtcbiAgICB2YXIgbVRvcCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdtYXJnaW5Ub3AnKSkgfHwgMDtcbiAgICB2YXIgbUJvdHRvbSA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdtYXJnaW5Cb3R0b20nKSkgfHwgMDtcbiAgICByZXR1cm4gaGVpZ2h0ICsgYlRvcCArIGJCb3R0b20gKyBwVG9wICsgcEJvdHRvbSArIG1Ub3AgKyBtQm90dG9tO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LW91dGVyLWhlaWdodC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-outer-height.js\n"); /***/ }), /***/ "./node_modules/@antv/dom-util/esm/get-outer-width.js": /*!************************************************************!*\ !*** ./node_modules/@antv/dom-util/esm/get-outer-width.js ***! \************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getOuterWidth; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/@antv/dom-util/esm/get-style.js\");\n/* harmony import */ var _get_width__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-width */ \"./node_modules/@antv/dom-util/esm/get-width.js\");\n\n\nfunction getOuterWidth(el, defaultValue) {\n var width = Object(_get_width__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(el, defaultValue);\n var bLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderLeftWidth')) || 0;\n var pLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingLeft')) || 0;\n var pRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingRight')) || 0;\n var bRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderRightWidth')) || 0;\n var mRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginRight')) || 0;\n var mLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginLeft')) || 0;\n return width + bLeft + bRight + pLeft + pRight + mLeft + mRight;\n}\n//# sourceMappingURL=get-outer-width.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC1vdXRlci13aWR0aC5qcz8zZDE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ0E7QUFDcEI7QUFDZixnQkFBZ0IsMERBQVE7QUFDeEIsMkJBQTJCLDBEQUFRO0FBQ25DLDJCQUEyQiwwREFBUTtBQUNuQyw0QkFBNEIsMERBQVE7QUFDcEMsNEJBQTRCLDBEQUFRO0FBQ3BDLDRCQUE0QiwwREFBUTtBQUNwQywyQkFBMkIsMERBQVE7QUFDbkM7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2RvbS11dGlsL2VzbS9nZXQtb3V0ZXItd2lkdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0U3R5bGUgZnJvbSAnLi9nZXQtc3R5bGUnO1xuaW1wb3J0IGdldFdpZHRoIGZyb20gJy4vZ2V0LXdpZHRoJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE91dGVyV2lkdGgoZWwsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciB3aWR0aCA9IGdldFdpZHRoKGVsLCBkZWZhdWx0VmFsdWUpO1xuICAgIHZhciBiTGVmdCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdib3JkZXJMZWZ0V2lkdGgnKSkgfHwgMDtcbiAgICB2YXIgcExlZnQgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAncGFkZGluZ0xlZnQnKSkgfHwgMDtcbiAgICB2YXIgcFJpZ2h0ID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ3BhZGRpbmdSaWdodCcpKSB8fCAwO1xuICAgIHZhciBiUmlnaHQgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAnYm9yZGVyUmlnaHRXaWR0aCcpKSB8fCAwO1xuICAgIHZhciBtUmlnaHQgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAnbWFyZ2luUmlnaHQnKSkgfHwgMDtcbiAgICB2YXIgbUxlZnQgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAnbWFyZ2luTGVmdCcpKSB8fCAwO1xuICAgIHJldHVybiB3aWR0aCArIGJMZWZ0ICsgYlJpZ2h0ICsgcExlZnQgKyBwUmlnaHQgKyBtTGVmdCArIG1SaWdodDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC1vdXRlci13aWR0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-outer-width.js\n"); /***/ }), /***/ "./node_modules/@antv/dom-util/esm/get-ratio.js": /*!******************************************************!*\ !*** ./node_modules/@antv/dom-util/esm/get-ratio.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getRatio; });\nfunction getRatio() {\n return window.devicePixelRatio ? window.devicePixelRatio : 2;\n}\n//# sourceMappingURL=get-ratio.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC1yYXRpby5qcz9mYmE4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9kb20tdXRpbC9lc20vZ2V0LXJhdGlvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0UmF0aW8oKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvID8gd2luZG93LmRldmljZVBpeGVsUmF0aW8gOiAyO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LXJhdGlvLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-ratio.js\n"); /***/ }), /***/ "./node_modules/@antv/dom-util/esm/get-style.js": /*!******************************************************!*\ !*** ./node_modules/@antv/dom-util/esm/get-style.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getStyle; });\n/**\n * 获取样式\n * @param {Object} dom DOM节点\n * @param {String} name 样式名\n * @param {Any} defaultValue 默认值\n * @return {String} 属性值\n */\nfunction getStyle(dom, name, defaultValue) {\n var v;\n try {\n v = window.getComputedStyle ?\n window.getComputedStyle(dom, null)[name] :\n dom.style[name]; // 一般不会走到这个逻辑,dom.style 获取的是标签 style 属性,也不准确\n }\n catch (e) {\n // do nothing\n }\n finally {\n v = v === undefined ? defaultValue : v;\n }\n return v;\n}\n//# sourceMappingURL=get-style.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC1zdHlsZS5qcz80MDJiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLElBQUk7QUFDaEIsWUFBWSxPQUFPO0FBQ25CO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9kb20tdXRpbC9lc20vZ2V0LXN0eWxlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDojrflj5bmoLflvI9cbiAqIEBwYXJhbSAge09iamVjdH0gZG9tIERPTeiKgueCuVxuICogQHBhcmFtICB7U3RyaW5nfSBuYW1lIOagt+W8j+WQjVxuICogQHBhcmFtICB7QW55fSBkZWZhdWx0VmFsdWUg6buY6K6k5YC8XG4gKiBAcmV0dXJuIHtTdHJpbmd9IOWxnuaAp+WAvFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTdHlsZShkb20sIG5hbWUsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciB2O1xuICAgIHRyeSB7XG4gICAgICAgIHYgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSA/XG4gICAgICAgICAgICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb20sIG51bGwpW25hbWVdIDpcbiAgICAgICAgICAgIGRvbS5zdHlsZVtuYW1lXTsgLy8g5LiA6Iis5LiN5Lya6LWw5Yiw6L+Z5Liq6YC76L6R77yMZG9tLnN0eWxlIOiOt+WPlueahOaYr+agh+etviBzdHlsZSDlsZ7mgKfvvIzkuZ/kuI3lh4bnoa5cbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdiA9IHYgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHY7XG4gICAgfVxuICAgIHJldHVybiB2O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LXN0eWxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-style.js\n"); /***/ }), /***/ "./node_modules/@antv/dom-util/esm/get-width.js": /*!******************************************************!*\ !*** ./node_modules/@antv/dom-util/esm/get-width.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/@antv/dom-util/esm/get-style.js\");\n\nfunction getHeight(el, defaultValue) {\n var width = Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'width', defaultValue);\n if (width === 'auto') {\n width = el.offsetWidth;\n }\n return parseFloat(width);\n}\n//# sourceMappingURL=get-width.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC13aWR0aC5qcz84MGMzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNwQjtBQUNmLGdCQUFnQiwwREFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2dldC13aWR0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRTdHlsZSBmcm9tICcuL2dldC1zdHlsZSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIZWlnaHQoZWwsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciB3aWR0aCA9IGdldFN0eWxlKGVsLCAnd2lkdGgnLCBkZWZhdWx0VmFsdWUpO1xuICAgIGlmICh3aWR0aCA9PT0gJ2F1dG8nKSB7XG4gICAgICAgIHdpZHRoID0gZWwub2Zmc2V0V2lkdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZUZsb2F0KHdpZHRoKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC13aWR0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/get-width.js\n"); /***/ }), /***/ "./node_modules/@antv/dom-util/esm/index.js": /*!**************************************************!*\ !*** ./node_modules/@antv/dom-util/esm/index.js ***! \**************************************************/ /*! exports provided: addEventListener, createDom, getHeight, getOuterHeight, getOuterWidth, getRatio, getStyle, getWidth, modifyCSS */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _add_event_listener__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-event-listener */ \"./node_modules/@antv/dom-util/esm/add-event-listener.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addEventListener\", function() { return _add_event_listener__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _create_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./create-dom */ \"./node_modules/@antv/dom-util/esm/create-dom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createDom\", function() { return _create_dom__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _get_height__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./get-height */ \"./node_modules/@antv/dom-util/esm/get-height.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getHeight\", function() { return _get_height__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _get_outer_height__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./get-outer-height */ \"./node_modules/@antv/dom-util/esm/get-outer-height.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOuterHeight\", function() { return _get_outer_height__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _get_outer_width__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./get-outer-width */ \"./node_modules/@antv/dom-util/esm/get-outer-width.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOuterWidth\", function() { return _get_outer_width__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _get_ratio__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./get-ratio */ \"./node_modules/@antv/dom-util/esm/get-ratio.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getRatio\", function() { return _get_ratio__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./get-style */ \"./node_modules/@antv/dom-util/esm/get-style.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStyle\", function() { return _get_style__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _get_width__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./get-width */ \"./node_modules/@antv/dom-util/esm/get-width.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getWidth\", function() { return _get_width__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _modify_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modify-css */ \"./node_modules/@antv/dom-util/esm/modify-css.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"modifyCSS\", function() { return _modify_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n// dom\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2luZGV4LmpzPzdjOGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNtRTtBQUNmO0FBQ0E7QUFDVztBQUNGO0FBQ1g7QUFDQTtBQUNBO0FBQ0U7QUFDcEQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZG9tXG5leHBvcnQgeyBkZWZhdWx0IGFzIGFkZEV2ZW50TGlzdGVuZXIgfSBmcm9tICcuL2FkZC1ldmVudC1saXN0ZW5lcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZURvbSB9IGZyb20gJy4vY3JlYXRlLWRvbSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldEhlaWdodCB9IGZyb20gJy4vZ2V0LWhlaWdodCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldE91dGVySGVpZ2h0IH0gZnJvbSAnLi9nZXQtb3V0ZXItaGVpZ2h0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0T3V0ZXJXaWR0aCB9IGZyb20gJy4vZ2V0LW91dGVyLXdpZHRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0UmF0aW8gfSBmcm9tICcuL2dldC1yYXRpbyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFN0eWxlIH0gZnJvbSAnLi9nZXQtc3R5bGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRXaWR0aCB9IGZyb20gJy4vZ2V0LXdpZHRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbW9kaWZ5Q1NTIH0gZnJvbSAnLi9tb2RpZnktY3NzJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/index.js\n"); /***/ }), /***/ "./node_modules/@antv/dom-util/esm/modify-css.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/dom-util/esm/modify-css.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return modifyCSS; });\nfunction modifyCSS(dom, css) {\n if (dom) {\n for (var key in css) {\n if (css.hasOwnProperty(key)) {\n dom.style[key] = css[key];\n }\n }\n }\n return dom;\n}\n//# sourceMappingURL=modify-css.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZG9tLXV0aWwvZXNtL21vZGlmeS1jc3MuanM/ODExOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9kb20tdXRpbC9lc20vbW9kaWZ5LWNzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1vZGlmeUNTUyhkb20sIGNzcykge1xuICAgIGlmIChkb20pIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGNzcykge1xuICAgICAgICAgICAgaWYgKGNzcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgZG9tLnN0eWxlW2tleV0gPSBjc3Nba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZG9tO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kaWZ5LWNzcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/dom-util/esm/modify-css.js\n"); /***/ }), /***/ "./node_modules/@antv/event-emitter/esm/index.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/event-emitter/esm/index.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar WILDCARD = '*';\n/* event-emitter */\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n this._events = {};\n }\n /**\n * 监听一个事件\n * @param evt\n * @param callback\n * @param once\n */\n EventEmitter.prototype.on = function (evt, callback, once) {\n if (!this._events[evt]) {\n this._events[evt] = [];\n }\n this._events[evt].push({\n callback: callback,\n once: !!once,\n });\n return this;\n };\n /**\n * 监听一个事件一次\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.once = function (evt, callback) {\n this.on(evt, callback, true);\n return this;\n };\n /**\n * 触发一个事件\n * @param evt\n * @param args\n */\n EventEmitter.prototype.emit = function (evt) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var events = this._events[evt] || [];\n var wildcardEvents = this._events[WILDCARD] || [];\n // 实际的处理 emit 方法\n var doEmit = function (es) {\n var length = es.length;\n for (var i = 0; i < length; i++) {\n if (!es[i]) {\n continue;\n }\n var _a = es[i], callback = _a.callback, once = _a.once;\n if (once) {\n es.splice(i, 1);\n if (es.length === 0) {\n delete _this._events[evt];\n }\n length--;\n i--;\n }\n callback.apply(_this, args);\n }\n };\n doEmit(events);\n doEmit(wildcardEvents);\n };\n /**\n * 取消监听一个事件,或者一个channel\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.off = function (evt, callback) {\n if (!evt) {\n // evt 为空全部清除\n this._events = {};\n }\n else {\n if (!callback) {\n // evt 存在,callback 为空,清除事件所有方法\n delete this._events[evt];\n }\n else {\n // evt 存在,callback 存在,清除匹配的\n var events = this._events[evt] || [];\n var length_1 = events.length;\n for (var i = 0; i < length_1; i++) {\n if (events[i].callback === callback) {\n events.splice(i, 1);\n length_1--;\n i--;\n }\n }\n if (events.length === 0) {\n delete this._events[evt];\n }\n }\n }\n return this;\n };\n /* 当前所有的事件 */\n EventEmitter.prototype.getEvents = function () {\n return this._events;\n };\n return EventEmitter;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventEmitter);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZXZlbnQtZW1pdHRlci9lc20vaW5kZXguanM/N2ZhMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixZQUFZO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGNBQWM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLDJFQUFZLEVBQUM7QUFDNUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZXZlbnQtZW1pdHRlci9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgV0lMRENBUkQgPSAnKic7XG4vKiBldmVudC1lbWl0dGVyICovXG52YXIgRXZlbnRFbWl0dGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOebkeWQrOS4gOS4quS6i+S7tlxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKiBAcGFyYW0gb25jZVxuICAgICAqL1xuICAgIEV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXZ0LCBjYWxsYmFjaywgb25jZSkge1xuICAgICAgICBpZiAoIXRoaXMuX2V2ZW50c1tldnRdKSB7XG4gICAgICAgICAgICB0aGlzLl9ldmVudHNbZXZ0XSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2V2ZW50c1tldnRdLnB1c2goe1xuICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAgICAgb25jZTogISFvbmNlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnm5HlkKzkuIDkuKrkuovku7bkuIDmrKFcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAgICovXG4gICAgRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gKGV2dCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5vbihldnQsIGNhbGxiYWNrLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDop6blj5HkuIDkuKrkuovku7ZcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHBhcmFtIGFyZ3NcbiAgICAgKi9cbiAgICBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHNbZXZ0XSB8fCBbXTtcbiAgICAgICAgdmFyIHdpbGRjYXJkRXZlbnRzID0gdGhpcy5fZXZlbnRzW1dJTERDQVJEXSB8fCBbXTtcbiAgICAgICAgLy8g5a6e6ZmF55qE5aSE55CGIGVtaXQg5pa55rOVXG4gICAgICAgIHZhciBkb0VtaXQgPSBmdW5jdGlvbiAoZXMpIHtcbiAgICAgICAgICAgIHZhciBsZW5ndGggPSBlcy5sZW5ndGg7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFlc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIF9hID0gZXNbaV0sIGNhbGxiYWNrID0gX2EuY2FsbGJhY2ssIG9uY2UgPSBfYS5vbmNlO1xuICAgICAgICAgICAgICAgIGlmIChvbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIF90aGlzLl9ldmVudHNbZXZ0XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZW5ndGgtLTtcbiAgICAgICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShfdGhpcywgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGRvRW1pdChldmVudHMpO1xuICAgICAgICBkb0VtaXQod2lsZGNhcmRFdmVudHMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5Y+W5raI55uR5ZCs5LiA5Liq5LqL5Lu277yM5oiW6ICF5LiA5LiqY2hhbm5lbFxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKi9cbiAgICBFdmVudEVtaXR0ZXIucHJvdG90eXBlLm9mZiA9IGZ1bmN0aW9uIChldnQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICghZXZ0KSB7XG4gICAgICAgICAgICAvLyBldnQg5Li656m65YWo6YOo5riF6ZmkXG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAvLyBldnQg5a2Y5Zyo77yMY2FsbGJhY2sg5Li656m677yM5riF6Zmk5LqL5Lu25omA5pyJ5pa55rOVXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1tldnRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZXZ0IOWtmOWcqO+8jGNhbGxiYWNrIOWtmOWcqO+8jOa4hemZpOWMuemFjeeahFxuICAgICAgICAgICAgICAgIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHNbZXZ0XSB8fCBbXTtcbiAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoXzEgPSBldmVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoXzE7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRzW2ldLmNhbGxiYWNrID09PSBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF8xLS07XG4gICAgICAgICAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1tldnRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qIOW9k+WJjeaJgOacieeahOS6i+S7tiAqL1xuICAgIEV2ZW50RW1pdHRlci5wcm90b3R5cGUuZ2V0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRzO1xuICAgIH07XG4gICAgcmV0dXJuIEV2ZW50RW1pdHRlcjtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBFdmVudEVtaXR0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/event-emitter/esm/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/abstract/base.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g-base/esm/abstract/base.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/event-emitter */ \"./node_modules/@antv/event-emitter/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n\n\n\nvar Base = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Base, _super);\n function Base(cfg) {\n var _this = _super.call(this) || this;\n /**\n * 是否被销毁\n * @type {boolean}\n */\n _this.destroyed = false;\n var defaultCfg = _this.getDefaultCfg();\n _this.cfg = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(defaultCfg, cfg);\n return _this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n Base.prototype.getDefaultCfg = function () {\n return {};\n };\n // 实现接口的方法\n Base.prototype.get = function (name) {\n return this.cfg[name];\n };\n // 实现接口的方法\n Base.prototype.set = function (name, value) {\n this.cfg[name] = value;\n };\n // 实现接口的方法\n Base.prototype.destroy = function () {\n this.cfg = {\n destroyed: true,\n };\n this.off();\n this.destroyed = true;\n };\n return Base;\n}(_antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Base);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9iYXNlLmpzPzJlNjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDRztBQUNGO0FBQ25DO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixzREFBRztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFFO0FBQ1csbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBFRSBmcm9tICdAYW50di9ldmVudC1lbWl0dGVyJztcbmltcG9ydCB7IG1peCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG52YXIgQmFzZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQmFzZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBCYXNlKGNmZykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICAvKipcbiAgICAgICAgICog5piv5ZCm6KKr6ZSA5q+BXG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgX3RoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgICAgIHZhciBkZWZhdWx0Q2ZnID0gX3RoaXMuZ2V0RGVmYXVsdENmZygpO1xuICAgICAgICBfdGhpcy5jZmcgPSBtaXgoZGVmYXVsdENmZywgY2ZnKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog6buY6K6k55qE6YWN572u6aG5XG4gICAgICogQHJldHVybnMge29iamVjdH0g6buY6K6k55qE6YWN572u6aG5XG4gICAgICovXG4gICAgQmFzZS5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+j55qE5pa55rOVXG4gICAgQmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2ZnW25hbWVdO1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+j55qE5pa55rOVXG4gICAgQmFzZS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2ZnW25hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6PnmoTmlrnms5VcbiAgICBCYXNlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmNmZyA9IHtcbiAgICAgICAgICAgIGRlc3Ryb3llZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vZmYoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH07XG4gICAgcmV0dXJuIEJhc2U7XG59KEVFKSk7XG5leHBvcnQgZGVmYXVsdCBCYXNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/base.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/abstract/canvas.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g-base/esm/abstract/canvas.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var detect_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! detect-browser */ \"./node_modules/detect-browser/es/index.js\");\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container */ \"./node_modules/@antv/g-base/esm/abstract/container.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _animate_timeline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../animate/timeline */ \"./node_modules/@antv/g-base/esm/animate/timeline.js\");\n/* harmony import */ var _event_event_contoller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../event/event-contoller */ \"./node_modules/@antv/g-base/esm/event/event-contoller.js\");\n\n\n\n\n\n\nvar PX_SUFFIX = 'px';\nvar browser = Object(detect_browser__WEBPACK_IMPORTED_MODULE_1__[\"detect\"])();\nvar isFirefox = browser && browser.name === 'firefox';\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.initContainer();\n _this.initDom();\n _this.initEvents();\n _this.initTimeline();\n return _this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // set default cursor style for canvas\n cfg['cursor'] = 'default';\n // CSS transform 目前尚未经过长时间验证,为了避免影响上层业务,默认关闭,上层按需开启\n cfg['supportCSSTransform'] = false;\n return cfg;\n };\n /**\n * @protected\n * 初始化容器\n */\n Canvas.prototype.initContainer = function () {\n var container = this.get('container');\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(container)) {\n container = document.getElementById(container);\n this.set('container', container);\n }\n };\n /**\n * @protected\n * 初始化 DOM\n */\n Canvas.prototype.initDom = function () {\n var el = this.createDom();\n this.set('el', el);\n // 附加到容器\n var container = this.get('container');\n container.appendChild(el);\n // 设置初始宽度\n this.setDOMSize(this.get('width'), this.get('height'));\n };\n /**\n * @protected\n * 初始化绑定的事件\n */\n Canvas.prototype.initEvents = function () {\n var eventController = new _event_event_contoller__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n canvas: this,\n });\n eventController.init();\n this.set('eventController', eventController);\n };\n /**\n * @protected\n * 初始化时间轴\n */\n Canvas.prototype.initTimeline = function () {\n var timeline = new _animate_timeline__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this);\n this.set('timeline', timeline);\n };\n /**\n * @protected\n * 修改画布对应的 DOM 的大小\n * @param {number} width 宽度\n * @param {number} height 高度\n */\n Canvas.prototype.setDOMSize = function (width, height) {\n var el = this.get('el');\n if (_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isBrowser\"]) {\n el.style.width = width + PX_SUFFIX;\n el.style.height = height + PX_SUFFIX;\n }\n };\n // 实现接口\n Canvas.prototype.changeSize = function (width, height) {\n this.setDOMSize(width, height);\n this.set('width', width);\n this.set('height', height);\n this.onCanvasChange('changeSize');\n };\n /**\n * 获取当前的渲染引擎\n * @return {Renderer} 返回当前的渲染引擎\n */\n Canvas.prototype.getRenderer = function () {\n return this.get('renderer');\n };\n /**\n * 获取画布的 cursor 样式\n * @return {Cursor}\n */\n Canvas.prototype.getCursor = function () {\n return this.get('cursor');\n };\n /**\n * 设置画布的 cursor 样式\n * @param {Cursor} cursor cursor 样式\n */\n Canvas.prototype.setCursor = function (cursor) {\n this.set('cursor', cursor);\n var el = this.get('el');\n if (_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isBrowser\"] && el) {\n // 直接设置样式,不等待鼠标移动时再设置\n el.style.cursor = cursor;\n }\n };\n // 实现接口\n Canvas.prototype.getPointByEvent = function (ev) {\n var supportCSSTransform = this.get('supportCSSTransform');\n if (supportCSSTransform) {\n // For Firefox <= 38\n if (isFirefox && !Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isNil\"])(ev.layerX) && ev.layerX !== ev.offsetX) {\n return {\n x: ev.layerX,\n y: ev.layerY,\n };\n }\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isNil\"])(ev.offsetX)) {\n // For IE6+, Firefox >= 39, Chrome, Safari, Opera\n return {\n x: ev.offsetX,\n y: ev.offsetY,\n };\n }\n }\n // should calculate by self for other cases, like Safari in ios\n // TODO: support CSS transform\n var _a = this.getClientByEvent(ev), clientX = _a.x, clientY = _a.y;\n return this.getPointByClient(clientX, clientY);\n };\n // 获取 touch 事件的 clientX 和 clientY 需要单独处理\n Canvas.prototype.getClientByEvent = function (ev) {\n var clientInfo = ev;\n if (ev.touches) {\n if (ev.type === 'touchend') {\n clientInfo = ev.changedTouches[0];\n }\n else {\n clientInfo = ev.touches[0];\n }\n }\n return {\n x: clientInfo.clientX,\n y: clientInfo.clientY,\n };\n };\n // 实现接口\n Canvas.prototype.getPointByClient = function (clientX, clientY) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: clientX - bbox.left,\n y: clientY - bbox.top,\n };\n };\n // 实现接口\n Canvas.prototype.getClientByPoint = function (x, y) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: x + bbox.left,\n y: y + bbox.top,\n };\n };\n // 实现接口\n Canvas.prototype.draw = function () { };\n /**\n * @protected\n * 销毁 DOM 容器\n */\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n el.parentNode.removeChild(el);\n };\n /**\n * @protected\n * 清理所有的事件\n */\n Canvas.prototype.clearEvents = function () {\n var eventController = this.get('eventController');\n eventController.destroy();\n };\n Canvas.prototype.isCanvas = function () {\n return true;\n };\n Canvas.prototype.getParent = function () {\n return null;\n };\n Canvas.prototype.destroy = function () {\n var timeline = this.get('timeline');\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n // 同初始化时相反顺序调用\n if (timeline) {\n // 画布销毁时自动停止动画\n timeline.stop();\n }\n this.clearEvents();\n this.removeDom();\n _super.prototype.destroy.call(this);\n };\n return Canvas;\n}(_container__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9jYW52YXMuanM/MTI0MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNNO0FBQ0o7QUFDc0I7QUFDZjtBQUNZO0FBQ3ZEO0FBQ0EsY0FBYyw2REFBTTtBQUNwQjtBQUNBO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyw4REFBZTtBQUNqRDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHlEQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQVM7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvREFBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsd0RBQUs7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix3REFBSztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsa0RBQVM7QUFDSSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYWJzdHJhY3QvY2FudmFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBkZXRlY3QgfSBmcm9tICdkZXRlY3QtYnJvd3Nlcic7XG5pbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJztcbmltcG9ydCB7IGlzQnJvd3NlciwgaXNOaWwsIGlzU3RyaW5nIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCBUaW1lbGluZSBmcm9tICcuLi9hbmltYXRlL3RpbWVsaW5lJztcbmltcG9ydCBFdmVudENvbnRyb2xsZXIgZnJvbSAnLi4vZXZlbnQvZXZlbnQtY29udG9sbGVyJztcbnZhciBQWF9TVUZGSVggPSAncHgnO1xudmFyIGJyb3dzZXIgPSBkZXRlY3QoKTtcbnZhciBpc0ZpcmVmb3ggPSBicm93c2VyICYmIGJyb3dzZXIubmFtZSA9PT0gJ2ZpcmVmb3gnO1xudmFyIENhbnZhcyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2FudmFzLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENhbnZhcyhjZmcpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgY2ZnKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5pbml0Q29udGFpbmVyKCk7XG4gICAgICAgIF90aGlzLmluaXREb20oKTtcbiAgICAgICAgX3RoaXMuaW5pdEV2ZW50cygpO1xuICAgICAgICBfdGhpcy5pbml0VGltZWxpbmUoKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDYW52YXMucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjZmcgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRDZmcuY2FsbCh0aGlzKTtcbiAgICAgICAgLy8gc2V0IGRlZmF1bHQgY3Vyc29yIHN0eWxlIGZvciBjYW52YXNcbiAgICAgICAgY2ZnWydjdXJzb3InXSA9ICdkZWZhdWx0JztcbiAgICAgICAgLy8gQ1NTIHRyYW5zZm9ybSDnm67liY3lsJrmnKrnu4/ov4fplb/ml7bpl7Tpqozor4HvvIzkuLrkuobpgb/lhY3lvbHlk43kuIrlsYLkuJrliqHvvIzpu5jorqTlhbPpl63vvIzkuIrlsYLmjInpnIDlvIDlkK9cbiAgICAgICAgY2ZnWydzdXBwb3J0Q1NTVHJhbnNmb3JtJ10gPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNmZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDliJ3lp4vljJblrrnlmahcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmluaXRDb250YWluZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gICAgICAgIGlmIChpc1N0cmluZyhjb250YWluZXIpKSB7XG4gICAgICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXIpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ2NvbnRhaW5lcicsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDliJ3lp4vljJYgRE9NXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5pbml0RG9tID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmNyZWF0ZURvbSgpO1xuICAgICAgICB0aGlzLnNldCgnZWwnLCBlbCk7XG4gICAgICAgIC8vIOmZhOWKoOWIsOWuueWZqFxuICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgICAvLyDorr7nva7liJ3lp4vlrr3luqZcbiAgICAgICAgdGhpcy5zZXRET01TaXplKHRoaXMuZ2V0KCd3aWR0aCcpLCB0aGlzLmdldCgnaGVpZ2h0JykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOWIneWni+WMlue7keWumueahOS6i+S7tlxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuaW5pdEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGV2ZW50Q29udHJvbGxlciA9IG5ldyBFdmVudENvbnRyb2xsZXIoe1xuICAgICAgICAgICAgY2FudmFzOiB0aGlzLFxuICAgICAgICB9KTtcbiAgICAgICAgZXZlbnRDb250cm9sbGVyLmluaXQoKTtcbiAgICAgICAgdGhpcy5zZXQoJ2V2ZW50Q29udHJvbGxlcicsIGV2ZW50Q29udHJvbGxlcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5Yid5aeL5YyW5pe26Ze06L20XG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5pbml0VGltZWxpbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0aW1lbGluZSA9IG5ldyBUaW1lbGluZSh0aGlzKTtcbiAgICAgICAgdGhpcy5zZXQoJ3RpbWVsaW5lJywgdGltZWxpbmUpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOS/ruaUueeUu+W4g+WvueW6lOeahCBET00g55qE5aSn5bCPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoICDlrr3luqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IOmrmOW6plxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuc2V0RE9NU2l6ZSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoaXNCcm93c2VyKSB7XG4gICAgICAgICAgICBlbC5zdHlsZS53aWR0aCA9IHdpZHRoICsgUFhfU1VGRklYO1xuICAgICAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgUFhfU1VGRklYO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBDYW52YXMucHJvdG90eXBlLmNoYW5nZVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgICAgICB0aGlzLnNldERPTVNpemUod2lkdGgsIGhlaWdodCk7XG4gICAgICAgIHRoaXMuc2V0KCd3aWR0aCcsIHdpZHRoKTtcbiAgICAgICAgdGhpcy5zZXQoJ2hlaWdodCcsIGhlaWdodCk7XG4gICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ2NoYW5nZVNpemUnKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiOt+WPluW9k+WJjeeahOa4suafk+W8leaTjlxuICAgICAqIEByZXR1cm4ge1JlbmRlcmVyfSDov5Tlm57lvZPliY3nmoTmuLLmn5PlvJXmk45cbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmdldFJlbmRlcmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ3JlbmRlcmVyJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5bnlLvluIPnmoQgY3Vyc29yIOagt+W8j1xuICAgICAqIEByZXR1cm4ge0N1cnNvcn1cbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmdldEN1cnNvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdjdXJzb3InKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiuvue9rueUu+W4g+eahCBjdXJzb3Ig5qC35byPXG4gICAgICogQHBhcmFtIHtDdXJzb3J9IGN1cnNvciAgY3Vyc29yIOagt+W8j1xuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuc2V0Q3Vyc29yID0gZnVuY3Rpb24gKGN1cnNvcikge1xuICAgICAgICB0aGlzLnNldCgnY3Vyc29yJywgY3Vyc29yKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGlmIChpc0Jyb3dzZXIgJiYgZWwpIHtcbiAgICAgICAgICAgIC8vIOebtOaOpeiuvue9ruagt+W8j++8jOS4jeetieW+hem8oOagh+enu+WKqOaXtuWGjeiuvue9rlxuICAgICAgICAgICAgZWwuc3R5bGUuY3Vyc29yID0gY3Vyc29yO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBDYW52YXMucHJvdG90eXBlLmdldFBvaW50QnlFdmVudCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICB2YXIgc3VwcG9ydENTU1RyYW5zZm9ybSA9IHRoaXMuZ2V0KCdzdXBwb3J0Q1NTVHJhbnNmb3JtJyk7XG4gICAgICAgIGlmIChzdXBwb3J0Q1NTVHJhbnNmb3JtKSB7XG4gICAgICAgICAgICAvLyBGb3IgRmlyZWZveCA8PSAzOFxuICAgICAgICAgICAgaWYgKGlzRmlyZWZveCAmJiAhaXNOaWwoZXYubGF5ZXJYKSAmJiBldi5sYXllclggIT09IGV2Lm9mZnNldFgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB4OiBldi5sYXllclgsXG4gICAgICAgICAgICAgICAgICAgIHk6IGV2LmxheWVyWSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc05pbChldi5vZmZzZXRYKSkge1xuICAgICAgICAgICAgICAgIC8vIEZvciBJRTYrLCBGaXJlZm94ID49IDM5LCBDaHJvbWUsIFNhZmFyaSwgT3BlcmFcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB4OiBldi5vZmZzZXRYLFxuICAgICAgICAgICAgICAgICAgICB5OiBldi5vZmZzZXRZLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2hvdWxkIGNhbGN1bGF0ZSBieSBzZWxmIGZvciBvdGhlciBjYXNlcywgbGlrZSBTYWZhcmkgaW4gaW9zXG4gICAgICAgIC8vIFRPRE86IHN1cHBvcnQgQ1NTIHRyYW5zZm9ybVxuICAgICAgICB2YXIgX2EgPSB0aGlzLmdldENsaWVudEJ5RXZlbnQoZXYpLCBjbGllbnRYID0gX2EueCwgY2xpZW50WSA9IF9hLnk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFBvaW50QnlDbGllbnQoY2xpZW50WCwgY2xpZW50WSk7XG4gICAgfTtcbiAgICAvLyDojrflj5YgdG91Y2gg5LqL5Lu255qEIGNsaWVudFgg5ZKMIGNsaWVudFkg6ZyA6KaB5Y2V54us5aSE55CGXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRDbGllbnRCeUV2ZW50ID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgIHZhciBjbGllbnRJbmZvID0gZXY7XG4gICAgICAgIGlmIChldi50b3VjaGVzKSB7XG4gICAgICAgICAgICBpZiAoZXYudHlwZSA9PT0gJ3RvdWNoZW5kJykge1xuICAgICAgICAgICAgICAgIGNsaWVudEluZm8gPSBldi5jaGFuZ2VkVG91Y2hlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNsaWVudEluZm8gPSBldi50b3VjaGVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBjbGllbnRJbmZvLmNsaWVudFgsXG4gICAgICAgICAgICB5OiBjbGllbnRJbmZvLmNsaWVudFksXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBDYW52YXMucHJvdG90eXBlLmdldFBvaW50QnlDbGllbnQgPSBmdW5jdGlvbiAoY2xpZW50WCwgY2xpZW50WSkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGJib3ggPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IGNsaWVudFggLSBiYm94LmxlZnQsXG4gICAgICAgICAgICB5OiBjbGllbnRZIC0gYmJveC50b3AsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBDYW52YXMucHJvdG90eXBlLmdldENsaWVudEJ5UG9pbnQgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGJib3ggPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggKyBiYm94LmxlZnQsXG4gICAgICAgICAgICB5OiB5ICsgYmJveC50b3AsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBDYW52YXMucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbiAoKSB7IH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOmUgOavgSBET00g5a655ZmoXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5yZW1vdmVEb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDmuIXnkIbmiYDmnInnmoTkuovku7ZcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmNsZWFyRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZXZlbnRDb250cm9sbGVyID0gdGhpcy5nZXQoJ2V2ZW50Q29udHJvbGxlcicpO1xuICAgICAgICBldmVudENvbnRyb2xsZXIuZGVzdHJveSgpO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5pc0NhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0aW1lbGluZSA9IHRoaXMuZ2V0KCd0aW1lbGluZScpO1xuICAgICAgICBpZiAodGhpcy5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICAvLyDlkIzliJ3lp4vljJbml7bnm7jlj43pobrluo/osIPnlKhcbiAgICAgICAgaWYgKHRpbWVsaW5lKSB7XG4gICAgICAgICAgICAvLyDnlLvluIPplIDmr4Hml7boh6rliqjlgZzmraLliqjnlLtcbiAgICAgICAgICAgIHRpbWVsaW5lLnN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsZWFyRXZlbnRzKCk7XG4gICAgICAgIHRoaXMucmVtb3ZlRG9tKCk7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuICAgIH07XG4gICAgcmV0dXJuIENhbnZhcztcbn0oQ29udGFpbmVyKSk7XG5leHBvcnQgZGVmYXVsdCBDYW52YXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYW52YXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/canvas.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/abstract/container.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/g-base/esm/abstract/container.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ \"./node_modules/@antv/g-base/esm/abstract/element.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n\n\n\n\nvar SHAPE_MAP = {};\nvar INDEX = '_INDEX';\n/**\n * 设置 canvas\n * @param {IElement} element 元素\n * @param {ICanvas} canvas 画布\n */\nfunction setCanvas(element, canvas) {\n element.set('canvas', canvas);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setCanvas(child, canvas);\n });\n }\n }\n}\n/**\n * 设置 timeline\n * @param {IElement} element 元素\n * @param {Timeline} timeline 时间轴\n */\nfunction setTimeline(element, timeline) {\n element.set('timeline', timeline);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setTimeline(child, timeline);\n });\n }\n }\n}\nfunction contains(container, element) {\n var children = container.getChildren();\n return children.indexOf(element) >= 0;\n}\nfunction removeChild(container, element, destroy) {\n if (destroy === void 0) { destroy = true; }\n // 不再调用 element.remove() 方法,会出现循环调用\n if (destroy) {\n element.destroy();\n }\n else {\n element.set('parent', null);\n element.set('canvas', null);\n }\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"removeFromArray\"])(container.getChildren(), element);\n}\nfunction getComparer(compare) {\n return function (left, right) {\n var result = compare(left, right);\n return result === 0 ? left[INDEX] - right[INDEX] : result;\n };\n}\nvar Container = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Container, _super);\n function Container() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Container.prototype.isCanvas = function () {\n return false;\n };\n // 根据子节点确定 BBox\n Container.prototype.getBBox = function () {\n // 所有的值可能在画布的可视区外\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n var xArr = [];\n var yArr = [];\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || (child.isGroup() && child.getChildren().length > 0));\n });\n if (children.length > 0) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n var box = child.getBBox();\n xArr.push(box.minX, box.maxX);\n yArr.push(box.minY, box.maxY);\n });\n minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(xArr);\n maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(xArr);\n minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(yArr);\n maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(yArr);\n }\n else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n };\n // 获取画布的包围盒\n Container.prototype.getCanvasBBox = function () {\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n var xArr = [];\n var yArr = [];\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || (child.isGroup() && child.getChildren().length > 0));\n });\n if (children.length > 0) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n var box = child.getCanvasBBox();\n xArr.push(box.minX, box.maxX);\n yArr.push(box.minY, box.maxY);\n });\n minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(xArr);\n maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(xArr);\n minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(yArr);\n maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(yArr);\n }\n else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n };\n Container.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n cfg['children'] = [];\n return cfg;\n };\n Container.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'matrix') {\n var totalMatrix = this.getTotalMatrix();\n this._applyChildrenMarix(totalMatrix);\n }\n };\n // 不但应用到自己身上还要应用于子元素\n Container.prototype.applyMatrix = function (matrix) {\n var preTotalMatrix = this.getTotalMatrix();\n _super.prototype.applyMatrix.call(this, matrix);\n var totalMatrix = this.getTotalMatrix();\n // totalMatrix 没有发生变化时,这里仅考虑两者都为 null 时\n // 不继续向下传递矩阵\n if (totalMatrix === preTotalMatrix) {\n return;\n }\n this._applyChildrenMarix(totalMatrix);\n };\n // 在子元素上设置矩阵\n Container.prototype._applyChildrenMarix = function (totalMatrix) {\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n child.applyMatrix(totalMatrix);\n });\n };\n // 兼容老版本的接口\n Container.prototype.addShape = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var type = args[0];\n var cfg = args[1];\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isObject\"])(type)) {\n cfg = type;\n }\n else {\n cfg['type'] = type;\n }\n var shapeType = SHAPE_MAP[cfg.type];\n if (!shapeType) {\n shapeType = Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"upperFirst\"])(cfg.type);\n SHAPE_MAP[cfg.type] = shapeType;\n }\n var ShapeBase = this.getShapeBase();\n var shape = new ShapeBase[shapeType](cfg);\n this.add(shape);\n return shape;\n };\n Container.prototype.addGroup = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var groupClass = args[0], cfg = args[1];\n var group;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isFunction\"])(groupClass)) {\n if (cfg) {\n group = new groupClass(cfg);\n }\n else {\n group = new groupClass({\n // canvas,\n parent: this,\n });\n }\n }\n else {\n var tmpCfg = groupClass || {};\n var TmpGroupClass = this.getGroupBase();\n group = new TmpGroupClass(tmpCfg);\n }\n this.add(group);\n return group;\n };\n Container.prototype.getCanvas = function () {\n var canvas;\n if (this.isCanvas()) {\n canvas = this;\n }\n else {\n canvas = this.get('canvas');\n }\n return canvas;\n };\n Container.prototype.getShape = function (x, y, ev) {\n // 如果不支持拾取,则直接返回\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isAllowCapture\"])(this)) {\n return null;\n }\n var children = this.getChildren();\n var shape;\n // 如果容器是 group\n if (!this.isCanvas()) {\n var v = [x, y, 1];\n // 将 x, y 转换成对应于 group 的局部坐标\n v = this.invertFromMatrix(v);\n if (!this.isClipped(v[0], v[1])) {\n shape = this._findShape(children, v[0], v[1], ev);\n }\n }\n else {\n shape = this._findShape(children, x, y, ev);\n }\n return shape;\n };\n Container.prototype._findShape = function (children, x, y, ev) {\n var shape = null;\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i];\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isAllowCapture\"])(child)) {\n if (child.isGroup()) {\n shape = child.getShape(x, y, ev);\n }\n else if (child.isHit(x, y)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n };\n Container.prototype.add = function (element) {\n var canvas = this.getCanvas();\n var children = this.getChildren();\n var timeline = this.get('timeline');\n var preParent = element.getParent();\n if (preParent) {\n removeChild(preParent, element, false);\n }\n element.set('parent', this);\n if (canvas) {\n setCanvas(element, canvas);\n }\n if (timeline) {\n setTimeline(element, timeline);\n }\n children.push(element);\n element.onCanvasChange('add');\n this._applyElementMatrix(element);\n };\n // 将当前容器的矩阵应用到子元素\n Container.prototype._applyElementMatrix = function (element) {\n var totalMatrix = this.getTotalMatrix();\n // 添加图形或者分组时,需要把当前图元的矩阵设置进去\n if (totalMatrix) {\n element.applyMatrix(totalMatrix);\n }\n };\n Container.prototype.getChildren = function () {\n return this.get('children');\n };\n Container.prototype.sort = function () {\n var children = this.getChildren();\n // 稳定排序\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child, index) {\n child[INDEX] = index;\n return child;\n });\n children.sort(getComparer(function (obj1, obj2) {\n return obj1.get('zIndex') - obj2.get('zIndex');\n }));\n this.onCanvasChange('sort');\n };\n Container.prototype.clear = function () {\n this.set('clearing', true);\n if (this.destroyed) {\n return;\n }\n var children = this.getChildren();\n for (var i = children.length - 1; i >= 0; i--) {\n children[i].destroy(); // 销毁子元素\n }\n this.set('children', []);\n this.onCanvasChange('clear');\n this.set('clearing', false);\n };\n Container.prototype.destroy = function () {\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n _super.prototype.destroy.call(this);\n };\n /**\n * 获取第一个子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getFirst = function () {\n return this.getChildByIndex(0);\n };\n /**\n * 获取最后一个子元素\n * @return {IElement} 元素\n */\n Container.prototype.getLast = function () {\n var children = this.getChildren();\n return this.getChildByIndex(children.length - 1);\n };\n /**\n * 根据索引获取子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getChildByIndex = function (index) {\n var children = this.getChildren();\n return children[index];\n };\n /**\n * 子元素的数量\n * @return {number} 子元素数量\n */\n Container.prototype.getCount = function () {\n var children = this.getChildren();\n return children.length;\n };\n /**\n * 是否包含对应元素\n * @param {IElement} element 元素\n * @return {boolean}\n */\n Container.prototype.contain = function (element) {\n var children = this.getChildren();\n return children.indexOf(element) > -1;\n };\n /**\n * 移除对应子元素\n * @param {IElement} element 子元素\n * @param {boolean} destroy 是否销毁子元素,默认为 true\n */\n Container.prototype.removeChild = function (element, destroy) {\n if (destroy === void 0) { destroy = true; }\n if (this.contain(element)) {\n element.remove(destroy);\n }\n };\n /**\n * 查找所有匹配的元素\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement[]} 元素数组\n */\n Container.prototype.findAll = function (fn) {\n var rst = [];\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (element) {\n if (fn(element)) {\n rst.push(element);\n }\n if (element.isGroup()) {\n rst = rst.concat(element.findAll(fn));\n }\n });\n return rst;\n };\n /**\n * 查找元素,找到第一个返回\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement|null} 元素,可以为空\n */\n Container.prototype.find = function (fn) {\n var rst = null;\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (element) {\n if (fn(element)) {\n rst = element;\n }\n else if (element.isGroup()) {\n rst = element.find(fn);\n }\n if (rst) {\n return false;\n }\n });\n return rst;\n };\n /**\n * 根据 ID 查找元素\n * @param {string} id 元素 id\n * @return {IElement|null} 元素\n */\n Container.prototype.findById = function (id) {\n return this.find(function (element) {\n return element.get('id') === id;\n });\n };\n /**\n * 该方法即将废弃,不建议使用\n * 根据 className 查找元素\n * TODO: 该方式定义暂时只给 G6 3.3 以后的版本使用,待 G6 中的 findByClassName 方法移除后,G 也需要同步移除\n * @param {string} className 元素 className\n * @return {IElement | null} 元素\n */\n Container.prototype.findByClassName = function (className) {\n return this.find(function (element) {\n return element.get('className') === className;\n });\n };\n /**\n * 根据 name 查找元素列表\n * @param {string} name 元素名称\n * @return {IElement[]} 元素\n */\n Container.prototype.findAllByName = function (name) {\n return this.findAll(function (element) {\n return element.get('name') === name;\n });\n };\n return Container;\n}(_element__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Container);\n//# sourceMappingURL=container.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9jb250YWluZXIuanM/MzMwZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0k7QUFDTjtBQUN1RTtBQUN2RztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsZ0JBQWdCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGtFQUFlO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsbUJBQW1CLHNEQUFHO0FBQ3RCLG1CQUFtQixzREFBRztBQUN0QixtQkFBbUIsc0RBQUc7QUFDdEIsbUJBQW1CLHNEQUFHO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFlBQVksdURBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLG1CQUFtQixzREFBRztBQUN0QixtQkFBbUIsc0RBQUc7QUFDdEIsbUJBQW1CLHNEQUFHO0FBQ3RCLG1CQUFtQixzREFBRztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1QkFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDZEQUFVO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1QkFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDZEQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRUFBYztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLFFBQVE7QUFDakQ7QUFDQSxnQkFBZ0IsaUVBQWM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsUUFBUTtBQUNqRCxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUztBQUN4QixnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVM7QUFDeEIsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQSxpQ0FBaUMsZ0JBQWdCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixnQkFBZ0I7QUFDaEMsZ0JBQWdCLFdBQVc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGdCQUFnQjtBQUNoQyxnQkFBZ0IsY0FBYztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLGNBQWM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsZ0JBQWdCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsV0FBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsQ0FBQyxDQUFDLGdEQUFPO0FBQ00sd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2NvbnRhaW5lci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgbWF4LCBtaW4gfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBFbGVtZW50IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc09iamVjdCwgZWFjaCwgcmVtb3ZlRnJvbUFycmF5LCB1cHBlckZpcnN0LCBpc0FsbG93Q2FwdHVyZSB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG52YXIgU0hBUEVfTUFQID0ge307XG52YXIgSU5ERVggPSAnX0lOREVYJztcbi8qKlxuICog6K6+572uIGNhbnZhc1xuICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCDlhYPntKBcbiAqIEBwYXJhbSB7SUNhbnZhc30gIGNhbnZhcyAg55S75biDXG4gKi9cbmZ1bmN0aW9uIHNldENhbnZhcyhlbGVtZW50LCBjYW52YXMpIHtcbiAgICBlbGVtZW50LnNldCgnY2FudmFzJywgY2FudmFzKTtcbiAgICBpZiAoZWxlbWVudC5pc0dyb3VwKCkpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gZWxlbWVudC5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgc2V0Q2FudmFzKGNoaWxkLCBjYW52YXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIOiuvue9riB0aW1lbGluZVxuICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCAg5YWD57SgXG4gKiBAcGFyYW0ge1RpbWVsaW5lfSB0aW1lbGluZSDml7bpl7TovbRcbiAqL1xuZnVuY3Rpb24gc2V0VGltZWxpbmUoZWxlbWVudCwgdGltZWxpbmUpIHtcbiAgICBlbGVtZW50LnNldCgndGltZWxpbmUnLCB0aW1lbGluZSk7XG4gICAgaWYgKGVsZW1lbnQuaXNHcm91cCgpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IGVsZW1lbnQuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVsaW5lKGNoaWxkLCB0aW1lbGluZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGNvbnRhaW5zKGNvbnRhaW5lciwgZWxlbWVudCkge1xuICAgIHZhciBjaGlsZHJlbiA9IGNvbnRhaW5lci5nZXRDaGlsZHJlbigpO1xuICAgIHJldHVybiBjaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpID49IDA7XG59XG5mdW5jdGlvbiByZW1vdmVDaGlsZChjb250YWluZXIsIGVsZW1lbnQsIGRlc3Ryb3kpIHtcbiAgICBpZiAoZGVzdHJveSA9PT0gdm9pZCAwKSB7IGRlc3Ryb3kgPSB0cnVlOyB9XG4gICAgLy8g5LiN5YaN6LCD55SoIGVsZW1lbnQucmVtb3ZlKCkg5pa55rOV77yM5Lya5Ye6546w5b6q546v6LCD55SoXG4gICAgaWYgKGRlc3Ryb3kpIHtcbiAgICAgICAgZWxlbWVudC5kZXN0cm95KCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBlbGVtZW50LnNldCgncGFyZW50JywgbnVsbCk7XG4gICAgICAgIGVsZW1lbnQuc2V0KCdjYW52YXMnLCBudWxsKTtcbiAgICB9XG4gICAgcmVtb3ZlRnJvbUFycmF5KGNvbnRhaW5lci5nZXRDaGlsZHJlbigpLCBlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldENvbXBhcmVyKGNvbXBhcmUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjb21wYXJlKGxlZnQsIHJpZ2h0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gMCA/IGxlZnRbSU5ERVhdIC0gcmlnaHRbSU5ERVhdIDogcmVzdWx0O1xuICAgIH07XG59XG52YXIgQ29udGFpbmVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDb250YWluZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ29udGFpbmVyKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENvbnRhaW5lci5wcm90b3R5cGUuaXNDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIC8vIOagueaNruWtkOiKgueCueehruWumiBCQm94XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDmiYDmnInnmoTlgLzlj6/og73lnKjnlLvluIPnmoTlj6/op4bljLrlpJZcbiAgICAgICAgdmFyIG1pblggPSBJbmZpbml0eTtcbiAgICAgICAgdmFyIG1heFggPSAtSW5maW5pdHk7XG4gICAgICAgIHZhciBtaW5ZID0gSW5maW5pdHk7XG4gICAgICAgIHZhciBtYXhZID0gLUluZmluaXR5O1xuICAgICAgICB2YXIgeEFyciA9IFtdO1xuICAgICAgICB2YXIgeUFyciA9IFtdO1xuICAgICAgICAvLyDlsIblj6/op4HlhYPntKDjgIHlm77lvaLku6Xlj4rkuI3kuLrnqbrnmoTlm77lvaLliIbnu4TnrZvpgInlh7rmnaXvvIznlKjkuo7ljIXlm7Tnm5LlkIjlubZcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpLmZpbHRlcihmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoJ3Zpc2libGUnKSAmJiAoIWNoaWxkLmlzR3JvdXAoKSB8fCAoY2hpbGQuaXNHcm91cCgpICYmIGNoaWxkLmdldENoaWxkcmVuKCkubGVuZ3RoID4gMCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgICAgIHZhciBib3ggPSBjaGlsZC5nZXRCQm94KCk7XG4gICAgICAgICAgICAgICAgeEFyci5wdXNoKGJveC5taW5YLCBib3gubWF4WCk7XG4gICAgICAgICAgICAgICAgeUFyci5wdXNoKGJveC5taW5ZLCBib3gubWF4WSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1pblggPSBtaW4oeEFycik7XG4gICAgICAgICAgICBtYXhYID0gbWF4KHhBcnIpO1xuICAgICAgICAgICAgbWluWSA9IG1pbih5QXJyKTtcbiAgICAgICAgICAgIG1heFkgPSBtYXgoeUFycik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtaW5YID0gMDtcbiAgICAgICAgICAgIG1heFggPSAwO1xuICAgICAgICAgICAgbWluWSA9IDA7XG4gICAgICAgICAgICBtYXhZID0gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYm94ID0ge1xuICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgbWluWTogbWluWSxcbiAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICBtYXhZOiBtYXhZLFxuICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGJveDtcbiAgICB9O1xuICAgIC8vIOiOt+WPlueUu+W4g+eahOWMheWbtOebklxuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0Q2FudmFzQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG1pblggPSBJbmZpbml0eTtcbiAgICAgICAgdmFyIG1heFggPSAtSW5maW5pdHk7XG4gICAgICAgIHZhciBtaW5ZID0gSW5maW5pdHk7XG4gICAgICAgIHZhciBtYXhZID0gLUluZmluaXR5O1xuICAgICAgICB2YXIgeEFyciA9IFtdO1xuICAgICAgICB2YXIgeUFyciA9IFtdO1xuICAgICAgICAvLyDlsIblj6/op4HlhYPntKDjgIHlm77lvaLku6Xlj4rkuI3kuLrnqbrnmoTlm77lvaLliIbnu4TnrZvpgInlh7rmnaXvvIznlKjkuo7ljIXlm7Tnm5LlkIjlubZcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpLmZpbHRlcihmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoJ3Zpc2libGUnKSAmJiAoIWNoaWxkLmlzR3JvdXAoKSB8fCAoY2hpbGQuaXNHcm91cCgpICYmIGNoaWxkLmdldENoaWxkcmVuKCkubGVuZ3RoID4gMCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgICAgIHZhciBib3ggPSBjaGlsZC5nZXRDYW52YXNCQm94KCk7XG4gICAgICAgICAgICAgICAgeEFyci5wdXNoKGJveC5taW5YLCBib3gubWF4WCk7XG4gICAgICAgICAgICAgICAgeUFyci5wdXNoKGJveC5taW5ZLCBib3gubWF4WSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1pblggPSBtaW4oeEFycik7XG4gICAgICAgICAgICBtYXhYID0gbWF4KHhBcnIpO1xuICAgICAgICAgICAgbWluWSA9IG1pbih5QXJyKTtcbiAgICAgICAgICAgIG1heFkgPSBtYXgoeUFycik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtaW5YID0gMDtcbiAgICAgICAgICAgIG1heFggPSAwO1xuICAgICAgICAgICAgbWluWSA9IDA7XG4gICAgICAgICAgICBtYXhZID0gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYm94ID0ge1xuICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgbWluWTogbWluWSxcbiAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICBtYXhZOiBtYXhZLFxuICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGJveDtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNmZyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZy5jYWxsKHRoaXMpO1xuICAgICAgICBjZmdbJ2NoaWxkcmVuJ10gPSBbXTtcbiAgICAgICAgcmV0dXJuIGNmZztcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIGlmIChuYW1lID09PSAnbWF0cml4Jykge1xuICAgICAgICAgICAgdmFyIHRvdGFsTWF0cml4ID0gdGhpcy5nZXRUb3RhbE1hdHJpeCgpO1xuICAgICAgICAgICAgdGhpcy5fYXBwbHlDaGlsZHJlbk1hcml4KHRvdGFsTWF0cml4KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5LiN5L2G5bqU55So5Yiw6Ieq5bex6Lqr5LiK6L+Y6KaB5bqU55So5LqO5a2Q5YWD57SgXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5hcHBseU1hdHJpeCA9IGZ1bmN0aW9uIChtYXRyaXgpIHtcbiAgICAgICAgdmFyIHByZVRvdGFsTWF0cml4ID0gdGhpcy5nZXRUb3RhbE1hdHJpeCgpO1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmFwcGx5TWF0cml4LmNhbGwodGhpcywgbWF0cml4KTtcbiAgICAgICAgdmFyIHRvdGFsTWF0cml4ID0gdGhpcy5nZXRUb3RhbE1hdHJpeCgpO1xuICAgICAgICAvLyB0b3RhbE1hdHJpeCDmsqHmnInlj5HnlJ/lj5jljJbml7bvvIzov5nph4zku4XogIPomZHkuKTogIXpg73kuLogbnVsbCDml7ZcbiAgICAgICAgLy8g5LiN57un57ut5ZCR5LiL5Lyg6YCS55+p6Zi1XG4gICAgICAgIGlmICh0b3RhbE1hdHJpeCA9PT0gcHJlVG90YWxNYXRyaXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hcHBseUNoaWxkcmVuTWFyaXgodG90YWxNYXRyaXgpO1xuICAgIH07XG4gICAgLy8g5Zyo5a2Q5YWD57Sg5LiK6K6+572u55+p6Zi1XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5fYXBwbHlDaGlsZHJlbk1hcml4ID0gZnVuY3Rpb24gKHRvdGFsTWF0cml4KSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgZWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICBjaGlsZC5hcHBseU1hdHJpeCh0b3RhbE1hdHJpeCk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8g5YW85a656ICB54mI5pys55qE5o6l5Y+jXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5hZGRTaGFwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdHlwZSA9IGFyZ3NbMF07XG4gICAgICAgIHZhciBjZmcgPSBhcmdzWzFdO1xuICAgICAgICBpZiAoaXNPYmplY3QodHlwZSkpIHtcbiAgICAgICAgICAgIGNmZyA9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjZmdbJ3R5cGUnXSA9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNoYXBlVHlwZSA9IFNIQVBFX01BUFtjZmcudHlwZV07XG4gICAgICAgIGlmICghc2hhcGVUeXBlKSB7XG4gICAgICAgICAgICBzaGFwZVR5cGUgPSB1cHBlckZpcnN0KGNmZy50eXBlKTtcbiAgICAgICAgICAgIFNIQVBFX01BUFtjZmcudHlwZV0gPSBzaGFwZVR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIFNoYXBlQmFzZSA9IHRoaXMuZ2V0U2hhcGVCYXNlKCk7XG4gICAgICAgIHZhciBzaGFwZSA9IG5ldyBTaGFwZUJhc2Vbc2hhcGVUeXBlXShjZmcpO1xuICAgICAgICB0aGlzLmFkZChzaGFwZSk7XG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuYWRkR3JvdXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGdyb3VwQ2xhc3MgPSBhcmdzWzBdLCBjZmcgPSBhcmdzWzFdO1xuICAgICAgICB2YXIgZ3JvdXA7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGdyb3VwQ2xhc3MpKSB7XG4gICAgICAgICAgICBpZiAoY2ZnKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAgPSBuZXcgZ3JvdXBDbGFzcyhjZmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAgPSBuZXcgZ3JvdXBDbGFzcyh7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbnZhcyxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiB0aGlzLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHRtcENmZyA9IGdyb3VwQ2xhc3MgfHwge307XG4gICAgICAgICAgICB2YXIgVG1wR3JvdXBDbGFzcyA9IHRoaXMuZ2V0R3JvdXBCYXNlKCk7XG4gICAgICAgICAgICBncm91cCA9IG5ldyBUbXBHcm91cENsYXNzKHRtcENmZyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGQoZ3JvdXApO1xuICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldENhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNhbnZhcztcbiAgICAgICAgaWYgKHRoaXMuaXNDYW52YXMoKSkge1xuICAgICAgICAgICAgY2FudmFzID0gdGhpcztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FudmFzO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRTaGFwZSA9IGZ1bmN0aW9uICh4LCB5LCBldikge1xuICAgICAgICAvLyDlpoLmnpzkuI3mlK/mjIHmi77lj5bvvIzliJnnm7TmjqXov5Tlm55cbiAgICAgICAgaWYgKCFpc0FsbG93Q2FwdHVyZSh0aGlzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICB2YXIgc2hhcGU7XG4gICAgICAgIC8vIOWmguaenOWuueWZqOaYryBncm91cFxuICAgICAgICBpZiAoIXRoaXMuaXNDYW52YXMoKSkge1xuICAgICAgICAgICAgdmFyIHYgPSBbeCwgeSwgMV07XG4gICAgICAgICAgICAvLyDlsIYgeCwgeSDovazmjaLmiJDlr7nlupTkuo4gZ3JvdXAg55qE5bGA6YOo5Z2Q5qCHXG4gICAgICAgICAgICB2ID0gdGhpcy5pbnZlcnRGcm9tTWF0cml4KHYpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ2xpcHBlZCh2WzBdLCB2WzFdKSkge1xuICAgICAgICAgICAgICAgIHNoYXBlID0gdGhpcy5fZmluZFNoYXBlKGNoaWxkcmVuLCB2WzBdLCB2WzFdLCBldik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzaGFwZSA9IHRoaXMuX2ZpbmRTaGFwZShjaGlsZHJlbiwgeCwgeSwgZXYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuX2ZpbmRTaGFwZSA9IGZ1bmN0aW9uIChjaGlsZHJlbiwgeCwgeSwgZXYpIHtcbiAgICAgICAgdmFyIHNoYXBlID0gbnVsbDtcbiAgICAgICAgZm9yICh2YXIgaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgICAgIGlmIChpc0FsbG93Q2FwdHVyZShjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNoYXBlID0gY2hpbGQuZ2V0U2hhcGUoeCwgeSwgZXYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZC5pc0hpdCh4LCB5KSkge1xuICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IGNoaWxkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzaGFwZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0Q2FudmFzKCk7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgdmFyIHRpbWVsaW5lID0gdGhpcy5nZXQoJ3RpbWVsaW5lJyk7XG4gICAgICAgIHZhciBwcmVQYXJlbnQgPSBlbGVtZW50LmdldFBhcmVudCgpO1xuICAgICAgICBpZiAocHJlUGFyZW50KSB7XG4gICAgICAgICAgICByZW1vdmVDaGlsZChwcmVQYXJlbnQsIGVsZW1lbnQsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50LnNldCgncGFyZW50JywgdGhpcyk7XG4gICAgICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgICAgIHNldENhbnZhcyhlbGVtZW50LCBjYW52YXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lbGluZSkge1xuICAgICAgICAgICAgc2V0VGltZWxpbmUoZWxlbWVudCwgdGltZWxpbmUpO1xuICAgICAgICB9XG4gICAgICAgIGNoaWxkcmVuLnB1c2goZWxlbWVudCk7XG4gICAgICAgIGVsZW1lbnQub25DYW52YXNDaGFuZ2UoJ2FkZCcpO1xuICAgICAgICB0aGlzLl9hcHBseUVsZW1lbnRNYXRyaXgoZWxlbWVudCk7XG4gICAgfTtcbiAgICAvLyDlsIblvZPliY3lrrnlmajnmoTnn6npmLXlupTnlKjliLDlrZDlhYPntKBcbiAgICBDb250YWluZXIucHJvdG90eXBlLl9hcHBseUVsZW1lbnRNYXRyaXggPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgdG90YWxNYXRyaXggPSB0aGlzLmdldFRvdGFsTWF0cml4KCk7XG4gICAgICAgIC8vIOa3u+WKoOWbvuW9ouaIluiAheWIhue7hOaXtu+8jOmcgOimgeaKiuW9k+WJjeWbvuWFg+eahOefqemYteiuvue9rui/m+WOu1xuICAgICAgICBpZiAodG90YWxNYXRyaXgpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuYXBwbHlNYXRyaXgodG90YWxNYXRyaXgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldENoaWxkcmVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLnNvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgLy8g56iz5a6a5o6S5bqPXG4gICAgICAgIGVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCwgaW5kZXgpIHtcbiAgICAgICAgICAgIGNoaWxkW0lOREVYXSA9IGluZGV4O1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgY2hpbGRyZW4uc29ydChnZXRDb21wYXJlcihmdW5jdGlvbiAob2JqMSwgb2JqMikge1xuICAgICAgICAgICAgcmV0dXJuIG9iajEuZ2V0KCd6SW5kZXgnKSAtIG9iajIuZ2V0KCd6SW5kZXgnKTtcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdzb3J0Jyk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgnY2xlYXJpbmcnLCB0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICBmb3IgKHZhciBpID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNoaWxkcmVuW2ldLmRlc3Ryb3koKTsgLy8g6ZSA5q+B5a2Q5YWD57SgXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXQoJ2NoaWxkcmVuJywgW10pO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdjbGVhcicpO1xuICAgICAgICB0aGlzLnNldCgnY2xlYXJpbmcnLCBmYWxzZSk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmdldCgnZGVzdHJveWVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6I635Y+W56ys5LiA5Liq5a2Q5YWD57SgXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOesrOS4gOS4quWFg+e0oFxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0Rmlyc3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENoaWxkQnlJbmRleCgwKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiOt+WPluacgOWQjuS4gOS4quWtkOWFg+e0oFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldExhc3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hpbGRCeUluZGV4KGNoaWxkcmVuLmxlbmd0aCAtIDEpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5qC55o2u57Si5byV6I635Y+W5a2Q5YWD57SgXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOesrOS4gOS4quWFg+e0oFxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0Q2hpbGRCeUluZGV4ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuW2luZGV4XTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOWtkOWFg+e0oOeahOaVsOmHj1xuICAgICAqIEByZXR1cm4ge251bWJlcn0g5a2Q5YWD57Sg5pWw6YePXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRDb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4ubGVuZ3RoO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5piv5ZCm5YyF5ZCr5a+55bqU5YWD57SgXG4gICAgICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCDlhYPntKBcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuY29udGFpbiA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuLmluZGV4T2YoZWxlbWVudCkgPiAtMTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOenu+mZpOWvueW6lOWtkOWFg+e0oFxuICAgICAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQg5a2Q5YWD57SgXG4gICAgICogQHBhcmFtIHtib29sZWFufSBkZXN0cm95IOaYr+WQpumUgOavgeWtkOWFg+e0oO+8jOm7mOiupOS4uiB0cnVlXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uIChlbGVtZW50LCBkZXN0cm95KSB7XG4gICAgICAgIGlmIChkZXN0cm95ID09PSB2b2lkIDApIHsgZGVzdHJveSA9IHRydWU7IH1cbiAgICAgICAgaWYgKHRoaXMuY29udGFpbihlbGVtZW50KSkge1xuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmUoZGVzdHJveSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOafpeaJvuaJgOacieWMuemFjeeahOWFg+e0oFxuICAgICAqIEBwYXJhbSAge0VsZW1lbnRGaWx0ZXJGbn0gICBmbiAg5Yy56YWN5Ye95pWwXG4gICAgICogQHJldHVybiB7SUVsZW1lbnRbXX0g5YWD57Sg5pWw57uEXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5maW5kQWxsID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHZhciByc3QgPSBbXTtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGZuKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcnN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgICAgICByc3QgPSByc3QuY29uY2F0KGVsZW1lbnQuZmluZEFsbChmbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJzdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOafpeaJvuWFg+e0oO+8jOaJvuWIsOesrOS4gOS4qui/lOWbnlxuICAgICAqIEBwYXJhbSAge0VsZW1lbnRGaWx0ZXJGbn0gZm4gICAg5Yy56YWN5Ye95pWwXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR8bnVsbH0g5YWD57Sg77yM5Y+v5Lul5Li656m6XG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHZhciByc3QgPSBudWxsO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIGVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoZm4oZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByc3QgPSBlbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgICAgICByc3QgPSBlbGVtZW50LmZpbmQoZm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJzdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByc3Q7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDmoLnmja4gSUQg5p+l5om+5YWD57SgXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGlkIOWFg+e0oCBpZFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fG51bGx9IOWFg+e0oFxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZmluZEJ5SWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdpZCcpID09PSBpZDtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDor6Xmlrnms5XljbPlsIblup/lvIPvvIzkuI3lu7rorq7kvb/nlKhcbiAgICAgKiDmoLnmja4gY2xhc3NOYW1lIOafpeaJvuWFg+e0oFxuICAgICAqIFRPRE86IOivpeaWueW8j+WumuS5ieaaguaXtuWPque7mSBHNiAzLjMg5Lul5ZCO55qE54mI5pys5L2/55So77yM5b6FIEc2IOS4reeahCBmaW5kQnlDbGFzc05hbWUg5pa55rOV56e76Zmk5ZCO77yMRyDkuZ/pnIDopoHlkIzmraXnp7vpmaRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIOWFg+e0oCBjbGFzc05hbWVcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudCB8IG51bGx9IOWFg+e0oFxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZmluZEJ5Q2xhc3NOYW1lID0gZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSBjbGFzc05hbWU7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5qC55o2uIG5hbWUg5p+l5om+5YWD57Sg5YiX6KGoXG4gICAgICogQHBhcmFtIHtzdHJpbmd9ICAgICAgbmFtZSDlhYPntKDlkI3np7BcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudFtdfSDlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmZpbmRBbGxCeU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQWxsKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ25hbWUnKSA9PT0gbmFtZTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gQ29udGFpbmVyO1xufShFbGVtZW50KSk7XG5leHBvcnQgZGVmYXVsdCBDb250YWluZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb250YWluZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/container.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/abstract/element.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-base/esm/abstract/element.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/matrix */ \"./node_modules/@antv/g-base/esm/util/matrix.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-base/esm/abstract/base.js\");\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar MATRIX = 'matrix';\nvar CLONE_CFGS = ['zIndex', 'capture', 'visible', 'type'];\n// 可以在 toAttrs 中设置,但不属于绘图属性的字段\nvar RESERVED_PORPS = ['repeat'];\nvar DELEGATION_SPLIT = ':';\nvar WILDCARD = '*';\n// 需要考虑数组嵌套数组的场景\n// 数组嵌套对象的场景不考虑\nfunction _cloneArrayAttr(arr) {\n var result = [];\n for (var i = 0; i < arr.length; i++) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(arr[i])) {\n result.push([].concat(arr[i]));\n }\n else {\n result.push(arr[i]);\n }\n }\n return result;\n}\nfunction getFormatFromAttrs(toAttrs, shape) {\n var fromAttrs = {};\n var attrs = shape.attrs;\n for (var k in toAttrs) {\n fromAttrs[k] = attrs[k];\n }\n return fromAttrs;\n}\nfunction getFormatToAttrs(props, shape) {\n var toAttrs = {};\n var attrs = shape.attr();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(props, function (v, k) {\n if (RESERVED_PORPS.indexOf(k) === -1 && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isEqual\"])(attrs[k], v)) {\n toAttrs[k] = v;\n }\n });\n return toAttrs;\n}\nfunction checkExistedAttrs(animations, animation) {\n if (animation.onFrame) {\n return animations;\n }\n var startTime = animation.startTime, delay = animation.delay, duration = animation.duration;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (item) {\n // 后一个动画开始执行的时间 < 前一个动画的结束时间 && 后一个动画的执行时间 > 前一个动画的延迟\n if (startTime + delay < item.startTime + item.delay + item.duration && duration > item.delay) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animation.toAttrs, function (v, k) {\n if (hasOwnProperty.call(item.toAttrs, k)) {\n delete item.toAttrs[k];\n delete item.fromAttrs[k];\n }\n });\n }\n });\n return animations;\n}\nvar Element = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Element, _super);\n function Element(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @protected\n * 图形属性\n * @type {ShapeAttrs}\n */\n _this.attrs = {};\n var attrs = _this.getDefaultAttrs();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(attrs, cfg.attrs);\n _this.attrs = attrs;\n _this.initAttrs(attrs);\n _this.initAnimate(); // 初始化动画\n return _this;\n }\n // override\n Element.prototype.getDefaultCfg = function () {\n return {\n visible: true,\n capture: true,\n zIndex: 0,\n };\n };\n /**\n * @protected\n * 获取默认的属相\n */\n Element.prototype.getDefaultAttrs = function () {\n return {\n matrix: this.getDefaultMatrix(),\n opacity: 1,\n };\n };\n /**\n * @protected\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Element.prototype.onCanvasChange = function (changeType) { };\n /**\n * @protected\n * 初始化属性,有些属性需要加工\n * @param {object} attrs 属性值\n */\n Element.prototype.initAttrs = function (attrs) { };\n /**\n * @protected\n * 初始化动画\n */\n Element.prototype.initAnimate = function () {\n this.set('animable', true);\n this.set('animating', false);\n };\n Element.prototype.isGroup = function () {\n return false;\n };\n Element.prototype.getParent = function () {\n return this.get('parent');\n };\n Element.prototype.getCanvas = function () {\n return this.get('canvas');\n };\n Element.prototype.attr = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var name = args[0], value = args[1];\n if (!name)\n return this.attrs;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(name)) {\n for (var k in name) {\n this.setAttr(k, name[k]);\n }\n this.afterAttrsChange(name);\n return this;\n }\n if (args.length === 2) {\n this.setAttr(name, value);\n this.afterAttrsChange((_a = {},\n _a[name] = value,\n _a));\n return this;\n }\n return this.attrs[name];\n };\n // 是否被裁剪,被裁剪则不显示,不参与拾取\n Element.prototype.isClipped = function (refX, refY) {\n var clip = this.getClip();\n return clip && !clip.isHit(refX, refY);\n };\n /**\n * 内部设置属性值的接口\n * @param {string} name 属性名\n * @param {any} value 属性值\n */\n Element.prototype.setAttr = function (name, value) {\n var originValue = this.attrs[name];\n if (originValue !== value) {\n this.attrs[name] = value;\n this.onAttrChange(name, value, originValue);\n }\n };\n /**\n * @protected\n * 属性值发生改变\n * @param {string} name 属性名\n * @param {any} value 属性值\n * @param {any} originValue 属性值\n */\n Element.prototype.onAttrChange = function (name, value, originValue) {\n if (name === 'matrix') {\n this.set('totalMatrix', null);\n }\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n */\n Element.prototype.afterAttrsChange = function (targetAttrs) {\n if (this.cfg.isClipShape) {\n var applyTo = this.cfg.applyTo;\n if (applyTo) {\n applyTo.onCanvasChange('clip');\n }\n }\n else {\n this.onCanvasChange('attr');\n }\n };\n Element.prototype.show = function () {\n // 不是高频操作直接使用 set\n this.set('visible', true);\n this.onCanvasChange('show');\n return this;\n };\n Element.prototype.hide = function () {\n // 不是高频操作直接使用 set\n this.set('visible', false);\n this.onCanvasChange('hide');\n return this;\n };\n Element.prototype.setZIndex = function (zIndex) {\n this.set('zIndex', zIndex);\n var parent = this.getParent();\n if (parent) {\n // 改变 zIndex 不应该立即触发渲染 (调用 onCanvasChange('zIndex')),需要经过 sort 再触发\n parent.sort();\n }\n return this;\n };\n Element.prototype.toFront = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.push(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.toBack = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.unshift(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.remove = function (destroy) {\n if (destroy === void 0) { destroy = true; }\n var parent = this.getParent();\n if (parent) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"removeFromArray\"])(parent.getChildren(), this);\n if (!parent.get('clearing')) {\n // 如果父元素正在清理,当前元素不触发 remove\n this.onCanvasChange('remove');\n }\n }\n else {\n this.onCanvasChange('remove');\n }\n if (destroy) {\n this.destroy();\n }\n };\n Element.prototype.resetMatrix = function () {\n this.attr(MATRIX, this.getDefaultMatrix());\n this.onCanvasChange('matrix');\n };\n Element.prototype.getMatrix = function () {\n return this.attr(MATRIX);\n };\n Element.prototype.setMatrix = function (m) {\n this.attr(MATRIX, m);\n this.onCanvasChange('matrix');\n };\n // 获取总的 matrix\n Element.prototype.getTotalMatrix = function () {\n var totalMatrix = this.cfg.totalMatrix;\n if (!totalMatrix) {\n var currentMatrix = this.attr('matrix');\n var parentMatrix = this.cfg.parentMatrix;\n if (parentMatrix && currentMatrix) {\n totalMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyMatrix\"])(parentMatrix, currentMatrix);\n }\n else {\n totalMatrix = currentMatrix || parentMatrix;\n }\n this.set('totalMatrix', totalMatrix);\n }\n return totalMatrix;\n };\n // 上层分组设置 matrix\n Element.prototype.applyMatrix = function (matrix) {\n var currentMatrix = this.attr('matrix');\n var totalMatrix = null;\n if (matrix && currentMatrix) {\n totalMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyMatrix\"])(matrix, currentMatrix);\n }\n else {\n totalMatrix = currentMatrix || matrix;\n }\n this.set('totalMatrix', totalMatrix);\n this.set('parentMatrix', matrix);\n };\n /**\n * @protected\n * 获取默认的矩阵\n * @returns {number[]|null} 默认的矩阵\n */\n Element.prototype.getDefaultMatrix = function () {\n return null;\n };\n // 将向量应用设置的矩阵\n Element.prototype.applyToMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n return Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyVec2\"])(matrix, v);\n }\n return v;\n };\n // 根据设置的矩阵,将向量转换相对于图形/分组的位置\n Element.prototype.invertFromMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n var invertMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"invert\"])(matrix);\n if (invertMatrix) {\n return Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyVec2\"])(invertMatrix, v);\n }\n }\n return v;\n };\n // 设置 clip\n Element.prototype.setClip = function (clipCfg) {\n var canvas = this.getCanvas();\n // 应该只设置当前元素的 clip,不应该去修改 clip 本身,方便 clip 被复用\n // TODO: setClip 的传参既 shape 配置,也支持 shape 对象\n // const preShape = this.get('clipShape');\n // if (preShape) {\n // // 将之前的 clipShape 销毁\n // preShape.destroy();\n // }\n var clipShape = null;\n // 如果配置项为 null,则不移除 clipShape\n if (clipCfg) {\n var ShapeBase = this.getShapeBase();\n var shapeType = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(clipCfg.type);\n var Cons = ShapeBase[shapeType];\n if (Cons) {\n clipShape = new Cons({\n type: clipCfg.type,\n isClipShape: true,\n applyTo: this,\n attrs: clipCfg.attrs,\n canvas: canvas,\n });\n }\n }\n this.set('clipShape', clipShape);\n this.onCanvasChange('clip');\n return clipShape;\n };\n Element.prototype.getClip = function () {\n // 高频率调用的地方直接使用 this.cfg.xxx\n var clipShape = this.cfg.clipShape;\n // 未设置时返回 Null,保证一致性\n if (!clipShape) {\n return null;\n }\n return clipShape;\n };\n Element.prototype.clone = function () {\n var _this = this;\n var originAttrs = this.attrs;\n var attrs = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(originAttrs, function (i, k) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(originAttrs[k])) {\n attrs[k] = _cloneArrayAttr(originAttrs[k]);\n }\n else {\n attrs[k] = originAttrs[k];\n }\n });\n var cons = this.constructor;\n // @ts-ignore\n var clone = new cons({ attrs: attrs });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(CLONE_CFGS, function (cfgName) {\n clone.set(cfgName, _this.get(cfgName));\n });\n return clone;\n };\n Element.prototype.destroy = function () {\n var destroyed = this.destroyed;\n if (destroyed) {\n return;\n }\n this.attrs = {};\n _super.prototype.destroy.call(this);\n // this.onCanvasChange('destroy');\n };\n /**\n * 是否处于动画暂停状态\n * @return {boolean} 是否处于动画暂停状态\n */\n Element.prototype.isAnimatePaused = function () {\n return this.get('_pause').isPaused;\n };\n /**\n * 执行动画,支持多种函数签名\n * 1. animate(toAttrs: ElementAttrs, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 2. animate(onFrame: OnFrame, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 3. animate(toAttrs: ElementAttrs, cfg: AnimateCfg)\n * 4. animate(onFrame: OnFrame, cfg: AnimateCfg)\n * 各个参数的含义为:\n * toAttrs 动画最终状态\n * onFrame 自定义帧动画函数\n * duration 动画执行时间\n * easing 动画缓动效果\n * callback 动画执行后的回调\n * delay 动画延迟时间\n */\n Element.prototype.animate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this.get('timeline') && !this.get('canvas')) {\n return;\n }\n this.set('animating', true);\n var timeline = this.get('timeline');\n if (!timeline) {\n timeline = this.get('canvas').get('timeline');\n this.set('timeline', timeline);\n }\n var animations = this.get('animations') || [];\n // 初始化 tick\n if (!timeline.timer) {\n timeline.initTimer();\n }\n var toAttrs = args[0], duration = args[1], _a = args[2], easing = _a === void 0 ? 'easeLinear' : _a, _b = args[3], callback = _b === void 0 ? _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"] : _b, _c = args[4], delay = _c === void 0 ? 0 : _c;\n var onFrame;\n var repeat;\n var pauseCallback;\n var resumeCallback;\n var animateCfg;\n // 第二个参数,既可以是动画最终状态 toAttrs,也可以是自定义帧动画函数 onFrame\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(toAttrs)) {\n onFrame = toAttrs;\n toAttrs = {};\n }\n else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(toAttrs) && toAttrs.onFrame) {\n // 兼容 3.0 中的写法,onFrame 和 repeat 可在 toAttrs 中设置\n onFrame = toAttrs.onFrame;\n repeat = toAttrs.repeat;\n }\n // 第二个参数,既可以是执行时间 duration,也可以是动画参数 animateCfg\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(duration)) {\n animateCfg = duration;\n duration = animateCfg.duration;\n easing = animateCfg.easing || 'easeLinear';\n delay = animateCfg.delay || 0;\n // animateCfg 中的设置优先级更高\n repeat = animateCfg.repeat || repeat || false;\n callback = animateCfg.callback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n pauseCallback = animateCfg.pauseCallback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n resumeCallback = animateCfg.resumeCallback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n }\n else {\n // 第四个参数,既可以是回调函数 callback,也可以是延迟时间 delay\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(callback)) {\n delay = callback;\n callback = null;\n }\n // 第三个参数,既可以是缓动参数 easing,也可以是回调函数 callback\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(easing)) {\n callback = easing;\n easing = 'easeLinear';\n }\n else {\n easing = easing || 'easeLinear';\n }\n }\n var formatToAttrs = getFormatToAttrs(toAttrs, this);\n var animation = {\n fromAttrs: getFormatFromAttrs(formatToAttrs, this),\n toAttrs: formatToAttrs,\n duration: duration,\n easing: easing,\n repeat: repeat,\n callback: callback,\n pauseCallback: pauseCallback,\n resumeCallback: resumeCallback,\n delay: delay,\n startTime: timeline.getTime(),\n id: Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"uniqueId\"])(),\n onFrame: onFrame,\n pathFormatted: false,\n };\n // 如果动画元素队列中已经有这个图形了\n if (animations.length > 0) {\n // 先检查是否需要合并属性。若有相同的动画,将该属性从前一个动画中删除,直接用后一个动画中\n animations = checkExistedAttrs(animations, animation);\n }\n else {\n // 否则将图形添加到动画元素队列\n timeline.addAnimator(this);\n }\n animations.push(animation);\n this.set('animations', animations);\n this.set('_pause', { isPaused: false });\n };\n /**\n * 停止动画\n * @param {boolean} toEnd 是否到动画的最终状态\n */\n Element.prototype.stopAnimate = function (toEnd) {\n var _this = this;\n if (toEnd === void 0) { toEnd = true; }\n var animations = this.get('animations');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n // 将动画执行到最后一帧\n if (toEnd) {\n if (animation.onFrame) {\n _this.attr(animation.onFrame(1));\n }\n else {\n _this.attr(animation.toAttrs);\n }\n }\n if (animation.callback) {\n // 动画停止时的回调\n animation.callback();\n }\n });\n this.set('animating', false);\n this.set('animations', []);\n };\n /**\n * 暂停动画\n */\n Element.prototype.pauseAnimate = function () {\n var timeline = this.get('timeline');\n var animations = this.get('animations');\n var pauseTime = timeline.getTime();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n animation._paused = true;\n animation._pauseTime = pauseTime;\n if (animation.pauseCallback) {\n // 动画暂停时的回调\n animation.pauseCallback();\n }\n });\n // 记录下是在什么时候暂停的\n this.set('_pause', {\n isPaused: true,\n pauseTime: pauseTime,\n });\n return this;\n };\n /**\n * 恢复动画\n */\n Element.prototype.resumeAnimate = function () {\n var timeline = this.get('timeline');\n var current = timeline.getTime();\n var animations = this.get('animations');\n var pauseTime = this.get('_pause').pauseTime;\n // 之后更新属性需要计算动画已经执行的时长,如果暂停了,就把初始时间调后\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n animation.startTime = animation.startTime + (current - pauseTime);\n animation._paused = false;\n animation._pauseTime = null;\n if (animation.resumeCallback) {\n animation.resumeCallback();\n }\n });\n this.set('_pause', {\n isPaused: false,\n });\n this.set('animations', animations);\n return this;\n };\n /**\n * 触发委托事件\n * @param {string} type 事件类型\n * @param {GraphEvent} eventObj 事件对象\n */\n Element.prototype.emitDelegation = function (type, eventObj) {\n var _this = this;\n var paths = eventObj.propagationPath;\n var events = this.getEvents();\n var relativeShape;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n }\n else if (type === 'mouseleave') {\n relativeShape = eventObj.toShape;\n }\n var _loop_1 = function (i) {\n var element = paths[i];\n // 暂定跟 name 绑定\n var name_1 = element.get('name');\n if (name_1) {\n // 第一个 mouseenter 和 mouseleave 的停止即可,因为后面的都是前面的 Parent\n if (\n // 只有 element 是 Group 或者 Canvas 的时候,才需要判断 isParent\n (element.isGroup() || (element.isCanvas && element.isCanvas())) &&\n relativeShape &&\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isParent\"])(element, relativeShape)) {\n return \"break\";\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(name_1)) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(name_1, function (subName) {\n _this.emitDelegateEvent(element, subName, eventObj);\n });\n }\n else {\n this_1.emitDelegateEvent(element, name_1, eventObj);\n }\n }\n };\n var this_1 = this;\n // 至少有一个对象,且第一个对象为 shape\n for (var i = 0; i < paths.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n };\n Element.prototype.emitDelegateEvent = function (element, name, eventObj) {\n var events = this.getEvents();\n // 事件委托的形式 name:type\n var eventName = name + DELEGATION_SPLIT + eventObj.type;\n if (events[eventName] || events[WILDCARD]) {\n // 对于通配符 *,事件名称 = 委托事件名称\n eventObj.name = eventName;\n eventObj.currentTarget = element;\n eventObj.delegateTarget = this;\n // 将委托事件的监听对象 delegateObject 挂载到事件对象上\n eventObj.delegateObject = element.get('delegateObject');\n this.emit(eventName, eventObj);\n }\n };\n /**\n * 移动元素\n * @param {number} translateX 水平移动距离\n * @param {number} translateY 垂直移动距离\n * @return {IElement} 元素\n */\n Element.prototype.translate = function (translateX, translateY) {\n if (translateX === void 0) { translateX = 0; }\n if (translateY === void 0) { translateY = 0; }\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['t', translateX, translateY]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 移动元素到目标位置\n * @param {number} targetX 目标位置的水平坐标\n * @param {number} targetX 目标位置的垂直坐标\n * @return {IElement} 元素\n */\n Element.prototype.move = function (targetX, targetY) {\n var x = this.attr('x') || 0;\n var y = this.attr('y') || 0;\n this.translate(targetX - x, targetY - y);\n return this;\n };\n /**\n * 移动元素到目标位置,等价于 move 方法。由于 moveTo 的语义性更强,因此在文档中推荐使用 moveTo 方法\n * @param {number} targetX 目标位置的 x 轴坐标\n * @param {number} targetY 目标位置的 y 轴坐标\n * @return {IElement} 元素\n */\n Element.prototype.moveTo = function (targetX, targetY) {\n return this.move(targetX, targetY);\n };\n /**\n * 缩放元素\n * @param {number} ratioX 水平缩放比例\n * @param {number} ratioY 垂直缩放比例\n * @return {IElement} 元素\n */\n Element.prototype.scale = function (ratioX, ratioY) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['s', ratioX, ratioY || ratioX]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以画布左上角 (0, 0) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotate = function (radian) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['r', radian]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以起始点为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtStart = function (rotate) {\n var _a = this.attr(), x = _a.x, y = _a.y;\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以任意点 (x, y) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtPoint = function (x, y, rotate) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n };\n return Element;\n}(_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Element);\n//# sourceMappingURL=element.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9lbGVtZW50LmpzP2NjYWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDbUY7QUFDN0U7QUFDaUI7QUFDYTtBQUM1QztBQUMxQixnQkFBZ0IscURBQUc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1IsaURBQWlELDBEQUFPO0FBQ3hEO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFHO0FBQ1g7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0EsOERBQThEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBLG9EQUFvRDtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsSUFBSTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsSUFBSTtBQUNuQixlQUFlLElBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsZ0JBQWdCO0FBQ2pEO0FBQ0E7QUFDQSxZQUFZLGtFQUFlO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixtRUFBYztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixtRUFBYztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixjQUFjO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUVBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkRBQU07QUFDckM7QUFDQSx1QkFBdUIsaUVBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDZEQUFVO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1osZ0JBQWdCLDBEQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLDhCQUE4QixlQUFlO0FBQzdDLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixRQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0pBQXNKLCtDQUFJO0FBQzFKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNkRBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QywrQ0FBSTtBQUNsRCx3REFBd0QsK0NBQUk7QUFDNUQsMERBQTBELCtDQUFJO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw2REFBVTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGtCQUFrQjtBQUM5QztBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGNBQWM7QUFDN0M7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCLGdCQUFnQixXQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFRO0FBQzVCO0FBQ0E7QUFDQSxvQkFBb0IsMERBQU87QUFDM0Isb0JBQW9CLHVEQUFJO0FBQ3hCO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsa0JBQWtCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBLG9DQUFvQyxnQkFBZ0I7QUFDcEQsb0NBQW9DLGdCQUFnQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQUk7QUFDUyxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYWJzdHJhY3QvZWxlbWVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCwgaXNFcXVhbCwgaXNGdW5jdGlvbiwgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc0FycmF5LCBub29wLCBtaXgsIHVwcGVyRmlyc3QsIHVuaXF1ZUlkIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBleHQgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyByZW1vdmVGcm9tQXJyYXksIGlzUGFyZW50IH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IG11bHRpcGx5TWF0cml4LCBtdWx0aXBseVZlYzIsIGludmVydCB9IGZyb20gJy4uL3V0aWwvbWF0cml4JztcbmltcG9ydCBCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbnZhciBNQVRSSVggPSAnbWF0cml4JztcbnZhciBDTE9ORV9DRkdTID0gWyd6SW5kZXgnLCAnY2FwdHVyZScsICd2aXNpYmxlJywgJ3R5cGUnXTtcbi8vIOWPr+S7peWcqCB0b0F0dHJzIOS4reiuvue9ru+8jOS9huS4jeWxnuS6jue7mOWbvuWxnuaAp+eahOWtl+autVxudmFyIFJFU0VSVkVEX1BPUlBTID0gWydyZXBlYXQnXTtcbnZhciBERUxFR0FUSU9OX1NQTElUID0gJzonO1xudmFyIFdJTERDQVJEID0gJyonO1xuLy8g6ZyA6KaB6ICD6JmR5pWw57uE5bWM5aWX5pWw57uE55qE5Zy65pmvXG4vLyDmlbDnu4TltYzlpZflr7nosaHnmoTlnLrmma/kuI3ogIPomZFcbmZ1bmN0aW9uIF9jbG9uZUFycmF5QXR0cihhcnIpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzQXJyYXkoYXJyW2ldKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goW10uY29uY2F0KGFycltpXSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goYXJyW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0Rm9ybWF0RnJvbUF0dHJzKHRvQXR0cnMsIHNoYXBlKSB7XG4gICAgdmFyIGZyb21BdHRycyA9IHt9O1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHJzO1xuICAgIGZvciAodmFyIGsgaW4gdG9BdHRycykge1xuICAgICAgICBmcm9tQXR0cnNba10gPSBhdHRyc1trXTtcbiAgICB9XG4gICAgcmV0dXJuIGZyb21BdHRycztcbn1cbmZ1bmN0aW9uIGdldEZvcm1hdFRvQXR0cnMocHJvcHMsIHNoYXBlKSB7XG4gICAgdmFyIHRvQXR0cnMgPSB7fTtcbiAgICB2YXIgYXR0cnMgPSBzaGFwZS5hdHRyKCk7XG4gICAgZWFjaChwcm9wcywgZnVuY3Rpb24gKHYsIGspIHtcbiAgICAgICAgaWYgKFJFU0VSVkVEX1BPUlBTLmluZGV4T2YoaykgPT09IC0xICYmICFpc0VxdWFsKGF0dHJzW2tdLCB2KSkge1xuICAgICAgICAgICAgdG9BdHRyc1trXSA9IHY7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdG9BdHRycztcbn1cbmZ1bmN0aW9uIGNoZWNrRXhpc3RlZEF0dHJzKGFuaW1hdGlvbnMsIGFuaW1hdGlvbikge1xuICAgIGlmIChhbmltYXRpb24ub25GcmFtZSkge1xuICAgICAgICByZXR1cm4gYW5pbWF0aW9ucztcbiAgICB9XG4gICAgdmFyIHN0YXJ0VGltZSA9IGFuaW1hdGlvbi5zdGFydFRpbWUsIGRlbGF5ID0gYW5pbWF0aW9uLmRlbGF5LCBkdXJhdGlvbiA9IGFuaW1hdGlvbi5kdXJhdGlvbjtcbiAgICB2YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuICAgIGVhY2goYW5pbWF0aW9ucywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgLy8g5ZCO5LiA5Liq5Yqo55S75byA5aeL5omn6KGM55qE5pe26Ze0IDwg5YmN5LiA5Liq5Yqo55S755qE57uT5p2f5pe26Ze0ICYmIOWQjuS4gOS4quWKqOeUu+eahOaJp+ihjOaXtumXtCA+IOWJjeS4gOS4quWKqOeUu+eahOW7tui/n1xuICAgICAgICBpZiAoc3RhcnRUaW1lICsgZGVsYXkgPCBpdGVtLnN0YXJ0VGltZSArIGl0ZW0uZGVsYXkgKyBpdGVtLmR1cmF0aW9uICYmIGR1cmF0aW9uID4gaXRlbS5kZWxheSkge1xuICAgICAgICAgICAgZWFjaChhbmltYXRpb24udG9BdHRycywgZnVuY3Rpb24gKHYsIGspIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLnRvQXR0cnMsIGspKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtLnRvQXR0cnNba107XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtLmZyb21BdHRyc1trXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhbmltYXRpb25zO1xufVxudmFyIEVsZW1lbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEVsZW1lbnQsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRWxlbWVudChjZmcpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgY2ZnKSB8fCB0aGlzO1xuICAgICAgICAvKipcbiAgICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAgKiDlm77lvaLlsZ7mgKdcbiAgICAgICAgICogQHR5cGUge1NoYXBlQXR0cnN9XG4gICAgICAgICAqL1xuICAgICAgICBfdGhpcy5hdHRycyA9IHt9O1xuICAgICAgICB2YXIgYXR0cnMgPSBfdGhpcy5nZXREZWZhdWx0QXR0cnMoKTtcbiAgICAgICAgbWl4KGF0dHJzLCBjZmcuYXR0cnMpO1xuICAgICAgICBfdGhpcy5hdHRycyA9IGF0dHJzO1xuICAgICAgICBfdGhpcy5pbml0QXR0cnMoYXR0cnMpO1xuICAgICAgICBfdGhpcy5pbml0QW5pbWF0ZSgpOyAvLyDliJ3lp4vljJbliqjnlLtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvLyBvdmVycmlkZVxuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgICAgICAgIHpJbmRleDogMCxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDojrflj5bpu5jorqTnmoTlsZ7nm7hcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXRyaXg6IHRoaXMuZ2V0RGVmYXVsdE1hdHJpeCgpLFxuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUub25DYW52YXNDaGFuZ2UgPSBmdW5jdGlvbiAoY2hhbmdlVHlwZSkgeyB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDliJ3lp4vljJblsZ7mgKfvvIzmnInkupvlsZ7mgKfpnIDopoHliqDlt6VcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gYXR0cnMg5bGe5oCn5YC8XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7IH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOWIneWni+WMluWKqOeUu1xuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmluaXRBbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgnYW5pbWFibGUnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXQoJ2FuaW1hdGluZycsIGZhbHNlKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmlzR3JvdXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdwYXJlbnQnKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldENhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmF0dHIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmFtZSA9IGFyZ3NbMF0sIHZhbHVlID0gYXJnc1sxXTtcbiAgICAgICAgaWYgKCFuYW1lKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXR0cnM7XG4gICAgICAgIGlmIChpc09iamVjdChuYW1lKSkge1xuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBuYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyKGssIG5hbWVba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hZnRlckF0dHJzQ2hhbmdlKG5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aGlzLnNldEF0dHIobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5hZnRlckF0dHJzQ2hhbmdlKChfYSA9IHt9LFxuICAgICAgICAgICAgICAgIF9hW25hbWVdID0gdmFsdWUsXG4gICAgICAgICAgICAgICAgX2EpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmF0dHJzW25hbWVdO1xuICAgIH07XG4gICAgLy8g5piv5ZCm6KKr6KOB5Ymq77yM6KKr6KOB5Ymq5YiZ5LiN5pi+56S677yM5LiN5Y+C5LiO5ou+5Y+WXG4gICAgRWxlbWVudC5wcm90b3R5cGUuaXNDbGlwcGVkID0gZnVuY3Rpb24gKHJlZlgsIHJlZlkpIHtcbiAgICAgICAgdmFyIGNsaXAgPSB0aGlzLmdldENsaXAoKTtcbiAgICAgICAgcmV0dXJuIGNsaXAgJiYgIWNsaXAuaXNIaXQocmVmWCwgcmVmWSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlhoXpg6jorr7nva7lsZ7mgKflgLznmoTmjqXlj6NcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSDlsZ7mgKflkI1cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsdWUg5bGe5oCn5YC8XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0ciA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgICAgICB2YXIgb3JpZ2luVmFsdWUgPSB0aGlzLmF0dHJzW25hbWVdO1xuICAgICAgICBpZiAob3JpZ2luVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmF0dHJzW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLm9uQXR0ckNoYW5nZShuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5bGe5oCn5YC85Y+R55Sf5pS55Y+YXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUg5bGe5oCn5ZCNXG4gICAgICogQHBhcmFtIHthbnl9IHZhbHVlIOWxnuaAp+WAvFxuICAgICAqIEBwYXJhbSB7YW55fSBvcmlnaW5WYWx1ZSDlsZ7mgKflgLxcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnbWF0cml4Jykge1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3RvdGFsTWF0cml4JywgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOWxnuaAp+abtOaUueWQjumcgOimgeWBmueahOS6i+aDhVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5hZnRlckF0dHJzQ2hhbmdlID0gZnVuY3Rpb24gKHRhcmdldEF0dHJzKSB7XG4gICAgICAgIGlmICh0aGlzLmNmZy5pc0NsaXBTaGFwZSkge1xuICAgICAgICAgICAgdmFyIGFwcGx5VG8gPSB0aGlzLmNmZy5hcHBseVRvO1xuICAgICAgICAgICAgaWYgKGFwcGx5VG8pIHtcbiAgICAgICAgICAgICAgICBhcHBseVRvLm9uQ2FudmFzQ2hhbmdlKCdjbGlwJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdhdHRyJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnNob3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIOS4jeaYr+mrmOmikeaTjeS9nOebtOaOpeS9v+eUqCBzZXRcbiAgICAgICAgdGhpcy5zZXQoJ3Zpc2libGUnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnc2hvdycpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmhpZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIOS4jeaYr+mrmOmikeaTjeS9nOebtOaOpeS9v+eUqCBzZXRcbiAgICAgICAgdGhpcy5zZXQoJ3Zpc2libGUnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ2hpZGUnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5zZXRaSW5kZXggPSBmdW5jdGlvbiAoekluZGV4KSB7XG4gICAgICAgIHRoaXMuc2V0KCd6SW5kZXgnLCB6SW5kZXgpO1xuICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKTtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgLy8g5pS55Y+YIHpJbmRleCDkuI3lupTor6Xnq4vljbPop6blj5HmuLLmn5MgKOiwg+eUqCBvbkNhbnZhc0NoYW5nZSgnekluZGV4Jykp77yM6ZyA6KaB57uP6L+HIHNvcnQg5YaN6Kem5Y+RXG4gICAgICAgICAgICBwYXJlbnQuc29ydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUudG9Gcm9udCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG4gICAgICAgIGlmICghcGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50LmdldENoaWxkcmVuKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgaW5kZXggPSBjaGlsZHJlbi5pbmRleE9mKHRoaXMpO1xuICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBjaGlsZHJlbi5wdXNoKHRoaXMpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCd6SW5kZXgnKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnRvQmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG4gICAgICAgIGlmICghcGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50LmdldENoaWxkcmVuKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgaW5kZXggPSBjaGlsZHJlbi5pbmRleE9mKHRoaXMpO1xuICAgICAgICBjaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBjaGlsZHJlbi51bnNoaWZ0KHRoaXMpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCd6SW5kZXgnKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChkZXN0cm95KSB7XG4gICAgICAgIGlmIChkZXN0cm95ID09PSB2b2lkIDApIHsgZGVzdHJveSA9IHRydWU7IH1cbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheShwYXJlbnQuZ2V0Q2hpbGRyZW4oKSwgdGhpcyk7XG4gICAgICAgICAgICBpZiAoIXBhcmVudC5nZXQoJ2NsZWFyaW5nJykpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzniLblhYPntKDmraPlnKjmuIXnkIbvvIzlvZPliY3lhYPntKDkuI3op6blj5EgcmVtb3ZlXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgncmVtb3ZlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdyZW1vdmUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVzdHJveSkge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnJlc2V0TWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmF0dHIoTUFUUklYLCB0aGlzLmdldERlZmF1bHRNYXRyaXgoKSk7XG4gICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ21hdHJpeCcpO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuZ2V0TWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hdHRyKE1BVFJJWCk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5zZXRNYXRyaXggPSBmdW5jdGlvbiAobSkge1xuICAgICAgICB0aGlzLmF0dHIoTUFUUklYLCBtKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnbWF0cml4Jyk7XG4gICAgfTtcbiAgICAvLyDojrflj5bmgLvnmoQgbWF0cml4XG4gICAgRWxlbWVudC5wcm90b3R5cGUuZ2V0VG90YWxNYXRyaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0b3RhbE1hdHJpeCA9IHRoaXMuY2ZnLnRvdGFsTWF0cml4O1xuICAgICAgICBpZiAoIXRvdGFsTWF0cml4KSB7XG4gICAgICAgICAgICB2YXIgY3VycmVudE1hdHJpeCA9IHRoaXMuYXR0cignbWF0cml4Jyk7XG4gICAgICAgICAgICB2YXIgcGFyZW50TWF0cml4ID0gdGhpcy5jZmcucGFyZW50TWF0cml4O1xuICAgICAgICAgICAgaWYgKHBhcmVudE1hdHJpeCAmJiBjdXJyZW50TWF0cml4KSB7XG4gICAgICAgICAgICAgICAgdG90YWxNYXRyaXggPSBtdWx0aXBseU1hdHJpeChwYXJlbnRNYXRyaXgsIGN1cnJlbnRNYXRyaXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdG90YWxNYXRyaXggPSBjdXJyZW50TWF0cml4IHx8IHBhcmVudE1hdHJpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0KCd0b3RhbE1hdHJpeCcsIHRvdGFsTWF0cml4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG90YWxNYXRyaXg7XG4gICAgfTtcbiAgICAvLyDkuIrlsYLliIbnu4Torr7nva4gbWF0cml4XG4gICAgRWxlbWVudC5wcm90b3R5cGUuYXBwbHlNYXRyaXggPSBmdW5jdGlvbiAobWF0cml4KSB7XG4gICAgICAgIHZhciBjdXJyZW50TWF0cml4ID0gdGhpcy5hdHRyKCdtYXRyaXgnKTtcbiAgICAgICAgdmFyIHRvdGFsTWF0cml4ID0gbnVsbDtcbiAgICAgICAgaWYgKG1hdHJpeCAmJiBjdXJyZW50TWF0cml4KSB7XG4gICAgICAgICAgICB0b3RhbE1hdHJpeCA9IG11bHRpcGx5TWF0cml4KG1hdHJpeCwgY3VycmVudE1hdHJpeCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0b3RhbE1hdHJpeCA9IGN1cnJlbnRNYXRyaXggfHwgbWF0cml4O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCd0b3RhbE1hdHJpeCcsIHRvdGFsTWF0cml4KTtcbiAgICAgICAgdGhpcy5zZXQoJ3BhcmVudE1hdHJpeCcsIG1hdHJpeCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog6I635Y+W6buY6K6k55qE55+p6Zi1XG4gICAgICogQHJldHVybnMge251bWJlcltdfG51bGx9IOm7mOiupOeahOefqemYtVxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldERlZmF1bHRNYXRyaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgLy8g5bCG5ZCR6YeP5bqU55So6K6+572u55qE55+p6Zi1XG4gICAgRWxlbWVudC5wcm90b3R5cGUuYXBwbHlUb01hdHJpeCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBtYXRyaXggPSB0aGlzLmF0dHIoJ21hdHJpeCcpO1xuICAgICAgICBpZiAobWF0cml4KSB7XG4gICAgICAgICAgICByZXR1cm4gbXVsdGlwbHlWZWMyKG1hdHJpeCwgdik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfTtcbiAgICAvLyDmoLnmja7orr7nva7nmoTnn6npmLXvvIzlsIblkJHph4/ovazmjaLnm7jlr7nkuo7lm77lvaIv5YiG57uE55qE5L2N572uXG4gICAgRWxlbWVudC5wcm90b3R5cGUuaW52ZXJ0RnJvbU1hdHJpeCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBtYXRyaXggPSB0aGlzLmF0dHIoJ21hdHJpeCcpO1xuICAgICAgICBpZiAobWF0cml4KSB7XG4gICAgICAgICAgICB2YXIgaW52ZXJ0TWF0cml4ID0gaW52ZXJ0KG1hdHJpeCk7XG4gICAgICAgICAgICBpZiAoaW52ZXJ0TWF0cml4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5VmVjMihpbnZlcnRNYXRyaXgsIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2O1xuICAgIH07XG4gICAgLy8g6K6+572uIGNsaXBcbiAgICBFbGVtZW50LnByb3RvdHlwZS5zZXRDbGlwID0gZnVuY3Rpb24gKGNsaXBDZmcpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0Q2FudmFzKCk7XG4gICAgICAgIC8vIOW6lOivpeWPquiuvue9ruW9k+WJjeWFg+e0oOeahCBjbGlw77yM5LiN5bqU6K+l5Y675L+u5pS5IGNsaXAg5pys6Lqr77yM5pa55L6/IGNsaXAg6KKr5aSN55SoXG4gICAgICAgIC8vIFRPRE86IHNldENsaXAg55qE5Lyg5Y+C5peiIHNoYXBlIOmFjee9ru+8jOS5n+aUr+aMgSBzaGFwZSDlr7nosaFcbiAgICAgICAgLy8gY29uc3QgcHJlU2hhcGUgPSB0aGlzLmdldCgnY2xpcFNoYXBlJyk7XG4gICAgICAgIC8vIGlmIChwcmVTaGFwZSkge1xuICAgICAgICAvLyAgIC8vIOWwhuS5i+WJjeeahCBjbGlwU2hhcGUg6ZSA5q+BXG4gICAgICAgIC8vICAgcHJlU2hhcGUuZGVzdHJveSgpO1xuICAgICAgICAvLyB9XG4gICAgICAgIHZhciBjbGlwU2hhcGUgPSBudWxsO1xuICAgICAgICAvLyDlpoLmnpzphY3nva7pobnkuLogbnVsbO+8jOWImeS4jeenu+mZpCBjbGlwU2hhcGVcbiAgICAgICAgaWYgKGNsaXBDZmcpIHtcbiAgICAgICAgICAgIHZhciBTaGFwZUJhc2UgPSB0aGlzLmdldFNoYXBlQmFzZSgpO1xuICAgICAgICAgICAgdmFyIHNoYXBlVHlwZSA9IHVwcGVyRmlyc3QoY2xpcENmZy50eXBlKTtcbiAgICAgICAgICAgIHZhciBDb25zID0gU2hhcGVCYXNlW3NoYXBlVHlwZV07XG4gICAgICAgICAgICBpZiAoQ29ucykge1xuICAgICAgICAgICAgICAgIGNsaXBTaGFwZSA9IG5ldyBDb25zKHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogY2xpcENmZy50eXBlLFxuICAgICAgICAgICAgICAgICAgICBpc0NsaXBTaGFwZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlUbzogdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IGNsaXBDZmcuYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgIGNhbnZhczogY2FudmFzLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCdjbGlwU2hhcGUnLCBjbGlwU2hhcGUpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdjbGlwJyk7XG4gICAgICAgIHJldHVybiBjbGlwU2hhcGU7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXRDbGlwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDpq5jpopHnjofosIPnlKjnmoTlnLDmlrnnm7TmjqXkvb/nlKggdGhpcy5jZmcueHh4XG4gICAgICAgIHZhciBjbGlwU2hhcGUgPSB0aGlzLmNmZy5jbGlwU2hhcGU7XG4gICAgICAgIC8vIOacquiuvue9ruaXtui/lOWbniBOdWxs77yM5L+d6K+B5LiA6Ie05oCnXG4gICAgICAgIGlmICghY2xpcFNoYXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xpcFNoYXBlO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBvcmlnaW5BdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIHZhciBhdHRycyA9IHt9O1xuICAgICAgICBlYWNoKG9yaWdpbkF0dHJzLCBmdW5jdGlvbiAoaSwgaykge1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkob3JpZ2luQXR0cnNba10pKSB7XG4gICAgICAgICAgICAgICAgYXR0cnNba10gPSBfY2xvbmVBcnJheUF0dHIob3JpZ2luQXR0cnNba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYXR0cnNba10gPSBvcmlnaW5BdHRyc1trXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjb25zID0gdGhpcy5jb25zdHJ1Y3RvcjtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB2YXIgY2xvbmUgPSBuZXcgY29ucyh7IGF0dHJzOiBhdHRycyB9KTtcbiAgICAgICAgZWFjaChDTE9ORV9DRkdTLCBmdW5jdGlvbiAoY2ZnTmFtZSkge1xuICAgICAgICAgICAgY2xvbmUuc2V0KGNmZ05hbWUsIF90aGlzLmdldChjZmdOYW1lKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2xvbmU7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZGVzdHJveWVkID0gdGhpcy5kZXN0cm95ZWQ7XG4gICAgICAgIGlmIChkZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmF0dHJzID0ge307XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuICAgICAgICAvLyB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdkZXN0cm95Jyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDmmK/lkKblpITkuo7liqjnlLvmmoLlgZznirbmgIFcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSDmmK/lkKblpITkuo7liqjnlLvmmoLlgZznirbmgIFcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5pc0FuaW1hdGVQYXVzZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnX3BhdXNlJykuaXNQYXVzZWQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDmiafooYzliqjnlLvvvIzmlK/mjIHlpJrnp43lh73mlbDnrb7lkI1cbiAgICAgKiAxLiBhbmltYXRlKHRvQXR0cnM6IEVsZW1lbnRBdHRycywgZHVyYXRpb246IG51bWJlciwgZWFzaW5nPzogc3RyaW5nLCBjYWxsYmFjaz86ICgpID0+IHZvaWQsIGRlbGF5PzogbnVtYmVyKVxuICAgICAqIDIuIGFuaW1hdGUob25GcmFtZTogT25GcmFtZSwgZHVyYXRpb246IG51bWJlciwgZWFzaW5nPzogc3RyaW5nLCBjYWxsYmFjaz86ICgpID0+IHZvaWQsIGRlbGF5PzogbnVtYmVyKVxuICAgICAqIDMuIGFuaW1hdGUodG9BdHRyczogRWxlbWVudEF0dHJzLCBjZmc6IEFuaW1hdGVDZmcpXG4gICAgICogNC4gYW5pbWF0ZShvbkZyYW1lOiBPbkZyYW1lLCBjZmc6IEFuaW1hdGVDZmcpXG4gICAgICog5ZCE5Liq5Y+C5pWw55qE5ZCr5LmJ5Li6OlxuICAgICAqICAgdG9BdHRycyAg5Yqo55S75pyA57uI54q25oCBXG4gICAgICogICBvbkZyYW1lICDoh6rlrprkuYnluKfliqjnlLvlh73mlbBcbiAgICAgKiAgIGR1cmF0aW9uIOWKqOeUu+aJp+ihjOaXtumXtFxuICAgICAqICAgZWFzaW5nICAg5Yqo55S757yT5Yqo5pWI5p6cXG4gICAgICogICBjYWxsYmFjayDliqjnlLvmiafooYzlkI7nmoTlm57osINcbiAgICAgKiAgIGRlbGF5ICAgIOWKqOeUu+W7tui/n+aXtumXtFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmdldCgndGltZWxpbmUnKSAmJiAhdGhpcy5nZXQoJ2NhbnZhcycpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXQoJ2FuaW1hdGluZycsIHRydWUpO1xuICAgICAgICB2YXIgdGltZWxpbmUgPSB0aGlzLmdldCgndGltZWxpbmUnKTtcbiAgICAgICAgaWYgKCF0aW1lbGluZSkge1xuICAgICAgICAgICAgdGltZWxpbmUgPSB0aGlzLmdldCgnY2FudmFzJykuZ2V0KCd0aW1lbGluZScpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3RpbWVsaW5lJywgdGltZWxpbmUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhbmltYXRpb25zID0gdGhpcy5nZXQoJ2FuaW1hdGlvbnMnKSB8fCBbXTtcbiAgICAgICAgLy8g5Yid5aeL5YyWIHRpY2tcbiAgICAgICAgaWYgKCF0aW1lbGluZS50aW1lcikge1xuICAgICAgICAgICAgdGltZWxpbmUuaW5pdFRpbWVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvQXR0cnMgPSBhcmdzWzBdLCBkdXJhdGlvbiA9IGFyZ3NbMV0sIF9hID0gYXJnc1syXSwgZWFzaW5nID0gX2EgPT09IHZvaWQgMCA/ICdlYXNlTGluZWFyJyA6IF9hLCBfYiA9IGFyZ3NbM10sIGNhbGxiYWNrID0gX2IgPT09IHZvaWQgMCA/IG5vb3AgOiBfYiwgX2MgPSBhcmdzWzRdLCBkZWxheSA9IF9jID09PSB2b2lkIDAgPyAwIDogX2M7XG4gICAgICAgIHZhciBvbkZyYW1lO1xuICAgICAgICB2YXIgcmVwZWF0O1xuICAgICAgICB2YXIgcGF1c2VDYWxsYmFjaztcbiAgICAgICAgdmFyIHJlc3VtZUNhbGxiYWNrO1xuICAgICAgICB2YXIgYW5pbWF0ZUNmZztcbiAgICAgICAgLy8g56ys5LqM5Liq5Y+C5pWw77yM5pei5Y+v5Lul5piv5Yqo55S75pyA57uI54q25oCBIHRvQXR0cnPvvIzkuZ/lj6/ku6XmmK/oh6rlrprkuYnluKfliqjnlLvlh73mlbAgb25GcmFtZVxuICAgICAgICBpZiAoaXNGdW5jdGlvbih0b0F0dHJzKSkge1xuICAgICAgICAgICAgb25GcmFtZSA9IHRvQXR0cnM7XG4gICAgICAgICAgICB0b0F0dHJzID0ge307XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QodG9BdHRycykgJiYgdG9BdHRycy5vbkZyYW1lKSB7XG4gICAgICAgICAgICAvLyDlhbzlrrkgMy4wIOS4reeahOWGmeazle+8jG9uRnJhbWUg5ZKMIHJlcGVhdCDlj6/lnKggdG9BdHRycyDkuK3orr7nva5cbiAgICAgICAgICAgIG9uRnJhbWUgPSB0b0F0dHJzLm9uRnJhbWU7XG4gICAgICAgICAgICByZXBlYXQgPSB0b0F0dHJzLnJlcGVhdDtcbiAgICAgICAgfVxuICAgICAgICAvLyDnrKzkuozkuKrlj4LmlbDvvIzml6Llj6/ku6XmmK/miafooYzml7bpl7QgZHVyYXRpb27vvIzkuZ/lj6/ku6XmmK/liqjnlLvlj4LmlbAgYW5pbWF0ZUNmZ1xuICAgICAgICBpZiAoaXNPYmplY3QoZHVyYXRpb24pKSB7XG4gICAgICAgICAgICBhbmltYXRlQ2ZnID0gZHVyYXRpb247XG4gICAgICAgICAgICBkdXJhdGlvbiA9IGFuaW1hdGVDZmcuZHVyYXRpb247XG4gICAgICAgICAgICBlYXNpbmcgPSBhbmltYXRlQ2ZnLmVhc2luZyB8fCAnZWFzZUxpbmVhcic7XG4gICAgICAgICAgICBkZWxheSA9IGFuaW1hdGVDZmcuZGVsYXkgfHwgMDtcbiAgICAgICAgICAgIC8vIGFuaW1hdGVDZmcg5Lit55qE6K6+572u5LyY5YWI57qn5pu06auYXG4gICAgICAgICAgICByZXBlYXQgPSBhbmltYXRlQ2ZnLnJlcGVhdCB8fCByZXBlYXQgfHwgZmFsc2U7XG4gICAgICAgICAgICBjYWxsYmFjayA9IGFuaW1hdGVDZmcuY2FsbGJhY2sgfHwgbm9vcDtcbiAgICAgICAgICAgIHBhdXNlQ2FsbGJhY2sgPSBhbmltYXRlQ2ZnLnBhdXNlQ2FsbGJhY2sgfHwgbm9vcDtcbiAgICAgICAgICAgIHJlc3VtZUNhbGxiYWNrID0gYW5pbWF0ZUNmZy5yZXN1bWVDYWxsYmFjayB8fCBub29wO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8g56ys5Zub5Liq5Y+C5pWw77yM5pei5Y+v5Lul5piv5Zue6LCD5Ye95pWwIGNhbGxiYWNr77yM5Lmf5Y+v5Lul5piv5bu26L+f5pe26Ze0IGRlbGF5XG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIoY2FsbGJhY2spKSB7XG4gICAgICAgICAgICAgICAgZGVsYXkgPSBjYWxsYmFjaztcbiAgICAgICAgICAgICAgICBjYWxsYmFjayA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDnrKzkuInkuKrlj4LmlbDvvIzml6Llj6/ku6XmmK/nvJPliqjlj4LmlbAgZWFzaW5n77yM5Lmf5Y+v5Lul5piv5Zue6LCD5Ye95pWwIGNhbGxiYWNrXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihlYXNpbmcpKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBlYXNpbmc7XG4gICAgICAgICAgICAgICAgZWFzaW5nID0gJ2Vhc2VMaW5lYXInO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZWFzaW5nID0gZWFzaW5nIHx8ICdlYXNlTGluZWFyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZm9ybWF0VG9BdHRycyA9IGdldEZvcm1hdFRvQXR0cnModG9BdHRycywgdGhpcyk7XG4gICAgICAgIHZhciBhbmltYXRpb24gPSB7XG4gICAgICAgICAgICBmcm9tQXR0cnM6IGdldEZvcm1hdEZyb21BdHRycyhmb3JtYXRUb0F0dHJzLCB0aGlzKSxcbiAgICAgICAgICAgIHRvQXR0cnM6IGZvcm1hdFRvQXR0cnMsXG4gICAgICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXG4gICAgICAgICAgICBlYXNpbmc6IGVhc2luZyxcbiAgICAgICAgICAgIHJlcGVhdDogcmVwZWF0LFxuICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAgICAgcGF1c2VDYWxsYmFjazogcGF1c2VDYWxsYmFjayxcbiAgICAgICAgICAgIHJlc3VtZUNhbGxiYWNrOiByZXN1bWVDYWxsYmFjayxcbiAgICAgICAgICAgIGRlbGF5OiBkZWxheSxcbiAgICAgICAgICAgIHN0YXJ0VGltZTogdGltZWxpbmUuZ2V0VGltZSgpLFxuICAgICAgICAgICAgaWQ6IHVuaXF1ZUlkKCksXG4gICAgICAgICAgICBvbkZyYW1lOiBvbkZyYW1lLFxuICAgICAgICAgICAgcGF0aEZvcm1hdHRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIC8vIOWmguaenOWKqOeUu+WFg+e0oOmYn+WIl+S4reW3sue7j+aciei/meS4quWbvuW9ouS6hlxuICAgICAgICBpZiAoYW5pbWF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyDlhYjmo4Dmn6XmmK/lkKbpnIDopoHlkIjlubblsZ7mgKfjgILoi6XmnInnm7jlkIznmoTliqjnlLvvvIzlsIbor6XlsZ7mgKfku47liY3kuIDkuKrliqjnlLvkuK3liKDpmaQs55u05o6l55So5ZCO5LiA5Liq5Yqo55S75LitXG4gICAgICAgICAgICBhbmltYXRpb25zID0gY2hlY2tFeGlzdGVkQXR0cnMoYW5pbWF0aW9ucywgYW5pbWF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIOWQpuWImeWwhuWbvuW9oua3u+WKoOWIsOWKqOeUu+WFg+e0oOmYn+WIl1xuICAgICAgICAgICAgdGltZWxpbmUuYWRkQW5pbWF0b3IodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgYW5pbWF0aW9ucy5wdXNoKGFuaW1hdGlvbik7XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpb25zJywgYW5pbWF0aW9ucyk7XG4gICAgICAgIHRoaXMuc2V0KCdfcGF1c2UnLCB7IGlzUGF1c2VkOiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOWBnOatouWKqOeUu1xuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdG9FbmQg5piv5ZCm5Yiw5Yqo55S755qE5pyA57uI54q25oCBXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuc3RvcEFuaW1hdGUgPSBmdW5jdGlvbiAodG9FbmQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHRvRW5kID09PSB2b2lkIDApIHsgdG9FbmQgPSB0cnVlOyB9XG4gICAgICAgIHZhciBhbmltYXRpb25zID0gdGhpcy5nZXQoJ2FuaW1hdGlvbnMnKTtcbiAgICAgICAgZWFjaChhbmltYXRpb25zLCBmdW5jdGlvbiAoYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAvLyDlsIbliqjnlLvmiafooYzliLDmnIDlkI7kuIDluKdcbiAgICAgICAgICAgIGlmICh0b0VuZCkge1xuICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb24ub25GcmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5hdHRyKGFuaW1hdGlvbi5vbkZyYW1lKDEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmF0dHIoYW5pbWF0aW9uLnRvQXR0cnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhbmltYXRpb24uY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAvLyDliqjnlLvlgZzmraLml7bnmoTlm57osINcbiAgICAgICAgICAgICAgICBhbmltYXRpb24uY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpbmcnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpb25zJywgW10pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5pqC5YGc5Yqo55S7XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUucGF1c2VBbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdGltZWxpbmUgPSB0aGlzLmdldCgndGltZWxpbmUnKTtcbiAgICAgICAgdmFyIGFuaW1hdGlvbnMgPSB0aGlzLmdldCgnYW5pbWF0aW9ucycpO1xuICAgICAgICB2YXIgcGF1c2VUaW1lID0gdGltZWxpbmUuZ2V0VGltZSgpO1xuICAgICAgICBlYWNoKGFuaW1hdGlvbnMsIGZ1bmN0aW9uIChhbmltYXRpb24pIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbi5fcGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi5fcGF1c2VUaW1lID0gcGF1c2VUaW1lO1xuICAgICAgICAgICAgaWYgKGFuaW1hdGlvbi5wYXVzZUNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgLy8g5Yqo55S75pqC5YGc5pe255qE5Zue6LCDXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLnBhdXNlQ2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIOiusOW9leS4i+aYr+WcqOS7gOS5iOaXtuWAmeaaguWBnOeahFxuICAgICAgICB0aGlzLnNldCgnX3BhdXNlJywge1xuICAgICAgICAgICAgaXNQYXVzZWQ6IHRydWUsXG4gICAgICAgICAgICBwYXVzZVRpbWU6IHBhdXNlVGltZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5oGi5aSN5Yqo55S7XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUucmVzdW1lQW5pbWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRpbWVsaW5lID0gdGhpcy5nZXQoJ3RpbWVsaW5lJyk7XG4gICAgICAgIHZhciBjdXJyZW50ID0gdGltZWxpbmUuZ2V0VGltZSgpO1xuICAgICAgICB2YXIgYW5pbWF0aW9ucyA9IHRoaXMuZ2V0KCdhbmltYXRpb25zJyk7XG4gICAgICAgIHZhciBwYXVzZVRpbWUgPSB0aGlzLmdldCgnX3BhdXNlJykucGF1c2VUaW1lO1xuICAgICAgICAvLyDkuYvlkI7mm7TmlrDlsZ7mgKfpnIDopoHorqHnrpfliqjnlLvlt7Lnu4/miafooYznmoTml7bplb/vvIzlpoLmnpzmmoLlgZzkuobvvIzlsLHmiorliJ3lp4vml7bpl7TosIPlkI5cbiAgICAgICAgZWFjaChhbmltYXRpb25zLCBmdW5jdGlvbiAoYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBhbmltYXRpb24uc3RhcnRUaW1lID0gYW5pbWF0aW9uLnN0YXJ0VGltZSArIChjdXJyZW50IC0gcGF1c2VUaW1lKTtcbiAgICAgICAgICAgIGFuaW1hdGlvbi5fcGF1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICBhbmltYXRpb24uX3BhdXNlVGltZSA9IG51bGw7XG4gICAgICAgICAgICBpZiAoYW5pbWF0aW9uLnJlc3VtZUNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLnJlc3VtZUNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldCgnX3BhdXNlJywge1xuICAgICAgICAgICAgaXNQYXVzZWQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXQoJ2FuaW1hdGlvbnMnLCBhbmltYXRpb25zKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDop6blj5Hlp5TmiZjkuovku7ZcbiAgICAgKiBAcGFyYW0gIHtzdHJpbmd9ICAgICB0eXBlIOS6i+S7tuexu+Wei1xuICAgICAqIEBwYXJhbSAge0dyYXBoRXZlbnR9IGV2ZW50T2JqIOS6i+S7tuWvueixoVxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmVtaXREZWxlZ2F0aW9uID0gZnVuY3Rpb24gKHR5cGUsIGV2ZW50T2JqKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBwYXRocyA9IGV2ZW50T2JqLnByb3BhZ2F0aW9uUGF0aDtcbiAgICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzKCk7XG4gICAgICAgIHZhciByZWxhdGl2ZVNoYXBlO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ21vdXNlZW50ZXInKSB7XG4gICAgICAgICAgICByZWxhdGl2ZVNoYXBlID0gZXZlbnRPYmouZnJvbVNoYXBlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdtb3VzZWxlYXZlJykge1xuICAgICAgICAgICAgcmVsYXRpdmVTaGFwZSA9IGV2ZW50T2JqLnRvU2hhcGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBwYXRoc1tpXTtcbiAgICAgICAgICAgIC8vIOaaguWumui3nyBuYW1lIOe7keWumlxuICAgICAgICAgICAgdmFyIG5hbWVfMSA9IGVsZW1lbnQuZ2V0KCduYW1lJyk7XG4gICAgICAgICAgICBpZiAobmFtZV8xKSB7XG4gICAgICAgICAgICAgICAgLy8g56ys5LiA5LiqIG1vdXNlZW50ZXIg5ZKMIG1vdXNlbGVhdmUg55qE5YGc5q2i5Y2z5Y+v77yM5Zug5Li65ZCO6Z2i55qE6YO95piv5YmN6Z2i55qEIFBhcmVudFxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAvLyDlj6rmnIkgZWxlbWVudCDmmK8gR3JvdXAg5oiW6ICFIENhbnZhcyDnmoTml7blgJnvvIzmiY3pnIDopoHliKTmlq0gaXNQYXJlbnRcbiAgICAgICAgICAgICAgICAoZWxlbWVudC5pc0dyb3VwKCkgfHwgKGVsZW1lbnQuaXNDYW52YXMgJiYgZWxlbWVudC5pc0NhbnZhcygpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVTaGFwZSAmJlxuICAgICAgICAgICAgICAgICAgICBpc1BhcmVudChlbGVtZW50LCByZWxhdGl2ZVNoYXBlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShuYW1lXzEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVhY2gobmFtZV8xLCBmdW5jdGlvbiAoc3ViTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuZW1pdERlbGVnYXRlRXZlbnQoZWxlbWVudCwgc3ViTmFtZSwgZXZlbnRPYmopO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNfMS5lbWl0RGVsZWdhdGVFdmVudChlbGVtZW50LCBuYW1lXzEsIGV2ZW50T2JqKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0aGlzXzEgPSB0aGlzO1xuICAgICAgICAvLyDoh7PlsJHmnInkuIDkuKrlr7nosaHvvIzkuJTnrKzkuIDkuKrlr7nosaHkuLogc2hhcGVcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRocy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKGkpO1xuICAgICAgICAgICAgaWYgKHN0YXRlXzEgPT09IFwiYnJlYWtcIilcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuZW1pdERlbGVnYXRlRXZlbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSwgZXZlbnRPYmopIHtcbiAgICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzKCk7XG4gICAgICAgIC8vIOS6i+S7tuWnlOaJmOeahOW9ouW8jyBuYW1lOnR5cGVcbiAgICAgICAgdmFyIGV2ZW50TmFtZSA9IG5hbWUgKyBERUxFR0FUSU9OX1NQTElUICsgZXZlbnRPYmoudHlwZTtcbiAgICAgICAgaWYgKGV2ZW50c1tldmVudE5hbWVdIHx8IGV2ZW50c1tXSUxEQ0FSRF0pIHtcbiAgICAgICAgICAgIC8vIOWvueS6jumAmumFjeespiAq77yM5LqL5Lu25ZCN56ewID0g5aeU5omY5LqL5Lu25ZCN56ewXG4gICAgICAgICAgICBldmVudE9iai5uYW1lID0gZXZlbnROYW1lO1xuICAgICAgICAgICAgZXZlbnRPYmouY3VycmVudFRhcmdldCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICBldmVudE9iai5kZWxlZ2F0ZVRhcmdldCA9IHRoaXM7XG4gICAgICAgICAgICAvLyDlsIblp5TmiZjkuovku7bnmoTnm5HlkKzlr7nosaEgZGVsZWdhdGVPYmplY3Qg5oyC6L295Yiw5LqL5Lu25a+56LGh5LiKXG4gICAgICAgICAgICBldmVudE9iai5kZWxlZ2F0ZU9iamVjdCA9IGVsZW1lbnQuZ2V0KCdkZWxlZ2F0ZU9iamVjdCcpO1xuICAgICAgICAgICAgdGhpcy5lbWl0KGV2ZW50TmFtZSwgZXZlbnRPYmopO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnp7vliqjlhYPntKBcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdHJhbnNsYXRlWCDmsLTlubPnp7vliqjot53nprtcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdHJhbnNsYXRlWSDlnoLnm7Tnp7vliqjot53nprtcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudH0g5YWD57SgXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVkpIHtcbiAgICAgICAgaWYgKHRyYW5zbGF0ZVggPT09IHZvaWQgMCkgeyB0cmFuc2xhdGVYID0gMDsgfVxuICAgICAgICBpZiAodHJhbnNsYXRlWSA9PT0gdm9pZCAwKSB7IHRyYW5zbGF0ZVkgPSAwOyB9XG4gICAgICAgIHZhciBtYXRyaXggPSB0aGlzLmdldE1hdHJpeCgpO1xuICAgICAgICB2YXIgbmV3TWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sndCcsIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVldXSk7XG4gICAgICAgIHRoaXMuc2V0TWF0cml4KG5ld01hdHJpeCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog56e75Yqo5YWD57Sg5Yiw55uu5qCH5L2N572uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldFgg55uu5qCH5L2N572u55qE5rC05bmz5Z2Q5qCHXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldFgg55uu5qCH5L2N572u55qE5Z6C55u05Z2Q5qCHXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOWFg+e0oFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbiAodGFyZ2V0WCwgdGFyZ2V0WSkge1xuICAgICAgICB2YXIgeCA9IHRoaXMuYXR0cigneCcpIHx8IDA7XG4gICAgICAgIHZhciB5ID0gdGhpcy5hdHRyKCd5JykgfHwgMDtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUodGFyZ2V0WCAtIHgsIHRhcmdldFkgLSB5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnp7vliqjlhYPntKDliLDnm67moIfkvY3nva7vvIznrYnku7fkuo4gbW92ZSDmlrnms5XjgILnlLHkuo4gbW92ZVRvIOeahOivreS5ieaAp+abtOW8uu+8jOWboOatpOWcqOaWh+aho+S4reaOqOiNkOS9v+eUqCBtb3ZlVG8g5pa55rOVXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldFgg55uu5qCH5L2N572u55qEIHgg6L205Z2Q5qCHXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRhcmdldFkg55uu5qCH5L2N572u55qEIHkg6L205Z2Q5qCHXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOWFg+e0oFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLm1vdmVUbyA9IGZ1bmN0aW9uICh0YXJnZXRYLCB0YXJnZXRZKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vdmUodGFyZ2V0WCwgdGFyZ2V0WSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnvKnmlL7lhYPntKBcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcmF0aW9YIOawtOW5s+e8qeaUvuavlOS+i1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYXRpb1kg5Z6C55u057yp5pS+5q+U5L6LXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOWFg+e0oFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnNjYWxlID0gZnVuY3Rpb24gKHJhdGlvWCwgcmF0aW9ZKSB7XG4gICAgICAgIHZhciBtYXRyaXggPSB0aGlzLmdldE1hdHJpeCgpO1xuICAgICAgICB2YXIgbmV3TWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sncycsIHJhdGlvWCwgcmF0aW9ZIHx8IHJhdGlvWF1dKTtcbiAgICAgICAgdGhpcy5zZXRNYXRyaXgobmV3TWF0cml4KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDku6XnlLvluIPlt6bkuIrop5IgKDAsIDApIOS4uuS4reW/g+aXi+i9rOWFg+e0oFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpYW4g5peL6L2s6KeS5bqmKOW8p+W6puWAvClcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudH0g5YWD57SgXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUucm90YXRlID0gZnVuY3Rpb24gKHJhZGlhbikge1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIG5ld01hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3InLCByYWRpYW5dXSk7XG4gICAgICAgIHRoaXMuc2V0TWF0cml4KG5ld01hdHJpeCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5Lul6LW35aeL54K55Li65Lit5b+D5peL6L2s5YWD57SgXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhZGlhbiDml4vovazop5LluqYo5byn5bqm5YC8KVxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5yb3RhdGVBdFN0YXJ0ID0gZnVuY3Rpb24gKHJvdGF0ZSkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIG5ld01hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtcbiAgICAgICAgICAgIFsndCcsIC14LCAteV0sXG4gICAgICAgICAgICBbJ3InLCByb3RhdGVdLFxuICAgICAgICAgICAgWyd0JywgeCwgeV0sXG4gICAgICAgIF0pO1xuICAgICAgICB0aGlzLnNldE1hdHJpeChuZXdNYXRyaXgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOS7peS7u+aEj+eCuSAoeCwgeSkg5Li65Lit5b+D5peL6L2s5YWD57SgXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhZGlhbiDml4vovazop5LluqYo5byn5bqm5YC8KVxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5yb3RhdGVBdFBvaW50ID0gZnVuY3Rpb24gKHgsIHksIHJvdGF0ZSkge1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIG5ld01hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtcbiAgICAgICAgICAgIFsndCcsIC14LCAteV0sXG4gICAgICAgICAgICBbJ3InLCByb3RhdGVdLFxuICAgICAgICAgICAgWyd0JywgeCwgeV0sXG4gICAgICAgIF0pO1xuICAgICAgICB0aGlzLnNldE1hdHJpeChuZXdNYXRyaXgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBFbGVtZW50O1xufShCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBFbGVtZW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWxlbWVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/element.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/abstract/group.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g-base/esm/abstract/group.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ \"./node_modules/@antv/g-base/esm/abstract/container.js\");\n\n\nvar AbstractGroup = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractGroup, _super);\n function AbstractGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AbstractGroup.prototype.isGroup = function () {\n return true;\n };\n AbstractGroup.prototype.isEntityGroup = function () {\n return false;\n };\n AbstractGroup.prototype.clone = function () {\n var clone = _super.prototype.clone.call(this);\n // 获取构造函数\n var children = this.getChildren();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n clone.add(child.clone());\n }\n return clone;\n };\n return AbstractGroup;\n}(_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractGroup);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9ncm91cC5qcz9mODNjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNFO0FBQ3BDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsa0RBQVM7QUFDSSw0RUFBYSxFQUFDO0FBQzdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYWJzdHJhY3QvZ3JvdXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBDb250YWluZXIgZnJvbSAnLi9jb250YWluZXInO1xudmFyIEFic3RyYWN0R3JvdXAgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFic3RyYWN0R3JvdXAsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQWJzdHJhY3RHcm91cCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBBYnN0cmFjdEdyb3VwLnByb3RvdHlwZS5pc0dyb3VwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIEFic3RyYWN0R3JvdXAucHJvdG90eXBlLmlzRW50aXR5R3JvdXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEFic3RyYWN0R3JvdXAucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2xvbmUgPSBfc3VwZXIucHJvdG90eXBlLmNsb25lLmNhbGwodGhpcyk7XG4gICAgICAgIC8vIOiOt+WPluaehOmAoOWHveaVsFxuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgY2xvbmUuYWRkKGNoaWxkLmNsb25lKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjbG9uZTtcbiAgICB9O1xuICAgIHJldHVybiBBYnN0cmFjdEdyb3VwO1xufShDb250YWluZXIpKTtcbmV4cG9ydCBkZWZhdWx0IEFic3RyYWN0R3JvdXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncm91cC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/group.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/abstract/shape.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g-base/esm/abstract/shape.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ \"./node_modules/@antv/g-base/esm/abstract/element.js\");\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/matrix */ \"./node_modules/@antv/g-base/esm/util/matrix.js\");\n\n\n\nvar AbstractShape = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractShape, _super);\n function AbstractShape(cfg) {\n return _super.call(this, cfg) || this;\n }\n // 是否在包围盒内\n AbstractShape.prototype._isInBBox = function (refX, refY) {\n var bbox = this.getBBox();\n return bbox.minX <= refX && bbox.maxX >= refX && bbox.minY <= refY && bbox.maxY >= refY;\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n * @param {ShapeAttrs} targetAttrs 渲染的图像属性\n */\n AbstractShape.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n this.clearCacheBBox();\n };\n // 计算包围盒时,需要缓存,这是一个高频的操作\n AbstractShape.prototype.getBBox = function () {\n var bbox = this.cfg.bbox;\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set('bbox', bbox);\n }\n return bbox;\n };\n // 计算相对于画布的包围盒\n AbstractShape.prototype.getCanvasBBox = function () {\n var canvasBBox = this.cfg.canvasBBox;\n if (!canvasBBox) {\n canvasBBox = this.calculateCanvasBBox();\n this.set('canvasBBox', canvasBBox);\n }\n return canvasBBox;\n };\n AbstractShape.prototype.applyMatrix = function (matrix) {\n _super.prototype.applyMatrix.call(this, matrix);\n // 清理掉缓存的包围盒\n this.set('canvasBBox', null);\n };\n /**\n * 计算相对于画布的包围盒,默认等同于 bbox\n * @return {BBox} 包围盒\n */\n AbstractShape.prototype.calculateCanvasBBox = function () {\n var bbox = this.getBBox();\n var totalMatrix = this.getTotalMatrix();\n var minX = bbox.minX, minY = bbox.minY, maxX = bbox.maxX, maxY = bbox.maxY;\n if (totalMatrix) {\n var topLeft = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.minX, bbox.minY]);\n var topRight = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.maxX, bbox.minY]);\n var bottomLeft = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.minX, bbox.maxY]);\n var bottomRight = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.maxX, bbox.maxY]);\n minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n }\n var attrs = this.attrs;\n // 如果存在 shadow 则计算 shadow\n if (attrs.shadowColor) {\n var _a = attrs.shadowBlur, shadowBlur = _a === void 0 ? 0 : _a, _b = attrs.shadowOffsetX, shadowOffsetX = _b === void 0 ? 0 : _b, _c = attrs.shadowOffsetY, shadowOffsetY = _c === void 0 ? 0 : _c;\n var shadowLeft = minX - shadowBlur + shadowOffsetX;\n var shadowRight = maxX + shadowBlur + shadowOffsetX;\n var shadowTop = minY - shadowBlur + shadowOffsetY;\n var shadowBottom = maxY + shadowBlur + shadowOffsetY;\n minX = Math.min(minX, shadowLeft);\n maxX = Math.max(maxX, shadowRight);\n minY = Math.min(minY, shadowTop);\n maxY = Math.max(maxY, shadowBottom);\n }\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n };\n /**\n * @protected\n * 清理缓存的 bbox\n */\n AbstractShape.prototype.clearCacheBBox = function () {\n this.set('bbox', null);\n this.set('canvasBBox', null);\n };\n // 实现接口\n AbstractShape.prototype.isClipShape = function () {\n return this.get('isClipShape');\n };\n /**\n * @protected\n * 不同的图形自己实现是否在图形内部的逻辑,要判断边和填充区域\n * @param {number} refX 相对于图形的坐标 x\n * @param {number} refY 相对于图形的坐标 Y\n * @return {boolean} 点是否在图形内部\n */\n AbstractShape.prototype.isInShape = function (refX, refY) {\n return false;\n };\n /**\n * 是否仅仅使用 BBox 检测就可以判定拾取到图形\n * 默认是 false,但是有些图形例如 image、marker 等都可直接使用 BBox 的检测而不需要使用图形拾取\n * @return {Boolean} 仅仅使用 BBox 进行拾取\n */\n AbstractShape.prototype.isOnlyHitBox = function () {\n return false;\n };\n // 不同的 Shape 各自实现\n AbstractShape.prototype.isHit = function (x, y) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n var vec = [x, y, 1];\n vec = this.invertFromMatrix(vec);\n var refX = vec[0], refY = vec[1];\n var inBBox = this._isInBBox(refX, refY);\n // 跳过图形的拾取,在某些图形中可以省略一倍的检测成本\n if (this.isOnlyHitBox()) {\n return inBBox;\n }\n // 被裁减掉的和不在包围盒内的不进行计算\n if (inBBox && !this.isClipped(refX, refY)) {\n // 对图形进行拾取判断\n if (this.isInShape(refX, refY)) {\n return true;\n }\n // 对起始箭头进行拾取判断\n if (startArrowShape && startArrowShape.isHit(refX, refY)) {\n return true;\n }\n // 对结束箭头进行拾取判断\n if (endArrowShape && endArrowShape.isHit(refX, refY)) {\n return true;\n }\n }\n return false;\n };\n return AbstractShape;\n}(_element__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractShape);\n//# sourceMappingURL=shape.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9zaGFwZS5qcz8zMWExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0Y7QUFDYztBQUM5QztBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixLQUFLO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixpRUFBWTtBQUN0QywyQkFBMkIsaUVBQVk7QUFDdkMsNkJBQTZCLGlFQUFZO0FBQ3pDLDhCQUE4QixpRUFBWTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkIsZ0JBQWdCLE9BQU87QUFDdkIsZ0JBQWdCLFFBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxnREFBTztBQUNNLDRFQUFhLEVBQUM7QUFDN0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9zaGFwZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IEVsZW1lbnQgZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IG11bHRpcGx5VmVjMiB9IGZyb20gJy4uL3V0aWwvbWF0cml4JztcbnZhciBBYnN0cmFjdFNoYXBlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBYnN0cmFjdFNoYXBlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFic3RyYWN0U2hhcGUoY2ZnKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBjZmcpIHx8IHRoaXM7XG4gICAgfVxuICAgIC8vIOaYr+WQpuWcqOWMheWbtOebkuWGhVxuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLl9pc0luQkJveCA9IGZ1bmN0aW9uIChyZWZYLCByZWZZKSB7XG4gICAgICAgIHZhciBiYm94ID0gdGhpcy5nZXRCQm94KCk7XG4gICAgICAgIHJldHVybiBiYm94Lm1pblggPD0gcmVmWCAmJiBiYm94Lm1heFggPj0gcmVmWCAmJiBiYm94Lm1pblkgPD0gcmVmWSAmJiBiYm94Lm1heFkgPj0gcmVmWTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOWxnuaAp+abtOaUueWQjumcgOimgeWBmueahOS6i+aDhVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiBAcGFyYW0ge1NoYXBlQXR0cnN9IHRhcmdldEF0dHJzIOa4suafk+eahOWbvuWDj+WxnuaAp1xuICAgICAqL1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmFmdGVyQXR0cnNDaGFuZ2UgPSBmdW5jdGlvbiAodGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5hZnRlckF0dHJzQ2hhbmdlLmNhbGwodGhpcywgdGFyZ2V0QXR0cnMpO1xuICAgICAgICB0aGlzLmNsZWFyQ2FjaGVCQm94KCk7XG4gICAgfTtcbiAgICAvLyDorqHnrpfljIXlm7Tnm5Lml7bvvIzpnIDopoHnvJPlrZjvvIzov5nmmK/kuIDkuKrpq5jpopHnmoTmk43kvZxcbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5nZXRCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYmJveCA9IHRoaXMuY2ZnLmJib3g7XG4gICAgICAgIGlmICghYmJveCkge1xuICAgICAgICAgICAgYmJveCA9IHRoaXMuY2FsY3VsYXRlQkJveCgpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ2Jib3gnLCBiYm94KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmJveDtcbiAgICB9O1xuICAgIC8vIOiuoeeul+ebuOWvueS6jueUu+W4g+eahOWMheWbtOebklxuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmdldENhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjYW52YXNCQm94ID0gdGhpcy5jZmcuY2FudmFzQkJveDtcbiAgICAgICAgaWYgKCFjYW52YXNCQm94KSB7XG4gICAgICAgICAgICBjYW52YXNCQm94ID0gdGhpcy5jYWxjdWxhdGVDYW52YXNCQm94KCk7XG4gICAgICAgICAgICB0aGlzLnNldCgnY2FudmFzQkJveCcsIGNhbnZhc0JCb3gpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYW52YXNCQm94O1xuICAgIH07XG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuYXBwbHlNYXRyaXggPSBmdW5jdGlvbiAobWF0cml4KSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuYXBwbHlNYXRyaXguY2FsbCh0aGlzLCBtYXRyaXgpO1xuICAgICAgICAvLyDmuIXnkIbmjonnvJPlrZjnmoTljIXlm7Tnm5JcbiAgICAgICAgdGhpcy5zZXQoJ2NhbnZhc0JCb3gnLCBudWxsKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiuoeeul+ebuOWvueS6jueUu+W4g+eahOWMheWbtOebku+8jOm7mOiupOetieWQjOS6jiBiYm94XG4gICAgICogQHJldHVybiB7QkJveH0g5YyF5Zu055uSXG4gICAgICovXG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuY2FsY3VsYXRlQ2FudmFzQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJib3ggPSB0aGlzLmdldEJCb3goKTtcbiAgICAgICAgdmFyIHRvdGFsTWF0cml4ID0gdGhpcy5nZXRUb3RhbE1hdHJpeCgpO1xuICAgICAgICB2YXIgbWluWCA9IGJib3gubWluWCwgbWluWSA9IGJib3gubWluWSwgbWF4WCA9IGJib3gubWF4WCwgbWF4WSA9IGJib3gubWF4WTtcbiAgICAgICAgaWYgKHRvdGFsTWF0cml4KSB7XG4gICAgICAgICAgICB2YXIgdG9wTGVmdCA9IG11bHRpcGx5VmVjMih0b3RhbE1hdHJpeCwgW2Jib3gubWluWCwgYmJveC5taW5ZXSk7XG4gICAgICAgICAgICB2YXIgdG9wUmlnaHQgPSBtdWx0aXBseVZlYzIodG90YWxNYXRyaXgsIFtiYm94Lm1heFgsIGJib3gubWluWV0pO1xuICAgICAgICAgICAgdmFyIGJvdHRvbUxlZnQgPSBtdWx0aXBseVZlYzIodG90YWxNYXRyaXgsIFtiYm94Lm1pblgsIGJib3gubWF4WV0pO1xuICAgICAgICAgICAgdmFyIGJvdHRvbVJpZ2h0ID0gbXVsdGlwbHlWZWMyKHRvdGFsTWF0cml4LCBbYmJveC5tYXhYLCBiYm94Lm1heFldKTtcbiAgICAgICAgICAgIG1pblggPSBNYXRoLm1pbih0b3BMZWZ0WzBdLCB0b3BSaWdodFswXSwgYm90dG9tTGVmdFswXSwgYm90dG9tUmlnaHRbMF0pO1xuICAgICAgICAgICAgbWF4WCA9IE1hdGgubWF4KHRvcExlZnRbMF0sIHRvcFJpZ2h0WzBdLCBib3R0b21MZWZ0WzBdLCBib3R0b21SaWdodFswXSk7XG4gICAgICAgICAgICBtaW5ZID0gTWF0aC5taW4odG9wTGVmdFsxXSwgdG9wUmlnaHRbMV0sIGJvdHRvbUxlZnRbMV0sIGJvdHRvbVJpZ2h0WzFdKTtcbiAgICAgICAgICAgIG1heFkgPSBNYXRoLm1heCh0b3BMZWZ0WzFdLCB0b3BSaWdodFsxXSwgYm90dG9tTGVmdFsxXSwgYm90dG9tUmlnaHRbMV0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIC8vIOWmguaenOWtmOWcqCBzaGFkb3cg5YiZ6K6h566XIHNoYWRvd1xuICAgICAgICBpZiAoYXR0cnMuc2hhZG93Q29sb3IpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IGF0dHJzLnNoYWRvd0JsdXIsIHNoYWRvd0JsdXIgPSBfYSA9PT0gdm9pZCAwID8gMCA6IF9hLCBfYiA9IGF0dHJzLnNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFggPSBfYiA9PT0gdm9pZCAwID8gMCA6IF9iLCBfYyA9IGF0dHJzLnNoYWRvd09mZnNldFksIHNoYWRvd09mZnNldFkgPSBfYyA9PT0gdm9pZCAwID8gMCA6IF9jO1xuICAgICAgICAgICAgdmFyIHNoYWRvd0xlZnQgPSBtaW5YIC0gc2hhZG93Qmx1ciArIHNoYWRvd09mZnNldFg7XG4gICAgICAgICAgICB2YXIgc2hhZG93UmlnaHQgPSBtYXhYICsgc2hhZG93Qmx1ciArIHNoYWRvd09mZnNldFg7XG4gICAgICAgICAgICB2YXIgc2hhZG93VG9wID0gbWluWSAtIHNoYWRvd0JsdXIgKyBzaGFkb3dPZmZzZXRZO1xuICAgICAgICAgICAgdmFyIHNoYWRvd0JvdHRvbSA9IG1heFkgKyBzaGFkb3dCbHVyICsgc2hhZG93T2Zmc2V0WTtcbiAgICAgICAgICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCBzaGFkb3dMZWZ0KTtcbiAgICAgICAgICAgIG1heFggPSBNYXRoLm1heChtYXhYLCBzaGFkb3dSaWdodCk7XG4gICAgICAgICAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgc2hhZG93VG9wKTtcbiAgICAgICAgICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCBzaGFkb3dCb3R0b20pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBtaW5YLFxuICAgICAgICAgICAgeTogbWluWSxcbiAgICAgICAgICAgIG1pblg6IG1pblgsXG4gICAgICAgICAgICBtaW5ZOiBtaW5ZLFxuICAgICAgICAgICAgbWF4WDogbWF4WCxcbiAgICAgICAgICAgIG1heFk6IG1heFksXG4gICAgICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgICAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOa4heeQhue8k+WtmOeahCBiYm94XG4gICAgICovXG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuY2xlYXJDYWNoZUJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0KCdiYm94JywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCdjYW52YXNCQm94JywgbnVsbCk7XG4gICAgfTtcbiAgICAvLyDlrp7njrDmjqXlj6NcbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5pc0NsaXBTaGFwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdpc0NsaXBTaGFwZScpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOS4jeWQjOeahOWbvuW9ouiHquW3seWunueOsOaYr+WQpuWcqOWbvuW9ouWGhemDqOeahOmAu+i+ke+8jOimgeWIpOaWrei+ueWSjOWhq+WFheWMuuWfn1xuICAgICAqIEBwYXJhbSAge251bWJlcn0gIHJlZlgg55u45a+55LqO5Zu+5b2i55qE5Z2Q5qCHIHhcbiAgICAgKiBAcGFyYW0gIHtudW1iZXJ9ICByZWZZIOebuOWvueS6juWbvuW9oueahOWdkOaghyBZXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0g54K55piv5ZCm5Zyo5Zu+5b2i5YaF6YOoXG4gICAgICovXG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuaXNJblNoYXBlID0gZnVuY3Rpb24gKHJlZlgsIHJlZlkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5piv5ZCm5LuF5LuF5L2/55SoIEJCb3gg5qOA5rWL5bCx5Y+v5Lul5Yik5a6a5ou+5Y+W5Yiw5Zu+5b2iXG4gICAgICog6buY6K6k5pivIGZhbHNl77yM5L2G5piv5pyJ5Lqb5Zu+5b2i5L6L5aaCIGltYWdl44CBbWFya2VyIOetiemDveWPr+ebtOaOpeS9v+eUqCBCQm94IOeahOajgOa1i+iAjOS4jemcgOimgeS9v+eUqOWbvuW9ouaLvuWPllxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59IOS7heS7heS9v+eUqCBCQm94IOi/m+ihjOaLvuWPllxuICAgICAqL1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmlzT25seUhpdEJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLy8g5LiN5ZCM55qEIFNoYXBlIOWQhOiHquWunueOsFxuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmlzSGl0ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdmFyIHN0YXJ0QXJyb3dTaGFwZSA9IHRoaXMuZ2V0KCdzdGFydEFycm93U2hhcGUnKTtcbiAgICAgICAgdmFyIGVuZEFycm93U2hhcGUgPSB0aGlzLmdldCgnZW5kQXJyb3dTaGFwZScpO1xuICAgICAgICB2YXIgdmVjID0gW3gsIHksIDFdO1xuICAgICAgICB2ZWMgPSB0aGlzLmludmVydEZyb21NYXRyaXgodmVjKTtcbiAgICAgICAgdmFyIHJlZlggPSB2ZWNbMF0sIHJlZlkgPSB2ZWNbMV07XG4gICAgICAgIHZhciBpbkJCb3ggPSB0aGlzLl9pc0luQkJveChyZWZYLCByZWZZKTtcbiAgICAgICAgLy8g6Lez6L+H5Zu+5b2i55qE5ou+5Y+W77yM5Zyo5p+Q5Lqb5Zu+5b2i5Lit5Y+v5Lul55yB55Wl5LiA5YCN55qE5qOA5rWL5oiQ5pysXG4gICAgICAgIGlmICh0aGlzLmlzT25seUhpdEJveCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5CQm94O1xuICAgICAgICB9XG4gICAgICAgIC8vIOiiq+ijgeWHj+aOieeahOWSjOS4jeWcqOWMheWbtOebkuWGheeahOS4jei/m+ihjOiuoeeul1xuICAgICAgICBpZiAoaW5CQm94ICYmICF0aGlzLmlzQ2xpcHBlZChyZWZYLCByZWZZKSkge1xuICAgICAgICAgICAgLy8g5a+55Zu+5b2i6L+b6KGM5ou+5Y+W5Yik5patXG4gICAgICAgICAgICBpZiAodGhpcy5pc0luU2hhcGUocmVmWCwgcmVmWSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOWvuei1t+Wni+eureWktOi/m+ihjOaLvuWPluWIpOaWrVxuICAgICAgICAgICAgaWYgKHN0YXJ0QXJyb3dTaGFwZSAmJiBzdGFydEFycm93U2hhcGUuaXNIaXQocmVmWCwgcmVmWSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOWvuee7k+adn+eureWktOi/m+ihjOaLvuWPluWIpOaWrVxuICAgICAgICAgICAgaWYgKGVuZEFycm93U2hhcGUgJiYgZW5kQXJyb3dTaGFwZS5pc0hpdChyZWZYLCByZWZZKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIHJldHVybiBBYnN0cmFjdFNoYXBlO1xufShFbGVtZW50KSk7XG5leHBvcnQgZGVmYXVsdCBBYnN0cmFjdFNoYXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2hhcGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/abstract/shape.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/animate/timeline.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-base/esm/animate/timeline.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-timer */ \"./node_modules/d3-timer/src/index.js\");\n/* harmony import */ var d3_ease__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-ease */ \"./node_modules/d3-ease/src/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/path */ \"./node_modules/@antv/g-base/esm/util/path.js\");\n/* harmony import */ var _util_color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/color */ \"./node_modules/@antv/g-base/esm/util/color.js\");\n\n\n\n // 目前整体动画只需要数值和数组的差值计算\n\n\nvar IDENTITY_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n/**\n * 使用 ratio 进行插值计算来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} ratio 比例\n * @return {boolean} 动画是否执行完成\n */\nfunction _update(shape, animation, ratio) {\n var cProps = {}; // 此刻属性\n var fromAttrs = animation.fromAttrs, toAttrs = animation.toAttrs;\n if (shape.destroyed) {\n return;\n }\n var interf; // 差值函数\n for (var k in toAttrs) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isEqual\"])(fromAttrs[k], toAttrs[k])) {\n if (k === 'path') {\n var toPath = toAttrs[k];\n var fromPath = fromAttrs[k];\n if (toPath.length > fromPath.length) {\n toPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](toAttrs[k]); // 终点状态\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](fromAttrs[k]); // 起始状态\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"fillPathByDiff\"](fromPath, toPath);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"formatPath\"](fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n }\n else if (!animation.pathFormatted) {\n toPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](toAttrs[k]);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](fromAttrs[k]);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"formatPath\"](fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n animation.pathFormatted = true;\n }\n cProps[k] = [];\n for (var i = 0; i < toPath.length; i++) {\n var toPathPoint = toPath[i];\n var fromPathPoint = fromPath[i];\n var cPathPoint = [];\n for (var j = 0; j < toPathPoint.length; j++) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(toPathPoint[j]) && fromPathPoint && Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(fromPathPoint[j])) {\n interf = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolate\"])(fromPathPoint[j], toPathPoint[j]);\n cPathPoint.push(interf(ratio));\n }\n else {\n cPathPoint.push(toPathPoint[j]);\n }\n }\n cProps[k].push(cPathPoint);\n }\n }\n else if (k === 'matrix') {\n /*\n 对矩阵进行插值时,需要保证矩阵不为空,为空则使用单位矩阵\n TODO: 二维和三维场景下单位矩阵不同,之后 WebGL 版需要做进一步处理\n */\n var matrixFn = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolateArray\"])(fromAttrs[k] || IDENTITY_MATRIX, toAttrs[k] || IDENTITY_MATRIX);\n var currentMatrix = matrixFn(ratio);\n cProps[k] = currentMatrix;\n }\n else if (Object(_util_color__WEBPACK_IMPORTED_MODULE_5__[\"isColorProp\"])(k) && Object(_util_color__WEBPACK_IMPORTED_MODULE_5__[\"isGradientColor\"])(toAttrs[k])) {\n cProps[k] = toAttrs[k];\n }\n else if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(toAttrs[k])) {\n // 非函数类型的值才能做插值\n interf = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolate\"])(fromAttrs[k], toAttrs[k]);\n cProps[k] = interf(ratio);\n }\n }\n }\n shape.attr(cProps);\n}\n/**\n * 根据自定义帧动画函数 onFrame 来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} elapsed 动画执行时间(毫秒)\n * @return {boolean} 动画是否执行完成\n */\nfunction update(shape, animation, elapsed) {\n var startTime = animation.startTime, delay = animation.delay;\n // 如果还没有开始执行或暂停,先不更新\n if (elapsed < startTime + delay || animation._paused) {\n return false;\n }\n var ratio;\n var duration = animation.duration;\n var easing = animation.easing;\n // 已执行时间\n elapsed = elapsed - startTime - animation.delay;\n if (animation.repeat) {\n // 如果动画重复执行,则 elapsed > duration,计算 ratio 时需取模\n ratio = (elapsed % duration) / duration;\n ratio = d3_ease__WEBPACK_IMPORTED_MODULE_2__[easing](ratio);\n }\n else {\n ratio = elapsed / duration;\n if (ratio < 1) {\n // 动画未执行完\n ratio = d3_ease__WEBPACK_IMPORTED_MODULE_2__[easing](ratio);\n }\n else {\n // 动画已执行完\n if (animation.onFrame) {\n shape.attr(animation.onFrame(1));\n }\n else {\n shape.attr(animation.toAttrs);\n }\n return true;\n }\n }\n if (animation.onFrame) {\n var attrs = animation.onFrame(ratio);\n shape.attr(attrs);\n }\n else {\n _update(shape, animation, ratio);\n }\n return false;\n}\nvar Timeline = /** @class */ (function () {\n /**\n * 时间轴构造函数,依赖于画布\n * @param {}\n */\n function Timeline(canvas) {\n /**\n * 执行动画的元素列表\n * @type {IElement[]}\n */\n this.animators = [];\n /**\n * 当前时间\n * @type {number}\n */\n this.current = 0;\n /**\n * 定时器\n * @type {d3Timer.Timer}\n */\n this.timer = null;\n this.canvas = canvas;\n }\n /**\n * 初始化定时器\n */\n Timeline.prototype.initTimer = function () {\n var _this = this;\n var isFinished = false;\n var shape;\n var animations;\n var animation;\n this.timer = d3_timer__WEBPACK_IMPORTED_MODULE_1__[\"timer\"](function (elapsed) {\n _this.current = elapsed;\n if (_this.animators.length > 0) {\n for (var i = _this.animators.length - 1; i >= 0; i--) {\n shape = _this.animators[i];\n if (shape.destroyed) {\n // 如果已经被销毁,直接移出队列\n _this.removeAnimator(i);\n continue;\n }\n if (!shape.isAnimatePaused()) {\n animations = shape.get('animations');\n for (var j = animations.length - 1; j >= 0; j--) {\n animation = animations[j];\n isFinished = update(shape, animation, elapsed);\n if (isFinished) {\n animations.splice(j, 1);\n isFinished = false;\n if (animation.callback) {\n animation.callback();\n }\n }\n }\n }\n if (animations.length === 0) {\n _this.removeAnimator(i);\n }\n }\n var autoDraw = _this.canvas.get('autoDraw');\n // 非自动渲染模式下,手动调用 canvas.draw() 重新渲染\n if (!autoDraw) {\n _this.canvas.draw();\n }\n }\n });\n };\n /**\n * 增加动画元素\n */\n Timeline.prototype.addAnimator = function (shape) {\n this.animators.push(shape);\n };\n /**\n * 移除动画元素\n */\n Timeline.prototype.removeAnimator = function (index) {\n this.animators.splice(index, 1);\n };\n /**\n * 是否有动画在执行\n */\n Timeline.prototype.isAnimating = function () {\n return !!this.animators.length;\n };\n /**\n * 停止定时器\n */\n Timeline.prototype.stop = function () {\n if (this.timer) {\n this.timer.stop();\n }\n };\n /**\n * 停止时间轴上所有元素的动画,并置空动画元素列表\n * @param {boolean} toEnd 是否到动画的最终状态,用来透传给动画元素的 stopAnimate 方法\n */\n Timeline.prototype.stopAllAnimations = function (toEnd) {\n if (toEnd === void 0) { toEnd = true; }\n this.animators.forEach(function (animator) {\n animator.stopAnimate(toEnd);\n });\n this.animators = [];\n this.canvas.draw();\n };\n /**\n * 获取当前时间\n */\n Timeline.prototype.getTime = function () {\n return this.current;\n };\n return Timeline;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Timeline);\n//# sourceMappingURL=timeline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9hbmltYXRlL3RpbWVsaW5lLmpzPzU5YzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkQ7QUFDdkI7QUFDRjtBQUM2QjtBQUN0QjtBQUNvQjtBQUM3RDtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsT0FBTztBQUNsQixZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBLGFBQWEsMERBQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsMERBQXdCLGFBQWE7QUFDbEUsK0JBQStCLDBEQUF3QixlQUFlO0FBQ3RFLCtCQUErQix5REFBdUI7QUFDdEQsK0JBQStCLHFEQUFtQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwwREFBd0I7QUFDckQsK0JBQStCLDBEQUF3QjtBQUN2RCwrQkFBK0IscURBQW1CO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsbUJBQW1CO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx3QkFBd0I7QUFDM0QsNEJBQTRCLDJEQUFRLHFDQUFxQywyREFBUTtBQUNqRixxQ0FBcUMsa0VBQVc7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQix1RUFBZ0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtEQUFXLE9BQU8sbUVBQWU7QUFDdEQ7QUFDQTtBQUNBLHNCQUFzQiw2REFBVTtBQUNoQztBQUNBLHlCQUF5QixrRUFBVztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsVUFBVTtBQUNyQixXQUFXLE9BQU87QUFDbEIsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvQ0FBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9DQUFNO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsOENBQWE7QUFDbEM7QUFDQTtBQUNBLHdEQUF3RCxRQUFRO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsUUFBUTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0EsK0JBQStCLGNBQWM7QUFDN0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDYyx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYW5pbWF0ZS90aW1lbGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRXF1YWwsIGlzTnVtYmVyLCBpc0Z1bmN0aW9uIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgKiBhcyBkM1RpbWVyIGZyb20gJ2QzLXRpbWVyJztcbmltcG9ydCAqIGFzIGQzRWFzZSBmcm9tICdkMy1lYXNlJztcbmltcG9ydCB7IGludGVycG9sYXRlLCBpbnRlcnBvbGF0ZUFycmF5IH0gZnJvbSAnZDMtaW50ZXJwb2xhdGUnOyAvLyDnm67liY3mlbTkvZPliqjnlLvlj6rpnIDopoHmlbDlgLzlkozmlbDnu4TnmoTlt67lgLzorqHnrpdcbmltcG9ydCAqIGFzIFBhdGhVdGlsIGZyb20gJy4uL3V0aWwvcGF0aCc7XG5pbXBvcnQgeyBpc0NvbG9yUHJvcCwgaXNHcmFkaWVudENvbG9yIH0gZnJvbSAnLi4vdXRpbC9jb2xvcic7XG52YXIgSURFTlRJVFlfTUFUUklYID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuLyoqXG4gKiDkvb/nlKggcmF0aW8g6L+b6KGM5o+S5YC86K6h566X5p2l5pu05paw5bGe5oCnXG4gKiBAcGFyYW0ge0lFbGVtZW50fSAgc2hhcGUgICAg5YWD57SgXG4gKiBAcGFyYW0ge0FuaW1hdGlvbn0gYW5pbWF0aW9uIOWKqOeUu1xuICogQHBhcmFtIHtudW1iZXJ9ICAgIHJhdGlvICAgIOavlOS+i1xuICogQHJldHVybiB7Ym9vbGVhbn0gIOWKqOeUu+aYr+WQpuaJp+ihjOWujOaIkFxuICovXG5mdW5jdGlvbiBfdXBkYXRlKHNoYXBlLCBhbmltYXRpb24sIHJhdGlvKSB7XG4gICAgdmFyIGNQcm9wcyA9IHt9OyAvLyDmraTliLvlsZ7mgKdcbiAgICB2YXIgZnJvbUF0dHJzID0gYW5pbWF0aW9uLmZyb21BdHRycywgdG9BdHRycyA9IGFuaW1hdGlvbi50b0F0dHJzO1xuICAgIGlmIChzaGFwZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgaW50ZXJmOyAvLyAg5beu5YC85Ye95pWwXG4gICAgZm9yICh2YXIgayBpbiB0b0F0dHJzKSB7XG4gICAgICAgIGlmICghaXNFcXVhbChmcm9tQXR0cnNba10sIHRvQXR0cnNba10pKSB7XG4gICAgICAgICAgICBpZiAoayA9PT0gJ3BhdGgnKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvUGF0aCA9IHRvQXR0cnNba107XG4gICAgICAgICAgICAgICAgdmFyIGZyb21QYXRoID0gZnJvbUF0dHJzW2tdO1xuICAgICAgICAgICAgICAgIGlmICh0b1BhdGgubGVuZ3RoID4gZnJvbVBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvUGF0aCA9IFBhdGhVdGlsLnBhcnNlUGF0aFN0cmluZyh0b0F0dHJzW2tdKTsgLy8g57uI54K554q25oCBXG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoID0gUGF0aFV0aWwucGFyc2VQYXRoU3RyaW5nKGZyb21BdHRyc1trXSk7IC8vIOi1t+Wni+eKtuaAgVxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aCA9IFBhdGhVdGlsLmZpbGxQYXRoQnlEaWZmKGZyb21QYXRoLCB0b1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aCA9IFBhdGhVdGlsLmZvcm1hdFBhdGgoZnJvbVBhdGgsIHRvUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi5mcm9tQXR0cnMucGF0aCA9IGZyb21QYXRoO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24udG9BdHRycy5wYXRoID0gdG9QYXRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghYW5pbWF0aW9uLnBhdGhGb3JtYXR0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9QYXRoID0gUGF0aFV0aWwucGFyc2VQYXRoU3RyaW5nKHRvQXR0cnNba10pO1xuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aCA9IFBhdGhVdGlsLnBhcnNlUGF0aFN0cmluZyhmcm9tQXR0cnNba10pO1xuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aCA9IFBhdGhVdGlsLmZvcm1hdFBhdGgoZnJvbVBhdGgsIHRvUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi5mcm9tQXR0cnMucGF0aCA9IGZyb21QYXRoO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24udG9BdHRycy5wYXRoID0gdG9QYXRoO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24ucGF0aEZvcm1hdHRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNQcm9wc1trXSA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9QYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0b1BhdGhQb2ludCA9IHRvUGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZyb21QYXRoUG9pbnQgPSBmcm9tUGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNQYXRoUG9pbnQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0b1BhdGhQb2ludC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKHRvUGF0aFBvaW50W2pdKSAmJiBmcm9tUGF0aFBvaW50ICYmIGlzTnVtYmVyKGZyb21QYXRoUG9pbnRbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmID0gaW50ZXJwb2xhdGUoZnJvbVBhdGhQb2ludFtqXSwgdG9QYXRoUG9pbnRbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNQYXRoUG9pbnQucHVzaChpbnRlcmYocmF0aW8pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNQYXRoUG9pbnQucHVzaCh0b1BhdGhQb2ludFtqXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY1Byb3BzW2tdLnB1c2goY1BhdGhQb2ludCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoayA9PT0gJ21hdHJpeCcpIHtcbiAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICDlr7nnn6npmLXov5vooYzmj5LlgLzml7bvvIzpnIDopoHkv53or4Hnn6npmLXkuI3kuLrnqbrvvIzkuLrnqbrliJnkvb/nlKjljZXkvY3nn6npmLVcbiAgICAgICAgICAgICAgICAgVE9ETzog5LqM57u05ZKM5LiJ57u05Zy65pmv5LiL5Y2V5L2N55+p6Zi15LiN5ZCM77yM5LmL5ZCOIFdlYkdMIOeJiOmcgOimgeWBmui/m+S4gOatpeWkhOeQhlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHZhciBtYXRyaXhGbiA9IGludGVycG9sYXRlQXJyYXkoZnJvbUF0dHJzW2tdIHx8IElERU5USVRZX01BVFJJWCwgdG9BdHRyc1trXSB8fCBJREVOVElUWV9NQVRSSVgpO1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50TWF0cml4ID0gbWF0cml4Rm4ocmF0aW8pO1xuICAgICAgICAgICAgICAgIGNQcm9wc1trXSA9IGN1cnJlbnRNYXRyaXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0NvbG9yUHJvcChrKSAmJiBpc0dyYWRpZW50Q29sb3IodG9BdHRyc1trXSkpIHtcbiAgICAgICAgICAgICAgICBjUHJvcHNba10gPSB0b0F0dHJzW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWlzRnVuY3Rpb24odG9BdHRyc1trXSkpIHtcbiAgICAgICAgICAgICAgICAvLyDpnZ7lh73mlbDnsbvlnovnmoTlgLzmiY3og73lgZrmj5LlgLxcbiAgICAgICAgICAgICAgICBpbnRlcmYgPSBpbnRlcnBvbGF0ZShmcm9tQXR0cnNba10sIHRvQXR0cnNba10pO1xuICAgICAgICAgICAgICAgIGNQcm9wc1trXSA9IGludGVyZihyYXRpbyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2hhcGUuYXR0cihjUHJvcHMpO1xufVxuLyoqXG4gKiDmoLnmja7oh6rlrprkuYnluKfliqjnlLvlh73mlbAgb25GcmFtZSDmnaXmm7TmlrDlsZ7mgKdcbiAqIEBwYXJhbSB7SUVsZW1lbnR9ICBzaGFwZSAgICDlhYPntKBcbiAqIEBwYXJhbSB7QW5pbWF0aW9ufSBhbmltYXRpb24g5Yqo55S7XG4gKiBAcGFyYW0ge251bWJlcn0gICAgZWxhcHNlZCAg5Yqo55S75omn6KGM5pe26Ze0KOavq+enkilcbiAqIEByZXR1cm4ge2Jvb2xlYW59ICDliqjnlLvmmK/lkKbmiafooYzlrozmiJBcbiAqL1xuZnVuY3Rpb24gdXBkYXRlKHNoYXBlLCBhbmltYXRpb24sIGVsYXBzZWQpIHtcbiAgICB2YXIgc3RhcnRUaW1lID0gYW5pbWF0aW9uLnN0YXJ0VGltZSwgZGVsYXkgPSBhbmltYXRpb24uZGVsYXk7XG4gICAgLy8g5aaC5p6c6L+Y5rKh5pyJ5byA5aeL5omn6KGM5oiW5pqC5YGc77yM5YWI5LiN5pu05pawXG4gICAgaWYgKGVsYXBzZWQgPCBzdGFydFRpbWUgKyBkZWxheSB8fCBhbmltYXRpb24uX3BhdXNlZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciByYXRpbztcbiAgICB2YXIgZHVyYXRpb24gPSBhbmltYXRpb24uZHVyYXRpb247XG4gICAgdmFyIGVhc2luZyA9IGFuaW1hdGlvbi5lYXNpbmc7XG4gICAgLy8g5bey5omn6KGM5pe26Ze0XG4gICAgZWxhcHNlZCA9IGVsYXBzZWQgLSBzdGFydFRpbWUgLSBhbmltYXRpb24uZGVsYXk7XG4gICAgaWYgKGFuaW1hdGlvbi5yZXBlYXQpIHtcbiAgICAgICAgLy8g5aaC5p6c5Yqo55S76YeN5aSN5omn6KGM77yM5YiZIGVsYXBzZWQgPiBkdXJhdGlvbu+8jOiuoeeulyByYXRpbyDml7bpnIDlj5bmqKFcbiAgICAgICAgcmF0aW8gPSAoZWxhcHNlZCAlIGR1cmF0aW9uKSAvIGR1cmF0aW9uO1xuICAgICAgICByYXRpbyA9IGQzRWFzZVtlYXNpbmddKHJhdGlvKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJhdGlvID0gZWxhcHNlZCAvIGR1cmF0aW9uO1xuICAgICAgICBpZiAocmF0aW8gPCAxKSB7XG4gICAgICAgICAgICAvLyDliqjnlLvmnKrmiafooYzlroxcbiAgICAgICAgICAgIHJhdGlvID0gZDNFYXNlW2Vhc2luZ10ocmF0aW8pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8g5Yqo55S75bey5omn6KGM5a6MXG4gICAgICAgICAgICBpZiAoYW5pbWF0aW9uLm9uRnJhbWUpIHtcbiAgICAgICAgICAgICAgICBzaGFwZS5hdHRyKGFuaW1hdGlvbi5vbkZyYW1lKDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNoYXBlLmF0dHIoYW5pbWF0aW9uLnRvQXR0cnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFuaW1hdGlvbi5vbkZyYW1lKSB7XG4gICAgICAgIHZhciBhdHRycyA9IGFuaW1hdGlvbi5vbkZyYW1lKHJhdGlvKTtcbiAgICAgICAgc2hhcGUuYXR0cihhdHRycyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBfdXBkYXRlKHNoYXBlLCBhbmltYXRpb24sIHJhdGlvKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxudmFyIFRpbWVsaW5lID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIC8qKlxuICAgICAqIOaXtumXtOi9tOaehOmAoOWHveaVsO+8jOS+nei1luS6jueUu+W4g1xuICAgICAqIEBwYXJhbSB7fVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFRpbWVsaW5lKGNhbnZhcykge1xuICAgICAgICAvKipcbiAgICAgICAgICog5omn6KGM5Yqo55S755qE5YWD57Sg5YiX6KGoXG4gICAgICAgICAqIEB0eXBlIHtJRWxlbWVudFtdfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5hbmltYXRvcnMgPSBbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOW9k+WJjeaXtumXtFxuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5jdXJyZW50ID0gMDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOWumuaXtuWZqFxuICAgICAgICAgKiBAdHlwZSB7ZDNUaW1lci5UaW1lcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog5Yid5aeL5YyW5a6a5pe25ZmoXG4gICAgICovXG4gICAgVGltZWxpbmUucHJvdG90eXBlLmluaXRUaW1lciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGlzRmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIHNoYXBlO1xuICAgICAgICB2YXIgYW5pbWF0aW9ucztcbiAgICAgICAgdmFyIGFuaW1hdGlvbjtcbiAgICAgICAgdGhpcy50aW1lciA9IGQzVGltZXIudGltZXIoZnVuY3Rpb24gKGVsYXBzZWQpIHtcbiAgICAgICAgICAgIF90aGlzLmN1cnJlbnQgPSBlbGFwc2VkO1xuICAgICAgICAgICAgaWYgKF90aGlzLmFuaW1hdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IF90aGlzLmFuaW1hdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IF90aGlzLmFuaW1hdG9yc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNoYXBlLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5bey57uP6KKr6ZSA5q+B77yM55u05o6l56e75Ye66Zif5YiXXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5yZW1vdmVBbmltYXRvcihpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hhcGUuaXNBbmltYXRlUGF1c2VkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMgPSBzaGFwZS5nZXQoJ2FuaW1hdGlvbnMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBhbmltYXRpb25zLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkID0gdXBkYXRlKHNoYXBlLCBhbmltYXRpb24sIGVsYXBzZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZpbmlzaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuc3BsaWNlKGosIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb24uY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi5jYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlQW5pbWF0b3IoaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGF1dG9EcmF3ID0gX3RoaXMuY2FudmFzLmdldCgnYXV0b0RyYXcnKTtcbiAgICAgICAgICAgICAgICAvLyDpnZ7oh6rliqjmuLLmn5PmqKHlvI/kuIvvvIzmiYvliqjosIPnlKggY2FudmFzLmRyYXcoKSDph43mlrDmuLLmn5NcbiAgICAgICAgICAgICAgICBpZiAoIWF1dG9EcmF3KSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmNhbnZhcy5kcmF3KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOWinuWKoOWKqOeUu+WFg+e0oFxuICAgICAqL1xuICAgIFRpbWVsaW5lLnByb3RvdHlwZS5hZGRBbmltYXRvciA9IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgICAgICB0aGlzLmFuaW1hdG9ycy5wdXNoKHNoYXBlKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOenu+mZpOWKqOeUu+WFg+e0oFxuICAgICAqL1xuICAgIFRpbWVsaW5lLnByb3RvdHlwZS5yZW1vdmVBbmltYXRvciA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICB0aGlzLmFuaW1hdG9ycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5piv5ZCm5pyJ5Yqo55S75Zyo5omn6KGMXG4gICAgICovXG4gICAgVGltZWxpbmUucHJvdG90eXBlLmlzQW5pbWF0aW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLmFuaW1hdG9ycy5sZW5ndGg7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlgZzmraLlrprml7blmahcbiAgICAgKi9cbiAgICBUaW1lbGluZS5wcm90b3R5cGUuc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIHRoaXMudGltZXIuc3RvcCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlgZzmraLml7bpl7TovbTkuIrmiYDmnInlhYPntKDnmoTliqjnlLvvvIzlubbnva7nqbrliqjnlLvlhYPntKDliJfooahcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHRvRW5kIOaYr+WQpuWIsOWKqOeUu+eahOacgOe7iOeKtuaAge+8jOeUqOadpemAj+S8oOe7meWKqOeUu+WFg+e0oOeahCBzdG9wQW5pbWF0ZSDmlrnms5VcbiAgICAgKi9cbiAgICBUaW1lbGluZS5wcm90b3R5cGUuc3RvcEFsbEFuaW1hdGlvbnMgPSBmdW5jdGlvbiAodG9FbmQpIHtcbiAgICAgICAgaWYgKHRvRW5kID09PSB2b2lkIDApIHsgdG9FbmQgPSB0cnVlOyB9XG4gICAgICAgIHRoaXMuYW5pbWF0b3JzLmZvckVhY2goZnVuY3Rpb24gKGFuaW1hdG9yKSB7XG4gICAgICAgICAgICBhbmltYXRvci5zdG9wQW5pbWF0ZSh0b0VuZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFuaW1hdG9ycyA9IFtdO1xuICAgICAgICB0aGlzLmNhbnZhcy5kcmF3KCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5blvZPliY3ml7bpl7RcbiAgICAgKi9cbiAgICBUaW1lbGluZS5wcm90b3R5cGUuZ2V0VGltZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudDtcbiAgICB9O1xuICAgIHJldHVybiBUaW1lbGluZTtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBUaW1lbGluZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpbWVsaW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/animate/timeline.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/bbox/circle.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g-base/esm/bbox/circle.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var _a = shape.attr(), x = _a.x, y = _a.y, r = _a.r;\n return {\n x: x - r,\n y: y - r,\n width: r * 2,\n height: r * 2,\n };\n});\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L2NpcmNsZS5qcz83NTJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvY2lyY2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIF9hID0gc2hhcGUuYXR0cigpLCB4ID0gX2EueCwgeSA9IF9hLnksIHIgPSBfYS5yO1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggLSByLFxuICAgICAgICB5OiB5IC0gcixcbiAgICAgICAgd2lkdGg6IHIgKiAyLFxuICAgICAgICBoZWlnaHQ6IHIgKiAyLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jaXJjbGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/circle.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/bbox/ellipse.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-base/esm/bbox/ellipse.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, rx = attrs.rx, ry = attrs.ry;\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n});\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L2VsbGlwc2UuanM/NDFmNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvZWxsaXBzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgeCA9IGF0dHJzLngsIHkgPSBhdHRycy55LCByeCA9IGF0dHJzLnJ4LCByeSA9IGF0dHJzLnJ5O1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggLSByeCxcbiAgICAgICAgeTogeSAtIHJ5LFxuICAgICAgICB3aWR0aDogcnggKiAyLFxuICAgICAgICBoZWlnaHQ6IHJ5ICogMixcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWxsaXBzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/ellipse.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/bbox/index.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g-base/esm/bbox/index.js ***! \*****************************************************/ /*! exports provided: getBBoxMethod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./register */ \"./node_modules/@antv/g-base/esm/bbox/register.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBBoxMethod\", function() { return _register__WEBPACK_IMPORTED_MODULE_0__[\"getMethod\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/@antv/g-base/esm/bbox/rect.js\");\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./circle */ \"./node_modules/@antv/g-base/esm/bbox/circle.js\");\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g-base/esm/bbox/polyline.js\");\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./polygon */ \"./node_modules/@antv/g-base/esm/bbox/polygon.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./text */ \"./node_modules/@antv/g-base/esm/bbox/text.js\");\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./path */ \"./node_modules/@antv/g-base/esm/bbox/path.js\");\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-base/esm/bbox/line.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/@antv/g-base/esm/bbox/ellipse.js\");\n\n\n\n\n\n\n\n\n\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('rect', _rect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('image', _rect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]); // image 使用 rect 的包围盒计算\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('circle', _circle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('marker', _circle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]); // marker 使用 circle 的计算方案\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('polyline', _polyline__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('polygon', _polygon__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('text', _text__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('path', _path__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('line', _line__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('ellipse', _ellipse__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L2luZGV4LmpzP2Q0YzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlEO0FBQ3ZCO0FBQ0k7QUFDSTtBQUNGO0FBQ047QUFDQTtBQUNBO0FBQ007QUFDaEMsMERBQVEsU0FBUyw2Q0FBSTtBQUNyQiwwREFBUSxVQUFVLDZDQUFJLEVBQUU7QUFDeEIsMERBQVEsV0FBVywrQ0FBTTtBQUN6QiwwREFBUSxXQUFXLCtDQUFNLEVBQUU7QUFDM0IsMERBQVEsYUFBYSxpREFBUTtBQUM3QiwwREFBUSxZQUFZLGdEQUFPO0FBQzNCLDBEQUFRLFNBQVMsNkNBQUk7QUFDckIsMERBQVEsU0FBUyw2Q0FBSTtBQUNyQiwwREFBUSxTQUFTLDZDQUFJO0FBQ3JCLDBEQUFRLFlBQVksZ0RBQU87QUFDVztBQUN0QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlciwgZ2V0TWV0aG9kIH0gZnJvbSAnLi9yZWdpc3Rlcic7XG5pbXBvcnQgcmVjdCBmcm9tICcuL3JlY3QnO1xuaW1wb3J0IGNpcmNsZSBmcm9tICcuL2NpcmNsZSc7XG5pbXBvcnQgcG9seWxpbmUgZnJvbSAnLi9wb2x5bGluZSc7XG5pbXBvcnQgcG9seWdvbiBmcm9tICcuL3BvbHlnb24nO1xuaW1wb3J0IHRleHQgZnJvbSAnLi90ZXh0JztcbmltcG9ydCBwYXRoIGZyb20gJy4vcGF0aCc7XG5pbXBvcnQgbGluZSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IGVsbGlwc2UgZnJvbSAnLi9lbGxpcHNlJztcbnJlZ2lzdGVyKCdyZWN0JywgcmVjdCk7XG5yZWdpc3RlcignaW1hZ2UnLCByZWN0KTsgLy8gaW1hZ2Ug5L2/55SoIHJlY3Qg55qE5YyF5Zu055uS6K6h566XXG5yZWdpc3RlcignY2lyY2xlJywgY2lyY2xlKTtcbnJlZ2lzdGVyKCdtYXJrZXInLCBjaXJjbGUpOyAvLyBtYXJrZXIg5L2/55SoIGNpcmNsZSDnmoTorqHnrpfmlrnmoYhcbnJlZ2lzdGVyKCdwb2x5bGluZScsIHBvbHlsaW5lKTtcbnJlZ2lzdGVyKCdwb2x5Z29uJywgcG9seWdvbik7XG5yZWdpc3RlcigndGV4dCcsIHRleHQpO1xucmVnaXN0ZXIoJ3BhdGgnLCBwYXRoKTtcbnJlZ2lzdGVyKCdsaW5lJywgbGluZSk7XG5yZWdpc3RlcignZWxsaXBzZScsIGVsbGlwc2UpO1xuZXhwb3J0IHsgZ2V0TWV0aG9kIGFzIGdldEJCb3hNZXRob2QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/bbox/line.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-base/esm/bbox/line.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-base/esm/bbox/util.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2;\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var bbox = {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L2xpbmUuanM/NTQ3OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXdDO0FBQ3pCO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw0REFBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L2xpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtZXJnZUFycm93QkJveCB9IGZyb20gJy4vdXRpbCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICB2YXIgYXR0cnMgPSBzaGFwZS5hdHRyKCk7XG4gICAgdmFyIHgxID0gYXR0cnMueDEsIHkxID0gYXR0cnMueTEsIHgyID0gYXR0cnMueDIsIHkyID0gYXR0cnMueTI7XG4gICAgdmFyIG1pblggPSBNYXRoLm1pbih4MSwgeDIpO1xuICAgIHZhciBtYXhYID0gTWF0aC5tYXgoeDEsIHgyKTtcbiAgICB2YXIgbWluWSA9IE1hdGgubWluKHkxLCB5Mik7XG4gICAgdmFyIG1heFkgPSBNYXRoLm1heCh5MSwgeTIpO1xuICAgIHZhciBiYm94ID0ge1xuICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICBtYXhYOiBtYXhYLFxuICAgICAgICBtaW5ZOiBtaW5ZLFxuICAgICAgICBtYXhZOiBtYXhZLFxuICAgIH07XG4gICAgYmJveCA9IG1lcmdlQXJyb3dCQm94KHNoYXBlLCBiYm94KTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYm94Lm1pblgsXG4gICAgICAgIHk6IGJib3gubWluWSxcbiAgICAgICAgd2lkdGg6IGJib3gubWF4WCAtIGJib3gubWluWCxcbiAgICAgICAgaGVpZ2h0OiBiYm94Lm1heFkgLSBiYm94Lm1pblksXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/line.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/bbox/path.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-base/esm/bbox/path.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/@antv/path-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-base/esm/bbox/util.js\");\n\n\n\n\nfunction getPathBox(segments, lineWidth) {\n var xArr = [];\n var yArr = [];\n var segmentsWithAngle = [];\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint, params = segment.params, prePoint = segment.prePoint;\n var box = void 0;\n switch (segment.command) {\n case 'Q':\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Quad\"].box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4]);\n break;\n case 'C':\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Cubic\"].box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], params[5], params[6]);\n break;\n case 'A':\n var arcParams = segment.arcParams;\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Arc\"].box(arcParams.cx, arcParams.cy, arcParams.rx, arcParams.ry, arcParams.xRotation, arcParams.startAngle, arcParams.endAngle);\n break;\n default:\n xArr.push(currentPoint[0]);\n yArr.push(currentPoint[1]);\n break;\n }\n if (box) {\n segment.box = box;\n xArr.push(box.x, box.x + box.width);\n yArr.push(box.y, box.y + box.height);\n }\n if (lineWidth && (segment.command === 'L' || segment.command === 'M') && segment.prePoint && segment.nextPoint) {\n segmentsWithAngle.push(segment);\n }\n }\n // bbox calculation should ignore NaN for path attribute\n // ref: https://github.com/antvis/g/issues/210\n xArr = xArr.filter(function (item) { return !Number.isNaN(item); });\n yArr = yArr.filter(function (item) { return !Number.isNaN(item); });\n var minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(xArr);\n var minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(yArr);\n var maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(xArr);\n var maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(yArr);\n if (segmentsWithAngle.length === 0) {\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n for (var i = 0; i < segmentsWithAngle.length; i++) {\n var segment = segmentsWithAngle[i];\n var currentPoint = segment.currentPoint;\n var extra = void 0;\n if (currentPoint[0] === minX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minX = minX - extra.xExtra;\n }\n else if (currentPoint[0] === maxX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxX = maxX + extra.xExtra;\n }\n if (currentPoint[1] === minY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minY = minY - extra.yExtra;\n }\n else if (currentPoint[1] === maxY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxY = maxY + extra.yExtra;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction getExtraFromSegmentWithAngle(segment, lineWidth) {\n var prePoint = segment.prePoint, currentPoint = segment.currentPoint, nextPoint = segment.nextPoint;\n var currentAndPre = Math.pow(currentPoint[0] - prePoint[0], 2) + Math.pow(currentPoint[1] - prePoint[1], 2);\n var currentAndNext = Math.pow(currentPoint[0] - nextPoint[0], 2) + Math.pow(currentPoint[1] - nextPoint[1], 2);\n var preAndNext = Math.pow(prePoint[0] - nextPoint[0], 2) + Math.pow(prePoint[1] - nextPoint[1], 2);\n // 以 currentPoint 为顶点的夹角\n var currentAngle = Math.acos((currentAndPre + currentAndNext - preAndNext) / (2 * Math.sqrt(currentAndPre) * Math.sqrt(currentAndNext)));\n // 夹角为空、 0 或 PI 时,不需要计算夹角处的额外宽度\n // 注意: 由于计算精度问题,夹角为 0 的情况计算出来的角度可能是一个很小的值,还需要判断其与 0 是否近似相等\n if (!currentAngle || Math.sin(currentAngle) === 0 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumberEqual\"])(currentAngle, 0)) {\n return {\n xExtra: 0,\n yExtra: 0,\n };\n }\n var xAngle = Math.abs(Math.atan2(nextPoint[1] - currentPoint[1], nextPoint[0] - currentPoint[0]));\n var yAngle = Math.abs(Math.atan2(nextPoint[0] - currentPoint[0], nextPoint[1] - currentPoint[1]));\n // 将夹角转为锐角\n xAngle = xAngle > Math.PI / 2 ? Math.PI - xAngle : xAngle;\n yAngle = yAngle > Math.PI / 2 ? Math.PI - yAngle : yAngle;\n // 这里不考虑在水平和垂直方向的投影,直接使用最大差值\n // 由于上层统一加减了二分之一线宽,这里需要进行弥补\n var extra = {\n // 水平方向投影\n xExtra: Math.cos(currentAngle / 2 - xAngle) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n // 垂直方向投影\n yExtra: Math.cos(yAngle - currentAngle / 2) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n };\n return extra;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var path = attrs.path, stroke = attrs.stroke;\n var lineWidth = stroke ? attrs.lineWidth : 0; // 只有有 stroke 时,lineWidth 才生效\n var segments = shape.get('segments') || Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_1__[\"path2Segments\"])(path);\n var _a = getPathBox(segments, lineWidth), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3BhdGguanM/YjcwYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTJGO0FBQzNDO0FBQ0s7QUFDYjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixpREFBUTtBQUM5QjtBQUNBO0FBQ0Esc0JBQXNCLGtEQUFTO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixnREFBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLDRCQUE0QixFQUFFO0FBQ3RFLHdDQUF3Qyw0QkFBNEIsRUFBRTtBQUN0RSxlQUFlLHNEQUFHO0FBQ2xCLGVBQWUsc0RBQUc7QUFDbEIsZUFBZSxzREFBRztBQUNsQixlQUFlLHNEQUFHO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOEJBQThCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxnRUFBYTtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EsaURBQWlEO0FBQ2pELDRDQUE0QyxxRUFBYTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNERBQWM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYmJveC9wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVhZCBhcyBRdWFkVXRpbCwgQ3ViaWMgYXMgQ3ViaWNVdGlsLCBBcmMgYXMgRWxsaXBzZUFyY1V0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgcGF0aDJTZWdtZW50cyB9IGZyb20gJ0BhbnR2L3BhdGgtdXRpbCc7XG5pbXBvcnQgeyBpc051bWJlckVxdWFsLCBtYXgsIG1pbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgbWVyZ2VBcnJvd0JCb3ggfSBmcm9tICcuL3V0aWwnO1xuZnVuY3Rpb24gZ2V0UGF0aEJveChzZWdtZW50cywgbGluZVdpZHRoKSB7XG4gICAgdmFyIHhBcnIgPSBbXTtcbiAgICB2YXIgeUFyciA9IFtdO1xuICAgIHZhciBzZWdtZW50c1dpdGhBbmdsZSA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlZ21lbnQgPSBzZWdtZW50c1tpXTtcbiAgICAgICAgdmFyIGN1cnJlbnRQb2ludCA9IHNlZ21lbnQuY3VycmVudFBvaW50LCBwYXJhbXMgPSBzZWdtZW50LnBhcmFtcywgcHJlUG9pbnQgPSBzZWdtZW50LnByZVBvaW50O1xuICAgICAgICB2YXIgYm94ID0gdm9pZCAwO1xuICAgICAgICBzd2l0Y2ggKHNlZ21lbnQuY29tbWFuZCkge1xuICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgYm94ID0gUXVhZFV0aWwuYm94KHByZVBvaW50WzBdLCBwcmVQb2ludFsxXSwgcGFyYW1zWzFdLCBwYXJhbXNbMl0sIHBhcmFtc1szXSwgcGFyYW1zWzRdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgIGJveCA9IEN1YmljVXRpbC5ib3gocHJlUG9pbnRbMF0sIHByZVBvaW50WzFdLCBwYXJhbXNbMV0sIHBhcmFtc1syXSwgcGFyYW1zWzNdLCBwYXJhbXNbNF0sIHBhcmFtc1s1XSwgcGFyYW1zWzZdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgIHZhciBhcmNQYXJhbXMgPSBzZWdtZW50LmFyY1BhcmFtcztcbiAgICAgICAgICAgICAgICBib3ggPSBFbGxpcHNlQXJjVXRpbC5ib3goYXJjUGFyYW1zLmN4LCBhcmNQYXJhbXMuY3ksIGFyY1BhcmFtcy5yeCwgYXJjUGFyYW1zLnJ5LCBhcmNQYXJhbXMueFJvdGF0aW9uLCBhcmNQYXJhbXMuc3RhcnRBbmdsZSwgYXJjUGFyYW1zLmVuZEFuZ2xlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgeEFyci5wdXNoKGN1cnJlbnRQb2ludFswXSk7XG4gICAgICAgICAgICAgICAgeUFyci5wdXNoKGN1cnJlbnRQb2ludFsxXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJveCkge1xuICAgICAgICAgICAgc2VnbWVudC5ib3ggPSBib3g7XG4gICAgICAgICAgICB4QXJyLnB1c2goYm94LngsIGJveC54ICsgYm94LndpZHRoKTtcbiAgICAgICAgICAgIHlBcnIucHVzaChib3gueSwgYm94LnkgKyBib3guaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGluZVdpZHRoICYmIChzZWdtZW50LmNvbW1hbmQgPT09ICdMJyB8fCBzZWdtZW50LmNvbW1hbmQgPT09ICdNJykgJiYgc2VnbWVudC5wcmVQb2ludCAmJiBzZWdtZW50Lm5leHRQb2ludCkge1xuICAgICAgICAgICAgc2VnbWVudHNXaXRoQW5nbGUucHVzaChzZWdtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBiYm94IGNhbGN1bGF0aW9uIHNob3VsZCBpZ25vcmUgTmFOIGZvciBwYXRoIGF0dHJpYnV0ZVxuICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9nL2lzc3Vlcy8yMTBcbiAgICB4QXJyID0geEFyci5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuICFOdW1iZXIuaXNOYU4oaXRlbSk7IH0pO1xuICAgIHlBcnIgPSB5QXJyLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gIU51bWJlci5pc05hTihpdGVtKTsgfSk7XG4gICAgdmFyIG1pblggPSBtaW4oeEFycik7XG4gICAgdmFyIG1pblkgPSBtaW4oeUFycik7XG4gICAgdmFyIG1heFggPSBtYXgoeEFycik7XG4gICAgdmFyIG1heFkgPSBtYXgoeUFycik7XG4gICAgaWYgKHNlZ21lbnRzV2l0aEFuZ2xlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgICAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzV2l0aEFuZ2xlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzZWdtZW50ID0gc2VnbWVudHNXaXRoQW5nbGVbaV07XG4gICAgICAgIHZhciBjdXJyZW50UG9pbnQgPSBzZWdtZW50LmN1cnJlbnRQb2ludDtcbiAgICAgICAgdmFyIGV4dHJhID0gdm9pZCAwO1xuICAgICAgICBpZiAoY3VycmVudFBvaW50WzBdID09PSBtaW5YKSB7XG4gICAgICAgICAgICBleHRyYSA9IGdldEV4dHJhRnJvbVNlZ21lbnRXaXRoQW5nbGUoc2VnbWVudCwgbGluZVdpZHRoKTtcbiAgICAgICAgICAgIG1pblggPSBtaW5YIC0gZXh0cmEueEV4dHJhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRQb2ludFswXSA9PT0gbWF4WCkge1xuICAgICAgICAgICAgZXh0cmEgPSBnZXRFeHRyYUZyb21TZWdtZW50V2l0aEFuZ2xlKHNlZ21lbnQsIGxpbmVXaWR0aCk7XG4gICAgICAgICAgICBtYXhYID0gbWF4WCArIGV4dHJhLnhFeHRyYTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudFBvaW50WzFdID09PSBtaW5ZKSB7XG4gICAgICAgICAgICBleHRyYSA9IGdldEV4dHJhRnJvbVNlZ21lbnRXaXRoQW5nbGUoc2VnbWVudCwgbGluZVdpZHRoKTtcbiAgICAgICAgICAgIG1pblkgPSBtaW5ZIC0gZXh0cmEueUV4dHJhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRQb2ludFsxXSA9PT0gbWF4WSkge1xuICAgICAgICAgICAgZXh0cmEgPSBnZXRFeHRyYUZyb21TZWdtZW50V2l0aEFuZ2xlKHNlZ21lbnQsIGxpbmVXaWR0aCk7XG4gICAgICAgICAgICBtYXhZID0gbWF4WSArIGV4dHJhLnlFeHRyYTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBtaW5YLFxuICAgICAgICB5OiBtaW5ZLFxuICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGdldEV4dHJhRnJvbVNlZ21lbnRXaXRoQW5nbGUoc2VnbWVudCwgbGluZVdpZHRoKSB7XG4gICAgdmFyIHByZVBvaW50ID0gc2VnbWVudC5wcmVQb2ludCwgY3VycmVudFBvaW50ID0gc2VnbWVudC5jdXJyZW50UG9pbnQsIG5leHRQb2ludCA9IHNlZ21lbnQubmV4dFBvaW50O1xuICAgIHZhciBjdXJyZW50QW5kUHJlID0gTWF0aC5wb3coY3VycmVudFBvaW50WzBdIC0gcHJlUG9pbnRbMF0sIDIpICsgTWF0aC5wb3coY3VycmVudFBvaW50WzFdIC0gcHJlUG9pbnRbMV0sIDIpO1xuICAgIHZhciBjdXJyZW50QW5kTmV4dCA9IE1hdGgucG93KGN1cnJlbnRQb2ludFswXSAtIG5leHRQb2ludFswXSwgMikgKyBNYXRoLnBvdyhjdXJyZW50UG9pbnRbMV0gLSBuZXh0UG9pbnRbMV0sIDIpO1xuICAgIHZhciBwcmVBbmROZXh0ID0gTWF0aC5wb3cocHJlUG9pbnRbMF0gLSBuZXh0UG9pbnRbMF0sIDIpICsgTWF0aC5wb3cocHJlUG9pbnRbMV0gLSBuZXh0UG9pbnRbMV0sIDIpO1xuICAgIC8vIOS7pSBjdXJyZW50UG9pbnQg5Li66aG254K555qE5aS56KeSXG4gICAgdmFyIGN1cnJlbnRBbmdsZSA9IE1hdGguYWNvcygoY3VycmVudEFuZFByZSArIGN1cnJlbnRBbmROZXh0IC0gcHJlQW5kTmV4dCkgLyAoMiAqIE1hdGguc3FydChjdXJyZW50QW5kUHJlKSAqIE1hdGguc3FydChjdXJyZW50QW5kTmV4dCkpKTtcbiAgICAvLyDlpLnop5LkuLrnqbrjgIEgMCDmiJYgUEkg5pe277yM5LiN6ZyA6KaB6K6h566X5aS56KeS5aSE55qE6aKd5aSW5a695bqmXG4gICAgLy8g5rOo5oSPOiDnlLHkuo7orqHnrpfnsr7luqbpl67popjvvIzlpLnop5LkuLogMCDnmoTmg4XlhrXorqHnrpflh7rmnaXnmoTop5Lluqblj6/og73mmK/kuIDkuKrlvojlsI/nmoTlgLzvvIzov5jpnIDopoHliKTmlq3lhbbkuI4gMCDmmK/lkKbov5HkvLznm7jnrYlcbiAgICBpZiAoIWN1cnJlbnRBbmdsZSB8fCBNYXRoLnNpbihjdXJyZW50QW5nbGUpID09PSAwIHx8IGlzTnVtYmVyRXF1YWwoY3VycmVudEFuZ2xlLCAwKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeEV4dHJhOiAwLFxuICAgICAgICAgICAgeUV4dHJhOiAwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgeEFuZ2xlID0gTWF0aC5hYnMoTWF0aC5hdGFuMihuZXh0UG9pbnRbMV0gLSBjdXJyZW50UG9pbnRbMV0sIG5leHRQb2ludFswXSAtIGN1cnJlbnRQb2ludFswXSkpO1xuICAgIHZhciB5QW5nbGUgPSBNYXRoLmFicyhNYXRoLmF0YW4yKG5leHRQb2ludFswXSAtIGN1cnJlbnRQb2ludFswXSwgbmV4dFBvaW50WzFdIC0gY3VycmVudFBvaW50WzFdKSk7XG4gICAgLy8g5bCG5aS56KeS6L2s5Li66ZSQ6KeSXG4gICAgeEFuZ2xlID0geEFuZ2xlID4gTWF0aC5QSSAvIDIgPyBNYXRoLlBJIC0geEFuZ2xlIDogeEFuZ2xlO1xuICAgIHlBbmdsZSA9IHlBbmdsZSA+IE1hdGguUEkgLyAyID8gTWF0aC5QSSAtIHlBbmdsZSA6IHlBbmdsZTtcbiAgICAvLyDov5nph4zkuI3ogIPomZHlnKjmsLTlubPlkozlnoLnm7TmlrnlkJHnmoTmipXlvbHvvIznm7TmjqXkvb/nlKjmnIDlpKflt67lgLxcbiAgICAvLyDnlLHkuo7kuIrlsYLnu5/kuIDliqDlh4/kuobkuozliIbkuYvkuIDnur/lrr3vvIzov5nph4zpnIDopoHov5vooYzlvKXooaVcbiAgICB2YXIgZXh0cmEgPSB7XG4gICAgICAgIC8vIOawtOW5s+aWueWQkeaKleW9sVxuICAgICAgICB4RXh0cmE6IE1hdGguY29zKGN1cnJlbnRBbmdsZSAvIDIgLSB4QW5nbGUpICogKChsaW5lV2lkdGggLyAyKSAqICgxIC8gTWF0aC5zaW4oY3VycmVudEFuZ2xlIC8gMikpKSAtIGxpbmVXaWR0aCAvIDIgfHwgMCxcbiAgICAgICAgLy8g5Z6C55u05pa55ZCR5oqV5b2xXG4gICAgICAgIHlFeHRyYTogTWF0aC5jb3MoeUFuZ2xlIC0gY3VycmVudEFuZ2xlIC8gMikgKiAoKGxpbmVXaWR0aCAvIDIpICogKDEgLyBNYXRoLnNpbihjdXJyZW50QW5nbGUgLyAyKSkpIC0gbGluZVdpZHRoIC8gMiB8fCAwLFxuICAgIH07XG4gICAgcmV0dXJuIGV4dHJhO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIHZhciBwYXRoID0gYXR0cnMucGF0aCwgc3Ryb2tlID0gYXR0cnMuc3Ryb2tlO1xuICAgIHZhciBsaW5lV2lkdGggPSBzdHJva2UgPyBhdHRycy5saW5lV2lkdGggOiAwOyAvLyDlj6rmnInmnIkgc3Ryb2tlIOaXtu+8jGxpbmVXaWR0aCDmiY3nlJ/mlYhcbiAgICB2YXIgc2VnbWVudHMgPSBzaGFwZS5nZXQoJ3NlZ21lbnRzJykgfHwgcGF0aDJTZWdtZW50cyhwYXRoKTtcbiAgICB2YXIgX2EgPSBnZXRQYXRoQm94KHNlZ21lbnRzLCBsaW5lV2lkdGgpLCB4ID0gX2EueCwgeSA9IF9hLnksIHdpZHRoID0gX2Eud2lkdGgsIGhlaWdodCA9IF9hLmhlaWdodDtcbiAgICB2YXIgYmJveCA9IHtcbiAgICAgICAgbWluWDogeCxcbiAgICAgICAgbWluWTogeSxcbiAgICAgICAgbWF4WDogeCArIHdpZHRoLFxuICAgICAgICBtYXhZOiB5ICsgaGVpZ2h0LFxuICAgIH07XG4gICAgYmJveCA9IG1lcmdlQXJyb3dCQm94KHNoYXBlLCBiYm94KTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYm94Lm1pblgsXG4gICAgICAgIHk6IGJib3gubWluWSxcbiAgICAgICAgd2lkdGg6IGJib3gubWF4WCAtIGJib3gubWluWCxcbiAgICAgICAgaGVpZ2h0OiBiYm94Lm1heFkgLSBiYm94Lm1pblksXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/path.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/bbox/polygon.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-base/esm/bbox/polygon.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getBBoxByArray(xArr, yArr);\n});\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3BvbHlnb24uanM/YzEyYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW9DO0FBQ3JCO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpREFBSTtBQUNmLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvcG9seWdvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIHZhciBwb2ludHMgPSBhdHRycy5wb2ludHM7XG4gICAgdmFyIHhBcnIgPSBbXTtcbiAgICB2YXIgeUFyciA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgICAgeEFyci5wdXNoKHBvaW50WzBdKTtcbiAgICAgICAgeUFyci5wdXNoKHBvaW50WzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIFV0aWwuZ2V0QkJveEJ5QXJyYXkoeEFyciwgeUFycik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5Z29uLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/polygon.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/bbox/polyline.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g-base/esm/bbox/polyline.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-base/esm/bbox/util.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n var _a = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getBBoxByArray(xArr, yArr), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3BvbHlsaW5lLmpzP2Y3MDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW9DO0FBQ0k7QUFDekI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlEQUFJO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNERBQWM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYmJveC9wb2x5bGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgbWVyZ2VBcnJvd0JCb3ggfSBmcm9tICcuL3V0aWwnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIHZhciBwb2ludHMgPSBhdHRycy5wb2ludHM7XG4gICAgdmFyIHhBcnIgPSBbXTtcbiAgICB2YXIgeUFyciA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgICAgeEFyci5wdXNoKHBvaW50WzBdKTtcbiAgICAgICAgeUFyci5wdXNoKHBvaW50WzFdKTtcbiAgICB9XG4gICAgdmFyIF9hID0gVXRpbC5nZXRCQm94QnlBcnJheSh4QXJyLCB5QXJyKSwgeCA9IF9hLngsIHkgPSBfYS55LCB3aWR0aCA9IF9hLndpZHRoLCBoZWlnaHQgPSBfYS5oZWlnaHQ7XG4gICAgdmFyIGJib3ggPSB7XG4gICAgICAgIG1pblg6IHgsXG4gICAgICAgIG1pblk6IHksXG4gICAgICAgIG1heFg6IHggKyB3aWR0aCxcbiAgICAgICAgbWF4WTogeSArIGhlaWdodCxcbiAgICB9O1xuICAgIGJib3ggPSBtZXJnZUFycm93QkJveChzaGFwZSwgYmJveCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogYmJveC5taW5YLFxuICAgICAgICB5OiBiYm94Lm1pblksXG4gICAgICAgIHdpZHRoOiBiYm94Lm1heFggLSBiYm94Lm1pblgsXG4gICAgICAgIGhlaWdodDogYmJveC5tYXhZIC0gYmJveC5taW5ZLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/polyline.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/bbox/rect.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-base/esm/bbox/rect.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, width = attrs.width, height = attrs.height;\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n});\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3JlY3QuanM/MWI1NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgeCA9IGF0dHJzLngsIHkgPSBhdHRycy55LCB3aWR0aCA9IGF0dHJzLndpZHRoLCBoZWlnaHQgPSBhdHRycy5oZWlnaHQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/rect.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/bbox/register.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g-base/esm/bbox/register.js ***! \********************************************************/ /*! exports provided: register, getMethod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"register\", function() { return register; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMethod\", function() { return getMethod; });\nvar cache = new Map();\n/**\n * 注册计算包围盒的算法\n * @param type 方法名\n * @param method 方法\n */\nfunction register(type, method) {\n cache.set(type, method);\n}\n/**\n * 获取计算包围盒的算法\n * @param type 方法名\n */\nfunction getMethod(type) {\n return cache.get(type);\n}\n//# sourceMappingURL=register.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3JlZ2lzdGVyLmpzP2NmZDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2Jib3gvcmVnaXN0ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2FjaGUgPSBuZXcgTWFwKCk7XG4vKipcbiAqIOazqOWGjOiuoeeul+WMheWbtOebkueahOeul+azlVxuICogQHBhcmFtIHR5cGUg5pa55rOV5ZCNXG4gKiBAcGFyYW0gbWV0aG9kIOaWueazlVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXIodHlwZSwgbWV0aG9kKSB7XG4gICAgY2FjaGUuc2V0KHR5cGUsIG1ldGhvZCk7XG59XG4vKipcbiAqIOiOt+WPluiuoeeul+WMheWbtOebkueahOeul+azlVxuICogQHBhcmFtIHR5cGUg5pa55rOV5ZCNXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRob2QodHlwZSkge1xuICAgIHJldHVybiBjYWNoZS5nZXQodHlwZSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWdpc3Rlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/register.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/bbox/text.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-base/esm/bbox/text.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_text__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/text */ \"./node_modules/@antv/g-base/esm/util/text.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, text = attrs.text, fontSize = attrs.fontSize, lineHeight = attrs.lineHeight;\n var font = attrs.font;\n if (!font) {\n // 如果未组装 font\n font = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"assembleFont\"])(attrs);\n }\n var width = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"getTextWidth\"])(text, font);\n var bbox;\n if (!width) {\n // 如果width不存在,四点共其实点\n bbox = {\n x: x,\n y: y,\n width: 0,\n height: 0,\n };\n }\n else {\n var textAlign = attrs.textAlign, textBaseline = attrs.textBaseline;\n var height = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"getTextHeight\"])(text, fontSize, lineHeight); // attrs.height\n // 默认左右对齐:left, 默认上下对齐 bottom\n var point = {\n x: x,\n y: y - height,\n };\n if (textAlign) {\n if (textAlign === 'end' || textAlign === 'right') {\n point.x -= width;\n }\n else if (textAlign === 'center') {\n point.x -= width / 2;\n }\n }\n if (textBaseline) {\n if (textBaseline === 'top') {\n point.y += height;\n }\n else if (textBaseline === 'middle') {\n point.y += height / 2;\n }\n }\n bbox = {\n x: point.x,\n y: point.y,\n width: width,\n height: height,\n };\n }\n return bbox;\n});\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3RleHQuanM/NWZhZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXlFO0FBQzFEO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsK0RBQVk7QUFDM0I7QUFDQSxnQkFBZ0IsK0RBQVk7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdFQUFhLDZCQUE2QjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYmJveC90ZXh0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0VGV4dFdpZHRoLCBnZXRUZXh0SGVpZ2h0LCBhc3NlbWJsZUZvbnQgfSBmcm9tICcuLi91dGlsL3RleHQnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIHZhciB4ID0gYXR0cnMueCwgeSA9IGF0dHJzLnksIHRleHQgPSBhdHRycy50ZXh0LCBmb250U2l6ZSA9IGF0dHJzLmZvbnRTaXplLCBsaW5lSGVpZ2h0ID0gYXR0cnMubGluZUhlaWdodDtcbiAgICB2YXIgZm9udCA9IGF0dHJzLmZvbnQ7XG4gICAgaWYgKCFmb250KSB7XG4gICAgICAgIC8vIOWmguaenOacque7hOijhSBmb250XG4gICAgICAgIGZvbnQgPSBhc3NlbWJsZUZvbnQoYXR0cnMpO1xuICAgIH1cbiAgICB2YXIgd2lkdGggPSBnZXRUZXh0V2lkdGgodGV4dCwgZm9udCk7XG4gICAgdmFyIGJib3g7XG4gICAgaWYgKCF3aWR0aCkge1xuICAgICAgICAvLyDlpoLmnpx3aWR0aOS4jeWtmOWcqO+8jOWbm+eCueWFseWFtuWunueCuVxuICAgICAgICBiYm94ID0ge1xuICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgIHk6IHksXG4gICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciB0ZXh0QWxpZ24gPSBhdHRycy50ZXh0QWxpZ24sIHRleHRCYXNlbGluZSA9IGF0dHJzLnRleHRCYXNlbGluZTtcbiAgICAgICAgdmFyIGhlaWdodCA9IGdldFRleHRIZWlnaHQodGV4dCwgZm9udFNpemUsIGxpbmVIZWlnaHQpOyAvLyBhdHRycy5oZWlnaHRcbiAgICAgICAgLy8g6buY6K6k5bem5Y+z5a+56b2Q77yabGVmdCwg6buY6K6k5LiK5LiL5a+56b2QIGJvdHRvbVxuICAgICAgICB2YXIgcG9pbnQgPSB7XG4gICAgICAgICAgICB4OiB4LFxuICAgICAgICAgICAgeTogeSAtIGhlaWdodCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRleHRBbGlnbikge1xuICAgICAgICAgICAgaWYgKHRleHRBbGlnbiA9PT0gJ2VuZCcgfHwgdGV4dEFsaWduID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgcG9pbnQueCAtPSB3aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRleHRBbGlnbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICAgICAgICBwb2ludC54IC09IHdpZHRoIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGV4dEJhc2VsaW5lKSB7XG4gICAgICAgICAgICBpZiAodGV4dEJhc2VsaW5lID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIHBvaW50LnkgKz0gaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGV4dEJhc2VsaW5lID09PSAnbWlkZGxlJykge1xuICAgICAgICAgICAgICAgIHBvaW50LnkgKz0gaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBiYm94ID0ge1xuICAgICAgICAgICAgeDogcG9pbnQueCxcbiAgICAgICAgICAgIHk6IHBvaW50LnksXG4gICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGJib3g7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10ZXh0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/text.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/bbox/util.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-base/esm/bbox/util.js ***! \****************************************************/ /*! exports provided: mergeBBox, mergeArrowBBox */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeBBox\", function() { return mergeBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeArrowBBox\", function() { return mergeArrowBBox; });\n// 合并包围盒\nfunction mergeBBox(bbox1, bbox2) {\n if (!bbox1 || !bbox2) {\n return bbox1 || bbox2;\n }\n return {\n minX: Math.min(bbox1.minX, bbox2.minX),\n minY: Math.min(bbox1.minY, bbox2.minY),\n maxX: Math.max(bbox1.maxX, bbox2.maxX),\n maxY: Math.max(bbox1.maxY, bbox2.maxY),\n };\n}\n// 合并箭头的包围盒\nfunction mergeArrowBBox(shape, bbox) {\n var startArrowShape = shape.get('startArrowShape');\n var endArrowShape = shape.get('endArrowShape');\n var startArrowBBox = null;\n var endArrowBBox = null;\n if (startArrowShape) {\n startArrowBBox = startArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, startArrowBBox);\n }\n if (endArrowShape) {\n endArrowBBox = endArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, endArrowBBox);\n }\n return bbox;\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9iYm94L3V0aWwuanM/NjhhOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vYmJveC91dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8g5ZCI5bm25YyF5Zu055uSXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VCQm94KGJib3gxLCBiYm94Mikge1xuICAgIGlmICghYmJveDEgfHwgIWJib3gyKSB7XG4gICAgICAgIHJldHVybiBiYm94MSB8fCBiYm94MjtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWluWDogTWF0aC5taW4oYmJveDEubWluWCwgYmJveDIubWluWCksXG4gICAgICAgIG1pblk6IE1hdGgubWluKGJib3gxLm1pblksIGJib3gyLm1pblkpLFxuICAgICAgICBtYXhYOiBNYXRoLm1heChiYm94MS5tYXhYLCBiYm94Mi5tYXhYKSxcbiAgICAgICAgbWF4WTogTWF0aC5tYXgoYmJveDEubWF4WSwgYmJveDIubWF4WSksXG4gICAgfTtcbn1cbi8vIOWQiOW5tueureWktOeahOWMheWbtOebklxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQXJyb3dCQm94KHNoYXBlLCBiYm94KSB7XG4gICAgdmFyIHN0YXJ0QXJyb3dTaGFwZSA9IHNoYXBlLmdldCgnc3RhcnRBcnJvd1NoYXBlJyk7XG4gICAgdmFyIGVuZEFycm93U2hhcGUgPSBzaGFwZS5nZXQoJ2VuZEFycm93U2hhcGUnKTtcbiAgICB2YXIgc3RhcnRBcnJvd0JCb3ggPSBudWxsO1xuICAgIHZhciBlbmRBcnJvd0JCb3ggPSBudWxsO1xuICAgIGlmIChzdGFydEFycm93U2hhcGUpIHtcbiAgICAgICAgc3RhcnRBcnJvd0JCb3ggPSBzdGFydEFycm93U2hhcGUuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgICBiYm94ID0gbWVyZ2VCQm94KGJib3gsIHN0YXJ0QXJyb3dCQm94KTtcbiAgICB9XG4gICAgaWYgKGVuZEFycm93U2hhcGUpIHtcbiAgICAgICAgZW5kQXJyb3dCQm94ID0gZW5kQXJyb3dTaGFwZS5nZXRDYW52YXNCQm94KCk7XG4gICAgICAgIGJib3ggPSBtZXJnZUJCb3goYmJveCwgZW5kQXJyb3dCQm94KTtcbiAgICB9XG4gICAgcmV0dXJuIGJib3g7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/bbox/util.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/event/event-contoller.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g-base/esm/event/event-contoller.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _graph_event__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graph-event */ \"./node_modules/@antv/g-base/esm/event/graph-event.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n/**\n * @fileoverview 事件处理器\n * @author dxq613@gmail.com\n */\n\n\nvar CLICK_OFFSET = 40;\nvar LEFT_BTN_CODE = 0;\nvar DELEGATION_SPLIT = ':';\nvar EVENTS = [\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'mouseout',\n 'mouseover',\n 'mousemove',\n 'mouseleave',\n 'mouseenter',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'drop',\n 'contextmenu',\n 'mousewheel',\n];\n// 是否有委托事件监听\nfunction hasDelegation(events, type) {\n for (var key in events) {\n if (events.hasOwnProperty(key) && key.indexOf(DELEGATION_SPLIT + type) >= 0) {\n return true;\n }\n }\n return false;\n}\n// 触发目标事件,目标只能是 shape 或 canvas\nfunction emitTargetEvent(target, type, eventObj) {\n eventObj.name = type;\n eventObj.target = target;\n eventObj.currentTarget = target;\n eventObj.delegateTarget = target;\n target.emit(type, eventObj);\n}\n// 事件冒泡, enter 和 leave 需要对 fromShape 和 toShape 进行判同\nfunction bubbleEvent(container, type, eventObj) {\n if (eventObj.bubbles) {\n var relativeShape = void 0;\n var isOverEvent = false;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n isOverEvent = true;\n }\n else if (type === 'mouseleave') {\n isOverEvent = true;\n relativeShape = eventObj.toShape;\n }\n // canvas 上的 mouseenter, mouseleave 事件,仅当进入或者移出 canvas 时触发\n if (container.isCanvas() && isOverEvent) {\n return;\n }\n // 如果相关图形同当前图形在同一个容器内,不触发事件\n if (relativeShape && Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"isParent\"])(container, relativeShape)) {\n // 阻止继续向上冒泡\n eventObj.bubbles = false;\n return;\n }\n // 事件名称可能在委托过程中被修改,因此事件冒泡时需要重新设置事件名称\n eventObj.name = type;\n eventObj.currentTarget = container;\n eventObj.delegateTarget = container;\n container.emit(type, eventObj);\n }\n}\nvar EventController = /** @class */ (function () {\n function EventController(cfg) {\n var _this = this;\n // 正在被拖拽的图形\n this.draggingShape = null;\n this.dragging = false;\n // 当前鼠标/touch所在位置的图形\n this.currentShape = null;\n this.mousedownShape = null;\n this.mousedownPoint = null;\n // 统一处理所有的回调\n this._eventCallback = function (ev) {\n var type = ev.type;\n _this._triggerEvent(type, ev);\n };\n // 在 document 处理拖拽到画布外的事件,处理从图形上移除画布未被捕捉的问题\n this._onDocumentMove = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging || _this.currentShape) {\n var pointInfo = _this._getPointInfo(ev);\n // 还在拖拽过程中\n if (_this.dragging) {\n _this._emitEvent('drag', ev, pointInfo, _this.draggingShape);\n }\n // 说明从某个图形直接移动到了画布外面,\n // 修复了 mouseleave 的 bug 后不再出现这种情况\n // if (this.currentShape) {\n // this._emitEvent('mouseleave', ev, pointInfo, this.currentShape, this.currentShape, null);\n // this.currentShape = null;\n // }\n }\n }\n };\n // 在 document 上处理拖拽到外面,释放鼠标时触发 dragend\n this._onDocumentMouseUp = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging) {\n var pointInfo = _this._getPointInfo(ev);\n if (_this.draggingShape) {\n // 如果存在拖拽的图形,则也触发 drop 事件\n _this._emitEvent('drop', ev, pointInfo, null);\n }\n _this._emitEvent('dragend', ev, pointInfo, _this.draggingShape);\n _this._afterDrag(_this.draggingShape, pointInfo, ev);\n }\n }\n };\n this.canvas = cfg.canvas;\n }\n EventController.prototype.init = function () {\n this._bindEvents();\n };\n // 注册事件\n EventController.prototype._bindEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(EVENTS, function (eventName) {\n el.addEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n // 处理移动到外面没有触发 shape mouse leave 的事件\n // 处理拖拽到外部的问题\n document.addEventListener('mousemove', this._onDocumentMove);\n // 处理拖拽过程中在外部释放鼠标的问题\n document.addEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n // 清理事件\n EventController.prototype._clearEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(EVENTS, function (eventName) {\n el.removeEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n document.removeEventListener('mousemove', this._onDocumentMove);\n document.removeEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n EventController.prototype._getEventObj = function (type, event, point, target, fromShape, toShape) {\n var eventObj = new _graph_event__WEBPACK_IMPORTED_MODULE_0__[\"default\"](type, event);\n eventObj.fromShape = fromShape;\n eventObj.toShape = toShape;\n eventObj.x = point.x;\n eventObj.y = point.y;\n eventObj.clientX = point.clientX;\n eventObj.clientY = point.clientY;\n eventObj.propagationPath.push(target);\n // 事件的x,y应该是基于画布左上角的,与canvas的matrix无关\n return eventObj;\n };\n // 根据点获取图形,提取成独立方法,便于后续优化\n EventController.prototype._getShape = function (point, ev) {\n return this.canvas.getShape(point.x, point.y, ev);\n };\n // 获取事件的当前点的信息\n EventController.prototype._getPointInfo = function (ev) {\n var canvas = this.canvas;\n var clientPoint = canvas.getClientByEvent(ev);\n var point = canvas.getPointByEvent(ev);\n return {\n x: point.x,\n y: point.y,\n clientX: clientPoint.x,\n clientY: clientPoint.y,\n };\n };\n // 触发事件\n EventController.prototype._triggerEvent = function (type, ev) {\n var pointInfo = this._getPointInfo(ev);\n // 每次都获取图形有一定成本,后期可以考虑进行缓存策略\n var shape = this._getShape(pointInfo, ev);\n var method = this[\"_on\" + type];\n var leaveCanvas = false;\n if (method) {\n method.call(this, pointInfo, shape, ev);\n }\n else {\n var preShape = this.currentShape;\n // 如果进入、移出画布时存在图形,则要分别触发事件\n if (type === 'mouseenter' || type === 'dragenter' || type === 'mouseover') {\n this._emitEvent(type, ev, pointInfo, null, null, shape); // 先进入画布\n if (shape) {\n this._emitEvent(type, ev, pointInfo, shape, null, shape); // 再触发图形的事件\n }\n if (type === 'mouseenter' && this.draggingShape) {\n // 如果正在拖拽图形, 则触发 dragleave\n this._emitEvent('dragenter', ev, pointInfo, null);\n }\n }\n else if (type === 'mouseleave' || type === 'dragleave' || type === 'mouseout') {\n leaveCanvas = true;\n if (preShape) {\n this._emitEvent(type, ev, pointInfo, preShape, preShape, null); // 先触发图形的事件\n }\n this._emitEvent(type, ev, pointInfo, null, preShape, null); // 再触发离开画布事件\n if (type === 'mouseleave' && this.draggingShape) {\n this._emitEvent('dragleave', ev, pointInfo, null);\n }\n }\n else {\n this._emitEvent(type, ev, pointInfo, shape, null, null); // 一般事件中不需要考虑 from, to\n }\n }\n if (!leaveCanvas) {\n this.currentShape = shape;\n }\n // 当鼠标从画布移动到 shape 或者从 preShape 移动到 shape 时,应用 shape 上的鼠标样式\n if (shape && !shape.get('destroyed')) {\n var canvas = this.canvas;\n var el = canvas.get('el');\n el.style.cursor = shape.attr('cursor') || canvas.get('cursor');\n }\n };\n // 记录下点击的位置、图形,便于拖拽事件、click 事件的判定\n EventController.prototype._onmousedown = function (pointInfo, shape, event) {\n // 只有鼠标左键的 mousedown 事件才会设置 mousedownShape 等属性,避免鼠标右键的 mousedown 事件引起其他事件发生\n if (event.button === LEFT_BTN_CODE) {\n this.mousedownShape = shape;\n this.mousedownPoint = pointInfo;\n this.mousedownTimeStamp = event.timeStamp;\n }\n this._emitEvent('mousedown', event, pointInfo, shape, null, null); // mousedown 不考虑fromShape, toShape\n };\n // mouseleave 和 mouseenter 都是成对存在的\n // mouseenter 和 mouseover 同时触发\n EventController.prototype._emitMouseoverEvents = function (event, pointInfo, fromShape, toShape) {\n var el = this.canvas.get('el');\n if (fromShape !== toShape) {\n if (fromShape) {\n this._emitEvent('mouseout', event, pointInfo, fromShape, fromShape, toShape);\n this._emitEvent('mouseleave', event, pointInfo, fromShape, fromShape, toShape);\n // 当鼠标从 fromShape 移动到画布上时,重置鼠标样式\n if (!toShape || toShape.get('destroyed')) {\n el.style.cursor = this.canvas.get('cursor');\n }\n }\n if (toShape) {\n this._emitEvent('mouseover', event, pointInfo, toShape, fromShape, toShape);\n this._emitEvent('mouseenter', event, pointInfo, toShape, fromShape, toShape);\n }\n }\n };\n // dragover 不等同于 mouseover,而等同于 mousemove\n EventController.prototype._emitDragoverEvents = function (event, pointInfo, fromShape, toShape, isCanvasEmit) {\n if (toShape) {\n if (toShape !== fromShape) {\n if (fromShape) {\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n this._emitEvent('dragenter', event, pointInfo, toShape, fromShape, toShape);\n }\n if (!isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n }\n else if (fromShape) {\n // TODO: 此处判断有问题,当 drag 图形时,也会触发一次 dragleave 事件,因为此时 toShape 为 null,这不是所期望的\n // 经过空白区域\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n if (isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n };\n // drag 完成后,需要做一些清理工作\n EventController.prototype._afterDrag = function (draggingShape, pointInfo, event) {\n if (draggingShape) {\n draggingShape.set('capture', true); // 恢复可以拾取\n this.draggingShape = null;\n }\n this.dragging = false;\n // drag 完成后,有可能 draggingShape 已经移动到了当前位置,所以不能直接取当前图形\n var shape = this._getShape(pointInfo, event);\n // 拖拽完成后,进行 enter,leave 的判定\n if (shape !== draggingShape) {\n this._emitMouseoverEvents(event, pointInfo, draggingShape, shape);\n }\n this.currentShape = shape; // 更新当前 shape,如果不处理当前图形的 mouseleave 事件可能会出问题\n };\n // 按键抬起时,会终止拖拽、触发点击\n EventController.prototype._onmouseup = function (pointInfo, shape, event) {\n // eevent.button === 0 表示鼠标左键事件,此处加上判断主要是为了避免右键鼠标会触发 mouseup 和 click 事件\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button === LEFT_BTN_CODE) {\n var draggingShape = this.draggingShape;\n if (this.dragging) {\n // 存在可以拖拽的图形,同时拖拽到其他图形上时触发 drag 事件\n if (draggingShape) {\n this._emitEvent('drop', event, pointInfo, shape);\n }\n this._emitEvent('dragend', event, pointInfo, draggingShape);\n this._afterDrag(draggingShape, pointInfo, event);\n }\n else {\n this._emitEvent('mouseup', event, pointInfo, shape); // 先触发 mouseup 再触发 click\n if (shape === this.mousedownShape) {\n this._emitEvent('click', event, pointInfo, shape);\n }\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n }\n };\n // 当触发浏览器的 dragover 事件时,不会再触发 mousemove ,所以这时候的 dragenter, dragleave 事件需要重新处理\n EventController.prototype._ondragover = function (pointInfo, shape, event) {\n event.preventDefault(); // 如果不对 dragover 进行 preventDefault,则不会在 canvas 上触发 drop 事件\n var preShape = this.currentShape;\n this._emitDragoverEvents(event, pointInfo, preShape, shape, true);\n };\n // 大量的图形事件,都通过 mousemove 模拟\n EventController.prototype._onmousemove = function (pointInfo, shape, event) {\n var canvas = this.canvas;\n var preShape = this.currentShape;\n var draggingShape = this.draggingShape;\n // 正在拖拽时\n if (this.dragging) {\n // 正在拖拽中\n if (draggingShape) {\n // 如果拖拽了 shape 会触发 dragenter, dragleave, dragover 和 drag 事件\n this._emitDragoverEvents(event, pointInfo, preShape, shape, false);\n }\n // 如果存在 draggingShape 则会在 draggingShape 上触发 drag 事件,冒泡到 canvas 上\n // 否则在 canvas 上触发 drag 事件\n this._emitEvent('drag', event, pointInfo, draggingShape);\n }\n else {\n var mousedownPoint = this.mousedownPoint;\n if (mousedownPoint) {\n // 当鼠标点击下去,同时移动时,进行 drag 判定\n var mousedownShape = this.mousedownShape;\n var now = event.timeStamp;\n var timeWindow = now - this.mousedownTimeStamp;\n var dx = mousedownPoint.clientX - pointInfo.clientX;\n var dy = mousedownPoint.clientY - pointInfo.clientY;\n var dist = dx * dx + dy * dy;\n if (timeWindow > 120 || dist > CLICK_OFFSET) {\n if (mousedownShape && mousedownShape.get('draggable')) {\n // 设置了 draggable 的 shape 才能触发 drag 相关的事件\n draggingShape = this.mousedownShape; // 拖动鼠标点下时的 shape\n draggingShape.set('capture', false); // 禁止继续拾取,否则无法进行 dragover,dragenter,dragleave,drop的判定\n this.draggingShape = draggingShape;\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, draggingShape);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n else if (!mousedownShape && canvas.get('draggable')) {\n // 设置了 draggable 的 canvas 才能触发 drag 相关的事件\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, null);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n else {\n // 没有按键按下时,则直接触发 mouse over 相关的各种事件\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n // 始终触发移动\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n };\n // 触发事件\n EventController.prototype._emitEvent = function (type, event, pointInfo, shape, fromShape, toShape) {\n var eventObj = this._getEventObj(type, event, pointInfo, shape, fromShape, toShape);\n // 存在 shape 触发,则进行冒泡处理\n if (shape) {\n eventObj.shape = shape;\n // 触发 shape 上的事件\n emitTargetEvent(shape, type, eventObj);\n var parent_1 = shape.getParent();\n // 执行冒泡\n while (parent_1) {\n // 委托事件要先触发\n parent_1.emitDelegation(type, eventObj);\n // 事件冒泡停止,不能妨碍委托事件\n if (!eventObj.propagationStopped) {\n bubbleEvent(parent_1, type, eventObj);\n }\n eventObj.propagationPath.push(parent_1);\n parent_1 = parent_1.getParent();\n }\n }\n else {\n // 如果没有 shape 直接在 canvas 上触发\n var canvas = this.canvas;\n // 直接触发 canvas 上的事件\n emitTargetEvent(canvas, type, eventObj);\n }\n };\n EventController.prototype.destroy = function () {\n // 清理事件\n this._clearEvents();\n // 清理缓存的对象\n this.canvas = null;\n this.currentShape = null;\n this.draggingShape = null;\n this.mousedownPoint = null;\n this.mousedownShape = null;\n this.mousedownTimeStamp = null;\n };\n return EventController;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventController);\n//# sourceMappingURL=event-contoller.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9ldmVudC9ldmVudC1jb250b2xsZXIuanM/ZDI0NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUN1QztBQUNPO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwyREFBUTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG9EQUFVO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFO0FBQ3hFO0FBQ0EsNkVBQTZFO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1GQUFtRjtBQUNuRjtBQUNBLDJFQUEyRTtBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEU7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREO0FBQzVELDREQUE0RDtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDYyw4RUFBZSxFQUFDO0FBQy9CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vZXZlbnQvZXZlbnQtY29udG9sbGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOS6i+S7tuWkhOeQhuWZqFxuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCBHcmFwaEV2ZW50IGZyb20gJy4vZ3JhcGgtZXZlbnQnO1xuaW1wb3J0IHsgZWFjaCwgaXNQYXJlbnQgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xudmFyIENMSUNLX09GRlNFVCA9IDQwO1xudmFyIExFRlRfQlROX0NPREUgPSAwO1xudmFyIERFTEVHQVRJT05fU1BMSVQgPSAnOic7XG52YXIgRVZFTlRTID0gW1xuICAgICdtb3VzZWRvd24nLFxuICAgICdtb3VzZXVwJyxcbiAgICAnZGJsY2xpY2snLFxuICAgICdtb3VzZW91dCcsXG4gICAgJ21vdXNlb3ZlcicsXG4gICAgJ21vdXNlbW92ZScsXG4gICAgJ21vdXNlbGVhdmUnLFxuICAgICdtb3VzZWVudGVyJyxcbiAgICAndG91Y2hzdGFydCcsXG4gICAgJ3RvdWNobW92ZScsXG4gICAgJ3RvdWNoZW5kJyxcbiAgICAnZHJhZ2VudGVyJyxcbiAgICAnZHJhZ292ZXInLFxuICAgICdkcmFnbGVhdmUnLFxuICAgICdkcm9wJyxcbiAgICAnY29udGV4dG1lbnUnLFxuICAgICdtb3VzZXdoZWVsJyxcbl07XG4vLyDmmK/lkKbmnInlp5TmiZjkuovku7bnm5HlkKxcbmZ1bmN0aW9uIGhhc0RlbGVnYXRpb24oZXZlbnRzLCB0eXBlKSB7XG4gICAgZm9yICh2YXIga2V5IGluIGV2ZW50cykge1xuICAgICAgICBpZiAoZXZlbnRzLmhhc093blByb3BlcnR5KGtleSkgJiYga2V5LmluZGV4T2YoREVMRUdBVElPTl9TUExJVCArIHR5cGUpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8vIOinpuWPkeebruagh+S6i+S7tu+8jOebruagh+WPquiDveaYryBzaGFwZSDmiJYgY2FudmFzXG5mdW5jdGlvbiBlbWl0VGFyZ2V0RXZlbnQodGFyZ2V0LCB0eXBlLCBldmVudE9iaikge1xuICAgIGV2ZW50T2JqLm5hbWUgPSB0eXBlO1xuICAgIGV2ZW50T2JqLnRhcmdldCA9IHRhcmdldDtcbiAgICBldmVudE9iai5jdXJyZW50VGFyZ2V0ID0gdGFyZ2V0O1xuICAgIGV2ZW50T2JqLmRlbGVnYXRlVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHRhcmdldC5lbWl0KHR5cGUsIGV2ZW50T2JqKTtcbn1cbi8vIOS6i+S7tuWGkuazoSwgZW50ZXIg5ZKMIGxlYXZlIOmcgOimgeWvuSBmcm9tU2hhcGUg5ZKMIHRvU2hhcGUg6L+b6KGM5Yik5ZCMXG5mdW5jdGlvbiBidWJibGVFdmVudChjb250YWluZXIsIHR5cGUsIGV2ZW50T2JqKSB7XG4gICAgaWYgKGV2ZW50T2JqLmJ1YmJsZXMpIHtcbiAgICAgICAgdmFyIHJlbGF0aXZlU2hhcGUgPSB2b2lkIDA7XG4gICAgICAgIHZhciBpc092ZXJFdmVudCA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ21vdXNlZW50ZXInKSB7XG4gICAgICAgICAgICByZWxhdGl2ZVNoYXBlID0gZXZlbnRPYmouZnJvbVNoYXBlO1xuICAgICAgICAgICAgaXNPdmVyRXZlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdtb3VzZWxlYXZlJykge1xuICAgICAgICAgICAgaXNPdmVyRXZlbnQgPSB0cnVlO1xuICAgICAgICAgICAgcmVsYXRpdmVTaGFwZSA9IGV2ZW50T2JqLnRvU2hhcGU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2FudmFzIOS4iueahCBtb3VzZWVudGVy77yMIG1vdXNlbGVhdmUg5LqL5Lu277yM5LuF5b2T6L+b5YWl5oiW6ICF56e75Ye6IGNhbnZhcyDml7bop6blj5FcbiAgICAgICAgaWYgKGNvbnRhaW5lci5pc0NhbnZhcygpICYmIGlzT3ZlckV2ZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8g5aaC5p6c55u45YWz5Zu+5b2i5ZCM5b2T5YmN5Zu+5b2i5Zyo5ZCM5LiA5Liq5a655Zmo5YaF77yM5LiN6Kem5Y+R5LqL5Lu2XG4gICAgICAgIGlmIChyZWxhdGl2ZVNoYXBlICYmIGlzUGFyZW50KGNvbnRhaW5lciwgcmVsYXRpdmVTaGFwZSkpIHtcbiAgICAgICAgICAgIC8vIOmYu+atoue7p+e7reWQkeS4iuWGkuazoVxuICAgICAgICAgICAgZXZlbnRPYmouYnViYmxlcyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIOS6i+S7tuWQjeensOWPr+iDveWcqOWnlOaJmOi/h+eoi+S4reiiq+S/ruaUue+8jOWboOatpOS6i+S7tuWGkuazoeaXtumcgOimgemHjeaWsOiuvue9ruS6i+S7tuWQjeensFxuICAgICAgICBldmVudE9iai5uYW1lID0gdHlwZTtcbiAgICAgICAgZXZlbnRPYmouY3VycmVudFRhcmdldCA9IGNvbnRhaW5lcjtcbiAgICAgICAgZXZlbnRPYmouZGVsZWdhdGVUYXJnZXQgPSBjb250YWluZXI7XG4gICAgICAgIGNvbnRhaW5lci5lbWl0KHR5cGUsIGV2ZW50T2JqKTtcbiAgICB9XG59XG52YXIgRXZlbnRDb250cm9sbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV2ZW50Q29udHJvbGxlcihjZmcpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgLy8g5q2j5Zyo6KKr5ouW5ou955qE5Zu+5b2iXG4gICAgICAgIHRoaXMuZHJhZ2dpbmdTaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgLy8g5b2T5YmN6byg5qCHL3RvdWNo5omA5Zyo5L2N572u55qE5Zu+5b2iXG4gICAgICAgIHRoaXMuY3VycmVudFNoYXBlID0gbnVsbDtcbiAgICAgICAgdGhpcy5tb3VzZWRvd25TaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMubW91c2Vkb3duUG9pbnQgPSBudWxsO1xuICAgICAgICAvLyDnu5/kuIDlpITnkIbmiYDmnInnmoTlm57osINcbiAgICAgICAgdGhpcy5fZXZlbnRDYWxsYmFjayA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgdmFyIHR5cGUgPSBldi50eXBlO1xuICAgICAgICAgICAgX3RoaXMuX3RyaWdnZXJFdmVudCh0eXBlLCBldik7XG4gICAgICAgIH07XG4gICAgICAgIC8vIOWcqCBkb2N1bWVudCDlpITnkIbmi5bmi73liLDnlLvluIPlpJbnmoTkuovku7bvvIzlpITnkIbku47lm77lvaLkuIrnp7vpmaTnlLvluIPmnKrooqvmjZXmjYnnmoTpl67pophcbiAgICAgICAgdGhpcy5fb25Eb2N1bWVudE1vdmUgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciBjYW52YXMgPSBfdGhpcy5jYW52YXM7XG4gICAgICAgICAgICB2YXIgZWwgPSBjYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICAgICAgaWYgKGVsICE9PSBldi50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAvLyDkuI3lnKggY2FudmFzIOS4iuenu+WKqFxuICAgICAgICAgICAgICAgIGlmIChfdGhpcy5kcmFnZ2luZyB8fCBfdGhpcy5jdXJyZW50U2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvaW50SW5mbyA9IF90aGlzLl9nZXRQb2ludEluZm8oZXYpO1xuICAgICAgICAgICAgICAgICAgICAvLyDov5jlnKjmi5bmi73ov4fnqIvkuK1cbiAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fZW1pdEV2ZW50KCdkcmFnJywgZXYsIHBvaW50SW5mbywgX3RoaXMuZHJhZ2dpbmdTaGFwZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8g6K+05piO5LuO5p+Q5Liq5Zu+5b2i55u05o6l56e75Yqo5Yiw5LqG55S75biD5aSW6Z2i77yMXG4gICAgICAgICAgICAgICAgICAgIC8vIOS/ruWkjeS6hiBtb3VzZWxlYXZlIOeahCBidWcg5ZCO5LiN5YaN5Ye6546w6L+Z56eN5oOF5Ya1XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLmN1cnJlbnRTaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2VsZWF2ZScsIGV2LCBwb2ludEluZm8sIHRoaXMuY3VycmVudFNoYXBlLCB0aGlzLmN1cnJlbnRTaGFwZSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgdGhpcy5jdXJyZW50U2hhcGUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvLyDlnKggZG9jdW1lbnQg5LiK5aSE55CG5ouW5ou95Yiw5aSW6Z2i77yM6YeK5pS+6byg5qCH5pe26Kem5Y+RIGRyYWdlbmRcbiAgICAgICAgdGhpcy5fb25Eb2N1bWVudE1vdXNlVXAgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciBjYW52YXMgPSBfdGhpcy5jYW52YXM7XG4gICAgICAgICAgICB2YXIgZWwgPSBjYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICAgICAgaWYgKGVsICE9PSBldi50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAvLyDkuI3lnKggY2FudmFzIOS4iuenu+WKqFxuICAgICAgICAgICAgICAgIGlmIChfdGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcG9pbnRJbmZvID0gX3RoaXMuX2dldFBvaW50SW5mbyhldik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5kcmFnZ2luZ1NoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzlrZjlnKjmi5bmi73nmoTlm77lvaLvvIzliJnkuZ/op6blj5EgZHJvcCDkuovku7ZcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9lbWl0RXZlbnQoJ2Ryb3AnLCBldiwgcG9pbnRJbmZvLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fZW1pdEV2ZW50KCdkcmFnZW5kJywgZXYsIHBvaW50SW5mbywgX3RoaXMuZHJhZ2dpbmdTaGFwZSk7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9hZnRlckRyYWcoX3RoaXMuZHJhZ2dpbmdTaGFwZSwgcG9pbnRJbmZvLCBldik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNhbnZhcyA9IGNmZy5jYW52YXM7XG4gICAgfVxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fYmluZEV2ZW50cygpO1xuICAgIH07XG4gICAgLy8g5rOo5YaM5LqL5Lu2XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fYmluZEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGVsID0gdGhpcy5jYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKEVWRU5UUywgZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF90aGlzLl9ldmVudENhbGxiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkb2N1bWVudCkge1xuICAgICAgICAgICAgLy8g5aSE55CG56e75Yqo5Yiw5aSW6Z2i5rKh5pyJ6Kem5Y+RIHNoYXBlIG1vdXNlIGxlYXZlIOeahOS6i+S7tlxuICAgICAgICAgICAgLy8g5aSE55CG5ouW5ou95Yiw5aSW6YOo55qE6Zeu6aKYXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLl9vbkRvY3VtZW50TW92ZSk7XG4gICAgICAgICAgICAvLyDlpITnkIbmi5bmi73ov4fnqIvkuK3lnKjlpJbpg6jph4rmlL7pvKDmoIfnmoTpl67pophcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9vbkRvY3VtZW50TW91c2VVcCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOa4heeQhuS6i+S7tlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2NsZWFyRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmNhbnZhcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2goRVZFTlRTLCBmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX3RoaXMuX2V2ZW50Q2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRvY3VtZW50KSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLl9vbkRvY3VtZW50TW92ZSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5fb25Eb2N1bWVudE1vdXNlVXApO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9nZXRFdmVudE9iaiA9IGZ1bmN0aW9uICh0eXBlLCBldmVudCwgcG9pbnQsIHRhcmdldCwgZnJvbVNoYXBlLCB0b1NoYXBlKSB7XG4gICAgICAgIHZhciBldmVudE9iaiA9IG5ldyBHcmFwaEV2ZW50KHR5cGUsIGV2ZW50KTtcbiAgICAgICAgZXZlbnRPYmouZnJvbVNoYXBlID0gZnJvbVNoYXBlO1xuICAgICAgICBldmVudE9iai50b1NoYXBlID0gdG9TaGFwZTtcbiAgICAgICAgZXZlbnRPYmoueCA9IHBvaW50Lng7XG4gICAgICAgIGV2ZW50T2JqLnkgPSBwb2ludC55O1xuICAgICAgICBldmVudE9iai5jbGllbnRYID0gcG9pbnQuY2xpZW50WDtcbiAgICAgICAgZXZlbnRPYmouY2xpZW50WSA9IHBvaW50LmNsaWVudFk7XG4gICAgICAgIGV2ZW50T2JqLnByb3BhZ2F0aW9uUGF0aC5wdXNoKHRhcmdldCk7XG4gICAgICAgIC8vIOS6i+S7tueahHgseeW6lOivpeaYr+WfuuS6jueUu+W4g+W3puS4iuinkueahO+8jOS4jmNhbnZhc+eahG1hdHJpeOaXoOWFs1xuICAgICAgICByZXR1cm4gZXZlbnRPYmo7XG4gICAgfTtcbiAgICAvLyDmoLnmja7ngrnojrflj5blm77lvaLvvIzmj5Dlj5bmiJDni6znq4vmlrnms5XvvIzkvr/kuo7lkI7nu63kvJjljJZcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9nZXRTaGFwZSA9IGZ1bmN0aW9uIChwb2ludCwgZXYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FudmFzLmdldFNoYXBlKHBvaW50LngsIHBvaW50LnksIGV2KTtcbiAgICB9O1xuICAgIC8vIOiOt+WPluS6i+S7tueahOW9k+WJjeeCueeahOS/oeaBr1xuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2dldFBvaW50SW5mbyA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jYW52YXM7XG4gICAgICAgIHZhciBjbGllbnRQb2ludCA9IGNhbnZhcy5nZXRDbGllbnRCeUV2ZW50KGV2KTtcbiAgICAgICAgdmFyIHBvaW50ID0gY2FudmFzLmdldFBvaW50QnlFdmVudChldik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBwb2ludC54LFxuICAgICAgICAgICAgeTogcG9pbnQueSxcbiAgICAgICAgICAgIGNsaWVudFg6IGNsaWVudFBvaW50LngsXG4gICAgICAgICAgICBjbGllbnRZOiBjbGllbnRQb2ludC55LFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLy8g6Kem5Y+R5LqL5Lu2XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fdHJpZ2dlckV2ZW50ID0gZnVuY3Rpb24gKHR5cGUsIGV2KSB7XG4gICAgICAgIHZhciBwb2ludEluZm8gPSB0aGlzLl9nZXRQb2ludEluZm8oZXYpO1xuICAgICAgICAvLyDmr4/mrKHpg73ojrflj5blm77lvaLmnInkuIDlrprmiJDmnKzvvIzlkI7mnJ/lj6/ku6XogIPomZHov5vooYznvJPlrZjnrZbnlaVcbiAgICAgICAgdmFyIHNoYXBlID0gdGhpcy5fZ2V0U2hhcGUocG9pbnRJbmZvLCBldik7XG4gICAgICAgIHZhciBtZXRob2QgPSB0aGlzW1wiX29uXCIgKyB0eXBlXTtcbiAgICAgICAgdmFyIGxlYXZlQ2FudmFzID0gZmFsc2U7XG4gICAgICAgIGlmIChtZXRob2QpIHtcbiAgICAgICAgICAgIG1ldGhvZC5jYWxsKHRoaXMsIHBvaW50SW5mbywgc2hhcGUsIGV2KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBwcmVTaGFwZSA9IHRoaXMuY3VycmVudFNoYXBlO1xuICAgICAgICAgICAgLy8g5aaC5p6c6L+b5YWl44CB56e75Ye655S75biD5pe25a2Y5Zyo5Zu+5b2i77yM5YiZ6KaB5YiG5Yir6Kem5Y+R5LqL5Lu2XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ21vdXNlZW50ZXInIHx8IHR5cGUgPT09ICdkcmFnZW50ZXInIHx8IHR5cGUgPT09ICdtb3VzZW92ZXInKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KHR5cGUsIGV2LCBwb2ludEluZm8sIG51bGwsIG51bGwsIHNoYXBlKTsgLy8g5YWI6L+b5YWl55S75biDXG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCh0eXBlLCBldiwgcG9pbnRJbmZvLCBzaGFwZSwgbnVsbCwgc2hhcGUpOyAvLyDlho3op6blj5Hlm77lvaLnmoTkuovku7ZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdtb3VzZWVudGVyJyAmJiB0aGlzLmRyYWdnaW5nU2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5q2j5Zyo5ouW5ou95Zu+5b2iLCDliJnop6blj5EgZHJhZ2xlYXZlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ2VudGVyJywgZXYsIHBvaW50SW5mbywgbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ21vdXNlbGVhdmUnIHx8IHR5cGUgPT09ICdkcmFnbGVhdmUnIHx8IHR5cGUgPT09ICdtb3VzZW91dCcpIHtcbiAgICAgICAgICAgICAgICBsZWF2ZUNhbnZhcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHByZVNoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCh0eXBlLCBldiwgcG9pbnRJbmZvLCBwcmVTaGFwZSwgcHJlU2hhcGUsIG51bGwpOyAvLyDlhYjop6blj5Hlm77lvaLnmoTkuovku7ZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KHR5cGUsIGV2LCBwb2ludEluZm8sIG51bGwsIHByZVNoYXBlLCBudWxsKTsgLy8g5YaN6Kem5Y+R56a75byA55S75biD5LqL5Lu2XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdtb3VzZWxlYXZlJyAmJiB0aGlzLmRyYWdnaW5nU2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnbGVhdmUnLCBldiwgcG9pbnRJbmZvLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQodHlwZSwgZXYsIHBvaW50SW5mbywgc2hhcGUsIG51bGwsIG51bGwpOyAvLyDkuIDoiKzkuovku7bkuK3kuI3pnIDopoHogIPomZEgZnJvbSwgdG9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxlYXZlQ2FudmFzKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTaGFwZSA9IHNoYXBlO1xuICAgICAgICB9XG4gICAgICAgIC8vIOW9k+m8oOagh+S7jueUu+W4g+enu+WKqOWIsCBzaGFwZSDmiJbogIXku44gcHJlU2hhcGUg56e75Yqo5YiwIHNoYXBlIOaXtu+8jOW6lOeUqCBzaGFwZSDkuIrnmoTpvKDmoIfmoLflvI9cbiAgICAgICAgaWYgKHNoYXBlICYmICFzaGFwZS5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jYW52YXM7XG4gICAgICAgICAgICB2YXIgZWwgPSBjYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICAgICAgZWwuc3R5bGUuY3Vyc29yID0gc2hhcGUuYXR0cignY3Vyc29yJykgfHwgY2FudmFzLmdldCgnY3Vyc29yJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOiusOW9leS4i+eCueWHu+eahOS9jee9ruOAgeWbvuW9ou+8jOS+v+S6juaLluaLveS6i+S7tuOAgWNsaWNrIOS6i+S7tueahOWIpOWumlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX29ubW91c2Vkb3duID0gZnVuY3Rpb24gKHBvaW50SW5mbywgc2hhcGUsIGV2ZW50KSB7XG4gICAgICAgIC8vIOWPquaciem8oOagh+W3pumUrueahCBtb3VzZWRvd24g5LqL5Lu25omN5Lya6K6+572uIG1vdXNlZG93blNoYXBlIOetieWxnuaAp++8jOmBv+WFjem8oOagh+WPs+mUrueahCBtb3VzZWRvd24g5LqL5Lu25byV6LW35YW25LuW5LqL5Lu25Y+R55SfXG4gICAgICAgIGlmIChldmVudC5idXR0b24gPT09IExFRlRfQlROX0NPREUpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2Vkb3duU2hhcGUgPSBzaGFwZTtcbiAgICAgICAgICAgIHRoaXMubW91c2Vkb3duUG9pbnQgPSBwb2ludEluZm87XG4gICAgICAgICAgICB0aGlzLm1vdXNlZG93blRpbWVTdGFtcCA9IGV2ZW50LnRpbWVTdGFtcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlZG93bicsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlLCBudWxsLCBudWxsKTsgLy8gbW91c2Vkb3duIOS4jeiAg+iZkWZyb21TaGFwZSwgdG9TaGFwZVxuICAgIH07XG4gICAgLy8gbW91c2VsZWF2ZSDlkowgbW91c2VlbnRlciDpg73mmK/miJDlr7nlrZjlnKjnmoRcbiAgICAvLyBtb3VzZWVudGVyIOWSjCBtb3VzZW92ZXIg5ZCM5pe26Kem5Y+RXG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fZW1pdE1vdXNlb3ZlckV2ZW50cyA9IGZ1bmN0aW9uIChldmVudCwgcG9pbnRJbmZvLCBmcm9tU2hhcGUsIHRvU2hhcGUpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5jYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoZnJvbVNoYXBlICE9PSB0b1NoYXBlKSB7XG4gICAgICAgICAgICBpZiAoZnJvbVNoYXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZW91dCcsIGV2ZW50LCBwb2ludEluZm8sIGZyb21TaGFwZSwgZnJvbVNoYXBlLCB0b1NoYXBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlbGVhdmUnLCBldmVudCwgcG9pbnRJbmZvLCBmcm9tU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgICAgICAgICAgLy8g5b2T6byg5qCH5LuOIGZyb21TaGFwZSDnp7vliqjliLDnlLvluIPkuIrml7bvvIzph43nva7pvKDmoIfmoLflvI9cbiAgICAgICAgICAgICAgICBpZiAoIXRvU2hhcGUgfHwgdG9TaGFwZS5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmN1cnNvciA9IHRoaXMuY2FudmFzLmdldCgnY3Vyc29yJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRvU2hhcGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlb3ZlcicsIGV2ZW50LCBwb2ludEluZm8sIHRvU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZWVudGVyJywgZXZlbnQsIHBvaW50SW5mbywgdG9TaGFwZSwgZnJvbVNoYXBlLCB0b1NoYXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gZHJhZ292ZXIg5LiN562J5ZCM5LqOIG1vdXNlb3Zlcu+8jOiAjOetieWQjOS6jiBtb3VzZW1vdmVcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9lbWl0RHJhZ292ZXJFdmVudHMgPSBmdW5jdGlvbiAoZXZlbnQsIHBvaW50SW5mbywgZnJvbVNoYXBlLCB0b1NoYXBlLCBpc0NhbnZhc0VtaXQpIHtcbiAgICAgICAgaWYgKHRvU2hhcGUpIHtcbiAgICAgICAgICAgIGlmICh0b1NoYXBlICE9PSBmcm9tU2hhcGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZnJvbVNoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ2xlYXZlJywgZXZlbnQsIHBvaW50SW5mbywgZnJvbVNoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWdlbnRlcicsIGV2ZW50LCBwb2ludEluZm8sIHRvU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzQ2FudmFzRW1pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ292ZXInLCBldmVudCwgcG9pbnRJbmZvLCB0b1NoYXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmcm9tU2hhcGUpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IOatpOWkhOWIpOaWreaciemXrumimO+8jOW9kyBkcmFnIOWbvuW9ouaXtu+8jOS5n+S8muinpuWPkeS4gOasoSBkcmFnbGVhdmUg5LqL5Lu277yM5Zug5Li65q2k5pe2IHRvU2hhcGUg5Li6IG51bGzvvIzov5nkuI3mmK/miYDmnJ/mnJvnmoRcbiAgICAgICAgICAgIC8vIOe7j+i/h+epuueZveWMuuWfn1xuICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnbGVhdmUnLCBldmVudCwgcG9pbnRJbmZvLCBmcm9tU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ2FudmFzRW1pdCkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnb3ZlcicsIGV2ZW50LCBwb2ludEluZm8sIHRvU2hhcGUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBkcmFnIOWujOaIkOWQju+8jOmcgOimgeWBmuS4gOS6m+a4heeQhuW3peS9nFxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2FmdGVyRHJhZyA9IGZ1bmN0aW9uIChkcmFnZ2luZ1NoYXBlLCBwb2ludEluZm8sIGV2ZW50KSB7XG4gICAgICAgIGlmIChkcmFnZ2luZ1NoYXBlKSB7XG4gICAgICAgICAgICBkcmFnZ2luZ1NoYXBlLnNldCgnY2FwdHVyZScsIHRydWUpOyAvLyDmgaLlpI3lj6/ku6Xmi77lj5ZcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmdTaGFwZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICAvLyBkcmFnIOWujOaIkOWQju+8jOacieWPr+iDvSBkcmFnZ2luZ1NoYXBlIOW3sue7j+enu+WKqOWIsOS6huW9k+WJjeS9jee9ru+8jOaJgOS7peS4jeiDveebtOaOpeWPluW9k+WJjeWbvuW9olxuICAgICAgICB2YXIgc2hhcGUgPSB0aGlzLl9nZXRTaGFwZShwb2ludEluZm8sIGV2ZW50KTtcbiAgICAgICAgLy8g5ouW5ou95a6M5oiQ5ZCO77yM6L+b6KGMIGVudGVy77yMbGVhdmUg55qE5Yik5a6aXG4gICAgICAgIGlmIChzaGFwZSAhPT0gZHJhZ2dpbmdTaGFwZSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdE1vdXNlb3ZlckV2ZW50cyhldmVudCwgcG9pbnRJbmZvLCBkcmFnZ2luZ1NoYXBlLCBzaGFwZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50U2hhcGUgPSBzaGFwZTsgLy8g5pu05paw5b2T5YmNIHNoYXBl77yM5aaC5p6c5LiN5aSE55CG5b2T5YmN5Zu+5b2i55qEIG1vdXNlbGVhdmUg5LqL5Lu25Y+v6IO95Lya5Ye66Zeu6aKYXG4gICAgfTtcbiAgICAvLyDmjInplK7miqzotbfml7bvvIzkvJrnu4jmraLmi5bmi73jgIHop6blj5Hngrnlh7tcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9vbm1vdXNldXAgPSBmdW5jdGlvbiAocG9pbnRJbmZvLCBzaGFwZSwgZXZlbnQpIHtcbiAgICAgICAgLy8gZWV2ZW50LmJ1dHRvbiA9PT0gMCDooajnpLrpvKDmoIflt6bplK7kuovku7bvvIzmraTlpITliqDkuIrliKTmlq3kuLvopoHmmK/kuLrkuobpgb/lhY3lj7PplK7pvKDmoIfkvJrop6blj5EgbW91c2V1cCDlkowgY2xpY2sg5LqL5Lu2XG4gICAgICAgIC8vIHJlZjogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01vdXNlRXZlbnQvYnV0dG9uXG4gICAgICAgIGlmIChldmVudC5idXR0b24gPT09IExFRlRfQlROX0NPREUpIHtcbiAgICAgICAgICAgIHZhciBkcmFnZ2luZ1NoYXBlID0gdGhpcy5kcmFnZ2luZ1NoYXBlO1xuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgICAvLyDlrZjlnKjlj6/ku6Xmi5bmi73nmoTlm77lvaLvvIzlkIzml7bmi5bmi73liLDlhbbku5blm77lvaLkuIrml7bop6blj5EgZHJhZyDkuovku7ZcbiAgICAgICAgICAgICAgICBpZiAoZHJhZ2dpbmdTaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2Ryb3AnLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ2VuZCcsIGV2ZW50LCBwb2ludEluZm8sIGRyYWdnaW5nU2hhcGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FmdGVyRHJhZyhkcmFnZ2luZ1NoYXBlLCBwb2ludEluZm8sIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2V1cCcsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlKTsgLy8g5YWI6Kem5Y+RIG1vdXNldXAg5YaN6Kem5Y+RIGNsaWNrXG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlID09PSB0aGlzLm1vdXNlZG93blNoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnY2xpY2snLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubW91c2Vkb3duU2hhcGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMubW91c2Vkb3duUG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDlvZPop6blj5HmtY/op4jlmajnmoQgZHJhZ292ZXIg5LqL5Lu25pe277yM5LiN5Lya5YaN6Kem5Y+RIG1vdXNlbW92ZSDvvIzmiYDku6Xov5nml7blgJnnmoQgZHJhZ2VudGVyLCBkcmFnbGVhdmUg5LqL5Lu26ZyA6KaB6YeN5paw5aSE55CGXG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fb25kcmFnb3ZlciA9IGZ1bmN0aW9uIChwb2ludEluZm8sIHNoYXBlLCBldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyDlpoLmnpzkuI3lr7kgZHJhZ292ZXIg6L+b6KGMIHByZXZlbnREZWZhdWx077yM5YiZ5LiN5Lya5ZyoIGNhbnZhcyDkuIrop6blj5EgZHJvcCDkuovku7ZcbiAgICAgICAgdmFyIHByZVNoYXBlID0gdGhpcy5jdXJyZW50U2hhcGU7XG4gICAgICAgIHRoaXMuX2VtaXREcmFnb3ZlckV2ZW50cyhldmVudCwgcG9pbnRJbmZvLCBwcmVTaGFwZSwgc2hhcGUsIHRydWUpO1xuICAgIH07XG4gICAgLy8g5aSn6YeP55qE5Zu+5b2i5LqL5Lu277yM6YO96YCa6L+HIG1vdXNlbW92ZSDmqKHmi59cbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9vbm1vdXNlbW92ZSA9IGZ1bmN0aW9uIChwb2ludEluZm8sIHNoYXBlLCBldmVudCkge1xuICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jYW52YXM7XG4gICAgICAgIHZhciBwcmVTaGFwZSA9IHRoaXMuY3VycmVudFNoYXBlO1xuICAgICAgICB2YXIgZHJhZ2dpbmdTaGFwZSA9IHRoaXMuZHJhZ2dpbmdTaGFwZTtcbiAgICAgICAgLy8g5q2j5Zyo5ouW5ou95pe2XG4gICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAvLyDmraPlnKjmi5bmi73kuK1cbiAgICAgICAgICAgIGlmIChkcmFnZ2luZ1NoYXBlKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5ouW5ou95LqGIHNoYXBlIOS8muinpuWPkSBkcmFnZW50ZXIsIGRyYWdsZWF2ZSwgZHJhZ292ZXIg5ZKMIGRyYWcg5LqL5Lu2XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdERyYWdvdmVyRXZlbnRzKGV2ZW50LCBwb2ludEluZm8sIHByZVNoYXBlLCBzaGFwZSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g5aaC5p6c5a2Y5ZyoIGRyYWdnaW5nU2hhcGUg5YiZ5Lya5ZyoIGRyYWdnaW5nU2hhcGUg5LiK6Kem5Y+RIGRyYWcg5LqL5Lu277yM5YaS5rOh5YiwIGNhbnZhcyDkuIpcbiAgICAgICAgICAgIC8vIOWQpuWImeWcqCBjYW52YXMg5LiK6Kem5Y+RIGRyYWcg5LqL5Lu2XG4gICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWcnLCBldmVudCwgcG9pbnRJbmZvLCBkcmFnZ2luZ1NoYXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBtb3VzZWRvd25Qb2ludCA9IHRoaXMubW91c2Vkb3duUG9pbnQ7XG4gICAgICAgICAgICBpZiAobW91c2Vkb3duUG9pbnQpIHtcbiAgICAgICAgICAgICAgICAvLyDlvZPpvKDmoIfngrnlh7vkuIvljrvvvIzlkIzml7bnp7vliqjml7bvvIzov5vooYwgZHJhZyDliKTlrppcbiAgICAgICAgICAgICAgICB2YXIgbW91c2Vkb3duU2hhcGUgPSB0aGlzLm1vdXNlZG93blNoYXBlO1xuICAgICAgICAgICAgICAgIHZhciBub3cgPSBldmVudC50aW1lU3RhbXA7XG4gICAgICAgICAgICAgICAgdmFyIHRpbWVXaW5kb3cgPSBub3cgLSB0aGlzLm1vdXNlZG93blRpbWVTdGFtcDtcbiAgICAgICAgICAgICAgICB2YXIgZHggPSBtb3VzZWRvd25Qb2ludC5jbGllbnRYIC0gcG9pbnRJbmZvLmNsaWVudFg7XG4gICAgICAgICAgICAgICAgdmFyIGR5ID0gbW91c2Vkb3duUG9pbnQuY2xpZW50WSAtIHBvaW50SW5mby5jbGllbnRZO1xuICAgICAgICAgICAgICAgIHZhciBkaXN0ID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgICAgICAgICAgICAgaWYgKHRpbWVXaW5kb3cgPiAxMjAgfHwgZGlzdCA+IENMSUNLX09GRlNFVCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobW91c2Vkb3duU2hhcGUgJiYgbW91c2Vkb3duU2hhcGUuZ2V0KCdkcmFnZ2FibGUnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6K6+572u5LqGIGRyYWdnYWJsZSDnmoQgc2hhcGUg5omN6IO96Kem5Y+RIGRyYWcg55u45YWz55qE5LqL5Lu2XG4gICAgICAgICAgICAgICAgICAgICAgICBkcmFnZ2luZ1NoYXBlID0gdGhpcy5tb3VzZWRvd25TaGFwZTsgLy8g5ouW5Yqo6byg5qCH54K55LiL5pe255qEIHNoYXBlXG4gICAgICAgICAgICAgICAgICAgICAgICBkcmFnZ2luZ1NoYXBlLnNldCgnY2FwdHVyZScsIGZhbHNlKTsgLy8g56aB5q2i57un57ut5ou+5Y+W77yM5ZCm5YiZ5peg5rOV6L+b6KGMIGRyYWdvdmVyLGRyYWdlbnRlcixkcmFnbGVhdmUsZHJvcOeahOWIpOWumlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZ1NoYXBlID0gZHJhZ2dpbmdTaGFwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnc3RhcnQnLCBldmVudCwgcG9pbnRJbmZvLCBkcmFnZ2luZ1NoYXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa4heeQhuaMieS4i+m8oOagh+aXtue8k+WtmOeahOWAvFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3VzZWRvd25TaGFwZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghbW91c2Vkb3duU2hhcGUgJiYgY2FudmFzLmdldCgnZHJhZ2dhYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruS6hiBkcmFnZ2FibGUg55qEIGNhbnZhcyDmiY3og73op6blj5EgZHJhZyDnm7jlhbPnmoTkuovku7ZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnc3RhcnQnLCBldmVudCwgcG9pbnRJbmZvLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOa4heeQhuaMieS4i+m8oOagh+aXtue8k+WtmOeahOWAvFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3VzZWRvd25TaGFwZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRNb3VzZW92ZXJFdmVudHMoZXZlbnQsIHBvaW50SW5mbywgcHJlU2hhcGUsIHNoYXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2Vtb3ZlJywgZXZlbnQsIHBvaW50SW5mbywgc2hhcGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0TW91c2VvdmVyRXZlbnRzKGV2ZW50LCBwb2ludEluZm8sIHByZVNoYXBlLCBzaGFwZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2Vtb3ZlJywgZXZlbnQsIHBvaW50SW5mbywgc2hhcGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOayoeacieaMiemUruaMieS4i+aXtu+8jOWImeebtOaOpeinpuWPkSBtb3VzZSBvdmVyIOebuOWFs+eahOWQhOenjeS6i+S7tlxuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRNb3VzZW92ZXJFdmVudHMoZXZlbnQsIHBvaW50SW5mbywgcHJlU2hhcGUsIHNoYXBlKTtcbiAgICAgICAgICAgICAgICAvLyDlp4vnu4jop6blj5Hnp7vliqhcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlbW92ZScsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g6Kem5Y+R5LqL5Lu2XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fZW1pdEV2ZW50ID0gZnVuY3Rpb24gKHR5cGUsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpIHtcbiAgICAgICAgdmFyIGV2ZW50T2JqID0gdGhpcy5fZ2V0RXZlbnRPYmoodHlwZSwgZXZlbnQsIHBvaW50SW5mbywgc2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgIC8vIOWtmOWcqCBzaGFwZSDop6blj5HvvIzliJnov5vooYzlhpLms6HlpITnkIZcbiAgICAgICAgaWYgKHNoYXBlKSB7XG4gICAgICAgICAgICBldmVudE9iai5zaGFwZSA9IHNoYXBlO1xuICAgICAgICAgICAgLy8g6Kem5Y+RIHNoYXBlIOS4iueahOS6i+S7tlxuICAgICAgICAgICAgZW1pdFRhcmdldEV2ZW50KHNoYXBlLCB0eXBlLCBldmVudE9iaik7XG4gICAgICAgICAgICB2YXIgcGFyZW50XzEgPSBzaGFwZS5nZXRQYXJlbnQoKTtcbiAgICAgICAgICAgIC8vIOaJp+ihjOWGkuazoVxuICAgICAgICAgICAgd2hpbGUgKHBhcmVudF8xKSB7XG4gICAgICAgICAgICAgICAgLy8g5aeU5omY5LqL5Lu26KaB5YWI6Kem5Y+RXG4gICAgICAgICAgICAgICAgcGFyZW50XzEuZW1pdERlbGVnYXRpb24odHlwZSwgZXZlbnRPYmopO1xuICAgICAgICAgICAgICAgIC8vIOS6i+S7tuWGkuazoeWBnOatou+8jOS4jeiDveWmqOeijeWnlOaJmOS6i+S7tlxuICAgICAgICAgICAgICAgIGlmICghZXZlbnRPYmoucHJvcGFnYXRpb25TdG9wcGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1YmJsZUV2ZW50KHBhcmVudF8xLCB0eXBlLCBldmVudE9iaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50T2JqLnByb3BhZ2F0aW9uUGF0aC5wdXNoKHBhcmVudF8xKTtcbiAgICAgICAgICAgICAgICBwYXJlbnRfMSA9IHBhcmVudF8xLmdldFBhcmVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8g5aaC5p6c5rKh5pyJIHNoYXBlIOebtOaOpeWcqCBjYW52YXMg5LiK6Kem5Y+RXG4gICAgICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jYW52YXM7XG4gICAgICAgICAgICAvLyDnm7TmjqXop6blj5EgY2FudmFzIOS4iueahOS6i+S7tlxuICAgICAgICAgICAgZW1pdFRhcmdldEV2ZW50KGNhbnZhcywgdHlwZSwgZXZlbnRPYmopO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIOa4heeQhuS6i+S7tlxuICAgICAgICB0aGlzLl9jbGVhckV2ZW50cygpO1xuICAgICAgICAvLyDmuIXnkIbnvJPlrZjnmoTlr7nosaFcbiAgICAgICAgdGhpcy5jYW52YXMgPSBudWxsO1xuICAgICAgICB0aGlzLmN1cnJlbnRTaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmdTaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMubW91c2Vkb3duUG9pbnQgPSBudWxsO1xuICAgICAgICB0aGlzLm1vdXNlZG93blNoYXBlID0gbnVsbDtcbiAgICAgICAgdGhpcy5tb3VzZWRvd25UaW1lU3RhbXAgPSBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIEV2ZW50Q29udHJvbGxlcjtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBFdmVudENvbnRyb2xsZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ldmVudC1jb250b2xsZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/event/event-contoller.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/event/graph-event.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g-base/esm/event/graph-event.js ***! \************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar GraphEvent = /** @class */ (function () {\n function GraphEvent(type, event) {\n /**\n * 是否允许冒泡\n * @type {boolean}\n */\n this.bubbles = true;\n /**\n * 触发对象\n * @type {object}\n */\n this.target = null;\n /**\n * 监听对象\n * @type {object}\n */\n this.currentTarget = null;\n /**\n * 委托对象\n * @type {object}\n */\n this.delegateTarget = null;\n /**\n * 委托事件监听对象的代理对象,即 ev.delegateObject = ev.currentTarget.get('delegateObject')\n * @type {object}\n */\n this.delegateObject = null;\n /**\n * 是否阻止了原生事件\n * @type {boolean}\n */\n this.defaultPrevented = false;\n /**\n * 是否阻止传播(向上冒泡)\n * @type {boolean}\n */\n this.propagationStopped = false;\n /**\n * 触发事件的图形\n * @type {IShape}\n */\n this.shape = null;\n /**\n * 开始触发事件的图形\n * @type {IShape}\n */\n this.fromShape = null;\n /**\n * 事件结束时的触发图形\n * @type {IShape}\n */\n this.toShape = null;\n // 触发事件的路径\n this.propagationPath = [];\n this.type = type;\n this.name = type;\n this.originalEvent = event;\n this.timeStamp = event.timeStamp;\n }\n /**\n * 阻止浏览器默认的行为\n */\n GraphEvent.prototype.preventDefault = function () {\n this.defaultPrevented = true;\n if (this.originalEvent.preventDefault) {\n this.originalEvent.preventDefault();\n }\n };\n /**\n * 阻止冒泡\n */\n GraphEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n GraphEvent.prototype.toString = function () {\n var type = this.type;\n return \"[Event (type=\" + type + \")]\";\n };\n GraphEvent.prototype.save = function () { };\n GraphEvent.prototype.restore = function () { };\n return GraphEvent;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (GraphEvent);\n//# sourceMappingURL=graph-event.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9ldmVudC9ncmFwaC1ldmVudC5qcz9lNWUyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0MsZ0RBQWdEO0FBQ2hEO0FBQ0EsQ0FBQztBQUNjLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9ldmVudC9ncmFwaC1ldmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBHcmFwaEV2ZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEdyYXBoRXZlbnQodHlwZSwgZXZlbnQpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaYr+WQpuWFgeiuuOWGkuazoVxuICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYnViYmxlcyA9IHRydWU7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDop6blj5Hlr7nosaFcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOebkeWQrOWvueixoVxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOWnlOaJmOWvueixoVxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5kZWxlZ2F0ZVRhcmdldCA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDlp5TmiZjkuovku7bnm5HlkKzlr7nosaHnmoTku6PnkIblr7nosaHvvIzljbMgZXYuZGVsZWdhdGVPYmplY3QgPSBldi5jdXJyZW50VGFyZ2V0LmdldCgnZGVsZWdhdGVPYmplY3QnKVxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5kZWxlZ2F0ZU9iamVjdCA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmmK/lkKbpmLvmraLkuobljp/nlJ/kuovku7ZcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaYr+WQpumYu+atouS8oOaSre+8iOWQkeS4iuWGkuazoe+8iVxuICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucHJvcGFnYXRpb25TdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDop6blj5Hkuovku7bnmoTlm77lvaJcbiAgICAgICAgICogQHR5cGUge0lTaGFwZX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuc2hhcGUgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICog5byA5aeL6Kem5Y+R5LqL5Lu255qE5Zu+5b2iXG4gICAgICAgICAqIEB0eXBlIHtJU2hhcGV9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmZyb21TaGFwZSA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDkuovku7bnu5PmnZ/ml7bnmoTop6blj5Hlm77lvaJcbiAgICAgICAgICogQHR5cGUge0lTaGFwZX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudG9TaGFwZSA9IG51bGw7XG4gICAgICAgIC8vIOinpuWPkeS6i+S7tueahOi3r+W+hFxuICAgICAgICB0aGlzLnByb3BhZ2F0aW9uUGF0aCA9IFtdO1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLm5hbWUgPSB0eXBlO1xuICAgICAgICB0aGlzLm9yaWdpbmFsRXZlbnQgPSBldmVudDtcbiAgICAgICAgdGhpcy50aW1lU3RhbXAgPSBldmVudC50aW1lU3RhbXA7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOmYu+atoua1j+iniOWZqOm7mOiupOeahOihjOS4ulxuICAgICAqL1xuICAgIEdyYXBoRXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbmFsRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICog6Zi75q2i5YaS5rOhXG4gICAgICovXG4gICAgR3JhcGhFdmVudC5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZCA9IHRydWU7XG4gICAgfTtcbiAgICBHcmFwaEV2ZW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGUgPSB0aGlzLnR5cGU7XG4gICAgICAgIHJldHVybiBcIltFdmVudCAodHlwZT1cIiArIHR5cGUgKyBcIildXCI7XG4gICAgfTtcbiAgICBHcmFwaEV2ZW50LnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIEdyYXBoRXZlbnQucHJvdG90eXBlLnJlc3RvcmUgPSBmdW5jdGlvbiAoKSB7IH07XG4gICAgcmV0dXJuIEdyYXBoRXZlbnQ7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgR3JhcGhFdmVudDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdyYXBoLWV2ZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/event/graph-event.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/index.js": /*!************************************************!*\ !*** ./node_modules/@antv/g-base/esm/index.js ***! \************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/path */ \"./node_modules/@antv/g-base/esm/util/path.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"PathUtil\", function() { return _util_path__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ \"./node_modules/@antv/g-base/esm/types.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Event\",\"Base\",\"AbstractCanvas\",\"AbstractGroup\",\"AbstractShape\",\"PathUtil\",\"getBBoxMethod\",\"getTextHeight\",\"assembleFont\",\"isAllowCapture\",\"multiplyVec2\",\"invert\",\"getOffScreenContext\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _types__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interfaces */ \"./node_modules/@antv/g-base/esm/interfaces.js\");\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_interfaces__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _interfaces__WEBPACK_IMPORTED_MODULE_2__) if([\"default\",\"Event\",\"Base\",\"AbstractCanvas\",\"AbstractGroup\",\"AbstractShape\",\"PathUtil\",\"getBBoxMethod\",\"getTextHeight\",\"assembleFont\",\"isAllowCapture\",\"multiplyVec2\",\"invert\",\"getOffScreenContext\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _interfaces__WEBPACK_IMPORTED_MODULE_2__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _event_graph_event__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./event/graph-event */ \"./node_modules/@antv/g-base/esm/event/graph-event.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Event\", function() { return _event_graph_event__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _abstract_base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/base */ \"./node_modules/@antv/g-base/esm/abstract/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _abstract_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _abstract_canvas__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./abstract/canvas */ \"./node_modules/@antv/g-base/esm/abstract/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractCanvas\", function() { return _abstract_canvas__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _abstract_group__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./abstract/group */ \"./node_modules/@antv/g-base/esm/abstract/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGroup\", function() { return _abstract_group__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _abstract_shape__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./abstract/shape */ \"./node_modules/@antv/g-base/esm/abstract/shape.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractShape\", function() { return _abstract_shape__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _bbox__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./bbox */ \"./node_modules/@antv/g-base/esm/bbox/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBBoxMethod\", function() { return _bbox__WEBPACK_IMPORTED_MODULE_8__[\"getBBoxMethod\"]; });\n\n/* harmony import */ var _util_text__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./util/text */ \"./node_modules/@antv/g-base/esm/util/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTextHeight\", function() { return _util_text__WEBPACK_IMPORTED_MODULE_9__[\"getTextHeight\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assembleFont\", function() { return _util_text__WEBPACK_IMPORTED_MODULE_9__[\"assembleFont\"]; });\n\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./util/util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAllowCapture\", function() { return _util_util__WEBPACK_IMPORTED_MODULE_10__[\"isAllowCapture\"]; });\n\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./util/matrix */ \"./node_modules/@antv/g-base/esm/util/matrix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"multiplyVec2\", function() { return _util_matrix__WEBPACK_IMPORTED_MODULE_11__[\"multiplyVec2\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return _util_matrix__WEBPACK_IMPORTED_MODULE_11__[\"invert\"]; });\n\n/* harmony import */ var _util_offscreen__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./util/offscreen */ \"./node_modules/@antv/g-base/esm/util/offscreen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOffScreenContext\", function() { return _util_offscreen__WEBPACK_IMPORTED_MODULE_12__[\"getOffScreenContext\"]; });\n\n/**\n * @fileoverview G 的基础接口定义和所有的抽象类\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar version = '0.5.6';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9pbmRleC5qcz82ODU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUN3QztBQUNoQjtBQUNLO0FBQzBCO0FBQ0w7QUFDWTtBQUNGO0FBQ0E7QUFDeEM7QUFDbUI7QUFDbUI7QUFDYjtBQUNRO0FBQ0U7QUFDaEQ7QUFDUCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IEcg55qE5Z+656GA5o6l5Y+j5a6a5LmJ5ZKM5omA5pyJ55qE5oq96LGh57G7XG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0ICogYXMgUGF0aFV0aWwgZnJvbSAnLi91dGlsL3BhdGgnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBFdmVudCB9IGZyb20gJy4vZXZlbnQvZ3JhcGgtZXZlbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBCYXNlIH0gZnJvbSAnLi9hYnN0cmFjdC9iYXNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQWJzdHJhY3RDYW52YXMgfSBmcm9tICcuL2Fic3RyYWN0L2NhbnZhcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEFic3RyYWN0R3JvdXAgfSBmcm9tICcuL2Fic3RyYWN0L2dyb3VwJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQWJzdHJhY3RTaGFwZSB9IGZyb20gJy4vYWJzdHJhY3Qvc2hhcGUnO1xuZXhwb3J0IHsgUGF0aFV0aWwgfTtcbmV4cG9ydCB7IGdldEJCb3hNZXRob2QgfSBmcm9tICcuL2Jib3gnO1xuZXhwb3J0IHsgZ2V0VGV4dEhlaWdodCwgYXNzZW1ibGVGb250IH0gZnJvbSAnLi91dGlsL3RleHQnO1xuZXhwb3J0IHsgaXNBbGxvd0NhcHR1cmUgfSBmcm9tICcuL3V0aWwvdXRpbCc7XG5leHBvcnQgeyBtdWx0aXBseVZlYzIsIGludmVydCB9IGZyb20gJy4vdXRpbC9tYXRyaXgnO1xuZXhwb3J0IHsgZ2V0T2ZmU2NyZWVuQ29udGV4dCB9IGZyb20gJy4vdXRpbC9vZmZzY3JlZW4nO1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJzAuNS42Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/interfaces.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g-base/esm/interfaces.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("//# sourceMappingURL=interfaces.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9pbnRlcmZhY2VzLmpzP2I1ZDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS9pbnRlcmZhY2VzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJmYWNlcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/interfaces.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/types.js": /*!************************************************!*\ !*** ./node_modules/@antv/g-base/esm/types.js ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS90eXBlcy5qcz9lMWM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vdHlwZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyMgc291cmNlTWFwcGluZ1VSTD10eXBlcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/types.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/util/color.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g-base/esm/util/color.js ***! \*****************************************************/ /*! exports provided: isColorProp, isGradientColor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isColorProp\", function() { return isColorProp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isGradientColor\", function() { return isGradientColor; });\nvar isColorProp = function (prop) { return ['fill', 'stroke', 'fillStyle', 'strokeStyle'].includes(prop); };\nvar isGradientColor = function (val) { return /^[r,R,L,l]{1}[\\s]*\\(/.test(val); };\n//# sourceMappingURL=color.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL2NvbG9yLmpzPzZjYjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU8sbUNBQW1DLHNFQUFzRTtBQUN6RyxzQ0FBc0Msb0JBQW9CLEVBQUUsbUJBQW1CO0FBQ3RGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vdXRpbC9jb2xvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgaXNDb2xvclByb3AgPSBmdW5jdGlvbiAocHJvcCkgeyByZXR1cm4gWydmaWxsJywgJ3N0cm9rZScsICdmaWxsU3R5bGUnLCAnc3Ryb2tlU3R5bGUnXS5pbmNsdWRlcyhwcm9wKTsgfTtcbmV4cG9ydCB2YXIgaXNHcmFkaWVudENvbG9yID0gZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gL15bcixSLEwsbF17MX1bXFxzXSpcXCgvLnRlc3QodmFsKTsgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbG9yLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/color.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/util/matrix.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g-base/esm/util/matrix.js ***! \******************************************************/ /*! exports provided: multiplyMatrix, multiplyVec2, invert */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyMatrix\", function() { return multiplyMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyVec2\", function() { return multiplyVec2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/**\n * @fileoverview 矩阵运算,本来是要引入 gl-matrix, 但是考虑到 g-mobile 对大小有限制,同时 g-webgl 使用的 matrix 不一致\n * 所以,这里仅实现 2D 几个运算,上层自己引入 gl-matrix\n * @author dxq613@gmail.com\n */\n/**\n * 3阶矩阵相乘\n * @param {number[]} a 矩阵1\n * @param {number[]} b 矩阵2\n */\nfunction multiplyMatrix(a, b) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b00 = b[0];\n var b01 = b[1];\n var b02 = b[2];\n var b10 = b[3];\n var b11 = b[4];\n var b12 = b[5];\n var b20 = b[6];\n var b21 = b[7];\n var b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * 3阶矩阵同2阶向量相乘\n * @param {number[]} m 矩阵\n * @param {number[]} v 二阶向量\n */\nfunction multiplyVec2(m, v) {\n var out = [];\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * 矩阵的逆\n * @param {number[]} a 矩阵\n */\nfunction invert(a) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20;\n // Calculate the determinant\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n//# sourceMappingURL=matrix.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL21hdHJpeC5qcz82OTI4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL3V0aWwvbWF0cml4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOefqemYtei/kOeul++8jOacrOadpeaYr+imgeW8leWFpSBnbC1tYXRyaXgsIOS9huaYr+iAg+iZkeWIsCBnLW1vYmlsZSDlr7nlpKflsI/mnInpmZDliLbvvIzlkIzml7YgZy13ZWJnbCDkvb/nlKjnmoQgbWF0cml4IOS4jeS4gOiHtFxuICog5omA5Lul77yM6L+Z6YeM5LuF5a6e546wIDJEIOWHoOS4qui/kOeul++8jOS4iuWxguiHquW3seW8leWFpSBnbC1tYXRyaXhcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG4vKipcbiAqIDPpmLbnn6npmLXnm7jkuZhcbiAqIEBwYXJhbSB7bnVtYmVyW119IGEg55+p6Zi1MVxuICogQHBhcmFtIHtudW1iZXJbXX0gYiDnn6npmLUyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseU1hdHJpeChhLCBiKSB7XG4gICAgdmFyIG91dCA9IFtdO1xuICAgIHZhciBhMDAgPSBhWzBdO1xuICAgIHZhciBhMDEgPSBhWzFdO1xuICAgIHZhciBhMDIgPSBhWzJdO1xuICAgIHZhciBhMTAgPSBhWzNdO1xuICAgIHZhciBhMTEgPSBhWzRdO1xuICAgIHZhciBhMTIgPSBhWzVdO1xuICAgIHZhciBhMjAgPSBhWzZdO1xuICAgIHZhciBhMjEgPSBhWzddO1xuICAgIHZhciBhMjIgPSBhWzhdO1xuICAgIHZhciBiMDAgPSBiWzBdO1xuICAgIHZhciBiMDEgPSBiWzFdO1xuICAgIHZhciBiMDIgPSBiWzJdO1xuICAgIHZhciBiMTAgPSBiWzNdO1xuICAgIHZhciBiMTEgPSBiWzRdO1xuICAgIHZhciBiMTIgPSBiWzVdO1xuICAgIHZhciBiMjAgPSBiWzZdO1xuICAgIHZhciBiMjEgPSBiWzddO1xuICAgIHZhciBiMjIgPSBiWzhdO1xuICAgIG91dFswXSA9IGIwMCAqIGEwMCArIGIwMSAqIGExMCArIGIwMiAqIGEyMDtcbiAgICBvdXRbMV0gPSBiMDAgKiBhMDEgKyBiMDEgKiBhMTEgKyBiMDIgKiBhMjE7XG4gICAgb3V0WzJdID0gYjAwICogYTAyICsgYjAxICogYTEyICsgYjAyICogYTIyO1xuICAgIG91dFszXSA9IGIxMCAqIGEwMCArIGIxMSAqIGExMCArIGIxMiAqIGEyMDtcbiAgICBvdXRbNF0gPSBiMTAgKiBhMDEgKyBiMTEgKiBhMTEgKyBiMTIgKiBhMjE7XG4gICAgb3V0WzVdID0gYjEwICogYTAyICsgYjExICogYTEyICsgYjEyICogYTIyO1xuICAgIG91dFs2XSA9IGIyMCAqIGEwMCArIGIyMSAqIGExMCArIGIyMiAqIGEyMDtcbiAgICBvdXRbN10gPSBiMjAgKiBhMDEgKyBiMjEgKiBhMTEgKyBiMjIgKiBhMjE7XG4gICAgb3V0WzhdID0gYjIwICogYTAyICsgYjIxICogYTEyICsgYjIyICogYTIyO1xuICAgIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIDPpmLbnn6npmLXlkIwy6Zi25ZCR6YeP55u45LmYXG4gKiBAcGFyYW0ge251bWJlcltdfSBtIOefqemYtVxuICogQHBhcmFtIHtudW1iZXJbXX0gdiDkuozpmLblkJHph49cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5VmVjMihtLCB2KSB7XG4gICAgdmFyIG91dCA9IFtdO1xuICAgIHZhciB4ID0gdlswXTtcbiAgICB2YXIgeSA9IHZbMV07XG4gICAgb3V0WzBdID0gbVswXSAqIHggKyBtWzNdICogeSArIG1bNl07XG4gICAgb3V0WzFdID0gbVsxXSAqIHggKyBtWzRdICogeSArIG1bN107XG4gICAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICog55+p6Zi155qE6YCGXG4gKiBAcGFyYW0ge251bWJlcltdfSBhIOefqemYtVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0KGEpIHtcbiAgICB2YXIgb3V0ID0gW107XG4gICAgdmFyIGEwMCA9IGFbMF07XG4gICAgdmFyIGEwMSA9IGFbMV07XG4gICAgdmFyIGEwMiA9IGFbMl07XG4gICAgdmFyIGExMCA9IGFbM107XG4gICAgdmFyIGExMSA9IGFbNF07XG4gICAgdmFyIGExMiA9IGFbNV07XG4gICAgdmFyIGEyMCA9IGFbNl07XG4gICAgdmFyIGEyMSA9IGFbN107XG4gICAgdmFyIGEyMiA9IGFbOF07XG4gICAgdmFyIGIwMSA9IGEyMiAqIGExMSAtIGExMiAqIGEyMTtcbiAgICB2YXIgYjExID0gLWEyMiAqIGExMCArIGExMiAqIGEyMDtcbiAgICB2YXIgYjIxID0gYTIxICogYTEwIC0gYTExICogYTIwO1xuICAgIC8vIENhbGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnRcbiAgICB2YXIgZGV0ID0gYTAwICogYjAxICsgYTAxICogYjExICsgYTAyICogYjIxO1xuICAgIGlmICghZGV0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBkZXQgPSAxLjAgLyBkZXQ7XG4gICAgb3V0WzBdID0gYjAxICogZGV0O1xuICAgIG91dFsxXSA9ICgtYTIyICogYTAxICsgYTAyICogYTIxKSAqIGRldDtcbiAgICBvdXRbMl0gPSAoYTEyICogYTAxIC0gYTAyICogYTExKSAqIGRldDtcbiAgICBvdXRbM10gPSBiMTEgKiBkZXQ7XG4gICAgb3V0WzRdID0gKGEyMiAqIGEwMCAtIGEwMiAqIGEyMCkgKiBkZXQ7XG4gICAgb3V0WzVdID0gKC1hMTIgKiBhMDAgKyBhMDIgKiBhMTApICogZGV0O1xuICAgIG91dFs2XSA9IGIyMSAqIGRldDtcbiAgICBvdXRbN10gPSAoLWEyMSAqIGEwMCArIGEwMSAqIGEyMCkgKiBkZXQ7XG4gICAgb3V0WzhdID0gKGExMSAqIGEwMCAtIGEwMSAqIGExMCkgKiBkZXQ7XG4gICAgcmV0dXJuIG91dDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hdHJpeC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/matrix.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/util/offscreen.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g-base/esm/util/offscreen.js ***! \*********************************************************/ /*! exports provided: getOffScreenContext */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOffScreenContext\", function() { return getOffScreenContext; });\n// 全局设置一个唯一离屏的 ctx,用于计算 isPointInPath\nvar offScreenCtx = null;\nfunction getOffScreenContext() {\n if (!offScreenCtx) {\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n offScreenCtx = canvas.getContext('2d');\n }\n return offScreenCtx;\n}\n//# sourceMappingURL=offscreen.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL29mZnNjcmVlbi5qcz85NmRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL29mZnNjcmVlbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIOWFqOWxgOiuvue9ruS4gOS4quWUr+S4gOemu+Wxj+eahCBjdHjvvIznlKjkuo7orqHnrpcgaXNQb2ludEluUGF0aFxudmFyIG9mZlNjcmVlbkN0eCA9IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gZ2V0T2ZmU2NyZWVuQ29udGV4dCgpIHtcbiAgICBpZiAoIW9mZlNjcmVlbkN0eCkge1xuICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IDE7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSAxO1xuICAgICAgICBvZmZTY3JlZW5DdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICB9XG4gICAgcmV0dXJuIG9mZlNjcmVlbkN0eDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9mZnNjcmVlbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/offscreen.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/util/path.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-base/esm/util/path.js ***! \****************************************************/ /*! exports provided: catmullRomToBezier, fillPath, fillPathByDiff, formatPath, intersection, parsePathArray, parsePathString, pathToAbsolute, pathToCurve, rectPath */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catmullRomToBezier\", function() { return catmullRomToBezier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fillPath\", function() { return fillPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fillPathByDiff\", function() { return fillPathByDiff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPath\", function() { return formatPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return intersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePathArray\", function() { return parsePathArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePathString\", function() { return parsePathString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToAbsolute\", function() { return pathToAbsolute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToCurve\", function() { return pathToCurve; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rectPath\", function() { return rectPath; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nvar PATH_COMMAND = new RegExp(\"([a-z])[\" + SPACES + \",]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[\" + SPACES + \"]*,?[\" + SPACES + \"]*)+)\", 'ig');\nvar PATH_VALUES = new RegExp(\"(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[\" + SPACES + \"]*,?[\" + SPACES + \"]*\", 'ig');\n// Parse given path string into an array of arrays of path segments\nvar parsePathString = function (pathString) {\n if (!pathString) {\n return null;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n }\n else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return pathString;\n });\n return data;\n};\n// http://schepers.cc/getting-to-the-point\nvar catmullRomToBezier = function (crp, z) {\n var d = [];\n // @ts-ignore\n for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n var p = [\n {\n x: +crp[i - 2],\n y: +crp[i - 1],\n },\n {\n x: +crp[i],\n y: +crp[i + 1],\n },\n {\n x: +crp[i + 2],\n y: +crp[i + 3],\n },\n {\n x: +crp[i + 4],\n y: +crp[i + 5],\n },\n ];\n if (z) {\n if (!i) {\n p[0] = {\n x: +crp[iLen - 2],\n y: +crp[iLen - 1],\n };\n }\n else if (iLen - 4 === i) {\n p[3] = {\n x: +crp[0],\n y: +crp[1],\n };\n }\n else if (iLen - 2 === i) {\n p[2] = {\n x: +crp[0],\n y: +crp[1],\n };\n p[3] = {\n x: +crp[2],\n y: +crp[3],\n };\n }\n }\n else {\n if (iLen - 4 === i) {\n p[3] = p[2];\n }\n else if (!i) {\n p[0] = {\n x: +crp[i],\n y: +crp[i + 1],\n };\n }\n }\n d.push([\n 'C',\n (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n (p[1].x + 6 * p[2].x - p[3].x) / 6,\n (p[1].y + 6 * p[2].y - p[3].y) / 6,\n p[2].x,\n p[2].y,\n ]);\n }\n return d;\n};\nvar ellipsePath = function (x, y, rx, ry, a) {\n var res = [];\n if (a === null && ry === null) {\n ry = rx;\n }\n x = +x;\n y = +y;\n rx = +rx;\n ry = +ry;\n if (a !== null) {\n var rad = Math.PI / 180;\n var x1 = x + rx * Math.cos(-ry * rad);\n var x2 = x + rx * Math.cos(-a * rad);\n var y1 = y + rx * Math.sin(-ry * rad);\n var y2 = y + rx * Math.sin(-a * rad);\n res = [\n ['M', x1, y1],\n ['A', rx, rx, 0, +(a - ry > 180), 0, x2, y2],\n ];\n }\n else {\n res = [['M', x, y], ['m', 0, -ry], ['a', rx, ry, 0, 1, 1, 0, 2 * ry], ['a', rx, ry, 0, 1, 1, 0, -2 * ry], ['z']];\n }\n return res;\n};\nvar pathToAbsolute = function (pathArray) {\n pathArray = parsePathString(pathArray);\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n var res = [];\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var start = 0;\n var pa0;\n var dots;\n if (pathArray[0][0] === 'M') {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n var crz = pathArray.length === 3 &&\n pathArray[0][0] === 'M' &&\n pathArray[1][0].toUpperCase() === 'R' &&\n pathArray[2][0].toUpperCase() === 'Z';\n for (var r = void 0, pa = void 0, i = start, ii = pathArray.length; i < ii; i++) {\n res.push((r = []));\n pa = pathArray[i];\n pa0 = pa[0];\n if (pa0 !== pa0.toUpperCase()) {\n r[0] = pa0.toUpperCase();\n switch (r[0]) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'R':\n dots = [x, y].concat(pa.slice(1));\n for (var j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n break;\n case 'O':\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n break;\n case 'U':\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n break; // for lint\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n }\n else if (pa0 === 'R') {\n dots = [x, y].concat(pa.slice(1));\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n r = ['R'].concat(pa.slice(-2));\n }\n else if (pa0 === 'O') {\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n }\n else if (pa0 === 'U') {\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n }\n else {\n for (var k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n pa0 = pa0.toUpperCase();\n if (pa0 !== 'O') {\n switch (r[0]) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n break;\n case 'V':\n y = r[1];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break; // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n }\n return res;\n};\nvar l2c = function (x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n};\nvar q2c = function (x1, y1, ax, ay, x2, y2) {\n var _13 = 1 / 3;\n var _23 = 2 / 3;\n return [_13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2];\n};\nvar a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n if (rx === ry) {\n rx += 1;\n }\n var _120 = (Math.PI * 120) / 180;\n var rad = (Math.PI / 180) * (+angle || 0);\n var res = [];\n var xy;\n var f1;\n var f2;\n var cx;\n var cy;\n var rotate = function (x, y, rad) {\n var X = x * Math.cos(rad) - y * Math.sin(rad);\n var Y = x * Math.sin(rad) + y * Math.cos(rad);\n return {\n x: X,\n y: Y,\n };\n };\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n if (x1 === x2 && y1 === y2) {\n // 若弧的起始点和终点重叠则错开一点\n x2 += 1;\n y2 += 1;\n }\n // const cos = Math.cos(Math.PI / 180 * angle);\n // const sin = Math.sin(Math.PI / 180 * angle);\n var x = (x1 - x2) / 2;\n var y = (y1 - y2) / 2;\n var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n var rx2 = rx * rx;\n var ry2 = ry * ry;\n var k = (large_arc_flag === sweep_flag ? -1 : 1) *\n Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = (k * rx * y) / ry + (x1 + x2) / 2;\n cy = (k * -ry * x) / rx + (y1 + y2) / 2;\n // @ts-ignore\n f1 = Math.asin(((y1 - cy) / ry).toFixed(9));\n // @ts-ignore\n f2 = Math.asin(((y2 - cy) / ry).toFixed(9));\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n f1 < 0 && (f1 = Math.PI * 2 + f1);\n f2 < 0 && (f2 = Math.PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - Math.PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - Math.PI * 2;\n }\n }\n else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n var df = f2 - f1;\n if (Math.abs(df) > _120) {\n var f2old = f2;\n var x2old = x2;\n var y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = Math.cos(f1);\n var s1 = Math.sin(f1);\n var c2 = Math.cos(f2);\n var s2 = Math.sin(f2);\n var t = Math.tan(df / 4);\n var hx = (4 / 3) * rx * t;\n var hy = (4 / 3) * ry * t;\n var m1 = [x1, y1];\n var m2 = [x1 + hx * s1, y1 - hy * c1];\n var m3 = [x2 + hx * s2, y2 - hy * c2];\n var m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n }\n res = [m2, m3, m4].concat(res).join().split(',');\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n};\nvar pathToCurve = function (path, path2) {\n var p = pathToAbsolute(path);\n var p2 = path2 && pathToAbsolute(path2);\n var attrs = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n var attrs2 = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n var pcoms1 = []; // path commands of original path p\n var pcoms2 = []; // path commands of original path p2\n var pfirst = ''; // temporary holder for original path command\n var pcom = ''; // holder for previous path command of original path\n var ii;\n var processPath = function (path, d, pcom) {\n var nx;\n var ny;\n if (!path) {\n return ['C', d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(path[0] in\n {\n T: 1,\n Q: 1,\n }) && (d.qx = d.qy = null);\n switch (path[0]) {\n case 'M':\n d.X = path[1];\n d.Y = path[2];\n break;\n case 'A':\n path = ['C'].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n break;\n case 'S':\n if (pcom === 'C' || pcom === 'S') {\n // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n }\n else {\n // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = ['C', nx, ny].concat(path.slice(1));\n break;\n case 'T':\n if (pcom === 'Q' || pcom === 'T') {\n // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n }\n else {\n // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = ['C'].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case 'Q':\n d.qx = path[1];\n d.qy = path[2];\n path = ['C'].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case 'L':\n path = ['C'].concat(l2c(d.x, d.y, path[1], path[2]));\n break;\n case 'H':\n path = ['C'].concat(l2c(d.x, d.y, path[1], d.y));\n break;\n case 'V':\n path = ['C'].concat(l2c(d.x, d.y, d.x, path[1]));\n break;\n case 'Z':\n path = ['C'].concat(l2c(d.x, d.y, d.X, d.Y));\n break;\n default:\n break;\n }\n return path;\n };\n var fixArc = function (pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n var pi = pp[i];\n while (pi.length) {\n pcoms1[i] = 'A'; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i] = 'A'); // the same as above\n pp.splice(i++, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n var fixM = function (path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] === 'M' && path2[i][0] !== 'M') {\n path2.splice(i, 0, ['M', a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n for (var i = 0; i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n if (pfirst !== 'C') {\n // C is not saved yet, because it may be result of conversion\n pcoms1[i] = pfirst; // Save current path command\n i && (pcom = pcoms1[i - 1]); // Get previous path command pcom\n }\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n if (pcoms1[i] !== 'A' && pfirst === 'C')\n pcoms1[i] = 'C'; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n if (p2) {\n // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst !== 'C') {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i - 1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n if (pcoms2[i] !== 'A' && pfirst === 'C') {\n pcoms2[i] = 'C';\n }\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n var seg = p[i];\n var seg2 = p2 && p2[i];\n var seglen = seg.length;\n var seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = parseFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (parseFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (parseFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n return p2 ? [p, p2] : p;\n};\nvar p2s = /,?([a-z]),?/gi;\nvar parsePathArray = function (path) {\n return path.join(',').replace(p2s, '$1');\n};\nvar base3 = function (t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4;\n var t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n};\nvar bezlen = function (x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z === null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2;\n var n = 12;\n var Tvalues = [\n -0.1252,\n 0.1252,\n -0.3678,\n 0.3678,\n -0.5873,\n 0.5873,\n -0.7699,\n 0.7699,\n -0.9041,\n 0.9041,\n -0.9816,\n 0.9816,\n ];\n var Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];\n var sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2;\n var xbase = base3(ct, x1, x2, x3, x4);\n var ybase = base3(ct, y1, y2, y3, y4);\n var comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * Math.sqrt(comb);\n }\n return z2 * sum;\n};\nvar curveDim = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [];\n var bounds = [[], []];\n var a;\n var b;\n var c;\n var t;\n for (var i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n }\n else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n var b2ac = b * b - 4 * c * a;\n var sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n var t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1) {\n tvalues.push(t1);\n }\n var t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n var j = tvalues.length;\n var jlen = j;\n var mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return {\n min: {\n x: Math.min.apply(0, bounds[0]),\n y: Math.min.apply(0, bounds[1]),\n },\n max: {\n x: Math.max.apply(0, bounds[0]),\n y: Math.max.apply(0, bounds[1]),\n },\n };\n};\nvar intersect = function (x1, y1, x2, y2, x3, y3, x4, y4) {\n if (Math.max(x1, x2) < Math.min(x3, x4) ||\n Math.min(x1, x2) > Math.max(x3, x4) ||\n Math.max(y1, y2) < Math.min(y3, y4) ||\n Math.min(y1, y2) > Math.max(y3, y4)) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n var ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n var denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (!denominator) {\n return;\n }\n var px = nx / denominator;\n var py = ny / denominator;\n var px2 = +px.toFixed(2);\n var py2 = +py.toFixed(2);\n if (px2 < +Math.min(x1, x2).toFixed(2) ||\n px2 > +Math.max(x1, x2).toFixed(2) ||\n px2 < +Math.min(x3, x4).toFixed(2) ||\n px2 > +Math.max(x3, x4).toFixed(2) ||\n py2 < +Math.min(y1, y2).toFixed(2) ||\n py2 > +Math.max(y1, y2).toFixed(2) ||\n py2 < +Math.min(y3, y4).toFixed(2) ||\n py2 > +Math.max(y3, y4).toFixed(2)) {\n return;\n }\n return {\n x: px,\n y: py,\n };\n};\nvar isPointInsideBBox = function (bbox, x, y) {\n return x >= bbox.x && x <= bbox.x + bbox.width && y >= bbox.y && y <= bbox.y + bbox.height;\n};\nvar rectPath = function (x, y, w, h, r) {\n if (r) {\n return [\n ['M', +x + +r, y],\n ['l', w - r * 2, 0],\n ['a', r, r, 0, 0, 1, r, r],\n ['l', 0, h - r * 2],\n ['a', r, r, 0, 0, 1, -r, r],\n ['l', r * 2 - w, 0],\n ['a', r, r, 0, 0, 1, -r, -r],\n ['l', 0, r * 2 - h],\n ['a', r, r, 0, 0, 1, r, -r],\n ['z'],\n ];\n }\n var res = [['M', x, y], ['l', w, 0], ['l', 0, h], ['l', -w, 0], ['z']];\n // @ts-ignore\n res.parsePathArray = parsePathArray;\n return res;\n};\nvar box = function (x, y, width, height) {\n if (x === null) {\n x = y = width = height = 0;\n }\n if (y === null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x: x,\n y: y,\n width: width,\n w: width,\n height: height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: Math.min(width, height) / 2,\n r2: Math.max(width, height) / 2,\n r0: Math.sqrt(width * width + height * height) / 2,\n path: rectPath(x, y, width, height),\n vb: [x, y, width, height].join(' '),\n };\n};\nvar isBBoxIntersect = function (bbox1, bbox2) {\n bbox1 = box(bbox1);\n bbox2 = box(bbox2);\n return (isPointInsideBBox(bbox2, bbox1.x, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) ||\n (((bbox1.x < bbox2.x2 && bbox1.x > bbox2.x) || (bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)) &&\n ((bbox1.y < bbox2.y2 && bbox1.y > bbox2.y) || (bbox2.y < bbox1.y2 && bbox2.y > bbox1.y))));\n};\nvar bezierBBox = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(p1x)) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return box(bbox.min.x, bbox.min.y, bbox.max.x - bbox.min.x, bbox.max.y - bbox.min.y);\n};\nvar findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n var t13 = Math.pow(t1, 3);\n var t12 = Math.pow(t1, 2);\n var t2 = t * t;\n var t3 = t2 * t;\n var x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x;\n var y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y;\n var mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x);\n var my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y);\n var nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x);\n var ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y);\n var ax = t1 * p1x + t * c1x;\n var ay = t1 * p1y + t * c1y;\n var cx = t1 * c2x + t * p2x;\n var cy = t1 * c2y + t * p2y;\n var alpha = 90 - (Math.atan2(mx - nx, my - ny) * 180) / Math.PI;\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {\n x: mx,\n y: my,\n },\n n: {\n x: nx,\n y: ny,\n },\n start: {\n x: ax,\n y: ay,\n },\n end: {\n x: cx,\n y: cy,\n },\n alpha: alpha,\n };\n};\nvar interHelper = function (bez1, bez2, justCount) {\n var bbox1 = bezierBBox(bez1);\n var bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1);\n var l2 = bezlen.apply(0, bez2);\n var n1 = ~~(l1 / 8);\n var n2 = ~~(l2 / 8);\n var dots1 = [];\n var dots2 = [];\n var xy = {};\n var res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({\n x: d.x,\n y: d.y,\n t: i / n1,\n });\n }\n for (var i = 0; i < n2 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({\n x: d.x,\n y: d.y,\n t: i / n2,\n });\n }\n for (var i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i];\n var di1 = dots1[i + 1];\n var dj = dots2[j];\n var dj1 = dots2[j + 1];\n var ci = Math.abs(di1.x - di.x) < 0.001 ? 'y' : 'x';\n var cj = Math.abs(dj1.x - dj.x) < 0.001 ? 'y' : 'x';\n var is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] === is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + Math.abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t);\n var t2 = dj.t + Math.abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n // @ts-ignore\n res += 1;\n }\n else {\n // @ts-ignore\n res.push({\n x: is.x,\n y: is.y,\n t1: t1,\n t2: t2,\n });\n }\n }\n }\n }\n }\n return res;\n};\nvar interPathHelper = function (path1, path2, justCount) {\n path1 = pathToCurve(path1);\n path2 = pathToCurve(path2);\n var x1;\n var y1;\n var x2;\n var y2;\n var x1m;\n var y1m;\n var x2m;\n var y2m;\n var bez1;\n var bez2;\n var res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] === 'M') {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n }\n else {\n if (pi[0] === 'C') {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n }\n else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] === 'M') {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n }\n else {\n if (pj[0] === 'C') {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n }\n else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n // @ts-ignore\n res += intr;\n }\n else {\n // @ts-ignore\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n // @ts-ignore\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n};\nvar intersection = function (path1, path2) {\n return interPathHelper(path1, path2);\n};\nfunction decasteljau(points, t) {\n var left = [];\n var right = [];\n function recurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n }\n else {\n var middlePoints = [];\n for (var i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n if (i === points.length - 2) {\n right.push(points[i + 1]);\n }\n middlePoints[i] = [\n (1 - t) * points[i][0] + t * points[i + 1][0],\n (1 - t) * points[i][1] + t * points[i + 1][1],\n ];\n }\n recurse(middlePoints, t);\n }\n }\n if (points.length) {\n recurse(points, t);\n }\n return { left: left, right: right.reverse() };\n}\nfunction splitCurve(start, end, count) {\n var points = [[start[1], start[2]]];\n count = count || 2;\n var segments = [];\n if (end[0] === 'A') {\n points.push(end[6]);\n points.push(end[7]);\n }\n else if (end[0] === 'C') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n points.push([end[5], end[6]]);\n }\n else if (end[0] === 'S' || end[0] === 'Q') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n }\n else {\n points.push([end[1], end[2]]);\n }\n var leftSegments = points;\n var t = 1 / count;\n for (var i = 0; i < count - 1; i++) {\n var rt = t / (1 - t * i);\n var split = decasteljau(leftSegments, rt);\n segments.push(split.left);\n leftSegments = split.right;\n }\n segments.push(leftSegments);\n var result = segments.map(function (segment) {\n var cmd = [];\n if (segment.length === 4) {\n cmd.push('C');\n cmd = cmd.concat(segment[2]);\n }\n if (segment.length >= 3) {\n if (segment.length === 3) {\n cmd.push('Q');\n }\n cmd = cmd.concat(segment[1]);\n }\n if (segment.length === 2) {\n cmd.push('L');\n }\n cmd = cmd.concat(segment[segment.length - 1]);\n return cmd;\n });\n return result;\n}\nvar splitSegment = function (start, end, count) {\n if (count === 1) {\n return [[].concat(start)];\n }\n var segments = [];\n if (end[0] === 'L' || end[0] === 'C' || end[0] === 'Q') {\n segments = segments.concat(splitCurve(start, end, count));\n }\n else {\n var temp = [].concat(start);\n if (temp[0] === 'M') {\n temp[0] = 'L';\n }\n for (var i = 0; i <= count - 1; i++) {\n segments.push(temp);\n }\n }\n return segments;\n};\nvar fillPath = function (source, target) {\n if (source.length === 1) {\n return source;\n }\n var sourceLen = source.length - 1;\n var targetLen = target.length - 1;\n var ratio = sourceLen / targetLen;\n var segmentsToFill = [];\n if (source.length === 1 && source[0][0] === 'M') {\n for (var i = 0; i < targetLen - sourceLen; i++) {\n source.push(source[0]);\n }\n return source;\n }\n for (var i = 0; i < targetLen; i++) {\n var index = Math.floor(ratio * i);\n segmentsToFill[index] = (segmentsToFill[index] || 0) + 1;\n }\n var filled = segmentsToFill.reduce(function (filled, count, i) {\n if (i === sourceLen) {\n return filled.concat(source[sourceLen]);\n }\n return filled.concat(splitSegment(source[i], source[i + 1], count));\n }, []);\n filled.unshift(source[0]);\n if (target[targetLen] === 'Z' || target[targetLen] === 'z') {\n filled.push('Z');\n }\n return filled;\n};\nvar isEqual = function (obj1, obj2) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n var result = true;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(obj1, function (item, i) {\n if (item !== obj2[i]) {\n result = false;\n return false;\n }\n });\n return result;\n};\nfunction getMinDiff(del, add, modify) {\n var type = null;\n var min = modify;\n if (add < min) {\n min = add;\n type = 'add';\n }\n if (del < min) {\n min = del;\n type = 'del';\n }\n return {\n type: type,\n min: min,\n };\n}\n/*\n * https://en.wikipedia.org/wiki/Levenshtein_distance\n * 计算两条path的编辑距离\n */\nvar levenshteinDistance = function (source, target) {\n var sourceLen = source.length;\n var targetLen = target.length;\n var sourceSegment;\n var targetSegment;\n var temp = 0;\n if (sourceLen === 0 || targetLen === 0) {\n return null;\n }\n var dist = [];\n for (var i = 0; i <= sourceLen; i++) {\n dist[i] = [];\n dist[i][0] = { min: i };\n }\n for (var j = 0; j <= targetLen; j++) {\n dist[0][j] = { min: j };\n }\n for (var i = 1; i <= sourceLen; i++) {\n sourceSegment = source[i - 1];\n for (var j = 1; j <= targetLen; j++) {\n targetSegment = target[j - 1];\n if (isEqual(sourceSegment, targetSegment)) {\n temp = 0;\n }\n else {\n temp = 1;\n }\n var del = dist[i - 1][j].min + 1;\n var add = dist[i][j - 1].min + 1;\n var modify = dist[i - 1][j - 1].min + temp;\n dist[i][j] = getMinDiff(del, add, modify);\n }\n }\n return dist;\n};\nvar fillPathByDiff = function (source, target) {\n var diffMatrix = levenshteinDistance(source, target);\n var sourceLen = source.length;\n var targetLen = target.length;\n var changes = [];\n var index = 1;\n var minPos = 1;\n // 如果source和target不是完全不相等\n if (diffMatrix[sourceLen][targetLen].min !== sourceLen) {\n // 获取从source到target所需改动\n for (var i = 1; i <= sourceLen; i++) {\n var min = diffMatrix[i][i].min;\n minPos = i;\n for (var j = index; j <= targetLen; j++) {\n if (diffMatrix[i][j].min < min) {\n min = diffMatrix[i][j].min;\n minPos = j;\n }\n }\n index = minPos;\n if (diffMatrix[i][index].type) {\n changes.push({ index: i - 1, type: diffMatrix[i][index].type });\n }\n }\n // 对source进行增删path\n for (var i = changes.length - 1; i >= 0; i--) {\n index = changes[i].index;\n if (changes[i].type === 'add') {\n source.splice(index, 0, [].concat(source[index]));\n }\n else {\n source.splice(index, 1);\n }\n }\n }\n // source尾部补齐\n sourceLen = source.length;\n var diff = targetLen - sourceLen;\n if (sourceLen < targetLen) {\n for (var i = 0; i < diff; i++) {\n if (source[sourceLen - 1][0] === 'z' || source[sourceLen - 1][0] === 'Z') {\n source.splice(sourceLen - 2, 0, source[sourceLen - 2]);\n }\n else {\n source.push(source[sourceLen - 1]);\n }\n sourceLen += 1;\n }\n }\n return source;\n};\n// 将两个点均分成count个点\nfunction _splitPoints(points, former, count) {\n var result = [].concat(points);\n var index;\n var t = 1 / (count + 1);\n var formerEnd = _getSegmentPoints(former)[0];\n for (var i = 1; i <= count; i++) {\n t *= i;\n index = Math.floor(points.length * t);\n if (index === 0) {\n result.unshift([formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n }\n else {\n result.splice(index, 0, [\n formerEnd[0] * t + points[index][0] * (1 - t),\n formerEnd[1] * t + points[index][1] * (1 - t),\n ]);\n }\n }\n return result;\n}\n/*\n * 抽取pathSegment中的关键点\n * M,L,A,Q,H,V一个端点\n * Q, S抽取一个端点,一个控制点\n * C抽取一个端点,两个控制点\n */\nfunction _getSegmentPoints(segment) {\n var points = [];\n switch (segment[0]) {\n case 'M':\n points.push([segment[1], segment[2]]);\n break;\n case 'L':\n points.push([segment[1], segment[2]]);\n break;\n case 'A':\n points.push([segment[6], segment[7]]);\n break;\n case 'Q':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'T':\n points.push([segment[1], segment[2]]);\n break;\n case 'C':\n points.push([segment[5], segment[6]]);\n points.push([segment[1], segment[2]]);\n points.push([segment[3], segment[4]]);\n break;\n case 'S':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'H':\n points.push([segment[1], segment[1]]);\n break;\n case 'V':\n points.push([segment[1], segment[1]]);\n break;\n default:\n }\n return points;\n}\nvar formatPath = function (fromPath, toPath) {\n if (fromPath.length <= 1) {\n return fromPath;\n }\n var points;\n for (var i = 0; i < toPath.length; i++) {\n if (fromPath[i][0] !== toPath[i][0]) {\n // 获取fromPath的pathSegment的端点,根据toPath的指令对其改造\n points = _getSegmentPoints(fromPath[i]);\n switch (toPath[i][0]) {\n case 'M':\n fromPath[i] = ['M'].concat(points[0]);\n break;\n case 'L':\n fromPath[i] = ['L'].concat(points[0]);\n break;\n case 'A':\n fromPath[i] = [].concat(toPath[i]);\n fromPath[i][6] = points[0][0];\n fromPath[i][7] = points[0][1];\n break;\n case 'Q':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['Q'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'T':\n fromPath[i] = ['T'].concat(points[0]);\n break;\n case 'C':\n if (points.length < 3) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 2);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['C'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'S':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['S'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n default:\n fromPath[i] = toPath[i];\n }\n }\n }\n return fromPath;\n};\n\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL3BhdGguanM/YjZmYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMERBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLG1CQUFtQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUVBQXVFLFFBQVE7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxRQUFRO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQSxtREFBbUQsUUFBUTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxRQUFRO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsUUFBUTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0Isd0NBQXdDO0FBQ3hDO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMERBQU87QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQix1QkFBdUIsUUFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxRQUFRO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxRQUFRO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix1QkFBdUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZ0JBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMkJBQTJCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQyxzQkFBc0I7QUFDdEI7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixnQkFBZ0I7QUFDdkM7QUFDQTtBQUNBLCtCQUErQixnQkFBZ0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsZ0RBQWdEO0FBQzlFO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxRQUFRO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFVBQVU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDMko7QUFDM0oiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL3BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoLCBpc0FycmF5IH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgU1BBQ0VTID0gJ1xceDA5XFx4MGFcXHgwYlxceDBjXFx4MGRcXHgyMFxceGEwXFx1MTY4MFxcdTE4MGVcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwYVxcdTIwMmZcXHUyMDVmXFx1MzAwMFxcdTIwMjhcXHUyMDI5JztcbnZhciBQQVRIX0NPTU1BTkQgPSBuZXcgUmVnRXhwKFwiKFthLXpdKVtcIiArIFNQQUNFUyArIFwiLF0qKCgtP1xcXFxkKlxcXFwuP1xcXFxkKig/OmVbXFxcXC0rXT9cXFxcZCspP1tcIiArIFNQQUNFUyArIFwiXSosP1tcIiArIFNQQUNFUyArIFwiXSopKylcIiwgJ2lnJyk7XG52YXIgUEFUSF9WQUxVRVMgPSBuZXcgUmVnRXhwKFwiKC0/XFxcXGQqXFxcXC4/XFxcXGQqKD86ZVtcXFxcLStdP1xcXFxkKyk/KVtcIiArIFNQQUNFUyArIFwiXSosP1tcIiArIFNQQUNFUyArIFwiXSpcIiwgJ2lnJyk7XG4vLyBQYXJzZSBnaXZlbiBwYXRoIHN0cmluZyBpbnRvIGFuIGFycmF5IG9mIGFycmF5cyBvZiBwYXRoIHNlZ21lbnRzXG52YXIgcGFyc2VQYXRoU3RyaW5nID0gZnVuY3Rpb24gKHBhdGhTdHJpbmcpIHtcbiAgICBpZiAoIXBhdGhTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChpc0FycmF5KHBhdGhTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiBwYXRoU3RyaW5nO1xuICAgIH1cbiAgICB2YXIgcGFyYW1Db3VudHMgPSB7XG4gICAgICAgIGE6IDcsXG4gICAgICAgIGM6IDYsXG4gICAgICAgIG86IDIsXG4gICAgICAgIGg6IDEsXG4gICAgICAgIGw6IDIsXG4gICAgICAgIG06IDIsXG4gICAgICAgIHI6IDQsXG4gICAgICAgIHE6IDQsXG4gICAgICAgIHM6IDQsXG4gICAgICAgIHQ6IDIsXG4gICAgICAgIHY6IDEsXG4gICAgICAgIHU6IDMsXG4gICAgICAgIHo6IDAsXG4gICAgfTtcbiAgICB2YXIgZGF0YSA9IFtdO1xuICAgIFN0cmluZyhwYXRoU3RyaW5nKS5yZXBsYWNlKFBBVEhfQ09NTUFORCwgZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgICAgdmFyIHBhcmFtcyA9IFtdO1xuICAgICAgICB2YXIgbmFtZSA9IGIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgYy5yZXBsYWNlKFBBVEhfVkFMVUVTLCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgYiAmJiBwYXJhbXMucHVzaCgrYik7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ20nICYmIHBhcmFtcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBkYXRhLnB1c2goW2JdLmNvbmNhdChwYXJhbXMuc3BsaWNlKDAsIDIpKSk7XG4gICAgICAgICAgICBuYW1lID0gJ2wnO1xuICAgICAgICAgICAgYiA9IGIgPT09ICdtJyA/ICdsJyA6ICdMJztcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZSA9PT0gJ28nICYmIHBhcmFtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGRhdGEucHVzaChbYiwgcGFyYW1zWzBdXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUgPT09ICdyJykge1xuICAgICAgICAgICAgZGF0YS5wdXNoKFtiXS5jb25jYXQocGFyYW1zKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB3aGlsZSAocGFyYW1zLmxlbmd0aCA+PSBwYXJhbUNvdW50c1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIGRhdGEucHVzaChbYl0uY29uY2F0KHBhcmFtcy5zcGxpY2UoMCwgcGFyYW1Db3VudHNbbmFtZV0pKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJhbUNvdW50c1tuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGhTdHJpbmc7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG59O1xuLy8gaHR0cDovL3NjaGVwZXJzLmNjL2dldHRpbmctdG8tdGhlLXBvaW50XG52YXIgY2F0bXVsbFJvbVRvQmV6aWVyID0gZnVuY3Rpb24gKGNycCwgeikge1xuICAgIHZhciBkID0gW107XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGZvciAodmFyIGkgPSAwLCBpTGVuID0gY3JwLmxlbmd0aDsgaUxlbiAtIDIgKiAheiA+IGk7IGkgKz0gMikge1xuICAgICAgICB2YXIgcCA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB4OiArY3JwW2kgLSAyXSxcbiAgICAgICAgICAgICAgICB5OiArY3JwW2kgLSAxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgeDogK2NycFtpXSxcbiAgICAgICAgICAgICAgICB5OiArY3JwW2kgKyAxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgeDogK2NycFtpICsgMl0sXG4gICAgICAgICAgICAgICAgeTogK2NycFtpICsgM10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHg6ICtjcnBbaSArIDRdLFxuICAgICAgICAgICAgICAgIHk6ICtjcnBbaSArIDVdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKHopIHtcbiAgICAgICAgICAgIGlmICghaSkge1xuICAgICAgICAgICAgICAgIHBbMF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6ICtjcnBbaUxlbiAtIDJdLFxuICAgICAgICAgICAgICAgICAgICB5OiArY3JwW2lMZW4gLSAxXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaUxlbiAtIDQgPT09IGkpIHtcbiAgICAgICAgICAgICAgICBwWzNdID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiArY3JwWzBdLFxuICAgICAgICAgICAgICAgICAgICB5OiArY3JwWzFdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpTGVuIC0gMiA9PT0gaSkge1xuICAgICAgICAgICAgICAgIHBbMl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6ICtjcnBbMF0sXG4gICAgICAgICAgICAgICAgICAgIHk6ICtjcnBbMV0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBwWzNdID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiArY3JwWzJdLFxuICAgICAgICAgICAgICAgICAgICB5OiArY3JwWzNdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoaUxlbiAtIDQgPT09IGkpIHtcbiAgICAgICAgICAgICAgICBwWzNdID0gcFsyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFpKSB7XG4gICAgICAgICAgICAgICAgcFswXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogK2NycFtpXSxcbiAgICAgICAgICAgICAgICAgICAgeTogK2NycFtpICsgMV0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkLnB1c2goW1xuICAgICAgICAgICAgJ0MnLFxuICAgICAgICAgICAgKC1wWzBdLnggKyA2ICogcFsxXS54ICsgcFsyXS54KSAvIDYsXG4gICAgICAgICAgICAoLXBbMF0ueSArIDYgKiBwWzFdLnkgKyBwWzJdLnkpIC8gNixcbiAgICAgICAgICAgIChwWzFdLnggKyA2ICogcFsyXS54IC0gcFszXS54KSAvIDYsXG4gICAgICAgICAgICAocFsxXS55ICsgNiAqIHBbMl0ueSAtIHBbM10ueSkgLyA2LFxuICAgICAgICAgICAgcFsyXS54LFxuICAgICAgICAgICAgcFsyXS55LFxuICAgICAgICBdKTtcbiAgICB9XG4gICAgcmV0dXJuIGQ7XG59O1xudmFyIGVsbGlwc2VQYXRoID0gZnVuY3Rpb24gKHgsIHksIHJ4LCByeSwgYSkge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBpZiAoYSA9PT0gbnVsbCAmJiByeSA9PT0gbnVsbCkge1xuICAgICAgICByeSA9IHJ4O1xuICAgIH1cbiAgICB4ID0gK3g7XG4gICAgeSA9ICt5O1xuICAgIHJ4ID0gK3J4O1xuICAgIHJ5ID0gK3J5O1xuICAgIGlmIChhICE9PSBudWxsKSB7XG4gICAgICAgIHZhciByYWQgPSBNYXRoLlBJIC8gMTgwO1xuICAgICAgICB2YXIgeDEgPSB4ICsgcnggKiBNYXRoLmNvcygtcnkgKiByYWQpO1xuICAgICAgICB2YXIgeDIgPSB4ICsgcnggKiBNYXRoLmNvcygtYSAqIHJhZCk7XG4gICAgICAgIHZhciB5MSA9IHkgKyByeCAqIE1hdGguc2luKC1yeSAqIHJhZCk7XG4gICAgICAgIHZhciB5MiA9IHkgKyByeCAqIE1hdGguc2luKC1hICogcmFkKTtcbiAgICAgICAgcmVzID0gW1xuICAgICAgICAgICAgWydNJywgeDEsIHkxXSxcbiAgICAgICAgICAgIFsnQScsIHJ4LCByeCwgMCwgKyhhIC0gcnkgPiAxODApLCAwLCB4MiwgeTJdLFxuICAgICAgICBdO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzID0gW1snTScsIHgsIHldLCBbJ20nLCAwLCAtcnldLCBbJ2EnLCByeCwgcnksIDAsIDEsIDEsIDAsIDIgKiByeV0sIFsnYScsIHJ4LCByeSwgMCwgMSwgMSwgMCwgLTIgKiByeV0sIFsneiddXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG52YXIgcGF0aFRvQWJzb2x1dGUgPSBmdW5jdGlvbiAocGF0aEFycmF5KSB7XG4gICAgcGF0aEFycmF5ID0gcGFyc2VQYXRoU3RyaW5nKHBhdGhBcnJheSk7XG4gICAgaWYgKCFwYXRoQXJyYXkgfHwgIXBhdGhBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtbJ00nLCAwLCAwXV07XG4gICAgfVxuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgeCA9IDA7XG4gICAgdmFyIHkgPSAwO1xuICAgIHZhciBteCA9IDA7XG4gICAgdmFyIG15ID0gMDtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIHZhciBwYTA7XG4gICAgdmFyIGRvdHM7XG4gICAgaWYgKHBhdGhBcnJheVswXVswXSA9PT0gJ00nKSB7XG4gICAgICAgIHggPSArcGF0aEFycmF5WzBdWzFdO1xuICAgICAgICB5ID0gK3BhdGhBcnJheVswXVsyXTtcbiAgICAgICAgbXggPSB4O1xuICAgICAgICBteSA9IHk7XG4gICAgICAgIHN0YXJ0Kys7XG4gICAgICAgIHJlc1swXSA9IFsnTScsIHgsIHldO1xuICAgIH1cbiAgICB2YXIgY3J6ID0gcGF0aEFycmF5Lmxlbmd0aCA9PT0gMyAmJlxuICAgICAgICBwYXRoQXJyYXlbMF1bMF0gPT09ICdNJyAmJlxuICAgICAgICBwYXRoQXJyYXlbMV1bMF0udG9VcHBlckNhc2UoKSA9PT0gJ1InICYmXG4gICAgICAgIHBhdGhBcnJheVsyXVswXS50b1VwcGVyQ2FzZSgpID09PSAnWic7XG4gICAgZm9yICh2YXIgciA9IHZvaWQgMCwgcGEgPSB2b2lkIDAsIGkgPSBzdGFydCwgaWkgPSBwYXRoQXJyYXkubGVuZ3RoOyBpIDwgaWk7IGkrKykge1xuICAgICAgICByZXMucHVzaCgociA9IFtdKSk7XG4gICAgICAgIHBhID0gcGF0aEFycmF5W2ldO1xuICAgICAgICBwYTAgPSBwYVswXTtcbiAgICAgICAgaWYgKHBhMCAhPT0gcGEwLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgICAgICAgIHJbMF0gPSBwYTAudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHN3aXRjaCAoclswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgICAgICByWzFdID0gcGFbMV07XG4gICAgICAgICAgICAgICAgICAgIHJbMl0gPSBwYVsyXTtcbiAgICAgICAgICAgICAgICAgICAgclszXSA9IHBhWzNdO1xuICAgICAgICAgICAgICAgICAgICByWzRdID0gcGFbNF07XG4gICAgICAgICAgICAgICAgICAgIHJbNV0gPSBwYVs1XTtcbiAgICAgICAgICAgICAgICAgICAgcls2XSA9ICtwYVs2XSArIHg7XG4gICAgICAgICAgICAgICAgICAgIHJbN10gPSArcGFbN10gKyB5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgICAgICAgICAgclsxXSA9ICtwYVsxXSArIHk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgICAgICByWzFdID0gK3BhWzFdICsgeDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnUic6XG4gICAgICAgICAgICAgICAgICAgIGRvdHMgPSBbeCwgeV0uY29uY2F0KHBhLnNsaWNlKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDIsIGpqID0gZG90cy5sZW5ndGg7IGogPCBqajsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb3RzW2pdID0gK2RvdHNbal0gKyB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgZG90c1srK2pdID0gK2RvdHNbal0gKyB5O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzID0gcmVzLmNvbmNhdChjYXRtdWxsUm9tVG9CZXppZXIoZG90cywgY3J6KSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ08nOlxuICAgICAgICAgICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIGRvdHMgPSBlbGxpcHNlUGF0aCh4LCB5LCBwYVsxXSwgcGFbMl0pO1xuICAgICAgICAgICAgICAgICAgICBkb3RzLnB1c2goZG90c1swXSk7XG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoZG90cyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoZWxsaXBzZVBhdGgoeCwgeSwgcGFbMV0sIHBhWzJdLCBwYVszXSkpO1xuICAgICAgICAgICAgICAgICAgICByID0gWydVJ10uY29uY2F0KHJlc1tyZXMubGVuZ3RoIC0gMV0uc2xpY2UoLTIpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIG14ID0gK3BhWzFdICsgeDtcbiAgICAgICAgICAgICAgICAgICAgbXkgPSArcGFbMl0gKyB5O1xuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gZm9yIGxpbnRcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMSwgamogPSBwYS5sZW5ndGg7IGogPCBqajsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByW2pdID0gK3BhW2pdICsgKGogJSAyID8geCA6IHkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGEwID09PSAnUicpIHtcbiAgICAgICAgICAgIGRvdHMgPSBbeCwgeV0uY29uY2F0KHBhLnNsaWNlKDEpKTtcbiAgICAgICAgICAgIHJlcy5wb3AoKTtcbiAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoY2F0bXVsbFJvbVRvQmV6aWVyKGRvdHMsIGNyeikpO1xuICAgICAgICAgICAgciA9IFsnUiddLmNvbmNhdChwYS5zbGljZSgtMikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBhMCA9PT0gJ08nKSB7XG4gICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICBkb3RzID0gZWxsaXBzZVBhdGgoeCwgeSwgcGFbMV0sIHBhWzJdKTtcbiAgICAgICAgICAgIGRvdHMucHVzaChkb3RzWzBdKTtcbiAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoZG90cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGEwID09PSAnVScpIHtcbiAgICAgICAgICAgIHJlcy5wb3AoKTtcbiAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoZWxsaXBzZVBhdGgoeCwgeSwgcGFbMV0sIHBhWzJdLCBwYVszXSkpO1xuICAgICAgICAgICAgciA9IFsnVSddLmNvbmNhdChyZXNbcmVzLmxlbmd0aCAtIDFdLnNsaWNlKC0yKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKHZhciBrID0gMCwga2sgPSBwYS5sZW5ndGg7IGsgPCBrazsgaysrKSB7XG4gICAgICAgICAgICAgICAgcltrXSA9IHBhW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhMCA9IHBhMC50b1VwcGVyQ2FzZSgpO1xuICAgICAgICBpZiAocGEwICE9PSAnTycpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoclswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ1onOlxuICAgICAgICAgICAgICAgICAgICB4ID0gK214O1xuICAgICAgICAgICAgICAgICAgICB5ID0gK215O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICAgICAgeCA9IHJbMV07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1YnOlxuICAgICAgICAgICAgICAgICAgICB5ID0gclsxXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIG14ID0gcltyLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgICAgICAgICBteSA9IHJbci5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZvciBsaW50XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgeCA9IHJbci5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgICAgICAgICAgeSA9IHJbci5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBsMmMgPSBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICByZXR1cm4gW3gxLCB5MSwgeDIsIHkyLCB4MiwgeTJdO1xufTtcbnZhciBxMmMgPSBmdW5jdGlvbiAoeDEsIHkxLCBheCwgYXksIHgyLCB5Mikge1xuICAgIHZhciBfMTMgPSAxIC8gMztcbiAgICB2YXIgXzIzID0gMiAvIDM7XG4gICAgcmV0dXJuIFtfMTMgKiB4MSArIF8yMyAqIGF4LCBfMTMgKiB5MSArIF8yMyAqIGF5LCBfMTMgKiB4MiArIF8yMyAqIGF4LCBfMTMgKiB5MiArIF8yMyAqIGF5LCB4MiwgeTJdO1xufTtcbnZhciBhMmMgPSBmdW5jdGlvbiAoeDEsIHkxLCByeCwgcnksIGFuZ2xlLCBsYXJnZV9hcmNfZmxhZywgc3dlZXBfZmxhZywgeDIsIHkyLCByZWN1cnNpdmUpIHtcbiAgICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvZiB3aGVyZSB0aGlzIG1hdGggY2FtZSBmcm9tIHZpc2l0OlxuICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ltcGxub3RlLmh0bWwjQXJjSW1wbGVtZW50YXRpb25Ob3Rlc1xuICAgIGlmIChyeCA9PT0gcnkpIHtcbiAgICAgICAgcnggKz0gMTtcbiAgICB9XG4gICAgdmFyIF8xMjAgPSAoTWF0aC5QSSAqIDEyMCkgLyAxODA7XG4gICAgdmFyIHJhZCA9IChNYXRoLlBJIC8gMTgwKSAqICgrYW5nbGUgfHwgMCk7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHZhciB4eTtcbiAgICB2YXIgZjE7XG4gICAgdmFyIGYyO1xuICAgIHZhciBjeDtcbiAgICB2YXIgY3k7XG4gICAgdmFyIHJvdGF0ZSA9IGZ1bmN0aW9uICh4LCB5LCByYWQpIHtcbiAgICAgICAgdmFyIFggPSB4ICogTWF0aC5jb3MocmFkKSAtIHkgKiBNYXRoLnNpbihyYWQpO1xuICAgICAgICB2YXIgWSA9IHggKiBNYXRoLnNpbihyYWQpICsgeSAqIE1hdGguY29zKHJhZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBYLFxuICAgICAgICAgICAgeTogWSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGlmICghcmVjdXJzaXZlKSB7XG4gICAgICAgIHh5ID0gcm90YXRlKHgxLCB5MSwgLXJhZCk7XG4gICAgICAgIHgxID0geHkueDtcbiAgICAgICAgeTEgPSB4eS55O1xuICAgICAgICB4eSA9IHJvdGF0ZSh4MiwgeTIsIC1yYWQpO1xuICAgICAgICB4MiA9IHh5Lng7XG4gICAgICAgIHkyID0geHkueTtcbiAgICAgICAgaWYgKHgxID09PSB4MiAmJiB5MSA9PT0geTIpIHtcbiAgICAgICAgICAgIC8vIOiLpeW8p+eahOi1t+Wni+eCueWSjOe7iOeCuemHjeWPoOWImemUmeW8gOS4gOeCuVxuICAgICAgICAgICAgeDIgKz0gMTtcbiAgICAgICAgICAgIHkyICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc3QgY29zID0gTWF0aC5jb3MoTWF0aC5QSSAvIDE4MCAqIGFuZ2xlKTtcbiAgICAgICAgLy8gY29uc3Qgc2luID0gTWF0aC5zaW4oTWF0aC5QSSAvIDE4MCAqIGFuZ2xlKTtcbiAgICAgICAgdmFyIHggPSAoeDEgLSB4MikgLyAyO1xuICAgICAgICB2YXIgeSA9ICh5MSAtIHkyKSAvIDI7XG4gICAgICAgIHZhciBoID0gKHggKiB4KSAvIChyeCAqIHJ4KSArICh5ICogeSkgLyAocnkgKiByeSk7XG4gICAgICAgIGlmIChoID4gMSkge1xuICAgICAgICAgICAgaCA9IE1hdGguc3FydChoKTtcbiAgICAgICAgICAgIHJ4ID0gaCAqIHJ4O1xuICAgICAgICAgICAgcnkgPSBoICogcnk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJ4MiA9IHJ4ICogcng7XG4gICAgICAgIHZhciByeTIgPSByeSAqIHJ5O1xuICAgICAgICB2YXIgayA9IChsYXJnZV9hcmNfZmxhZyA9PT0gc3dlZXBfZmxhZyA/IC0xIDogMSkgKlxuICAgICAgICAgICAgTWF0aC5zcXJ0KE1hdGguYWJzKChyeDIgKiByeTIgLSByeDIgKiB5ICogeSAtIHJ5MiAqIHggKiB4KSAvIChyeDIgKiB5ICogeSArIHJ5MiAqIHggKiB4KSkpO1xuICAgICAgICBjeCA9IChrICogcnggKiB5KSAvIHJ5ICsgKHgxICsgeDIpIC8gMjtcbiAgICAgICAgY3kgPSAoayAqIC1yeSAqIHgpIC8gcnggKyAoeTEgKyB5MikgLyAyO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGYxID0gTWF0aC5hc2luKCgoeTEgLSBjeSkgLyByeSkudG9GaXhlZCg5KSk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZjIgPSBNYXRoLmFzaW4oKCh5MiAtIGN5KSAvIHJ5KS50b0ZpeGVkKDkpKTtcbiAgICAgICAgZjEgPSB4MSA8IGN4ID8gTWF0aC5QSSAtIGYxIDogZjE7XG4gICAgICAgIGYyID0geDIgPCBjeCA/IE1hdGguUEkgLSBmMiA6IGYyO1xuICAgICAgICBmMSA8IDAgJiYgKGYxID0gTWF0aC5QSSAqIDIgKyBmMSk7XG4gICAgICAgIGYyIDwgMCAmJiAoZjIgPSBNYXRoLlBJICogMiArIGYyKTtcbiAgICAgICAgaWYgKHN3ZWVwX2ZsYWcgJiYgZjEgPiBmMikge1xuICAgICAgICAgICAgZjEgPSBmMSAtIE1hdGguUEkgKiAyO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc3dlZXBfZmxhZyAmJiBmMiA+IGYxKSB7XG4gICAgICAgICAgICBmMiA9IGYyIC0gTWF0aC5QSSAqIDI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGYxID0gcmVjdXJzaXZlWzBdO1xuICAgICAgICBmMiA9IHJlY3Vyc2l2ZVsxXTtcbiAgICAgICAgY3ggPSByZWN1cnNpdmVbMl07XG4gICAgICAgIGN5ID0gcmVjdXJzaXZlWzNdO1xuICAgIH1cbiAgICB2YXIgZGYgPSBmMiAtIGYxO1xuICAgIGlmIChNYXRoLmFicyhkZikgPiBfMTIwKSB7XG4gICAgICAgIHZhciBmMm9sZCA9IGYyO1xuICAgICAgICB2YXIgeDJvbGQgPSB4MjtcbiAgICAgICAgdmFyIHkyb2xkID0geTI7XG4gICAgICAgIGYyID0gZjEgKyBfMTIwICogKHN3ZWVwX2ZsYWcgJiYgZjIgPiBmMSA/IDEgOiAtMSk7XG4gICAgICAgIHgyID0gY3ggKyByeCAqIE1hdGguY29zKGYyKTtcbiAgICAgICAgeTIgPSBjeSArIHJ5ICogTWF0aC5zaW4oZjIpO1xuICAgICAgICByZXMgPSBhMmMoeDIsIHkyLCByeCwgcnksIGFuZ2xlLCAwLCBzd2VlcF9mbGFnLCB4Mm9sZCwgeTJvbGQsIFtmMiwgZjJvbGQsIGN4LCBjeV0pO1xuICAgIH1cbiAgICBkZiA9IGYyIC0gZjE7XG4gICAgdmFyIGMxID0gTWF0aC5jb3MoZjEpO1xuICAgIHZhciBzMSA9IE1hdGguc2luKGYxKTtcbiAgICB2YXIgYzIgPSBNYXRoLmNvcyhmMik7XG4gICAgdmFyIHMyID0gTWF0aC5zaW4oZjIpO1xuICAgIHZhciB0ID0gTWF0aC50YW4oZGYgLyA0KTtcbiAgICB2YXIgaHggPSAoNCAvIDMpICogcnggKiB0O1xuICAgIHZhciBoeSA9ICg0IC8gMykgKiByeSAqIHQ7XG4gICAgdmFyIG0xID0gW3gxLCB5MV07XG4gICAgdmFyIG0yID0gW3gxICsgaHggKiBzMSwgeTEgLSBoeSAqIGMxXTtcbiAgICB2YXIgbTMgPSBbeDIgKyBoeCAqIHMyLCB5MiAtIGh5ICogYzJdO1xuICAgIHZhciBtNCA9IFt4MiwgeTJdO1xuICAgIG0yWzBdID0gMiAqIG0xWzBdIC0gbTJbMF07XG4gICAgbTJbMV0gPSAyICogbTFbMV0gLSBtMlsxXTtcbiAgICBpZiAocmVjdXJzaXZlKSB7XG4gICAgICAgIHJldHVybiBbbTIsIG0zLCBtNF0uY29uY2F0KHJlcyk7XG4gICAgfVxuICAgIHJlcyA9IFttMiwgbTMsIG00XS5jb25jYXQocmVzKS5qb2luKCkuc3BsaXQoJywnKTtcbiAgICB2YXIgbmV3cmVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGlpID0gcmVzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgICAgbmV3cmVzW2ldID0gaSAlIDIgPyByb3RhdGUocmVzW2kgLSAxXSwgcmVzW2ldLCByYWQpLnkgOiByb3RhdGUocmVzW2ldLCByZXNbaSArIDFdLCByYWQpLng7XG4gICAgfVxuICAgIHJldHVybiBuZXdyZXM7XG59O1xudmFyIHBhdGhUb0N1cnZlID0gZnVuY3Rpb24gKHBhdGgsIHBhdGgyKSB7XG4gICAgdmFyIHAgPSBwYXRoVG9BYnNvbHV0ZShwYXRoKTtcbiAgICB2YXIgcDIgPSBwYXRoMiAmJiBwYXRoVG9BYnNvbHV0ZShwYXRoMik7XG4gICAgdmFyIGF0dHJzID0ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICBieDogMCxcbiAgICAgICAgYnk6IDAsXG4gICAgICAgIFg6IDAsXG4gICAgICAgIFk6IDAsXG4gICAgICAgIHF4OiBudWxsLFxuICAgICAgICBxeTogbnVsbCxcbiAgICB9O1xuICAgIHZhciBhdHRyczIgPSB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIGJ4OiAwLFxuICAgICAgICBieTogMCxcbiAgICAgICAgWDogMCxcbiAgICAgICAgWTogMCxcbiAgICAgICAgcXg6IG51bGwsXG4gICAgICAgIHF5OiBudWxsLFxuICAgIH07XG4gICAgdmFyIHBjb21zMSA9IFtdOyAvLyBwYXRoIGNvbW1hbmRzIG9mIG9yaWdpbmFsIHBhdGggcFxuICAgIHZhciBwY29tczIgPSBbXTsgLy8gcGF0aCBjb21tYW5kcyBvZiBvcmlnaW5hbCBwYXRoIHAyXG4gICAgdmFyIHBmaXJzdCA9ICcnOyAvLyB0ZW1wb3JhcnkgaG9sZGVyIGZvciBvcmlnaW5hbCBwYXRoIGNvbW1hbmRcbiAgICB2YXIgcGNvbSA9ICcnOyAvLyBob2xkZXIgZm9yIHByZXZpb3VzIHBhdGggY29tbWFuZCBvZiBvcmlnaW5hbCBwYXRoXG4gICAgdmFyIGlpO1xuICAgIHZhciBwcm9jZXNzUGF0aCA9IGZ1bmN0aW9uIChwYXRoLCBkLCBwY29tKSB7XG4gICAgICAgIHZhciBueDtcbiAgICAgICAgdmFyIG55O1xuICAgICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbJ0MnLCBkLngsIGQueSwgZC54LCBkLnksIGQueCwgZC55XTtcbiAgICAgICAgfVxuICAgICAgICAhKHBhdGhbMF0gaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBUOiAxLFxuICAgICAgICAgICAgICAgIFE6IDEsXG4gICAgICAgICAgICB9KSAmJiAoZC5xeCA9IGQucXkgPSBudWxsKTtcbiAgICAgICAgc3dpdGNoIChwYXRoWzBdKSB7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBkLlggPSBwYXRoWzFdO1xuICAgICAgICAgICAgICAgIGQuWSA9IHBhdGhbMl07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KGEyYy5hcHBseSgwLCBbZC54LCBkLnldLmNvbmNhdChwYXRoLnNsaWNlKDEpKSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUyc6XG4gICAgICAgICAgICAgICAgaWYgKHBjb20gPT09ICdDJyB8fCBwY29tID09PSAnUycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSW4gXCJTXCIgY2FzZSB3ZSBoYXZlIHRvIHRha2UgaW50byBhY2NvdW50LCBpZiB0aGUgcHJldmlvdXMgY29tbWFuZCBpcyBDL1MuXG4gICAgICAgICAgICAgICAgICAgIG54ID0gZC54ICogMiAtIGQuYng7IC8vIEFuZCByZWZsZWN0IHRoZSBwcmV2aW91c1xuICAgICAgICAgICAgICAgICAgICBueSA9IGQueSAqIDIgLSBkLmJ5OyAvLyBjb21tYW5kJ3MgY29udHJvbCBwb2ludCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwb2ludC5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9yIHNvbWUgZWxzZSBvciBub3RoaW5nXG4gICAgICAgICAgICAgICAgICAgIG54ID0gZC54O1xuICAgICAgICAgICAgICAgICAgICBueSA9IGQueTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQycsIG54LCBueV0uY29uY2F0KHBhdGguc2xpY2UoMSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgaWYgKHBjb20gPT09ICdRJyB8fCBwY29tID09PSAnVCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSW4gXCJUXCIgY2FzZSB3ZSBoYXZlIHRvIHRha2UgaW50byBhY2NvdW50LCBpZiB0aGUgcHJldmlvdXMgY29tbWFuZCBpcyBRL1QuXG4gICAgICAgICAgICAgICAgICAgIGQucXggPSBkLnggKiAyIC0gZC5xeDsgLy8gQW5kIG1ha2UgYSByZWZsZWN0aW9uIHNpbWlsYXJcbiAgICAgICAgICAgICAgICAgICAgZC5xeSA9IGQueSAqIDIgLSBkLnF5OyAvLyB0byBjYXNlIFwiU1wiLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb3Igc29tZXRoaW5nIGVsc2Ugb3Igbm90aGluZ1xuICAgICAgICAgICAgICAgICAgICBkLnF4ID0gZC54O1xuICAgICAgICAgICAgICAgICAgICBkLnF5ID0gZC55O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KHEyYyhkLngsIGQueSwgZC5xeCwgZC5xeSwgcGF0aFsxXSwgcGF0aFsyXSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgZC5xeCA9IHBhdGhbMV07XG4gICAgICAgICAgICAgICAgZC5xeSA9IHBhdGhbMl07XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChxMmMoZC54LCBkLnksIHBhdGhbMV0sIHBhdGhbMl0sIHBhdGhbM10sIHBhdGhbNF0pKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgIHBhdGggPSBbJ0MnXS5jb25jYXQobDJjKGQueCwgZC55LCBwYXRoWzFdLCBwYXRoWzJdKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KGwyYyhkLngsIGQueSwgcGF0aFsxXSwgZC55KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KGwyYyhkLngsIGQueSwgZC54LCBwYXRoWzFdKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KGwyYyhkLngsIGQueSwgZC5YLCBkLlkpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfTtcbiAgICB2YXIgZml4QXJjID0gZnVuY3Rpb24gKHBwLCBpKSB7XG4gICAgICAgIGlmIChwcFtpXS5sZW5ndGggPiA3KSB7XG4gICAgICAgICAgICBwcFtpXS5zaGlmdCgpO1xuICAgICAgICAgICAgdmFyIHBpID0gcHBbaV07XG4gICAgICAgICAgICB3aGlsZSAocGkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcGNvbXMxW2ldID0gJ0EnOyAvLyBpZiBjcmVhdGVkIG11bHRpcGxlIEM6cywgdGhlaXIgb3JpZ2luYWwgc2VnIGlzIHNhdmVkXG4gICAgICAgICAgICAgICAgcDIgJiYgKHBjb21zMltpXSA9ICdBJyk7IC8vIHRoZSBzYW1lIGFzIGFib3ZlXG4gICAgICAgICAgICAgICAgcHAuc3BsaWNlKGkrKywgMCwgWydDJ10uY29uY2F0KHBpLnNwbGljZSgwLCA2KSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHAuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgaWkgPSBNYXRoLm1heChwLmxlbmd0aCwgKHAyICYmIHAyLmxlbmd0aCkgfHwgMCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBmaXhNID0gZnVuY3Rpb24gKHBhdGgxLCBwYXRoMiwgYTEsIGEyLCBpKSB7XG4gICAgICAgIGlmIChwYXRoMSAmJiBwYXRoMiAmJiBwYXRoMVtpXVswXSA9PT0gJ00nICYmIHBhdGgyW2ldWzBdICE9PSAnTScpIHtcbiAgICAgICAgICAgIHBhdGgyLnNwbGljZShpLCAwLCBbJ00nLCBhMi54LCBhMi55XSk7XG4gICAgICAgICAgICBhMS5ieCA9IDA7XG4gICAgICAgICAgICBhMS5ieSA9IDA7XG4gICAgICAgICAgICBhMS54ID0gcGF0aDFbaV1bMV07XG4gICAgICAgICAgICBhMS55ID0gcGF0aDFbaV1bMl07XG4gICAgICAgICAgICBpaSA9IE1hdGgubWF4KHAubGVuZ3RoLCAocDIgJiYgcDIubGVuZ3RoKSB8fCAwKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgaWkgPSBNYXRoLm1heChwLmxlbmd0aCwgKHAyICYmIHAyLmxlbmd0aCkgfHwgMCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpaTsgaSsrKSB7XG4gICAgICAgIHBbaV0gJiYgKHBmaXJzdCA9IHBbaV1bMF0pOyAvLyBzYXZlIGN1cnJlbnQgcGF0aCBjb21tYW5kXG4gICAgICAgIGlmIChwZmlyc3QgIT09ICdDJykge1xuICAgICAgICAgICAgLy8gQyBpcyBub3Qgc2F2ZWQgeWV0LCBiZWNhdXNlIGl0IG1heSBiZSByZXN1bHQgb2YgY29udmVyc2lvblxuICAgICAgICAgICAgcGNvbXMxW2ldID0gcGZpcnN0OyAvLyBTYXZlIGN1cnJlbnQgcGF0aCBjb21tYW5kXG4gICAgICAgICAgICBpICYmIChwY29tID0gcGNvbXMxW2kgLSAxXSk7IC8vIEdldCBwcmV2aW91cyBwYXRoIGNvbW1hbmQgcGNvbVxuICAgICAgICB9XG4gICAgICAgIHBbaV0gPSBwcm9jZXNzUGF0aChwW2ldLCBhdHRycywgcGNvbSk7IC8vIFByZXZpb3VzIHBhdGggY29tbWFuZCBpcyBpbnB1dHRlZCB0byBwcm9jZXNzUGF0aFxuICAgICAgICBpZiAocGNvbXMxW2ldICE9PSAnQScgJiYgcGZpcnN0ID09PSAnQycpXG4gICAgICAgICAgICBwY29tczFbaV0gPSAnQyc7IC8vIEEgaXMgdGhlIG9ubHkgY29tbWFuZFxuICAgICAgICAvLyB3aGljaCBtYXkgcHJvZHVjZSBtdWx0aXBsZSBDOnNcbiAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBDIGlzIGFsc28gQyBpbiBvcmlnaW5hbCBwYXRoXG4gICAgICAgIGZpeEFyYyhwLCBpKTsgLy8gZml4QXJjIGFkZHMgYWxzbyB0aGUgcmlnaHQgYW1vdW50IG9mIEE6cyB0byBwY29tczFcbiAgICAgICAgaWYgKHAyKSB7XG4gICAgICAgICAgICAvLyB0aGUgc2FtZSBwcm9jZWR1cmVzIGlzIGRvbmUgdG8gcDJcbiAgICAgICAgICAgIHAyW2ldICYmIChwZmlyc3QgPSBwMltpXVswXSk7XG4gICAgICAgICAgICBpZiAocGZpcnN0ICE9PSAnQycpIHtcbiAgICAgICAgICAgICAgICBwY29tczJbaV0gPSBwZmlyc3Q7XG4gICAgICAgICAgICAgICAgaSAmJiAocGNvbSA9IHBjb21zMltpIC0gMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcDJbaV0gPSBwcm9jZXNzUGF0aChwMltpXSwgYXR0cnMyLCBwY29tKTtcbiAgICAgICAgICAgIGlmIChwY29tczJbaV0gIT09ICdBJyAmJiBwZmlyc3QgPT09ICdDJykge1xuICAgICAgICAgICAgICAgIHBjb21zMltpXSA9ICdDJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpeEFyYyhwMiwgaSk7XG4gICAgICAgIH1cbiAgICAgICAgZml4TShwLCBwMiwgYXR0cnMsIGF0dHJzMiwgaSk7XG4gICAgICAgIGZpeE0ocDIsIHAsIGF0dHJzMiwgYXR0cnMsIGkpO1xuICAgICAgICB2YXIgc2VnID0gcFtpXTtcbiAgICAgICAgdmFyIHNlZzIgPSBwMiAmJiBwMltpXTtcbiAgICAgICAgdmFyIHNlZ2xlbiA9IHNlZy5sZW5ndGg7XG4gICAgICAgIHZhciBzZWcybGVuID0gcDIgJiYgc2VnMi5sZW5ndGg7XG4gICAgICAgIGF0dHJzLnggPSBzZWdbc2VnbGVuIC0gMl07XG4gICAgICAgIGF0dHJzLnkgPSBzZWdbc2VnbGVuIC0gMV07XG4gICAgICAgIGF0dHJzLmJ4ID0gcGFyc2VGbG9hdChzZWdbc2VnbGVuIC0gNF0pIHx8IGF0dHJzLng7XG4gICAgICAgIGF0dHJzLmJ5ID0gcGFyc2VGbG9hdChzZWdbc2VnbGVuIC0gM10pIHx8IGF0dHJzLnk7XG4gICAgICAgIGF0dHJzMi5ieCA9IHAyICYmIChwYXJzZUZsb2F0KHNlZzJbc2VnMmxlbiAtIDRdKSB8fCBhdHRyczIueCk7XG4gICAgICAgIGF0dHJzMi5ieSA9IHAyICYmIChwYXJzZUZsb2F0KHNlZzJbc2VnMmxlbiAtIDNdKSB8fCBhdHRyczIueSk7XG4gICAgICAgIGF0dHJzMi54ID0gcDIgJiYgc2VnMltzZWcybGVuIC0gMl07XG4gICAgICAgIGF0dHJzMi55ID0gcDIgJiYgc2VnMltzZWcybGVuIC0gMV07XG4gICAgfVxuICAgIHJldHVybiBwMiA/IFtwLCBwMl0gOiBwO1xufTtcbnZhciBwMnMgPSAvLD8oW2Etel0pLD8vZ2k7XG52YXIgcGFyc2VQYXRoQXJyYXkgPSBmdW5jdGlvbiAocGF0aCkge1xuICAgIHJldHVybiBwYXRoLmpvaW4oJywnKS5yZXBsYWNlKHAycywgJyQxJyk7XG59O1xudmFyIGJhc2UzID0gZnVuY3Rpb24gKHQsIHAxLCBwMiwgcDMsIHA0KSB7XG4gICAgdmFyIHQxID0gLTMgKiBwMSArIDkgKiBwMiAtIDkgKiBwMyArIDMgKiBwNDtcbiAgICB2YXIgdDIgPSB0ICogdDEgKyA2ICogcDEgLSAxMiAqIHAyICsgNiAqIHAzO1xuICAgIHJldHVybiB0ICogdDIgLSAzICogcDEgKyAzICogcDI7XG59O1xudmFyIGJlemxlbiA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHopIHtcbiAgICBpZiAoeiA9PT0gbnVsbCkge1xuICAgICAgICB6ID0gMTtcbiAgICB9XG4gICAgeiA9IHogPiAxID8gMSA6IHogPCAwID8gMCA6IHo7XG4gICAgdmFyIHoyID0geiAvIDI7XG4gICAgdmFyIG4gPSAxMjtcbiAgICB2YXIgVHZhbHVlcyA9IFtcbiAgICAgICAgLTAuMTI1MixcbiAgICAgICAgMC4xMjUyLFxuICAgICAgICAtMC4zNjc4LFxuICAgICAgICAwLjM2NzgsXG4gICAgICAgIC0wLjU4NzMsXG4gICAgICAgIDAuNTg3MyxcbiAgICAgICAgLTAuNzY5OSxcbiAgICAgICAgMC43Njk5LFxuICAgICAgICAtMC45MDQxLFxuICAgICAgICAwLjkwNDEsXG4gICAgICAgIC0wLjk4MTYsXG4gICAgICAgIDAuOTgxNixcbiAgICBdO1xuICAgIHZhciBDdmFsdWVzID0gWzAuMjQ5MSwgMC4yNDkxLCAwLjIzMzUsIDAuMjMzNSwgMC4yMDMyLCAwLjIwMzIsIDAuMTYwMSwgMC4xNjAxLCAwLjEwNjksIDAuMTA2OSwgMC4wNDcyLCAwLjA0NzJdO1xuICAgIHZhciBzdW0gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIHZhciBjdCA9IHoyICogVHZhbHVlc1tpXSArIHoyO1xuICAgICAgICB2YXIgeGJhc2UgPSBiYXNlMyhjdCwgeDEsIHgyLCB4MywgeDQpO1xuICAgICAgICB2YXIgeWJhc2UgPSBiYXNlMyhjdCwgeTEsIHkyLCB5MywgeTQpO1xuICAgICAgICB2YXIgY29tYiA9IHhiYXNlICogeGJhc2UgKyB5YmFzZSAqIHliYXNlO1xuICAgICAgICBzdW0gKz0gQ3ZhbHVlc1tpXSAqIE1hdGguc3FydChjb21iKTtcbiAgICB9XG4gICAgcmV0dXJuIHoyICogc3VtO1xufTtcbnZhciBjdXJ2ZURpbSA9IGZ1bmN0aW9uICh4MCwgeTAsIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgICB2YXIgdHZhbHVlcyA9IFtdO1xuICAgIHZhciBib3VuZHMgPSBbW10sIFtdXTtcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICB2YXIgYztcbiAgICB2YXIgdDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7ICsraSkge1xuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgYiA9IDYgKiB4MCAtIDEyICogeDEgKyA2ICogeDI7XG4gICAgICAgICAgICBhID0gLTMgKiB4MCArIDkgKiB4MSAtIDkgKiB4MiArIDMgKiB4MztcbiAgICAgICAgICAgIGMgPSAzICogeDEgLSAzICogeDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBiID0gNiAqIHkwIC0gMTIgKiB5MSArIDYgKiB5MjtcbiAgICAgICAgICAgIGEgPSAtMyAqIHkwICsgOSAqIHkxIC0gOSAqIHkyICsgMyAqIHkzO1xuICAgICAgICAgICAgYyA9IDMgKiB5MSAtIDMgKiB5MDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTWF0aC5hYnMoYSkgPCAxZS0xMikge1xuICAgICAgICAgICAgaWYgKE1hdGguYWJzKGIpIDwgMWUtMTIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQgPSAtYyAvIGI7XG4gICAgICAgICAgICBpZiAodCA+IDAgJiYgdCA8IDEpIHtcbiAgICAgICAgICAgICAgICB0dmFsdWVzLnB1c2godCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYjJhYyA9IGIgKiBiIC0gNCAqIGMgKiBhO1xuICAgICAgICB2YXIgc3FydGIyYWMgPSBNYXRoLnNxcnQoYjJhYyk7XG4gICAgICAgIGlmIChiMmFjIDwgMCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHQxID0gKC1iICsgc3FydGIyYWMpIC8gKDIgKiBhKTtcbiAgICAgICAgaWYgKHQxID4gMCAmJiB0MSA8IDEpIHtcbiAgICAgICAgICAgIHR2YWx1ZXMucHVzaCh0MSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHQyID0gKC1iIC0gc3FydGIyYWMpIC8gKDIgKiBhKTtcbiAgICAgICAgaWYgKHQyID4gMCAmJiB0MiA8IDEpIHtcbiAgICAgICAgICAgIHR2YWx1ZXMucHVzaCh0Mik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGogPSB0dmFsdWVzLmxlbmd0aDtcbiAgICB2YXIgamxlbiA9IGo7XG4gICAgdmFyIG10O1xuICAgIHdoaWxlIChqLS0pIHtcbiAgICAgICAgdCA9IHR2YWx1ZXNbal07XG4gICAgICAgIG10ID0gMSAtIHQ7XG4gICAgICAgIGJvdW5kc1swXVtqXSA9IG10ICogbXQgKiBtdCAqIHgwICsgMyAqIG10ICogbXQgKiB0ICogeDEgKyAzICogbXQgKiB0ICogdCAqIHgyICsgdCAqIHQgKiB0ICogeDM7XG4gICAgICAgIGJvdW5kc1sxXVtqXSA9IG10ICogbXQgKiBtdCAqIHkwICsgMyAqIG10ICogbXQgKiB0ICogeTEgKyAzICogbXQgKiB0ICogdCAqIHkyICsgdCAqIHQgKiB0ICogeTM7XG4gICAgfVxuICAgIGJvdW5kc1swXVtqbGVuXSA9IHgwO1xuICAgIGJvdW5kc1sxXVtqbGVuXSA9IHkwO1xuICAgIGJvdW5kc1swXVtqbGVuICsgMV0gPSB4MztcbiAgICBib3VuZHNbMV1bamxlbiArIDFdID0geTM7XG4gICAgYm91bmRzWzBdLmxlbmd0aCA9IGJvdW5kc1sxXS5sZW5ndGggPSBqbGVuICsgMjtcbiAgICByZXR1cm4ge1xuICAgICAgICBtaW46IHtcbiAgICAgICAgICAgIHg6IE1hdGgubWluLmFwcGx5KDAsIGJvdW5kc1swXSksXG4gICAgICAgICAgICB5OiBNYXRoLm1pbi5hcHBseSgwLCBib3VuZHNbMV0pLFxuICAgICAgICB9LFxuICAgICAgICBtYXg6IHtcbiAgICAgICAgICAgIHg6IE1hdGgubWF4LmFwcGx5KDAsIGJvdW5kc1swXSksXG4gICAgICAgICAgICB5OiBNYXRoLm1heC5hcHBseSgwLCBib3VuZHNbMV0pLFxuICAgICAgICB9LFxuICAgIH07XG59O1xudmFyIGludGVyc2VjdCA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQpIHtcbiAgICBpZiAoTWF0aC5tYXgoeDEsIHgyKSA8IE1hdGgubWluKHgzLCB4NCkgfHxcbiAgICAgICAgTWF0aC5taW4oeDEsIHgyKSA+IE1hdGgubWF4KHgzLCB4NCkgfHxcbiAgICAgICAgTWF0aC5tYXgoeTEsIHkyKSA8IE1hdGgubWluKHkzLCB5NCkgfHxcbiAgICAgICAgTWF0aC5taW4oeTEsIHkyKSA+IE1hdGgubWF4KHkzLCB5NCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbnggPSAoeDEgKiB5MiAtIHkxICogeDIpICogKHgzIC0geDQpIC0gKHgxIC0geDIpICogKHgzICogeTQgLSB5MyAqIHg0KTtcbiAgICB2YXIgbnkgPSAoeDEgKiB5MiAtIHkxICogeDIpICogKHkzIC0geTQpIC0gKHkxIC0geTIpICogKHgzICogeTQgLSB5MyAqIHg0KTtcbiAgICB2YXIgZGVub21pbmF0b3IgPSAoeDEgLSB4MikgKiAoeTMgLSB5NCkgLSAoeTEgLSB5MikgKiAoeDMgLSB4NCk7XG4gICAgaWYgKCFkZW5vbWluYXRvcikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBweCA9IG54IC8gZGVub21pbmF0b3I7XG4gICAgdmFyIHB5ID0gbnkgLyBkZW5vbWluYXRvcjtcbiAgICB2YXIgcHgyID0gK3B4LnRvRml4ZWQoMik7XG4gICAgdmFyIHB5MiA9ICtweS50b0ZpeGVkKDIpO1xuICAgIGlmIChweDIgPCArTWF0aC5taW4oeDEsIHgyKS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB4MiA+ICtNYXRoLm1heCh4MSwgeDIpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHgyIDwgK01hdGgubWluKHgzLCB4NCkudG9GaXhlZCgyKSB8fFxuICAgICAgICBweDIgPiArTWF0aC5tYXgoeDMsIHg0KS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB5MiA8ICtNYXRoLm1pbih5MSwgeTIpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHkyID4gK01hdGgubWF4KHkxLCB5MikudG9GaXhlZCgyKSB8fFxuICAgICAgICBweTIgPCArTWF0aC5taW4oeTMsIHk0KS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB5MiA+ICtNYXRoLm1heCh5MywgeTQpLnRvRml4ZWQoMikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBweCxcbiAgICAgICAgeTogcHksXG4gICAgfTtcbn07XG52YXIgaXNQb2ludEluc2lkZUJCb3ggPSBmdW5jdGlvbiAoYmJveCwgeCwgeSkge1xuICAgIHJldHVybiB4ID49IGJib3gueCAmJiB4IDw9IGJib3gueCArIGJib3gud2lkdGggJiYgeSA+PSBiYm94LnkgJiYgeSA8PSBiYm94LnkgKyBiYm94LmhlaWdodDtcbn07XG52YXIgcmVjdFBhdGggPSBmdW5jdGlvbiAoeCwgeSwgdywgaCwgcikge1xuICAgIGlmIChyKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbJ00nLCAreCArICtyLCB5XSxcbiAgICAgICAgICAgIFsnbCcsIHcgLSByICogMiwgMF0sXG4gICAgICAgICAgICBbJ2EnLCByLCByLCAwLCAwLCAxLCByLCByXSxcbiAgICAgICAgICAgIFsnbCcsIDAsIGggLSByICogMl0sXG4gICAgICAgICAgICBbJ2EnLCByLCByLCAwLCAwLCAxLCAtciwgcl0sXG4gICAgICAgICAgICBbJ2wnLCByICogMiAtIHcsIDBdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgLXIsIC1yXSxcbiAgICAgICAgICAgIFsnbCcsIDAsIHIgKiAyIC0gaF0sXG4gICAgICAgICAgICBbJ2EnLCByLCByLCAwLCAwLCAxLCByLCAtcl0sXG4gICAgICAgICAgICBbJ3onXSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgdmFyIHJlcyA9IFtbJ00nLCB4LCB5XSwgWydsJywgdywgMF0sIFsnbCcsIDAsIGhdLCBbJ2wnLCAtdywgMF0sIFsneiddXTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmVzLnBhcnNlUGF0aEFycmF5ID0gcGFyc2VQYXRoQXJyYXk7XG4gICAgcmV0dXJuIHJlcztcbn07XG52YXIgYm94ID0gZnVuY3Rpb24gKHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICBpZiAoeCA9PT0gbnVsbCkge1xuICAgICAgICB4ID0geSA9IHdpZHRoID0gaGVpZ2h0ID0gMDtcbiAgICB9XG4gICAgaWYgKHkgPT09IG51bGwpIHtcbiAgICAgICAgeSA9IHgueTtcbiAgICAgICAgd2lkdGggPSB4LndpZHRoO1xuICAgICAgICBoZWlnaHQgPSB4LmhlaWdodDtcbiAgICAgICAgeCA9IHgueDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICB3OiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIGg6IGhlaWdodCxcbiAgICAgICAgeDI6IHggKyB3aWR0aCxcbiAgICAgICAgeTI6IHkgKyBoZWlnaHQsXG4gICAgICAgIGN4OiB4ICsgd2lkdGggLyAyLFxuICAgICAgICBjeTogeSArIGhlaWdodCAvIDIsXG4gICAgICAgIHIxOiBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KSAvIDIsXG4gICAgICAgIHIyOiBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KSAvIDIsXG4gICAgICAgIHIwOiBNYXRoLnNxcnQod2lkdGggKiB3aWR0aCArIGhlaWdodCAqIGhlaWdodCkgLyAyLFxuICAgICAgICBwYXRoOiByZWN0UGF0aCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSxcbiAgICAgICAgdmI6IFt4LCB5LCB3aWR0aCwgaGVpZ2h0XS5qb2luKCcgJyksXG4gICAgfTtcbn07XG52YXIgaXNCQm94SW50ZXJzZWN0ID0gZnVuY3Rpb24gKGJib3gxLCBiYm94Mikge1xuICAgIGJib3gxID0gYm94KGJib3gxKTtcbiAgICBiYm94MiA9IGJveChiYm94Mik7XG4gICAgcmV0dXJuIChpc1BvaW50SW5zaWRlQkJveChiYm94MiwgYmJveDEueCwgYmJveDEueSkgfHxcbiAgICAgICAgaXNQb2ludEluc2lkZUJCb3goYmJveDIsIGJib3gxLngyLCBiYm94MS55KSB8fFxuICAgICAgICBpc1BvaW50SW5zaWRlQkJveChiYm94MiwgYmJveDEueCwgYmJveDEueTIpIHx8XG4gICAgICAgIGlzUG9pbnRJbnNpZGVCQm94KGJib3gyLCBiYm94MS54MiwgYmJveDEueTIpIHx8XG4gICAgICAgIGlzUG9pbnRJbnNpZGVCQm94KGJib3gxLCBiYm94Mi54LCBiYm94Mi55KSB8fFxuICAgICAgICBpc1BvaW50SW5zaWRlQkJveChiYm94MSwgYmJveDIueDIsIGJib3gyLnkpIHx8XG4gICAgICAgIGlzUG9pbnRJbnNpZGVCQm94KGJib3gxLCBiYm94Mi54LCBiYm94Mi55MikgfHxcbiAgICAgICAgaXNQb2ludEluc2lkZUJCb3goYmJveDEsIGJib3gyLngyLCBiYm94Mi55MikgfHxcbiAgICAgICAgKCgoYmJveDEueCA8IGJib3gyLngyICYmIGJib3gxLnggPiBiYm94Mi54KSB8fCAoYmJveDIueCA8IGJib3gxLngyICYmIGJib3gyLnggPiBiYm94MS54KSkgJiZcbiAgICAgICAgICAgICgoYmJveDEueSA8IGJib3gyLnkyICYmIGJib3gxLnkgPiBiYm94Mi55KSB8fCAoYmJveDIueSA8IGJib3gxLnkyICYmIGJib3gyLnkgPiBiYm94MS55KSkpKTtcbn07XG52YXIgYmV6aWVyQkJveCA9IGZ1bmN0aW9uIChwMXgsIHAxeSwgYzF4LCBjMXksIGMyeCwgYzJ5LCBwMngsIHAyeSkge1xuICAgIGlmICghaXNBcnJheShwMXgpKSB7XG4gICAgICAgIHAxeCA9IFtwMXgsIHAxeSwgYzF4LCBjMXksIGMyeCwgYzJ5LCBwMngsIHAyeV07XG4gICAgfVxuICAgIHZhciBiYm94ID0gY3VydmVEaW0uYXBwbHkobnVsbCwgcDF4KTtcbiAgICByZXR1cm4gYm94KGJib3gubWluLngsIGJib3gubWluLnksIGJib3gubWF4LnggLSBiYm94Lm1pbi54LCBiYm94Lm1heC55IC0gYmJveC5taW4ueSk7XG59O1xudmFyIGZpbmREb3RzQXRTZWdtZW50ID0gZnVuY3Rpb24gKHAxeCwgcDF5LCBjMXgsIGMxeSwgYzJ4LCBjMnksIHAyeCwgcDJ5LCB0KSB7XG4gICAgdmFyIHQxID0gMSAtIHQ7XG4gICAgdmFyIHQxMyA9IE1hdGgucG93KHQxLCAzKTtcbiAgICB2YXIgdDEyID0gTWF0aC5wb3codDEsIDIpO1xuICAgIHZhciB0MiA9IHQgKiB0O1xuICAgIHZhciB0MyA9IHQyICogdDtcbiAgICB2YXIgeCA9IHQxMyAqIHAxeCArIHQxMiAqIDMgKiB0ICogYzF4ICsgdDEgKiAzICogdCAqIHQgKiBjMnggKyB0MyAqIHAyeDtcbiAgICB2YXIgeSA9IHQxMyAqIHAxeSArIHQxMiAqIDMgKiB0ICogYzF5ICsgdDEgKiAzICogdCAqIHQgKiBjMnkgKyB0MyAqIHAyeTtcbiAgICB2YXIgbXggPSBwMXggKyAyICogdCAqIChjMXggLSBwMXgpICsgdDIgKiAoYzJ4IC0gMiAqIGMxeCArIHAxeCk7XG4gICAgdmFyIG15ID0gcDF5ICsgMiAqIHQgKiAoYzF5IC0gcDF5KSArIHQyICogKGMyeSAtIDIgKiBjMXkgKyBwMXkpO1xuICAgIHZhciBueCA9IGMxeCArIDIgKiB0ICogKGMyeCAtIGMxeCkgKyB0MiAqIChwMnggLSAyICogYzJ4ICsgYzF4KTtcbiAgICB2YXIgbnkgPSBjMXkgKyAyICogdCAqIChjMnkgLSBjMXkpICsgdDIgKiAocDJ5IC0gMiAqIGMyeSArIGMxeSk7XG4gICAgdmFyIGF4ID0gdDEgKiBwMXggKyB0ICogYzF4O1xuICAgIHZhciBheSA9IHQxICogcDF5ICsgdCAqIGMxeTtcbiAgICB2YXIgY3ggPSB0MSAqIGMyeCArIHQgKiBwMng7XG4gICAgdmFyIGN5ID0gdDEgKiBjMnkgKyB0ICogcDJ5O1xuICAgIHZhciBhbHBoYSA9IDkwIC0gKE1hdGguYXRhbjIobXggLSBueCwgbXkgLSBueSkgKiAxODApIC8gTWF0aC5QSTtcbiAgICAvLyAobXggPiBueCB8fCBteSA8IG55KSAmJiAoYWxwaGEgKz0gMTgwKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICBtOiB7XG4gICAgICAgICAgICB4OiBteCxcbiAgICAgICAgICAgIHk6IG15LFxuICAgICAgICB9LFxuICAgICAgICBuOiB7XG4gICAgICAgICAgICB4OiBueCxcbiAgICAgICAgICAgIHk6IG55LFxuICAgICAgICB9LFxuICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgeDogYXgsXG4gICAgICAgICAgICB5OiBheSxcbiAgICAgICAgfSxcbiAgICAgICAgZW5kOiB7XG4gICAgICAgICAgICB4OiBjeCxcbiAgICAgICAgICAgIHk6IGN5LFxuICAgICAgICB9LFxuICAgICAgICBhbHBoYTogYWxwaGEsXG4gICAgfTtcbn07XG52YXIgaW50ZXJIZWxwZXIgPSBmdW5jdGlvbiAoYmV6MSwgYmV6MiwganVzdENvdW50KSB7XG4gICAgdmFyIGJib3gxID0gYmV6aWVyQkJveChiZXoxKTtcbiAgICB2YXIgYmJveDIgPSBiZXppZXJCQm94KGJlejIpO1xuICAgIGlmICghaXNCQm94SW50ZXJzZWN0KGJib3gxLCBiYm94MikpIHtcbiAgICAgICAgcmV0dXJuIGp1c3RDb3VudCA/IDAgOiBbXTtcbiAgICB9XG4gICAgdmFyIGwxID0gYmV6bGVuLmFwcGx5KDAsIGJlejEpO1xuICAgIHZhciBsMiA9IGJlemxlbi5hcHBseSgwLCBiZXoyKTtcbiAgICB2YXIgbjEgPSB+fihsMSAvIDgpO1xuICAgIHZhciBuMiA9IH5+KGwyIC8gOCk7XG4gICAgdmFyIGRvdHMxID0gW107XG4gICAgdmFyIGRvdHMyID0gW107XG4gICAgdmFyIHh5ID0ge307XG4gICAgdmFyIHJlcyA9IGp1c3RDb3VudCA/IDAgOiBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4xICsgMTsgaSsrKSB7XG4gICAgICAgIHZhciBkID0gZmluZERvdHNBdFNlZ21lbnQuYXBwbHkoMCwgYmV6MS5jb25jYXQoaSAvIG4xKSk7XG4gICAgICAgIGRvdHMxLnB1c2goe1xuICAgICAgICAgICAgeDogZC54LFxuICAgICAgICAgICAgeTogZC55LFxuICAgICAgICAgICAgdDogaSAvIG4xLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuMiArIDE7IGkrKykge1xuICAgICAgICB2YXIgZCA9IGZpbmREb3RzQXRTZWdtZW50LmFwcGx5KDAsIGJlejIuY29uY2F0KGkgLyBuMikpO1xuICAgICAgICBkb3RzMi5wdXNoKHtcbiAgICAgICAgICAgIHg6IGQueCxcbiAgICAgICAgICAgIHk6IGQueSxcbiAgICAgICAgICAgIHQ6IGkgLyBuMixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjE7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG4yOyBqKyspIHtcbiAgICAgICAgICAgIHZhciBkaSA9IGRvdHMxW2ldO1xuICAgICAgICAgICAgdmFyIGRpMSA9IGRvdHMxW2kgKyAxXTtcbiAgICAgICAgICAgIHZhciBkaiA9IGRvdHMyW2pdO1xuICAgICAgICAgICAgdmFyIGRqMSA9IGRvdHMyW2ogKyAxXTtcbiAgICAgICAgICAgIHZhciBjaSA9IE1hdGguYWJzKGRpMS54IC0gZGkueCkgPCAwLjAwMSA/ICd5JyA6ICd4JztcbiAgICAgICAgICAgIHZhciBjaiA9IE1hdGguYWJzKGRqMS54IC0gZGoueCkgPCAwLjAwMSA/ICd5JyA6ICd4JztcbiAgICAgICAgICAgIHZhciBpcyA9IGludGVyc2VjdChkaS54LCBkaS55LCBkaTEueCwgZGkxLnksIGRqLngsIGRqLnksIGRqMS54LCBkajEueSk7XG4gICAgICAgICAgICBpZiAoaXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoeHlbaXMueC50b0ZpeGVkKDQpXSA9PT0gaXMueS50b0ZpeGVkKDQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4eVtpcy54LnRvRml4ZWQoNCldID0gaXMueS50b0ZpeGVkKDQpO1xuICAgICAgICAgICAgICAgIHZhciB0MSA9IGRpLnQgKyBNYXRoLmFicygoaXNbY2ldIC0gZGlbY2ldKSAvIChkaTFbY2ldIC0gZGlbY2ldKSkgKiAoZGkxLnQgLSBkaS50KTtcbiAgICAgICAgICAgICAgICB2YXIgdDIgPSBkai50ICsgTWF0aC5hYnMoKGlzW2NqXSAtIGRqW2NqXSkgLyAoZGoxW2NqXSAtIGRqW2NqXSkpICogKGRqMS50IC0gZGoudCk7XG4gICAgICAgICAgICAgICAgaWYgKHQxID49IDAgJiYgdDEgPD0gMSAmJiB0MiA+PSAwICYmIHQyIDw9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGp1c3RDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaXMueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBpcy55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQxOiB0MSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0MjogdDIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBpbnRlclBhdGhIZWxwZXIgPSBmdW5jdGlvbiAocGF0aDEsIHBhdGgyLCBqdXN0Q291bnQpIHtcbiAgICBwYXRoMSA9IHBhdGhUb0N1cnZlKHBhdGgxKTtcbiAgICBwYXRoMiA9IHBhdGhUb0N1cnZlKHBhdGgyKTtcbiAgICB2YXIgeDE7XG4gICAgdmFyIHkxO1xuICAgIHZhciB4MjtcbiAgICB2YXIgeTI7XG4gICAgdmFyIHgxbTtcbiAgICB2YXIgeTFtO1xuICAgIHZhciB4Mm07XG4gICAgdmFyIHkybTtcbiAgICB2YXIgYmV6MTtcbiAgICB2YXIgYmV6MjtcbiAgICB2YXIgcmVzID0ganVzdENvdW50ID8gMCA6IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHBhdGgxLmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgICAgdmFyIHBpID0gcGF0aDFbaV07XG4gICAgICAgIGlmIChwaVswXSA9PT0gJ00nKSB7XG4gICAgICAgICAgICB4MSA9IHgxbSA9IHBpWzFdO1xuICAgICAgICAgICAgeTEgPSB5MW0gPSBwaVsyXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwaVswXSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgYmV6MSA9IFt4MSwgeTFdLmNvbmNhdChwaS5zbGljZSgxKSk7XG4gICAgICAgICAgICAgICAgeDEgPSBiZXoxWzZdO1xuICAgICAgICAgICAgICAgIHkxID0gYmV6MVs3XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJlejEgPSBbeDEsIHkxLCB4MSwgeTEsIHgxbSwgeTFtLCB4MW0sIHkxbV07XG4gICAgICAgICAgICAgICAgeDEgPSB4MW07XG4gICAgICAgICAgICAgICAgeTEgPSB5MW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMCwgamogPSBwYXRoMi5sZW5ndGg7IGogPCBqajsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBqID0gcGF0aDJbal07XG4gICAgICAgICAgICAgICAgaWYgKHBqWzBdID09PSAnTScpIHtcbiAgICAgICAgICAgICAgICAgICAgeDIgPSB4Mm0gPSBwalsxXTtcbiAgICAgICAgICAgICAgICAgICAgeTIgPSB5Mm0gPSBwalsyXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwalswXSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXoyID0gW3gyLCB5Ml0uY29uY2F0KHBqLnNsaWNlKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHgyID0gYmV6Mls2XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkyID0gYmV6Mls3XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlejIgPSBbeDIsIHkyLCB4MiwgeTIsIHgybSwgeTJtLCB4Mm0sIHkybV07XG4gICAgICAgICAgICAgICAgICAgICAgICB4MiA9IHgybTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkyID0geTJtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnRyID0gaW50ZXJIZWxwZXIoYmV6MSwgYmV6MiwganVzdENvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGp1c3RDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IGludHI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMCwga2sgPSBpbnRyLmxlbmd0aDsgayA8IGtrOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLnNlZ21lbnQxID0gaTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLnNlZ21lbnQyID0gajtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLmJlejEgPSBiZXoxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJba10uYmV6MiA9IGJlejI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGludHIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59O1xudmFyIGludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChwYXRoMSwgcGF0aDIpIHtcbiAgICByZXR1cm4gaW50ZXJQYXRoSGVscGVyKHBhdGgxLCBwYXRoMik7XG59O1xuZnVuY3Rpb24gZGVjYXN0ZWxqYXUocG9pbnRzLCB0KSB7XG4gICAgdmFyIGxlZnQgPSBbXTtcbiAgICB2YXIgcmlnaHQgPSBbXTtcbiAgICBmdW5jdGlvbiByZWN1cnNlKHBvaW50cywgdCkge1xuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgbGVmdC5wdXNoKHBvaW50c1swXSk7XG4gICAgICAgICAgICByaWdodC5wdXNoKHBvaW50c1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbWlkZGxlUG9pbnRzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0LnB1c2gocG9pbnRzWzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IHBvaW50cy5sZW5ndGggLSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0LnB1c2gocG9pbnRzW2kgKyAxXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1pZGRsZVBvaW50c1tpXSA9IFtcbiAgICAgICAgICAgICAgICAgICAgKDEgLSB0KSAqIHBvaW50c1tpXVswXSArIHQgKiBwb2ludHNbaSArIDFdWzBdLFxuICAgICAgICAgICAgICAgICAgICAoMSAtIHQpICogcG9pbnRzW2ldWzFdICsgdCAqIHBvaW50c1tpICsgMV1bMV0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlY3Vyc2UobWlkZGxlUG9pbnRzLCB0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZWN1cnNlKHBvaW50cywgdCk7XG4gICAgfVxuICAgIHJldHVybiB7IGxlZnQ6IGxlZnQsIHJpZ2h0OiByaWdodC5yZXZlcnNlKCkgfTtcbn1cbmZ1bmN0aW9uIHNwbGl0Q3VydmUoc3RhcnQsIGVuZCwgY291bnQpIHtcbiAgICB2YXIgcG9pbnRzID0gW1tzdGFydFsxXSwgc3RhcnRbMl1dXTtcbiAgICBjb3VudCA9IGNvdW50IHx8IDI7XG4gICAgdmFyIHNlZ21lbnRzID0gW107XG4gICAgaWYgKGVuZFswXSA9PT0gJ0EnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKGVuZFs2XSk7XG4gICAgICAgIHBvaW50cy5wdXNoKGVuZFs3XSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGVuZFswXSA9PT0gJ0MnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzNdLCBlbmRbNF1dKTtcbiAgICAgICAgcG9pbnRzLnB1c2goW2VuZFs1XSwgZW5kWzZdXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGVuZFswXSA9PT0gJ1MnIHx8IGVuZFswXSA9PT0gJ1EnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzNdLCBlbmRbNF1dKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgIH1cbiAgICB2YXIgbGVmdFNlZ21lbnRzID0gcG9pbnRzO1xuICAgIHZhciB0ID0gMSAvIGNvdW50O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICAgICAgdmFyIHJ0ID0gdCAvICgxIC0gdCAqIGkpO1xuICAgICAgICB2YXIgc3BsaXQgPSBkZWNhc3RlbGphdShsZWZ0U2VnbWVudHMsIHJ0KTtcbiAgICAgICAgc2VnbWVudHMucHVzaChzcGxpdC5sZWZ0KTtcbiAgICAgICAgbGVmdFNlZ21lbnRzID0gc3BsaXQucmlnaHQ7XG4gICAgfVxuICAgIHNlZ21lbnRzLnB1c2gobGVmdFNlZ21lbnRzKTtcbiAgICB2YXIgcmVzdWx0ID0gc2VnbWVudHMubWFwKGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gICAgICAgIHZhciBjbWQgPSBbXTtcbiAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSA0KSB7XG4gICAgICAgICAgICBjbWQucHVzaCgnQycpO1xuICAgICAgICAgICAgY21kID0gY21kLmNvbmNhdChzZWdtZW50WzJdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPj0gMykge1xuICAgICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICAgICAgY21kLnB1c2goJ1EnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNtZCA9IGNtZC5jb25jYXQoc2VnbWVudFsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBjbWQucHVzaCgnTCcpO1xuICAgICAgICB9XG4gICAgICAgIGNtZCA9IGNtZC5jb25jYXQoc2VnbWVudFtzZWdtZW50Lmxlbmd0aCAtIDFdKTtcbiAgICAgICAgcmV0dXJuIGNtZDtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxudmFyIHNwbGl0U2VnbWVudCA9IGZ1bmN0aW9uIChzdGFydCwgZW5kLCBjb3VudCkge1xuICAgIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gW1tdLmNvbmNhdChzdGFydCldO1xuICAgIH1cbiAgICB2YXIgc2VnbWVudHMgPSBbXTtcbiAgICBpZiAoZW5kWzBdID09PSAnTCcgfHwgZW5kWzBdID09PSAnQycgfHwgZW5kWzBdID09PSAnUScpIHtcbiAgICAgICAgc2VnbWVudHMgPSBzZWdtZW50cy5jb25jYXQoc3BsaXRDdXJ2ZShzdGFydCwgZW5kLCBjb3VudCkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHRlbXAgPSBbXS5jb25jYXQoc3RhcnQpO1xuICAgICAgICBpZiAodGVtcFswXSA9PT0gJ00nKSB7XG4gICAgICAgICAgICB0ZW1wWzBdID0gJ0wnO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IGNvdW50IC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBzZWdtZW50cy5wdXNoKHRlbXApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzZWdtZW50cztcbn07XG52YXIgZmlsbFBhdGggPSBmdW5jdGlvbiAoc291cmNlLCB0YXJnZXQpIHtcbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH1cbiAgICB2YXIgc291cmNlTGVuID0gc291cmNlLmxlbmd0aCAtIDE7XG4gICAgdmFyIHRhcmdldExlbiA9IHRhcmdldC5sZW5ndGggLSAxO1xuICAgIHZhciByYXRpbyA9IHNvdXJjZUxlbiAvIHRhcmdldExlbjtcbiAgICB2YXIgc2VnbWVudHNUb0ZpbGwgPSBbXTtcbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMSAmJiBzb3VyY2VbMF1bMF0gPT09ICdNJykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldExlbiAtIHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgICAgICBzb3VyY2UucHVzaChzb3VyY2VbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFyZ2V0TGVuOyBpKyspIHtcbiAgICAgICAgdmFyIGluZGV4ID0gTWF0aC5mbG9vcihyYXRpbyAqIGkpO1xuICAgICAgICBzZWdtZW50c1RvRmlsbFtpbmRleF0gPSAoc2VnbWVudHNUb0ZpbGxbaW5kZXhdIHx8IDApICsgMTtcbiAgICB9XG4gICAgdmFyIGZpbGxlZCA9IHNlZ21lbnRzVG9GaWxsLnJlZHVjZShmdW5jdGlvbiAoZmlsbGVkLCBjb3VudCwgaSkge1xuICAgICAgICBpZiAoaSA9PT0gc291cmNlTGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsbGVkLmNvbmNhdChzb3VyY2Vbc291cmNlTGVuXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGxlZC5jb25jYXQoc3BsaXRTZWdtZW50KHNvdXJjZVtpXSwgc291cmNlW2kgKyAxXSwgY291bnQpKTtcbiAgICB9LCBbXSk7XG4gICAgZmlsbGVkLnVuc2hpZnQoc291cmNlWzBdKTtcbiAgICBpZiAodGFyZ2V0W3RhcmdldExlbl0gPT09ICdaJyB8fCB0YXJnZXRbdGFyZ2V0TGVuXSA9PT0gJ3onKSB7XG4gICAgICAgIGZpbGxlZC5wdXNoKCdaJyk7XG4gICAgfVxuICAgIHJldHVybiBmaWxsZWQ7XG59O1xudmFyIGlzRXF1YWwgPSBmdW5jdGlvbiAob2JqMSwgb2JqMikge1xuICAgIGlmIChvYmoxLmxlbmd0aCAhPT0gb2JqMi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICBlYWNoKG9iajEsIGZ1bmN0aW9uIChpdGVtLCBpKSB7XG4gICAgICAgIGlmIChpdGVtICE9PSBvYmoyW2ldKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuZnVuY3Rpb24gZ2V0TWluRGlmZihkZWwsIGFkZCwgbW9kaWZ5KSB7XG4gICAgdmFyIHR5cGUgPSBudWxsO1xuICAgIHZhciBtaW4gPSBtb2RpZnk7XG4gICAgaWYgKGFkZCA8IG1pbikge1xuICAgICAgICBtaW4gPSBhZGQ7XG4gICAgICAgIHR5cGUgPSAnYWRkJztcbiAgICB9XG4gICAgaWYgKGRlbCA8IG1pbikge1xuICAgICAgICBtaW4gPSBkZWw7XG4gICAgICAgIHR5cGUgPSAnZGVsJztcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgbWluOiBtaW4sXG4gICAgfTtcbn1cbi8qXG4gKiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXZlbnNodGVpbl9kaXN0YW5jZVxuICog6K6h566X5Lik5p2hcGF0aOeahOe8lui+kei3neemu1xuICovXG52YXIgbGV2ZW5zaHRlaW5EaXN0YW5jZSA9IGZ1bmN0aW9uIChzb3VyY2UsIHRhcmdldCkge1xuICAgIHZhciBzb3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoO1xuICAgIHZhciB0YXJnZXRMZW4gPSB0YXJnZXQubGVuZ3RoO1xuICAgIHZhciBzb3VyY2VTZWdtZW50O1xuICAgIHZhciB0YXJnZXRTZWdtZW50O1xuICAgIHZhciB0ZW1wID0gMDtcbiAgICBpZiAoc291cmNlTGVuID09PSAwIHx8IHRhcmdldExlbiA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGRpc3QgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBzb3VyY2VMZW47IGkrKykge1xuICAgICAgICBkaXN0W2ldID0gW107XG4gICAgICAgIGRpc3RbaV1bMF0gPSB7IG1pbjogaSB9O1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSB0YXJnZXRMZW47IGorKykge1xuICAgICAgICBkaXN0WzBdW2pdID0geyBtaW46IGogfTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc291cmNlTGVuOyBpKyspIHtcbiAgICAgICAgc291cmNlU2VnbWVudCA9IHNvdXJjZVtpIC0gMV07XG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDw9IHRhcmdldExlbjsgaisrKSB7XG4gICAgICAgICAgICB0YXJnZXRTZWdtZW50ID0gdGFyZ2V0W2ogLSAxXTtcbiAgICAgICAgICAgIGlmIChpc0VxdWFsKHNvdXJjZVNlZ21lbnQsIHRhcmdldFNlZ21lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGVtcCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0ZW1wID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBkZWwgPSBkaXN0W2kgLSAxXVtqXS5taW4gKyAxO1xuICAgICAgICAgICAgdmFyIGFkZCA9IGRpc3RbaV1baiAtIDFdLm1pbiArIDE7XG4gICAgICAgICAgICB2YXIgbW9kaWZ5ID0gZGlzdFtpIC0gMV1baiAtIDFdLm1pbiArIHRlbXA7XG4gICAgICAgICAgICBkaXN0W2ldW2pdID0gZ2V0TWluRGlmZihkZWwsIGFkZCwgbW9kaWZ5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzdDtcbn07XG52YXIgZmlsbFBhdGhCeURpZmYgPSBmdW5jdGlvbiAoc291cmNlLCB0YXJnZXQpIHtcbiAgICB2YXIgZGlmZk1hdHJpeCA9IGxldmVuc2h0ZWluRGlzdGFuY2Uoc291cmNlLCB0YXJnZXQpO1xuICAgIHZhciBzb3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoO1xuICAgIHZhciB0YXJnZXRMZW4gPSB0YXJnZXQubGVuZ3RoO1xuICAgIHZhciBjaGFuZ2VzID0gW107XG4gICAgdmFyIGluZGV4ID0gMTtcbiAgICB2YXIgbWluUG9zID0gMTtcbiAgICAvLyDlpoLmnpxzb3VyY2Xlkox0YXJnZXTkuI3mmK/lrozlhajkuI3nm7jnrYlcbiAgICBpZiAoZGlmZk1hdHJpeFtzb3VyY2VMZW5dW3RhcmdldExlbl0ubWluICE9PSBzb3VyY2VMZW4pIHtcbiAgICAgICAgLy8g6I635Y+W5LuOc291cmNl5YiwdGFyZ2V05omA6ZyA5pS55YqoXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgbWluID0gZGlmZk1hdHJpeFtpXVtpXS5taW47XG4gICAgICAgICAgICBtaW5Qb3MgPSBpO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGluZGV4OyBqIDw9IHRhcmdldExlbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpZmZNYXRyaXhbaV1bal0ubWluIDwgbWluKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGRpZmZNYXRyaXhbaV1bal0ubWluO1xuICAgICAgICAgICAgICAgICAgICBtaW5Qb3MgPSBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluZGV4ID0gbWluUG9zO1xuICAgICAgICAgICAgaWYgKGRpZmZNYXRyaXhbaV1baW5kZXhdLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VzLnB1c2goeyBpbmRleDogaSAtIDEsIHR5cGU6IGRpZmZNYXRyaXhbaV1baW5kZXhdLnR5cGUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8g5a+5c291cmNl6L+b6KGM5aKe5YigcGF0aFxuICAgICAgICBmb3IgKHZhciBpID0gY2hhbmdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaW5kZXggPSBjaGFuZ2VzW2ldLmluZGV4O1xuICAgICAgICAgICAgaWYgKGNoYW5nZXNbaV0udHlwZSA9PT0gJ2FkZCcpIHtcbiAgICAgICAgICAgICAgICBzb3VyY2Uuc3BsaWNlKGluZGV4LCAwLCBbXS5jb25jYXQoc291cmNlW2luZGV4XSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc291cmNlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gc291cmNl5bC+6YOo6KGl6b2QXG4gICAgc291cmNlTGVuID0gc291cmNlLmxlbmd0aDtcbiAgICB2YXIgZGlmZiA9IHRhcmdldExlbiAtIHNvdXJjZUxlbjtcbiAgICBpZiAoc291cmNlTGVuIDwgdGFyZ2V0TGVuKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlmZjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoc291cmNlW3NvdXJjZUxlbiAtIDFdWzBdID09PSAneicgfHwgc291cmNlW3NvdXJjZUxlbiAtIDFdWzBdID09PSAnWicpIHtcbiAgICAgICAgICAgICAgICBzb3VyY2Uuc3BsaWNlKHNvdXJjZUxlbiAtIDIsIDAsIHNvdXJjZVtzb3VyY2VMZW4gLSAyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzb3VyY2UucHVzaChzb3VyY2Vbc291cmNlTGVuIC0gMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc291cmNlTGVuICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbn07XG4vLyDlsIbkuKTkuKrngrnlnYfliIbmiJBjb3VudOS4queCuVxuZnVuY3Rpb24gX3NwbGl0UG9pbnRzKHBvaW50cywgZm9ybWVyLCBjb3VudCkge1xuICAgIHZhciByZXN1bHQgPSBbXS5jb25jYXQocG9pbnRzKTtcbiAgICB2YXIgaW5kZXg7XG4gICAgdmFyIHQgPSAxIC8gKGNvdW50ICsgMSk7XG4gICAgdmFyIGZvcm1lckVuZCA9IF9nZXRTZWdtZW50UG9pbnRzKGZvcm1lcilbMF07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gY291bnQ7IGkrKykge1xuICAgICAgICB0ICo9IGk7XG4gICAgICAgIGluZGV4ID0gTWF0aC5mbG9vcihwb2ludHMubGVuZ3RoICogdCk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmVzdWx0LnVuc2hpZnQoW2Zvcm1lckVuZFswXSAqIHQgKyBwb2ludHNbaW5kZXhdWzBdICogKDEgLSB0KSwgZm9ybWVyRW5kWzFdICogdCArIHBvaW50c1tpbmRleF1bMV0gKiAoMSAtIHQpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQuc3BsaWNlKGluZGV4LCAwLCBbXG4gICAgICAgICAgICAgICAgZm9ybWVyRW5kWzBdICogdCArIHBvaW50c1tpbmRleF1bMF0gKiAoMSAtIHQpLFxuICAgICAgICAgICAgICAgIGZvcm1lckVuZFsxXSAqIHQgKyBwb2ludHNbaW5kZXhdWzFdICogKDEgLSB0KSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKlxuICog5oq95Y+WcGF0aFNlZ21lbnTkuK3nmoTlhbPplK7ngrlcbiAqIE0sTCxBLFEsSCxW5LiA5Liq56uv54K5XG4gKiBRLCBT5oq95Y+W5LiA5Liq56uv54K577yM5LiA5Liq5o6n5Yi254K5XG4gKiBD5oq95Y+W5LiA5Liq56uv54K577yM5Lik5Liq5o6n5Yi254K5XG4gKi9cbmZ1bmN0aW9uIF9nZXRTZWdtZW50UG9pbnRzKHNlZ21lbnQpIHtcbiAgICB2YXIgcG9pbnRzID0gW107XG4gICAgc3dpdGNoIChzZWdtZW50WzBdKSB7XG4gICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFs2XSwgc2VnbWVudFs3XV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbM10sIHNlZ21lbnRbNF1dKTtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbNV0sIHNlZ21lbnRbNl1dKTtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFszXSwgc2VnbWVudFs0XV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1MnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbM10sIHNlZ21lbnRbNF1dKTtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsxXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1YnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMV1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgIH1cbiAgICByZXR1cm4gcG9pbnRzO1xufVxudmFyIGZvcm1hdFBhdGggPSBmdW5jdGlvbiAoZnJvbVBhdGgsIHRvUGF0aCkge1xuICAgIGlmIChmcm9tUGF0aC5sZW5ndGggPD0gMSkge1xuICAgICAgICByZXR1cm4gZnJvbVBhdGg7XG4gICAgfVxuICAgIHZhciBwb2ludHM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b1BhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGZyb21QYXRoW2ldWzBdICE9PSB0b1BhdGhbaV1bMF0pIHtcbiAgICAgICAgICAgIC8vIOiOt+WPlmZyb21QYXRo55qEcGF0aFNlZ21lbnTnmoTnq6/ngrnvvIzmoLnmja50b1BhdGjnmoTmjIfku6Tlr7nlhbbmlLnpgKBcbiAgICAgICAgICAgIHBvaW50cyA9IF9nZXRTZWdtZW50UG9pbnRzKGZyb21QYXRoW2ldKTtcbiAgICAgICAgICAgIHN3aXRjaCAodG9QYXRoW2ldWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gWydNJ10uY29uY2F0KHBvaW50c1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnTCddLmNvbmNhdChwb2ludHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbXS5jb25jYXQodG9QYXRoW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV1bNl0gPSBwb2ludHNbMF1bMF07XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldWzddID0gcG9pbnRzWzBdWzFdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBfc3BsaXRQb2ludHMocG9pbnRzLCBmcm9tUGF0aFtpIC0gMV0sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ1EnXS5jb25jYXQocG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYXJyLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyLmNvbmNhdChpKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gWydUJ10uY29uY2F0KHBvaW50c1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA8IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IF9zcGxpdFBvaW50cyhwb2ludHMsIGZyb21QYXRoW2kgLSAxXSwgMik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IHRvUGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnQyddLmNvbmNhdChwb2ludHMucmVkdWNlKGZ1bmN0aW9uIChhcnIsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnIuY29uY2F0KGkpO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBfc3BsaXRQb2ludHMocG9pbnRzLCBmcm9tUGF0aFtpIC0gMV0sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ1MnXS5jb25jYXQocG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYXJyLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyLmNvbmNhdChpKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZyb21QYXRoO1xufTtcbmV4cG9ydCB7IGNhdG11bGxSb21Ub0JlemllciwgZmlsbFBhdGgsIGZpbGxQYXRoQnlEaWZmLCBmb3JtYXRQYXRoLCBpbnRlcnNlY3Rpb24sIHBhcnNlUGF0aEFycmF5LCBwYXJzZVBhdGhTdHJpbmcsIHBhdGhUb0Fic29sdXRlLCBwYXRoVG9DdXJ2ZSwgcmVjdFBhdGgsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/path.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/util/text.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-base/esm/util/text.js ***! \****************************************************/ /*! exports provided: getTextHeight, getLineSpaceing, getTextWidth, assembleFont */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextHeight\", function() { return getTextHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLineSpaceing\", function() { return getLineSpaceing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextWidth\", function() { return getTextWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleFont\", function() { return assembleFont; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _offscreen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./offscreen */ \"./node_modules/@antv/g-base/esm/util/offscreen.js\");\n\n\n/**\n * 获取文本的高度\n * @param text 文本\n * @param fontSize 字体大小\n * @param lineHeight 行高,可以为空\n */\nfunction getTextHeight(text, fontSize, lineHeight) {\n var lineCount = 1;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(text)) {\n lineCount = text.split('\\n').length;\n }\n if (lineCount > 1) {\n var spaceingY = getLineSpaceing(fontSize, lineHeight);\n return fontSize * lineCount + spaceingY * (lineCount - 1);\n }\n return fontSize;\n}\n/**\n * 获取行间距如果文本多行,需要获取文本间距\n * @param fontSize 字体大小\n * @param lineHeight 行高\n */\nfunction getLineSpaceing(fontSize, lineHeight) {\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n}\n/**\n * 字体宽度\n * @param text 文本\n * @param font 字体\n */\nfunction getTextWidth(text, font) {\n var context = Object(_offscreen__WEBPACK_IMPORTED_MODULE_1__[\"getOffScreenContext\"])(); // 获取离屏的 ctx 进行计算\n var width = 0;\n // null 或者 undefined 时,宽度为 0\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(text) || text === '') {\n return width;\n }\n context.save();\n context.font = font;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(text) && text.includes('\\n')) {\n var textArr = text.split('\\n');\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(textArr, function (subText) {\n var measureWidth = context.measureText(subText).width;\n if (width < measureWidth) {\n width = measureWidth;\n }\n });\n }\n else {\n width = context.measureText(text).width;\n }\n context.restore();\n return width;\n}\nfunction assembleFont(attrs) {\n var fontSize = attrs.fontSize, fontFamily = attrs.fontFamily, fontWeight = attrs.fontWeight, fontStyle = attrs.fontStyle, fontVariant = attrs.fontVariant;\n return [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ').trim();\n}\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL3RleHQuanM/YmM4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErQztBQUNHO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxRQUFRLHNEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1Asa0JBQWtCLHNFQUFtQixHQUFHO0FBQ3hDO0FBQ0E7QUFDQSxRQUFRLG1EQUFLO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFRO0FBQ2hCO0FBQ0EsUUFBUSxrREFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWJhc2UvZXNtL3V0aWwvdGV4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTmlsLCBlYWNoLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBnZXRPZmZTY3JlZW5Db250ZXh0IH0gZnJvbSAnLi9vZmZzY3JlZW4nO1xuLyoqXG4gKiDojrflj5bmlofmnKznmoTpq5jluqZcbiAqIEBwYXJhbSB0ZXh0IOaWh+acrFxuICogQHBhcmFtIGZvbnRTaXplIOWtl+S9k+Wkp+Wwj1xuICogQHBhcmFtIGxpbmVIZWlnaHQg6KGM6auY77yM5Y+v5Lul5Li656m6XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0SGVpZ2h0KHRleHQsIGZvbnRTaXplLCBsaW5lSGVpZ2h0KSB7XG4gICAgdmFyIGxpbmVDb3VudCA9IDE7XG4gICAgaWYgKGlzU3RyaW5nKHRleHQpKSB7XG4gICAgICAgIGxpbmVDb3VudCA9IHRleHQuc3BsaXQoJ1xcbicpLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKGxpbmVDb3VudCA+IDEpIHtcbiAgICAgICAgdmFyIHNwYWNlaW5nWSA9IGdldExpbmVTcGFjZWluZyhmb250U2l6ZSwgbGluZUhlaWdodCk7XG4gICAgICAgIHJldHVybiBmb250U2l6ZSAqIGxpbmVDb3VudCArIHNwYWNlaW5nWSAqIChsaW5lQ291bnQgLSAxKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvbnRTaXplO1xufVxuLyoqXG4gKiDojrflj5booYzpl7Tot53lpoLmnpzmlofmnKzlpJrooYzvvIzpnIDopoHojrflj5bmlofmnKzpl7Tot51cbiAqIEBwYXJhbSBmb250U2l6ZSDlrZfkvZPlpKflsI9cbiAqIEBwYXJhbSBsaW5lSGVpZ2h0IOihjOmrmFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGluZVNwYWNlaW5nKGZvbnRTaXplLCBsaW5lSGVpZ2h0KSB7XG4gICAgcmV0dXJuIGxpbmVIZWlnaHQgPyBsaW5lSGVpZ2h0IC0gZm9udFNpemUgOiBmb250U2l6ZSAqIDAuMTQ7XG59XG4vKipcbiAqIOWtl+S9k+WuveW6plxuICogQHBhcmFtIHRleHQg5paH5pysXG4gKiBAcGFyYW0gZm9udCDlrZfkvZNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRXaWR0aCh0ZXh0LCBmb250KSB7XG4gICAgdmFyIGNvbnRleHQgPSBnZXRPZmZTY3JlZW5Db250ZXh0KCk7IC8vIOiOt+WPluemu+Wxj+eahCBjdHgg6L+b6KGM6K6h566XXG4gICAgdmFyIHdpZHRoID0gMDtcbiAgICAvLyBudWxsIOaIluiAhSB1bmRlZmluZWQg5pe277yM5a695bqm5Li6IDBcbiAgICBpZiAoaXNOaWwodGV4dCkgfHwgdGV4dCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cbiAgICBjb250ZXh0LnNhdmUoKTtcbiAgICBjb250ZXh0LmZvbnQgPSBmb250O1xuICAgIGlmIChpc1N0cmluZyh0ZXh0KSAmJiB0ZXh0LmluY2x1ZGVzKCdcXG4nKSkge1xuICAgICAgICB2YXIgdGV4dEFyciA9IHRleHQuc3BsaXQoJ1xcbicpO1xuICAgICAgICBlYWNoKHRleHRBcnIsIGZ1bmN0aW9uIChzdWJUZXh0KSB7XG4gICAgICAgICAgICB2YXIgbWVhc3VyZVdpZHRoID0gY29udGV4dC5tZWFzdXJlVGV4dChzdWJUZXh0KS53aWR0aDtcbiAgICAgICAgICAgIGlmICh3aWR0aCA8IG1lYXN1cmVXaWR0aCkge1xuICAgICAgICAgICAgICAgIHdpZHRoID0gbWVhc3VyZVdpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHdpZHRoID0gY29udGV4dC5tZWFzdXJlVGV4dCh0ZXh0KS53aWR0aDtcbiAgICB9XG4gICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgcmV0dXJuIHdpZHRoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VtYmxlRm9udChhdHRycykge1xuICAgIHZhciBmb250U2l6ZSA9IGF0dHJzLmZvbnRTaXplLCBmb250RmFtaWx5ID0gYXR0cnMuZm9udEZhbWlseSwgZm9udFdlaWdodCA9IGF0dHJzLmZvbnRXZWlnaHQsIGZvbnRTdHlsZSA9IGF0dHJzLmZvbnRTdHlsZSwgZm9udFZhcmlhbnQgPSBhdHRycy5mb250VmFyaWFudDtcbiAgICByZXR1cm4gW2ZvbnRTdHlsZSwgZm9udFZhcmlhbnQsIGZvbnRXZWlnaHQsIGZvbnRTaXplICsgXCJweFwiLCBmb250RmFtaWx5XS5qb2luKCcgJykudHJpbSgpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGV4dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/text.js\n"); /***/ }), /***/ "./node_modules/@antv/g-base/esm/util/util.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-base/esm/util/util.js ***! \****************************************************/ /*! exports provided: removeFromArray, isBrowser, isNil, isFunction, isString, isObject, isArray, mix, each, upperFirst, isParent, isAllowCapture */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFromArray\", function() { return removeFromArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBrowser\", function() { return isBrowser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isParent\", function() { return isParent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAllowCapture\", function() { return isAllowCapture; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mix\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upperFirst\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"upperFirst\"]; });\n\nfunction removeFromArray(arr, obj) {\n var index = arr.indexOf(obj);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\nvar isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n// 是否元素的父容器\nfunction isParent(container, shape) {\n // 所有 shape 都是 canvas 的子元素\n if (container.isCanvas()) {\n return true;\n }\n var parent = shape.getParent();\n var isParent = false;\n while (parent) {\n if (parent === container) {\n isParent = true;\n break;\n }\n parent = parent.getParent();\n }\n return isParent;\n}\nfunction isAllowCapture(element) {\n // @ts-ignore\n return element.cfg.visible && element.cfg.capture;\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1iYXNlL2VzbS91dGlsL3V0aWwuanM/YjJjYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQzRGO0FBQ25HO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctYmFzZS9lc20vdXRpbC91dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZyb21BcnJheShhcnIsIG9iaikge1xuICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKG9iaik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG59XG5leHBvcnQgdmFyIGlzQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xuZXhwb3J0IHsgaXNOaWwsIGlzRnVuY3Rpb24sIGlzU3RyaW5nLCBpc09iamVjdCwgaXNBcnJheSwgbWl4LCBlYWNoLCB1cHBlckZpcnN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG4vLyDmmK/lkKblhYPntKDnmoTniLblrrnlmahcbmV4cG9ydCBmdW5jdGlvbiBpc1BhcmVudChjb250YWluZXIsIHNoYXBlKSB7XG4gICAgLy8g5omA5pyJIHNoYXBlIOmDveaYryBjYW52YXMg55qE5a2Q5YWD57SgXG4gICAgaWYgKGNvbnRhaW5lci5pc0NhbnZhcygpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB2YXIgcGFyZW50ID0gc2hhcGUuZ2V0UGFyZW50KCk7XG4gICAgdmFyIGlzUGFyZW50ID0gZmFsc2U7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICBpZiAocGFyZW50ID09PSBjb250YWluZXIpIHtcbiAgICAgICAgICAgIGlzUGFyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzUGFyZW50O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQWxsb3dDYXB0dXJlKGVsZW1lbnQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGVsZW1lbnQuY2ZnLnZpc2libGUgJiYgZWxlbWVudC5jZmcuY2FwdHVyZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-base/esm/util/util.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/canvas.js": /*!***************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/canvas.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_hit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/hit */ \"./node_modules/@antv/g-canvas/esm/util/hit.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./group */ \"./node_modules/@antv/g-canvas/esm/group.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/@antv/g-canvas/esm/util/draw.js\");\n\n\n\n\n\n\n\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // 设置渲染引擎为 canvas,只读属性\n cfg['renderer'] = 'canvas';\n // 是否自动绘制,不需要用户调用 draw 方法\n cfg['autoDraw'] = true;\n // 是否允许局部刷新图表\n cfg['localRefresh'] = true;\n cfg['refreshElements'] = [];\n // 是否在视图内自动裁剪\n cfg['clipView'] = true;\n // 是否使用快速拾取的方案,默认为 false,上层可以打开\n cfg['quickHit'] = false;\n return cfg;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n /**\n * 触发画布更新的三种 changeType\n * 1. attr: 修改画布的绘图属性\n * 2. sort: 画布排序,图形的层次会发生变化\n * 3. changeSize: 改变画布大小\n */\n if (changeType === 'attr' || changeType === 'sort' || changeType === 'changeSize') {\n this.set('refreshElements', [this]);\n this.draw();\n }\n };\n Canvas.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_3__;\n };\n Canvas.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n };\n /**\n * 获取屏幕像素比\n */\n Canvas.prototype.getPixelRatio = function () {\n var pixelRatio = this.get('pixelRatio') || Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"getPixelRatio\"])();\n // 不足 1 的取 1,超出 1 的取整\n return pixelRatio >= 1 ? Math.ceil(pixelRatio) : 1;\n };\n Canvas.prototype.getViewRange = function () {\n return {\n minX: 0,\n minY: 0,\n maxX: this.cfg.width,\n maxY: this.cfg.height,\n };\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = document.createElement('canvas');\n var context = element.getContext('2d');\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n Canvas.prototype.setDOMSize = function (width, height) {\n _super.prototype.setDOMSize.call(this, width, height);\n var context = this.get('context');\n var el = this.get('el');\n var pixelRatio = this.getPixelRatio();\n el.width = pixelRatio * width;\n el.height = pixelRatio * height;\n // 设置 canvas 元素的宽度和高度,会重置缩放,因此 context.scale 需要在每次设置宽、高后调用\n if (pixelRatio > 1) {\n context.scale(pixelRatio, pixelRatio);\n }\n };\n // 复写基类方法\n Canvas.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this._clearFrame(); // 需要清理掉延迟绘制的帧\n var context = this.get('context');\n var element = this.get('el');\n context.clearRect(0, 0, element.width, element.height);\n };\n Canvas.prototype.getShape = function (x, y) {\n var shape;\n if (this.get('quickHit')) {\n shape = Object(_util_hit__WEBPACK_IMPORTED_MODULE_2__[\"getShape\"])(this, x, y);\n }\n else {\n shape = _super.prototype.getShape.call(this, x, y, null);\n }\n return shape;\n };\n // 对绘制区域边缘取整,避免浮点数问题\n Canvas.prototype._getRefreshRegion = function () {\n var elements = this.get('refreshElements');\n var viewRegion = this.getViewRange();\n var region;\n // 如果是当前画布整体发生了变化,则直接重绘整个画布\n if (elements.length && elements[0] === this) {\n region = viewRegion;\n }\n else {\n region = Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"getMergedRegion\"])(elements);\n if (region) {\n region.minX = Math.floor(region.minX);\n region.minY = Math.floor(region.minY);\n region.maxX = Math.ceil(region.maxX);\n region.maxY = Math.ceil(region.maxY);\n region.maxY += 1; // 在很多环境下字体的高低会不一致,附加一像素,避免残影\n var clipView = this.get('clipView');\n // 自动裁剪不在 view 内的区域\n if (clipView) {\n region = Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"mergeView\"])(region, viewRegion);\n }\n }\n }\n return region;\n };\n /**\n * 刷新图形元素,这里仅仅是放入队列,下次绘制时进行绘制\n * @param {IElement} element 图形元素\n */\n Canvas.prototype.refreshElement = function (element) {\n var refreshElements = this.get('refreshElements');\n refreshElements.push(element);\n // if (this.get('autoDraw')) {\n // this._startDraw();\n // }\n };\n // 清理还在进行的绘制\n Canvas.prototype._clearFrame = function () {\n var drawFrame = this.get('drawFrame');\n if (drawFrame) {\n // 如果全部渲染时,存在局部渲染,则抛弃掉局部渲染\n Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"clearAnimationFrame\"])(drawFrame);\n this.set('drawFrame', null);\n this.set('refreshElements', []);\n }\n };\n // 手工调用绘制接口\n Canvas.prototype.draw = function () {\n var drawFrame = this.get('drawFrame');\n if (this.get('autoDraw') && drawFrame) {\n return;\n }\n this._startDraw();\n };\n // 绘制所有图形\n Canvas.prototype._drawAll = function () {\n var context = this.get('context');\n var element = this.get('el');\n var children = this.getChildren();\n context.clearRect(0, 0, element.width, element.height);\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"applyAttrsToContext\"])(context, this);\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"drawChildren\"])(context, children);\n // 对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也会记录更新的元素队列,因此全局渲染完后也需要置空\n this.set('refreshElements', []);\n };\n // 绘制局部\n Canvas.prototype._drawRegion = function () {\n var context = this.get('context');\n var refreshElements = this.get('refreshElements');\n var children = this.getChildren();\n var region = this._getRefreshRegion();\n // 需要注意可能没有 region 的场景\n // 一般发生在设置了 localRefresh ,在没有图形发生变化的情况下,用户调用了 draw\n if (region) {\n // 清理指定区域\n context.clearRect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n // 保存上下文,设置 clip\n context.save();\n context.beginPath();\n context.rect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n context.clip();\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"applyAttrsToContext\"])(context, this);\n // 确认更新的元素,这个优化可以提升 10 倍左右的性能,10W 个带有 group 的节点,局部渲染会从 90ms 下降到 5-6 ms\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"checkRefresh\"])(this, children, region);\n // 绘制子元素\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"drawChildren\"])(context, children, region);\n context.restore();\n }\n else if (refreshElements.length) {\n // 防止发生改变的 elements 没有 region 的场景,这会发生在多个情况下\n // 1. 空的 group\n // 2. 所有 elements 没有在绘图区域\n // 3. group 下面的 elements 隐藏掉\n // 如果不进行清理 hasChanged 的状态会不正确\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"clearChanged\"])(refreshElements);\n }\n Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"each\"])(refreshElements, function (element) {\n if (element.get('hasChanged')) {\n // 在视窗外的 Group 元素会加入到更新队列里,但实际却没有执行 draw() 逻辑,也就没有清除 hasChanged 标记\n // 即已经重绘完、但 hasChanged 标记没有清除的元素,需要统一清除掉。主要是 Group 存在问题,具体原因待排查\n element.set('hasChanged', false);\n }\n });\n this.set('refreshElements', []);\n };\n // 触发绘制\n Canvas.prototype._startDraw = function () {\n var _this = this;\n var drawFrame = this.get('drawFrame');\n if (!drawFrame) {\n drawFrame = Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"requestAnimationFrame\"])(function () {\n if (_this.get('localRefresh')) {\n _this._drawRegion();\n }\n else {\n _this._drawAll();\n }\n _this.set('drawFrame', null);\n });\n this.set('drawFrame', drawFrame);\n }\n };\n Canvas.prototype.skipDraw = function () { };\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n // 需要清理 canvas 画布内容,否则ios下 创建的canvas垃圾未回收,导致Total canvas memory use exceeds问题\n // 相关问题列表\n // https://stackoverflow.com/questions/52532614/total-canvas-memory-use-exceeds-the-maximum-limit-safari-12\n // https://github.com/openlayers/openlayers/issues/9291\n el.width = 0;\n el.height = 0;\n el.parentNode.removeChild(el);\n };\n return Canvas;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractCanvas\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL2NhbnZhcy5qcz9iMTgyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDWTtBQUNSO0FBQ0w7QUFDTDtBQUNrRTtBQUMwQjtBQUN4SDtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1DQUFLO0FBQ3BCO0FBQ0E7QUFDQSxlQUFlLDhDQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsZ0VBQWE7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMERBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsa0VBQWU7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsNERBQVM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNFQUFtQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNFQUFtQjtBQUMzQixRQUFRLCtEQUFZO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzRUFBbUI7QUFDL0I7QUFDQSxZQUFZLCtEQUFZO0FBQ3hCO0FBQ0EsWUFBWSwrREFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwrREFBWTtBQUN4QjtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHdFQUFxQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQywyREFBYztBQUNELHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL2NhbnZhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDYW52YXMgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0IHsgZ2V0U2hhcGUgfSBmcm9tICcuL3V0aWwvaGl0JztcbmltcG9ydCAqIGFzIFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0IEdyb3VwIGZyb20gJy4vZ3JvdXAnO1xuaW1wb3J0IHsgZWFjaCwgZ2V0UGl4ZWxSYXRpbywgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBjbGVhckFuaW1hdGlvbkZyYW1lIH0gZnJvbSAnLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgYXBwbHlBdHRyc1RvQ29udGV4dCwgZHJhd0NoaWxkcmVuLCBnZXRNZXJnZWRSZWdpb24sIG1lcmdlVmlldywgY2hlY2tSZWZyZXNoLCBjbGVhckNoYW5nZWQgfSBmcm9tICcuL3V0aWwvZHJhdyc7XG52YXIgQ2FudmFzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDYW52YXMsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2FudmFzKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNmZyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZy5jYWxsKHRoaXMpO1xuICAgICAgICAvLyDorr7nva7muLLmn5PlvJXmk47kuLogY2FudmFz77yM5Y+q6K+75bGe5oCnXG4gICAgICAgIGNmZ1sncmVuZGVyZXInXSA9ICdjYW52YXMnO1xuICAgICAgICAvLyDmmK/lkKboh6rliqjnu5jliLbvvIzkuI3pnIDopoHnlKjmiLfosIPnlKggZHJhdyDmlrnms5VcbiAgICAgICAgY2ZnWydhdXRvRHJhdyddID0gdHJ1ZTtcbiAgICAgICAgLy8g5piv5ZCm5YWB6K645bGA6YOo5Yi35paw5Zu+6KGoXG4gICAgICAgIGNmZ1snbG9jYWxSZWZyZXNoJ10gPSB0cnVlO1xuICAgICAgICBjZmdbJ3JlZnJlc2hFbGVtZW50cyddID0gW107XG4gICAgICAgIC8vIOaYr+WQpuWcqOinhuWbvuWGheiHquWKqOijgeWJqlxuICAgICAgICBjZmdbJ2NsaXBWaWV3J10gPSB0cnVlO1xuICAgICAgICAvLyDmmK/lkKbkvb/nlKjlv6vpgJ/mi77lj5bnmoTmlrnmoYjvvIzpu5jorqTkuLogZmFsc2XvvIzkuIrlsYLlj6/ku6XmiZPlvIBcbiAgICAgICAgY2ZnWydxdWlja0hpdCddID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBjZmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDop6blj5HnlLvluIPmm7TmlrDnmoTkuInnp40gY2hhbmdlVHlwZVxuICAgICAgICAgKiAxLiBhdHRyOiDkv67mlLnnlLvluIPnmoTnu5jlm77lsZ7mgKdcbiAgICAgICAgICogMi4gc29ydDog55S75biD5o6S5bqP77yM5Zu+5b2i55qE5bGC5qyh5Lya5Y+R55Sf5Y+Y5YyWXG4gICAgICAgICAqIDMuIGNoYW5nZVNpemU6IOaUueWPmOeUu+W4g+Wkp+Wwj1xuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGNoYW5nZVR5cGUgPT09ICdhdHRyJyB8fCBjaGFuZ2VUeXBlID09PSAnc29ydCcgfHwgY2hhbmdlVHlwZSA9PT0gJ2NoYW5nZVNpemUnKSB7XG4gICAgICAgICAgICB0aGlzLnNldCgncmVmcmVzaEVsZW1lbnRzJywgW3RoaXNdKTtcbiAgICAgICAgICAgIHRoaXMuZHJhdygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLmdldFNoYXBlQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFNoYXBlO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRHcm91cEJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBHcm91cDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiOt+WPluWxj+W5leWDj+e0oOavlFxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0UGl4ZWxSYXRpbyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBpeGVsUmF0aW8gPSB0aGlzLmdldCgncGl4ZWxSYXRpbycpIHx8IGdldFBpeGVsUmF0aW8oKTtcbiAgICAgICAgLy8g5LiN6LazIDEg55qE5Y+WIDHvvIzotoXlh7ogMSDnmoTlj5bmlbRcbiAgICAgICAgcmV0dXJuIHBpeGVsUmF0aW8gPj0gMSA/IE1hdGguY2VpbChwaXhlbFJhdGlvKSA6IDE7XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLmdldFZpZXdSYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1pblg6IDAsXG4gICAgICAgICAgICBtaW5ZOiAwLFxuICAgICAgICAgICAgbWF4WDogdGhpcy5jZmcud2lkdGgsXG4gICAgICAgICAgICBtYXhZOiB0aGlzLmNmZy5oZWlnaHQsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvLyDlpI3lhpnln7rnsbvnmoTmlrnms5XnlJ/miJDmoIfnrb5cbiAgICBDYW52YXMucHJvdG90eXBlLmNyZWF0ZURvbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgdmFyIGNvbnRleHQgPSBlbGVtZW50LmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIC8vIOe8k+WtmCBjb250ZXh0IOWvueixoVxuICAgICAgICB0aGlzLnNldCgnY29udGV4dCcsIGNvbnRleHQpO1xuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9O1xuICAgIENhbnZhcy5wcm90b3R5cGUuc2V0RE9NU2l6ZSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuc2V0RE9NU2l6ZS5jYWxsKHRoaXMsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgcGl4ZWxSYXRpbyA9IHRoaXMuZ2V0UGl4ZWxSYXRpbygpO1xuICAgICAgICBlbC53aWR0aCA9IHBpeGVsUmF0aW8gKiB3aWR0aDtcbiAgICAgICAgZWwuaGVpZ2h0ID0gcGl4ZWxSYXRpbyAqIGhlaWdodDtcbiAgICAgICAgLy8g6K6+572uIGNhbnZhcyDlhYPntKDnmoTlrr3luqblkozpq5jluqbvvIzkvJrph43nva7nvKnmlL7vvIzlm6DmraQgY29udGV4dC5zY2FsZSDpnIDopoHlnKjmr4/mrKHorr7nva7lrr3jgIHpq5jlkI7osIPnlKhcbiAgICAgICAgaWYgKHBpeGVsUmF0aW8gPiAxKSB7XG4gICAgICAgICAgICBjb250ZXh0LnNjYWxlKHBpeGVsUmF0aW8sIHBpeGVsUmF0aW8pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDlpI3lhpnln7rnsbvmlrnms5VcbiAgICBDYW52YXMucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmNsZWFyLmNhbGwodGhpcyk7XG4gICAgICAgIHRoaXMuX2NsZWFyRnJhbWUoKTsgLy8g6ZyA6KaB5riF55CG5o6J5bu26L+f57uY5Yi255qE5binXG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5nZXQoJ2NvbnRleHQnKTtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgZWxlbWVudC53aWR0aCwgZWxlbWVudC5oZWlnaHQpO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRTaGFwZSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIHZhciBzaGFwZTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCdxdWlja0hpdCcpKSB7XG4gICAgICAgICAgICBzaGFwZSA9IGdldFNoYXBlKHRoaXMsIHgsIHkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUgPSBfc3VwZXIucHJvdG90eXBlLmdldFNoYXBlLmNhbGwodGhpcywgeCwgeSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNoYXBlO1xuICAgIH07XG4gICAgLy8g5a+557uY5Yi25Yy65Z+f6L6557yY5Y+W5pW077yM6YG/5YWN5rWu54K55pWw6Zeu6aKYXG4gICAgQ2FudmFzLnByb3RvdHlwZS5fZ2V0UmVmcmVzaFJlZ2lvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gdGhpcy5nZXQoJ3JlZnJlc2hFbGVtZW50cycpO1xuICAgICAgICB2YXIgdmlld1JlZ2lvbiA9IHRoaXMuZ2V0Vmlld1JhbmdlKCk7XG4gICAgICAgIHZhciByZWdpb247XG4gICAgICAgIC8vIOWmguaenOaYr+W9k+WJjeeUu+W4g+aVtOS9k+WPkeeUn+S6huWPmOWMlu+8jOWImeebtOaOpemHjee7mOaVtOS4queUu+W4g1xuICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoICYmIGVsZW1lbnRzWzBdID09PSB0aGlzKSB7XG4gICAgICAgICAgICByZWdpb24gPSB2aWV3UmVnaW9uO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVnaW9uID0gZ2V0TWVyZ2VkUmVnaW9uKGVsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmIChyZWdpb24pIHtcbiAgICAgICAgICAgICAgICByZWdpb24ubWluWCA9IE1hdGguZmxvb3IocmVnaW9uLm1pblgpO1xuICAgICAgICAgICAgICAgIHJlZ2lvbi5taW5ZID0gTWF0aC5mbG9vcihyZWdpb24ubWluWSk7XG4gICAgICAgICAgICAgICAgcmVnaW9uLm1heFggPSBNYXRoLmNlaWwocmVnaW9uLm1heFgpO1xuICAgICAgICAgICAgICAgIHJlZ2lvbi5tYXhZID0gTWF0aC5jZWlsKHJlZ2lvbi5tYXhZKTtcbiAgICAgICAgICAgICAgICByZWdpb24ubWF4WSArPSAxOyAvLyDlnKjlvojlpJrnjq/looPkuIvlrZfkvZPnmoTpq5jkvY7kvJrkuI3kuIDoh7TvvIzpmYTliqDkuIDlg4/ntKDvvIzpgb/lhY3mrovlvbFcbiAgICAgICAgICAgICAgICB2YXIgY2xpcFZpZXcgPSB0aGlzLmdldCgnY2xpcFZpZXcnKTtcbiAgICAgICAgICAgICAgICAvLyDoh6rliqjoo4HliarkuI3lnKggdmlldyDlhoXnmoTljLrln59cbiAgICAgICAgICAgICAgICBpZiAoY2xpcFZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVnaW9uID0gbWVyZ2VWaWV3KHJlZ2lvbiwgdmlld1JlZ2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWdpb247XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDliLfmlrDlm77lvaLlhYPntKDvvIzov5nph4zku4Xku4XmmK/mlL7lhaXpmJ/liJfvvIzkuIvmrKHnu5jliLbml7bov5vooYznu5jliLZcbiAgICAgKiBAcGFyYW0ge0lFbGVtZW50fSBlbGVtZW50IOWbvuW9ouWFg+e0oFxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUucmVmcmVzaEVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgcmVmcmVzaEVsZW1lbnRzID0gdGhpcy5nZXQoJ3JlZnJlc2hFbGVtZW50cycpO1xuICAgICAgICByZWZyZXNoRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgLy8gaWYgKHRoaXMuZ2V0KCdhdXRvRHJhdycpKSB7XG4gICAgICAgIC8vICAgdGhpcy5fc3RhcnREcmF3KCk7XG4gICAgICAgIC8vIH1cbiAgICB9O1xuICAgIC8vIOa4heeQhui/mOWcqOi/m+ihjOeahOe7mOWItlxuICAgIENhbnZhcy5wcm90b3R5cGUuX2NsZWFyRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBkcmF3RnJhbWUgPSB0aGlzLmdldCgnZHJhd0ZyYW1lJyk7XG4gICAgICAgIGlmIChkcmF3RnJhbWUpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOWFqOmDqOa4suafk+aXtu+8jOWtmOWcqOWxgOmDqOa4suafk++8jOWImeaKm+W8g+aOieWxgOmDqOa4suafk1xuICAgICAgICAgICAgY2xlYXJBbmltYXRpb25GcmFtZShkcmF3RnJhbWUpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ2RyYXdGcmFtZScsIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3JlZnJlc2hFbGVtZW50cycsIFtdKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5omL5bel6LCD55So57uY5Yi25o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZHJhd0ZyYW1lID0gdGhpcy5nZXQoJ2RyYXdGcmFtZScpO1xuICAgICAgICBpZiAodGhpcy5nZXQoJ2F1dG9EcmF3JykgJiYgZHJhd0ZyYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3RhcnREcmF3KCk7XG4gICAgfTtcbiAgICAvLyDnu5jliLbmiYDmnInlm77lvaJcbiAgICBDYW52YXMucHJvdG90eXBlLl9kcmF3QWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgZWxlbWVudC53aWR0aCwgZWxlbWVudC5oZWlnaHQpO1xuICAgICAgICBhcHBseUF0dHJzVG9Db250ZXh0KGNvbnRleHQsIHRoaXMpO1xuICAgICAgICBkcmF3Q2hpbGRyZW4oY29udGV4dCwgY2hpbGRyZW4pO1xuICAgICAgICAvLyDlr7nkuo4gaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9nL2lzc3Vlcy80MjIg55qE5Zy65pmv77yM5YWo5bGA5riy5p+T55qE5qih5byP5LiL5Lmf5Lya6K6w5b2V5pu05paw55qE5YWD57Sg6Zif5YiX77yM5Zug5q2k5YWo5bGA5riy5p+T5a6M5ZCO5Lmf6ZyA6KaB572u56m6XG4gICAgICAgIHRoaXMuc2V0KCdyZWZyZXNoRWxlbWVudHMnLCBbXSk7XG4gICAgfTtcbiAgICAvLyDnu5jliLblsYDpg6hcbiAgICBDYW52YXMucHJvdG90eXBlLl9kcmF3UmVnaW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciByZWZyZXNoRWxlbWVudHMgPSB0aGlzLmdldCgncmVmcmVzaEVsZW1lbnRzJyk7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgdmFyIHJlZ2lvbiA9IHRoaXMuX2dldFJlZnJlc2hSZWdpb24oKTtcbiAgICAgICAgLy8g6ZyA6KaB5rOo5oSP5Y+v6IO95rKh5pyJIHJlZ2lvbiDnmoTlnLrmma9cbiAgICAgICAgLy8g5LiA6Iis5Y+R55Sf5Zyo6K6+572u5LqGIGxvY2FsUmVmcmVzaCAs5Zyo5rKh5pyJ5Zu+5b2i5Y+R55Sf5Y+Y5YyW55qE5oOF5Ya15LiL77yM55So5oi36LCD55So5LqGIGRyYXdcbiAgICAgICAgaWYgKHJlZ2lvbikge1xuICAgICAgICAgICAgLy8g5riF55CG5oyH5a6a5Yy65Z+fXG4gICAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdChyZWdpb24ubWluWCwgcmVnaW9uLm1pblksIHJlZ2lvbi5tYXhYIC0gcmVnaW9uLm1pblgsIHJlZ2lvbi5tYXhZIC0gcmVnaW9uLm1pblkpO1xuICAgICAgICAgICAgLy8g5L+d5a2Y5LiK5LiL5paH77yM6K6+572uIGNsaXBcbiAgICAgICAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgIGNvbnRleHQucmVjdChyZWdpb24ubWluWCwgcmVnaW9uLm1pblksIHJlZ2lvbi5tYXhYIC0gcmVnaW9uLm1pblgsIHJlZ2lvbi5tYXhZIC0gcmVnaW9uLm1pblkpO1xuICAgICAgICAgICAgY29udGV4dC5jbGlwKCk7XG4gICAgICAgICAgICBhcHBseUF0dHJzVG9Db250ZXh0KGNvbnRleHQsIHRoaXMpO1xuICAgICAgICAgICAgLy8g56Gu6K6k5pu05paw55qE5YWD57Sg77yM6L+Z5Liq5LyY5YyW5Y+v5Lul5o+Q5Y2HIDEwIOWAjeW3puWPs+eahOaAp+iDve+8jDEwVyDkuKrluKbmnIkgZ3JvdXAg55qE6IqC54K577yM5bGA6YOo5riy5p+T5Lya5LuOIDkwbXMg5LiL6ZmN5YiwIDUtNiBtc1xuICAgICAgICAgICAgY2hlY2tSZWZyZXNoKHRoaXMsIGNoaWxkcmVuLCByZWdpb24pO1xuICAgICAgICAgICAgLy8g57uY5Yi25a2Q5YWD57SgXG4gICAgICAgICAgICBkcmF3Q2hpbGRyZW4oY29udGV4dCwgY2hpbGRyZW4sIHJlZ2lvbik7XG4gICAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyZWZyZXNoRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyDpmLLmraLlj5HnlJ/mlLnlj5jnmoQgZWxlbWVudHMg5rKh5pyJIHJlZ2lvbiDnmoTlnLrmma/vvIzov5nkvJrlj5HnlJ/lnKjlpJrkuKrmg4XlhrXkuItcbiAgICAgICAgICAgIC8vIDEuIOepuueahCBncm91cFxuICAgICAgICAgICAgLy8gMi4g5omA5pyJIGVsZW1lbnRzIOayoeacieWcqOe7mOWbvuWMuuWfn1xuICAgICAgICAgICAgLy8gMy4gZ3JvdXAg5LiL6Z2i55qEIGVsZW1lbnRzIOmakOiXj+aOiVxuICAgICAgICAgICAgLy8g5aaC5p6c5LiN6L+b6KGM5riF55CGIGhhc0NoYW5nZWQg55qE54q25oCB5Lya5LiN5q2j56GuXG4gICAgICAgICAgICBjbGVhckNoYW5nZWQocmVmcmVzaEVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKHJlZnJlc2hFbGVtZW50cywgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmdldCgnaGFzQ2hhbmdlZCcpKSB7XG4gICAgICAgICAgICAgICAgLy8g5Zyo6KeG56qX5aSW55qEIEdyb3VwIOWFg+e0oOS8muWKoOWFpeWIsOabtOaWsOmYn+WIl+mHjO+8jOS9huWunumZheWNtOayoeacieaJp+ihjCBkcmF3KCkg6YC76L6R77yM5Lmf5bCx5rKh5pyJ5riF6ZmkIGhhc0NoYW5nZWQg5qCH6K6wXG4gICAgICAgICAgICAgICAgLy8g5Y2z5bey57uP6YeN57uY5a6M44CB5L2GIGhhc0NoYW5nZWQg5qCH6K6w5rKh5pyJ5riF6Zmk55qE5YWD57Sg77yM6ZyA6KaB57uf5LiA5riF6Zmk5o6J44CC5Li76KaB5pivIEdyb3VwIOWtmOWcqOmXrumimO+8jOWFt+S9k+WOn+WboOW+heaOkuafpVxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0KCdoYXNDaGFuZ2VkJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXQoJ3JlZnJlc2hFbGVtZW50cycsIFtdKTtcbiAgICB9O1xuICAgIC8vIOinpuWPkee7mOWItlxuICAgIENhbnZhcy5wcm90b3R5cGUuX3N0YXJ0RHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGRyYXdGcmFtZSA9IHRoaXMuZ2V0KCdkcmF3RnJhbWUnKTtcbiAgICAgICAgaWYgKCFkcmF3RnJhbWUpIHtcbiAgICAgICAgICAgIGRyYXdGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLmdldCgnbG9jYWxSZWZyZXNoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2RyYXdSZWdpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9kcmF3QWxsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF90aGlzLnNldCgnZHJhd0ZyYW1lJywgbnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdkcmF3RnJhbWUnLCBkcmF3RnJhbWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLnNraXBEcmF3ID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIENhbnZhcy5wcm90b3R5cGUucmVtb3ZlRG9tID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgLy8g6ZyA6KaB5riF55CGIGNhbnZhcyDnlLvluIPlhoXlrrnvvIzlkKbliJlpb3PkuIsg5Yib5bu655qEY2FudmFz5Z6D5Zy+5pyq5Zue5pS277yM5a+86Ie0VG90YWwgY2FudmFzIG1lbW9yeSB1c2UgZXhjZWVkc+mXrumimFxuICAgICAgICAvLyDnm7jlhbPpl67popjliJfooahcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTI1MzI2MTQvdG90YWwtY2FudmFzLW1lbW9yeS11c2UtZXhjZWVkcy10aGUtbWF4aW11bS1saW1pdC1zYWZhcmktMTJcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL29wZW5sYXllcnMvb3BlbmxheWVycy9pc3N1ZXMvOTI5MVxuICAgICAgICBlbC53aWR0aCA9IDA7XG4gICAgICAgIGVsLmhlaWdodCA9IDA7XG4gICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpO1xuICAgIH07XG4gICAgcmV0dXJuIENhbnZhcztcbn0oQWJzdHJhY3RDYW52YXMpKTtcbmV4cG9ydCBkZWZhdWx0IENhbnZhcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNhbnZhcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/canvas.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/group.js": /*!**************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/group.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n\n\n\n\n\n\nvar Group = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"refreshElement\"])(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_2__;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n // 同 shape 中的方法重复了\n Group.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 这个方法以前直接使用的 getCanvasBBox,由于 group 上没有缓存,所以每次重新计算,导致性能开销比较大\n // 大概能够节省全局渲染 15-20% 的性能,如果不在这里加缓存优化后 10W 个节点无法达到 5-6 ms,大概能够 30-40ms\n Group.prototype.cacheCanvasBBox = function () {\n var children = this.cfg.children;\n var xArr = [];\n var yArr = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"each\"])(children, function (child) {\n var bbox = child.cfg.cacheCanvasBBox;\n // isInview 的判定是一旦图形或者分组渲染就要计算是否在视图内,\n // 这个判定 10W 个图形下差不多能够节省 5-6 ms 的开销\n if (bbox && child.cfg.isInView) {\n xArr.push(bbox.minX, bbox.maxX);\n yArr.push(bbox.minY, bbox.maxY);\n }\n });\n var bbox = null;\n if (xArr.length) {\n var minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"min\"])(xArr);\n var maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(xArr);\n var minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"min\"])(yArr);\n var maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(yArr);\n bbox = {\n minX: minX,\n minY: minY,\n x: minX,\n y: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n var canvas = this.cfg.canvas;\n if (canvas) {\n var viewRange = canvas.getViewRange();\n // 如果这个地方判定 isInView == false 设置 bbox 为 false 的话,拾取的性能会更高\n // 但是目前 10W 图形的拾取在 2-5ms 内,这个优化意义不大,可以后期观察再看\n this.set('isInView', Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"intersectRect\"])(bbox, viewRange));\n }\n }\n else {\n this.set('isInView', false);\n }\n this.set('cacheCanvasBBox', bbox);\n };\n Group.prototype.draw = function (context, region) {\n var children = this.cfg.children;\n var allowDraw = region ? this.cfg.refresh : true; // 局部刷新需要判定\n // 这个地方需要判定,在 G6 的场景每个 group 都有 transform 的场景下性能会开销非常大\n // 通过 refresh 的判定,可以不刷新没有发生过变化的分组,不在视窗内的分组等等\n // 如果想进一步提升局部渲染性能,可以进一步优化 refresh 的判定,依然有潜力\n if (children.length && allowDraw) {\n context.save();\n // group 上的矩阵和属性也会应用到上下文上\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, this);\n this._applyClip(context, this.getClip());\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"drawChildren\"])(context, children, region);\n context.restore();\n this.cacheCanvasBBox();\n }\n // 这里的成本比较大,如果不绘制则不再\n // this.set('cacheCanvasBBox', this.getCanvasBBox());\n this.cfg.refresh = null;\n // 绘制后,消除更新标记\n this.set('hasChanged', false);\n };\n // 绘制时被跳过,一般发生在分组隐藏时\n Group.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('hasChanged', false);\n };\n return Group;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractGroup\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Group);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL2dyb3VwLmpzP2MyYWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDVztBQUNaO0FBQytDO0FBQ3BDO0FBQ0E7QUFDNUM7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsV0FBVztBQUMxQjtBQUNBO0FBQ0EsUUFBUSxpRUFBYztBQUN0QjtBQUNBO0FBQ0EsZUFBZSxtQ0FBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNFQUFtQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSx1QkFBdUIsc0RBQUc7QUFDMUIsdUJBQXVCLHNEQUFHO0FBQzFCLHVCQUF1QixzREFBRztBQUMxQix1QkFBdUIsc0RBQUc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGdFQUFhO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0VBQW1CO0FBQy9CO0FBQ0EsWUFBWSwrREFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsMERBQWE7QUFDQSxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9ncm91cC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQWJzdHJhY3RHcm91cCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IGFwcGx5QXR0cnNUb0NvbnRleHQsIGRyYXdDaGlsZHJlbiwgcmVmcmVzaEVsZW1lbnQgfSBmcm9tICcuL3V0aWwvZHJhdyc7XG5pbXBvcnQgeyBlYWNoLCBtYXgsIG1pbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgaW50ZXJzZWN0UmVjdCB9IGZyb20gJy4vdXRpbC91dGlsJztcbnZhciBHcm91cCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoR3JvdXAsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gR3JvdXAoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIEdyb3VwLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIHJlZnJlc2hFbGVtZW50KHRoaXMsIGNoYW5nZVR5cGUpO1xuICAgIH07XG4gICAgR3JvdXAucHJvdG90eXBlLmdldFNoYXBlQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFNoYXBlO1xuICAgIH07XG4gICAgR3JvdXAucHJvdG90eXBlLmdldEdyb3VwQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEdyb3VwO1xuICAgIH07XG4gICAgLy8g5ZCMIHNoYXBlIOS4reeahOaWueazlemHjeWkjeS6hlxuICAgIEdyb3VwLnByb3RvdHlwZS5fYXBwbHlDbGlwID0gZnVuY3Rpb24gKGNvbnRleHQsIGNsaXApIHtcbiAgICAgICAgaWYgKGNsaXApIHtcbiAgICAgICAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICAgICAgLy8g5bCGIGNsaXAg55qE5bGe5oCn5oyC6L295YiwIGNvbnRleHQg5LiKXG4gICAgICAgICAgICBhcHBseUF0dHJzVG9Db250ZXh0KGNvbnRleHQsIGNsaXApO1xuICAgICAgICAgICAgLy8g57uY5Yi2IGNsaXAg6Lev5b6EXG4gICAgICAgICAgICBjbGlwLmNyZWF0ZVBhdGgoY29udGV4dCk7XG4gICAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgICAgIC8vIOijgeWJqlxuICAgICAgICAgICAgY29udGV4dC5jbGlwKCk7XG4gICAgICAgICAgICBjbGlwLl9hZnRlckRyYXcoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g6L+Z5Liq5pa55rOV5Lul5YmN55u05o6l5L2/55So55qEIGdldENhbnZhc0JCb3jvvIznlLHkuo4gZ3JvdXAg5LiK5rKh5pyJ57yT5a2Y77yM5omA5Lul5q+P5qyh6YeN5paw6K6h566X77yM5a+86Ie05oCn6IO95byA6ZSA5q+U6L6D5aSnXG4gICAgLy8g5aSn5qaC6IO95aSf6IqC55yB5YWo5bGA5riy5p+TIDE1LTIwJSDnmoTmgKfog73vvIzlpoLmnpzkuI3lnKjov5nph4zliqDnvJPlrZjkvJjljJblkI4gMTBXIOS4quiKgueCueaXoOazlei+vuWIsCA1LTYgbXPvvIzlpKfmpoLog73lpJ8gMzAtNDBtc1xuICAgIEdyb3VwLnByb3RvdHlwZS5jYWNoZUNhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2ZnLmNoaWxkcmVuO1xuICAgICAgICB2YXIgeEFyciA9IFtdO1xuICAgICAgICB2YXIgeUFyciA9IFtdO1xuICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHZhciBiYm94ID0gY2hpbGQuY2ZnLmNhY2hlQ2FudmFzQkJveDtcbiAgICAgICAgICAgIC8vIGlzSW52aWV3IOeahOWIpOWumuaYr+S4gOaXpuWbvuW9ouaIluiAheWIhue7hOa4suafk+Wwseimgeiuoeeul+aYr+WQpuWcqOinhuWbvuWGhe+8jFxuICAgICAgICAgICAgLy8g6L+Z5Liq5Yik5a6aIDEwVyDkuKrlm77lvaLkuIvlt67kuI3lpJrog73lpJ/oioLnnIEgNS02IG1zIOeahOW8gOmUgFxuICAgICAgICAgICAgaWYgKGJib3ggJiYgY2hpbGQuY2ZnLmlzSW5WaWV3KSB7XG4gICAgICAgICAgICAgICAgeEFyci5wdXNoKGJib3gubWluWCwgYmJveC5tYXhYKTtcbiAgICAgICAgICAgICAgICB5QXJyLnB1c2goYmJveC5taW5ZLCBiYm94Lm1heFkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGJib3ggPSBudWxsO1xuICAgICAgICBpZiAoeEFyci5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBtaW5YID0gbWluKHhBcnIpO1xuICAgICAgICAgICAgdmFyIG1heFggPSBtYXgoeEFycik7XG4gICAgICAgICAgICB2YXIgbWluWSA9IG1pbih5QXJyKTtcbiAgICAgICAgICAgIHZhciBtYXhZID0gbWF4KHlBcnIpO1xuICAgICAgICAgICAgYmJveCA9IHtcbiAgICAgICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgICAgIG1pblk6IG1pblksXG4gICAgICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgICAgICB5OiBtaW5ZLFxuICAgICAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICAgICAgbWF4WTogbWF4WSxcbiAgICAgICAgICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jZmcuY2FudmFzO1xuICAgICAgICAgICAgaWYgKGNhbnZhcykge1xuICAgICAgICAgICAgICAgIHZhciB2aWV3UmFuZ2UgPSBjYW52YXMuZ2V0Vmlld1JhbmdlKCk7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c6L+Z5Liq5Zyw5pa55Yik5a6aIGlzSW5WaWV3ID09IGZhbHNlIOiuvue9riBiYm94IOS4uiBmYWxzZSDnmoTor53vvIzmi77lj5bnmoTmgKfog73kvJrmm7Tpq5hcbiAgICAgICAgICAgICAgICAvLyDkvYbmmK/nm67liY0gMTBXIOWbvuW9oueahOaLvuWPluWcqCAyLTVtcyDlhoXvvIzov5nkuKrkvJjljJbmhI/kuYnkuI3lpKfvvIzlj6/ku6XlkI7mnJ/op4Llr5/lho3nnItcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgnaXNJblZpZXcnLCBpbnRlcnNlY3RSZWN0KGJib3gsIHZpZXdSYW5nZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXQoJ2lzSW5WaWV3JywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCdjYWNoZUNhbnZhc0JCb3gnLCBiYm94KTtcbiAgICB9O1xuICAgIEdyb3VwLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGNvbnRleHQsIHJlZ2lvbikge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNmZy5jaGlsZHJlbjtcbiAgICAgICAgdmFyIGFsbG93RHJhdyA9IHJlZ2lvbiA/IHRoaXMuY2ZnLnJlZnJlc2ggOiB0cnVlOyAvLyDlsYDpg6jliLfmlrDpnIDopoHliKTlrppcbiAgICAgICAgLy8g6L+Z5Liq5Zyw5pa56ZyA6KaB5Yik5a6a77yM5ZyoIEc2IOeahOWcuuaZr+avj+S4qiBncm91cCDpg73mnIkgdHJhbnNmb3JtIOeahOWcuuaZr+S4i+aAp+iDveS8muW8gOmUgOmdnuW4uOWkp1xuICAgICAgICAvLyDpgJrov4cgcmVmcmVzaCDnmoTliKTlrprvvIzlj6/ku6XkuI3liLfmlrDmsqHmnInlj5HnlJ/ov4flj5jljJbnmoTliIbnu4TvvIzkuI3lnKjop4bnqpflhoXnmoTliIbnu4TnrYnnrYlcbiAgICAgICAgLy8g5aaC5p6c5oOz6L+b5LiA5q2l5o+Q5Y2H5bGA6YOo5riy5p+T5oCn6IO977yM5Y+v5Lul6L+b5LiA5q2l5LyY5YyWIHJlZnJlc2gg55qE5Yik5a6a77yM5L6d54S25pyJ5r2c5YqbXG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggJiYgYWxsb3dEcmF3KSB7XG4gICAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICAgIC8vIGdyb3VwIOS4iueahOefqemYteWSjOWxnuaAp+S5n+S8muW6lOeUqOWIsOS4iuS4i+aWh+S4ilxuICAgICAgICAgICAgLy8g5YWI5bCGIGF0dHJzIOW6lOeUqOWIsOS4iuS4i+aWh+S4re+8jOWGjeiuvue9riBjbGlw44CC5Zug5Li6IGNsaXAg5bqU6K+l6KKr5b2T5YmN5YWD57Sg55qEIG1hdHJpeCDmiYDlvbHlk41cbiAgICAgICAgICAgIGFwcGx5QXR0cnNUb0NvbnRleHQoY29udGV4dCwgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLl9hcHBseUNsaXAoY29udGV4dCwgdGhpcy5nZXRDbGlwKCkpO1xuICAgICAgICAgICAgZHJhd0NoaWxkcmVuKGNvbnRleHQsIGNoaWxkcmVuLCByZWdpb24pO1xuICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgICAgICB0aGlzLmNhY2hlQ2FudmFzQkJveCgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOi/memHjOeahOaIkOacrOavlOi+g+Wkp++8jOWmguaenOS4jee7mOWItuWImeS4jeWGjVxuICAgICAgICAvLyB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgdGhpcy5nZXRDYW52YXNCQm94KCkpO1xuICAgICAgICB0aGlzLmNmZy5yZWZyZXNoID0gbnVsbDtcbiAgICAgICAgLy8g57uY5Yi25ZCO77yM5raI6Zmk5pu05paw5qCH6K6wXG4gICAgICAgIHRoaXMuc2V0KCdoYXNDaGFuZ2VkJywgZmFsc2UpO1xuICAgIH07XG4gICAgLy8g57uY5Yi25pe26KKr6Lez6L+H77yM5LiA6Iis5Y+R55Sf5Zyo5YiG57uE6ZqQ6JeP5pe2XG4gICAgR3JvdXAucHJvdG90eXBlLnNraXBEcmF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCdoYXNDaGFuZ2VkJywgZmFsc2UpO1xuICAgIH07XG4gICAgcmV0dXJuIEdyb3VwO1xufShBYnN0cmFjdEdyb3VwKSk7XG5leHBvcnQgZGVmYXVsdCBHcm91cDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdyb3VwLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/group.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/index.js": /*!**************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/index.js ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-canvas/esm/shape/index.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _shape__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _antv_g_base__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Canvas\",\"Group\",\"Shape\",\"getArcParams\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./canvas */ \"./node_modules/@antv/g-canvas/esm/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Canvas\", function() { return _canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./group */ \"./node_modules/@antv/g-canvas/esm/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Group\", function() { return _group__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _util_arc_params__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/arc-params */ \"./node_modules/@antv/g-canvas/esm/util/arc-params.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getArcParams\", function() { return _util_arc_params__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\nvar version = '0.5.12';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL2luZGV4LmpzPzUzYzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0o7QUFDZ0I7QUFDRjtBQUMxQjtBQUMyQztBQUNyRDtBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuZXhwb3J0ICogZnJvbSAnQGFudHYvZy1iYXNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ2FudmFzIH0gZnJvbSAnLi9jYW52YXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBHcm91cCB9IGZyb20gJy4vZ3JvdXAnO1xuZXhwb3J0IHsgU2hhcGUgfTtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0QXJjUGFyYW1zIH0gZnJvbSAnLi91dGlsL2FyYy1wYXJhbXMnO1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJzAuNS4xMic7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/base.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/base.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index */ \"./node_modules/@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../group */ \"./node_modules/@antv/g-canvas/esm/group.js\");\n\n\n\n\n\n\n\nvar ShapeBase = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ShapeBase, _super);\n function ShapeBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { lineWidth: 1, lineAppendWidth: 0, strokeOpacity: 1, fillOpacity: 1 });\n };\n ShapeBase.prototype.getShapeBase = function () {\n return _index__WEBPACK_IMPORTED_MODULE_4__;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"refreshElement\"])(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var type = this.get('type');\n var lineWidth = this.getHitLineWidth();\n // const attrs = this.attr();\n var bboxMethod = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxMethod\"])(type);\n var box = bboxMethod(this);\n var halfLineWidth = lineWidth / 2;\n var minX = box.x - halfLineWidth;\n var minY = box.y - halfLineWidth;\n var maxX = box.x + box.width + halfLineWidth;\n var maxY = box.y + box.height + halfLineWidth;\n return {\n x: minX,\n minX: minX,\n y: minY,\n minY: minY,\n width: box.width + lineWidth,\n height: box.height + lineWidth,\n maxX: maxX,\n maxY: maxY,\n };\n };\n ShapeBase.prototype.isFill = function () {\n return !!this.attrs['fill'] || this.isClipShape();\n };\n ShapeBase.prototype.isStroke = function () {\n return !!this.attrs['stroke'];\n };\n // 同 shape 中的方法重复了\n ShapeBase.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 绘制图形时需要考虑 region 限制\n ShapeBase.prototype.draw = function (context, region) {\n var clip = this.cfg.clipShape;\n // 如果指定了 region,同时不允许刷新时,直接返回\n if (region) {\n if (this.cfg.refresh === false) {\n // this._afterDraw();\n this.set('hasChanged', false);\n return;\n }\n // 是否相交需要考虑 clip 的包围盒\n var bbox = this.getCanvasBBox();\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"intersectRect\"])(region, bbox)) {\n // 图形的包围盒与重绘区域不相交时,也需要清除标记\n this.set('hasChanged', false);\n // 存在多种情形需要更新 cacheCanvasBBox 和 isInview 的判定\n // 1. 之前图形在视窗内,但是现在不再视窗内\n // 2. 如果当前的图形以及父元素都没有发生过变化,refresh = false 不会走到这里,所以这里的图形都是父元素发生变化,但是没有在视图内的元素\n if (this.cfg.isInView) {\n this._afterDraw();\n }\n return;\n }\n }\n context.save();\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, this);\n this._applyClip(context, clip);\n this.drawPath(context);\n context.restore();\n this._afterDraw();\n };\n ShapeBase.prototype.getCanvasViewBox = function () {\n var canvas = this.cfg.canvas;\n if (canvas) {\n // @ts-ignore\n return canvas.getViewRange();\n }\n return null;\n };\n ShapeBase.prototype.cacheCanvasBBox = function () {\n var canvasBBox = this.getCanvasViewBox();\n // 绘制的时候缓存包围盒\n if (canvasBBox) {\n var bbox = this.getCanvasBBox();\n var isInView = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"intersectRect\"])(bbox, canvasBBox);\n this.set('isInView', isInView);\n // 不再视窗内 cacheCanvasBBox 设置成 null,会提升局部渲染的性能,\n // 因为在局部渲染影响的包围盒计算时不考虑这个图形的包围盒\n // 父元素 cacheCanvasBBox 计算的时候也不计算\n if (isInView) {\n this.set('cacheCanvasBBox', bbox);\n }\n else {\n this.set('cacheCanvasBBox', null);\n }\n }\n };\n ShapeBase.prototype._afterDraw = function () {\n this.cacheCanvasBBox();\n // 绘制后消除标记\n this.set('hasChanged', false);\n this.set('refresh', null);\n };\n ShapeBase.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('isInView', null);\n this.set('hasChanged', false);\n };\n /**\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.drawPath = function (context) {\n this.createPath(context);\n this.strokeAndFill(context);\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 填充图形\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.fill = function (context) {\n context.fill();\n };\n /**\n * @protected\n * 绘制图形边框\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.stroke = function (context) {\n context.stroke();\n };\n // 绘制或者填充\n ShapeBase.prototype.strokeAndFill = function (context) {\n var _a = this.attrs, lineWidth = _a.lineWidth, opacity = _a.opacity, strokeOpacity = _a.strokeOpacity, fillOpacity = _a.fillOpacity;\n if (this.isFill()) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n }\n else {\n this.fill(context);\n }\n }\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = strokeOpacity;\n }\n this.stroke(context);\n }\n }\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.createPath = function (context) { };\n /**\n * 绘制完成 path 后的操作\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.afterDrawPath = function (context) { };\n ShapeBase.prototype.isInShape = function (refX, refY) {\n // return HitUtil.isHitShape(this, refX, refY);\n var isStroke = this.isStroke();\n var isFill = this.isFill();\n var lineWidth = this.getHitLineWidth();\n return this.isInStrokeOrPath(refX, refY, isStroke, isFill, lineWidth);\n };\n // 之所以不拆成 isInStroke 和 isInPath 在于两者存在一些共同的计算\n ShapeBase.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n if (!this.isStroke()) {\n return 0;\n }\n var attrs = this.attrs;\n return attrs['lineWidth'] + attrs['lineAppendWidth'];\n };\n return ShapeBase;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractShape\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ShapeBase);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2Jhc2UuanM/MjRiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNDO0FBQ087QUFDZTtBQUN0QjtBQUNaO0FBQ0o7QUFDN0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxxRUFBcUU7QUFDbkg7QUFDQTtBQUNBLGVBQWUsbUNBQUs7QUFDcEI7QUFDQTtBQUNBLGVBQWUsOENBQUs7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxRQUFRLGlFQUFjO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsa0VBQWE7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNFQUFtQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGdFQUFhO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxzRUFBbUI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGdFQUFhO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlCQUF5QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHdEQUFLO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEM7QUFDQSx5REFBeUQ7QUFDekQ7QUFDQTtBQUNBLGVBQWUseUJBQXlCO0FBQ3hDO0FBQ0EsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDBEQUFhO0FBQ0Esd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvYmFzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFic3RyYWN0U2hhcGUgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0IHsgaXNOaWwsIGludGVyc2VjdFJlY3QgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgYXBwbHlBdHRyc1RvQ29udGV4dCwgcmVmcmVzaEVsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RyYXcnO1xuaW1wb3J0IHsgZ2V0QkJveE1ldGhvZCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL2luZGV4JztcbmltcG9ydCBHcm91cCBmcm9tICcuLi9ncm91cCc7XG52YXIgU2hhcGVCYXNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTaGFwZUJhc2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU2hhcGVCYXNlKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICAvLyDorr7nva7pu5jorqTlgLxcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgbGluZVdpZHRoOiAxLCBsaW5lQXBwZW5kV2lkdGg6IDAsIHN0cm9rZU9wYWNpdHk6IDEsIGZpbGxPcGFjaXR5OiAxIH0pO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRTaGFwZUJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBTaGFwZTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZ2V0R3JvdXBCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gR3JvdXA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIHJlZnJlc2hFbGVtZW50KHRoaXMsIGNoYW5nZVR5cGUpO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5jYWxjdWxhdGVCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHlwZSA9IHRoaXMuZ2V0KCd0eXBlJyk7XG4gICAgICAgIHZhciBsaW5lV2lkdGggPSB0aGlzLmdldEhpdExpbmVXaWR0aCgpO1xuICAgICAgICAvLyBjb25zdCBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgYmJveE1ldGhvZCA9IGdldEJCb3hNZXRob2QodHlwZSk7XG4gICAgICAgIHZhciBib3ggPSBiYm94TWV0aG9kKHRoaXMpO1xuICAgICAgICB2YXIgaGFsZkxpbmVXaWR0aCA9IGxpbmVXaWR0aCAvIDI7XG4gICAgICAgIHZhciBtaW5YID0gYm94LnggLSBoYWxmTGluZVdpZHRoO1xuICAgICAgICB2YXIgbWluWSA9IGJveC55IC0gaGFsZkxpbmVXaWR0aDtcbiAgICAgICAgdmFyIG1heFggPSBib3gueCArIGJveC53aWR0aCArIGhhbGZMaW5lV2lkdGg7XG4gICAgICAgIHZhciBtYXhZID0gYm94LnkgKyBib3guaGVpZ2h0ICsgaGFsZkxpbmVXaWR0aDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgeTogbWluWSxcbiAgICAgICAgICAgIG1pblk6IG1pblksXG4gICAgICAgICAgICB3aWR0aDogYm94LndpZHRoICsgbGluZVdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBib3guaGVpZ2h0ICsgbGluZVdpZHRoLFxuICAgICAgICAgICAgbWF4WDogbWF4WCxcbiAgICAgICAgICAgIG1heFk6IG1heFksXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmlzRmlsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5hdHRyc1snZmlsbCddIHx8IHRoaXMuaXNDbGlwU2hhcGUoKTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuaXNTdHJva2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuYXR0cnNbJ3N0cm9rZSddO1xuICAgIH07XG4gICAgLy8g5ZCMIHNoYXBlIOS4reeahOaWueazlemHjeWkjeS6hlxuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuX2FwcGx5Q2xpcCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjbGlwKSB7XG4gICAgICAgIGlmIChjbGlwKSB7XG4gICAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICAgIC8vIOWwhiBjbGlwIOeahOWxnuaAp+aMgui9veWIsCBjb250ZXh0IOS4ilxuICAgICAgICAgICAgYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCBjbGlwKTtcbiAgICAgICAgICAgIC8vIOe7mOWItiBjbGlwIOi3r+W+hFxuICAgICAgICAgICAgY2xpcC5jcmVhdGVQYXRoKGNvbnRleHQpO1xuICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgICAgICAvLyDoo4HliapcbiAgICAgICAgICAgIGNvbnRleHQuY2xpcCgpO1xuICAgICAgICAgICAgY2xpcC5fYWZ0ZXJEcmF3KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOe7mOWItuWbvuW9ouaXtumcgOimgeiAg+iZkSByZWdpb24g6ZmQ5Yi2XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGNvbnRleHQsIHJlZ2lvbikge1xuICAgICAgICB2YXIgY2xpcCA9IHRoaXMuY2ZnLmNsaXBTaGFwZTtcbiAgICAgICAgLy8g5aaC5p6c5oyH5a6a5LqGIHJlZ2lvbu+8jOWQjOaXtuS4jeWFgeiuuOWIt+aWsOaXtu+8jOebtOaOpei/lOWbnlxuICAgICAgICBpZiAocmVnaW9uKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jZmcucmVmcmVzaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLl9hZnRlckRyYXcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDmmK/lkKbnm7jkuqTpnIDopoHogIPomZEgY2xpcCDnmoTljIXlm7Tnm5JcbiAgICAgICAgICAgIHZhciBiYm94ID0gdGhpcy5nZXRDYW52YXNCQm94KCk7XG4gICAgICAgICAgICBpZiAoIWludGVyc2VjdFJlY3QocmVnaW9uLCBiYm94KSkge1xuICAgICAgICAgICAgICAgIC8vIOWbvuW9oueahOWMheWbtOebkuS4jumHjee7mOWMuuWfn+S4jeebuOS6pOaXtu+8jOS5n+mcgOimgea4hemZpOagh+iusFxuICAgICAgICAgICAgICAgIHRoaXMuc2V0KCdoYXNDaGFuZ2VkJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIC8vIOWtmOWcqOWkmuenjeaDheW9oumcgOimgeabtOaWsCBjYWNoZUNhbnZhc0JCb3gg5ZKMIGlzSW52aWV3IOeahOWIpOWumlxuICAgICAgICAgICAgICAgIC8vIDEuIOS5i+WJjeWbvuW9ouWcqOinhueql+WGhe+8jOS9huaYr+eOsOWcqOS4jeWGjeinhueql+WGhVxuICAgICAgICAgICAgICAgIC8vIDIuIOWmguaenOW9k+WJjeeahOWbvuW9ouS7peWPiueItuWFg+e0oOmDveayoeacieWPkeeUn+i/h+WPmOWMlu+8jHJlZnJlc2ggPSBmYWxzZSDkuI3kvJrotbDliLDov5nph4zvvIzmiYDku6Xov5nph4znmoTlm77lvaLpg73mmK/niLblhYPntKDlj5HnlJ/lj5jljJbvvIzkvYbmmK/msqHmnInlnKjop4blm77lhoXnmoTlhYPntKBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jZmcuaXNJblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWZ0ZXJEcmF3KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgLy8g5YWI5bCGIGF0dHJzIOW6lOeUqOWIsOS4iuS4i+aWh+S4re+8jOWGjeiuvue9riBjbGlw44CC5Zug5Li6IGNsaXAg5bqU6K+l6KKr5b2T5YmN5YWD57Sg55qEIG1hdHJpeCDmiYDlvbHlk41cbiAgICAgICAgYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCB0aGlzKTtcbiAgICAgICAgdGhpcy5fYXBwbHlDbGlwKGNvbnRleHQsIGNsaXApO1xuICAgICAgICB0aGlzLmRyYXdQYXRoKGNvbnRleHQpO1xuICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgdGhpcy5fYWZ0ZXJEcmF3KCk7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldENhbnZhc1ZpZXdCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmNmZy5jYW52YXM7XG4gICAgICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiBjYW52YXMuZ2V0Vmlld1JhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmNhY2hlQ2FudmFzQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNhbnZhc0JCb3ggPSB0aGlzLmdldENhbnZhc1ZpZXdCb3goKTtcbiAgICAgICAgLy8g57uY5Yi255qE5pe25YCZ57yT5a2Y5YyF5Zu055uSXG4gICAgICAgIGlmIChjYW52YXNCQm94KSB7XG4gICAgICAgICAgICB2YXIgYmJveCA9IHRoaXMuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgICAgICAgdmFyIGlzSW5WaWV3ID0gaW50ZXJzZWN0UmVjdChiYm94LCBjYW52YXNCQm94KTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdpc0luVmlldycsIGlzSW5WaWV3KTtcbiAgICAgICAgICAgIC8vIOS4jeWGjeinhueql+WGhSBjYWNoZUNhbnZhc0JCb3gg6K6+572u5oiQIG51bGzvvIzkvJrmj5DljYflsYDpg6jmuLLmn5PnmoTmgKfog73vvIxcbiAgICAgICAgICAgIC8vIOWboOS4uuWcqOWxgOmDqOa4suafk+W9seWTjeeahOWMheWbtOebkuiuoeeul+aXtuS4jeiAg+iZkei/meS4quWbvuW9oueahOWMheWbtOebklxuICAgICAgICAgICAgLy8g54i25YWD57SgIGNhY2hlQ2FudmFzQkJveCDorqHnrpfnmoTml7blgJnkuZ/kuI3orqHnrpdcbiAgICAgICAgICAgIGlmIChpc0luVmlldykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0KCdjYWNoZUNhbnZhc0JCb3gnLCBiYm94KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0KCdjYWNoZUNhbnZhc0JCb3gnLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5fYWZ0ZXJEcmF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmNhY2hlQ2FudmFzQkJveCgpO1xuICAgICAgICAvLyDnu5jliLblkI7mtojpmaTmoIforrBcbiAgICAgICAgdGhpcy5zZXQoJ2hhc0NoYW5nZWQnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuc2V0KCdyZWZyZXNoJywgbnVsbCk7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLnNraXBEcmF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCdpc0luVmlldycsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOe7mOWItuWbvuW9oueahOi3r+W+hFxuICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IOS4iuS4i+aWh1xuICAgICAqL1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZHJhd1BhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB0aGlzLmNyZWF0ZVBhdGgoY29udGV4dCk7XG4gICAgICAgIHRoaXMuc3Ryb2tlQW5kRmlsbChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5hZnRlckRyYXdQYXRoKGNvbnRleHQpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOWhq+WFheWbvuW9olxuICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IGNvbnRleHQg5LiK5LiL5paHXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgY29udGV4dC5maWxsKCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog57uY5Yi25Zu+5b2i6L655qGGXG4gICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHQgY29udGV4dCDkuIrkuIvmlodcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLnN0cm9rZSA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgfTtcbiAgICAvLyDnu5jliLbmiJbogIXloavlhYVcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLnN0cm9rZUFuZEZpbGwgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHJzLCBsaW5lV2lkdGggPSBfYS5saW5lV2lkdGgsIG9wYWNpdHkgPSBfYS5vcGFjaXR5LCBzdHJva2VPcGFjaXR5ID0gX2Euc3Ryb2tlT3BhY2l0eSwgZmlsbE9wYWNpdHkgPSBfYS5maWxsT3BhY2l0eTtcbiAgICAgICAgaWYgKHRoaXMuaXNGaWxsKCkpIHtcbiAgICAgICAgICAgIGlmICghaXNOaWwoZmlsbE9wYWNpdHkpICYmIGZpbGxPcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IGZpbGxPcGFjaXR5O1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbChjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb3BhY2l0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbChjb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1N0cm9rZSgpKSB7XG4gICAgICAgICAgICBpZiAobGluZVdpZHRoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmICghaXNOaWwoc3Ryb2tlT3BhY2l0eSkgJiYgc3Ryb2tlT3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gc3Ryb2tlT3BhY2l0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJva2UoY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZnRlckRyYXdQYXRoKGNvbnRleHQpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOe7mOWItuWbvuW9oueahOi3r+W+hFxuICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IOS4iuS4i+aWh1xuICAgICAqL1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7IH07XG4gICAgLyoqXG4gICAgICog57uY5Yi25a6M5oiQIHBhdGgg5ZCO55qE5pON5L2cXG4gICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHQg5LiK5LiL5paHXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5hZnRlckRyYXdQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHsgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmlzSW5TaGFwZSA9IGZ1bmN0aW9uIChyZWZYLCByZWZZKSB7XG4gICAgICAgIC8vIHJldHVybiBIaXRVdGlsLmlzSGl0U2hhcGUodGhpcywgcmVmWCwgcmVmWSk7XG4gICAgICAgIHZhciBpc1N0cm9rZSA9IHRoaXMuaXNTdHJva2UoKTtcbiAgICAgICAgdmFyIGlzRmlsbCA9IHRoaXMuaXNGaWxsKCk7XG4gICAgICAgIHZhciBsaW5lV2lkdGggPSB0aGlzLmdldEhpdExpbmVXaWR0aCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5pc0luU3Ryb2tlT3JQYXRoKHJlZlgsIHJlZlksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCk7XG4gICAgfTtcbiAgICAvLyDkuYvmiYDku6XkuI3mi4bmiJAgaXNJblN0cm9rZSDlkowgaXNJblBhdGgg5Zyo5LqO5Lik6ICF5a2Y5Zyo5LiA5Lqb5YWx5ZCM55qE6K6h566XXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5bnur/mi77lj5bnmoTlrr3luqZcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSDnur/nmoTmi77lj5blrr3luqZcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldEhpdExpbmVXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU3Ryb2tlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIHJldHVybiBhdHRyc1snbGluZVdpZHRoJ10gKyBhdHRyc1snbGluZUFwcGVuZFdpZHRoJ107XG4gICAgfTtcbiAgICByZXR1cm4gU2hhcGVCYXNlO1xufShBYnN0cmFjdFNoYXBlKSk7XG5leHBvcnQgZGVmYXVsdCBTaGFwZUJhc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iYXNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/base.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/circle.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/circle.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/**\n * @fileoverview 圆\n * @author dxq613@gmail.com\n */\n\n\n\nvar Circle = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, r: 0 });\n };\n Circle.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n var halfLineWidth = lineWidth / 2;\n var absDistance = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(cx, cy, x, y);\n // 直接用距离,如果同时存在边和填充时,可以减少两次计算\n if (isFill && isStroke) {\n return absDistance <= r + halfLineWidth;\n }\n if (isFill) {\n return absDistance <= r;\n }\n if (isStroke) {\n return absDistance >= r - halfLineWidth && absDistance <= r + halfLineWidth;\n }\n return false;\n };\n Circle.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n context.beginPath();\n context.arc(cx, cy, r, 0, Math.PI * 2, false);\n context.closePath();\n };\n return Circle;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Circle);\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2NpcmNsZS5qcz9iMTg2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDYjtBQUNTO0FBQ3hDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLG1CQUFtQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwyREFBUTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDlnIZcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBkaXN0YW5jZSB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG52YXIgQ2lyY2xlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDaXJjbGUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2lyY2xlKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENpcmNsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCByOiAwIH0pO1xuICAgIH07XG4gICAgQ2lyY2xlLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGN4ID0gYXR0cnMueDtcbiAgICAgICAgdmFyIGN5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIHIgPSBhdHRycy5yO1xuICAgICAgICB2YXIgaGFsZkxpbmVXaWR0aCA9IGxpbmVXaWR0aCAvIDI7XG4gICAgICAgIHZhciBhYnNEaXN0YW5jZSA9IGRpc3RhbmNlKGN4LCBjeSwgeCwgeSk7XG4gICAgICAgIC8vIOebtOaOpeeUqOi3neemu++8jOWmguaenOWQjOaXtuWtmOWcqOi+ueWSjOWhq+WFheaXtu+8jOWPr+S7peWHj+WwkeS4pOasoeiuoeeul1xuICAgICAgICBpZiAoaXNGaWxsICYmIGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWJzRGlzdGFuY2UgPD0gciArIGhhbGZMaW5lV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRmlsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGFic0Rpc3RhbmNlIDw9IHI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWJzRGlzdGFuY2UgPj0gciAtIGhhbGZMaW5lV2lkdGggJiYgYWJzRGlzdGFuY2UgPD0gciArIGhhbGZMaW5lV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgQ2lyY2xlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBjeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciBjeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciByID0gYXR0cnMucjtcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgY29udGV4dC5hcmMoY3gsIGN5LCByLCAwLCBNYXRoLlBJICogMiwgZmFsc2UpO1xuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIH07XG4gICAgcmV0dXJuIENpcmNsZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBDaXJjbGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jaXJjbGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/circle.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/ellipse.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/ellipse.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/**\n * @fileoverview 椭圆\n * @author dxq613@gmail.com\n */\n\n\n// 根据椭圆公式计算 x*x/rx*rx + y*y/ry*ry;\nfunction ellipseDistance(squareX, squareY, rx, ry) {\n return squareX / (rx * rx) + squareY / (ry * ry);\n}\nvar Ellipse = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Ellipse, _super);\n function Ellipse() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, rx: 0, ry: 0 });\n };\n Ellipse.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var halfLineWith = lineWidth / 2;\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx, ry = attrs.ry;\n var squareX = (x - cx) * (x - cx);\n var squareY = (y - cy) * (y - cy);\n // 使用椭圆的公式: x*x/rx*rx + y*y/ry*ry = 1;\n if (isFill && isStroke) {\n return ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1;\n }\n if (isFill) {\n return ellipseDistance(squareX, squareY, rx, ry) <= 1;\n }\n if (isStroke) {\n return (ellipseDistance(squareX, squareY, rx - halfLineWith, ry - halfLineWith) >= 1 &&\n ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1);\n }\n return false;\n };\n Ellipse.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx;\n var ry = attrs.ry;\n context.beginPath();\n // 兼容逻辑\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, 0, 0, Math.PI * 2, false);\n }\n else {\n // 如果不支持,则使用圆来绘制,进行变形\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.save();\n context.translate(cx, cy);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, 0, Math.PI * 2);\n context.restore();\n context.closePath();\n }\n };\n return Ellipse;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Ellipse);\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2VsbGlwc2UuanM/NThhZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNiO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsMkJBQTJCO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9lbGxpcHNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOakreWchlxuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbi8vIOagueaNruakreWchuWFrOW8j+iuoeeulyB4KngvcngqcnggKyB5Knkvcnkqcnk7XG5mdW5jdGlvbiBlbGxpcHNlRGlzdGFuY2Uoc3F1YXJlWCwgc3F1YXJlWSwgcngsIHJ5KSB7XG4gICAgcmV0dXJuIHNxdWFyZVggLyAocnggKiByeCkgKyBzcXVhcmVZIC8gKHJ5ICogcnkpO1xufVxudmFyIEVsbGlwc2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEVsbGlwc2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRWxsaXBzZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBFbGxpcHNlLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHg6IDAsIHk6IDAsIHJ4OiAwLCByeTogMCB9KTtcbiAgICB9O1xuICAgIEVsbGlwc2UucHJvdG90eXBlLmlzSW5TdHJva2VPclBhdGggPSBmdW5jdGlvbiAoeCwgeSwgaXNTdHJva2UsIGlzRmlsbCwgbGluZVdpZHRoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgaGFsZkxpbmVXaXRoID0gbGluZVdpZHRoIC8gMjtcbiAgICAgICAgdmFyIGN4ID0gYXR0cnMueDtcbiAgICAgICAgdmFyIGN5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIHJ4ID0gYXR0cnMucngsIHJ5ID0gYXR0cnMucnk7XG4gICAgICAgIHZhciBzcXVhcmVYID0gKHggLSBjeCkgKiAoeCAtIGN4KTtcbiAgICAgICAgdmFyIHNxdWFyZVkgPSAoeSAtIGN5KSAqICh5IC0gY3kpO1xuICAgICAgICAvLyDkvb/nlKjmpK3lnIbnmoTlhazlvI/vvJogeCp4L3J4KnJ4ICsgeSp5L3J5KnJ5ID0gMTtcbiAgICAgICAgaWYgKGlzRmlsbCAmJiBpc1N0cm9rZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVsbGlwc2VEaXN0YW5jZShzcXVhcmVYLCBzcXVhcmVZLCByeCArIGhhbGZMaW5lV2l0aCwgcnkgKyBoYWxmTGluZVdpdGgpIDw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRmlsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsbGlwc2VEaXN0YW5jZShzcXVhcmVYLCBzcXVhcmVZLCByeCwgcnkpIDw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICByZXR1cm4gKGVsbGlwc2VEaXN0YW5jZShzcXVhcmVYLCBzcXVhcmVZLCByeCAtIGhhbGZMaW5lV2l0aCwgcnkgLSBoYWxmTGluZVdpdGgpID49IDEgJiZcbiAgICAgICAgICAgICAgICBlbGxpcHNlRGlzdGFuY2Uoc3F1YXJlWCwgc3F1YXJlWSwgcnggKyBoYWxmTGluZVdpdGgsIHJ5ICsgaGFsZkxpbmVXaXRoKSA8PSAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBFbGxpcHNlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBjeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciBjeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciByeCA9IGF0dHJzLnJ4O1xuICAgICAgICB2YXIgcnkgPSBhdHRycy5yeTtcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgLy8g5YW85a656YC76L6RXG4gICAgICAgIGlmIChjb250ZXh0LmVsbGlwc2UpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZWxsaXBzZShjeCwgY3ksIHJ4LCByeSwgMCwgMCwgTWF0aC5QSSAqIDIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIOWmguaenOS4jeaUr+aMge+8jOWImeS9v+eUqOWchuadpee7mOWItu+8jOi/m+ihjOWPmOW9olxuICAgICAgICAgICAgdmFyIHIgPSByeCA+IHJ5ID8gcnggOiByeTtcbiAgICAgICAgICAgIHZhciBzY2FsZVggPSByeCA+IHJ5ID8gMSA6IHJ4IC8gcnk7XG4gICAgICAgICAgICB2YXIgc2NhbGVZID0gcnggPiByeSA/IHJ5IC8gcnggOiAxO1xuICAgICAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShjeCwgY3kpO1xuICAgICAgICAgICAgY29udGV4dC5zY2FsZShzY2FsZVgsIHNjYWxlWSk7XG4gICAgICAgICAgICBjb250ZXh0LmFyYygwLCAwLCByLCAwLCBNYXRoLlBJICogMik7XG4gICAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBFbGxpcHNlO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IEVsbGlwc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbGxpcHNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/ellipse.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/image.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/image.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/**\n * @fileoverview 图片\n * @author dxq613@gmail.com\n */\n\n\n\nfunction isCanvas(dom) {\n return dom instanceof HTMLElement && Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(dom.nodeName) && dom.nodeName.toUpperCase() === 'CANVAS';\n}\nvar ImageShape = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ImageShape, _super);\n function ImageShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ImageShape.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0 });\n };\n ImageShape.prototype.initAttrs = function (attrs) {\n this._setImage(attrs.img);\n };\n // image 不计算 stroke\n ImageShape.prototype.isStroke = function () {\n return false;\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n ImageShape.prototype.isOnlyHitBox = function () {\n return true;\n };\n ImageShape.prototype._afterLoading = function () {\n if (this.get('toDraw') === true) {\n var canvas = this.get('canvas');\n if (canvas) {\n // 这段应该改成局部渲染\n canvas.draw();\n }\n else {\n // 这种方式如果发生遮挡会出现问题\n this.createPath(this.get('context'));\n }\n }\n };\n ImageShape.prototype._setImage = function (img) {\n var _this = this;\n var attrs = this.attrs;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(img)) {\n var image_1 = new Image();\n image_1.onload = function () {\n // 图片未加载完,则已经被销毁\n if (_this.destroyed) {\n return false;\n }\n // 缓存原始地址,可以做对比,防止重复加载图片\n // 如果考虑到在加载过程中可能替换 img 属性,则情况更加复杂\n // this.set('imgSrc', img);\n // 这里会循环调用 _setImage 方法,但不会再走这个分支\n _this.attr('img', image_1);\n _this.set('loading', false);\n _this._afterLoading();\n var callback = _this.get('callback');\n if (callback) {\n callback.call(_this);\n }\n };\n // 设置跨域\n image_1.crossOrigin = 'Anonymous';\n image_1.src = img;\n // loading 过程中不绘制\n this.set('loading', true);\n }\n else if (img instanceof Image) {\n // 如果是一个 image 对象,则设置宽高\n if (!attrs.width) {\n attrs.width = img.width;\n }\n if (!attrs.height) {\n attrs.height = img.height;\n }\n }\n else if (isCanvas(img)) {\n // 如果设置了 canvas 对象\n if (!attrs.width) {\n attrs.width = Number(img.getAttribute('width'));\n }\n if (!attrs.height) {\n attrs.height, Number(img.getAttribute('height'));\n }\n }\n };\n ImageShape.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 如果加载的已经是当前图片,则不再处理\n if (name === 'img') {\n // 可以加缓冲,&& this.get('imgSrc') !== value\n this._setImage(value);\n }\n };\n ImageShape.prototype.createPath = function (context) {\n // 正在加载则不绘制\n if (this.get('loading')) {\n this.set('toDraw', true); // 加载完成后绘制\n this.set('context', context);\n return;\n }\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y, width = attrs.width, height = attrs.height, sx = attrs.sx, sy = attrs.sy, swidth = attrs.swidth, sheight = attrs.sheight;\n var img = attrs.img;\n if (img instanceof Image || isCanvas(img)) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sx) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sy) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(swidth) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sheight)) {\n context.drawImage(img, sx, sy, swidth, sheight, x, y, width, height);\n }\n else {\n context.drawImage(img, x, y, width, height);\n }\n }\n };\n return ImageShape;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ImageShape);\n//# sourceMappingURL=image.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2ltYWdlLmpzP2YzZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNiO0FBQ2dCO0FBQy9DO0FBQ0EseUNBQXlDLDJEQUFRO0FBQ2pEO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsa0NBQWtDO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix3REFBSyxTQUFTLHdEQUFLLFNBQVMsd0RBQUssYUFBYSx3REFBSztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0kseUVBQVUsRUFBQztBQUMxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvaW1hZ2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5Zu+54mHXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzTmlsIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmZ1bmN0aW9uIGlzQ2FudmFzKGRvbSkge1xuICAgIHJldHVybiBkb20gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBpc1N0cmluZyhkb20ubm9kZU5hbWUpICYmIGRvbS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnQ0FOVkFTJztcbn1cbnZhciBJbWFnZVNoYXBlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJbWFnZVNoYXBlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEltYWdlU2hhcGUoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwIH0pO1xuICAgIH07XG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHRoaXMuX3NldEltYWdlKGF0dHJzLmltZyk7XG4gICAgfTtcbiAgICAvLyBpbWFnZSDkuI3orqHnrpcgc3Ryb2tlXG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUuaXNTdHJva2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIC8vIOS7heS7heS9v+eUqOWMheWbtOebkuajgOa1i+adpei/m+ihjOaLvuWPllxuICAgIC8vIOaJgOS7peS4jemcgOimgeWkjeWGmSBpc0luU3Ryb2tlT3JQYXRoIOeahOaWueazlVxuICAgIEltYWdlU2hhcGUucHJvdG90eXBlLmlzT25seUhpdEJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBJbWFnZVNoYXBlLnByb3RvdHlwZS5fYWZ0ZXJMb2FkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5nZXQoJ3RvRHJhdycpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5nZXQoJ2NhbnZhcycpO1xuICAgICAgICAgICAgaWYgKGNhbnZhcykge1xuICAgICAgICAgICAgICAgIC8vIOi/meauteW6lOivpeaUueaIkOWxgOmDqOa4suafk1xuICAgICAgICAgICAgICAgIGNhbnZhcy5kcmF3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyDov5nnp43mlrnlvI/lpoLmnpzlj5HnlJ/pga7mjKHkvJrlh7rnjrDpl67pophcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBhdGgodGhpcy5nZXQoJ2NvbnRleHQnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEltYWdlU2hhcGUucHJvdG90eXBlLl9zZXRJbWFnZSA9IGZ1bmN0aW9uIChpbWcpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRycztcbiAgICAgICAgaWYgKGlzU3RyaW5nKGltZykpIHtcbiAgICAgICAgICAgIHZhciBpbWFnZV8xID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWFnZV8xLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvLyDlm77niYfmnKrliqDovb3lrozvvIzliJnlt7Lnu4/ooqvplIDmr4FcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8g57yT5a2Y5Y6f5aeL5Zyw5Z2A77yM5Y+v5Lul5YGa5a+55q+U77yM6Ziy5q2i6YeN5aSN5Yqg6L295Zu+54mHXG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c6ICD6JmR5Yiw5Zyo5Yqg6L296L+H56iL5Lit5Y+v6IO95pu/5o2iIGltZyDlsZ7mgKfvvIzliJnmg4XlhrXmm7TliqDlpI3mnYJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNldCgnaW1nU3JjJywgaW1nKTtcbiAgICAgICAgICAgICAgICAvLyDov5nph4zkvJrlvqrnjq/osIPnlKggX3NldEltYWdlIOaWueazle+8jOS9huS4jeS8muWGjei1sOi/meS4quWIhuaUr1xuICAgICAgICAgICAgICAgIF90aGlzLmF0dHIoJ2ltZycsIGltYWdlXzEpO1xuICAgICAgICAgICAgICAgIF90aGlzLnNldCgnbG9hZGluZycsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5fYWZ0ZXJMb2FkaW5nKCk7XG4gICAgICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gX3RoaXMuZ2V0KCdjYWxsYmFjaycpO1xuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKF90aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8g6K6+572u6Leo5Z+fXG4gICAgICAgICAgICBpbWFnZV8xLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XG4gICAgICAgICAgICBpbWFnZV8xLnNyYyA9IGltZztcbiAgICAgICAgICAgIC8vIGxvYWRpbmcg6L+H56iL5Lit5LiN57uY5Yi2XG4gICAgICAgICAgICB0aGlzLnNldCgnbG9hZGluZycsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGltZyBpbnN0YW5jZW9mIEltYWdlKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmmK/kuIDkuKogaW1hZ2Ug5a+56LGh77yM5YiZ6K6+572u5a696auYXG4gICAgICAgICAgICBpZiAoIWF0dHJzLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgYXR0cnMud2lkdGggPSBpbWcud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWF0dHJzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIGF0dHJzLmhlaWdodCA9IGltZy5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNDYW52YXMoaW1nKSkge1xuICAgICAgICAgICAgLy8g5aaC5p6c6K6+572u5LqGIGNhbnZhcyDlr7nosaFcbiAgICAgICAgICAgIGlmICghYXR0cnMud2lkdGgpIHtcbiAgICAgICAgICAgICAgICBhdHRycy53aWR0aCA9IE51bWJlcihpbWcuZ2V0QXR0cmlidXRlKCd3aWR0aCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYXR0cnMuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgYXR0cnMuaGVpZ2h0LCBOdW1iZXIoaW1nLmdldEF0dHJpYnV0ZSgnaGVpZ2h0JykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBJbWFnZVNoYXBlLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUub25BdHRyQ2hhbmdlLmNhbGwodGhpcywgbmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKTtcbiAgICAgICAgLy8g5aaC5p6c5Yqg6L2955qE5bey57uP5piv5b2T5YmN5Zu+54mH77yM5YiZ5LiN5YaN5aSE55CGXG4gICAgICAgIGlmIChuYW1lID09PSAnaW1nJykge1xuICAgICAgICAgICAgLy8g5Y+v5Lul5Yqg57yT5Yay77yMJiYgdGhpcy5nZXQoJ2ltZ1NyYycpICE9PSB2YWx1ZVxuICAgICAgICAgICAgdGhpcy5fc2V0SW1hZ2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBJbWFnZVNoYXBlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgLy8g5q2j5Zyo5Yqg6L295YiZ5LiN57uY5Yi2XG4gICAgICAgIGlmICh0aGlzLmdldCgnbG9hZGluZycpKSB7XG4gICAgICAgICAgICB0aGlzLnNldCgndG9EcmF3JywgdHJ1ZSk7IC8vIOWKoOi9veWujOaIkOWQjue7mOWItlxuICAgICAgICAgICAgdGhpcy5zZXQoJ2NvbnRleHQnLCBjb250ZXh0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHggPSBhdHRycy54LCB5ID0gYXR0cnMueSwgd2lkdGggPSBhdHRycy53aWR0aCwgaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0LCBzeCA9IGF0dHJzLnN4LCBzeSA9IGF0dHJzLnN5LCBzd2lkdGggPSBhdHRycy5zd2lkdGgsIHNoZWlnaHQgPSBhdHRycy5zaGVpZ2h0O1xuICAgICAgICB2YXIgaW1nID0gYXR0cnMuaW1nO1xuICAgICAgICBpZiAoaW1nIGluc3RhbmNlb2YgSW1hZ2UgfHwgaXNDYW52YXMoaW1nKSkge1xuICAgICAgICAgICAgaWYgKCFpc05pbChzeCkgJiYgIWlzTmlsKHN5KSAmJiAhaXNOaWwoc3dpZHRoKSAmJiAhaXNOaWwoc2hlaWdodCkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWcsIHN4LCBzeSwgc3dpZHRoLCBzaGVpZ2h0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltZywgeCwgeSwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBJbWFnZVNoYXBlO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IEltYWdlU2hhcGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/image.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/index.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/index.js ***! \********************************************************/ /*! exports provided: Base, Circle, Ellipse, Image, Line, Marker, Path, Polygon, Polyline, Rect, Text */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./circle */ \"./node_modules/@antv/g-canvas/esm/shape/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Circle\", function() { return _circle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/@antv/g-canvas/esm/shape/ellipse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ellipse\", function() { return _ellipse__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./image */ \"./node_modules/@antv/g-canvas/esm/shape/image.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Image\", function() { return _image__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-canvas/esm/shape/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./marker */ \"./node_modules/@antv/g-canvas/esm/shape/marker.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./path */ \"./node_modules/@antv/g-canvas/esm/shape/path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Path\", function() { return _path__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./polygon */ \"./node_modules/@antv/g-canvas/esm/shape/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g-canvas/esm/shape/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rect */ \"./node_modules/@antv/g-canvas/esm/shape/rect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Rect\", function() { return _rect__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./text */ \"./node_modules/@antv/g-canvas/esm/shape/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return _text__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2luZGV4LmpzPzQ3OTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDSTtBQUNFO0FBQ0o7QUFDRjtBQUNJO0FBQ0o7QUFDTTtBQUNFO0FBQ1I7QUFDQTtBQUN6QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBDaXJjbGUgfSBmcm9tICcuL2NpcmNsZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVsbGlwc2UgfSBmcm9tICcuL2VsbGlwc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBJbWFnZSB9IGZyb20gJy4vaW1hZ2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaW5lIH0gZnJvbSAnLi9saW5lJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFya2VyIH0gZnJvbSAnLi9tYXJrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQYXRoIH0gZnJvbSAnLi9wYXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUG9seWdvbiB9IGZyb20gJy4vcG9seWdvbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBvbHlsaW5lIH0gZnJvbSAnLi9wb2x5bGluZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJlY3QgfSBmcm9tICcuL3JlY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0IH0gZnJvbSAnLi90ZXh0Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/line.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/line.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_line__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/in-stroke/line */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/@antv/g-canvas/esm/util/arrow.js\");\n\n/**\n * @fileoverview 线\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Line = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Line, _super);\n function Line() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x1: 0, y1: 0, x2: 0, y2: 0, startArrow: false, endArrow: false });\n };\n Line.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了箭头\n Line.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n Line.prototype.setArrow = function () {\n var attrs = this.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (startArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"addStartArrow\"](this, attrs, x2, y2, x1, y1);\n }\n if (endArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"addEndArrow\"](this, attrs, x1, y1, x2, y2);\n }\n };\n Line.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n if (!isStroke || !lineWidth) {\n return false;\n }\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return Object(_util_in_stroke_line__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(x1, y1, x2, y2, lineWidth, x, y);\n };\n Line.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n var startArrowDistance = {\n dx: 0,\n dy: 0,\n };\n var endArrowDistance = {\n dx: 0,\n dy: 0,\n };\n if (startArrow && startArrow.d) {\n startArrowDistance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](x1, y1, x2, y2, attrs.startArrow.d);\n }\n if (endArrow && endArrow.d) {\n endArrowDistance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](x1, y1, x2, y2, attrs.endArrow.d);\n }\n context.beginPath();\n // 如果自定义箭头,线条相应缩进\n context.moveTo(x1 + startArrowDistance.dx, y1 + startArrowDistance.dy);\n context.lineTo(x2 - endArrowDistance.dx, y2 - endArrowDistance.dy);\n };\n Line.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(x1, y1, x2, y2);\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Line);\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2xpbmUuanM/ZDdjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDZ0Q7QUFDakI7QUFDYTtBQUNEO0FBQzNDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLGlFQUFpRTtBQUMvRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBdUI7QUFDbkM7QUFDQTtBQUNBLFlBQVksdURBQXFCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxvRUFBTTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyw0REFBMEI7QUFDM0Q7QUFDQTtBQUNBLCtCQUErQiw0REFBMEI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpREFBUTtBQUN2QjtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvbGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbi8qKlxuICogQGZpbGVvdmVydmlldyDnur9cbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBMaW5lIGFzIExpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCBpbkxpbmUgZnJvbSAnLi4vdXRpbC9pbi1zdHJva2UvbGluZSc7XG5pbXBvcnQgKiBhcyBBcnJvd1V0aWwgZnJvbSAnLi4vdXRpbC9hcnJvdyc7XG52YXIgTGluZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTGluZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBMaW5lKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIExpbmUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDAsIHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5pbml0QXR0cnMgPSBmdW5jdGlvbiAoYXR0cnMpIHtcbiAgICAgICAgdGhpcy5zZXRBcnJvdygpO1xuICAgIH07XG4gICAgLy8g5pu05paw5bGe5oCn5pe277yM5qOA5rWL5piv5ZCm5pu05pS55LqG566t5aS0XG4gICAgTGluZS5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIC8vIOeUseS6jueureWktOeahOe7mOWItuS+nei1luS6jiBsaW5lIOeahOivuOWkmiBhdHRyc++8jOWboOatpOi/memHjOS4jeWGjeWvueavj+S4qiBhdHRyIOi/m+ihjOWIpOaWre+8jGF0dHIg5q+P5qyh5Y+Y5YyW6YO95Lya5b2x5ZON566t5aS055qE5pu05pawXG4gICAgICAgIHRoaXMuc2V0QXJyb3coKTtcbiAgICB9O1xuICAgIExpbmUucHJvdG90eXBlLnNldEFycm93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHgxID0gYXR0cnMueDEsIHkxID0gYXR0cnMueTEsIHgyID0gYXR0cnMueDIsIHkyID0gYXR0cnMueTIsIHN0YXJ0QXJyb3cgPSBhdHRycy5zdGFydEFycm93LCBlbmRBcnJvdyA9IGF0dHJzLmVuZEFycm93O1xuICAgICAgICBpZiAoc3RhcnRBcnJvdykge1xuICAgICAgICAgICAgQXJyb3dVdGlsLmFkZFN0YXJ0QXJyb3codGhpcywgYXR0cnMsIHgyLCB5MiwgeDEsIHkxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3cpIHtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRFbmRBcnJvdyh0aGlzLCBhdHRycywgeDEsIHkxLCB4MiwgeTIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICBpZiAoIWlzU3Ryb2tlIHx8ICFsaW5lV2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgeDEgPSBfYS54MSwgeTEgPSBfYS55MSwgeDIgPSBfYS54MiwgeTIgPSBfYS55MjtcbiAgICAgICAgcmV0dXJuIGluTGluZSh4MSwgeTEsIHgyLCB5MiwgbGluZVdpZHRoLCB4LCB5KTtcbiAgICB9O1xuICAgIExpbmUucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHgxID0gYXR0cnMueDEsIHkxID0gYXR0cnMueTEsIHgyID0gYXR0cnMueDIsIHkyID0gYXR0cnMueTIsIHN0YXJ0QXJyb3cgPSBhdHRycy5zdGFydEFycm93LCBlbmRBcnJvdyA9IGF0dHJzLmVuZEFycm93O1xuICAgICAgICB2YXIgc3RhcnRBcnJvd0Rpc3RhbmNlID0ge1xuICAgICAgICAgICAgZHg6IDAsXG4gICAgICAgICAgICBkeTogMCxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVuZEFycm93RGlzdGFuY2UgPSB7XG4gICAgICAgICAgICBkeDogMCxcbiAgICAgICAgICAgIGR5OiAwLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoc3RhcnRBcnJvdyAmJiBzdGFydEFycm93LmQpIHtcbiAgICAgICAgICAgIHN0YXJ0QXJyb3dEaXN0YW5jZSA9IEFycm93VXRpbC5nZXRTaG9ydGVuT2Zmc2V0KHgxLCB5MSwgeDIsIHkyLCBhdHRycy5zdGFydEFycm93LmQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRBcnJvdyAmJiBlbmRBcnJvdy5kKSB7XG4gICAgICAgICAgICBlbmRBcnJvd0Rpc3RhbmNlID0gQXJyb3dVdGlsLmdldFNob3J0ZW5PZmZzZXQoeDEsIHkxLCB4MiwgeTIsIGF0dHJzLmVuZEFycm93LmQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIC8vIOWmguaenOiHquWumuS5ieeureWktO+8jOe6v+adoeebuOW6lOe8qei/m1xuICAgICAgICBjb250ZXh0Lm1vdmVUbyh4MSArIHN0YXJ0QXJyb3dEaXN0YW5jZS5keCwgeTEgKyBzdGFydEFycm93RGlzdGFuY2UuZHkpO1xuICAgICAgICBjb250ZXh0LmxpbmVUbyh4MiAtIGVuZEFycm93RGlzdGFuY2UuZHgsIHkyIC0gZW5kQXJyb3dEaXN0YW5jZS5keSk7XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5hZnRlckRyYXdQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIHN0YXJ0QXJyb3dTaGFwZSA9IHRoaXMuZ2V0KCdzdGFydEFycm93U2hhcGUnKTtcbiAgICAgICAgdmFyIGVuZEFycm93U2hhcGUgPSB0aGlzLmdldCgnZW5kQXJyb3dTaGFwZScpO1xuICAgICAgICBpZiAoc3RhcnRBcnJvd1NoYXBlKSB7XG4gICAgICAgICAgICBzdGFydEFycm93U2hhcGUuZHJhdyhjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3dTaGFwZSkge1xuICAgICAgICAgICAgZW5kQXJyb3dTaGFwZS5kcmF3KGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgbGVuZ3RoIG9mIGxpbmVcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IGxlbmd0aFxuICAgICAqL1xuICAgIExpbmUucHJvdG90eXBlLmdldFRvdGFsTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgeDEgPSBfYS54MSwgeTEgPSBfYS55MSwgeDIgPSBfYS54MiwgeTIgPSBfYS55MjtcbiAgICAgICAgcmV0dXJuIExpbmVVdGlsLmxlbmd0aCh4MSwgeTEsIHgyLCB5Mik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgcG9pbnQgYWNjb3JkaW5nIHRvIHJhdGlvXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgTGluZS5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHgxID0gX2EueDEsIHkxID0gX2EueTEsIHgyID0gX2EueDIsIHkyID0gX2EueTI7XG4gICAgICAgIHJldHVybiBMaW5lVXRpbC5wb2ludEF0KHgxLCB5MSwgeDIsIHkyLCByYXRpbyk7XG4gICAgfTtcbiAgICByZXR1cm4gTGluZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBMaW5lO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/line.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/marker.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/marker.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/@antv/path-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/@antv/g-canvas/esm/util/draw.js\");\n/**\n * @fileoverview Marker\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\nvar Symbols = {\n // 圆\n circle: function (x, y, r) {\n return [\n ['M', x - r, y],\n ['A', r, r, 0, 1, 0, x + r, y],\n ['A', r, r, 0, 1, 0, x - r, y],\n ];\n },\n // 正方形\n square: function (x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function (x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['Z']];\n },\n // 倒三角形\n 'triangle-down': function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\nvar Marker = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Marker, _super);\n function Marker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Marker.prototype.initAttrs = function (attrs) {\n this._resetParamsCache();\n };\n // 重置绘制 path 存储的缓存\n Marker.prototype._resetParamsCache = function () {\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('paramsCache', {}); // 清理缓存\n };\n // 更新属性时,检测是否更改了 path\n Marker.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['symbol', 'x', 'y', 'r', 'radius'].indexOf(name) !== -1) {\n // path 相关属性更改时,清理缓存\n this._resetParamsCache();\n }\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n Marker.prototype.isOnlyHitBox = function () {\n return true;\n };\n Marker.prototype._getR = function (attrs) {\n // 兼容 r 和 radius 两种写法,推荐使用 r\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(attrs.r) ? attrs.radius : attrs.r;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y;\n var symbol = attrs.symbol || 'circle';\n var r = this._getR(attrs);\n var method;\n var path;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_4__[\"isFunction\"])(symbol)) {\n method = symbol;\n path = method(x, y, r);\n // 将 path 转成绝对路径\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"path2Absolute\"])(path);\n }\n else {\n // 内置 symbol 的 path 都是绝对路径,直接绘制即可,不需要对 path 进行特殊处理\n method = Marker.Symbols[symbol];\n if (!method) {\n console.warn(symbol + \" marker is not supported.\");\n return null;\n }\n path = method(x, y, r);\n }\n return path;\n };\n Marker.prototype.createPath = function (context) {\n var path = this._getPath();\n var paramsCache = this.get('paramsCache');\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_5__[\"drawPath\"])(this, context, { path: path }, paramsCache);\n };\n Marker.Symbols = Symbols;\n return Marker;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Marker);\n//# sourceMappingURL=marker.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL21hcmtlci5qcz9iYTY1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDa0M7QUFDQztBQUNhO0FBQ2pCO0FBQ1c7QUFDRjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxFQUFFO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx3REFBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw2REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUVBQWE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBUSxpQkFBaUIsYUFBYTtBQUM5QztBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9tYXJrZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgTWFya2VyXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcGF0aDJBYnNvbHV0ZSB9IGZyb20gJ0BhbnR2L3BhdGgtdXRpbCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IGRyYXdQYXRoIH0gZnJvbSAnLi4vdXRpbC9kcmF3JztcbnZhciBTeW1ib2xzID0ge1xuICAgIC8vIOWchlxuICAgIGNpcmNsZTogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFsnTScsIHggLSByLCB5XSxcbiAgICAgICAgICAgIFsnQScsIHIsIHIsIDAsIDEsIDAsIHggKyByLCB5XSxcbiAgICAgICAgICAgIFsnQScsIHIsIHIsIDAsIDEsIDAsIHggLSByLCB5XSxcbiAgICAgICAgXTtcbiAgICB9LFxuICAgIC8vIOato+aWueW9olxuICAgIHNxdWFyZTogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtbJ00nLCB4IC0gciwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeSArIHJdLCBbJ0wnLCB4IC0gciwgeSArIHJdLCBbJ1onXV07XG4gICAgfSxcbiAgICAvLyDoj7HlvaJcbiAgICBkaWFtb25kOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5XSwgWydMJywgeCwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeV0sIFsnTCcsIHgsIHkgKyByXSwgWydaJ11dO1xuICAgIH0sXG4gICAgLy8g5LiJ6KeS5b2iXG4gICAgdHJpYW5nbGU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHZhciBkaWZmWSA9IHIgKiBNYXRoLnNpbigoMSAvIDMpICogTWF0aC5QSSk7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgKyBkaWZmWV0sIFsnTCcsIHgsIHkgLSBkaWZmWV0sIFsnTCcsIHggKyByLCB5ICsgZGlmZlldLCBbJ1onXV07XG4gICAgfSxcbiAgICAvLyDlgJLkuInop5LlvaJcbiAgICAndHJpYW5nbGUtZG93bic6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHZhciBkaWZmWSA9IHIgKiBNYXRoLnNpbigoMSAvIDMpICogTWF0aC5QSSk7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgLSBkaWZmWV0sIFsnTCcsIHggKyByLCB5IC0gZGlmZlldLCBbJ0wnLCB4LCB5ICsgZGlmZlldLCBbJ1onXV07XG4gICAgfSxcbn07XG52YXIgTWFya2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNYXJrZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTWFya2VyKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIE1hcmtlci5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHRoaXMuX3Jlc2V0UGFyYW1zQ2FjaGUoKTtcbiAgICB9O1xuICAgIC8vIOmHjee9rue7mOWItiBwYXRoIOWtmOWCqOeahOe8k+WtmFxuICAgIE1hcmtlci5wcm90b3R5cGUuX3Jlc2V0UGFyYW1zQ2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIOS4uuS6huWKoOmAnyBwYXRoIOeahOe7mOWItuOAgeaLvuWPluWSjOiuoeeul++8jOi/meS4quWcsOaWueWPr+S7pee8k+WtmOW+iOWkmuS4nOilv1xuICAgICAgICAvLyDov5nkupvnvJPlrZjpg73mmK/nrKzkuIDmrKHpnIDopoHml7borqHnrpflkozlrZjlgqjvvIzomb3nhLblop7liqDkuoblpI3mnYLluqbvvIzkvYbmmK/popHnuYHosIPnlKjnmoTmlrnms5XvvIzmgKfog73mnInlvojlpKfmj5DljYdcbiAgICAgICAgdGhpcy5zZXQoJ3BhcmFtc0NhY2hlJywge30pOyAvLyDmuIXnkIbnvJPlrZhcbiAgICB9O1xuICAgIC8vIOabtOaWsOWxnuaAp+aXtu+8jOajgOa1i+aYr+WQpuabtOaUueS6hiBwYXRoXG4gICAgTWFya2VyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUub25BdHRyQ2hhbmdlLmNhbGwodGhpcywgbmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKTtcbiAgICAgICAgaWYgKFsnc3ltYm9sJywgJ3gnLCAneScsICdyJywgJ3JhZGl1cyddLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAvLyBwYXRoIOebuOWFs+WxnuaAp+abtOaUueaXtu+8jOa4heeQhue8k+WtmFxuICAgICAgICAgICAgdGhpcy5fcmVzZXRQYXJhbXNDYWNoZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDku4Xku4Xkvb/nlKjljIXlm7Tnm5Lmo4DmtYvmnaXov5vooYzmi77lj5ZcbiAgICAvLyDmiYDku6XkuI3pnIDopoHlpI3lhpkgaXNJblN0cm9rZU9yUGF0aCDnmoTmlrnms5VcbiAgICBNYXJrZXIucHJvdG90eXBlLmlzT25seUhpdEJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBNYXJrZXIucHJvdG90eXBlLl9nZXRSID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIC8vIOWFvOWuuSByIOWSjCByYWRpdXMg5Lik56eN5YaZ5rOV77yM5o6o6I2Q5L2/55SoIHJcbiAgICAgICAgcmV0dXJuIGlzTmlsKGF0dHJzLnIpID8gYXR0cnMucmFkaXVzIDogYXR0cnMucjtcbiAgICB9O1xuICAgIE1hcmtlci5wcm90b3R5cGUuX2dldFBhdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgeCA9IGF0dHJzLngsIHkgPSBhdHRycy55O1xuICAgICAgICB2YXIgc3ltYm9sID0gYXR0cnMuc3ltYm9sIHx8ICdjaXJjbGUnO1xuICAgICAgICB2YXIgciA9IHRoaXMuX2dldFIoYXR0cnMpO1xuICAgICAgICB2YXIgbWV0aG9kO1xuICAgICAgICB2YXIgcGF0aDtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oc3ltYm9sKSkge1xuICAgICAgICAgICAgbWV0aG9kID0gc3ltYm9sO1xuICAgICAgICAgICAgcGF0aCA9IG1ldGhvZCh4LCB5LCByKTtcbiAgICAgICAgICAgIC8vIOWwhiBwYXRoIOi9rOaIkOe7neWvuei3r+W+hFxuICAgICAgICAgICAgcGF0aCA9IHBhdGgyQWJzb2x1dGUocGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyDlhoXnva4gc3ltYm9sIOeahCBwYXRoIOmDveaYr+e7neWvuei3r+W+hO+8jOebtOaOpee7mOWItuWNs+WPr++8jOS4jemcgOimgeWvuSBwYXRoIOi/m+ihjOeJueauiuWkhOeQhlxuICAgICAgICAgICAgbWV0aG9kID0gTWFya2VyLlN5bWJvbHNbc3ltYm9sXTtcbiAgICAgICAgICAgIGlmICghbWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKHN5bWJvbCArIFwiIG1hcmtlciBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhdGggPSBtZXRob2QoeCwgeSwgcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfTtcbiAgICBNYXJrZXIucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgcGF0aCA9IHRoaXMuX2dldFBhdGgoKTtcbiAgICAgICAgdmFyIHBhcmFtc0NhY2hlID0gdGhpcy5nZXQoJ3BhcmFtc0NhY2hlJyk7XG4gICAgICAgIGRyYXdQYXRoKHRoaXMsIGNvbnRleHQsIHsgcGF0aDogcGF0aCB9LCBwYXJhbXNDYWNoZSk7XG4gICAgfTtcbiAgICBNYXJrZXIuU3ltYm9scyA9IFN5bWJvbHM7XG4gICAgcmV0dXJuIE1hcmtlcjtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBNYXJrZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tYXJrZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/marker.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/path.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/path.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/@antv/path-util/esm/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/in-path/point-in-path */ \"./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js\");\n/* harmony import */ var _util_in_path_polygon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/in-path/polygon */ \"./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/path */ \"./node_modules/@antv/g-canvas/esm/util/path.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\n\n\n\n\n\n// 是否在多个多边形内部\nfunction isInPolygons(polygons, x, y) {\n var isHit = false;\n for (var i = 0; i < polygons.length; i++) {\n var points = polygons[i];\n isHit = Object(_util_in_path_polygon__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(points, x, y);\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\nvar Path = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Path, _super);\n function Path() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n Path.prototype.initAttrs = function (attrs) {\n this._setPathArr(attrs.path);\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 path\n Path.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'path') {\n this._setPathArr(value);\n }\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n // 将 path 转换成绝对路径\n Path.prototype._setPathArr = function (path) {\n // 转换 path 的格式\n this.attrs.path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_4__[\"path2Absolute\"])(path);\n var hasArc = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].hasArc(path);\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('hasArc', hasArc);\n this.set('paramsCache', {}); // 清理缓存\n this.set('segments', null); // 延迟生成 path,在动画场景下可能不会有拾取\n this.set('curve', null);\n this.set('tCache', null);\n this.set('totalLength', null);\n };\n Path.prototype.getSegments = function () {\n var segments = this.get('segements');\n if (!segments) {\n segments = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_4__[\"path2Segments\"])(this.attr('path'));\n this.set('segments', segments);\n }\n return segments;\n };\n Path.prototype.setArrow = function () {\n var attrs = this.attr();\n var startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (startArrow) {\n var tangent = this.getStartTangent();\n _util_arrow__WEBPACK_IMPORTED_MODULE_9__[\"addStartArrow\"](this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n if (endArrow) {\n var tangent = this.getEndTangent();\n _util_arrow__WEBPACK_IMPORTED_MODULE_9__[\"addEndArrow\"](this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n };\n Path.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var segments = this.getSegments();\n var hasArc = this.get('hasArc');\n var isHit = false;\n if (isStroke) {\n var length_1 = this.getTotalLength();\n isHit = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isPointInStroke(segments, lineWidth, x, y, length_1);\n }\n if (!isHit && isFill) {\n if (hasArc) {\n // 存在曲线时,暂时使用 canvas 的 api 计算,后续可以进行多边形切割\n isHit = Object(_util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this, x, y);\n }\n else {\n var path = this.attr('path');\n var extractResutl = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].extractPolygons(path);\n // 提取出来的多边形包含闭合的和非闭合的,在这里统一按照多边形处理\n isHit = isInPolygons(extractResutl.polygons, x, y) || isInPolygons(extractResutl.polylines, x, y);\n }\n }\n return isHit;\n };\n Path.prototype.createPath = function (context) {\n var attrs = this.attr();\n var paramsCache = this.get('paramsCache'); // 由于计算圆弧的参数成本很大,所以要缓存\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_5__[\"drawPath\"])(this, context, attrs, paramsCache);\n };\n Path.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get total length of path\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this._calculateCurve();\n this._setTcache();\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var tCache = this.get('tCache');\n if (!tCache) {\n this._calculateCurve();\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n var curve = this.get('curve');\n if (!tCache || tCache.length === 0) {\n if (curve) {\n return {\n x: curve[0][1],\n y: curve[0][2],\n };\n }\n return null;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n var seg = curve[index];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(seg) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(index)) {\n return null;\n }\n var l = seg.length;\n var nextSeg = curve[index + 1];\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].pointAt(seg[l - 2], seg[l - 1], nextSeg[1], nextSeg[2], nextSeg[3], nextSeg[4], nextSeg[5], nextSeg[6], subt);\n };\n Path.prototype._calculateCurve = function () {\n var path = this.attr().path;\n this.set('curve', _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].pathToCurve(path));\n };\n Path.prototype._setTcache = function () {\n var totalLength = 0;\n var tempLength = 0;\n // 每段 curve 对应起止点的长度比例列表,形如: [[0, 0.25], [0.25, 0.6]. [0.6, 0.9], [0.9, 1]]\n var tCache = [];\n var segmentT;\n var segmentL;\n var segmentN;\n var l;\n var curve = this.get('curve');\n if (!curve) {\n return;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n totalLength +=\n _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]) || 0;\n }\n });\n this.set('totalLength', totalLength);\n if (totalLength === 0) {\n this.set('tCache', []);\n return;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]);\n // 当 path 不连续时,segmentL 可能为空,为空时需要作为 0 处理\n tempLength += segmentL || 0;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Path.prototype.getStartTangent = function () {\n var segments = this.getSegments();\n var result;\n if (segments.length > 1) {\n var startPoint = segments[0].currentPoint;\n var endPoint = segments[1].currentPoint;\n var tangent = segments[1].startTangent;\n result = [];\n if (tangent) {\n result.push([startPoint[0] - tangent[0], startPoint[1] - tangent[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n else {\n result.push([endPoint[0], endPoint[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n }\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Path.prototype.getEndTangent = function () {\n var segments = this.getSegments();\n var length = segments.length;\n var result;\n if (length > 1) {\n var startPoint = segments[length - 2].currentPoint;\n var endPoint = segments[length - 1].currentPoint;\n var tangent = segments[length - 1].endTangent;\n result = [];\n if (tangent) {\n result.push([endPoint[0] - tangent[0], endPoint[1] - tangent[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n else {\n result.push([startPoint[0], startPoint[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n }\n return result;\n };\n return Path;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Path);\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3BhdGguanM/NDA5NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ007QUFDVDtBQUNWO0FBQ2dDO0FBQ3ZCO0FBQ2tCO0FBQ1I7QUFDZDtBQUNPO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQSxnQkFBZ0IscUVBQVc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcscUNBQXFDO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIscUVBQWE7QUFDdkMscUJBQXFCLGtEQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxFQUFFO0FBQ3BDLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixxRUFBYTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHlEQUF1QjtBQUNuQztBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFxQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtEQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDJFQUFhO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxrREFBUTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELFFBQVEsMkRBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdEQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFlBQVksd0RBQUssU0FBUyx3REFBSztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0RBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGtEQUFRO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isa0RBQVM7QUFDN0I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGtEQUFTO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQ3ViaWMgYXMgQ3ViaWNVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IGVhY2gsIGlzTmlsIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBwYXRoMkFic29sdXRlLCBwYXRoMlNlZ21lbnRzIH0gZnJvbSAnQGFudHYvcGF0aC11dGlsJztcbmltcG9ydCB7IGRyYXdQYXRoIH0gZnJvbSAnLi4vdXRpbC9kcmF3JztcbmltcG9ydCBpc1BvaW50SW5QYXRoIGZyb20gJy4uL3V0aWwvaW4tcGF0aC9wb2ludC1pbi1wYXRoJztcbmltcG9ydCBpc0luUG9seWdvbiBmcm9tICcuLi91dGlsL2luLXBhdGgvcG9seWdvbic7XG5pbXBvcnQgUGF0aFV0aWwgZnJvbSAnLi4vdXRpbC9wYXRoJztcbmltcG9ydCAqIGFzIEFycm93VXRpbCBmcm9tICcuLi91dGlsL2Fycm93Jztcbi8vIOaYr+WQpuWcqOWkmuS4quWkmui+ueW9ouWGhemDqFxuZnVuY3Rpb24gaXNJblBvbHlnb25zKHBvbHlnb25zLCB4LCB5KSB7XG4gICAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5Z29ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcG9pbnRzID0gcG9seWdvbnNbaV07XG4gICAgICAgIGlzSGl0ID0gaXNJblBvbHlnb24ocG9pbnRzLCB4LCB5KTtcbiAgICAgICAgaWYgKGlzSGl0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNIaXQ7XG59XG52YXIgUGF0aCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUGF0aCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQYXRoKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFBhdGgucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgc3RhcnRBcnJvdzogZmFsc2UsIGVuZEFycm93OiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB0aGlzLl9zZXRQYXRoQXJyKGF0dHJzLnBhdGgpO1xuICAgICAgICB0aGlzLnNldEFycm93KCk7XG4gICAgfTtcbiAgICAvLyDmm7TmlrDlsZ7mgKfml7bvvIzmo4DmtYvmmK/lkKbmm7TmlLnkuoYgcGF0aFxuICAgIFBhdGgucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ3BhdGgnKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRQYXRoQXJyKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDnlLHkuo7nrq3lpLTnmoTnu5jliLbkvp3otZbkuo4gbGluZSDnmoTor7jlpJogYXR0cnPvvIzlm6DmraTov5nph4zkuI3lho3lr7nmr4/kuKogYXR0ciDov5vooYzliKTmlq3vvIxhdHRyIOavj+asoeWPmOWMlumDveS8muW9seWTjeeureWktOeahOabtOaWsFxuICAgICAgICB0aGlzLnNldEFycm93KCk7XG4gICAgfTtcbiAgICAvLyDlsIYgcGF0aCDovazmjaLmiJDnu53lr7not6/lvoRcbiAgICBQYXRoLnByb3RvdHlwZS5fc2V0UGF0aEFyciA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICAgIC8vIOi9rOaNoiBwYXRoIOeahOagvOW8j1xuICAgICAgICB0aGlzLmF0dHJzLnBhdGggPSBwYXRoMkFic29sdXRlKHBhdGgpO1xuICAgICAgICB2YXIgaGFzQXJjID0gUGF0aFV0aWwuaGFzQXJjKHBhdGgpO1xuICAgICAgICAvLyDkuLrkuobliqDpgJ8gcGF0aCDnmoTnu5jliLbjgIHmi77lj5blkozorqHnrpfvvIzov5nkuKrlnLDmlrnlj6/ku6XnvJPlrZjlvojlpJrkuJzopb9cbiAgICAgICAgLy8g6L+Z5Lqb57yT5a2Y6YO95piv56ys5LiA5qyh6ZyA6KaB5pe26K6h566X5ZKM5a2Y5YKo77yM6Jm954S25aKe5Yqg5LqG5aSN5p2C5bqm77yM5L2G5piv6aKR57mB6LCD55So55qE5pa55rOV77yM5oCn6IO95pyJ5b6I5aSn5o+Q5Y2HXG4gICAgICAgIHRoaXMuc2V0KCdoYXNBcmMnLCBoYXNBcmMpO1xuICAgICAgICB0aGlzLnNldCgncGFyYW1zQ2FjaGUnLCB7fSk7IC8vIOa4heeQhue8k+WtmFxuICAgICAgICB0aGlzLnNldCgnc2VnbWVudHMnLCBudWxsKTsgLy8g5bu26L+f55Sf5oiQIHBhdGjvvIzlnKjliqjnlLvlnLrmma/kuIvlj6/og73kuI3kvJrmnInmi77lj5ZcbiAgICAgICAgdGhpcy5zZXQoJ2N1cnZlJywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5zZXQoJ3RvdGFsTGVuZ3RoJywgbnVsbCk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5nZXRTZWdtZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNlZ21lbnRzID0gdGhpcy5nZXQoJ3NlZ2VtZW50cycpO1xuICAgICAgICBpZiAoIXNlZ21lbnRzKSB7XG4gICAgICAgICAgICBzZWdtZW50cyA9IHBhdGgyU2VnbWVudHModGhpcy5hdHRyKCdwYXRoJykpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3NlZ21lbnRzJywgc2VnbWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWdtZW50cztcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLnNldEFycm93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHN0YXJ0QXJyb3cgPSBhdHRycy5zdGFydEFycm93LCBlbmRBcnJvdyA9IGF0dHJzLmVuZEFycm93O1xuICAgICAgICBpZiAoc3RhcnRBcnJvdykge1xuICAgICAgICAgICAgdmFyIHRhbmdlbnQgPSB0aGlzLmdldFN0YXJ0VGFuZ2VudCgpO1xuICAgICAgICAgICAgQXJyb3dVdGlsLmFkZFN0YXJ0QXJyb3codGhpcywgYXR0cnMsIHRhbmdlbnRbMF1bMF0sIHRhbmdlbnRbMF1bMV0sIHRhbmdlbnRbMV1bMF0sIHRhbmdlbnRbMV1bMV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRBcnJvdykge1xuICAgICAgICAgICAgdmFyIHRhbmdlbnQgPSB0aGlzLmdldEVuZFRhbmdlbnQoKTtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRFbmRBcnJvdyh0aGlzLCBhdHRycywgdGFuZ2VudFswXVswXSwgdGFuZ2VudFswXVsxXSwgdGFuZ2VudFsxXVswXSwgdGFuZ2VudFsxXVsxXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLmlzSW5TdHJva2VPclBhdGggPSBmdW5jdGlvbiAoeCwgeSwgaXNTdHJva2UsIGlzRmlsbCwgbGluZVdpZHRoKSB7XG4gICAgICAgIHZhciBzZWdtZW50cyA9IHRoaXMuZ2V0U2VnbWVudHMoKTtcbiAgICAgICAgdmFyIGhhc0FyYyA9IHRoaXMuZ2V0KCdoYXNBcmMnKTtcbiAgICAgICAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gICAgICAgIGlmIChpc1N0cm9rZSkge1xuICAgICAgICAgICAgdmFyIGxlbmd0aF8xID0gdGhpcy5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICAgICAgaXNIaXQgPSBQYXRoVXRpbC5pc1BvaW50SW5TdHJva2Uoc2VnbWVudHMsIGxpbmVXaWR0aCwgeCwgeSwgbGVuZ3RoXzEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNIaXQgJiYgaXNGaWxsKSB7XG4gICAgICAgICAgICBpZiAoaGFzQXJjKSB7XG4gICAgICAgICAgICAgICAgLy8g5a2Y5Zyo5puy57q/5pe277yM5pqC5pe25L2/55SoIGNhbnZhcyDnmoQgYXBpIOiuoeeul++8jOWQjue7reWPr+S7pei/m+ihjOWkmui+ueW9ouWIh+WJslxuICAgICAgICAgICAgICAgIGlzSGl0ID0gaXNQb2ludEluUGF0aCh0aGlzLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBwYXRoID0gdGhpcy5hdHRyKCdwYXRoJyk7XG4gICAgICAgICAgICAgICAgdmFyIGV4dHJhY3RSZXN1dGwgPSBQYXRoVXRpbC5leHRyYWN0UG9seWdvbnMocGF0aCk7XG4gICAgICAgICAgICAgICAgLy8g5o+Q5Y+W5Ye65p2l55qE5aSa6L655b2i5YyF5ZCr6Zet5ZCI55qE5ZKM6Z2e6Zet5ZCI55qE77yM5Zyo6L+Z6YeM57uf5LiA5oyJ54Wn5aSa6L655b2i5aSE55CGXG4gICAgICAgICAgICAgICAgaXNIaXQgPSBpc0luUG9seWdvbnMoZXh0cmFjdFJlc3V0bC5wb2x5Z29ucywgeCwgeSkgfHwgaXNJblBvbHlnb25zKGV4dHJhY3RSZXN1dGwucG9seWxpbmVzLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNIaXQ7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBwYXJhbXNDYWNoZSA9IHRoaXMuZ2V0KCdwYXJhbXNDYWNoZScpOyAvLyDnlLHkuo7orqHnrpflnIblvKfnmoTlj4LmlbDmiJDmnKzlvojlpKfvvIzmiYDku6XopoHnvJPlrZhcbiAgICAgICAgZHJhd1BhdGgodGhpcywgY29udGV4dCwgYXR0cnMsIHBhcmFtc0NhY2hlKTtcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLmFmdGVyRHJhd1BhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgc3RhcnRBcnJvd1NoYXBlID0gdGhpcy5nZXQoJ3N0YXJ0QXJyb3dTaGFwZScpO1xuICAgICAgICB2YXIgZW5kQXJyb3dTaGFwZSA9IHRoaXMuZ2V0KCdlbmRBcnJvd1NoYXBlJyk7XG4gICAgICAgIGlmIChzdGFydEFycm93U2hhcGUpIHtcbiAgICAgICAgICAgIHN0YXJ0QXJyb3dTaGFwZS5kcmF3KGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRBcnJvd1NoYXBlKSB7XG4gICAgICAgICAgICBlbmRBcnJvd1NoYXBlLmRyYXcoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCB0b3RhbCBsZW5ndGggb2YgcGF0aFxuICAgICAqIEByZXR1cm4ge251bWJlcn0gbGVuZ3RoXG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0VG90YWxMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0b3RhbExlbmd0aCA9IHRoaXMuZ2V0KCd0b3RhbExlbmd0aCcpO1xuICAgICAgICBpZiAoIWlzTmlsKHRvdGFsTGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvdGFsTGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUN1cnZlKCk7XG4gICAgICAgIHRoaXMuX3NldFRjYWNoZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ3RvdGFsTGVuZ3RoJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgcG9pbnQgYWNjb3JkaW5nIHRvIHJhdGlvXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgdmFyIHRDYWNoZSA9IHRoaXMuZ2V0KCd0Q2FjaGUnKTtcbiAgICAgICAgaWYgKCF0Q2FjaGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUN1cnZlKCk7XG4gICAgICAgICAgICB0aGlzLl9zZXRUY2FjaGUoKTtcbiAgICAgICAgICAgIHRDYWNoZSA9IHRoaXMuZ2V0KCd0Q2FjaGUnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3VidDtcbiAgICAgICAgdmFyIGluZGV4O1xuICAgICAgICB2YXIgY3VydmUgPSB0aGlzLmdldCgnY3VydmUnKTtcbiAgICAgICAgaWYgKCF0Q2FjaGUgfHwgdENhY2hlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKGN1cnZlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgeDogY3VydmVbMF1bMV0sXG4gICAgICAgICAgICAgICAgICAgIHk6IGN1cnZlWzBdWzJdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKHRDYWNoZSwgZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICAgIGlmIChyYXRpbyA+PSB2WzBdICYmIHJhdGlvIDw9IHZbMV0pIHtcbiAgICAgICAgICAgICAgICBzdWJ0ID0gKHJhdGlvIC0gdlswXSkgLyAodlsxXSAtIHZbMF0pO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzZWcgPSBjdXJ2ZVtpbmRleF07XG4gICAgICAgIGlmIChpc05pbChzZWcpIHx8IGlzTmlsKGluZGV4KSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGwgPSBzZWcubGVuZ3RoO1xuICAgICAgICB2YXIgbmV4dFNlZyA9IGN1cnZlW2luZGV4ICsgMV07XG4gICAgICAgIHJldHVybiBDdWJpY1V0aWwucG9pbnRBdChzZWdbbCAtIDJdLCBzZWdbbCAtIDFdLCBuZXh0U2VnWzFdLCBuZXh0U2VnWzJdLCBuZXh0U2VnWzNdLCBuZXh0U2VnWzRdLCBuZXh0U2VnWzVdLCBuZXh0U2VnWzZdLCBzdWJ0KTtcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLl9jYWxjdWxhdGVDdXJ2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhdGggPSB0aGlzLmF0dHIoKS5wYXRoO1xuICAgICAgICB0aGlzLnNldCgnY3VydmUnLCBQYXRoVXRpbC5wYXRoVG9DdXJ2ZShwYXRoKSk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5fc2V0VGNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSAwO1xuICAgICAgICB2YXIgdGVtcExlbmd0aCA9IDA7XG4gICAgICAgIC8vIOavj+autSBjdXJ2ZSDlr7nlupTotbfmraLngrnnmoTplb/luqbmr5TkvovliJfooajvvIzlvaLlpoI6IFtbMCwgMC4yNV0sIFswLjI1LCAwLjZdLiBbMC42LCAwLjldLCBbMC45LCAxXV1cbiAgICAgICAgdmFyIHRDYWNoZSA9IFtdO1xuICAgICAgICB2YXIgc2VnbWVudFQ7XG4gICAgICAgIHZhciBzZWdtZW50TDtcbiAgICAgICAgdmFyIHNlZ21lbnROO1xuICAgICAgICB2YXIgbDtcbiAgICAgICAgdmFyIGN1cnZlID0gdGhpcy5nZXQoJ2N1cnZlJyk7XG4gICAgICAgIGlmICghY3VydmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKGN1cnZlLCBmdW5jdGlvbiAoc2VnbWVudCwgaSkge1xuICAgICAgICAgICAgc2VnbWVudE4gPSBjdXJ2ZVtpICsgMV07XG4gICAgICAgICAgICBsID0gc2VnbWVudC5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoc2VnbWVudE4pIHtcbiAgICAgICAgICAgICAgICB0b3RhbExlbmd0aCArPVxuICAgICAgICAgICAgICAgICAgICBDdWJpY1V0aWwubGVuZ3RoKHNlZ21lbnRbbCAtIDJdLCBzZWdtZW50W2wgLSAxXSwgc2VnbWVudE5bMV0sIHNlZ21lbnROWzJdLCBzZWdtZW50TlszXSwgc2VnbWVudE5bNF0sIHNlZ21lbnROWzVdLCBzZWdtZW50Tls2XSkgfHwgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCd0b3RhbExlbmd0aCcsIHRvdGFsTGVuZ3RoKTtcbiAgICAgICAgaWYgKHRvdGFsTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnNldCgndENhY2hlJywgW10pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGVhY2goY3VydmUsIGZ1bmN0aW9uIChzZWdtZW50LCBpKSB7XG4gICAgICAgICAgICBzZWdtZW50TiA9IGN1cnZlW2kgKyAxXTtcbiAgICAgICAgICAgIGwgPSBzZWdtZW50Lmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChzZWdtZW50Tikge1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUID0gW107XG4gICAgICAgICAgICAgICAgc2VnbWVudFRbMF0gPSB0ZW1wTGVuZ3RoIC8gdG90YWxMZW5ndGg7XG4gICAgICAgICAgICAgICAgc2VnbWVudEwgPSBDdWJpY1V0aWwubGVuZ3RoKHNlZ21lbnRbbCAtIDJdLCBzZWdtZW50W2wgLSAxXSwgc2VnbWVudE5bMV0sIHNlZ21lbnROWzJdLCBzZWdtZW50TlszXSwgc2VnbWVudE5bNF0sIHNlZ21lbnROWzVdLCBzZWdtZW50Tls2XSk7XG4gICAgICAgICAgICAgICAgLy8g5b2TIHBhdGgg5LiN6L+e57ut5pe277yMc2VnbWVudEwg5Y+v6IO95Li656m677yM5Li656m65pe26ZyA6KaB5L2c5Li6IDAg5aSE55CGXG4gICAgICAgICAgICAgICAgdGVtcExlbmd0aCArPSBzZWdtZW50TCB8fCAwO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUWzFdID0gdGVtcExlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRDYWNoZS5wdXNoKHNlZ21lbnRUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCB0Q2FjaGUpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHN0YXJ0IHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0U3RhcnRUYW5nZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc2VnbWVudHMgPSB0aGlzLmdldFNlZ21lbnRzKCk7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnRQb2ludCA9IHNlZ21lbnRzWzBdLmN1cnJlbnRQb2ludDtcbiAgICAgICAgICAgIHZhciBlbmRQb2ludCA9IHNlZ21lbnRzWzFdLmN1cnJlbnRQb2ludDtcbiAgICAgICAgICAgIHZhciB0YW5nZW50ID0gc2VnbWVudHNbMV0uc3RhcnRUYW5nZW50O1xuICAgICAgICAgICAgcmVzdWx0ID0gW107XG4gICAgICAgICAgICBpZiAodGFuZ2VudCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtzdGFydFBvaW50WzBdIC0gdGFuZ2VudFswXSwgc3RhcnRQb2ludFsxXSAtIHRhbmdlbnRbMV1dKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbc3RhcnRQb2ludFswXSwgc3RhcnRQb2ludFsxXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goW2VuZFBvaW50WzBdLCBlbmRQb2ludFsxXV0pO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBlbmQgdGFuZ2VudCB2ZWN0b3JcbiAgICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICAgKi9cbiAgICBQYXRoLnByb3RvdHlwZS5nZXRFbmRUYW5nZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc2VnbWVudHMgPSB0aGlzLmdldFNlZ21lbnRzKCk7XG4gICAgICAgIHZhciBsZW5ndGggPSBzZWdtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmIChsZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnRQb2ludCA9IHNlZ21lbnRzW2xlbmd0aCAtIDJdLmN1cnJlbnRQb2ludDtcbiAgICAgICAgICAgIHZhciBlbmRQb2ludCA9IHNlZ21lbnRzW2xlbmd0aCAtIDFdLmN1cnJlbnRQb2ludDtcbiAgICAgICAgICAgIHZhciB0YW5nZW50ID0gc2VnbWVudHNbbGVuZ3RoIC0gMV0uZW5kVGFuZ2VudDtcbiAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgaWYgKHRhbmdlbnQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbZW5kUG9pbnRbMF0gLSB0YW5nZW50WzBdLCBlbmRQb2ludFsxXSAtIHRhbmdlbnRbMV1dKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbc3RhcnRQb2ludFswXSwgc3RhcnRQb2ludFsxXV0pO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtlbmRQb2ludFswXSwgZW5kUG9pbnRbMV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgcmV0dXJuIFBhdGg7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgUGF0aDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/path.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/polygon.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/polygon.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/in-stroke/polyline */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js\");\n/* harmony import */ var _util_in_path_polygon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/in-path/polygon */ \"./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js\");\n/**\n * @fileoverview 多边形\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Polygon = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polygon, _super);\n function Polygon() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Polygon.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var points = this.attr().points;\n var isHit = false;\n if (isStroke) {\n isHit = Object(_util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(points, lineWidth, x, y, true);\n }\n if (!isHit && isFill) {\n isHit = Object(_util_in_path_polygon__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(points, x, y); // isPointInPath(shape, x, y);\n }\n return isHit;\n };\n Polygon.prototype.createPath = function (context) {\n var attrs = this.attr();\n var points = attrs.points;\n if (points.length < 2) {\n return;\n }\n context.beginPath();\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (i === 0) {\n context.moveTo(point[0], point[1]);\n }\n else {\n context.lineTo(point[0], point[1]);\n }\n }\n context.closePath();\n };\n return Polygon;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polygon);\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3BvbHlnb24uanM/OTc4YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDa0M7QUFDSDtBQUNxQjtBQUNGO0FBQ2xEO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHdFQUFVO0FBQzlCO0FBQ0E7QUFDQSxvQkFBb0IscUVBQVcsZUFBZTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixtQkFBbUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3BvbHlnb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5aSa6L655b2iXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgaW5Qb2x5bGluZSBmcm9tICcuLi91dGlsL2luLXN0cm9rZS9wb2x5bGluZSc7XG5pbXBvcnQgaXNJblBvbHlnb24gZnJvbSAnLi4vdXRpbC9pbi1wYXRoL3BvbHlnb24nO1xudmFyIFBvbHlnb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBvbHlnb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUG9seWdvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQb2x5Z29uLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICB2YXIgaXNIaXQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICBpc0hpdCA9IGluUG9seWxpbmUocG9pbnRzLCBsaW5lV2lkdGgsIHgsIHksIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNIaXQgJiYgaXNGaWxsKSB7XG4gICAgICAgICAgICBpc0hpdCA9IGlzSW5Qb2x5Z29uKHBvaW50cywgeCwgeSk7IC8vIGlzUG9pbnRJblBhdGgoc2hhcGUsIHgsIHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0hpdDtcbiAgICB9O1xuICAgIFBvbHlnb24ucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHBvaW50cyA9IGF0dHJzLnBvaW50cztcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRbMF0sIHBvaW50WzFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHBvaW50WzBdLCBwb2ludFsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB9O1xuICAgIHJldHVybiBQb2x5Z29uO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFBvbHlnb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5Z29uLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/polygon.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/polyline.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/polyline.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/in-stroke/polyline */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\n\n\nvar PolyLine = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(PolyLine, _super);\n function PolyLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PolyLine.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n PolyLine.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 points\n PolyLine.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n this.setArrow();\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n PolyLine.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n PolyLine.prototype.setArrow = function () {\n var attrs = this.attr();\n var _a = this.attrs, points = _a.points, startArrow = _a.startArrow, endArrow = _a.endArrow;\n var length = points.length;\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n if (startArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"addStartArrow\"](this, attrs, points[1][0], points[1][1], x1, y1);\n }\n if (endArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"addEndArrow\"](this, attrs, points[length - 2][0], points[length - 2][1], x2, y2);\n }\n };\n // 不允许 fill\n PolyLine.prototype.isFill = function () {\n return false;\n };\n PolyLine.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n // 没有设置 stroke 不能被拾取, 没有线宽不能被拾取\n if (!isStroke || !lineWidth) {\n return false;\n }\n var points = this.attr().points;\n return Object(_util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(points, lineWidth, x, y, false);\n };\n // 始终填充\n PolyLine.prototype.isStroke = function () {\n return true;\n };\n PolyLine.prototype.createPath = function (context) {\n var _a = this.attr(), points = _a.points, startArrow = _a.startArrow, endArrow = _a.endArrow;\n var length = points.length;\n if (points.length < 2) {\n return;\n }\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n // 如果定义了箭头,并且是自定义箭头,线条相应缩进\n if (startArrow && startArrow.d) {\n var distance = _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"getShortenOffset\"](x1, y1, points[1][0], points[1][1], startArrow.d);\n x1 += distance.dx;\n y1 += distance.dy;\n }\n if (endArrow && endArrow.d) {\n var distance = _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"getShortenOffset\"](points[length - 2][0], points[length - 2][1], x2, y2, endArrow.d);\n x2 -= distance.dx;\n y2 -= distance.dy;\n }\n context.beginPath();\n context.moveTo(x1, y1);\n for (var i = 0; i < length - 1; i++) {\n var point = points[i];\n context.lineTo(point[0], point[1]);\n }\n context.lineTo(x2, y2);\n };\n PolyLine.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n PolyLine.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Polyline\"].length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n PolyLine.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n PolyLine.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return PolyLine;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (PolyLine);\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3BvbHlsaW5lLmpzPzAxNDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEM7QUFDSTtBQUNRO0FBQ2Y7QUFDVjtBQUNxQjtBQUNUO0FBQzNDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLHFDQUFxQztBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseURBQXVCO0FBQ25DO0FBQ0E7QUFDQSxZQUFZLHVEQUFxQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHdFQUFVO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNERBQTBCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDREQUEwQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsd0RBQUs7QUFDbEI7QUFDQTtBQUNBLGdDQUFnQyxxREFBWTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULGVBQWUsaURBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsaURBQVE7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9wb2x5bGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IExpbmUgYXMgTGluZVV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgUG9seWxpbmUgYXMgUG9seWxpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IGVhY2gsIGlzTmlsIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgaW5Qb2x5bGluZSBmcm9tICcuLi91dGlsL2luLXN0cm9rZS9wb2x5bGluZSc7XG5pbXBvcnQgKiBhcyBBcnJvd1V0aWwgZnJvbSAnLi4vdXRpbC9hcnJvdyc7XG52YXIgUG9seUxpbmUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBvbHlMaW5lLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFBvbHlMaW5lKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICBQb2x5TGluZS5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHRoaXMuc2V0QXJyb3coKTtcbiAgICB9O1xuICAgIC8vIOabtOaWsOWxnuaAp+aXtu+8jOajgOa1i+aYr+WQpuabtOaUueS6hiBwb2ludHNcbiAgICBQb2x5TGluZS5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0QXJyb3coKTtcbiAgICAgICAgaWYgKFsncG9pbnRzJ10uaW5kZXhPZihuYW1lKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q2FjaGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLl9yZXNldENhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgndG90YWxMZW5ndGgnLCBudWxsKTtcbiAgICAgICAgdGhpcy5zZXQoJ3RDYWNoZScsIG51bGwpO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLnNldEFycm93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRycywgcG9pbnRzID0gX2EucG9pbnRzLCBzdGFydEFycm93ID0gX2Euc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBfYS5lbmRBcnJvdztcbiAgICAgICAgdmFyIGxlbmd0aCA9IHBvaW50cy5sZW5ndGg7XG4gICAgICAgIHZhciB4MSA9IHBvaW50c1swXVswXTtcbiAgICAgICAgdmFyIHkxID0gcG9pbnRzWzBdWzFdO1xuICAgICAgICB2YXIgeDIgPSBwb2ludHNbbGVuZ3RoIC0gMV1bMF07XG4gICAgICAgIHZhciB5MiA9IHBvaW50c1tsZW5ndGggLSAxXVsxXTtcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3cpIHtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRTdGFydEFycm93KHRoaXMsIGF0dHJzLCBwb2ludHNbMV1bMF0sIHBvaW50c1sxXVsxXSwgeDEsIHkxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3cpIHtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRFbmRBcnJvdyh0aGlzLCBhdHRycywgcG9pbnRzW2xlbmd0aCAtIDJdWzBdLCBwb2ludHNbbGVuZ3RoIC0gMl1bMV0sIHgyLCB5Mik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOS4jeWFgeiuuCBmaWxsXG4gICAgUG9seUxpbmUucHJvdG90eXBlLmlzRmlsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLmlzSW5TdHJva2VPclBhdGggPSBmdW5jdGlvbiAoeCwgeSwgaXNTdHJva2UsIGlzRmlsbCwgbGluZVdpZHRoKSB7XG4gICAgICAgIC8vIOayoeacieiuvue9riBzdHJva2Ug5LiN6IO96KKr5ou+5Y+WLCDmsqHmnInnur/lrr3kuI3og73ooqvmi77lj5ZcbiAgICAgICAgaWYgKCFpc1N0cm9rZSB8fCAhbGluZVdpZHRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgcmV0dXJuIGluUG9seWxpbmUocG9pbnRzLCBsaW5lV2lkdGgsIHgsIHksIGZhbHNlKTtcbiAgICB9O1xuICAgIC8vIOWni+e7iOWhq+WFhVxuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5pc1N0cm9rZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBQb2x5TGluZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCBwb2ludHMgPSBfYS5wb2ludHMsIHN0YXJ0QXJyb3cgPSBfYS5zdGFydEFycm93LCBlbmRBcnJvdyA9IF9hLmVuZEFycm93O1xuICAgICAgICB2YXIgbGVuZ3RoID0gcG9pbnRzLmxlbmd0aDtcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHgxID0gcG9pbnRzWzBdWzBdO1xuICAgICAgICB2YXIgeTEgPSBwb2ludHNbMF1bMV07XG4gICAgICAgIHZhciB4MiA9IHBvaW50c1tsZW5ndGggLSAxXVswXTtcbiAgICAgICAgdmFyIHkyID0gcG9pbnRzW2xlbmd0aCAtIDFdWzFdO1xuICAgICAgICAvLyDlpoLmnpzlrprkuYnkuobnrq3lpLTvvIzlubbkuJTmmK/oh6rlrprkuYnnrq3lpLTvvIznur/mnaHnm7jlupTnvKnov5tcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3cgJiYgc3RhcnRBcnJvdy5kKSB7XG4gICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSBBcnJvd1V0aWwuZ2V0U2hvcnRlbk9mZnNldCh4MSwgeTEsIHBvaW50c1sxXVswXSwgcG9pbnRzWzFdWzFdLCBzdGFydEFycm93LmQpO1xuICAgICAgICAgICAgeDEgKz0gZGlzdGFuY2UuZHg7XG4gICAgICAgICAgICB5MSArPSBkaXN0YW5jZS5keTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3cgJiYgZW5kQXJyb3cuZCkge1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gQXJyb3dVdGlsLmdldFNob3J0ZW5PZmZzZXQocG9pbnRzW2xlbmd0aCAtIDJdWzBdLCBwb2ludHNbbGVuZ3RoIC0gMl1bMV0sIHgyLCB5MiwgZW5kQXJyb3cuZCk7XG4gICAgICAgICAgICB4MiAtPSBkaXN0YW5jZS5keDtcbiAgICAgICAgICAgIHkyIC09IGRpc3RhbmNlLmR5O1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnRleHQubW92ZVRvKHgxLCB5MSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhwb2ludFswXSwgcG9pbnRbMV0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQubGluZVRvKHgyLCB5Mik7XG4gICAgfTtcbiAgICBQb2x5TGluZS5wcm90b3R5cGUuYWZ0ZXJEcmF3UGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBzdGFydEFycm93U2hhcGUgPSB0aGlzLmdldCgnc3RhcnRBcnJvd1NoYXBlJyk7XG4gICAgICAgIHZhciBlbmRBcnJvd1NoYXBlID0gdGhpcy5nZXQoJ2VuZEFycm93U2hhcGUnKTtcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3dTaGFwZSkge1xuICAgICAgICAgICAgc3RhcnRBcnJvd1NoYXBlLmRyYXcoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZEFycm93U2hhcGUpIHtcbiAgICAgICAgICAgIGVuZEFycm93U2hhcGUuZHJhdyhjb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IGxlbmd0aCBvZiBwb2x5bGluZVxuICAgICAqIEByZXR1cm4ge251bWJlcn0gbGVuZ3RoXG4gICAgICovXG4gICAgUG9seUxpbmUucHJvdG90eXBlLmdldFRvdGFsTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICAvLyBnZXQgdG90YWxMZW5ndGggZnJvbSBjYWNoZVxuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSB0aGlzLmdldCgndG90YWxMZW5ndGgnKTtcbiAgICAgICAgaWYgKCFpc05pbCh0b3RhbExlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0b3RhbExlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldCgndG90YWxMZW5ndGgnLCBQb2x5bGluZVV0aWwubGVuZ3RoKHBvaW50cykpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ3RvdGFsTGVuZ3RoJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgcG9pbnQgYWNjb3JkaW5nIHRvIHJhdGlvXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgUG9seUxpbmUucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIC8vIGdldCB0Q2FjaGUgZnJvbSBjYWNoZVxuICAgICAgICB2YXIgdENhY2hlID0gdGhpcy5nZXQoJ3RDYWNoZScpO1xuICAgICAgICBpZiAoIXRDYWNoZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VGNhY2hlKCk7XG4gICAgICAgICAgICB0Q2FjaGUgPSB0aGlzLmdldCgndENhY2hlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1YnQ7XG4gICAgICAgIHZhciBpbmRleDtcbiAgICAgICAgZWFjaCh0Q2FjaGUsIGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgICAgICBpZiAocmF0aW8gPj0gdlswXSAmJiByYXRpbyA8PSB2WzFdKSB7XG4gICAgICAgICAgICAgICAgc3VidCA9IChyYXRpbyAtIHZbMF0pIC8gKHZbMV0gLSB2WzBdKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gTGluZVV0aWwucG9pbnRBdChwb2ludHNbaW5kZXhdWzBdLCBwb2ludHNbaW5kZXhdWzFdLCBwb2ludHNbaW5kZXggKyAxXVswXSwgcG9pbnRzW2luZGV4ICsgMV1bMV0sIHN1YnQpO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLl9zZXRUY2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIGlmICghcG9pbnRzIHx8IHBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSB0aGlzLmdldFRvdGFsTGVuZ3RoKCk7XG4gICAgICAgIGlmICh0b3RhbExlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRlbXBMZW5ndGggPSAwO1xuICAgICAgICB2YXIgdENhY2hlID0gW107XG4gICAgICAgIHZhciBzZWdtZW50VDtcbiAgICAgICAgdmFyIHNlZ21lbnRMO1xuICAgICAgICBlYWNoKHBvaW50cywgZnVuY3Rpb24gKHAsIGkpIHtcbiAgICAgICAgICAgIGlmIChwb2ludHNbaSArIDFdKSB7XG4gICAgICAgICAgICAgICAgc2VnbWVudFQgPSBbXTtcbiAgICAgICAgICAgICAgICBzZWdtZW50VFswXSA9IHRlbXBMZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgICAgICAgICBzZWdtZW50TCA9IExpbmVVdGlsLmxlbmd0aChwWzBdLCBwWzFdLCBwb2ludHNbaSArIDFdWzBdLCBwb2ludHNbaSArIDFdWzFdKTtcbiAgICAgICAgICAgICAgICB0ZW1wTGVuZ3RoICs9IHNlZ21lbnRMO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUWzFdID0gdGVtcExlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRDYWNoZS5wdXNoKHNlZ21lbnRUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCB0Q2FjaGUpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHN0YXJ0IHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUG9seUxpbmUucHJvdG90eXBlLmdldFN0YXJ0VGFuZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICByZXN1bHQucHVzaChbcG9pbnRzWzFdWzBdLCBwb2ludHNbMV1bMV1dKTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdXSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgZW5kIHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUG9seUxpbmUucHJvdG90eXBlLmdldEVuZFRhbmdlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIHZhciBsID0gcG9pbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1tsIC0gMV1bMF0sIHBvaW50c1tsIC0gMV1bMV1dKTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1tsXVswXSwgcG9pbnRzW2xdWzFdXSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICByZXR1cm4gUG9seUxpbmU7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgUG9seUxpbmU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/polyline.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/rect.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/rect.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_parse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/parse */ \"./node_modules/@antv/g-canvas/esm/util/parse.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_in_stroke_rect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/in-stroke/rect */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/rect.js\");\n/* harmony import */ var _util_in_stroke_rect_radius__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/in-stroke/rect-radius */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/rect-radius.js\");\n/* harmony import */ var _util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/in-path/point-in-path */ \"./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js\");\n/**\n * @fileoverview 矩形\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\nvar Rect = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Rect, _super);\n function Rect() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0, radius: 0 });\n };\n Rect.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var minX = attrs.x;\n var minY = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n // 无圆角时的策略\n if (!radius) {\n var halfWidth = lineWidth / 2;\n // 同时填充和带有边框\n if (isFill && isStroke) {\n return Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"inBox\"])(minX - halfWidth, minY - halfWidth, width + halfWidth, height + halfWidth, x, y);\n }\n // 仅填充\n if (isFill) {\n return Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"inBox\"])(minX, minY, width, height, x, y);\n }\n if (isStroke) {\n return Object(_util_in_stroke_rect__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(minX, minY, width, height, lineWidth, x, y);\n }\n }\n else {\n var isHit = false;\n if (isStroke) {\n isHit = Object(_util_in_stroke_rect_radius__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(minX, minY, width, height, radius, lineWidth, x, y);\n }\n // 仅填充时带有圆角的矩形直接通过图形拾取\n // 以后可以改成纯数学的近似拾取,将圆弧切割成多边形\n if (!isHit && isFill) {\n isHit = Object(_util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this, x, y);\n }\n return isHit;\n }\n };\n Rect.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n context.beginPath();\n if (radius === 0) {\n // 改成原生的rect方法\n context.rect(x, y, width, height);\n }\n else {\n var _a = Object(_util_parse__WEBPACK_IMPORTED_MODULE_2__[\"parseRadius\"])(radius), r1 = _a[0], r2 = _a[1], r3 = _a[2], r4 = _a[3];\n context.moveTo(x + r1, y);\n context.lineTo(x + width - r2, y);\n r2 !== 0 && context.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n context.lineTo(x + width, y + height - r3);\n r3 !== 0 && context.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n context.lineTo(x + r4, y + height);\n r4 !== 0 && context.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n context.lineTo(x, y + r1);\n r1 !== 0 && context.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n context.closePath();\n }\n };\n return Rect;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Rect);\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3JlY3QuanM/MjcwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDYjtBQUNhO0FBQ1A7QUFDTztBQUNpQjtBQUNIO0FBQzFEO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLDZDQUE2QztBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix3REFBSztBQUM1QjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsd0RBQUs7QUFDNUI7QUFDQTtBQUNBLHVCQUF1QixvRUFBTTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDJFQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwyRUFBYTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtEQUFXO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDnn6nlvaJcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBwYXJzZVJhZGl1cyB9IGZyb20gJy4uL3V0aWwvcGFyc2UnO1xuaW1wb3J0IHsgaW5Cb3ggfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IGluUmVjdCBmcm9tICcuLi91dGlsL2luLXN0cm9rZS9yZWN0JztcbmltcG9ydCBpblJlY3RXaXRoUmFkaXVzIGZyb20gJy4uL3V0aWwvaW4tc3Ryb2tlL3JlY3QtcmFkaXVzJztcbmltcG9ydCBpc1BvaW50SW5QYXRoIGZyb20gJy4uL3V0aWwvaW4tcGF0aC9wb2ludC1pbi1wYXRoJztcbnZhciBSZWN0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhSZWN0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFJlY3QoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgUmVjdC5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwLCByYWRpdXM6IDAgfSk7XG4gICAgfTtcbiAgICBSZWN0LnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIG1pblggPSBhdHRycy54O1xuICAgICAgICB2YXIgbWluWSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciB3aWR0aCA9IGF0dHJzLndpZHRoO1xuICAgICAgICB2YXIgaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0O1xuICAgICAgICB2YXIgcmFkaXVzID0gYXR0cnMucmFkaXVzO1xuICAgICAgICAvLyDml6DlnIbop5Lml7bnmoTnrZbnlaVcbiAgICAgICAgaWYgKCFyYWRpdXMpIHtcbiAgICAgICAgICAgIHZhciBoYWxmV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgICAgICAgICAgLy8g5ZCM5pe25aGr5YWF5ZKM5bim5pyJ6L655qGGXG4gICAgICAgICAgICBpZiAoaXNGaWxsICYmIGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluQm94KG1pblggLSBoYWxmV2lkdGgsIG1pblkgLSBoYWxmV2lkdGgsIHdpZHRoICsgaGFsZldpZHRoLCBoZWlnaHQgKyBoYWxmV2lkdGgsIHgsIHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g5LuF5aGr5YWFXG4gICAgICAgICAgICBpZiAoaXNGaWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluQm94KG1pblgsIG1pblksIHdpZHRoLCBoZWlnaHQsIHgsIHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluUmVjdChtaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0LCBsaW5lV2lkdGgsIHgsIHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoaXNTdHJva2UpIHtcbiAgICAgICAgICAgICAgICBpc0hpdCA9IGluUmVjdFdpdGhSYWRpdXMobWluWCwgbWluWSwgd2lkdGgsIGhlaWdodCwgcmFkaXVzLCBsaW5lV2lkdGgsIHgsIHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g5LuF5aGr5YWF5pe25bim5pyJ5ZyG6KeS55qE55+p5b2i55u05o6l6YCa6L+H5Zu+5b2i5ou+5Y+WXG4gICAgICAgICAgICAvLyDku6XlkI7lj6/ku6XmlLnmiJDnuq/mlbDlrabnmoTov5HkvLzmi77lj5bvvIzlsIblnIblvKfliIflibLmiJDlpJrovrnlvaJcbiAgICAgICAgICAgIGlmICghaXNIaXQgJiYgaXNGaWxsKSB7XG4gICAgICAgICAgICAgICAgaXNIaXQgPSBpc1BvaW50SW5QYXRoKHRoaXMsIHgsIHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGlzSGl0O1xuICAgICAgICB9XG4gICAgfTtcbiAgICBSZWN0LnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4ID0gYXR0cnMueDtcbiAgICAgICAgdmFyIHkgPSBhdHRycy55O1xuICAgICAgICB2YXIgd2lkdGggPSBhdHRycy53aWR0aDtcbiAgICAgICAgdmFyIGhlaWdodCA9IGF0dHJzLmhlaWdodDtcbiAgICAgICAgdmFyIHJhZGl1cyA9IGF0dHJzLnJhZGl1cztcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgaWYgKHJhZGl1cyA9PT0gMCkge1xuICAgICAgICAgICAgLy8g5pS55oiQ5Y6f55Sf55qEcmVjdOaWueazlVxuICAgICAgICAgICAgY29udGV4dC5yZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIF9hID0gcGFyc2VSYWRpdXMocmFkaXVzKSwgcjEgPSBfYVswXSwgcjIgPSBfYVsxXSwgcjMgPSBfYVsyXSwgcjQgPSBfYVszXTtcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHggKyByMSwgeSk7XG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh4ICsgd2lkdGggLSByMiwgeSk7XG4gICAgICAgICAgICByMiAhPT0gMCAmJiBjb250ZXh0LmFyYyh4ICsgd2lkdGggLSByMiwgeSArIHIyLCByMiwgLU1hdGguUEkgLyAyLCAwKTtcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHggKyB3aWR0aCwgeSArIGhlaWdodCAtIHIzKTtcbiAgICAgICAgICAgIHIzICE9PSAwICYmIGNvbnRleHQuYXJjKHggKyB3aWR0aCAtIHIzLCB5ICsgaGVpZ2h0IC0gcjMsIHIzLCAwLCBNYXRoLlBJIC8gMik7XG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh4ICsgcjQsIHkgKyBoZWlnaHQpO1xuICAgICAgICAgICAgcjQgIT09IDAgJiYgY29udGV4dC5hcmMoeCArIHI0LCB5ICsgaGVpZ2h0IC0gcjQsIHI0LCBNYXRoLlBJIC8gMiwgTWF0aC5QSSk7XG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh4LCB5ICsgcjEpO1xuICAgICAgICAgICAgcjEgIT09IDAgJiYgY29udGV4dC5hcmMoeCArIHIxLCB5ICsgcjEsIHIxLCBNYXRoLlBJLCBNYXRoLlBJICogMS41KTtcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBSZWN0O1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFJlY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/rect.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/shape/text.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/shape/text.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/**\n * @fileoverview 文本\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Text = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Text, _super);\n function Text() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // 默认文本属性\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, text: null, fontSize: 12, fontFamily: 'sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontVariant: 'normal', textAlign: 'start', textBaseline: 'bottom' });\n };\n // 仅仅使用包围盒检测来进行拾取\n Text.prototype.isOnlyHitBox = function () {\n return true;\n };\n // 初始化时组合 font,同时判断 text 是否换行\n Text.prototype.initAttrs = function (attrs) {\n this._assembleFont();\n if (attrs.text) {\n this._setText(attrs.text);\n }\n };\n // 组装字体\n Text.prototype._assembleFont = function () {\n var attrs = this.attrs;\n attrs.font = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_3__[\"assembleFont\"])(attrs);\n };\n // 如果文本换行,则缓存数组\n Text.prototype._setText = function (text) {\n var textArr = null;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(text) && text.indexOf('\\n') !== -1) {\n textArr = text.split('\\n');\n }\n this.set('textArr', textArr);\n };\n // 更新属性时,检测是否更改了 font、text\n Text.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name.startsWith('font')) {\n this._assembleFont();\n }\n if (name === 'text') {\n this._setText(value);\n }\n };\n // 这个方法在 text 时没有可以做的事情,如果要支持文字背景时可以考虑\n // createPath(context) {\n // }\n // 如果文本多行,需要获取文本间距\n Text.prototype._getSpaceingY = function () {\n var attrs = this.attrs;\n var lineHeight = attrs.lineHeight;\n var fontSize = attrs.fontSize * 1;\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n };\n // 绘制文本,考虑多行的场景\n Text.prototype._drawTextArr = function (context, textArr, isFill) {\n var attrs = this.attrs;\n var textBaseline = attrs.textBaseline;\n var x = attrs.x;\n var y = attrs.y;\n var fontSize = attrs.fontSize * 1;\n var spaceingY = this._getSpaceingY();\n var height = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_3__[\"getTextHeight\"])(attrs.text, attrs.fontSize, attrs.lineHeight);\n var subY;\n Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(textArr, function (subText, index) {\n subY = y + index * (spaceingY + fontSize) - height + fontSize; // bottom;\n if (textBaseline === 'middle')\n subY += height - fontSize - (height - fontSize) / 2;\n if (textBaseline === 'top')\n subY += height - fontSize;\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(subText)) {\n if (isFill) {\n context.fillText(subText, x, subY);\n }\n else {\n context.strokeText(subText, x, subY);\n }\n }\n });\n };\n // 绘制文本,同时考虑填充和绘制边框\n Text.prototype._drawText = function (context, isFill) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var textArr = this.get('textArr');\n if (textArr) {\n this._drawTextArr(context, textArr, isFill);\n }\n else {\n var text = attrs.text;\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(text)) {\n if (isFill) {\n context.fillText(text, x, y);\n }\n else {\n context.strokeText(text, x, y);\n }\n }\n }\n };\n // 复写绘制和填充的逻辑:对于文本,应该先绘制边框,再进行填充\n Text.prototype.strokeAndFill = function (context) {\n var _a = this.attrs, lineWidth = _a.lineWidth, opacity = _a.opacity, strokeOpacity = _a.strokeOpacity, fillOpacity = _a.fillOpacity;\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = opacity;\n }\n this.stroke(context);\n }\n }\n if (this.isFill()) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n }\n else {\n this.fill(context);\n }\n }\n this.afterDrawPath(context);\n };\n // 复写填充逻辑\n Text.prototype.fill = function (context) {\n this._drawText(context, true);\n };\n // 复写绘制边框的逻辑\n Text.prototype.stroke = function (context) {\n this._drawText(context, false);\n };\n return Text;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Text);\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3RleHQuanM/NDIyZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDYjtBQUNzQjtBQUNNO0FBQzNEO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsK0tBQStLO0FBQzdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixpRUFBWTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixrRUFBYTtBQUNsQztBQUNBLFFBQVEsdURBQUk7QUFDWiwwRUFBMEU7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQUs7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vc2hhcGUvdGV4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDmlofmnKxcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBpc05pbCwgaXNTdHJpbmcsIGVhY2ggfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgZ2V0VGV4dEhlaWdodCwgYXNzZW1ibGVGb250IH0gZnJvbSAnQGFudHYvZy1iYXNlJztcbnZhciBUZXh0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhUZXh0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRleHQoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgLy8g6buY6K6k5paH5pys5bGe5oCnXG4gICAgVGV4dC5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCB0ZXh0OiBudWxsLCBmb250U2l6ZTogMTIsIGZvbnRGYW1pbHk6ICdzYW5zLXNlcmlmJywgZm9udFN0eWxlOiAnbm9ybWFsJywgZm9udFdlaWdodDogJ25vcm1hbCcsIGZvbnRWYXJpYW50OiAnbm9ybWFsJywgdGV4dEFsaWduOiAnc3RhcnQnLCB0ZXh0QmFzZWxpbmU6ICdib3R0b20nIH0pO1xuICAgIH07XG4gICAgLy8g5LuF5LuF5L2/55So5YyF5Zu055uS5qOA5rWL5p2l6L+b6KGM5ou+5Y+WXG4gICAgVGV4dC5wcm90b3R5cGUuaXNPbmx5SGl0Qm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIC8vIOWIneWni+WMluaXtue7hOWQiCBmb25077yM5ZCM5pe25Yik5patIHRleHQg5piv5ZCm5o2i6KGMXG4gICAgVGV4dC5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHRoaXMuX2Fzc2VtYmxlRm9udCgpO1xuICAgICAgICBpZiAoYXR0cnMudGV4dCkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VGV4dChhdHRycy50ZXh0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g57uE6KOF5a2X5L2TXG4gICAgVGV4dC5wcm90b3R5cGUuX2Fzc2VtYmxlRm9udCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRycztcbiAgICAgICAgYXR0cnMuZm9udCA9IGFzc2VtYmxlRm9udChhdHRycyk7XG4gICAgfTtcbiAgICAvLyDlpoLmnpzmlofmnKzmjaLooYzvvIzliJnnvJPlrZjmlbDnu4RcbiAgICBUZXh0LnByb3RvdHlwZS5fc2V0VGV4dCA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gICAgICAgIHZhciB0ZXh0QXJyID0gbnVsbDtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHRleHQpICYmIHRleHQuaW5kZXhPZignXFxuJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0ZXh0QXJyID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXQoJ3RleHRBcnInLCB0ZXh0QXJyKTtcbiAgICB9O1xuICAgIC8vIOabtOaWsOWxnuaAp+aXtu+8jOajgOa1i+aYr+WQpuabtOaUueS6hiBmb25044CBdGV4dFxuICAgIFRleHQucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKCdmb250JykpIHtcbiAgICAgICAgICAgIHRoaXMuX2Fzc2VtYmxlRm9udCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRleHQodmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDov5nkuKrmlrnms5XlnKggdGV4dCDml7bmsqHmnInlj6/ku6XlgZrnmoTkuovmg4XvvIzlpoLmnpzopoHmlK/mjIHmloflrZfog4zmma/ml7blj6/ku6XogIPomZFcbiAgICAvLyBjcmVhdGVQYXRoKGNvbnRleHQpIHtcbiAgICAvLyB9XG4gICAgLy8g5aaC5p6c5paH5pys5aSa6KGM77yM6ZyA6KaB6I635Y+W5paH5pys6Ze06LedXG4gICAgVGV4dC5wcm90b3R5cGUuX2dldFNwYWNlaW5nWSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRycztcbiAgICAgICAgdmFyIGxpbmVIZWlnaHQgPSBhdHRycy5saW5lSGVpZ2h0O1xuICAgICAgICB2YXIgZm9udFNpemUgPSBhdHRycy5mb250U2l6ZSAqIDE7XG4gICAgICAgIHJldHVybiBsaW5lSGVpZ2h0ID8gbGluZUhlaWdodCAtIGZvbnRTaXplIDogZm9udFNpemUgKiAwLjE0O1xuICAgIH07XG4gICAgLy8g57uY5Yi25paH5pys77yM6ICD6JmR5aSa6KGM55qE5Zy65pmvXG4gICAgVGV4dC5wcm90b3R5cGUuX2RyYXdUZXh0QXJyID0gZnVuY3Rpb24gKGNvbnRleHQsIHRleHRBcnIsIGlzRmlsbCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHJzO1xuICAgICAgICB2YXIgdGV4dEJhc2VsaW5lID0gYXR0cnMudGV4dEJhc2VsaW5lO1xuICAgICAgICB2YXIgeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciB5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIGZvbnRTaXplID0gYXR0cnMuZm9udFNpemUgKiAxO1xuICAgICAgICB2YXIgc3BhY2VpbmdZID0gdGhpcy5fZ2V0U3BhY2VpbmdZKCk7XG4gICAgICAgIHZhciBoZWlnaHQgPSBnZXRUZXh0SGVpZ2h0KGF0dHJzLnRleHQsIGF0dHJzLmZvbnRTaXplLCBhdHRycy5saW5lSGVpZ2h0KTtcbiAgICAgICAgdmFyIHN1Ylk7XG4gICAgICAgIGVhY2godGV4dEFyciwgZnVuY3Rpb24gKHN1YlRleHQsIGluZGV4KSB7XG4gICAgICAgICAgICBzdWJZID0geSArIGluZGV4ICogKHNwYWNlaW5nWSArIGZvbnRTaXplKSAtIGhlaWdodCArIGZvbnRTaXplOyAvLyBib3R0b207XG4gICAgICAgICAgICBpZiAodGV4dEJhc2VsaW5lID09PSAnbWlkZGxlJylcbiAgICAgICAgICAgICAgICBzdWJZICs9IGhlaWdodCAtIGZvbnRTaXplIC0gKGhlaWdodCAtIGZvbnRTaXplKSAvIDI7XG4gICAgICAgICAgICBpZiAodGV4dEJhc2VsaW5lID09PSAndG9wJylcbiAgICAgICAgICAgICAgICBzdWJZICs9IGhlaWdodCAtIGZvbnRTaXplO1xuICAgICAgICAgICAgaWYgKCFpc05pbChzdWJUZXh0KSkge1xuICAgICAgICAgICAgICAgIGlmIChpc0ZpbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dChzdWJUZXh0LCB4LCBzdWJZKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlVGV4dChzdWJUZXh0LCB4LCBzdWJZKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8g57uY5Yi25paH5pys77yM5ZCM5pe26ICD6JmR5aGr5YWF5ZKM57uY5Yi26L655qGGXG4gICAgVGV4dC5wcm90b3R5cGUuX2RyYXdUZXh0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGlzRmlsbCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHggPSBhdHRycy54O1xuICAgICAgICB2YXIgeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciB0ZXh0QXJyID0gdGhpcy5nZXQoJ3RleHRBcnInKTtcbiAgICAgICAgaWYgKHRleHRBcnIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RyYXdUZXh0QXJyKGNvbnRleHQsIHRleHRBcnIsIGlzRmlsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgdGV4dCA9IGF0dHJzLnRleHQ7XG4gICAgICAgICAgICBpZiAoIWlzTmlsKHRleHQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmlsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIHgsIHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2VUZXh0KHRleHQsIHgsIHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5aSN5YaZ57uY5Yi25ZKM5aGr5YWF55qE6YC76L6R77ya5a+55LqO5paH5pys77yM5bqU6K+l5YWI57uY5Yi26L655qGG77yM5YaN6L+b6KGM5aGr5YWFXG4gICAgVGV4dC5wcm90b3R5cGUuc3Ryb2tlQW5kRmlsbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cnMsIGxpbmVXaWR0aCA9IF9hLmxpbmVXaWR0aCwgb3BhY2l0eSA9IF9hLm9wYWNpdHksIHN0cm9rZU9wYWNpdHkgPSBfYS5zdHJva2VPcGFjaXR5LCBmaWxsT3BhY2l0eSA9IF9hLmZpbGxPcGFjaXR5O1xuICAgICAgICBpZiAodGhpcy5pc1N0cm9rZSgpKSB7XG4gICAgICAgICAgICBpZiAobGluZVdpZHRoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmICghaXNOaWwoc3Ryb2tlT3BhY2l0eSkgJiYgc3Ryb2tlT3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb3BhY2l0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJva2UoY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNGaWxsKCkpIHtcbiAgICAgICAgICAgIGlmICghaXNOaWwoZmlsbE9wYWNpdHkpICYmIGZpbGxPcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IGZpbGxPcGFjaXR5O1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbChjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb3BhY2l0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbChjb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFmdGVyRHJhd1BhdGgoY29udGV4dCk7XG4gICAgfTtcbiAgICAvLyDlpI3lhpnloavlhYXpgLvovpFcbiAgICBUZXh0LnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5fZHJhd1RleHQoY29udGV4dCwgdHJ1ZSk7XG4gICAgfTtcbiAgICAvLyDlpI3lhpnnu5jliLbovrnmoYbnmoTpgLvovpFcbiAgICBUZXh0LnByb3RvdHlwZS5zdHJva2UgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB0aGlzLl9kcmF3VGV4dChjb250ZXh0LCBmYWxzZSk7XG4gICAgfTtcbiAgICByZXR1cm4gVGV4dDtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBUZXh0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGV4dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/shape/text.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/arc-params.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/arc-params.js ***! \************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getArcParams; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nfunction getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"])(Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"])(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? (f * rx * yp) / ry : 0;\n var cyp = rx ? (f * -ry * xp) / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isSamePoint\"])(startPoint, [x2, y2]) ? 0 : rx,\n ry: Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isSamePoint\"])(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag,\n };\n}\n//# sourceMappingURL=arc-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvYXJjLXBhcmFtcy5qcz85YzI5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFvRDtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0Esb0JBQW9CLGlEQUFHLENBQUMsc0RBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseURBQVc7QUFDdkIsWUFBWSx5REFBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL2FyYy1wYXJhbXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb2QsIHRvUmFkaWFuLCBpc1NhbWVQb2ludCB9IGZyb20gJy4vdXRpbCc7XG4vLyDlkJHph4/plb/luqZcbmZ1bmN0aW9uIHZNYWcodikge1xuICAgIHJldHVybiBNYXRoLnNxcnQodlswXSAqIHZbMF0gKyB2WzFdICogdlsxXSk7XG59XG4vLyB1LnYvfHV8fHZ877yM6K6h566X5aS56KeS55qE5L2Z5bym5YC8XG5mdW5jdGlvbiB2UmF0aW8odSwgdikge1xuICAgIC8vIOW9k+WtmOWcqOS4gOS4quWQkemHj+eahOmVv+W6puS4uiAwIOaXtu+8jOWkueinkuS5n+S4uiAw77yM5Y2z5aS56KeS55qE5L2Z5bym5YC85Li6IDFcbiAgICByZXR1cm4gdk1hZyh1KSAqIHZNYWcodikgPyAodVswXSAqIHZbMF0gKyB1WzFdICogdlsxXSkgLyAodk1hZyh1KSAqIHZNYWcodikpIDogMTtcbn1cbi8vIOWQkemHj+inkuW6plxuZnVuY3Rpb24gdkFuZ2xlKHUsIHYpIHtcbiAgICByZXR1cm4gKHVbMF0gKiB2WzFdIDwgdVsxXSAqIHZbMF0gPyAtMSA6IDEpICogTWF0aC5hY29zKHZSYXRpbyh1LCB2KSk7XG59XG4vLyBBIDA6cnggMTpyeSAyOngtYXhpcy1yb3RhdGlvbiAzOmxhcmdlLWFyYy1mbGFnIDQ6c3dlZXAtZmxhZyA1OiB4IDY6IHlcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFyY1BhcmFtcyhzdGFydFBvaW50LCBwYXJhbXMpIHtcbiAgICB2YXIgcnggPSBwYXJhbXNbMV07XG4gICAgdmFyIHJ5ID0gcGFyYW1zWzJdO1xuICAgIHZhciB4Um90YXRpb24gPSBtb2QodG9SYWRpYW4ocGFyYW1zWzNdKSwgTWF0aC5QSSAqIDIpO1xuICAgIHZhciBhcmNGbGFnID0gcGFyYW1zWzRdO1xuICAgIHZhciBzd2VlcEZsYWcgPSBwYXJhbXNbNV07XG4gICAgLy8g5byn5b2i6LW354K55Z2Q5qCHXG4gICAgdmFyIHgxID0gc3RhcnRQb2ludFswXTtcbiAgICB2YXIgeTEgPSBzdGFydFBvaW50WzFdO1xuICAgIC8vIOW8p+W9oue7iOeCueWdkOagh1xuICAgIHZhciB4MiA9IHBhcmFtc1s2XTtcbiAgICB2YXIgeTIgPSBwYXJhbXNbN107XG4gICAgdmFyIHhwID0gKE1hdGguY29zKHhSb3RhdGlvbikgKiAoeDEgLSB4MikpIC8gMi4wICsgKE1hdGguc2luKHhSb3RhdGlvbikgKiAoeTEgLSB5MikpIC8gMi4wO1xuICAgIHZhciB5cCA9ICgtMSAqIE1hdGguc2luKHhSb3RhdGlvbikgKiAoeDEgLSB4MikpIC8gMi4wICsgKE1hdGguY29zKHhSb3RhdGlvbikgKiAoeTEgLSB5MikpIC8gMi4wO1xuICAgIHZhciBsYW1iZGEgPSAoeHAgKiB4cCkgLyAocnggKiByeCkgKyAoeXAgKiB5cCkgLyAocnkgKiByeSk7XG4gICAgaWYgKGxhbWJkYSA+IDEpIHtcbiAgICAgICAgcnggKj0gTWF0aC5zcXJ0KGxhbWJkYSk7XG4gICAgICAgIHJ5ICo9IE1hdGguc3FydChsYW1iZGEpO1xuICAgIH1cbiAgICB2YXIgZGlmZiA9IHJ4ICogcnggKiAoeXAgKiB5cCkgKyByeSAqIHJ5ICogKHhwICogeHApO1xuICAgIHZhciBmID0gZGlmZiA/IE1hdGguc3FydCgocnggKiByeCAqIChyeSAqIHJ5KSAtIGRpZmYpIC8gZGlmZikgOiAxO1xuICAgIGlmIChhcmNGbGFnID09PSBzd2VlcEZsYWcpIHtcbiAgICAgICAgZiAqPSAtMTtcbiAgICB9XG4gICAgaWYgKGlzTmFOKGYpKSB7XG4gICAgICAgIGYgPSAwO1xuICAgIH1cbiAgICAvLyDml4vovazliY3nmoTotbfngrnlnZDmoIfvvIzkuJTlvZPplb/ljYrovbTlkoznn63ljYrovbTnmoTplb/luqbkuLogMCDml7bvvIzlnZDmoIfmjIkgKDAsIDApIOWkhOeQhlxuICAgIHZhciBjeHAgPSByeSA/IChmICogcnggKiB5cCkgLyByeSA6IDA7XG4gICAgdmFyIGN5cCA9IHJ4ID8gKGYgKiAtcnkgKiB4cCkgLyByeCA6IDA7XG4gICAgLy8g5qSt5ZyG5ZyG5b+D5Z2Q5qCHXG4gICAgdmFyIGN4ID0gKHgxICsgeDIpIC8gMi4wICsgTWF0aC5jb3MoeFJvdGF0aW9uKSAqIGN4cCAtIE1hdGguc2luKHhSb3RhdGlvbikgKiBjeXA7XG4gICAgdmFyIGN5ID0gKHkxICsgeTIpIC8gMi4wICsgTWF0aC5zaW4oeFJvdGF0aW9uKSAqIGN4cCArIE1hdGguY29zKHhSb3RhdGlvbikgKiBjeXA7XG4gICAgLy8g6LW35aeL54K555qE5Y2V5L2N5ZCR6YePXG4gICAgdmFyIHUgPSBbKHhwIC0gY3hwKSAvIHJ4LCAoeXAgLSBjeXApIC8gcnldO1xuICAgIC8vIOe7iOatoueCueeahOWNleS9jeWQkemHj1xuICAgIHZhciB2ID0gWygtMSAqIHhwIC0gY3hwKSAvIHJ4LCAoLTEgKiB5cCAtIGN5cCkgLyByeV07XG4gICAgLy8g6K6h566X6LW35aeL54K55ZKM5ZyG5b+D55qE6L+e57q/77yM5LiOIHgg6L205q2j5pa55ZCR55qE5aS56KeSXG4gICAgdmFyIHRoZXRhID0gdkFuZ2xlKFsxLCAwXSwgdSk7XG4gICAgLy8g6K6h566X5ZyG5byn6LW35aeL54K55ZKM57uI5q2i54K55LiO5qSt5ZyG5ZyG5b+D6L+e57q/55qE5aS56KeSXG4gICAgdmFyIGRUaGV0YSA9IHZBbmdsZSh1LCB2KTtcbiAgICBpZiAodlJhdGlvKHUsIHYpIDw9IC0xKSB7XG4gICAgICAgIGRUaGV0YSA9IE1hdGguUEk7XG4gICAgfVxuICAgIGlmICh2UmF0aW8odSwgdikgPj0gMSkge1xuICAgICAgICBkVGhldGEgPSAwO1xuICAgIH1cbiAgICBpZiAoc3dlZXBGbGFnID09PSAwICYmIGRUaGV0YSA+IDApIHtcbiAgICAgICAgZFRoZXRhID0gZFRoZXRhIC0gMiAqIE1hdGguUEk7XG4gICAgfVxuICAgIGlmIChzd2VlcEZsYWcgPT09IDEgJiYgZFRoZXRhIDwgMCkge1xuICAgICAgICBkVGhldGEgPSBkVGhldGEgKyAyICogTWF0aC5QSTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY3g6IGN4LFxuICAgICAgICBjeTogY3ksXG4gICAgICAgIC8vIOW8p+W9oueahOi1t+eCueWSjOe7iOeCueebuOWQjOaXtu+8jOmVv+i9tOWSjOefrei9tOeahOmVv+W6puaMiSAwIOWkhOeQhlxuICAgICAgICByeDogaXNTYW1lUG9pbnQoc3RhcnRQb2ludCwgW3gyLCB5Ml0pID8gMCA6IHJ4LFxuICAgICAgICByeTogaXNTYW1lUG9pbnQoc3RhcnRQb2ludCwgW3gyLCB5Ml0pID8gMCA6IHJ5LFxuICAgICAgICBzdGFydEFuZ2xlOiB0aGV0YSxcbiAgICAgICAgZW5kQW5nbGU6IHRoZXRhICsgZFRoZXRhLFxuICAgICAgICB4Um90YXRpb246IHhSb3RhdGlvbixcbiAgICAgICAgYXJjRmxhZzogYXJjRmxhZyxcbiAgICAgICAgc3dlZXBGbGFnOiBzd2VlcEZsYWcsXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFyYy1wYXJhbXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/arc-params.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/arrow.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/arrow.js ***! \*******************************************************/ /*! exports provided: getShortenOffset, addStartArrow, addEndArrow */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getShortenOffset\", function() { return getShortenOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addStartArrow\", function() { return addStartArrow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEndArrow\", function() { return addEndArrow; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g-canvas/esm/shape/index.js\");\n\n\nvar sin = Math.sin, cos = Math.cos, atan2 = Math.atan2, PI = Math.PI;\nfunction _addDefaultArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var stroke = attrs.stroke, lineWidth = attrs.lineWidth;\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n var arrowShape = new _shape__WEBPACK_IMPORTED_MODULE_1__[\"Path\"]({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n // 默认箭头的边长为 10,夹角为 60 度\n path: \"M\" + 10 * cos(PI / 6) + \",\" + 10 * sin(PI / 6) + \" L0,0 L\" + 10 * cos(PI / 6) + \",-\" + 10 * sin(PI / 6),\n // 使用 shape stroke 值\n stroke: stroke,\n lineWidth: lineWidth,\n },\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 箭头 path 的设置要求\n * 1. 箭头顶点坐标需要为 (0, 0)\n * 2. 箭头夹角的中心分割线需要与 X 轴正方向对齐\n */\nfunction _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var startArrow = attrs.startArrow, endArrow = attrs.endArrow, stroke = attrs.stroke, lineWidth = attrs.lineWidth;\n var arrowAttrs = isStart ? startArrow : endArrow;\n var d = arrowAttrs.d, arrowFill = arrowAttrs.fill, arrowStroke = arrowAttrs.stroke, arrowLineWidth = arrowAttrs.lineWidth, restAttrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(arrowAttrs, [\"d\", \"fill\", \"stroke\", \"lineWidth\"]);\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n if (d) {\n x2 = x2 - cos(rad) * d;\n y2 = y2 - sin(rad) * d;\n }\n var arrowShape = new _shape__WEBPACK_IMPORTED_MODULE_1__[\"Path\"]({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, restAttrs), { \n // 支持单独设置箭头的 stroke 和 lineWidth,若为空则使用 shape 的值\n stroke: arrowStroke || stroke, lineWidth: arrowLineWidth || lineWidth, \n // 箭头是否填充需要手动设置,不会继承自 shape 的值\n fill: arrowFill }),\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 如果自定义箭头并且有 d 需要做偏移,如果直接画,线条会超出箭头尖端,因此需要根据箭头偏移 d, 返回线需要缩短的距离\n * |----------------\n * |<|--------------\n * |\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n * @param {number} d 箭头沿线条方向的偏移距离\n * @return {{dx: number, dy: number}} 返回线条偏移距离\n */\nfunction getShortenOffset(x1, y1, x2, y2, d) {\n var rad = atan2(y2 - y1, x2 - x1);\n return {\n dx: cos(rad) * d,\n dy: sin(rad) * d,\n };\n}\n/**\n * 绘制起始箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nfunction addStartArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.startArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, true);\n }\n else if (attrs.startArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, true);\n }\n else {\n shape.set('startArrowShape', null);\n }\n}\n/**\n * 绘制结束箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nfunction addEndArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.endArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, false);\n }\n else if (attrs.endArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, false);\n }\n else {\n shape.set('startArrowShape', null);\n }\n}\n//# sourceMappingURL=arrow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvYXJyb3cuanM/OWYyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDVDtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsMkNBQUk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwySUFBMkksb0RBQU07QUFDako7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsMkNBQUk7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsZTtBQUNuQztBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSx3QkFBd0I7QUFDckM7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxXQUFXO0FBQ3RCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsV0FBVztBQUN0QixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvYXJyb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBQYXRoIH0gZnJvbSAnLi4vc2hhcGUnO1xudmFyIHNpbiA9IE1hdGguc2luLCBjb3MgPSBNYXRoLmNvcywgYXRhbjIgPSBNYXRoLmF0YW4yLCBQSSA9IE1hdGguUEk7XG5mdW5jdGlvbiBfYWRkRGVmYXVsdEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIsIGlzU3RhcnQpIHtcbiAgICB2YXIgc3Ryb2tlID0gYXR0cnMuc3Ryb2tlLCBsaW5lV2lkdGggPSBhdHRycy5saW5lV2lkdGg7XG4gICAgdmFyIHggPSB4MSAtIHgyO1xuICAgIHZhciB5ID0geTEgLSB5MjtcbiAgICB2YXIgcmFkID0gYXRhbjIoeSwgeCk7XG4gICAgdmFyIGFycm93U2hhcGUgPSBuZXcgUGF0aCh7XG4gICAgICAgIHR5cGU6ICdwYXRoJyxcbiAgICAgICAgY2FudmFzOiBzaGFwZS5nZXQoJ2NhbnZhcycpLFxuICAgICAgICBpc0Fycm93U2hhcGU6IHRydWUsXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAvLyDpu5jorqTnrq3lpLTnmoTovrnplb/kuLogMTDvvIzlpLnop5LkuLogNjAg5bqmXG4gICAgICAgICAgICBwYXRoOiBcIk1cIiArIDEwICogY29zKFBJIC8gNikgKyBcIixcIiArIDEwICogc2luKFBJIC8gNikgKyBcIiBMMCwwIExcIiArIDEwICogY29zKFBJIC8gNikgKyBcIiwtXCIgKyAxMCAqIHNpbihQSSAvIDYpLFxuICAgICAgICAgICAgLy8g5L2/55SoIHNoYXBlIHN0cm9rZSDlgLxcbiAgICAgICAgICAgIHN0cm9rZTogc3Ryb2tlLFxuICAgICAgICAgICAgbGluZVdpZHRoOiBsaW5lV2lkdGgsXG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgYXJyb3dTaGFwZS50cmFuc2xhdGUoeDIsIHkyKTtcbiAgICBhcnJvd1NoYXBlLnJvdGF0ZUF0UG9pbnQoeDIsIHkyLCByYWQpO1xuICAgIHNoYXBlLnNldChpc1N0YXJ0ID8gJ3N0YXJ0QXJyb3dTaGFwZScgOiAnZW5kQXJyb3dTaGFwZScsIGFycm93U2hhcGUpO1xufVxuLyoqXG4gKiDnrq3lpLQgcGF0aCDnmoTorr7nva7opoHmsYJcbiAqIDEuIOeureWktOmhtueCueWdkOagh+mcgOimgeS4uiAoMCwgMClcbiAqIDIuIOeureWktOWkueinkueahOS4reW/g+WIhuWJsue6v+mcgOimgeS4jiBYIOi9tOato+aWueWQkeWvuem9kFxuICovXG5mdW5jdGlvbiBfYWRkQ3VzdG9taXplZEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIsIGlzU3RhcnQpIHtcbiAgICB2YXIgc3RhcnRBcnJvdyA9IGF0dHJzLnN0YXJ0QXJyb3csIGVuZEFycm93ID0gYXR0cnMuZW5kQXJyb3csIHN0cm9rZSA9IGF0dHJzLnN0cm9rZSwgbGluZVdpZHRoID0gYXR0cnMubGluZVdpZHRoO1xuICAgIHZhciBhcnJvd0F0dHJzID0gaXNTdGFydCA/IHN0YXJ0QXJyb3cgOiBlbmRBcnJvdztcbiAgICB2YXIgZCA9IGFycm93QXR0cnMuZCwgYXJyb3dGaWxsID0gYXJyb3dBdHRycy5maWxsLCBhcnJvd1N0cm9rZSA9IGFycm93QXR0cnMuc3Ryb2tlLCBhcnJvd0xpbmVXaWR0aCA9IGFycm93QXR0cnMubGluZVdpZHRoLCByZXN0QXR0cnMgPSBfX3Jlc3QoYXJyb3dBdHRycywgW1wiZFwiLCBcImZpbGxcIiwgXCJzdHJva2VcIiwgXCJsaW5lV2lkdGhcIl0pO1xuICAgIHZhciB4ID0geDEgLSB4MjtcbiAgICB2YXIgeSA9IHkxIC0geTI7XG4gICAgdmFyIHJhZCA9IGF0YW4yKHksIHgpO1xuICAgIGlmIChkKSB7XG4gICAgICAgIHgyID0geDIgLSBjb3MocmFkKSAqIGQ7XG4gICAgICAgIHkyID0geTIgLSBzaW4ocmFkKSAqIGQ7XG4gICAgfVxuICAgIHZhciBhcnJvd1NoYXBlID0gbmV3IFBhdGgoe1xuICAgICAgICB0eXBlOiAncGF0aCcsXG4gICAgICAgIGNhbnZhczogc2hhcGUuZ2V0KCdjYW52YXMnKSxcbiAgICAgICAgaXNBcnJvd1NoYXBlOiB0cnVlLFxuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3RBdHRycyksIHsgXG4gICAgICAgICAgICAvLyDmlK/mjIHljZXni6zorr7nva7nrq3lpLTnmoQgc3Ryb2tlIOWSjCBsaW5lV2lkdGjvvIzoi6XkuLrnqbrliJnkvb/nlKggc2hhcGUg55qE5YC8XG4gICAgICAgICAgICBzdHJva2U6IGFycm93U3Ryb2tlIHx8IHN0cm9rZSwgbGluZVdpZHRoOiBhcnJvd0xpbmVXaWR0aCB8fCBsaW5lV2lkdGgsIFxuICAgICAgICAgICAgLy8g566t5aS05piv5ZCm5aGr5YWF6ZyA6KaB5omL5Yqo6K6+572u77yM5LiN5Lya57un5om/6IeqIHNoYXBlIOeahOWAvFxuICAgICAgICAgICAgZmlsbDogYXJyb3dGaWxsIH0pLFxuICAgIH0pO1xuICAgIGFycm93U2hhcGUudHJhbnNsYXRlKHgyLCB5Mik7XG4gICAgYXJyb3dTaGFwZS5yb3RhdGVBdFBvaW50KHgyLCB5MiwgcmFkKTtcbiAgICBzaGFwZS5zZXQoaXNTdGFydCA/ICdzdGFydEFycm93U2hhcGUnIDogJ2VuZEFycm93U2hhcGUnLCBhcnJvd1NoYXBlKTtcbn1cbi8qKlxuICog5aaC5p6c6Ieq5a6a5LmJ566t5aS05bm25LiU5pyJIGQg6ZyA6KaB5YGa5YGP56e777yM5aaC5p6c55u05o6l55S777yM57q/5p2h5Lya6LaF5Ye6566t5aS05bCW56uv77yM5Zug5q2k6ZyA6KaB5qC55o2u566t5aS05YGP56e7IGQsIOi/lOWbnue6v+mcgOimgee8qeefreeahOi3neemu1xuICogfC0tLS0tLS0tLS0tLS0tLS1cbiAqIHw8fC0tLS0tLS0tLS0tLS0tXG4gKiB8XG4gKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICogQHBhcmFtIHtudW1iZXJ9IHgyIOeureWktOS9nOeUqOeCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTIg566t5aS05L2c55So54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSBkICDnrq3lpLTmsr/nur/mnaHmlrnlkJHnmoTlgY/np7vot53nprtcbiAqIEByZXR1cm4ge3tkeDogbnVtYmVyLCBkeTogbnVtYmVyfX0g6L+U5Zue57q/5p2h5YGP56e76Led56a7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydGVuT2Zmc2V0KHgxLCB5MSwgeDIsIHkyLCBkKSB7XG4gICAgdmFyIHJhZCA9IGF0YW4yKHkyIC0geTEsIHgyIC0geDEpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGR4OiBjb3MocmFkKSAqIGQsXG4gICAgICAgIGR5OiBzaW4ocmFkKSAqIGQsXG4gICAgfTtcbn1cbi8qKlxuICog57uY5Yi26LW35aeL566t5aS0XG4gKiBAcGFyYW0ge0lTaGFwZX0gc2hhcGUg5Zu+5b2iXG4gKiBAcGFyYW0ge1NoYXBlQXR0cnN9IGF0dHJzIHNoYXBlIOeahOe7mOWbvuWxnuaAp1xuICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnrq3lpLTkvZznlKjngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkyIOeureWktOS9nOeUqOeCuSB5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRTdGFydEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIpIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzLnN0YXJ0QXJyb3cgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIF9hZGRDdXN0b21pemVkQXJyb3coc2hhcGUsIGF0dHJzLCB4MSwgeTEsIHgyLCB5MiwgdHJ1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGF0dHJzLnN0YXJ0QXJyb3cpIHtcbiAgICAgICAgX2FkZERlZmF1bHRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyLCB0cnVlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHNoYXBlLnNldCgnc3RhcnRBcnJvd1NoYXBlJywgbnVsbCk7XG4gICAgfVxufVxuLyoqXG4gKiDnu5jliLbnu5PmnZ/nrq3lpLRcbiAqIEBwYXJhbSB7SVNoYXBlfSBzaGFwZSDlm77lvaJcbiAqIEBwYXJhbSB7U2hhcGVBdHRyc30gYXR0cnMgc2hhcGUg55qE57uY5Zu+5bGe5oCnXG4gKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICogQHBhcmFtIHtudW1iZXJ9IHgyIOeureWktOS9nOeUqOeCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTIg566t5aS05L2c55So54K5IHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEVuZEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIpIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzLmVuZEFycm93ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBfYWRkQ3VzdG9taXplZEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIsIGZhbHNlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYXR0cnMuZW5kQXJyb3cpIHtcbiAgICAgICAgX2FkZERlZmF1bHRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyLCBmYWxzZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzaGFwZS5zZXQoJ3N0YXJ0QXJyb3dTaGFwZScsIG51bGwpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFycm93LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/arrow.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/draw.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/draw.js ***! \******************************************************/ /*! exports provided: applyAttrsToContext, drawChildren, checkRefresh, checkChildrenRefresh, clearChanged, drawPath, refreshElement, getRefreshRegion, getMergedRegion, mergeView */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyAttrsToContext\", function() { return applyAttrsToContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawChildren\", function() { return drawChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkRefresh\", function() { return checkRefresh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkChildrenRefresh\", function() { return checkChildrenRefresh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearChanged\", function() { return clearChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawPath\", function() { return drawPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"refreshElement\", function() { return refreshElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRefreshRegion\", function() { return getRefreshRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMergedRegion\", function() { return getMergedRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeView\", function() { return mergeView; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _parse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse */ \"./node_modules/@antv/g-canvas/esm/util/parse.js\");\n/* harmony import */ var _arc_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./arc-params */ \"./node_modules/@antv/g-canvas/esm/util/arc-params.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\nvar SHAPE_ATTRS_MAP = {\n fill: 'fillStyle',\n stroke: 'strokeStyle',\n opacity: 'globalAlpha',\n};\nfunction applyAttrsToContext(context, element) {\n var attrs = element.attr();\n for (var k in attrs) {\n var v = attrs[k];\n // 转换一下不与 canvas 兼容的属性名\n var name_1 = SHAPE_ATTRS_MAP[k] ? SHAPE_ATTRS_MAP[k] : k;\n if (name_1 === 'matrix' && v) {\n // 设置矩阵\n context.transform(v[0], v[1], v[3], v[4], v[6], v[7]);\n }\n else if (name_1 === 'lineDash' && context.setLineDash) {\n // 设置虚线,只支持数组形式,非数组形式不做任何操作\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(v) && context.setLineDash(v);\n }\n else {\n if (name_1 === 'strokeStyle' || name_1 === 'fillStyle') {\n // 如果存在渐变、pattern 这个开销有些大\n // 可以考虑缓存机制,通过 hasUpdate 来避免一些运算\n v = Object(_parse__WEBPACK_IMPORTED_MODULE_1__[\"parseStyle\"])(context, element, v);\n }\n else if (name_1 === 'globalAlpha') {\n // opacity 效果可以叠加,子元素的 opacity 需要与父元素 opacity 相乘\n v = v * context.globalAlpha;\n }\n context[name_1] = v;\n }\n }\n}\nfunction drawChildren(context, children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n child.draw(context, region);\n }\n else {\n child.skipDraw();\n }\n }\n}\n// 这个地方的逻辑比较复杂,简单画了一张图:https://www.yuque.com/antv/ou292n/pcgt5g#OW1QE\nfunction checkRefresh(canvas, children, region) {\n var refreshElements = canvas.get('refreshElements');\n // 先遍历需要刷新的元素,将这些元素的父元素也设置 refresh\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(refreshElements, function (el) {\n if (el !== canvas) {\n var parent_1 = el.cfg.parent;\n while (parent_1 && parent_1 !== canvas && !parent_1.cfg.refresh) {\n parent_1.cfg.refresh = true;\n parent_1 = parent_1.cfg.parent;\n }\n }\n });\n if (refreshElements[0] === canvas) {\n setChildrenRefresh(children, region);\n }\n else {\n // 检查所有子元素是否可以刷新\n checkChildrenRefresh(children, region);\n }\n}\n// 检查所有的子元素是否应该更新\nfunction checkChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n // 先判断 hasChanged,因为它的优先级判断应该高于 refresh\n if (child.cfg.hasChanged) {\n // 如果节点发生了 change,则需要级联设置子元素的 refresh\n child.cfg.refresh = true;\n if (child.isGroup()) {\n setChildrenRefresh(child.cfg.children, region);\n }\n }\n else if (child.cfg.refresh) {\n // 如果当前图形/分组 refresh = true,说明其子节点存在 changed\n if (child.isGroup()) {\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n else {\n // 这个分支说明此次局部刷新,所有的节点和父元素没有发生变化,仅需要检查包围盒(缓存)是否相交即可\n var refresh = checkElementRefresh(child, region);\n child.cfg.refresh = refresh;\n if (refresh && child.isGroup()) {\n // 如果需要刷新,说明子元素也需要刷新,继续进行判定\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n }\n }\n}\n// 由于对改变的图形放入 refreshElements 时做了优化,判定父元素 changed 时不加入\n// 那么有可能会出现 elements 都为空,所以最终 group\nfunction clearChanged(elements) {\n for (var i = 0; i < elements.length; i++) {\n var el = elements[i];\n el.cfg.hasChanged = false;\n // 级联清理\n if (el.isGroup() && !el.destroyed) {\n clearChanged(el.cfg.children);\n }\n }\n}\n// 当某个父元素发生改变时,调用这个方法级联设置 refresh\nfunction setChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n // let refresh = true;\n // 获取缓存的 bbox,如果这个 bbox 还存在则说明父元素不是矩阵发生了改变\n // const bbox = child.cfg.canvasBBox;\n // if (bbox) {\n // // 如果这时候\n // refresh = intersectRect(bbox, region);\n // }\n child.cfg.refresh = true;\n // 如果需要刷新当前节点,所有的子元素设置 refresh\n if (child.isGroup()) {\n setChildrenRefresh(child.get('children'), region);\n }\n }\n}\nfunction checkElementRefresh(shape, region) {\n var bbox = shape.cfg.cacheCanvasBBox;\n var isAllow = shape.cfg.isInView && bbox && Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"intersectRect\"])(bbox, region);\n return isAllow;\n}\n// 绘制 path\nfunction drawPath(shape, context, attrs, arcParamsCache) {\n var path = attrs.path, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (!path) {\n return;\n }\n var currentPoint = [0, 0]; // 当前图形\n var startMovePoint = [0, 0]; // 开始 M 的点,可能会有多个\n var distance = {\n dx: 0,\n dy: 0,\n };\n context.beginPath();\n for (var i = 0; i < path.length; i++) {\n var params = path[i];\n var command = params[0];\n if (i === 0 && startArrow && startArrow.d) {\n var tangent = shape.getStartTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], startArrow.d);\n }\n else if (i === path.length - 2 && path[i + 1][0] === 'Z' && endArrow && endArrow.d) {\n // 为了防止结尾为 Z 的 segment 缩短不起效,需要取最后两个 segment 特殊处理\n var lastPath = path[i + 1];\n if (lastPath[0] === 'Z') {\n var tangent = shape.getEndTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n else if (i === path.length - 1 && endArrow && endArrow.d) {\n if (path[0] !== 'Z') {\n var tangent = shape.getEndTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n var dx = distance.dx, dy = distance.dy;\n // V,H,S,T 都在前面被转换成标准形式\n switch (command) {\n case 'M':\n context.moveTo(params[1] - dx, params[2] - dy);\n startMovePoint = [params[1], params[2]];\n break;\n case 'L':\n context.lineTo(params[1] - dx, params[2] - dy);\n break;\n case 'Q':\n context.quadraticCurveTo(params[1], params[2], params[3] - dx, params[4] - dy);\n break;\n case 'C':\n context.bezierCurveTo(params[1], params[2], params[3], params[4], params[5] - dx, params[6] - dy);\n break;\n case 'A': {\n var arcParams = void 0;\n // 为了加速绘制,可以提供参数的缓存,各个图形自己缓存\n if (arcParamsCache) {\n arcParams = arcParamsCache[i];\n if (!arcParams) {\n arcParams = Object(_arc_params__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentPoint, params);\n arcParamsCache[i] = arcParams;\n }\n }\n else {\n arcParams = Object(_arc_params__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentPoint, params);\n }\n var cx = arcParams.cx, cy = arcParams.cy, rx = arcParams.rx, ry = arcParams.ry, startAngle = arcParams.startAngle, endAngle = arcParams.endAngle, xRotation = arcParams.xRotation, sweepFlag = arcParams.sweepFlag;\n // 直接使用椭圆的 api\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, xRotation, startAngle, endAngle, 1 - sweepFlag);\n }\n else {\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(xRotation);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, startAngle, endAngle, 1 - sweepFlag);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-xRotation);\n context.translate(-cx, -cy);\n }\n break;\n }\n case 'Z':\n context.closePath();\n break;\n default:\n break;\n }\n // 有了 Z 后,当前节点从开始 M 的点开始\n if (command === 'Z') {\n currentPoint = startMovePoint;\n }\n else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n }\n}\n// 刷新图形元素(Shape 或者 Group)\nfunction refreshElement(element, changeType) {\n var canvas = element.get('canvas');\n // 只有存在于 canvas 上时生效\n if (canvas) {\n if (changeType === 'remove') {\n // 一旦 remove,则无法在 element 上拿到包围盒\n // destroy 后所有属性都拿不到,所以需要暂存一下\n // 这是一段 hack 的代码\n element._cacheCanvasBBox = element.get('cacheCanvasBBox');\n }\n // 防止反复刷新\n if (!element.get('hasChanged')) {\n // 但是始终要标记为 hasChanged,便于后面进行局部渲染\n element.set('hasChanged', true);\n // 本来只有局部渲染模式下,才需要记录更新的元素队列\n // if (canvas.get('localRefresh')) {\n // canvas.refreshElement(element, changeType, canvas);\n // }\n // 但对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也需要记录更新的元素队列\n // 如果当前元素的父元素发生了改变,可以不放入队列,这句话大概能够提升 15% 的初次渲染性能\n if (!(element.cfg.parent && element.cfg.parent.get('hasChanged'))) {\n canvas.refreshElement(element, changeType, canvas);\n if (canvas.get('autoDraw')) {\n canvas.draw();\n }\n }\n }\n }\n}\nfunction getRefreshRegion(element) {\n var region;\n if (!element.destroyed) {\n var cacheBox = element.get('cacheCanvasBBox');\n var validCache = cacheBox && !!(cacheBox.width && cacheBox.height);\n var bbox = element.getCanvasBBox();\n var validBBox = bbox && !!(bbox.width && bbox.height);\n // 是否是有效 bbox 判定,一些 NaN 或者 宽高为 0 的情况过滤掉\n if (validCache && validBBox) {\n region = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"mergeRegion\"])(cacheBox, bbox);\n }\n else if (validCache) {\n region = cacheBox;\n }\n else if (validBBox) {\n region = bbox;\n }\n }\n else {\n // 因为元素已经销毁所以无法获取到缓存的包围盒\n region = element['_cacheCanvasBBox'];\n }\n return region;\n}\nfunction getMergedRegion(elements) {\n if (!elements.length) {\n return null;\n }\n var minXArr = [];\n var minYArr = [];\n var maxXArr = [];\n var maxYArr = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(elements, function (el) {\n var region = getRefreshRegion(el);\n if (region) {\n minXArr.push(region.minX);\n minYArr.push(region.minY);\n maxXArr.push(region.maxX);\n maxYArr.push(region.maxY);\n }\n });\n return {\n minX: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"min\"])(minXArr),\n minY: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"min\"])(minYArr),\n maxX: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"max\"])(maxXArr),\n maxY: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"max\"])(maxYArr),\n };\n}\nfunction mergeView(region, viewRegion) {\n if (!region || !viewRegion) {\n return null;\n }\n // 不相交,则直接返回 null\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"intersectRect\"])(region, viewRegion)) {\n return null;\n }\n return {\n minX: Math.max(region.minX, viewRegion.minX),\n minY: Math.max(region.minY, viewRegion.minY),\n maxX: Math.min(region.maxX, viewRegion.maxX),\n maxY: Math.min(region.maxY, viewRegion.maxY),\n };\n}\n//# sourceMappingURL=draw.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvZHJhdy5qcz9mNWU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFEO0FBQ2hCO0FBQ0c7QUFDWTtBQUNUO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IseURBQVU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsMkRBQWE7QUFDN0Q7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QixnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNERBQTBCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0REFBMEI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0REFBMEI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLDJEQUFZO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLDJEQUFZO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix5REFBVztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGNBQWMsc0RBQUc7QUFDakIsY0FBYyxzREFBRztBQUNqQixjQUFjLHNEQUFHO0FBQ2pCLGNBQWMsc0RBQUc7QUFDakI7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLDJEQUFhO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL2RyYXcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoLCBpc0FycmF5LCBtYXgsIG1pbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcGFyc2VTdHlsZSB9IGZyb20gJy4vcGFyc2UnO1xuaW1wb3J0IGdldEFyY1BhcmFtcyBmcm9tICcuL2FyYy1wYXJhbXMnO1xuaW1wb3J0IHsgbWVyZ2VSZWdpb24sIGludGVyc2VjdFJlY3QgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0ICogYXMgQXJyb3dVdGlsIGZyb20gJy4uL3V0aWwvYXJyb3cnO1xudmFyIFNIQVBFX0FUVFJTX01BUCA9IHtcbiAgICBmaWxsOiAnZmlsbFN0eWxlJyxcbiAgICBzdHJva2U6ICdzdHJva2VTdHlsZScsXG4gICAgb3BhY2l0eTogJ2dsb2JhbEFscGhhJyxcbn07XG5leHBvcnQgZnVuY3Rpb24gYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCBlbGVtZW50KSB7XG4gICAgdmFyIGF0dHJzID0gZWxlbWVudC5hdHRyKCk7XG4gICAgZm9yICh2YXIgayBpbiBhdHRycykge1xuICAgICAgICB2YXIgdiA9IGF0dHJzW2tdO1xuICAgICAgICAvLyDovazmjaLkuIDkuIvkuI3kuI4gY2FudmFzIOWFvOWuueeahOWxnuaAp+WQjVxuICAgICAgICB2YXIgbmFtZV8xID0gU0hBUEVfQVRUUlNfTUFQW2tdID8gU0hBUEVfQVRUUlNfTUFQW2tdIDogaztcbiAgICAgICAgaWYgKG5hbWVfMSA9PT0gJ21hdHJpeCcgJiYgdikge1xuICAgICAgICAgICAgLy8g6K6+572u55+p6Zi1XG4gICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSh2WzBdLCB2WzFdLCB2WzNdLCB2WzRdLCB2WzZdLCB2WzddKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChuYW1lXzEgPT09ICdsaW5lRGFzaCcgJiYgY29udGV4dC5zZXRMaW5lRGFzaCkge1xuICAgICAgICAgICAgLy8g6K6+572u6Jma57q/77yM5Y+q5pSv5oyB5pWw57uE5b2i5byP77yM6Z2e5pWw57uE5b2i5byP5LiN5YGa5Lu75L2V5pON5L2cXG4gICAgICAgICAgICBpc0FycmF5KHYpICYmIGNvbnRleHQuc2V0TGluZURhc2godik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAobmFtZV8xID09PSAnc3Ryb2tlU3R5bGUnIHx8IG5hbWVfMSA9PT0gJ2ZpbGxTdHlsZScpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzlrZjlnKjmuJDlj5jjgIFwYXR0ZXJuIOi/meS4quW8gOmUgOacieS6m+Wkp1xuICAgICAgICAgICAgICAgIC8vIOWPr+S7peiAg+iZkee8k+WtmOacuuWItu+8jOmAmui/hyBoYXNVcGRhdGUg5p2l6YG/5YWN5LiA5Lqb6L+Q566XXG4gICAgICAgICAgICAgICAgdiA9IHBhcnNlU3R5bGUoY29udGV4dCwgZWxlbWVudCwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChuYW1lXzEgPT09ICdnbG9iYWxBbHBoYScpIHtcbiAgICAgICAgICAgICAgICAvLyBvcGFjaXR5IOaViOaenOWPr+S7peWPoOWKoO+8jOWtkOWFg+e0oOeahCBvcGFjaXR5IOmcgOimgeS4jueItuWFg+e0oCBvcGFjaXR5IOebuOS5mFxuICAgICAgICAgICAgICAgIHYgPSB2ICogY29udGV4dC5nbG9iYWxBbHBoYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRleHRbbmFtZV8xXSA9IHY7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZHJhd0NoaWxkcmVuKGNvbnRleHQsIGNoaWxkcmVuLCByZWdpb24pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoY2hpbGQuY2ZnLnZpc2libGUpIHtcbiAgICAgICAgICAgIGNoaWxkLmRyYXcoY29udGV4dCwgcmVnaW9uKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNoaWxkLnNraXBEcmF3KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyDov5nkuKrlnLDmlrnnmoTpgLvovpHmr5TovoPlpI3mnYLvvIznroDljZXnlLvkuobkuIDlvKDlm77vvJpodHRwczovL3d3dy55dXF1ZS5jb20vYW50di9vdTI5Mm4vcGNndDVnI09XMVFFXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZWZyZXNoKGNhbnZhcywgY2hpbGRyZW4sIHJlZ2lvbikge1xuICAgIHZhciByZWZyZXNoRWxlbWVudHMgPSBjYW52YXMuZ2V0KCdyZWZyZXNoRWxlbWVudHMnKTtcbiAgICAvLyDlhYjpgY3ljobpnIDopoHliLfmlrDnmoTlhYPntKDvvIzlsIbov5nkupvlhYPntKDnmoTniLblhYPntKDkuZ/orr7nva4gcmVmcmVzaFxuICAgIGVhY2gocmVmcmVzaEVsZW1lbnRzLCBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgaWYgKGVsICE9PSBjYW52YXMpIHtcbiAgICAgICAgICAgIHZhciBwYXJlbnRfMSA9IGVsLmNmZy5wYXJlbnQ7XG4gICAgICAgICAgICB3aGlsZSAocGFyZW50XzEgJiYgcGFyZW50XzEgIT09IGNhbnZhcyAmJiAhcGFyZW50XzEuY2ZnLnJlZnJlc2gpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRfMS5jZmcucmVmcmVzaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcGFyZW50XzEgPSBwYXJlbnRfMS5jZmcucGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHJlZnJlc2hFbGVtZW50c1swXSA9PT0gY2FudmFzKSB7XG4gICAgICAgIHNldENoaWxkcmVuUmVmcmVzaChjaGlsZHJlbiwgcmVnaW9uKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIOajgOafpeaJgOacieWtkOWFg+e0oOaYr+WQpuWPr+S7peWIt+aWsFxuICAgICAgICBjaGVja0NoaWxkcmVuUmVmcmVzaChjaGlsZHJlbiwgcmVnaW9uKTtcbiAgICB9XG59XG4vLyDmo4Dmn6XmiYDmnInnmoTlrZDlhYPntKDmmK/lkKblupTor6Xmm7TmlrBcbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NoaWxkcmVuUmVmcmVzaChjaGlsZHJlbiwgcmVnaW9uKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgaWYgKGNoaWxkLmNmZy52aXNpYmxlKSB7XG4gICAgICAgICAgICAvLyDlhYjliKTmlq0gaGFzQ2hhbmdlZO+8jOWboOS4uuWug+eahOS8mOWFiOe6p+WIpOaWreW6lOivpemrmOS6jiByZWZyZXNoXG4gICAgICAgICAgICBpZiAoY2hpbGQuY2ZnLmhhc0NoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzoioLngrnlj5HnlJ/kuoYgY2hhbmdl77yM5YiZ6ZyA6KaB57qn6IGU6K6+572u5a2Q5YWD57Sg55qEIHJlZnJlc2hcbiAgICAgICAgICAgICAgICBjaGlsZC5jZmcucmVmcmVzaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmlzR3JvdXAoKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRDaGlsZHJlblJlZnJlc2goY2hpbGQuY2ZnLmNoaWxkcmVuLCByZWdpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLmNmZy5yZWZyZXNoKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5b2T5YmN5Zu+5b2iL+WIhue7hCByZWZyZXNoID0gdHJ1Ze+8jOivtOaYjuWFtuWtkOiKgueCueWtmOWcqCBjaGFuZ2VkXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmlzR3JvdXAoKSkge1xuICAgICAgICAgICAgICAgICAgICBjaGVja0NoaWxkcmVuUmVmcmVzaChjaGlsZC5jZmcuY2hpbGRyZW4sIHJlZ2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8g6L+Z5Liq5YiG5pSv6K+05piO5q2k5qyh5bGA6YOo5Yi35paw77yM5omA5pyJ55qE6IqC54K55ZKM54i25YWD57Sg5rKh5pyJ5Y+R55Sf5Y+Y5YyW77yM5LuF6ZyA6KaB5qOA5p+l5YyF5Zu055uS77yI57yT5a2Y77yJ5piv5ZCm55u45Lqk5Y2z5Y+vXG4gICAgICAgICAgICAgICAgdmFyIHJlZnJlc2ggPSBjaGVja0VsZW1lbnRSZWZyZXNoKGNoaWxkLCByZWdpb24pO1xuICAgICAgICAgICAgICAgIGNoaWxkLmNmZy5yZWZyZXNoID0gcmVmcmVzaDtcbiAgICAgICAgICAgICAgICBpZiAocmVmcmVzaCAmJiBjaGlsZC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c6ZyA6KaB5Yi35paw77yM6K+05piO5a2Q5YWD57Sg5Lmf6ZyA6KaB5Yi35paw77yM57un57ut6L+b6KGM5Yik5a6aXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrQ2hpbGRyZW5SZWZyZXNoKGNoaWxkLmNmZy5jaGlsZHJlbiwgcmVnaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyDnlLHkuo7lr7nmlLnlj5jnmoTlm77lvaLmlL7lhaUgcmVmcmVzaEVsZW1lbnRzIOaXtuWBmuS6huS8mOWMlu+8jOWIpOWumueItuWFg+e0oCBjaGFuZ2VkIOaXtuS4jeWKoOWFpVxuLy8g6YKj5LmI5pyJ5Y+v6IO95Lya5Ye6546wIGVsZW1lbnRzIOmDveS4uuepuu+8jOaJgOS7peacgOe7iCBncm91cFxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ2hhbmdlZChlbGVtZW50cykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsID0gZWxlbWVudHNbaV07XG4gICAgICAgIGVsLmNmZy5oYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIC8vIOe6p+iBlOa4heeQhlxuICAgICAgICBpZiAoZWwuaXNHcm91cCgpICYmICFlbC5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIGNsZWFyQ2hhbmdlZChlbC5jZmcuY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8g5b2T5p+Q5Liq54i25YWD57Sg5Y+R55Sf5pS55Y+Y5pe277yM6LCD55So6L+Z5Liq5pa55rOV57qn6IGU6K6+572uIHJlZnJlc2hcbmZ1bmN0aW9uIHNldENoaWxkcmVuUmVmcmVzaChjaGlsZHJlbiwgcmVnaW9uKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgLy8gbGV0IHJlZnJlc2ggPSB0cnVlO1xuICAgICAgICAvLyDojrflj5bnvJPlrZjnmoQgYmJveO+8jOWmguaenOi/meS4qiBiYm94IOi/mOWtmOWcqOWImeivtOaYjueItuWFg+e0oOS4jeaYr+efqemYteWPkeeUn+S6huaUueWPmFxuICAgICAgICAvLyBjb25zdCBiYm94ID0gY2hpbGQuY2ZnLmNhbnZhc0JCb3g7XG4gICAgICAgIC8vIGlmIChiYm94KSB7XG4gICAgICAgIC8vICAgLy8g5aaC5p6c6L+Z5pe25YCZXG4gICAgICAgIC8vICAgcmVmcmVzaCA9IGludGVyc2VjdFJlY3QoYmJveCwgcmVnaW9uKTtcbiAgICAgICAgLy8gfVxuICAgICAgICBjaGlsZC5jZmcucmVmcmVzaCA9IHRydWU7XG4gICAgICAgIC8vIOWmguaenOmcgOimgeWIt+aWsOW9k+WJjeiKgueCue+8jOaJgOacieeahOWtkOWFg+e0oOiuvue9riByZWZyZXNoXG4gICAgICAgIGlmIChjaGlsZC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgIHNldENoaWxkcmVuUmVmcmVzaChjaGlsZC5nZXQoJ2NoaWxkcmVuJyksIHJlZ2lvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBjaGVja0VsZW1lbnRSZWZyZXNoKHNoYXBlLCByZWdpb24pIHtcbiAgICB2YXIgYmJveCA9IHNoYXBlLmNmZy5jYWNoZUNhbnZhc0JCb3g7XG4gICAgdmFyIGlzQWxsb3cgPSBzaGFwZS5jZmcuaXNJblZpZXcgJiYgYmJveCAmJiBpbnRlcnNlY3RSZWN0KGJib3gsIHJlZ2lvbik7XG4gICAgcmV0dXJuIGlzQWxsb3c7XG59XG4vLyDnu5jliLYgcGF0aFxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdQYXRoKHNoYXBlLCBjb250ZXh0LCBhdHRycywgYXJjUGFyYW1zQ2FjaGUpIHtcbiAgICB2YXIgcGF0aCA9IGF0dHJzLnBhdGgsIHN0YXJ0QXJyb3cgPSBhdHRycy5zdGFydEFycm93LCBlbmRBcnJvdyA9IGF0dHJzLmVuZEFycm93O1xuICAgIGlmICghcGF0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBjdXJyZW50UG9pbnQgPSBbMCwgMF07IC8vIOW9k+WJjeWbvuW9olxuICAgIHZhciBzdGFydE1vdmVQb2ludCA9IFswLCAwXTsgLy8g5byA5aeLIE0g55qE54K577yM5Y+v6IO95Lya5pyJ5aSa5LiqXG4gICAgdmFyIGRpc3RhbmNlID0ge1xuICAgICAgICBkeDogMCxcbiAgICAgICAgZHk6IDAsXG4gICAgfTtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcGFyYW1zID0gcGF0aFtpXTtcbiAgICAgICAgdmFyIGNvbW1hbmQgPSBwYXJhbXNbMF07XG4gICAgICAgIGlmIChpID09PSAwICYmIHN0YXJ0QXJyb3cgJiYgc3RhcnRBcnJvdy5kKSB7XG4gICAgICAgICAgICB2YXIgdGFuZ2VudCA9IHNoYXBlLmdldFN0YXJ0VGFuZ2VudCgpO1xuICAgICAgICAgICAgZGlzdGFuY2UgPSBBcnJvd1V0aWwuZ2V0U2hvcnRlbk9mZnNldCh0YW5nZW50WzBdWzBdLCB0YW5nZW50WzBdWzFdLCB0YW5nZW50WzFdWzBdLCB0YW5nZW50WzFdWzFdLCBzdGFydEFycm93LmQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGkgPT09IHBhdGgubGVuZ3RoIC0gMiAmJiBwYXRoW2kgKyAxXVswXSA9PT0gJ1onICYmIGVuZEFycm93ICYmIGVuZEFycm93LmQpIHtcbiAgICAgICAgICAgIC8vIOS4uuS6humYsuatoue7k+WwvuS4uiBaIOeahCBzZWdtZW50IOe8qeefreS4jei1t+aViO+8jOmcgOimgeWPluacgOWQjuS4pOS4qiBzZWdtZW50IOeJueauiuWkhOeQhlxuICAgICAgICAgICAgdmFyIGxhc3RQYXRoID0gcGF0aFtpICsgMV07XG4gICAgICAgICAgICBpZiAobGFzdFBhdGhbMF0gPT09ICdaJykge1xuICAgICAgICAgICAgICAgIHZhciB0YW5nZW50ID0gc2hhcGUuZ2V0RW5kVGFuZ2VudCgpO1xuICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gQXJyb3dVdGlsLmdldFNob3J0ZW5PZmZzZXQodGFuZ2VudFswXVswXSwgdGFuZ2VudFswXVsxXSwgdGFuZ2VudFsxXVswXSwgdGFuZ2VudFsxXVsxXSwgZW5kQXJyb3cuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaSA9PT0gcGF0aC5sZW5ndGggLSAxICYmIGVuZEFycm93ICYmIGVuZEFycm93LmQpIHtcbiAgICAgICAgICAgIGlmIChwYXRoWzBdICE9PSAnWicpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFuZ2VudCA9IHNoYXBlLmdldEVuZFRhbmdlbnQoKTtcbiAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IEFycm93VXRpbC5nZXRTaG9ydGVuT2Zmc2V0KHRhbmdlbnRbMF1bMF0sIHRhbmdlbnRbMF1bMV0sIHRhbmdlbnRbMV1bMF0sIHRhbmdlbnRbMV1bMV0sIGVuZEFycm93LmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBkeCA9IGRpc3RhbmNlLmR4LCBkeSA9IGRpc3RhbmNlLmR5O1xuICAgICAgICAvLyBWLEgsUyxUIOmDveWcqOWJjemdouiiq+i9rOaNouaIkOagh+WHhuW9ouW8j1xuICAgICAgICBzd2l0Y2ggKGNvbW1hbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBhcmFtc1sxXSAtIGR4LCBwYXJhbXNbMl0gLSBkeSk7XG4gICAgICAgICAgICAgICAgc3RhcnRNb3ZlUG9pbnQgPSBbcGFyYW1zWzFdLCBwYXJhbXNbMl1dO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8ocGFyYW1zWzFdIC0gZHgsIHBhcmFtc1syXSAtIGR5KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyhwYXJhbXNbMV0sIHBhcmFtc1syXSwgcGFyYW1zWzNdIC0gZHgsIHBhcmFtc1s0XSAtIGR5KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhwYXJhbXNbMV0sIHBhcmFtc1syXSwgcGFyYW1zWzNdLCBwYXJhbXNbNF0sIHBhcmFtc1s1XSAtIGR4LCBwYXJhbXNbNl0gLSBkeSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBJzoge1xuICAgICAgICAgICAgICAgIHZhciBhcmNQYXJhbXMgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgLy8g5Li65LqG5Yqg6YCf57uY5Yi277yM5Y+v5Lul5o+Q5L6b5Y+C5pWw55qE57yT5a2Y77yM5ZCE5Liq5Zu+5b2i6Ieq5bex57yT5a2YXG4gICAgICAgICAgICAgICAgaWYgKGFyY1BhcmFtc0NhY2hlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyY1BhcmFtcyA9IGFyY1BhcmFtc0NhY2hlW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFyY1BhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJjUGFyYW1zID0gZ2V0QXJjUGFyYW1zKGN1cnJlbnRQb2ludCwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyY1BhcmFtc0NhY2hlW2ldID0gYXJjUGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhcmNQYXJhbXMgPSBnZXRBcmNQYXJhbXMoY3VycmVudFBvaW50LCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgY3ggPSBhcmNQYXJhbXMuY3gsIGN5ID0gYXJjUGFyYW1zLmN5LCByeCA9IGFyY1BhcmFtcy5yeCwgcnkgPSBhcmNQYXJhbXMucnksIHN0YXJ0QW5nbGUgPSBhcmNQYXJhbXMuc3RhcnRBbmdsZSwgZW5kQW5nbGUgPSBhcmNQYXJhbXMuZW5kQW5nbGUsIHhSb3RhdGlvbiA9IGFyY1BhcmFtcy54Um90YXRpb24sIHN3ZWVwRmxhZyA9IGFyY1BhcmFtcy5zd2VlcEZsYWc7XG4gICAgICAgICAgICAgICAgLy8g55u05o6l5L2/55So5qSt5ZyG55qEIGFwaVxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmVsbGlwc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5lbGxpcHNlKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCAxIC0gc3dlZXBGbGFnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByID0gcnggPiByeSA/IHJ4IDogcnk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY2FsZVggPSByeCA+IHJ5ID8gMSA6IHJ4IC8gcnk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY2FsZVkgPSByeCA+IHJ5ID8gcnkgLyByeCA6IDE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGN4LCBjeSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucm90YXRlKHhSb3RhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2NhbGUoc2NhbGVYLCBzY2FsZVkpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmFyYygwLCAwLCByLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgMSAtIHN3ZWVwRmxhZyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2NhbGUoMSAvIHNjYWxlWCwgMSAvIHNjYWxlWSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucm90YXRlKC14Um90YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtY3gsIC1jeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnWic6XG4gICAgICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5pyJ5LqGIFog5ZCO77yM5b2T5YmN6IqC54K55LuO5byA5aeLIE0g55qE54K55byA5aeLXG4gICAgICAgIGlmIChjb21tYW5kID09PSAnWicpIHtcbiAgICAgICAgICAgIGN1cnJlbnRQb2ludCA9IHN0YXJ0TW92ZVBvaW50O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGxlbiA9IHBhcmFtcy5sZW5ndGg7XG4gICAgICAgICAgICBjdXJyZW50UG9pbnQgPSBbcGFyYW1zW2xlbiAtIDJdLCBwYXJhbXNbbGVuIC0gMV1dO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8g5Yi35paw5Zu+5b2i5YWD57SgKFNoYXBlIOaIluiAhSBHcm91cClcbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNoRWxlbWVudChlbGVtZW50LCBjaGFuZ2VUeXBlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGVsZW1lbnQuZ2V0KCdjYW52YXMnKTtcbiAgICAvLyDlj6rmnInlrZjlnKjkuo4gY2FudmFzIOS4iuaXtueUn+aViFxuICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZVR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgICAvLyDkuIDml6YgcmVtb3Zl77yM5YiZ5peg5rOV5ZyoIGVsZW1lbnQg5LiK5ou/5Yiw5YyF5Zu055uSXG4gICAgICAgICAgICAvLyBkZXN0cm95IOWQjuaJgOacieWxnuaAp+mDveaLv+S4jeWIsO+8jOaJgOS7pemcgOimgeaaguWtmOS4gOS4i1xuICAgICAgICAgICAgLy8g6L+Z5piv5LiA5q61IGhhY2sg55qE5Luj56CBXG4gICAgICAgICAgICBlbGVtZW50Ll9jYWNoZUNhbnZhc0JCb3ggPSBlbGVtZW50LmdldCgnY2FjaGVDYW52YXNCQm94Jyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g6Ziy5q2i5Y+N5aSN5Yi35pawXG4gICAgICAgIGlmICghZWxlbWVudC5nZXQoJ2hhc0NoYW5nZWQnKSkge1xuICAgICAgICAgICAgLy8g5L2G5piv5aeL57uI6KaB5qCH6K6w5Li6IGhhc0NoYW5nZWTvvIzkvr/kuo7lkI7pnaLov5vooYzlsYDpg6jmuLLmn5NcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0KCdoYXNDaGFuZ2VkJywgdHJ1ZSk7XG4gICAgICAgICAgICAvLyDmnKzmnaXlj6rmnInlsYDpg6jmuLLmn5PmqKHlvI/kuIvvvIzmiY3pnIDopoHorrDlvZXmm7TmlrDnmoTlhYPntKDpmJ/liJdcbiAgICAgICAgICAgIC8vIGlmIChjYW52YXMuZ2V0KCdsb2NhbFJlZnJlc2gnKSkge1xuICAgICAgICAgICAgLy8gICBjYW52YXMucmVmcmVzaEVsZW1lbnQoZWxlbWVudCwgY2hhbmdlVHlwZSwgY2FudmFzKTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIC8vIOS9huWvueS6jiBodHRwczovL2dpdGh1Yi5jb20vYW50dmlzL2cvaXNzdWVzLzQyMiDnmoTlnLrmma/vvIzlhajlsYDmuLLmn5PnmoTmqKHlvI/kuIvkuZ/pnIDopoHorrDlvZXmm7TmlrDnmoTlhYPntKDpmJ/liJdcbiAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeWFg+e0oOeahOeItuWFg+e0oOWPkeeUn+S6huaUueWPmO+8jOWPr+S7peS4jeaUvuWFpemYn+WIl++8jOi/meWPpeivneWkp+amguiDveWkn+aPkOWNhyAxNSUg55qE5Yid5qyh5riy5p+T5oCn6IO9XG4gICAgICAgICAgICBpZiAoIShlbGVtZW50LmNmZy5wYXJlbnQgJiYgZWxlbWVudC5jZmcucGFyZW50LmdldCgnaGFzQ2hhbmdlZCcpKSkge1xuICAgICAgICAgICAgICAgIGNhbnZhcy5yZWZyZXNoRWxlbWVudChlbGVtZW50LCBjaGFuZ2VUeXBlLCBjYW52YXMpO1xuICAgICAgICAgICAgICAgIGlmIChjYW52YXMuZ2V0KCdhdXRvRHJhdycpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbnZhcy5kcmF3KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlZnJlc2hSZWdpb24oZWxlbWVudCkge1xuICAgIHZhciByZWdpb247XG4gICAgaWYgKCFlbGVtZW50LmRlc3Ryb3llZCkge1xuICAgICAgICB2YXIgY2FjaGVCb3ggPSBlbGVtZW50LmdldCgnY2FjaGVDYW52YXNCQm94Jyk7XG4gICAgICAgIHZhciB2YWxpZENhY2hlID0gY2FjaGVCb3ggJiYgISEoY2FjaGVCb3gud2lkdGggJiYgY2FjaGVCb3guaGVpZ2h0KTtcbiAgICAgICAgdmFyIGJib3ggPSBlbGVtZW50LmdldENhbnZhc0JCb3goKTtcbiAgICAgICAgdmFyIHZhbGlkQkJveCA9IGJib3ggJiYgISEoYmJveC53aWR0aCAmJiBiYm94LmhlaWdodCk7XG4gICAgICAgIC8vIOaYr+WQpuaYr+acieaViCBiYm94IOWIpOWumu+8jOS4gOS6myBOYU4g5oiW6ICFIOWuvemrmOS4uiAwIOeahOaDheWGtei/h+a7pOaOiVxuICAgICAgICBpZiAodmFsaWRDYWNoZSAmJiB2YWxpZEJCb3gpIHtcbiAgICAgICAgICAgIHJlZ2lvbiA9IG1lcmdlUmVnaW9uKGNhY2hlQm94LCBiYm94KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWxpZENhY2hlKSB7XG4gICAgICAgICAgICByZWdpb24gPSBjYWNoZUJveDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWxpZEJCb3gpIHtcbiAgICAgICAgICAgIHJlZ2lvbiA9IGJib3g7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIOWboOS4uuWFg+e0oOW3sue7j+mUgOavgeaJgOS7peaXoOazleiOt+WPluWIsOe8k+WtmOeahOWMheWbtOebklxuICAgICAgICByZWdpb24gPSBlbGVtZW50WydfY2FjaGVDYW52YXNCQm94J107XG4gICAgfVxuICAgIHJldHVybiByZWdpb247XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0TWVyZ2VkUmVnaW9uKGVsZW1lbnRzKSB7XG4gICAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBtaW5YQXJyID0gW107XG4gICAgdmFyIG1pbllBcnIgPSBbXTtcbiAgICB2YXIgbWF4WEFyciA9IFtdO1xuICAgIHZhciBtYXhZQXJyID0gW107XG4gICAgZWFjaChlbGVtZW50cywgZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHZhciByZWdpb24gPSBnZXRSZWZyZXNoUmVnaW9uKGVsKTtcbiAgICAgICAgaWYgKHJlZ2lvbikge1xuICAgICAgICAgICAgbWluWEFyci5wdXNoKHJlZ2lvbi5taW5YKTtcbiAgICAgICAgICAgIG1pbllBcnIucHVzaChyZWdpb24ubWluWSk7XG4gICAgICAgICAgICBtYXhYQXJyLnB1c2gocmVnaW9uLm1heFgpO1xuICAgICAgICAgICAgbWF4WUFyci5wdXNoKHJlZ2lvbi5tYXhZKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IG1pbihtaW5YQXJyKSxcbiAgICAgICAgbWluWTogbWluKG1pbllBcnIpLFxuICAgICAgICBtYXhYOiBtYXgobWF4WEFyciksXG4gICAgICAgIG1heFk6IG1heChtYXhZQXJyKSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlVmlldyhyZWdpb24sIHZpZXdSZWdpb24pIHtcbiAgICBpZiAoIXJlZ2lvbiB8fCAhdmlld1JlZ2lvbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8g5LiN55u45Lqk77yM5YiZ55u05o6l6L+U5ZueIG51bGxcbiAgICBpZiAoIWludGVyc2VjdFJlY3QocmVnaW9uLCB2aWV3UmVnaW9uKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWluWDogTWF0aC5tYXgocmVnaW9uLm1pblgsIHZpZXdSZWdpb24ubWluWCksXG4gICAgICAgIG1pblk6IE1hdGgubWF4KHJlZ2lvbi5taW5ZLCB2aWV3UmVnaW9uLm1pblkpLFxuICAgICAgICBtYXhYOiBNYXRoLm1pbihyZWdpb24ubWF4WCwgdmlld1JlZ2lvbi5tYXhYKSxcbiAgICAgICAgbWF4WTogTWF0aC5taW4ocmVnaW9uLm1heFksIHZpZXdSZWdpb24ubWF4WSksXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRyYXcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/draw.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/hit.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/hit.js ***! \*****************************************************/ /*! exports provided: getShape */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getShape\", function() { return getShape; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n\nfunction invertFromMatrix(v, matrix) {\n if (matrix) {\n var invertMatrix = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(matrix);\n return Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"multiplyVec2\"])(invertMatrix, v);\n }\n return v;\n}\nfunction getRefXY(element, x, y) {\n // @ts-ignore\n var totalMatrix = element.getTotalMatrix();\n if (totalMatrix) {\n var _a = invertFromMatrix([x, y, 1], totalMatrix), refX = _a[0], refY = _a[1];\n return [refX, refY];\n }\n return [x, y];\n}\n// 拾取前的检测,只有通过检测才能继续拾取\nfunction preTest(element, x, y) {\n // @ts-ignore\n if (element.isCanvas && element.isCanvas()) {\n return true;\n }\n // 不允许被拾取,则返回 null\n // @ts-ignore\n if (!Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"isAllowCapture\"])(element) || element.cfg.isInView === false) {\n return false;\n }\n if (element.cfg.clipShape) {\n // 如果存在 clip\n var _a = getRefXY(element, x, y), refX = _a[0], refY = _a[1];\n if (element.isClipped(refX, refY)) {\n return false;\n }\n }\n // @ts-ignore ,这个地方调用过于频繁\n var bbox = element.cfg.cacheCanvasBBox || element.getCanvasBBox();\n // 如果没有缓存 bbox,则说明不可见\n // 注释掉的这段可能会加速拾取,上面的语句改写成 const bbox = element.cfg.cacheCanvasBBox;\n // 这时候的拾取假设图形/分组在上一次绘制都在视窗内,但是上面已经判定了 isInView 所以意义不大\n // 现在还调用 element.getCanvasBBox(); 一个很大的原因是便于单元测试\n // if (!bbox) {\n // return false;\n // }\n if (!(x >= bbox.minX && x <= bbox.maxX && y >= bbox.minY && y <= bbox.maxY)) {\n return false;\n }\n return true;\n}\n// 这个方法复写了 g-base 的 getShape\nfunction getShape(container, x, y) {\n // 没有通过检测,则返回 null\n if (!preTest(container, x, y)) {\n return null;\n }\n var shape = null;\n var children = container.getChildren();\n var count = children.length;\n for (var i = count - 1; i >= 0; i--) {\n var child = children[i];\n if (child.isGroup()) {\n shape = getShape(child, x, y);\n }\n else if (preTest(child, x, y)) {\n var curShape = child;\n var _a = getRefXY(child, x, y), refX = _a[0], refY = _a[1];\n // @ts-ignore\n if (curShape.isInShape(refX, refY)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n}\n//# sourceMappingURL=hit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaGl0LmpzPzk5MmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ3BFO0FBQ0E7QUFDQSwyQkFBMkIsMkRBQU07QUFDakMsZUFBZSxpRUFBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxtRUFBYztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsUUFBUTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vdXRpbC9oaXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0FsbG93Q2FwdHVyZSwgbXVsdGlwbHlWZWMyLCBpbnZlcnQgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuZnVuY3Rpb24gaW52ZXJ0RnJvbU1hdHJpeCh2LCBtYXRyaXgpIHtcbiAgICBpZiAobWF0cml4KSB7XG4gICAgICAgIHZhciBpbnZlcnRNYXRyaXggPSBpbnZlcnQobWF0cml4KTtcbiAgICAgICAgcmV0dXJuIG11bHRpcGx5VmVjMihpbnZlcnRNYXRyaXgsIHYpO1xuICAgIH1cbiAgICByZXR1cm4gdjtcbn1cbmZ1bmN0aW9uIGdldFJlZlhZKGVsZW1lbnQsIHgsIHkpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIHRvdGFsTWF0cml4ID0gZWxlbWVudC5nZXRUb3RhbE1hdHJpeCgpO1xuICAgIGlmICh0b3RhbE1hdHJpeCkge1xuICAgICAgICB2YXIgX2EgPSBpbnZlcnRGcm9tTWF0cml4KFt4LCB5LCAxXSwgdG90YWxNYXRyaXgpLCByZWZYID0gX2FbMF0sIHJlZlkgPSBfYVsxXTtcbiAgICAgICAgcmV0dXJuIFtyZWZYLCByZWZZXTtcbiAgICB9XG4gICAgcmV0dXJuIFt4LCB5XTtcbn1cbi8vIOaLvuWPluWJjeeahOajgOa1i++8jOWPquaciemAmui/h+ajgOa1i+aJjeiDvee7p+e7reaLvuWPllxuZnVuY3Rpb24gcHJlVGVzdChlbGVtZW50LCB4LCB5KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChlbGVtZW50LmlzQ2FudmFzICYmIGVsZW1lbnQuaXNDYW52YXMoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8g5LiN5YWB6K646KKr5ou+5Y+W77yM5YiZ6L+U5ZueIG51bGxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCFpc0FsbG93Q2FwdHVyZShlbGVtZW50KSB8fCBlbGVtZW50LmNmZy5pc0luVmlldyA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudC5jZmcuY2xpcFNoYXBlKSB7XG4gICAgICAgIC8vIOWmguaenOWtmOWcqCBjbGlwXG4gICAgICAgIHZhciBfYSA9IGdldFJlZlhZKGVsZW1lbnQsIHgsIHkpLCByZWZYID0gX2FbMF0sIHJlZlkgPSBfYVsxXTtcbiAgICAgICAgaWYgKGVsZW1lbnQuaXNDbGlwcGVkKHJlZlgsIHJlZlkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZSDvvIzov5nkuKrlnLDmlrnosIPnlKjov4fkuo7popHnuYFcbiAgICB2YXIgYmJveCA9IGVsZW1lbnQuY2ZnLmNhY2hlQ2FudmFzQkJveCB8fCBlbGVtZW50LmdldENhbnZhc0JCb3goKTtcbiAgICAvLyDlpoLmnpzmsqHmnInnvJPlrZggYmJveO+8jOWImeivtOaYjuS4jeWPr+ingVxuICAgIC8vIOazqOmHiuaOieeahOi/meauteWPr+iDveS8muWKoOmAn+aLvuWPlu+8jOS4iumdoueahOivreWPpeaUueWGmeaIkCBjb25zdCBiYm94ID0gZWxlbWVudC5jZmcuY2FjaGVDYW52YXNCQm94O1xuICAgIC8vIOi/meaXtuWAmeeahOaLvuWPluWBh+iuvuWbvuW9oi/liIbnu4TlnKjkuIrkuIDmrKHnu5jliLbpg73lnKjop4bnqpflhoXvvIzkvYbmmK/kuIrpnaLlt7Lnu4/liKTlrprkuoYgaXNJblZpZXcg5omA5Lul5oSP5LmJ5LiN5aSnXG4gICAgLy8g546w5Zyo6L+Y6LCD55SoIGVsZW1lbnQuZ2V0Q2FudmFzQkJveCgpOyDkuIDkuKrlvojlpKfnmoTljp/lm6DmmK/kvr/kuo7ljZXlhYPmtYvor5VcbiAgICAvLyBpZiAoIWJib3gpIHtcbiAgICAvLyAgIHJldHVybiBmYWxzZTtcbiAgICAvLyB9XG4gICAgaWYgKCEoeCA+PSBiYm94Lm1pblggJiYgeCA8PSBiYm94Lm1heFggJiYgeSA+PSBiYm94Lm1pblkgJiYgeSA8PSBiYm94Lm1heFkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vLyDov5nkuKrmlrnms5XlpI3lhpnkuoYgZy1iYXNlIOeahCBnZXRTaGFwZVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNoYXBlKGNvbnRhaW5lciwgeCwgeSkge1xuICAgIC8vIOayoeaciemAmui/h+ajgOa1i++8jOWImei/lOWbniBudWxsXG4gICAgaWYgKCFwcmVUZXN0KGNvbnRhaW5lciwgeCwgeSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBzaGFwZSA9IG51bGw7XG4gICAgdmFyIGNoaWxkcmVuID0gY29udGFpbmVyLmdldENoaWxkcmVuKCk7XG4gICAgdmFyIGNvdW50ID0gY2hpbGRyZW4ubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSBjb3VudCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoY2hpbGQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICBzaGFwZSA9IGdldFNoYXBlKGNoaWxkLCB4LCB5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcmVUZXN0KGNoaWxkLCB4LCB5KSkge1xuICAgICAgICAgICAgdmFyIGN1clNoYXBlID0gY2hpbGQ7XG4gICAgICAgICAgICB2YXIgX2EgPSBnZXRSZWZYWShjaGlsZCwgeCwgeSksIHJlZlggPSBfYVswXSwgcmVmWSA9IF9hWzFdO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaWYgKGN1clNoYXBlLmlzSW5TaGFwZShyZWZYLCByZWZZKSkge1xuICAgICAgICAgICAgICAgIHNoYXBlID0gY2hpbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNoYXBlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2hhcGU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oaXQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/hit.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js": /*!***********************************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isPointInPath; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n\nfunction isPointInPath(shape, x, y) {\n var ctx = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"getOffScreenContext\"])();\n shape.createPath(ctx);\n return ctx.isPointInPath(x, y);\n}\n//# sourceMappingURL=point-in-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tcGF0aC9wb2ludC1pbi1wYXRoLmpzPzg5YzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW1EO0FBQ3BDO0FBQ2YsY0FBYyx3RUFBbUI7QUFDakM7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tcGF0aC9wb2ludC1pbi1wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0T2ZmU2NyZWVuQ29udGV4dCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1BvaW50SW5QYXRoKHNoYXBlLCB4LCB5KSB7XG4gICAgdmFyIGN0eCA9IGdldE9mZlNjcmVlbkNvbnRleHQoKTtcbiAgICBzaGFwZS5jcmVhdGVQYXRoKGN0eCk7XG4gICAgcmV0dXJuIGN0eC5pc1BvaW50SW5QYXRoKHgsIHkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9pbnQtaW4tcGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-path/point-in-path.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isInPolygon; });\n/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nfunction isInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 &&\n dcmp(x - ((y - p1[1]) * (p1[0] - p2[0])) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tcGF0aC9wb2x5Z29uLmpzPzI4YzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1wYXRoL3BvbHlnb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5Yik5pat54K55piv5ZCm5Zyo5aSa6L655b2i5YaFXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuLy8g5aSa6L655b2i55qE5bCE57q/5qOA5rWL77yM5Y+C6ICD77yaaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dpbGxpYW1TdW4wMTIyL2FydGljbGUvZGV0YWlscy83Nzk5NDUyNlxudmFyIHRvbGVyYW5jZSA9IDFlLTY7XG4vLyDkuInmgIHlh73mlbDvvIzliKTmlq3kuKTkuKpkb3VibGXlnKhlcHPnsr7luqbkuIvnmoTlpKflsI/lhbPns7tcbmZ1bmN0aW9uIGRjbXAoeCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IHRvbGVyYW5jZSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHggPCAwID8gLTEgOiAxO1xufVxuLy8g5Yik5pat54K5UeaYr+WQpuWcqHAx5ZKMcDLnmoTnur/mrrXkuIpcbmZ1bmN0aW9uIG9uU2VnbWVudChwMSwgcDIsIHEpIHtcbiAgICBpZiAoKHFbMF0gLSBwMVswXSkgKiAocDJbMV0gLSBwMVsxXSkgPT09IChwMlswXSAtIHAxWzBdKSAqIChxWzFdIC0gcDFbMV0pICYmXG4gICAgICAgIE1hdGgubWluKHAxWzBdLCBwMlswXSkgPD0gcVswXSAmJlxuICAgICAgICBxWzBdIDw9IE1hdGgubWF4KHAxWzBdLCBwMlswXSkgJiZcbiAgICAgICAgTWF0aC5taW4ocDFbMV0sIHAyWzFdKSA8PSBxWzFdICYmXG4gICAgICAgIHFbMV0gPD0gTWF0aC5tYXgocDFbMV0sIHAyWzFdKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLy8g5Yik5pat54K5UOWcqOWkmui+ueW9ouWGhS3lsITnur/ms5VcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzSW5Qb2x5Z29uKHBvaW50cywgeCwgeSkge1xuICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgIHZhciBuID0gcG9pbnRzLmxlbmd0aDtcbiAgICBpZiAobiA8PSAyKSB7XG4gICAgICAgIC8vIHN2ZyDkuK3ngrnlsI/kuo4gMyDkuKrml7bvvIzkuI3mmL7npLrvvIzkuZ/ml6Dms5Xooqvmi77lj5ZcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICB2YXIgcDEgPSBwb2ludHNbaV07XG4gICAgICAgIHZhciBwMiA9IHBvaW50c1soaSArIDEpICUgbl07XG4gICAgICAgIGlmIChvblNlZ21lbnQocDEsIHAyLCBbeCwgeV0pKSB7XG4gICAgICAgICAgICAvLyDngrnlnKjlpJrovrnlvaLkuIDmnaHovrnkuIpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWJjeS4gOS4quWIpOaWrW1pbihwMVsxXSxwMlsxXSk8UC55PD1tYXgocDFbMV0scDJbMV0pXG4gICAgICAgIC8vIOWQjuS4gOS4quWIpOaWreiiq+a1i+eCuSDlnKgg5bCE57q/5LiO6L655Lqk54K5IOeahOW3pui+uVxuICAgICAgICBpZiAoZGNtcChwMVsxXSAtIHkpID4gMCAhPT0gZGNtcChwMlsxXSAtIHkpID4gMCAmJlxuICAgICAgICAgICAgZGNtcCh4IC0gKCh5IC0gcDFbMV0pICogKHAxWzBdIC0gcDJbMF0pKSAvIChwMVsxXSAtIHAyWzFdKSAtIHAxWzBdKSA8IDApIHtcbiAgICAgICAgICAgIGlzSGl0ID0gIWlzSGl0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc0hpdDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlnb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-path/polygon.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return arc; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n\nfunction arc(cx, cy, r, startAngle, endAngle, lineWidth, x, y) {\n var angle = (Math.atan2(y - cy, x - cx) + Math.PI * 2) % (Math.PI * 2); // 转换到 0 - 2 * Math.PI 之间\n if (angle < startAngle || angle > endAngle) {\n return false;\n }\n var point = {\n x: cx + r * Math.cos(angle),\n y: cy + r * Math.sin(angle),\n };\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(point.x, point.y, x, y) <= lineWidth / 2;\n}\n//# sourceMappingURL=arc.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL2FyYy5qcz85NWRmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNwQjtBQUNmLDJFQUEyRTtBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsc0RBQVE7QUFDbkI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvYXJjLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tICcuLi91dGlsJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFyYyhjeCwgY3ksIHIsIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCBsaW5lV2lkdGgsIHgsIHkpIHtcbiAgICB2YXIgYW5nbGUgPSAoTWF0aC5hdGFuMih5IC0gY3ksIHggLSBjeCkgKyBNYXRoLlBJICogMikgJSAoTWF0aC5QSSAqIDIpOyAvLyDovazmjaLliLAgMCAtIDIgKiBNYXRoLlBJIOS5i+mXtFxuICAgIGlmIChhbmdsZSA8IHN0YXJ0QW5nbGUgfHwgYW5nbGUgPiBlbmRBbmdsZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBwb2ludCA9IHtcbiAgICAgICAgeDogY3ggKyByICogTWF0aC5jb3MoYW5nbGUpLFxuICAgICAgICB5OiBjeSArIHIgKiBNYXRoLnNpbihhbmdsZSksXG4gICAgfTtcbiAgICByZXR1cm4gZGlzdGFuY2UocG9pbnQueCwgcG9pbnQueSwgeCwgeSkgPD0gbGluZVdpZHRoIC8gMjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFyYy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return inLine; });\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n\nfunction inLine(x1, y1, x2, y2, lineWidth, x, y) {\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var halfWidth = lineWidth / 2;\n // 因为目前的方案是计算点到直线的距离,而有可能会在延长线上,所以要先判断是否在包围盒内\n // 这种方案会在水平或者竖直的情况下载线的延长线上有半 lineWidth 的误差\n if (!(x >= minX - halfWidth && x <= maxX + halfWidth && y >= minY - halfWidth && y <= maxY + halfWidth)) {\n return false;\n }\n // 因为已经计算了包围盒,所以仅需要计算到直线的距离即可,可以显著提升性能\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"].pointToLine(x1, y1, x2, y2, x, y) <= lineWidth / 2;\n}\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL2xpbmUuanM/M2ZhMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBZ0Q7QUFDakM7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpREFBUTtBQUNuQjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL2luLXN0cm9rZS9saW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGluZSBhcyBMaW5lVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbkxpbmUoeDEsIHkxLCB4MiwgeTIsIGxpbmVXaWR0aCwgeCwgeSkge1xuICAgIHZhciBtaW5YID0gTWF0aC5taW4oeDEsIHgyKTtcbiAgICB2YXIgbWF4WCA9IE1hdGgubWF4KHgxLCB4Mik7XG4gICAgdmFyIG1pblkgPSBNYXRoLm1pbih5MSwgeTIpO1xuICAgIHZhciBtYXhZID0gTWF0aC5tYXgoeTEsIHkyKTtcbiAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICAvLyDlm6DkuLrnm67liY3nmoTmlrnmoYjmmK/orqHnrpfngrnliLDnm7Tnur/nmoTot53nprvvvIzogIzmnInlj6/og73kvJrlnKjlu7bplb/nur/kuIrvvIzmiYDku6XopoHlhYjliKTmlq3mmK/lkKblnKjljIXlm7Tnm5LlhoVcbiAgICAvLyDov5nnp43mlrnmoYjkvJrlnKjmsLTlubPmiJbogIXnq5bnm7TnmoTmg4XlhrXkuIvovb3nur/nmoTlu7bplb/nur/kuIrmnInljYogbGluZVdpZHRoIOeahOivr+W3rlxuICAgIGlmICghKHggPj0gbWluWCAtIGhhbGZXaWR0aCAmJiB4IDw9IG1heFggKyBoYWxmV2lkdGggJiYgeSA+PSBtaW5ZIC0gaGFsZldpZHRoICYmIHkgPD0gbWF4WSArIGhhbGZXaWR0aCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyDlm6DkuLrlt7Lnu4/orqHnrpfkuobljIXlm7Tnm5LvvIzmiYDku6Xku4XpnIDopoHorqHnrpfliLDnm7Tnur/nmoTot53nprvljbPlj6/vvIzlj6/ku6XmmL7okZfmj5DljYfmgKfog71cbiAgICByZXR1cm4gTGluZVV0aWwucG9pbnRUb0xpbmUoeDEsIHkxLCB4MiwgeTIsIHgsIHkpIDw9IGxpbmVXaWR0aCAvIDI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1saW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js": /*!********************************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return inPolyline; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js\");\n\nfunction inPolyline(points, lineWidth, x, y, isClose) {\n var count = points.length;\n if (count < 2) {\n return false;\n }\n for (var i = 0; i < count - 1; i++) {\n var x1 = points[i][0];\n var y1 = points[i][1];\n var x2 = points[i + 1][0];\n var y2 = points[i + 1][1];\n if (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x1, y1, x2, y2, lineWidth, x, y)) {\n return true;\n }\n }\n // 如果封闭,则计算起始点和结束点的边\n if (isClose) {\n var first = points[0];\n var last = points[count - 1];\n if (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(first[0], first[1], last[0], last[1], lineWidth, x, y)) {\n return true;\n }\n }\n return false;\n}\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL3BvbHlsaW5lLmpzPzlmZjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTRCO0FBQ2I7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkscURBQU07QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL2luLXN0cm9rZS9wb2x5bGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbkxpbmUgZnJvbSAnLi9saW5lJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluUG9seWxpbmUocG9pbnRzLCBsaW5lV2lkdGgsIHgsIHksIGlzQ2xvc2UpIHtcbiAgICB2YXIgY291bnQgPSBwb2ludHMubGVuZ3RoO1xuICAgIGlmIChjb3VudCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50IC0gMTsgaSsrKSB7XG4gICAgICAgIHZhciB4MSA9IHBvaW50c1tpXVswXTtcbiAgICAgICAgdmFyIHkxID0gcG9pbnRzW2ldWzFdO1xuICAgICAgICB2YXIgeDIgPSBwb2ludHNbaSArIDFdWzBdO1xuICAgICAgICB2YXIgeTIgPSBwb2ludHNbaSArIDFdWzFdO1xuICAgICAgICBpZiAoaW5MaW5lKHgxLCB5MSwgeDIsIHkyLCBsaW5lV2lkdGgsIHgsIHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDlpoLmnpzlsIHpl63vvIzliJnorqHnrpfotbflp4vngrnlkoznu5PmnZ/ngrnnmoTovrlcbiAgICBpZiAoaXNDbG9zZSkge1xuICAgICAgICB2YXIgZmlyc3QgPSBwb2ludHNbMF07XG4gICAgICAgIHZhciBsYXN0ID0gcG9pbnRzW2NvdW50IC0gMV07XG4gICAgICAgIGlmIChpbkxpbmUoZmlyc3RbMF0sIGZpcnN0WzFdLCBsYXN0WzBdLCBsYXN0WzFdLCBsaW5lV2lkdGgsIHgsIHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-stroke/polyline.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/in-stroke/rect-radius.js": /*!***********************************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/in-stroke/rect-radius.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return rectWithRadius; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _arc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arc */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js\");\n\n\nfunction rectWithRadius(minX, minY, width, height, radius, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n return (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + radius, minY, minX + width - radius, minY, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + width, minY + radius, minX + width, minY + height - radius, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + width - radius, minY + height, minX + radius, minY + height, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX, minY + height - radius, minX, minY + radius, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + width - radius, minY + radius, radius, 1.5 * Math.PI, 2 * Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + width - radius, minY + height - radius, radius, 0, 0.5 * Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + radius, minY + height - radius, radius, 0.5 * Math.PI, Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + radius, minY + radius, radius, Math.PI, 1.5 * Math.PI, lineWidth, x, y));\n}\n//# sourceMappingURL=rect-radius.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL3JlY3QtcmFkaXVzLmpzPzRiMDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEI7QUFDRjtBQUNYO0FBQ2Y7QUFDQSxZQUFZLHFEQUFNO0FBQ2xCLFFBQVEscURBQU07QUFDZCxRQUFRLHFEQUFNO0FBQ2QsUUFBUSxxREFBTTtBQUNkLFFBQVEsb0RBQUs7QUFDYixRQUFRLG9EQUFLO0FBQ2IsUUFBUSxvREFBSztBQUNiLFFBQVEsb0RBQUs7QUFDYjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL2luLXN0cm9rZS9yZWN0LXJhZGl1cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbkxpbmUgZnJvbSAnLi9saW5lJztcbmltcG9ydCBpbkFyYyBmcm9tICcuL2FyYyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWN0V2l0aFJhZGl1cyhtaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0LCByYWRpdXMsIGxpbmVXaWR0aCwgeCwgeSkge1xuICAgIHZhciBoYWxmV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgIHJldHVybiAoaW5MaW5lKG1pblggKyByYWRpdXMsIG1pblksIG1pblggKyB3aWR0aCAtIHJhZGl1cywgbWluWSwgbGluZVdpZHRoLCB4LCB5KSB8fFxuICAgICAgICBpbkxpbmUobWluWCArIHdpZHRoLCBtaW5ZICsgcmFkaXVzLCBtaW5YICsgd2lkdGgsIG1pblkgKyBoZWlnaHQgLSByYWRpdXMsIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5MaW5lKG1pblggKyB3aWR0aCAtIHJhZGl1cywgbWluWSArIGhlaWdodCwgbWluWCArIHJhZGl1cywgbWluWSArIGhlaWdodCwgbGluZVdpZHRoLCB4LCB5KSB8fFxuICAgICAgICBpbkxpbmUobWluWCwgbWluWSArIGhlaWdodCAtIHJhZGl1cywgbWluWCwgbWluWSArIHJhZGl1cywgbGluZVdpZHRoLCB4LCB5KSB8fFxuICAgICAgICBpbkFyYyhtaW5YICsgd2lkdGggLSByYWRpdXMsIG1pblkgKyByYWRpdXMsIHJhZGl1cywgMS41ICogTWF0aC5QSSwgMiAqIE1hdGguUEksIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5BcmMobWluWCArIHdpZHRoIC0gcmFkaXVzLCBtaW5ZICsgaGVpZ2h0IC0gcmFkaXVzLCByYWRpdXMsIDAsIDAuNSAqIE1hdGguUEksIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5BcmMobWluWCArIHJhZGl1cywgbWluWSArIGhlaWdodCAtIHJhZGl1cywgcmFkaXVzLCAwLjUgKiBNYXRoLlBJLCBNYXRoLlBJLCBsaW5lV2lkdGgsIHgsIHkpIHx8XG4gICAgICAgIGluQXJjKG1pblggKyByYWRpdXMsIG1pblkgKyByYWRpdXMsIHJhZGl1cywgTWF0aC5QSSwgMS41ICogTWF0aC5QSSwgbGluZVdpZHRoLCB4LCB5KSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWN0LXJhZGl1cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-stroke/rect-radius.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/in-stroke/rect.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/in-stroke/rect.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return inRect; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n\nfunction inRect(minX, minY, width, height, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n // 将四个边看做矩形来检测,比边的检测算法要快\n return (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX - halfWidth, minY - halfWidth, width, lineWidth, x, y) || // 上边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX + width - halfWidth, minY - halfWidth, lineWidth, height, x, y) || // 右边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX + halfWidth, minY + height - halfWidth, width, lineWidth, x, y) || // 下边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX - halfWidth, minY + halfWidth, lineWidth, height, x, y)); // 左边\n}\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL3JlY3QuanM/ZDY5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBZ0M7QUFDakI7QUFDZjtBQUNBO0FBQ0EsWUFBWSxtREFBSztBQUNqQixRQUFRLG1EQUFLO0FBQ2IsUUFBUSxtREFBSztBQUNiLFFBQVEsbURBQUssK0RBQStEO0FBQzVFO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL3JlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbkJveCB9IGZyb20gJy4uL3V0aWwnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5SZWN0KG1pblgsIG1pblksIHdpZHRoLCBoZWlnaHQsIGxpbmVXaWR0aCwgeCwgeSkge1xuICAgIHZhciBoYWxmV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgIC8vIOWwhuWbm+S4qui+ueeci+WBmuefqeW9ouadpeajgOa1i++8jOavlOi+ueeahOajgOa1i+eul+azleimgeW/q1xuICAgIHJldHVybiAoaW5Cb3gobWluWCAtIGhhbGZXaWR0aCwgbWluWSAtIGhhbGZXaWR0aCwgd2lkdGgsIGxpbmVXaWR0aCwgeCwgeSkgfHwgLy8g5LiK6L65XG4gICAgICAgIGluQm94KG1pblggKyB3aWR0aCAtIGhhbGZXaWR0aCwgbWluWSAtIGhhbGZXaWR0aCwgbGluZVdpZHRoLCBoZWlnaHQsIHgsIHkpIHx8IC8vIOWPs+i+uVxuICAgICAgICBpbkJveChtaW5YICsgaGFsZldpZHRoLCBtaW5ZICsgaGVpZ2h0IC0gaGFsZldpZHRoLCB3aWR0aCwgbGluZVdpZHRoLCB4LCB5KSB8fCAvLyDkuIvovrlcbiAgICAgICAgaW5Cb3gobWluWCAtIGhhbGZXaWR0aCwgbWluWSArIGhhbGZXaWR0aCwgbGluZVdpZHRoLCBoZWlnaHQsIHgsIHkpKTsgLy8g5bem6L65XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/in-stroke/rect.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/parse.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/parse.js ***! \*******************************************************/ /*! exports provided: parseLineGradient, parseRadialGradient, parsePattern, parseStyle, parseRadius */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseLineGradient\", function() { return parseLineGradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadialGradient\", function() { return parseRadialGradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePattern\", function() { return parsePattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseStyle\", function() { return parseStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return parseRadius; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\nfunction addStop(steps, gradient) {\n var arr = steps.match(regexColorStop);\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(arr, function (item) {\n var itemArr = item.split(':');\n gradient.addColorStop(itemArr[0], itemArr[1]);\n });\n}\n/**\n * 将边和填充设置的颜色转换成线性渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nfunction parseLineGradient(context, element, gradientStr) {\n var arr = regexLG.exec(gradientStr);\n var angle = (parseFloat(arr[1]) % 360) * (Math.PI / 180);\n var steps = arr[2];\n var box = element.getBBox();\n var start;\n var end;\n if (angle >= 0 && angle < (1 / 2) * Math.PI) {\n start = {\n x: box.minX,\n y: box.minY,\n };\n end = {\n x: box.maxX,\n y: box.maxY,\n };\n }\n else if ((1 / 2) * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: box.maxX,\n y: box.minY,\n };\n end = {\n x: box.minX,\n y: box.maxY,\n };\n }\n else if (Math.PI <= angle && angle < (3 / 2) * Math.PI) {\n start = {\n x: box.maxX,\n y: box.maxY,\n };\n end = {\n x: box.minX,\n y: box.minY,\n };\n }\n else {\n start = {\n x: box.minX,\n y: box.maxY,\n };\n end = {\n x: box.maxX,\n y: box.minY,\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n var gradient = context.createLinearGradient(start.x, start.y, x, y);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 将边和填充设置的颜色转换成圆形渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nfunction parseRadialGradient(context, element, gradientStr) {\n var arr = regexRG.exec(gradientStr);\n var fx = parseFloat(arr[1]);\n var fy = parseFloat(arr[2]);\n var fr = parseFloat(arr[3]);\n var steps = arr[4];\n // 环半径为0时,默认无渐变,取渐变序列的最后一个颜色\n if (fr === 0) {\n var colors = steps.match(regexColorStop);\n return colors[colors.length - 1].split(':')[1];\n }\n var box = element.getBBox();\n var width = box.maxX - box.minX;\n var height = box.maxY - box.minY;\n var r = Math.sqrt(width * width + height * height) / 2;\n var gradient = context.createRadialGradient(box.minX + width * fx, box.minY + height * fy, 0, box.minX + width / 2, box.minY + height / 2, fr * r);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 边和填充设置的颜色转换成 pattern\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} patternStr 生成 pattern 的字符串\n */\nfunction parsePattern(context, element, patternStr) {\n // 在转换过程中进行了缓存\n if (element.get('patternSource') && element.get('patternSource') === patternStr) {\n return element.get('pattern');\n }\n var pattern;\n var img;\n var arr = regexPR.exec(patternStr);\n var repeat = arr[1];\n var source = arr[2];\n // Function to be called when pattern loads\n function onload() {\n // Create pattern\n pattern = context.createPattern(img, repeat);\n element.set('pattern', pattern); // be a cache\n element.set('patternSource', patternStr);\n }\n switch (repeat) {\n case 'a':\n repeat = 'repeat';\n break;\n case 'x':\n repeat = 'repeat-x';\n break;\n case 'y':\n repeat = 'repeat-y';\n break;\n case 'n':\n repeat = 'no-repeat';\n break;\n default:\n repeat = 'no-repeat';\n }\n img = new Image();\n // If source URL is not a data URL\n if (!source.match(/^data:/i)) {\n // Set crossOrigin for this image\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n if (img.complete) {\n onload();\n }\n else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return pattern;\n}\nfunction parseStyle(context, element, color) {\n var bbox = element.getBBox();\n if (isNaN(bbox.x) || isNaN(bbox.y) || isNaN(bbox.width) || isNaN(bbox.height)) {\n return color;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(color)) {\n if (color[1] === '(' || color[2] === '(') {\n if (color[0] === 'l') {\n // regexLG.test(color)\n return parseLineGradient(context, element, color);\n }\n if (color[0] === 'r') {\n // regexRG.test(color)\n return parseRadialGradient(context, element, color);\n }\n if (color[0] === 'p') {\n // regexPR.test(color)\n return parsePattern(context, element, color);\n }\n }\n return color;\n }\n if (color instanceof CanvasPattern) {\n return color;\n }\n}\nfunction parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return [r1, r2, r3, r4];\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvcGFyc2UuanM/YWY0MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGtEQUFJO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlCQUF5QjtBQUNwQyxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsSUFBSTtBQUNqQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUJBQXlCO0FBQ3BDLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxJQUFJO0FBQ2pCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx5QkFBeUI7QUFDcEMsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctY2FudmFzL2VzbS91dGlsL3BhcnNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdHJpbmcsIGVhY2gsIGlzQXJyYXkgfSBmcm9tICcuL3V0aWwnO1xudmFyIHJlZ2V4TEcgPSAvXmxcXHMqXFwoXFxzKihbXFxkLl0rKVxccypcXClcXHMqKC4qKS9pO1xudmFyIHJlZ2V4UkcgPSAvXnJcXHMqXFwoXFxzKihbXFxkLl0rKVxccyosXFxzKihbXFxkLl0rKVxccyosXFxzKihbXFxkLl0rKVxccypcXClcXHMqKC4qKS9pO1xudmFyIHJlZ2V4UFIgPSAvXnBcXHMqXFwoXFxzKihbYXh5bl0pXFxzKlxcKVxccyooLiopL2k7XG52YXIgcmVnZXhDb2xvclN0b3AgPSAvW1xcZC5dKzooI1teXFxzXSt8W15cXCldK1xcKSkvZ2k7XG5mdW5jdGlvbiBhZGRTdG9wKHN0ZXBzLCBncmFkaWVudCkge1xuICAgIHZhciBhcnIgPSBzdGVwcy5tYXRjaChyZWdleENvbG9yU3RvcCk7XG4gICAgZWFjaChhcnIsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHZhciBpdGVtQXJyID0gaXRlbS5zcGxpdCgnOicpO1xuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoaXRlbUFyclswXSwgaXRlbUFyclsxXSk7XG4gICAgfSk7XG59XG4vKipcbiAqIOWwhui+ueWSjOWhq+WFheiuvue9rueahOminOiJsui9rOaNouaIkOe6v+aAp+a4kOWPmOWvueixoVxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHQgY2FudmFzIOS4iuS4i+aWh1xuICogQHBhcmFtIHtJRWxlbWVudH0gICAgICAgICAgICAgICAgIGVsZW1lbnQgIOWbvuW9ouWFg+e0oFxuICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgIGdyYWRpZW50U3RyICAg6aKc6ImyXG4gKiBAcmV0dXJucyB7YW55fSDmuJDlj5jlr7nosaFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGluZUdyYWRpZW50KGNvbnRleHQsIGVsZW1lbnQsIGdyYWRpZW50U3RyKSB7XG4gICAgdmFyIGFyciA9IHJlZ2V4TEcuZXhlYyhncmFkaWVudFN0cik7XG4gICAgdmFyIGFuZ2xlID0gKHBhcnNlRmxvYXQoYXJyWzFdKSAlIDM2MCkgKiAoTWF0aC5QSSAvIDE4MCk7XG4gICAgdmFyIHN0ZXBzID0gYXJyWzJdO1xuICAgIHZhciBib3ggPSBlbGVtZW50LmdldEJCb3goKTtcbiAgICB2YXIgc3RhcnQ7XG4gICAgdmFyIGVuZDtcbiAgICBpZiAoYW5nbGUgPj0gMCAmJiBhbmdsZSA8ICgxIC8gMikgKiBNYXRoLlBJKSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogYm94Lm1pblgsXG4gICAgICAgICAgICB5OiBib3gubWluWSxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogYm94Lm1heFgsXG4gICAgICAgICAgICB5OiBib3gubWF4WSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKDEgLyAyKSAqIE1hdGguUEkgPD0gYW5nbGUgJiYgYW5nbGUgPCBNYXRoLlBJKSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogYm94Lm1heFgsXG4gICAgICAgICAgICB5OiBib3gubWluWSxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogYm94Lm1pblgsXG4gICAgICAgICAgICB5OiBib3gubWF4WSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoTWF0aC5QSSA8PSBhbmdsZSAmJiBhbmdsZSA8ICgzIC8gMikgKiBNYXRoLlBJKSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogYm94Lm1heFgsXG4gICAgICAgICAgICB5OiBib3gubWF4WSxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogYm94Lm1pblgsXG4gICAgICAgICAgICB5OiBib3gubWluWSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogYm94Lm1pblgsXG4gICAgICAgICAgICB5OiBib3gubWF4WSxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogYm94Lm1heFgsXG4gICAgICAgICAgICB5OiBib3gubWluWSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHRhblRoZXRhID0gTWF0aC50YW4oYW5nbGUpO1xuICAgIHZhciB0YW5UaGV0YTIgPSB0YW5UaGV0YSAqIHRhblRoZXRhO1xuICAgIHZhciB4ID0gKGVuZC54IC0gc3RhcnQueCArIHRhblRoZXRhICogKGVuZC55IC0gc3RhcnQueSkpIC8gKHRhblRoZXRhMiArIDEpICsgc3RhcnQueDtcbiAgICB2YXIgeSA9ICh0YW5UaGV0YSAqIChlbmQueCAtIHN0YXJ0LnggKyB0YW5UaGV0YSAqIChlbmQueSAtIHN0YXJ0LnkpKSkgLyAodGFuVGhldGEyICsgMSkgKyBzdGFydC55O1xuICAgIHZhciBncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc3RhcnQueCwgc3RhcnQueSwgeCwgeSk7XG4gICAgYWRkU3RvcChzdGVwcywgZ3JhZGllbnQpO1xuICAgIHJldHVybiBncmFkaWVudDtcbn1cbi8qKlxuICog5bCG6L655ZKM5aGr5YWF6K6+572u55qE6aKc6Imy6L2s5o2i5oiQ5ZyG5b2i5riQ5Y+Y5a+56LGhXG4gKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY29udGV4dCBjYW52YXMg5LiK5LiL5paHXG4gKiBAcGFyYW0ge0lFbGVtZW50fSAgICAgICAgICAgICAgICAgZWxlbWVudCAg5Zu+5b2i5YWD57SgXG4gKiBAcGFyYW0ge3N0cmluZ30gICAgICAgICAgICAgICAgICAgZ3JhZGllbnRTdHIgICDpopzoibJcbiAqIEByZXR1cm5zIHthbnl9IOa4kOWPmOWvueixoVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSYWRpYWxHcmFkaWVudChjb250ZXh0LCBlbGVtZW50LCBncmFkaWVudFN0cikge1xuICAgIHZhciBhcnIgPSByZWdleFJHLmV4ZWMoZ3JhZGllbnRTdHIpO1xuICAgIHZhciBmeCA9IHBhcnNlRmxvYXQoYXJyWzFdKTtcbiAgICB2YXIgZnkgPSBwYXJzZUZsb2F0KGFyclsyXSk7XG4gICAgdmFyIGZyID0gcGFyc2VGbG9hdChhcnJbM10pO1xuICAgIHZhciBzdGVwcyA9IGFycls0XTtcbiAgICAvLyDnjq/ljYrlvoTkuLow5pe277yM6buY6K6k5peg5riQ5Y+Y77yM5Y+W5riQ5Y+Y5bqP5YiX55qE5pyA5ZCO5LiA5Liq6aKc6ImyXG4gICAgaWYgKGZyID09PSAwKSB7XG4gICAgICAgIHZhciBjb2xvcnMgPSBzdGVwcy5tYXRjaChyZWdleENvbG9yU3RvcCk7XG4gICAgICAgIHJldHVybiBjb2xvcnNbY29sb3JzLmxlbmd0aCAtIDFdLnNwbGl0KCc6JylbMV07XG4gICAgfVxuICAgIHZhciBib3ggPSBlbGVtZW50LmdldEJCb3goKTtcbiAgICB2YXIgd2lkdGggPSBib3gubWF4WCAtIGJveC5taW5YO1xuICAgIHZhciBoZWlnaHQgPSBib3gubWF4WSAtIGJveC5taW5ZO1xuICAgIHZhciByID0gTWF0aC5zcXJ0KHdpZHRoICogd2lkdGggKyBoZWlnaHQgKiBoZWlnaHQpIC8gMjtcbiAgICB2YXIgZ3JhZGllbnQgPSBjb250ZXh0LmNyZWF0ZVJhZGlhbEdyYWRpZW50KGJveC5taW5YICsgd2lkdGggKiBmeCwgYm94Lm1pblkgKyBoZWlnaHQgKiBmeSwgMCwgYm94Lm1pblggKyB3aWR0aCAvIDIsIGJveC5taW5ZICsgaGVpZ2h0IC8gMiwgZnIgKiByKTtcbiAgICBhZGRTdG9wKHN0ZXBzLCBncmFkaWVudCk7XG4gICAgcmV0dXJuIGdyYWRpZW50O1xufVxuLyoqXG4gKiDovrnlkozloavlhYXorr7nva7nmoTpopzoibLovazmjaLmiJAgcGF0dGVyblxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHQgY2FudmFzIOS4iuS4i+aWh1xuICogQHBhcmFtIHtJRWxlbWVudH0gICAgICAgICAgICAgICAgIGVsZW1lbnQgIOWbvuW9ouWFg+e0oFxuICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgIHBhdHRlcm5TdHIgICDnlJ/miJAgcGF0dGVybiDnmoTlrZfnrKbkuLJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGF0dGVybihjb250ZXh0LCBlbGVtZW50LCBwYXR0ZXJuU3RyKSB7XG4gICAgLy8g5Zyo6L2s5o2i6L+H56iL5Lit6L+b6KGM5LqG57yT5a2YXG4gICAgaWYgKGVsZW1lbnQuZ2V0KCdwYXR0ZXJuU291cmNlJykgJiYgZWxlbWVudC5nZXQoJ3BhdHRlcm5Tb3VyY2UnKSA9PT0gcGF0dGVyblN0cikge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ3BhdHRlcm4nKTtcbiAgICB9XG4gICAgdmFyIHBhdHRlcm47XG4gICAgdmFyIGltZztcbiAgICB2YXIgYXJyID0gcmVnZXhQUi5leGVjKHBhdHRlcm5TdHIpO1xuICAgIHZhciByZXBlYXQgPSBhcnJbMV07XG4gICAgdmFyIHNvdXJjZSA9IGFyclsyXTtcbiAgICAvLyBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBwYXR0ZXJuIGxvYWRzXG4gICAgZnVuY3Rpb24gb25sb2FkKCkge1xuICAgICAgICAvLyBDcmVhdGUgcGF0dGVyblxuICAgICAgICBwYXR0ZXJuID0gY29udGV4dC5jcmVhdGVQYXR0ZXJuKGltZywgcmVwZWF0KTtcbiAgICAgICAgZWxlbWVudC5zZXQoJ3BhdHRlcm4nLCBwYXR0ZXJuKTsgLy8gYmUgYSBjYWNoZVxuICAgICAgICBlbGVtZW50LnNldCgncGF0dGVyblNvdXJjZScsIHBhdHRlcm5TdHIpO1xuICAgIH1cbiAgICBzd2l0Y2ggKHJlcGVhdCkge1xuICAgICAgICBjYXNlICdhJzpcbiAgICAgICAgICAgIHJlcGVhdCA9ICdyZXBlYXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgcmVwZWF0ID0gJ3JlcGVhdC14JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgIHJlcGVhdCA9ICdyZXBlYXQteSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbic6XG4gICAgICAgICAgICByZXBlYXQgPSAnbm8tcmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmVwZWF0ID0gJ25vLXJlcGVhdCc7XG4gICAgfVxuICAgIGltZyA9IG5ldyBJbWFnZSgpO1xuICAgIC8vIElmIHNvdXJjZSBVUkwgaXMgbm90IGEgZGF0YSBVUkxcbiAgICBpZiAoIXNvdXJjZS5tYXRjaCgvXmRhdGE6L2kpKSB7XG4gICAgICAgIC8vIFNldCBjcm9zc09yaWdpbiBmb3IgdGhpcyBpbWFnZVxuICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnQW5vbnltb3VzJztcbiAgICB9XG4gICAgaW1nLnNyYyA9IHNvdXJjZTtcbiAgICBpZiAoaW1nLmNvbXBsZXRlKSB7XG4gICAgICAgIG9ubG9hZCgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaW1nLm9ubG9hZCA9IG9ubG9hZDtcbiAgICAgICAgLy8gRml4IG9ubG9hZCgpIGJ1ZyBpbiBJRTlcbiAgICAgICAgaW1nLnNyYyA9IGltZy5zcmM7XG4gICAgfVxuICAgIHJldHVybiBwYXR0ZXJuO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3R5bGUoY29udGV4dCwgZWxlbWVudCwgY29sb3IpIHtcbiAgICB2YXIgYmJveCA9IGVsZW1lbnQuZ2V0QkJveCgpO1xuICAgIGlmIChpc05hTihiYm94LngpIHx8IGlzTmFOKGJib3gueSkgfHwgaXNOYU4oYmJveC53aWR0aCkgfHwgaXNOYU4oYmJveC5oZWlnaHQpKSB7XG4gICAgICAgIHJldHVybiBjb2xvcjtcbiAgICB9XG4gICAgaWYgKGlzU3RyaW5nKGNvbG9yKSkge1xuICAgICAgICBpZiAoY29sb3JbMV0gPT09ICcoJyB8fCBjb2xvclsyXSA9PT0gJygnKSB7XG4gICAgICAgICAgICBpZiAoY29sb3JbMF0gPT09ICdsJykge1xuICAgICAgICAgICAgICAgIC8vIHJlZ2V4TEcudGVzdChjb2xvcilcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VMaW5lR3JhZGllbnQoY29udGV4dCwgZWxlbWVudCwgY29sb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbG9yWzBdID09PSAncicpIHtcbiAgICAgICAgICAgICAgICAvLyByZWdleFJHLnRlc3QoY29sb3IpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmFkaWFsR3JhZGllbnQoY29udGV4dCwgZWxlbWVudCwgY29sb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbG9yWzBdID09PSAncCcpIHtcbiAgICAgICAgICAgICAgICAvLyByZWdleFBSLnRlc3QoY29sb3IpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlUGF0dGVybihjb250ZXh0LCBlbGVtZW50LCBjb2xvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbG9yO1xuICAgIH1cbiAgICBpZiAoY29sb3IgaW5zdGFuY2VvZiBDYW52YXNQYXR0ZXJuKSB7XG4gICAgICAgIHJldHVybiBjb2xvcjtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSYWRpdXMocmFkaXVzKSB7XG4gICAgdmFyIHIxID0gMDtcbiAgICB2YXIgcjIgPSAwO1xuICAgIHZhciByMyA9IDA7XG4gICAgdmFyIHI0ID0gMDtcbiAgICBpZiAoaXNBcnJheShyYWRpdXMpKSB7XG4gICAgICAgIGlmIChyYWRpdXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByMSA9IHIyID0gcjMgPSByNCA9IHJhZGl1c1swXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyYWRpdXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICByMSA9IHIzID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgcjIgPSByNCA9IHJhZGl1c1sxXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyYWRpdXMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICByMSA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIHIyID0gcjQgPSByYWRpdXNbMV07XG4gICAgICAgICAgICByMyA9IHJhZGl1c1syXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHIxID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgcjIgPSByYWRpdXNbMV07XG4gICAgICAgICAgICByMyA9IHJhZGl1c1syXTtcbiAgICAgICAgICAgIHI0ID0gcmFkaXVzWzNdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByMSA9IHIyID0gcjMgPSByNCA9IHJhZGl1cztcbiAgICB9XG4gICAgcmV0dXJuIFtyMSwgcjIsIHIzLCByNF07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/parse.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/path.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/path.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _in_stroke_line__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./in-stroke/line */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _in_stroke_arc__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./in-stroke/arc */ \"./node_modules/@antv/g-canvas/esm/util/in-stroke/arc.js\");\n\n/**\n * @fileoverview path 的一些工具\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__[\"ext\"].transform;\nfunction hasArc(path) {\n var hasArc = false;\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'C' || cmd === 'A' || cmd === 'Q') {\n hasArc = true;\n break;\n }\n }\n return hasArc;\n}\nfunction isPointInStroke(segments, lineWidth, x, y, length) {\n var isHit = false;\n var halfWidth = lineWidth / 2;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint, params = segment.params, prePoint = segment.prePoint, box = segment.box;\n // 如果在前面已经生成过包围盒,直接按照包围盒计算\n if (box && !Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"inBox\"])(box.x - halfWidth, box.y - halfWidth, box.width + lineWidth, box.height + lineWidth, x, y)) {\n continue;\n }\n switch (segment.command) {\n // L 和 Z 都是直线, M 不进行拾取\n case 'L':\n case 'Z':\n isHit = Object(_in_stroke_line__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(prePoint[0], prePoint[1], currentPoint[0], currentPoint[1], lineWidth, x, y);\n break;\n case 'Q':\n var qDistance = _antv_g_math__WEBPACK_IMPORTED_MODULE_2__[\"Quad\"].pointDistance(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], x, y);\n isHit = qDistance <= lineWidth / 2;\n break;\n case 'C':\n var cDistance = _antv_g_math__WEBPACK_IMPORTED_MODULE_2__[\"Cubic\"].pointDistance(prePoint[0], // 上一段结束位置, 即 C 的起始点\n prePoint[1], params[1], // 'C' 的参数,1、2 为第一个控制点,3、4 为第二个控制点,5、6 为结束点\n params[2], params[3], params[4], params[5], params[6], x, y, length);\n isHit = cDistance <= lineWidth / 2;\n break;\n case 'A':\n // 计算点到椭圆圆弧的距离,暂时使用近似算法,后面可以改成切割法求最近距离\n var arcParams = segment.arcParams;\n var cx = arcParams.cx, cy = arcParams.cy, rx = arcParams.rx, ry = arcParams.ry, startAngle = arcParams.startAngle, endAngle = arcParams.endAngle, xRotation = arcParams.xRotation;\n var p = [x, y, 1];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var m = transform(null, [\n ['t', -cx, -cy],\n ['r', -xRotation],\n ['s', 1 / scaleX, 1 / scaleY],\n ]);\n gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__[\"transformMat3\"](p, p, m);\n isHit = Object(_in_stroke_arc__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(0, 0, r, startAngle, endAngle, lineWidth, p[0], p[1]);\n break;\n default:\n break;\n }\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\n/**\n * 提取出内部的闭合多边形和非闭合的多边形,假设 path 不存在圆弧\n * @param {Array} path 路径\n * @returns {Array} 点的集合\n */\nfunction extractPolygons(path) {\n var count = path.length;\n var polygons = [];\n var polylines = [];\n var points = []; // 防止第一个命令不是 'M'\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'M') {\n // 遇到 'M' 判定是否是新数组,新数组中没有点\n if (points.length) {\n // 如果存在点,则说明没有遇到 'Z',开始了一个新的多边形\n polylines.push(points);\n points = []; // 创建新的点\n }\n points.push([params[1], params[2]]);\n }\n else if (cmd === 'Z') {\n if (points.length) {\n // 存在点\n polygons.push(points);\n points = []; // 开始新的点集合\n }\n // 如果不存在点,同时 'Z',则说明是错误,不处理\n }\n else {\n points.push([params[1], params[2]]);\n }\n }\n // 说明 points 未放入 polygons 或者 polyline\n // 仅当只有一个 M,没有 Z 时会发生这种情况\n if (points.length > 0) {\n polylines.push(points);\n }\n return {\n polygons: polygons,\n polylines: polylines,\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({ hasArc: hasArc, extractPolygons: extractPolygons, isPointInStroke: isPointInStroke }, _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"PathUtil\"]));\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvcGF0aC5qcz83YzhlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUN3QztBQUNRO0FBQ0U7QUFDVjtBQUNEO0FBQ1I7QUFDTztBQUNGO0FBQ3BDLGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsV0FBVztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixtREFBSztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsK0RBQU07QUFDOUI7QUFDQTtBQUNBLGdDQUFnQyxpREFBUTtBQUN4QztBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msa0RBQVM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw0REFBa0I7QUFDbEMsd0JBQXdCLDhEQUFLO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixtQkFBbUIsV0FBVztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UscUhBQVEsRUFBRSxxRkFBcUYsRUFBRSxxREFBUSxDQUFDLEVBQUM7QUFDMUgiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgcGF0aCDnmoTkuIDkupvlt6XlhbdcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBQYXRoVXRpbCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgeyBRdWFkIGFzIFF1YWRVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IEN1YmljIGFzIEN1YmljVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgeyBleHQgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgKiBhcyB2ZWMzIGZyb20gJ2dsLW1hdHJpeC92ZWMzJztcbmltcG9ydCB7IGluQm94IH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCBpbkxpbmUgZnJvbSAnLi9pbi1zdHJva2UvbGluZSc7XG5pbXBvcnQgaW5BcmMgZnJvbSAnLi9pbi1zdHJva2UvYXJjJztcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xuZnVuY3Rpb24gaGFzQXJjKHBhdGgpIHtcbiAgICB2YXIgaGFzQXJjID0gZmFsc2U7XG4gICAgdmFyIGNvdW50ID0gcGF0aC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSBwYXRoW2ldO1xuICAgICAgICB2YXIgY21kID0gcGFyYW1zWzBdO1xuICAgICAgICBpZiAoY21kID09PSAnQycgfHwgY21kID09PSAnQScgfHwgY21kID09PSAnUScpIHtcbiAgICAgICAgICAgIGhhc0FyYyA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGFzQXJjO1xufVxuZnVuY3Rpb24gaXNQb2ludEluU3Ryb2tlKHNlZ21lbnRzLCBsaW5lV2lkdGgsIHgsIHksIGxlbmd0aCkge1xuICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgIHZhciBoYWxmV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlZ21lbnQgPSBzZWdtZW50c1tpXTtcbiAgICAgICAgdmFyIGN1cnJlbnRQb2ludCA9IHNlZ21lbnQuY3VycmVudFBvaW50LCBwYXJhbXMgPSBzZWdtZW50LnBhcmFtcywgcHJlUG9pbnQgPSBzZWdtZW50LnByZVBvaW50LCBib3ggPSBzZWdtZW50LmJveDtcbiAgICAgICAgLy8g5aaC5p6c5Zyo5YmN6Z2i5bey57uP55Sf5oiQ6L+H5YyF5Zu055uS77yM55u05o6l5oyJ54Wn5YyF5Zu055uS6K6h566XXG4gICAgICAgIGlmIChib3ggJiYgIWluQm94KGJveC54IC0gaGFsZldpZHRoLCBib3gueSAtIGhhbGZXaWR0aCwgYm94LndpZHRoICsgbGluZVdpZHRoLCBib3guaGVpZ2h0ICsgbGluZVdpZHRoLCB4LCB5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChzZWdtZW50LmNvbW1hbmQpIHtcbiAgICAgICAgICAgIC8vIEwg5ZKMIFog6YO95piv55u057q/77yMIE0g5LiN6L+b6KGM5ou+5Y+WXG4gICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgIGNhc2UgJ1onOlxuICAgICAgICAgICAgICAgIGlzSGl0ID0gaW5MaW5lKHByZVBvaW50WzBdLCBwcmVQb2ludFsxXSwgY3VycmVudFBvaW50WzBdLCBjdXJyZW50UG9pbnRbMV0sIGxpbmVXaWR0aCwgeCwgeSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICB2YXIgcURpc3RhbmNlID0gUXVhZFV0aWwucG9pbnREaXN0YW5jZShwcmVQb2ludFswXSwgcHJlUG9pbnRbMV0sIHBhcmFtc1sxXSwgcGFyYW1zWzJdLCBwYXJhbXNbM10sIHBhcmFtc1s0XSwgeCwgeSk7XG4gICAgICAgICAgICAgICAgaXNIaXQgPSBxRGlzdGFuY2UgPD0gbGluZVdpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgIHZhciBjRGlzdGFuY2UgPSBDdWJpY1V0aWwucG9pbnREaXN0YW5jZShwcmVQb2ludFswXSwgLy8g5LiK5LiA5q6157uT5p2f5L2N572uLCDljbMgQyDnmoTotbflp4vngrlcbiAgICAgICAgICAgICAgICBwcmVQb2ludFsxXSwgcGFyYW1zWzFdLCAvLyAnQycg55qE5Y+C5pWw77yMMeOAgTIg5Li656ys5LiA5Liq5o6n5Yi254K577yMM+OAgTQg5Li656ys5LqM5Liq5o6n5Yi254K577yMNeOAgTYg5Li657uT5p2f54K5XG4gICAgICAgICAgICAgICAgcGFyYW1zWzJdLCBwYXJhbXNbM10sIHBhcmFtc1s0XSwgcGFyYW1zWzVdLCBwYXJhbXNbNl0sIHgsIHksIGxlbmd0aCk7XG4gICAgICAgICAgICAgICAgaXNIaXQgPSBjRGlzdGFuY2UgPD0gbGluZVdpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgIC8vIOiuoeeul+eCueWIsOakreWchuWchuW8p+eahOi3neemu++8jOaaguaXtuS9v+eUqOi/keS8vOeul+azle+8jOWQjumdouWPr+S7peaUueaIkOWIh+WJsuazleaxguacgOi/kei3neemu1xuICAgICAgICAgICAgICAgIHZhciBhcmNQYXJhbXMgPSBzZWdtZW50LmFyY1BhcmFtcztcbiAgICAgICAgICAgICAgICB2YXIgY3ggPSBhcmNQYXJhbXMuY3gsIGN5ID0gYXJjUGFyYW1zLmN5LCByeCA9IGFyY1BhcmFtcy5yeCwgcnkgPSBhcmNQYXJhbXMucnksIHN0YXJ0QW5nbGUgPSBhcmNQYXJhbXMuc3RhcnRBbmdsZSwgZW5kQW5nbGUgPSBhcmNQYXJhbXMuZW5kQW5nbGUsIHhSb3RhdGlvbiA9IGFyY1BhcmFtcy54Um90YXRpb247XG4gICAgICAgICAgICAgICAgdmFyIHAgPSBbeCwgeSwgMV07XG4gICAgICAgICAgICAgICAgdmFyIHIgPSByeCA+IHJ5ID8gcnggOiByeTtcbiAgICAgICAgICAgICAgICB2YXIgc2NhbGVYID0gcnggPiByeSA/IDEgOiByeCAvIHJ5O1xuICAgICAgICAgICAgICAgIHZhciBzY2FsZVkgPSByeCA+IHJ5ID8gcnkgLyByeCA6IDE7XG4gICAgICAgICAgICAgICAgdmFyIG0gPSB0cmFuc2Zvcm0obnVsbCwgW1xuICAgICAgICAgICAgICAgICAgICBbJ3QnLCAtY3gsIC1jeV0sXG4gICAgICAgICAgICAgICAgICAgIFsncicsIC14Um90YXRpb25dLFxuICAgICAgICAgICAgICAgICAgICBbJ3MnLCAxIC8gc2NhbGVYLCAxIC8gc2NhbGVZXSxcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB2ZWMzLnRyYW5zZm9ybU1hdDMocCwgcCwgbSk7XG4gICAgICAgICAgICAgICAgaXNIaXQgPSBpbkFyYygwLCAwLCByLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgbGluZVdpZHRoLCBwWzBdLCBwWzFdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzSGl0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNIaXQ7XG59XG4vKipcbiAqIOaPkOWPluWHuuWGhemDqOeahOmXreWQiOWkmui+ueW9ouWSjOmdnumXreWQiOeahOWkmui+ueW9ou+8jOWBh+iuviBwYXRoIOS4jeWtmOWcqOWchuW8p1xuICogQHBhcmFtIHtBcnJheX0gcGF0aCDot6/lvoRcbiAqIEByZXR1cm5zIHtBcnJheX0g54K555qE6ZuG5ZCIXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RQb2x5Z29ucyhwYXRoKSB7XG4gICAgdmFyIGNvdW50ID0gcGF0aC5sZW5ndGg7XG4gICAgdmFyIHBvbHlnb25zID0gW107XG4gICAgdmFyIHBvbHlsaW5lcyA9IFtdO1xuICAgIHZhciBwb2ludHMgPSBbXTsgLy8g6Ziy5q2i56ys5LiA5Liq5ZG95Luk5LiN5pivICdNJ1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgcGFyYW1zID0gcGF0aFtpXTtcbiAgICAgICAgdmFyIGNtZCA9IHBhcmFtc1swXTtcbiAgICAgICAgaWYgKGNtZCA9PT0gJ00nKSB7XG4gICAgICAgICAgICAvLyDpgYfliLAgJ00nIOWIpOWumuaYr+WQpuaYr+aWsOaVsOe7hO+8jOaWsOaVsOe7hOS4reayoeacieeCuVxuICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzlrZjlnKjngrnvvIzliJnor7TmmI7msqHmnInpgYfliLAgJ1on77yM5byA5aeL5LqG5LiA5Liq5paw55qE5aSa6L655b2iXG4gICAgICAgICAgICAgICAgcG9seWxpbmVzLnB1c2gocG9pbnRzKTtcbiAgICAgICAgICAgICAgICBwb2ludHMgPSBbXTsgLy8g5Yib5bu65paw55qE54K5XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb2ludHMucHVzaChbcGFyYW1zWzFdLCBwYXJhbXNbMl1dKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjbWQgPT09ICdaJykge1xuICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAvLyDlrZjlnKjngrlcbiAgICAgICAgICAgICAgICBwb2x5Z29ucy5wdXNoKHBvaW50cyk7XG4gICAgICAgICAgICAgICAgcG9pbnRzID0gW107IC8vIOW8gOWni+aWsOeahOeCuembhuWQiFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g5aaC5p6c5LiN5a2Y5Zyo54K577yM5ZCM5pe2ICdaJ++8jOWImeivtOaYjuaYr+mUmeivr++8jOS4jeWkhOeQhlxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3BhcmFtc1sxXSwgcGFyYW1zWzJdXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8g6K+05piOIHBvaW50cyDmnKrmlL7lhaUgcG9seWdvbnMg5oiW6ICFIHBvbHlsaW5lXG4gICAgLy8g5LuF5b2T5Y+q5pyJ5LiA5LiqIE3vvIzmsqHmnIkgWiDml7bkvJrlj5HnlJ/ov5nnp43mg4XlhrVcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcG9seWxpbmVzLnB1c2gocG9pbnRzKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcG9seWdvbnM6IHBvbHlnb25zLFxuICAgICAgICBwb2x5bGluZXM6IHBvbHlsaW5lcyxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgX19hc3NpZ24oeyBoYXNBcmM6IGhhc0FyYywgZXh0cmFjdFBvbHlnb25zOiBleHRyYWN0UG9seWdvbnMsIGlzUG9pbnRJblN0cm9rZTogaXNQb2ludEluU3Ryb2tlIH0sIFBhdGhVdGlsKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/path.js\n"); /***/ }), /***/ "./node_modules/@antv/g-canvas/esm/util/util.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g-canvas/esm/util/util.js ***! \******************************************************/ /*! exports provided: getPixelRatio, distance, inBox, intersectRect, mergeRegion, isSamePoint, isNil, isString, isFunction, isArray, each, toRadian, mod, isNumberEqual, requestAnimationFrame, clearAnimationFrame */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPixelRatio\", function() { return getPixelRatio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inBox\", function() { return inBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectRect\", function() { return intersectRect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeRegion\", function() { return mergeRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSamePoint\", function() { return isSamePoint; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRadian\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mod\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"requestAnimationFrame\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clearAnimationFrame\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clearAnimationFrame\"]; });\n\nfunction getPixelRatio() {\n return window ? window.devicePixelRatio : 1;\n}\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n */\nfunction distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n/**\n * 是否在包围盒内\n * @param {number} minX 包围盒开始的点 x\n * @param {number} minY 包围盒开始的点 y\n * @param {number} width 宽度\n * @param {number} height 高度\n * @param {[type]} x 检测点的 x\n * @param {[type]} y 监测点的 y\n */\nfunction inBox(minX, minY, width, height, x, y) {\n return x >= minX && x <= minX + width && y >= minY && y <= minY + height;\n}\nfunction intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n// 合并两个区域\nfunction mergeRegion(region1, region2) {\n if (!region1 || !region2) {\n return region1 || region2;\n }\n return {\n minX: Math.min(region1.minX, region2.minX),\n minY: Math.min(region1.minY, region2.minY),\n maxX: Math.max(region1.maxX, region2.maxX),\n maxY: Math.max(region1.maxY, region2.maxY),\n };\n}\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nfunction isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvdXRpbC5qcz83MzI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsTUFBTTtBQUNqQjtBQUNPO0FBQ1A7QUFDQTtBQUNtSjtBQUNuSiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLWNhbnZhcy9lc20vdXRpbC91dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldFBpeGVsUmF0aW8oKSB7XG4gICAgcmV0dXJuIHdpbmRvdyA/IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIDogMTtcbn1cbi8qKlxuICog5Lik54K55LmL6Ze055qE6Led56a7XG4gKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTIg57uT5p2f54K5IHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgdmFyIGR4ID0geDEgLSB4MjtcbiAgICB2YXIgZHkgPSB5MSAtIHkyO1xuICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xufVxuLyoqXG4gKiDmmK/lkKblnKjljIXlm7Tnm5LlhoVcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW5YICAg5YyF5Zu055uS5byA5aeL55qE54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW5ZICAg5YyF5Zu055uS5byA5aeL55qE54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCAg5a695bqmXG4gKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IOmrmOW6plxuICogQHBhcmFtIHtbdHlwZV19IHggICAgICDmo4DmtYvngrnnmoQgeFxuICogQHBhcmFtIHtbdHlwZV19IHkgICAgICDnm5HmtYvngrnnmoQgeVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5Cb3gobWluWCwgbWluWSwgd2lkdGgsIGhlaWdodCwgeCwgeSkge1xuICAgIHJldHVybiB4ID49IG1pblggJiYgeCA8PSBtaW5YICsgd2lkdGggJiYgeSA+PSBtaW5ZICYmIHkgPD0gbWluWSArIGhlaWdodDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnNlY3RSZWN0KGJveDEsIGJveDIpIHtcbiAgICByZXR1cm4gIShib3gyLm1pblggPiBib3gxLm1heFggfHwgYm94Mi5tYXhYIDwgYm94MS5taW5YIHx8IGJveDIubWluWSA+IGJveDEubWF4WSB8fCBib3gyLm1heFkgPCBib3gxLm1pblkpO1xufVxuLy8g5ZCI5bm25Lik5Liq5Yy65Z+fXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VSZWdpb24ocmVnaW9uMSwgcmVnaW9uMikge1xuICAgIGlmICghcmVnaW9uMSB8fCAhcmVnaW9uMikge1xuICAgICAgICByZXR1cm4gcmVnaW9uMSB8fCByZWdpb24yO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBtaW5YOiBNYXRoLm1pbihyZWdpb24xLm1pblgsIHJlZ2lvbjIubWluWCksXG4gICAgICAgIG1pblk6IE1hdGgubWluKHJlZ2lvbjEubWluWSwgcmVnaW9uMi5taW5ZKSxcbiAgICAgICAgbWF4WDogTWF0aC5tYXgocmVnaW9uMS5tYXhYLCByZWdpb24yLm1heFgpLFxuICAgICAgICBtYXhZOiBNYXRoLm1heChyZWdpb24xLm1heFksIHJlZ2lvbjIubWF4WSksXG4gICAgfTtcbn1cbi8qKlxuICog5Yik5pat5Lik5Liq54K55piv5ZCm6YeN5ZCI77yM54K55Z2Q5qCH55qE5qC85byP5Li6IFt4LCB5XVxuICogQHBhcmFtIHtBcnJheX0gcG9pbnQxIOesrOS4gOS4queCuVxuICogQHBhcmFtIHtBcnJheX0gcG9pbnQyIOesrOS6jOS4queCuVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTYW1lUG9pbnQocG9pbnQxLCBwb2ludDIpIHtcbiAgICByZXR1cm4gcG9pbnQxWzBdID09PSBwb2ludDJbMF0gJiYgcG9pbnQxWzFdID09PSBwb2ludDJbMV07XG59XG5leHBvcnQgeyBpc05pbCwgaXNTdHJpbmcsIGlzRnVuY3Rpb24sIGlzQXJyYXksIGVhY2gsIHRvUmFkaWFuLCBtb2QsIGlzTnVtYmVyRXF1YWwsIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgY2xlYXJBbmltYXRpb25GcmFtZSwgfSBmcm9tICdAYW50di91dGlsJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-canvas/esm/util/util.js\n"); /***/ }), /***/ "./node_modules/@antv/g-math/esm/arc.js": /*!**********************************************!*\ !*** ./node_modules/@antv/g-math/esm/arc.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/@antv/g-math/esm/ellipse.js\");\n\n\n// 偏导数 x\nfunction derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.cos(xRotation) * Math.sin(angle) - ry * Math.sin(xRotation) * Math.cos(angle);\n}\n// 偏导数 y\nfunction derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.sin(xRotation) * Math.sin(angle) + ry * Math.cos(xRotation) * Math.cos(angle);\n}\n// x 的极值\nfunction xExtrema(rx, ry, xRotation) {\n return Math.atan((-ry / rx) * Math.tan(xRotation));\n}\n// y 的极值\nfunction yExtrema(rx, ry, xRotation) {\n return Math.atan(ry / (rx * Math.tan(xRotation)));\n}\n// 根据角度求 x 坐标\nfunction xAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.cos(xRotation) * Math.cos(angle) - ry * Math.sin(xRotation) * Math.sin(angle) + cx;\n}\n// 根据角度求 y 坐标\nfunction yAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.sin(xRotation) * Math.cos(angle) + ry * Math.cos(xRotation) * Math.sin(angle) + cy;\n}\n// 获取点在椭圆上的角度\nfunction getAngle(rx, ry, x0, y0) {\n var angle = Math.atan2(y0 * rx, x0 * ry);\n // 转换到 0 - 2PI 内\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n// 根据角度获取,x,y\nfunction getPoint(rx, ry, angle) {\n return {\n x: rx * Math.cos(angle),\n y: ry * Math.sin(angle),\n };\n}\n// 旋转\nfunction rotate(x, y, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return [x * cos - y * sin, x * sin + y * cos];\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算包围盒\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @return {object} 包围盒对象\n */\n box: function (cx, cy, rx, ry, xRotation, startAngle, endAngle) {\n var xDim = xExtrema(rx, ry, xRotation);\n var minX = Infinity;\n var maxX = -Infinity;\n var xs = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var xAngle = xDim + i;\n if (startAngle < endAngle) {\n if (startAngle < xAngle && xAngle < endAngle) {\n xs.push(xAngle);\n }\n }\n else {\n if (endAngle < xAngle && xAngle < startAngle) {\n xs.push(xAngle);\n }\n }\n }\n for (var i = 0; i < xs.length; i++) {\n var x = xAt(cx, cy, rx, ry, xRotation, xs[i]);\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n }\n var yDim = yExtrema(rx, ry, xRotation);\n var minY = Infinity;\n var maxY = -Infinity;\n var ys = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var yAngle = yDim + i;\n if (startAngle < endAngle) {\n if (startAngle < yAngle && yAngle < endAngle) {\n ys.push(yAngle);\n }\n }\n else {\n if (endAngle < yAngle && yAngle < startAngle) {\n ys.push(yAngle);\n }\n }\n }\n for (var i = 0; i < ys.length; i++) {\n var y = yAt(cx, cy, rx, ry, xRotation, ys[i]);\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n },\n /**\n * 获取圆弧的长度,计算圆弧长度时不考虑旋转角度,\n * 仅跟 rx, ry, startAngle, endAngle 相关\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n */\n length: function (cx, cy, rx, ry, xRotation, startAngle, endAngle) { },\n /**\n * 获取指定点到圆弧的最近距离的点\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @param {number} x0 指定点的 x\n * @param {number} y0 指定点的 y\n * @return {object} 到指定点最近距离的点\n */\n nearestPoint: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n // 将最近距离问题转换成到椭圆中心 0,0 没有旋转的椭圆问题\n var relativeVector = rotate(x0 - cx, y0 - cy, -xRotation);\n var x1 = relativeVector[0], y1 = relativeVector[1];\n // 计算点到椭圆的最近的点\n var relativePoint = _ellipse__WEBPACK_IMPORTED_MODULE_1__[\"default\"].nearestPoint(0, 0, rx, ry, x1, y1);\n // 获取点在椭圆上的角度\n var angle = getAngle(rx, ry, relativePoint.x, relativePoint.y);\n // 点没有在圆弧上\n if (angle < startAngle) {\n // 小于起始圆弧\n relativePoint = getPoint(rx, ry, startAngle);\n }\n else if (angle > endAngle) {\n // 大于结束圆弧\n relativePoint = getPoint(rx, ry, endAngle);\n }\n // 旋转到 xRotation 的角度\n var vector = rotate(relativePoint.x, relativePoint.y, xRotation);\n return {\n x: vector[0] + cx,\n y: vector[1] + cy,\n };\n },\n pointDistance: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n var nearestPoint = this.nearestPoint(cx, cy, rx, ry, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n pointAt: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n return {\n x: xAt(cx, cy, rx, ry, xRotation, angle),\n y: yAt(cx, cy, rx, ry, xRotation, angle),\n };\n },\n tangentAngle: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n var dx = derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n var dy = derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(Math.atan2(dy, dx));\n },\n});\n//# sourceMappingURL=arc.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9hcmMuanM/YmQwMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDVDtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msa0JBQWtCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixlQUFlO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxrQkFBa0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGVBQWU7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEI7QUFDQSx3RUFBd0UsRUFBRTtBQUMxRTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGdEQUFPO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbURBQUs7QUFDcEIsS0FBSztBQUNMLENBQUMsRUFBQztBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vYXJjLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UsIHBpTW9kIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCBlbGxpcHNlIGZyb20gJy4vZWxsaXBzZSc7XG4vLyDlgY/lr7zmlbAgeFxuZnVuY3Rpb24gZGVyaXZhdGl2ZVhBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgYW5nbGUpIHtcbiAgICByZXR1cm4gLTEgKiByeCAqIE1hdGguY29zKHhSb3RhdGlvbikgKiBNYXRoLnNpbihhbmdsZSkgLSByeSAqIE1hdGguc2luKHhSb3RhdGlvbikgKiBNYXRoLmNvcyhhbmdsZSk7XG59XG4vLyDlgY/lr7zmlbAgeVxuZnVuY3Rpb24gZGVyaXZhdGl2ZVlBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgYW5nbGUpIHtcbiAgICByZXR1cm4gLTEgKiByeCAqIE1hdGguc2luKHhSb3RhdGlvbikgKiBNYXRoLnNpbihhbmdsZSkgKyByeSAqIE1hdGguY29zKHhSb3RhdGlvbikgKiBNYXRoLmNvcyhhbmdsZSk7XG59XG4vLyB4IOeahOaegeWAvFxuZnVuY3Rpb24geEV4dHJlbWEocngsIHJ5LCB4Um90YXRpb24pIHtcbiAgICByZXR1cm4gTWF0aC5hdGFuKCgtcnkgLyByeCkgKiBNYXRoLnRhbih4Um90YXRpb24pKTtcbn1cbi8vIHkg55qE5p6B5YC8XG5mdW5jdGlvbiB5RXh0cmVtYShyeCwgcnksIHhSb3RhdGlvbikge1xuICAgIHJldHVybiBNYXRoLmF0YW4ocnkgLyAocnggKiBNYXRoLnRhbih4Um90YXRpb24pKSk7XG59XG4vLyDmoLnmja7op5LluqbmsYIgeCDlnZDmoIdcbmZ1bmN0aW9uIHhBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBhbmdsZSkge1xuICAgIHJldHVybiByeCAqIE1hdGguY29zKHhSb3RhdGlvbikgKiBNYXRoLmNvcyhhbmdsZSkgLSByeSAqIE1hdGguc2luKHhSb3RhdGlvbikgKiBNYXRoLnNpbihhbmdsZSkgKyBjeDtcbn1cbi8vIOagueaNruinkuW6puaxgiB5IOWdkOagh1xuZnVuY3Rpb24geUF0KGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIGFuZ2xlKSB7XG4gICAgcmV0dXJuIHJ4ICogTWF0aC5zaW4oeFJvdGF0aW9uKSAqIE1hdGguY29zKGFuZ2xlKSArIHJ5ICogTWF0aC5jb3MoeFJvdGF0aW9uKSAqIE1hdGguc2luKGFuZ2xlKSArIGN5O1xufVxuLy8g6I635Y+W54K55Zyo5qSt5ZyG5LiK55qE6KeS5bqmXG5mdW5jdGlvbiBnZXRBbmdsZShyeCwgcnksIHgwLCB5MCkge1xuICAgIHZhciBhbmdsZSA9IE1hdGguYXRhbjIoeTAgKiByeCwgeDAgKiByeSk7XG4gICAgLy8g6L2s5o2i5YiwIDAgLSAyUEkg5YaFXG4gICAgcmV0dXJuIChhbmdsZSArIE1hdGguUEkgKiAyKSAlIChNYXRoLlBJICogMik7XG59XG4vLyDmoLnmja7op5Lluqbojrflj5bvvIx4LHlcbmZ1bmN0aW9uIGdldFBvaW50KHJ4LCByeSwgYW5nbGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiByeCAqIE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgeTogcnkgKiBNYXRoLnNpbihhbmdsZSksXG4gICAgfTtcbn1cbi8vIOaXi+i9rFxuZnVuY3Rpb24gcm90YXRlKHgsIHksIGFuZ2xlKSB7XG4gICAgdmFyIGNvcyA9IE1hdGguY29zKGFuZ2xlKTtcbiAgICB2YXIgc2luID0gTWF0aC5zaW4oYW5nbGUpO1xuICAgIHJldHVybiBbeCAqIGNvcyAtIHkgKiBzaW4sIHggKiBzaW4gKyB5ICogY29zXTtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICAvKipcbiAgICAgKiDorqHnrpfljIXlm7Tnm5JcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY3ggICAgICAgICDlnIblv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjeSAgICAgICAgIOWchuW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4ICAgICAgICAgeCDovbTmlrnlkJHnmoTljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkgICAgICAgICB5IOi9tOaWueWQkeeahOWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4Um90YXRpb24gIOaXi+i9rOinkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydEFuZ2xlIOi1t+Wni+inkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRBbmdsZSAgIOe7k+adn+inkuW6plxuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5Zu055uS5a+56LGhXG4gICAgICovXG4gICAgYm94OiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUpIHtcbiAgICAgICAgdmFyIHhEaW0gPSB4RXh0cmVtYShyeCwgcnksIHhSb3RhdGlvbik7XG4gICAgICAgIHZhciBtaW5YID0gSW5maW5pdHk7XG4gICAgICAgIHZhciBtYXhYID0gLUluZmluaXR5O1xuICAgICAgICB2YXIgeHMgPSBbc3RhcnRBbmdsZSwgZW5kQW5nbGVdO1xuICAgICAgICBmb3IgKHZhciBpID0gLU1hdGguUEkgKiAyOyBpIDw9IE1hdGguUEkgKiAyOyBpICs9IE1hdGguUEkpIHtcbiAgICAgICAgICAgIHZhciB4QW5nbGUgPSB4RGltICsgaTtcbiAgICAgICAgICAgIGlmIChzdGFydEFuZ2xlIDwgZW5kQW5nbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRBbmdsZSA8IHhBbmdsZSAmJiB4QW5nbGUgPCBlbmRBbmdsZSkge1xuICAgICAgICAgICAgICAgICAgICB4cy5wdXNoKHhBbmdsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGVuZEFuZ2xlIDwgeEFuZ2xlICYmIHhBbmdsZSA8IHN0YXJ0QW5nbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgeHMucHVzaCh4QW5nbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgeCA9IHhBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCB4c1tpXSk7XG4gICAgICAgICAgICBpZiAoeCA8IG1pblgpIHtcbiAgICAgICAgICAgICAgICBtaW5YID0geDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh4ID4gbWF4WCkge1xuICAgICAgICAgICAgICAgIG1heFggPSB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciB5RGltID0geUV4dHJlbWEocngsIHJ5LCB4Um90YXRpb24pO1xuICAgICAgICB2YXIgbWluWSA9IEluZmluaXR5O1xuICAgICAgICB2YXIgbWF4WSA9IC1JbmZpbml0eTtcbiAgICAgICAgdmFyIHlzID0gW3N0YXJ0QW5nbGUsIGVuZEFuZ2xlXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IC1NYXRoLlBJICogMjsgaSA8PSBNYXRoLlBJICogMjsgaSArPSBNYXRoLlBJKSB7XG4gICAgICAgICAgICB2YXIgeUFuZ2xlID0geURpbSArIGk7XG4gICAgICAgICAgICBpZiAoc3RhcnRBbmdsZSA8IGVuZEFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0QW5nbGUgPCB5QW5nbGUgJiYgeUFuZ2xlIDwgZW5kQW5nbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgeXMucHVzaCh5QW5nbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChlbmRBbmdsZSA8IHlBbmdsZSAmJiB5QW5nbGUgPCBzdGFydEFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIHlzLnB1c2goeUFuZ2xlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHkgPSB5QXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgeXNbaV0pO1xuICAgICAgICAgICAgaWYgKHkgPCBtaW5ZKSB7XG4gICAgICAgICAgICAgICAgbWluWSA9IHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeSA+IG1heFkpIHtcbiAgICAgICAgICAgICAgICBtYXhZID0geTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgICAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog6I635Y+W5ZyG5byn55qE6ZW/5bqm77yM6K6h566X5ZyG5byn6ZW/5bqm5pe25LiN6ICD6JmR5peL6L2s6KeS5bqm77yMXG4gICAgICog5LuF6LefIHJ4LCByeSwgc3RhcnRBbmdsZSwgZW5kQW5nbGUg55u45YWzXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGN4ICAgICAgICAg5ZyG5b+DIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY3kgICAgICAgICDlnIblv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCAgICAgICAgIHgg6L205pa55ZCR55qE5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ5ICAgICAgICAgeSDovbTmlrnlkJHnmoTljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geFJvdGF0aW9uICDml4vovazop5LluqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRBbmdsZSDotbflp4vop5LluqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kQW5nbGUgICDnu5PmnZ/op5LluqZcbiAgICAgKi9cbiAgICBsZW5ndGg6IGZ1bmN0aW9uIChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSkgeyB9LFxuICAgIC8qKlxuICAgICAqIOiOt+WPluaMh+WumueCueWIsOWchuW8p+eahOacgOi/kei3neemu+eahOeCuVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjeCAgICAgICAgIOWchuW/gyB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGN5ICAgICAgICAg5ZyG5b+DIHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnggICAgICAgICB4IOi9tOaWueWQkeeahOWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSAgICAgICAgIHkg6L205pa55ZCR55qE5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHhSb3RhdGlvbiAg5peL6L2s6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0QW5nbGUg6LW35aeL6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZEFuZ2xlICAg57uT5p2f6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgwICAgICAgICAg5oyH5a6a54K555qEIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTAgICAgICAgICDmjIflrprngrnnmoQgeVxuICAgICAqIEByZXR1cm4ge29iamVjdH0g5Yiw5oyH5a6a54K55pyA6L+R6Led56a755qE54K5XG4gICAgICovXG4gICAgbmVhcmVzdFBvaW50OiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIHgwLCB5MCkge1xuICAgICAgICAvLyDlsIbmnIDov5Hot53nprvpl67popjovazmjaLmiJDliLDmpK3lnIbkuK3lv4MgMCwwIOayoeacieaXi+i9rOeahOakreWchumXrumimFxuICAgICAgICB2YXIgcmVsYXRpdmVWZWN0b3IgPSByb3RhdGUoeDAgLSBjeCwgeTAgLSBjeSwgLXhSb3RhdGlvbik7XG4gICAgICAgIHZhciB4MSA9IHJlbGF0aXZlVmVjdG9yWzBdLCB5MSA9IHJlbGF0aXZlVmVjdG9yWzFdO1xuICAgICAgICAvLyDorqHnrpfngrnliLDmpK3lnIbnmoTmnIDov5HnmoTngrlcbiAgICAgICAgdmFyIHJlbGF0aXZlUG9pbnQgPSBlbGxpcHNlLm5lYXJlc3RQb2ludCgwLCAwLCByeCwgcnksIHgxLCB5MSk7XG4gICAgICAgIC8vIOiOt+WPlueCueWcqOakreWchuS4iueahOinkuW6plxuICAgICAgICB2YXIgYW5nbGUgPSBnZXRBbmdsZShyeCwgcnksIHJlbGF0aXZlUG9pbnQueCwgcmVsYXRpdmVQb2ludC55KTtcbiAgICAgICAgLy8g54K55rKh5pyJ5Zyo5ZyG5byn5LiKXG4gICAgICAgIGlmIChhbmdsZSA8IHN0YXJ0QW5nbGUpIHtcbiAgICAgICAgICAgIC8vIOWwj+S6jui1t+Wni+WchuW8p1xuICAgICAgICAgICAgcmVsYXRpdmVQb2ludCA9IGdldFBvaW50KHJ4LCByeSwgc3RhcnRBbmdsZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYW5nbGUgPiBlbmRBbmdsZSkge1xuICAgICAgICAgICAgLy8g5aSn5LqO57uT5p2f5ZyG5bynXG4gICAgICAgICAgICByZWxhdGl2ZVBvaW50ID0gZ2V0UG9pbnQocngsIHJ5LCBlbmRBbmdsZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5peL6L2s5YiwIHhSb3RhdGlvbiDnmoTop5LluqZcbiAgICAgICAgdmFyIHZlY3RvciA9IHJvdGF0ZShyZWxhdGl2ZVBvaW50LngsIHJlbGF0aXZlUG9pbnQueSwgeFJvdGF0aW9uKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHZlY3RvclswXSArIGN4LFxuICAgICAgICAgICAgeTogdmVjdG9yWzFdICsgY3ksXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBwb2ludERpc3RhbmNlOiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIHgwLCB5MCkge1xuICAgICAgICB2YXIgbmVhcmVzdFBvaW50ID0gdGhpcy5uZWFyZXN0UG9pbnQoY3gsIGN5LCByeCwgcnksIHgwLCB5MCk7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZShuZWFyZXN0UG9pbnQueCwgbmVhcmVzdFBvaW50LnksIHgwLCB5MCk7XG4gICAgfSxcbiAgICBwb2ludEF0OiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIHQpIHtcbiAgICAgICAgdmFyIGFuZ2xlID0gKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSkgKiB0ICsgc3RhcnRBbmdsZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHhBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBhbmdsZSksXG4gICAgICAgICAgICB5OiB5QXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgYW5nbGUpLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIHQpIHtcbiAgICAgICAgdmFyIGFuZ2xlID0gKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSkgKiB0ICsgc3RhcnRBbmdsZTtcbiAgICAgICAgdmFyIGR4ID0gZGVyaXZhdGl2ZVhBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgYW5nbGUpO1xuICAgICAgICB2YXIgZHkgPSBkZXJpdmF0aXZlWUF0KGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCBhbmdsZSk7XG4gICAgICAgIHJldHVybiBwaU1vZChNYXRoLmF0YW4yKGR5LCBkeCkpO1xuICAgIH0sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXJjLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/arc.js\n"); /***/ }), /***/ "./node_modules/@antv/g-math/esm/bezier.js": /*!*************************************************!*\ !*** ./node_modules/@antv/g-math/esm/bezier.js ***! \*************************************************/ /*! exports provided: nearestPoint, snapLength */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nearestPoint\", function() { return nearestPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"snapLength\", function() { return snapLength; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n\nvar EPSILON = 0.0001;\n/**\n * 使用牛顿切割法求最近的点\n * @param {number[]} xArr 点的 x 数组\n * @param {number[]} yArr 点的 y 数组\n * @param {number} x 指定的点 x\n * @param {number} y 指定的点 y\n * @param {Function} tCallback 差值函数\n */\nfunction nearestPoint(xArr, yArr, x, y, tCallback, length) {\n var t;\n var d = Infinity;\n var v0 = [x, y];\n var segNum = 20;\n if (length && length > 200) {\n segNum = length / 10;\n }\n var increaseRate = 1 / segNum;\n var interval = increaseRate / 10;\n for (var i = 0; i <= segNum; i++) {\n var _t = i * increaseRate;\n var v1 = [tCallback.apply(null, xArr.concat([_t])), tCallback.apply(null, yArr.concat([_t]))];\n var d1 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v1[0], v1[1]);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n // 提前终止\n if (t === 0) {\n return {\n x: xArr[0],\n y: yArr[0],\n };\n }\n if (t === 1) {\n var count = xArr.length;\n return {\n x: xArr[count - 1],\n y: yArr[count - 1],\n };\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n var v1 = [tCallback.apply(null, xArr.concat([prev])), tCallback.apply(null, yArr.concat([prev]))];\n var d1 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v1[0], v1[1]);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n var v2 = [tCallback.apply(null, xArr.concat([next])), tCallback.apply(null, yArr.concat([next]))];\n var d2 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v2[0], v2[1]);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n return {\n x: tCallback.apply(null, xArr.concat([t])),\n y: tCallback.apply(null, yArr.concat([t])),\n };\n}\n// 近似求解 https://community.khronos.org/t/3d-cubic-bezier-segment-length/62363/2\nfunction snapLength(xArr, yArr) {\n var totalLength = 0;\n var count = xArr.length;\n for (var i = 0; i < count; i++) {\n var x = xArr[i];\n var y = yArr[i];\n var nextX = xArr[(i + 1) % count];\n var nextY = yArr[(i + 1) % count];\n totalLength += Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}\n//# sourceMappingURL=bezier.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9iZXppZXIuanM/ZWI0MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsYUFBYTtBQUNoQztBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLG1CQUFtQixXQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNEQUFRO0FBQy9CO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vYmV6aWVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tICcuL3V0aWwnO1xudmFyIEVQU0lMT04gPSAwLjAwMDE7XG4vKipcbiAqIOS9v+eUqOeJm+mhv+WIh+WJsuazleaxguacgOi/keeahOeCuVxuICogQHBhcmFtIHtudW1iZXJbXX0geEFyciAgICAgIOeCueeahCB4IOaVsOe7hFxuICogQHBhcmFtIHtudW1iZXJbXX0geUFyciAgICAgIOeCueeahCB5IOaVsOe7hFxuICogQHBhcmFtIHtudW1iZXJ9ICAgeCAgICAgICAgIOaMh+WumueahOeCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0gICB5ICAgICAgICAg5oyH5a6a55qE54K5IHlcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRDYWxsYmFjayDlt67lgLzlh73mlbBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5lYXJlc3RQb2ludCh4QXJyLCB5QXJyLCB4LCB5LCB0Q2FsbGJhY2ssIGxlbmd0aCkge1xuICAgIHZhciB0O1xuICAgIHZhciBkID0gSW5maW5pdHk7XG4gICAgdmFyIHYwID0gW3gsIHldO1xuICAgIHZhciBzZWdOdW0gPSAyMDtcbiAgICBpZiAobGVuZ3RoICYmIGxlbmd0aCA+IDIwMCkge1xuICAgICAgICBzZWdOdW0gPSBsZW5ndGggLyAxMDtcbiAgICB9XG4gICAgdmFyIGluY3JlYXNlUmF0ZSA9IDEgLyBzZWdOdW07XG4gICAgdmFyIGludGVydmFsID0gaW5jcmVhc2VSYXRlIC8gMTA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gc2VnTnVtOyBpKyspIHtcbiAgICAgICAgdmFyIF90ID0gaSAqIGluY3JlYXNlUmF0ZTtcbiAgICAgICAgdmFyIHYxID0gW3RDYWxsYmFjay5hcHBseShudWxsLCB4QXJyLmNvbmNhdChbX3RdKSksIHRDYWxsYmFjay5hcHBseShudWxsLCB5QXJyLmNvbmNhdChbX3RdKSldO1xuICAgICAgICB2YXIgZDEgPSBkaXN0YW5jZSh2MFswXSwgdjBbMV0sIHYxWzBdLCB2MVsxXSk7XG4gICAgICAgIGlmIChkMSA8IGQpIHtcbiAgICAgICAgICAgIHQgPSBfdDtcbiAgICAgICAgICAgIGQgPSBkMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDmj5DliY3nu4jmraJcbiAgICBpZiAodCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogeEFyclswXSxcbiAgICAgICAgICAgIHk6IHlBcnJbMF0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmICh0ID09PSAxKSB7XG4gICAgICAgIHZhciBjb3VudCA9IHhBcnIubGVuZ3RoO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogeEFycltjb3VudCAtIDFdLFxuICAgICAgICAgICAgeTogeUFycltjb3VudCAtIDFdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBkID0gSW5maW5pdHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKSB7XG4gICAgICAgIGlmIChpbnRlcnZhbCA8IEVQU0lMT04pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmV2ID0gdCAtIGludGVydmFsO1xuICAgICAgICB2YXIgbmV4dCA9IHQgKyBpbnRlcnZhbDtcbiAgICAgICAgdmFyIHYxID0gW3RDYWxsYmFjay5hcHBseShudWxsLCB4QXJyLmNvbmNhdChbcHJldl0pKSwgdENhbGxiYWNrLmFwcGx5KG51bGwsIHlBcnIuY29uY2F0KFtwcmV2XSkpXTtcbiAgICAgICAgdmFyIGQxID0gZGlzdGFuY2UodjBbMF0sIHYwWzFdLCB2MVswXSwgdjFbMV0pO1xuICAgICAgICBpZiAocHJldiA+PSAwICYmIGQxIDwgZCkge1xuICAgICAgICAgICAgdCA9IHByZXY7XG4gICAgICAgICAgICBkID0gZDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgdjIgPSBbdENhbGxiYWNrLmFwcGx5KG51bGwsIHhBcnIuY29uY2F0KFtuZXh0XSkpLCB0Q2FsbGJhY2suYXBwbHkobnVsbCwgeUFyci5jb25jYXQoW25leHRdKSldO1xuICAgICAgICAgICAgdmFyIGQyID0gZGlzdGFuY2UodjBbMF0sIHYwWzFdLCB2MlswXSwgdjJbMV0pO1xuICAgICAgICAgICAgaWYgKG5leHQgPD0gMSAmJiBkMiA8IGQpIHtcbiAgICAgICAgICAgICAgICB0ID0gbmV4dDtcbiAgICAgICAgICAgICAgICBkID0gZDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbnRlcnZhbCAqPSAwLjU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogdENhbGxiYWNrLmFwcGx5KG51bGwsIHhBcnIuY29uY2F0KFt0XSkpLFxuICAgICAgICB5OiB0Q2FsbGJhY2suYXBwbHkobnVsbCwgeUFyci5jb25jYXQoW3RdKSksXG4gICAgfTtcbn1cbi8vIOi/keS8vOaxguinoyBodHRwczovL2NvbW11bml0eS5raHJvbm9zLm9yZy90LzNkLWN1YmljLWJlemllci1zZWdtZW50LWxlbmd0aC82MjM2My8yXG5leHBvcnQgZnVuY3Rpb24gc25hcExlbmd0aCh4QXJyLCB5QXJyKSB7XG4gICAgdmFyIHRvdGFsTGVuZ3RoID0gMDtcbiAgICB2YXIgY291bnQgPSB4QXJyLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgdmFyIHggPSB4QXJyW2ldO1xuICAgICAgICB2YXIgeSA9IHlBcnJbaV07XG4gICAgICAgIHZhciBuZXh0WCA9IHhBcnJbKGkgKyAxKSAlIGNvdW50XTtcbiAgICAgICAgdmFyIG5leHRZID0geUFyclsoaSArIDEpICUgY291bnRdO1xuICAgICAgICB0b3RhbExlbmd0aCArPSBkaXN0YW5jZSh4LCB5LCBuZXh0WCwgbmV4dFkpO1xuICAgIH1cbiAgICByZXR1cm4gdG90YWxMZW5ndGggLyAyO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmV6aWVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/bezier.js\n"); /***/ }), /***/ "./node_modules/@antv/g-math/esm/cubic.js": /*!************************************************!*\ !*** ./node_modules/@antv/g-math/esm/cubic.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-math/esm/line.js\");\n/* harmony import */ var _bezier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bezier */ \"./node_modules/@antv/g-math/esm/bezier.js\");\n\n\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t; // t * t * t 的性能大概是 Math.pow(t, 3) 的三倍\n return onet * onet * onet * p0 + 3 * p1 * t * onet * onet + 3 * p2 * t * t * onet + p3 * t * t * t;\n}\nfunction derivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (onet * onet * (p1 - p0) + 2 * onet * t * (p2 - p1) + t * t * (p3 - p2));\n}\nfunction extrema(p0, p1, p2, p3) {\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var c = 3 * p1 - 3 * p0;\n var extremas = [];\n var t1;\n var t2;\n var discSqrt;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(a, 0)) {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(b, 0)) {\n t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(disc, 0)) {\n extremas.push(-b / (2 * a));\n }\n else if (disc > 0) {\n discSqrt = Math.sqrt(disc);\n t1 = (-b + discSqrt) / (2 * a);\n t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n extremas.push(t2);\n }\n }\n }\n return extremas;\n}\n// 分割贝塞尔曲线\nfunction divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n // 划分点\n var xt = cubicAt(x1, x2, x3, x4, t);\n var yt = cubicAt(y1, y2, y3, y4, t);\n // 计算两点之间的差值点\n var c1 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x1, y1, x2, y2, t);\n var c2 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x2, y2, x3, y3, t);\n var c3 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x3, y3, x4, y4, t);\n var c12 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(c1.x, c1.y, c2.x, c2.y, t);\n var c23 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(c2.x, c2.y, c3.x, c3.y, t);\n return [\n [x1, y1, c1.x, c1.y, c12.x, c12.y, xt, yt],\n [xt, yt, c23.x, c23.y, c3.x, c3.y, x4, y4],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度,二阶和三阶分开写,更清晰和便于调试\nfunction cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, iterationCount) {\n if (iterationCount === 0) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"snapLength\"])([x1, x2, x3, x4], [y1, y2, y3, y4]);\n }\n var cubics = divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, 0.5);\n var left = cubics[0];\n var right = cubics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return cubicLength.apply(null, left) + cubicLength.apply(null, right);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n extrema: extrema,\n box: function (x1, y1, x2, y2, x3, y3, x4, y4) {\n var xArr = [x1, x4];\n var yArr = [y1, y4];\n var xExtrema = extrema(x1, x2, x3, x4);\n var yExtrema = extrema(y1, y2, y3, y4);\n for (var i = 0; i < xExtrema.length; i++) {\n xArr.push(cubicAt(x1, x2, x3, x4, xExtrema[i]));\n }\n for (var i = 0; i < yExtrema.length; i++) {\n yArr.push(cubicAt(y1, y2, y3, y4, yExtrema[i]));\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getBBoxByArray\"])(xArr, yArr);\n },\n length: function (x1, y1, x2, y2, x3, y3, x4, y4) {\n // 迭代三次,划分成 8 段求长度\n return cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, 3);\n },\n nearestPoint: function (x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"nearestPoint\"])([x1, x2, x3, x4], [y1, y2, y3, y4], x0, y0, cubicAt, length);\n },\n pointDistance: function (x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(point.x, point.y, x0, y0);\n },\n interpolationAt: cubicAt,\n pointAt: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return {\n x: cubicAt(x1, x2, x3, x4, t),\n y: cubicAt(y1, y2, y3, y4, t),\n };\n },\n divide: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t);\n },\n tangentAngle: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n var dx = derivativeAt(x1, x2, x3, x4, t);\n var dy = derivativeAt(y1, y2, y3, y4, t);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(Math.atan2(dy, dx));\n },\n});\n//# sourceMappingURL=cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9jdWJpYy5qcz82NWQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdFO0FBQzlDO0FBQzBCO0FBQ3BEO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFhO0FBQ3JCLGFBQWEsMkRBQWE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDZDQUFJO0FBQ2pCLGFBQWEsNkNBQUk7QUFDakIsYUFBYSw2Q0FBSTtBQUNqQixjQUFjLDZDQUFJO0FBQ2xCLGNBQWMsNkNBQUk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMERBQVU7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0EsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0EsZUFBZSw0REFBYztBQUM3QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSw0REFBWTtBQUMzQixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbURBQUs7QUFDcEIsS0FBSztBQUNMLENBQUMsRUFBQztBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vY3ViaWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaXN0YW5jZSwgaXNOdW1iZXJFcXVhbCwgZ2V0QkJveEJ5QXJyYXksIHBpTW9kIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCBsaW5lIGZyb20gJy4vbGluZSc7XG5pbXBvcnQgeyBzbmFwTGVuZ3RoLCBuZWFyZXN0UG9pbnQgfSBmcm9tICcuL2Jlemllcic7XG5mdW5jdGlvbiBjdWJpY0F0KHAwLCBwMSwgcDIsIHAzLCB0KSB7XG4gICAgdmFyIG9uZXQgPSAxIC0gdDsgLy8gdCAqIHQgKiB0IOeahOaAp+iDveWkp+amguaYryBNYXRoLnBvdyh0LCAzKSDnmoTkuInlgI1cbiAgICByZXR1cm4gb25ldCAqIG9uZXQgKiBvbmV0ICogcDAgKyAzICogcDEgKiB0ICogb25ldCAqIG9uZXQgKyAzICogcDIgKiB0ICogdCAqIG9uZXQgKyBwMyAqIHQgKiB0ICogdDtcbn1cbmZ1bmN0aW9uIGRlcml2YXRpdmVBdChwMCwgcDEsIHAyLCBwMywgdCkge1xuICAgIHZhciBvbmV0ID0gMSAtIHQ7XG4gICAgcmV0dXJuIDMgKiAob25ldCAqIG9uZXQgKiAocDEgLSBwMCkgKyAyICogb25ldCAqIHQgKiAocDIgLSBwMSkgKyB0ICogdCAqIChwMyAtIHAyKSk7XG59XG5mdW5jdGlvbiBleHRyZW1hKHAwLCBwMSwgcDIsIHAzKSB7XG4gICAgdmFyIGEgPSAtMyAqIHAwICsgOSAqIHAxIC0gOSAqIHAyICsgMyAqIHAzO1xuICAgIHZhciBiID0gNiAqIHAwIC0gMTIgKiBwMSArIDYgKiBwMjtcbiAgICB2YXIgYyA9IDMgKiBwMSAtIDMgKiBwMDtcbiAgICB2YXIgZXh0cmVtYXMgPSBbXTtcbiAgICB2YXIgdDE7XG4gICAgdmFyIHQyO1xuICAgIHZhciBkaXNjU3FydDtcbiAgICBpZiAoaXNOdW1iZXJFcXVhbChhLCAwKSkge1xuICAgICAgICBpZiAoIWlzTnVtYmVyRXF1YWwoYiwgMCkpIHtcbiAgICAgICAgICAgIHQxID0gLWMgLyBiO1xuICAgICAgICAgICAgaWYgKHQxID49IDAgJiYgdDEgPD0gMSkge1xuICAgICAgICAgICAgICAgIGV4dHJlbWFzLnB1c2godDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgZGlzYyA9IGIgKiBiIC0gNCAqIGEgKiBjO1xuICAgICAgICBpZiAoaXNOdW1iZXJFcXVhbChkaXNjLCAwKSkge1xuICAgICAgICAgICAgZXh0cmVtYXMucHVzaCgtYiAvICgyICogYSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRpc2MgPiAwKSB7XG4gICAgICAgICAgICBkaXNjU3FydCA9IE1hdGguc3FydChkaXNjKTtcbiAgICAgICAgICAgIHQxID0gKC1iICsgZGlzY1NxcnQpIC8gKDIgKiBhKTtcbiAgICAgICAgICAgIHQyID0gKC1iIC0gZGlzY1NxcnQpIC8gKDIgKiBhKTtcbiAgICAgICAgICAgIGlmICh0MSA+PSAwICYmIHQxIDw9IDEpIHtcbiAgICAgICAgICAgICAgICBleHRyZW1hcy5wdXNoKHQxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0MiA+PSAwICYmIHQyIDw9IDEpIHtcbiAgICAgICAgICAgICAgICBleHRyZW1hcy5wdXNoKHQyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXh0cmVtYXM7XG59XG4vLyDliIblibLotJ3loZ7lsJTmm7Lnur9cbmZ1bmN0aW9uIGRpdmlkZUN1YmljKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgdCkge1xuICAgIC8vIOWIkuWIhueCuVxuICAgIHZhciB4dCA9IGN1YmljQXQoeDEsIHgyLCB4MywgeDQsIHQpO1xuICAgIHZhciB5dCA9IGN1YmljQXQoeTEsIHkyLCB5MywgeTQsIHQpO1xuICAgIC8vIOiuoeeul+S4pOeCueS5i+mXtOeahOW3ruWAvOeCuVxuICAgIHZhciBjMSA9IGxpbmUucG9pbnRBdCh4MSwgeTEsIHgyLCB5MiwgdCk7XG4gICAgdmFyIGMyID0gbGluZS5wb2ludEF0KHgyLCB5MiwgeDMsIHkzLCB0KTtcbiAgICB2YXIgYzMgPSBsaW5lLnBvaW50QXQoeDMsIHkzLCB4NCwgeTQsIHQpO1xuICAgIHZhciBjMTIgPSBsaW5lLnBvaW50QXQoYzEueCwgYzEueSwgYzIueCwgYzIueSwgdCk7XG4gICAgdmFyIGMyMyA9IGxpbmUucG9pbnRBdChjMi54LCBjMi55LCBjMy54LCBjMy55LCB0KTtcbiAgICByZXR1cm4gW1xuICAgICAgICBbeDEsIHkxLCBjMS54LCBjMS55LCBjMTIueCwgYzEyLnksIHh0LCB5dF0sXG4gICAgICAgIFt4dCwgeXQsIGMyMy54LCBjMjMueSwgYzMueCwgYzMueSwgeDQsIHk0XSxcbiAgICBdO1xufVxuLy8g5L2/55So6L+t5Luj5rOV5Y+W6LSd5aGe5bCU5puy57q/55qE6ZW/5bqm77yM5LqM6Zi25ZKM5LiJ6Zi25YiG5byA5YaZ77yM5pu05riF5pmw5ZKM5L6/5LqO6LCD6K+VXG5mdW5jdGlvbiBjdWJpY0xlbmd0aCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIGl0ZXJhdGlvbkNvdW50KSB7XG4gICAgaWYgKGl0ZXJhdGlvbkNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBzbmFwTGVuZ3RoKFt4MSwgeDIsIHgzLCB4NF0sIFt5MSwgeTIsIHkzLCB5NF0pO1xuICAgIH1cbiAgICB2YXIgY3ViaWNzID0gZGl2aWRlQ3ViaWMoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCAwLjUpO1xuICAgIHZhciBsZWZ0ID0gY3ViaWNzWzBdO1xuICAgIHZhciByaWdodCA9IGN1Ymljc1sxXTtcbiAgICBsZWZ0LnB1c2goaXRlcmF0aW9uQ291bnQgLSAxKTtcbiAgICByaWdodC5wdXNoKGl0ZXJhdGlvbkNvdW50IC0gMSk7XG4gICAgcmV0dXJuIGN1YmljTGVuZ3RoLmFwcGx5KG51bGwsIGxlZnQpICsgY3ViaWNMZW5ndGguYXBwbHkobnVsbCwgcmlnaHQpO1xufVxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGV4dHJlbWE6IGV4dHJlbWEsXG4gICAgYm94OiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0KSB7XG4gICAgICAgIHZhciB4QXJyID0gW3gxLCB4NF07XG4gICAgICAgIHZhciB5QXJyID0gW3kxLCB5NF07XG4gICAgICAgIHZhciB4RXh0cmVtYSA9IGV4dHJlbWEoeDEsIHgyLCB4MywgeDQpO1xuICAgICAgICB2YXIgeUV4dHJlbWEgPSBleHRyZW1hKHkxLCB5MiwgeTMsIHk0KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4RXh0cmVtYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgeEFyci5wdXNoKGN1YmljQXQoeDEsIHgyLCB4MywgeDQsIHhFeHRyZW1hW2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB5RXh0cmVtYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgeUFyci5wdXNoKGN1YmljQXQoeTEsIHkyLCB5MywgeTQsIHlFeHRyZW1hW2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldEJCb3hCeUFycmF5KHhBcnIsIHlBcnIpO1xuICAgIH0sXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0KSB7XG4gICAgICAgIC8vIOi/reS7o+S4ieasoe+8jOWIkuWIhuaIkCA4IOauteaxgumVv+W6plxuICAgICAgICByZXR1cm4gY3ViaWNMZW5ndGgoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCAzKTtcbiAgICB9LFxuICAgIG5lYXJlc3RQb2ludDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgeDAsIHkwLCBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG5lYXJlc3RQb2ludChbeDEsIHgyLCB4MywgeDRdLCBbeTEsIHkyLCB5MywgeTRdLCB4MCwgeTAsIGN1YmljQXQsIGxlbmd0aCk7XG4gICAgfSxcbiAgICBwb2ludERpc3RhbmNlOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCB4MCwgeTAsIGxlbmd0aCkge1xuICAgICAgICB2YXIgcG9pbnQgPSB0aGlzLm5lYXJlc3RQb2ludCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHgwLCB5MCwgbGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlKHBvaW50LngsIHBvaW50LnksIHgwLCB5MCk7XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uQXQ6IGN1YmljQXQsXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgdCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogY3ViaWNBdCh4MSwgeDIsIHgzLCB4NCwgdCksXG4gICAgICAgICAgICB5OiBjdWJpY0F0KHkxLCB5MiwgeTMsIHk0LCB0KSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGRpdmlkZTogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgdCkge1xuICAgICAgICByZXR1cm4gZGl2aWRlQ3ViaWMoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCB0KTtcbiAgICB9LFxuICAgIHRhbmdlbnRBbmdsZTogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgdCkge1xuICAgICAgICB2YXIgZHggPSBkZXJpdmF0aXZlQXQoeDEsIHgyLCB4MywgeDQsIHQpO1xuICAgICAgICB2YXIgZHkgPSBkZXJpdmF0aXZlQXQoeTEsIHkyLCB5MywgeTQsIHQpO1xuICAgICAgICByZXR1cm4gcGlNb2QoTWF0aC5hdGFuMihkeSwgZHgpKTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWN1YmljLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/cubic.js\n"); /***/ }), /***/ "./node_modules/@antv/g-math/esm/ellipse.js": /*!**************************************************!*\ !*** ./node_modules/@antv/g-math/esm/ellipse.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/**\n * @fileoverview 椭圆的一些计算,\n * - 周长计算参考:https://www.mathsisfun.com/geometry/ellipse-perimeter.html\n * - 距离计算参考:https://wet-robots.ghost.io/simple-method-for-distance-to-ellipse/\n * @author dxq613@gmail.com\n */\n\nfunction copysign(v1, v2) {\n var absv = Math.abs(v1);\n return v2 > 0 ? absv : absv * -1;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 包围盒计算\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {object} 包围盒\n */\n box: function (x, y, rx, ry) {\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n },\n /**\n * 计算周长,使用近似法\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {number} 椭圆周长\n */\n length: function (x, y, rx, ry) {\n return Math.PI * (3 * (rx + ry) - Math.sqrt((3 * rx + ry) * (rx + 3 * ry)));\n },\n /**\n * 距离椭圆最近的点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {object} 椭圆上距离指定点最近的点\n */\n nearestPoint: function (x, y, rx, ry, x0, y0) {\n var a = rx;\n var b = ry;\n // 假如椭圆半径为0则返回圆心\n if (a === 0 || b === 0) {\n return {\n x: x,\n y: y,\n };\n }\n // 转换成 0, 0 为中心的椭圆计算\n var relativeX = x0 - x;\n var relativeY = y0 - y;\n var px = Math.abs(relativeX);\n var py = Math.abs(relativeY);\n var squareA = a * a;\n var squareB = b * b;\n // const angle0 = Math.atan2(relativeY, relativeX);\n var t = Math.PI / 4;\n var nearestX; // 椭圆上的任一点\n var nearestY;\n // 迭代 4 次\n for (var i = 0; i < 4; i++) {\n nearestX = a * Math.cos(t);\n nearestY = b * Math.sin(t);\n var ex = ((squareA - squareB) * Math.pow(Math.cos(t), 3)) / a;\n var ey = ((squareB - squareA) * Math.pow(Math.sin(t), 3)) / b;\n var rx1 = nearestX - ex;\n var ry1 = nearestY - ey;\n var qx = px - ex;\n var qy = py - ey;\n var r = Math.hypot(ry1, rx1);\n var q = Math.hypot(qy, qx);\n var delta_c = r * Math.asin((rx1 * qy - ry1 * qx) / (r * q));\n var delta_t = delta_c / Math.sqrt(squareA + squareB - nearestX * nearestX - nearestY * nearestY);\n t += delta_t;\n t = Math.min(Math.PI / 2, Math.max(0, t));\n }\n return {\n x: x + copysign(nearestX, relativeX),\n y: y + copysign(nearestY, relativeY),\n };\n },\n /**\n * 点到椭圆最近的距离\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {number} 点到椭圆的距离\n */\n pointDistance: function (x, y, rx, ry, x0, y0) {\n var nearestPoint = this.nearestPoint(x, y, rx, ry, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n /**\n * 根据比例获取点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例,x轴方向为 0\n * @return {object} 点\n */\n pointAt: function (x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n return {\n x: x + rx * Math.cos(angle),\n y: y + ry * Math.sin(angle),\n };\n },\n /**\n * 根据比例计算切线角度\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例 0 - 1 之间,x轴方向为 0。在 0-1 范围之外是循环还是返回 null,还需要调整\n * @return {number} 角度,在 0 - 2PI 之间\n */\n tangentAngle: function (x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n // 直接使用 x,y 的导数计算, x' = -rx * sin(t); y' = ry * cos(t);\n var tangentAngle = Math.atan2(ry * Math.cos(angle), -rx * Math.sin(angle));\n // 也可以使用指定点的切线方程计算,成本有些高\n // const point = this.pointAt(0, 0, rx, ry, t); // 椭圆的切线同椭圆的中心不相关\n // let tangentAngle = -1 * Math.atan((ry * ry * point.x) / (rx * rx * point.y));\n // if (angle >= 0 && angle <= Math.PI) {\n // tangentAngle += Math.PI;\n // }\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(tangentAngle);\n },\n});\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9lbGxpcHNlLmpzP2YzNzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDLDZDQUE2QztBQUM3QztBQUNBO0FBQ0EsdURBQXVEO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtREFBSztBQUNwQixLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9lbGxpcHNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOakreWchueahOS4gOS6m+iuoeeul++8jFxuICogIC0g5ZGo6ZW/6K6h566X5Y+C6ICD77yaaHR0cHM6Ly93d3cubWF0aHNpc2Z1bi5jb20vZ2VvbWV0cnkvZWxsaXBzZS1wZXJpbWV0ZXIuaHRtbFxuICogIC0g6Led56a76K6h566X5Y+C6ICD77yaaHR0cHM6Ly93ZXQtcm9ib3RzLmdob3N0LmlvL3NpbXBsZS1tZXRob2QtZm9yLWRpc3RhbmNlLXRvLWVsbGlwc2UvXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgZGlzdGFuY2UsIHBpTW9kIH0gZnJvbSAnLi91dGlsJztcbmZ1bmN0aW9uIGNvcHlzaWduKHYxLCB2Mikge1xuICAgIHZhciBhYnN2ID0gTWF0aC5hYnModjEpO1xuICAgIHJldHVybiB2MiA+IDAgPyBhYnN2IDogYWJzdiAqIC0xO1xufVxuZXhwb3J0IGRlZmF1bHQge1xuICAgIC8qKlxuICAgICAqIOWMheWbtOebkuiuoeeul1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4ICDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5ICDmpK3lnIbkuK3lv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCDmpK3lnIYgeCDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkg5qSt5ZyGIHkg5pa55ZCR5Y2K5b6EXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDljIXlm7Tnm5JcbiAgICAgKi9cbiAgICBib3g6IGZ1bmN0aW9uICh4LCB5LCByeCwgcnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggLSByeCxcbiAgICAgICAgICAgIHk6IHkgLSByeSxcbiAgICAgICAgICAgIHdpZHRoOiByeCAqIDIsXG4gICAgICAgICAgICBoZWlnaHQ6IHJ5ICogMixcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiuoeeul+WRqOmVv++8jOS9v+eUqOi/keS8vOazlVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4ICDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5ICDmpK3lnIbkuK3lv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCDmpK3lnIYgeCDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkg5qSt5ZyGIHkg5pa55ZCR5Y2K5b6EXG4gICAgICogQHJldHVybiB7bnVtYmVyfSDmpK3lnIblkajplb9cbiAgICAgKi9cbiAgICBsZW5ndGg6IGZ1bmN0aW9uICh4LCB5LCByeCwgcnkpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguUEkgKiAoMyAqIChyeCArIHJ5KSAtIE1hdGguc3FydCgoMyAqIHJ4ICsgcnkpICogKHJ4ICsgMyAqIHJ5KSkpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog6Led56a75qSt5ZyG5pyA6L+R55qE54K5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggIOakreWchuS4reW/gyB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkgIOakreWchuS4reW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4IOakreWchiB4IOaWueWQkeWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSDmpK3lnIYgeSDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDAgIOaMh+WumueahOeCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkwICDmjIflrprnmoTngrkgeVxuICAgICAqIEByZXR1cm4ge29iamVjdH0g5qSt5ZyG5LiK6Led56a75oyH5a6a54K55pyA6L+R55qE54K5XG4gICAgICovXG4gICAgbmVhcmVzdFBvaW50OiBmdW5jdGlvbiAoeCwgeSwgcngsIHJ5LCB4MCwgeTApIHtcbiAgICAgICAgdmFyIGEgPSByeDtcbiAgICAgICAgdmFyIGIgPSByeTtcbiAgICAgICAgLy8g5YGH5aaC5qSt5ZyG5Y2K5b6E5Li6MOWImei/lOWbnuWchuW/g1xuICAgICAgICBpZiAoYSA9PT0gMCB8fCBiID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgICAgICAgeTogeSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8g6L2s5o2i5oiQIDDvvIwgMCDkuLrkuK3lv4PnmoTmpK3lnIborqHnrpdcbiAgICAgICAgdmFyIHJlbGF0aXZlWCA9IHgwIC0geDtcbiAgICAgICAgdmFyIHJlbGF0aXZlWSA9IHkwIC0geTtcbiAgICAgICAgdmFyIHB4ID0gTWF0aC5hYnMocmVsYXRpdmVYKTtcbiAgICAgICAgdmFyIHB5ID0gTWF0aC5hYnMocmVsYXRpdmVZKTtcbiAgICAgICAgdmFyIHNxdWFyZUEgPSBhICogYTtcbiAgICAgICAgdmFyIHNxdWFyZUIgPSBiICogYjtcbiAgICAgICAgLy8gY29uc3QgYW5nbGUwID0gTWF0aC5hdGFuMihyZWxhdGl2ZVksIHJlbGF0aXZlWCk7XG4gICAgICAgIHZhciB0ID0gTWF0aC5QSSAvIDQ7XG4gICAgICAgIHZhciBuZWFyZXN0WDsgLy8g5qSt5ZyG5LiK55qE5Lu75LiA54K5XG4gICAgICAgIHZhciBuZWFyZXN0WTtcbiAgICAgICAgLy8g6L+t5LujIDQg5qyhXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICBuZWFyZXN0WCA9IGEgKiBNYXRoLmNvcyh0KTtcbiAgICAgICAgICAgIG5lYXJlc3RZID0gYiAqIE1hdGguc2luKHQpO1xuICAgICAgICAgICAgdmFyIGV4ID0gKChzcXVhcmVBIC0gc3F1YXJlQikgKiBNYXRoLnBvdyhNYXRoLmNvcyh0KSwgMykpIC8gYTtcbiAgICAgICAgICAgIHZhciBleSA9ICgoc3F1YXJlQiAtIHNxdWFyZUEpICogTWF0aC5wb3coTWF0aC5zaW4odCksIDMpKSAvIGI7XG4gICAgICAgICAgICB2YXIgcngxID0gbmVhcmVzdFggLSBleDtcbiAgICAgICAgICAgIHZhciByeTEgPSBuZWFyZXN0WSAtIGV5O1xuICAgICAgICAgICAgdmFyIHF4ID0gcHggLSBleDtcbiAgICAgICAgICAgIHZhciBxeSA9IHB5IC0gZXk7XG4gICAgICAgICAgICB2YXIgciA9IE1hdGguaHlwb3QocnkxLCByeDEpO1xuICAgICAgICAgICAgdmFyIHEgPSBNYXRoLmh5cG90KHF5LCBxeCk7XG4gICAgICAgICAgICB2YXIgZGVsdGFfYyA9IHIgKiBNYXRoLmFzaW4oKHJ4MSAqIHF5IC0gcnkxICogcXgpIC8gKHIgKiBxKSk7XG4gICAgICAgICAgICB2YXIgZGVsdGFfdCA9IGRlbHRhX2MgLyBNYXRoLnNxcnQoc3F1YXJlQSArIHNxdWFyZUIgLSBuZWFyZXN0WCAqIG5lYXJlc3RYIC0gbmVhcmVzdFkgKiBuZWFyZXN0WSk7XG4gICAgICAgICAgICB0ICs9IGRlbHRhX3Q7XG4gICAgICAgICAgICB0ID0gTWF0aC5taW4oTWF0aC5QSSAvIDIsIE1hdGgubWF4KDAsIHQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogeCArIGNvcHlzaWduKG5lYXJlc3RYLCByZWxhdGl2ZVgpLFxuICAgICAgICAgICAgeTogeSArIGNvcHlzaWduKG5lYXJlc3RZLCByZWxhdGl2ZVkpLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog54K55Yiw5qSt5ZyG5pyA6L+R55qE6Led56a7XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggIOakreWchuS4reW/gyB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkgIOakreWchuS4reW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4IOakreWchiB4IOaWueWQkeWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSDmpK3lnIYgeSDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDAgIOaMh+WumueahOeCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkwICDmjIflrprnmoTngrkgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g54K55Yiw5qSt5ZyG55qE6Led56a7XG4gICAgICovXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKHgsIHksIHJ4LCByeSwgeDAsIHkwKSB7XG4gICAgICAgIHZhciBuZWFyZXN0UG9pbnQgPSB0aGlzLm5lYXJlc3RQb2ludCh4LCB5LCByeCwgcnksIHgwLCB5MCk7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZShuZWFyZXN0UG9pbnQueCwgbmVhcmVzdFBvaW50LnksIHgwLCB5MCk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5bngrlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IOakreWchuS4reW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4IOakreWchiB4IOaWueWQkeWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSDmpK3lnIYgeSDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdCDmjIflrprmr5TkvovvvIx46L205pa55ZCR5Li6IDBcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOeCuVxuICAgICAqL1xuICAgIHBvaW50QXQ6IGZ1bmN0aW9uICh4LCB5LCByeCwgcnksIHQpIHtcbiAgICAgICAgdmFyIGFuZ2xlID0gMiAqIE1hdGguUEkgKiB0OyAvLyDmjInnhafop5Lluqbov5vooYzorqHnrpfvvIzogIzkuI3mjInnhaflkajplb/orqHnrpdcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggKyByeCAqIE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgICAgIHk6IHkgKyByeSAqIE1hdGguc2luKGFuZ2xlKSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagueaNruavlOS+i+iuoeeul+WIh+e6v+inkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IOakreWchuS4reW/gyB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkg5qSt5ZyG5Lit5b+DIHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcngg5qSt5ZyGIHgg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ5IOakreWchiB5IOaWueWQkeWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOaMh+WumuavlOS+iyAwIC0gMSDkuYvpl7TvvIx46L205pa55ZCR5Li6IDDjgILlnKggMC0xIOiMg+WbtOS5i+WkluaYr+W+queOr+i/mOaYr+i/lOWbniBudWxs77yM6L+Y6ZyA6KaB6LCD5pW0XG4gICAgICogQHJldHVybiB7bnVtYmVyfSDop5LluqbvvIzlnKggMCAtIDJQSSDkuYvpl7RcbiAgICAgKi9cbiAgICB0YW5nZW50QW5nbGU6IGZ1bmN0aW9uICh4LCB5LCByeCwgcnksIHQpIHtcbiAgICAgICAgdmFyIGFuZ2xlID0gMiAqIE1hdGguUEkgKiB0OyAvLyDmjInnhafop5Lluqbov5vooYzorqHnrpfvvIzogIzkuI3mjInnhaflkajplb/orqHnrpdcbiAgICAgICAgLy8g55u05o6l5L2/55SoIHgseSDnmoTlr7zmlbDorqHnrpfvvIwgeCcgPSAtcnggKiBzaW4odCk7IHknID0gcnkgKiBjb3ModCk7XG4gICAgICAgIHZhciB0YW5nZW50QW5nbGUgPSBNYXRoLmF0YW4yKHJ5ICogTWF0aC5jb3MoYW5nbGUpLCAtcnggKiBNYXRoLnNpbihhbmdsZSkpO1xuICAgICAgICAvLyDkuZ/lj6/ku6Xkvb/nlKjmjIflrprngrnnmoTliIfnur/mlrnnqIvorqHnrpfvvIzmiJDmnKzmnInkupvpq5hcbiAgICAgICAgLy8gY29uc3QgcG9pbnQgPSB0aGlzLnBvaW50QXQoMCwgMCwgcngsIHJ5LCB0KTsgLy8g5qSt5ZyG55qE5YiH57q/5ZCM5qSt5ZyG55qE5Lit5b+D5LiN55u45YWzXG4gICAgICAgIC8vIGxldCB0YW5nZW50QW5nbGUgPSAtMSAqIE1hdGguYXRhbigocnkgKiByeSAqIHBvaW50LngpIC8gKHJ4ICogcnggKiBwb2ludC55KSk7XG4gICAgICAgIC8vIGlmIChhbmdsZSA+PSAwICYmIGFuZ2xlIDw9IE1hdGguUEkpIHtcbiAgICAgICAgLy8gICB0YW5nZW50QW5nbGUgKz0gTWF0aC5QSTtcbiAgICAgICAgLy8gfVxuICAgICAgICByZXR1cm4gcGlNb2QodGFuZ2VudEFuZ2xlKTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVsbGlwc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/ellipse.js\n"); /***/ }), /***/ "./node_modules/@antv/g-math/esm/index.js": /*!************************************************!*\ !*** ./node_modules/@antv/g-math/esm/index.js ***! \************************************************/ /*! exports provided: Quad, Cubic, Arc, Line, Polygon, Polyline, Util */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quadratic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quadratic */ \"./node_modules/@antv/g-math/esm/quadratic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Quad\", function() { return _quadratic__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _cubic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cubic */ \"./node_modules/@antv/g-math/esm/cubic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Cubic\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _arc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./arc */ \"./node_modules/@antv/g-math/esm/arc.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arc\", function() { return _arc__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-math/esm/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./polygon */ \"./node_modules/@antv/g-math/esm/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g-math/esm/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _util__WEBPACK_IMPORTED_MODULE_6__; });\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9pbmRleC5qcz8xMTgzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErQjtBQUNIO0FBQ0o7QUFDRTtBQUNNO0FBQ0U7QUFDSDtBQUM0QjtBQUMzRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLW1hdGgvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFF1YWQgZnJvbSAnLi9xdWFkcmF0aWMnO1xuaW1wb3J0IEN1YmljIGZyb20gJy4vY3ViaWMnO1xuaW1wb3J0IEFyYyBmcm9tICcuL2FyYyc7XG5pbXBvcnQgTGluZSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IFBvbHlnb24gZnJvbSAnLi9wb2x5Z29uJztcbmltcG9ydCBQb2x5bGluZSBmcm9tICcuL3BvbHlsaW5lJztcbmltcG9ydCAqIGFzIFV0aWwgZnJvbSAnLi91dGlsJztcbmV4cG9ydCB7IFF1YWQsIEN1YmljLCBBcmMsIExpbmUsIFBvbHlnb24sIFBvbHlsaW5lLCBVdGlsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-math/esm/line.js": /*!***********************************************!*\ !*** ./node_modules/@antv/g-math/esm/line.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算线段的包围盒\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {object} 包围盒对象\n */\n box: function (x1, y1, x2, y2) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getBBoxByArray\"])([x1, x2], [y1, y2]);\n },\n /**\n * 线段的长度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\n length: function (x1, y1, x2, y2) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x1, y1, x2, y2);\n },\n /**\n * 根据比例获取点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\n pointAt: function (x1, y1, x2, y2, t) {\n return {\n x: (1 - t) * x1 + t * x2,\n y: (1 - t) * y1 + t * y2,\n };\n },\n /**\n * 点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointDistance: function (x1, y1, x2, y2, x, y) {\n // 投影距离 x1, y1 的向量,假设 p, p1, p2 三个点,投影点为 a\n // p1a = p1p.p1p2/|p1p2| * (p1p 的单位向量)\n var cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);\n if (cross < 0) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x1, y1, x, y);\n }\n var lengthSquare = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n if (cross > lengthSquare) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x2, y2, x, y);\n }\n return this.pointToLine(x1, y1, x2, y2, x, y);\n },\n /**\n * 点到直线的距离,而不是点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointToLine: function (x1, y1, x2, y2, x, y) {\n var d = [x2 - x1, y2 - y1];\n // 如果端点相等,则判定点到点的距离\n if (gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"exactEquals\"](d, [0, 0])) {\n return Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n }\n var u = [-d[1], d[0]];\n gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"](u, u);\n var a = [x - x1, y - y1];\n return Math.abs(gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"dot\"](a, u));\n },\n /**\n * 线段的角度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 导数\n */\n tangentAngle: function (x1, y1, x2, y2) {\n return Math.atan2(y2 - y1, x2 - x1);\n },\n});\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9saW5lLmpzP2Y3NWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ1g7QUFDeEI7QUFDZjtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLDREQUFjO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixzREFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQVE7QUFDM0I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBEQUFnQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxRQUFRLHdEQUFjO0FBQ3RCO0FBQ0Esd0JBQXdCLGtEQUFRO0FBQ2hDLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLW1hdGgvZXNtL2xpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaXN0YW5jZSwgZ2V0QkJveEJ5QXJyYXkgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0ICogYXMgdmVjMiBmcm9tICdnbC1tYXRyaXgvdmVjMic7XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgLyoqXG4gICAgICog6K6h566X57q/5q6155qE5YyF5Zu055uSXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkyIOe7k+adn+eCuSB5XG4gICAgICogQHJldHVybiB7b2JqZWN0fSDljIXlm7Tnm5Llr7nosaFcbiAgICAgKi9cbiAgICBib3g6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5Mikge1xuICAgICAgICByZXR1cm4gZ2V0QkJveEJ5QXJyYXkoW3gxLCB4Ml0sIFt5MSwgeTJdKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOe6v+auteeahOmVv+W6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g6Led56a7XG4gICAgICovXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlKHgxLCB5MSwgeDIsIHkyKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagueaNruavlOS+i+iOt+WPlueCuVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOaMh+WumuavlOS+i1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5ZCrIHgsIHkg55qE54K5XG4gICAgICovXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiAoMSAtIHQpICogeDEgKyB0ICogeDIsXG4gICAgICAgICAgICB5OiAoMSAtIHQpICogeTEgKyB0ICogeTIsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDngrnliLDnur/mrrXnmoTot53nprtcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDIg57uT5p2f54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTIg57uT5p2f54K5IHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCAg5rWL6K+V54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSAg5rWL6K+V54K5IHlcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IOi3neemu1xuICAgICAqL1xuICAgIHBvaW50RGlzdGFuY2U6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeCwgeSkge1xuICAgICAgICAvLyDmipXlvbHot53nprsgeDEsIHkxIOeahOWQkemHj++8jOWBh+iuviBwLCBwMSwgcDIg5LiJ5Liq54K577yM5oqV5b2x54K55Li6IGFcbiAgICAgICAgLy8gcDFhID0gcDFwLnAxcDIvfHAxcDJ8ICogKHAxcCDnmoTljZXkvY3lkJHph48pXG4gICAgICAgIHZhciBjcm9zcyA9ICh4MiAtIHgxKSAqICh4IC0geDEpICsgKHkyIC0geTEpICogKHkgLSB5MSk7XG4gICAgICAgIGlmIChjcm9zcyA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0YW5jZSh4MSwgeTEsIHgsIHkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW5ndGhTcXVhcmUgPSAoeDIgLSB4MSkgKiAoeDIgLSB4MSkgKyAoeTIgLSB5MSkgKiAoeTIgLSB5MSk7XG4gICAgICAgIGlmIChjcm9zcyA+IGxlbmd0aFNxdWFyZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRpc3RhbmNlKHgyLCB5MiwgeCwgeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRUb0xpbmUoeDEsIHkxLCB4MiwgeTIsIHgsIHkpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog54K55Yiw55u057q/55qE6Led56a777yM6ICM5LiN5piv54K55Yiw57q/5q6155qE6Led56a7XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkyIOe7k+adn+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggIOa1i+ivleeCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkgIOa1i+ivleeCuSB5XG4gICAgICogQHJldHVybiB7bnVtYmVyfSDot53nprtcbiAgICAgKi9cbiAgICBwb2ludFRvTGluZTogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4LCB5KSB7XG4gICAgICAgIHZhciBkID0gW3gyIC0geDEsIHkyIC0geTFdO1xuICAgICAgICAvLyDlpoLmnpznq6/ngrnnm7jnrYnvvIzliJnliKTlrprngrnliLDngrnnmoTot53nprtcbiAgICAgICAgaWYgKHZlYzIuZXhhY3RFcXVhbHMoZCwgWzAsIDBdKSkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydCgoeCAtIHgxKSAqICh4IC0geDEpICsgKHkgLSB5MSkgKiAoeSAtIHkxKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHUgPSBbLWRbMV0sIGRbMF1dO1xuICAgICAgICB2ZWMyLm5vcm1hbGl6ZSh1LCB1KTtcbiAgICAgICAgdmFyIGEgPSBbeCAtIHgxLCB5IC0geTFdO1xuICAgICAgICByZXR1cm4gTWF0aC5hYnModmVjMi5kb3QoYSwgdSkpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog57q/5q6155qE6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkyIOe7k+adn+eCuSB5XG4gICAgICogQHJldHVybiB7bnVtYmVyfSDlr7zmlbBcbiAgICAgKi9cbiAgICB0YW5nZW50QW5nbGU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5Mikge1xuICAgICAgICByZXR1cm4gTWF0aC5hdGFuMih5MiAtIHkxLCB4MiAtIHgxKTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/line.js\n"); /***/ }), /***/ "./node_modules/@antv/g-math/esm/polygon.js": /*!**************************************************!*\ !*** ./node_modules/@antv/g-math/esm/polygon.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _segments__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./segments */ \"./node_modules/@antv/g-math/esm/segments.js\");\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g-math/esm/polyline.js\");\n\n\nfunction getAllPoints(points) {\n var tmp = points.slice(0);\n if (points.length) {\n tmp.push(points[0]);\n }\n return tmp;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算多边形的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function (points) {\n return _polyline__WEBPACK_IMPORTED_MODULE_1__[\"default\"].box(points);\n },\n /**\n * 计算多边形的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多边形边的长度\n */\n length: function (points) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"lengthOfSegment\"])(getAllPoints(points));\n },\n /**\n * 根据比例获取多边形的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多边形的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"pointAtSegments\"])(getAllPoints(points), t);\n },\n /**\n * 指定点到多边形的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多边形的距离\n */\n pointDistance: function (points, x, y) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"distanceAtSegment\"])(getAllPoints(points), x, y);\n },\n /**\n * 根据比例获取多边形的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多边形的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"angleAtSegments\"])(getAllPoints(points), t);\n },\n});\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9wb2x5Z29uLmpzPzE5NTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtHO0FBQ2hFO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLGlEQUFRO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLGlFQUFlO0FBQzlCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0EsZUFBZSxpRUFBZTtBQUM5QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLG1FQUFpQjtBQUNoQyxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsaUVBQWU7QUFDOUIsS0FBSztBQUNMLENBQUMsRUFBQztBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vcG9seWdvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvaW50QXRTZWdtZW50cywgYW5nbGVBdFNlZ21lbnRzLCBkaXN0YW5jZUF0U2VnbWVudCwgbGVuZ3RoT2ZTZWdtZW50IH0gZnJvbSAnLi9zZWdtZW50cyc7XG5pbXBvcnQgcG9seWxpbmUgZnJvbSAnLi9wb2x5bGluZSc7XG5mdW5jdGlvbiBnZXRBbGxQb2ludHMocG9pbnRzKSB7XG4gICAgdmFyIHRtcCA9IHBvaW50cy5zbGljZSgwKTtcbiAgICBpZiAocG9pbnRzLmxlbmd0aCkge1xuICAgICAgICB0bXAucHVzaChwb2ludHNbMF0pO1xuICAgIH1cbiAgICByZXR1cm4gdG1wO1xufVxuZXhwb3J0IGRlZmF1bHQge1xuICAgIC8qKlxuICAgICAqIOiuoeeul+Wkmui+ueW9oueahOWMheWbtOebklxuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDljIXlm7Tnm5JcbiAgICAgKi9cbiAgICBib3g6IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAgICAgcmV0dXJuIHBvbHlsaW5lLmJveChwb2ludHMpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog6K6h566X5aSa6L655b2i55qE6ZW/5bqmXG4gICAgICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiCBbeCx5XSDnmoTlvaLlvI9cbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWkmui+ueW9oui+ueeahOmVv+W6plxuICAgICAqL1xuICAgIGxlbmd0aDogZnVuY3Rpb24gKHBvaW50cykge1xuICAgICAgICByZXR1cm4gbGVuZ3RoT2ZTZWdtZW50KGdldEFsbFBvaW50cyhwb2ludHMpKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagueaNruavlOS+i+iOt+WPluWkmui+ueW9oueahOeCuVxuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHQg5Zyo5aSa6L655b2i55qE6ZW/5bqm5LiK55qE5q+U5L6LXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDmoLnmja7mr5TkvovlgLzorqHnrpflh7rmnaXnmoTngrlcbiAgICAgKi9cbiAgICBwb2ludEF0OiBmdW5jdGlvbiAocG9pbnRzLCB0KSB7XG4gICAgICAgIHJldHVybiBwb2ludEF0U2VnbWVudHMoZ2V0QWxsUG9pbnRzKHBvaW50cyksIHQpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog5oyH5a6a54K55Yiw5aSa6L655b2i55qE6Led56a7XG4gICAgICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiCBbeCx5XSDnmoTlvaLlvI9cbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCDmjIflrprngrnnmoQgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IOaMh+WumueCueeahCB5XG4gICAgICogQHJldHVybiB7bnVtYmVyfSDngrnliLDlpJrovrnlvaLnmoTot53nprtcbiAgICAgKi9cbiAgICBwb2ludERpc3RhbmNlOiBmdW5jdGlvbiAocG9pbnRzLCB4LCB5KSB7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZUF0U2VnbWVudChnZXRBbGxQb2ludHMocG9pbnRzKSwgeCwgeSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5blpJrovrnlvaLnmoTliIfnur/op5LluqZcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOWcqOWkmui+ueW9oueahOmVv+W6puS4iueahOavlOS+i1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5qC55o2u5q+U5L6L5YC86K6h566X5Ye65p2l55qE6KeS5bqmXG4gICAgICovXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAocG9pbnRzLCB0KSB7XG4gICAgICAgIHJldHVybiBhbmdsZUF0U2VnbWVudHMoZ2V0QWxsUG9pbnRzKHBvaW50cyksIHQpO1xuICAgIH0sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWdvbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/polygon.js\n"); /***/ }), /***/ "./node_modules/@antv/g-math/esm/polyline.js": /*!***************************************************!*\ !*** ./node_modules/@antv/g-math/esm/polyline.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _segments__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./segments */ \"./node_modules/@antv/g-math/esm/segments.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算多折线的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function (points) {\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxByArray\"])(xArr, yArr);\n },\n /**\n * 计算多折线的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多条边的长度\n */\n length: function (points) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"lengthOfSegment\"])(points);\n },\n /**\n * 根据比例获取多折线的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"pointAtSegments\"])(points, t);\n },\n /**\n * 指定点到多折线的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多折线的距离\n */\n pointDistance: function (points, x, y) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"distanceAtSegment\"])(points, x, y);\n },\n /**\n * 根据比例获取多折线的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"angleAtSegments\"])(points, t);\n },\n});\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9wb2x5bGluZS5qcz80MzIwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFrRztBQUMxRDtBQUN6QjtBQUNmO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUJBQW1CO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSw0REFBYztBQUM3QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0EsZUFBZSxpRUFBZTtBQUM5QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsaUVBQWU7QUFDOUIsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0EsZUFBZSxtRUFBaUI7QUFDaEMsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLGlFQUFlO0FBQzlCLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLW1hdGgvZXNtL3BvbHlsaW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9pbnRBdFNlZ21lbnRzLCBhbmdsZUF0U2VnbWVudHMsIGRpc3RhbmNlQXRTZWdtZW50LCBsZW5ndGhPZlNlZ21lbnQgfSBmcm9tICcuL3NlZ21lbnRzJztcbmltcG9ydCB7IGdldEJCb3hCeUFycmF5IH0gZnJvbSAnLi91dGlsJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgICAvKipcbiAgICAgKiDorqHnrpflpJrmipjnur/nmoTljIXlm7Tnm5JcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5Zu055uSXG4gICAgICovXG4gICAgYm94OiBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAgIHZhciB4QXJyID0gW107XG4gICAgICAgIHZhciB5QXJyID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgICAgICB4QXJyLnB1c2gocG9pbnRbMF0pO1xuICAgICAgICAgICAgeUFyci5wdXNoKHBvaW50WzFdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0QkJveEJ5QXJyYXkoeEFyciwgeUFycik7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDorqHnrpflpJrmipjnur/nmoTplb/luqZcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5aSa5p2h6L6555qE6ZW/5bqmXG4gICAgICovXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAgIHJldHVybiBsZW5ndGhPZlNlZ21lbnQocG9pbnRzKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagueaNruavlOS+i+iOt+WPluWkmuaKmOe6v+eahOeCuVxuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHQg5Zyo5aSa5oqY57q/55qE6ZW/5bqm5LiK55qE5q+U5L6LXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDmoLnmja7mr5TkvovlgLzorqHnrpflh7rmnaXnmoTngrlcbiAgICAgKi9cbiAgICBwb2ludEF0OiBmdW5jdGlvbiAocG9pbnRzLCB0KSB7XG4gICAgICAgIHJldHVybiBwb2ludEF0U2VnbWVudHMocG9pbnRzLCB0KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaMh+WumueCueWIsOWkmuaKmOe6v+eahOi3neemu1xuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgg5oyH5a6a54K555qEIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSDmjIflrprngrnnmoQgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g54K55Yiw5aSa5oqY57q/55qE6Led56a7XG4gICAgICovXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKHBvaW50cywgeCwgeSkge1xuICAgICAgICByZXR1cm4gZGlzdGFuY2VBdFNlZ21lbnQocG9pbnRzLCB4LCB5KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagueaNruavlOS+i+iOt+WPluWkmuaKmOe6v+eahOWIh+e6v+inkuW6plxuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHQg5Zyo5aSa5oqY57q/55qE6ZW/5bqm5LiK55qE5q+U5L6LXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDmoLnmja7mr5TkvovlgLzorqHnrpflh7rmnaXnmoTop5LluqZcbiAgICAgKi9cbiAgICB0YW5nZW50QW5nbGU6IGZ1bmN0aW9uIChwb2ludHMsIHQpIHtcbiAgICAgICAgcmV0dXJuIGFuZ2xlQXRTZWdtZW50cyhwb2ludHMsIHQpO1xuICAgIH0sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/polyline.js\n"); /***/ }), /***/ "./node_modules/@antv/g-math/esm/quadratic.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-math/esm/quadratic.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-math/esm/line.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n/* harmony import */ var _bezier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bezier */ \"./node_modules/@antv/g-math/esm/bezier.js\");\n\n\n\n// 差值公式\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * onet * p0 + 2 * t * onet * p1 + t * t * p2;\n}\n// 求极值\nfunction extrema(p0, p1, p2) {\n var a = p0 + p2 - 2 * p1;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumberEqual\"])(a, 0)) {\n return [0.5];\n }\n var rst = (p0 - p1) / a;\n if (rst <= 1 && rst >= 0) {\n return [rst];\n }\n return [];\n}\nfunction derivativeAt(p0, p1, p2, t) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n}\n// 分割贝塞尔曲线\nfunction divideQuadratic(x1, y1, x2, y2, x3, y3, t) {\n // 划分点\n var xt = quadraticAt(x1, x2, x3, t);\n var yt = quadraticAt(y1, y2, y3, t);\n // 分割的第一条曲线的控制点\n var controlPoint1 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(x1, y1, x2, y2, t);\n // 分割的第二条曲线的控制点\n var controlPoint2 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(x2, y2, x3, y3, t);\n return [\n [x1, y1, controlPoint1.x, controlPoint1.y, xt, yt],\n [xt, yt, controlPoint2.x, controlPoint2.y, x3, y3],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度\nfunction quadraticLength(x1, y1, x2, y2, x3, y3, iterationCount) {\n if (iterationCount === 0) {\n return (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x1, y1, x2, y2) + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x2, y2, x3, y3) + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x1, y1, x3, y3)) / 2;\n }\n var quadratics = divideQuadratic(x1, y1, x2, y2, x3, y3, 0.5);\n var left = quadratics[0];\n var right = quadratics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return quadraticLength.apply(null, left) + quadraticLength.apply(null, right);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n box: function (x1, y1, x2, y2, x3, y3) {\n var xExtrema = extrema(x1, x2, x3)[0];\n var yExtrema = extrema(y1, y2, y3)[0];\n // 控制点不加入 box 的计算\n var xArr = [x1, x3];\n var yArr = [y1, y3];\n if (xExtrema !== undefined) {\n xArr.push(quadraticAt(x1, x2, x3, xExtrema));\n }\n if (yExtrema !== undefined) {\n yArr.push(quadraticAt(y1, y2, y3, yExtrema));\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxByArray\"])(xArr, yArr);\n },\n length: function (x1, y1, x2, y2, x3, y3) {\n return quadraticLength(x1, y1, x2, y2, x3, y3, 3);\n },\n nearestPoint: function (x1, y1, x2, y2, x3, y3, x0, y0) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"nearestPoint\"])([x1, x2, x3], [y1, y2, y3], x0, y0, quadraticAt);\n },\n pointDistance: function (x1, y1, x2, y2, x3, y3, x0, y0) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(point.x, point.y, x0, y0);\n },\n interpolationAt: quadraticAt,\n pointAt: function (x1, y1, x2, y2, x3, y3, t) {\n return {\n x: quadraticAt(x1, x2, x3, t),\n y: quadraticAt(y1, y2, y3, t),\n };\n },\n divide: function (x1, y1, x2, y2, x3, y3, t) {\n return divideQuadratic(x1, y1, x2, y2, x3, y3, t);\n },\n tangentAngle: function (x1, y1, x2, y2, x3, y3, t) {\n var dx = derivativeAt(x1, x2, x3, t);\n var dy = derivativeAt(y1, y2, y3, t);\n var angle = Math.atan2(dy, dx);\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"piMod\"])(angle);\n },\n});\n//# sourceMappingURL=quadratic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9xdWFkcmF0aWMuanM/NjFmZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwQjtBQUM4QztBQUNoQztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBYTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDZDQUFJO0FBQzVCO0FBQ0Esd0JBQXdCLDZDQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQVEsbUJBQW1CLHNEQUFRLG1CQUFtQixzREFBUTtBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDREQUFjO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSw0REFBWTtBQUMzQixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtREFBSztBQUNwQixLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9xdWFkcmF0aWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGluZSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IHsgZGlzdGFuY2UsIGlzTnVtYmVyRXF1YWwsIGdldEJCb3hCeUFycmF5LCBwaU1vZCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBuZWFyZXN0UG9pbnQgfSBmcm9tICcuL2Jlemllcic7XG4vLyDlt67lgLzlhazlvI9cbmZ1bmN0aW9uIHF1YWRyYXRpY0F0KHAwLCBwMSwgcDIsIHQpIHtcbiAgICB2YXIgb25ldCA9IDEgLSB0O1xuICAgIHJldHVybiBvbmV0ICogb25ldCAqIHAwICsgMiAqIHQgKiBvbmV0ICogcDEgKyB0ICogdCAqIHAyO1xufVxuLy8g5rGC5p6B5YC8XG5mdW5jdGlvbiBleHRyZW1hKHAwLCBwMSwgcDIpIHtcbiAgICB2YXIgYSA9IHAwICsgcDIgLSAyICogcDE7XG4gICAgaWYgKGlzTnVtYmVyRXF1YWwoYSwgMCkpIHtcbiAgICAgICAgcmV0dXJuIFswLjVdO1xuICAgIH1cbiAgICB2YXIgcnN0ID0gKHAwIC0gcDEpIC8gYTtcbiAgICBpZiAocnN0IDw9IDEgJiYgcnN0ID49IDApIHtcbiAgICAgICAgcmV0dXJuIFtyc3RdO1xuICAgIH1cbiAgICByZXR1cm4gW107XG59XG5mdW5jdGlvbiBkZXJpdmF0aXZlQXQocDAsIHAxLCBwMiwgdCkge1xuICAgIHJldHVybiAyICogKDEgLSB0KSAqIChwMSAtIHAwKSArIDIgKiB0ICogKHAyIC0gcDEpO1xufVxuLy8g5YiG5Ymy6LSd5aGe5bCU5puy57q/XG5mdW5jdGlvbiBkaXZpZGVRdWFkcmF0aWMoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgdCkge1xuICAgIC8vIOWIkuWIhueCuVxuICAgIHZhciB4dCA9IHF1YWRyYXRpY0F0KHgxLCB4MiwgeDMsIHQpO1xuICAgIHZhciB5dCA9IHF1YWRyYXRpY0F0KHkxLCB5MiwgeTMsIHQpO1xuICAgIC8vIOWIhuWJsueahOesrOS4gOadoeabsue6v+eahOaOp+WItueCuVxuICAgIHZhciBjb250cm9sUG9pbnQxID0gbGluZS5wb2ludEF0KHgxLCB5MSwgeDIsIHkyLCB0KTtcbiAgICAvLyDliIblibLnmoTnrKzkuozmnaHmm7Lnur/nmoTmjqfliLbngrlcbiAgICB2YXIgY29udHJvbFBvaW50MiA9IGxpbmUucG9pbnRBdCh4MiwgeTIsIHgzLCB5MywgdCk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgW3gxLCB5MSwgY29udHJvbFBvaW50MS54LCBjb250cm9sUG9pbnQxLnksIHh0LCB5dF0sXG4gICAgICAgIFt4dCwgeXQsIGNvbnRyb2xQb2ludDIueCwgY29udHJvbFBvaW50Mi55LCB4MywgeTNdLFxuICAgIF07XG59XG4vLyDkvb/nlKjov63ku6Pms5Xlj5botJ3loZ7lsJTmm7Lnur/nmoTplb/luqZcbmZ1bmN0aW9uIHF1YWRyYXRpY0xlbmd0aCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCBpdGVyYXRpb25Db3VudCkge1xuICAgIGlmIChpdGVyYXRpb25Db3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gKGRpc3RhbmNlKHgxLCB5MSwgeDIsIHkyKSArIGRpc3RhbmNlKHgyLCB5MiwgeDMsIHkzKSArIGRpc3RhbmNlKHgxLCB5MSwgeDMsIHkzKSkgLyAyO1xuICAgIH1cbiAgICB2YXIgcXVhZHJhdGljcyA9IGRpdmlkZVF1YWRyYXRpYyh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCAwLjUpO1xuICAgIHZhciBsZWZ0ID0gcXVhZHJhdGljc1swXTtcbiAgICB2YXIgcmlnaHQgPSBxdWFkcmF0aWNzWzFdO1xuICAgIGxlZnQucHVzaChpdGVyYXRpb25Db3VudCAtIDEpO1xuICAgIHJpZ2h0LnB1c2goaXRlcmF0aW9uQ291bnQgLSAxKTtcbiAgICByZXR1cm4gcXVhZHJhdGljTGVuZ3RoLmFwcGx5KG51bGwsIGxlZnQpICsgcXVhZHJhdGljTGVuZ3RoLmFwcGx5KG51bGwsIHJpZ2h0KTtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBib3g6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzKSB7XG4gICAgICAgIHZhciB4RXh0cmVtYSA9IGV4dHJlbWEoeDEsIHgyLCB4MylbMF07XG4gICAgICAgIHZhciB5RXh0cmVtYSA9IGV4dHJlbWEoeTEsIHkyLCB5MylbMF07XG4gICAgICAgIC8vIOaOp+WItueCueS4jeWKoOWFpSBib3gg55qE6K6h566XXG4gICAgICAgIHZhciB4QXJyID0gW3gxLCB4M107XG4gICAgICAgIHZhciB5QXJyID0gW3kxLCB5M107XG4gICAgICAgIGlmICh4RXh0cmVtYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB4QXJyLnB1c2gocXVhZHJhdGljQXQoeDEsIHgyLCB4MywgeEV4dHJlbWEpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoeUV4dHJlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgeUFyci5wdXNoKHF1YWRyYXRpY0F0KHkxLCB5MiwgeTMsIHlFeHRyZW1hKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldEJCb3hCeUFycmF5KHhBcnIsIHlBcnIpO1xuICAgIH0sXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5Mykge1xuICAgICAgICByZXR1cm4gcXVhZHJhdGljTGVuZ3RoKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIDMpO1xuICAgIH0sXG4gICAgbmVhcmVzdFBvaW50OiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDAsIHkwKSB7XG4gICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnQoW3gxLCB4MiwgeDNdLCBbeTEsIHkyLCB5M10sIHgwLCB5MCwgcXVhZHJhdGljQXQpO1xuICAgIH0sXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHgwLCB5MCkge1xuICAgICAgICB2YXIgcG9pbnQgPSB0aGlzLm5lYXJlc3RQb2ludCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4MCwgeTApO1xuICAgICAgICByZXR1cm4gZGlzdGFuY2UocG9pbnQueCwgcG9pbnQueSwgeDAsIHkwKTtcbiAgICB9LFxuICAgIGludGVycG9sYXRpb25BdDogcXVhZHJhdGljQXQsXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHF1YWRyYXRpY0F0KHgxLCB4MiwgeDMsIHQpLFxuICAgICAgICAgICAgeTogcXVhZHJhdGljQXQoeTEsIHkyLCB5MywgdCksXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBkaXZpZGU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB0KSB7XG4gICAgICAgIHJldHVybiBkaXZpZGVRdWFkcmF0aWMoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgdCk7XG4gICAgfSxcbiAgICB0YW5nZW50QW5nbGU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB0KSB7XG4gICAgICAgIHZhciBkeCA9IGRlcml2YXRpdmVBdCh4MSwgeDIsIHgzLCB0KTtcbiAgICAgICAgdmFyIGR5ID0gZGVyaXZhdGl2ZUF0KHkxLCB5MiwgeTMsIHQpO1xuICAgICAgICB2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKGR5LCBkeCk7XG4gICAgICAgIHJldHVybiBwaU1vZChhbmdsZSk7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1xdWFkcmF0aWMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/quadratic.js\n"); /***/ }), /***/ "./node_modules/@antv/g-math/esm/segments.js": /*!***************************************************!*\ !*** ./node_modules/@antv/g-math/esm/segments.js ***! \***************************************************/ /*! exports provided: lengthOfSegment, pointAtSegments, angleAtSegments, distanceAtSegment */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lengthOfSegment\", function() { return lengthOfSegment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointAtSegments\", function() { return pointAtSegments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angleAtSegments\", function() { return angleAtSegments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distanceAtSegment\", function() { return distanceAtSegment; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-math/esm/line.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g-math/esm/util.js\");\n\n\nfunction analyzePoints(points) {\n // 计算每段的长度和总的长度\n var totalLength = 0;\n var segments = [];\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n var length_1 = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(from[0], from[1], to[0], to[1]);\n var seg = {\n from: from,\n to: to,\n length: length_1,\n };\n segments.push(seg);\n totalLength += length_1;\n }\n return { segments: segments, totalLength: totalLength };\n}\nfunction lengthOfSegment(points) {\n if (points.length < 2) {\n return 0;\n }\n var totalLength = 0;\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n totalLength += Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(from[0], from[1], to[0], to[1]);\n }\n return totalLength;\n}\n/**\n * 按照比例在数据片段中获取点\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n * @return {object} 点的坐标\n */\nfunction pointAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return null;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 多个点有可能重合\n if (totalLength === 0) {\n return {\n x: points[0][0],\n y: points[0][1],\n };\n }\n // 计算比例\n var startRatio = 0;\n var point = null;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n var localRatio = (t - startRatio) / currentRatio;\n point = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(from[0], from[1], to[0], to[1], localRatio);\n break;\n }\n startRatio += currentRatio;\n }\n return point;\n}\n/**\n * 按照比例在数据片段中获取切线的角度\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n */\nfunction angleAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return 0;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 计算比例\n var startRatio = 0;\n var angle = 0;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n break;\n }\n startRatio += currentRatio;\n }\n return angle;\n}\nfunction distanceAtSegment(points, x, y) {\n var minDistance = Infinity;\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i];\n var nextPoint = points[i + 1];\n var distance_1 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointDistance(point[0], point[1], nextPoint[0], nextPoint[1], x, y);\n if (distance_1 < minDistance) {\n minDistance = distance_1;\n }\n }\n return minDistance;\n}\n//# sourceMappingURL=segments.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS9zZWdtZW50cy5qcz8yMGZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBCO0FBQ1E7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsdUJBQXVCO0FBQzFDO0FBQ0E7QUFDQSx1QkFBdUIsc0RBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsdUJBQXVCO0FBQzFDO0FBQ0E7QUFDQSx1QkFBdUIsc0RBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEIsWUFBWSxPQUFPO0FBQ25CO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNkNBQUk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsbUJBQW1CLHVCQUF1QjtBQUMxQztBQUNBO0FBQ0EseUJBQXlCLDZDQUFJO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vc2VnbWVudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGluZSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tICcuL3V0aWwnO1xuZnVuY3Rpb24gYW5hbHl6ZVBvaW50cyhwb2ludHMpIHtcbiAgICAvLyDorqHnrpfmr4/mrrXnmoTplb/luqblkozmgLvnmoTplb/luqZcbiAgICB2YXIgdG90YWxMZW5ndGggPSAwO1xuICAgIHZhciBzZWdtZW50cyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICB2YXIgZnJvbSA9IHBvaW50c1tpXTtcbiAgICAgICAgdmFyIHRvID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgdmFyIGxlbmd0aF8xID0gZGlzdGFuY2UoZnJvbVswXSwgZnJvbVsxXSwgdG9bMF0sIHRvWzFdKTtcbiAgICAgICAgdmFyIHNlZyA9IHtcbiAgICAgICAgICAgIGZyb206IGZyb20sXG4gICAgICAgICAgICB0bzogdG8sXG4gICAgICAgICAgICBsZW5ndGg6IGxlbmd0aF8xLFxuICAgICAgICB9O1xuICAgICAgICBzZWdtZW50cy5wdXNoKHNlZyk7XG4gICAgICAgIHRvdGFsTGVuZ3RoICs9IGxlbmd0aF8xO1xuICAgIH1cbiAgICByZXR1cm4geyBzZWdtZW50czogc2VnbWVudHMsIHRvdGFsTGVuZ3RoOiB0b3RhbExlbmd0aCB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxlbmd0aE9mU2VnbWVudChwb2ludHMpIHtcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHZhciB0b3RhbExlbmd0aCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIHZhciBmcm9tID0gcG9pbnRzW2ldO1xuICAgICAgICB2YXIgdG8gPSBwb2ludHNbaSArIDFdO1xuICAgICAgICB0b3RhbExlbmd0aCArPSBkaXN0YW5jZShmcm9tWzBdLCBmcm9tWzFdLCB0b1swXSwgdG9bMV0pO1xuICAgIH1cbiAgICByZXR1cm4gdG90YWxMZW5ndGg7XG59XG4vKipcbiAqIOaMieeFp+avlOS+i+WcqOaVsOaNrueJh+auteS4reiOt+WPlueCuVxuICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiFxuICogQHBhcmFtIHtudW1iZXJ9IHQg55m+5YiG5q+UIDAtMVxuICogQHJldHVybiB7b2JqZWN0fSDngrnnmoTlnZDmoIdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvaW50QXRTZWdtZW50cyhwb2ludHMsIHQpIHtcbiAgICAvLyDovrnnlYzliKTmlq1cbiAgICBpZiAodCA+IDEgfHwgdCA8IDAgfHwgcG9pbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBfYSA9IGFuYWx5emVQb2ludHMocG9pbnRzKSwgc2VnbWVudHMgPSBfYS5zZWdtZW50cywgdG90YWxMZW5ndGggPSBfYS50b3RhbExlbmd0aDtcbiAgICAvLyDlpJrkuKrngrnmnInlj6/og73ph43lkIhcbiAgICBpZiAodG90YWxMZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHBvaW50c1swXVswXSxcbiAgICAgICAgICAgIHk6IHBvaW50c1swXVsxXSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8g6K6h566X5q+U5L6LXG4gICAgdmFyIHN0YXJ0UmF0aW8gPSAwO1xuICAgIHZhciBwb2ludCA9IG51bGw7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc2VnID0gc2VnbWVudHNbaV07XG4gICAgICAgIHZhciBmcm9tID0gc2VnLmZyb20sIHRvID0gc2VnLnRvO1xuICAgICAgICB2YXIgY3VycmVudFJhdGlvID0gc2VnLmxlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICBpZiAodCA+PSBzdGFydFJhdGlvICYmIHQgPD0gc3RhcnRSYXRpbyArIGN1cnJlbnRSYXRpbykge1xuICAgICAgICAgICAgdmFyIGxvY2FsUmF0aW8gPSAodCAtIHN0YXJ0UmF0aW8pIC8gY3VycmVudFJhdGlvO1xuICAgICAgICAgICAgcG9pbnQgPSBsaW5lLnBvaW50QXQoZnJvbVswXSwgZnJvbVsxXSwgdG9bMF0sIHRvWzFdLCBsb2NhbFJhdGlvKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXJ0UmF0aW8gKz0gY3VycmVudFJhdGlvO1xuICAgIH1cbiAgICByZXR1cm4gcG9pbnQ7XG59XG4vKipcbiAqIOaMieeFp+avlOS+i+WcqOaVsOaNrueJh+auteS4reiOt+WPluWIh+e6v+eahOinkuW6plxuICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiFxuICogQHBhcmFtIHtudW1iZXJ9IHQg55m+5YiG5q+UIDAtMVxuICovXG5leHBvcnQgZnVuY3Rpb24gYW5nbGVBdFNlZ21lbnRzKHBvaW50cywgdCkge1xuICAgIC8vIOi+ueeVjOWIpOaWrVxuICAgIGlmICh0ID4gMSB8fCB0IDwgMCB8fCBwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgdmFyIF9hID0gYW5hbHl6ZVBvaW50cyhwb2ludHMpLCBzZWdtZW50cyA9IF9hLnNlZ21lbnRzLCB0b3RhbExlbmd0aCA9IF9hLnRvdGFsTGVuZ3RoO1xuICAgIC8vIOiuoeeul+avlOS+i1xuICAgIHZhciBzdGFydFJhdGlvID0gMDtcbiAgICB2YXIgYW5nbGUgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlZyA9IHNlZ21lbnRzW2ldO1xuICAgICAgICB2YXIgZnJvbSA9IHNlZy5mcm9tLCB0byA9IHNlZy50bztcbiAgICAgICAgdmFyIGN1cnJlbnRSYXRpbyA9IHNlZy5sZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgaWYgKHQgPj0gc3RhcnRSYXRpbyAmJiB0IDw9IHN0YXJ0UmF0aW8gKyBjdXJyZW50UmF0aW8pIHtcbiAgICAgICAgICAgIGFuZ2xlID0gTWF0aC5hdGFuMih0b1sxXSAtIGZyb21bMV0sIHRvWzBdIC0gZnJvbVswXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGFydFJhdGlvICs9IGN1cnJlbnRSYXRpbztcbiAgICB9XG4gICAgcmV0dXJuIGFuZ2xlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQXRTZWdtZW50KHBvaW50cywgeCwgeSkge1xuICAgIHZhciBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgIHZhciBuZXh0UG9pbnQgPSBwb2ludHNbaSArIDFdO1xuICAgICAgICB2YXIgZGlzdGFuY2VfMSA9IGxpbmUucG9pbnREaXN0YW5jZShwb2ludFswXSwgcG9pbnRbMV0sIG5leHRQb2ludFswXSwgbmV4dFBvaW50WzFdLCB4LCB5KTtcbiAgICAgICAgaWYgKGRpc3RhbmNlXzEgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZV8xO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtaW5EaXN0YW5jZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlZ21lbnRzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/segments.js\n"); /***/ }), /***/ "./node_modules/@antv/g-math/esm/util.js": /*!***********************************************!*\ !*** ./node_modules/@antv/g-math/esm/util.js ***! \***********************************************/ /*! exports provided: distance, isNumberEqual, getBBoxByArray, getBBoxRange, piMod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return isNumberEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxByArray\", function() { return getBBoxByArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxRange\", function() { return getBBoxRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"piMod\", function() { return piMod; });\nfunction minNum(array) {\n return Math.min.apply(null, array);\n}\nfunction maxNum(array) {\n return Math.max.apply(null, array);\n}\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\nfunction distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction isNumberEqual(v1, v2) {\n return Math.abs(v1 - v2) < 0.001;\n}\nfunction getBBoxByArray(xArr, yArr) {\n var minX = minNum(xArr);\n var minY = minNum(yArr);\n var maxX = maxNum(xArr);\n var maxY = maxNum(yArr);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction getBBoxRange(x1, y1, x2, y2) {\n return {\n minX: minNum([x1, x2]),\n maxX: maxNum([x1, x2]),\n minY: minNum([y1, y2]),\n maxY: maxNum([y1, y2]),\n };\n}\nfunction piMod(angle) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1tYXRoL2VzbS91dGlsLmpzPzRmNTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixZQUFZLE9BQU87QUFDbkI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctbWF0aC9lc20vdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG1pbk51bShhcnJheSkge1xuICAgIHJldHVybiBNYXRoLm1pbi5hcHBseShudWxsLCBhcnJheSk7XG59XG5mdW5jdGlvbiBtYXhOdW0oYXJyYXkpIHtcbiAgICByZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCwgYXJyYXkpO1xufVxuLyoqXG4gKiDkuKTngrnkuYvpl7TnmoTot53nprtcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gKiBAcGFyYW0ge251bWJlcn0geDIg57uT5p2f54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICogQHJldHVybiB7bnVtYmVyfSDot53nprtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgdmFyIGR4ID0geDEgLSB4MjtcbiAgICB2YXIgZHkgPSB5MSAtIHkyO1xuICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyRXF1YWwodjEsIHYyKSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKHYxIC0gdjIpIDwgMC4wMDE7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0QkJveEJ5QXJyYXkoeEFyciwgeUFycikge1xuICAgIHZhciBtaW5YID0gbWluTnVtKHhBcnIpO1xuICAgIHZhciBtaW5ZID0gbWluTnVtKHlBcnIpO1xuICAgIHZhciBtYXhYID0gbWF4TnVtKHhBcnIpO1xuICAgIHZhciBtYXhZID0gbWF4TnVtKHlBcnIpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IG1pblgsXG4gICAgICAgIHk6IG1pblksXG4gICAgICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEJCb3hSYW5nZSh4MSwgeTEsIHgyLCB5Mikge1xuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IG1pbk51bShbeDEsIHgyXSksXG4gICAgICAgIG1heFg6IG1heE51bShbeDEsIHgyXSksXG4gICAgICAgIG1pblk6IG1pbk51bShbeTEsIHkyXSksXG4gICAgICAgIG1heFk6IG1heE51bShbeTEsIHkyXSksXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwaU1vZChhbmdsZSkge1xuICAgIHJldHVybiAoYW5nbGUgKyBNYXRoLlBJICogMikgJSAoTWF0aC5QSSAqIDIpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-math/esm/util.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/canvas.js": /*!************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/canvas.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/svg */ \"./node_modules/@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./group */ \"./node_modules/@antv/g-svg/esm/group.js\");\n/* harmony import */ var _defs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./defs */ \"./node_modules/@antv/g-svg/esm/defs/index.js\");\n\n\n\n\n\n\n\n\n\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas(cfg) {\n return _super.call(this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg), { autoDraw: true, \n // 设置渲染引擎为 canvas,只读属性\n renderer: 'svg' })) || this;\n }\n Canvas.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_6__;\n };\n Canvas.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n };\n // 覆盖 Container 中通过遍历的方式获取 shape 对象的逻辑,直接走 SVG 的 dom 拾取即可\n Canvas.prototype.getShape = function (x, y, ev) {\n var target = ev.target || ev.srcElement;\n if (!_constant__WEBPACK_IMPORTED_MODULE_2__[\"SHAPE_TO_TAGS\"][target.tagName]) {\n var parent_1 = target.parentNode;\n while (parent_1 && !_constant__WEBPACK_IMPORTED_MODULE_2__[\"SHAPE_TO_TAGS\"][parent_1.tagName]) {\n parent_1 = parent_1.parentNode;\n }\n target = parent_1;\n }\n return this.find(function (child) { return child.get('el') === target; });\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = Object(_util_dom__WEBPACK_IMPORTED_MODULE_5__[\"createSVGElement\"])('svg');\n var context = new _defs__WEBPACK_IMPORTED_MODULE_8__[\"default\"](element);\n element.setAttribute('width', \"\" + this.get('width'));\n element.setAttribute('height', \"\" + this.get('height'));\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n var context = this.get('context');\n var el = this.get('el');\n if (changeType === 'sort') {\n var children_1 = this.get('children');\n if (children_1 && children_1.length) {\n Object(_util_dom__WEBPACK_IMPORTED_MODULE_5__[\"sortDom\"])(this, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n }\n else if (changeType === 'clear') {\n // el maybe null for canvas\n if (el) {\n // 清空 SVG 元素\n el.innerHTML = '';\n var defsEl = context.el;\n // 清空 defs 元素\n defsEl.innerHTML = '';\n // 将清空后的 defs 元素挂载到 el 下\n el.appendChild(defsEl);\n }\n }\n else if (changeType === 'matrix') {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setTransform\"])(this);\n }\n else if (changeType === 'clip') {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setClip\"])(this, context);\n }\n else if (changeType === 'changeSize') {\n el.setAttribute('width', \"\" + this.get('width'));\n el.setAttribute('height', \"\" + this.get('height'));\n }\n };\n // 复写基类的 draw 方法\n Canvas.prototype.draw = function () {\n var context = this.get('context');\n var children = this.getChildren();\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setClip\"])(this, context);\n if (children.length) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"drawChildren\"])(context, children);\n }\n };\n return Canvas;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractCanvas\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2NhbnZhcy5qcz9jMDI5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ0U7QUFDSDtBQUNBO0FBQ1E7QUFDSTtBQUN0QjtBQUNMO0FBQ0Y7QUFDMUI7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQSxpQ0FBaUMsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFNBQVM7QUFDOUQ7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBLGVBQWUsbUNBQUs7QUFDcEI7QUFDQTtBQUNBLGVBQWUsOENBQUs7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFhO0FBQzFCO0FBQ0EsZ0NBQWdDLHVEQUFhO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLG1DQUFtQyxFQUFFO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixrRUFBZ0I7QUFDdEMsMEJBQTBCLDZDQUFJO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IseURBQU87QUFDdkI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw4REFBWTtBQUN4QjtBQUNBO0FBQ0EsWUFBWSx5REFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEseURBQU87QUFDZjtBQUNBLFlBQVksK0RBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFjO0FBQ0QscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vY2FudmFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDYW52YXMgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0IHsgU0hBUEVfVE9fVEFHUyB9IGZyb20gJy4vY29uc3RhbnQnO1xuaW1wb3J0IHsgZHJhd0NoaWxkcmVuIH0gZnJvbSAnLi91dGlsL2RyYXcnO1xuaW1wb3J0IHsgc2V0VHJhbnNmb3JtLCBzZXRDbGlwIH0gZnJvbSAnLi91dGlsL3N2Zyc7XG5pbXBvcnQgeyBzb3J0RG9tLCBjcmVhdGVTVkdFbGVtZW50IH0gZnJvbSAnLi91dGlsL2RvbSc7XG5pbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCBHcm91cCBmcm9tICcuL2dyb3VwJztcbmltcG9ydCBEZWZzIGZyb20gJy4vZGVmcyc7XG52YXIgQ2FudmFzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDYW52YXMsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2FudmFzKGNmZykge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgX19hc3NpZ24oX19hc3NpZ24oe30sIGNmZyksIHsgYXV0b0RyYXc6IHRydWUsIFxuICAgICAgICAgICAgLy8g6K6+572u5riy5p+T5byV5pOO5Li6IGNhbnZhc++8jOWPquivu+WxnuaAp1xuICAgICAgICAgICAgcmVuZGVyZXI6ICdzdmcnIH0pKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDYW52YXMucHJvdG90eXBlLmdldFNoYXBlQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFNoYXBlO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRHcm91cEJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBHcm91cDtcbiAgICB9O1xuICAgIC8vIOimhuebliBDb250YWluZXIg5Lit6YCa6L+H6YGN5Y6G55qE5pa55byP6I635Y+WIHNoYXBlIOWvueixoeeahOmAu+i+ke+8jOebtOaOpei1sCBTVkcg55qEIGRvbSDmi77lj5bljbPlj69cbiAgICBDYW52YXMucHJvdG90eXBlLmdldFNoYXBlID0gZnVuY3Rpb24gKHgsIHksIGV2KSB7XG4gICAgICAgIHZhciB0YXJnZXQgPSBldi50YXJnZXQgfHwgZXYuc3JjRWxlbWVudDtcbiAgICAgICAgaWYgKCFTSEFQRV9UT19UQUdTW3RhcmdldC50YWdOYW1lXSkge1xuICAgICAgICAgICAgdmFyIHBhcmVudF8xID0gdGFyZ2V0LnBhcmVudE5vZGU7XG4gICAgICAgICAgICB3aGlsZSAocGFyZW50XzEgJiYgIVNIQVBFX1RPX1RBR1NbcGFyZW50XzEudGFnTmFtZV0pIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRfMSA9IHBhcmVudF8xLnBhcmVudE5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXQgPSBwYXJlbnRfMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5maW5kKGZ1bmN0aW9uIChjaGlsZCkgeyByZXR1cm4gY2hpbGQuZ2V0KCdlbCcpID09PSB0YXJnZXQ7IH0pO1xuICAgIH07XG4gICAgLy8g5aSN5YaZ5Z+657G755qE5pa55rOV55Sf5oiQ5qCH562+XG4gICAgQ2FudmFzLnByb3RvdHlwZS5jcmVhdGVEb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgnc3ZnJyk7XG4gICAgICAgIHZhciBjb250ZXh0ID0gbmV3IERlZnMoZWxlbWVudCk7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd3aWR0aCcsIFwiXCIgKyB0aGlzLmdldCgnd2lkdGgnKSk7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBcIlwiICsgdGhpcy5nZXQoJ2hlaWdodCcpKTtcbiAgICAgICAgLy8g57yT5a2YIGNvbnRleHQg5a+56LGhXG4gICAgICAgIHRoaXMuc2V0KCdjb250ZXh0JywgY29udGV4dCk7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUub25DYW52YXNDaGFuZ2UgPSBmdW5jdGlvbiAoY2hhbmdlVHlwZSkge1xuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoY2hhbmdlVHlwZSA9PT0gJ3NvcnQnKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW5fMSA9IHRoaXMuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuXzEgJiYgY2hpbGRyZW5fMS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzb3J0RG9tKHRoaXMsIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbl8xLmluZGV4T2YoYSkgLSBjaGlsZHJlbl8xLmluZGV4T2YoYikgPyAxIDogMDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnY2xlYXInKSB7XG4gICAgICAgICAgICAvLyBlbCBtYXliZSBudWxsIGZvciBjYW52YXNcbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIC8vIOa4heepuiBTVkcg5YWD57SgXG4gICAgICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgdmFyIGRlZnNFbCA9IGNvbnRleHQuZWw7XG4gICAgICAgICAgICAgICAgLy8g5riF56m6IGRlZnMg5YWD57SgXG4gICAgICAgICAgICAgICAgZGVmc0VsLmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgIC8vIOWwhua4heepuuWQjueahCBkZWZzIOWFg+e0oOaMgui9veWIsCBlbCDkuItcbiAgICAgICAgICAgICAgICBlbC5hcHBlbmRDaGlsZChkZWZzRWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdtYXRyaXgnKSB7XG4gICAgICAgICAgICBzZXRUcmFuc2Zvcm0odGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2NsaXAnKSB7XG4gICAgICAgICAgICBzZXRDbGlwKHRoaXMsIGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdjaGFuZ2VTaXplJykge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd3aWR0aCcsIFwiXCIgKyB0aGlzLmdldCgnd2lkdGgnKSk7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIFwiXCIgKyB0aGlzLmdldCgnaGVpZ2h0JykpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDlpI3lhpnln7rnsbvnmoQgZHJhdyDmlrnms5VcbiAgICBDYW52YXMucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5nZXQoJ2NvbnRleHQnKTtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICBzZXRDbGlwKHRoaXMsIGNvbnRleHQpO1xuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBkcmF3Q2hpbGRyZW4oY29udGV4dCwgY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQ2FudmFzO1xufShBYnN0cmFjdENhbnZhcykpO1xuZXhwb3J0IGRlZmF1bHQgQ2FudmFzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2FudmFzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/canvas.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/constant.js": /*!**************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/constant.js ***! \**************************************************/ /*! exports provided: SHAPE_TO_TAGS, SVG_ATTR_MAP, EVENTS */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHAPE_TO_TAGS\", function() { return SHAPE_TO_TAGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVG_ATTR_MAP\", function() { return SVG_ATTR_MAP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EVENTS\", function() { return EVENTS; });\nvar SHAPE_TO_TAGS = {\n rect: 'path',\n circle: 'circle',\n line: 'line',\n path: 'path',\n marker: 'path',\n text: 'text',\n polyline: 'polyline',\n polygon: 'polygon',\n image: 'image',\n ellipse: 'ellipse',\n dom: 'foreignObject',\n};\nvar SVG_ATTR_MAP = {\n opacity: 'opacity',\n fillStyle: 'fill',\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n strokeStyle: 'stroke',\n strokeOpacity: 'stroke-opacity',\n stroke: 'stroke',\n x: 'x',\n y: 'y',\n r: 'r',\n rx: 'rx',\n ry: 'ry',\n width: 'width',\n height: 'height',\n x1: 'x1',\n x2: 'x2',\n y1: 'y1',\n y2: 'y2',\n lineCap: 'stroke-linecap',\n lineJoin: 'stroke-linejoin',\n lineWidth: 'stroke-width',\n lineDash: 'stroke-dasharray',\n lineDashOffset: 'stroke-dashoffset',\n miterLimit: 'stroke-miterlimit',\n font: 'font',\n fontSize: 'font-size',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n fontFamily: 'font-family',\n startArrow: 'marker-start',\n endArrow: 'marker-end',\n path: 'd',\n class: 'class',\n id: 'id',\n style: 'style',\n preserveAspectRatio: 'preserveAspectRatio',\n};\nvar EVENTS = [\n 'click',\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'contextmenu',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'wheel',\n];\n//# sourceMappingURL=constant.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2NvbnN0YW50LmpzPzIyZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2NvbnN0YW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBTSEFQRV9UT19UQUdTID0ge1xuICAgIHJlY3Q6ICdwYXRoJyxcbiAgICBjaXJjbGU6ICdjaXJjbGUnLFxuICAgIGxpbmU6ICdsaW5lJyxcbiAgICBwYXRoOiAncGF0aCcsXG4gICAgbWFya2VyOiAncGF0aCcsXG4gICAgdGV4dDogJ3RleHQnLFxuICAgIHBvbHlsaW5lOiAncG9seWxpbmUnLFxuICAgIHBvbHlnb246ICdwb2x5Z29uJyxcbiAgICBpbWFnZTogJ2ltYWdlJyxcbiAgICBlbGxpcHNlOiAnZWxsaXBzZScsXG4gICAgZG9tOiAnZm9yZWlnbk9iamVjdCcsXG59O1xuZXhwb3J0IHZhciBTVkdfQVRUUl9NQVAgPSB7XG4gICAgb3BhY2l0eTogJ29wYWNpdHknLFxuICAgIGZpbGxTdHlsZTogJ2ZpbGwnLFxuICAgIGZpbGw6ICdmaWxsJyxcbiAgICBmaWxsT3BhY2l0eTogJ2ZpbGwtb3BhY2l0eScsXG4gICAgc3Ryb2tlU3R5bGU6ICdzdHJva2UnLFxuICAgIHN0cm9rZU9wYWNpdHk6ICdzdHJva2Utb3BhY2l0eScsXG4gICAgc3Ryb2tlOiAnc3Ryb2tlJyxcbiAgICB4OiAneCcsXG4gICAgeTogJ3knLFxuICAgIHI6ICdyJyxcbiAgICByeDogJ3J4JyxcbiAgICByeTogJ3J5JyxcbiAgICB3aWR0aDogJ3dpZHRoJyxcbiAgICBoZWlnaHQ6ICdoZWlnaHQnLFxuICAgIHgxOiAneDEnLFxuICAgIHgyOiAneDInLFxuICAgIHkxOiAneTEnLFxuICAgIHkyOiAneTInLFxuICAgIGxpbmVDYXA6ICdzdHJva2UtbGluZWNhcCcsXG4gICAgbGluZUpvaW46ICdzdHJva2UtbGluZWpvaW4nLFxuICAgIGxpbmVXaWR0aDogJ3N0cm9rZS13aWR0aCcsXG4gICAgbGluZURhc2g6ICdzdHJva2UtZGFzaGFycmF5JyxcbiAgICBsaW5lRGFzaE9mZnNldDogJ3N0cm9rZS1kYXNob2Zmc2V0JyxcbiAgICBtaXRlckxpbWl0OiAnc3Ryb2tlLW1pdGVybGltaXQnLFxuICAgIGZvbnQ6ICdmb250JyxcbiAgICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsXG4gICAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsXG4gICAgZm9udFZhcmlhbnQ6ICdmb250LXZhcmlhbnQnLFxuICAgIGZvbnRXZWlnaHQ6ICdmb250LXdlaWdodCcsXG4gICAgZm9udEZhbWlseTogJ2ZvbnQtZmFtaWx5JyxcbiAgICBzdGFydEFycm93OiAnbWFya2VyLXN0YXJ0JyxcbiAgICBlbmRBcnJvdzogJ21hcmtlci1lbmQnLFxuICAgIHBhdGg6ICdkJyxcbiAgICBjbGFzczogJ2NsYXNzJyxcbiAgICBpZDogJ2lkJyxcbiAgICBzdHlsZTogJ3N0eWxlJyxcbiAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiAncHJlc2VydmVBc3BlY3RSYXRpbycsXG59O1xuZXhwb3J0IHZhciBFVkVOVFMgPSBbXG4gICAgJ2NsaWNrJyxcbiAgICAnbW91c2Vkb3duJyxcbiAgICAnbW91c2V1cCcsXG4gICAgJ2RibGNsaWNrJyxcbiAgICAnY29udGV4dG1lbnUnLFxuICAgICdtb3VzZWVudGVyJyxcbiAgICAnbW91c2VsZWF2ZScsXG4gICAgJ21vdXNlb3ZlcicsXG4gICAgJ21vdXNlb3V0JyxcbiAgICAnbW91c2Vtb3ZlJyxcbiAgICAnd2hlZWwnLFxuXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/constant.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/defs/arrow.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/defs/arrow.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview arrow\n * @author dengfuping_develop@163.com\n */\n\n\nvar Arrow = /** @class */ (function () {\n function Arrow(attrs, type) {\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('marker');\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('marker_');\n el.setAttribute('id', id);\n var shape = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('path');\n shape.setAttribute('stroke', attrs.stroke || 'none');\n shape.setAttribute('fill', attrs.fill || 'none');\n el.appendChild(shape);\n el.setAttribute('overflow', 'visible');\n el.setAttribute('orient', 'auto-start-reverse');\n this.el = el;\n this.child = shape;\n this.id = id;\n var cfg = attrs[type === 'marker-start' ? 'startArrow' : 'endArrow'];\n this.stroke = attrs.stroke || '#000';\n if (cfg === true) {\n this._setDefaultPath(type, shape);\n }\n else {\n this.cfg = cfg; // when arrow config exists\n this._setMarker(attrs.lineWidth, shape);\n }\n return this;\n }\n Arrow.prototype.match = function () {\n return false;\n };\n Arrow.prototype._setDefaultPath = function (type, el) {\n var parent = this.el;\n // 默认箭头的边长为 10,夹角为 60 度\n el.setAttribute('d', \"M0,0 L\" + 10 * Math.cos(Math.PI / 6) + \",5 L0,10\");\n parent.setAttribute('refX', \"\" + 10 * Math.cos(Math.PI / 6));\n parent.setAttribute('refY', \"\" + 5);\n };\n Arrow.prototype._setMarker = function (r, el) {\n var parent = this.el;\n var path = this.cfg.path;\n var d = this.cfg.d;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(path)) {\n path = path\n .map(function (segment) {\n return segment.join(' ');\n })\n .join('');\n }\n el.setAttribute('d', path);\n parent.appendChild(el);\n if (d) {\n parent.setAttribute('refX', \"\" + d / r);\n }\n };\n Arrow.prototype.update = function (fill) {\n var child = this.child;\n if (child.attr) {\n child.attr('fill', fill);\n }\n else {\n child.setAttribute('fill', fill);\n }\n };\n return Arrow;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Arrow);\n//# sourceMappingURL=arrow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvYXJyb3cuanM/NjgwNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUMrQztBQUNBO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixrRUFBZ0I7QUFDakMsaUJBQWlCLDJEQUFRO0FBQ3pCO0FBQ0Esb0JBQW9CLGtFQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDYyxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9kZWZzL2Fycm93LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGFycm93XG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IGlzQXJyYXksIHVuaXF1ZUlkIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVTVkdFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9kb20nO1xudmFyIEFycm93ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEFycm93KGF0dHJzLCB0eXBlKSB7XG4gICAgICAgIHRoaXMuY2ZnID0ge307XG4gICAgICAgIHZhciBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ21hcmtlcicpO1xuICAgICAgICB2YXIgaWQgPSB1bmlxdWVJZCgnbWFya2VyXycpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuICAgICAgICB2YXIgc2hhcGUgPSBjcmVhdGVTVkdFbGVtZW50KCdwYXRoJyk7XG4gICAgICAgIHNoYXBlLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgYXR0cnMuc3Ryb2tlIHx8ICdub25lJyk7XG4gICAgICAgIHNoYXBlLnNldEF0dHJpYnV0ZSgnZmlsbCcsIGF0dHJzLmZpbGwgfHwgJ25vbmUnKTtcbiAgICAgICAgZWwuYXBwZW5kQ2hpbGQoc2hhcGUpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ292ZXJmbG93JywgJ3Zpc2libGUnKTtcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdvcmllbnQnLCAnYXV0by1zdGFydC1yZXZlcnNlJyk7XG4gICAgICAgIHRoaXMuZWwgPSBlbDtcbiAgICAgICAgdGhpcy5jaGlsZCA9IHNoYXBlO1xuICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIHZhciBjZmcgPSBhdHRyc1t0eXBlID09PSAnbWFya2VyLXN0YXJ0JyA/ICdzdGFydEFycm93JyA6ICdlbmRBcnJvdyddO1xuICAgICAgICB0aGlzLnN0cm9rZSA9IGF0dHJzLnN0cm9rZSB8fCAnIzAwMCc7XG4gICAgICAgIGlmIChjZmcgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldERlZmF1bHRQYXRoKHR5cGUsIHNoYXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2ZnID0gY2ZnOyAvLyB3aGVuIGFycm93IGNvbmZpZyBleGlzdHNcbiAgICAgICAgICAgIHRoaXMuX3NldE1hcmtlcihhdHRycy5saW5lV2lkdGgsIHNoYXBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgQXJyb3cucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBBcnJvdy5wcm90b3R5cGUuX3NldERlZmF1bHRQYXRoID0gZnVuY3Rpb24gKHR5cGUsIGVsKSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLmVsO1xuICAgICAgICAvLyDpu5jorqTnrq3lpLTnmoTovrnplb/kuLogMTDvvIzlpLnop5LkuLogNjAg5bqmXG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZCcsIFwiTTAsMCBMXCIgKyAxMCAqIE1hdGguY29zKE1hdGguUEkgLyA2KSArIFwiLDUgTDAsMTBcIik7XG4gICAgICAgIHBhcmVudC5zZXRBdHRyaWJ1dGUoJ3JlZlgnLCBcIlwiICsgMTAgKiBNYXRoLmNvcyhNYXRoLlBJIC8gNikpO1xuICAgICAgICBwYXJlbnQuc2V0QXR0cmlidXRlKCdyZWZZJywgXCJcIiArIDUpO1xuICAgIH07XG4gICAgQXJyb3cucHJvdG90eXBlLl9zZXRNYXJrZXIgPSBmdW5jdGlvbiAociwgZWwpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZWw7XG4gICAgICAgIHZhciBwYXRoID0gdGhpcy5jZmcucGF0aDtcbiAgICAgICAgdmFyIGQgPSB0aGlzLmNmZy5kO1xuICAgICAgICBpZiAoaXNBcnJheShwYXRoKSkge1xuICAgICAgICAgICAgcGF0aCA9IHBhdGhcbiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlZ21lbnQuam9pbignICcpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuam9pbignJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkJywgcGF0aCk7XG4gICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbCk7XG4gICAgICAgIGlmIChkKSB7XG4gICAgICAgICAgICBwYXJlbnQuc2V0QXR0cmlidXRlKCdyZWZYJywgXCJcIiArIGQgLyByKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQXJyb3cucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChmaWxsKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGQ7XG4gICAgICAgIGlmIChjaGlsZC5hdHRyKSB7XG4gICAgICAgICAgICBjaGlsZC5hdHRyKCdmaWxsJywgZmlsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBmaWxsKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEFycm93O1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IEFycm93O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXJyb3cuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/arrow.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/defs/clip.js": /*!***************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/defs/clip.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview clip\n * @author dengfuping_develop@163.com\n */\n\n\nvar Clip = /** @class */ (function () {\n function Clip(cfg) {\n this.type = 'clip';\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('clipPath');\n this.el = el;\n this.id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('clip_');\n el.id = this.id;\n var shapeEl = cfg.cfg.el;\n el.appendChild(shapeEl);\n this.cfg = cfg;\n return this;\n }\n Clip.prototype.match = function () {\n return false;\n };\n Clip.prototype.remove = function () {\n var el = this.el;\n el.parentNode.removeChild(el);\n };\n return Clip;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Clip);\n//# sourceMappingURL=clip.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvY2xpcC5qcz8xNDFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ3NDO0FBQ1M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDO0FBQ0Esa0JBQWtCLDJEQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2MsbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vZGVmcy9jbGlwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGNsaXBcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RvbSc7XG52YXIgQ2xpcCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDbGlwKGNmZykge1xuICAgICAgICB0aGlzLnR5cGUgPSAnY2xpcCc7XG4gICAgICAgIHRoaXMuY2ZnID0ge307XG4gICAgICAgIHZhciBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ2NsaXBQYXRoJyk7XG4gICAgICAgIHRoaXMuZWwgPSBlbDtcbiAgICAgICAgdGhpcy5pZCA9IHVuaXF1ZUlkKCdjbGlwXycpO1xuICAgICAgICBlbC5pZCA9IHRoaXMuaWQ7XG4gICAgICAgIHZhciBzaGFwZUVsID0gY2ZnLmNmZy5lbDtcbiAgICAgICAgZWwuYXBwZW5kQ2hpbGQoc2hhcGVFbCk7XG4gICAgICAgIHRoaXMuY2ZnID0gY2ZnO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgQ2xpcC5wcm90b3R5cGUubWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIENsaXAucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5lbDtcbiAgICAgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gICAgfTtcbiAgICByZXR1cm4gQ2xpcDtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBDbGlwO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xpcC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/clip.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/defs/gradient.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/defs/gradient.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview gradient\n * @author dengfuping_develop@163.com\n */\n\n\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^)]+\\))/gi;\nfunction addStop(steps) {\n var arr = steps.match(regexColorStop);\n if (!arr) {\n return '';\n }\n var stops = '';\n arr.sort(function (a, b) {\n a = a.split(':');\n b = b.split(':');\n return Number(a[0]) - Number(b[0]);\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(arr, function (item) {\n item = item.split(':');\n stops += \"\";\n });\n return stops;\n}\nfunction parseLineGradient(color, el) {\n var arr = regexLG.exec(color);\n var angle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"])(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"])(parseFloat(arr[1])), Math.PI * 2);\n var steps = arr[2];\n var start;\n var end;\n if (angle >= 0 && angle < 0.5 * Math.PI) {\n start = {\n x: 0,\n y: 0,\n };\n end = {\n x: 1,\n y: 1,\n };\n }\n else if (0.5 * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: 1,\n y: 0,\n };\n end = {\n x: 0,\n y: 1,\n };\n }\n else if (Math.PI <= angle && angle < 1.5 * Math.PI) {\n start = {\n x: 1,\n y: 1,\n };\n end = {\n x: 0,\n y: 0,\n };\n }\n else {\n start = {\n x: 0,\n y: 1,\n };\n end = {\n x: 1,\n y: 0,\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n el.setAttribute('x1', start.x);\n el.setAttribute('y1', start.y);\n el.setAttribute('x2', x);\n el.setAttribute('y2', y);\n el.innerHTML = addStop(steps);\n}\nfunction parseRadialGradient(color, self) {\n var arr = regexRG.exec(color);\n var cx = parseFloat(arr[1]);\n var cy = parseFloat(arr[2]);\n var r = parseFloat(arr[3]);\n var steps = arr[4];\n self.setAttribute('cx', cx);\n self.setAttribute('cy', cy);\n self.setAttribute('r', r);\n self.innerHTML = addStop(steps);\n}\nvar Gradient = /** @class */ (function () {\n function Gradient(cfg) {\n this.cfg = {};\n var el = null;\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('gradient_');\n if (cfg.toLowerCase()[0] === 'l') {\n el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('linearGradient');\n parseLineGradient(cfg, el);\n }\n else {\n el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('radialGradient');\n parseRadialGradient(cfg, el);\n }\n el.setAttribute('id', id);\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n return this;\n }\n Gradient.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Gradient;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Gradient);\n//# sourceMappingURL=gradient.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvZ3JhZGllbnQuanM/YTIxOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUMyRDtBQUNaO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFHLENBQUMsMkRBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwyREFBUTtBQUN6QjtBQUNBLGlCQUFpQixrRUFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtFQUFnQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2MsdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vZGVmcy9ncmFkaWVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBncmFkaWVudFxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBlYWNoLCBtb2QsIHRvUmFkaWFuLCB1bmlxdWVJZCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlU1ZHRWxlbWVudCB9IGZyb20gJy4uL3V0aWwvZG9tJztcbnZhciByZWdleExHID0gL15sXFxzKlxcKFxccyooW1xcZC5dKylcXHMqXFwpXFxzKiguKikvaTtcbnZhciByZWdleFJHID0gL15yXFxzKlxcKFxccyooW1xcZC5dKylcXHMqLFxccyooW1xcZC5dKylcXHMqLFxccyooW1xcZC5dKylcXHMqXFwpXFxzKiguKikvaTtcbnZhciByZWdleENvbG9yU3RvcCA9IC9bXFxkLl0rOigjW15cXHNdK3xbXildK1xcKSkvZ2k7XG5mdW5jdGlvbiBhZGRTdG9wKHN0ZXBzKSB7XG4gICAgdmFyIGFyciA9IHN0ZXBzLm1hdGNoKHJlZ2V4Q29sb3JTdG9wKTtcbiAgICBpZiAoIWFycikge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHZhciBzdG9wcyA9ICcnO1xuICAgIGFyci5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIGEgPSBhLnNwbGl0KCc6Jyk7XG4gICAgICAgIGIgPSBiLnNwbGl0KCc6Jyk7XG4gICAgICAgIHJldHVybiBOdW1iZXIoYVswXSkgLSBOdW1iZXIoYlswXSk7XG4gICAgfSk7XG4gICAgZWFjaChhcnIsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIGl0ZW0gPSBpdGVtLnNwbGl0KCc6Jyk7XG4gICAgICAgIHN0b3BzICs9IFwiPHN0b3Agb2Zmc2V0PVxcXCJcIiArIGl0ZW1bMF0gKyBcIlxcXCIgc3RvcC1jb2xvcj1cXFwiXCIgKyBpdGVtWzFdICsgXCJcXFwiPjwvc3RvcD5cIjtcbiAgICB9KTtcbiAgICByZXR1cm4gc3RvcHM7XG59XG5mdW5jdGlvbiBwYXJzZUxpbmVHcmFkaWVudChjb2xvciwgZWwpIHtcbiAgICB2YXIgYXJyID0gcmVnZXhMRy5leGVjKGNvbG9yKTtcbiAgICB2YXIgYW5nbGUgPSBtb2QodG9SYWRpYW4ocGFyc2VGbG9hdChhcnJbMV0pKSwgTWF0aC5QSSAqIDIpO1xuICAgIHZhciBzdGVwcyA9IGFyclsyXTtcbiAgICB2YXIgc3RhcnQ7XG4gICAgdmFyIGVuZDtcbiAgICBpZiAoYW5nbGUgPj0gMCAmJiBhbmdsZSA8IDAuNSAqIE1hdGguUEkpIHtcbiAgICAgICAgc3RhcnQgPSB7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogMSxcbiAgICAgICAgICAgIHk6IDEsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKDAuNSAqIE1hdGguUEkgPD0gYW5nbGUgJiYgYW5nbGUgPCBNYXRoLlBJKSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogMSxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAxLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChNYXRoLlBJIDw9IGFuZ2xlICYmIGFuZ2xlIDwgMS41ICogTWF0aC5QSSkge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IDEsXG4gICAgICAgICAgICB5OiAxLFxuICAgICAgICB9O1xuICAgICAgICBlbmQgPSB7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDEsXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IDEsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgdGFuVGhldGEgPSBNYXRoLnRhbihhbmdsZSk7XG4gICAgdmFyIHRhblRoZXRhMiA9IHRhblRoZXRhICogdGFuVGhldGE7XG4gICAgdmFyIHggPSAoZW5kLnggLSBzdGFydC54ICsgdGFuVGhldGEgKiAoZW5kLnkgLSBzdGFydC55KSkgLyAodGFuVGhldGEyICsgMSkgKyBzdGFydC54O1xuICAgIHZhciB5ID0gKHRhblRoZXRhICogKGVuZC54IC0gc3RhcnQueCArIHRhblRoZXRhICogKGVuZC55IC0gc3RhcnQueSkpKSAvICh0YW5UaGV0YTIgKyAxKSArIHN0YXJ0Lnk7XG4gICAgZWwuc2V0QXR0cmlidXRlKCd4MScsIHN0YXJ0LngpO1xuICAgIGVsLnNldEF0dHJpYnV0ZSgneTEnLCBzdGFydC55KTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3gyJywgeCk7XG4gICAgZWwuc2V0QXR0cmlidXRlKCd5MicsIHkpO1xuICAgIGVsLmlubmVySFRNTCA9IGFkZFN0b3Aoc3RlcHMpO1xufVxuZnVuY3Rpb24gcGFyc2VSYWRpYWxHcmFkaWVudChjb2xvciwgc2VsZikge1xuICAgIHZhciBhcnIgPSByZWdleFJHLmV4ZWMoY29sb3IpO1xuICAgIHZhciBjeCA9IHBhcnNlRmxvYXQoYXJyWzFdKTtcbiAgICB2YXIgY3kgPSBwYXJzZUZsb2F0KGFyclsyXSk7XG4gICAgdmFyIHIgPSBwYXJzZUZsb2F0KGFyclszXSk7XG4gICAgdmFyIHN0ZXBzID0gYXJyWzRdO1xuICAgIHNlbGYuc2V0QXR0cmlidXRlKCdjeCcsIGN4KTtcbiAgICBzZWxmLnNldEF0dHJpYnV0ZSgnY3knLCBjeSk7XG4gICAgc2VsZi5zZXRBdHRyaWJ1dGUoJ3InLCByKTtcbiAgICBzZWxmLmlubmVySFRNTCA9IGFkZFN0b3Aoc3RlcHMpO1xufVxudmFyIEdyYWRpZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEdyYWRpZW50KGNmZykge1xuICAgICAgICB0aGlzLmNmZyA9IHt9O1xuICAgICAgICB2YXIgZWwgPSBudWxsO1xuICAgICAgICB2YXIgaWQgPSB1bmlxdWVJZCgnZ3JhZGllbnRfJyk7XG4gICAgICAgIGlmIChjZmcudG9Mb3dlckNhc2UoKVswXSA9PT0gJ2wnKSB7XG4gICAgICAgICAgICBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ2xpbmVhckdyYWRpZW50Jyk7XG4gICAgICAgICAgICBwYXJzZUxpbmVHcmFkaWVudChjZmcsIGVsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVsID0gY3JlYXRlU1ZHRWxlbWVudCgncmFkaWFsR3JhZGllbnQnKTtcbiAgICAgICAgICAgIHBhcnNlUmFkaWFsR3JhZGllbnQoY2ZnLCBlbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcbiAgICAgICAgdGhpcy5lbCA9IGVsO1xuICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIHRoaXMuY2ZnID0gY2ZnO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgR3JhZGllbnQucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gKHR5cGUsIGF0dHIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2ZnID09PSBhdHRyO1xuICAgIH07XG4gICAgcmV0dXJuIEdyYWRpZW50O1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IEdyYWRpZW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z3JhZGllbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/gradient.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/defs/index.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/defs/index.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _gradient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gradient */ \"./node_modules/@antv/g-svg/esm/defs/gradient.js\");\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shadow */ \"./node_modules/@antv/g-svg/esm/defs/shadow.js\");\n/* harmony import */ var _arrow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./arrow */ \"./node_modules/@antv/g-svg/esm/defs/arrow.js\");\n/* harmony import */ var _clip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clip */ \"./node_modules/@antv/g-svg/esm/defs/clip.js\");\n/* harmony import */ var _pattern__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pattern */ \"./node_modules/@antv/g-svg/esm/defs/pattern.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview defs\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\n\n\nvar Defs = /** @class */ (function () {\n function Defs(canvas) {\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_6__[\"createSVGElement\"])('defs');\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('defs_');\n el.id = id;\n canvas.appendChild(el);\n this.children = [];\n this.defaultArrow = {};\n this.el = el;\n this.canvas = canvas;\n }\n Defs.prototype.find = function (type, attr) {\n var children = this.children;\n var result = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].match(type, attr)) {\n result = children[i].id;\n break;\n }\n }\n return result;\n };\n Defs.prototype.findById = function (id) {\n var children = this.children;\n var flag = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].id === id) {\n flag = children[i];\n break;\n }\n }\n return flag;\n };\n Defs.prototype.add = function (item) {\n this.children.push(item);\n item.canvas = this.canvas;\n item.parent = this;\n };\n Defs.prototype.getDefaultArrow = function (attrs, name) {\n var stroke = attrs.stroke || attrs.strokeStyle;\n if (this.defaultArrow[stroke]) {\n return this.defaultArrow[stroke].id;\n }\n var arrow = new _arrow__WEBPACK_IMPORTED_MODULE_3__[\"default\"](attrs, name);\n this.defaultArrow[stroke] = arrow;\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addGradient = function (cfg) {\n var gradient = new _gradient__WEBPACK_IMPORTED_MODULE_1__[\"default\"](cfg);\n this.el.appendChild(gradient.el);\n this.add(gradient);\n return gradient.id;\n };\n Defs.prototype.addArrow = function (attrs, name) {\n var arrow = new _arrow__WEBPACK_IMPORTED_MODULE_3__[\"default\"](attrs, name);\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addShadow = function (cfg) {\n var shadow = new _shadow__WEBPACK_IMPORTED_MODULE_2__[\"default\"](cfg);\n this.el.appendChild(shadow.el);\n this.add(shadow);\n return shadow.id;\n };\n Defs.prototype.addPattern = function (cfg) {\n var pattern = new _pattern__WEBPACK_IMPORTED_MODULE_5__[\"default\"](cfg);\n this.el.appendChild(pattern.el);\n this.add(pattern);\n return pattern.id;\n };\n Defs.prototype.addClip = function (cfg) {\n var clip = new _clip__WEBPACK_IMPORTED_MODULE_4__[\"default\"](cfg);\n this.el.appendChild(clip.el);\n this.add(clip);\n return clip.id;\n };\n return Defs;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Defs);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvaW5kZXguanM/ZmUzNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDc0M7QUFDSjtBQUNKO0FBQ0Y7QUFDRjtBQUNNO0FBQ2U7QUFDL0M7QUFDQTtBQUNBLGlCQUFpQixrRUFBZ0I7QUFDakMsaUJBQWlCLDJEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixxQkFBcUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw4Q0FBSztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsaURBQVE7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw4Q0FBSztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLCtDQUFNO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsZ0RBQU87QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw2Q0FBSTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgZGVmc1xuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEdyYWRpZW50IGZyb20gJy4vZ3JhZGllbnQnO1xuaW1wb3J0IFNoYWRvdyBmcm9tICcuL3NoYWRvdyc7XG5pbXBvcnQgQXJyb3cgZnJvbSAnLi9hcnJvdyc7XG5pbXBvcnQgQ2xpcCBmcm9tICcuL2NsaXAnO1xuaW1wb3J0IFBhdHRlcm4gZnJvbSAnLi9wYXR0ZXJuJztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RvbSc7XG52YXIgRGVmcyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEZWZzKGNhbnZhcykge1xuICAgICAgICB2YXIgZWwgPSBjcmVhdGVTVkdFbGVtZW50KCdkZWZzJyk7XG4gICAgICAgIHZhciBpZCA9IHVuaXF1ZUlkKCdkZWZzXycpO1xuICAgICAgICBlbC5pZCA9IGlkO1xuICAgICAgICBjYW52YXMuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107XG4gICAgICAgIHRoaXMuZGVmYXVsdEFycm93ID0ge307XG4gICAgICAgIHRoaXMuZWwgPSBlbDtcbiAgICAgICAgdGhpcy5jYW52YXMgPSBjYW52YXM7XG4gICAgfVxuICAgIERlZnMucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAodHlwZSwgYXR0cikge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLm1hdGNoKHR5cGUsIGF0dHIpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hpbGRyZW5baV0uaWQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIERlZnMucHJvdG90eXBlLmZpbmRCeUlkID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XG4gICAgICAgIHZhciBmbGFnID0gbnVsbDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmlkID09PSBpZCkge1xuICAgICAgICAgICAgICAgIGZsYWcgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmxhZztcbiAgICB9O1xuICAgIERlZnMucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaChpdGVtKTtcbiAgICAgICAgaXRlbS5jYW52YXMgPSB0aGlzLmNhbnZhcztcbiAgICAgICAgaXRlbS5wYXJlbnQgPSB0aGlzO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuZ2V0RGVmYXVsdEFycm93ID0gZnVuY3Rpb24gKGF0dHJzLCBuYW1lKSB7XG4gICAgICAgIHZhciBzdHJva2UgPSBhdHRycy5zdHJva2UgfHwgYXR0cnMuc3Ryb2tlU3R5bGU7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRBcnJvd1tzdHJva2VdKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0QXJyb3dbc3Ryb2tlXS5pZDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXJyb3cgPSBuZXcgQXJyb3coYXR0cnMsIG5hbWUpO1xuICAgICAgICB0aGlzLmRlZmF1bHRBcnJvd1tzdHJva2VdID0gYXJyb3c7XG4gICAgICAgIHRoaXMuZWwuYXBwZW5kQ2hpbGQoYXJyb3cuZWwpO1xuICAgICAgICB0aGlzLmFkZChhcnJvdyk7XG4gICAgICAgIHJldHVybiBhcnJvdy5pZDtcbiAgICB9O1xuICAgIERlZnMucHJvdG90eXBlLmFkZEdyYWRpZW50ID0gZnVuY3Rpb24gKGNmZykge1xuICAgICAgICB2YXIgZ3JhZGllbnQgPSBuZXcgR3JhZGllbnQoY2ZnKTtcbiAgICAgICAgdGhpcy5lbC5hcHBlbmRDaGlsZChncmFkaWVudC5lbCk7XG4gICAgICAgIHRoaXMuYWRkKGdyYWRpZW50KTtcbiAgICAgICAgcmV0dXJuIGdyYWRpZW50LmlkO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuYWRkQXJyb3cgPSBmdW5jdGlvbiAoYXR0cnMsIG5hbWUpIHtcbiAgICAgICAgdmFyIGFycm93ID0gbmV3IEFycm93KGF0dHJzLCBuYW1lKTtcbiAgICAgICAgdGhpcy5lbC5hcHBlbmRDaGlsZChhcnJvdy5lbCk7XG4gICAgICAgIHRoaXMuYWRkKGFycm93KTtcbiAgICAgICAgcmV0dXJuIGFycm93LmlkO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuYWRkU2hhZG93ID0gZnVuY3Rpb24gKGNmZykge1xuICAgICAgICB2YXIgc2hhZG93ID0gbmV3IFNoYWRvdyhjZmcpO1xuICAgICAgICB0aGlzLmVsLmFwcGVuZENoaWxkKHNoYWRvdy5lbCk7XG4gICAgICAgIHRoaXMuYWRkKHNoYWRvdyk7XG4gICAgICAgIHJldHVybiBzaGFkb3cuaWQ7XG4gICAgfTtcbiAgICBEZWZzLnByb3RvdHlwZS5hZGRQYXR0ZXJuID0gZnVuY3Rpb24gKGNmZykge1xuICAgICAgICB2YXIgcGF0dGVybiA9IG5ldyBQYXR0ZXJuKGNmZyk7XG4gICAgICAgIHRoaXMuZWwuYXBwZW5kQ2hpbGQocGF0dGVybi5lbCk7XG4gICAgICAgIHRoaXMuYWRkKHBhdHRlcm4pO1xuICAgICAgICByZXR1cm4gcGF0dGVybi5pZDtcbiAgICB9O1xuICAgIERlZnMucHJvdG90eXBlLmFkZENsaXAgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgICAgIHZhciBjbGlwID0gbmV3IENsaXAoY2ZnKTtcbiAgICAgICAgdGhpcy5lbC5hcHBlbmRDaGlsZChjbGlwLmVsKTtcbiAgICAgICAgdGhpcy5hZGQoY2xpcCk7XG4gICAgICAgIHJldHVybiBjbGlwLmlkO1xuICAgIH07XG4gICAgcmV0dXJuIERlZnM7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgRGVmcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/defs/pattern.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/defs/pattern.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview pattern\n * @author dengfuping_develop@163.com\n */\n\n\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar Pattern = /** @class */ (function () {\n function Pattern(cfg) {\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('pattern');\n el.setAttribute('patternUnits', 'userSpaceOnUse');\n var child = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('image');\n el.appendChild(child);\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('pattern_');\n el.id = id;\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n var arr = regexPR.exec(cfg);\n var source = arr[2];\n child.setAttribute('href', source);\n var img = new Image();\n if (!source.match(/^data:/i)) {\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n function onload() {\n el.setAttribute('width', \"\" + img.width);\n el.setAttribute('height', \"\" + img.height);\n }\n if (img.complete) {\n onload();\n }\n else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return this;\n }\n Pattern.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Pattern;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Pattern);\n//# sourceMappingURL=pattern.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvcGF0dGVybi5qcz8wMGYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ3NDO0FBQ1M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDO0FBQ0Esb0JBQW9CLGtFQUFnQjtBQUNwQztBQUNBLGlCQUFpQiwyREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2Msc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vZGVmcy9wYXR0ZXJuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IHBhdHRlcm5cbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RvbSc7XG52YXIgcmVnZXhQUiA9IC9ecFxccypcXChcXHMqKFtheHluXSlcXHMqXFwpXFxzKiguKikvaTtcbnZhciBQYXR0ZXJuID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFBhdHRlcm4oY2ZnKSB7XG4gICAgICAgIHRoaXMuY2ZnID0ge307XG4gICAgICAgIHZhciBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ3BhdHRlcm4nKTtcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdwYXR0ZXJuVW5pdHMnLCAndXNlclNwYWNlT25Vc2UnKTtcbiAgICAgICAgdmFyIGNoaWxkID0gY3JlYXRlU1ZHRWxlbWVudCgnaW1hZ2UnKTtcbiAgICAgICAgZWwuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuICAgICAgICB2YXIgaWQgPSB1bmlxdWVJZCgncGF0dGVybl8nKTtcbiAgICAgICAgZWwuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5lbCA9IGVsO1xuICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIHRoaXMuY2ZnID0gY2ZnO1xuICAgICAgICB2YXIgYXJyID0gcmVnZXhQUi5leGVjKGNmZyk7XG4gICAgICAgIHZhciBzb3VyY2UgPSBhcnJbMl07XG4gICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgnaHJlZicsIHNvdXJjZSk7XG4gICAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgaWYgKCFzb3VyY2UubWF0Y2goL15kYXRhOi9pKSkge1xuICAgICAgICAgICAgaW1nLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XG4gICAgICAgIH1cbiAgICAgICAgaW1nLnNyYyA9IHNvdXJjZTtcbiAgICAgICAgZnVuY3Rpb24gb25sb2FkKCkge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd3aWR0aCcsIFwiXCIgKyBpbWcud2lkdGgpO1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBcIlwiICsgaW1nLmhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGltZy5jb21wbGV0ZSkge1xuICAgICAgICAgICAgb25sb2FkKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpbWcub25sb2FkID0gb25sb2FkO1xuICAgICAgICAgICAgLy8gRml4IG9ubG9hZCgpIGJ1ZyBpbiBJRTlcbiAgICAgICAgICAgIGltZy5zcmMgPSBpbWcuc3JjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBQYXR0ZXJuLnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uICh0eXBlLCBhdHRyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNmZyA9PT0gYXR0cjtcbiAgICB9O1xuICAgIHJldHVybiBQYXR0ZXJuO1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IFBhdHRlcm47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXR0ZXJuLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/pattern.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/defs/shadow.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/defs/shadow.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview shadow\n * @author dengfuping_develop@163.com\n */\n\n\nvar ATTR_MAP = {\n shadowColor: 'color',\n shadowOpacity: 'opacity',\n shadowBlur: 'blur',\n shadowOffsetX: 'dx',\n shadowOffsetY: 'dy',\n};\nvar SHADOW_DIMENSION = {\n x: '-40%',\n y: '-40%',\n width: '200%',\n height: '200%',\n};\nvar Shadow = /** @class */ (function () {\n function Shadow(cfg) {\n this.type = 'filter';\n this.cfg = {};\n this.type = 'filter';\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('filter');\n // expand the filter region to fill in shadows\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(SHADOW_DIMENSION, function (v, k) {\n el.setAttribute(k, v);\n });\n this.el = el;\n this.id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('filter_');\n this.el.id = this.id;\n this.cfg = cfg;\n this._parseShadow(cfg, el);\n return this;\n }\n Shadow.prototype.match = function (type, cfg) {\n if (this.type !== type) {\n return false;\n }\n var flag = true;\n var config = this.cfg;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(Object.keys(config), function (attr) {\n if (config[attr] !== cfg[attr]) {\n flag = false;\n return false;\n }\n });\n return flag;\n };\n Shadow.prototype.update = function (name, value) {\n var config = this.cfg;\n config[ATTR_MAP[name]] = value;\n this._parseShadow(config, this.el);\n return this;\n };\n Shadow.prototype._parseShadow = function (config, el) {\n var child = \"\";\n el.innerHTML = child;\n };\n return Shadow;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Shadow);\n//# sourceMappingURL=shadow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2RlZnMvc2hhZG93LmpzPzE3MjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDRztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUztBQUNUO0FBQ0Esa0JBQWtCLDJEQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2MscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vZGVmcy9zaGFkb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgc2hhZG93XG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IGVhY2gsIHVuaXF1ZUlkIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVTVkdFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9kb20nO1xudmFyIEFUVFJfTUFQID0ge1xuICAgIHNoYWRvd0NvbG9yOiAnY29sb3InLFxuICAgIHNoYWRvd09wYWNpdHk6ICdvcGFjaXR5JyxcbiAgICBzaGFkb3dCbHVyOiAnYmx1cicsXG4gICAgc2hhZG93T2Zmc2V0WDogJ2R4JyxcbiAgICBzaGFkb3dPZmZzZXRZOiAnZHknLFxufTtcbnZhciBTSEFET1dfRElNRU5TSU9OID0ge1xuICAgIHg6ICctNDAlJyxcbiAgICB5OiAnLTQwJScsXG4gICAgd2lkdGg6ICcyMDAlJyxcbiAgICBoZWlnaHQ6ICcyMDAlJyxcbn07XG52YXIgU2hhZG93ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNoYWRvdyhjZmcpIHtcbiAgICAgICAgdGhpcy50eXBlID0gJ2ZpbHRlcic7XG4gICAgICAgIHRoaXMuY2ZnID0ge307XG4gICAgICAgIHRoaXMudHlwZSA9ICdmaWx0ZXInO1xuICAgICAgICB2YXIgZWwgPSBjcmVhdGVTVkdFbGVtZW50KCdmaWx0ZXInKTtcbiAgICAgICAgLy8gZXhwYW5kIHRoZSBmaWx0ZXIgcmVnaW9uIHRvIGZpbGwgaW4gc2hhZG93c1xuICAgICAgICBlYWNoKFNIQURPV19ESU1FTlNJT04sIGZ1bmN0aW9uICh2LCBrKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoaywgdik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVsID0gZWw7XG4gICAgICAgIHRoaXMuaWQgPSB1bmlxdWVJZCgnZmlsdGVyXycpO1xuICAgICAgICB0aGlzLmVsLmlkID0gdGhpcy5pZDtcbiAgICAgICAgdGhpcy5jZmcgPSBjZmc7XG4gICAgICAgIHRoaXMuX3BhcnNlU2hhZG93KGNmZywgZWwpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgU2hhZG93LnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uICh0eXBlLCBjZmcpIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSAhPT0gdHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmbGFnID0gdHJ1ZTtcbiAgICAgICAgdmFyIGNvbmZpZyA9IHRoaXMuY2ZnO1xuICAgICAgICBlYWNoKE9iamVjdC5rZXlzKGNvbmZpZyksIGZ1bmN0aW9uIChhdHRyKSB7XG4gICAgICAgICAgICBpZiAoY29uZmlnW2F0dHJdICE9PSBjZmdbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZsYWc7XG4gICAgfTtcbiAgICBTaGFkb3cucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgICAgICB2YXIgY29uZmlnID0gdGhpcy5jZmc7XG4gICAgICAgIGNvbmZpZ1tBVFRSX01BUFtuYW1lXV0gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fcGFyc2VTaGFkb3coY29uZmlnLCB0aGlzLmVsKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBTaGFkb3cucHJvdG90eXBlLl9wYXJzZVNoYWRvdyA9IGZ1bmN0aW9uIChjb25maWcsIGVsKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IFwiPGZlRHJvcFNoYWRvd1xcbiAgICAgIGR4PVxcXCJcIiArIChjb25maWcuZHggfHwgMCkgKyBcIlxcXCJcXG4gICAgICBkeT1cXFwiXCIgKyAoY29uZmlnLmR5IHx8IDApICsgXCJcXFwiXFxuICAgICAgc3RkRGV2aWF0aW9uPVxcXCJcIiArIChjb25maWcuYmx1ciA/IGNvbmZpZy5ibHVyIC8gMTAgOiAwKSArIFwiXFxcIlxcbiAgICAgIGZsb29kLWNvbG9yPVxcXCJcIiArIChjb25maWcuY29sb3IgPyBjb25maWcuY29sb3IgOiAnIzAwMCcpICsgXCJcXFwiXFxuICAgICAgZmxvb2Qtb3BhY2l0eT1cXFwiXCIgKyAoY29uZmlnLm9wYWNpdHkgPyBjb25maWcub3BhY2l0eSA6IDEpICsgXCJcXFwiXFxuICAgICAgLz5cIjtcbiAgICAgICAgZWwuaW5uZXJIVE1MID0gY2hpbGQ7XG4gICAgfTtcbiAgICByZXR1cm4gU2hhZG93O1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IFNoYWRvdztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYWRvdy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/defs/shadow.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/group.js": /*!***********************************************!*\ !*** ./node_modules/@antv/g-svg/esm/group.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/svg */ \"./node_modules/@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n\n\n\n\n\n\n\n\nvar Group = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // SVG 中分组对应实体标签 \n Group.prototype.isEntityGroup = function () {\n return true;\n };\n Group.prototype.createDom = function () {\n var element = Object(_util_dom__WEBPACK_IMPORTED_MODULE_7__[\"createSVGElement\"])('g');\n this.set('el', element);\n var parent = this.getParent();\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n }\n else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n };\n // 覆盖基类的 afterAttrsChange 方法\n Group.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.createPath(context, targetAttrs);\n }\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"refreshElement\"])(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_3__;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n Group.prototype.draw = function (context) {\n var children = this.getChildren();\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n }\n else {\n if (!el) {\n this.createDom();\n }\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_5__[\"setClip\"])(this, context);\n this.createPath(context);\n if (children.length) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"drawChildren\"])(context, children);\n }\n }\n };\n /**\n * 绘制分组的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n Group.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (_constant__WEBPACK_IMPORTED_MODULE_6__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_6__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_5__[\"setTransform\"])(this);\n };\n return Group;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractGroup\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Group);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2dyb3VwLmpzP2U3M2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ1c7QUFDWDtBQUNEO0FBQzBCO0FBQ1I7QUFDVDtBQUNJO0FBQzlDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isa0VBQWdCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxRQUFRLGlFQUFjO0FBQ3RCO0FBQ0E7QUFDQSxlQUFlLG1DQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBTztBQUNuQjtBQUNBO0FBQ0EsZ0JBQWdCLCtEQUFZO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLEtBQUs7QUFDcEIsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaLGdCQUFnQixzREFBWTtBQUM1QixnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1QsUUFBUSw4REFBWTtBQUNwQjtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDBEQUFhO0FBQ0Esb0VBQUssRUFBQztBQUNyQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vZ3JvdXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFic3RyYWN0R3JvdXAgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0ICogYXMgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBkcmF3Q2hpbGRyZW4sIHJlZnJlc2hFbGVtZW50IH0gZnJvbSAnLi91dGlsL2RyYXcnO1xuaW1wb3J0IHsgc2V0Q2xpcCwgc2V0VHJhbnNmb3JtIH0gZnJvbSAnLi91dGlsL3N2Zyc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuL2NvbnN0YW50JztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuL3V0aWwvZG9tJztcbnZhciBHcm91cCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoR3JvdXAsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gR3JvdXAoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgLy8gU1ZHIOS4reWIhue7hOWvueW6lOWunuS9k+agh+etviA8Zz5cbiAgICBHcm91cC5wcm90b3R5cGUuaXNFbnRpdHlHcm91cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBHcm91cC5wcm90b3R5cGUuY3JlYXRlRG9tID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWxlbWVudCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ2cnKTtcbiAgICAgICAgdGhpcy5zZXQoJ2VsJywgZWxlbWVudCk7XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IHBhcmVudC5nZXQoJ2VsJyk7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBwYXJlbnROb2RlIG1heWJlIG51bGwgZm9yIGdyb3VwXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudC5jcmVhdGVEb20oKTtcbiAgICAgICAgICAgICAgICBwYXJlbnQuc2V0KCdlbCcsIHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfTtcbiAgICAvLyDopobnm5bln7rnsbvnmoQgYWZ0ZXJBdHRyc0NoYW5nZSDmlrnms5VcbiAgICBHcm91cC5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZSA9IGZ1bmN0aW9uICh0YXJnZXRBdHRycykge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmFmdGVyQXR0cnNDaGFuZ2UuY2FsbCh0aGlzLCB0YXJnZXRBdHRycyk7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgICAgIC8vIOWPquacieaMgui9veWIsOeUu+W4g+S4i++8jOaJjeWvueWFg+e0oOi/m+ihjOWunumZhea4suafk1xuICAgICAgICBpZiAoY2FudmFzICYmIGNhbnZhcy5nZXQoJ2F1dG9EcmF3JykpIHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldCgnY29udGV4dCcpO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXRoKGNvbnRleHQsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIEdyb3VwLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIHJlZnJlc2hFbGVtZW50KHRoaXMsIGNoYW5nZVR5cGUpO1xuICAgIH07XG4gICAgR3JvdXAucHJvdG90eXBlLmdldFNoYXBlQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFNoYXBlO1xuICAgIH07XG4gICAgR3JvdXAucHJvdG90eXBlLmdldEdyb3VwQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEdyb3VwO1xuICAgIH07XG4gICAgR3JvdXAucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAodGhpcy5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZURvbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0Q2xpcCh0aGlzLCBjb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlUGF0aChjb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBkcmF3Q2hpbGRyZW4oY29udGV4dCwgY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnu5jliLbliIbnu4TnmoTot6/lvoRcbiAgICAgKiBAcGFyYW0ge0RlZnN9IGNvbnRleHQg5LiK5LiL5paHXG4gICAgICogQHBhcmFtIHtTaGFwZUF0dHJzfSB0YXJnZXRBdHRycyDmuLLmn5PnmoTnm67moIflsZ7mgKdcbiAgICAgKi9cbiAgICBHcm91cC5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRyYW5zZm9ybSh0aGlzKTtcbiAgICB9O1xuICAgIHJldHVybiBHcm91cDtcbn0oQWJzdHJhY3RHcm91cCkpO1xuZXhwb3J0IGRlZmF1bHQgR3JvdXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncm91cC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/group.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/index.js": /*!***********************************************!*\ !*** ./node_modules/@antv/g-svg/esm/index.js ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-svg/esm/shape/index.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _shape__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _antv_g_base__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Canvas\",\"Group\",\"Shape\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./canvas */ \"./node_modules/@antv/g-svg/esm/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Canvas\", function() { return _canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./group */ \"./node_modules/@antv/g-svg/esm/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Group\", function() { return _group__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\nvar version = '0.5.6';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2luZGV4LmpzP2JmYjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0o7QUFDZ0I7QUFDRjtBQUMxQjtBQUNWO0FBQ1AiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5leHBvcnQgKiBmcm9tICdAYW50di9nLWJhc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBDYW52YXMgfSBmcm9tICcuL2NhbnZhcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEdyb3VwIH0gZnJvbSAnLi9ncm91cCc7XG5leHBvcnQgeyBTaGFwZSB9O1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJzAuNS42Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/base.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/base.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/svg */ \"./node_modules/@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./index */ \"./node_modules/@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../group */ \"./node_modules/@antv/g-svg/esm/group.js\");\n\n\n\n\n\n\n\n\n\nvar ShapeBase = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ShapeBase, _super);\n function ShapeBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'svg';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { lineWidth: 1, lineAppendWidth: 0, strokeOpacity: 1, fillOpacity: 1 });\n };\n // 覆盖基类的 afterAttrsChange 方法\n ShapeBase.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.draw(context, targetAttrs);\n }\n };\n ShapeBase.prototype.getShapeBase = function () {\n return _index__WEBPACK_IMPORTED_MODULE_6__;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"refreshElement\"])(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var el = this.get('el');\n var bbox = null;\n // 包围盒计算依赖于绘制,如果还没有生成对应的 Dom 元素,则包围盒的长宽均为 0\n if (el) {\n bbox = el.getBBox();\n }\n else {\n var bboxMethod = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxMethod\"])(this.get('type'));\n if (bboxMethod) {\n bbox = bboxMethod(this);\n }\n }\n if (bbox) {\n var x = bbox.x, y = bbox.y, width = bbox.width, height = bbox.height;\n var lineWidth = this.getHitLineWidth();\n var halfWidth = lineWidth / 2;\n var minX = x - halfWidth;\n var minY = y - halfWidth;\n var maxX = x + width + halfWidth;\n var maxY = y + height + halfWidth;\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: width + lineWidth,\n height: height + lineWidth,\n };\n }\n return {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0,\n };\n };\n ShapeBase.prototype.isFill = function () {\n var _a = this.attr(), fill = _a.fill, fillStyle = _a.fillStyle;\n return (fill || fillStyle || this.isClipShape()) && this.canFill;\n };\n ShapeBase.prototype.isStroke = function () {\n var _a = this.attr(), stroke = _a.stroke, strokeStyle = _a.strokeStyle;\n return (stroke || strokeStyle) && this.canStroke;\n };\n ShapeBase.prototype.draw = function (context, targetAttrs) {\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n }\n else {\n if (!el) {\n Object(_util_dom__WEBPACK_IMPORTED_MODULE_3__[\"createDom\"])(this);\n }\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setClip\"])(this, context);\n this.createPath(context, targetAttrs);\n this.shadow(context, targetAttrs);\n this.strokeAndFill(context, targetAttrs);\n this.transform(targetAttrs);\n }\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n ShapeBase.prototype.createPath = function (context, targetAttrs) { };\n // stroke and fill\n ShapeBase.prototype.strokeAndFill = function (context, targetAttrs) {\n var attrs = targetAttrs || this.attr();\n var fill = attrs.fill, fillStyle = attrs.fillStyle, stroke = attrs.stroke, strokeStyle = attrs.strokeStyle, fillOpacity = attrs.fillOpacity, strokeOpacity = attrs.strokeOpacity, lineWidth = attrs.lineWidth;\n var el = this.get('el');\n if (this.canFill) {\n // 初次渲染和更新渲染的逻辑有所不同: 初次渲染值为空时,需要设置为 none,否则就会是黑色,而更新渲染则不需要\n if (!targetAttrs) {\n this._setColor(context, 'fill', fill || fillStyle);\n }\n else if ('fill' in attrs) {\n this._setColor(context, 'fill', fill);\n }\n else if ('fillStyle' in attrs) {\n // compatible with fillStyle\n this._setColor(context, 'fill', fillStyle);\n }\n if (fillOpacity) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['fillOpacity'], fillOpacity);\n }\n }\n if (this.canStroke && lineWidth > 0) {\n if (!targetAttrs) {\n this._setColor(context, 'stroke', stroke || strokeStyle);\n }\n else if ('stroke' in attrs) {\n this._setColor(context, 'stroke', stroke);\n }\n else if ('strokeStyle' in attrs) {\n // compatible with strokeStyle\n this._setColor(context, 'stroke', strokeStyle);\n }\n if (strokeOpacity) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['strokeOpacity'], strokeOpacity);\n }\n if (lineWidth) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['lineWidth'], lineWidth);\n }\n }\n };\n ShapeBase.prototype._setColor = function (context, attr, value) {\n var el = this.get('el');\n if (!value) {\n // need to set `none` to avoid default value\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], 'none');\n return;\n }\n value = value.trim();\n if (/^[r,R,L,l]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('gradient', value);\n if (!id) {\n id = context.addGradient(value);\n }\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else if (/^[p,P]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('pattern', value);\n if (!id) {\n id = context.addPattern(value);\n }\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], value);\n }\n };\n ShapeBase.prototype.shadow = function (context, targetAttrs) {\n var attrs = this.attr();\n var _a = targetAttrs || attrs, shadowOffsetX = _a.shadowOffsetX, shadowOffsetY = _a.shadowOffsetY, shadowBlur = _a.shadowBlur, shadowColor = _a.shadowColor;\n if (shadowOffsetX || shadowOffsetY || shadowBlur || shadowColor) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setShadow\"])(this, context);\n }\n };\n ShapeBase.prototype.transform = function (targetAttrs) {\n var attrs = this.attr();\n var matrix = (targetAttrs || attrs).matrix;\n if (matrix) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setTransform\"])(this);\n }\n };\n ShapeBase.prototype.isInShape = function (refX, refY) {\n return this.isPointInPath(refX, refY);\n };\n ShapeBase.prototype.isPointInPath = function (refX, refY) {\n var el = this.get('el');\n var canvas = this.get('canvas');\n var bbox = canvas.get('el').getBoundingClientRect();\n var clientX = refX + bbox.left;\n var clientY = refY + bbox.top;\n var element = document.elementFromPoint(clientX, clientY);\n if (element && element.isEqualNode(el)) {\n return true;\n }\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n var _a = this.attrs, lineWidth = _a.lineWidth, lineAppendWidth = _a.lineAppendWidth;\n if (this.isStroke()) {\n return lineWidth + lineAppendWidth;\n }\n return 0;\n };\n return ShapeBase;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractShape\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ShapeBase);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2Jhc2UuanM/MTNkNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEM7QUFDQztBQUNrQjtBQUN2QjtBQUNNO0FBQ0g7QUFDVjtBQUNKO0FBQ2dCO0FBQzdDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxxRUFBcUU7QUFDbkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtQ0FBSztBQUNwQjtBQUNBO0FBQ0EsZUFBZSw4Q0FBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBLFFBQVEsaUVBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGtFQUFhO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBUztBQUN6QjtBQUNBLFlBQVkseURBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxLQUFLO0FBQ3BCLGVBQWUsV0FBVztBQUMxQjtBQUNBLHNFQUFzRTtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBO0FBQ0EsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHNEQUFZO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixFQUFFO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHNEQUFZO0FBQ3hDO0FBQ0EseUJBQXlCLEVBQUU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsc0RBQVk7QUFDeEM7QUFDQTtBQUNBLDRCQUE0QixzREFBWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksOERBQVk7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsMERBQWE7QUFDQSx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9iYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQWJzdHJhY3RTaGFwZSB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgeyBzZXRTaGFkb3csIHNldFRyYW5zZm9ybSwgc2V0Q2xpcCB9IGZyb20gJy4uL3V0aWwvc3ZnJztcbmltcG9ydCB7IGNyZWF0ZURvbSB9IGZyb20gJy4uL3V0aWwvZG9tJztcbmltcG9ydCB7IHJlZnJlc2hFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9kcmF3JztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCAqIGFzIFNoYXBlIGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IEdyb3VwIGZyb20gJy4uL2dyb3VwJztcbmltcG9ydCB7IGdldEJCb3hNZXRob2QgfSBmcm9tICdAYW50di9nLWJhc2UnO1xudmFyIFNoYXBlQmFzZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU2hhcGVCYXNlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNoYXBlQmFzZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAnc3ZnJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgLy8g6K6+572u6buY6K6k5YC8XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IGxpbmVXaWR0aDogMSwgbGluZUFwcGVuZFdpZHRoOiAwLCBzdHJva2VPcGFjaXR5OiAxLCBmaWxsT3BhY2l0eTogMSB9KTtcbiAgICB9O1xuICAgIC8vIOimhuebluWfuuexu+eahCBhZnRlckF0dHJzQ2hhbmdlIOaWueazlVxuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZSA9IGZ1bmN0aW9uICh0YXJnZXRBdHRycykge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmFmdGVyQXR0cnNDaGFuZ2UuY2FsbCh0aGlzLCB0YXJnZXRBdHRycyk7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgICAgIC8vIOWPquacieaMgui9veWIsOeUu+W4g+S4i++8jOaJjeWvueWFg+e0oOi/m+ihjOWunumZhea4suafk1xuICAgICAgICBpZiAoY2FudmFzICYmIGNhbnZhcy5nZXQoJ2F1dG9EcmF3JykpIHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdldCgnY29udGV4dCcpO1xuICAgICAgICAgICAgdGhpcy5kcmF3KGNvbnRleHQsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRTaGFwZUJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBTaGFwZTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZ2V0R3JvdXBCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gR3JvdXA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIHJlZnJlc2hFbGVtZW50KHRoaXMsIGNoYW5nZVR5cGUpO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5jYWxjdWxhdGVCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGJib3ggPSBudWxsO1xuICAgICAgICAvLyDljIXlm7Tnm5LorqHnrpfkvp3otZbkuo7nu5jliLbvvIzlpoLmnpzov5jmsqHmnInnlJ/miJDlr7nlupTnmoQgRG9tIOWFg+e0oO+8jOWImeWMheWbtOebkueahOmVv+WuveWdh+S4uiAwXG4gICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgYmJveCA9IGVsLmdldEJCb3goKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBiYm94TWV0aG9kID0gZ2V0QkJveE1ldGhvZCh0aGlzLmdldCgndHlwZScpKTtcbiAgICAgICAgICAgIGlmIChiYm94TWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgYmJveCA9IGJib3hNZXRob2QodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJib3gpIHtcbiAgICAgICAgICAgIHZhciB4ID0gYmJveC54LCB5ID0gYmJveC55LCB3aWR0aCA9IGJib3gud2lkdGgsIGhlaWdodCA9IGJib3guaGVpZ2h0O1xuICAgICAgICAgICAgdmFyIGxpbmVXaWR0aCA9IHRoaXMuZ2V0SGl0TGluZVdpZHRoKCk7XG4gICAgICAgICAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICAgICAgICAgIHZhciBtaW5YID0geCAtIGhhbGZXaWR0aDtcbiAgICAgICAgICAgIHZhciBtaW5ZID0geSAtIGhhbGZXaWR0aDtcbiAgICAgICAgICAgIHZhciBtYXhYID0geCArIHdpZHRoICsgaGFsZldpZHRoO1xuICAgICAgICAgICAgdmFyIG1heFkgPSB5ICsgaGVpZ2h0ICsgaGFsZldpZHRoO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB4OiBtaW5YLFxuICAgICAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgICAgICAgICBtaW5ZOiBtaW5ZLFxuICAgICAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICAgICAgbWF4WTogbWF4WSxcbiAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggKyBsaW5lV2lkdGgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgKyBsaW5lV2lkdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIG1pblg6IDAsXG4gICAgICAgICAgICBtaW5ZOiAwLFxuICAgICAgICAgICAgbWF4WDogMCxcbiAgICAgICAgICAgIG1heFk6IDAsXG4gICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuaXNGaWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgZmlsbCA9IF9hLmZpbGwsIGZpbGxTdHlsZSA9IF9hLmZpbGxTdHlsZTtcbiAgICAgICAgcmV0dXJuIChmaWxsIHx8IGZpbGxTdHlsZSB8fCB0aGlzLmlzQ2xpcFNoYXBlKCkpICYmIHRoaXMuY2FuRmlsbDtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuaXNTdHJva2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCBzdHJva2UgPSBfYS5zdHJva2UsIHN0cm9rZVN0eWxlID0gX2Euc3Ryb2tlU3R5bGU7XG4gICAgICAgIHJldHVybiAoc3Ryb2tlIHx8IHN0cm9rZVN0eWxlKSAmJiB0aGlzLmNhblN0cm9rZTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWVsKSB7XG4gICAgICAgICAgICAgICAgY3JlYXRlRG9tKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0Q2xpcCh0aGlzLCBjb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlUGF0aChjb250ZXh0LCB0YXJnZXRBdHRycyk7XG4gICAgICAgICAgICB0aGlzLnNoYWRvdyhjb250ZXh0LCB0YXJnZXRBdHRycyk7XG4gICAgICAgICAgICB0aGlzLnN0cm9rZUFuZEZpbGwoY29udGV4dCwgdGFyZ2V0QXR0cnMpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm0odGFyZ2V0QXR0cnMpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog57uY5Yi25Zu+5b2i55qE6Lev5b6EXG4gICAgICogQHBhcmFtIHtEZWZzfSBjb250ZXh0IOS4iuS4i+aWh1xuICAgICAqIEBwYXJhbSB7U2hhcGVBdHRyc30gdGFyZ2V0QXR0cnMg5riy5p+T55qE55uu5qCH5bGe5oCnXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7IH07XG4gICAgLy8gc3Ryb2tlIGFuZCBmaWxsXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5zdHJva2VBbmRGaWxsID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRhcmdldEF0dHJzIHx8IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZmlsbCA9IGF0dHJzLmZpbGwsIGZpbGxTdHlsZSA9IGF0dHJzLmZpbGxTdHlsZSwgc3Ryb2tlID0gYXR0cnMuc3Ryb2tlLCBzdHJva2VTdHlsZSA9IGF0dHJzLnN0cm9rZVN0eWxlLCBmaWxsT3BhY2l0eSA9IGF0dHJzLmZpbGxPcGFjaXR5LCBzdHJva2VPcGFjaXR5ID0gYXR0cnMuc3Ryb2tlT3BhY2l0eSwgbGluZVdpZHRoID0gYXR0cnMubGluZVdpZHRoO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKHRoaXMuY2FuRmlsbCkge1xuICAgICAgICAgICAgLy8g5Yid5qyh5riy5p+T5ZKM5pu05paw5riy5p+T55qE6YC76L6R5pyJ5omA5LiN5ZCMOiDliJ3mrKHmuLLmn5PlgLzkuLrnqbrml7bvvIzpnIDopoHorr7nva7kuLogbm9uZe+8jOWQpuWImeWwseS8muaYr+m7keiJsu+8jOiAjOabtOaWsOa4suafk+WImeS4jemcgOimgVxuICAgICAgICAgICAgaWYgKCF0YXJnZXRBdHRycykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldENvbG9yKGNvbnRleHQsICdmaWxsJywgZmlsbCB8fCBmaWxsU3R5bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoJ2ZpbGwnIGluIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0Q29sb3IoY29udGV4dCwgJ2ZpbGwnLCBmaWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCdmaWxsU3R5bGUnIGluIGF0dHJzKSB7XG4gICAgICAgICAgICAgICAgLy8gY29tcGF0aWJsZSB3aXRoIGZpbGxTdHlsZVxuICAgICAgICAgICAgICAgIHRoaXMuX3NldENvbG9yKGNvbnRleHQsICdmaWxsJywgZmlsbFN0eWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWxsT3BhY2l0eSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbJ2ZpbGxPcGFjaXR5J10sIGZpbGxPcGFjaXR5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jYW5TdHJva2UgJiYgbGluZVdpZHRoID4gMCkge1xuICAgICAgICAgICAgaWYgKCF0YXJnZXRBdHRycykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldENvbG9yKGNvbnRleHQsICdzdHJva2UnLCBzdHJva2UgfHwgc3Ryb2tlU3R5bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoJ3N0cm9rZScgaW4gYXR0cnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRDb2xvcihjb250ZXh0LCAnc3Ryb2tlJywgc3Ryb2tlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCdzdHJva2VTdHlsZScgaW4gYXR0cnMpIHtcbiAgICAgICAgICAgICAgICAvLyBjb21wYXRpYmxlIHdpdGggc3Ryb2tlU3R5bGVcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRDb2xvcihjb250ZXh0LCAnc3Ryb2tlJywgc3Ryb2tlU3R5bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0cm9rZU9wYWNpdHkpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQWydzdHJva2VPcGFjaXR5J10sIHN0cm9rZU9wYWNpdHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpbmVXaWR0aCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbJ2xpbmVXaWR0aCddLCBsaW5lV2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLl9zZXRDb2xvciA9IGZ1bmN0aW9uIChjb250ZXh0LCBhdHRyLCB2YWx1ZSkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgLy8gbmVlZCB0byBzZXQgYG5vbmVgIHRvIGF2b2lkIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sICdub25lJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gICAgICAgIGlmICgvXltyLFIsTCxsXXsxfVtcXHNdKlxcKC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhciBpZCA9IGNvbnRleHQuZmluZCgnZ3JhZGllbnQnLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBjb250ZXh0LmFkZEdyYWRpZW50KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIFwidXJsKCNcIiArIGlkICsgXCIpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKC9eW3AsUF17MX1bXFxzXSpcXCgvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICB2YXIgaWQgPSBjb250ZXh0LmZpbmQoJ3BhdHRlcm4nLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBjb250ZXh0LmFkZFBhdHRlcm4odmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgXCJ1cmwoI1wiICsgaWQgKyBcIilcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuc2hhZG93ID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgX2EgPSB0YXJnZXRBdHRycyB8fCBhdHRycywgc2hhZG93T2Zmc2V0WCA9IF9hLnNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFkgPSBfYS5zaGFkb3dPZmZzZXRZLCBzaGFkb3dCbHVyID0gX2Euc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IgPSBfYS5zaGFkb3dDb2xvcjtcbiAgICAgICAgaWYgKHNoYWRvd09mZnNldFggfHwgc2hhZG93T2Zmc2V0WSB8fCBzaGFkb3dCbHVyIHx8IHNoYWRvd0NvbG9yKSB7XG4gICAgICAgICAgICBzZXRTaGFkb3codGhpcywgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gKHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgbWF0cml4ID0gKHRhcmdldEF0dHJzIHx8IGF0dHJzKS5tYXRyaXg7XG4gICAgICAgIGlmIChtYXRyaXgpIHtcbiAgICAgICAgICAgIHNldFRyYW5zZm9ybSh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc0luU2hhcGUgPSBmdW5jdGlvbiAocmVmWCwgcmVmWSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1BvaW50SW5QYXRoKHJlZlgsIHJlZlkpO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc1BvaW50SW5QYXRoID0gZnVuY3Rpb24gKHJlZlgsIHJlZlkpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgICAgIHZhciBiYm94ID0gY2FudmFzLmdldCgnZWwnKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdmFyIGNsaWVudFggPSByZWZYICsgYmJveC5sZWZ0O1xuICAgICAgICB2YXIgY2xpZW50WSA9IHJlZlkgKyBiYm94LnRvcDtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGNsaWVudFgsIGNsaWVudFkpO1xuICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmlzRXF1YWxOb2RlKGVsKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6I635Y+W57q/5ou+5Y+W55qE5a695bqmXG4gICAgICogQHJldHVybnMge251bWJlcn0g57q/55qE5ou+5Y+W5a695bqmXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRIaXRMaW5lV2lkdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cnMsIGxpbmVXaWR0aCA9IF9hLmxpbmVXaWR0aCwgbGluZUFwcGVuZFdpZHRoID0gX2EubGluZUFwcGVuZFdpZHRoO1xuICAgICAgICBpZiAodGhpcy5pc1N0cm9rZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbGluZVdpZHRoICsgbGluZUFwcGVuZFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH07XG4gICAgcmV0dXJuIFNoYXBlQmFzZTtcbn0oQWJzdHJhY3RTaGFwZSkpO1xuZXhwb3J0IGRlZmF1bHQgU2hhcGVCYXNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/base.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/circle.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/circle.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview circle\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Circle = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Circle, _super);\n function Circle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'circle';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, r: 0 });\n };\n Circle.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Circle;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Circle);\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2NpcmNsZS5qcz83MWFiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNWO0FBQ1M7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLG1CQUFtQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBjaXJjbGVcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIENpcmNsZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2lyY2xlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENpcmNsZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAnY2lyY2xlJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IHRydWU7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQ2lyY2xlLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHg6IDAsIHk6IDAsIHI6IDAgfSk7XG4gICAgfTtcbiAgICBDaXJjbGUucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIC8vIOWchuWSjOakreWchueahOeCueWdkOagh+WxnuaAp+S4jeaYryB4LCB577yM6ICM5pivIGN4LCBjeVxuICAgICAgICAgICAgaWYgKGF0dHIgPT09ICd4JyB8fCBhdHRyID09PSAneScpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoXCJjXCIgKyBhdHRyLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIENpcmNsZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBDaXJjbGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jaXJjbGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/circle.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/dom.js": /*!***************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/dom.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview dom\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Dom = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Dom, _super);\n function Dom() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'dom';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Dom.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n if (typeof attrs['html'] === 'function') {\n var element = attrs['html'].call(this, attrs);\n if (element instanceof Element || element instanceof HTMLDocument) {\n var children = el.childNodes;\n for (var i = children.length - 1; i >= 0; i--) {\n el.removeChild(children[i]);\n }\n el.appendChild(element); // append to el if it's an element\n }\n else {\n el.innerHTML = element; // set innerHTML\n }\n }\n else {\n el.innerHTML = attrs['html']; // set innerHTML\n }\n };\n return Dom;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Dom);\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2RvbS5qcz9hOGU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNrQztBQUNBO0FBQ1M7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWixnQkFBZ0Isc0RBQVk7QUFDNUIsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELFFBQVE7QUFDekQ7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxrRUFBRyxFQUFDO0FBQ25CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9kb20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgZG9tXG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIERvbSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRG9tLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIERvbSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAnZG9tJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBEb20ucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodHlwZW9mIGF0dHJzWydodG1sJ10gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gYXR0cnNbJ2h0bWwnXS5jYWxsKHRoaXMsIGF0dHJzKTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCB8fCBlbGVtZW50IGluc3RhbmNlb2YgSFRNTERvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gZWwuY2hpbGROb2RlcztcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgZWwucmVtb3ZlQ2hpbGQoY2hpbGRyZW5baV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbC5hcHBlbmRDaGlsZChlbGVtZW50KTsgLy8gYXBwZW5kIHRvIGVsIGlmIGl0J3MgYW4gZWxlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gZWxlbWVudDsgLy8gc2V0IGlubmVySFRNTFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gYXR0cnNbJ2h0bWwnXTsgLy8gc2V0IGlubmVySFRNTFxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gRG9tO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IERvbTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRvbS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/dom.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/ellipse.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/ellipse.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview ellipse\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Ellipse = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Ellipse, _super);\n function Ellipse() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'ellipse';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, rx: 0, ry: 0 });\n };\n Ellipse.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Ellipse;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Ellipse);\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2VsbGlwc2UuanM/NWUyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDVjtBQUNTO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVywyQkFBMkI7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVk7QUFDakMsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9lbGxpcHNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGVsbGlwc2VcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIEVsbGlwc2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEVsbGlwc2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRWxsaXBzZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAnZWxsaXBzZSc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEVsbGlwc2UucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgcng6IDAsIHJ5OiAwIH0pO1xuICAgIH07XG4gICAgRWxsaXBzZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgLy8g5ZyG5ZKM5qSt5ZyG55qE54K55Z2Q5qCH5bGe5oCn5LiN5pivIHgsIHnvvIzogIzmmK8gY3gsIGN5XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3gnIHx8IGF0dHIgPT09ICd5Jykge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShcImNcIiArIGF0dHIsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gRWxsaXBzZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBFbGxpcHNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWxsaXBzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/ellipse.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/image.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/image.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview image\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Image = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Image, _super);\n function Image() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'image';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Image.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0 });\n };\n Image.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'img') {\n _this._setImage(attrs.img);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Image.prototype.setAttr = function (name, value) {\n this.attrs[name] = value;\n if (name === 'img') {\n this._setImage(value);\n }\n };\n Image.prototype._setImage = function (img) {\n var attrs = this.attr();\n var el = this.get('el');\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(img)) {\n el.setAttribute('href', img);\n }\n else if (img instanceof window.Image) {\n if (!attrs.width) {\n el.setAttribute('width', img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', img.src);\n }\n else if (img instanceof HTMLElement && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(img.nodeName) && img.nodeName.toUpperCase() === 'CANVAS') {\n // @ts-ignore\n el.setAttribute('href', img.toDataURL());\n }\n else if (img instanceof ImageData) {\n var canvas = document.createElement('canvas');\n canvas.setAttribute('width', \"\" + img.width);\n canvas.setAttribute('height', \"\" + img.height);\n canvas.getContext('2d').putImageData(img, 0, 0);\n if (!attrs.width) {\n el.setAttribute('width', \"\" + img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', \"\" + img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', canvas.toDataURL());\n }\n };\n return Image;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Image);\n//# sourceMappingURL=image.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2ltYWdlLmpzP2E1NzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ0E7QUFDRDtBQUNaO0FBQy9CO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsa0NBQWtDO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFZO0FBQ2pDLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsMkRBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLG9FQUFLLEVBQUM7QUFDckIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2ltYWdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGltYWdlXG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgSW1hZ2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEltYWdlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEltYWdlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdpbWFnZSc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMuY2FuU3Ryb2tlID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgSW1hZ2UucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9KTtcbiAgICB9O1xuICAgIEltYWdlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ2ltZycpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5fc2V0SW1hZ2UoYXR0cnMuaW1nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBJbWFnZS5wcm90b3R5cGUuc2V0QXR0ciA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmF0dHJzW25hbWVdID0gdmFsdWU7XG4gICAgICAgIGlmIChuYW1lID09PSAnaW1nJykge1xuICAgICAgICAgICAgdGhpcy5fc2V0SW1hZ2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBJbWFnZS5wcm90b3R5cGUuX3NldEltYWdlID0gZnVuY3Rpb24gKGltZykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGlmIChpc1N0cmluZyhpbWcpKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBpbWcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGltZyBpbnN0YW5jZW9mIHdpbmRvdy5JbWFnZSkge1xuICAgICAgICAgICAgaWYgKCFhdHRycy53aWR0aCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBpbWcud2lkdGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXR0cignd2lkdGgnLCBpbWcud2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhdHRycy5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGltZy5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXR0cignaGVpZ2h0JywgaW1nLmhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBpbWcuc3JjKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpbWcgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBpc1N0cmluZyhpbWcubm9kZU5hbWUpICYmIGltZy5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnQ0FOVkFTJykge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdocmVmJywgaW1nLnRvRGF0YVVSTCgpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpbWcgaW5zdGFuY2VvZiBJbWFnZURhdGEpIHtcbiAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgXCJcIiArIGltZy53aWR0aCk7XG4gICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBcIlwiICsgaW1nLmhlaWdodCk7XG4gICAgICAgICAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5wdXRJbWFnZURhdGEoaW1nLCAwLCAwKTtcbiAgICAgICAgICAgIGlmICghYXR0cnMud2lkdGgpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgXCJcIiArIGltZy53aWR0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyKCd3aWR0aCcsIGltZy53aWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWF0dHJzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgXCJcIiArIGltZy5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXR0cignaGVpZ2h0JywgaW1nLmhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBjYW52YXMudG9EYXRhVVJMKCkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gSW1hZ2U7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgSW1hZ2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/image.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/index.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/index.js ***! \*****************************************************/ /*! exports provided: Base, Circle, Dom, Ellipse, Image, Line, Marker, Path, Polygon, Polyline, Rect, Text */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./circle */ \"./node_modules/@antv/g-svg/esm/shape/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Circle\", function() { return _circle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dom */ \"./node_modules/@antv/g-svg/esm/shape/dom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Dom\", function() { return _dom__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/@antv/g-svg/esm/shape/ellipse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ellipse\", function() { return _ellipse__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./image */ \"./node_modules/@antv/g-svg/esm/shape/image.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Image\", function() { return _image__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./line */ \"./node_modules/@antv/g-svg/esm/shape/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./marker */ \"./node_modules/@antv/g-svg/esm/shape/marker/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./path */ \"./node_modules/@antv/g-svg/esm/shape/path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Path\", function() { return _path__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./polygon */ \"./node_modules/@antv/g-svg/esm/shape/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g-svg/esm/shape/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rect */ \"./node_modules/@antv/g-svg/esm/shape/rect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Rect\", function() { return _rect__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./text */ \"./node_modules/@antv/g-svg/esm/shape/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return _text__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2luZGV4LmpzPzY4ZGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDSTtBQUNOO0FBQ1E7QUFDSjtBQUNGO0FBQ0k7QUFDSjtBQUNNO0FBQ0U7QUFDUjtBQUNBO0FBQ3pDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENpcmNsZSB9IGZyb20gJy4vY2lyY2xlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRG9tIH0gZnJvbSAnLi9kb20nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBFbGxpcHNlIH0gZnJvbSAnLi9lbGxpcHNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgSW1hZ2UgfSBmcm9tICcuL2ltYWdlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTGluZSB9IGZyb20gJy4vbGluZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1hcmtlciB9IGZyb20gJy4vbWFya2VyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aCB9IGZyb20gJy4vcGF0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBvbHlnb24gfSBmcm9tICcuL3BvbHlnb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQb2x5bGluZSB9IGZyb20gJy4vcG9seWxpbmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSZWN0IH0gZnJvbSAnLi9yZWN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/line.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/line.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n\n/**\n * @fileoverview line\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Line = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Line, _super);\n function Line() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'line';\n _this.canFill = false;\n _this.canStroke = true;\n return _this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x1: 0, y1: 0, x2: 0, y2: 0, startArrow: false, endArrow: false });\n };\n Line.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isObject\"])(value)\n ? context.addArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr])\n : context.getDefaultArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]);\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.removeAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]);\n }\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n /**\n * Use math calculation to get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(x1, y1, x2, y2);\n };\n /**\n * Use math calculation to get point according to ratio as same sa Canvas version\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Line);\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2xpbmUuanM/MTIyYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDZ0Q7QUFDSjtBQUNEO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxpRUFBaUU7QUFDL0c7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBLDZCQUE2QiwyREFBUTtBQUNyQyxrREFBa0Qsc0RBQVk7QUFDOUQseURBQXlELHNEQUFZO0FBQ3JFLG9DQUFvQyxzREFBWTtBQUNoRDtBQUNBO0FBQ0EsdUNBQXVDLHNEQUFZO0FBQ25EO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVk7QUFDakMsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaURBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixNQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaURBQVE7QUFDdkI7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL2xpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgbGluZVxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBMaW5lIGFzIExpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IGVhY2gsIGlzT2JqZWN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgTGluZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTGluZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBMaW5lKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdsaW5lJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIExpbmUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDAsIHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3N0YXJ0QXJyb3cnIHx8IGF0dHIgPT09ICdlbmRBcnJvdycpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0gaXNPYmplY3QodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNvbnRleHQuYWRkQXJyb3coYXR0cnMsIFNWR19BVFRSX01BUFthdHRyXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY29udGV4dC5nZXREZWZhdWx0QXJyb3coYXR0cnMsIFNWR19BVFRSX01BUFthdHRyXSk7XG4gICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIFwidXJsKCNcIiArIGlkICsgXCIpXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFVzZSBtYXRoIGNhbGN1bGF0aW9uIHRvIGdldCBsZW5ndGggb2YgbGluZVxuICAgICAqIEByZXR1cm4ge251bWJlcn0gbGVuZ3RoXG4gICAgICovXG4gICAgTGluZS5wcm90b3R5cGUuZ2V0VG90YWxMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCB4MSA9IF9hLngxLCB5MSA9IF9hLnkxLCB4MiA9IF9hLngyLCB5MiA9IF9hLnkyO1xuICAgICAgICByZXR1cm4gTGluZVV0aWwubGVuZ3RoKHgxLCB5MSwgeDIsIHkyKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFVzZSBtYXRoIGNhbGN1bGF0aW9uIHRvIGdldCBwb2ludCBhY2NvcmRpbmcgdG8gcmF0aW8gYXMgc2FtZSBzYSBDYW52YXMgdmVyc2lvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYXRpb1xuICAgICAqIEByZXR1cm4ge1BvaW50fSBwb2ludFxuICAgICAqL1xuICAgIExpbmUucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCB4MSA9IF9hLngxLCB5MSA9IF9hLnkxLCB4MiA9IF9hLngyLCB5MiA9IF9hLnkyO1xuICAgICAgICByZXR1cm4gTGluZVV0aWwucG9pbnRBdCh4MSwgeTEsIHgyLCB5MiwgcmF0aW8pO1xuICAgIH07XG4gICAgcmV0dXJuIExpbmU7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgTGluZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/line.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/marker/index.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/marker/index.js ***! \************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/* harmony import */ var _symbols__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./symbols */ \"./node_modules/@antv/g-svg/esm/shape/marker/symbols.js\");\n/**\n * @fileoverview marker\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Marker = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'marker';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Marker.prototype.createPath = function (context) {\n var el = this.get('el');\n el.setAttribute('d', this._assembleMarker());\n };\n Marker.prototype._assembleMarker = function () {\n var d = this._getPath();\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(d)) {\n return d\n .map(function (path) {\n return path.join(' ');\n })\n .join('');\n }\n return d;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y;\n // 兼容 r 和 radius 两种写法,推荐使用 r\n var r = attrs.r || attrs.radius;\n var symbol = attrs.symbol || 'circle';\n var method;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(symbol)) {\n method = symbol;\n }\n else {\n method = _symbols__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(symbol);\n }\n if (!method) {\n console.warn(method + \" symbol is not exist.\");\n return null;\n }\n return method(x, y, r);\n };\n // 作为其静态属性\n Marker.symbolsFactory = _symbols__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n return Marker;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Marker);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL21hcmtlci9pbmRleC5qcz84YzAzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNrQztBQUNlO0FBQ2pCO0FBQ087QUFDdkM7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw2REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsZ0RBQWM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixnREFBYztBQUMxQztBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL21hcmtlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBtYXJrZXJcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc0FycmF5LCBpc0Z1bmN0aW9uIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4uL2Jhc2UnO1xuaW1wb3J0IHN5bWJvbHNGYWN0b3J5IGZyb20gJy4vc3ltYm9scyc7XG52YXIgTWFya2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNYXJrZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTWFya2VyKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdtYXJrZXInO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gdHJ1ZTtcbiAgICAgICAgX3RoaXMuY2FuU3Ryb2tlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBNYXJrZXIucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkJywgdGhpcy5fYXNzZW1ibGVNYXJrZXIoKSk7XG4gICAgfTtcbiAgICBNYXJrZXIucHJvdG90eXBlLl9hc3NlbWJsZU1hcmtlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGQgPSB0aGlzLl9nZXRQYXRoKCk7XG4gICAgICAgIGlmIChpc0FycmF5KGQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZFxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHBhdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aC5qb2luKCcgJyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZDtcbiAgICB9O1xuICAgIE1hcmtlci5wcm90b3R5cGUuX2dldFBhdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgeCA9IGF0dHJzLngsIHkgPSBhdHRycy55O1xuICAgICAgICAvLyDlhbzlrrkgciDlkowgcmFkaXVzIOS4pOenjeWGmeazle+8jOaOqOiNkOS9v+eUqCByXG4gICAgICAgIHZhciByID0gYXR0cnMuciB8fCBhdHRycy5yYWRpdXM7XG4gICAgICAgIHZhciBzeW1ib2wgPSBhdHRycy5zeW1ib2wgfHwgJ2NpcmNsZSc7XG4gICAgICAgIHZhciBtZXRob2Q7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHN5bWJvbCkpIHtcbiAgICAgICAgICAgIG1ldGhvZCA9IHN5bWJvbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1ldGhvZCA9IHN5bWJvbHNGYWN0b3J5LmdldChzeW1ib2wpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbWV0aG9kKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4obWV0aG9kICsgXCIgc3ltYm9sIGlzIG5vdCBleGlzdC5cIik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWV0aG9kKHgsIHksIHIpO1xuICAgIH07XG4gICAgLy8g5L2c5Li65YW26Z2Z5oCB5bGe5oCnXG4gICAgTWFya2VyLnN5bWJvbHNGYWN0b3J5ID0gc3ltYm9sc0ZhY3Rvcnk7XG4gICAgcmV0dXJuIE1hcmtlcjtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBNYXJrZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/marker/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/marker/symbols.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/marker/symbols.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar Symbols = {\n // 圆\n circle: function (x, y, r) {\n return [\n ['M', x, y],\n ['m', -r, 0],\n ['a', r, r, 0, 1, 0, r * 2, 0],\n ['a', r, r, 0, 1, 0, -r * 2, 0],\n ];\n },\n // 正方形\n square: function (x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function (x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['z']];\n },\n // 倒三角形\n triangleDown: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n get: function (type) {\n return Symbols[type];\n },\n register: function (type, func) {\n Symbols[type] = func;\n },\n remove: function (type) {\n delete Symbols[type];\n },\n getAll: function () {\n return Symbols;\n },\n});\n//# sourceMappingURL=symbols.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL21hcmtlci9zeW1ib2xzLmpzP2MyMmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNlO0FBQ2Y7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vc2hhcGUvbWFya2VyL3N5bWJvbHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgU3ltYm9scyA9IHtcbiAgICAvLyDlnIZcbiAgICBjaXJjbGU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbJ00nLCB4LCB5XSxcbiAgICAgICAgICAgIFsnbScsIC1yLCAwXSxcbiAgICAgICAgICAgIFsnYScsIHIsIHIsIDAsIDEsIDAsIHIgKiAyLCAwXSxcbiAgICAgICAgICAgIFsnYScsIHIsIHIsIDAsIDEsIDAsIC1yICogMiwgMF0sXG4gICAgICAgIF07XG4gICAgfSxcbiAgICAvLyDmraPmlrnlvaJcbiAgICBzcXVhcmU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgLSByXSwgWydMJywgeCArIHIsIHkgLSByXSwgWydMJywgeCArIHIsIHkgKyByXSwgWydMJywgeCAtIHIsIHkgKyByXSwgWydaJ11dO1xuICAgIH0sXG4gICAgLy8g6I+x5b2iXG4gICAgZGlhbW9uZDogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtbJ00nLCB4IC0gciwgeV0sIFsnTCcsIHgsIHkgLSByXSwgWydMJywgeCArIHIsIHldLCBbJ0wnLCB4LCB5ICsgcl0sIFsnWiddXTtcbiAgICB9LFxuICAgIC8vIOS4ieinkuW9olxuICAgIHRyaWFuZ2xlOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICB2YXIgZGlmZlkgPSByICogTWF0aC5zaW4oKDEgLyAzKSAqIE1hdGguUEkpO1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5ICsgZGlmZlldLCBbJ0wnLCB4LCB5IC0gZGlmZlldLCBbJ0wnLCB4ICsgciwgeSArIGRpZmZZXSwgWyd6J11dO1xuICAgIH0sXG4gICAgLy8g5YCS5LiJ6KeS5b2iXG4gICAgdHJpYW5nbGVEb3duOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICB2YXIgZGlmZlkgPSByICogTWF0aC5zaW4oKDEgLyAzKSAqIE1hdGguUEkpO1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5IC0gZGlmZlldLCBbJ0wnLCB4ICsgciwgeSAtIGRpZmZZXSwgWydMJywgeCwgeSArIGRpZmZZXSwgWydaJ11dO1xuICAgIH0sXG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICAgIGdldDogZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIFN5bWJvbHNbdHlwZV07XG4gICAgfSxcbiAgICByZWdpc3RlcjogZnVuY3Rpb24gKHR5cGUsIGZ1bmMpIHtcbiAgICAgICAgU3ltYm9sc1t0eXBlXSA9IGZ1bmM7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICAgIGRlbGV0ZSBTeW1ib2xzW3R5cGVdO1xuICAgIH0sXG4gICAgZ2V0QWxsOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBTeW1ib2xzO1xuICAgIH0sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3ltYm9scy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/marker/symbols.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/path.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/path.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n\n\n\n\nvar Path = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Path, _super);\n function Path() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'path';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n Path.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'path' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value)) {\n el.setAttribute('d', _this._formatPath(value));\n }\n else if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(value)\n ? context.addArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr])\n : context.getDefaultArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]);\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.removeAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]);\n }\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Path.prototype._formatPath = function (value) {\n var newValue = value\n .map(function (path) {\n return path.join(' ');\n })\n .join('');\n if (~newValue.indexOf('NaN')) {\n return '';\n }\n return newValue;\n };\n /**\n * Get total length of path\n * 尽管通过浏览器的 SVGPathElement.getTotalLength() 接口获取的 path 长度,\n * 与 Canvas 版本通过数学计算的方式得到的长度有一些细微差异,但最大误差在个位数像素,精度上可以能接受\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var el = this.get('el');\n return el ? el.getTotalLength() : null;\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var el = this.get('el');\n var totalLength = this.getTotalLength();\n // @see https://github.com/antvis/g/issues/634\n if (totalLength === 0) {\n return null;\n }\n var point = el ? el.getPointAtLength(ratio * totalLength) : null;\n return point\n ? {\n x: point.x,\n y: point.y,\n }\n : null;\n };\n return Path;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Path);\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3BhdGguanM/M2VlOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ1M7QUFDVjtBQUNaO0FBQy9CO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcscUNBQXFDO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1osbUNBQW1DLDBEQUFPO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDJEQUFRO0FBQ3JDLGtEQUFrRCxzREFBWTtBQUM5RCx5REFBeUQsc0RBQVk7QUFDckUsb0NBQW9DLHNEQUFZO0FBQ2hEO0FBQ0E7QUFDQSx1Q0FBdUMsc0RBQVk7QUFDbkQ7QUFDQTtBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixNQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCwgaXNBcnJheSwgaXNPYmplY3QgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbnZhciBQYXRoID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQYXRoLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFBhdGgoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ3BhdGgnO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gdHJ1ZTtcbiAgICAgICAgX3RoaXMuY2FuU3Ryb2tlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBQYXRoLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3BhdGgnICYmIGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkJywgX3RoaXMuX2Zvcm1hdFBhdGgodmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGF0dHIgPT09ICdzdGFydEFycm93JyB8fCBhdHRyID09PSAnZW5kQXJyb3cnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IGlzT2JqZWN0KHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjb250ZXh0LmFkZEFycm93KGF0dHJzLCBTVkdfQVRUUl9NQVBbYXR0cl0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRleHQuZ2V0RGVmYXVsdEFycm93KGF0dHJzLCBTVkdfQVRUUl9NQVBbYXR0cl0pO1xuICAgICAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCBcInVybCgjXCIgKyBpZCArIFwiKVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5fZm9ybWF0UGF0aCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgbmV3VmFsdWUgPSB2YWx1ZVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAocGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGguam9pbignICcpO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJycpO1xuICAgICAgICBpZiAofm5ld1ZhbHVlLmluZGV4T2YoJ05hTicpKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHRvdGFsIGxlbmd0aCBvZiBwYXRoXG4gICAgICog5bC9566h6YCa6L+H5rWP6KeI5Zmo55qEIFNWR1BhdGhFbGVtZW50LmdldFRvdGFsTGVuZ3RoKCkg5o6l5Y+j6I635Y+W55qEIHBhdGgg6ZW/5bqm77yMXG4gICAgICog5LiOIENhbnZhcyDniYjmnKzpgJrov4fmlbDlraborqHnrpfnmoTmlrnlvI/lvpfliLDnmoTplb/luqbmnInkuIDkupvnu4blvq7lt67lvILvvIzkvYbmnIDlpKfor6/lt67lnKjkuKrkvY3mlbDlg4/ntKDvvIznsr7luqbkuIrlj6/ku6Xog73mjqXlj5dcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IGxlbmd0aFxuICAgICAqL1xuICAgIFBhdGgucHJvdG90eXBlLmdldFRvdGFsTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgcmV0dXJuIGVsID8gZWwuZ2V0VG90YWxMZW5ndGgoKSA6IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgcG9pbnQgYWNjb3JkaW5nIHRvIHJhdGlvXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciB0b3RhbExlbmd0aCA9IHRoaXMuZ2V0VG90YWxMZW5ndGgoKTtcbiAgICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vYW50dmlzL2cvaXNzdWVzLzYzNFxuICAgICAgICBpZiAodG90YWxMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwb2ludCA9IGVsID8gZWwuZ2V0UG9pbnRBdExlbmd0aChyYXRpbyAqIHRvdGFsTGVuZ3RoKSA6IG51bGw7XG4gICAgICAgIHJldHVybiBwb2ludFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgeDogcG9pbnQueCxcbiAgICAgICAgICAgICAgICB5OiBwb2ludC55LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIFBhdGg7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgUGF0aDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/path.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/polygon.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/polygon.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n\n/**\n * @fileoverview polygon\n * @author dengfuping_develop@163.com\n */\n\n\n\nvar Polygon = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polygon, _super);\n function Polygon() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polygon';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polygon.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) { return point[0] + \",\" + point[1]; }).join(' '));\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Polygon;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polygon);\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3BvbHlnb24uanM/MDllOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQzJDO0FBQ0E7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWixxQ0FBcUMsMERBQU87QUFDNUMsc0VBQXNFLGtDQUFrQyxFQUFFO0FBQzFHO0FBQ0EscUJBQXFCLHNEQUFZO0FBQ2pDLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vc2hhcGUvcG9seWdvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IHBvbHlnb25cbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgZWFjaCwgaXNBcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIFBvbHlnb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBvbHlnb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUG9seWdvbigpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAncG9seWdvbic7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFBvbHlnb24ucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChhdHRyID09PSAncG9pbnRzJyAmJiBpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgncG9pbnRzJywgdmFsdWUubWFwKGZ1bmN0aW9uIChwb2ludCkgeyByZXR1cm4gcG9pbnRbMF0gKyBcIixcIiArIHBvaW50WzFdOyB9KS5qb2luKCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBQb2x5Z29uO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFBvbHlnb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5Z29uLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/polygon.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/polyline.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/polyline.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n\n\n\n\n\n\nvar Polyline = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polyline, _super);\n function Polyline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polyline';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polyline.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n // 更新属性时,检测是否更改了 points\n Polyline.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n Polyline.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n Polyline.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) { return point[0] + \",\" + point[1]; }).join(' '));\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n Polyline.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Polyline\"].length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Polyline.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n Polyline.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Polyline.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Polyline.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return Polyline;\n}(_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polyline);\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3BvbHlsaW5lLmpzP2Q5MjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ1k7QUFDUjtBQUNFO0FBQ1A7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLHFDQUFxQztBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1oscUNBQXFDLDBEQUFPO0FBQzVDLHNFQUFzRSxrQ0FBa0MsRUFBRTtBQUMxRztBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsd0RBQUs7QUFDbEI7QUFDQTtBQUNBLGdDQUFnQyxxREFBWTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULGVBQWUsaURBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsaURBQVE7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wb2x5bGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IFBvbHlsaW5lIGFzIFBvbHlsaW5lVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgeyBMaW5lIGFzIExpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IGVhY2gsIGlzQXJyYXksIGlzTmlsIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgUG9seWxpbmUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBvbHlsaW5lLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFBvbHlsaW5lKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdwb2x5bGluZSc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFBvbHlsaW5lLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICAvLyDmm7TmlrDlsZ7mgKfml7bvvIzmo4DmtYvmmK/lkKbmm7TmlLnkuoYgcG9pbnRzXG4gICAgUG9seWxpbmUucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICBpZiAoWydwb2ludHMnXS5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRDYWNoZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBQb2x5bGluZS5wcm90b3R5cGUuX3Jlc2V0Q2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0KCd0b3RhbExlbmd0aCcsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgndENhY2hlJywgbnVsbCk7XG4gICAgfTtcbiAgICBQb2x5bGluZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKGF0dHIgPT09ICdwb2ludHMnICYmIGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdwb2ludHMnLCB2YWx1ZS5tYXAoZnVuY3Rpb24gKHBvaW50KSB7IHJldHVybiBwb2ludFswXSArIFwiLFwiICsgcG9pbnRbMV07IH0pLmpvaW4oJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IGxlbmd0aCBvZiBwb2x5bGluZVxuICAgICAqIEByZXR1cm4ge251bWJlcn0gbGVuZ3RoXG4gICAgICovXG4gICAgUG9seWxpbmUucHJvdG90eXBlLmdldFRvdGFsTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICAvLyBnZXQgdG90YWxMZW5ndGggZnJvbSBjYWNoZVxuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSB0aGlzLmdldCgndG90YWxMZW5ndGgnKTtcbiAgICAgICAgaWYgKCFpc05pbCh0b3RhbExlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0b3RhbExlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldCgndG90YWxMZW5ndGgnLCBQb2x5bGluZVV0aWwubGVuZ3RoKHBvaW50cykpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ3RvdGFsTGVuZ3RoJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgcG9pbnQgYWNjb3JkaW5nIHRvIHJhdGlvXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgUG9seWxpbmUucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIC8vIGdldCB0Q2FjaGUgZnJvbSBjYWNoZVxuICAgICAgICB2YXIgdENhY2hlID0gdGhpcy5nZXQoJ3RDYWNoZScpO1xuICAgICAgICBpZiAoIXRDYWNoZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VGNhY2hlKCk7XG4gICAgICAgICAgICB0Q2FjaGUgPSB0aGlzLmdldCgndENhY2hlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1YnQ7XG4gICAgICAgIHZhciBpbmRleDtcbiAgICAgICAgZWFjaCh0Q2FjaGUsIGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgICAgICBpZiAocmF0aW8gPj0gdlswXSAmJiByYXRpbyA8PSB2WzFdKSB7XG4gICAgICAgICAgICAgICAgc3VidCA9IChyYXRpbyAtIHZbMF0pIC8gKHZbMV0gLSB2WzBdKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gTGluZVV0aWwucG9pbnRBdChwb2ludHNbaW5kZXhdWzBdLCBwb2ludHNbaW5kZXhdWzFdLCBwb2ludHNbaW5kZXggKyAxXVswXSwgcG9pbnRzW2luZGV4ICsgMV1bMV0sIHN1YnQpO1xuICAgIH07XG4gICAgUG9seWxpbmUucHJvdG90eXBlLl9zZXRUY2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIGlmICghcG9pbnRzIHx8IHBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSB0aGlzLmdldFRvdGFsTGVuZ3RoKCk7XG4gICAgICAgIGlmICh0b3RhbExlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRlbXBMZW5ndGggPSAwO1xuICAgICAgICB2YXIgdENhY2hlID0gW107XG4gICAgICAgIHZhciBzZWdtZW50VDtcbiAgICAgICAgdmFyIHNlZ21lbnRMO1xuICAgICAgICBlYWNoKHBvaW50cywgZnVuY3Rpb24gKHAsIGkpIHtcbiAgICAgICAgICAgIGlmIChwb2ludHNbaSArIDFdKSB7XG4gICAgICAgICAgICAgICAgc2VnbWVudFQgPSBbXTtcbiAgICAgICAgICAgICAgICBzZWdtZW50VFswXSA9IHRlbXBMZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgICAgICAgICBzZWdtZW50TCA9IExpbmVVdGlsLmxlbmd0aChwWzBdLCBwWzFdLCBwb2ludHNbaSArIDFdWzBdLCBwb2ludHNbaSArIDFdWzFdKTtcbiAgICAgICAgICAgICAgICB0ZW1wTGVuZ3RoICs9IHNlZ21lbnRMO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUWzFdID0gdGVtcExlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRDYWNoZS5wdXNoKHNlZ21lbnRUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCB0Q2FjaGUpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHN0YXJ0IHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUG9seWxpbmUucHJvdG90eXBlLmdldFN0YXJ0VGFuZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICByZXN1bHQucHVzaChbcG9pbnRzWzFdWzBdLCBwb2ludHNbMV1bMV1dKTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdXSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgZW5kIHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUG9seWxpbmUucHJvdG90eXBlLmdldEVuZFRhbmdlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIHZhciBsID0gcG9pbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1tsIC0gMV1bMF0sIHBvaW50c1tsIC0gMV1bMV1dKTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1tsXVswXSwgcG9pbnRzW2xdWzFdXSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICByZXR1cm4gUG9seWxpbmU7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgUG9seWxpbmU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/polyline.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/rect.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/rect.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_format__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/format */ \"./node_modules/@antv/g-svg/esm/util/format.js\");\n/**\n * @fileoverview rect\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\nvar Rect = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Rect, _super);\n function Rect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'rect';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0, radius: 0 });\n };\n Rect.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n // 加上状态量,用来标记 path 是否已组装\n var completed = false;\n // 和组装 path 相关的绘图属性\n var pathRelatedAttrs = ['x', 'y', 'width', 'height', 'radius'];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (pathRelatedAttrs.indexOf(attr) !== -1 && !completed) {\n el.setAttribute('d', _this._assembleRect(attrs));\n completed = true;\n }\n else if (pathRelatedAttrs.indexOf(attr) === -1 && _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Rect.prototype._assembleRect = function (attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n var radius = attrs.radius;\n if (!radius) {\n return \"M \" + x + \",\" + y + \" l \" + w + \",0 l 0,\" + h + \" l\" + -w + \" 0 z\";\n }\n var r = Object(_util_format__WEBPACK_IMPORTED_MODULE_4__[\"parseRadius\"])(radius);\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r.r1 = r.r2 = r.r3 = r.r4 = radius[0];\n }\n else if (radius.length === 2) {\n r.r1 = r.r3 = radius[0];\n r.r2 = r.r4 = radius[1];\n }\n else if (radius.length === 3) {\n r.r1 = radius[0];\n r.r2 = r.r4 = radius[1];\n r.r3 = radius[2];\n }\n else {\n r.r1 = radius[0];\n r.r2 = radius[1];\n r.r3 = radius[2];\n r.r4 = radius[3];\n }\n }\n else {\n r.r1 = r.r2 = r.r3 = r.r4 = radius;\n }\n var d = [\n [\"M \" + (x + r.r1) + \",\" + y],\n [\"l \" + (w - r.r1 - r.r2) + \",0\"],\n [\"a \" + r.r2 + \",\" + r.r2 + \",0,0,1,\" + r.r2 + \",\" + r.r2],\n [\"l 0,\" + (h - r.r2 - r.r3)],\n [\"a \" + r.r3 + \",\" + r.r3 + \",0,0,1,\" + -r.r3 + \",\" + r.r3],\n [\"l \" + (r.r3 + r.r4 - w) + \",0\"],\n [\"a \" + r.r4 + \",\" + r.r4 + \",0,0,1,\" + -r.r4 + \",\" + -r.r4],\n [\"l 0,\" + (r.r4 + r.r1 - h)],\n [\"a \" + r.r1 + \",\" + r.r1 + \",0,0,1,\" + r.r1 + \",\" + -r.r1],\n ['z'],\n ];\n return d.join(' ');\n };\n return Rect;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Rect);\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3JlY3QuanM/NzVlMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNEO0FBQ1o7QUFDWTtBQUNFO0FBQzdDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsNkNBQTZDO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCxzREFBWTtBQUMxRSxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsZ0VBQVc7QUFDM0IsWUFBWSwwREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3JlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgcmVjdFxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoLCBpc0FycmF5IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgeyBwYXJzZVJhZGl1cyB9IGZyb20gJy4uL3V0aWwvZm9ybWF0JztcbnZhciBSZWN0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhSZWN0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFJlY3QoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ3JlY3QnO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gdHJ1ZTtcbiAgICAgICAgX3RoaXMuY2FuU3Ryb2tlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBSZWN0LnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHg6IDAsIHk6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAsIHJhZGl1czogMCB9KTtcbiAgICB9O1xuICAgIFJlY3QucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICAvLyDliqDkuIrnirbmgIHph4/vvIznlKjmnaXmoIforrAgcGF0aCDmmK/lkKblt7Lnu4Too4VcbiAgICAgICAgdmFyIGNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICAvLyDlkoznu4Too4UgcGF0aCDnm7jlhbPnmoTnu5jlm77lsZ7mgKdcbiAgICAgICAgdmFyIHBhdGhSZWxhdGVkQXR0cnMgPSBbJ3gnLCAneScsICd3aWR0aCcsICdoZWlnaHQnLCAncmFkaXVzJ107XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKHBhdGhSZWxhdGVkQXR0cnMuaW5kZXhPZihhdHRyKSAhPT0gLTEgJiYgIWNvbXBsZXRlZCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZCcsIF90aGlzLl9hc3NlbWJsZVJlY3QoYXR0cnMpKTtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocGF0aFJlbGF0ZWRBdHRycy5pbmRleE9mKGF0dHIpID09PSAtMSAmJiBTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUmVjdC5wcm90b3R5cGUuX2Fzc2VtYmxlUmVjdCA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB2YXIgeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciB5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIHcgPSBhdHRycy53aWR0aDtcbiAgICAgICAgdmFyIGggPSBhdHRycy5oZWlnaHQ7XG4gICAgICAgIHZhciByYWRpdXMgPSBhdHRycy5yYWRpdXM7XG4gICAgICAgIGlmICghcmFkaXVzKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJNIFwiICsgeCArIFwiLFwiICsgeSArIFwiIGwgXCIgKyB3ICsgXCIsMCBsIDAsXCIgKyBoICsgXCIgbFwiICsgLXcgKyBcIiAwIHpcIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IHBhcnNlUmFkaXVzKHJhZGl1cyk7XG4gICAgICAgIGlmIChpc0FycmF5KHJhZGl1cykpIHtcbiAgICAgICAgICAgIGlmIChyYWRpdXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgci5yMSA9IHIucjIgPSByLnIzID0gci5yNCA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJhZGl1cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICByLnIxID0gci5yMyA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgICAgICByLnIyID0gci5yNCA9IHJhZGl1c1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJhZGl1cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgICAgICByLnIxID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgICAgIHIucjIgPSByLnI0ID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgICAgIHIucjMgPSByYWRpdXNbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByLnIxID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgICAgIHIucjIgPSByYWRpdXNbMV07XG4gICAgICAgICAgICAgICAgci5yMyA9IHJhZGl1c1syXTtcbiAgICAgICAgICAgICAgICByLnI0ID0gcmFkaXVzWzNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgci5yMSA9IHIucjIgPSByLnIzID0gci5yNCA9IHJhZGl1cztcbiAgICAgICAgfVxuICAgICAgICB2YXIgZCA9IFtcbiAgICAgICAgICAgIFtcIk0gXCIgKyAoeCArIHIucjEpICsgXCIsXCIgKyB5XSxcbiAgICAgICAgICAgIFtcImwgXCIgKyAodyAtIHIucjEgLSByLnIyKSArIFwiLDBcIl0sXG4gICAgICAgICAgICBbXCJhIFwiICsgci5yMiArIFwiLFwiICsgci5yMiArIFwiLDAsMCwxLFwiICsgci5yMiArIFwiLFwiICsgci5yMl0sXG4gICAgICAgICAgICBbXCJsIDAsXCIgKyAoaCAtIHIucjIgLSByLnIzKV0sXG4gICAgICAgICAgICBbXCJhIFwiICsgci5yMyArIFwiLFwiICsgci5yMyArIFwiLDAsMCwxLFwiICsgLXIucjMgKyBcIixcIiArIHIucjNdLFxuICAgICAgICAgICAgW1wibCBcIiArIChyLnIzICsgci5yNCAtIHcpICsgXCIsMFwiXSxcbiAgICAgICAgICAgIFtcImEgXCIgKyByLnI0ICsgXCIsXCIgKyByLnI0ICsgXCIsMCwwLDEsXCIgKyAtci5yNCArIFwiLFwiICsgLXIucjRdLFxuICAgICAgICAgICAgW1wibCAwLFwiICsgKHIucjQgKyByLnIxIC0gaCldLFxuICAgICAgICAgICAgW1wiYSBcIiArIHIucjEgKyBcIixcIiArIHIucjEgKyBcIiwwLDAsMSxcIiArIHIucjEgKyBcIixcIiArIC1yLnIxXSxcbiAgICAgICAgICAgIFsneiddLFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gZC5qb2luKCcgJyk7XG4gICAgfTtcbiAgICByZXR1cm4gUmVjdDtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBSZWN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/rect.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/shape/text.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/shape/text.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var detect_browser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! detect-browser */ \"./node_modules/detect-browser/es/index.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/svg */ \"./node_modules/@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview text\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\n\nvar LETTER_SPACING = 0.3;\nvar BASELINE_MAP = {\n top: 'before-edge',\n middle: 'central',\n bottom: 'after-edge',\n alphabetic: 'baseline',\n hanging: 'hanging',\n};\n// for FireFox\nvar BASELINE_MAP_FOR_FIREFOX = {\n top: 'text-before-edge',\n middle: 'central',\n bottom: 'text-after-edge',\n alphabetic: 'alphabetic',\n hanging: 'hanging',\n};\nvar ANCHOR_MAP = {\n left: 'left',\n start: 'left',\n center: 'middle',\n right: 'end',\n end: 'end',\n};\nvar Text = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'text';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, text: null, fontSize: 12, fontFamily: 'sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontVariant: 'normal', textAlign: 'start', textBaseline: 'bottom' });\n };\n Text.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n this._setFont();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'text') {\n _this._setText(\"\" + value);\n }\n else if (attr === 'matrix' && value) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_3__[\"setTransform\"])(_this);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_4__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_4__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n el.setAttribute('paint-order', 'stroke');\n el.setAttribute('style', 'stroke-linecap:butt; stroke-linejoin:miter;');\n };\n Text.prototype._setFont = function () {\n var el = this.get('el');\n var _a = this.attr(), textBaseline = _a.textBaseline, textAlign = _a.textAlign;\n var browser = Object(detect_browser__WEBPACK_IMPORTED_MODULE_2__[\"detect\"])();\n if (browser && browser.name === 'firefox') {\n // compatible with FireFox browser, ref: https://github.com/antvis/g/issues/119\n el.setAttribute('dominant-baseline', BASELINE_MAP_FOR_FIREFOX[textBaseline] || 'alphabetic');\n }\n else {\n el.setAttribute('alignment-baseline', BASELINE_MAP[textBaseline] || 'baseline');\n }\n el.setAttribute('text-anchor', ANCHOR_MAP[textAlign] || 'left');\n };\n Text.prototype._setText = function (text) {\n var el = this.get('el');\n var _a = this.attr(), x = _a.x, _b = _a.textBaseline, baseline = _b === void 0 ? 'bottom' : _b;\n if (!text) {\n el.innerHTML = '';\n }\n else if (~text.indexOf('\\n')) {\n var textArr = text.split('\\n');\n var textLen_1 = textArr.length - 1;\n var arr_1 = '';\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(textArr, function (segment, i) {\n if (i === 0) {\n if (baseline === 'alphabetic') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'top') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'middle') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'bottom') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'hanging') {\n arr_1 += \"\" + segment + \"\";\n }\n }\n else {\n arr_1 += \"\" + segment + \"\";\n }\n });\n el.innerHTML = arr_1;\n }\n else {\n el.innerHTML = text;\n }\n };\n return Text;\n}(_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Text);\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3NoYXBlL3RleHQuanM/OTQ2MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ1Y7QUFDTTtBQUNHO0FBQ0E7QUFDWjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVywrS0FBK0s7QUFDN047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhEQUFZO0FBQzVCO0FBQ0EscUJBQXFCLHNEQUFZO0FBQ2pDLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBLHNEQUFzRCx1QkFBdUI7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsNkRBQU07QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS9zaGFwZS90ZXh0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IHRleHRcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZGV0ZWN0IH0gZnJvbSAnZGV0ZWN0LWJyb3dzZXInO1xuaW1wb3J0IHsgc2V0VHJhbnNmb3JtIH0gZnJvbSAnLi4vdXRpbC9zdmcnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIExFVFRFUl9TUEFDSU5HID0gMC4zO1xudmFyIEJBU0VMSU5FX01BUCA9IHtcbiAgICB0b3A6ICdiZWZvcmUtZWRnZScsXG4gICAgbWlkZGxlOiAnY2VudHJhbCcsXG4gICAgYm90dG9tOiAnYWZ0ZXItZWRnZScsXG4gICAgYWxwaGFiZXRpYzogJ2Jhc2VsaW5lJyxcbiAgICBoYW5naW5nOiAnaGFuZ2luZycsXG59O1xuLy8gZm9yIEZpcmVGb3hcbnZhciBCQVNFTElORV9NQVBfRk9SX0ZJUkVGT1ggPSB7XG4gICAgdG9wOiAndGV4dC1iZWZvcmUtZWRnZScsXG4gICAgbWlkZGxlOiAnY2VudHJhbCcsXG4gICAgYm90dG9tOiAndGV4dC1hZnRlci1lZGdlJyxcbiAgICBhbHBoYWJldGljOiAnYWxwaGFiZXRpYycsXG4gICAgaGFuZ2luZzogJ2hhbmdpbmcnLFxufTtcbnZhciBBTkNIT1JfTUFQID0ge1xuICAgIGxlZnQ6ICdsZWZ0JyxcbiAgICBzdGFydDogJ2xlZnQnLFxuICAgIGNlbnRlcjogJ21pZGRsZScsXG4gICAgcmlnaHQ6ICdlbmQnLFxuICAgIGVuZDogJ2VuZCcsXG59O1xudmFyIFRleHQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFRleHQsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVGV4dCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAndGV4dCc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFRleHQucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgdGV4dDogbnVsbCwgZm9udFNpemU6IDEyLCBmb250RmFtaWx5OiAnc2Fucy1zZXJpZicsIGZvbnRTdHlsZTogJ25vcm1hbCcsIGZvbnRXZWlnaHQ6ICdub3JtYWwnLCBmb250VmFyaWFudDogJ25vcm1hbCcsIHRleHRBbGlnbjogJ3N0YXJ0JywgdGV4dEJhc2VsaW5lOiAnYm90dG9tJyB9KTtcbiAgICB9O1xuICAgIFRleHQucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB0aGlzLl9zZXRGb250KCk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKGF0dHIgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgICAgIF90aGlzLl9zZXRUZXh0KFwiXCIgKyB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhdHRyID09PSAnbWF0cml4JyAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHNldFRyYW5zZm9ybShfdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3BhaW50LW9yZGVyJywgJ3N0cm9rZScpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3N0cm9rZS1saW5lY2FwOmJ1dHQ7IHN0cm9rZS1saW5lam9pbjptaXRlcjsnKTtcbiAgICB9O1xuICAgIFRleHQucHJvdG90eXBlLl9zZXRGb250ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHRleHRCYXNlbGluZSA9IF9hLnRleHRCYXNlbGluZSwgdGV4dEFsaWduID0gX2EudGV4dEFsaWduO1xuICAgICAgICB2YXIgYnJvd3NlciA9IGRldGVjdCgpO1xuICAgICAgICBpZiAoYnJvd3NlciAmJiBicm93c2VyLm5hbWUgPT09ICdmaXJlZm94Jykge1xuICAgICAgICAgICAgLy8gY29tcGF0aWJsZSB3aXRoIEZpcmVGb3ggYnJvd3NlciwgcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYW50dmlzL2cvaXNzdWVzLzExOVxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkb21pbmFudC1iYXNlbGluZScsIEJBU0VMSU5FX01BUF9GT1JfRklSRUZPWFt0ZXh0QmFzZWxpbmVdIHx8ICdhbHBoYWJldGljJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2FsaWdubWVudC1iYXNlbGluZScsIEJBU0VMSU5FX01BUFt0ZXh0QmFzZWxpbmVdIHx8ICdiYXNlbGluZScpO1xuICAgICAgICB9XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndGV4dC1hbmNob3InLCBBTkNIT1JfTUFQW3RleHRBbGlnbl0gfHwgJ2xlZnQnKTtcbiAgICB9O1xuICAgIFRleHQucHJvdG90eXBlLl9zZXRUZXh0ID0gZnVuY3Rpb24gKHRleHQpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCB4ID0gX2EueCwgX2IgPSBfYS50ZXh0QmFzZWxpbmUsIGJhc2VsaW5lID0gX2IgPT09IHZvaWQgMCA/ICdib3R0b20nIDogX2I7XG4gICAgICAgIGlmICghdGV4dCkge1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAofnRleHQuaW5kZXhPZignXFxuJykpIHtcbiAgICAgICAgICAgIHZhciB0ZXh0QXJyID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgICAgICAgICB2YXIgdGV4dExlbl8xID0gdGV4dEFyci5sZW5ndGggLSAxO1xuICAgICAgICAgICAgdmFyIGFycl8xID0gJyc7XG4gICAgICAgICAgICBlYWNoKHRleHRBcnIsIGZ1bmN0aW9uIChzZWdtZW50LCBpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VsaW5lID09PSAnYWxwaGFiZXRpYycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycl8xICs9IFwiPHRzcGFuIHg9XFxcIlwiICsgeCArIFwiXFxcIiBkeT1cXFwiXCIgKyAtdGV4dExlbl8xICsgXCJlbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VsaW5lID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCIwLjllbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VsaW5lID09PSAnbWlkZGxlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCJcIiArIC0odGV4dExlbl8xIC0gMSkgLyAyICsgXCJlbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VsaW5lID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCItXCIgKyAodGV4dExlbl8xICsgTEVUVEVSX1NQQUNJTkcpICsgXCJlbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VsaW5lID09PSAnaGFuZ2luZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycl8xICs9IFwiPHRzcGFuIHg9XFxcIlwiICsgeCArIFwiXFxcIiBkeT1cXFwiXCIgKyAoLSh0ZXh0TGVuXzEgLSAxKSAtIExFVFRFUl9TUEFDSU5HKSArIFwiZW1cXFwiPlwiICsgc2VnbWVudCArIFwiPC90c3Bhbj5cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCIxZW1cXFwiPlwiICsgc2VnbWVudCArIFwiPC90c3Bhbj5cIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVsLmlubmVySFRNTCA9IGFycl8xO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gdGV4dDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIFRleHQ7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgVGV4dDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRleHQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/shape/text.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/util/dom.js": /*!**************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/util/dom.js ***! \**************************************************/ /*! exports provided: createSVGElement, createDom, sortDom, moveTo */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSVGElement\", function() { return createSVGElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createDom\", function() { return createDom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sortDom\", function() { return sortDom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"moveTo\", function() { return moveTo; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constant */ \"./node_modules/@antv/g-svg/esm/constant.js\");\n\n\n/**\n * 创建并返回图形的 svg 元素\n * @param type svg类型\n */\nfunction createSVGElement(type) {\n return document.createElementNS('http://www.w3.org/2000/svg', type);\n}\n/**\n * 创建并返回图形的 dom 元素\n * @param {IShape} shape 图形\n * @return {SVGElement}\n */\nfunction createDom(shape) {\n var type = _constant__WEBPACK_IMPORTED_MODULE_1__[\"SHAPE_TO_TAGS\"][shape.type];\n var parent = shape.getParent();\n if (!type) {\n throw new Error(\"the type \" + shape.type + \" is not supported by svg\");\n }\n var element = createSVGElement(type);\n if (shape.get('id')) {\n element.id = shape.get('id');\n }\n shape.set('el', element);\n shape.set('attrs', {});\n // 对于 defs 下的 dom 节点,parent 为空,通过 context 统一挂载到 defs 节点下\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n }\n else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n}\n/**\n * 对 dom 元素进行排序\n * @param {IElement} element 元素\n * @param {sorter} function 排序函数\n */\nfunction sortDom(element, sorter) {\n var el = element.get('el');\n var childList = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toArray\"])(el.children).sort(sorter);\n // create empty fragment\n var fragment = document.createDocumentFragment();\n childList.forEach(function (child) {\n fragment.appendChild(child);\n });\n el.appendChild(fragment);\n}\n/**\n * 将 dom 元素移动到父元素下的指定位置\n * @param {SVGElement} element dom 元素\n * @param {number} targetIndex 目标位置(从 0 开始)\n */\nfunction moveTo(element, targetIndex) {\n var parentNode = element.parentNode;\n var siblings = Array.from(parentNode.childNodes).filter(\n // 要求为元素节点,且不能为 defs 节点\n function (node) { return node.nodeType === 1 && node.nodeName.toLowerCase() !== 'defs'; });\n // 获取目标节点\n var target = siblings[targetIndex];\n var currentIndex = siblings.indexOf(element);\n // 如果目标节点存在\n if (target) {\n // 当前索引 > 目标索引,直接插入到目标节点之前即可\n if (currentIndex > targetIndex) {\n parentNode.insertBefore(element, target);\n }\n else if (currentIndex < targetIndex) {\n // 当前索引 < 目标索引\n // 获取目标节点的下一个节点\n var targetNext = siblings[targetIndex + 1];\n // 如果目标节点的下一个节点存在,插入到该节点之前\n if (targetNext) {\n parentNode.insertBefore(element, targetNext);\n }\n else {\n // 如果该节点不存在,则追加到末尾\n parentNode.appendChild(element);\n }\n }\n }\n else {\n parentNode.appendChild(element);\n }\n}\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvZG9tLmpzPzczZWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUCxlQUFlLHVEQUFhO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQSxvQkFBb0IsMERBQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0VBQXNFLEVBQUU7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvZG9tLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU0hBUEVfVE9fVEFHUyB9IGZyb20gJy4uL2NvbnN0YW50Jztcbi8qKlxuICog5Yib5bu65bm26L+U5Zue5Zu+5b2i55qEIHN2ZyDlhYPntKBcbiAqIEBwYXJhbSB0eXBlIHN2Z+exu+Wei1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU1ZHRWxlbWVudCh0eXBlKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCB0eXBlKTtcbn1cbi8qKlxuICog5Yib5bu65bm26L+U5Zue5Zu+5b2i55qEIGRvbSDlhYPntKBcbiAqIEBwYXJhbSAge0lTaGFwZX0gc2hhcGUg5Zu+5b2iXG4gKiBAcmV0dXJuIHtTVkdFbGVtZW50fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRG9tKHNoYXBlKSB7XG4gICAgdmFyIHR5cGUgPSBTSEFQRV9UT19UQUdTW3NoYXBlLnR5cGVdO1xuICAgIHZhciBwYXJlbnQgPSBzaGFwZS5nZXRQYXJlbnQoKTtcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGhlIHR5cGUgXCIgKyBzaGFwZS50eXBlICsgXCIgaXMgbm90IHN1cHBvcnRlZCBieSBzdmdcIik7XG4gICAgfVxuICAgIHZhciBlbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCh0eXBlKTtcbiAgICBpZiAoc2hhcGUuZ2V0KCdpZCcpKSB7XG4gICAgICAgIGVsZW1lbnQuaWQgPSBzaGFwZS5nZXQoJ2lkJyk7XG4gICAgfVxuICAgIHNoYXBlLnNldCgnZWwnLCBlbGVtZW50KTtcbiAgICBzaGFwZS5zZXQoJ2F0dHJzJywge30pO1xuICAgIC8vIOWvueS6jiBkZWZzIOS4i+eahCBkb20g6IqC54K577yMcGFyZW50IOS4uuepuu+8jOmAmui/hyBjb250ZXh0IOe7n+S4gOaMgui9veWIsCBkZWZzIOiKgueCueS4i1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBwYXJlbnQuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIHBhcmVudE5vZGUgbWF5YmUgbnVsbCBmb3IgZ3JvdXBcbiAgICAgICAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnQuY3JlYXRlRG9tKCk7XG4gICAgICAgICAgICBwYXJlbnQuc2V0KCdlbCcsIHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudDtcbn1cbi8qKlxuICog5a+5IGRvbSDlhYPntKDov5vooYzmjpLluo9cbiAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQgIOWFg+e0oFxuICogQHBhcmFtIHtzb3J0ZXJ9ICAgZnVuY3Rpb24g5o6S5bqP5Ye95pWwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0RG9tKGVsZW1lbnQsIHNvcnRlcikge1xuICAgIHZhciBlbCA9IGVsZW1lbnQuZ2V0KCdlbCcpO1xuICAgIHZhciBjaGlsZExpc3QgPSB0b0FycmF5KGVsLmNoaWxkcmVuKS5zb3J0KHNvcnRlcik7XG4gICAgLy8gY3JlYXRlIGVtcHR5IGZyYWdtZW50XG4gICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgIGNoaWxkTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChjaGlsZCk7XG4gICAgfSk7XG4gICAgZWwuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xufVxuLyoqXG4gKiDlsIYgZG9tIOWFg+e0oOenu+WKqOWIsOeItuWFg+e0oOS4i+eahOaMh+WumuS9jee9rlxuICogQHBhcmFtIHtTVkdFbGVtZW50fSBlbGVtZW50ICAgICBkb20g5YWD57SgXG4gKiBAcGFyYW0ge251bWJlcn0gICAgIHRhcmdldEluZGV4IOebruagh+S9jee9rijku44gMCDlvIDlp4spXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlVG8oZWxlbWVudCwgdGFyZ2V0SW5kZXgpIHtcbiAgICB2YXIgcGFyZW50Tm9kZSA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICB2YXIgc2libGluZ3MgPSBBcnJheS5mcm9tKHBhcmVudE5vZGUuY2hpbGROb2RlcykuZmlsdGVyKFxuICAgIC8vIOimgeaxguS4uuWFg+e0oOiKgueCue+8jOS4lOS4jeiDveS4uiBkZWZzIOiKgueCuVxuICAgIGZ1bmN0aW9uIChub2RlKSB7IHJldHVybiBub2RlLm5vZGVUeXBlID09PSAxICYmIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ2RlZnMnOyB9KTtcbiAgICAvLyDojrflj5bnm67moIfoioLngrlcbiAgICB2YXIgdGFyZ2V0ID0gc2libGluZ3NbdGFyZ2V0SW5kZXhdO1xuICAgIHZhciBjdXJyZW50SW5kZXggPSBzaWJsaW5ncy5pbmRleE9mKGVsZW1lbnQpO1xuICAgIC8vIOWmguaenOebruagh+iKgueCueWtmOWcqFxuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgLy8g5b2T5YmN57Si5byVID4g55uu5qCH57Si5byV77yM55u05o6l5o+S5YWl5Yiw55uu5qCH6IqC54K55LmL5YmN5Y2z5Y+vXG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPiB0YXJnZXRJbmRleCkge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjdXJyZW50SW5kZXggPCB0YXJnZXRJbmRleCkge1xuICAgICAgICAgICAgLy8g5b2T5YmN57Si5byVIDwg55uu5qCH57Si5byVXG4gICAgICAgICAgICAvLyDojrflj5bnm67moIfoioLngrnnmoTkuIvkuIDkuKroioLngrlcbiAgICAgICAgICAgIHZhciB0YXJnZXROZXh0ID0gc2libGluZ3NbdGFyZ2V0SW5kZXggKyAxXTtcbiAgICAgICAgICAgIC8vIOWmguaenOebruagh+iKgueCueeahOS4i+S4gOS4quiKgueCueWtmOWcqO+8jOaPkuWFpeWIsOivpeiKgueCueS5i+WJjVxuICAgICAgICAgICAgaWYgKHRhcmdldE5leHQpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXROZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOivpeiKgueCueS4jeWtmOWcqO+8jOWImei/veWKoOWIsOacq+WwvlxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZG9tLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/util/dom.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/util/draw.js": /*!***************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/util/draw.js ***! \***************************************************/ /*! exports provided: drawChildren, refreshElement */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawChildren\", function() { return drawChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"refreshElement\", function() { return refreshElement; });\n/* harmony import */ var _svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./svg */ \"./node_modules/@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n\n\nfunction drawChildren(context, children) {\n children.forEach(function (child) {\n child.draw(context);\n });\n}\n/**\n * 更新元素,包括 group 和 shape\n * @param {IElement} element SVG 元素\n * @param {ChangeType} changeType 更新类型\n */\nfunction refreshElement(element, changeType) {\n // 对于还没有挂载到画布下的元素,canvas 可能为空\n var canvas = element.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n var parent_1 = element.getParent();\n var parentChildren = parent_1 ? parent_1.getChildren() : [canvas];\n var el = element.get('el');\n if (changeType === 'remove') {\n var isClipShape = element.get('isClipShape');\n // 对于 clip,不仅需要将 clipShape 对于的 SVG 元素删除,还需要将上层的 clipPath 元素也删除\n if (isClipShape) {\n var clipPathEl = el && el.parentNode;\n var defsEl = clipPathEl && clipPathEl.parentNode;\n if (clipPathEl && defsEl) {\n defsEl.removeChild(clipPathEl);\n }\n }\n else if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n else if (changeType === 'show') {\n el.setAttribute('visibility', 'visible');\n }\n else if (changeType === 'hide') {\n el.setAttribute('visibility', 'hidden');\n }\n else if (changeType === 'zIndex') {\n Object(_dom__WEBPACK_IMPORTED_MODULE_1__[\"moveTo\"])(el, parentChildren.indexOf(element));\n }\n else if (changeType === 'sort') {\n var children_1 = element.get('children');\n if (children_1 && children_1.length) {\n Object(_dom__WEBPACK_IMPORTED_MODULE_1__[\"sortDom\"])(element, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n }\n else if (changeType === 'clear') {\n // el maybe null for group\n if (el) {\n el.innerHTML = '';\n }\n }\n else if (changeType === 'matrix') {\n Object(_svg__WEBPACK_IMPORTED_MODULE_0__[\"setTransform\"])(element);\n }\n else if (changeType === 'clip') {\n Object(_svg__WEBPACK_IMPORTED_MODULE_0__[\"setClip\"])(element, context);\n }\n else if (changeType === 'attr') {\n // 已在 afterAttrsChange 进行了处理,此处 do nothing\n }\n else if (changeType === 'add') {\n element.draw(context);\n }\n }\n}\n//# sourceMappingURL=draw.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvZHJhdy5qcz83MzQ5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBOEM7QUFDTjtBQUNqQztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsV0FBVztBQUN0QjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksbURBQU07QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0RBQU87QUFDdkI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBWTtBQUN4QjtBQUNBO0FBQ0EsWUFBWSxvREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXN2Zy9lc20vdXRpbC9kcmF3LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2V0VHJhbnNmb3JtLCBzZXRDbGlwIH0gZnJvbSAnLi9zdmcnO1xuaW1wb3J0IHsgc29ydERvbSwgbW92ZVRvIH0gZnJvbSAnLi9kb20nO1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXdDaGlsZHJlbihjb250ZXh0LCBjaGlsZHJlbikge1xuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGNoaWxkLmRyYXcoY29udGV4dCk7XG4gICAgfSk7XG59XG4vKipcbiAqIOabtOaWsOWFg+e0oO+8jOWMheaLrCBncm91cCDlkowgc2hhcGVcbiAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQgICAgICAgU1ZHIOWFg+e0oFxuICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlICDmm7TmlrDnsbvlnotcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZnJlc2hFbGVtZW50KGVsZW1lbnQsIGNoYW5nZVR5cGUpIHtcbiAgICAvLyDlr7nkuo7ov5jmsqHmnInmjILovb3liLDnlLvluIPkuIvnmoTlhYPntKDvvIxjYW52YXMg5Y+v6IO95Li656m6XG4gICAgdmFyIGNhbnZhcyA9IGVsZW1lbnQuZ2V0KCdjYW52YXMnKTtcbiAgICAvLyDlj6rmnInmjILovb3liLDnlLvluIPkuIvvvIzmiY3lr7nlhYPntKDov5vooYzlrp7pmYXmuLLmn5NcbiAgICBpZiAoY2FudmFzICYmIGNhbnZhcy5nZXQoJ2F1dG9EcmF3JykpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciBwYXJlbnRfMSA9IGVsZW1lbnQuZ2V0UGFyZW50KCk7XG4gICAgICAgIHZhciBwYXJlbnRDaGlsZHJlbiA9IHBhcmVudF8xID8gcGFyZW50XzEuZ2V0Q2hpbGRyZW4oKSA6IFtjYW52YXNdO1xuICAgICAgICB2YXIgZWwgPSBlbGVtZW50LmdldCgnZWwnKTtcbiAgICAgICAgaWYgKGNoYW5nZVR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgICB2YXIgaXNDbGlwU2hhcGUgPSBlbGVtZW50LmdldCgnaXNDbGlwU2hhcGUnKTtcbiAgICAgICAgICAgIC8vIOWvueS6jiBjbGlw77yM5LiN5LuF6ZyA6KaB5bCGIGNsaXBTaGFwZSDlr7nkuo7nmoQgU1ZHIOWFg+e0oOWIoOmZpO+8jOi/mOmcgOimgeWwhuS4iuWxgueahCBjbGlwUGF0aCDlhYPntKDkuZ/liKDpmaRcbiAgICAgICAgICAgIGlmIChpc0NsaXBTaGFwZSkge1xuICAgICAgICAgICAgICAgIHZhciBjbGlwUGF0aEVsID0gZWwgJiYgZWwucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB2YXIgZGVmc0VsID0gY2xpcFBhdGhFbCAmJiBjbGlwUGF0aEVsLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgaWYgKGNsaXBQYXRoRWwgJiYgZGVmc0VsKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZnNFbC5yZW1vdmVDaGlsZChjbGlwUGF0aEVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlbCAmJiBlbC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ3Nob3cnKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdoaWRlJykge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICd6SW5kZXgnKSB7XG4gICAgICAgICAgICBtb3ZlVG8oZWwsIHBhcmVudENoaWxkcmVuLmluZGV4T2YoZWxlbWVudCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdzb3J0Jykge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuXzEgPSBlbGVtZW50LmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbl8xICYmIGNoaWxkcmVuXzEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc29ydERvbShlbGVtZW50LCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW5fMS5pbmRleE9mKGEpIC0gY2hpbGRyZW5fMS5pbmRleE9mKGIpID8gMSA6IDA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2NsZWFyJykge1xuICAgICAgICAgICAgLy8gZWwgbWF5YmUgbnVsbCBmb3IgZ3JvdXBcbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIGVsLmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdtYXRyaXgnKSB7XG4gICAgICAgICAgICBzZXRUcmFuc2Zvcm0oZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2NsaXAnKSB7XG4gICAgICAgICAgICBzZXRDbGlwKGVsZW1lbnQsIGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdhdHRyJykge1xuICAgICAgICAgICAgLy8g5bey5ZyoIGFmdGVyQXR0cnNDaGFuZ2Ug6L+b6KGM5LqG5aSE55CG77yM5q2k5aSEIGRvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnYWRkJykge1xuICAgICAgICAgICAgZWxlbWVudC5kcmF3KGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZHJhdy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/util/draw.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/util/format.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/util/format.js ***! \*****************************************************/ /*! exports provided: parseRadius, parsePath */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return parseRadius; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePath\", function() { return parsePath; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi;\nvar regexDot = /[^\\s,]+/gi;\nfunction parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4,\n };\n}\nfunction parsePath(path) {\n path = path || [];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(path)) {\n return path;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(path)) {\n path = path.match(regexTags);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(path, function (item, index) {\n item = item.match(regexDot);\n if (item[0].length > 1) {\n var tag = item[0].charAt(0);\n item.splice(1, 0, item[0].substr(1));\n item[0] = tag;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(item, function (sub, i) {\n if (!isNaN(sub)) {\n item[i] = +sub;\n }\n });\n path[index] = item;\n });\n return path;\n }\n}\n//# sourceMappingURL=format.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvZm9ybWF0LmpzP2YyNzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUQ7QUFDckQ7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBEQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxRQUFRLDBEQUFPO0FBQ2Y7QUFDQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvZm9ybWF0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCwgaXNBcnJheSwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbnZhciByZWdleFRhZ3MgPSAvW01MSFZRVENTQVpdKFteTUxIVlFUQ1NBWl0qKS9naTtcbnZhciByZWdleERvdCA9IC9bXlxccyxdKy9naTtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVJhZGl1cyhyYWRpdXMpIHtcbiAgICB2YXIgcjEgPSAwO1xuICAgIHZhciByMiA9IDA7XG4gICAgdmFyIHIzID0gMDtcbiAgICB2YXIgcjQgPSAwO1xuICAgIGlmIChpc0FycmF5KHJhZGl1cykpIHtcbiAgICAgICAgaWYgKHJhZGl1cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHIxID0gcjIgPSByMyA9IHI0ID0gcmFkaXVzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJhZGl1cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHIxID0gcjMgPSByYWRpdXNbMF07XG4gICAgICAgICAgICByMiA9IHI0ID0gcmFkaXVzWzFdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJhZGl1cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIHIxID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgcjIgPSByNCA9IHJhZGl1c1sxXTtcbiAgICAgICAgICAgIHIzID0gcmFkaXVzWzJdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcjEgPSByYWRpdXNbMF07XG4gICAgICAgICAgICByMiA9IHJhZGl1c1sxXTtcbiAgICAgICAgICAgIHIzID0gcmFkaXVzWzJdO1xuICAgICAgICAgICAgcjQgPSByYWRpdXNbM107XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHIxID0gcjIgPSByMyA9IHI0ID0gcmFkaXVzO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICByMTogcjEsXG4gICAgICAgIHIyOiByMixcbiAgICAgICAgcjM6IHIzLFxuICAgICAgICByNDogcjQsXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBhdGgocGF0aCkge1xuICAgIHBhdGggPSBwYXRoIHx8IFtdO1xuICAgIGlmIChpc0FycmF5KHBhdGgpKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcocGF0aCkpIHtcbiAgICAgICAgcGF0aCA9IHBhdGgubWF0Y2gocmVnZXhUYWdzKTtcbiAgICAgICAgZWFjaChwYXRoLCBmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtLm1hdGNoKHJlZ2V4RG90KTtcbiAgICAgICAgICAgIGlmIChpdGVtWzBdLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFnID0gaXRlbVswXS5jaGFyQXQoMCk7XG4gICAgICAgICAgICAgICAgaXRlbS5zcGxpY2UoMSwgMCwgaXRlbVswXS5zdWJzdHIoMSkpO1xuICAgICAgICAgICAgICAgIGl0ZW1bMF0gPSB0YWc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlYWNoKGl0ZW0sIGZ1bmN0aW9uIChzdWIsIGkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKHN1YikpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVtpXSA9ICtzdWI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwYXRoW2luZGV4XSA9IGl0ZW07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3JtYXQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/util/format.js\n"); /***/ }), /***/ "./node_modules/@antv/g-svg/esm/util/svg.js": /*!**************************************************!*\ !*** ./node_modules/@antv/g-svg/esm/util/svg.js ***! \**************************************************/ /*! exports provided: setShadow, setTransform, setClip */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setShadow\", function() { return setShadow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTransform\", function() { return setTransform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setClip\", function() { return setClip; });\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom */ \"./node_modules/@antv/g-svg/esm/util/dom.js\");\n\nfunction setShadow(model, context) {\n var el = model.cfg.el;\n var attrs = model.attr();\n var cfg = {\n dx: attrs.shadowOffsetX,\n dy: attrs.shadowOffsetY,\n blur: attrs.shadowBlur,\n color: attrs.shadowColor,\n };\n if (!cfg.dx && !cfg.dy && !cfg.blur && !cfg.color) {\n el.removeAttribute('filter');\n }\n else {\n var id = context.find('filter', cfg);\n if (!id) {\n id = context.addShadow(cfg);\n }\n el.setAttribute('filter', \"url(#\" + id + \")\");\n }\n}\nfunction setTransform(model) {\n var matrix = model.attr().matrix;\n if (matrix) {\n var el = model.cfg.el;\n var transform = [];\n for (var i = 0; i < 9; i += 3) {\n transform.push(matrix[i] + \",\" + matrix[i + 1]);\n }\n transform = transform.join(',');\n if (transform.indexOf('NaN') === -1) {\n el.setAttribute('transform', \"matrix(\" + transform + \")\");\n }\n else {\n console.warn('invalid matrix:', matrix);\n }\n }\n}\nfunction setClip(model, context) {\n var clip = model.getClip();\n var el = model.get('el');\n if (!clip) {\n el.removeAttribute('clip-path');\n }\n else if (clip && !el.hasAttribute('clip-path')) {\n Object(_dom__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(clip);\n clip.createPath(context);\n var id = context.addClip(clip);\n el.setAttribute('clip-path', \"url(#\" + id + \")\");\n }\n}\n//# sourceMappingURL=svg.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy1zdmcvZXNtL3V0aWwvc3ZnLmpzPzAwZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUMzQjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixPQUFPO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0RBQVM7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctc3ZnL2VzbS91dGlsL3N2Zy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZURvbSB9IGZyb20gJy4vZG9tJztcbmV4cG9ydCBmdW5jdGlvbiBzZXRTaGFkb3cobW9kZWwsIGNvbnRleHQpIHtcbiAgICB2YXIgZWwgPSBtb2RlbC5jZmcuZWw7XG4gICAgdmFyIGF0dHJzID0gbW9kZWwuYXR0cigpO1xuICAgIHZhciBjZmcgPSB7XG4gICAgICAgIGR4OiBhdHRycy5zaGFkb3dPZmZzZXRYLFxuICAgICAgICBkeTogYXR0cnMuc2hhZG93T2Zmc2V0WSxcbiAgICAgICAgYmx1cjogYXR0cnMuc2hhZG93Qmx1cixcbiAgICAgICAgY29sb3I6IGF0dHJzLnNoYWRvd0NvbG9yLFxuICAgIH07XG4gICAgaWYgKCFjZmcuZHggJiYgIWNmZy5keSAmJiAhY2ZnLmJsdXIgJiYgIWNmZy5jb2xvcikge1xuICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2ZpbHRlcicpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIGlkID0gY29udGV4dC5maW5kKCdmaWx0ZXInLCBjZmcpO1xuICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICBpZCA9IGNvbnRleHQuYWRkU2hhZG93KGNmZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdmaWx0ZXInLCBcInVybCgjXCIgKyBpZCArIFwiKVwiKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0VHJhbnNmb3JtKG1vZGVsKSB7XG4gICAgdmFyIG1hdHJpeCA9IG1vZGVsLmF0dHIoKS5tYXRyaXg7XG4gICAgaWYgKG1hdHJpeCkge1xuICAgICAgICB2YXIgZWwgPSBtb2RlbC5jZmcuZWw7XG4gICAgICAgIHZhciB0cmFuc2Zvcm0gPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA5OyBpICs9IDMpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybS5wdXNoKG1hdHJpeFtpXSArIFwiLFwiICsgbWF0cml4W2kgKyAxXSk7XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLmpvaW4oJywnKTtcbiAgICAgICAgaWYgKHRyYW5zZm9ybS5pbmRleE9mKCdOYU4nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywgXCJtYXRyaXgoXCIgKyB0cmFuc2Zvcm0gKyBcIilcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2ludmFsaWQgbWF0cml4OicsIG1hdHJpeCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0Q2xpcChtb2RlbCwgY29udGV4dCkge1xuICAgIHZhciBjbGlwID0gbW9kZWwuZ2V0Q2xpcCgpO1xuICAgIHZhciBlbCA9IG1vZGVsLmdldCgnZWwnKTtcbiAgICBpZiAoIWNsaXApIHtcbiAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdjbGlwLXBhdGgnKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2xpcCAmJiAhZWwuaGFzQXR0cmlidXRlKCdjbGlwLXBhdGgnKSkge1xuICAgICAgICBjcmVhdGVEb20oY2xpcCk7XG4gICAgICAgIGNsaXAuY3JlYXRlUGF0aChjb250ZXh0KTtcbiAgICAgICAgdmFyIGlkID0gY29udGV4dC5hZGRDbGlwKGNsaXApO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsaXAtcGF0aCcsIFwidXJsKCNcIiArIGlkICsgXCIpXCIpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN2Zy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-svg/esm/util/svg.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/ComponentManager.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/ComponentManager.js ***! \*****************************************************************/ /*! exports provided: Component, ComponentManager */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Component\", function() { return Component; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ComponentManager\", function() { return ComponentManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _Entity__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Entity */ \"./node_modules/@antv/g-webgpu-core/es/Entity.js\");\n\n\n\n\n\nvar Component = function Component(data) {//\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Component);\n};\n/**\n * 管理某一类 Component,尽可能做到 AoS 而非 SoA\n * @see https://wickedengine.net/2019/09/29/entity-component-system/\n * @see https://github.com/turanszkij/WickedEngine/blob/master/WickedEngine/wiECS.h\n */\n// tslint:disable-next-line:max-classes-per-file\n\nvar ComponentManager = /*#__PURE__*/function () {\n /**\n * 不在 Entity 中维护拥有的 Component 列表,反之亦然\n */\n function ComponentManager(clazz) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, ComponentManager);\n\n this.clazz = void 0;\n this.components = [];\n this.entities = [];\n this.lookup = {};\n this.clazz = clazz;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ComponentManager, [{\n key: \"clear\",\n value: function clear() {\n this.components = [];\n this.entities = [];\n this.lookup = {};\n }\n }, {\n key: \"contains\",\n value: function contains(entity) {\n return this.lookup[entity] > -1;\n }\n }, {\n key: \"create\",\n value: function create(entity, data) {\n this.lookup[entity] = this.components.length;\n var component = new this.clazz(data || {});\n this.components.push(component);\n this.entities.push(entity);\n return component;\n }\n }, {\n key: \"remove\",\n value: function remove(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n if (componentIndex < this.components.length - 1) {\n // 将待删除元素和最后一个元素交换\n // C++ 中有 std::move 这样的操作,避免数据的拷贝\n // @see https://github.com/turanszkij/WickedEngine/blob/master/WickedEngine/wiECS.h#L169\n this.components[componentIndex] = this.components[this.components.length - 1];\n this.entities[componentIndex] = this.entities[this.entities.length - 1];\n this.lookup[this.entities[componentIndex]] = componentIndex;\n }\n } // 待删除元素已经移动到了最后一个\n\n\n this.components.pop();\n this.entities.pop();\n delete this.lookup[entity];\n }\n }, {\n key: \"removeKeepSorted\",\n value: function removeKeepSorted(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n var entity2 = this.entities[componentIndex];\n\n if (componentIndex < this.components.length - 1) {\n // Move every component left by one that is after this element:\n for (var _i = componentIndex + 1; _i < this.components.length; ++_i) {\n this.components[_i - 1] = this.components[_i];\n } // Move every entity left by one that is after this element and update lut:\n\n\n for (var _i2 = componentIndex + 1; _i2 < this.entities.length; ++_i2) {\n this.entities[_i2 - 1] = this.entities[_i2];\n this.lookup[this.entities[_i2 - 1]] = _i2 - 1;\n }\n }\n\n this.components.pop();\n this.entities.pop();\n delete this.lookup[entity2];\n }\n }\n }, {\n key: \"moveItem\",\n value: function moveItem(srcIndex, destIndex) {\n if (srcIndex === destIndex) {\n return;\n } // Save the moved component and entity:\n\n\n var srcComponent = this.components[srcIndex];\n var srcEntity = this.entities[srcIndex]; // Every other entity-component that's in the way gets moved by one and lut is kept updated:\n\n var direction = srcIndex < destIndex ? 1 : -1;\n\n for (var _i3 = srcIndex; _i3 !== destIndex; _i3 += direction) {\n var next = _i3 + direction;\n this.components[_i3] = this.components[next];\n this.entities[_i3] = this.entities[next];\n this.lookup[this.entities[_i3]] = _i3;\n } // Saved entity-component moved to the required position:\n\n\n this.components[destIndex] = srcComponent;\n this.entities[destIndex] = srcEntity;\n this.lookup[srcEntity] = destIndex;\n }\n }, {\n key: \"getEntity\",\n value: function getEntity(index) {\n return this.entities[index];\n }\n /**\n * 由于缺少类似 C++ 的重载操作符,没法通过 [下标] 直接访问。因此只能增加该方法用于遍历。\n */\n\n }, {\n key: \"getComponent\",\n value: function getComponent(index) {\n return this.components[index];\n }\n }, {\n key: \"getComponentByEntity\",\n value: function getComponentByEntity(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n return this.components[componentIndex];\n }\n\n return null;\n }\n }, {\n key: \"getCount\",\n value: function getCount() {\n return this.components.length;\n }\n }, {\n key: \"getEntityByComponentIndex\",\n value: function getEntityByComponentIndex(componentIdx) {\n for (var _i4 = 0, _Object$keys = Object.keys(this.lookup); _i4 < _Object$keys.length; _i4++) {\n var _entity = _Object$keys[_i4];\n var entityInNum = Number(_entity);\n\n if (this.lookup[entityInNum] === componentIdx) {\n return entityInNum;\n }\n }\n\n return _Entity__WEBPACK_IMPORTED_MODULE_4__[\"EMPTY\"];\n }\n }, {\n key: \"find\",\n value: function find(callback) {\n for (var _i5 = 0; _i5 < this.getCount(); _i5++) {\n var _component = this.getComponent(_i5);\n\n if (callback(_component, _i5)) {\n return _component;\n }\n }\n\n return null;\n }\n }, {\n key: \"findIndex\",\n value: function findIndex(callback) {\n for (var _i6 = 0; _i6 < this.getCount(); _i6++) {\n var _component2 = this.getComponent(_i6);\n\n if (callback(_component2, _i6)) {\n return _i6;\n }\n }\n\n return -1;\n }\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n for (var _i7 = 0, _Object$keys2 = Object.keys(this.lookup); _i7 < _Object$keys2.length; _i7++) {\n var _entity2 = _Object$keys2[_i7];\n var entityInNum = Number(_entity2);\n var componentIndex = this.lookup[entityInNum];\n callback(entityInNum, this.getComponent(componentIndex));\n }\n }\n }, {\n key: \"forEachAsync\",\n value: function () {\n var _forEachAsync = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(callback) {\n var _i8, _Object$keys3, _entity3, entityInNum, componentIndex;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _i8 = 0, _Object$keys3 = Object.keys(this.lookup);\n\n case 1:\n if (!(_i8 < _Object$keys3.length)) {\n _context.next = 10;\n break;\n }\n\n _entity3 = _Object$keys3[_i8];\n entityInNum = Number(_entity3);\n componentIndex = this.lookup[entityInNum];\n _context.next = 7;\n return callback(entityInNum, this.getComponent(componentIndex));\n\n case 7:\n _i8++;\n _context.next = 1;\n break;\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function forEachAsync(_x) {\n return _forEachAsync.apply(this, arguments);\n }\n\n return forEachAsync;\n }()\n }, {\n key: \"map\",\n value: function map(callback) {\n var result = [];\n\n for (var _i9 = 0, _Object$keys4 = Object.keys(this.lookup); _i9 < _Object$keys4.length; _i9++) {\n var _entity4 = _Object$keys4[_i9];\n var entityInNum = Number(_entity4);\n var componentIndex = this.lookup[entityInNum];\n result.push(callback(entityInNum, this.getComponent(componentIndex)));\n }\n\n return result;\n }\n }]);\n\n return ComponentManager;\n}();\n//# sourceMappingURL=ComponentManager.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9Db21wb25lbnRNYW5hZ2VyLmpzP2EwM2IiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDVjtBQUNNO0FBQ25DO0FBQzFCLDBDQUEwQzs7QUFFakQsRUFBRSw0RUFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkNBQTJDLDZCQUE2QjtBQUN4RTtBQUNBLFdBQVc7OztBQUdYLDRDQUE0Qyw0QkFBNEI7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EsOENBQThDOztBQUU5Qzs7QUFFQSw4QkFBOEIsbUJBQW1CO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0VBQWdFLDJCQUEyQjtBQUMzRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsNkNBQUs7QUFDbEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVCQUF1Qix1QkFBdUI7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUJBQXVCLHVCQUF1QjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxpRUFBaUUsNEJBQTRCO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMEJBQTBCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUM3RTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLGlFQUFpRSw0QkFBNEI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL0NvbXBvbmVudE1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJy4vRW50aXR5JztcbmV4cG9ydCB2YXIgQ29tcG9uZW50ID0gZnVuY3Rpb24gQ29tcG9uZW50KGRhdGEpIHsvL1xuXG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wb25lbnQpO1xufTtcbi8qKlxuICog566h55CG5p+Q5LiA57G7IENvbXBvbmVudO+8jOWwveWPr+iDveWBmuWIsCBBb1Mg6ICM6Z2eIFNvQVxuICogQHNlZSBodHRwczovL3dpY2tlZGVuZ2luZS5uZXQvMjAxOS8wOS8yOS9lbnRpdHktY29tcG9uZW50LXN5c3RlbS9cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R1cmFuc3praWovV2lja2VkRW5naW5lL2Jsb2IvbWFzdGVyL1dpY2tlZEVuZ2luZS93aUVDUy5oXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtY2xhc3Nlcy1wZXItZmlsZVxuXG5leHBvcnQgdmFyIENvbXBvbmVudE1hbmFnZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICog5LiN5ZyoIEVudGl0eSDkuK3nu7TmiqTmi6XmnInnmoQgQ29tcG9uZW50IOWIl+ihqO+8jOWPjeS5i+S6pueEtlxuICAgKi9cbiAgZnVuY3Rpb24gQ29tcG9uZW50TWFuYWdlcihjbGF6eikge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wb25lbnRNYW5hZ2VyKTtcblxuICAgIHRoaXMuY2xhenogPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wb25lbnRzID0gW107XG4gICAgdGhpcy5lbnRpdGllcyA9IFtdO1xuICAgIHRoaXMubG9va3VwID0ge307XG4gICAgdGhpcy5jbGF6eiA9IGNsYXp6O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbXBvbmVudE1hbmFnZXIsIFt7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5jb21wb25lbnRzID0gW107XG4gICAgICB0aGlzLmVudGl0aWVzID0gW107XG4gICAgICB0aGlzLmxvb2t1cCA9IHt9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb250YWluc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb250YWlucyhlbnRpdHkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvb2t1cFtlbnRpdHldID4gLTE7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGUoZW50aXR5LCBkYXRhKSB7XG4gICAgICB0aGlzLmxvb2t1cFtlbnRpdHldID0gdGhpcy5jb21wb25lbnRzLmxlbmd0aDtcbiAgICAgIHZhciBjb21wb25lbnQgPSBuZXcgdGhpcy5jbGF6eihkYXRhIHx8IHt9KTtcbiAgICAgIHRoaXMuY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICB0aGlzLmVudGl0aWVzLnB1c2goZW50aXR5KTtcbiAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmUoZW50aXR5KSB7XG4gICAgICB2YXIgY29tcG9uZW50SW5kZXggPSB0aGlzLmxvb2t1cFtlbnRpdHldO1xuXG4gICAgICBpZiAoY29tcG9uZW50SW5kZXggPiAtMSkge1xuICAgICAgICBpZiAoY29tcG9uZW50SW5kZXggPCB0aGlzLmNvbXBvbmVudHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIC8vIOWwhuW+heWIoOmZpOWFg+e0oOWSjOacgOWQjuS4gOS4quWFg+e0oOS6pOaNolxuICAgICAgICAgIC8vIEMrKyDkuK3mnIkgc3RkOjptb3ZlIOi/meagt+eahOaTjeS9nO+8jOmBv+WFjeaVsOaNrueahOaLt+i0nVxuICAgICAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R1cmFuc3praWovV2lja2VkRW5naW5lL2Jsb2IvbWFzdGVyL1dpY2tlZEVuZ2luZS93aUVDUy5oI0wxNjlcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudHNbY29tcG9uZW50SW5kZXhdID0gdGhpcy5jb21wb25lbnRzW3RoaXMuY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICB0aGlzLmVudGl0aWVzW2NvbXBvbmVudEluZGV4XSA9IHRoaXMuZW50aXRpZXNbdGhpcy5lbnRpdGllcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICB0aGlzLmxvb2t1cFt0aGlzLmVudGl0aWVzW2NvbXBvbmVudEluZGV4XV0gPSBjb21wb25lbnRJbmRleDtcbiAgICAgICAgfVxuICAgICAgfSAvLyDlvoXliKDpmaTlhYPntKDlt7Lnu4/np7vliqjliLDkuobmnIDlkI7kuIDkuKpcblxuXG4gICAgICB0aGlzLmNvbXBvbmVudHMucG9wKCk7XG4gICAgICB0aGlzLmVudGl0aWVzLnBvcCgpO1xuICAgICAgZGVsZXRlIHRoaXMubG9va3VwW2VudGl0eV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZUtlZXBTb3J0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlS2VlcFNvcnRlZChlbnRpdHkpIHtcbiAgICAgIHZhciBjb21wb25lbnRJbmRleCA9IHRoaXMubG9va3VwW2VudGl0eV07XG5cbiAgICAgIGlmIChjb21wb25lbnRJbmRleCA+IC0xKSB7XG4gICAgICAgIHZhciBlbnRpdHkyID0gdGhpcy5lbnRpdGllc1tjb21wb25lbnRJbmRleF07XG5cbiAgICAgICAgaWYgKGNvbXBvbmVudEluZGV4IDwgdGhpcy5jb21wb25lbnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAvLyBNb3ZlIGV2ZXJ5IGNvbXBvbmVudCBsZWZ0IGJ5IG9uZSB0aGF0IGlzIGFmdGVyIHRoaXMgZWxlbWVudDpcbiAgICAgICAgICBmb3IgKHZhciBfaSA9IGNvbXBvbmVudEluZGV4ICsgMTsgX2kgPCB0aGlzLmNvbXBvbmVudHMubGVuZ3RoOyArK19pKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudHNbX2kgLSAxXSA9IHRoaXMuY29tcG9uZW50c1tfaV07XG4gICAgICAgICAgfSAvLyBNb3ZlIGV2ZXJ5IGVudGl0eSBsZWZ0IGJ5IG9uZSB0aGF0IGlzIGFmdGVyIHRoaXMgZWxlbWVudCBhbmQgdXBkYXRlIGx1dDpcblxuXG4gICAgICAgICAgZm9yICh2YXIgX2kyID0gY29tcG9uZW50SW5kZXggKyAxOyBfaTIgPCB0aGlzLmVudGl0aWVzLmxlbmd0aDsgKytfaTIpIHtcbiAgICAgICAgICAgIHRoaXMuZW50aXRpZXNbX2kyIC0gMV0gPSB0aGlzLmVudGl0aWVzW19pMl07XG4gICAgICAgICAgICB0aGlzLmxvb2t1cFt0aGlzLmVudGl0aWVzW19pMiAtIDFdXSA9IF9pMiAtIDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRzLnBvcCgpO1xuICAgICAgICB0aGlzLmVudGl0aWVzLnBvcCgpO1xuICAgICAgICBkZWxldGUgdGhpcy5sb29rdXBbZW50aXR5Ml07XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm1vdmVJdGVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG1vdmVJdGVtKHNyY0luZGV4LCBkZXN0SW5kZXgpIHtcbiAgICAgIGlmIChzcmNJbmRleCA9PT0gZGVzdEluZGV4KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gU2F2ZSB0aGUgbW92ZWQgY29tcG9uZW50IGFuZCBlbnRpdHk6XG5cblxuICAgICAgdmFyIHNyY0NvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50c1tzcmNJbmRleF07XG4gICAgICB2YXIgc3JjRW50aXR5ID0gdGhpcy5lbnRpdGllc1tzcmNJbmRleF07IC8vIEV2ZXJ5IG90aGVyIGVudGl0eS1jb21wb25lbnQgdGhhdCdzIGluIHRoZSB3YXkgZ2V0cyBtb3ZlZCBieSBvbmUgYW5kIGx1dCBpcyBrZXB0IHVwZGF0ZWQ6XG5cbiAgICAgIHZhciBkaXJlY3Rpb24gPSBzcmNJbmRleCA8IGRlc3RJbmRleCA/IDEgOiAtMTtcblxuICAgICAgZm9yICh2YXIgX2kzID0gc3JjSW5kZXg7IF9pMyAhPT0gZGVzdEluZGV4OyBfaTMgKz0gZGlyZWN0aW9uKSB7XG4gICAgICAgIHZhciBuZXh0ID0gX2kzICsgZGlyZWN0aW9uO1xuICAgICAgICB0aGlzLmNvbXBvbmVudHNbX2kzXSA9IHRoaXMuY29tcG9uZW50c1tuZXh0XTtcbiAgICAgICAgdGhpcy5lbnRpdGllc1tfaTNdID0gdGhpcy5lbnRpdGllc1tuZXh0XTtcbiAgICAgICAgdGhpcy5sb29rdXBbdGhpcy5lbnRpdGllc1tfaTNdXSA9IF9pMztcbiAgICAgIH0gLy8gU2F2ZWQgZW50aXR5LWNvbXBvbmVudCBtb3ZlZCB0byB0aGUgcmVxdWlyZWQgcG9zaXRpb246XG5cblxuICAgICAgdGhpcy5jb21wb25lbnRzW2Rlc3RJbmRleF0gPSBzcmNDb21wb25lbnQ7XG4gICAgICB0aGlzLmVudGl0aWVzW2Rlc3RJbmRleF0gPSBzcmNFbnRpdHk7XG4gICAgICB0aGlzLmxvb2t1cFtzcmNFbnRpdHldID0gZGVzdEluZGV4O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RW50aXR5KGluZGV4KSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdGllc1tpbmRleF07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOeUseS6jue8uuWwkeexu+S8vCBDKysg55qE6YeN6L295pON5L2c56ym77yM5rKh5rOV6YCa6L+HIFvkuIvmoIddIOebtOaOpeiuv+mXruOAguWboOatpOWPquiDveWinuWKoOivpeaWueazleeUqOS6jumBjeWOhuOAglxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tcG9uZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbXBvbmVudChpbmRleCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50c1tpbmRleF07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENvbXBvbmVudEJ5RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSkge1xuICAgICAgdmFyIGNvbXBvbmVudEluZGV4ID0gdGhpcy5sb29rdXBbZW50aXR5XTtcblxuICAgICAgaWYgKGNvbXBvbmVudEluZGV4ID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50c1tjb21wb25lbnRJbmRleF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb3VudCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudHMubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRFbnRpdHlCeUNvbXBvbmVudEluZGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEVudGl0eUJ5Q29tcG9uZW50SW5kZXgoY29tcG9uZW50SWR4KSB7XG4gICAgICBmb3IgKHZhciBfaTQgPSAwLCBfT2JqZWN0JGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmxvb2t1cCk7IF9pNCA8IF9PYmplY3Qka2V5cy5sZW5ndGg7IF9pNCsrKSB7XG4gICAgICAgIHZhciBfZW50aXR5ID0gX09iamVjdCRrZXlzW19pNF07XG4gICAgICAgIHZhciBlbnRpdHlJbk51bSA9IE51bWJlcihfZW50aXR5KTtcblxuICAgICAgICBpZiAodGhpcy5sb29rdXBbZW50aXR5SW5OdW1dID09PSBjb21wb25lbnRJZHgpIHtcbiAgICAgICAgICByZXR1cm4gZW50aXR5SW5OdW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaW5kXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2spIHtcbiAgICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IHRoaXMuZ2V0Q291bnQoKTsgX2k1KyspIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudChfaTUpO1xuXG4gICAgICAgIGlmIChjYWxsYmFjayhfY29tcG9uZW50LCBfaTUpKSB7XG4gICAgICAgICAgcmV0dXJuIF9jb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZpbmRJbmRleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmaW5kSW5kZXgoY2FsbGJhY2spIHtcbiAgICAgIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IHRoaXMuZ2V0Q291bnQoKTsgX2k2KyspIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnQyID0gdGhpcy5nZXRDb21wb25lbnQoX2k2KTtcblxuICAgICAgICBpZiAoY2FsbGJhY2soX2NvbXBvbmVudDIsIF9pNikpIHtcbiAgICAgICAgICByZXR1cm4gX2k2O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9yRWFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrKSB7XG4gICAgICBmb3IgKHZhciBfaTcgPSAwLCBfT2JqZWN0JGtleXMyID0gT2JqZWN0LmtleXModGhpcy5sb29rdXApOyBfaTcgPCBfT2JqZWN0JGtleXMyLmxlbmd0aDsgX2k3KyspIHtcbiAgICAgICAgdmFyIF9lbnRpdHkyID0gX09iamVjdCRrZXlzMltfaTddO1xuICAgICAgICB2YXIgZW50aXR5SW5OdW0gPSBOdW1iZXIoX2VudGl0eTIpO1xuICAgICAgICB2YXIgY29tcG9uZW50SW5kZXggPSB0aGlzLmxvb2t1cFtlbnRpdHlJbk51bV07XG4gICAgICAgIGNhbGxiYWNrKGVudGl0eUluTnVtLCB0aGlzLmdldENvbXBvbmVudChjb21wb25lbnRJbmRleCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb3JFYWNoQXN5bmNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9mb3JFYWNoQXN5bmMgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBfaTgsIF9PYmplY3Qka2V5czMsIF9lbnRpdHkzLCBlbnRpdHlJbk51bSwgY29tcG9uZW50SW5kZXg7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaTggPSAwLCBfT2JqZWN0JGtleXMzID0gT2JqZWN0LmtleXModGhpcy5sb29rdXApO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBpZiAoIShfaTggPCBfT2JqZWN0JGtleXMzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9lbnRpdHkzID0gX09iamVjdCRrZXlzM1tfaThdO1xuICAgICAgICAgICAgICAgIGVudGl0eUluTnVtID0gTnVtYmVyKF9lbnRpdHkzKTtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRJbmRleCA9IHRoaXMubG9va3VwW2VudGl0eUluTnVtXTtcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNztcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZW50aXR5SW5OdW0sIHRoaXMuZ2V0Q29tcG9uZW50KGNvbXBvbmVudEluZGV4KSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgIF9pOCsrO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGZvckVhY2hBc3luYyhfeCkge1xuICAgICAgICByZXR1cm4gX2ZvckVhY2hBc3luYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9yRWFjaEFzeW5jO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcIm1hcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtYXAoY2FsbGJhY2spIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgICAgZm9yICh2YXIgX2k5ID0gMCwgX09iamVjdCRrZXlzNCA9IE9iamVjdC5rZXlzKHRoaXMubG9va3VwKTsgX2k5IDwgX09iamVjdCRrZXlzNC5sZW5ndGg7IF9pOSsrKSB7XG4gICAgICAgIHZhciBfZW50aXR5NCA9IF9PYmplY3Qka2V5czRbX2k5XTtcbiAgICAgICAgdmFyIGVudGl0eUluTnVtID0gTnVtYmVyKF9lbnRpdHk0KTtcbiAgICAgICAgdmFyIGNvbXBvbmVudEluZGV4ID0gdGhpcy5sb29rdXBbZW50aXR5SW5OdW1dO1xuICAgICAgICByZXN1bHQucHVzaChjYWxsYmFjayhlbnRpdHlJbk51bSwgdGhpcy5nZXRDb21wb25lbnQoY29tcG9uZW50SW5kZXgpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbXBvbmVudE1hbmFnZXI7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db21wb25lbnRNYW5hZ2VyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/Entity.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/Entity.js ***! \*******************************************************/ /*! exports provided: EMPTY, createEntity */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EMPTY\", function() { return EMPTY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createEntity\", function() { return createEntity; });\nvar EMPTY = -1;\nvar entitySequence = 1;\n/**\n * 类似关系型数据库的主键\n * TODO: 自动生成,考虑序列化\n */\n\nfunction createEntity() {\n return entitySequence++;\n}\n//# sourceMappingURL=Entity.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9FbnRpdHkuanM/ZjcyZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9FbnRpdHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIEVNUFRZID0gLTE7XG52YXIgZW50aXR5U2VxdWVuY2UgPSAxO1xuLyoqXG4gKiDnsbvkvLzlhbPns7vlnovmlbDmja7lupPnmoTkuLvplK5cbiAqIFRPRE86IOiHquWKqOeUn+aIkO+8jOiAg+iZkeW6j+WIl+WMllxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbnRpdHkoKSB7XG4gIHJldHVybiBlbnRpdHlTZXF1ZW5jZSsrO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW50aXR5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/Entity.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js": /*!***************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js ***! \***************************************************************************************/ /*! exports provided: FrameGraphHandle */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphHandle\", function() { return FrameGraphHandle; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\nvar FrameGraphHandle = function FrameGraphHandle() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, FrameGraphHandle);\n\n this.index = void 0;\n};\n//# sourceMappingURL=FrameGraphHandle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvRnJhbWVHcmFwaEhhbmRsZS5qcz8yMGM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQzdEO0FBQ1AsRUFBRSw0RUFBZTs7QUFFakI7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL0ZyYW1lR3JhcGhIYW5kbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5leHBvcnQgdmFyIEZyYW1lR3JhcGhIYW5kbGUgPSBmdW5jdGlvbiBGcmFtZUdyYXBoSGFuZGxlKCkge1xuICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRnJhbWVHcmFwaEhhbmRsZSk7XG5cbiAgdGhpcy5pbmRleCA9IHZvaWQgMDtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GcmFtZUdyYXBoSGFuZGxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js": /*!*************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js ***! \*************************************************************************************/ /*! exports provided: FrameGraphPass */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphPass\", function() { return FrameGraphPass; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\nvar FrameGraphPass = function FrameGraphPass() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, FrameGraphPass);\n\n this.name = void 0;\n this.data = void 0;\n this.execute = void 0;\n this.tearDown = void 0;\n};\n//# sourceMappingURL=FrameGraphPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvRnJhbWVHcmFwaFBhc3MuanM/ZDdlYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUM3RDtBQUNQLEVBQUUsNEVBQWU7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvZnJhbWVncmFwaC9GcmFtZUdyYXBoUGFzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmV4cG9ydCB2YXIgRnJhbWVHcmFwaFBhc3MgPSBmdW5jdGlvbiBGcmFtZUdyYXBoUGFzcygpIHtcbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEZyYW1lR3JhcGhQYXNzKTtcblxuICB0aGlzLm5hbWUgPSB2b2lkIDA7XG4gIHRoaXMuZGF0YSA9IHZvaWQgMDtcbiAgdGhpcy5leGVjdXRlID0gdm9pZCAwO1xuICB0aGlzLnRlYXJEb3duID0gdm9pZCAwO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZyYW1lR3JhcGhQYXNzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/PassNode.js": /*!*******************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/PassNode.js ***! \*******************************************************************************/ /*! exports provided: PassNode */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PassNode\", function() { return PassNode; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar PassNode = /*#__PURE__*/function () {\n function PassNode() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, PassNode);\n\n this.name = void 0;\n this.refCount = 0;\n this.hasSideEffect = false;\n this.devirtualize = [];\n this.destroy = [];\n this.reads = [];\n this.writes = [];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(PassNode, [{\n key: \"read\",\n value: function read(handle) {\n if (!this.reads.find(function (h) {\n return h.index === handle.index;\n })) {\n this.reads.push(handle);\n }\n\n return handle;\n }\n }, {\n key: \"sample\",\n value: function sample(handle) {\n this.read(handle); // TODO: 记录在 this.samples 中\n\n return handle;\n }\n }, {\n key: \"write\",\n value: function write(fg, handle) {\n var existed = this.writes.find(function (h) {\n return h.index === handle.index;\n });\n\n if (existed) {\n return handle;\n }\n\n var node = fg.getResourceNode(handle);\n node.resource.version++;\n\n if (node.resource.imported) {\n this.hasSideEffect = true;\n }\n\n var r = fg.createResourceNode(node.resource);\n var newNode = fg.getResourceNode(r);\n newNode.writer = this;\n this.writes.push(r);\n return r;\n }\n }]);\n\n return PassNode;\n}();\n//# sourceMappingURL=PassNode.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUGFzc05vZGUuanM/OGY0MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUN2RDtBQUNQO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Bhc3NOb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuZXhwb3J0IHZhciBQYXNzTm9kZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhc3NOb2RlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXNzTm9kZSk7XG5cbiAgICB0aGlzLm5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5yZWZDb3VudCA9IDA7XG4gICAgdGhpcy5oYXNTaWRlRWZmZWN0ID0gZmFsc2U7XG4gICAgdGhpcy5kZXZpcnR1YWxpemUgPSBbXTtcbiAgICB0aGlzLmRlc3Ryb3kgPSBbXTtcbiAgICB0aGlzLnJlYWRzID0gW107XG4gICAgdGhpcy53cml0ZXMgPSBbXTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQYXNzTm9kZSwgW3tcbiAgICBrZXk6IFwicmVhZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkKGhhbmRsZSkge1xuICAgICAgaWYgKCF0aGlzLnJlYWRzLmZpbmQoZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgcmV0dXJuIGguaW5kZXggPT09IGhhbmRsZS5pbmRleDtcbiAgICAgIH0pKSB7XG4gICAgICAgIHRoaXMucmVhZHMucHVzaChoYW5kbGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaGFuZGxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzYW1wbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2FtcGxlKGhhbmRsZSkge1xuICAgICAgdGhpcy5yZWFkKGhhbmRsZSk7IC8vIFRPRE86IOiusOW9leWcqCB0aGlzLnNhbXBsZXMg5LitXG5cbiAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIndyaXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlKGZnLCBoYW5kbGUpIHtcbiAgICAgIHZhciBleGlzdGVkID0gdGhpcy53cml0ZXMuZmluZChmdW5jdGlvbiAoaCkge1xuICAgICAgICByZXR1cm4gaC5pbmRleCA9PT0gaGFuZGxlLmluZGV4O1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChleGlzdGVkKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICB9XG5cbiAgICAgIHZhciBub2RlID0gZmcuZ2V0UmVzb3VyY2VOb2RlKGhhbmRsZSk7XG4gICAgICBub2RlLnJlc291cmNlLnZlcnNpb24rKztcblxuICAgICAgaWYgKG5vZGUucmVzb3VyY2UuaW1wb3J0ZWQpIHtcbiAgICAgICAgdGhpcy5oYXNTaWRlRWZmZWN0ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBmZy5jcmVhdGVSZXNvdXJjZU5vZGUobm9kZS5yZXNvdXJjZSk7XG4gICAgICB2YXIgbmV3Tm9kZSA9IGZnLmdldFJlc291cmNlTm9kZShyKTtcbiAgICAgIG5ld05vZGUud3JpdGVyID0gdGhpcztcbiAgICAgIHRoaXMud3JpdGVzLnB1c2gocik7XG4gICAgICByZXR1cm4gcjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGFzc05vZGU7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXNzTm9kZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/PassNode.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js": /*!************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js ***! \************************************************************************************/ /*! exports provided: ResourceEntry */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceEntry\", function() { return ResourceEntry; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _VirtualResource__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VirtualResource */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar ResourceEntry = /*#__PURE__*/function (_VirtualResource) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(ResourceEntry, _VirtualResource);\n\n var _super = _createSuper(ResourceEntry);\n\n function ResourceEntry() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ResourceEntry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.version = 0;\n _this.refs = 0;\n _this.name = void 0;\n _this.imported = void 0;\n _this.priority = void 0;\n _this.discardStart = true;\n _this.discardEnd = false;\n _this.descriptor = void 0;\n _this.resource = void 0;\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ResourceEntry, [{\n key: \"preExecuteDestroy\",\n\n /**\n * Lifecycles in FG's execute\n */\n value: function preExecuteDestroy() {\n this.discardEnd = true;\n }\n }, {\n key: \"postExecuteDestroy\",\n value: function postExecuteDestroy() {\n if (!this.imported) {// TODO: 不需要每一帧结束后都销毁资源,可以增加临时资源标志\n // this.resource.destroy();\n }\n }\n }, {\n key: \"postExecuteDevirtualize\",\n value: function postExecuteDevirtualize() {\n this.discardStart = false;\n }\n }, {\n key: \"preExecuteDevirtualize\",\n value: function preExecuteDevirtualize() {\n if (!this.imported) {//\n }\n }\n }]);\n\n return ResourceEntry;\n}(_VirtualResource__WEBPACK_IMPORTED_MODULE_5__[\"VirtualResource\"]);\n//# sourceMappingURL=ResourceEntry.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VFbnRyeS5qcz8zODJmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDTjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFOVE7QUFDN0M7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsdUVBQXVFLGFBQWE7QUFDcEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLGdFQUFlO0FBQ2pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlRW50cnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IFZpcnR1YWxSZXNvdXJjZSB9IGZyb20gJy4vVmlydHVhbFJlc291cmNlJztcbmV4cG9ydCB2YXIgUmVzb3VyY2VFbnRyeSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1ZpcnR1YWxSZXNvdXJjZSkge1xuICBfaW5oZXJpdHMoUmVzb3VyY2VFbnRyeSwgX1ZpcnR1YWxSZXNvdXJjZSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihSZXNvdXJjZUVudHJ5KTtcblxuICBmdW5jdGlvbiBSZXNvdXJjZUVudHJ5KCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZXNvdXJjZUVudHJ5KTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX3RoaXMudmVyc2lvbiA9IDA7XG4gICAgX3RoaXMucmVmcyA9IDA7XG4gICAgX3RoaXMubmFtZSA9IHZvaWQgMDtcbiAgICBfdGhpcy5pbXBvcnRlZCA9IHZvaWQgMDtcbiAgICBfdGhpcy5wcmlvcml0eSA9IHZvaWQgMDtcbiAgICBfdGhpcy5kaXNjYXJkU3RhcnQgPSB0cnVlO1xuICAgIF90aGlzLmRpc2NhcmRFbmQgPSBmYWxzZTtcbiAgICBfdGhpcy5kZXNjcmlwdG9yID0gdm9pZCAwO1xuICAgIF90aGlzLnJlc291cmNlID0gdm9pZCAwO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZXNvdXJjZUVudHJ5LCBbe1xuICAgIGtleTogXCJwcmVFeGVjdXRlRGVzdHJveVwiLFxuXG4gICAgLyoqXG4gICAgICogTGlmZWN5Y2xlcyBpbiBGRydzIGV4ZWN1dGVcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJlRXhlY3V0ZURlc3Ryb3koKSB7XG4gICAgICB0aGlzLmRpc2NhcmRFbmQgPSB0cnVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3N0RXhlY3V0ZURlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcG9zdEV4ZWN1dGVEZXN0cm95KCkge1xuICAgICAgaWYgKCF0aGlzLmltcG9ydGVkKSB7Ly8gVE9ETzog5LiN6ZyA6KaB5q+P5LiA5bin57uT5p2f5ZCO6YO96ZSA5q+B6LWE5rqQ77yM5Y+v5Lul5aKe5Yqg5Li05pe26LWE5rqQ5qCH5b+XXG4gICAgICAgIC8vIHRoaXMucmVzb3VyY2UuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3N0RXhlY3V0ZURldmlydHVhbGl6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3N0RXhlY3V0ZURldmlydHVhbGl6ZSgpIHtcbiAgICAgIHRoaXMuZGlzY2FyZFN0YXJ0ID0gZmFsc2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInByZUV4ZWN1dGVEZXZpcnR1YWxpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJlRXhlY3V0ZURldmlydHVhbGl6ZSgpIHtcbiAgICAgIGlmICghdGhpcy5pbXBvcnRlZCkgey8vXG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc291cmNlRW50cnk7XG59KFZpcnR1YWxSZXNvdXJjZSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZXNvdXJjZUVudHJ5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js": /*!***********************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js ***! \***********************************************************************************/ /*! exports provided: ResourceNode */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceNode\", function() { return ResourceNode; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\nvar ResourceNode = function ResourceNode() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ResourceNode);\n\n this.resource = void 0;\n this.writer = void 0;\n this.readerCount = 0;\n this.version = void 0;\n};\n//# sourceMappingURL=ResourceNode.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VOb2RlLmpzP2ZmZTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDN0Q7QUFDUCxFQUFFLDRFQUFlOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VOb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuZXhwb3J0IHZhciBSZXNvdXJjZU5vZGUgPSBmdW5jdGlvbiBSZXNvdXJjZU5vZGUoKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZXNvdXJjZU5vZGUpO1xuXG4gIHRoaXMucmVzb3VyY2UgPSB2b2lkIDA7XG4gIHRoaXMud3JpdGVyID0gdm9pZCAwO1xuICB0aGlzLnJlYWRlckNvdW50ID0gMDtcbiAgdGhpcy52ZXJzaW9uID0gdm9pZCAwO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlc291cmNlTm9kZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js": /*!***********************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js ***! \***********************************************************************************/ /*! exports provided: ResourcePool */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourcePool\", function() { return ResourcePool; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _renderer_gl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../renderer/gl */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\n\n\n\nvar ResourcePool = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_6__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function ResourcePool() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ResourcePool);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"engine\", _descriptor, this);\n\n this.resourcePool = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ResourcePool, [{\n key: \"getOrCreateResource\",\n\n /**\n * 负责实例化虚拟资源,通过引擎服务\n * @param resource 虚拟资源\n */\n value: function getOrCreateResource(resource) {\n if (!this.resourcePool[resource.name]) {\n var _resource$descriptor = resource.descriptor,\n width = _resource$descriptor.width,\n height = _resource$descriptor.height,\n usage = _resource$descriptor.usage;\n this.resourcePool[resource.name] = this.engine.createFramebuffer({\n color: this.engine.createTexture2D({\n width: width,\n height: height,\n wrapS: _renderer_gl__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].CLAMP_TO_EDGE,\n wrapT: _renderer_gl__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].CLAMP_TO_EDGE,\n usage: usage\n })\n });\n }\n\n return this.resourcePool[resource.name];\n }\n }, {\n key: \"clean\",\n value: function clean() {\n this.resourcePool = {};\n }\n }]);\n\n return ResourcePool;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=ResourcePool.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VQb29sLmpzPzQyY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFK0M7QUFDRDtBQUNWO0FBQzdCLDJCQUEyQiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVU7QUFDekU7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwrQ0FBRTtBQUNyQixtQkFBbUIsK0NBQUU7QUFDckI7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlUG9vbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF90ZW1wO1xuXG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICcuLi9yZW5kZXJlci9nbCc7XG5leHBvcnQgdmFyIFJlc291cmNlUG9vbCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZXNvdXJjZVBvb2woKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlc291cmNlUG9vbCk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICB0aGlzLnJlc291cmNlUG9vbCA9IHt9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlc291cmNlUG9vbCwgW3tcbiAgICBrZXk6IFwiZ2V0T3JDcmVhdGVSZXNvdXJjZVwiLFxuXG4gICAgLyoqXG4gICAgICog6LSf6LSj5a6e5L6L5YyW6Jma5ouf6LWE5rqQ77yM6YCa6L+H5byV5pOO5pyN5YqhXG4gICAgICogQHBhcmFtIHJlc291cmNlIOiZmuaLn+i1hOa6kFxuICAgICAqL1xuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRPckNyZWF0ZVJlc291cmNlKHJlc291cmNlKSB7XG4gICAgICBpZiAoIXRoaXMucmVzb3VyY2VQb29sW3Jlc291cmNlLm5hbWVdKSB7XG4gICAgICAgIHZhciBfcmVzb3VyY2UkZGVzY3JpcHRvciA9IHJlc291cmNlLmRlc2NyaXB0b3IsXG4gICAgICAgICAgICB3aWR0aCA9IF9yZXNvdXJjZSRkZXNjcmlwdG9yLndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0ID0gX3Jlc291cmNlJGRlc2NyaXB0b3IuaGVpZ2h0LFxuICAgICAgICAgICAgdXNhZ2UgPSBfcmVzb3VyY2UkZGVzY3JpcHRvci51c2FnZTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZVBvb2xbcmVzb3VyY2UubmFtZV0gPSB0aGlzLmVuZ2luZS5jcmVhdGVGcmFtZWJ1ZmZlcih7XG4gICAgICAgICAgY29sb3I6IHRoaXMuZW5naW5lLmNyZWF0ZVRleHR1cmUyRCh7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICAgIHdyYXBTOiBnbC5DTEFNUF9UT19FREdFLFxuICAgICAgICAgICAgd3JhcFQ6IGdsLkNMQU1QX1RPX0VER0UsXG4gICAgICAgICAgICB1c2FnZTogdXNhZ2VcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VQb29sW3Jlc291cmNlLm5hbWVdO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjbGVhblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhbigpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VQb29sID0ge307XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc291cmNlUG9vbDtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVzb3VyY2VQb29sLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/System.js": /*!*****************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/System.js ***! \*****************************************************************************/ /*! exports provided: FrameGraphSystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphSystem\", function() { return FrameGraphSystem; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _FrameGraphHandle__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./FrameGraphHandle */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js\");\n/* harmony import */ var _FrameGraphPass__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./FrameGraphPass */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js\");\n/* harmony import */ var _PassNode__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./PassNode */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/PassNode.js\");\n/* harmony import */ var _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ResourceEntry */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js\");\n/* harmony import */ var _ResourceNode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ResourceNode */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\n\n\n\n/**\n * ported from FrameGraph implemented by SakuraRender\n * @see https://zhuanlan.zhihu.com/p/98572442\n * @see https://github.com/SaeruHikari/Sakura/blob/RenderGraph/SakuraCore/Source/Framework/GraphicTypes/FrameGraph/SakuraFrameGraph.cpp\n */\n\nvar FrameGraphSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function FrameGraphSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, FrameGraphSystem);\n\n this.passNodes = [];\n this.resourceNodes = [];\n this.frameGraphPasses = [];\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(FrameGraphSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(views) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // this.engine.beginFrame();\n this.compile();\n _context.next = 3;\n return this.executePassNodes(views);\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.frameGraphPasses.forEach(function (pass) {\n if (pass.tearDown) {\n pass.tearDown();\n }\n });\n this.reset();\n }\n }, {\n key: \"addPass\",\n value: function addPass(name, setup, execute, tearDown) {\n var frameGraphPass = new _FrameGraphPass__WEBPACK_IMPORTED_MODULE_11__[\"FrameGraphPass\"]();\n frameGraphPass.execute = execute;\n\n if (tearDown) {\n frameGraphPass.tearDown = tearDown;\n }\n\n frameGraphPass.name = name;\n var passNode = new _PassNode__WEBPACK_IMPORTED_MODULE_12__[\"PassNode\"]();\n passNode.name = name;\n this.passNodes.push(passNode);\n this.frameGraphPasses.push(frameGraphPass);\n setup(this, passNode, frameGraphPass);\n return frameGraphPass;\n }\n }, {\n key: \"getPass\",\n value: function getPass(name) {\n return this.frameGraphPasses.find(function (p) {\n return p.name === name;\n });\n }\n }, {\n key: \"compile\",\n value: function compile() {\n var _this = this;\n\n var _iterator = _createForOfIteratorHelper(this.passNodes),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _pass = _step.value;\n _pass.refCount = _pass.writes.length + (_pass.hasSideEffect ? 1 : 0);\n\n _pass.reads.forEach(function (handle) {\n _this.resourceNodes[handle.index].readerCount++;\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n var stack = [];\n\n var _iterator2 = _createForOfIteratorHelper(this.resourceNodes),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var node = _step2.value;\n\n if (node.readerCount === 0) {\n stack.push(node);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n while (stack.length) {\n var pNode = stack.pop();\n var writer = pNode && pNode.writer;\n\n if (writer) {\n if (--writer.refCount === 0) {\n // this pass is culled\n // assert(!writer->hasSideEffect);\n var _iterator3 = _createForOfIteratorHelper(writer.reads),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var resource = _step3.value;\n var r = this.resourceNodes[resource.index];\n\n if (--r.readerCount === 0) {\n stack.push(r);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } // update the final reference counts\n\n\n this.resourceNodes.forEach(function (node) {\n node.resource.refs += node.readerCount;\n });\n\n var _iterator4 = _createForOfIteratorHelper(this.passNodes),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _pass2 = _step4.value;\n\n if (!_pass2.refCount) {\n continue;\n }\n\n var _iterator6 = _createForOfIteratorHelper(_pass2.reads),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _resource2 = _step6.value;\n var pResource = this.resourceNodes[_resource2.index].resource;\n pResource.first = pResource.first ? pResource.first : _pass2;\n pResource.last = _pass2;\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n var _iterator7 = _createForOfIteratorHelper(_pass2.writes),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _resource3 = _step7.value;\n var _pResource = this.resourceNodes[_resource3.index].resource;\n _pResource.first = _pResource.first ? _pResource.first : _pass2;\n _pResource.last = _pass2;\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n for (var priority = 0; priority < 2; priority++) {\n var _iterator5 = _createForOfIteratorHelper(this.resourceNodes),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var resoureNode = _step5.value;\n var _resource = resoureNode.resource;\n\n if (_resource.priority === priority && _resource.refs) {\n var pFirst = _resource.first;\n var pLast = _resource.last;\n\n if (pFirst && pLast) {\n pFirst.devirtualize.push(_resource);\n pLast.destroy.push(_resource);\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n }, {\n key: \"executePassNodes\",\n value: function () {\n var _executePassNodes = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee2(views) {\n var _iterator8, _step8, _step8$value, index, node, _iterator9, _step9, resource, _iterator10, _step10, _resource4, _iterator11, _step11, _resource5, _iterator12, _step12, _resource6;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _iterator8 = _createForOfIteratorHelper(this.passNodes.entries());\n _context2.prev = 1;\n\n _iterator8.s();\n\n case 3:\n if ((_step8 = _iterator8.n()).done) {\n _context2.next = 18;\n break;\n }\n\n _step8$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step8.value, 2), index = _step8$value[0], node = _step8$value[1];\n\n if (!node.refCount) {\n _context2.next = 16;\n break;\n }\n\n _iterator9 = _createForOfIteratorHelper(node.devirtualize);\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n resource = _step9.value;\n resource.preExecuteDevirtualize(this.engine);\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n _iterator10 = _createForOfIteratorHelper(node.destroy);\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n _resource4 = _step10.value;\n\n _resource4.preExecuteDestroy(this.engine);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n _context2.next = 12;\n return this.frameGraphPasses[index].execute(this, this.frameGraphPasses[index], views);\n\n case 12:\n _iterator11 = _createForOfIteratorHelper(node.devirtualize);\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n _resource5 = _step11.value;\n\n _resource5.postExecuteDevirtualize(this.engine);\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n _iterator12 = _createForOfIteratorHelper(node.destroy);\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n _resource6 = _step12.value;\n\n _resource6.postExecuteDestroy(this.engine);\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n\n case 16:\n _context2.next = 3;\n break;\n\n case 18:\n _context2.next = 23;\n break;\n\n case 20:\n _context2.prev = 20;\n _context2.t0 = _context2[\"catch\"](1);\n\n _iterator8.e(_context2.t0);\n\n case 23:\n _context2.prev = 23;\n\n _iterator8.f();\n\n return _context2.finish(23);\n\n case 26:\n this.reset();\n\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[1, 20, 23, 26]]);\n }));\n\n function executePassNodes(_x2) {\n return _executePassNodes.apply(this, arguments);\n }\n\n return executePassNodes;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n this.passNodes = [];\n this.resourceNodes = [];\n this.frameGraphPasses = [];\n }\n }, {\n key: \"getResourceNode\",\n value: function getResourceNode(r) {\n return this.resourceNodes[r.index];\n }\n }, {\n key: \"createResourceNode\",\n value: function createResourceNode(resourceEntry) {\n var resourceNode = new _ResourceNode__WEBPACK_IMPORTED_MODULE_14__[\"ResourceNode\"]();\n resourceNode.resource = resourceEntry;\n resourceNode.version = resourceEntry.version;\n this.resourceNodes.push(resourceNode);\n var fgh = new _FrameGraphHandle__WEBPACK_IMPORTED_MODULE_10__[\"FrameGraphHandle\"]();\n fgh.index = this.resourceNodes.length - 1;\n return fgh;\n }\n }, {\n key: \"createTexture\",\n value: function createTexture(passNode, name, descriptor) {\n var resource = new _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__[\"ResourceEntry\"]();\n resource.name = name;\n resource.descriptor = descriptor;\n return this.createResourceNode(resource);\n }\n }, {\n key: \"createRenderTarget\",\n value: function createRenderTarget(passNode, name, descriptor) {\n var resource = new _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__[\"ResourceEntry\"]();\n resource.name = name;\n resource.descriptor = descriptor;\n return this.createResourceNode(resource);\n }\n }, {\n key: \"present\",\n value: function present(input) {\n this.addPass('Present', function (fg, passNode) {\n passNode.read(input);\n passNode.hasSideEffect = true;\n }, /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n })));\n }\n }]);\n\n return FrameGraphSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtLmpzP2NmOTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrRTtBQUNMO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFdEk7QUFDRDtBQUNRO0FBQ0o7QUFDWjtBQUNVO0FBQ0Y7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTywrQkFBK0IsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVO0FBQzdFO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBOztBQUVBLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0JBQStCLCtEQUFjO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QixtREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsK0JBQStCO0FBQzFEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEIsaUNBQWlDO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQyxpQ0FBaUM7QUFDbkU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEIsaUNBQWlDO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZ0NBQWdDLGlDQUFpQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQyxpQ0FBaUM7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSw0QkFBNEIsY0FBYztBQUMxQztBQUNBOztBQUVBO0FBQ0EsOEJBQThCLGlDQUFpQztBQUMvRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDhCQUE4Qiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDakY7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQiwyRUFBYzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxzQ0FBc0MsaUNBQWlDO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBOztBQUVBOztBQUVBO0FBQ0EsdUNBQXVDLG1DQUFtQztBQUMxRTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDLG1DQUFtQztBQUMxRTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1Q0FBdUMsbUNBQW1DO0FBQzFFOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSw2QkFBNkIsMkRBQVk7QUFDekM7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1FQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHlCQUF5Qiw2REFBYTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EseUJBQXlCLDZEQUFhO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLGVBQWUsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBGcmFtZUdyYXBoSGFuZGxlIH0gZnJvbSAnLi9GcmFtZUdyYXBoSGFuZGxlJztcbmltcG9ydCB7IEZyYW1lR3JhcGhQYXNzIH0gZnJvbSAnLi9GcmFtZUdyYXBoUGFzcyc7XG5pbXBvcnQgeyBQYXNzTm9kZSB9IGZyb20gJy4vUGFzc05vZGUnO1xuaW1wb3J0IHsgUmVzb3VyY2VFbnRyeSB9IGZyb20gJy4vUmVzb3VyY2VFbnRyeSc7XG5pbXBvcnQgeyBSZXNvdXJjZU5vZGUgfSBmcm9tICcuL1Jlc291cmNlTm9kZSc7XG4vKipcbiAqIHBvcnRlZCBmcm9tIEZyYW1lR3JhcGggaW1wbGVtZW50ZWQgYnkgU2FrdXJhUmVuZGVyXG4gKiBAc2VlIGh0dHBzOi8vemh1YW5sYW4uemhpaHUuY29tL3AvOTg1NzI0NDJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL1NhZXJ1SGlrYXJpL1Nha3VyYS9ibG9iL1JlbmRlckdyYXBoL1Nha3VyYUNvcmUvU291cmNlL0ZyYW1ld29yay9HcmFwaGljVHlwZXMvRnJhbWVHcmFwaC9TYWt1cmFGcmFtZUdyYXBoLmNwcFxuICovXG5cbmV4cG9ydCB2YXIgRnJhbWVHcmFwaFN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGcmFtZUdyYXBoU3lzdGVtKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGcmFtZUdyYXBoU3lzdGVtKTtcblxuICAgIHRoaXMucGFzc05vZGVzID0gW107XG4gICAgdGhpcy5yZXNvdXJjZU5vZGVzID0gW107XG4gICAgdGhpcy5mcmFtZUdyYXBoUGFzc2VzID0gW107XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRnJhbWVHcmFwaFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKHZpZXdzKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5lbmdpbmUuYmVnaW5GcmFtZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZSgpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQYXNzTm9kZXModmlld3MpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gZXhlY3V0ZShfeCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLmZyYW1lR3JhcGhQYXNzZXMuZm9yRWFjaChmdW5jdGlvbiAocGFzcykge1xuICAgICAgICBpZiAocGFzcy50ZWFyRG93bikge1xuICAgICAgICAgIHBhc3MudGVhckRvd24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFkZFBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkUGFzcyhuYW1lLCBzZXR1cCwgZXhlY3V0ZSwgdGVhckRvd24pIHtcbiAgICAgIHZhciBmcmFtZUdyYXBoUGFzcyA9IG5ldyBGcmFtZUdyYXBoUGFzcygpO1xuICAgICAgZnJhbWVHcmFwaFBhc3MuZXhlY3V0ZSA9IGV4ZWN1dGU7XG5cbiAgICAgIGlmICh0ZWFyRG93bikge1xuICAgICAgICBmcmFtZUdyYXBoUGFzcy50ZWFyRG93biA9IHRlYXJEb3duO1xuICAgICAgfVxuXG4gICAgICBmcmFtZUdyYXBoUGFzcy5uYW1lID0gbmFtZTtcbiAgICAgIHZhciBwYXNzTm9kZSA9IG5ldyBQYXNzTm9kZSgpO1xuICAgICAgcGFzc05vZGUubmFtZSA9IG5hbWU7XG4gICAgICB0aGlzLnBhc3NOb2Rlcy5wdXNoKHBhc3NOb2RlKTtcbiAgICAgIHRoaXMuZnJhbWVHcmFwaFBhc3Nlcy5wdXNoKGZyYW1lR3JhcGhQYXNzKTtcbiAgICAgIHNldHVwKHRoaXMsIHBhc3NOb2RlLCBmcmFtZUdyYXBoUGFzcyk7XG4gICAgICByZXR1cm4gZnJhbWVHcmFwaFBhc3M7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UGFzcyhuYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5mcmFtZUdyYXBoUGFzc2VzLmZpbmQoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBpbGUoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5wYXNzTm9kZXMpLFxuICAgICAgICAgIF9zdGVwO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykge1xuICAgICAgICAgIHZhciBfcGFzcyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgIF9wYXNzLnJlZkNvdW50ID0gX3Bhc3Mud3JpdGVzLmxlbmd0aCArIChfcGFzcy5oYXNTaWRlRWZmZWN0ID8gMSA6IDApO1xuXG4gICAgICAgICAgX3Bhc3MucmVhZHMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlKSB7XG4gICAgICAgICAgICBfdGhpcy5yZXNvdXJjZU5vZGVzW2hhbmRsZS5pbmRleF0ucmVhZGVyQ291bnQrKztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9pdGVyYXRvci5lKGVycik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBfaXRlcmF0b3IuZigpO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RhY2sgPSBbXTtcblxuICAgICAgdmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih0aGlzLnJlc291cmNlTm9kZXMpLFxuICAgICAgICAgIF9zdGVwMjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yIChfaXRlcmF0b3IyLnMoKTsgIShfc3RlcDIgPSBfaXRlcmF0b3IyLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IF9zdGVwMi52YWx1ZTtcblxuICAgICAgICAgIGlmIChub2RlLnJlYWRlckNvdW50ID09PSAwKSB7XG4gICAgICAgICAgICBzdGFjay5wdXNoKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9pdGVyYXRvcjIuZShlcnIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgX2l0ZXJhdG9yMi5mKCk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIHBOb2RlID0gc3RhY2sucG9wKCk7XG4gICAgICAgIHZhciB3cml0ZXIgPSBwTm9kZSAmJiBwTm9kZS53cml0ZXI7XG5cbiAgICAgICAgaWYgKHdyaXRlcikge1xuICAgICAgICAgIGlmICgtLXdyaXRlci5yZWZDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gdGhpcyBwYXNzIGlzIGN1bGxlZFxuICAgICAgICAgICAgLy8gYXNzZXJ0KCF3cml0ZXItPmhhc1NpZGVFZmZlY3QpO1xuICAgICAgICAgICAgdmFyIF9pdGVyYXRvcjMgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih3cml0ZXIucmVhZHMpLFxuICAgICAgICAgICAgICAgIF9zdGVwMztcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IzLnMoKTsgIShfc3RlcDMgPSBfaXRlcmF0b3IzLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBfc3RlcDMudmFsdWU7XG4gICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnJlc291cmNlTm9kZXNbcmVzb3VyY2UuaW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKC0tci5yZWFkZXJDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBfaXRlcmF0b3IzLmUoZXJyKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIF9pdGVyYXRvcjMuZigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSAvLyB1cGRhdGUgdGhlIGZpbmFsIHJlZmVyZW5jZSBjb3VudHNcblxuXG4gICAgICB0aGlzLnJlc291cmNlTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBub2RlLnJlc291cmNlLnJlZnMgKz0gbm9kZS5yZWFkZXJDb3VudDtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX2l0ZXJhdG9yNCA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRoaXMucGFzc05vZGVzKSxcbiAgICAgICAgICBfc3RlcDQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAoX2l0ZXJhdG9yNC5zKCk7ICEoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgdmFyIF9wYXNzMiA9IF9zdGVwNC52YWx1ZTtcblxuICAgICAgICAgIGlmICghX3Bhc3MyLnJlZkNvdW50KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2l0ZXJhdG9yNiA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKF9wYXNzMi5yZWFkcyksXG4gICAgICAgICAgICAgIF9zdGVwNjtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjYucygpOyAhKF9zdGVwNiA9IF9pdGVyYXRvcjYubigpKS5kb25lOykge1xuICAgICAgICAgICAgICB2YXIgX3Jlc291cmNlMiA9IF9zdGVwNi52YWx1ZTtcbiAgICAgICAgICAgICAgdmFyIHBSZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VOb2Rlc1tfcmVzb3VyY2UyLmluZGV4XS5yZXNvdXJjZTtcbiAgICAgICAgICAgICAgcFJlc291cmNlLmZpcnN0ID0gcFJlc291cmNlLmZpcnN0ID8gcFJlc291cmNlLmZpcnN0IDogX3Bhc3MyO1xuICAgICAgICAgICAgICBwUmVzb3VyY2UubGFzdCA9IF9wYXNzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIF9pdGVyYXRvcjYuZShlcnIpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBfaXRlcmF0b3I2LmYoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2l0ZXJhdG9yNyA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKF9wYXNzMi53cml0ZXMpLFxuICAgICAgICAgICAgICBfc3RlcDc7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yIChfaXRlcmF0b3I3LnMoKTsgIShfc3RlcDcgPSBfaXRlcmF0b3I3Lm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgdmFyIF9yZXNvdXJjZTMgPSBfc3RlcDcudmFsdWU7XG4gICAgICAgICAgICAgIHZhciBfcFJlc291cmNlID0gdGhpcy5yZXNvdXJjZU5vZGVzW19yZXNvdXJjZTMuaW5kZXhdLnJlc291cmNlO1xuICAgICAgICAgICAgICBfcFJlc291cmNlLmZpcnN0ID0gX3BSZXNvdXJjZS5maXJzdCA/IF9wUmVzb3VyY2UuZmlyc3QgOiBfcGFzczI7XG4gICAgICAgICAgICAgIF9wUmVzb3VyY2UubGFzdCA9IF9wYXNzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIF9pdGVyYXRvcjcuZShlcnIpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBfaXRlcmF0b3I3LmYoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfaXRlcmF0b3I0LmUoZXJyKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIF9pdGVyYXRvcjQuZigpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBwcmlvcml0eSA9IDA7IHByaW9yaXR5IDwgMjsgcHJpb3JpdHkrKykge1xuICAgICAgICB2YXIgX2l0ZXJhdG9yNSA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRoaXMucmVzb3VyY2VOb2RlcyksXG4gICAgICAgICAgICBfc3RlcDU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKF9pdGVyYXRvcjUucygpOyAhKF9zdGVwNSA9IF9pdGVyYXRvcjUubigpKS5kb25lOykge1xuICAgICAgICAgICAgdmFyIHJlc291cmVOb2RlID0gX3N0ZXA1LnZhbHVlO1xuICAgICAgICAgICAgdmFyIF9yZXNvdXJjZSA9IHJlc291cmVOb2RlLnJlc291cmNlO1xuXG4gICAgICAgICAgICBpZiAoX3Jlc291cmNlLnByaW9yaXR5ID09PSBwcmlvcml0eSAmJiBfcmVzb3VyY2UucmVmcykge1xuICAgICAgICAgICAgICB2YXIgcEZpcnN0ID0gX3Jlc291cmNlLmZpcnN0O1xuICAgICAgICAgICAgICB2YXIgcExhc3QgPSBfcmVzb3VyY2UubGFzdDtcblxuICAgICAgICAgICAgICBpZiAocEZpcnN0ICYmIHBMYXN0KSB7XG4gICAgICAgICAgICAgICAgcEZpcnN0LmRldmlydHVhbGl6ZS5wdXNoKF9yZXNvdXJjZSk7XG4gICAgICAgICAgICAgICAgcExhc3QuZGVzdHJveS5wdXNoKF9yZXNvdXJjZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIF9pdGVyYXRvcjUuZShlcnIpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIF9pdGVyYXRvcjUuZigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImV4ZWN1dGVQYXNzTm9kZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9leGVjdXRlUGFzc05vZGVzID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIodmlld3MpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvcjgsIF9zdGVwOCwgX3N0ZXA4JHZhbHVlLCBpbmRleCwgbm9kZSwgX2l0ZXJhdG9yOSwgX3N0ZXA5LCByZXNvdXJjZSwgX2l0ZXJhdG9yMTAsIF9zdGVwMTAsIF9yZXNvdXJjZTQsIF9pdGVyYXRvcjExLCBfc3RlcDExLCBfcmVzb3VyY2U1LCBfaXRlcmF0b3IxMiwgX3N0ZXAxMiwgX3Jlc291cmNlNjtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I4ID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5wYXNzTm9kZXMuZW50cmllcygpKTtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDE7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I4LnMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgaWYgKChfc3RlcDggPSBfaXRlcmF0b3I4Lm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxODtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9zdGVwOCR2YWx1ZSA9IF9zbGljZWRUb0FycmF5KF9zdGVwOC52YWx1ZSwgMiksIGluZGV4ID0gX3N0ZXA4JHZhbHVlWzBdLCBub2RlID0gX3N0ZXA4JHZhbHVlWzFdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFub2RlLnJlZkNvdW50KSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE2O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOSA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG5vZGUuZGV2aXJ0dWFsaXplKTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjkucygpOyAhKF9zdGVwOSA9IF9pdGVyYXRvcjkubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSA9IF9zdGVwOS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UucHJlRXhlY3V0ZURldmlydHVhbGl6ZSh0aGlzLmVuZ2luZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3I5LmUoZXJyKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yOS5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTAgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihub2RlLmRlc3Ryb3kpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTAucygpOyAhKF9zdGVwMTAgPSBfaXRlcmF0b3IxMC5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTQgPSBfc3RlcDEwLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTQucHJlRXhlY3V0ZURlc3Ryb3kodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTAuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IxMC5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mcmFtZUdyYXBoUGFzc2VzW2luZGV4XS5leGVjdXRlKHRoaXMsIHRoaXMuZnJhbWVHcmFwaFBhc3Nlc1tpbmRleF0sIHZpZXdzKTtcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgIF9pdGVyYXRvcjExID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIobm9kZS5kZXZpcnR1YWxpemUpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTEucygpOyAhKF9zdGVwMTEgPSBfaXRlcmF0b3IxMS5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTUgPSBfc3RlcDExLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTUucG9zdEV4ZWN1dGVEZXZpcnR1YWxpemUodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTEuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IxMS5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihub2RlLmRlc3Ryb3kpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTIucygpOyAhKF9zdGVwMTIgPSBfaXRlcmF0b3IxMi5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTYgPSBfc3RlcDEyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTYucG9zdEV4ZWN1dGVEZXN0cm95KHRoaXMuZW5naW5lKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjEyLmUoZXJyKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTIuZigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDIwO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MltcImNhdGNoXCJdKDEpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOC5lKF9jb250ZXh0Mi50MCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDIzO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOC5mKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmZpbmlzaCgyMyk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMsIFtbMSwgMjAsIDIzLCAyNl1dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gZXhlY3V0ZVBhc3NOb2RlcyhfeDIpIHtcbiAgICAgICAgcmV0dXJuIF9leGVjdXRlUGFzc05vZGVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBleGVjdXRlUGFzc05vZGVzO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInJlc2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgdGhpcy5wYXNzTm9kZXMgPSBbXTtcbiAgICAgIHRoaXMucmVzb3VyY2VOb2RlcyA9IFtdO1xuICAgICAgdGhpcy5mcmFtZUdyYXBoUGFzc2VzID0gW107XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFJlc291cmNlTm9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSZXNvdXJjZU5vZGUocikge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VOb2Rlc1tyLmluZGV4XTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUmVzb3VyY2VOb2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlTm9kZShyZXNvdXJjZUVudHJ5KSB7XG4gICAgICB2YXIgcmVzb3VyY2VOb2RlID0gbmV3IFJlc291cmNlTm9kZSgpO1xuICAgICAgcmVzb3VyY2VOb2RlLnJlc291cmNlID0gcmVzb3VyY2VFbnRyeTtcbiAgICAgIHJlc291cmNlTm9kZS52ZXJzaW9uID0gcmVzb3VyY2VFbnRyeS52ZXJzaW9uO1xuICAgICAgdGhpcy5yZXNvdXJjZU5vZGVzLnB1c2gocmVzb3VyY2VOb2RlKTtcbiAgICAgIHZhciBmZ2ggPSBuZXcgRnJhbWVHcmFwaEhhbmRsZSgpO1xuICAgICAgZmdoLmluZGV4ID0gdGhpcy5yZXNvdXJjZU5vZGVzLmxlbmd0aCAtIDE7XG4gICAgICByZXR1cm4gZmdoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVRleHR1cmUocGFzc05vZGUsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgICAgIHZhciByZXNvdXJjZSA9IG5ldyBSZXNvdXJjZUVudHJ5KCk7XG4gICAgICByZXNvdXJjZS5uYW1lID0gbmFtZTtcbiAgICAgIHJlc291cmNlLmRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzb3VyY2VOb2RlKHJlc291cmNlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUmVuZGVyVGFyZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgbmFtZSwgZGVzY3JpcHRvcikge1xuICAgICAgdmFyIHJlc291cmNlID0gbmV3IFJlc291cmNlRW50cnkoKTtcbiAgICAgIHJlc291cmNlLm5hbWUgPSBuYW1lO1xuICAgICAgcmVzb3VyY2UuZGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXNvdXJjZU5vZGUocmVzb3VyY2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwcmVzZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByZXNlbnQoaW5wdXQpIHtcbiAgICAgIHRoaXMuYWRkUGFzcygnUHJlc2VudCcsIGZ1bmN0aW9uIChmZywgcGFzc05vZGUpIHtcbiAgICAgICAgcGFzc05vZGUucmVhZChpbnB1dCk7XG4gICAgICAgIHBhc3NOb2RlLmhhc1NpZGVFZmZlY3QgPSB0cnVlO1xuICAgICAgfSwgLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTMpO1xuICAgICAgfSkpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRnJhbWVHcmFwaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/System.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js": /*!**************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js ***! \**************************************************************************************/ /*! exports provided: VirtualResource */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VirtualResource\", function() { return VirtualResource; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * ported from filament\n */\nvar VirtualResource = function VirtualResource() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, VirtualResource);\n\n this.first = void 0;\n this.last = void 0;\n};\n//# sourceMappingURL=VirtualResource.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvVmlydHVhbFJlc291cmNlLmpzP2NlYzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsRUFBRSw0RUFBZTs7QUFFakI7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvVmlydHVhbFJlc291cmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuXG4vKipcbiAqIHBvcnRlZCBmcm9tIGZpbGFtZW50XG4gKi9cbmV4cG9ydCB2YXIgVmlydHVhbFJlc291cmNlID0gZnVuY3Rpb24gVmlydHVhbFJlc291cmNlKCkge1xuICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmlydHVhbFJlc291cmNlKTtcblxuICB0aGlzLmZpcnN0ID0gdm9pZCAwO1xuICB0aGlzLmxhc3QgPSB2b2lkIDA7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmlydHVhbFJlc291cmNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js": /*!**************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js ***! \**************************************************************************************/ /*! exports provided: GeometryComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GeometryComponent\", function() { return GeometryComponent; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/is-typedarray */ \"./node_modules/@antv/g-webgpu-core/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar GeometryComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(GeometryComponent, _Component);\n\n var _super = _createSuper(GeometryComponent);\n\n // instanced count\n function GeometryComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, GeometryComponent);\n\n _this = _super.call(this, data);\n _this.dirty = true;\n _this.attributes = [];\n _this.indices = void 0;\n _this.indicesBuffer = void 0;\n _this.vertexCount = 0;\n _this.maxInstancedCount = void 0;\n _this.aabb = void 0;\n _this.entity = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this), data);\n return _this;\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/BufferAttribute\n */\n\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(GeometryComponent, [{\n key: \"setAttribute\",\n value: function setAttribute(name, data, descriptor, bufferGetter) {\n var existed = this.attributes.find(function (a) {\n return a.name === name;\n });\n\n if (!existed) {\n this.attributes.push(_objectSpread(_objectSpread({\n dirty: true,\n name: name,\n data: data\n }, descriptor), {}, {\n bufferGetter: bufferGetter\n }));\n } else {\n existed.data = data;\n existed.dirty = true;\n }\n\n this.dirty = true;\n return this;\n }\n }, {\n key: \"setIndex\",\n value: function setIndex(data) {\n this.indices = new Uint32Array( // @ts-ignore\n data.buffer ? data.buffer : data);\n this.dirty = true;\n return this;\n }\n /**\n * when merge all the geometries into one, we need to transform every vertex's position\n * and every face's normal\n */\n\n }, {\n key: \"applyMatrix\",\n value: function applyMatrix(matrix) {\n var positionAttribute = this.attributes.find(function (_ref) {\n var name = _ref.name;\n return name === 'position';\n });\n var normalAttribute = this.attributes.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'normal';\n });\n\n if (positionAttribute) {\n positionAttribute.dirty = true; // @ts-ignore\n\n if (positionAttribute.data && positionAttribute.data.length) {\n // @ts-ignore\n for (var i = 0; i < positionAttribute.data.length; i += 3) {\n var position = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec4\"].fromValues( // @ts-ignore\n positionAttribute.data[i], // @ts-ignore\n positionAttribute.data[i + 1], // @ts-ignore\n positionAttribute.data[i + 2], 1);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec4\"].transformMat4(position, position, matrix);\n\n if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__[\"isTypedArray\"])(positionAttribute.data)) {\n // @ts-ignore\n positionAttribute.data.set([position[0], position[1], position[2]], i);\n } else {\n // @ts-ignore\n positionAttribute.data[i] = position[0]; // @ts-ignore\n\n positionAttribute.data[i + 1] = position[1]; // @ts-ignore\n\n positionAttribute.data[i + 2] = position[2];\n }\n }\n }\n }\n\n if (normalAttribute) {\n var normalMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].normalFromMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].create(), matrix); // @ts-ignore\n\n if (normalAttribute.data && normalAttribute.data.length) {\n // @ts-ignore\n for (var _i = 0; _i < normalAttribute.data.length; _i += 3) {\n var normal = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues( // @ts-ignore\n normalAttribute.data[_i], // @ts-ignore\n normalAttribute.data[_i + 1], // @ts-ignore\n normalAttribute.data[_i + 2]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat3(normal, normal, normalMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].normalize(normal, normal);\n\n if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__[\"isTypedArray\"])(normalAttribute.data)) {\n // @ts-ignore\n normalAttribute.data.set([normal[0], normal[1], normal[2]], _i);\n } else {\n // @ts-ignore\n normalAttribute.data[_i] = normal[0]; // @ts-ignore\n\n normalAttribute.data[_i + 1] = normal[1]; // @ts-ignore\n\n normalAttribute.data[_i + 2] = normal[2];\n }\n }\n }\n }\n }\n }]);\n\n return GeometryComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_8__[\"Component\"]);\n//# sourceMappingURL=GeometryComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50LmpzP2QxYWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDQTtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCOztBQUVwRSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBoQixnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVyUjtBQUNNO0FBQ007QUFDbEQ7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUZBQXNCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsaUJBQWlCO0FBQzFCO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBLHlCQUF5QixtQ0FBbUM7QUFDNUQsMkJBQTJCLDhDQUFJO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLFlBQVksOENBQUk7O0FBRWhCLGdCQUFnQix5RUFBWTtBQUM1QjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0Esc0RBQXNEOztBQUV0RCwwREFBMEQ7O0FBRTFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsOENBQUksZ0JBQWdCLDhDQUFJLG1CQUFtQjs7QUFFdEU7QUFDQTtBQUNBLDBCQUEwQixrQ0FBa0M7QUFDNUQseUJBQXlCLDhDQUFJO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLFlBQVksOENBQUk7QUFDaEIsWUFBWSw4Q0FBSTs7QUFFaEIsZ0JBQWdCLHlFQUFZO0FBQzVCO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxtREFBbUQ7O0FBRW5ELHVEQUF1RDs7QUFFdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9nZW9tZXRyeS9HZW9tZXRyeUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgbWF0MywgdmVjMywgdmVjNCB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Db21wb25lbnRNYW5hZ2VyJztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4uLy4uL3V0aWxzL2lzLXR5cGVkYXJyYXknO1xuZXhwb3J0IHZhciBHZW9tZXRyeUNvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoR2VvbWV0cnlDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoR2VvbWV0cnlDb21wb25lbnQpO1xuXG4gIC8vIGluc3RhbmNlZCBjb3VudFxuICBmdW5jdGlvbiBHZW9tZXRyeUNvbXBvbmVudChkYXRhKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEdlb21ldHJ5Q29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMuZGlydHkgPSB0cnVlO1xuICAgIF90aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICBfdGhpcy5pbmRpY2VzID0gdm9pZCAwO1xuICAgIF90aGlzLmluZGljZXNCdWZmZXIgPSB2b2lkIDA7XG4gICAgX3RoaXMudmVydGV4Q291bnQgPSAwO1xuICAgIF90aGlzLm1heEluc3RhbmNlZENvdW50ID0gdm9pZCAwO1xuICAgIF90aGlzLmFhYmIgPSB2b2lkIDA7XG4gICAgX3RoaXMuZW50aXR5ID0gdm9pZCAwO1xuICAgIE9iamVjdC5hc3NpZ24oX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIGRhdGEpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICAvKipcbiAgICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9jb3JlL0J1ZmZlckF0dHJpYnV0ZVxuICAgKi9cblxuXG4gIF9jcmVhdGVDbGFzcyhHZW9tZXRyeUNvbXBvbmVudCwgW3tcbiAgICBrZXk6IFwic2V0QXR0cmlidXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZShuYW1lLCBkYXRhLCBkZXNjcmlwdG9yLCBidWZmZXJHZXR0ZXIpIHtcbiAgICAgIHZhciBleGlzdGVkID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIGEubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWV4aXN0ZWQpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLnB1c2goX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSwgZGVzY3JpcHRvciksIHt9LCB7XG4gICAgICAgICAgYnVmZmVyR2V0dGVyOiBidWZmZXJHZXR0ZXJcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhpc3RlZC5kYXRhID0gZGF0YTtcbiAgICAgICAgZXhpc3RlZC5kaXJ0eSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEluZGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEluZGV4KGRhdGEpIHtcbiAgICAgIHRoaXMuaW5kaWNlcyA9IG5ldyBVaW50MzJBcnJheSggLy8gQHRzLWlnbm9yZVxuICAgICAgZGF0YS5idWZmZXIgPyBkYXRhLmJ1ZmZlciA6IGRhdGEpO1xuICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogd2hlbiBtZXJnZSBhbGwgdGhlIGdlb21ldHJpZXMgaW50byBvbmUsIHdlIG5lZWQgdG8gdHJhbnNmb3JtIGV2ZXJ5IHZlcnRleCdzIHBvc2l0aW9uXG4gICAgICogYW5kIGV2ZXJ5IGZhY2UncyBub3JtYWxcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImFwcGx5TWF0cml4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFwcGx5TWF0cml4KG1hdHJpeCkge1xuICAgICAgdmFyIHBvc2l0aW9uQXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgIHJldHVybiBuYW1lID09PSAncG9zaXRpb24nO1xuICAgICAgfSk7XG4gICAgICB2YXIgbm9ybWFsQXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdub3JtYWwnO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChwb3NpdGlvbkF0dHJpYnV0ZSkge1xuICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kaXJ0eSA9IHRydWU7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICBpZiAocG9zaXRpb25BdHRyaWJ1dGUuZGF0YSAmJiBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhLmxlbmd0aCkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvc2l0aW9uQXR0cmlidXRlLmRhdGEubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHZlYzQuZnJvbVZhbHVlcyggLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpXSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpICsgMV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHBvc2l0aW9uQXR0cmlidXRlLmRhdGFbaSArIDJdLCAxKTtcbiAgICAgICAgICAgIHZlYzQudHJhbnNmb3JtTWF0NChwb3NpdGlvbiwgcG9zaXRpb24sIG1hdHJpeCk7XG5cbiAgICAgICAgICAgIGlmIChpc1R5cGVkQXJyYXkocG9zaXRpb25BdHRyaWJ1dGUuZGF0YSkpIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhLnNldChbcG9zaXRpb25bMF0sIHBvc2l0aW9uWzFdLCBwb3NpdGlvblsyXV0sIGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhW2ldID0gcG9zaXRpb25bMF07IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhW2kgKyAxXSA9IHBvc2l0aW9uWzFdOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpICsgMl0gPSBwb3NpdGlvblsyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5vcm1hbEF0dHJpYnV0ZSkge1xuICAgICAgICB2YXIgbm9ybWFsTWF0cml4ID0gbWF0My5ub3JtYWxGcm9tTWF0NChtYXQzLmNyZWF0ZSgpLCBtYXRyaXgpOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgaWYgKG5vcm1hbEF0dHJpYnV0ZS5kYXRhICYmIG5vcm1hbEF0dHJpYnV0ZS5kYXRhLmxlbmd0aCkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbm9ybWFsQXR0cmlidXRlLmRhdGEubGVuZ3RoOyBfaSArPSAzKSB7XG4gICAgICAgICAgICB2YXIgbm9ybWFsID0gdmVjMy5mcm9tVmFsdWVzKCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBub3JtYWxBdHRyaWJ1dGUuZGF0YVtfaV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMl0pO1xuICAgICAgICAgICAgdmVjMy50cmFuc2Zvcm1NYXQzKG5vcm1hbCwgbm9ybWFsLCBub3JtYWxNYXRyaXgpO1xuICAgICAgICAgICAgdmVjMy5ub3JtYWxpemUobm9ybWFsLCBub3JtYWwpO1xuXG4gICAgICAgICAgICBpZiAoaXNUeXBlZEFycmF5KG5vcm1hbEF0dHJpYnV0ZS5kYXRhKSkge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhLnNldChbbm9ybWFsWzBdLCBub3JtYWxbMV0sIG5vcm1hbFsyXV0sIF9pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgbm9ybWFsQXR0cmlidXRlLmRhdGFbX2ldID0gbm9ybWFsWzBdOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgbm9ybWFsQXR0cmlidXRlLmRhdGFbX2kgKyAxXSA9IG5vcm1hbFsxXTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMl0gPSBub3JtYWxbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEdlb21ldHJ5Q29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R2VvbWV0cnlDb21wb25lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/geometry/System.js": /*!***************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/geometry/System.js ***! \***************************************************************************/ /*! exports provided: GeometrySystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GeometrySystem\", function() { return GeometrySystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../.. */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _renderer_gl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../renderer/gl */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\n\n\n\n\nvar GeometrySystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function GeometrySystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, GeometrySystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor2, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(GeometrySystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.geometry.forEach(function (entity, component) {\n // build buffers for each geometry\n if (component.dirty) {\n component.attributes.forEach(function (attribute) {\n if (attribute.dirty && attribute.data) {\n if (!attribute.buffer) {\n attribute.buffer = _this.engine.createBuffer({\n data: attribute.data,\n type: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].FLOAT\n });\n } else {\n var _attribute$buffer;\n\n (_attribute$buffer = attribute.buffer) === null || _attribute$buffer === void 0 ? void 0 : _attribute$buffer.subData({\n data: attribute.data,\n // TODO: support offset in subdata\n offset: 0\n });\n }\n\n attribute.dirty = false;\n }\n }); // create index buffer if needed\n\n if (component.indices) {\n if (!component.indicesBuffer) {\n component.indicesBuffer = _this.engine.createElements({\n data: component.indices,\n count: component.indices.length,\n type: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].UNSIGNED_INT,\n usage: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].STATIC_DRAW\n });\n } else {\n component.indicesBuffer.subData({\n data: component.indices,\n offset: 0\n });\n }\n }\n\n component.dirty = false;\n }\n });\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.geometry.forEach(function (_, geometry) {\n if (geometry.indicesBuffer) {\n geometry.indicesBuffer.destroy();\n }\n\n geometry.attributes.forEach(function (attribute) {\n if (attribute.buffer) {\n attribute.buffer.destroy();\n }\n });\n });\n this.geometry.clear();\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/BufferGeometry\n */\n\n }, {\n key: \"createBufferGeometry\",\n value: function createBufferGeometry() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n vertexCount: 3\n },\n vertexCount = _ref.vertexCount;\n\n var entity = Object(___WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n return this.geometry.create(entity, {\n vertexCount: vertexCount\n });\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/InstancedBufferGeometry\n */\n\n }, {\n key: \"createInstancedBufferGeometry\",\n value: function createInstancedBufferGeometry(_ref2) {\n var maxInstancedCount = _ref2.maxInstancedCount,\n vertexCount = _ref2.vertexCount;\n var entity = Object(___WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n return this.geometry.create(entity, {\n maxInstancedCount: maxInstancedCount,\n vertexCount: vertexCount\n });\n }\n }]);\n\n return GeometrySystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbS5qcz9lMWQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRStDO0FBQ1Y7QUFDUztBQUNWO0FBQzdCLDZCQUE2Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVU7QUFDaEk7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7QUFDOUI7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsZ0RBQUU7QUFDcEMsMkJBQTJCO0FBQzNCLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLEVBQUU7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsZ0RBQUU7QUFDbEMsaUNBQWlDLGdEQUFFO0FBQ25DLHlCQUF5QjtBQUN6Qix1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvZ2VvbWV0cnkvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX3RlbXA7XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBjcmVhdGVFbnRpdHkgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBnbCB9IGZyb20gJy4uL3JlbmRlcmVyL2dsJztcbmV4cG9ydCB2YXIgR2VvbWV0cnlTeXN0ZW0gPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5HZW9tZXRyeUNvbXBvbmVudE1hbmFnZXIpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHZW9tZXRyeVN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2VvbWV0cnlTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJnZW9tZXRyeVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEdlb21ldHJ5U3lzdGVtLCBbe1xuICAgIGtleTogXCJleGVjdXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZXhlY3V0ZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICB0aGlzLmdlb21ldHJ5LmZvckVhY2goZnVuY3Rpb24gKGVudGl0eSwgY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAvLyBidWlsZCBidWZmZXJzIGZvciBlYWNoIGdlb21ldHJ5XG4gICAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50LmRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5hdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUuZGlydHkgJiYgYXR0cmlidXRlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYXR0cmlidXRlLmJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUuYnVmZmVyID0gX3RoaXMuZW5naW5lLmNyZWF0ZUJ1ZmZlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogYXR0cmlidXRlLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZ2wuRkxPQVRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2F0dHJpYnV0ZSRidWZmZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9hdHRyaWJ1dGUkYnVmZmVyID0gYXR0cmlidXRlLmJ1ZmZlcikgPT09IG51bGwgfHwgX2F0dHJpYnV0ZSRidWZmZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hdHRyaWJ1dGUkYnVmZmVyLnN1YkRhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGF0dHJpYnV0ZS5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgb2Zmc2V0IGluIHN1YmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7IC8vIGNyZWF0ZSBpbmRleCBidWZmZXIgaWYgbmVlZGVkXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5pbmRpY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21wb25lbnQuaW5kaWNlc0J1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmluZGljZXNCdWZmZXIgPSBfdGhpcy5lbmdpbmUuY3JlYXRlRWxlbWVudHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBjb21wb25lbnQuaW5kaWNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IGNvbXBvbmVudC5pbmRpY2VzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfSU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZTogZ2wuU1RBVElDX0RSQVdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaW5kaWNlc0J1ZmZlci5zdWJEYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogY29tcG9uZW50LmluZGljZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmRpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLmdlb21ldHJ5LmZvckVhY2goZnVuY3Rpb24gKF8sIGdlb21ldHJ5KSB7XG4gICAgICAgIGlmIChnZW9tZXRyeS5pbmRpY2VzQnVmZmVyKSB7XG4gICAgICAgICAgZ2VvbWV0cnkuaW5kaWNlc0J1ZmZlci5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBnZW9tZXRyeS5hdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICAgIGlmIChhdHRyaWJ1dGUuYnVmZmVyKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGUuYnVmZmVyLmRlc3Ryb3koKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmdlb21ldHJ5LmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vY29yZS9CdWZmZXJHZW9tZXRyeVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlQnVmZmVyR2VvbWV0cnlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVmZmVyR2VvbWV0cnkoKSB7XG4gICAgICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge1xuICAgICAgICB2ZXJ0ZXhDb3VudDogM1xuICAgICAgfSxcbiAgICAgICAgICB2ZXJ0ZXhDb3VudCA9IF9yZWYudmVydGV4Q291bnQ7XG5cbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHJldHVybiB0aGlzLmdlb21ldHJ5LmNyZWF0ZShlbnRpdHksIHtcbiAgICAgICAgdmVydGV4Q291bnQ6IHZlcnRleENvdW50XG4gICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9jb3JlL0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeShfcmVmMikge1xuICAgICAgdmFyIG1heEluc3RhbmNlZENvdW50ID0gX3JlZjIubWF4SW5zdGFuY2VkQ291bnQsXG4gICAgICAgICAgdmVydGV4Q291bnQgPSBfcmVmMi52ZXJ0ZXhDb3VudDtcbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHJldHVybiB0aGlzLmdlb21ldHJ5LmNyZWF0ZShlbnRpdHksIHtcbiAgICAgICAgbWF4SW5zdGFuY2VkQ291bnQ6IG1heEluc3RhbmNlZENvdW50LFxuICAgICAgICB2ZXJ0ZXhDb3VudDogdmVydGV4Q291bnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBHZW9tZXRyeVN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImdlb21ldHJ5XCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/geometry/System.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/material/MaterialComponent.js": /*!**************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/material/MaterialComponent.js ***! \**************************************************************************************/ /*! exports provided: MaterialComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MaterialComponent\", function() { return MaterialComponent; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../.. */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar MaterialComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(MaterialComponent, _Component);\n\n var _super = _createSuper(MaterialComponent);\n\n // control flow in shaders, eg. USE_UV, USE_MAP...\n function MaterialComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, MaterialComponent);\n\n _this = _super.call(this, data);\n _this.vertexShaderGLSL = void 0;\n _this.fragmentShaderGLSL = void 0;\n _this.defines = {};\n _this.dirty = true;\n _this.uniforms = [];\n _this.cull = {\n enable: true,\n face: ___WEBPACK_IMPORTED_MODULE_7__[\"gl\"].BACK\n };\n _this.depth = {\n enable: true\n };\n _this.blend = void 0;\n _this.entity = void 0;\n _this.type = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this), data);\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(MaterialComponent, [{\n key: \"setDefines\",\n value: function setDefines(defines) {\n this.defines = _objectSpread(_objectSpread({}, this.defines), defines);\n return this;\n }\n }, {\n key: \"setCull\",\n value: function setCull(cull) {\n this.cull = cull;\n return this;\n }\n }, {\n key: \"setDepth\",\n value: function setDepth(depth) {\n this.depth = depth;\n return this;\n }\n }, {\n key: \"setBlend\",\n value: function setBlend(blend) {\n this.blend = blend;\n return this;\n }\n }, {\n key: \"setUniform\",\n value: function setUniform(name, data) {\n var _this2 = this;\n\n if (typeof name !== 'string') {\n Object.keys(name).forEach(function (key) {\n return _this2.setUniform(key, name[key]);\n });\n return this;\n }\n\n var existedUniform = this.uniforms.find(function (u) {\n return u.name === name;\n });\n\n if (!existedUniform) {\n this.uniforms.push({\n name: name,\n dirty: true,\n data: data\n });\n } else {\n existedUniform.dirty = true;\n existedUniform.data = data;\n }\n\n this.dirty = true;\n return this;\n }\n }]);\n\n return MaterialComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_8__[\"Component\"]);\n//# sourceMappingURL=MaterialComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50LmpzP2E2MWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ0E7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwaEIsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFdlM7QUFDd0I7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvQ0FBRTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1GQUFzQjtBQUN4QztBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLDJEQUFTO0FBQ1giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBnbCB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBNYXRlcmlhbENvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoTWF0ZXJpYWxDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTWF0ZXJpYWxDb21wb25lbnQpO1xuXG4gIC8vIGNvbnRyb2wgZmxvdyBpbiBzaGFkZXJzLCBlZy4gVVNFX1VWLCBVU0VfTUFQLi4uXG4gIGZ1bmN0aW9uIE1hdGVyaWFsQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWF0ZXJpYWxDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy52ZXJ0ZXhTaGFkZXJHTFNMID0gdm9pZCAwO1xuICAgIF90aGlzLmZyYWdtZW50U2hhZGVyR0xTTCA9IHZvaWQgMDtcbiAgICBfdGhpcy5kZWZpbmVzID0ge307XG4gICAgX3RoaXMuZGlydHkgPSB0cnVlO1xuICAgIF90aGlzLnVuaWZvcm1zID0gW107XG4gICAgX3RoaXMuY3VsbCA9IHtcbiAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgIGZhY2U6IGdsLkJBQ0tcbiAgICB9O1xuICAgIF90aGlzLmRlcHRoID0ge1xuICAgICAgZW5hYmxlOiB0cnVlXG4gICAgfTtcbiAgICBfdGhpcy5ibGVuZCA9IHZvaWQgMDtcbiAgICBfdGhpcy5lbnRpdHkgPSB2b2lkIDA7XG4gICAgX3RoaXMudHlwZSA9IHZvaWQgMDtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTWF0ZXJpYWxDb21wb25lbnQsIFt7XG4gICAga2V5OiBcInNldERlZmluZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RGVmaW5lcyhkZWZpbmVzKSB7XG4gICAgICB0aGlzLmRlZmluZXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMuZGVmaW5lcyksIGRlZmluZXMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEN1bGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q3VsbChjdWxsKSB7XG4gICAgICB0aGlzLmN1bGwgPSBjdWxsO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldERlcHRoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldERlcHRoKGRlcHRoKSB7XG4gICAgICB0aGlzLmRlcHRoID0gZGVwdGg7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0QmxlbmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QmxlbmQoYmxlbmQpIHtcbiAgICAgIHRoaXMuYmxlbmQgPSBibGVuZDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRVbmlmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFVuaWZvcm0obmFtZSwgZGF0YSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgT2JqZWN0LmtleXMobmFtZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMi5zZXRVbmlmb3JtKGtleSwgbmFtZVtrZXldKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB2YXIgZXhpc3RlZFVuaWZvcm0gPSB0aGlzLnVuaWZvcm1zLmZpbmQoZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgcmV0dXJuIHUubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWV4aXN0ZWRVbmlmb3JtKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMucHVzaCh7XG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhpc3RlZFVuaWZvcm0uZGlydHkgPSB0cnVlO1xuICAgICAgICBleGlzdGVkVW5pZm9ybS5kYXRhID0gZGF0YTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWF0ZXJpYWxDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NYXRlcmlhbENvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/material/MaterialComponent.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/material/System.js": /*!***************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/material/System.js ***! \***************************************************************************/ /*! exports provided: MaterialSystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MaterialSystem\", function() { return MaterialSystem; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../.. */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\nvar MaterialSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].MaterialComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].RenderEngine), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function MaterialSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, MaterialSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"material\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"shaderModule\", _descriptor3, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(MaterialSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.material.clear();\n }\n /**\n * @see https://threejs.org/docs/#api/en/materials/ShaderMaterial\n */\n\n }, {\n key: \"createShaderMaterial\",\n value: function createShaderMaterial(params) {\n var entity = Object(___WEBPACK_IMPORTED_MODULE_9__[\"createEntity\"])();\n var vertexShaderGLSL = params.vertexShader;\n var fragmentShaderGLSL = params.fragmentShader;\n var uniforms = [];\n\n if (!this.engine.supportWebGPU) {\n var moduleName = \"material-\".concat(entity);\n this.shaderModule.registerModule(moduleName, {\n vs: params.vertexShader,\n fs: params.fragmentShader\n });\n var materialModule = this.shaderModule.getModule(moduleName);\n vertexShaderGLSL = materialModule.vs;\n fragmentShaderGLSL = materialModule.fs;\n\n if (materialModule.uniforms) {\n // @ts-ignore\n uniforms = Object.keys(materialModule.uniforms).map(function (uniformName) {\n return {\n dirty: true,\n name: uniformName,\n // @ts-ignore\n data: materialModule.uniforms[uniformName]\n };\n });\n }\n }\n\n return this.material.create(entity, _objectSpread(_objectSpread({\n vertexShaderGLSL: vertexShaderGLSL,\n fragmentShaderGLSL: fragmentShaderGLSL\n }, params), {}, {\n uniforms: uniforms\n }));\n }\n }]);\n\n return MaterialSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"material\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"shaderModule\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbS5qcz80NjVjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ1A7QUFDVztBQUNrQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLHVEQUF1RCxDQUFDLDRFQUFlLDJCQUEyQixFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyxpREFBaUQsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcmU7QUFDVjtBQUNTO0FBQ3ZDLDZCQUE2Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsdURBQVUsb0NBQW9DLHdEQUFNLENBQUMsdURBQVUsd0JBQXdCLHdEQUFNLENBQUMsdURBQVU7QUFDeks7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sYUFBYTtBQUNwQjtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2Rlc2NyaXB0b3IyLCBfZGVzY3JpcHRvcjMsIF90ZW1wO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IGNyZWF0ZUVudGl0eSB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmV4cG9ydCB2YXIgTWF0ZXJpYWxTeXN0ZW0gPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NYXRlcmlhbENvbXBvbmVudE1hbmFnZXIpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuU2hhZGVyTW9kdWxlU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNYXRlcmlhbFN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWF0ZXJpYWxTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtYXRlcmlhbFwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJzaGFkZXJNb2R1bGVcIiwgX2Rlc2NyaXB0b3IzLCB0aGlzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhNYXRlcmlhbFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLm1hdGVyaWFsLmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vbWF0ZXJpYWxzL1NoYWRlck1hdGVyaWFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVTaGFkZXJNYXRlcmlhbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVTaGFkZXJNYXRlcmlhbChwYXJhbXMpIHtcbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHZhciB2ZXJ0ZXhTaGFkZXJHTFNMID0gcGFyYW1zLnZlcnRleFNoYWRlcjtcbiAgICAgIHZhciBmcmFnbWVudFNoYWRlckdMU0wgPSBwYXJhbXMuZnJhZ21lbnRTaGFkZXI7XG4gICAgICB2YXIgdW5pZm9ybXMgPSBbXTtcblxuICAgICAgaWYgKCF0aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVKSB7XG4gICAgICAgIHZhciBtb2R1bGVOYW1lID0gXCJtYXRlcmlhbC1cIi5jb25jYXQoZW50aXR5KTtcbiAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUobW9kdWxlTmFtZSwge1xuICAgICAgICAgIHZzOiBwYXJhbXMudmVydGV4U2hhZGVyLFxuICAgICAgICAgIGZzOiBwYXJhbXMuZnJhZ21lbnRTaGFkZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtYXRlcmlhbE1vZHVsZSA9IHRoaXMuc2hhZGVyTW9kdWxlLmdldE1vZHVsZShtb2R1bGVOYW1lKTtcbiAgICAgICAgdmVydGV4U2hhZGVyR0xTTCA9IG1hdGVyaWFsTW9kdWxlLnZzO1xuICAgICAgICBmcmFnbWVudFNoYWRlckdMU0wgPSBtYXRlcmlhbE1vZHVsZS5mcztcblxuICAgICAgICBpZiAobWF0ZXJpYWxNb2R1bGUudW5pZm9ybXMpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdW5pZm9ybXMgPSBPYmplY3Qua2V5cyhtYXRlcmlhbE1vZHVsZS51bmlmb3JtcykubWFwKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgICAgIG5hbWU6IHVuaWZvcm1OYW1lLFxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGRhdGE6IG1hdGVyaWFsTW9kdWxlLnVuaWZvcm1zW3VuaWZvcm1OYW1lXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5tYXRlcmlhbC5jcmVhdGUoZW50aXR5LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICB2ZXJ0ZXhTaGFkZXJHTFNMOiB2ZXJ0ZXhTaGFkZXJHTFNMLFxuICAgICAgICBmcmFnbWVudFNoYWRlckdMU0w6IGZyYWdtZW50U2hhZGVyR0xTTFxuICAgICAgfSwgcGFyYW1zKSwge30sIHtcbiAgICAgICAgdW5pZm9ybXM6IHVuaWZvcm1zXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1hdGVyaWFsU3lzdGVtO1xufSgpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNoYWRlck1vZHVsZVwiLCBbX2RlYzRdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/material/System.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/material/interface.js": /*!******************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/material/interface.js ***! \******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=interface.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL2ludGVyZmFjZS5qcz8xNTc0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvbWF0ZXJpYWwvaW50ZXJmYWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnRlcmZhY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/material/interface.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/mesh/CullableComponent.js": /*!**********************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/mesh/CullableComponent.js ***! \**********************************************************************************/ /*! exports provided: Strategy, CullableComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Strategy\", function() { return Strategy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CullableComponent\", function() { return CullableComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n/**\n * @see https://doc.babylonjs.com/how_to/optimizing_your_scene#changing-mesh-culling-strategy\n */\nvar Strategy;\n\n(function (Strategy) {\n Strategy[Strategy[\"Standard\"] = 0] = \"Standard\";\n})(Strategy || (Strategy = {}));\n\nvar CullableComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(CullableComponent, _Component);\n\n var _super = _createSuper(CullableComponent);\n\n function CullableComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, CullableComponent);\n\n _this = _super.call(this, data);\n _this.strategy = Strategy.Standard;\n _this.visibilityPlaneMask = 0;\n _this.visible = false;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return CullableComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=CullableComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvQ3VsbGFibGVDb21wb25lbnQuanM/NmRhNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ2M7QUFDMUI7QUFDa0M7QUFDdEI7O0FBRXBFLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRS9ROztBQUVuRDtBQUNBO0FBQ0E7QUFDTzs7QUFFUDtBQUNBO0FBQ0EsQ0FBQyw0QkFBNEI7O0FBRXRCO0FBQ1AsRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1GQUFzQjtBQUN4QztBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFTO0FBQ1giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvQ3VsbGFibGVDb21wb25lbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vQ29tcG9uZW50TWFuYWdlcic7XG5cbi8qKlxuICogQHNlZSBodHRwczovL2RvYy5iYWJ5bG9uanMuY29tL2hvd190by9vcHRpbWl6aW5nX3lvdXJfc2NlbmUjY2hhbmdpbmctbWVzaC1jdWxsaW5nLXN0cmF0ZWd5XG4gKi9cbmV4cG9ydCB2YXIgU3RyYXRlZ3k7XG5cbihmdW5jdGlvbiAoU3RyYXRlZ3kpIHtcbiAgU3RyYXRlZ3lbU3RyYXRlZ3lbXCJTdGFuZGFyZFwiXSA9IDBdID0gXCJTdGFuZGFyZFwiO1xufSkoU3RyYXRlZ3kgfHwgKFN0cmF0ZWd5ID0ge30pKTtcblxuZXhwb3J0IHZhciBDdWxsYWJsZUNvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ3VsbGFibGVDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQ3VsbGFibGVDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIEN1bGxhYmxlQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ3VsbGFibGVDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5zdHJhdGVneSA9IFN0cmF0ZWd5LlN0YW5kYXJkO1xuICAgIF90aGlzLnZpc2liaWxpdHlQbGFuZU1hc2sgPSAwO1xuICAgIF90aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gQ3VsbGFibGVDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DdWxsYWJsZUNvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/mesh/MeshComponent.js": /*!******************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/mesh/MeshComponent.js ***! \******************************************************************************/ /*! exports provided: MeshComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MeshComponent\", function() { return MeshComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _shape_AABB__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../shape/AABB */ \"./node_modules/@antv/g-webgpu-core/es/shape/AABB.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar MeshComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(MeshComponent, _Component);\n\n var _super = _createSuper(MeshComponent);\n\n /**\n * aabb 应该存在 Mesh 而非 Geometry 中,原因包括:\n * 1. 包围盒会受 transform 影响。例如每次 transform 之后应该重新计算包围盒(center 发生偏移)。\n * 2. 多个 Mesh 可以共享一个 Geometry,但可以各自拥有不同的 aabb\n */\n\n /**\n * transform 之后需要重新计算包围盒\n */\n\n /**\n * 实际渲染 Model\n */\n function MeshComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MeshComponent);\n\n _this = _super.call(this, data);\n _this.material = void 0;\n _this.geometry = void 0;\n _this.aabb = new _shape_AABB__WEBPACK_IMPORTED_MODULE_6__[\"AABB\"]();\n _this.aabbDirty = true;\n _this.model = void 0;\n _this.visible = true;\n _this.children = [];\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return MeshComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=MeshComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvTWVzaENvbXBvbmVudC5qcz9lODFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDYztBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDWDtBQUNqQztBQUNQLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsZ0RBQUk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUZBQXNCO0FBQ3hDO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsMkRBQVM7QUFDWCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvbWVzaC9NZXNoQ29tcG9uZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuaW1wb3J0IHsgQUFCQiB9IGZyb20gJy4uLy4uL3NoYXBlL0FBQkInO1xuZXhwb3J0IHZhciBNZXNoQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhNZXNoQ29tcG9uZW50LCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1lc2hDb21wb25lbnQpO1xuXG4gIC8qKlxuICAgKiBhYWJiIOW6lOivpeWtmOWcqCBNZXNoIOiAjOmdniBHZW9tZXRyeSDkuK3vvIzljp/lm6DljIXmi6zvvJpcbiAgICogMS4g5YyF5Zu055uS5Lya5Y+XIHRyYW5zZm9ybSDlvbHlk43jgILkvovlpoLmr4/mrKEgdHJhbnNmb3JtIOS5i+WQjuW6lOivpemHjeaWsOiuoeeul+WMheWbtOebku+8iGNlbnRlciDlj5HnlJ/lgY/np7vvvInjgIJcbiAgICogMi4g5aSa5LiqIE1lc2gg5Y+v5Lul5YWx5Lqr5LiA5LiqIEdlb21ldHJ577yM5L2G5Y+v5Lul5ZCE6Ieq5oul5pyJ5LiN5ZCM55qEIGFhYmJcbiAgICovXG5cbiAgLyoqXG4gICAqIHRyYW5zZm9ybSDkuYvlkI7pnIDopoHph43mlrDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cbiAgLyoqXG4gICAqIOWunumZhea4suafkyBNb2RlbFxuICAgKi9cbiAgZnVuY3Rpb24gTWVzaENvbXBvbmVudChkYXRhKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1lc2hDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5tYXRlcmlhbCA9IHZvaWQgMDtcbiAgICBfdGhpcy5nZW9tZXRyeSA9IHZvaWQgMDtcbiAgICBfdGhpcy5hYWJiID0gbmV3IEFBQkIoKTtcbiAgICBfdGhpcy5hYWJiRGlydHkgPSB0cnVlO1xuICAgIF90aGlzLm1vZGVsID0gdm9pZCAwO1xuICAgIF90aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIF90aGlzLmNoaWxkcmVuID0gW107XG4gICAgT2JqZWN0LmFzc2lnbihfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgZGF0YSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIE1lc2hDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NZXNoQ29tcG9uZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/mesh/System.js": /*!***********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/mesh/System.js ***! \***********************************************************************/ /*! exports provided: MeshSystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MeshSystem\", function() { return MeshSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../shape/Frustum */ \"./node_modules/@antv/g-webgpu-core/es/shape/Frustum.js\");\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/math */ \"./node_modules/@antv/g-webgpu-core/es/utils/math.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\n\nvar MeshSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].CullableComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function MeshSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, MeshSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"cullable\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor4, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor5, this);\n\n this.planes = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(MeshSystem, [{\n key: \"setFrustumPlanes\",\n value: function setFrustumPlanes(planes) {\n this.planes = planes;\n }\n }, {\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(views) {\n var _iterator, _step, view, scene, camera, _iterator2, _step2, entity, component, hierarchyComponent, cullableComponent, geometryComponent, meshTransform, worldTransform, _geometryComponent$aa, center, halfExtents, transformedCenter, rotationScale, transformedHalfExtents, parentCullableComponent;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _iterator = _createForOfIteratorHelper(views);\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n view = _step.value;\n scene = view.getScene();\n camera = view.getCamera(); // get VP matrix from camera\n\n _iterator2 = _createForOfIteratorHelper(scene.getEntities());\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n entity = _step2.value;\n component = this.mesh.getComponentByEntity(entity);\n\n if (component) {\n hierarchyComponent = this.hierarchy.getComponentByEntity(entity);\n cullableComponent = this.cullable.getComponentByEntity(entity);\n geometryComponent = component.geometry;\n meshTransform = this.transform.getComponentByEntity(entity); // update mesh.aabb\n\n if (geometryComponent && geometryComponent.aabb && meshTransform && component.aabbDirty) {\n worldTransform = meshTransform.worldTransform; // apply transform to geometry.aabb\n\n _geometryComponent$aa = geometryComponent.aabb, center = _geometryComponent$aa.center, halfExtents = _geometryComponent$aa.halfExtents;\n transformedCenter = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create(), center, worldTransform);\n rotationScale = Object(_utils_math__WEBPACK_IMPORTED_MODULE_11__[\"getRotationScale\"])(worldTransform, gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].create());\n transformedHalfExtents = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat3(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create(), halfExtents, rotationScale);\n component.aabb.update(transformedCenter, transformedHalfExtents);\n component.aabbDirty = false;\n } // culling\n\n\n if (cullableComponent && geometryComponent) {\n parentCullableComponent = this.cullable.getComponentByEntity((hierarchyComponent === null || hierarchyComponent === void 0 ? void 0 : hierarchyComponent.parentID) || -1);\n cullableComponent.visibilityPlaneMask = this.computeVisibilityWithPlaneMask(component.aabb, (parentCullableComponent === null || parentCullableComponent === void 0 ? void 0 : parentCullableComponent.visibilityPlaneMask) || _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INDETERMINATE, this.planes || camera.getFrustum().planes);\n cullableComponent.visible = cullableComponent.visibilityPlaneMask !== _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE;\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.cullable.clear();\n this.mesh.clear();\n }\n /**\n *\n * @see「Optimized View Frustum Culling Algorithms for Bounding Boxes」\n * @see https://github.com/antvis/GWebGPUEngine/issues/3\n *\n * * 基础相交测试 the basic intersection test\n * * 标记 masking @see https://cesium.com/blog/2015/08/04/fast-hierarchical-culling/\n * * TODO: 平面一致性测试 the plane-coherency test\n * * TODO: 支持 mesh 指定自身的剔除策略,参考 Babylon.js @see https://doc.babylonjs.com/how_to/optimizing_your_scene#changing-mesh-culling-strategy\n *\n * @param aabb aabb\n * @param parentPlaneMask mask of parent\n * @param planes planes of frustum\n */\n\n }, {\n key: \"computeVisibilityWithPlaneMask\",\n value: function computeVisibilityWithPlaneMask(aabb, parentPlaneMask, planes) {\n if (parentPlaneMask === _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE || parentPlaneMask === _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INSIDE) {\n // 父节点完全位于视锥内或者外部,直接返回\n return parentPlaneMask;\n } // Start with MASK_INSIDE (all zeros) so that after the loop, the return value can be compared with MASK_INSIDE.\n // (Because if there are fewer than 31 planes, the upper bits wont be changed.)\n\n\n var mask = _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INSIDE;\n\n for (var k = 0, len = planes.length; k < len; ++k) {\n // For k greater than 31 (since 31 is the maximum number of INSIDE/INTERSECTING bits we can store), skip the optimization.\n var flag = k < 31 ? 1 << k : 0;\n\n if (k < 31 && (parentPlaneMask & flag) === 0) {\n // 父节点处于当前面内部,可以跳过\n continue;\n } // 使用 p-vertex 和 n-vertex 加速,避免进行平面和 aabb 全部顶点的相交检测\n\n\n var _planes$k = planes[k],\n normal = _planes$k.normal,\n distance = _planes$k.distance;\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].dot(normal, aabb.getNegativeFarPoint(planes[k])) + distance > 0) {\n return _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE;\n }\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].dot(normal, aabb.getPositiveFarPoint(planes[k])) + distance > 0) {\n // 和当前面相交,对应位置为1,继续检测下一个面\n mask |= flag;\n }\n }\n\n return mask;\n }\n }]);\n\n return MeshSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"cullable\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor5 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvU3lzdGVtLmpzPzkxZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUNrQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLHdEQUF3RCxRQUFRLG1FQUFtRSx3SEFBd0gsZ0JBQWdCLFdBQVcseUJBQXlCLFNBQVMsd0JBQXdCLDRCQUE0QixjQUFjLFNBQVMsOEJBQThCLEVBQUUscUJBQXFCLFVBQVUsRUFBRSxTQUFTLEVBQUUsOEpBQThKLEVBQUUsa0RBQWtELFNBQVMsa0JBQWtCLDJCQUEyQixFQUFFLG1CQUFtQixzQkFBc0IsOEJBQThCLGFBQWEsRUFBRSxzQkFBc0IsZUFBZSxXQUFXLEVBQUUsbUJBQW1CLE1BQU0seURBQXlELEVBQUUsVUFBVSx1QkFBdUIsRUFBRSxFQUFFLEdBQUc7O0FBRTc5QixpREFBaUQsZ0JBQWdCLGdFQUFnRSx3REFBd0QsNkRBQTZELHNEQUFzRCxrSEFBa0g7O0FBRTlaLHNDQUFzQyx1REFBdUQsdUNBQXVDLFNBQVMsT0FBTyxrQkFBa0IsRUFBRSxhQUFhOztBQUU5STtBQUNRO0FBQ0Q7QUFDSDtBQUNTO0FBQzdDLHlCQUF5Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsZ0NBQWdDLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVUscUNBQXFDLHdEQUFNLENBQUMsc0RBQVU7QUFDeFI7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDLCtCQUErQjtBQUNwRTtBQUNBO0FBQ0EsOENBQThDOztBQUU5Qzs7QUFFQTtBQUNBLDBDQUEwQyxpQ0FBaUM7QUFDM0U7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNGQUFzRjs7QUFFdEY7QUFDQSwwRUFBMEU7O0FBRTFFO0FBQ0EsZ0RBQWdELDhDQUFJLGVBQWUsOENBQUk7QUFDdkUsNENBQTRDLHFFQUFnQixpQkFBaUIsOENBQUk7QUFDakYscURBQXFELDhDQUFJLGVBQWUsOENBQUk7QUFDNUU7QUFDQTtBQUNBLDJCQUEyQjs7O0FBRzNCO0FBQ0E7QUFDQSwyUEFBMlAsb0RBQUk7QUFDL1Asa0dBQWtHLG9EQUFJO0FBQ3RHO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDhCQUE4QixvREFBSSxnQ0FBZ0Msb0RBQUk7QUFDdEU7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0EsaUJBQWlCLG9EQUFJOztBQUVyQiwwQ0FBMEMsU0FBUztBQUNuRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLDhDQUFJO0FBQ2hCLGlCQUFpQixvREFBSTtBQUNyQjs7QUFFQSxZQUFZLDhDQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9tZXNoL1N5c3RlbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX2Rlc2NyaXB0b3I0LCBfZGVzY3JpcHRvcjUsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IG1hdDMsIHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IE1hc2sgfSBmcm9tICcuLi8uLi9zaGFwZS9GcnVzdHVtJztcbmltcG9ydCB7IGdldFJvdGF0aW9uU2NhbGUgfSBmcm9tICcuLi8uLi91dGlscy9tYXRoJztcbmV4cG9ydCB2YXIgTWVzaFN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLk1lc2hDb21wb25lbnRNYW5hZ2VyKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5DdWxsYWJsZUNvbXBvbmVudE1hbmFnZXIpLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLkdlb21ldHJ5Q29tcG9uZW50TWFuYWdlciksIF9kZWM1ID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWM2ID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNZXNoU3lzdGVtKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNZXNoU3lzdGVtKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwibWVzaFwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImN1bGxhYmxlXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImdlb21ldHJ5XCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImhpZXJhcmNoeVwiLCBfZGVzY3JpcHRvcjQsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0cmFuc2Zvcm1cIiwgX2Rlc2NyaXB0b3I1LCB0aGlzKTtcblxuICAgIHRoaXMucGxhbmVzID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE1lc2hTeXN0ZW0sIFt7XG4gICAga2V5OiBcInNldEZydXN0dW1QbGFuZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RnJ1c3R1bVBsYW5lcyhwbGFuZXMpIHtcbiAgICAgIHRoaXMucGxhbmVzID0gcGxhbmVzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJleGVjdXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZXhlY3V0ZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUodmlld3MpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvciwgX3N0ZXAsIHZpZXcsIHNjZW5lLCBjYW1lcmEsIF9pdGVyYXRvcjIsIF9zdGVwMiwgZW50aXR5LCBjb21wb25lbnQsIGhpZXJhcmNoeUNvbXBvbmVudCwgY3VsbGFibGVDb21wb25lbnQsIGdlb21ldHJ5Q29tcG9uZW50LCBtZXNoVHJhbnNmb3JtLCB3b3JsZFRyYW5zZm9ybSwgX2dlb21ldHJ5Q29tcG9uZW50JGFhLCBjZW50ZXIsIGhhbGZFeHRlbnRzLCB0cmFuc2Zvcm1lZENlbnRlciwgcm90YXRpb25TY2FsZSwgdHJhbnNmb3JtZWRIYWxmRXh0ZW50cywgcGFyZW50Q3VsbGFibGVDb21wb25lbnQ7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyk7XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICAgICAgdmlldyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgY2FtZXJhID0gdmlldy5nZXRDYW1lcmEoKTsgLy8gZ2V0IFZQIG1hdHJpeCBmcm9tIGNhbWVyYVxuXG4gICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihzY2VuZS5nZXRFbnRpdGllcygpKTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMi5zKCk7ICEoX3N0ZXAyID0gX2l0ZXJhdG9yMi5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkgPSBfc3RlcDIudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlDb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjdWxsYWJsZUNvbXBvbmVudCA9IHRoaXMuY3VsbGFibGUuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnlDb21wb25lbnQgPSBjb21wb25lbnQuZ2VvbWV0cnk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lc2hUcmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpOyAvLyB1cGRhdGUgbWVzaC5hYWJiXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdlb21ldHJ5Q29tcG9uZW50ICYmIGdlb21ldHJ5Q29tcG9uZW50LmFhYmIgJiYgbWVzaFRyYW5zZm9ybSAmJiBjb21wb25lbnQuYWFiYkRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRUcmFuc2Zvcm0gPSBtZXNoVHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtOyAvLyBhcHBseSB0cmFuc2Zvcm0gdG8gZ2VvbWV0cnkuYWFiYlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2dlb21ldHJ5Q29tcG9uZW50JGFhID0gZ2VvbWV0cnlDb21wb25lbnQuYWFiYiwgY2VudGVyID0gX2dlb21ldHJ5Q29tcG9uZW50JGFhLmNlbnRlciwgaGFsZkV4dGVudHMgPSBfZ2VvbWV0cnlDb21wb25lbnQkYWEuaGFsZkV4dGVudHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRDZW50ZXIgPSB2ZWMzLnRyYW5zZm9ybU1hdDQodmVjMy5jcmVhdGUoKSwgY2VudGVyLCB3b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25TY2FsZSA9IGdldFJvdGF0aW9uU2NhbGUod29ybGRUcmFuc2Zvcm0sIG1hdDMuY3JlYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkSGFsZkV4dGVudHMgPSB2ZWMzLnRyYW5zZm9ybU1hdDModmVjMy5jcmVhdGUoKSwgaGFsZkV4dGVudHMsIHJvdGF0aW9uU2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5hYWJiLnVwZGF0ZSh0cmFuc2Zvcm1lZENlbnRlciwgdHJhbnNmb3JtZWRIYWxmRXh0ZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmFhYmJEaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIGN1bGxpbmdcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdWxsYWJsZUNvbXBvbmVudCAmJiBnZW9tZXRyeUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEN1bGxhYmxlQ29tcG9uZW50ID0gdGhpcy5jdWxsYWJsZS5nZXRDb21wb25lbnRCeUVudGl0eSgoaGllcmFyY2h5Q29tcG9uZW50ID09PSBudWxsIHx8IGhpZXJhcmNoeUNvbXBvbmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaGllcmFyY2h5Q29tcG9uZW50LnBhcmVudElEKSB8fCAtMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VsbGFibGVDb21wb25lbnQudmlzaWJpbGl0eVBsYW5lTWFzayA9IHRoaXMuY29tcHV0ZVZpc2liaWxpdHlXaXRoUGxhbmVNYXNrKGNvbXBvbmVudC5hYWJiLCAocGFyZW50Q3VsbGFibGVDb21wb25lbnQgPT09IG51bGwgfHwgcGFyZW50Q3VsbGFibGVDb21wb25lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcmVudEN1bGxhYmxlQ29tcG9uZW50LnZpc2liaWxpdHlQbGFuZU1hc2spIHx8IE1hc2suSU5ERVRFUk1JTkFURSwgdGhpcy5wbGFuZXMgfHwgY2FtZXJhLmdldEZydXN0dW0oKS5wbGFuZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1bGxhYmxlQ29tcG9uZW50LnZpc2libGUgPSBjdWxsYWJsZUNvbXBvbmVudC52aXNpYmlsaXR5UGxhbmVNYXNrICE9PSBNYXNrLk9VVFNJREU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZShlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IuZigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGV4ZWN1dGUoX3gpIHtcbiAgICAgICAgcmV0dXJuIF9leGVjdXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBleGVjdXRlO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInRlYXJEb3duXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRlYXJEb3duKCkge1xuICAgICAgdGhpcy5jdWxsYWJsZS5jbGVhcigpO1xuICAgICAgdGhpcy5tZXNoLmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHNlZeOAjE9wdGltaXplZCBWaWV3IEZydXN0dW0gQ3VsbGluZyBBbGdvcml0aG1zIGZvciBCb3VuZGluZyBCb3hlc+OAjVxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9HV2ViR1BVRW5naW5lL2lzc3Vlcy8zXG4gICAgICpcbiAgICAgKiAqIOWfuuehgOebuOS6pOa1i+ivlSB0aGUgYmFzaWMgaW50ZXJzZWN0aW9uIHRlc3RcbiAgICAgKiAqIOagh+iusCBtYXNraW5nIEBzZWUgaHR0cHM6Ly9jZXNpdW0uY29tL2Jsb2cvMjAxNS8wOC8wNC9mYXN0LWhpZXJhcmNoaWNhbC1jdWxsaW5nL1xuICAgICAqICogVE9ETzog5bmz6Z2i5LiA6Ie05oCn5rWL6K+VIHRoZSBwbGFuZS1jb2hlcmVuY3kgdGVzdFxuICAgICAqICogVE9ETzog5pSv5oyBIG1lc2gg5oyH5a6a6Ieq6Lqr55qE5YmU6Zmk562W55Wl77yM5Y+C6ICDIEJhYnlsb24uanMgQHNlZSBodHRwczovL2RvYy5iYWJ5bG9uanMuY29tL2hvd190by9vcHRpbWl6aW5nX3lvdXJfc2NlbmUjY2hhbmdpbmctbWVzaC1jdWxsaW5nLXN0cmF0ZWd5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWFiYiBhYWJiXG4gICAgICogQHBhcmFtIHBhcmVudFBsYW5lTWFzayBtYXNrIG9mIHBhcmVudFxuICAgICAqIEBwYXJhbSBwbGFuZXMgcGxhbmVzIG9mIGZydXN0dW1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNvbXB1dGVWaXNpYmlsaXR5V2l0aFBsYW5lTWFza1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wdXRlVmlzaWJpbGl0eVdpdGhQbGFuZU1hc2soYWFiYiwgcGFyZW50UGxhbmVNYXNrLCBwbGFuZXMpIHtcbiAgICAgIGlmIChwYXJlbnRQbGFuZU1hc2sgPT09IE1hc2suT1VUU0lERSB8fCBwYXJlbnRQbGFuZU1hc2sgPT09IE1hc2suSU5TSURFKSB7XG4gICAgICAgIC8vIOeItuiKgueCueWujOWFqOS9jeS6juinhumUpeWGheaIluiAheWklumDqO+8jOebtOaOpei/lOWbnlxuICAgICAgICByZXR1cm4gcGFyZW50UGxhbmVNYXNrO1xuICAgICAgfSAvLyBTdGFydCB3aXRoIE1BU0tfSU5TSURFIChhbGwgemVyb3MpIHNvIHRoYXQgYWZ0ZXIgdGhlIGxvb3AsIHRoZSByZXR1cm4gdmFsdWUgY2FuIGJlIGNvbXBhcmVkIHdpdGggTUFTS19JTlNJREUuXG4gICAgICAvLyAoQmVjYXVzZSBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiAzMSBwbGFuZXMsIHRoZSB1cHBlciBiaXRzIHdvbnQgYmUgY2hhbmdlZC4pXG5cblxuICAgICAgdmFyIG1hc2sgPSBNYXNrLklOU0lERTtcblxuICAgICAgZm9yICh2YXIgayA9IDAsIGxlbiA9IHBsYW5lcy5sZW5ndGg7IGsgPCBsZW47ICsraykge1xuICAgICAgICAvLyBGb3IgayBncmVhdGVyIHRoYW4gMzEgKHNpbmNlIDMxIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBJTlNJREUvSU5URVJTRUNUSU5HIGJpdHMgd2UgY2FuIHN0b3JlKSwgc2tpcCB0aGUgb3B0aW1pemF0aW9uLlxuICAgICAgICB2YXIgZmxhZyA9IGsgPCAzMSA/IDEgPDwgayA6IDA7XG5cbiAgICAgICAgaWYgKGsgPCAzMSAmJiAocGFyZW50UGxhbmVNYXNrICYgZmxhZykgPT09IDApIHtcbiAgICAgICAgICAvLyDniLboioLngrnlpITkuo7lvZPliY3pnaLlhoXpg6jvvIzlj6/ku6Xot7Pov4dcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSAvLyDkvb/nlKggcC12ZXJ0ZXgg5ZKMIG4tdmVydGV4IOWKoOmAn++8jOmBv+WFjei/m+ihjOW5s+mdouWSjCBhYWJiIOWFqOmDqOmhtueCueeahOebuOS6pOajgOa1i1xuXG5cbiAgICAgICAgdmFyIF9wbGFuZXMkayA9IHBsYW5lc1trXSxcbiAgICAgICAgICAgIG5vcm1hbCA9IF9wbGFuZXMkay5ub3JtYWwsXG4gICAgICAgICAgICBkaXN0YW5jZSA9IF9wbGFuZXMkay5kaXN0YW5jZTtcblxuICAgICAgICBpZiAodmVjMy5kb3Qobm9ybWFsLCBhYWJiLmdldE5lZ2F0aXZlRmFyUG9pbnQocGxhbmVzW2tdKSkgKyBkaXN0YW5jZSA+IDApIHtcbiAgICAgICAgICByZXR1cm4gTWFzay5PVVRTSURFO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlYzMuZG90KG5vcm1hbCwgYWFiYi5nZXRQb3NpdGl2ZUZhclBvaW50KHBsYW5lc1trXSkpICsgZGlzdGFuY2UgPiAwKSB7XG4gICAgICAgICAgLy8g5ZKM5b2T5YmN6Z2i55u45Lqk77yM5a+55bqU5L2N572u5Li6Me+8jOe7p+e7reajgOa1i+S4i+S4gOS4qumdolxuICAgICAgICAgIG1hc2sgfD0gZmxhZztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWFzaztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWVzaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1lc2hcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY3VsbGFibGVcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiaGllcmFyY2h5XCIsIFtfZGVjNV0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjUgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInRyYW5zZm9ybVwiLCBbX2RlYzZdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/mesh/System.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/mesh/interface.js": /*!**************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/mesh/interface.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=interface.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvaW50ZXJmYWNlLmpzPzYzMjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9tZXNoL2ludGVyZmFjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJmYWNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/mesh/interface.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IAttribute.js": /*!*******************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IAttribute.js ***! \*******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lBdHRyaWJ1dGUuanM/YTI1NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lBdHRyaWJ1dGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlBdHRyaWJ1dGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IAttribute.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IBuffer.js": /*!****************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IBuffer.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lCdWZmZXIuanM/MDM1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lCdWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlCdWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IBuffer.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IComputeModel.js": /*!**********************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IComputeModel.js ***! \**********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lDb21wdXRlTW9kZWwuanM/MzliYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lDb21wdXRlTW9kZWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlDb21wdXRlTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IComputeModel.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IElements.js": /*!******************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IElements.js ***! \******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lFbGVtZW50cy5qcz9mOTExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSUVsZW1lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JRWxlbWVudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IElements.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js": /*!*********************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lGcmFtZWJ1ZmZlci5qcz85Y2VlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSUZyYW1lYnVmZmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JRnJhbWVidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IModel.js": /*!***************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IModel.js ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lNb2RlbC5qcz9jOWE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSU1vZGVsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IModel.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js": /*!***************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js ***! \***************************************************************************************/ /*! exports provided: PassType */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PassType\", function() { return PassType; });\nvar PassType;\n/**\n * Pass 分两类:\n * 1. 渲染相关 eg. ClearPass、RenderPass、PickingPass、ShadowPass\n * 2. PostProcessing eg. CopyPass、BlurPass\n * 另外考虑到 Pass 之间严格的执行顺序,render 方法必须是异步的\n */\n\n(function (PassType) {\n PassType[\"Normal\"] = \"normal\";\n PassType[\"PostProcessing\"] = \"post-processing\";\n})(PassType || (PassType = {}));\n//# sourceMappingURL=IMultiPassRenderer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lNdWx0aVBhc3NSZW5kZXJlci5qcz81N2ZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDRCQUE0QjtBQUM3QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSU11bHRpUGFzc1JlbmRlcmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBQYXNzVHlwZTtcbi8qKlxuICogUGFzcyDliIbkuKTnsbvvvJpcbiAqIDEuIOa4suafk+ebuOWFsyBlZy4gQ2xlYXJQYXNz44CBUmVuZGVyUGFzc+OAgVBpY2tpbmdQYXNz44CBU2hhZG93UGFzc1xuICogMi4gUG9zdFByb2Nlc3NpbmcgZWcuIENvcHlQYXNz44CBQmx1clBhc3NcbiAqIOWPpuWkluiAg+iZkeWIsCBQYXNzIOS5i+mXtOS4peagvOeahOaJp+ihjOmhuuW6j++8jHJlbmRlciDmlrnms5Xlv4XpobvmmK/lvILmraXnmoRcbiAqL1xuXG4oZnVuY3Rpb24gKFBhc3NUeXBlKSB7XG4gIFBhc3NUeXBlW1wiTm9ybWFsXCJdID0gXCJub3JtYWxcIjtcbiAgUGFzc1R5cGVbXCJQb3N0UHJvY2Vzc2luZ1wiXSA9IFwicG9zdC1wcm9jZXNzaW5nXCI7XG59KShQYXNzVHlwZSB8fCAoUGFzc1R5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SU11bHRpUGFzc1JlbmRlcmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js": /*!**********************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js ***! \**********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IRenderbuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJidWZmZXIuanM/YmRkMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJidWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlSZW5kZXJidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IRendererService.js": /*!*************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IRendererService.js ***! \*************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IRendererService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJlclNlcnZpY2UuanM/MzYyYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJlclNlcnZpY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlSZW5kZXJlclNlcnZpY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IRendererService.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/ITexture2D.js": /*!*******************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/ITexture2D.js ***! \*******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=ITexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lUZXh0dXJlMkQuanM/MjU3ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lUZXh0dXJlMkQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlUZXh0dXJlMkQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/ITexture2D.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/IUniform.js": /*!*****************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/IUniform.js ***! \*****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IUniform.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lVbmlmb3JtLmpzPzY2MzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9JVW5pZm9ybS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SVVuaWZvcm0uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/IUniform.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/System.js": /*!***************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/System.js ***! \***************************************************************************/ /*! exports provided: RendererSystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RendererSystem\", function() { return RendererSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./passes/CopyPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\");\n/* harmony import */ var _passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./passes/PixelPickingPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony import */ var _passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./passes/RenderPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _temp;\n\n\n\n\n\n\nvar RendererSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"named\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].FrameGraphSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderPassFactory), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function RendererSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, RendererSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"frameGraphSystem\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"renderPassFactory\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"configService\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor4, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(RendererSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(views) {\n var _this$renderPassFacto, setupRenderPass, executeRenderPass, renderPass, _this$renderPassFacto2, setupCopyPass, executeCopyPass, tearDownCopyPass, copyPass;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // const pixelPickingPass = this.renderPassFactory(\n // PixelPickingPass.IDENTIFIER,\n // );\n // const {\n // setup: setupPixelPickingPass,\n // execute: executePixelPickingPass,\n // tearDown: tearDownPickingPass,\n // } = pixelPickingPass;\n // this.frameGraphSystem.addPass(\n // PixelPickingPass.IDENTIFIER,\n // setupPixelPickingPass,\n // executePixelPickingPass,\n // tearDownPickingPass,\n // );\n _this$renderPassFacto = this.renderPassFactory(_passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__[\"RenderPass\"].IDENTIFIER), setupRenderPass = _this$renderPassFacto.setup, executeRenderPass = _this$renderPassFacto.execute;\n renderPass = this.frameGraphSystem.addPass(_passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__[\"RenderPass\"].IDENTIFIER, setupRenderPass, executeRenderPass);\n _this$renderPassFacto2 = this.renderPassFactory(_passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__[\"CopyPass\"].IDENTIFIER), setupCopyPass = _this$renderPassFacto2.setup, executeCopyPass = _this$renderPassFacto2.execute, tearDownCopyPass = _this$renderPassFacto2.tearDown;\n copyPass = this.frameGraphSystem.addPass(_passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__[\"CopyPass\"].IDENTIFIER, setupCopyPass, executeCopyPass, tearDownCopyPass);\n this.frameGraphSystem.present(copyPass.data.output); // this.frameGraphSystem.present(renderPass.data.output);\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.resourcePool.clean();\n }\n }, {\n key: \"pick\",\n value: function pick(position, view) {\n var pickingPass = this.renderPassFactory(_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__[\"PixelPickingPass\"].IDENTIFIER);\n return pickingPass.pick(position, view);\n }\n }]);\n\n return RendererSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"frameGraphSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"renderPassFactory\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"configService\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL1N5c3RlbS5qcz9iNzJiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFc0Q7QUFDUjtBQUNEO0FBQ2dCO0FBQ1o7QUFDMUMsNkJBQTZCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyxzREFBVSxtQkFBbUIsdURBQUssQ0FBQyxzREFBVSw0QkFBNEIsd0RBQU0sQ0FBQyxzREFBVSw2QkFBNkIsd0RBQU0sQ0FBQyxzREFBVSx5QkFBeUIsd0RBQU0sQ0FBQyxzREFBVTtBQUNuUDtBQUNBLElBQUksNEVBQWU7O0FBRW5CLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0QsOERBQVU7QUFDekUsMkRBQTJELDhEQUFVO0FBQ3JFLGdFQUFnRSx5REFBUTtBQUN4RSx5REFBeUQseURBQVE7QUFDakUsb0VBQW9FOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0NBQStDLDBFQUFnQjtBQUMvRDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfZGVjNSwgX2RlYzYsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF90ZW1wO1xuXG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUsIG5hbWVkIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IENvcHlQYXNzIH0gZnJvbSAnLi9wYXNzZXMvQ29weVBhc3MnO1xuaW1wb3J0IHsgUGl4ZWxQaWNraW5nUGFzcyB9IGZyb20gJy4vcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vcGFzc2VzL1JlbmRlclBhc3MnO1xuZXhwb3J0IHZhciBSZW5kZXJlclN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjMyA9IG5hbWVkKElERU5USUZJRVIuRnJhbWVHcmFwaFN5c3RlbSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLkNvbmZpZ1NlcnZpY2UpLCBfZGVjNiA9IGluamVjdChJREVOVElGSUVSLlJlc291cmNlUG9vbCksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJlclN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVuZGVyZXJTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJmcmFtZUdyYXBoU3lzdGVtXCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwicmVuZGVyUGFzc0ZhY3RvcnlcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiY29uZmlnU2VydmljZVwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJyZXNvdXJjZVBvb2xcIiwgX2Rlc2NyaXB0b3I0LCB0aGlzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZW5kZXJlclN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKHZpZXdzKSB7XG4gICAgICAgIHZhciBfdGhpcyRyZW5kZXJQYXNzRmFjdG8sIHNldHVwUmVuZGVyUGFzcywgZXhlY3V0ZVJlbmRlclBhc3MsIHJlbmRlclBhc3MsIF90aGlzJHJlbmRlclBhc3NGYWN0bzIsIHNldHVwQ29weVBhc3MsIGV4ZWN1dGVDb3B5UGFzcywgdGVhckRvd25Db3B5UGFzcywgY29weVBhc3M7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBwaXhlbFBpY2tpbmdQYXNzID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeTxQaXhlbFBpY2tpbmdQYXNzRGF0YT4oXG4gICAgICAgICAgICAgICAgLy8gICBQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIsXG4gICAgICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCB7XG4gICAgICAgICAgICAgICAgLy8gICBzZXR1cDogc2V0dXBQaXhlbFBpY2tpbmdQYXNzLFxuICAgICAgICAgICAgICAgIC8vICAgZXhlY3V0ZTogZXhlY3V0ZVBpeGVsUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gICB0ZWFyRG93bjogdGVhckRvd25QaWNraW5nUGFzcyxcbiAgICAgICAgICAgICAgICAvLyB9ID0gcGl4ZWxQaWNraW5nUGFzcztcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmZyYW1lR3JhcGhTeXN0ZW0uYWRkUGFzczxQaXhlbFBpY2tpbmdQYXNzRGF0YT4oXG4gICAgICAgICAgICAgICAgLy8gICBQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIsXG4gICAgICAgICAgICAgICAgLy8gICBzZXR1cFBpeGVsUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gICBleGVjdXRlUGl4ZWxQaWNraW5nUGFzcyxcbiAgICAgICAgICAgICAgICAvLyAgIHRlYXJEb3duUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgICAgICBfdGhpcyRyZW5kZXJQYXNzRmFjdG8gPSB0aGlzLnJlbmRlclBhc3NGYWN0b3J5KFJlbmRlclBhc3MuSURFTlRJRklFUiksIHNldHVwUmVuZGVyUGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0by5zZXR1cCwgZXhlY3V0ZVJlbmRlclBhc3MgPSBfdGhpcyRyZW5kZXJQYXNzRmFjdG8uZXhlY3V0ZTtcbiAgICAgICAgICAgICAgICByZW5kZXJQYXNzID0gdGhpcy5mcmFtZUdyYXBoU3lzdGVtLmFkZFBhc3MoUmVuZGVyUGFzcy5JREVOVElGSUVSLCBzZXR1cFJlbmRlclBhc3MsIGV4ZWN1dGVSZW5kZXJQYXNzKTtcbiAgICAgICAgICAgICAgICBfdGhpcyRyZW5kZXJQYXNzRmFjdG8yID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShDb3B5UGFzcy5JREVOVElGSUVSKSwgc2V0dXBDb3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIuc2V0dXAsIGV4ZWN1dGVDb3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIuZXhlY3V0ZSwgdGVhckRvd25Db3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIudGVhckRvd247XG4gICAgICAgICAgICAgICAgY29weVBhc3MgPSB0aGlzLmZyYW1lR3JhcGhTeXN0ZW0uYWRkUGFzcyhDb3B5UGFzcy5JREVOVElGSUVSLCBzZXR1cENvcHlQYXNzLCBleGVjdXRlQ29weVBhc3MsIHRlYXJEb3duQ29weVBhc3MpO1xuICAgICAgICAgICAgICAgIHRoaXMuZnJhbWVHcmFwaFN5c3RlbS5wcmVzZW50KGNvcHlQYXNzLmRhdGEub3V0cHV0KTsgLy8gdGhpcy5mcmFtZUdyYXBoU3lzdGVtLnByZXNlbnQocmVuZGVyUGFzcy5kYXRhLm91dHB1dCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKF94KSB7XG4gICAgICAgIHJldHVybiBfZXhlY3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXhlY3V0ZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJ0ZWFyRG93blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0ZWFyRG93bigpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VQb29sLmNsZWFuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBpY2tcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGljayhwb3NpdGlvbiwgdmlldykge1xuICAgICAgdmFyIHBpY2tpbmdQYXNzID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIpO1xuICAgICAgcmV0dXJuIHBpY2tpbmdQYXNzLnBpY2socG9zaXRpb24sIHZpZXcpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZW5kZXJlclN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImZyYW1lR3JhcGhTeXN0ZW1cIiwgW19kZWMyLCBfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlbmRlclBhc3NGYWN0b3J5XCIsIFtfZGVjNF0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImNvbmZpZ1NlcnZpY2VcIiwgW19kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwicmVzb3VyY2VQb29sXCIsIFtfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TeXN0ZW0uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/System.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js": /*!***********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js ***! \***********************************************************************/ /*! exports provided: gl */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gl\", function() { return gl; });\n/**\n * WebGL 枚举值\n * @see http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14\n * 使用 babel 插件对常量进行内联,以减少最终打包产物大小\n * @see https://github.com/uber/deck.gl/blob/7.1-release/dev-docs/roadmaps/dist-size-roadmap.md#inline-gl-constants\n * 为了支持 WebGPU,新增 TextureUsage\n * @see https://gpuweb.github.io/gpuweb/#gputextureusage\n */\nvar gl;\n\n(function (gl) {\n gl[gl[\"DEPTH_BUFFER_BIT\"] = 256] = \"DEPTH_BUFFER_BIT\";\n gl[gl[\"STENCIL_BUFFER_BIT\"] = 1024] = \"STENCIL_BUFFER_BIT\";\n gl[gl[\"COLOR_BUFFER_BIT\"] = 16384] = \"COLOR_BUFFER_BIT\";\n gl[gl[\"POINTS\"] = 0] = \"POINTS\";\n gl[gl[\"LINES\"] = 1] = \"LINES\";\n gl[gl[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n gl[gl[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n gl[gl[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n gl[gl[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n gl[gl[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n gl[gl[\"ZERO\"] = 0] = \"ZERO\";\n gl[gl[\"ONE\"] = 1] = \"ONE\";\n gl[gl[\"SRC_COLOR\"] = 768] = \"SRC_COLOR\";\n gl[gl[\"ONE_MINUS_SRC_COLOR\"] = 769] = \"ONE_MINUS_SRC_COLOR\";\n gl[gl[\"SRC_ALPHA\"] = 770] = \"SRC_ALPHA\";\n gl[gl[\"ONE_MINUS_SRC_ALPHA\"] = 771] = \"ONE_MINUS_SRC_ALPHA\";\n gl[gl[\"DST_ALPHA\"] = 772] = \"DST_ALPHA\";\n gl[gl[\"ONE_MINUS_DST_ALPHA\"] = 773] = \"ONE_MINUS_DST_ALPHA\";\n gl[gl[\"DST_COLOR\"] = 774] = \"DST_COLOR\";\n gl[gl[\"ONE_MINUS_DST_COLOR\"] = 775] = \"ONE_MINUS_DST_COLOR\";\n gl[gl[\"SRC_ALPHA_SATURATE\"] = 776] = \"SRC_ALPHA_SATURATE\";\n gl[gl[\"FUNC_ADD\"] = 32774] = \"FUNC_ADD\";\n gl[gl[\"BLEND_EQUATION\"] = 32777] = \"BLEND_EQUATION\";\n gl[gl[\"BLEND_EQUATION_RGB\"] = 32777] = \"BLEND_EQUATION_RGB\";\n gl[gl[\"BLEND_EQUATION_ALPHA\"] = 34877] = \"BLEND_EQUATION_ALPHA\";\n gl[gl[\"FUNC_SUBTRACT\"] = 32778] = \"FUNC_SUBTRACT\";\n gl[gl[\"FUNC_REVERSE_SUBTRACT\"] = 32779] = \"FUNC_REVERSE_SUBTRACT\";\n gl[gl[\"MAX_EXT\"] = 32776] = \"MAX_EXT\";\n gl[gl[\"MIN_EXT\"] = 32775] = \"MIN_EXT\";\n gl[gl[\"BLEND_DST_RGB\"] = 32968] = \"BLEND_DST_RGB\";\n gl[gl[\"BLEND_SRC_RGB\"] = 32969] = \"BLEND_SRC_RGB\";\n gl[gl[\"BLEND_DST_ALPHA\"] = 32970] = \"BLEND_DST_ALPHA\";\n gl[gl[\"BLEND_SRC_ALPHA\"] = 32971] = \"BLEND_SRC_ALPHA\";\n gl[gl[\"CONSTANT_COLOR\"] = 32769] = \"CONSTANT_COLOR\";\n gl[gl[\"ONE_MINUS_CONSTANT_COLOR\"] = 32770] = \"ONE_MINUS_CONSTANT_COLOR\";\n gl[gl[\"CONSTANT_ALPHA\"] = 32771] = \"CONSTANT_ALPHA\";\n gl[gl[\"ONE_MINUS_CONSTANT_ALPHA\"] = 32772] = \"ONE_MINUS_CONSTANT_ALPHA\";\n gl[gl[\"BLEND_COLOR\"] = 32773] = \"BLEND_COLOR\";\n gl[gl[\"ARRAY_BUFFER\"] = 34962] = \"ARRAY_BUFFER\";\n gl[gl[\"ELEMENT_ARRAY_BUFFER\"] = 34963] = \"ELEMENT_ARRAY_BUFFER\";\n gl[gl[\"ARRAY_BUFFER_BINDING\"] = 34964] = \"ARRAY_BUFFER_BINDING\";\n gl[gl[\"ELEMENT_ARRAY_BUFFER_BINDING\"] = 34965] = \"ELEMENT_ARRAY_BUFFER_BINDING\";\n gl[gl[\"STREAM_DRAW\"] = 35040] = \"STREAM_DRAW\";\n gl[gl[\"STATIC_DRAW\"] = 35044] = \"STATIC_DRAW\";\n gl[gl[\"DYNAMIC_DRAW\"] = 35048] = \"DYNAMIC_DRAW\";\n gl[gl[\"BUFFER_SIZE\"] = 34660] = \"BUFFER_SIZE\";\n gl[gl[\"BUFFER_USAGE\"] = 34661] = \"BUFFER_USAGE\";\n gl[gl[\"CURRENT_VERTEX_ATTRIB\"] = 34342] = \"CURRENT_VERTEX_ATTRIB\";\n gl[gl[\"FRONT\"] = 1028] = \"FRONT\";\n gl[gl[\"BACK\"] = 1029] = \"BACK\";\n gl[gl[\"FRONT_AND_BACK\"] = 1032] = \"FRONT_AND_BACK\";\n gl[gl[\"CULL_FACE\"] = 2884] = \"CULL_FACE\";\n gl[gl[\"BLEND\"] = 3042] = \"BLEND\";\n gl[gl[\"DITHER\"] = 3024] = \"DITHER\";\n gl[gl[\"STENCIL_TEST\"] = 2960] = \"STENCIL_TEST\";\n gl[gl[\"DEPTH_TEST\"] = 2929] = \"DEPTH_TEST\";\n gl[gl[\"SCISSOR_TEST\"] = 3089] = \"SCISSOR_TEST\";\n gl[gl[\"POLYGON_OFFSET_FILL\"] = 32823] = \"POLYGON_OFFSET_FILL\";\n gl[gl[\"SAMPLE_ALPHA_TO_COVERAGE\"] = 32926] = \"SAMPLE_ALPHA_TO_COVERAGE\";\n gl[gl[\"SAMPLE_COVERAGE\"] = 32928] = \"SAMPLE_COVERAGE\";\n gl[gl[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\n gl[gl[\"INVALID_ENUM\"] = 1280] = \"INVALID_ENUM\";\n gl[gl[\"INVALID_VALUE\"] = 1281] = \"INVALID_VALUE\";\n gl[gl[\"INVALID_OPERATION\"] = 1282] = \"INVALID_OPERATION\";\n gl[gl[\"OUT_OF_MEMORY\"] = 1285] = \"OUT_OF_MEMORY\";\n gl[gl[\"CW\"] = 2304] = \"CW\";\n gl[gl[\"CCW\"] = 2305] = \"CCW\";\n gl[gl[\"LINE_WIDTH\"] = 2849] = \"LINE_WIDTH\";\n gl[gl[\"ALIASED_POINT_SIZE_RANGE\"] = 33901] = \"ALIASED_POINT_SIZE_RANGE\";\n gl[gl[\"ALIASED_LINE_WIDTH_RANGE\"] = 33902] = \"ALIASED_LINE_WIDTH_RANGE\";\n gl[gl[\"CULL_FACE_MODE\"] = 2885] = \"CULL_FACE_MODE\";\n gl[gl[\"FRONT_FACE\"] = 2886] = \"FRONT_FACE\";\n gl[gl[\"DEPTH_RANGE\"] = 2928] = \"DEPTH_RANGE\";\n gl[gl[\"DEPTH_WRITEMASK\"] = 2930] = \"DEPTH_WRITEMASK\";\n gl[gl[\"DEPTH_CLEAR_VALUE\"] = 2931] = \"DEPTH_CLEAR_VALUE\";\n gl[gl[\"DEPTH_FUNC\"] = 2932] = \"DEPTH_FUNC\";\n gl[gl[\"STENCIL_CLEAR_VALUE\"] = 2961] = \"STENCIL_CLEAR_VALUE\";\n gl[gl[\"STENCIL_FUNC\"] = 2962] = \"STENCIL_FUNC\";\n gl[gl[\"STENCIL_FAIL\"] = 2964] = \"STENCIL_FAIL\";\n gl[gl[\"STENCIL_PASS_DEPTH_FAIL\"] = 2965] = \"STENCIL_PASS_DEPTH_FAIL\";\n gl[gl[\"STENCIL_PASS_DEPTH_PASS\"] = 2966] = \"STENCIL_PASS_DEPTH_PASS\";\n gl[gl[\"STENCIL_REF\"] = 2967] = \"STENCIL_REF\";\n gl[gl[\"STENCIL_VALUE_MASK\"] = 2963] = \"STENCIL_VALUE_MASK\";\n gl[gl[\"STENCIL_WRITEMASK\"] = 2968] = \"STENCIL_WRITEMASK\";\n gl[gl[\"STENCIL_BACK_FUNC\"] = 34816] = \"STENCIL_BACK_FUNC\";\n gl[gl[\"STENCIL_BACK_FAIL\"] = 34817] = \"STENCIL_BACK_FAIL\";\n gl[gl[\"STENCIL_BACK_PASS_DEPTH_FAIL\"] = 34818] = \"STENCIL_BACK_PASS_DEPTH_FAIL\";\n gl[gl[\"STENCIL_BACK_PASS_DEPTH_PASS\"] = 34819] = \"STENCIL_BACK_PASS_DEPTH_PASS\";\n gl[gl[\"STENCIL_BACK_REF\"] = 36003] = \"STENCIL_BACK_REF\";\n gl[gl[\"STENCIL_BACK_VALUE_MASK\"] = 36004] = \"STENCIL_BACK_VALUE_MASK\";\n gl[gl[\"STENCIL_BACK_WRITEMASK\"] = 36005] = \"STENCIL_BACK_WRITEMASK\";\n gl[gl[\"VIEWPORT\"] = 2978] = \"VIEWPORT\";\n gl[gl[\"SCISSOR_BOX\"] = 3088] = \"SCISSOR_BOX\";\n gl[gl[\"COLOR_CLEAR_VALUE\"] = 3106] = \"COLOR_CLEAR_VALUE\";\n gl[gl[\"COLOR_WRITEMASK\"] = 3107] = \"COLOR_WRITEMASK\";\n gl[gl[\"UNPACK_ALIGNMENT\"] = 3317] = \"UNPACK_ALIGNMENT\";\n gl[gl[\"PACK_ALIGNMENT\"] = 3333] = \"PACK_ALIGNMENT\";\n gl[gl[\"MAX_TEXTURE_SIZE\"] = 3379] = \"MAX_TEXTURE_SIZE\";\n gl[gl[\"MAX_VIEWPORT_DIMS\"] = 3386] = \"MAX_VIEWPORT_DIMS\";\n gl[gl[\"SUBPIXEL_BITS\"] = 3408] = \"SUBPIXEL_BITS\";\n gl[gl[\"RED_BITS\"] = 3410] = \"RED_BITS\";\n gl[gl[\"GREEN_BITS\"] = 3411] = \"GREEN_BITS\";\n gl[gl[\"BLUE_BITS\"] = 3412] = \"BLUE_BITS\";\n gl[gl[\"ALPHA_BITS\"] = 3413] = \"ALPHA_BITS\";\n gl[gl[\"DEPTH_BITS\"] = 3414] = \"DEPTH_BITS\";\n gl[gl[\"STENCIL_BITS\"] = 3415] = \"STENCIL_BITS\";\n gl[gl[\"POLYGON_OFFSET_UNITS\"] = 10752] = \"POLYGON_OFFSET_UNITS\";\n gl[gl[\"POLYGON_OFFSET_FACTOR\"] = 32824] = \"POLYGON_OFFSET_FACTOR\";\n gl[gl[\"TEXTURE_BINDING_2D\"] = 32873] = \"TEXTURE_BINDING_2D\";\n gl[gl[\"SAMPLE_BUFFERS\"] = 32936] = \"SAMPLE_BUFFERS\";\n gl[gl[\"SAMPLES\"] = 32937] = \"SAMPLES\";\n gl[gl[\"SAMPLE_COVERAGE_VALUE\"] = 32938] = \"SAMPLE_COVERAGE_VALUE\";\n gl[gl[\"SAMPLE_COVERAGE_INVERT\"] = 32939] = \"SAMPLE_COVERAGE_INVERT\";\n gl[gl[\"COMPRESSED_TEXTURE_FORMATS\"] = 34467] = \"COMPRESSED_TEXTURE_FORMATS\";\n gl[gl[\"DONT_CARE\"] = 4352] = \"DONT_CARE\";\n gl[gl[\"FASTEST\"] = 4353] = \"FASTEST\";\n gl[gl[\"NICEST\"] = 4354] = \"NICEST\";\n gl[gl[\"GENERATE_MIPMAP_HINT\"] = 33170] = \"GENERATE_MIPMAP_HINT\";\n gl[gl[\"BYTE\"] = 5120] = \"BYTE\";\n gl[gl[\"UNSIGNED_BYTE\"] = 5121] = \"UNSIGNED_BYTE\";\n gl[gl[\"SHORT\"] = 5122] = \"SHORT\";\n gl[gl[\"UNSIGNED_SHORT\"] = 5123] = \"UNSIGNED_SHORT\";\n gl[gl[\"INT\"] = 5124] = \"INT\";\n gl[gl[\"UNSIGNED_INT\"] = 5125] = \"UNSIGNED_INT\";\n gl[gl[\"FLOAT\"] = 5126] = \"FLOAT\";\n gl[gl[\"DEPTH_COMPONENT\"] = 6402] = \"DEPTH_COMPONENT\";\n gl[gl[\"ALPHA\"] = 6406] = \"ALPHA\";\n gl[gl[\"RGB\"] = 6407] = \"RGB\";\n gl[gl[\"RGBA\"] = 6408] = \"RGBA\";\n gl[gl[\"LUMINANCE\"] = 6409] = \"LUMINANCE\";\n gl[gl[\"LUMINANCE_ALPHA\"] = 6410] = \"LUMINANCE_ALPHA\";\n gl[gl[\"UNSIGNED_SHORT_4_4_4_4\"] = 32819] = \"UNSIGNED_SHORT_4_4_4_4\";\n gl[gl[\"UNSIGNED_SHORT_5_5_5_1\"] = 32820] = \"UNSIGNED_SHORT_5_5_5_1\";\n gl[gl[\"UNSIGNED_SHORT_5_6_5\"] = 33635] = \"UNSIGNED_SHORT_5_6_5\";\n gl[gl[\"FRAGMENT_SHADER\"] = 35632] = \"FRAGMENT_SHADER\";\n gl[gl[\"VERTEX_SHADER\"] = 35633] = \"VERTEX_SHADER\";\n gl[gl[\"MAX_VERTEX_ATTRIBS\"] = 34921] = \"MAX_VERTEX_ATTRIBS\";\n gl[gl[\"MAX_VERTEX_UNIFORM_VECTORS\"] = 36347] = \"MAX_VERTEX_UNIFORM_VECTORS\";\n gl[gl[\"MAX_VARYING_VECTORS\"] = 36348] = \"MAX_VARYING_VECTORS\";\n gl[gl[\"MAX_COMBINED_TEXTURE_IMAGE_UNITS\"] = 35661] = \"MAX_COMBINED_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_VERTEX_TEXTURE_IMAGE_UNITS\"] = 35660] = \"MAX_VERTEX_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_TEXTURE_IMAGE_UNITS\"] = 34930] = \"MAX_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_FRAGMENT_UNIFORM_VECTORS\"] = 36349] = \"MAX_FRAGMENT_UNIFORM_VECTORS\";\n gl[gl[\"SHADER_TYPE\"] = 35663] = \"SHADER_TYPE\";\n gl[gl[\"DELETE_STATUS\"] = 35712] = \"DELETE_STATUS\";\n gl[gl[\"LINK_STATUS\"] = 35714] = \"LINK_STATUS\";\n gl[gl[\"VALIDATE_STATUS\"] = 35715] = \"VALIDATE_STATUS\";\n gl[gl[\"ATTACHED_SHADERS\"] = 35717] = \"ATTACHED_SHADERS\";\n gl[gl[\"ACTIVE_UNIFORMS\"] = 35718] = \"ACTIVE_UNIFORMS\";\n gl[gl[\"ACTIVE_ATTRIBUTES\"] = 35721] = \"ACTIVE_ATTRIBUTES\";\n gl[gl[\"SHADING_LANGUAGE_VERSION\"] = 35724] = \"SHADING_LANGUAGE_VERSION\";\n gl[gl[\"CURRENT_PROGRAM\"] = 35725] = \"CURRENT_PROGRAM\";\n gl[gl[\"NEVER\"] = 512] = \"NEVER\";\n gl[gl[\"LESS\"] = 513] = \"LESS\";\n gl[gl[\"EQUAL\"] = 514] = \"EQUAL\";\n gl[gl[\"LEQUAL\"] = 515] = \"LEQUAL\";\n gl[gl[\"GREATER\"] = 516] = \"GREATER\";\n gl[gl[\"NOTEQUAL\"] = 517] = \"NOTEQUAL\";\n gl[gl[\"GEQUAL\"] = 518] = \"GEQUAL\";\n gl[gl[\"ALWAYS\"] = 519] = \"ALWAYS\";\n gl[gl[\"KEEP\"] = 7680] = \"KEEP\";\n gl[gl[\"REPLACE\"] = 7681] = \"REPLACE\";\n gl[gl[\"INCR\"] = 7682] = \"INCR\";\n gl[gl[\"DECR\"] = 7683] = \"DECR\";\n gl[gl[\"INVERT\"] = 5386] = \"INVERT\";\n gl[gl[\"INCR_WRAP\"] = 34055] = \"INCR_WRAP\";\n gl[gl[\"DECR_WRAP\"] = 34056] = \"DECR_WRAP\";\n gl[gl[\"VENDOR\"] = 7936] = \"VENDOR\";\n gl[gl[\"RENDERER\"] = 7937] = \"RENDERER\";\n gl[gl[\"VERSION\"] = 7938] = \"VERSION\";\n gl[gl[\"NEAREST\"] = 9728] = \"NEAREST\";\n gl[gl[\"LINEAR\"] = 9729] = \"LINEAR\";\n gl[gl[\"NEAREST_MIPMAP_NEAREST\"] = 9984] = \"NEAREST_MIPMAP_NEAREST\";\n gl[gl[\"LINEAR_MIPMAP_NEAREST\"] = 9985] = \"LINEAR_MIPMAP_NEAREST\";\n gl[gl[\"NEAREST_MIPMAP_LINEAR\"] = 9986] = \"NEAREST_MIPMAP_LINEAR\";\n gl[gl[\"LINEAR_MIPMAP_LINEAR\"] = 9987] = \"LINEAR_MIPMAP_LINEAR\";\n gl[gl[\"TEXTURE_MAG_FILTER\"] = 10240] = \"TEXTURE_MAG_FILTER\";\n gl[gl[\"TEXTURE_MIN_FILTER\"] = 10241] = \"TEXTURE_MIN_FILTER\";\n gl[gl[\"TEXTURE_WRAP_S\"] = 10242] = \"TEXTURE_WRAP_S\";\n gl[gl[\"TEXTURE_WRAP_T\"] = 10243] = \"TEXTURE_WRAP_T\";\n gl[gl[\"TEXTURE_2D\"] = 3553] = \"TEXTURE_2D\";\n gl[gl[\"TEXTURE\"] = 5890] = \"TEXTURE\";\n gl[gl[\"TEXTURE_CUBE_MAP\"] = 34067] = \"TEXTURE_CUBE_MAP\";\n gl[gl[\"TEXTURE_BINDING_CUBE_MAP\"] = 34068] = \"TEXTURE_BINDING_CUBE_MAP\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_X\"] = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_X\"] = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_Y\"] = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_Y\"] = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_Z\"] = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_Z\"] = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\";\n gl[gl[\"MAX_CUBE_MAP_TEXTURE_SIZE\"] = 34076] = \"MAX_CUBE_MAP_TEXTURE_SIZE\";\n gl[gl[\"TEXTURE0\"] = 33984] = \"TEXTURE0\";\n gl[gl[\"TEXTURE1\"] = 33985] = \"TEXTURE1\";\n gl[gl[\"TEXTURE2\"] = 33986] = \"TEXTURE2\";\n gl[gl[\"TEXTURE3\"] = 33987] = \"TEXTURE3\";\n gl[gl[\"TEXTURE4\"] = 33988] = \"TEXTURE4\";\n gl[gl[\"TEXTURE5\"] = 33989] = \"TEXTURE5\";\n gl[gl[\"TEXTURE6\"] = 33990] = \"TEXTURE6\";\n gl[gl[\"TEXTURE7\"] = 33991] = \"TEXTURE7\";\n gl[gl[\"TEXTURE8\"] = 33992] = \"TEXTURE8\";\n gl[gl[\"TEXTURE9\"] = 33993] = \"TEXTURE9\";\n gl[gl[\"TEXTURE10\"] = 33994] = \"TEXTURE10\";\n gl[gl[\"TEXTURE11\"] = 33995] = \"TEXTURE11\";\n gl[gl[\"TEXTURE12\"] = 33996] = \"TEXTURE12\";\n gl[gl[\"TEXTURE13\"] = 33997] = \"TEXTURE13\";\n gl[gl[\"TEXTURE14\"] = 33998] = \"TEXTURE14\";\n gl[gl[\"TEXTURE15\"] = 33999] = \"TEXTURE15\";\n gl[gl[\"TEXTURE16\"] = 34000] = \"TEXTURE16\";\n gl[gl[\"TEXTURE17\"] = 34001] = \"TEXTURE17\";\n gl[gl[\"TEXTURE18\"] = 34002] = \"TEXTURE18\";\n gl[gl[\"TEXTURE19\"] = 34003] = \"TEXTURE19\";\n gl[gl[\"TEXTURE20\"] = 34004] = \"TEXTURE20\";\n gl[gl[\"TEXTURE21\"] = 34005] = \"TEXTURE21\";\n gl[gl[\"TEXTURE22\"] = 34006] = \"TEXTURE22\";\n gl[gl[\"TEXTURE23\"] = 34007] = \"TEXTURE23\";\n gl[gl[\"TEXTURE24\"] = 34008] = \"TEXTURE24\";\n gl[gl[\"TEXTURE25\"] = 34009] = \"TEXTURE25\";\n gl[gl[\"TEXTURE26\"] = 34010] = \"TEXTURE26\";\n gl[gl[\"TEXTURE27\"] = 34011] = \"TEXTURE27\";\n gl[gl[\"TEXTURE28\"] = 34012] = \"TEXTURE28\";\n gl[gl[\"TEXTURE29\"] = 34013] = \"TEXTURE29\";\n gl[gl[\"TEXTURE30\"] = 34014] = \"TEXTURE30\";\n gl[gl[\"TEXTURE31\"] = 34015] = \"TEXTURE31\";\n gl[gl[\"ACTIVE_TEXTURE\"] = 34016] = \"ACTIVE_TEXTURE\";\n gl[gl[\"REPEAT\"] = 10497] = \"REPEAT\";\n gl[gl[\"CLAMP_TO_EDGE\"] = 33071] = \"CLAMP_TO_EDGE\";\n gl[gl[\"MIRRORED_REPEAT\"] = 33648] = \"MIRRORED_REPEAT\";\n gl[gl[\"FLOAT_VEC2\"] = 35664] = \"FLOAT_VEC2\";\n gl[gl[\"FLOAT_VEC3\"] = 35665] = \"FLOAT_VEC3\";\n gl[gl[\"FLOAT_VEC4\"] = 35666] = \"FLOAT_VEC4\";\n gl[gl[\"INT_VEC2\"] = 35667] = \"INT_VEC2\";\n gl[gl[\"INT_VEC3\"] = 35668] = \"INT_VEC3\";\n gl[gl[\"INT_VEC4\"] = 35669] = \"INT_VEC4\";\n gl[gl[\"BOOL\"] = 35670] = \"BOOL\";\n gl[gl[\"BOOL_VEC2\"] = 35671] = \"BOOL_VEC2\";\n gl[gl[\"BOOL_VEC3\"] = 35672] = \"BOOL_VEC3\";\n gl[gl[\"BOOL_VEC4\"] = 35673] = \"BOOL_VEC4\";\n gl[gl[\"FLOAT_MAT2\"] = 35674] = \"FLOAT_MAT2\";\n gl[gl[\"FLOAT_MAT3\"] = 35675] = \"FLOAT_MAT3\";\n gl[gl[\"FLOAT_MAT4\"] = 35676] = \"FLOAT_MAT4\";\n gl[gl[\"SAMPLER_2D\"] = 35678] = \"SAMPLER_2D\";\n gl[gl[\"SAMPLER_CUBE\"] = 35680] = \"SAMPLER_CUBE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_ENABLED\"] = 34338] = \"VERTEX_ATTRIB_ARRAY_ENABLED\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_SIZE\"] = 34339] = \"VERTEX_ATTRIB_ARRAY_SIZE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_STRIDE\"] = 34340] = \"VERTEX_ATTRIB_ARRAY_STRIDE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_TYPE\"] = 34341] = \"VERTEX_ATTRIB_ARRAY_TYPE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_NORMALIZED\"] = 34922] = \"VERTEX_ATTRIB_ARRAY_NORMALIZED\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_POINTER\"] = 34373] = \"VERTEX_ATTRIB_ARRAY_POINTER\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\"] = 34975] = \"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\";\n gl[gl[\"COMPILE_STATUS\"] = 35713] = \"COMPILE_STATUS\";\n gl[gl[\"LOW_FLOAT\"] = 36336] = \"LOW_FLOAT\";\n gl[gl[\"MEDIUM_FLOAT\"] = 36337] = \"MEDIUM_FLOAT\";\n gl[gl[\"HIGH_FLOAT\"] = 36338] = \"HIGH_FLOAT\";\n gl[gl[\"LOW_INT\"] = 36339] = \"LOW_INT\";\n gl[gl[\"MEDIUM_INT\"] = 36340] = \"MEDIUM_INT\";\n gl[gl[\"HIGH_INT\"] = 36341] = \"HIGH_INT\";\n gl[gl[\"FRAMEBUFFER\"] = 36160] = \"FRAMEBUFFER\";\n gl[gl[\"RENDERBUFFER\"] = 36161] = \"RENDERBUFFER\";\n gl[gl[\"RGBA4\"] = 32854] = \"RGBA4\";\n gl[gl[\"RGB5_A1\"] = 32855] = \"RGB5_A1\";\n gl[gl[\"RGB565\"] = 36194] = \"RGB565\";\n gl[gl[\"DEPTH_COMPONENT16\"] = 33189] = \"DEPTH_COMPONENT16\";\n gl[gl[\"STENCIL_INDEX\"] = 6401] = \"STENCIL_INDEX\";\n gl[gl[\"STENCIL_INDEX8\"] = 36168] = \"STENCIL_INDEX8\";\n gl[gl[\"DEPTH_STENCIL\"] = 34041] = \"DEPTH_STENCIL\";\n gl[gl[\"RENDERBUFFER_WIDTH\"] = 36162] = \"RENDERBUFFER_WIDTH\";\n gl[gl[\"RENDERBUFFER_HEIGHT\"] = 36163] = \"RENDERBUFFER_HEIGHT\";\n gl[gl[\"RENDERBUFFER_INTERNAL_FORMAT\"] = 36164] = \"RENDERBUFFER_INTERNAL_FORMAT\";\n gl[gl[\"RENDERBUFFER_RED_SIZE\"] = 36176] = \"RENDERBUFFER_RED_SIZE\";\n gl[gl[\"RENDERBUFFER_GREEN_SIZE\"] = 36177] = \"RENDERBUFFER_GREEN_SIZE\";\n gl[gl[\"RENDERBUFFER_BLUE_SIZE\"] = 36178] = \"RENDERBUFFER_BLUE_SIZE\";\n gl[gl[\"RENDERBUFFER_ALPHA_SIZE\"] = 36179] = \"RENDERBUFFER_ALPHA_SIZE\";\n gl[gl[\"RENDERBUFFER_DEPTH_SIZE\"] = 36180] = \"RENDERBUFFER_DEPTH_SIZE\";\n gl[gl[\"RENDERBUFFER_STENCIL_SIZE\"] = 36181] = \"RENDERBUFFER_STENCIL_SIZE\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\"] = 36048] = \"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\"] = 36049] = \"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\"] = 36050] = \"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\"] = 36051] = \"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\";\n gl[gl[\"COLOR_ATTACHMENT0\"] = 36064] = \"COLOR_ATTACHMENT0\";\n gl[gl[\"DEPTH_ATTACHMENT\"] = 36096] = \"DEPTH_ATTACHMENT\";\n gl[gl[\"STENCIL_ATTACHMENT\"] = 36128] = \"STENCIL_ATTACHMENT\";\n gl[gl[\"DEPTH_STENCIL_ATTACHMENT\"] = 33306] = \"DEPTH_STENCIL_ATTACHMENT\";\n gl[gl[\"NONE\"] = 0] = \"NONE\";\n gl[gl[\"FRAMEBUFFER_COMPLETE\"] = 36053] = \"FRAMEBUFFER_COMPLETE\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\"] = 36054] = \"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\"] = 36055] = \"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\"] = 36057] = \"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\";\n gl[gl[\"FRAMEBUFFER_UNSUPPORTED\"] = 36061] = \"FRAMEBUFFER_UNSUPPORTED\";\n gl[gl[\"FRAMEBUFFER_BINDING\"] = 36006] = \"FRAMEBUFFER_BINDING\";\n gl[gl[\"RENDERBUFFER_BINDING\"] = 36007] = \"RENDERBUFFER_BINDING\";\n gl[gl[\"MAX_RENDERBUFFER_SIZE\"] = 34024] = \"MAX_RENDERBUFFER_SIZE\";\n gl[gl[\"INVALID_FRAMEBUFFER_OPERATION\"] = 1286] = \"INVALID_FRAMEBUFFER_OPERATION\";\n gl[gl[\"UNPACK_FLIP_Y_WEBGL\"] = 37440] = \"UNPACK_FLIP_Y_WEBGL\";\n gl[gl[\"UNPACK_PREMULTIPLY_ALPHA_WEBGL\"] = 37441] = \"UNPACK_PREMULTIPLY_ALPHA_WEBGL\";\n gl[gl[\"CONTEXT_LOST_WEBGL\"] = 37442] = \"CONTEXT_LOST_WEBGL\";\n gl[gl[\"UNPACK_COLORSPACE_CONVERSION_WEBGL\"] = 37443] = \"UNPACK_COLORSPACE_CONVERSION_WEBGL\";\n gl[gl[\"BROWSER_DEFAULT_WEBGL\"] = 37444] = \"BROWSER_DEFAULT_WEBGL\";\n gl[gl[\"COPY_SRC\"] = 1] = \"COPY_SRC\";\n gl[gl[\"COPY_DST\"] = 2] = \"COPY_DST\";\n gl[gl[\"SAMPLED\"] = 4] = \"SAMPLED\";\n gl[gl[\"STORAGE\"] = 8] = \"STORAGE\";\n gl[gl[\"RENDER_ATTACHMENT\"] = 16] = \"RENDER_ATTACHMENT\";\n})(gl || (gl = {}));\n//# sourceMappingURL=gl.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL2dsLmpzPzkzYWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGdCQUFnQjtBQUNqQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvZ2wuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYkdMIOaemuS4vuWAvFxuICogQHNlZSBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3NwZWNzL2xhdGVzdC8xLjAvIzUuMTRcbiAqIOS9v+eUqCBiYWJlbCDmj5Lku7blr7nluLjph4/ov5vooYzlhoXogZTvvIzku6Xlh4/lsJHmnIDnu4jmiZPljIXkuqfnianlpKflsI9cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3ViZXIvZGVjay5nbC9ibG9iLzcuMS1yZWxlYXNlL2Rldi1kb2NzL3JvYWRtYXBzL2Rpc3Qtc2l6ZS1yb2FkbWFwLm1kI2lubGluZS1nbC1jb25zdGFudHNcbiAqIOS4uuS6huaUr+aMgSBXZWJHUFXvvIzmlrDlop4gVGV4dHVyZVVzYWdlXG4gKiBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2dwdXRleHR1cmV1c2FnZVxuICovXG5leHBvcnQgdmFyIGdsO1xuXG4oZnVuY3Rpb24gKGdsKSB7XG4gIGdsW2dsW1wiREVQVEhfQlVGRkVSX0JJVFwiXSA9IDI1Nl0gPSBcIkRFUFRIX0JVRkZFUl9CSVRcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JVRkZFUl9CSVRcIl0gPSAxMDI0XSA9IFwiU1RFTkNJTF9CVUZGRVJfQklUXCI7XG4gIGdsW2dsW1wiQ09MT1JfQlVGRkVSX0JJVFwiXSA9IDE2Mzg0XSA9IFwiQ09MT1JfQlVGRkVSX0JJVFwiO1xuICBnbFtnbFtcIlBPSU5UU1wiXSA9IDBdID0gXCJQT0lOVFNcIjtcbiAgZ2xbZ2xbXCJMSU5FU1wiXSA9IDFdID0gXCJMSU5FU1wiO1xuICBnbFtnbFtcIkxJTkVfTE9PUFwiXSA9IDJdID0gXCJMSU5FX0xPT1BcIjtcbiAgZ2xbZ2xbXCJMSU5FX1NUUklQXCJdID0gM10gPSBcIkxJTkVfU1RSSVBcIjtcbiAgZ2xbZ2xbXCJUUklBTkdMRVNcIl0gPSA0XSA9IFwiVFJJQU5HTEVTXCI7XG4gIGdsW2dsW1wiVFJJQU5HTEVfU1RSSVBcIl0gPSA1XSA9IFwiVFJJQU5HTEVfU1RSSVBcIjtcbiAgZ2xbZ2xbXCJUUklBTkdMRV9GQU5cIl0gPSA2XSA9IFwiVFJJQU5HTEVfRkFOXCI7XG4gIGdsW2dsW1wiWkVST1wiXSA9IDBdID0gXCJaRVJPXCI7XG4gIGdsW2dsW1wiT05FXCJdID0gMV0gPSBcIk9ORVwiO1xuICBnbFtnbFtcIlNSQ19DT0xPUlwiXSA9IDc2OF0gPSBcIlNSQ19DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19TUkNfQ09MT1JcIl0gPSA3NjldID0gXCJPTkVfTUlOVVNfU1JDX0NPTE9SXCI7XG4gIGdsW2dsW1wiU1JDX0FMUEhBXCJdID0gNzcwXSA9IFwiU1JDX0FMUEhBXCI7XG4gIGdsW2dsW1wiT05FX01JTlVTX1NSQ19BTFBIQVwiXSA9IDc3MV0gPSBcIk9ORV9NSU5VU19TUkNfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJEU1RfQUxQSEFcIl0gPSA3NzJdID0gXCJEU1RfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJPTkVfTUlOVVNfRFNUX0FMUEhBXCJdID0gNzczXSA9IFwiT05FX01JTlVTX0RTVF9BTFBIQVwiO1xuICBnbFtnbFtcIkRTVF9DT0xPUlwiXSA9IDc3NF0gPSBcIkRTVF9DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19EU1RfQ09MT1JcIl0gPSA3NzVdID0gXCJPTkVfTUlOVVNfRFNUX0NPTE9SXCI7XG4gIGdsW2dsW1wiU1JDX0FMUEhBX1NBVFVSQVRFXCJdID0gNzc2XSA9IFwiU1JDX0FMUEhBX1NBVFVSQVRFXCI7XG4gIGdsW2dsW1wiRlVOQ19BRERcIl0gPSAzMjc3NF0gPSBcIkZVTkNfQUREXCI7XG4gIGdsW2dsW1wiQkxFTkRfRVFVQVRJT05cIl0gPSAzMjc3N10gPSBcIkJMRU5EX0VRVUFUSU9OXCI7XG4gIGdsW2dsW1wiQkxFTkRfRVFVQVRJT05fUkdCXCJdID0gMzI3NzddID0gXCJCTEVORF9FUVVBVElPTl9SR0JcIjtcbiAgZ2xbZ2xbXCJCTEVORF9FUVVBVElPTl9BTFBIQVwiXSA9IDM0ODc3XSA9IFwiQkxFTkRfRVFVQVRJT05fQUxQSEFcIjtcbiAgZ2xbZ2xbXCJGVU5DX1NVQlRSQUNUXCJdID0gMzI3NzhdID0gXCJGVU5DX1NVQlRSQUNUXCI7XG4gIGdsW2dsW1wiRlVOQ19SRVZFUlNFX1NVQlRSQUNUXCJdID0gMzI3NzldID0gXCJGVU5DX1JFVkVSU0VfU1VCVFJBQ1RcIjtcbiAgZ2xbZ2xbXCJNQVhfRVhUXCJdID0gMzI3NzZdID0gXCJNQVhfRVhUXCI7XG4gIGdsW2dsW1wiTUlOX0VYVFwiXSA9IDMyNzc1XSA9IFwiTUlOX0VYVFwiO1xuICBnbFtnbFtcIkJMRU5EX0RTVF9SR0JcIl0gPSAzMjk2OF0gPSBcIkJMRU5EX0RTVF9SR0JcIjtcbiAgZ2xbZ2xbXCJCTEVORF9TUkNfUkdCXCJdID0gMzI5NjldID0gXCJCTEVORF9TUkNfUkdCXCI7XG4gIGdsW2dsW1wiQkxFTkRfRFNUX0FMUEhBXCJdID0gMzI5NzBdID0gXCJCTEVORF9EU1RfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJCTEVORF9TUkNfQUxQSEFcIl0gPSAzMjk3MV0gPSBcIkJMRU5EX1NSQ19BTFBIQVwiO1xuICBnbFtnbFtcIkNPTlNUQU5UX0NPTE9SXCJdID0gMzI3NjldID0gXCJDT05TVEFOVF9DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUlwiXSA9IDMyNzcwXSA9IFwiT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXCI7XG4gIGdsW2dsW1wiQ09OU1RBTlRfQUxQSEFcIl0gPSAzMjc3MV0gPSBcIkNPTlNUQU5UX0FMUEhBXCI7XG4gIGdsW2dsW1wiT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBXCJdID0gMzI3NzJdID0gXCJPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJCTEVORF9DT0xPUlwiXSA9IDMyNzczXSA9IFwiQkxFTkRfQ09MT1JcIjtcbiAgZ2xbZ2xbXCJBUlJBWV9CVUZGRVJcIl0gPSAzNDk2Ml0gPSBcIkFSUkFZX0JVRkZFUlwiO1xuICBnbFtnbFtcIkVMRU1FTlRfQVJSQVlfQlVGRkVSXCJdID0gMzQ5NjNdID0gXCJFTEVNRU5UX0FSUkFZX0JVRkZFUlwiO1xuICBnbFtnbFtcIkFSUkFZX0JVRkZFUl9CSU5ESU5HXCJdID0gMzQ5NjRdID0gXCJBUlJBWV9CVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIl0gPSAzNDk2NV0gPSBcIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIjtcbiAgZ2xbZ2xbXCJTVFJFQU1fRFJBV1wiXSA9IDM1MDQwXSA9IFwiU1RSRUFNX0RSQVdcIjtcbiAgZ2xbZ2xbXCJTVEFUSUNfRFJBV1wiXSA9IDM1MDQ0XSA9IFwiU1RBVElDX0RSQVdcIjtcbiAgZ2xbZ2xbXCJEWU5BTUlDX0RSQVdcIl0gPSAzNTA0OF0gPSBcIkRZTkFNSUNfRFJBV1wiO1xuICBnbFtnbFtcIkJVRkZFUl9TSVpFXCJdID0gMzQ2NjBdID0gXCJCVUZGRVJfU0laRVwiO1xuICBnbFtnbFtcIkJVRkZFUl9VU0FHRVwiXSA9IDM0NjYxXSA9IFwiQlVGRkVSX1VTQUdFXCI7XG4gIGdsW2dsW1wiQ1VSUkVOVF9WRVJURVhfQVRUUklCXCJdID0gMzQzNDJdID0gXCJDVVJSRU5UX1ZFUlRFWF9BVFRSSUJcIjtcbiAgZ2xbZ2xbXCJGUk9OVFwiXSA9IDEwMjhdID0gXCJGUk9OVFwiO1xuICBnbFtnbFtcIkJBQ0tcIl0gPSAxMDI5XSA9IFwiQkFDS1wiO1xuICBnbFtnbFtcIkZST05UX0FORF9CQUNLXCJdID0gMTAzMl0gPSBcIkZST05UX0FORF9CQUNLXCI7XG4gIGdsW2dsW1wiQ1VMTF9GQUNFXCJdID0gMjg4NF0gPSBcIkNVTExfRkFDRVwiO1xuICBnbFtnbFtcIkJMRU5EXCJdID0gMzA0Ml0gPSBcIkJMRU5EXCI7XG4gIGdsW2dsW1wiRElUSEVSXCJdID0gMzAyNF0gPSBcIkRJVEhFUlwiO1xuICBnbFtnbFtcIlNURU5DSUxfVEVTVFwiXSA9IDI5NjBdID0gXCJTVEVOQ0lMX1RFU1RcIjtcbiAgZ2xbZ2xbXCJERVBUSF9URVNUXCJdID0gMjkyOV0gPSBcIkRFUFRIX1RFU1RcIjtcbiAgZ2xbZ2xbXCJTQ0lTU09SX1RFU1RcIl0gPSAzMDg5XSA9IFwiU0NJU1NPUl9URVNUXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfRklMTFwiXSA9IDMyODIzXSA9IFwiUE9MWUdPTl9PRkZTRVRfRklMTFwiO1xuICBnbFtnbFtcIlNBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRVwiXSA9IDMyOTI2XSA9IFwiU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXCI7XG4gIGdsW2dsW1wiU0FNUExFX0NPVkVSQUdFXCJdID0gMzI5MjhdID0gXCJTQU1QTEVfQ09WRVJBR0VcIjtcbiAgZ2xbZ2xbXCJOT19FUlJPUlwiXSA9IDBdID0gXCJOT19FUlJPUlwiO1xuICBnbFtnbFtcIklOVkFMSURfRU5VTVwiXSA9IDEyODBdID0gXCJJTlZBTElEX0VOVU1cIjtcbiAgZ2xbZ2xbXCJJTlZBTElEX1ZBTFVFXCJdID0gMTI4MV0gPSBcIklOVkFMSURfVkFMVUVcIjtcbiAgZ2xbZ2xbXCJJTlZBTElEX09QRVJBVElPTlwiXSA9IDEyODJdID0gXCJJTlZBTElEX09QRVJBVElPTlwiO1xuICBnbFtnbFtcIk9VVF9PRl9NRU1PUllcIl0gPSAxMjg1XSA9IFwiT1VUX09GX01FTU9SWVwiO1xuICBnbFtnbFtcIkNXXCJdID0gMjMwNF0gPSBcIkNXXCI7XG4gIGdsW2dsW1wiQ0NXXCJdID0gMjMwNV0gPSBcIkNDV1wiO1xuICBnbFtnbFtcIkxJTkVfV0lEVEhcIl0gPSAyODQ5XSA9IFwiTElORV9XSURUSFwiO1xuICBnbFtnbFtcIkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRVwiXSA9IDMzOTAxXSA9IFwiQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFXCI7XG4gIGdsW2dsW1wiQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXCJdID0gMzM5MDJdID0gXCJBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VcIjtcbiAgZ2xbZ2xbXCJDVUxMX0ZBQ0VfTU9ERVwiXSA9IDI4ODVdID0gXCJDVUxMX0ZBQ0VfTU9ERVwiO1xuICBnbFtnbFtcIkZST05UX0ZBQ0VcIl0gPSAyODg2XSA9IFwiRlJPTlRfRkFDRVwiO1xuICBnbFtnbFtcIkRFUFRIX1JBTkdFXCJdID0gMjkyOF0gPSBcIkRFUFRIX1JBTkdFXCI7XG4gIGdsW2dsW1wiREVQVEhfV1JJVEVNQVNLXCJdID0gMjkzMF0gPSBcIkRFUFRIX1dSSVRFTUFTS1wiO1xuICBnbFtnbFtcIkRFUFRIX0NMRUFSX1ZBTFVFXCJdID0gMjkzMV0gPSBcIkRFUFRIX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiREVQVEhfRlVOQ1wiXSA9IDI5MzJdID0gXCJERVBUSF9GVU5DXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9DTEVBUl9WQUxVRVwiXSA9IDI5NjFdID0gXCJTVEVOQ0lMX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9GVU5DXCJdID0gMjk2Ml0gPSBcIlNURU5DSUxfRlVOQ1wiO1xuICBnbFtnbFtcIlNURU5DSUxfRkFJTFwiXSA9IDI5NjRdID0gXCJTVEVOQ0lMX0ZBSUxcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTFwiXSA9IDI5NjVdID0gXCJTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTFwiO1xuICBnbFtnbFtcIlNURU5DSUxfUEFTU19ERVBUSF9QQVNTXCJdID0gMjk2Nl0gPSBcIlNURU5DSUxfUEFTU19ERVBUSF9QQVNTXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9SRUZcIl0gPSAyOTY3XSA9IFwiU1RFTkNJTF9SRUZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX1ZBTFVFX01BU0tcIl0gPSAyOTYzXSA9IFwiU1RFTkNJTF9WQUxVRV9NQVNLXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9XUklURU1BU0tcIl0gPSAyOTY4XSA9IFwiU1RFTkNJTF9XUklURU1BU0tcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfRlVOQ1wiXSA9IDM0ODE2XSA9IFwiU1RFTkNJTF9CQUNLX0ZVTkNcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfRkFJTFwiXSA9IDM0ODE3XSA9IFwiU1RFTkNJTF9CQUNLX0ZBSUxcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXCJdID0gMzQ4MThdID0gXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU1wiXSA9IDM0ODE5XSA9IFwiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU1wiO1xuICBnbFtnbFtcIlNURU5DSUxfQkFDS19SRUZcIl0gPSAzNjAwM10gPSBcIlNURU5DSUxfQkFDS19SRUZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTS1wiXSA9IDM2MDA0XSA9IFwiU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXCJdID0gMzYwMDVdID0gXCJTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXCI7XG4gIGdsW2dsW1wiVklFV1BPUlRcIl0gPSAyOTc4XSA9IFwiVklFV1BPUlRcIjtcbiAgZ2xbZ2xbXCJTQ0lTU09SX0JPWFwiXSA9IDMwODhdID0gXCJTQ0lTU09SX0JPWFwiO1xuICBnbFtnbFtcIkNPTE9SX0NMRUFSX1ZBTFVFXCJdID0gMzEwNl0gPSBcIkNPTE9SX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiQ09MT1JfV1JJVEVNQVNLXCJdID0gMzEwN10gPSBcIkNPTE9SX1dSSVRFTUFTS1wiO1xuICBnbFtnbFtcIlVOUEFDS19BTElHTk1FTlRcIl0gPSAzMzE3XSA9IFwiVU5QQUNLX0FMSUdOTUVOVFwiO1xuICBnbFtnbFtcIlBBQ0tfQUxJR05NRU5UXCJdID0gMzMzM10gPSBcIlBBQ0tfQUxJR05NRU5UXCI7XG4gIGdsW2dsW1wiTUFYX1RFWFRVUkVfU0laRVwiXSA9IDMzNzldID0gXCJNQVhfVEVYVFVSRV9TSVpFXCI7XG4gIGdsW2dsW1wiTUFYX1ZJRVdQT1JUX0RJTVNcIl0gPSAzMzg2XSA9IFwiTUFYX1ZJRVdQT1JUX0RJTVNcIjtcbiAgZ2xbZ2xbXCJTVUJQSVhFTF9CSVRTXCJdID0gMzQwOF0gPSBcIlNVQlBJWEVMX0JJVFNcIjtcbiAgZ2xbZ2xbXCJSRURfQklUU1wiXSA9IDM0MTBdID0gXCJSRURfQklUU1wiO1xuICBnbFtnbFtcIkdSRUVOX0JJVFNcIl0gPSAzNDExXSA9IFwiR1JFRU5fQklUU1wiO1xuICBnbFtnbFtcIkJMVUVfQklUU1wiXSA9IDM0MTJdID0gXCJCTFVFX0JJVFNcIjtcbiAgZ2xbZ2xbXCJBTFBIQV9CSVRTXCJdID0gMzQxM10gPSBcIkFMUEhBX0JJVFNcIjtcbiAgZ2xbZ2xbXCJERVBUSF9CSVRTXCJdID0gMzQxNF0gPSBcIkRFUFRIX0JJVFNcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JJVFNcIl0gPSAzNDE1XSA9IFwiU1RFTkNJTF9CSVRTXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfVU5JVFNcIl0gPSAxMDc1Ml0gPSBcIlBPTFlHT05fT0ZGU0VUX1VOSVRTXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfRkFDVE9SXCJdID0gMzI4MjRdID0gXCJQT0xZR09OX09GRlNFVF9GQUNUT1JcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0JJTkRJTkdfMkRcIl0gPSAzMjg3M10gPSBcIlRFWFRVUkVfQklORElOR18yRFwiO1xuICBnbFtnbFtcIlNBTVBMRV9CVUZGRVJTXCJdID0gMzI5MzZdID0gXCJTQU1QTEVfQlVGRkVSU1wiO1xuICBnbFtnbFtcIlNBTVBMRVNcIl0gPSAzMjkzN10gPSBcIlNBTVBMRVNcIjtcbiAgZ2xbZ2xbXCJTQU1QTEVfQ09WRVJBR0VfVkFMVUVcIl0gPSAzMjkzOF0gPSBcIlNBTVBMRV9DT1ZFUkFHRV9WQUxVRVwiO1xuICBnbFtnbFtcIlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRcIl0gPSAzMjkzOV0gPSBcIlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRcIjtcbiAgZ2xbZ2xbXCJDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU1wiXSA9IDM0NDY3XSA9IFwiQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNcIjtcbiAgZ2xbZ2xbXCJET05UX0NBUkVcIl0gPSA0MzUyXSA9IFwiRE9OVF9DQVJFXCI7XG4gIGdsW2dsW1wiRkFTVEVTVFwiXSA9IDQzNTNdID0gXCJGQVNURVNUXCI7XG4gIGdsW2dsW1wiTklDRVNUXCJdID0gNDM1NF0gPSBcIk5JQ0VTVFwiO1xuICBnbFtnbFtcIkdFTkVSQVRFX01JUE1BUF9ISU5UXCJdID0gMzMxNzBdID0gXCJHRU5FUkFURV9NSVBNQVBfSElOVFwiO1xuICBnbFtnbFtcIkJZVEVcIl0gPSA1MTIwXSA9IFwiQllURVwiO1xuICBnbFtnbFtcIlVOU0lHTkVEX0JZVEVcIl0gPSA1MTIxXSA9IFwiVU5TSUdORURfQllURVwiO1xuICBnbFtnbFtcIlNIT1JUXCJdID0gNTEyMl0gPSBcIlNIT1JUXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfU0hPUlRcIl0gPSA1MTIzXSA9IFwiVU5TSUdORURfU0hPUlRcIjtcbiAgZ2xbZ2xbXCJJTlRcIl0gPSA1MTI0XSA9IFwiSU5UXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfSU5UXCJdID0gNTEyNV0gPSBcIlVOU0lHTkVEX0lOVFwiO1xuICBnbFtnbFtcIkZMT0FUXCJdID0gNTEyNl0gPSBcIkZMT0FUXCI7XG4gIGdsW2dsW1wiREVQVEhfQ09NUE9ORU5UXCJdID0gNjQwMl0gPSBcIkRFUFRIX0NPTVBPTkVOVFwiO1xuICBnbFtnbFtcIkFMUEhBXCJdID0gNjQwNl0gPSBcIkFMUEhBXCI7XG4gIGdsW2dsW1wiUkdCXCJdID0gNjQwN10gPSBcIlJHQlwiO1xuICBnbFtnbFtcIlJHQkFcIl0gPSA2NDA4XSA9IFwiUkdCQVwiO1xuICBnbFtnbFtcIkxVTUlOQU5DRVwiXSA9IDY0MDldID0gXCJMVU1JTkFOQ0VcIjtcbiAgZ2xbZ2xbXCJMVU1JTkFOQ0VfQUxQSEFcIl0gPSA2NDEwXSA9IFwiTFVNSU5BTkNFX0FMUEhBXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfU0hPUlRfNF80XzRfNFwiXSA9IDMyODE5XSA9IFwiVU5TSUdORURfU0hPUlRfNF80XzRfNFwiO1xuICBnbFtnbFtcIlVOU0lHTkVEX1NIT1JUXzVfNV81XzFcIl0gPSAzMjgyMF0gPSBcIlVOU0lHTkVEX1NIT1JUXzVfNV81XzFcIjtcbiAgZ2xbZ2xbXCJVTlNJR05FRF9TSE9SVF81XzZfNVwiXSA9IDMzNjM1XSA9IFwiVU5TSUdORURfU0hPUlRfNV82XzVcIjtcbiAgZ2xbZ2xbXCJGUkFHTUVOVF9TSEFERVJcIl0gPSAzNTYzMl0gPSBcIkZSQUdNRU5UX1NIQURFUlwiO1xuICBnbFtnbFtcIlZFUlRFWF9TSEFERVJcIl0gPSAzNTYzM10gPSBcIlZFUlRFWF9TSEFERVJcIjtcbiAgZ2xbZ2xbXCJNQVhfVkVSVEVYX0FUVFJJQlNcIl0gPSAzNDkyMV0gPSBcIk1BWF9WRVJURVhfQVRUUklCU1wiO1xuICBnbFtnbFtcIk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXCJdID0gMzYzNDddID0gXCJNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU1wiO1xuICBnbFtnbFtcIk1BWF9WQVJZSU5HX1ZFQ1RPUlNcIl0gPSAzNjM0OF0gPSBcIk1BWF9WQVJZSU5HX1ZFQ1RPUlNcIjtcbiAgZ2xbZ2xbXCJNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU1wiXSA9IDM1NjYxXSA9IFwiTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNcIjtcbiAgZ2xbZ2xbXCJNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNcIl0gPSAzNTY2MF0gPSBcIk1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiO1xuICBnbFtnbFtcIk1BWF9URVhUVVJFX0lNQUdFX1VOSVRTXCJdID0gMzQ5MzBdID0gXCJNQVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiO1xuICBnbFtnbFtcIk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNcIl0gPSAzNjM0OV0gPSBcIk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNcIjtcbiAgZ2xbZ2xbXCJTSEFERVJfVFlQRVwiXSA9IDM1NjYzXSA9IFwiU0hBREVSX1RZUEVcIjtcbiAgZ2xbZ2xbXCJERUxFVEVfU1RBVFVTXCJdID0gMzU3MTJdID0gXCJERUxFVEVfU1RBVFVTXCI7XG4gIGdsW2dsW1wiTElOS19TVEFUVVNcIl0gPSAzNTcxNF0gPSBcIkxJTktfU1RBVFVTXCI7XG4gIGdsW2dsW1wiVkFMSURBVEVfU1RBVFVTXCJdID0gMzU3MTVdID0gXCJWQUxJREFURV9TVEFUVVNcIjtcbiAgZ2xbZ2xbXCJBVFRBQ0hFRF9TSEFERVJTXCJdID0gMzU3MTddID0gXCJBVFRBQ0hFRF9TSEFERVJTXCI7XG4gIGdsW2dsW1wiQUNUSVZFX1VOSUZPUk1TXCJdID0gMzU3MThdID0gXCJBQ1RJVkVfVU5JRk9STVNcIjtcbiAgZ2xbZ2xbXCJBQ1RJVkVfQVRUUklCVVRFU1wiXSA9IDM1NzIxXSA9IFwiQUNUSVZFX0FUVFJJQlVURVNcIjtcbiAgZ2xbZ2xbXCJTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05cIl0gPSAzNTcyNF0gPSBcIlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTlwiO1xuICBnbFtnbFtcIkNVUlJFTlRfUFJPR1JBTVwiXSA9IDM1NzI1XSA9IFwiQ1VSUkVOVF9QUk9HUkFNXCI7XG4gIGdsW2dsW1wiTkVWRVJcIl0gPSA1MTJdID0gXCJORVZFUlwiO1xuICBnbFtnbFtcIkxFU1NcIl0gPSA1MTNdID0gXCJMRVNTXCI7XG4gIGdsW2dsW1wiRVFVQUxcIl0gPSA1MTRdID0gXCJFUVVBTFwiO1xuICBnbFtnbFtcIkxFUVVBTFwiXSA9IDUxNV0gPSBcIkxFUVVBTFwiO1xuICBnbFtnbFtcIkdSRUFURVJcIl0gPSA1MTZdID0gXCJHUkVBVEVSXCI7XG4gIGdsW2dsW1wiTk9URVFVQUxcIl0gPSA1MTddID0gXCJOT1RFUVVBTFwiO1xuICBnbFtnbFtcIkdFUVVBTFwiXSA9IDUxOF0gPSBcIkdFUVVBTFwiO1xuICBnbFtnbFtcIkFMV0FZU1wiXSA9IDUxOV0gPSBcIkFMV0FZU1wiO1xuICBnbFtnbFtcIktFRVBcIl0gPSA3NjgwXSA9IFwiS0VFUFwiO1xuICBnbFtnbFtcIlJFUExBQ0VcIl0gPSA3NjgxXSA9IFwiUkVQTEFDRVwiO1xuICBnbFtnbFtcIklOQ1JcIl0gPSA3NjgyXSA9IFwiSU5DUlwiO1xuICBnbFtnbFtcIkRFQ1JcIl0gPSA3NjgzXSA9IFwiREVDUlwiO1xuICBnbFtnbFtcIklOVkVSVFwiXSA9IDUzODZdID0gXCJJTlZFUlRcIjtcbiAgZ2xbZ2xbXCJJTkNSX1dSQVBcIl0gPSAzNDA1NV0gPSBcIklOQ1JfV1JBUFwiO1xuICBnbFtnbFtcIkRFQ1JfV1JBUFwiXSA9IDM0MDU2XSA9IFwiREVDUl9XUkFQXCI7XG4gIGdsW2dsW1wiVkVORE9SXCJdID0gNzkzNl0gPSBcIlZFTkRPUlwiO1xuICBnbFtnbFtcIlJFTkRFUkVSXCJdID0gNzkzN10gPSBcIlJFTkRFUkVSXCI7XG4gIGdsW2dsW1wiVkVSU0lPTlwiXSA9IDc5MzhdID0gXCJWRVJTSU9OXCI7XG4gIGdsW2dsW1wiTkVBUkVTVFwiXSA9IDk3MjhdID0gXCJORUFSRVNUXCI7XG4gIGdsW2dsW1wiTElORUFSXCJdID0gOTcyOV0gPSBcIkxJTkVBUlwiO1xuICBnbFtnbFtcIk5FQVJFU1RfTUlQTUFQX05FQVJFU1RcIl0gPSA5OTg0XSA9IFwiTkVBUkVTVF9NSVBNQVBfTkVBUkVTVFwiO1xuICBnbFtnbFtcIkxJTkVBUl9NSVBNQVBfTkVBUkVTVFwiXSA9IDk5ODVdID0gXCJMSU5FQVJfTUlQTUFQX05FQVJFU1RcIjtcbiAgZ2xbZ2xbXCJORUFSRVNUX01JUE1BUF9MSU5FQVJcIl0gPSA5OTg2XSA9IFwiTkVBUkVTVF9NSVBNQVBfTElORUFSXCI7XG4gIGdsW2dsW1wiTElORUFSX01JUE1BUF9MSU5FQVJcIl0gPSA5OTg3XSA9IFwiTElORUFSX01JUE1BUF9MSU5FQVJcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX01BR19GSUxURVJcIl0gPSAxMDI0MF0gPSBcIlRFWFRVUkVfTUFHX0ZJTFRFUlwiO1xuICBnbFtnbFtcIlRFWFRVUkVfTUlOX0ZJTFRFUlwiXSA9IDEwMjQxXSA9IFwiVEVYVFVSRV9NSU5fRklMVEVSXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9XUkFQX1NcIl0gPSAxMDI0Ml0gPSBcIlRFWFRVUkVfV1JBUF9TXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9XUkFQX1RcIl0gPSAxMDI0M10gPSBcIlRFWFRVUkVfV1JBUF9UXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV8yRFwiXSA9IDM1NTNdID0gXCJURVhUVVJFXzJEXCI7XG4gIGdsW2dsW1wiVEVYVFVSRVwiXSA9IDU4OTBdID0gXCJURVhUVVJFXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUFwiXSA9IDM0MDY3XSA9IFwiVEVYVFVSRV9DVUJFX01BUFwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQklORElOR19DVUJFX01BUFwiXSA9IDM0MDY4XSA9IFwiVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXCJdID0gMzQwNjldID0gXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hcIl0gPSAzNDA3MF0gPSBcIlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWFwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWVwiXSA9IDM0MDcxXSA9IFwiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXCJdID0gMzQwNzJdID0gXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pcIl0gPSAzNDA3M10gPSBcIlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWlwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWlwiXSA9IDM0MDc0XSA9IFwiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXCI7XG4gIGdsW2dsW1wiTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRVwiXSA9IDM0MDc2XSA9IFwiTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRVwiO1xuICBnbFtnbFtcIlRFWFRVUkUwXCJdID0gMzM5ODRdID0gXCJURVhUVVJFMFwiO1xuICBnbFtnbFtcIlRFWFRVUkUxXCJdID0gMzM5ODVdID0gXCJURVhUVVJFMVwiO1xuICBnbFtnbFtcIlRFWFRVUkUyXCJdID0gMzM5ODZdID0gXCJURVhUVVJFMlwiO1xuICBnbFtnbFtcIlRFWFRVUkUzXCJdID0gMzM5ODddID0gXCJURVhUVVJFM1wiO1xuICBnbFtnbFtcIlRFWFRVUkU0XCJdID0gMzM5ODhdID0gXCJURVhUVVJFNFwiO1xuICBnbFtnbFtcIlRFWFRVUkU1XCJdID0gMzM5ODldID0gXCJURVhUVVJFNVwiO1xuICBnbFtnbFtcIlRFWFRVUkU2XCJdID0gMzM5OTBdID0gXCJURVhUVVJFNlwiO1xuICBnbFtnbFtcIlRFWFRVUkU3XCJdID0gMzM5OTFdID0gXCJURVhUVVJFN1wiO1xuICBnbFtnbFtcIlRFWFRVUkU4XCJdID0gMzM5OTJdID0gXCJURVhUVVJFOFwiO1xuICBnbFtnbFtcIlRFWFRVUkU5XCJdID0gMzM5OTNdID0gXCJURVhUVVJFOVwiO1xuICBnbFtnbFtcIlRFWFRVUkUxMFwiXSA9IDMzOTk0XSA9IFwiVEVYVFVSRTEwXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTExXCJdID0gMzM5OTVdID0gXCJURVhUVVJFMTFcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMTJcIl0gPSAzMzk5Nl0gPSBcIlRFWFRVUkUxMlwiO1xuICBnbFtnbFtcIlRFWFRVUkUxM1wiXSA9IDMzOTk3XSA9IFwiVEVYVFVSRTEzXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTE0XCJdID0gMzM5OThdID0gXCJURVhUVVJFMTRcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMTVcIl0gPSAzMzk5OV0gPSBcIlRFWFRVUkUxNVwiO1xuICBnbFtnbFtcIlRFWFRVUkUxNlwiXSA9IDM0MDAwXSA9IFwiVEVYVFVSRTE2XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTE3XCJdID0gMzQwMDFdID0gXCJURVhUVVJFMTdcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMThcIl0gPSAzNDAwMl0gPSBcIlRFWFRVUkUxOFwiO1xuICBnbFtnbFtcIlRFWFRVUkUxOVwiXSA9IDM0MDAzXSA9IFwiVEVYVFVSRTE5XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTIwXCJdID0gMzQwMDRdID0gXCJURVhUVVJFMjBcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjFcIl0gPSAzNDAwNV0gPSBcIlRFWFRVUkUyMVwiO1xuICBnbFtnbFtcIlRFWFRVUkUyMlwiXSA9IDM0MDA2XSA9IFwiVEVYVFVSRTIyXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTIzXCJdID0gMzQwMDddID0gXCJURVhUVVJFMjNcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjRcIl0gPSAzNDAwOF0gPSBcIlRFWFRVUkUyNFwiO1xuICBnbFtnbFtcIlRFWFRVUkUyNVwiXSA9IDM0MDA5XSA9IFwiVEVYVFVSRTI1XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTI2XCJdID0gMzQwMTBdID0gXCJURVhUVVJFMjZcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjdcIl0gPSAzNDAxMV0gPSBcIlRFWFRVUkUyN1wiO1xuICBnbFtnbFtcIlRFWFRVUkUyOFwiXSA9IDM0MDEyXSA9IFwiVEVYVFVSRTI4XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTI5XCJdID0gMzQwMTNdID0gXCJURVhUVVJFMjlcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMzBcIl0gPSAzNDAxNF0gPSBcIlRFWFRVUkUzMFwiO1xuICBnbFtnbFtcIlRFWFRVUkUzMVwiXSA9IDM0MDE1XSA9IFwiVEVYVFVSRTMxXCI7XG4gIGdsW2dsW1wiQUNUSVZFX1RFWFRVUkVcIl0gPSAzNDAxNl0gPSBcIkFDVElWRV9URVhUVVJFXCI7XG4gIGdsW2dsW1wiUkVQRUFUXCJdID0gMTA0OTddID0gXCJSRVBFQVRcIjtcbiAgZ2xbZ2xbXCJDTEFNUF9UT19FREdFXCJdID0gMzMwNzFdID0gXCJDTEFNUF9UT19FREdFXCI7XG4gIGdsW2dsW1wiTUlSUk9SRURfUkVQRUFUXCJdID0gMzM2NDhdID0gXCJNSVJST1JFRF9SRVBFQVRcIjtcbiAgZ2xbZ2xbXCJGTE9BVF9WRUMyXCJdID0gMzU2NjRdID0gXCJGTE9BVF9WRUMyXCI7XG4gIGdsW2dsW1wiRkxPQVRfVkVDM1wiXSA9IDM1NjY1XSA9IFwiRkxPQVRfVkVDM1wiO1xuICBnbFtnbFtcIkZMT0FUX1ZFQzRcIl0gPSAzNTY2Nl0gPSBcIkZMT0FUX1ZFQzRcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDMlwiXSA9IDM1NjY3XSA9IFwiSU5UX1ZFQzJcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDM1wiXSA9IDM1NjY4XSA9IFwiSU5UX1ZFQzNcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDNFwiXSA9IDM1NjY5XSA9IFwiSU5UX1ZFQzRcIjtcbiAgZ2xbZ2xbXCJCT09MXCJdID0gMzU2NzBdID0gXCJCT09MXCI7XG4gIGdsW2dsW1wiQk9PTF9WRUMyXCJdID0gMzU2NzFdID0gXCJCT09MX1ZFQzJcIjtcbiAgZ2xbZ2xbXCJCT09MX1ZFQzNcIl0gPSAzNTY3Ml0gPSBcIkJPT0xfVkVDM1wiO1xuICBnbFtnbFtcIkJPT0xfVkVDNFwiXSA9IDM1NjczXSA9IFwiQk9PTF9WRUM0XCI7XG4gIGdsW2dsW1wiRkxPQVRfTUFUMlwiXSA9IDM1Njc0XSA9IFwiRkxPQVRfTUFUMlwiO1xuICBnbFtnbFtcIkZMT0FUX01BVDNcIl0gPSAzNTY3NV0gPSBcIkZMT0FUX01BVDNcIjtcbiAgZ2xbZ2xbXCJGTE9BVF9NQVQ0XCJdID0gMzU2NzZdID0gXCJGTE9BVF9NQVQ0XCI7XG4gIGdsW2dsW1wiU0FNUExFUl8yRFwiXSA9IDM1Njc4XSA9IFwiU0FNUExFUl8yRFwiO1xuICBnbFtnbFtcIlNBTVBMRVJfQ1VCRVwiXSA9IDM1NjgwXSA9IFwiU0FNUExFUl9DVUJFXCI7XG4gIGdsW2dsW1wiVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEXCJdID0gMzQzMzhdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURcIjtcbiAgZ2xbZ2xbXCJWRVJURVhfQVRUUklCX0FSUkFZX1NJWkVcIl0gPSAzNDMzOV0gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRVwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXCJdID0gMzQzNDBdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX1NUUklERVwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRVwiXSA9IDM0MzQxXSA9IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXCI7XG4gIGdsW2dsW1wiVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXCJdID0gMzQ5MjJdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURcIjtcbiAgZ2xbZ2xbXCJWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJcIl0gPSAzNDM3M10gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUlwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIl0gPSAzNDk3NV0gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIjtcbiAgZ2xbZ2xbXCJDT01QSUxFX1NUQVRVU1wiXSA9IDM1NzEzXSA9IFwiQ09NUElMRV9TVEFUVVNcIjtcbiAgZ2xbZ2xbXCJMT1dfRkxPQVRcIl0gPSAzNjMzNl0gPSBcIkxPV19GTE9BVFwiO1xuICBnbFtnbFtcIk1FRElVTV9GTE9BVFwiXSA9IDM2MzM3XSA9IFwiTUVESVVNX0ZMT0FUXCI7XG4gIGdsW2dsW1wiSElHSF9GTE9BVFwiXSA9IDM2MzM4XSA9IFwiSElHSF9GTE9BVFwiO1xuICBnbFtnbFtcIkxPV19JTlRcIl0gPSAzNjMzOV0gPSBcIkxPV19JTlRcIjtcbiAgZ2xbZ2xbXCJNRURJVU1fSU5UXCJdID0gMzYzNDBdID0gXCJNRURJVU1fSU5UXCI7XG4gIGdsW2dsW1wiSElHSF9JTlRcIl0gPSAzNjM0MV0gPSBcIkhJR0hfSU5UXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJcIl0gPSAzNjE2MF0gPSBcIkZSQU1FQlVGRkVSXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSXCJdID0gMzYxNjFdID0gXCJSRU5ERVJCVUZGRVJcIjtcbiAgZ2xbZ2xbXCJSR0JBNFwiXSA9IDMyODU0XSA9IFwiUkdCQTRcIjtcbiAgZ2xbZ2xbXCJSR0I1X0ExXCJdID0gMzI4NTVdID0gXCJSR0I1X0ExXCI7XG4gIGdsW2dsW1wiUkdCNTY1XCJdID0gMzYxOTRdID0gXCJSR0I1NjVcIjtcbiAgZ2xbZ2xbXCJERVBUSF9DT01QT05FTlQxNlwiXSA9IDMzMTg5XSA9IFwiREVQVEhfQ09NUE9ORU5UMTZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0lOREVYXCJdID0gNjQwMV0gPSBcIlNURU5DSUxfSU5ERVhcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0lOREVYOFwiXSA9IDM2MTY4XSA9IFwiU1RFTkNJTF9JTkRFWDhcIjtcbiAgZ2xbZ2xbXCJERVBUSF9TVEVOQ0lMXCJdID0gMzQwNDFdID0gXCJERVBUSF9TVEVOQ0lMXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX1dJRFRIXCJdID0gMzYxNjJdID0gXCJSRU5ERVJCVUZGRVJfV0lEVEhcIjtcbiAgZ2xbZ2xbXCJSRU5ERVJCVUZGRVJfSEVJR0hUXCJdID0gMzYxNjNdID0gXCJSRU5ERVJCVUZGRVJfSEVJR0hUXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVFwiXSA9IDM2MTY0XSA9IFwiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVFwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9SRURfU0laRVwiXSA9IDM2MTc2XSA9IFwiUkVOREVSQlVGRkVSX1JFRF9TSVpFXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVcIl0gPSAzNjE3N10gPSBcIlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0JMVUVfU0laRVwiXSA9IDM2MTc4XSA9IFwiUkVOREVSQlVGRkVSX0JMVUVfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXCJdID0gMzYxNzldID0gXCJSRU5ERVJCVUZGRVJfQUxQSEFfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXCJdID0gMzYxODBdID0gXCJSRU5ERVJCVUZGRVJfREVQVEhfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVcIl0gPSAzNjE4MV0gPSBcIlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXCJdID0gMzYwNDhdID0gXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRVwiXSA9IDM2MDQ5XSA9IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRVwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTFwiXSA9IDM2MDUwXSA9IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VcIl0gPSAzNjA1MV0gPSBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFXCI7XG4gIGdsW2dsW1wiQ09MT1JfQVRUQUNITUVOVDBcIl0gPSAzNjA2NF0gPSBcIkNPTE9SX0FUVEFDSE1FTlQwXCI7XG4gIGdsW2dsW1wiREVQVEhfQVRUQUNITUVOVFwiXSA9IDM2MDk2XSA9IFwiREVQVEhfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIlNURU5DSUxfQVRUQUNITUVOVFwiXSA9IDM2MTI4XSA9IFwiU1RFTkNJTF9BVFRBQ0hNRU5UXCI7XG4gIGdsW2dsW1wiREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UXCJdID0gMzMzMDZdID0gXCJERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRcIjtcbiAgZ2xbZ2xbXCJOT05FXCJdID0gMF0gPSBcIk5PTkVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9DT01QTEVURVwiXSA9IDM2MDUzXSA9IFwiRlJBTUVCVUZGRVJfQ09NUExFVEVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRcIl0gPSAzNjA1NF0gPSBcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXCJdID0gMzYwNTVdID0gXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU1wiXSA9IDM2MDU3XSA9IFwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfVU5TVVBQT1JURURcIl0gPSAzNjA2MV0gPSBcIkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQklORElOR1wiXSA9IDM2MDA2XSA9IFwiRlJBTUVCVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9CSU5ESU5HXCJdID0gMzYwMDddID0gXCJSRU5ERVJCVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIk1BWF9SRU5ERVJCVUZGRVJfU0laRVwiXSA9IDM0MDI0XSA9IFwiTUFYX1JFTkRFUkJVRkZFUl9TSVpFXCI7XG4gIGdsW2dsW1wiSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05cIl0gPSAxMjg2XSA9IFwiSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05cIjtcbiAgZ2xbZ2xbXCJVTlBBQ0tfRkxJUF9ZX1dFQkdMXCJdID0gMzc0NDBdID0gXCJVTlBBQ0tfRkxJUF9ZX1dFQkdMXCI7XG4gIGdsW2dsW1wiVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXCJdID0gMzc0NDFdID0gXCJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xcIjtcbiAgZ2xbZ2xbXCJDT05URVhUX0xPU1RfV0VCR0xcIl0gPSAzNzQ0Ml0gPSBcIkNPTlRFWFRfTE9TVF9XRUJHTFwiO1xuICBnbFtnbFtcIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xcIl0gPSAzNzQ0M10gPSBcIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xcIjtcbiAgZ2xbZ2xbXCJCUk9XU0VSX0RFRkFVTFRfV0VCR0xcIl0gPSAzNzQ0NF0gPSBcIkJST1dTRVJfREVGQVVMVF9XRUJHTFwiO1xuICBnbFtnbFtcIkNPUFlfU1JDXCJdID0gMV0gPSBcIkNPUFlfU1JDXCI7XG4gIGdsW2dsW1wiQ09QWV9EU1RcIl0gPSAyXSA9IFwiQ09QWV9EU1RcIjtcbiAgZ2xbZ2xbXCJTQU1QTEVEXCJdID0gNF0gPSBcIlNBTVBMRURcIjtcbiAgZ2xbZ2xbXCJTVE9SQUdFXCJdID0gOF0gPSBcIlNUT1JBR0VcIjtcbiAgZ2xbZ2xbXCJSRU5ERVJfQVRUQUNITUVOVFwiXSA9IDE2XSA9IFwiUkVOREVSX0FUVEFDSE1FTlRcIjtcbn0pKGdsIHx8IChnbCA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/index.js": /*!**************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/index.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gl */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"gl\", function() { return _gl__WEBPACK_IMPORTED_MODULE_0__[\"gl\"]; });\n\n/* harmony import */ var _IAttribute__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IAttribute */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IAttribute.js\");\n/* harmony import */ var _IAttribute__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_IAttribute__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IAttribute__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IAttribute__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IBuffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./IBuffer */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IBuffer.js\");\n/* harmony import */ var _IBuffer__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_IBuffer__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IBuffer__WEBPACK_IMPORTED_MODULE_2__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IBuffer__WEBPACK_IMPORTED_MODULE_2__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IComputeModel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./IComputeModel */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IComputeModel.js\");\n/* harmony import */ var _IComputeModel__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_IComputeModel__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IComputeModel__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IComputeModel__WEBPACK_IMPORTED_MODULE_3__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IElements__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./IElements */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IElements.js\");\n/* harmony import */ var _IElements__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_IElements__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IElements__WEBPACK_IMPORTED_MODULE_4__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IElements__WEBPACK_IMPORTED_MODULE_4__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./IFramebuffer */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js\");\n/* harmony import */ var _IFramebuffer__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_IFramebuffer__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IModel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./IModel */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IModel.js\");\n/* harmony import */ var _IModel__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_IModel__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IModel__WEBPACK_IMPORTED_MODULE_6__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IModel__WEBPACK_IMPORTED_MODULE_6__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IMultiPassRenderer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./IMultiPassRenderer */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PassType\", function() { return _IMultiPassRenderer__WEBPACK_IMPORTED_MODULE_7__[\"PassType\"]; });\n\n/* harmony import */ var _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./IRenderbuffer */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js\");\n/* harmony import */ var _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IRendererService__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./IRendererService */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IRendererService.js\");\n/* harmony import */ var _IRendererService__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_IRendererService__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IRendererService__WEBPACK_IMPORTED_MODULE_9__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IRendererService__WEBPACK_IMPORTED_MODULE_9__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _ITexture2D__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ITexture2D */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/ITexture2D.js\");\n/* harmony import */ var _ITexture2D__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_ITexture2D__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _ITexture2D__WEBPACK_IMPORTED_MODULE_10__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _ITexture2D__WEBPACK_IMPORTED_MODULE_10__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IUniform__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./IUniform */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/IUniform.js\");\n/* harmony import */ var _IUniform__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_IUniform__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IUniform__WEBPACK_IMPORTED_MODULE_11__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IUniform__WEBPACK_IMPORTED_MODULE_11__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL2luZGV4LmpzP2UxNzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUI7QUFDUTtBQUNIO0FBQ007QUFDSjtBQUNHO0FBQ047QUFDWTtBQUNMO0FBQ0c7QUFDTjtBQUNGO0FBQzNCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZ2wnO1xuZXhwb3J0ICogZnJvbSAnLi9JQXR0cmlidXRlJztcbmV4cG9ydCAqIGZyb20gJy4vSUJ1ZmZlcic7XG5leHBvcnQgKiBmcm9tICcuL0lDb21wdXRlTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9JRWxlbWVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9JRnJhbWVidWZmZXInO1xuZXhwb3J0ICogZnJvbSAnLi9JTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9JTXVsdGlQYXNzUmVuZGVyZXInO1xuZXhwb3J0ICogZnJvbSAnLi9JUmVuZGVyYnVmZmVyJztcbmV4cG9ydCAqIGZyb20gJy4vSVJlbmRlcmVyU2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL0lUZXh0dXJlMkQnO1xuZXhwb3J0ICogZnJvbSAnLi9JVW5pZm9ybSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js": /*!************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js ***! \************************************************************************************/ /*! exports provided: CopyPass */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CopyPass\", function() { return CopyPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../gl */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\");\n/* harmony import */ var _RenderPass__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./RenderPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _class3, _temp;\n\n\n\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgl.copy.frag.glsl' */\nvar copyFrag = \"varying vec2 v_UV;\\n\\nuniform sampler2D u_Texture;\\n\\nvoid main() {\\n gl_FragColor = vec4(texture2D(u_Texture, v_UV));\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgl.copy.vert.glsl' */\nvar copyVert = \"attribute vec2 a_Position;\\n\\nvarying vec2 v_UV;\\n\\nvoid main() {\\n v_UV = 0.5 * (a_Position + 1.0);\\n gl_Position = vec4(a_Position, 0., 1.);\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgpu.copy.frag.glsl' */\nvar copyFragWebGPU = \"layout(set = 0, binding = 0) uniform sampler u_TextureSampler;\\nlayout(set = 0, binding = 1) uniform texture2D u_Texture;\\n\\nlayout(location = 0) in vec2 v_UV;\\nlayout(location = 0) out vec4 outColor;\\n\\nvoid main() {\\n outColor = texture(sampler2D(u_Texture, u_TextureSampler), v_UV);\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgpu.copy.vert.glsl' */\nvar copyVertWebGPU = \"layout(location = 0) in vec2 a_Position;\\nlayout(location = 0) out vec2 v_UV;\\n\\nvoid main() {\\n v_UV = 0.5 * (a_Position + 1.0);\\n gl_Position = vec4(a_Position, 0., 1.);\\n}\";\n\n\nvar CopyPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = _class3 = function CopyPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, CopyPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor2, this);\n\n this.model = void 0;\n\n this.setup = function (fg, passNode, pass) {\n var renderPass = fg.getPass(_RenderPass__WEBPACK_IMPORTED_MODULE_9__[\"RenderPass\"].IDENTIFIER);\n\n if (renderPass) {\n var output = fg.createRenderTarget(passNode, 'render to screen', {\n width: 1,\n height: 1\n });\n pass.data = {\n input: passNode.read(renderPass.data.output),\n output: passNode.write(fg, output)\n };\n }\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass) {\n var _this$engine, createModel, createAttribute, createBuffer, model, resourceNode, framebuffer;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this$engine = _this.engine, createModel = _this$engine.createModel, createAttribute = _this$engine.createAttribute, createBuffer = _this$engine.createBuffer;\n\n if (_this.model) {\n _context.next = 6;\n break;\n }\n\n _context.next = 4;\n return createModel({\n vs: _this.engine.supportWebGPU ? copyVertWebGPU : copyVert,\n fs: _this.engine.supportWebGPU ? copyFragWebGPU : copyFrag,\n attributes: {\n // rendering a fullscreen triangle instead of quad\n // @see https://www.saschawillems.de/blog/2016/08/13/vulkan-tutorial-on-rendering-a-fullscreen-quad-without-buffers/\n a_Position: createAttribute({\n buffer: createBuffer({\n data: [-4, -4, 4, -4, 0, 4],\n type: _gl__WEBPACK_IMPORTED_MODULE_8__[\"gl\"].FLOAT\n }),\n size: 2,\n arrayStride: 2 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n })\n },\n uniforms: {\n // @ts-ignore\n u_Texture: null\n },\n depth: {\n enable: false\n },\n count: 3,\n blend: {\n // copy pass 需要混合\n // enable: this.getName() === 'copy',\n enable: true\n }\n });\n\n case 4:\n model = _context.sent;\n _this.model = model;\n\n case 6:\n // 实例化资源\n resourceNode = fg.getResourceNode(pass.data.input);\n framebuffer = _this.resourcePool.getOrCreateResource(resourceNode.resource);\n\n _this.engine.useFramebuffer(null, function () {\n _this.engine.clear({\n framebuffer: null,\n color: [0, 0, 0, 0],\n depth: 1,\n stencil: 0\n });\n\n _this.model.draw({\n uniforms: {\n u_Texture: framebuffer // u_ViewportSize: [width, height],\n\n }\n });\n });\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.tearDown = function () {\n _this.model = undefined;\n };\n}, _class3.IDENTIFIER = 'Copy Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default()(_class2.prototype, \"resourcePool\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=CopyPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9Db3B5UGFzcy5qcz84MzUwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDb0I7QUFDQTs7QUFFeEY7O0FBRStDO0FBQ0U7O0FBRWpEO0FBQ0Esa0NBQWtDLGdDQUFnQyxpQkFBaUIsb0RBQW9ELEdBQUc7O0FBRTFJO0FBQ0EsMENBQTBDLHNCQUFzQixpQkFBaUIsb0NBQW9DLDJDQUEyQyxHQUFHOztBQUVuSztBQUNBLG9GQUFvRiwyREFBMkQsc0NBQXNDLHlDQUF5QyxpQkFBaUIscUVBQXFFLEdBQUc7O0FBRXZUO0FBQ0EsOERBQThELHFDQUFxQyxpQkFBaUIsb0NBQW9DLDJDQUEyQyxHQUFHO0FBQzNLO0FBQ2U7QUFDbkMsdUJBQXVCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyxzREFBVSx3QkFBd0Isd0RBQU0sQ0FBQyxzREFBVTtBQUM5Rzs7QUFFQSxFQUFFLDRFQUFlOztBQUVqQixFQUFFLHVGQUEwQjs7QUFFNUIsRUFBRSx1RkFBMEI7O0FBRTVCOztBQUVBO0FBQ0EsZ0NBQWdDLHNEQUFVOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNsRTs7QUFFQSxhQUFhLGlFQUFtQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixzQ0FBRTtBQUM5QixxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsbUJBQW1CO0FBQ25CLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQjtBQUNqQixlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLENBQUMsMkRBQTJELHNGQUF5QjtBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL0NvcHlQYXNzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2NsYXNzMywgX3RlbXA7XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vLi4vaWRlbnRpZmllcic7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuLi8uLi8uLi9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL3NoYWRlcnMvd2ViZ2wuY29weS5mcmFnLmdsc2wnICovXG52YXIgY29weUZyYWcgPSBcInZhcnlpbmcgdmVjMiB2X1VWO1xcblxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfVGV4dHVyZTtcXG5cXG52b2lkIG1haW4oKSB7XFxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleHR1cmUyRCh1X1RleHR1cmUsIHZfVVYpKTtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuLi8uLi8uLi9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL3NoYWRlcnMvd2ViZ2wuY29weS52ZXJ0Lmdsc2wnICovXG52YXIgY29weVZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMyIGFfUG9zaXRpb247XFxuXFxudmFyeWluZyB2ZWMyIHZfVVY7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9VViA9IDAuNSAqIChhX1Bvc2l0aW9uICsgMS4wKTtcXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChhX1Bvc2l0aW9uLCAwLiwgMS4pO1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4uLy4uLy4uL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvc2hhZGVycy93ZWJncHUuY29weS5mcmFnLmdsc2wnICovXG52YXIgY29weUZyYWdXZWJHUFUgPSBcImxheW91dChzZXQgPSAwLCBiaW5kaW5nID0gMCkgdW5pZm9ybSBzYW1wbGVyIHVfVGV4dHVyZVNhbXBsZXI7XFxubGF5b3V0KHNldCA9IDAsIGJpbmRpbmcgPSAxKSB1bmlmb3JtIHRleHR1cmUyRCB1X1RleHR1cmU7XFxuXFxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMiB2X1VWO1xcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IG91dENvbG9yO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gIG91dENvbG9yID0gdGV4dHVyZShzYW1wbGVyMkQodV9UZXh0dXJlLCB1X1RleHR1cmVTYW1wbGVyKSwgdl9VVik7XFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi4vLi4vLi4vc2VydmljZXMvc2hhZGVyLW1vZHVsZS9zaGFkZXJzL3dlYmdwdS5jb3B5LnZlcnQuZ2xzbCcgKi9cbnZhciBjb3B5VmVydFdlYkdQVSA9IFwibGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMiBhX1Bvc2l0aW9uO1xcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWMyIHZfVVY7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9VViA9IDAuNSAqIChhX1Bvc2l0aW9uICsgMS4wKTtcXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChhX1Bvc2l0aW9uLCAwLiwgMS4pO1xcbn1cIjtcbmltcG9ydCB7IGdsIH0gZnJvbSAnLi4vZ2wnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vUmVuZGVyUGFzcyc7XG5leHBvcnQgdmFyIENvcHlQYXNzID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5SZXNvdXJjZVBvb2wpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IGZ1bmN0aW9uIENvcHlQYXNzKCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb3B5UGFzcyk7XG5cbiAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwicmVzb3VyY2VQb29sXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgdGhpcy5tb2RlbCA9IHZvaWQgMDtcblxuICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgIHZhciByZW5kZXJQYXNzID0gZmcuZ2V0UGFzcyhSZW5kZXJQYXNzLklERU5USUZJRVIpO1xuXG4gICAgaWYgKHJlbmRlclBhc3MpIHtcbiAgICAgIHZhciBvdXRwdXQgPSBmZy5jcmVhdGVSZW5kZXJUYXJnZXQocGFzc05vZGUsICdyZW5kZXIgdG8gc2NyZWVuJywge1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgaW5wdXQ6IHBhc3NOb2RlLnJlYWQocmVuZGVyUGFzcy5kYXRhLm91dHB1dCksXG4gICAgICAgIG91dHB1dDogcGFzc05vZGUud3JpdGUoZmcsIG91dHB1dClcbiAgICAgIH07XG4gICAgfVxuICB9O1xuXG4gIHRoaXMuZXhlY3V0ZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGZnLCBwYXNzKSB7XG4gICAgICB2YXIgX3RoaXMkZW5naW5lLCBjcmVhdGVNb2RlbCwgY3JlYXRlQXR0cmlidXRlLCBjcmVhdGVCdWZmZXIsIG1vZGVsLCByZXNvdXJjZU5vZGUsIGZyYW1lYnVmZmVyO1xuXG4gICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBfdGhpcyRlbmdpbmUgPSBfdGhpcy5lbmdpbmUsIGNyZWF0ZU1vZGVsID0gX3RoaXMkZW5naW5lLmNyZWF0ZU1vZGVsLCBjcmVhdGVBdHRyaWJ1dGUgPSBfdGhpcyRlbmdpbmUuY3JlYXRlQXR0cmlidXRlLCBjcmVhdGVCdWZmZXIgPSBfdGhpcyRlbmdpbmUuY3JlYXRlQnVmZmVyO1xuXG4gICAgICAgICAgICAgIGlmIChfdGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA2O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7XG4gICAgICAgICAgICAgIHJldHVybiBjcmVhdGVNb2RlbCh7XG4gICAgICAgICAgICAgICAgdnM6IF90aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVID8gY29weVZlcnRXZWJHUFUgOiBjb3B5VmVydCxcbiAgICAgICAgICAgICAgICBmczogX3RoaXMuZW5naW5lLnN1cHBvcnRXZWJHUFUgPyBjb3B5RnJhZ1dlYkdQVSA6IGNvcHlGcmFnLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgIC8vIHJlbmRlcmluZyBhIGZ1bGxzY3JlZW4gdHJpYW5nbGUgaW5zdGVhZCBvZiBxdWFkXG4gICAgICAgICAgICAgICAgICAvLyBAc2VlIGh0dHBzOi8vd3d3LnNhc2NoYXdpbGxlbXMuZGUvYmxvZy8yMDE2LzA4LzEzL3Z1bGthbi10dXRvcmlhbC1vbi1yZW5kZXJpbmctYS1mdWxsc2NyZWVuLXF1YWQtd2l0aG91dC1idWZmZXJzL1xuICAgICAgICAgICAgICAgICAgYV9Qb3NpdGlvbjogY3JlYXRlQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiBjcmVhdGVCdWZmZXIoe1xuICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IFstNCwgLTQsIDQsIC00LCAwLCA0XSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBnbC5GTE9BVFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMixcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlTdHJpZGU6IDIgKiA0LFxuICAgICAgICAgICAgICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IDAsXG4gICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgdV9UZXh0dXJlOiBudWxsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkZXB0aDoge1xuICAgICAgICAgICAgICAgICAgZW5hYmxlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY291bnQ6IDMsXG4gICAgICAgICAgICAgICAgYmxlbmQ6IHtcbiAgICAgICAgICAgICAgICAgIC8vIGNvcHkgcGFzcyDpnIDopoHmt7flkIhcbiAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZTogdGhpcy5nZXROYW1lKCkgPT09ICdjb3B5JyxcbiAgICAgICAgICAgICAgICAgIGVuYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgbW9kZWwgPSBfY29udGV4dC5zZW50O1xuICAgICAgICAgICAgICBfdGhpcy5tb2RlbCA9IG1vZGVsO1xuXG4gICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgIC8vIOWunuS+i+WMlui1hOa6kFxuICAgICAgICAgICAgICByZXNvdXJjZU5vZGUgPSBmZy5nZXRSZXNvdXJjZU5vZGUocGFzcy5kYXRhLmlucHV0KTtcbiAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBfdGhpcy5yZXNvdXJjZVBvb2wuZ2V0T3JDcmVhdGVSZXNvdXJjZShyZXNvdXJjZU5vZGUucmVzb3VyY2UpO1xuXG4gICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihudWxsLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuZW5naW5lLmNsZWFyKHtcbiAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAwLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgIGRlcHRoOiAxLFxuICAgICAgICAgICAgICAgICAgc3RlbmNpbDogMFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgX3RoaXMubW9kZWwuZHJhdyh7XG4gICAgICAgICAgICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgICAgICAgICAgICB1X1RleHR1cmU6IGZyYW1lYnVmZmVyIC8vIHVfVmlld3BvcnRTaXplOiBbd2lkdGgsIGhlaWdodF0sXG5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIF9jYWxsZWUpO1xuICAgIH0pKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAoX3gsIF94Mikge1xuICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9KCk7XG5cbiAgdGhpcy50ZWFyRG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICBfdGhpcy5tb2RlbCA9IHVuZGVmaW5lZDtcbiAgfTtcbn0sIF9jbGFzczMuSURFTlRJRklFUiA9ICdDb3B5IFBhc3MnLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlc291cmNlUG9vbFwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29weVBhc3MuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js": /*!********************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js ***! \********************************************************************************************/ /*! exports provided: PixelPickingPass */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PixelPickingPass\", function() { return PixelPickingPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../utils/math */ \"./node_modules/@antv/g-webgpu-core/es/utils/math.js\");\n/* harmony import */ var _RenderPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RenderPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _class3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\nvar PickingStage = {\n NONE: 0.0,\n ENCODE: 1.0,\n HIGHLIGHT: 2.0\n};\n/**\n * color-based picking\n * @see https://threejsfundamentals.org/threejs/lessons/threejs-picking.html\n */\n\nvar PixelPickingPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ResourcePool), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderPassFactory), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MeshComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function PixelPickingPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, PixelPickingPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"renderPassFactory\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor4, this);\n\n this.pickingFBO = void 0;\n this.views = void 0;\n this.highlightEnabled = true;\n this.highlightColor = [255, 0, 0, 255];\n this.alreadyInRendering = false;\n\n this.setup = function (fg, passNode, pass) {\n var output = fg.createRenderTarget(passNode, 'picking fbo', {\n width: 1,\n height: 1\n });\n pass.data = {\n output: passNode.write(fg, output)\n }; // 防止被 FrameGraph 剔除\n\n passNode.hasSideEffect = true;\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass, views) {\n var _iterator, _step, _loop;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this.views = views;\n\n if (!_this.alreadyInRendering) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n _iterator = _createForOfIteratorHelper(views);\n\n try {\n _loop = function _loop() {\n var view = _step.value;\n\n var _view$getViewport = view.getViewport(),\n width = _view$getViewport.width,\n height = _view$getViewport.height; // throttled\n\n\n _this.alreadyInRendering = true; // 实例化资源\n\n var resourceNode = fg.getResourceNode(pass.data.output);\n _this.pickingFBO = _this.resourcePool.getOrCreateResource(resourceNode.resource); // TODO: only draw 1x1 quad, with offset camera\n\n _this.pickingFBO.resize({\n width: width,\n height: height\n });\n\n _this.engine.useFramebuffer(_this.pickingFBO, function () {\n _this.engine.clear({\n framebuffer: _this.pickingFBO,\n color: [0, 0, 0, 0],\n stencil: 0,\n depth: 1\n }); // 渲染\n\n\n var renderPass = _this.renderPassFactory(_RenderPass__WEBPACK_IMPORTED_MODULE_10__[\"RenderPass\"].IDENTIFIER); // 修改所有\n\n\n var meshes = [];\n var scene = view.getScene();\n\n var _iterator2 = _createForOfIteratorHelper(scene.getEntities()),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var meshEntity = _step2.value;\n\n var mesh = _this.mesh.getComponentByEntity(meshEntity);\n\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.ENCODE);\n meshes.push(mesh);\n } // @ts-ignore\n\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n renderPass.renderView(view);\n meshes.forEach(function (mesh) {\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.HIGHLIGHT);\n });\n _this.alreadyInRendering = false;\n });\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.pick = function (_ref2, view) {\n var x = _ref2.x,\n y = _ref2.y;\n var _this$engine = _this.engine,\n readPixels = _this$engine.readPixels,\n useFramebuffer = _this$engine.useFramebuffer;\n\n var _view$getViewport2 = view.getViewport(),\n width = _view$getViewport2.width,\n height = _view$getViewport2.height;\n\n var xInDevicePixel = x * window.devicePixelRatio;\n var yInDevicePixel = y * window.devicePixelRatio; // const xInDevicePixel = x;\n // const yInDevicePixel = y;\n\n if (xInDevicePixel > width || xInDevicePixel < 0 || yInDevicePixel > height || yInDevicePixel < 0) {\n return;\n }\n\n var pickedColors;\n var pickedFeatureIdx;\n useFramebuffer(_this.pickingFBO, function () {\n // avoid realloc\n pickedColors = readPixels({\n x: Math.round(xInDevicePixel),\n // 视口坐标系原点在左上,而 WebGL 在左下,需要翻转 Y 轴\n y: Math.round(height - (y + 1) * window.devicePixelRatio),\n // y: Math.round(height - (y + 1)),\n width: 1,\n height: 1,\n data: new Uint8Array(1 * 1 * 4),\n framebuffer: _this.pickingFBO\n });\n\n if (pickedColors[0] !== 0 || pickedColors[1] !== 0 || pickedColors[2] !== 0) {\n pickedFeatureIdx = Object(_utils_math__WEBPACK_IMPORTED_MODULE_9__[\"decodePickingColor\"])(pickedColors);\n\n if (_this.highlightEnabled) {\n // 高亮\n _this.highlightPickedFeature(pickedColors, view);\n }\n }\n });\n return pickedFeatureIdx;\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(PixelPickingPass, [{\n key: \"enableHighlight\",\n value: function enableHighlight(enabled) {\n this.highlightEnabled = enabled;\n }\n }, {\n key: \"setHighlightColor\",\n value: function setHighlightColor(color) {\n this.highlightColor = color;\n }\n }, {\n key: \"highlightPickedFeature\",\n\n /**\n * highlight 如果直接修改选中 feature 的 buffer,存在两个问题:\n * 1. 鼠标移走时无法恢复\n * 2. 无法实现高亮颜色与原始原色的 alpha 混合\n * 因此高亮还是放在 shader 中做比较好\n */\n value: function highlightPickedFeature(pickedColors, view) {\n if (pickedColors) {\n var _iterator3 = _createForOfIteratorHelper(view.getScene().getEntities()),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var meshEntity = _step3.value;\n var mesh = this.mesh.getComponentByEntity(meshEntity);\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.HIGHLIGHT);\n material.setUniform('u_PickingColor', [pickedColors[0], pickedColors[1], pickedColors[2]]);\n material.setUniform('u_HighlightColor', this.highlightColor);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n }]);\n\n return PixelPickingPass;\n}(), _class3.IDENTIFIER = 'PixelPicking Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"renderPassFactory\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=PixelPickingPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9QaXhlbFBpY2tpbmdQYXNzLmpzPzE2NTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFdEk7QUFDRTtBQUNRO0FBQ2Y7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPLCtCQUErQiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsd0JBQXdCLHdEQUFNLENBQUMsc0RBQVUsd0JBQXdCLHdEQUFNLENBQUMsc0RBQVUsNkJBQTZCLHdEQUFNLENBQUMsc0RBQVU7QUFDN007QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsUUFBUTs7QUFFUjtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNwRTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMERBQTBEOzs7QUFHMUQsb0RBQW9EOztBQUVwRDtBQUNBLHFHQUFxRzs7QUFFckc7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsRUFBRTs7O0FBR3pCLCtEQUErRCx1REFBVSxhQUFhOzs7QUFHdEY7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLGlDQUFpQztBQUM3RTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCLHVCQUF1QjtBQUN2QjtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0EscUJBQXFCO0FBQ3JCOztBQUVBLHFDQUFxQywrQkFBK0I7QUFDcEU7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1REFBdUQ7QUFDdkQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBLDZCQUE2QixzRUFBa0I7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4QixpQ0FBaUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxxRUFBcUUsc0ZBQXlCO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9wYXNzZXMvUGl4ZWxQaWNraW5nUGFzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF9jbGFzczMsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBkZWNvZGVQaWNraW5nQ29sb3IgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYXRoJztcbmltcG9ydCB7IFJlbmRlclBhc3MgfSBmcm9tICcuL1JlbmRlclBhc3MnO1xudmFyIFBpY2tpbmdTdGFnZSA9IHtcbiAgTk9ORTogMC4wLFxuICBFTkNPREU6IDEuMCxcbiAgSElHSExJR0hUOiAyLjBcbn07XG4vKipcbiAqIGNvbG9yLWJhc2VkIHBpY2tpbmdcbiAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzZnVuZGFtZW50YWxzLm9yZy90aHJlZWpzL2xlc3NvbnMvdGhyZWVqcy1waWNraW5nLmh0bWxcbiAqL1xuXG5leHBvcnQgdmFyIFBpeGVsUGlja2luZ1Bhc3MgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5SZW5kZXJFbmdpbmUpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlc291cmNlUG9vbCksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLk1lc2hDb21wb25lbnRNYW5hZ2VyKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQaXhlbFBpY2tpbmdQYXNzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGl4ZWxQaWNraW5nUGFzcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInJlc291cmNlUG9vbFwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJyZW5kZXJQYXNzRmFjdG9yeVwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtZXNoXCIsIF9kZXNjcmlwdG9yNCwgdGhpcyk7XG5cbiAgICB0aGlzLnBpY2tpbmdGQk8gPSB2b2lkIDA7XG4gICAgdGhpcy52aWV3cyA9IHZvaWQgMDtcbiAgICB0aGlzLmhpZ2hsaWdodEVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3IgPSBbMjU1LCAwLCAwLCAyNTVdO1xuICAgIHRoaXMuYWxyZWFkeUluUmVuZGVyaW5nID0gZmFsc2U7XG5cbiAgICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgICAgdmFyIG91dHB1dCA9IGZnLmNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgJ3BpY2tpbmcgZmJvJywge1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgb3V0cHV0OiBwYXNzTm9kZS53cml0ZShmZywgb3V0cHV0KVxuICAgICAgfTsgLy8g6Ziy5q2i6KKrIEZyYW1lR3JhcGgg5YmU6ZmkXG5cbiAgICAgIHBhc3NOb2RlLmhhc1NpZGVFZmZlY3QgPSB0cnVlO1xuICAgIH07XG5cbiAgICB0aGlzLmV4ZWN1dGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGZnLCBwYXNzLCB2aWV3cykge1xuICAgICAgICB2YXIgX2l0ZXJhdG9yLCBfc3RlcCwgX2xvb3A7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfdGhpcy52aWV3cyA9IHZpZXdzO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpcy5hbHJlYWR5SW5SZW5kZXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodmlld3MpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gX3N0ZXAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0ID0gdmlldy5nZXRWaWV3cG9ydCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBfdmlldyRnZXRWaWV3cG9ydC53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IF92aWV3JGdldFZpZXdwb3J0LmhlaWdodDsgLy8gdGhyb3R0bGVkXG5cblxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5hbHJlYWR5SW5SZW5kZXJpbmcgPSB0cnVlOyAvLyDlrp7kvovljJbotYTmupBcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2VOb2RlID0gZmcuZ2V0UmVzb3VyY2VOb2RlKHBhc3MuZGF0YS5vdXRwdXQpO1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5waWNraW5nRkJPID0gX3RoaXMucmVzb3VyY2VQb29sLmdldE9yQ3JlYXRlUmVzb3VyY2UocmVzb3VyY2VOb2RlLnJlc291cmNlKTsgLy8gVE9ETzogb25seSBkcmF3IDF4MSBxdWFkLCB3aXRoIG9mZnNldCBjYW1lcmFcblxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5waWNraW5nRkJPLnJlc2l6ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihfdGhpcy5waWNraW5nRkJPLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMuZW5naW5lLmNsZWFyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyOiBfdGhpcy5waWNraW5nRkJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAwLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZW5jaWw6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogMVxuICAgICAgICAgICAgICAgICAgICAgIH0pOyAvLyDmuLLmn5NcblxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHJlbmRlclBhc3MgPSBfdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShSZW5kZXJQYXNzLklERU5USUZJRVIpOyAvLyDkv67mlLnmiYDmnIlcblxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIG1lc2hlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgIHZhciBfaXRlcmF0b3IyID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9zdGVwMjtcblxuICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjIucygpOyAhKF9zdGVwMiA9IF9pdGVyYXRvcjIubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVzaEVudGl0eSA9IF9zdGVwMi52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVzaCA9IF90aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkobWVzaEVudGl0eSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGVyaWFsID0gbWVzaC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9QaWNraW5nU3RhZ2UnLCBQaWNraW5nU3RhZ2UuRU5DT0RFKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaGVzLnB1c2gobWVzaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMi5lKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclBhc3MucmVuZGVyVmlldyh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgICBtZXNoZXMuZm9yRWFjaChmdW5jdGlvbiAobWVzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGVyaWFsID0gbWVzaC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfUGlja2luZ1N0YWdlJywgUGlja2luZ1N0YWdlLkhJR0hMSUdIVCk7XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMuYWxyZWFkeUluUmVuZGVyaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICAgICAgX2xvb3AoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvci5lKGVycik7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvci5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlKTtcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCwgX3gyLCBfeDMpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgdGhpcy5waWNrID0gZnVuY3Rpb24gKF9yZWYyLCB2aWV3KSB7XG4gICAgICB2YXIgeCA9IF9yZWYyLngsXG4gICAgICAgICAgeSA9IF9yZWYyLnk7XG4gICAgICB2YXIgX3RoaXMkZW5naW5lID0gX3RoaXMuZW5naW5lLFxuICAgICAgICAgIHJlYWRQaXhlbHMgPSBfdGhpcyRlbmdpbmUucmVhZFBpeGVscyxcbiAgICAgICAgICB1c2VGcmFtZWJ1ZmZlciA9IF90aGlzJGVuZ2luZS51c2VGcmFtZWJ1ZmZlcjtcblxuICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0MiA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0Mi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdmlldyRnZXRWaWV3cG9ydDIuaGVpZ2h0O1xuXG4gICAgICB2YXIgeEluRGV2aWNlUGl4ZWwgPSB4ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICB2YXIgeUluRGV2aWNlUGl4ZWwgPSB5ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87IC8vIGNvbnN0IHhJbkRldmljZVBpeGVsID0geDtcbiAgICAgIC8vIGNvbnN0IHlJbkRldmljZVBpeGVsID0geTtcblxuICAgICAgaWYgKHhJbkRldmljZVBpeGVsID4gd2lkdGggfHwgeEluRGV2aWNlUGl4ZWwgPCAwIHx8IHlJbkRldmljZVBpeGVsID4gaGVpZ2h0IHx8IHlJbkRldmljZVBpeGVsIDwgMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBwaWNrZWRDb2xvcnM7XG4gICAgICB2YXIgcGlja2VkRmVhdHVyZUlkeDtcbiAgICAgIHVzZUZyYW1lYnVmZmVyKF90aGlzLnBpY2tpbmdGQk8sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gYXZvaWQgcmVhbGxvY1xuICAgICAgICBwaWNrZWRDb2xvcnMgPSByZWFkUGl4ZWxzKHtcbiAgICAgICAgICB4OiBNYXRoLnJvdW5kKHhJbkRldmljZVBpeGVsKSxcbiAgICAgICAgICAvLyDop4blj6PlnZDmoIfns7vljp/ngrnlnKjlt6bkuIrvvIzogIwgV2ViR0wg5Zyo5bem5LiL77yM6ZyA6KaB57+76L2sIFkg6L20XG4gICAgICAgICAgeTogTWF0aC5yb3VuZChoZWlnaHQgLSAoeSArIDEpICogd2luZG93LmRldmljZVBpeGVsUmF0aW8pLFxuICAgICAgICAgIC8vIHk6IE1hdGgucm91bmQoaGVpZ2h0IC0gKHkgKyAxKSksXG4gICAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgIGRhdGE6IG5ldyBVaW50OEFycmF5KDEgKiAxICogNCksXG4gICAgICAgICAgZnJhbWVidWZmZXI6IF90aGlzLnBpY2tpbmdGQk9cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHBpY2tlZENvbG9yc1swXSAhPT0gMCB8fCBwaWNrZWRDb2xvcnNbMV0gIT09IDAgfHwgcGlja2VkQ29sb3JzWzJdICE9PSAwKSB7XG4gICAgICAgICAgcGlja2VkRmVhdHVyZUlkeCA9IGRlY29kZVBpY2tpbmdDb2xvcihwaWNrZWRDb2xvcnMpO1xuXG4gICAgICAgICAgaWYgKF90aGlzLmhpZ2hsaWdodEVuYWJsZWQpIHtcbiAgICAgICAgICAgIC8vIOmrmOS6rlxuICAgICAgICAgICAgX3RoaXMuaGlnaGxpZ2h0UGlja2VkRmVhdHVyZShwaWNrZWRDb2xvcnMsIHZpZXcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcGlja2VkRmVhdHVyZUlkeDtcbiAgICB9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFBpeGVsUGlja2luZ1Bhc3MsIFt7XG4gICAga2V5OiBcImVuYWJsZUhpZ2hsaWdodFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmFibGVIaWdobGlnaHQoZW5hYmxlZCkge1xuICAgICAgdGhpcy5oaWdobGlnaHRFbmFibGVkID0gZW5hYmxlZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0SGlnaGxpZ2h0Q29sb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0SGlnaGxpZ2h0Q29sb3IoY29sb3IpIHtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGlnaGxpZ2h0UGlja2VkRmVhdHVyZVwiLFxuXG4gICAgLyoqXG4gICAgICogaGlnaGxpZ2h0IOWmguaenOebtOaOpeS/ruaUuemAieS4rSBmZWF0dXJlIOeahCBidWZmZXLvvIzlrZjlnKjkuKTkuKrpl67popjvvJpcbiAgICAgKiAxLiDpvKDmoIfnp7votbDml7bml6Dms5XmgaLlpI1cbiAgICAgKiAyLiDml6Dms5Xlrp7njrDpq5jkuq7popzoibLkuI7ljp/lp4vljp/oibLnmoQgYWxwaGEg5re35ZCIXG4gICAgICog5Zug5q2k6auY5Lqu6L+Y5piv5pS+5ZyoIHNoYWRlciDkuK3lgZrmr5TovoPlpb1cbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gaGlnaGxpZ2h0UGlja2VkRmVhdHVyZShwaWNrZWRDb2xvcnMsIHZpZXcpIHtcbiAgICAgIGlmIChwaWNrZWRDb2xvcnMpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvcjMgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3LmdldFNjZW5lKCkuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgICBfc3RlcDM7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKF9pdGVyYXRvcjMucygpOyAhKF9zdGVwMyA9IF9pdGVyYXRvcjMubigpKS5kb25lOykge1xuICAgICAgICAgICAgdmFyIG1lc2hFbnRpdHkgPSBfc3RlcDMudmFsdWU7XG4gICAgICAgICAgICB2YXIgbWVzaCA9IHRoaXMubWVzaC5nZXRDb21wb25lbnRCeUVudGl0eShtZXNoRW50aXR5KTtcbiAgICAgICAgICAgIHZhciBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICAgICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKCd1X1BpY2tpbmdTdGFnZScsIFBpY2tpbmdTdGFnZS5ISUdITElHSFQpO1xuICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9QaWNraW5nQ29sb3InLCBbcGlja2VkQ29sb3JzWzBdLCBwaWNrZWRDb2xvcnNbMV0sIHBpY2tlZENvbG9yc1syXV0pO1xuICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9IaWdobGlnaHRDb2xvcicsIHRoaXMuaGlnaGxpZ2h0Q29sb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgX2l0ZXJhdG9yMy5lKGVycik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgX2l0ZXJhdG9yMy5mKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGl4ZWxQaWNraW5nUGFzcztcbn0oKSwgX2NsYXNzMy5JREVOVElGSUVSID0gJ1BpeGVsUGlja2luZyBQYXNzJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJyZXNvdXJjZVBvb2xcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwicmVuZGVyUGFzc0ZhY3RvcnlcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWVzaFwiLCBbX2RlYzVdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGl4ZWxQaWNraW5nUGFzcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js": /*!**************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js ***! \**************************************************************************************/ /*! exports provided: RenderPass */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RenderPass\", function() { return RenderPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../gl */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _class3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\nvar RenderPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MaterialComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].CullableComponentManager), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec7 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec8 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec9 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"named\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].FrameGraphSystem), _dec10 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec11 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function RenderPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, RenderPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"material\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"cullable\", _descriptor4, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor5, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor6, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"frameGraphSystem\", _descriptor7, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor8, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor9, this);\n\n this.modelCache = {};\n\n this.setup = function (fg, passNode, pass) {\n var output = fg.createRenderTarget(passNode, 'color buffer', {\n width: 1,\n height: 1,\n usage: _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].RENDER_ATTACHMENT | _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].SAMPLED | _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].COPY_SRC\n });\n pass.data = {\n output: passNode.write(fg, output)\n };\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass, views) {\n var resourceNode, framebuffer, _iterator, _step, view, canvas;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n resourceNode = fg.getResourceNode(pass.data.output);\n framebuffer = _this.resourcePool.getOrCreateResource(resourceNode.resource); // initialize model of each mesh\n\n _iterator = _createForOfIteratorHelper(views);\n _context.prev = 3;\n\n _iterator.s();\n\n case 5:\n if ((_step = _iterator.n()).done) {\n _context.next = 11;\n break;\n }\n\n view = _step.value;\n _context.next = 9;\n return _this.initView(view);\n\n case 9:\n _context.next = 5;\n break;\n\n case 11:\n _context.next = 16;\n break;\n\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](3);\n\n _iterator.e(_context.t0);\n\n case 16:\n _context.prev = 16;\n\n _iterator.f();\n\n return _context.finish(16);\n\n case 19:\n canvas = _this.engine.getCanvas();\n framebuffer.resize({\n width: canvas.width,\n height: canvas.height\n });\n\n _this.engine.setScissor({\n enable: false\n });\n\n _this.engine.clear({\n framebuffer: framebuffer,\n color: views[0].getClearColor(),\n // TODO: use clearColor defined in view\n depth: 1\n });\n\n _this.engine.useFramebuffer(framebuffer, function () {\n var _iterator2 = _createForOfIteratorHelper(views),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var view = _step2.value;\n\n // must do rendering in a sync way\n _this.renderView(view);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n });\n\n case 24:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[3, 13, 16, 19]]);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(RenderPass, [{\n key: \"renderView\",\n value: function renderView(view) {\n var scene = view.getScene();\n var camera = view.getCamera(); // get VP matrix from camera\n\n var viewMatrix = camera.getViewTransform();\n var viewProjectionMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), camera.getPerspective(), viewMatrix); // TODO: use cached planes if camera was not changed\n\n camera.getFrustum().extractFromVPMatrix(viewProjectionMatrix);\n\n var _view$getViewport = view.getViewport(),\n x = _view$getViewport.x,\n y = _view$getViewport.y,\n width = _view$getViewport.width,\n height = _view$getViewport.height;\n\n this.engine.viewport({\n x: x,\n y: y,\n width: width,\n height: height\n }); // this.engine.setScissor({\n // enable: true,\n // box: { x, y, width, height },\n // });\n // this.engine.clear({\n // // framebuffer,\n // color: [1, 1, 1, 1], // TODO: use clearColor defined in view\n // depth: 1,\n // });\n\n var _iterator3 = _createForOfIteratorHelper(scene.getEntities()),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var meshEntity = _step3.value;\n this.renderMesh(meshEntity, {\n camera: camera,\n view: view,\n viewMatrix: viewMatrix\n });\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"renderMesh\",\n value: function renderMesh(meshEntity, _ref2) {\n var camera = _ref2.camera,\n view = _ref2.view,\n viewMatrix = _ref2.viewMatrix;\n var mesh = this.mesh.getComponentByEntity(meshEntity);\n\n if (!mesh || !mesh.visible) {\n return;\n } // filter meshes with frustum culling\n // if (!this.cullable.getComponentByEntity(meshEntity)?.visible) {\n // return;\n // }\n\n\n var material = mesh.material;\n var geometry = mesh.geometry; // geometry 在自己的 System 中完成脏检查后的更新\n\n if (!geometry || geometry.dirty || !material) {\n return;\n } // get model matrix from mesh\n\n\n var transform = this.transform.getComponentByEntity(meshEntity);\n var modelViewMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), viewMatrix, transform.worldTransform);\n\n var _view$getViewport2 = view.getViewport(),\n width = _view$getViewport2.width,\n height = _view$getViewport2.height; // set MVP matrix, other builtin uniforms @see https://threejs.org/docs/#api/en/renderers/webgl/WebGLProgram\n\n\n material.setUniform({\n projectionMatrix: camera.getPerspective(),\n modelViewMatrix: modelViewMatrix,\n modelMatrix: transform.worldTransform,\n viewMatrix: viewMatrix,\n cameraPosition: camera.getPosition(),\n u_viewport: [width, height]\n });\n\n if (mesh.model) {\n mesh.model.draw({\n uniforms: material.uniforms.reduce(function (cur, prev) {\n cur[prev.name] = prev.data;\n return cur;\n }, {})\n });\n material.uniforms.forEach(function (u) {\n u.dirty = false;\n });\n material.dirty = false;\n }\n }\n }, {\n key: \"initMesh\",\n value: function () {\n var _initMesh = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(meshEntity, view) {\n var mesh, material, geometry, modelCacheKey, _this$engine, createModel, createAttribute, modelInitializationOptions;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n mesh = this.mesh.getComponentByEntity(meshEntity);\n\n if (mesh) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 3:\n material = mesh.material;\n geometry = mesh.geometry;\n\n if (!(!geometry || geometry.dirty || !material)) {\n _context2.next = 7;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 7:\n if (mesh.model) {\n _context2.next = 24;\n break;\n }\n\n modelCacheKey = \"m-\".concat(material.entity, \"-g-\").concat(geometry.entity);\n\n if (!this.modelCache[modelCacheKey]) {\n _context2.next = 12;\n break;\n }\n\n mesh.model = this.modelCache[modelCacheKey];\n return _context2.abrupt(\"return\");\n\n case 12:\n material.setUniform({\n projectionMatrix: 1,\n modelViewMatrix: 1,\n modelMatrix: 1,\n viewMatrix: 1,\n cameraPosition: 1,\n u_viewport: 1\n });\n _this$engine = this.engine, createModel = _this$engine.createModel, createAttribute = _this$engine.createAttribute;\n modelInitializationOptions = {\n vs: material.vertexShaderGLSL,\n fs: material.fragmentShaderGLSL,\n defines: material.defines,\n attributes: geometry.attributes.reduce(function (cur, prev) {\n if (prev.data && prev.buffer) {\n cur[prev.name] = createAttribute({\n buffer: prev.buffer,\n attributes: prev.attributes,\n arrayStride: prev.arrayStride,\n stepMode: prev.stepMode,\n divisor: prev.stepMode === 'vertex' ? 0 : 1\n });\n }\n\n return cur;\n }, {}),\n uniforms: material.uniforms.reduce(function (cur, prev) {\n cur[prev.name] = prev.data;\n return cur;\n }, {}),\n scissor: {\n enable: true,\n // @ts-ignore\n box: function box() {\n return view.getViewport();\n }\n }\n };\n\n if (material.cull) {\n modelInitializationOptions.cull = material.cull;\n }\n\n if (material.depth) {\n modelInitializationOptions.depth = material.depth;\n }\n\n if (material.blend) {\n modelInitializationOptions.blend = material.blend;\n }\n\n if (geometry.indicesBuffer) {\n modelInitializationOptions.elements = geometry.indicesBuffer;\n }\n\n if (geometry.maxInstancedCount) {\n modelInitializationOptions.instances = geometry.maxInstancedCount;\n modelInitializationOptions.count = geometry.vertexCount || 3;\n }\n\n _context2.next = 22;\n return createModel(modelInitializationOptions);\n\n case 22:\n mesh.model = _context2.sent;\n this.modelCache[modelCacheKey] = mesh.model;\n\n case 24:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function initMesh(_x4, _x5) {\n return _initMesh.apply(this, arguments);\n }\n\n return initMesh;\n }()\n }, {\n key: \"initView\",\n value: function () {\n var _initView = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(view) {\n var scene, _iterator4, _step4, meshEntity;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n scene = view.getScene();\n _iterator4 = _createForOfIteratorHelper(scene.getEntities());\n _context3.prev = 2;\n\n _iterator4.s();\n\n case 4:\n if ((_step4 = _iterator4.n()).done) {\n _context3.next = 10;\n break;\n }\n\n meshEntity = _step4.value;\n _context3.next = 8;\n return this.initMesh(meshEntity, view);\n\n case 8:\n _context3.next = 4;\n break;\n\n case 10:\n _context3.next = 15;\n break;\n\n case 12:\n _context3.prev = 12;\n _context3.t0 = _context3[\"catch\"](2);\n\n _iterator4.e(_context3.t0);\n\n case 15:\n _context3.prev = 15;\n\n _iterator4.f();\n\n return _context3.finish(15);\n\n case 18:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[2, 12, 15, 18]]);\n }));\n\n function initView(_x6) {\n return _initView.apply(this, arguments);\n }\n\n return initView;\n }()\n }]);\n\n return RenderPass;\n}(), _class3.IDENTIFIER = 'Render Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"material\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"cullable\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor5 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor6 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec7], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor7 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"frameGraphSystem\", [_dec8, _dec9], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor8 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec10], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor9 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec11], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=RenderPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9SZW5kZXJQYXNzLmpzP2Y3ODEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFcEo7QUFDcUI7QUFDTDtBQUN0QjtBQUNwQix5QkFBeUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVLGdDQUFnQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLG1CQUFtQix1REFBSyxDQUFDLHNEQUFVLDZCQUE2Qix3REFBTSxDQUFDLHNEQUFVLHlCQUF5Qix3REFBTSxDQUFDLHNEQUFVO0FBQzlmO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHVDQUFFLHFCQUFxQix1Q0FBRSxXQUFXLHVDQUFFO0FBQ3JELE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDcEU7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RkFBNEY7O0FBRTVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0MsaUNBQWlDO0FBQ3pFOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0EsaUNBQWlDLDhDQUFJLFVBQVUsOENBQUksZ0RBQWdEOztBQUVuRzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7QUFDVDtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkMsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLGlDQUFpQztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQSw0QkFBNEIsOENBQUksVUFBVSw4Q0FBSTs7QUFFOUM7QUFDQTtBQUNBLDZDQUE2Qzs7O0FBRzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxJQUFJO0FBQ2YsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2Qjs7QUFFQTtBQUNBLG1CQUFtQixJQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixJQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBLENBQUMsK0RBQStELHNGQUF5QjtBQUN6RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1JlbmRlclBhc3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2RlYzQsIF9kZWM1LCBfZGVjNiwgX2RlYzcsIF9kZWM4LCBfZGVjOSwgX2RlYzEwLCBfZGVjMTEsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF9kZXNjcmlwdG9yNSwgX2Rlc2NyaXB0b3I2LCBfZGVzY3JpcHRvcjcsIF9kZXNjcmlwdG9yOCwgX2Rlc2NyaXB0b3I5LCBfY2xhc3MzLCBfdGVtcDtcblxuZnVuY3Rpb24gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIobywgYWxsb3dBcnJheUxpa2UpIHsgdmFyIGl0OyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCBvW1N5bWJvbC5pdGVyYXRvcl0gPT0gbnVsbCkgeyBpZiAoQXJyYXkuaXNBcnJheShvKSB8fCAoaXQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobykpIHx8IGFsbG93QXJyYXlMaWtlICYmIG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSB7IGlmIChpdCkgbyA9IGl0OyB2YXIgaSA9IDA7IHZhciBGID0gZnVuY3Rpb24gRigpIHt9OyByZXR1cm4geyBzOiBGLCBuOiBmdW5jdGlvbiBuKCkgeyBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OyByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG9baSsrXSB9OyB9LCBlOiBmdW5jdGlvbiBlKF9lKSB7IHRocm93IF9lOyB9LCBmOiBGIH07IH0gdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9IHZhciBub3JtYWxDb21wbGV0aW9uID0gdHJ1ZSwgZGlkRXJyID0gZmFsc2UsIGVycjsgcmV0dXJuIHsgczogZnVuY3Rpb24gcygpIHsgaXQgPSBvW1N5bWJvbC5pdGVyYXRvcl0oKTsgfSwgbjogZnVuY3Rpb24gbigpIHsgdmFyIHN0ZXAgPSBpdC5uZXh0KCk7IG5vcm1hbENvbXBsZXRpb24gPSBzdGVwLmRvbmU7IHJldHVybiBzdGVwOyB9LCBlOiBmdW5jdGlvbiBlKF9lMikgeyBkaWRFcnIgPSB0cnVlOyBlcnIgPSBfZTI7IH0sIGY6IGZ1bmN0aW9uIGYoKSB7IHRyeSB7IGlmICghbm9ybWFsQ29tcGxldGlvbiAmJiBpdC5yZXR1cm4gIT0gbnVsbCkgaXQucmV0dXJuKCk7IH0gZmluYWxseSB7IGlmIChkaWRFcnIpIHRocm93IGVycjsgfSB9IH07IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5pbXBvcnQgeyBtYXQ0IH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uLy4uL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICcuLi9nbCc7XG5leHBvcnQgdmFyIFJlbmRlclBhc3MgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlciksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuR2VvbWV0cnlDb21wb25lbnRNYW5hZ2VyKSwgX2RlYzQgPSBpbmplY3QoSURFTlRJRklFUi5NYXRlcmlhbENvbXBvbmVudE1hbmFnZXIpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLkN1bGxhYmxlQ29tcG9uZW50TWFuYWdlciksIF9kZWM2ID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWM3ID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWM4ID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWM5ID0gbmFtZWQoSURFTlRJRklFUi5GcmFtZUdyYXBoU3lzdGVtKSwgX2RlYzEwID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYzExID0gaW5qZWN0KElERU5USUZJRVIuUmVzb3VyY2VQb29sKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJQYXNzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVuZGVyUGFzcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm1lc2hcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJnZW9tZXRyeVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtYXRlcmlhbFwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjdWxsYWJsZVwiLCBfZGVzY3JpcHRvcjQsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0cmFuc2Zvcm1cIiwgX2Rlc2NyaXB0b3I1LCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiaGllcmFyY2h5XCIsIF9kZXNjcmlwdG9yNiwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImZyYW1lR3JhcGhTeXN0ZW1cIiwgX2Rlc2NyaXB0b3I3LCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiZW5naW5lXCIsIF9kZXNjcmlwdG9yOCwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInJlc291cmNlUG9vbFwiLCBfZGVzY3JpcHRvcjksIHRoaXMpO1xuXG4gICAgdGhpcy5tb2RlbENhY2hlID0ge307XG5cbiAgICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgICAgdmFyIG91dHB1dCA9IGZnLmNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgJ2NvbG9yIGJ1ZmZlcicsIHtcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgdXNhZ2U6IGdsLlJFTkRFUl9BVFRBQ0hNRU5UIHwgZ2wuU0FNUExFRCB8IGdsLkNPUFlfU1JDXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgb3V0cHV0OiBwYXNzTm9kZS53cml0ZShmZywgb3V0cHV0KVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdGhpcy5leGVjdXRlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShmZywgcGFzcywgdmlld3MpIHtcbiAgICAgICAgdmFyIHJlc291cmNlTm9kZSwgZnJhbWVidWZmZXIsIF9pdGVyYXRvciwgX3N0ZXAsIHZpZXcsIGNhbnZhcztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJlc291cmNlTm9kZSA9IGZnLmdldFJlc291cmNlTm9kZShwYXNzLmRhdGEub3V0cHV0KTtcbiAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IF90aGlzLnJlc291cmNlUG9vbC5nZXRPckNyZWF0ZVJlc291cmNlKHJlc291cmNlTm9kZS5yZXNvdXJjZSk7IC8vIGluaXRpYWxpemUgbW9kZWwgb2YgZWFjaCBtZXNoXG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDM7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IucygpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICBpZiAoKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDExO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmlldyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA5O1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5pbml0Vmlldyh2aWV3KTtcblxuICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMTM7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQudDAgPSBfY29udGV4dFtcImNhdGNoXCJdKDMpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmUoX2NvbnRleHQudDApO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE2O1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMTYpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgICAgICAgY2FudmFzID0gX3RoaXMuZW5naW5lLmdldENhbnZhcygpO1xuICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyLnJlc2l6ZSh7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogY2FudmFzLndpZHRoLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBfdGhpcy5lbmdpbmUuc2V0U2Npc3Nvcih7XG4gICAgICAgICAgICAgICAgICBlbmFibGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBfdGhpcy5lbmdpbmUuY2xlYXIoe1xuICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXI6IGZyYW1lYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IHZpZXdzWzBdLmdldENsZWFyQ29sb3IoKSxcbiAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHVzZSBjbGVhckNvbG9yIGRlZmluZWQgaW4gdmlld1xuICAgICAgICAgICAgICAgICAgZGVwdGg6IDFcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlciwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgdmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyksXG4gICAgICAgICAgICAgICAgICAgICAgX3N0ZXAyO1xuXG4gICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjIucygpOyAhKF9zdGVwMiA9IF9pdGVyYXRvcjIubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gX3N0ZXAyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gbXVzdCBkbyByZW5kZXJpbmcgaW4gYSBzeW5jIHdheVxuICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnJlbmRlclZpZXcodmlldyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLmUoZXJyKTtcbiAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgbnVsbCwgW1szLCAxMywgMTYsIDE5XV0pO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94LCBfeDIsIF94Mykge1xuICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVuZGVyUGFzcywgW3tcbiAgICBrZXk6IFwicmVuZGVyVmlld1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJWaWV3KHZpZXcpIHtcbiAgICAgIHZhciBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgIHZhciBjYW1lcmEgPSB2aWV3LmdldENhbWVyYSgpOyAvLyBnZXQgVlAgbWF0cml4IGZyb20gY2FtZXJhXG5cbiAgICAgIHZhciB2aWV3TWF0cml4ID0gY2FtZXJhLmdldFZpZXdUcmFuc2Zvcm0oKTtcbiAgICAgIHZhciB2aWV3UHJvamVjdGlvbk1hdHJpeCA9IG1hdDQubXVsdGlwbHkobWF0NC5jcmVhdGUoKSwgY2FtZXJhLmdldFBlcnNwZWN0aXZlKCksIHZpZXdNYXRyaXgpOyAvLyBUT0RPOiB1c2UgY2FjaGVkIHBsYW5lcyBpZiBjYW1lcmEgd2FzIG5vdCBjaGFuZ2VkXG5cbiAgICAgIGNhbWVyYS5nZXRGcnVzdHVtKCkuZXh0cmFjdEZyb21WUE1hdHJpeCh2aWV3UHJvamVjdGlvbk1hdHJpeCk7XG5cbiAgICAgIHZhciBfdmlldyRnZXRWaWV3cG9ydCA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB4ID0gX3ZpZXckZ2V0Vmlld3BvcnQueCxcbiAgICAgICAgICB5ID0gX3ZpZXckZ2V0Vmlld3BvcnQueSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0LndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF92aWV3JGdldFZpZXdwb3J0LmhlaWdodDtcblxuICAgICAgdGhpcy5lbmdpbmUudmlld3BvcnQoe1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9KTsgLy8gdGhpcy5lbmdpbmUuc2V0U2Npc3Nvcih7XG4gICAgICAvLyAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgIC8vICAgYm94OiB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSxcbiAgICAgIC8vIH0pO1xuICAgICAgLy8gdGhpcy5lbmdpbmUuY2xlYXIoe1xuICAgICAgLy8gICAvLyBmcmFtZWJ1ZmZlcixcbiAgICAgIC8vICAgY29sb3I6IFsxLCAxLCAxLCAxXSwgLy8gVE9ETzogdXNlIGNsZWFyQ29sb3IgZGVmaW5lZCBpbiB2aWV3XG4gICAgICAvLyAgIGRlcHRoOiAxLFxuICAgICAgLy8gfSk7XG5cbiAgICAgIHZhciBfaXRlcmF0b3IzID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgX3N0ZXAzO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKF9pdGVyYXRvcjMucygpOyAhKF9zdGVwMyA9IF9pdGVyYXRvcjMubigpKS5kb25lOykge1xuICAgICAgICAgIHZhciBtZXNoRW50aXR5ID0gX3N0ZXAzLnZhbHVlO1xuICAgICAgICAgIHRoaXMucmVuZGVyTWVzaChtZXNoRW50aXR5LCB7XG4gICAgICAgICAgICBjYW1lcmE6IGNhbWVyYSxcbiAgICAgICAgICAgIHZpZXc6IHZpZXcsXG4gICAgICAgICAgICB2aWV3TWF0cml4OiB2aWV3TWF0cml4XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfaXRlcmF0b3IzLmUoZXJyKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIF9pdGVyYXRvcjMuZigpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJNZXNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlck1lc2gobWVzaEVudGl0eSwgX3JlZjIpIHtcbiAgICAgIHZhciBjYW1lcmEgPSBfcmVmMi5jYW1lcmEsXG4gICAgICAgICAgdmlldyA9IF9yZWYyLnZpZXcsXG4gICAgICAgICAgdmlld01hdHJpeCA9IF9yZWYyLnZpZXdNYXRyaXg7XG4gICAgICB2YXIgbWVzaCA9IHRoaXMubWVzaC5nZXRDb21wb25lbnRCeUVudGl0eShtZXNoRW50aXR5KTtcblxuICAgICAgaWYgKCFtZXNoIHx8ICFtZXNoLnZpc2libGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBmaWx0ZXIgbWVzaGVzIHdpdGggZnJ1c3R1bSBjdWxsaW5nXG4gICAgICAvLyBpZiAoIXRoaXMuY3VsbGFibGUuZ2V0Q29tcG9uZW50QnlFbnRpdHkobWVzaEVudGl0eSk/LnZpc2libGUpIHtcbiAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgLy8gfVxuXG5cbiAgICAgIHZhciBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICB2YXIgZ2VvbWV0cnkgPSBtZXNoLmdlb21ldHJ5OyAvLyBnZW9tZXRyeSDlnKjoh6rlt7HnmoQgU3lzdGVtIOS4reWujOaIkOiEj+ajgOafpeWQjueahOabtOaWsFxuXG4gICAgICBpZiAoIWdlb21ldHJ5IHx8IGdlb21ldHJ5LmRpcnR5IHx8ICFtYXRlcmlhbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGdldCBtb2RlbCBtYXRyaXggZnJvbSBtZXNoXG5cblxuICAgICAgdmFyIHRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KG1lc2hFbnRpdHkpO1xuICAgICAgdmFyIG1vZGVsVmlld01hdHJpeCA9IG1hdDQubXVsdGlwbHkobWF0NC5jcmVhdGUoKSwgdmlld01hdHJpeCwgdHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtKTtcblxuICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0MiA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0Mi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdmlldyRnZXRWaWV3cG9ydDIuaGVpZ2h0OyAvLyBzZXQgTVZQIG1hdHJpeCwgb3RoZXIgYnVpbHRpbiB1bmlmb3JtcyBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jYXBpL2VuL3JlbmRlcmVycy93ZWJnbC9XZWJHTFByb2dyYW1cblxuXG4gICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKHtcbiAgICAgICAgcHJvamVjdGlvbk1hdHJpeDogY2FtZXJhLmdldFBlcnNwZWN0aXZlKCksXG4gICAgICAgIG1vZGVsVmlld01hdHJpeDogbW9kZWxWaWV3TWF0cml4LFxuICAgICAgICBtb2RlbE1hdHJpeDogdHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtLFxuICAgICAgICB2aWV3TWF0cml4OiB2aWV3TWF0cml4LFxuICAgICAgICBjYW1lcmFQb3NpdGlvbjogY2FtZXJhLmdldFBvc2l0aW9uKCksXG4gICAgICAgIHVfdmlld3BvcnQ6IFt3aWR0aCwgaGVpZ2h0XVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChtZXNoLm1vZGVsKSB7XG4gICAgICAgIG1lc2gubW9kZWwuZHJhdyh7XG4gICAgICAgICAgdW5pZm9ybXM6IG1hdGVyaWFsLnVuaWZvcm1zLnJlZHVjZShmdW5jdGlvbiAoY3VyLCBwcmV2KSB7XG4gICAgICAgICAgICBjdXJbcHJldi5uYW1lXSA9IHByZXYuZGF0YTtcbiAgICAgICAgICAgIHJldHVybiBjdXI7XG4gICAgICAgICAgfSwge30pXG4gICAgICAgIH0pO1xuICAgICAgICBtYXRlcmlhbC51bmlmb3Jtcy5mb3JFYWNoKGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgdS5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgbWF0ZXJpYWwuZGlydHkgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdE1lc2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0TWVzaCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKG1lc2hFbnRpdHksIHZpZXcpIHtcbiAgICAgICAgdmFyIG1lc2gsIG1hdGVyaWFsLCBnZW9tZXRyeSwgbW9kZWxDYWNoZUtleSwgX3RoaXMkZW5naW5lLCBjcmVhdGVNb2RlbCwgY3JlYXRlQXR0cmlidXRlLCBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBtZXNoID0gdGhpcy5tZXNoLmdldENvbXBvbmVudEJ5RW50aXR5KG1lc2hFbnRpdHkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICAgICAgICAgICAgZ2VvbWV0cnkgPSBtZXNoLmdlb21ldHJ5O1xuXG4gICAgICAgICAgICAgICAgaWYgKCEoIWdlb21ldHJ5IHx8IGdlb21ldHJ5LmRpcnR5IHx8ICFtYXRlcmlhbCkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICBpZiAobWVzaC5tb2RlbCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyNDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG1vZGVsQ2FjaGVLZXkgPSBcIm0tXCIuY29uY2F0KG1hdGVyaWFsLmVudGl0eSwgXCItZy1cIikuY29uY2F0KGdlb21ldHJ5LmVudGl0eSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubW9kZWxDYWNoZVttb2RlbENhY2hlS2V5XSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG1lc2gubW9kZWwgPSB0aGlzLm1vZGVsQ2FjaGVbbW9kZWxDYWNoZUtleV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKHtcbiAgICAgICAgICAgICAgICAgIHByb2plY3Rpb25NYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBtb2RlbFZpZXdNYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBtb2RlbE1hdHJpeDogMSxcbiAgICAgICAgICAgICAgICAgIHZpZXdNYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBjYW1lcmFQb3NpdGlvbjogMSxcbiAgICAgICAgICAgICAgICAgIHVfdmlld3BvcnQ6IDFcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBfdGhpcyRlbmdpbmUgPSB0aGlzLmVuZ2luZSwgY3JlYXRlTW9kZWwgPSBfdGhpcyRlbmdpbmUuY3JlYXRlTW9kZWwsIGNyZWF0ZUF0dHJpYnV0ZSA9IF90aGlzJGVuZ2luZS5jcmVhdGVBdHRyaWJ1dGU7XG4gICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICB2czogbWF0ZXJpYWwudmVydGV4U2hhZGVyR0xTTCxcbiAgICAgICAgICAgICAgICAgIGZzOiBtYXRlcmlhbC5mcmFnbWVudFNoYWRlckdMU0wsXG4gICAgICAgICAgICAgICAgICBkZWZpbmVzOiBtYXRlcmlhbC5kZWZpbmVzLFxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogZ2VvbWV0cnkuYXR0cmlidXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGN1ciwgcHJldikge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldi5kYXRhICYmIHByZXYuYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY3VyW3ByZXYubmFtZV0gPSBjcmVhdGVBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiBwcmV2LmJ1ZmZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHByZXYuYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5U3RyaWRlOiBwcmV2LmFycmF5U3RyaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcE1vZGU6IHByZXYuc3RlcE1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXZpc29yOiBwcmV2LnN0ZXBNb2RlID09PSAndmVydGV4JyA/IDAgOiAxXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgICAgICAgICAgfSwge30pLFxuICAgICAgICAgICAgICAgICAgdW5pZm9ybXM6IG1hdGVyaWFsLnVuaWZvcm1zLnJlZHVjZShmdW5jdGlvbiAoY3VyLCBwcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cltwcmV2Lm5hbWVdID0gcHJldi5kYXRhO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgICAgICAgICAgfSwge30pLFxuICAgICAgICAgICAgICAgICAgc2Npc3Nvcjoge1xuICAgICAgICAgICAgICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgYm94OiBmdW5jdGlvbiBib3goKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpZXcuZ2V0Vmlld3BvcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAobWF0ZXJpYWwuY3VsbCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuY3VsbCA9IG1hdGVyaWFsLmN1bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsLmRlcHRoKSB7XG4gICAgICAgICAgICAgICAgICBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucy5kZXB0aCA9IG1hdGVyaWFsLmRlcHRoO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChtYXRlcmlhbC5ibGVuZCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuYmxlbmQgPSBtYXRlcmlhbC5ibGVuZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZ2VvbWV0cnkuaW5kaWNlc0J1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuZWxlbWVudHMgPSBnZW9tZXRyeS5pbmRpY2VzQnVmZmVyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChnZW9tZXRyeS5tYXhJbnN0YW5jZWRDb3VudCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuaW5zdGFuY2VzID0gZ2VvbWV0cnkubWF4SW5zdGFuY2VkQ291bnQ7XG4gICAgICAgICAgICAgICAgICBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucy5jb3VudCA9IGdlb21ldHJ5LnZlcnRleENvdW50IHx8IDM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTW9kZWwobW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgICAgICAgbWVzaC5tb2RlbCA9IF9jb250ZXh0Mi5zZW50O1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWxDYWNoZVttb2RlbENhY2hlS2V5XSA9IG1lc2gubW9kZWw7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0TWVzaChfeDQsIF94NSkge1xuICAgICAgICByZXR1cm4gX2luaXRNZXNoLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0TWVzaDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJpbml0Vmlld1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXRWaWV3ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTModmlldykge1xuICAgICAgICB2YXIgc2NlbmUsIF9pdGVyYXRvcjQsIF9zdGVwNCwgbWVzaEVudGl0eTtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0ID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAyO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yNC5zKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIGlmICgoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uKCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTA7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBtZXNoRW50aXR5ID0gX3N0ZXA0LnZhbHVlO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gODtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0TWVzaChtZXNoRW50aXR5LCB2aWV3KTtcblxuICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxNTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTI7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gX2NvbnRleHQzW1wiY2F0Y2hcIl0oMik7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0LmUoX2NvbnRleHQzLnQwKTtcblxuICAgICAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTU7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0LmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuZmluaXNoKDE1KTtcblxuICAgICAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMywgdGhpcywgW1syLCAxMiwgMTUsIDE4XV0pO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0VmlldyhfeDYpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0Vmlldy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdFZpZXc7XG4gICAgfSgpXG4gIH1dKTtcblxuICByZXR1cm4gUmVuZGVyUGFzcztcbn0oKSwgX2NsYXNzMy5JREVOVElGSUVSID0gJ1JlbmRlciBQYXNzJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1lc2hcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY3VsbGFibGVcIiwgW19kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNSA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwidHJhbnNmb3JtXCIsIFtfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjYgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImhpZXJhcmNoeVwiLCBbX2RlYzddLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3I3ID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJmcmFtZUdyYXBoU3lzdGVtXCIsIFtfZGVjOCwgX2RlYzldLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3I4ID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJlbmdpbmVcIiwgW19kZWMxMF0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjkgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlc291cmNlUG9vbFwiLCBbX2RlYzExXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlbmRlclBhc3MuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js": /*!*****************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js ***! \*****************************************************************************************/ /*! exports provided: HierarchyComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HierarchyComponent\", function() { return HierarchyComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar HierarchyComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(HierarchyComponent, _Component);\n\n var _super = _createSuper(HierarchyComponent);\n\n function HierarchyComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, HierarchyComponent);\n\n _this = _super.call(this, data);\n _this.parentID = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return HierarchyComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=HierarchyComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvSGllcmFyY2h5Q29tcG9uZW50LmpzPzIxMGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDYztBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBLGtCQUFrQixtRkFBc0I7QUFDeEM7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL0hpZXJhcmNoeUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Db21wb25lbnRNYW5hZ2VyJztcbmV4cG9ydCB2YXIgSGllcmFyY2h5Q29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhIaWVyYXJjaHlDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSGllcmFyY2h5Q29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBIaWVyYXJjaHlDb21wb25lbnQoZGF0YSkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIaWVyYXJjaHlDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5wYXJlbnRJRCA9IHZvaWQgMDtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gSGllcmFyY2h5Q29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SGllcmFyY2h5Q29tcG9uZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js": /*!************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js ***! \************************************************************************************/ /*! exports provided: NameComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NameComponent\", function() { return NameComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar NameComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1___default()(NameComponent, _Component);\n\n var _super = _createSuper(NameComponent);\n\n function NameComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, NameComponent);\n\n _this = _super.call(this, data);\n _this.name = void 0;\n _this.name = data.name || '';\n return _this;\n }\n\n return NameComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_4__[\"Component\"]);\n//# sourceMappingURL=NameComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvTmFtZUNvbXBvbmVudC5qcz8xNGNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDWjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL05hbWVDb21wb25lbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBOYW1lQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhOYW1lQ29tcG9uZW50LCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE5hbWVDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIE5hbWVDb21wb25lbnQoZGF0YSkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOYW1lQ29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMubmFtZSA9IHZvaWQgMDtcbiAgICBfdGhpcy5uYW1lID0gZGF0YS5uYW1lIHx8ICcnO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHJldHVybiBOYW1lQ29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmFtZUNvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/scenegraph/System.js": /*!*****************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/scenegraph/System.js ***! \*****************************************************************************/ /*! exports provided: SceneGraphSystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SceneGraphSystem\", function() { return SceneGraphSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\n\n\n\nvar SceneGraphSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function SceneGraphSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, SceneGraphSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor3, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(SceneGraphSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.runTransformUpdateSystem();\n this.runHierarchyUpdateSystem();\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.hierarchy.clear();\n this.transform.clear();\n }\n }, {\n key: \"getHierarchyComponentManager\",\n value: function getHierarchyComponentManager() {\n return this.hierarchy;\n }\n }, {\n key: \"getTransformComponentManager\",\n value: function getTransformComponentManager() {\n return this.transform;\n }\n }, {\n key: \"runTransformUpdateSystem\",\n value: function runTransformUpdateSystem() {\n var _this = this;\n\n // 原版基于 JobSystem 实现\n this.transform.forEach(function (entity, transform) {\n if (transform.isDirty() || transform.isLocalDirty()) {\n _this.setMeshAABBDirty(_this.mesh.getComponentByEntity(entity));\n\n transform.updateTransform();\n }\n });\n }\n }, {\n key: \"runHierarchyUpdateSystem\",\n value: function runHierarchyUpdateSystem() {\n var _this2 = this;\n\n this.hierarchy.forEach(function (entity, parentComponent) {\n var transformChild = _this2.transform.getComponentByEntity(entity);\n\n var transformParent = _this2.transform.getComponentByEntity(parentComponent.parentID);\n\n if (transformChild !== null && transformParent !== null) {\n transformChild.updateTransformWithParent(transformParent);\n }\n });\n }\n }, {\n key: \"attach\",\n value: function attach(entity, parent, isChildAlreadyInLocalSpace) {\n if (this.hierarchy.contains(entity)) {\n this.detach(entity);\n }\n\n this.hierarchy.create(entity, {\n parentID: parent\n });\n var mesh = this.mesh.getComponentByEntity(parent); // inform parent mesh to update its aabb\n\n this.setMeshAABBDirty(mesh);\n\n if (mesh && mesh.children.indexOf(entity) === -1) {\n mesh.children.push(entity);\n }\n\n if (this.hierarchy.getCount() > 1) {\n for (var i = this.hierarchy.getCount() - 1; i > 0; --i) {\n var parentCandidateEntity = this.hierarchy.getEntity(i); // const parentCandidateComponent = this.hierarchy.getComponent(i);\n\n for (var j = 0; j < i; ++j) {\n var childCandidateEntity = this.hierarchy.getComponent(j);\n\n if (childCandidateEntity.parentID === parentCandidateEntity) {\n this.hierarchy.moveItem(i, j);\n ++i; // next outer iteration will check the same index again as parent candidate, however things were moved upwards, so it will be a different entity!\n\n break;\n }\n }\n }\n } // Re-query parent after potential MoveItem(), because it invalidates references:\n\n\n var parentcomponent = this.hierarchy.getComponentByEntity(entity);\n var transformParent = this.transform.getComponentByEntity(parent);\n\n if (transformParent === null) {\n transformParent = this.transform.create(parent);\n }\n\n var transformChild = this.transform.getComponentByEntity(entity);\n\n if (transformChild === null) {\n transformChild = this.transform.create(entity); // after transforms.Create(), transform_parent pointer could have become invalidated!\n\n transformParent = this.transform.getComponentByEntity(parent);\n }\n\n transformChild.parent = transformParent;\n\n if (!isChildAlreadyInLocalSpace && transformParent) {\n transformChild.matrixTransform(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].invert(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), transformParent.worldTransform));\n transformChild.updateTransform();\n }\n\n if (transformParent) {\n transformChild.updateTransformWithParent(transformParent);\n }\n }\n }, {\n key: \"detach\",\n value: function detach(entity) {\n var self = this.hierarchy.getComponentByEntity(entity);\n\n if (self !== null) {\n var transform = this.transform.getComponentByEntity(entity);\n\n if (transform !== null) {\n transform.parent = null;\n transform.applyTransform();\n }\n\n this.hierarchy.removeKeepSorted(entity); // inform parent mesh to update its aabb\n\n var mesh = this.mesh.getComponentByEntity(self.parentID);\n\n if (mesh) {\n var index = mesh.children.indexOf(entity);\n mesh.children.splice(index, 1);\n }\n\n this.setMeshAABBDirty(mesh);\n }\n }\n }, {\n key: \"detachChildren\",\n value: function detachChildren(parent) {\n var mesh = this.mesh.getComponentByEntity(parent);\n\n if (mesh) {\n mesh.children = [];\n }\n\n for (var i = 0; i < this.hierarchy.getCount();) {\n var _this$hierarchy$getCo;\n\n if (((_this$hierarchy$getCo = this.hierarchy.getComponent(i)) === null || _this$hierarchy$getCo === void 0 ? void 0 : _this$hierarchy$getCo.parentID) === parent) {\n var entity = this.hierarchy.getEntity(i);\n this.detach(entity);\n } else {\n ++i;\n }\n }\n }\n }, {\n key: \"setMeshAABBDirty\",\n value: function setMeshAABBDirty(mesh) {\n if (mesh) {\n mesh.aabbDirty = true;\n }\n }\n }]);\n\n return SceneGraphSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvU3lzdGVtLmpzPzA0NWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRWlDO0FBQ2M7QUFDRDtBQUN2QywrQkFBK0IsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVO0FBQ3pMO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjtBQUM5Qjs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLHFCQUFxQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDeEUsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asd0RBQXdEOztBQUV4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtREFBbUQsT0FBTztBQUMxRCxrRUFBa0U7O0FBRWxFLHlCQUF5QixPQUFPO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1REFBdUQ7O0FBRXZEO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1Q0FBdUMsOENBQUksUUFBUSw4Q0FBSTtBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdEQUFnRDs7QUFFaEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLCtCQUErQjtBQUNwRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvc2NlbmVncmFwaC9TeXN0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2RlYzQsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfdGVtcDtcblxuaW1wb3J0IHsgbWF0NCB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL2lkZW50aWZpZXInO1xuZXhwb3J0IHZhciBTY2VuZUdyYXBoU3lzdGVtID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuTWVzaENvbXBvbmVudE1hbmFnZXIpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU2NlbmVHcmFwaFN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2NlbmVHcmFwaFN5c3RlbSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImhpZXJhcmNoeVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInRyYW5zZm9ybVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtZXNoXCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2NlbmVHcmFwaFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMucnVuVHJhbnNmb3JtVXBkYXRlU3lzdGVtKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ydW5IaWVyYXJjaHlVcGRhdGVTeXN0ZW0oKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gICAgICAgIHJldHVybiBfZXhlY3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXhlY3V0ZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJ0ZWFyRG93blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0ZWFyRG93bigpIHtcbiAgICAgIHRoaXMuaGllcmFyY2h5LmNsZWFyKCk7XG4gICAgICB0aGlzLnRyYW5zZm9ybS5jbGVhcigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRIaWVyYXJjaHlDb21wb25lbnRNYW5hZ2VyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEhpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWVyYXJjaHk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFRyYW5zZm9ybUNvbXBvbmVudE1hbmFnZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicnVuVHJhbnNmb3JtVXBkYXRlU3lzdGVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1blRyYW5zZm9ybVVwZGF0ZVN5c3RlbSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIOWOn+eJiOWfuuS6jiBKb2JTeXN0ZW0g5a6e546wXG4gICAgICB0aGlzLnRyYW5zZm9ybS5mb3JFYWNoKGZ1bmN0aW9uIChlbnRpdHksIHRyYW5zZm9ybSkge1xuICAgICAgICBpZiAodHJhbnNmb3JtLmlzRGlydHkoKSB8fCB0cmFuc2Zvcm0uaXNMb2NhbERpcnR5KCkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRNZXNoQUFCQkRpcnR5KF90aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KSk7XG5cbiAgICAgICAgICB0cmFuc2Zvcm0udXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJydW5IaWVyYXJjaHlVcGRhdGVTeXN0ZW1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuSGllcmFyY2h5VXBkYXRlU3lzdGVtKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuaGllcmFyY2h5LmZvckVhY2goZnVuY3Rpb24gKGVudGl0eSwgcGFyZW50Q29tcG9uZW50KSB7XG4gICAgICAgIHZhciB0cmFuc2Zvcm1DaGlsZCA9IF90aGlzMi50cmFuc2Zvcm0uZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgICB2YXIgdHJhbnNmb3JtUGFyZW50ID0gX3RoaXMyLnRyYW5zZm9ybS5nZXRDb21wb25lbnRCeUVudGl0eShwYXJlbnRDb21wb25lbnQucGFyZW50SUQpO1xuXG4gICAgICAgIGlmICh0cmFuc2Zvcm1DaGlsZCAhPT0gbnVsbCAmJiB0cmFuc2Zvcm1QYXJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICB0cmFuc2Zvcm1DaGlsZC51cGRhdGVUcmFuc2Zvcm1XaXRoUGFyZW50KHRyYW5zZm9ybVBhcmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhdHRhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXR0YWNoKGVudGl0eSwgcGFyZW50LCBpc0NoaWxkQWxyZWFkeUluTG9jYWxTcGFjZSkge1xuICAgICAgaWYgKHRoaXMuaGllcmFyY2h5LmNvbnRhaW5zKGVudGl0eSkpIHtcbiAgICAgICAgdGhpcy5kZXRhY2goZW50aXR5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oaWVyYXJjaHkuY3JlYXRlKGVudGl0eSwge1xuICAgICAgICBwYXJlbnRJRDogcGFyZW50XG4gICAgICB9KTtcbiAgICAgIHZhciBtZXNoID0gdGhpcy5tZXNoLmdldENvbXBvbmVudEJ5RW50aXR5KHBhcmVudCk7IC8vIGluZm9ybSBwYXJlbnQgbWVzaCB0byB1cGRhdGUgaXRzIGFhYmJcblxuICAgICAgdGhpcy5zZXRNZXNoQUFCQkRpcnR5KG1lc2gpO1xuXG4gICAgICBpZiAobWVzaCAmJiBtZXNoLmNoaWxkcmVuLmluZGV4T2YoZW50aXR5KSA9PT0gLTEpIHtcbiAgICAgICAgbWVzaC5jaGlsZHJlbi5wdXNoKGVudGl0eSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmhpZXJhcmNoeS5nZXRDb3VudCgpID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q291bnQoKSAtIDE7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgICB2YXIgcGFyZW50Q2FuZGlkYXRlRW50aXR5ID0gdGhpcy5oaWVyYXJjaHkuZ2V0RW50aXR5KGkpOyAvLyBjb25zdCBwYXJlbnRDYW5kaWRhdGVDb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnQoaSk7XG5cbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGk7ICsraikge1xuICAgICAgICAgICAgdmFyIGNoaWxkQ2FuZGlkYXRlRW50aXR5ID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50KGopO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGRDYW5kaWRhdGVFbnRpdHkucGFyZW50SUQgPT09IHBhcmVudENhbmRpZGF0ZUVudGl0eSkge1xuICAgICAgICAgICAgICB0aGlzLmhpZXJhcmNoeS5tb3ZlSXRlbShpLCBqKTtcbiAgICAgICAgICAgICAgKytpOyAvLyBuZXh0IG91dGVyIGl0ZXJhdGlvbiB3aWxsIGNoZWNrIHRoZSBzYW1lIGluZGV4IGFnYWluIGFzIHBhcmVudCBjYW5kaWRhdGUsIGhvd2V2ZXIgdGhpbmdzIHdlcmUgbW92ZWQgdXB3YXJkcywgc28gaXQgd2lsbCBiZSBhIGRpZmZlcmVudCBlbnRpdHkhXG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIFJlLXF1ZXJ5IHBhcmVudCBhZnRlciBwb3RlbnRpYWwgTW92ZUl0ZW0oKSwgYmVjYXVzZSBpdCBpbnZhbGlkYXRlcyByZWZlcmVuY2VzOlxuXG5cbiAgICAgIHZhciBwYXJlbnRjb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpO1xuICAgICAgdmFyIHRyYW5zZm9ybVBhcmVudCA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KHBhcmVudCk7XG5cbiAgICAgIGlmICh0cmFuc2Zvcm1QYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgdHJhbnNmb3JtUGFyZW50ID0gdGhpcy50cmFuc2Zvcm0uY3JlYXRlKHBhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIHZhciB0cmFuc2Zvcm1DaGlsZCA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSk7XG5cbiAgICAgIGlmICh0cmFuc2Zvcm1DaGlsZCA9PT0gbnVsbCkge1xuICAgICAgICB0cmFuc2Zvcm1DaGlsZCA9IHRoaXMudHJhbnNmb3JtLmNyZWF0ZShlbnRpdHkpOyAvLyBhZnRlciB0cmFuc2Zvcm1zLkNyZWF0ZSgpLCB0cmFuc2Zvcm1fcGFyZW50IHBvaW50ZXIgY291bGQgaGF2ZSBiZWNvbWUgaW52YWxpZGF0ZWQhXG5cbiAgICAgICAgdHJhbnNmb3JtUGFyZW50ID0gdGhpcy50cmFuc2Zvcm0uZ2V0Q29tcG9uZW50QnlFbnRpdHkocGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNmb3JtQ2hpbGQucGFyZW50ID0gdHJhbnNmb3JtUGFyZW50O1xuXG4gICAgICBpZiAoIWlzQ2hpbGRBbHJlYWR5SW5Mb2NhbFNwYWNlICYmIHRyYW5zZm9ybVBhcmVudCkge1xuICAgICAgICB0cmFuc2Zvcm1DaGlsZC5tYXRyaXhUcmFuc2Zvcm0obWF0NC5pbnZlcnQobWF0NC5jcmVhdGUoKSwgdHJhbnNmb3JtUGFyZW50LndvcmxkVHJhbnNmb3JtKSk7XG4gICAgICAgIHRyYW5zZm9ybUNoaWxkLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHJhbnNmb3JtUGFyZW50KSB7XG4gICAgICAgIHRyYW5zZm9ybUNoaWxkLnVwZGF0ZVRyYW5zZm9ybVdpdGhQYXJlbnQodHJhbnNmb3JtUGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGV0YWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRldGFjaChlbnRpdHkpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgaWYgKHNlbGYgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIHRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSk7XG5cbiAgICAgICAgaWYgKHRyYW5zZm9ybSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRyYW5zZm9ybS5wYXJlbnQgPSBudWxsO1xuICAgICAgICAgIHRyYW5zZm9ybS5hcHBseVRyYW5zZm9ybSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWVyYXJjaHkucmVtb3ZlS2VlcFNvcnRlZChlbnRpdHkpOyAvLyBpbmZvcm0gcGFyZW50IG1lc2ggdG8gdXBkYXRlIGl0cyBhYWJiXG5cbiAgICAgICAgdmFyIG1lc2ggPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoc2VsZi5wYXJlbnRJRCk7XG5cbiAgICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgICB2YXIgaW5kZXggPSBtZXNoLmNoaWxkcmVuLmluZGV4T2YoZW50aXR5KTtcbiAgICAgICAgICBtZXNoLmNoaWxkcmVuLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldE1lc2hBQUJCRGlydHkobWVzaCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRldGFjaENoaWxkcmVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRldGFjaENoaWxkcmVuKHBhcmVudCkge1xuICAgICAgdmFyIG1lc2ggPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkocGFyZW50KTtcblxuICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgbWVzaC5jaGlsZHJlbiA9IFtdO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaGllcmFyY2h5LmdldENvdW50KCk7KSB7XG4gICAgICAgIHZhciBfdGhpcyRoaWVyYXJjaHkkZ2V0Q287XG5cbiAgICAgICAgaWYgKCgoX3RoaXMkaGllcmFyY2h5JGdldENvID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50KGkpKSA9PT0gbnVsbCB8fCBfdGhpcyRoaWVyYXJjaHkkZ2V0Q28gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGhpZXJhcmNoeSRnZXRDby5wYXJlbnRJRCkgPT09IHBhcmVudCkge1xuICAgICAgICAgIHZhciBlbnRpdHkgPSB0aGlzLmhpZXJhcmNoeS5nZXRFbnRpdHkoaSk7XG4gICAgICAgICAgdGhpcy5kZXRhY2goZW50aXR5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICArK2k7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWVzaEFBQkJEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNZXNoQUFCQkRpcnR5KG1lc2gpIHtcbiAgICAgIGlmIChtZXNoKSB7XG4gICAgICAgIG1lc2guYWFiYkRpcnR5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2NlbmVHcmFwaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImhpZXJhcmNoeVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJ0cmFuc2Zvcm1cIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWVzaFwiLCBbX2RlYzRdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/scenegraph/System.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js": /*!*****************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js ***! \*****************************************************************************************/ /*! exports provided: TransformComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransformComponent\", function() { return TransformComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar TransformComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(TransformComponent, _Component);\n\n var _super = _createSuper(TransformComponent);\n\n /**\n * local space RTS\n */\n\n /**\n * XMFLOAT4X4._41\n * @see https://docs.microsoft.com/en-us/windows/win32/api/directxmath/nf-directxmath-xmfloat4x4-xmfloat4x4(constfloat)#remarks\n */\n\n /**\n * world space RTS\n */\n // 高阶函数,利用闭包重复利用临时变量\n // @see playcanvas graph node\n\n /**\n * @see https://docs.microsoft.com/en-us/windows/win32/api/directxmath/nf-directxmath-xmquaternionrotationrollpitchyaw\n */\n\n /**\n * @see https://xiaoiver.github.io/coding/2018/12/28/Camera-%E8%AE%BE%E8%AE%A1-%E4%B8%80.html\n */\n\n /**\n * TODO: 支持以下两种:\n * * translate(x, y, z)\n * * translate(vec3(x, y, z))\n */\n\n /**\n * @see https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline\n */\n // public catmullRom = (() => {\n // const aS = vec3.create();\n // const aR = quat.create();\n // const aT = vec3.create();\n // const bS = vec3.create();\n // const bR = quat.create();\n // const bT = vec3.create();\n // const cS = vec3.create();\n // const cR = quat.create();\n // const cT = vec3.create();\n // const dS = vec3.create();\n // const dR = quat.create();\n // const dT = vec3.create();\n // const R = quat.create();\n // return (\n // a: TransformComponent,\n // b: TransformComponent,\n // c: TransformComponent,\n // d: TransformComponent,\n // t: number,\n // ) => {\n // this.setDirty();\n // mat4.getScaling(aS, a.worldTransform);\n // mat4.getTranslation(aT, a.worldTransform);\n // mat4.getRotation(aR, a.worldTransform);\n // mat4.getScaling(bS, b.worldTransform);\n // mat4.getTranslation(bT, b.worldTransform);\n // mat4.getRotation(bR, b.worldTransform);\n // mat4.getScaling(cS, c.worldTransform);\n // mat4.getTranslation(cT, c.worldTransform);\n // mat4.getRotation(cR, c.worldTransform);\n // mat4.getScaling(dS, d.worldTransform);\n // mat4.getTranslation(dT, d.worldTransform);\n // mat4.getRotation(dR, d.worldTransform);\n // vec3.catmullRom(this.localPosition, aT, bT, cT, dT, t);\n // vec3.catmullRom(R, aR, bR, cR, dR, t);\n // quat.normalize(this.localRotation, R);\n // vec3.catmullRom(this.localScale, aS, bS, cS, dS, t);\n // };\n // })();\n function TransformComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, TransformComponent);\n\n _this = _super.call(this, data);\n _this.dirtyFlag = void 0;\n _this.localDirtyFlag = void 0;\n _this.parent = null;\n _this.localPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n _this.localRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n _this.localScale = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n _this.localTransform = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n _this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n _this.rotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n _this.scaling = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n _this.worldTransform = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n\n _this.matrixTransform = function () {\n var transformed = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n return function (mat) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(transformed, _this.getLocalTransform(), mat);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(_this.localScale, transformed);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(_this.localPosition, transformed);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(_this.localRotation, transformed);\n };\n }();\n\n _this.rotateRollPitchYaw = function () {\n var quatX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var quatY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var quatZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (x, y, z) {\n _this.setDirty();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatX, x, 0, 0);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatY, 0, y, 0);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatZ, 0, 0, z);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quatX, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quatY);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quatZ, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n };\n }();\n\n _this.lerp = function () {\n var aS = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var aR = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var aT = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var bS = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var bR = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var bT = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n return function (a, b, t) {\n _this.setDirty();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(aS, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(aT, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(aR, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(bS, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(bT, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(bR, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(_this.localScale, aS, bS, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].slerp(_this.localRotation, aR, bR, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(_this.localPosition, aT, bT, t);\n };\n }();\n\n _this.translate = function () {\n var tr = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n return function (translation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(tr, _this.getPosition(), translation);\n\n _this.setPosition(tr);\n\n _this.setDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.translateLocal = function () {\n return function (translation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformQuat(translation, translation, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(_this.localPosition, _this.localPosition, translation);\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.setPosition = function () {\n var parentInvertMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n return function (position) {\n _this.position = position;\n\n _this.setLocalDirty(true);\n\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(_this.localPosition, position);\n } else {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].copy(parentInvertMatrix, _this.parent.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(parentInvertMatrix, parentInvertMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat4(_this.localPosition, position, parentInvertMatrix);\n }\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.rotate = function () {\n var parentInvertRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (quaternion) {\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n } else {\n var rot = _this.getRotation();\n\n var parentRot = _this.parent.getRotation();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(parentInvertRotation, parentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].invert(parentInvertRotation, parentInvertRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(parentInvertRotation, parentInvertRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quaternion, rot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n }\n\n _this.setLocalDirty();\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.rotateLocal = function () {\n return function (quaternion) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.setRotation = function () {\n var invParentRot = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (rotation) {\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(_this.localRotation, rotation);\n } else {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(invParentRot, _this.parent.getRotation());\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].invert(invParentRot, invParentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(_this.localRotation, invParentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].mul(_this.localRotation, _this.localRotation, rotation);\n }\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(TransformComponent, [{\n key: \"setLocalPosition\",\n value: function setLocalPosition(position) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.localPosition, position);\n this.setLocalDirty(true);\n }\n }, {\n key: \"setLocalScale\",\n value: function setLocalScale(scale) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.localScale, scale);\n this.setLocalDirty(true);\n }\n }, {\n key: \"setLocalRotation\",\n value: function setLocalRotation(rotation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(this.localRotation, rotation);\n this.setLocalDirty(true);\n return this;\n }\n }, {\n key: \"isDirty\",\n value: function isDirty() {\n return this.dirtyFlag;\n }\n }, {\n key: \"setDirty\",\n value: function setDirty() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (value) {\n this.dirtyFlag |= TransformComponent.DIRTY;\n } else {\n this.dirtyFlag &= ~TransformComponent.DIRTY;\n }\n }\n }, {\n key: \"isLocalDirty\",\n value: function isLocalDirty() {\n return this.localDirtyFlag;\n }\n }, {\n key: \"setLocalDirty\",\n value: function setLocalDirty() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (value) {\n this.localDirtyFlag |= TransformComponent.DIRTY;\n this.setDirty(true);\n } else {\n this.localDirtyFlag &= ~TransformComponent.DIRTY;\n }\n }\n }, {\n key: \"updateTransform\",\n value: function updateTransform() {\n if (this.isLocalDirty()) {\n this.getLocalTransform();\n }\n\n if (this.isDirty()) {\n if (this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].copy(this.worldTransform, this.getLocalTransform());\n this.setDirty(false);\n }\n }\n }\n }, {\n key: \"updateTransformWithParent\",\n value: function updateTransformWithParent(parent) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.worldTransform, parent.worldTransform, this.getLocalTransform());\n }\n }, {\n key: \"applyTransform\",\n value: function applyTransform() {\n this.setDirty();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(this.localScale, this.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(this.localPosition, this.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(this.localRotation, this.worldTransform);\n }\n }, {\n key: \"clearTransform\",\n value: function clearTransform() {\n this.setDirty();\n this.localPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.localRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n this.localScale = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n }\n }, {\n key: \"scaleLocal\",\n value: function scaleLocal(scaling) {\n this.setLocalDirty();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].multiply(this.localScale, this.localScale, scaling);\n return this;\n }\n }, {\n key: \"getLocalPosition\",\n value: function getLocalPosition() {\n return this.localPosition;\n }\n }, {\n key: \"getLocalRotation\",\n value: function getLocalRotation() {\n return this.localRotation;\n }\n }, {\n key: \"getLocalScale\",\n value: function getLocalScale() {\n return this.localScale;\n }\n }, {\n key: \"getLocalTransform\",\n value: function getLocalTransform() {\n if (this.localDirtyFlag) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromRotationTranslationScale(this.localTransform, this.localRotation, this.localPosition, this.localScale);\n this.setLocalDirty(false);\n }\n\n return this.localTransform;\n }\n }, {\n key: \"getWorldTransform\",\n value: function getWorldTransform() {\n if (!this.isLocalDirty() && !this.isDirty()) {\n return this.worldTransform;\n }\n\n if (this.parent) {\n this.parent.getWorldTransform();\n }\n\n this.updateTransform();\n return this.worldTransform;\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(this.position, this.worldTransform);\n return this.position;\n }\n }, {\n key: \"getRotation\",\n value: function getRotation() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(this.rotation, this.worldTransform);\n return this.rotation;\n }\n }, {\n key: \"getScale\",\n value: function getScale() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(this.scaling, this.worldTransform);\n return this.scaling;\n }\n }]);\n\n return TransformComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_7__[\"Component\"]);\nTransformComponent.DIRTY = 1 << 0;\n//# sourceMappingURL=TransformComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvVHJhbnNmb3JtQ29tcG9uZW50LmpzPzE5Y2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFclI7QUFDTTtBQUM1QztBQUNQLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDhDQUFJO0FBQzlCLDBCQUEwQiw4Q0FBSTtBQUM5Qix1QkFBdUIsOENBQUk7QUFDM0IsMkJBQTJCLDhDQUFJO0FBQy9CLHFCQUFxQiw4Q0FBSTtBQUN6QixxQkFBcUIsOENBQUk7QUFDekIsb0JBQW9CLDhDQUFJO0FBQ3hCLDJCQUEyQiw4Q0FBSTs7QUFFL0I7QUFDQSx3QkFBd0IsOENBQUk7QUFDNUI7QUFDQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7QUFDQSxLQUFLOztBQUVMO0FBQ0Esa0JBQWtCLDhDQUFJO0FBQ3RCLGtCQUFrQiw4Q0FBSTtBQUN0QixrQkFBa0IsOENBQUk7QUFDdEI7QUFDQTs7QUFFQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7QUFDQSxLQUFLOztBQUVMO0FBQ0EsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CLGVBQWUsOENBQUk7QUFDbkIsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CLGVBQWUsOENBQUk7QUFDbkI7QUFDQTs7QUFFQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWjtBQUNBLEtBQUs7O0FBRUw7QUFDQSxlQUFlLDhDQUFJO0FBQ25CO0FBQ0EsUUFBUSw4Q0FBSTs7QUFFWjs7QUFFQTs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJOztBQUVaOztBQUVBLGVBQWUsbUZBQXNCO0FBQ3JDO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLCtCQUErQiw4Q0FBSTtBQUNuQztBQUNBOztBQUVBOztBQUVBO0FBQ0EsVUFBVSw4Q0FBSTtBQUNkLFNBQVM7QUFDVCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZDs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQSxpQ0FBaUMsOENBQUk7QUFDckM7QUFDQTtBQUNBLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsU0FBUztBQUNUOztBQUVBOztBQUVBLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2Q7O0FBRUE7O0FBRUEsZUFBZSxtRkFBc0I7QUFDckM7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTs7QUFFWjs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQSx5QkFBeUIsOENBQUk7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOENBQUk7QUFDZCxTQUFTO0FBQ1QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkOztBQUVBOztBQUVBLGVBQWUsbUZBQXNCO0FBQ3JDO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVLDhDQUFJO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7QUFDVjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsOENBQUk7QUFDL0IsMkJBQTJCLDhDQUFJO0FBQy9CLHdCQUF3Qiw4Q0FBSTtBQUM1QjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFJO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMkRBQVM7QUFDWDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL1RyYW5zZm9ybUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBtYXQ0LCBxdWF0LCB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBUcmFuc2Zvcm1Db21wb25lbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRyYW5zZm9ybUNvbXBvbmVudCwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUcmFuc2Zvcm1Db21wb25lbnQpO1xuXG4gIC8qKlxuICAgKiBsb2NhbCBzcGFjZSBSVFNcbiAgICovXG5cbiAgLyoqXG4gICAqIFhNRkxPQVQ0WDQuXzQxXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkvZGlyZWN0eG1hdGgvbmYtZGlyZWN0eG1hdGgteG1mbG9hdDR4NC14bWZsb2F0NHg0KGNvbnN0ZmxvYXQpI3JlbWFya3NcbiAgICovXG5cbiAgLyoqXG4gICAqIHdvcmxkIHNwYWNlIFJUU1xuICAgKi9cbiAgLy8g6auY6Zi25Ye95pWw77yM5Yip55So6Zet5YyF6YeN5aSN5Yip55So5Li05pe25Y+Y6YePXG4gIC8vIEBzZWUgcGxheWNhbnZhcyBncmFwaCBub2RlXG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkvZGlyZWN0eG1hdGgvbmYtZGlyZWN0eG1hdGgteG1xdWF0ZXJuaW9ucm90YXRpb25yb2xscGl0Y2h5YXdcbiAgICovXG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly94aWFvaXZlci5naXRodWIuaW8vY29kaW5nLzIwMTgvMTIvMjgvQ2FtZXJhLSVFOCVBRSVCRSVFOCVBRSVBMS0lRTQlQjglODAuaHRtbFxuICAgKi9cblxuICAvKipcbiAgICogVE9ETzog5pSv5oyB5Lul5LiL5Lik56eN77yaXG4gICAqICogdHJhbnNsYXRlKHgsIHksIHopXG4gICAqICogdHJhbnNsYXRlKHZlYzMoeCwgeSwgeikpXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NlbnRyaXBldGFsX0NhdG11bGwlRTIlODAlOTNSb21fc3BsaW5lXG4gICAqL1xuICAvLyBwdWJsaWMgY2F0bXVsbFJvbSA9ICgoKSA9PiB7XG4gIC8vICAgY29uc3QgYVMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGFSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBhVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgYlMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGJSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBiVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgY1MgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGNSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBjVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgZFMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGRSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBkVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgUiA9IHF1YXQuY3JlYXRlKCk7XG4gIC8vICAgcmV0dXJuIChcbiAgLy8gICAgIGE6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGI6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGM6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGQ6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIHQ6IG51bWJlcixcbiAgLy8gICApID0+IHtcbiAgLy8gICAgIHRoaXMuc2V0RGlydHkoKTtcbiAgLy8gICAgIG1hdDQuZ2V0U2NhbGluZyhhUywgYS53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGFULCBhLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0Um90YXRpb24oYVIsIGEud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRTY2FsaW5nKGJTLCBiLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oYlQsIGIud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRSb3RhdGlvbihiUiwgYi53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFNjYWxpbmcoY1MsIGMud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRUcmFuc2xhdGlvbihjVCwgYy53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFJvdGF0aW9uKGNSLCBjLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0U2NhbGluZyhkUywgZC53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGRULCBkLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0Um90YXRpb24oZFIsIGQud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgdmVjMy5jYXRtdWxsUm9tKHRoaXMubG9jYWxQb3NpdGlvbiwgYVQsIGJULCBjVCwgZFQsIHQpO1xuICAvLyAgICAgdmVjMy5jYXRtdWxsUm9tKFIsIGFSLCBiUiwgY1IsIGRSLCB0KTtcbiAgLy8gICAgIHF1YXQubm9ybWFsaXplKHRoaXMubG9jYWxSb3RhdGlvbiwgUik7XG4gIC8vICAgICB2ZWMzLmNhdG11bGxSb20odGhpcy5sb2NhbFNjYWxlLCBhUywgYlMsIGNTLCBkUywgdCk7XG4gIC8vICAgfTtcbiAgLy8gfSkoKTtcbiAgZnVuY3Rpb24gVHJhbnNmb3JtQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVHJhbnNmb3JtQ29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMuZGlydHlGbGFnID0gdm9pZCAwO1xuICAgIF90aGlzLmxvY2FsRGlydHlGbGFnID0gdm9pZCAwO1xuICAgIF90aGlzLnBhcmVudCA9IG51bGw7XG4gICAgX3RoaXMubG9jYWxQb3NpdGlvbiA9IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAwKTtcbiAgICBfdGhpcy5sb2NhbFJvdGF0aW9uID0gcXVhdC5mcm9tVmFsdWVzKDAsIDAsIDAsIDEpO1xuICAgIF90aGlzLmxvY2FsU2NhbGUgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgX3RoaXMubG9jYWxUcmFuc2Zvcm0gPSBtYXQ0LmNyZWF0ZSgpO1xuICAgIF90aGlzLnBvc2l0aW9uID0gdmVjMy5mcm9tVmFsdWVzKDAsIDAsIDApO1xuICAgIF90aGlzLnJvdGF0aW9uID0gcXVhdC5mcm9tVmFsdWVzKDAsIDAsIDAsIDEpO1xuICAgIF90aGlzLnNjYWxpbmcgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgX3RoaXMud29ybGRUcmFuc2Zvcm0gPSBtYXQ0LmNyZWF0ZSgpO1xuXG4gICAgX3RoaXMubWF0cml4VHJhbnNmb3JtID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHRyYW5zZm9ybWVkID0gbWF0NC5jcmVhdGUoKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAobWF0KSB7XG4gICAgICAgIG1hdDQubXVsdGlwbHkodHJhbnNmb3JtZWQsIF90aGlzLmdldExvY2FsVHJhbnNmb3JtKCksIG1hdCk7XG4gICAgICAgIG1hdDQuZ2V0U2NhbGluZyhfdGhpcy5sb2NhbFNjYWxlLCB0cmFuc2Zvcm1lZCk7XG4gICAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oX3RoaXMubG9jYWxQb3NpdGlvbiwgdHJhbnNmb3JtZWQpO1xuICAgICAgICBtYXQ0LmdldFJvdGF0aW9uKF90aGlzLmxvY2FsUm90YXRpb24sIHRyYW5zZm9ybWVkKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMucm90YXRlUm9sbFBpdGNoWWF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHF1YXRYID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBxdWF0WSA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICB2YXIgcXVhdFogPSBxdWF0LmNyZWF0ZSgpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIF90aGlzLnNldERpcnR5KCk7XG5cbiAgICAgICAgcXVhdC5mcm9tRXVsZXIocXVhdFgsIHgsIDAsIDApO1xuICAgICAgICBxdWF0LmZyb21FdWxlcihxdWF0WSwgMCwgeSwgMCk7XG4gICAgICAgIHF1YXQuZnJvbUV1bGVyKHF1YXRaLCAwLCAwLCB6KTtcbiAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0WCwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICAgIHF1YXQubXVsdGlwbHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcXVhdFkpO1xuICAgICAgICBxdWF0Lm11bHRpcGx5KF90aGlzLmxvY2FsUm90YXRpb24sIHF1YXRaLCBfdGhpcy5sb2NhbFJvdGF0aW9uKTtcbiAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLmxlcnAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgYVMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgdmFyIGFSID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBhVCA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICB2YXIgYlMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgdmFyIGJSID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBiVCA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIHQpIHtcbiAgICAgICAgX3RoaXMuc2V0RGlydHkoKTtcblxuICAgICAgICBtYXQ0LmdldFNjYWxpbmcoYVMsIGEud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGFULCBhLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgICAgbWF0NC5nZXRSb3RhdGlvbihhUiwgYS53b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgIG1hdDQuZ2V0U2NhbGluZyhiUywgYi53b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oYlQsIGIud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICBtYXQ0LmdldFJvdGF0aW9uKGJSLCBiLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgICAgdmVjMy5sZXJwKF90aGlzLmxvY2FsU2NhbGUsIGFTLCBiUywgdCk7XG4gICAgICAgIHF1YXQuc2xlcnAoX3RoaXMubG9jYWxSb3RhdGlvbiwgYVIsIGJSLCB0KTtcbiAgICAgICAgdmVjMy5sZXJwKF90aGlzLmxvY2FsUG9zaXRpb24sIGFULCBiVCwgdCk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0ciA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHRyYW5zbGF0aW9uKSB7XG4gICAgICAgIHZlYzMuYWRkKHRyLCBfdGhpcy5nZXRQb3NpdGlvbigpLCB0cmFuc2xhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0UG9zaXRpb24odHIpO1xuXG4gICAgICAgIF90aGlzLnNldERpcnR5KHRydWUpO1xuXG4gICAgICAgIHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMudHJhbnNsYXRlTG9jYWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHRyYW5zbGF0aW9uKSB7XG4gICAgICAgIHZlYzMudHJhbnNmb3JtUXVhdCh0cmFuc2xhdGlvbiwgdHJhbnNsYXRpb24sIF90aGlzLmxvY2FsUm90YXRpb24pO1xuICAgICAgICB2ZWMzLmFkZChfdGhpcy5sb2NhbFBvc2l0aW9uLCBfdGhpcy5sb2NhbFBvc2l0aW9uLCB0cmFuc2xhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnNldFBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHBhcmVudEludmVydE1hdHJpeCA9IG1hdDQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHBvc2l0aW9uKSB7XG4gICAgICAgIF90aGlzLnBvc2l0aW9uID0gcG9zaXRpb247XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICBpZiAoX3RoaXMucGFyZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgdmVjMy5jb3B5KF90aGlzLmxvY2FsUG9zaXRpb24sIHBvc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXQ0LmNvcHkocGFyZW50SW52ZXJ0TWF0cml4LCBfdGhpcy5wYXJlbnQud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICAgIG1hdDQuaW52ZXJ0KHBhcmVudEludmVydE1hdHJpeCwgcGFyZW50SW52ZXJ0TWF0cml4KTtcbiAgICAgICAgICB2ZWMzLnRyYW5zZm9ybU1hdDQoX3RoaXMubG9jYWxQb3NpdGlvbiwgcG9zaXRpb24sIHBhcmVudEludmVydE1hdHJpeCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnJvdGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwYXJlbnRJbnZlcnRSb3RhdGlvbiA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHF1YXRlcm5pb24pIHtcbiAgICAgICAgaWYgKF90aGlzLnBhcmVudCA9PT0gbnVsbCkge1xuICAgICAgICAgIHF1YXQubXVsdGlwbHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcXVhdGVybmlvbik7XG4gICAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHJvdCA9IF90aGlzLmdldFJvdGF0aW9uKCk7XG5cbiAgICAgICAgICB2YXIgcGFyZW50Um90ID0gX3RoaXMucGFyZW50LmdldFJvdGF0aW9uKCk7XG5cbiAgICAgICAgICBxdWF0LmNvcHkocGFyZW50SW52ZXJ0Um90YXRpb24sIHBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5pbnZlcnQocGFyZW50SW52ZXJ0Um90YXRpb24sIHBhcmVudEludmVydFJvdGF0aW9uKTtcbiAgICAgICAgICBxdWF0Lm11bHRpcGx5KHBhcmVudEludmVydFJvdGF0aW9uLCBwYXJlbnRJbnZlcnRSb3RhdGlvbiwgcXVhdGVybmlvbik7XG4gICAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0ZXJuaW9uLCByb3QpO1xuICAgICAgICAgIHF1YXQubm9ybWFsaXplKF90aGlzLmxvY2FsUm90YXRpb24sIF90aGlzLmxvY2FsUm90YXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSgpO1xuXG4gICAgICAgIHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMucm90YXRlTG9jYWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHF1YXRlcm5pb24pIHtcbiAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0ZXJuaW9uKTtcbiAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnNldFJvdGF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGludlBhcmVudFJvdCA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHJvdGF0aW9uKSB7XG4gICAgICAgIGlmIChfdGhpcy5wYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICBxdWF0LmNvcHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgcm90YXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1YXQuY29weShpbnZQYXJlbnRSb3QsIF90aGlzLnBhcmVudC5nZXRSb3RhdGlvbigpKTtcbiAgICAgICAgICBxdWF0LmludmVydChpbnZQYXJlbnRSb3QsIGludlBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5jb3B5KF90aGlzLmxvY2FsUm90YXRpb24sIGludlBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5tdWwoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcm90YXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUcmFuc2Zvcm1Db21wb25lbnQsIFt7XG4gICAga2V5OiBcInNldExvY2FsUG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TG9jYWxQb3NpdGlvbihwb3NpdGlvbikge1xuICAgICAgdmVjMy5jb3B5KHRoaXMubG9jYWxQb3NpdGlvbiwgcG9zaXRpb24pO1xuICAgICAgdGhpcy5zZXRMb2NhbERpcnR5KHRydWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRMb2NhbFNjYWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldExvY2FsU2NhbGUoc2NhbGUpIHtcbiAgICAgIHZlYzMuY29weSh0aGlzLmxvY2FsU2NhbGUsIHNjYWxlKTtcbiAgICAgIHRoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TG9jYWxSb3RhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMb2NhbFJvdGF0aW9uKHJvdGF0aW9uKSB7XG4gICAgICBxdWF0LmNvcHkodGhpcy5sb2NhbFJvdGF0aW9uLCByb3RhdGlvbik7XG4gICAgICB0aGlzLnNldExvY2FsRGlydHkodHJ1ZSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0RpcnR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlydHlGbGFnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXREaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXREaXJ0eSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGlydHlGbGFnIHw9IFRyYW5zZm9ybUNvbXBvbmVudC5ESVJUWTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlydHlGbGFnICY9IH5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzTG9jYWxEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0xvY2FsRGlydHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbERpcnR5RmxhZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TG9jYWxEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMb2NhbERpcnR5KCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB0cnVlO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5sb2NhbERpcnR5RmxhZyB8PSBUcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICAgIHRoaXMuc2V0RGlydHkodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvY2FsRGlydHlGbGFnICY9IH5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZVRyYW5zZm9ybVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVUcmFuc2Zvcm0oKSB7XG4gICAgICBpZiAodGhpcy5pc0xvY2FsRGlydHkoKSkge1xuICAgICAgICB0aGlzLmdldExvY2FsVHJhbnNmb3JtKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzRGlydHkoKSkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICBtYXQ0LmNvcHkodGhpcy53b3JsZFRyYW5zZm9ybSwgdGhpcy5nZXRMb2NhbFRyYW5zZm9ybSgpKTtcbiAgICAgICAgICB0aGlzLnNldERpcnR5KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVUcmFuc2Zvcm1XaXRoUGFyZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZVRyYW5zZm9ybVdpdGhQYXJlbnQocGFyZW50KSB7XG4gICAgICBtYXQ0Lm11bHRpcGx5KHRoaXMud29ybGRUcmFuc2Zvcm0sIHBhcmVudC53b3JsZFRyYW5zZm9ybSwgdGhpcy5nZXRMb2NhbFRyYW5zZm9ybSgpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYXBwbHlUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXBwbHlUcmFuc2Zvcm0oKSB7XG4gICAgICB0aGlzLnNldERpcnR5KCk7XG4gICAgICBtYXQ0LmdldFNjYWxpbmcodGhpcy5sb2NhbFNjYWxlLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24odGhpcy5sb2NhbFBvc2l0aW9uLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgIG1hdDQuZ2V0Um90YXRpb24odGhpcy5sb2NhbFJvdGF0aW9uLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2xlYXJUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xlYXJUcmFuc2Zvcm0oKSB7XG4gICAgICB0aGlzLnNldERpcnR5KCk7XG4gICAgICB0aGlzLmxvY2FsUG9zaXRpb24gPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMCk7XG4gICAgICB0aGlzLmxvY2FsUm90YXRpb24gPSBxdWF0LmZyb21WYWx1ZXMoMCwgMCwgMCwgMSk7XG4gICAgICB0aGlzLmxvY2FsU2NhbGUgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNjYWxlTG9jYWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2NhbGVMb2NhbChzY2FsaW5nKSB7XG4gICAgICB0aGlzLnNldExvY2FsRGlydHkoKTtcbiAgICAgIHZlYzMubXVsdGlwbHkodGhpcy5sb2NhbFNjYWxlLCB0aGlzLmxvY2FsU2NhbGUsIHNjYWxpbmcpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsUG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxQb3NpdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsUG9zaXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsUm90YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxSb3RhdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsUm90YXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsU2NhbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxTY2FsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsU2NhbGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsVHJhbnNmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldExvY2FsVHJhbnNmb3JtKCkge1xuICAgICAgaWYgKHRoaXMubG9jYWxEaXJ0eUZsYWcpIHtcbiAgICAgICAgbWF0NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvblNjYWxlKHRoaXMubG9jYWxUcmFuc2Zvcm0sIHRoaXMubG9jYWxSb3RhdGlvbiwgdGhpcy5sb2NhbFBvc2l0aW9uLCB0aGlzLmxvY2FsU2NhbGUpO1xuICAgICAgICB0aGlzLnNldExvY2FsRGlydHkoZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbFRyYW5zZm9ybTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0V29ybGRUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0V29ybGRUcmFuc2Zvcm0oKSB7XG4gICAgICBpZiAoIXRoaXMuaXNMb2NhbERpcnR5KCkgJiYgIXRoaXMuaXNEaXJ0eSgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndvcmxkVHJhbnNmb3JtO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuZ2V0V29ybGRUcmFuc2Zvcm0oKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgICAgIHJldHVybiB0aGlzLndvcmxkVHJhbnNmb3JtO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGlvbigpIHtcbiAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24odGhpcy5wb3NpdGlvbiwgdGhpcy53b3JsZFRyYW5zZm9ybSk7XG4gICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Um90YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Um90YXRpb24oKSB7XG4gICAgICBtYXQ0LmdldFJvdGF0aW9uKHRoaXMucm90YXRpb24sIHRoaXMud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgcmV0dXJuIHRoaXMucm90YXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNjYWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNjYWxlKCkge1xuICAgICAgbWF0NC5nZXRTY2FsaW5nKHRoaXMuc2NhbGluZywgdGhpcy53b3JsZFRyYW5zZm9ybSk7XG4gICAgICByZXR1cm4gdGhpcy5zY2FsaW5nO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUcmFuc2Zvcm1Db21wb25lbnQ7XG59KENvbXBvbmVudCk7XG5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFkgPSAxIDw8IDA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmFuc2Zvcm1Db21wb25lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/identifier.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/identifier.js ***! \***********************************************************/ /*! exports provided: IDENTIFIER */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IDENTIFIER\", function() { return IDENTIFIER; });\nvar IDENTIFIER = {\n // SceneGraph\n HierarchyComponentManager: Symbol('HierarchyComponentManager'),\n TransformComponentManager: Symbol('TransformComponentManager'),\n NameComponentManager: Symbol('NameComponentManager'),\n SceneGraphSystem: Symbol('SceneGraphSystem'),\n // FrameGraph\n FrameGraphSystem: Symbol('FrameGraphSystem'),\n ResourcePool: Symbol('ResourcePool'),\n ResourceHandleComponentManager: Symbol('ResourceHandleComponentManager'),\n PassNodeComponentManager: Symbol('PassNodeComponentManager'),\n // Renderer\n RendererSystem: Symbol('RendererSystem'),\n RenderPass: Symbol('RenderPass'),\n RenderPassFactory: Symbol('Factory'),\n Renderable: Symbol('Factory'),\n // Mesh\n MeshSystem: Symbol('MeshSystem'),\n MeshComponentManager: Symbol('MeshComponentManager'),\n CullableComponentManager: Symbol('CullableComponentManager'),\n // Geometry\n Geometry: Symbol('Geometry'),\n GeometrySystem: Symbol('GeometrySystem'),\n GeometryComponentManager: Symbol('GeometryComponentManager'),\n // Material\n Material: Symbol('Material'),\n MaterialSystem: Symbol('MaterialSystem'),\n MaterialComponentManager: Symbol('MaterialComponentManager'),\n // RenderPath\n ForwardRenderPath: Symbol('ForwardRenderPath'),\n // ComputeSystem\n ComputeSystem: Symbol('ComputeSystem'),\n ComputeComponentManager: Symbol('ComputeComponentManager'),\n ComputeStrategy: Symbol('ComputeStrategy'),\n Systems: Symbol('Systems'),\n World: Symbol('World'),\n // RenderEngine\n RenderEngine: Symbol('RenderEngine'),\n WebGPUEngine: Symbol('WebGPUEngine'),\n WebGLEngine: Symbol('WebGLEngine'),\n // Shader Module\n ShaderModuleService: Symbol('ShaderModuleService'),\n ConfigService: Symbol('ConfigService'),\n InteractorService: Symbol('InteractorService'),\n IEventEmitter: Symbol('IEventEmitter'),\n // Light\n Light: Symbol('Light')\n};\n//# sourceMappingURL=identifier.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9pZGVudGlmaWVyLmpzP2ZhZTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvaWRlbnRpZmllci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgSURFTlRJRklFUiA9IHtcbiAgLy8gU2NlbmVHcmFwaFxuICBIaWVyYXJjaHlDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ0hpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXInKSxcbiAgVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdUcmFuc2Zvcm1Db21wb25lbnRNYW5hZ2VyJyksXG4gIE5hbWVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ05hbWVDb21wb25lbnRNYW5hZ2VyJyksXG4gIFNjZW5lR3JhcGhTeXN0ZW06IFN5bWJvbCgnU2NlbmVHcmFwaFN5c3RlbScpLFxuICAvLyBGcmFtZUdyYXBoXG4gIEZyYW1lR3JhcGhTeXN0ZW06IFN5bWJvbCgnRnJhbWVHcmFwaFN5c3RlbScpLFxuICBSZXNvdXJjZVBvb2w6IFN5bWJvbCgnUmVzb3VyY2VQb29sJyksXG4gIFJlc291cmNlSGFuZGxlQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdSZXNvdXJjZUhhbmRsZUNvbXBvbmVudE1hbmFnZXInKSxcbiAgUGFzc05vZGVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ1Bhc3NOb2RlQ29tcG9uZW50TWFuYWdlcicpLFxuICAvLyBSZW5kZXJlclxuICBSZW5kZXJlclN5c3RlbTogU3ltYm9sKCdSZW5kZXJlclN5c3RlbScpLFxuICBSZW5kZXJQYXNzOiBTeW1ib2woJ1JlbmRlclBhc3MnKSxcbiAgUmVuZGVyUGFzc0ZhY3Rvcnk6IFN5bWJvbCgnRmFjdG9yeTxJUmVuZGVyUGFzcz4nKSxcbiAgUmVuZGVyYWJsZTogU3ltYm9sKCdGYWN0b3J5PElSZW5kZXJQYXNzPicpLFxuICAvLyBNZXNoXG4gIE1lc2hTeXN0ZW06IFN5bWJvbCgnTWVzaFN5c3RlbScpLFxuICBNZXNoQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdNZXNoQ29tcG9uZW50TWFuYWdlcicpLFxuICBDdWxsYWJsZUNvbXBvbmVudE1hbmFnZXI6IFN5bWJvbCgnQ3VsbGFibGVDb21wb25lbnRNYW5hZ2VyJyksXG4gIC8vIEdlb21ldHJ5XG4gIEdlb21ldHJ5OiBTeW1ib2woJ0dlb21ldHJ5JyksXG4gIEdlb21ldHJ5U3lzdGVtOiBTeW1ib2woJ0dlb21ldHJ5U3lzdGVtJyksXG4gIEdlb21ldHJ5Q29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdHZW9tZXRyeUNvbXBvbmVudE1hbmFnZXInKSxcbiAgLy8gTWF0ZXJpYWxcbiAgTWF0ZXJpYWw6IFN5bWJvbCgnTWF0ZXJpYWwnKSxcbiAgTWF0ZXJpYWxTeXN0ZW06IFN5bWJvbCgnTWF0ZXJpYWxTeXN0ZW0nKSxcbiAgTWF0ZXJpYWxDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ01hdGVyaWFsQ29tcG9uZW50TWFuYWdlcicpLFxuICAvLyBSZW5kZXJQYXRoXG4gIEZvcndhcmRSZW5kZXJQYXRoOiBTeW1ib2woJ0ZvcndhcmRSZW5kZXJQYXRoJyksXG4gIC8vIENvbXB1dGVTeXN0ZW1cbiAgQ29tcHV0ZVN5c3RlbTogU3ltYm9sKCdDb21wdXRlU3lzdGVtJyksXG4gIENvbXB1dGVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ0NvbXB1dGVDb21wb25lbnRNYW5hZ2VyJyksXG4gIENvbXB1dGVTdHJhdGVneTogU3ltYm9sKCdDb21wdXRlU3RyYXRlZ3knKSxcbiAgU3lzdGVtczogU3ltYm9sKCdTeXN0ZW1zJyksXG4gIFdvcmxkOiBTeW1ib2woJ1dvcmxkJyksXG4gIC8vIFJlbmRlckVuZ2luZVxuICBSZW5kZXJFbmdpbmU6IFN5bWJvbCgnUmVuZGVyRW5naW5lJyksXG4gIFdlYkdQVUVuZ2luZTogU3ltYm9sKCdXZWJHUFVFbmdpbmUnKSxcbiAgV2ViR0xFbmdpbmU6IFN5bWJvbCgnV2ViR0xFbmdpbmUnKSxcbiAgLy8gU2hhZGVyIE1vZHVsZVxuICBTaGFkZXJNb2R1bGVTZXJ2aWNlOiBTeW1ib2woJ1NoYWRlck1vZHVsZVNlcnZpY2UnKSxcbiAgQ29uZmlnU2VydmljZTogU3ltYm9sKCdDb25maWdTZXJ2aWNlJyksXG4gIEludGVyYWN0b3JTZXJ2aWNlOiBTeW1ib2woJ0ludGVyYWN0b3JTZXJ2aWNlJyksXG4gIElFdmVudEVtaXR0ZXI6IFN5bWJvbCgnSUV2ZW50RW1pdHRlcicpLFxuICAvLyBMaWdodFxuICBMaWdodDogU3ltYm9sKCdMaWdodCcpXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aWRlbnRpZmllci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/identifier.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/index.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/index.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AST_TOKEN_TYPES\", function() { return AST_TOKEN_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AST_NODE_TYPES\", function() { return AST_NODE_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STORAGE_CLASS\", function() { return STORAGE_CLASS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Target\", function() { return Target; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DefineValuePlaceholder\", function() { return DefineValuePlaceholder; });\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reflect-metadata */ \"./node_modules/reflect-metadata/Reflect.js\");\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(reflect_metadata__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Component\", function() { return _ComponentManager__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ComponentManager\", function() { return _ComponentManager__WEBPACK_IMPORTED_MODULE_1__[\"ComponentManager\"]; });\n\n/* harmony import */ var _components_framegraph_System__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/framegraph/System */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphSystem\", function() { return _components_framegraph_System__WEBPACK_IMPORTED_MODULE_2__[\"FrameGraphSystem\"]; });\n\n/* harmony import */ var _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/geometry/GeometryComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GeometryComponent\", function() { return _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_3__[\"GeometryComponent\"]; });\n\n/* harmony import */ var _components_geometry_System__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/geometry/System */ \"./node_modules/@antv/g-webgpu-core/es/components/geometry/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GeometrySystem\", function() { return _components_geometry_System__WEBPACK_IMPORTED_MODULE_4__[\"GeometrySystem\"]; });\n\n/* harmony import */ var _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/material/MaterialComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/material/MaterialComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MaterialComponent\", function() { return _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_5__[\"MaterialComponent\"]; });\n\n/* harmony import */ var _components_material_System__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/material/System */ \"./node_modules/@antv/g-webgpu-core/es/components/material/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MaterialSystem\", function() { return _components_material_System__WEBPACK_IMPORTED_MODULE_6__[\"MaterialSystem\"]; });\n\n/* harmony import */ var _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/mesh/CullableComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CullableComponent\", function() { return _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_7__[\"CullableComponent\"]; });\n\n/* harmony import */ var _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/mesh/MeshComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MeshComponent\", function() { return _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_8__[\"MeshComponent\"]; });\n\n/* harmony import */ var _components_mesh_System__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/mesh/System */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MeshSystem\", function() { return _components_mesh_System__WEBPACK_IMPORTED_MODULE_9__[\"MeshSystem\"]; });\n\n/* harmony import */ var _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/renderer/passes/PixelPickingPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PixelPickingPass\", function() { return _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__[\"PixelPickingPass\"]; });\n\n/* harmony import */ var _components_renderer_System__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/renderer/System */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RendererSystem\", function() { return _components_renderer_System__WEBPACK_IMPORTED_MODULE_11__[\"RendererSystem\"]; });\n\n/* harmony import */ var _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/scenegraph/HierarchyComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"HierarchyComponent\", function() { return _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_12__[\"HierarchyComponent\"]; });\n\n/* harmony import */ var _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/scenegraph/System */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SceneGraphSystem\", function() { return _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_13__[\"SceneGraphSystem\"]; });\n\n/* harmony import */ var _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/scenegraph/TransformComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TransformComponent\", function() { return _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_14__[\"TransformComponent\"]; });\n\n/* harmony import */ var _Entity__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Entity */ \"./node_modules/@antv/g-webgpu-core/es/Entity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createEntity\", function() { return _Entity__WEBPACK_IMPORTED_MODULE_15__[\"createEntity\"]; });\n\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IDENTIFIER\", function() { return _identifier__WEBPACK_IMPORTED_MODULE_16__[\"IDENTIFIER\"]; });\n\n/* harmony import */ var _inversify_config__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./inversify.config */ \"./node_modules/@antv/g-webgpu-core/es/inversify.config.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"container\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"container\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createWorldContainer\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"createWorldContainer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lazyInject\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"lazyInject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lazyMultiInject\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"lazyMultiInject\"]; });\n\n/* harmony import */ var _utils_aabb__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils/aabb */ \"./node_modules/@antv/g-webgpu-core/es/utils/aabb.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateAABBFromVertices\", function() { return _utils_aabb__WEBPACK_IMPORTED_MODULE_18__[\"generateAABBFromVertices\"]; });\n\n/* harmony import */ var _utils_isSafari__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./utils/isSafari */ \"./node_modules/@antv/g-webgpu-core/es/utils/isSafari.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSafari\", function() { return _utils_isSafari__WEBPACK_IMPORTED_MODULE_19__[\"isSafari\"]; });\n\n/* empty/unused harmony star reexport *//* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./services */ \"./node_modules/@antv/g-webgpu-core/es/services/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"ConfigService\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"InteractorService\"]; });\n\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g-webgpu-core/es/shape/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"AABB\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"BoundingSphere\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Mask\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Frustum\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Plane\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Ray\"]; });\n\n/* harmony import */ var _components_renderer__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./components/renderer */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_renderer__WEBPACK_IMPORTED_MODULE_22__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_renderer__WEBPACK_IMPORTED_MODULE_22__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _components_material_interface__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./components/material/interface */ \"./node_modules/@antv/g-webgpu-core/es/components/material/interface.js\");\n/* harmony import */ var _components_material_interface__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_components_material_interface__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_material_interface__WEBPACK_IMPORTED_MODULE_23__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_material_interface__WEBPACK_IMPORTED_MODULE_23__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./components/mesh/interface */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/interface.js\");\n/* harmony import */ var _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_renderer__WEBPACK_IMPORTED_MODULE_22__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_renderer__WEBPACK_IMPORTED_MODULE_22__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n// tslint:disable-next-line:no-reference\n/// \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * inspired by Entitas' Systems\n * @see https://github.com/sschmid/Entitas-CSharp/wiki/Systems\n */\n\nvar AST_TOKEN_TYPES;\n\n(function (AST_TOKEN_TYPES) {\n AST_TOKEN_TYPES[\"Void\"] = \"Void\";\n AST_TOKEN_TYPES[\"Boolean\"] = \"Boolean\";\n AST_TOKEN_TYPES[\"Float\"] = \"Float\";\n AST_TOKEN_TYPES[\"Uint32\"] = \"Uint32\";\n AST_TOKEN_TYPES[\"Int32\"] = \"Int32\";\n AST_TOKEN_TYPES[\"Vector\"] = \"Vector\";\n AST_TOKEN_TYPES[\"Vector2Float\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Float\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Float\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Boolean\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Boolean\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Boolean\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Uint\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Uint\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Uint\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Int\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Int\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Int\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Matrix\"] = \"Matrix\";\n AST_TOKEN_TYPES[\"Matrix3x3Float\"] = \"mat3x3\";\n AST_TOKEN_TYPES[\"Matrix4x4Float\"] = \"mat4x4\";\n AST_TOKEN_TYPES[\"Struct\"] = \"Struct\";\n AST_TOKEN_TYPES[\"FloatArray\"] = \"Float[]\";\n AST_TOKEN_TYPES[\"Vector4FloatArray\"] = \"vec4[]\";\n})(AST_TOKEN_TYPES || (AST_TOKEN_TYPES = {}));\n\nvar AST_NODE_TYPES;\n\n(function (AST_NODE_TYPES) {\n AST_NODE_TYPES[\"Program\"] = \"Program\";\n AST_NODE_TYPES[\"Identifier\"] = \"Identifier\";\n AST_NODE_TYPES[\"VariableDeclaration\"] = \"VariableDeclaration\";\n AST_NODE_TYPES[\"BlockStatement\"] = \"BlockStatement\";\n AST_NODE_TYPES[\"ReturnStatement\"] = \"ReturnStatement\";\n AST_NODE_TYPES[\"FunctionDeclaration\"] = \"FunctionDeclaration\";\n AST_NODE_TYPES[\"VariableDeclarator\"] = \"VariableDeclarator\";\n AST_NODE_TYPES[\"AssignmentExpression\"] = \"AssignmentExpression\";\n AST_NODE_TYPES[\"LogicalExpression\"] = \"LogicalExpression\";\n AST_NODE_TYPES[\"BinaryExpression\"] = \"BinaryExpression\";\n AST_NODE_TYPES[\"ArrayExpression\"] = \"ArrayExpression\";\n AST_NODE_TYPES[\"UnaryExpression\"] = \"UnaryExpression\";\n AST_NODE_TYPES[\"UpdateExpression\"] = \"UpdateExpression\";\n AST_NODE_TYPES[\"FunctionExpression\"] = \"FunctionExpression\";\n AST_NODE_TYPES[\"MemberExpression\"] = \"MemberExpression\";\n AST_NODE_TYPES[\"ConditionalExpression\"] = \"ConditionalExpression\";\n AST_NODE_TYPES[\"ExpressionStatement\"] = \"ExpressionStatement\";\n AST_NODE_TYPES[\"CallExpression\"] = \"CallExpression\";\n AST_NODE_TYPES[\"NumThreadStatement\"] = \"NumThreadStatement\";\n AST_NODE_TYPES[\"StorageStatement\"] = \"StorageStatement\";\n AST_NODE_TYPES[\"DoWhileStatement\"] = \"DoWhileStatement\";\n AST_NODE_TYPES[\"WhileStatement\"] = \"WhileStatement\";\n AST_NODE_TYPES[\"ForStatement\"] = \"ForStatement\";\n AST_NODE_TYPES[\"BreakStatement\"] = \"BreakStatement\";\n AST_NODE_TYPES[\"ContinueStatement\"] = \"ContinueStatement\";\n AST_NODE_TYPES[\"IfStatement\"] = \"IfStatement\";\n AST_NODE_TYPES[\"ImportedFunctionStatement\"] = \"ImportedFunctionStatement\";\n})(AST_NODE_TYPES || (AST_NODE_TYPES = {}));\n\nvar STORAGE_CLASS;\n\n(function (STORAGE_CLASS) {\n STORAGE_CLASS[\"Input\"] = \"Input\";\n STORAGE_CLASS[\"Output\"] = \"Output\";\n STORAGE_CLASS[\"Uniform\"] = \"Uniform\";\n STORAGE_CLASS[\"Workgroup\"] = \"Workgroup\";\n STORAGE_CLASS[\"UniformConstant\"] = \"UniformConstant\";\n STORAGE_CLASS[\"Image\"] = \"Image\";\n STORAGE_CLASS[\"StorageBuffer\"] = \"StorageBuffer\";\n STORAGE_CLASS[\"Private\"] = \"Private\";\n STORAGE_CLASS[\"Function\"] = \"Function\";\n})(STORAGE_CLASS || (STORAGE_CLASS = {}));\n\n/**\n * 根据目标平台生成 Shader 代码\n * * WebGL GLSL 1.0\n * * WebGPU Chrome/Edge GLSL 4.5 & WGSL @see https://gpuweb.github.io/gpuweb/wgsl.html\n * * Safari WHLSL (maybe deprecated)\n */\nvar Target;\n\n(function (Target) {\n Target[\"GLSL100\"] = \"GLSL100\";\n Target[\"GLSL450\"] = \"GLSL450\";\n Target[\"WGSL\"] = \"WGSL\";\n})(Target || (Target = {}));\n\nvar DefineValuePlaceholder = '__DefineValuePlaceholder__';\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbmRleC5qcz8xYTNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDMEI7QUFDdUM7QUFDQztBQUNVO0FBQ2Q7QUFDYztBQUNkO0FBQ1U7QUFDUjtBQUNWO0FBQzJCO0FBQ25CO0FBQ2tCO0FBQ2Q7QUFDYztBQUN4QztBQUNFO0FBQ3dEO0FBQzFDO0FBQ1o7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDBDQUEwQzs7QUFFM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHdDQUF3Qzs7QUFFekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHNDQUFzQzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHdCQUF3Qjs7QUFFekI7QUFDbUM7QUFDUjtBQUNIO0FBQ2M7QUFDVTtBQUNKO0FBQ047QUFFaVE7QUFDdlMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1yZWZlcmVuY2Vcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdlYmdwdS90eXBlcy9kaXN0L2luZGV4LmQudHNcIiAvPlxuaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vQ29tcG9uZW50TWFuYWdlcic7XG5pbXBvcnQgeyBGcmFtZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50JztcbmltcG9ydCB7IEdlb21ldHJ5U3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbSc7XG5pbXBvcnQgeyBNYXRlcmlhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYXRlcmlhbC9NYXRlcmlhbENvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRlcmlhbFN5c3RlbSB9IGZyb20gJy4vY29tcG9uZW50cy9tYXRlcmlhbC9TeXN0ZW0nO1xuaW1wb3J0IHsgQ3VsbGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9DdWxsYWJsZUNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21lc2gvTWVzaENvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL21lc2gvU3lzdGVtJztcbmltcG9ydCB7IFBpeGVsUGlja2luZ1Bhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyZXJTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvU3lzdGVtJztcbmltcG9ydCB7IEhpZXJhcmNoeUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zY2VuZWdyYXBoL0hpZXJhcmNoeUNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY2VuZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IFRyYW5zZm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zY2VuZWdyYXBoL1RyYW5zZm9ybUNvbXBvbmVudCc7XG5pbXBvcnQgeyBjcmVhdGVFbnRpdHkgfSBmcm9tICcuL0VudGl0eSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IGNvbnRhaW5lciwgY3JlYXRlV29ybGRDb250YWluZXIsIGxhenlJbmplY3QsIGxhenlNdWx0aUluamVjdCB9IGZyb20gJy4vaW52ZXJzaWZ5LmNvbmZpZyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMgfSBmcm9tICcuL3V0aWxzL2FhYmInO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICcuL3V0aWxzL2lzU2FmYXJpJztcbi8qKlxuICogaW5zcGlyZWQgYnkgRW50aXRhcycgU3lzdGVtc1xuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vc3NjaG1pZC9FbnRpdGFzLUNTaGFycC93aWtpL1N5c3RlbXNcbiAqL1xuXG52YXIgQVNUX1RPS0VOX1RZUEVTO1xuXG4oZnVuY3Rpb24gKEFTVF9UT0tFTl9UWVBFUykge1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWb2lkXCJdID0gXCJWb2lkXCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkJvb2xlYW5cIl0gPSBcIkJvb2xlYW5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiRmxvYXRcIl0gPSBcIkZsb2F0XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlVpbnQzMlwiXSA9IFwiVWludDMyXCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkludDMyXCJdID0gXCJJbnQzMlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3JcIl0gPSBcIlZlY3RvclwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyRmxvYXRcIl0gPSBcInZlYzI8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IzRmxvYXRcIl0gPSBcInZlYzM8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3I0RmxvYXRcIl0gPSBcInZlYzQ8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyQm9vbGVhblwiXSA9IFwidmVjMjxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IzQm9vbGVhblwiXSA9IFwidmVjMzxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3I0Qm9vbGVhblwiXSA9IFwidmVjNDxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyVWludFwiXSA9IFwidmVjMjx1MzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlZlY3RvcjNVaW50XCJdID0gXCJ2ZWMzPHUzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yNFVpbnRcIl0gPSBcInZlYzQ8dTMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IySW50XCJdID0gXCJ2ZWMyPGkzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yM0ludFwiXSA9IFwidmVjMzxpMzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlZlY3RvcjRJbnRcIl0gPSBcInZlYzQ8aTMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJNYXRyaXhcIl0gPSBcIk1hdHJpeFwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJNYXRyaXgzeDNGbG9hdFwiXSA9IFwibWF0M3gzPGYzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiTWF0cml4NHg0RmxvYXRcIl0gPSBcIm1hdDR4NDxpMzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlN0cnVjdFwiXSA9IFwiU3RydWN0XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkZsb2F0QXJyYXlcIl0gPSBcIkZsb2F0W11cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yNEZsb2F0QXJyYXlcIl0gPSBcInZlYzQ8ZjMyPltdXCI7XG59KShBU1RfVE9LRU5fVFlQRVMgfHwgKEFTVF9UT0tFTl9UWVBFUyA9IHt9KSk7XG5cbnZhciBBU1RfTk9ERV9UWVBFUztcblxuKGZ1bmN0aW9uIChBU1RfTk9ERV9UWVBFUykge1xuICBBU1RfTk9ERV9UWVBFU1tcIlByb2dyYW1cIl0gPSBcIlByb2dyYW1cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJJZGVudGlmaWVyXCJdID0gXCJJZGVudGlmaWVyXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiVmFyaWFibGVEZWNsYXJhdGlvblwiXSA9IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkJsb2NrU3RhdGVtZW50XCJdID0gXCJCbG9ja1N0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIlJldHVyblN0YXRlbWVudFwiXSA9IFwiUmV0dXJuU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRnVuY3Rpb25EZWNsYXJhdGlvblwiXSA9IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIlZhcmlhYmxlRGVjbGFyYXRvclwiXSA9IFwiVmFyaWFibGVEZWNsYXJhdG9yXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQXNzaWdubWVudEV4cHJlc3Npb25cIl0gPSBcIkFzc2lnbm1lbnRFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiTG9naWNhbEV4cHJlc3Npb25cIl0gPSBcIkxvZ2ljYWxFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQmluYXJ5RXhwcmVzc2lvblwiXSA9IFwiQmluYXJ5RXhwcmVzc2lvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkFycmF5RXhwcmVzc2lvblwiXSA9IFwiQXJyYXlFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiVW5hcnlFeHByZXNzaW9uXCJdID0gXCJVbmFyeUV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJVcGRhdGVFeHByZXNzaW9uXCJdID0gXCJVcGRhdGVFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRnVuY3Rpb25FeHByZXNzaW9uXCJdID0gXCJGdW5jdGlvbkV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJNZW1iZXJFeHByZXNzaW9uXCJdID0gXCJNZW1iZXJFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCJdID0gXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJFeHByZXNzaW9uU3RhdGVtZW50XCJdID0gXCJFeHByZXNzaW9uU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ2FsbEV4cHJlc3Npb25cIl0gPSBcIkNhbGxFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiTnVtVGhyZWFkU3RhdGVtZW50XCJdID0gXCJOdW1UaHJlYWRTdGF0ZW1lbnRcIjtcbiAgQVNUX05PREVfVFlQRVNbXCJTdG9yYWdlU3RhdGVtZW50XCJdID0gXCJTdG9yYWdlU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRG9XaGlsZVN0YXRlbWVudFwiXSA9IFwiRG9XaGlsZVN0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIldoaWxlU3RhdGVtZW50XCJdID0gXCJXaGlsZVN0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkZvclN0YXRlbWVudFwiXSA9IFwiRm9yU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQnJlYWtTdGF0ZW1lbnRcIl0gPSBcIkJyZWFrU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ29udGludWVTdGF0ZW1lbnRcIl0gPSBcIkNvbnRpbnVlU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiSWZTdGF0ZW1lbnRcIl0gPSBcIklmU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiSW1wb3J0ZWRGdW5jdGlvblN0YXRlbWVudFwiXSA9IFwiSW1wb3J0ZWRGdW5jdGlvblN0YXRlbWVudFwiO1xufSkoQVNUX05PREVfVFlQRVMgfHwgKEFTVF9OT0RFX1RZUEVTID0ge30pKTtcblxudmFyIFNUT1JBR0VfQ0xBU1M7XG5cbihmdW5jdGlvbiAoU1RPUkFHRV9DTEFTUykge1xuICBTVE9SQUdFX0NMQVNTW1wiSW5wdXRcIl0gPSBcIklucHV0XCI7XG4gIFNUT1JBR0VfQ0xBU1NbXCJPdXRwdXRcIl0gPSBcIk91dHB1dFwiO1xuICBTVE9SQUdFX0NMQVNTW1wiVW5pZm9ybVwiXSA9IFwiVW5pZm9ybVwiO1xuICBTVE9SQUdFX0NMQVNTW1wiV29ya2dyb3VwXCJdID0gXCJXb3JrZ3JvdXBcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlVuaWZvcm1Db25zdGFudFwiXSA9IFwiVW5pZm9ybUNvbnN0YW50XCI7XG4gIFNUT1JBR0VfQ0xBU1NbXCJJbWFnZVwiXSA9IFwiSW1hZ2VcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlN0b3JhZ2VCdWZmZXJcIl0gPSBcIlN0b3JhZ2VCdWZmZXJcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlByaXZhdGVcIl0gPSBcIlByaXZhdGVcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIkZ1bmN0aW9uXCJdID0gXCJGdW5jdGlvblwiO1xufSkoU1RPUkFHRV9DTEFTUyB8fCAoU1RPUkFHRV9DTEFTUyA9IHt9KSk7XG5cbi8qKlxuICog5qC55o2u55uu5qCH5bmz5Y+w55Sf5oiQIFNoYWRlciDku6PnoIFcbiAqICogV2ViR0wgR0xTTCAxLjBcbiAqICogV2ViR1BVIENocm9tZS9FZGdlIEdMU0wgNC41ICYgV0dTTCBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvd2dzbC5odG1sXG4gKiAqIFNhZmFyaSBXSExTTCAobWF5YmUgZGVwcmVjYXRlZClcbiAqL1xudmFyIFRhcmdldDtcblxuKGZ1bmN0aW9uIChUYXJnZXQpIHtcbiAgVGFyZ2V0W1wiR0xTTDEwMFwiXSA9IFwiR0xTTDEwMFwiO1xuICBUYXJnZXRbXCJHTFNMNDUwXCJdID0gXCJHTFNMNDUwXCI7XG4gIFRhcmdldFtcIldHU0xcIl0gPSBcIldHU0xcIjtcbn0pKFRhcmdldCB8fCAoVGFyZ2V0ID0ge30pKTtcblxudmFyIERlZmluZVZhbHVlUGxhY2Vob2xkZXIgPSAnX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX18nO1xuZXhwb3J0ICogZnJvbSAnLi9Db21wb25lbnRNYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFwZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL2ludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3JlbmRlcmVyJztcbmV4cG9ydCB7IGNvbnRhaW5lciwgY3JlYXRlV29ybGRDb250YWluZXIsIGxhenlJbmplY3QsIGxhenlNdWx0aUluamVjdCwgY3JlYXRlRW50aXR5LCBDb21wb25lbnQsIENvbXBvbmVudE1hbmFnZXIsIElERU5USUZJRVIsIEZyYW1lR3JhcGhTeXN0ZW0sIEdlb21ldHJ5U3lzdGVtLCBSZW5kZXJlclN5c3RlbSAvLyBJbnRlcmFjdGlvblN5c3RlbSxcbiwgTWF0ZXJpYWxTeXN0ZW0sIE1lc2hTeXN0ZW0sIFNjZW5lR3JhcGhTeXN0ZW0sIEN1bGxhYmxlQ29tcG9uZW50LCBNZXNoQ29tcG9uZW50LCBUcmFuc2Zvcm1Db21wb25lbnQsIE1hdGVyaWFsQ29tcG9uZW50LCBHZW9tZXRyeUNvbXBvbmVudCwgSGllcmFyY2h5Q29tcG9uZW50LCBpc1NhZmFyaSwgZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzLCBQaXhlbFBpY2tpbmdQYXNzLCBBU1RfVE9LRU5fVFlQRVMsIEFTVF9OT0RFX1RZUEVTLCBTVE9SQUdFX0NMQVNTLCBUYXJnZXQsIERlZmluZVZhbHVlUGxhY2Vob2xkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/inversify.config.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/inversify.config.js ***! \*****************************************************************/ /*! exports provided: container, lazyInject, lazyMultiInject, createWorldContainer */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"container\", function() { return container; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lazyInject\", function() { return lazyInject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lazyMultiInject\", function() { return lazyMultiInject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createWorldContainer\", function() { return createWorldContainer; });\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reflect-metadata */ \"./node_modules/reflect-metadata/Reflect.js\");\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(reflect_metadata__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify-inject-decorators */ \"./node_modules/inversify-inject-decorators/lib/index.js\");\n/* harmony import */ var inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ComponentManager */ \"./node_modules/@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _components_framegraph_ResourcePool__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/framegraph/ResourcePool */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js\");\n/* harmony import */ var _components_framegraph_System__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/framegraph/System */ \"./node_modules/@antv/g-webgpu-core/es/components/framegraph/System.js\");\n/* harmony import */ var _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/geometry/GeometryComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\");\n/* harmony import */ var _components_geometry_System__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/geometry/System */ \"./node_modules/@antv/g-webgpu-core/es/components/geometry/System.js\");\n/* harmony import */ var _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/material/MaterialComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/material/MaterialComponent.js\");\n/* harmony import */ var _components_material_System__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/material/System */ \"./node_modules/@antv/g-webgpu-core/es/components/material/System.js\");\n/* harmony import */ var _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/mesh/CullableComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\");\n/* harmony import */ var _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/mesh/MeshComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\");\n/* harmony import */ var _components_mesh_System__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/mesh/System */ \"./node_modules/@antv/g-webgpu-core/es/components/mesh/System.js\");\n/* harmony import */ var _components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/renderer/passes/CopyPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\");\n/* harmony import */ var _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/renderer/passes/PixelPickingPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony import */ var _components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/renderer/passes/RenderPass */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n/* harmony import */ var _components_renderer_System__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/renderer/System */ \"./node_modules/@antv/g-webgpu-core/es/components/renderer/System.js\");\n/* harmony import */ var _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./components/scenegraph/HierarchyComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\");\n/* harmony import */ var _components_scenegraph_NameComponent__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./components/scenegraph/NameComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js\");\n/* harmony import */ var _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./components/scenegraph/System */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/System.js\");\n/* harmony import */ var _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./components/scenegraph/TransformComponent */ \"./node_modules/@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./identifier */ \"./node_modules/@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _services_config_ConfigService__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./services/config/ConfigService */ \"./node_modules/@antv/g-webgpu-core/es/services/config/ConfigService.js\");\n/* harmony import */ var _services_interactor_IteractorService__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./services/interactor/IteractorService */ \"./node_modules/@antv/g-webgpu-core/es/services/interactor/IteractorService.js\");\n/* harmony import */ var _services_shader_module_ShaderModuleService__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./services/shader-module/ShaderModuleService */ \"./node_modules/@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\");\n/**\n * Root Container\n * @see /dev-docs/IoC 容器、依赖注入与服务说明.md\n */\n\n\n\n\n\n\n\n // import { InteractionSystem } from './components/interaction/System';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // @see https://github.com/inversify/InversifyJS/blob/master/wiki/container_api.md#defaultscope\n\nvar container = new inversify__WEBPACK_IMPORTED_MODULE_1__[\"Container\"](); // @see https://github.com/inversify/InversifyJS/blob/master/wiki/inheritance.md#what-can-i-do-when-my-base-class-is-provided-by-a-third-party-module\n// decorate(injectable(), EventEmitter);\n// container.bind(IDENTIFIER.IEventEmitter).to(EventEmitter);\n// 支持使用 new 而非容器实例化的场景,同时禁止 lazyInject cache\n// @see https://github.com/inversify/inversify-inject-decorators#caching-vs-non-caching-behaviour\n\nvar DECORATORS = inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2___default()(container, false);\n// Add babel legacy decorators support\n// @see https://github.com/inversify/InversifyJS/issues/1050\n// @see https://github.com/inversify/InversifyJS/issues/1026#issuecomment-504936034\nvar lazyInject = function lazyInject(serviceIdentifier) {\n var original = DECORATORS.lazyInject(serviceIdentifier); // the 'descriptor' parameter is actually always defined for class fields for Babel, but is considered undefined for TSC\n // so we just hack it with ?/! combination to avoid \"TS1240: Unable to resolve signature of property decorator when called as an expression\"\n\n return function (proto, key, descriptor) {\n // make it work as usual\n original.call(this, proto, key); // return link to proto, so own value wont be 'undefined' after component's creation\n\n if (descriptor) {\n descriptor.initializer = function () {\n return proto[key];\n };\n }\n };\n};\nvar lazyMultiInject = function lazyMultiInject(serviceIdentifier) {\n var original = DECORATORS.lazyMultiInject(serviceIdentifier); // the 'descriptor' parameter is actually always defined for class fields for Babel, but is considered undefined for TSC\n // so we just hack it with ?/! combination to avoid \"TS1240: Unable to resolve signature of property decorator when called as an expression\"\n\n return function (proto, key, descriptor) {\n // make it work as usual\n original.call(this, proto, key);\n\n if (descriptor) {\n // return link to proto, so own value wont be 'undefined' after component's creation\n descriptor.initializer = function () {\n return proto[key];\n };\n }\n };\n};\n/** global services */\n\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ShaderModuleService).to(_services_shader_module_ShaderModuleService__WEBPACK_IMPORTED_MODULE_24__[\"default\"]).inSingletonScope();\n/**\n * bind global component managers in root container\n */\n\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].NameComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_NameComponent__WEBPACK_IMPORTED_MODULE_18__[\"NameComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].HierarchyComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_17__[\"HierarchyComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].TransformComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_20__[\"TransformComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MeshComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_11__[\"MeshComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].CullableComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_10__[\"CullableComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].GeometryComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_6__[\"GeometryComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MaterialComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_8__[\"MaterialComponent\"])); // https://github.com/inversify/InversifyJS/blob/master/wiki/hierarchical_di.md#support-for-hierarchical-di-systems\n\nfunction createWorldContainer() {\n var worldContainer = new inversify__WEBPACK_IMPORTED_MODULE_1__[\"Container\"]();\n worldContainer.parent = container;\n /**\n * bind systems\n */\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_scenegraph_System__WEBPACK_IMPORTED_MODULE_19__[\"SceneGraphSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].SceneGraphSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_framegraph_System__WEBPACK_IMPORTED_MODULE_5__[\"FrameGraphSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].FrameGraphSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_mesh_System__WEBPACK_IMPORTED_MODULE_12__[\"MeshSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MeshSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_geometry_System__WEBPACK_IMPORTED_MODULE_7__[\"GeometrySystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].GeometrySystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_material_System__WEBPACK_IMPORTED_MODULE_9__[\"MaterialSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MaterialSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_renderer_System__WEBPACK_IMPORTED_MODULE_16__[\"RendererSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RendererSystem); // 资源池\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ResourcePool).to(_components_framegraph_ResourcePool__WEBPACK_IMPORTED_MODULE_4__[\"ResourcePool\"]).inSingletonScope();\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ConfigService).to(_services_config_ConfigService__WEBPACK_IMPORTED_MODULE_22__[\"ConfigService\"]).inSingletonScope();\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].InteractorService).to(_services_interactor_IteractorService__WEBPACK_IMPORTED_MODULE_23__[\"InteractorService\"]).inSingletonScope();\n /**\n * bind render passes\n */\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__[\"RenderPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__[\"RenderPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__[\"CopyPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__[\"CopyPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__[\"PixelPickingPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__[\"PixelPickingPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPassFactory).toFactory(function (context) {\n return function (name) {\n return context.container.getNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass, name);\n };\n });\n return worldContainer;\n}\n//# sourceMappingURL=inversify.config.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbnZlcnNpZnkuY29uZmlnLmpzPzNhYTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDMEI7QUFDWTtBQUNrQjtBQUNGO0FBQ2M7QUFDRjtBQUNVO0FBQ2QsWUFBWSxvQkFBb0I7O0FBRWxCO0FBQ2Q7QUFDVTtBQUNSO0FBQ1Y7QUFDVztBQUNnQjtBQUNaO0FBQ1A7QUFDa0I7QUFDVjtBQUNKO0FBQ2M7QUFDdEM7QUFDc0I7QUFDVztBQUNJOztBQUV4RSxvQkFBb0IsbURBQVMsR0FBRztBQUN2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0VBQWE7QUFDOUI7QUFDQTtBQUNBO0FBQ087QUFDUCwwREFBMEQ7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLCtEQUErRDtBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsdURBQVUseUJBQXlCLG9GQUFtQjtBQUNyRTtBQUNBO0FBQ0E7O0FBRUEsZUFBZSx1REFBVSwyQ0FBMkMsa0VBQWdCLENBQUMsbUZBQWE7QUFDbEcsZUFBZSx1REFBVSxnREFBZ0Qsa0VBQWdCLENBQUMsNkZBQWtCO0FBQzVHLGVBQWUsdURBQVUsZ0RBQWdELGtFQUFnQixDQUFDLDZGQUFrQjtBQUM1RyxlQUFlLHVEQUFVLDJDQUEyQyxrRUFBZ0IsQ0FBQyw2RUFBYTtBQUNsRyxlQUFlLHVEQUFVLCtDQUErQyxrRUFBZ0IsQ0FBQyxxRkFBaUI7QUFDMUcsZUFBZSx1REFBVSwrQ0FBK0Msa0VBQWdCLENBQUMsd0ZBQWlCO0FBQzFHLGVBQWUsdURBQVUsK0NBQStDLGtFQUFnQixDQUFDLHdGQUFpQixHQUFHOztBQUV0RztBQUNQLDJCQUEyQixtREFBUztBQUNwQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsdURBQVUsYUFBYSwrRUFBZ0IscUNBQXFDLHVEQUFVO0FBQzVHLHNCQUFzQix1REFBVSxhQUFhLDhFQUFnQixxQ0FBcUMsdURBQVU7QUFDNUcsc0JBQXNCLHVEQUFVLGFBQWEsbUVBQVUscUNBQXFDLHVEQUFVO0FBQ3RHLHNCQUFzQix1REFBVSxhQUFhLDBFQUFjLHFDQUFxQyx1REFBVTtBQUMxRyxzQkFBc0IsdURBQVUsYUFBYSwwRUFBYyxxQ0FBcUMsdURBQVU7QUFDMUcsc0JBQXNCLHVEQUFVLGFBQWEsMkVBQWMscUNBQXFDLHVEQUFVLGlCQUFpQjs7QUFFM0gsc0JBQXNCLHVEQUFVLGtCQUFrQixnRkFBWTtBQUM5RCxzQkFBc0IsdURBQVUsbUJBQW1CLDZFQUFhO0FBQ2hFLHNCQUFzQix1REFBVSx1QkFBdUIsd0ZBQWlCO0FBQ3hFO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsdURBQVUsZ0JBQWdCLGtGQUFVLHFDQUFxQyxrRkFBVTtBQUN6RyxzQkFBc0IsdURBQVUsZ0JBQWdCLDhFQUFRLHFDQUFxQyw4RUFBUTtBQUNyRyxzQkFBc0IsdURBQVUsZ0JBQWdCLDhGQUFnQixxQ0FBcUMsOEZBQWdCO0FBQ3JILHNCQUFzQix1REFBVTtBQUNoQztBQUNBLHdDQUF3Qyx1REFBVTtBQUNsRDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbnZlcnNpZnkuY29uZmlnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSb290IENvbnRhaW5lclxuICogQHNlZSAvZGV2LWRvY3MvSW9DIOWuueWZqOOAgeS+nei1luazqOWFpeS4juacjeWKoeivtOaYji5tZFxuICovXG5pbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCBnZXREZWNvcmF0b3JzIGZyb20gJ2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9Db21wb25lbnRNYW5hZ2VyJztcbmltcG9ydCB7IFJlc291cmNlUG9vbCB9IGZyb20gJy4vY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlUG9vbCc7XG5pbXBvcnQgeyBGcmFtZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50JztcbmltcG9ydCB7IEdlb21ldHJ5U3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbSc7IC8vIGltcG9ydCB7IEludGVyYWN0aW9uU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ludGVyYWN0aW9uL1N5c3RlbSc7XG5cbmltcG9ydCB7IE1hdGVyaWFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50JztcbmltcG9ydCB7IE1hdGVyaWFsU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbSc7XG5pbXBvcnQgeyBDdWxsYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tZXNoL0N1bGxhYmxlQ29tcG9uZW50JztcbmltcG9ydCB7IE1lc2hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9NZXNoQ29tcG9uZW50JztcbmltcG9ydCB7IE1lc2hTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9TeXN0ZW0nO1xuaW1wb3J0IHsgQ29weVBhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL0NvcHlQYXNzJztcbmltcG9ydCB7IFBpeGVsUGlja2luZ1Bhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vY29tcG9uZW50cy9yZW5kZXJlci9wYXNzZXMvUmVuZGVyUGFzcyc7XG5pbXBvcnQgeyBSZW5kZXJlclN5c3RlbSB9IGZyb20gJy4vY29tcG9uZW50cy9yZW5kZXJlci9TeXN0ZW0nO1xuaW1wb3J0IHsgSGllcmFyY2h5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvSGllcmFyY2h5Q29tcG9uZW50JztcbmltcG9ydCB7IE5hbWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2NlbmVncmFwaC9OYW1lQ29tcG9uZW50JztcbmltcG9ydCB7IFNjZW5lR3JhcGhTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvc2NlbmVncmFwaC9TeXN0ZW0nO1xuaW1wb3J0IHsgVHJhbnNmb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvVHJhbnNmb3JtQ29tcG9uZW50JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZmlnL0NvbmZpZ1NlcnZpY2UnO1xuaW1wb3J0IHsgSW50ZXJhY3RvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ludGVyYWN0b3IvSXRlcmFjdG9yU2VydmljZSc7XG5pbXBvcnQgU2hhZGVyTW9kdWxlU2VydmljZSBmcm9tICcuL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvU2hhZGVyTW9kdWxlU2VydmljZSc7IC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ludmVyc2lmeS9JbnZlcnNpZnlKUy9ibG9iL21hc3Rlci93aWtpL2NvbnRhaW5lcl9hcGkubWQjZGVmYXVsdHNjb3BlXG5cbmV4cG9ydCB2YXIgY29udGFpbmVyID0gbmV3IENvbnRhaW5lcigpOyAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnZlcnNpZnkvSW52ZXJzaWZ5SlMvYmxvYi9tYXN0ZXIvd2lraS9pbmhlcml0YW5jZS5tZCN3aGF0LWNhbi1pLWRvLXdoZW4tbXktYmFzZS1jbGFzcy1pcy1wcm92aWRlZC1ieS1hLXRoaXJkLXBhcnR5LW1vZHVsZVxuLy8gZGVjb3JhdGUoaW5qZWN0YWJsZSgpLCBFdmVudEVtaXR0ZXIpO1xuLy8gY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5JRXZlbnRFbWl0dGVyKS50byhFdmVudEVtaXR0ZXIpO1xuLy8g5pSv5oyB5L2/55SoIG5ldyDogIzpnZ7lrrnlmajlrp7kvovljJbnmoTlnLrmma/vvIzlkIzml7bnpoHmraIgbGF6eUluamVjdCBjYWNoZVxuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW52ZXJzaWZ5L2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9ycyNjYWNoaW5nLXZzLW5vbi1jYWNoaW5nLWJlaGF2aW91clxuXG52YXIgREVDT1JBVE9SUyA9IGdldERlY29yYXRvcnMoY29udGFpbmVyLCBmYWxzZSk7XG4vLyBBZGQgYmFiZWwgbGVnYWN5IGRlY29yYXRvcnMgc3VwcG9ydFxuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW52ZXJzaWZ5L0ludmVyc2lmeUpTL2lzc3Vlcy8xMDUwXG4vLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnZlcnNpZnkvSW52ZXJzaWZ5SlMvaXNzdWVzLzEwMjYjaXNzdWVjb21tZW50LTUwNDkzNjAzNFxuZXhwb3J0IHZhciBsYXp5SW5qZWN0ID0gZnVuY3Rpb24gbGF6eUluamVjdChzZXJ2aWNlSWRlbnRpZmllcikge1xuICB2YXIgb3JpZ2luYWwgPSBERUNPUkFUT1JTLmxhenlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpOyAvLyB0aGUgJ2Rlc2NyaXB0b3InIHBhcmFtZXRlciBpcyBhY3R1YWxseSBhbHdheXMgZGVmaW5lZCBmb3IgY2xhc3MgZmllbGRzIGZvciBCYWJlbCwgYnV0IGlzIGNvbnNpZGVyZWQgdW5kZWZpbmVkIGZvciBUU0NcbiAgLy8gc28gd2UganVzdCBoYWNrIGl0IHdpdGggPy8hIGNvbWJpbmF0aW9uIHRvIGF2b2lkIFwiVFMxMjQwOiBVbmFibGUgdG8gcmVzb2x2ZSBzaWduYXR1cmUgb2YgcHJvcGVydHkgZGVjb3JhdG9yIHdoZW4gY2FsbGVkIGFzIGFuIGV4cHJlc3Npb25cIlxuXG4gIHJldHVybiBmdW5jdGlvbiAocHJvdG8sIGtleSwgZGVzY3JpcHRvcikge1xuICAgIC8vIG1ha2UgaXQgd29yayBhcyB1c3VhbFxuICAgIG9yaWdpbmFsLmNhbGwodGhpcywgcHJvdG8sIGtleSk7IC8vIHJldHVybiBsaW5rIHRvIHByb3RvLCBzbyBvd24gdmFsdWUgd29udCBiZSAndW5kZWZpbmVkJyBhZnRlciBjb21wb25lbnQncyBjcmVhdGlvblxuXG4gICAgaWYgKGRlc2NyaXB0b3IpIHtcbiAgICAgIGRlc2NyaXB0b3IuaW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBwcm90b1trZXldO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuZXhwb3J0IHZhciBsYXp5TXVsdGlJbmplY3QgPSBmdW5jdGlvbiBsYXp5TXVsdGlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgdmFyIG9yaWdpbmFsID0gREVDT1JBVE9SUy5sYXp5TXVsdGlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpOyAvLyB0aGUgJ2Rlc2NyaXB0b3InIHBhcmFtZXRlciBpcyBhY3R1YWxseSBhbHdheXMgZGVmaW5lZCBmb3IgY2xhc3MgZmllbGRzIGZvciBCYWJlbCwgYnV0IGlzIGNvbnNpZGVyZWQgdW5kZWZpbmVkIGZvciBUU0NcbiAgLy8gc28gd2UganVzdCBoYWNrIGl0IHdpdGggPy8hIGNvbWJpbmF0aW9uIHRvIGF2b2lkIFwiVFMxMjQwOiBVbmFibGUgdG8gcmVzb2x2ZSBzaWduYXR1cmUgb2YgcHJvcGVydHkgZGVjb3JhdG9yIHdoZW4gY2FsbGVkIGFzIGFuIGV4cHJlc3Npb25cIlxuXG4gIHJldHVybiBmdW5jdGlvbiAocHJvdG8sIGtleSwgZGVzY3JpcHRvcikge1xuICAgIC8vIG1ha2UgaXQgd29yayBhcyB1c3VhbFxuICAgIG9yaWdpbmFsLmNhbGwodGhpcywgcHJvdG8sIGtleSk7XG5cbiAgICBpZiAoZGVzY3JpcHRvcikge1xuICAgICAgLy8gcmV0dXJuIGxpbmsgdG8gcHJvdG8sIHNvIG93biB2YWx1ZSB3b250IGJlICd1bmRlZmluZWQnIGFmdGVyIGNvbXBvbmVudCdzIGNyZWF0aW9uXG4gICAgICBkZXNjcmlwdG9yLmluaXRpYWxpemVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcHJvdG9ba2V5XTtcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKiBnbG9iYWwgc2VydmljZXMgKi9cblxuY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TaGFkZXJNb2R1bGVTZXJ2aWNlKS50byhTaGFkZXJNb2R1bGVTZXJ2aWNlKS5pblNpbmdsZXRvblNjb3BlKCk7XG4vKipcbiAqIGJpbmQgZ2xvYmFsIGNvbXBvbmVudCBtYW5hZ2VycyBpbiByb290IGNvbnRhaW5lclxuICovXG5cbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuTmFtZUNvbXBvbmVudE1hbmFnZXIpLnRvQ29uc3RhbnRWYWx1ZShuZXcgQ29tcG9uZW50TWFuYWdlcihOYW1lQ29tcG9uZW50KSk7XG5jb250YWluZXIuYmluZChJREVOVElGSUVSLkhpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXIpLnRvQ29uc3RhbnRWYWx1ZShuZXcgQ29tcG9uZW50TWFuYWdlcihIaWVyYXJjaHlDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcikudG9Db25zdGFudFZhbHVlKG5ldyBDb21wb25lbnRNYW5hZ2VyKFRyYW5zZm9ybUNvbXBvbmVudCkpO1xuY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlcikudG9Db25zdGFudFZhbHVlKG5ldyBDb21wb25lbnRNYW5hZ2VyKE1lc2hDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuQ3VsbGFibGVDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoQ3VsbGFibGVDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnlDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoR2VvbWV0cnlDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuTWF0ZXJpYWxDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoTWF0ZXJpYWxDb21wb25lbnQpKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ludmVyc2lmeS9JbnZlcnNpZnlKUy9ibG9iL21hc3Rlci93aWtpL2hpZXJhcmNoaWNhbF9kaS5tZCNzdXBwb3J0LWZvci1oaWVyYXJjaGljYWwtZGktc3lzdGVtc1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV29ybGRDb250YWluZXIoKSB7XG4gIHZhciB3b3JsZENvbnRhaW5lciA9IG5ldyBDb250YWluZXIoKTtcbiAgd29ybGRDb250YWluZXIucGFyZW50ID0gY29udGFpbmVyO1xuICAvKipcbiAgICogYmluZCBzeXN0ZW1zXG4gICAqL1xuXG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhTY2VuZUdyYXBoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuU2NlbmVHcmFwaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhGcmFtZUdyYXBoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuRnJhbWVHcmFwaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhNZXNoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuTWVzaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhHZW9tZXRyeVN5c3RlbSkuaW5TaW5nbGV0b25TY29wZSgpLndoZW5UYXJnZXROYW1lZChJREVOVElGSUVSLkdlb21ldHJ5U3lzdGVtKTtcbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlN5c3RlbXMpLnRvKE1hdGVyaWFsU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWxTeXN0ZW0pO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuU3lzdGVtcykudG8oUmVuZGVyZXJTeXN0ZW0pLmluU2luZ2xldG9uU2NvcGUoKS53aGVuVGFyZ2V0TmFtZWQoSURFTlRJRklFUi5SZW5kZXJlclN5c3RlbSk7IC8vIOi1hOa6kOaxoFxuXG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5SZXNvdXJjZVBvb2wpLnRvKFJlc291cmNlUG9vbCkuaW5TaW5nbGV0b25TY29wZSgpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuQ29uZmlnU2VydmljZSkudG8oQ29uZmlnU2VydmljZSkuaW5TaW5nbGV0b25TY29wZSgpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuSW50ZXJhY3RvclNlcnZpY2UpLnRvKEludGVyYWN0b3JTZXJ2aWNlKS5pblNpbmdsZXRvblNjb3BlKCk7XG4gIC8qKlxuICAgKiBiaW5kIHJlbmRlciBwYXNzZXNcbiAgICovXG5cbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlclBhc3MpLnRvKFJlbmRlclBhc3MpLmluU2luZ2xldG9uU2NvcGUoKS53aGVuVGFyZ2V0TmFtZWQoUmVuZGVyUGFzcy5JREVOVElGSUVSKTtcbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlclBhc3MpLnRvKENvcHlQYXNzKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKENvcHlQYXNzLklERU5USUZJRVIpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyUGFzcykudG8oUGl4ZWxQaWNraW5nUGFzcykuaW5TaW5nbGV0b25TY29wZSgpLndoZW5UYXJnZXROYW1lZChQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLnRvRmFjdG9yeShmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuUmVuZGVyUGFzcywgbmFtZSk7XG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiB3b3JsZENvbnRhaW5lcjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludmVyc2lmeS5jb25maWcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/inversify.config.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/services/config/ConfigService.js": /*!******************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/services/config/ConfigService.js ***! \******************************************************************************/ /*! exports provided: ConfigService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return ConfigService; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar ConfigService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function ConfigService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ConfigService);\n\n this.config = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ConfigService, [{\n key: \"get\",\n value: function get() {\n return this.config;\n }\n }, {\n key: \"set\",\n value: function set(config) {\n this.config = config;\n }\n }]);\n\n return ConfigService;\n}(), _temp)) || _class);\n//# sourceMappingURL=ConfigService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9jb25maWcvQ29uZmlnU2VydmljZS5qcz8zMjdmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7O0FBRXVDO0FBQ2hDLDRCQUE0Qiw0REFBVTtBQUM3QztBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2NvbmZpZy9Db25maWdTZXJ2aWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIENvbmZpZ1NlcnZpY2UgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBDb25maWdTZXJ2aWNlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb25maWdTZXJ2aWNlKTtcblxuICAgIHRoaXMuY29uZmlnID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbmZpZ1NlcnZpY2UsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ29uZmlnU2VydmljZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29uZmlnU2VydmljZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/config/ConfigService.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/services/config/index.js": /*!**********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/services/config/index.js ***! \**********************************************************************/ /*! exports provided: ConfigService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ConfigService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ConfigService */ \"./node_modules/@antv/g-webgpu-core/es/services/config/ConfigService.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _ConfigService__WEBPACK_IMPORTED_MODULE_0__[\"ConfigService\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9jb25maWcvaW5kZXguanM/ZTI0MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFnQztBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2NvbmZpZy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQ29uZmlnU2VydmljZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/config/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/services/index.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/services/index.js ***! \***************************************************************/ /*! exports provided: ConfigService, IInteractorEvent, InteractorService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ \"./node_modules/@antv/g-webgpu-core/es/services/config/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _config__WEBPACK_IMPORTED_MODULE_0__[\"ConfigService\"]; });\n\n/* harmony import */ var _interactor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./interactor */ \"./node_modules/@antv/g-webgpu-core/es/services/interactor/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _interactor__WEBPACK_IMPORTED_MODULE_1__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _interactor__WEBPACK_IMPORTED_MODULE_1__[\"InteractorService\"]; });\n\n/* harmony import */ var _shader_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shader-module */ \"./node_modules/@antv/g-webgpu-core/es/services/shader-module/index.js\");\n/* empty/unused harmony star reexport */\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbmRleC5qcz9mMjM4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsd0NBQXlCO0FBQ0k7QUFDRztBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmFjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhZGVyLW1vZHVsZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/services/interactor/IteractorService.js": /*!*************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/services/interactor/IteractorService.js ***! \*************************************************************************************/ /*! exports provided: IInteractorEvent, InteractorService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return IInteractorEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return InteractorService; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class;\n\n\nvar IInteractorEvent;\n\n(function (IInteractorEvent) {\n IInteractorEvent[\"PANSTART\"] = \"PANSTART\";\n IInteractorEvent[\"PANEND\"] = \"PANEND\";\n IInteractorEvent[\"PANMOVE\"] = \"PANMOVE\";\n IInteractorEvent[\"PINCH\"] = \"PINCH\";\n IInteractorEvent[\"KEYDOWN\"] = \"KEYDOWN\";\n IInteractorEvent[\"KEYUP\"] = \"KEYUP\";\n IInteractorEvent[\"HOVER\"] = \"HOVER\";\n})(IInteractorEvent || (IInteractorEvent = {}));\n\nvar InteractorService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function () {\n function InteractorService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, InteractorService);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(InteractorService, [{\n key: \"listen\",\n value: function listen(canvas) {}\n }, {\n key: \"on\",\n value: function on(event, args) {}\n }, {\n key: \"connect\",\n value: function connect() {}\n }, {\n key: \"disconnect\",\n value: function disconnect() {}\n }, {\n key: \"destroy\",\n value: function destroy() {}\n }]);\n\n return InteractorService;\n}()) || _class);\n//# sourceMappingURL=IteractorService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbnRlcmFjdG9yL0l0ZXJhY3RvclNlcnZpY2UuanM/MmM2NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7O0FBRXVDO0FBQ2hDOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDRDQUE0Qzs7QUFFdEMsZ0NBQWdDLDREQUFVO0FBQ2pEO0FBQ0EsSUFBSSw0RUFBZTtBQUNuQjs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2ludGVyYWN0b3IvSXRlcmFjdG9yU2VydmljZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIF9kZWMsIF9jbGFzcztcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIElJbnRlcmFjdG9yRXZlbnQ7XG5cbihmdW5jdGlvbiAoSUludGVyYWN0b3JFdmVudCkge1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUEFOU1RBUlRcIl0gPSBcIlBBTlNUQVJUXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJQQU5FTkRcIl0gPSBcIlBBTkVORFwiO1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUEFOTU9WRVwiXSA9IFwiUEFOTU9WRVwiO1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUElOQ0hcIl0gPSBcIlBJTkNIXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJLRVlET1dOXCJdID0gXCJLRVlET1dOXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJLRVlVUFwiXSA9IFwiS0VZVVBcIjtcbiAgSUludGVyYWN0b3JFdmVudFtcIkhPVkVSXCJdID0gXCJIT1ZFUlwiO1xufSkoSUludGVyYWN0b3JFdmVudCB8fCAoSUludGVyYWN0b3JFdmVudCA9IHt9KSk7XG5cbmV4cG9ydCB2YXIgSW50ZXJhY3RvclNlcnZpY2UgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBJbnRlcmFjdG9yU2VydmljZSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSW50ZXJhY3RvclNlcnZpY2UpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEludGVyYWN0b3JTZXJ2aWNlLCBbe1xuICAgIGtleTogXCJsaXN0ZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbGlzdGVuKGNhbnZhcykge31cbiAgfSwge1xuICAgIGtleTogXCJvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbihldmVudCwgYXJncykge31cbiAgfSwge1xuICAgIGtleTogXCJjb25uZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbm5lY3QoKSB7fVxuICB9LCB7XG4gICAga2V5OiBcImRpc2Nvbm5lY3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzY29ubmVjdCgpIHt9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge31cbiAgfV0pO1xuXG4gIHJldHVybiBJbnRlcmFjdG9yU2VydmljZTtcbn0oKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUl0ZXJhY3RvclNlcnZpY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/interactor/IteractorService.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/services/interactor/index.js": /*!**************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/services/interactor/index.js ***! \**************************************************************************/ /*! exports provided: IInteractorEvent, InteractorService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _IteractorService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IteractorService */ \"./node_modules/@antv/g-webgpu-core/es/services/interactor/IteractorService.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _IteractorService__WEBPACK_IMPORTED_MODULE_0__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _IteractorService__WEBPACK_IMPORTED_MODULE_0__[\"InteractorService\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbnRlcmFjdG9yL2luZGV4LmpzP2FlZWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ25DIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2VydmljZXMvaW50ZXJhY3Rvci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vSXRlcmFjdG9yU2VydmljZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/interactor/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js": /*!*******************************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js ***! \*******************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ShaderModuleService; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_shader_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/shader-module */ \"./node_modules/@antv/g-webgpu-core/es/utils/shader-module.js\");\n/* harmony import */ var _utils_uniq__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/uniq */ \"./node_modules/@antv/g-webgpu-core/es/utils/uniq.js\");\n\n\n\n\nvar _dec, _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.picking.frag.glsl' */\nvar pickingFrag = \"varying vec4 v_PickingResult;\\nuniform vec4 u_HighlightColor : [0, 0, 0, 0];\\nuniform float u_PickingStage : 0.0;\\n\\n#define PICKING_ENCODE 1.0\\n#define PICKING_HIGHLIGHT 2.0\\n#define COLOR_SCALE 1. / 255.\\n\\n/*\\n * Returns highlight color if this item is selected.\\n */\\nvec4 filterHighlightColor(vec4 color) {\\n bool selected = bool(v_PickingResult.a);\\n\\n if (selected) {\\n vec4 highLightColor = u_HighlightColor * COLOR_SCALE;\\n\\n float highLightAlpha = highLightColor.a;\\n float highLightRatio = highLightAlpha / (highLightAlpha + color.a * (1.0 - highLightAlpha));\\n\\n vec3 resultRGB = mix(color.rgb, highLightColor.rgb, highLightRatio);\\n return vec4(resultRGB, color.a);\\n } else {\\n return color;\\n }\\n}\\n\\n/*\\n * Returns picking color if picking enabled else unmodified argument.\\n */\\nvec4 filterPickingColor(vec4 color) {\\n vec3 pickingColor = v_PickingResult.rgb;\\n if (u_PickingStage == PICKING_ENCODE && length(pickingColor) < 0.001) {\\n discard;\\n }\\n return u_PickingStage == PICKING_ENCODE ? vec4(pickingColor, step(0.001,color.a)): color;\\n}\\n\\n/*\\n * Returns picking color if picking is enabled if not\\n * highlight color if this item is selected, otherwise unmodified argument.\\n */\\nvec4 filterColor(vec4 color) {\\n return filterPickingColor(filterHighlightColor(color));\\n}\\n\";\n\n/* babel-plugin-inline-import './shaders/webgl.picking.vert.glsl' */\nvar pickingVert = \"attribute vec3 a_PickingColor;\\nvarying vec4 v_PickingResult;\\n\\nuniform vec3 u_PickingColor : [0, 0, 0];\\nuniform vec4 u_HighlightColor : [0, 0, 0, 0];\\nuniform float u_PickingStage : 0.0;\\nuniform float u_PickingThreshold : 1.0;\\nuniform float u_PickingBuffer: 0.0;\\n\\n#define PICKING_ENCODE 1.0\\n#define PICKING_HIGHLIGHT 2.0\\n#define COLOR_SCALE 1. / 255.\\n\\nbool isVertexPicked(vec3 vertexColor) {\\n return\\n abs(vertexColor.r - u_PickingColor.r) < u_PickingThreshold &&\\n abs(vertexColor.g - u_PickingColor.g) < u_PickingThreshold &&\\n abs(vertexColor.b - u_PickingColor.b) < u_PickingThreshold;\\n}\\n\\nvoid setPickingColor(vec3 pickingColor) {\\n // compares only in highlight stage\\n v_PickingResult.a = float((u_PickingStage == PICKING_HIGHLIGHT) && isVertexPicked(pickingColor));\\n\\n // Stores the picking color so that the fragment shader can render it during picking\\n v_PickingResult.rgb = pickingColor * COLOR_SCALE;\\n}\\n\\nfloat setPickingSize(float x) {\\n return u_PickingStage == PICKING_ENCODE ? x + u_PickingBuffer : x;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.sdf2d.frag.glsl' */\nvar sdf2dFrag = \"/**\\n * 2D signed distance field functions\\n * @see http://www.iquilezles.org/www/articles/distfunctions2d/distfunctions2d.htm\\n */\\n\\nfloat ndot(vec2 a, vec2 b ) { return a.x*b.x - a.y*b.y; }\\n\\nfloat sdCircle(vec2 p, float r) {\\n return length(p) - r;\\n}\\n\\nfloat sdEquilateralTriangle(vec2 p) {\\n float k = sqrt(3.0);\\n p.x = abs(p.x) - 1.0;\\n p.y = p.y + 1.0/k;\\n if( p.x + k*p.y > 0.0 ) p = vec2(p.x-k*p.y,-k*p.x-p.y)/2.0;\\n p.x -= clamp( p.x, -2.0, 0.0 );\\n return -length(p)*sign(p.y);\\n}\\n\\nfloat sdBox(vec2 p, vec2 b) {\\n vec2 d = abs(p)-b;\\n return length(max(d,vec2(0))) + min(max(d.x,d.y),0.0);\\n}\\n\\nfloat sdPentagon(vec2 p, float r) {\\n vec3 k = vec3(0.809016994,0.587785252,0.726542528);\\n p.x = abs(p.x);\\n p -= 2.0*min(dot(vec2(-k.x,k.y),p),0.0)*vec2(-k.x,k.y);\\n p -= 2.0*min(dot(vec2( k.x,k.y),p),0.0)*vec2( k.x,k.y);\\n p -= vec2(clamp(p.x,-r*k.z,r*k.z),r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdHexagon(vec2 p, float r) {\\n vec3 k = vec3(-0.866025404,0.5,0.577350269);\\n p = abs(p);\\n p -= 2.0*min(dot(k.xy,p),0.0)*k.xy;\\n p -= vec2(clamp(p.x, -k.z*r, k.z*r), r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdOctogon(vec2 p, float r) {\\n vec3 k = vec3(-0.9238795325, 0.3826834323, 0.4142135623 );\\n p = abs(p);\\n p -= 2.0*min(dot(vec2( k.x,k.y),p),0.0)*vec2( k.x,k.y);\\n p -= 2.0*min(dot(vec2(-k.x,k.y),p),0.0)*vec2(-k.x,k.y);\\n p -= vec2(clamp(p.x, -k.z*r, k.z*r), r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdHexagram(vec2 p, float r) {\\n vec4 k=vec4(-0.5,0.8660254038,0.5773502692,1.7320508076);\\n p = abs(p);\\n p -= 2.0*min(dot(k.xy,p),0.0)*k.xy;\\n p -= 2.0*min(dot(k.yx,p),0.0)*k.yx;\\n p -= vec2(clamp(p.x,r*k.z,r*k.w),r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdRhombus(vec2 p, vec2 b) {\\n vec2 q = abs(p);\\n float h = clamp((-2.0*ndot(q,b)+ndot(b,b))/dot(b,b),-1.0,1.0);\\n float d = length( q - 0.5*b*vec2(1.0-h,1.0+h) );\\n return d * sign( q.x*b.y + q.y*b.x - b.x*b.y );\\n}\\n\\nfloat sdVesica(vec2 p, float r, float d) {\\n p = abs(p);\\n float b = sqrt(r*r-d*d); // can delay this sqrt\\n return ((p.y-b)*d>p.x*b)\\n ? length(p-vec2(0.0,b))\\n : length(p-vec2(-d,0.0))-r;\\n}\";\nvar precisionRegExp = /precision\\s+(high|low|medium)p\\s+float/;\nvar globalDefaultprecision = '#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n #else\\n precision mediump float;\\n#endif\\n';\nvar includeRegExp = /#pragma include ([\"^+\"]?[\"\\ \"[a-zA-Z_0-9](.*)\"]*?)/g;\nvar ShaderModuleService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_3__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function ShaderModuleService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ShaderModuleService);\n\n this.moduleCache = {};\n this.rawContentCache = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ShaderModuleService, [{\n key: \"registerBuiltinModules\",\n value: function registerBuiltinModules() {\n this.destroy();\n this.registerModule('picking', {\n vs: pickingVert,\n fs: pickingFrag\n });\n this.registerModule('sdf2d', {\n vs: '',\n fs: sdf2dFrag\n });\n }\n }, {\n key: \"registerModule\",\n value: function registerModule(moduleName, moduleParams) {\n // prevent registering the same module multiple times\n if (this.rawContentCache[moduleName]) {\n return;\n }\n\n var _moduleParams$vs = moduleParams.vs,\n vs = _moduleParams$vs === void 0 ? '' : _moduleParams$vs,\n _moduleParams$fs = moduleParams.fs,\n fs = _moduleParams$fs === void 0 ? '' : _moduleParams$fs,\n declaredUniforms = moduleParams.uniforms;\n\n var _extractUniforms = Object(_utils_shader_module__WEBPACK_IMPORTED_MODULE_4__[\"extractUniforms\"])(vs),\n extractedVS = _extractUniforms.content,\n vsUniforms = _extractUniforms.uniforms;\n\n var _extractUniforms2 = Object(_utils_shader_module__WEBPACK_IMPORTED_MODULE_4__[\"extractUniforms\"])(fs),\n extractedFS = _extractUniforms2.content,\n fsUniforms = _extractUniforms2.uniforms;\n\n this.rawContentCache[moduleName] = {\n fs: extractedFS,\n uniforms: _objectSpread(_objectSpread(_objectSpread({}, vsUniforms), fsUniforms), declaredUniforms),\n vs: extractedVS\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.moduleCache = {};\n this.rawContentCache = {};\n }\n }, {\n key: \"getModule\",\n value: function getModule(moduleName) {\n var _this = this;\n\n if (this.moduleCache[moduleName]) {\n return this.moduleCache[moduleName];\n }\n\n var rawVS = this.rawContentCache[moduleName].vs || '';\n var rawFS = this.rawContentCache[moduleName].fs || '';\n\n var _this$processModule = this.processModule(rawVS, [], 'vs'),\n vs = _this$processModule.content,\n vsIncludeList = _this$processModule.includeList;\n\n var _this$processModule2 = this.processModule(rawFS, [], 'fs'),\n fs = _this$processModule2.content,\n fsIncludeList = _this$processModule2.includeList;\n\n var compiledFs = fs; // TODO: extract uniforms and their default values from GLSL\n\n var uniforms = Object(_utils_uniq__WEBPACK_IMPORTED_MODULE_5__[\"uniq\"])(vsIncludeList.concat(fsIncludeList).concat(moduleName)).reduce(function (prev, cur) {\n return _objectSpread(_objectSpread({}, prev), _this.rawContentCache[cur].uniforms);\n }, {});\n /**\n * set default precision for fragment shader\n * https://stackoverflow.com/questions/28540290/why-it-is-necessary-to-set-precision-for-the-fragment-shader\n */\n\n if (!precisionRegExp.test(fs)) {\n compiledFs = globalDefaultprecision + fs;\n }\n\n this.moduleCache[moduleName] = {\n fs: compiledFs.trim(),\n uniforms: uniforms,\n vs: vs.trim()\n };\n return this.moduleCache[moduleName];\n }\n }, {\n key: \"processModule\",\n value: function processModule(rawContent, includeList, type) {\n var _this2 = this;\n\n var compiled = rawContent.replace(includeRegExp, function (_, strMatch) {\n var includeOpt = strMatch.split(' ');\n var includeName = includeOpt[0].replace(/\"/g, '');\n\n if (includeList.indexOf(includeName) > -1) {\n return '';\n }\n\n var txt = _this2.rawContentCache[includeName][type];\n includeList.push(includeName);\n\n var _this2$processModule = _this2.processModule(txt || '', includeList, type),\n content = _this2$processModule.content;\n\n return content;\n });\n return {\n content: compiled,\n includeList: includeList\n };\n }\n }]);\n\n return ShaderModuleService;\n}(), _temp)) || _class);\n\n//# sourceMappingURL=ShaderModuleService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL1NoYWRlck1vZHVsZVNlcnZpY2UuanM/Yzk5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDQTtBQUNOOztBQUU5RDs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRTdlO0FBQ3FCO0FBQ3BCOztBQUV4QztBQUNBLGdEQUFnRCwrQ0FBK0MscUNBQXFDLHNNQUFzTSw0Q0FBNEMscUJBQXFCLDJEQUEyRCxnREFBZ0Qsa0dBQWtHLDRFQUE0RSxzQ0FBc0MsS0FBSyxPQUFPLG1CQUFtQixLQUFLLEdBQUcseUhBQXlILDRDQUE0QywyRUFBMkUsY0FBYyxLQUFLLDZGQUE2RixHQUFHLCtLQUErSywyREFBMkQsR0FBRzs7QUFFajBDO0FBQ0EsaURBQWlELCtCQUErQiw0Q0FBNEMsK0NBQStDLHFDQUFxQyx5Q0FBeUMscUNBQXFDLHVJQUF1SSxpTkFBaU4sR0FBRyw2Q0FBNkMsNElBQTRJLCtJQUErSSxHQUFHLG1DQUFtQyx1RUFBdUUsR0FBRzs7QUFFampDO0FBQ0EscUxBQXFMLDBCQUEwQixFQUFFLHFDQUFxQyx5QkFBeUIsR0FBRyx5Q0FBeUMsd0JBQXdCLHlCQUF5QixzQkFBc0IsK0RBQStELG1DQUFtQyxnQ0FBZ0MsR0FBRyxpQ0FBaUMsc0JBQXNCLDBEQUEwRCxHQUFHLHVDQUF1Qyx1REFBdUQsbUJBQW1CLDJEQUEyRCwyREFBMkQseUNBQXlDLCtCQUErQixHQUFHLHNDQUFzQyxnREFBZ0QsZUFBZSx1Q0FBdUMsNENBQTRDLCtCQUErQixHQUFHLHNDQUFzQyw4REFBOEQsZUFBZSwyREFBMkQsMkRBQTJELDRDQUE0QywrQkFBK0IsR0FBRyx1Q0FBdUMsNkRBQTZELGVBQWUsdUNBQXVDLHVDQUF1Qyx3Q0FBd0MsK0JBQStCLEdBQUcscUNBQXFDLG9CQUFvQixrRUFBa0Usb0RBQW9ELG1EQUFtRCxHQUFHLDhDQUE4QyxlQUFlLDRCQUE0Qiw2SEFBNkgsR0FBRztBQUN2b0U7QUFDQSx3RkFBd0YsbUNBQW1DO0FBQzNIO0FBQ0Esa0NBQWtDLDREQUFVO0FBQzVDO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUE2Qiw0RUFBZTtBQUM1QztBQUNBOztBQUVBLDhCQUE4Qiw0RUFBZTtBQUM3QztBQUNBOztBQUVBO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCOztBQUUxQixxQkFBcUIsd0RBQUk7QUFDekIsNkNBQTZDO0FBQzdDLE9BQU8sSUFBSTtBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ3lDO0FBQzFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2VydmljZXMvc2hhZGVyLW1vZHVsZS9TaGFkZXJNb2R1bGVTZXJ2aWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgZXh0cmFjdFVuaWZvcm1zIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2hhZGVyLW1vZHVsZSc7XG5pbXBvcnQgeyB1bmlxIH0gZnJvbSAnLi4vLi4vdXRpbHMvdW5pcSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wucGlja2luZy5mcmFnLmdsc2wnICovXG52YXIgcGlja2luZ0ZyYWcgPSBcInZhcnlpbmcgdmVjNCB2X1BpY2tpbmdSZXN1bHQ7XFxudW5pZm9ybSB2ZWM0IHVfSGlnaGxpZ2h0Q29sb3IgOiBbMCwgMCwgMCwgMF07XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdTdGFnZSA6IDAuMDtcXG5cXG4jZGVmaW5lIFBJQ0tJTkdfRU5DT0RFIDEuMFxcbiNkZWZpbmUgUElDS0lOR19ISUdITElHSFQgMi4wXFxuI2RlZmluZSBDT0xPUl9TQ0FMRSAxLiAvIDI1NS5cXG5cXG4vKlxcbiAqIFJldHVybnMgaGlnaGxpZ2h0IGNvbG9yIGlmIHRoaXMgaXRlbSBpcyBzZWxlY3RlZC5cXG4gKi9cXG52ZWM0IGZpbHRlckhpZ2hsaWdodENvbG9yKHZlYzQgY29sb3IpIHtcXG4gIGJvb2wgc2VsZWN0ZWQgPSBib29sKHZfUGlja2luZ1Jlc3VsdC5hKTtcXG5cXG4gIGlmIChzZWxlY3RlZCkge1xcbiAgICB2ZWM0IGhpZ2hMaWdodENvbG9yID0gdV9IaWdobGlnaHRDb2xvciAqIENPTE9SX1NDQUxFO1xcblxcbiAgICBmbG9hdCBoaWdoTGlnaHRBbHBoYSA9IGhpZ2hMaWdodENvbG9yLmE7XFxuICAgIGZsb2F0IGhpZ2hMaWdodFJhdGlvID0gaGlnaExpZ2h0QWxwaGEgLyAoaGlnaExpZ2h0QWxwaGEgKyBjb2xvci5hICogKDEuMCAtIGhpZ2hMaWdodEFscGhhKSk7XFxuXFxuICAgIHZlYzMgcmVzdWx0UkdCID0gbWl4KGNvbG9yLnJnYiwgaGlnaExpZ2h0Q29sb3IucmdiLCBoaWdoTGlnaHRSYXRpbyk7XFxuICAgIHJldHVybiB2ZWM0KHJlc3VsdFJHQiwgY29sb3IuYSk7XFxuICB9IGVsc2Uge1xcbiAgICByZXR1cm4gY29sb3I7XFxuICB9XFxufVxcblxcbi8qXFxuICogUmV0dXJucyBwaWNraW5nIGNvbG9yIGlmIHBpY2tpbmcgZW5hYmxlZCBlbHNlIHVubW9kaWZpZWQgYXJndW1lbnQuXFxuICovXFxudmVjNCBmaWx0ZXJQaWNraW5nQ29sb3IodmVjNCBjb2xvcikge1xcbiAgdmVjMyBwaWNraW5nQ29sb3IgPSB2X1BpY2tpbmdSZXN1bHQucmdiO1xcbiAgaWYgKHVfUGlja2luZ1N0YWdlID09IFBJQ0tJTkdfRU5DT0RFICYmIGxlbmd0aChwaWNraW5nQ29sb3IpIDwgMC4wMDEpIHtcXG4gICAgZGlzY2FyZDtcXG4gIH1cXG4gIHJldHVybiB1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0VOQ09ERSA/IHZlYzQocGlja2luZ0NvbG9yLCBzdGVwKDAuMDAxLGNvbG9yLmEpKTogY29sb3I7XFxufVxcblxcbi8qXFxuICogUmV0dXJucyBwaWNraW5nIGNvbG9yIGlmIHBpY2tpbmcgaXMgZW5hYmxlZCBpZiBub3RcXG4gKiBoaWdobGlnaHQgY29sb3IgaWYgdGhpcyBpdGVtIGlzIHNlbGVjdGVkLCBvdGhlcndpc2UgdW5tb2RpZmllZCBhcmd1bWVudC5cXG4gKi9cXG52ZWM0IGZpbHRlckNvbG9yKHZlYzQgY29sb3IpIHtcXG4gIHJldHVybiBmaWx0ZXJQaWNraW5nQ29sb3IoZmlsdGVySGlnaGxpZ2h0Q29sb3IoY29sb3IpKTtcXG59XFxuXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wucGlja2luZy52ZXJ0Lmdsc2wnICovXG52YXIgcGlja2luZ1ZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMzIGFfUGlja2luZ0NvbG9yO1xcbnZhcnlpbmcgdmVjNCB2X1BpY2tpbmdSZXN1bHQ7XFxuXFxudW5pZm9ybSB2ZWMzIHVfUGlja2luZ0NvbG9yIDogWzAsIDAsIDBdO1xcbnVuaWZvcm0gdmVjNCB1X0hpZ2hsaWdodENvbG9yIDogWzAsIDAsIDAsIDBdO1xcbnVuaWZvcm0gZmxvYXQgdV9QaWNraW5nU3RhZ2UgOiAwLjA7XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdUaHJlc2hvbGQgOiAxLjA7XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdCdWZmZXI6IDAuMDtcXG5cXG4jZGVmaW5lIFBJQ0tJTkdfRU5DT0RFIDEuMFxcbiNkZWZpbmUgUElDS0lOR19ISUdITElHSFQgMi4wXFxuI2RlZmluZSBDT0xPUl9TQ0FMRSAxLiAvIDI1NS5cXG5cXG5ib29sIGlzVmVydGV4UGlja2VkKHZlYzMgdmVydGV4Q29sb3IpIHtcXG4gIHJldHVyblxcbiAgICBhYnModmVydGV4Q29sb3IuciAtIHVfUGlja2luZ0NvbG9yLnIpIDwgdV9QaWNraW5nVGhyZXNob2xkICYmXFxuICAgIGFicyh2ZXJ0ZXhDb2xvci5nIC0gdV9QaWNraW5nQ29sb3IuZykgPCB1X1BpY2tpbmdUaHJlc2hvbGQgJiZcXG4gICAgYWJzKHZlcnRleENvbG9yLmIgLSB1X1BpY2tpbmdDb2xvci5iKSA8IHVfUGlja2luZ1RocmVzaG9sZDtcXG59XFxuXFxudm9pZCBzZXRQaWNraW5nQ29sb3IodmVjMyBwaWNraW5nQ29sb3IpIHtcXG4gIC8vIGNvbXBhcmVzIG9ubHkgaW4gaGlnaGxpZ2h0IHN0YWdlXFxuICB2X1BpY2tpbmdSZXN1bHQuYSA9IGZsb2F0KCh1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0hJR0hMSUdIVCkgJiYgaXNWZXJ0ZXhQaWNrZWQocGlja2luZ0NvbG9yKSk7XFxuXFxuICAvLyBTdG9yZXMgdGhlIHBpY2tpbmcgY29sb3Igc28gdGhhdCB0aGUgZnJhZ21lbnQgc2hhZGVyIGNhbiByZW5kZXIgaXQgZHVyaW5nIHBpY2tpbmdcXG4gIHZfUGlja2luZ1Jlc3VsdC5yZ2IgPSBwaWNraW5nQ29sb3IgKiBDT0xPUl9TQ0FMRTtcXG59XFxuXFxuZmxvYXQgc2V0UGlja2luZ1NpemUoZmxvYXQgeCkge1xcbiAgIHJldHVybiB1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0VOQ09ERSA/IHggKyB1X1BpY2tpbmdCdWZmZXIgOiB4O1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5zZGYyZC5mcmFnLmdsc2wnICovXG52YXIgc2RmMmRGcmFnID0gXCIvKipcXG4gKiAyRCBzaWduZWQgZGlzdGFuY2UgZmllbGQgZnVuY3Rpb25zXFxuICogQHNlZSBodHRwOi8vd3d3LmlxdWlsZXpsZXMub3JnL3d3dy9hcnRpY2xlcy9kaXN0ZnVuY3Rpb25zMmQvZGlzdGZ1bmN0aW9uczJkLmh0bVxcbiAqL1xcblxcbmZsb2F0IG5kb3QodmVjMiBhLCB2ZWMyIGIgKSB7IHJldHVybiBhLngqYi54IC0gYS55KmIueTsgfVxcblxcbmZsb2F0IHNkQ2lyY2xlKHZlYzIgcCwgZmxvYXQgcikge1xcbiAgcmV0dXJuIGxlbmd0aChwKSAtIHI7XFxufVxcblxcbmZsb2F0IHNkRXF1aWxhdGVyYWxUcmlhbmdsZSh2ZWMyIHApIHtcXG4gIGZsb2F0IGsgPSBzcXJ0KDMuMCk7XFxuICBwLnggPSBhYnMocC54KSAtIDEuMDtcXG4gIHAueSA9IHAueSArIDEuMC9rO1xcbiAgaWYoIHAueCArIGsqcC55ID4gMC4wICkgcCA9IHZlYzIocC54LWsqcC55LC1rKnAueC1wLnkpLzIuMDtcXG4gIHAueCAtPSBjbGFtcCggcC54LCAtMi4wLCAwLjAgKTtcXG4gIHJldHVybiAtbGVuZ3RoKHApKnNpZ24ocC55KTtcXG59XFxuXFxuZmxvYXQgc2RCb3godmVjMiBwLCB2ZWMyIGIpIHtcXG4gIHZlYzIgZCA9IGFicyhwKS1iO1xcbiAgcmV0dXJuIGxlbmd0aChtYXgoZCx2ZWMyKDApKSkgKyBtaW4obWF4KGQueCxkLnkpLDAuMCk7XFxufVxcblxcbmZsb2F0IHNkUGVudGFnb24odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWMzIGsgPSB2ZWMzKDAuODA5MDE2OTk0LDAuNTg3Nzg1MjUyLDAuNzI2NTQyNTI4KTtcXG4gIHAueCA9IGFicyhwLngpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKC1rLngsay55KSxwKSwwLjApKnZlYzIoLWsueCxrLnkpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKCBrLngsay55KSxwKSwwLjApKnZlYzIoIGsueCxrLnkpO1xcbiAgcCAtPSB2ZWMyKGNsYW1wKHAueCwtciprLnosciprLnopLHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkSGV4YWdvbih2ZWMyIHAsIGZsb2F0IHIpIHtcXG4gIHZlYzMgayA9IHZlYzMoLTAuODY2MDI1NDA0LDAuNSwwLjU3NzM1MDI2OSk7XFxuICBwID0gYWJzKHApO1xcbiAgcCAtPSAyLjAqbWluKGRvdChrLnh5LHApLDAuMCkqay54eTtcXG4gIHAgLT0gdmVjMihjbGFtcChwLngsIC1rLnoqciwgay56KnIpLCByKTtcXG4gIHJldHVybiBsZW5ndGgocCkqc2lnbihwLnkpO1xcbn1cXG5cXG5mbG9hdCBzZE9jdG9nb24odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWMzIGsgPSB2ZWMzKC0wLjkyMzg3OTUzMjUsIDAuMzgyNjgzNDMyMywgMC40MTQyMTM1NjIzICk7XFxuICBwID0gYWJzKHApO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKCBrLngsay55KSxwKSwwLjApKnZlYzIoIGsueCxrLnkpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKC1rLngsay55KSxwKSwwLjApKnZlYzIoLWsueCxrLnkpO1xcbiAgcCAtPSB2ZWMyKGNsYW1wKHAueCwgLWsueipyLCBrLnoqciksIHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkSGV4YWdyYW0odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWM0IGs9dmVjNCgtMC41LDAuODY2MDI1NDAzOCwwLjU3NzM1MDI2OTIsMS43MzIwNTA4MDc2KTtcXG4gIHAgPSBhYnMocCk7XFxuICBwIC09IDIuMCptaW4oZG90KGsueHkscCksMC4wKSprLnh5O1xcbiAgcCAtPSAyLjAqbWluKGRvdChrLnl4LHApLDAuMCkqay55eDtcXG4gIHAgLT0gdmVjMihjbGFtcChwLngsciprLnosciprLncpLHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkUmhvbWJ1cyh2ZWMyIHAsIHZlYzIgYikge1xcbiAgdmVjMiBxID0gYWJzKHApO1xcbiAgZmxvYXQgaCA9IGNsYW1wKCgtMi4wKm5kb3QocSxiKStuZG90KGIsYikpL2RvdChiLGIpLC0xLjAsMS4wKTtcXG4gIGZsb2F0IGQgPSBsZW5ndGgoIHEgLSAwLjUqYip2ZWMyKDEuMC1oLDEuMCtoKSApO1xcbiAgcmV0dXJuIGQgKiBzaWduKCBxLngqYi55ICsgcS55KmIueCAtIGIueCpiLnkgKTtcXG59XFxuXFxuZmxvYXQgc2RWZXNpY2EodmVjMiBwLCBmbG9hdCByLCBmbG9hdCBkKSB7XFxuICBwID0gYWJzKHApO1xcbiAgZmxvYXQgYiA9IHNxcnQocipyLWQqZCk7IC8vIGNhbiBkZWxheSB0aGlzIHNxcnRcXG4gIHJldHVybiAoKHAueS1iKSpkPnAueCpiKVxcbiAgICAgICAgICA/IGxlbmd0aChwLXZlYzIoMC4wLGIpKVxcbiAgICAgICAgICA6IGxlbmd0aChwLXZlYzIoLWQsMC4wKSktcjtcXG59XCI7XG52YXIgcHJlY2lzaW9uUmVnRXhwID0gL3ByZWNpc2lvblxccysoaGlnaHxsb3d8bWVkaXVtKXBcXHMrZmxvYXQvO1xudmFyIGdsb2JhbERlZmF1bHRwcmVjaXNpb24gPSAnI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdIXFxuIHByZWNpc2lvbiBoaWdocCBmbG9hdDtcXG4gI2Vsc2VcXG4gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XFxuI2VuZGlmXFxuJztcbnZhciBpbmNsdWRlUmVnRXhwID0gLyNwcmFnbWEgaW5jbHVkZSAoW1wiXitcIl0/W1wiXFwgXCJbYS16QS1aXzAtOV0oLiopXCJdKj8pL2c7XG52YXIgU2hhZGVyTW9kdWxlU2VydmljZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNoYWRlck1vZHVsZVNlcnZpY2UoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNoYWRlck1vZHVsZVNlcnZpY2UpO1xuXG4gICAgdGhpcy5tb2R1bGVDYWNoZSA9IHt9O1xuICAgIHRoaXMucmF3Q29udGVudENhY2hlID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2hhZGVyTW9kdWxlU2VydmljZSwgW3tcbiAgICBrZXk6IFwicmVnaXN0ZXJCdWlsdGluTW9kdWxlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWdpc3RlckJ1aWx0aW5Nb2R1bGVzKCkge1xuICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICB0aGlzLnJlZ2lzdGVyTW9kdWxlKCdwaWNraW5nJywge1xuICAgICAgICB2czogcGlja2luZ1ZlcnQsXG4gICAgICAgIGZzOiBwaWNraW5nRnJhZ1xuICAgICAgfSk7XG4gICAgICB0aGlzLnJlZ2lzdGVyTW9kdWxlKCdzZGYyZCcsIHtcbiAgICAgICAgdnM6ICcnLFxuICAgICAgICBmczogc2RmMmRGcmFnXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVnaXN0ZXJNb2R1bGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVnaXN0ZXJNb2R1bGUobW9kdWxlTmFtZSwgbW9kdWxlUGFyYW1zKSB7XG4gICAgICAvLyBwcmV2ZW50IHJlZ2lzdGVyaW5nIHRoZSBzYW1lIG1vZHVsZSBtdWx0aXBsZSB0aW1lc1xuICAgICAgaWYgKHRoaXMucmF3Q29udGVudENhY2hlW21vZHVsZU5hbWVdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIF9tb2R1bGVQYXJhbXMkdnMgPSBtb2R1bGVQYXJhbXMudnMsXG4gICAgICAgICAgdnMgPSBfbW9kdWxlUGFyYW1zJHZzID09PSB2b2lkIDAgPyAnJyA6IF9tb2R1bGVQYXJhbXMkdnMsXG4gICAgICAgICAgX21vZHVsZVBhcmFtcyRmcyA9IG1vZHVsZVBhcmFtcy5mcyxcbiAgICAgICAgICBmcyA9IF9tb2R1bGVQYXJhbXMkZnMgPT09IHZvaWQgMCA/ICcnIDogX21vZHVsZVBhcmFtcyRmcyxcbiAgICAgICAgICBkZWNsYXJlZFVuaWZvcm1zID0gbW9kdWxlUGFyYW1zLnVuaWZvcm1zO1xuXG4gICAgICB2YXIgX2V4dHJhY3RVbmlmb3JtcyA9IGV4dHJhY3RVbmlmb3Jtcyh2cyksXG4gICAgICAgICAgZXh0cmFjdGVkVlMgPSBfZXh0cmFjdFVuaWZvcm1zLmNvbnRlbnQsXG4gICAgICAgICAgdnNVbmlmb3JtcyA9IF9leHRyYWN0VW5pZm9ybXMudW5pZm9ybXM7XG5cbiAgICAgIHZhciBfZXh0cmFjdFVuaWZvcm1zMiA9IGV4dHJhY3RVbmlmb3JtcyhmcyksXG4gICAgICAgICAgZXh0cmFjdGVkRlMgPSBfZXh0cmFjdFVuaWZvcm1zMi5jb250ZW50LFxuICAgICAgICAgIGZzVW5pZm9ybXMgPSBfZXh0cmFjdFVuaWZvcm1zMi51bmlmb3JtcztcblxuICAgICAgdGhpcy5yYXdDb250ZW50Q2FjaGVbbW9kdWxlTmFtZV0gPSB7XG4gICAgICAgIGZzOiBleHRyYWN0ZWRGUyxcbiAgICAgICAgdW5pZm9ybXM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB2c1VuaWZvcm1zKSwgZnNVbmlmb3JtcyksIGRlY2xhcmVkVW5pZm9ybXMpLFxuICAgICAgICB2czogZXh0cmFjdGVkVlNcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMubW9kdWxlQ2FjaGUgPSB7fTtcbiAgICAgIHRoaXMucmF3Q29udGVudENhY2hlID0ge307XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1vZHVsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNb2R1bGUobW9kdWxlTmFtZSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV07XG4gICAgICB9XG5cbiAgICAgIHZhciByYXdWUyA9IHRoaXMucmF3Q29udGVudENhY2hlW21vZHVsZU5hbWVdLnZzIHx8ICcnO1xuICAgICAgdmFyIHJhd0ZTID0gdGhpcy5yYXdDb250ZW50Q2FjaGVbbW9kdWxlTmFtZV0uZnMgfHwgJyc7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9jZXNzTW9kdWxlID0gdGhpcy5wcm9jZXNzTW9kdWxlKHJhd1ZTLCBbXSwgJ3ZzJyksXG4gICAgICAgICAgdnMgPSBfdGhpcyRwcm9jZXNzTW9kdWxlLmNvbnRlbnQsXG4gICAgICAgICAgdnNJbmNsdWRlTGlzdCA9IF90aGlzJHByb2Nlc3NNb2R1bGUuaW5jbHVkZUxpc3Q7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9jZXNzTW9kdWxlMiA9IHRoaXMucHJvY2Vzc01vZHVsZShyYXdGUywgW10sICdmcycpLFxuICAgICAgICAgIGZzID0gX3RoaXMkcHJvY2Vzc01vZHVsZTIuY29udGVudCxcbiAgICAgICAgICBmc0luY2x1ZGVMaXN0ID0gX3RoaXMkcHJvY2Vzc01vZHVsZTIuaW5jbHVkZUxpc3Q7XG5cbiAgICAgIHZhciBjb21waWxlZEZzID0gZnM7IC8vIFRPRE86IGV4dHJhY3QgdW5pZm9ybXMgYW5kIHRoZWlyIGRlZmF1bHQgdmFsdWVzIGZyb20gR0xTTFxuXG4gICAgICB2YXIgdW5pZm9ybXMgPSB1bmlxKHZzSW5jbHVkZUxpc3QuY29uY2F0KGZzSW5jbHVkZUxpc3QpLmNvbmNhdChtb2R1bGVOYW1lKSkucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXIpIHtcbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJldiksIF90aGlzLnJhd0NvbnRlbnRDYWNoZVtjdXJdLnVuaWZvcm1zKTtcbiAgICAgIH0sIHt9KTtcbiAgICAgIC8qKlxuICAgICAgICogc2V0IGRlZmF1bHQgcHJlY2lzaW9uIGZvciBmcmFnbWVudCBzaGFkZXJcbiAgICAgICAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI4NTQwMjkwL3doeS1pdC1pcy1uZWNlc3NhcnktdG8tc2V0LXByZWNpc2lvbi1mb3ItdGhlLWZyYWdtZW50LXNoYWRlclxuICAgICAgICovXG5cbiAgICAgIGlmICghcHJlY2lzaW9uUmVnRXhwLnRlc3QoZnMpKSB7XG4gICAgICAgIGNvbXBpbGVkRnMgPSBnbG9iYWxEZWZhdWx0cHJlY2lzaW9uICsgZnM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV0gPSB7XG4gICAgICAgIGZzOiBjb21waWxlZEZzLnRyaW0oKSxcbiAgICAgICAgdW5pZm9ybXM6IHVuaWZvcm1zLFxuICAgICAgICB2czogdnMudHJpbSgpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInByb2Nlc3NNb2R1bGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJvY2Vzc01vZHVsZShyYXdDb250ZW50LCBpbmNsdWRlTGlzdCwgdHlwZSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBjb21waWxlZCA9IHJhd0NvbnRlbnQucmVwbGFjZShpbmNsdWRlUmVnRXhwLCBmdW5jdGlvbiAoXywgc3RyTWF0Y2gpIHtcbiAgICAgICAgdmFyIGluY2x1ZGVPcHQgPSBzdHJNYXRjaC5zcGxpdCgnICcpO1xuICAgICAgICB2YXIgaW5jbHVkZU5hbWUgPSBpbmNsdWRlT3B0WzBdLnJlcGxhY2UoL1wiL2csICcnKTtcblxuICAgICAgICBpZiAoaW5jbHVkZUxpc3QuaW5kZXhPZihpbmNsdWRlTmFtZSkgPiAtMSkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0eHQgPSBfdGhpczIucmF3Q29udGVudENhY2hlW2luY2x1ZGVOYW1lXVt0eXBlXTtcbiAgICAgICAgaW5jbHVkZUxpc3QucHVzaChpbmNsdWRlTmFtZSk7XG5cbiAgICAgICAgdmFyIF90aGlzMiRwcm9jZXNzTW9kdWxlID0gX3RoaXMyLnByb2Nlc3NNb2R1bGUodHh0IHx8ICcnLCBpbmNsdWRlTGlzdCwgdHlwZSksXG4gICAgICAgICAgICBjb250ZW50ID0gX3RoaXMyJHByb2Nlc3NNb2R1bGUuY29udGVudDtcblxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogY29tcGlsZWQsXG4gICAgICAgIGluY2x1ZGVMaXN0OiBpbmNsdWRlTGlzdFxuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2hhZGVyTW9kdWxlU2VydmljZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuZXhwb3J0IHsgU2hhZGVyTW9kdWxlU2VydmljZSBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaGFkZXJNb2R1bGVTZXJ2aWNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/services/shader-module/index.js": /*!*****************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/services/shader-module/index.js ***! \*****************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ShaderModuleService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ShaderModuleService */ \"./node_modules/@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\");\n/* empty/unused harmony star reexport */\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL2luZGV4LmpzPzkxZmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBLHdDQUFzQztBQUN0QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL1NoYWRlck1vZHVsZVNlcnZpY2UnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/services/shader-module/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/shape/AABB.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/shape/AABB.js ***! \***********************************************************/ /*! exports provided: AABB */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return AABB; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n\n\n\n\n/**\n * Axis-Aligned Bounding Box\n * 为了便于后续 Frustum Culling,通过查找表定义 p-vertex 和 n-vertex\n * @see https://github.com/antvis/GWebGPUEngine/issues/3\n */\nvar AABB = /*#__PURE__*/function () {\n function AABB(center, halfExtents) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, AABB);\n\n this.center = void 0;\n this.halfExtents = void 0;\n this.min = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.max = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.update(center, halfExtents);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(AABB, [{\n key: \"update\",\n value: function update(center, halfExtents) {\n this.center = center || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.halfExtents = halfExtents || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0.5, 0.5, 0.5);\n this.min = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(this.min, this.center, this.halfExtents);\n this.max = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].add(this.max, this.center, this.halfExtents);\n }\n }, {\n key: \"setMinMax\",\n value: function setMinMax(min, max) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].add(this.center, max, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.center, this.center, 0.5);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(this.halfExtents, max, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.halfExtents, this.halfExtents, 0.5);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(this.min, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(this.max, max);\n }\n }, {\n key: \"getMin\",\n value: function getMin() {\n return this.min;\n }\n }, {\n key: \"getMax\",\n value: function getMax() {\n return this.max;\n }\n }, {\n key: \"add\",\n value: function add(aabb) {\n var tc = this.center;\n var tcx = tc[0];\n var tcy = tc[1];\n var tcz = tc[2];\n var th = this.halfExtents;\n var thx = th[0];\n var thy = th[1];\n var thz = th[2];\n var tminx = tcx - thx;\n var tmaxx = tcx + thx;\n var tminy = tcy - thy;\n var tmaxy = tcy + thy;\n var tminz = tcz - thz;\n var tmaxz = tcz + thz;\n var oc = aabb.center;\n var ocx = oc[0];\n var ocy = oc[1];\n var ocz = oc[2];\n var oh = aabb.halfExtents;\n var ohx = oh[0];\n var ohy = oh[1];\n var ohz = oh[2];\n var ominx = ocx - ohx;\n var omaxx = ocx + ohx;\n var ominy = ocy - ohy;\n var omaxy = ocy + ohy;\n var ominz = ocz - ohz;\n var omaxz = ocz + ohz;\n\n if (ominx < tminx) {\n tminx = ominx;\n }\n\n if (omaxx > tmaxx) {\n tmaxx = omaxx;\n }\n\n if (ominy < tminy) {\n tminy = ominy;\n }\n\n if (omaxy > tmaxy) {\n tmaxy = omaxy;\n }\n\n if (ominz < tminz) {\n tminz = ominz;\n }\n\n if (omaxz > tmaxz) {\n tmaxz = omaxz;\n }\n\n tc[0] = (tminx + tmaxx) * 0.5;\n tc[1] = (tminy + tmaxy) * 0.5;\n tc[2] = (tminz + tmaxz) * 0.5;\n th[0] = (tmaxx - tminx) * 0.5;\n th[1] = (tmaxy - tminy) * 0.5;\n th[2] = (tmaxz - tminz) * 0.5;\n this.min[0] = tminx;\n this.min[1] = tminy;\n this.min[2] = tminz;\n this.max[0] = tmaxx;\n this.max[1] = tmaxy;\n this.max[2] = tmaxz;\n }\n }, {\n key: \"intersects\",\n value: function intersects(aabb) {\n var aMax = this.getMax();\n var aMin = this.getMin();\n var bMax = aabb.getMax();\n var bMin = aabb.getMin();\n return aMin[0] <= bMax[0] && aMax[0] >= bMin[0] && aMin[1] <= bMax[1] && aMax[1] >= bMin[1] && aMin[2] <= bMax[2] && aMax[2] >= bMin[2];\n }\n }, {\n key: \"containsPoint\",\n value: function containsPoint(point) {\n var min = this.getMin();\n var max = this.getMax();\n return !(point[0] < min[0] || point[0] > max[0] || point[1] < min[1] || point[1] > max[1] || point[2] < min[2] || point[2] > max[2]);\n }\n /**\n * get n-vertex\n * @param plane plane of CullingVolume\n */\n\n }, {\n key: \"getNegativeFarPoint\",\n value: function getNegativeFarPoint(plane) {\n if (plane.pnVertexFlag === 0x111) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), this.min);\n } else if (plane.pnVertexFlag === 0x110) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x101) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x100) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x011) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x010) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x001) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.min[2]);\n } else {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.max[2]);\n }\n }\n /**\n * get p-vertex\n * @param plane plane of CullingVolume\n */\n\n }, {\n key: \"getPositiveFarPoint\",\n value: function getPositiveFarPoint(plane) {\n if (plane.pnVertexFlag === 0x111) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), this.max);\n } else if (plane.pnVertexFlag === 0x110) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x101) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x100) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x011) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x010) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x001) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.max[2]);\n } else {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.min[2]);\n }\n }\n }]);\n\n return AABB;\n}();\n//# sourceMappingURL=AABB.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9BQUJCLmpzPzEwZDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUM3Qjs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0EsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSw4QkFBOEIsOENBQUk7QUFDbEMsd0NBQXdDLDhDQUFJO0FBQzVDLGlCQUFpQiw4Q0FBSTtBQUNyQixpQkFBaUIsOENBQUk7QUFDckI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDhDQUFJLE1BQU0sOENBQUk7QUFDN0IsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDhDQUFJLE1BQU0sOENBQUk7QUFDN0IsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkI7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9BQUJCLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5cbi8qKlxuICogQXhpcy1BbGlnbmVkIEJvdW5kaW5nIEJveFxuICog5Li65LqG5L6/5LqO5ZCO57utIEZydXN0dW0gQ3VsbGluZ++8jOmAmui/h+afpeaJvuihqOWumuS5iSBwLXZlcnRleCDlkowgbi12ZXJ0ZXhcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9HV2ViR1BVRW5naW5lL2lzc3Vlcy8zXG4gKi9cbmV4cG9ydCB2YXIgQUFCQiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEFBQkIoY2VudGVyLCBoYWxmRXh0ZW50cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBQUJCKTtcblxuICAgIHRoaXMuY2VudGVyID0gdm9pZCAwO1xuICAgIHRoaXMuaGFsZkV4dGVudHMgPSB2b2lkIDA7XG4gICAgdGhpcy5taW4gPSB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMubWF4ID0gdmVjMy5jcmVhdGUoKTtcbiAgICB0aGlzLnVwZGF0ZShjZW50ZXIsIGhhbGZFeHRlbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhBQUJCLCBbe1xuICAgIGtleTogXCJ1cGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlKGNlbnRlciwgaGFsZkV4dGVudHMpIHtcbiAgICAgIHRoaXMuY2VudGVyID0gY2VudGVyIHx8IHZlYzMuY3JlYXRlKCk7XG4gICAgICB0aGlzLmhhbGZFeHRlbnRzID0gaGFsZkV4dGVudHMgfHwgdmVjMy5mcm9tVmFsdWVzKDAuNSwgMC41LCAwLjUpO1xuICAgICAgdGhpcy5taW4gPSB2ZWMzLnN1Yih0aGlzLm1pbiwgdGhpcy5jZW50ZXIsIHRoaXMuaGFsZkV4dGVudHMpO1xuICAgICAgdGhpcy5tYXggPSB2ZWMzLmFkZCh0aGlzLm1heCwgdGhpcy5jZW50ZXIsIHRoaXMuaGFsZkV4dGVudHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRNaW5NYXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWluTWF4KG1pbiwgbWF4KSB7XG4gICAgICB2ZWMzLmFkZCh0aGlzLmNlbnRlciwgbWF4LCBtaW4pO1xuICAgICAgdmVjMy5zY2FsZSh0aGlzLmNlbnRlciwgdGhpcy5jZW50ZXIsIDAuNSk7XG4gICAgICB2ZWMzLnN1Yih0aGlzLmhhbGZFeHRlbnRzLCBtYXgsIG1pbik7XG4gICAgICB2ZWMzLnNjYWxlKHRoaXMuaGFsZkV4dGVudHMsIHRoaXMuaGFsZkV4dGVudHMsIDAuNSk7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5taW4sIG1pbik7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5tYXgsIG1heCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1pblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNaW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5taW47XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1heFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNYXgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFkZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGQoYWFiYikge1xuICAgICAgdmFyIHRjID0gdGhpcy5jZW50ZXI7XG4gICAgICB2YXIgdGN4ID0gdGNbMF07XG4gICAgICB2YXIgdGN5ID0gdGNbMV07XG4gICAgICB2YXIgdGN6ID0gdGNbMl07XG4gICAgICB2YXIgdGggPSB0aGlzLmhhbGZFeHRlbnRzO1xuICAgICAgdmFyIHRoeCA9IHRoWzBdO1xuICAgICAgdmFyIHRoeSA9IHRoWzFdO1xuICAgICAgdmFyIHRoeiA9IHRoWzJdO1xuICAgICAgdmFyIHRtaW54ID0gdGN4IC0gdGh4O1xuICAgICAgdmFyIHRtYXh4ID0gdGN4ICsgdGh4O1xuICAgICAgdmFyIHRtaW55ID0gdGN5IC0gdGh5O1xuICAgICAgdmFyIHRtYXh5ID0gdGN5ICsgdGh5O1xuICAgICAgdmFyIHRtaW56ID0gdGN6IC0gdGh6O1xuICAgICAgdmFyIHRtYXh6ID0gdGN6ICsgdGh6O1xuICAgICAgdmFyIG9jID0gYWFiYi5jZW50ZXI7XG4gICAgICB2YXIgb2N4ID0gb2NbMF07XG4gICAgICB2YXIgb2N5ID0gb2NbMV07XG4gICAgICB2YXIgb2N6ID0gb2NbMl07XG4gICAgICB2YXIgb2ggPSBhYWJiLmhhbGZFeHRlbnRzO1xuICAgICAgdmFyIG9oeCA9IG9oWzBdO1xuICAgICAgdmFyIG9oeSA9IG9oWzFdO1xuICAgICAgdmFyIG9oeiA9IG9oWzJdO1xuICAgICAgdmFyIG9taW54ID0gb2N4IC0gb2h4O1xuICAgICAgdmFyIG9tYXh4ID0gb2N4ICsgb2h4O1xuICAgICAgdmFyIG9taW55ID0gb2N5IC0gb2h5O1xuICAgICAgdmFyIG9tYXh5ID0gb2N5ICsgb2h5O1xuICAgICAgdmFyIG9taW56ID0gb2N6IC0gb2h6O1xuICAgICAgdmFyIG9tYXh6ID0gb2N6ICsgb2h6O1xuXG4gICAgICBpZiAob21pbnggPCB0bWlueCkge1xuICAgICAgICB0bWlueCA9IG9taW54O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHggPiB0bWF4eCkge1xuICAgICAgICB0bWF4eCA9IG9tYXh4O1xuICAgICAgfVxuXG4gICAgICBpZiAob21pbnkgPCB0bWlueSkge1xuICAgICAgICB0bWlueSA9IG9taW55O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHkgPiB0bWF4eSkge1xuICAgICAgICB0bWF4eSA9IG9tYXh5O1xuICAgICAgfVxuXG4gICAgICBpZiAob21pbnogPCB0bWlueikge1xuICAgICAgICB0bWlueiA9IG9taW56O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHogPiB0bWF4eikge1xuICAgICAgICB0bWF4eiA9IG9tYXh6O1xuICAgICAgfVxuXG4gICAgICB0Y1swXSA9ICh0bWlueCArIHRtYXh4KSAqIDAuNTtcbiAgICAgIHRjWzFdID0gKHRtaW55ICsgdG1heHkpICogMC41O1xuICAgICAgdGNbMl0gPSAodG1pbnogKyB0bWF4eikgKiAwLjU7XG4gICAgICB0aFswXSA9ICh0bWF4eCAtIHRtaW54KSAqIDAuNTtcbiAgICAgIHRoWzFdID0gKHRtYXh5IC0gdG1pbnkpICogMC41O1xuICAgICAgdGhbMl0gPSAodG1heHogLSB0bWlueikgKiAwLjU7XG4gICAgICB0aGlzLm1pblswXSA9IHRtaW54O1xuICAgICAgdGhpcy5taW5bMV0gPSB0bWlueTtcbiAgICAgIHRoaXMubWluWzJdID0gdG1pbno7XG4gICAgICB0aGlzLm1heFswXSA9IHRtYXh4O1xuICAgICAgdGhpcy5tYXhbMV0gPSB0bWF4eTtcbiAgICAgIHRoaXMubWF4WzJdID0gdG1heHo7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludGVyc2VjdHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW50ZXJzZWN0cyhhYWJiKSB7XG4gICAgICB2YXIgYU1heCA9IHRoaXMuZ2V0TWF4KCk7XG4gICAgICB2YXIgYU1pbiA9IHRoaXMuZ2V0TWluKCk7XG4gICAgICB2YXIgYk1heCA9IGFhYmIuZ2V0TWF4KCk7XG4gICAgICB2YXIgYk1pbiA9IGFhYmIuZ2V0TWluKCk7XG4gICAgICByZXR1cm4gYU1pblswXSA8PSBiTWF4WzBdICYmIGFNYXhbMF0gPj0gYk1pblswXSAmJiBhTWluWzFdIDw9IGJNYXhbMV0gJiYgYU1heFsxXSA+PSBiTWluWzFdICYmIGFNaW5bMl0gPD0gYk1heFsyXSAmJiBhTWF4WzJdID49IGJNaW5bMl07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbnRhaW5zUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29udGFpbnNQb2ludChwb2ludCkge1xuICAgICAgdmFyIG1pbiA9IHRoaXMuZ2V0TWluKCk7XG4gICAgICB2YXIgbWF4ID0gdGhpcy5nZXRNYXgoKTtcbiAgICAgIHJldHVybiAhKHBvaW50WzBdIDwgbWluWzBdIHx8IHBvaW50WzBdID4gbWF4WzBdIHx8IHBvaW50WzFdIDwgbWluWzFdIHx8IHBvaW50WzFdID4gbWF4WzFdIHx8IHBvaW50WzJdIDwgbWluWzJdIHx8IHBvaW50WzJdID4gbWF4WzJdKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogZ2V0IG4tdmVydGV4XG4gICAgICogQHBhcmFtIHBsYW5lIHBsYW5lIG9mIEN1bGxpbmdWb2x1bWVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldE5lZ2F0aXZlRmFyUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TmVnYXRpdmVGYXJQb2ludChwbGFuZSkge1xuICAgICAgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMTEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuY29weSh2ZWMzLmNyZWF0ZSgpLCB0aGlzLm1pbik7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMTApIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1pblswXSwgdGhpcy5taW5bMV0sIHRoaXMubWF4WzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDEwMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWluWzBdLCB0aGlzLm1heFsxXSwgdGhpcy5taW5bMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MTAwKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1heFsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgwMTEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1heFswXSwgdGhpcy5taW5bMV0sIHRoaXMubWluWzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDAxMCkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1pblsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MDAxKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5tYXhbMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1heFsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBnZXQgcC12ZXJ0ZXhcbiAgICAgKiBAcGFyYW0gcGxhbmUgcGxhbmUgb2YgQ3VsbGluZ1ZvbHVtZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UG9zaXRpdmVGYXJQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGl2ZUZhclBvaW50KHBsYW5lKSB7XG4gICAgICBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDExMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5jb3B5KHZlYzMuY3JlYXRlKCksIHRoaXMubWF4KTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDExMCkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1heFsxXSwgdGhpcy5taW5bMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MTAxKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5tYXhbMF0sIHRoaXMubWluWzFdLCB0aGlzLm1heFsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMDApIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1heFswXSwgdGhpcy5taW5bMV0sIHRoaXMubWluWzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDAxMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWluWzBdLCB0aGlzLm1heFsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MDEwKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgwMDEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1pblswXSwgdGhpcy5taW5bMV0sIHRoaXMubWF4WzJdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWluWzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFBQkI7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BQUJCLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/AABB.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/shape/BoundingSphere.js": /*!*********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/shape/BoundingSphere.js ***! \*********************************************************************/ /*! exports provided: BoundingSphere */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return BoundingSphere; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n\n\n\nvar tmpVecA = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar BoundingSphere = /*#__PURE__*/function () {\n function BoundingSphere(center, radius) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, BoundingSphere);\n\n this.center = void 0;\n this.radius = void 0;\n this.center = center || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.radius = radius || 0.5;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(BoundingSphere, [{\n key: \"containsPoint\",\n value: function containsPoint(point) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, point, this.center);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].length(tmpVecA) < this.radius * this.radius;\n }\n }, {\n key: \"intersects\",\n value: function intersects(sphere) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, sphere.center, this.center);\n var totalRadius = sphere.radius + this.radius;\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].length(tmpVecA) <= totalRadius * totalRadius) {\n return true;\n }\n\n return false;\n }\n }]);\n\n return BoundingSphere;\n}();\n//# sourceMappingURL=BoundingSphere.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9Cb3VuZGluZ1NwaGVyZS5qcz82OWU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDN0I7QUFDakMsY0FBYyw4Q0FBSTtBQUNYO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFJO0FBQ2hDO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsYUFBYSw4Q0FBSTtBQUNqQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWOztBQUVBLFVBQVUsOENBQUk7QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvQm91bmRpbmdTcGhlcmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbnZhciB0bXBWZWNBID0gdmVjMy5jcmVhdGUoKTtcbmV4cG9ydCB2YXIgQm91bmRpbmdTcGhlcmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCb3VuZGluZ1NwaGVyZShjZW50ZXIsIHJhZGl1cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCb3VuZGluZ1NwaGVyZSk7XG5cbiAgICB0aGlzLmNlbnRlciA9IHZvaWQgMDtcbiAgICB0aGlzLnJhZGl1cyA9IHZvaWQgMDtcbiAgICB0aGlzLmNlbnRlciA9IGNlbnRlciB8fCB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMucmFkaXVzID0gcmFkaXVzIHx8IDAuNTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhCb3VuZGluZ1NwaGVyZSwgW3tcbiAgICBrZXk6IFwiY29udGFpbnNQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb250YWluc1BvaW50KHBvaW50KSB7XG4gICAgICB2ZWMzLnN1Yih0bXBWZWNBLCBwb2ludCwgdGhpcy5jZW50ZXIpO1xuICAgICAgcmV0dXJuIHZlYzMubGVuZ3RoKHRtcFZlY0EpIDwgdGhpcy5yYWRpdXMgKiB0aGlzLnJhZGl1cztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzKHNwaGVyZSkge1xuICAgICAgdmVjMy5zdWIodG1wVmVjQSwgc3BoZXJlLmNlbnRlciwgdGhpcy5jZW50ZXIpO1xuICAgICAgdmFyIHRvdGFsUmFkaXVzID0gc3BoZXJlLnJhZGl1cyArIHRoaXMucmFkaXVzO1xuXG4gICAgICBpZiAodmVjMy5sZW5ndGgodG1wVmVjQSkgPD0gdG90YWxSYWRpdXMgKiB0b3RhbFJhZGl1cykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCb3VuZGluZ1NwaGVyZTtcbn0oKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJvdW5kaW5nU3BoZXJlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/BoundingSphere.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/shape/Frustum.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/shape/Frustum.js ***! \**************************************************************/ /*! exports provided: Mask, Frustum */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return Mask; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return Frustum; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _Plane__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Plane */ \"./node_modules/@antv/g-webgpu-core/es/shape/Plane.js\");\n\n\n\n\n\nvar Mask;\n\n(function (Mask) {\n Mask[Mask[\"OUTSIDE\"] = 4294967295] = \"OUTSIDE\";\n Mask[Mask[\"INSIDE\"] = 0] = \"INSIDE\";\n Mask[Mask[\"INDETERMINATE\"] = 2147483647] = \"INDETERMINATE\";\n})(Mask || (Mask = {}));\n\nvar Frustum = /*#__PURE__*/function () {\n function Frustum(planes) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Frustum);\n\n this.planes = [];\n\n if (planes) {\n this.planes = planes;\n } else {\n for (var i = 0; i < 6; i++) {\n this.planes.push(new _Plane__WEBPACK_IMPORTED_MODULE_4__[\"Plane\"]());\n }\n }\n }\n /**\n * extract 6 planes from vpMatrix\n * @see http://www8.cs.umu.se/kurser/5DV051/HT12/lab/plane_extraction.pdf\n * @param vpMatrix viewProjectionMatrix\n */\n\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Frustum, [{\n key: \"extractFromVPMatrix\",\n value: function extractFromVPMatrix(vpMatrix) {\n var _vpMatrix = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(vpMatrix, 16),\n m0 = _vpMatrix[0],\n m1 = _vpMatrix[1],\n m2 = _vpMatrix[2],\n m3 = _vpMatrix[3],\n m4 = _vpMatrix[4],\n m5 = _vpMatrix[5],\n m6 = _vpMatrix[6],\n m7 = _vpMatrix[7],\n m8 = _vpMatrix[8],\n m9 = _vpMatrix[9],\n m10 = _vpMatrix[10],\n m11 = _vpMatrix[11],\n m12 = _vpMatrix[12],\n m13 = _vpMatrix[13],\n m14 = _vpMatrix[14],\n m15 = _vpMatrix[15]; // right\n\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[0].normal, m3 - m0, m7 - m4, m11 - m8);\n this.planes[0].distance = -(m15 - m12); // left\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[1].normal, m3 + m0, m7 + m4, m11 + m8);\n this.planes[1].distance = -(m15 + m12); // bottom\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[2].normal, m3 + m1, m7 + m5, m11 + m9);\n this.planes[2].distance = -(m15 + m13); // top\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[3].normal, m3 - m1, m7 - m5, m11 - m9);\n this.planes[3].distance = -(m15 - m13); // far\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[4].normal, m3 - m2, m7 - m6, m11 - m10);\n this.planes[4].distance = -(m15 - m14); // near\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[5].normal, m3 + m2, m7 + m6, m11 + m10);\n this.planes[5].distance = -(m15 + m14);\n this.planes.forEach(function (plane) {\n plane.normalize();\n plane.updatePNVertexFlag();\n });\n }\n }]);\n\n return Frustum;\n}();\n//# sourceMappingURL=Frustum.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9GcnVzdHVtLmpzP2E5ZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrRTtBQUNFO0FBQ047QUFDN0I7QUFDRDtBQUN6Qjs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsb0JBQW9COztBQUVkO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHFCQUFxQixPQUFPO0FBQzVCLDZCQUE2Qiw0Q0FBSztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLHNCQUFzQiwyRUFBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7OztBQUc5QixNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvRnJ1c3R1bS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IFBsYW5lIH0gZnJvbSAnLi9QbGFuZSc7XG5leHBvcnQgdmFyIE1hc2s7XG5cbihmdW5jdGlvbiAoTWFzaykge1xuICBNYXNrW01hc2tbXCJPVVRTSURFXCJdID0gNDI5NDk2NzI5NV0gPSBcIk9VVFNJREVcIjtcbiAgTWFza1tNYXNrW1wiSU5TSURFXCJdID0gMF0gPSBcIklOU0lERVwiO1xuICBNYXNrW01hc2tbXCJJTkRFVEVSTUlOQVRFXCJdID0gMjE0NzQ4MzY0N10gPSBcIklOREVURVJNSU5BVEVcIjtcbn0pKE1hc2sgfHwgKE1hc2sgPSB7fSkpO1xuXG5leHBvcnQgdmFyIEZydXN0dW0gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGcnVzdHVtKHBsYW5lcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGcnVzdHVtKTtcblxuICAgIHRoaXMucGxhbmVzID0gW107XG5cbiAgICBpZiAocGxhbmVzKSB7XG4gICAgICB0aGlzLnBsYW5lcyA9IHBsYW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcbiAgICAgICAgdGhpcy5wbGFuZXMucHVzaChuZXcgUGxhbmUoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBleHRyYWN0IDYgcGxhbmVzIGZyb20gdnBNYXRyaXhcbiAgICogQHNlZSBodHRwOi8vd3d3OC5jcy51bXUuc2Uva3Vyc2VyLzVEVjA1MS9IVDEyL2xhYi9wbGFuZV9leHRyYWN0aW9uLnBkZlxuICAgKiBAcGFyYW0gdnBNYXRyaXggdmlld1Byb2plY3Rpb25NYXRyaXhcbiAgICovXG5cblxuICBfY3JlYXRlQ2xhc3MoRnJ1c3R1bSwgW3tcbiAgICBrZXk6IFwiZXh0cmFjdEZyb21WUE1hdHJpeFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBleHRyYWN0RnJvbVZQTWF0cml4KHZwTWF0cml4KSB7XG4gICAgICB2YXIgX3ZwTWF0cml4ID0gX3NsaWNlZFRvQXJyYXkodnBNYXRyaXgsIDE2KSxcbiAgICAgICAgICBtMCA9IF92cE1hdHJpeFswXSxcbiAgICAgICAgICBtMSA9IF92cE1hdHJpeFsxXSxcbiAgICAgICAgICBtMiA9IF92cE1hdHJpeFsyXSxcbiAgICAgICAgICBtMyA9IF92cE1hdHJpeFszXSxcbiAgICAgICAgICBtNCA9IF92cE1hdHJpeFs0XSxcbiAgICAgICAgICBtNSA9IF92cE1hdHJpeFs1XSxcbiAgICAgICAgICBtNiA9IF92cE1hdHJpeFs2XSxcbiAgICAgICAgICBtNyA9IF92cE1hdHJpeFs3XSxcbiAgICAgICAgICBtOCA9IF92cE1hdHJpeFs4XSxcbiAgICAgICAgICBtOSA9IF92cE1hdHJpeFs5XSxcbiAgICAgICAgICBtMTAgPSBfdnBNYXRyaXhbMTBdLFxuICAgICAgICAgIG0xMSA9IF92cE1hdHJpeFsxMV0sXG4gICAgICAgICAgbTEyID0gX3ZwTWF0cml4WzEyXSxcbiAgICAgICAgICBtMTMgPSBfdnBNYXRyaXhbMTNdLFxuICAgICAgICAgIG0xNCA9IF92cE1hdHJpeFsxNF0sXG4gICAgICAgICAgbTE1ID0gX3ZwTWF0cml4WzE1XTsgLy8gcmlnaHRcblxuXG4gICAgICB2ZWMzLnNldCh0aGlzLnBsYW5lc1swXS5ub3JtYWwsIG0zIC0gbTAsIG03IC0gbTQsIG0xMSAtIG04KTtcbiAgICAgIHRoaXMucGxhbmVzWzBdLmRpc3RhbmNlID0gLShtMTUgLSBtMTIpOyAvLyBsZWZ0XG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzFdLm5vcm1hbCwgbTMgKyBtMCwgbTcgKyBtNCwgbTExICsgbTgpO1xuICAgICAgdGhpcy5wbGFuZXNbMV0uZGlzdGFuY2UgPSAtKG0xNSArIG0xMik7IC8vIGJvdHRvbVxuXG4gICAgICB2ZWMzLnNldCh0aGlzLnBsYW5lc1syXS5ub3JtYWwsIG0zICsgbTEsIG03ICsgbTUsIG0xMSArIG05KTtcbiAgICAgIHRoaXMucGxhbmVzWzJdLmRpc3RhbmNlID0gLShtMTUgKyBtMTMpOyAvLyB0b3BcblxuICAgICAgdmVjMy5zZXQodGhpcy5wbGFuZXNbM10ubm9ybWFsLCBtMyAtIG0xLCBtNyAtIG01LCBtMTEgLSBtOSk7XG4gICAgICB0aGlzLnBsYW5lc1szXS5kaXN0YW5jZSA9IC0obTE1IC0gbTEzKTsgLy8gZmFyXG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzRdLm5vcm1hbCwgbTMgLSBtMiwgbTcgLSBtNiwgbTExIC0gbTEwKTtcbiAgICAgIHRoaXMucGxhbmVzWzRdLmRpc3RhbmNlID0gLShtMTUgLSBtMTQpOyAvLyBuZWFyXG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzVdLm5vcm1hbCwgbTMgKyBtMiwgbTcgKyBtNiwgbTExICsgbTEwKTtcbiAgICAgIHRoaXMucGxhbmVzWzVdLmRpc3RhbmNlID0gLShtMTUgKyBtMTQpO1xuICAgICAgdGhpcy5wbGFuZXMuZm9yRWFjaChmdW5jdGlvbiAocGxhbmUpIHtcbiAgICAgICAgcGxhbmUubm9ybWFsaXplKCk7XG4gICAgICAgIHBsYW5lLnVwZGF0ZVBOVmVydGV4RmxhZygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEZydXN0dW07XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GcnVzdHVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/Frustum.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/shape/Plane.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/shape/Plane.js ***! \************************************************************/ /*! exports provided: Plane */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return Plane; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n\n\n\nvar Plane = /*#__PURE__*/function () {\n /**\n * lookup table for p-vertex & n-vertex when doing frustum culling\n */\n function Plane(distance, normal) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Plane);\n\n this.distance = void 0;\n this.normal = void 0;\n this.pnVertexFlag = void 0;\n this.distance = distance || 0;\n this.normal = normal || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0, 1, 0);\n this.updatePNVertexFlag();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Plane, [{\n key: \"updatePNVertexFlag\",\n value: function updatePNVertexFlag() {\n this.pnVertexFlag = (Number(this.normal[0] >= 0) << 8) + (Number(this.normal[1] >= 0) << 4) + Number(this.normal[2] >= 0);\n }\n }, {\n key: \"distanceToPoint\",\n value: function distanceToPoint(point) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(point, this.normal) - this.distance;\n }\n }, {\n key: \"normalize\",\n value: function normalize() {\n var invLen = 1 / gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].len(this.normal);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.normal, this.normal, invLen);\n this.distance *= invLen;\n }\n }, {\n key: \"intersectsLine\",\n value: function intersectsLine(start, end, point) {\n var d0 = this.distanceToPoint(start);\n var d1 = this.distanceToPoint(end);\n var t = d0 / (d0 - d1);\n var intersects = t >= 0 && t <= 1;\n\n if (intersects && point) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].lerp(point, start, end, t);\n }\n\n return intersects;\n }\n }]);\n\n return Plane;\n}();\n//# sourceMappingURL=Plane.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9QbGFuZS5qcz83MTc1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDN0I7QUFDMUI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFJO0FBQ2hDO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLDhDQUFJO0FBQ2pCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1QkFBdUIsOENBQUk7QUFDM0IsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSw4Q0FBSTtBQUNaOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvUGxhbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmV4cG9ydCB2YXIgUGxhbmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogbG9va3VwIHRhYmxlIGZvciBwLXZlcnRleCAmIG4tdmVydGV4IHdoZW4gZG9pbmcgZnJ1c3R1bSBjdWxsaW5nXG4gICAqL1xuICBmdW5jdGlvbiBQbGFuZShkaXN0YW5jZSwgbm9ybWFsKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBsYW5lKTtcblxuICAgIHRoaXMuZGlzdGFuY2UgPSB2b2lkIDA7XG4gICAgdGhpcy5ub3JtYWwgPSB2b2lkIDA7XG4gICAgdGhpcy5wblZlcnRleEZsYWcgPSB2b2lkIDA7XG4gICAgdGhpcy5kaXN0YW5jZSA9IGRpc3RhbmNlIHx8IDA7XG4gICAgdGhpcy5ub3JtYWwgPSBub3JtYWwgfHwgdmVjMy5mcm9tVmFsdWVzKDAsIDEsIDApO1xuICAgIHRoaXMudXBkYXRlUE5WZXJ0ZXhGbGFnKCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUGxhbmUsIFt7XG4gICAga2V5OiBcInVwZGF0ZVBOVmVydGV4RmxhZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVQTlZlcnRleEZsYWcoKSB7XG4gICAgICB0aGlzLnBuVmVydGV4RmxhZyA9IChOdW1iZXIodGhpcy5ub3JtYWxbMF0gPj0gMCkgPDwgOCkgKyAoTnVtYmVyKHRoaXMubm9ybWFsWzFdID49IDApIDw8IDQpICsgTnVtYmVyKHRoaXMubm9ybWFsWzJdID49IDApO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkaXN0YW5jZVRvUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzdGFuY2VUb1BvaW50KHBvaW50KSB7XG4gICAgICByZXR1cm4gdmVjMy5kb3QocG9pbnQsIHRoaXMubm9ybWFsKSAtIHRoaXMuZGlzdGFuY2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm5vcm1hbGl6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gICAgICB2YXIgaW52TGVuID0gMSAvIHZlYzMubGVuKHRoaXMubm9ybWFsKTtcbiAgICAgIHZlYzMuc2NhbGUodGhpcy5ub3JtYWwsIHRoaXMubm9ybWFsLCBpbnZMZW4pO1xuICAgICAgdGhpcy5kaXN0YW5jZSAqPSBpbnZMZW47XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludGVyc2VjdHNMaW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNMaW5lKHN0YXJ0LCBlbmQsIHBvaW50KSB7XG4gICAgICB2YXIgZDAgPSB0aGlzLmRpc3RhbmNlVG9Qb2ludChzdGFydCk7XG4gICAgICB2YXIgZDEgPSB0aGlzLmRpc3RhbmNlVG9Qb2ludChlbmQpO1xuICAgICAgdmFyIHQgPSBkMCAvIChkMCAtIGQxKTtcbiAgICAgIHZhciBpbnRlcnNlY3RzID0gdCA+PSAwICYmIHQgPD0gMTtcblxuICAgICAgaWYgKGludGVyc2VjdHMgJiYgcG9pbnQpIHtcbiAgICAgICAgdmVjMy5sZXJwKHBvaW50LCBzdGFydCwgZW5kLCB0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBsYW5lO1xufSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGxhbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/Plane.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/shape/Ray.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/shape/Ray.js ***! \**********************************************************/ /*! exports provided: Ray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return Ray; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n\n\n\nvar tmpVecA = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecB = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecC = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecD = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecE = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n/**\n * 包含求交方法:\n * * intersectsShape(Shape, intersection) 返回交点和求交结果\n * @see https://github.com/playcanvas/engine/blob/master/src/shape/bounding-box.js#L161\n * @see https://github.com/mrdoob/three.js/blob/dev/src/math/Ray.js\n */\n\nvar Ray = /*#__PURE__*/function () {\n function Ray(origin, direction) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Ray);\n\n this.origin = void 0;\n this.direction = void 0;\n this.origin = origin || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.direction = direction || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0, 0, -1);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Ray, [{\n key: \"intersectsAABB\",\n value: function intersectsAABB(aabb, intersection) {\n return intersection ? this.intersectAABBWithIntersection(aabb, intersection) : this.intersectsAABBWithoutIntersection(aabb);\n }\n }, {\n key: \"intersectsSphere\",\n value: function intersectsSphere(sphere, intersection) {\n var m = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, this.origin, sphere.center);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].normalize(tmpVecB, gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(tmpVecB, this.direction));\n var b = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(m, tmpVecB);\n var c = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(m, m) - sphere.radius * sphere.radius; // exit if ray's origin outside of sphere (c > 0) and ray pointing away from s (b > 0)\n\n if (c > 0 && b > 0) {\n return null;\n }\n\n var discr = b * b - c; // a negative discriminant corresponds to ray missing sphere\n\n if (discr < 0) {\n return false;\n } // ray intersects sphere, compute smallest t value of intersection\n\n\n var t = Math.abs(-b - Math.sqrt(discr)); // if t is negative, ray started inside sphere so clamp t to zero\n\n if (intersection) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(intersection, this.direction);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, intersection, t);\n }\n\n return true;\n }\n }, {\n key: \"intersectsPlane\",\n value: function intersectsPlane(plane, intersection) {\n var t = (plane.distance - gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(plane.normal, this.origin)) / gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(plane.normal, this.direction);\n var intersects = t >= 0;\n\n if (intersects && intersection) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, this.direction, t);\n }\n\n return intersects;\n }\n /**\n * faster than implements like Three.js\n * @see https://github.com/playcanvas/engine/blob/master/src/shape/bounding-box.js#L161\n */\n\n }, {\n key: \"intersectsAABBWithoutIntersection\",\n value: function intersectsAABBWithoutIntersection(aabb) {\n var diff = tmpVecA;\n var cross = tmpVecB;\n var prod = tmpVecC;\n var absDiff = tmpVecD;\n var absDir = tmpVecE;\n var rayDir = this.direction;\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(diff, this.origin, aabb.center);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(absDiff, Math.abs(diff[0]), Math.abs(diff[1]), Math.abs(diff[2]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].mul(prod, diff, rayDir);\n\n if (absDiff[0] > aabb.halfExtents[0] && prod[0] >= 0 || absDiff[1] > aabb.halfExtents[1] && prod[1] >= 0 || absDiff[2] > aabb.halfExtents[2] && prod[2] >= 0) {\n return false;\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(absDir, Math.abs(rayDir[0]), Math.abs(rayDir[1]), Math.abs(rayDir[2]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].cross(cross, rayDir, diff);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(cross, Math.abs(cross[0]), Math.abs(cross[1]), Math.abs(cross[2]));\n return !(cross[0] > aabb.halfExtents[1] * absDir[2] + aabb.halfExtents[2] * absDir[1] || cross[1] > aabb.halfExtents[0] * absDir[2] + aabb.halfExtents[2] * absDir[0] || cross[2] > aabb.halfExtents[0] * absDir[1] + aabb.halfExtents[1] * absDir[0]);\n }\n }, {\n key: \"intersectAABBWithIntersection\",\n value: function intersectAABBWithIntersection(aabb, intersection) {\n var tMin = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), aabb.getMin());\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tMin, tMin, this.origin);\n var tMax = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), aabb.getMax());\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tMax, tMax, this.origin);\n var dir = this.direction; // Ensure that we are not dividing it by zero\n\n if (dir[0] === 0) {\n tMin[0] = tMin[0] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[0] = tMax[0] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[0] /= dir[0];\n tMax[0] /= dir[0];\n }\n\n if (dir[1] === 0) {\n tMin[1] = tMin[1] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[1] = tMax[1] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[1] /= dir[1];\n tMax[1] /= dir[1];\n }\n\n if (dir[2] === 0) {\n tMin[2] = tMin[2] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[2] = tMax[2] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[2] /= dir[2];\n tMax[2] /= dir[2];\n }\n\n var realMin = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(tmpVecC, Math.min(tMin[0], tMax[0]), Math.min(tMin[1], tMax[1]), Math.min(tMin[2], tMax[2]));\n var realMax = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(tmpVecD, Math.max(tMin[0], tMax[0]), Math.max(tMin[1], tMax[1]), Math.max(tMin[2], tMax[2]));\n var minMax = Math.min(Math.min(realMax[0], realMax[1]), realMax[2]);\n var maxMin = Math.max(Math.max(realMin[0], realMin[1]), realMin[2]);\n var intersects = minMax >= maxMin && maxMin >= 0;\n\n if (intersects) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(intersection, this.direction);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, intersection, maxMin);\n }\n\n return intersects;\n }\n }]);\n\n return Ray;\n}();\n//# sourceMappingURL=Ray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9SYXkuanM/ZDIwNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQzdCO0FBQ2pDLGNBQWMsOENBQUk7QUFDbEIsY0FBYyw4Q0FBSTtBQUNsQixjQUFjLDhDQUFJO0FBQ2xCLGNBQWMsOENBQUk7QUFDbEIsY0FBYyw4Q0FBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQSw0QkFBNEIsOENBQUk7QUFDaEMsa0NBQWtDLDhDQUFJO0FBQ3RDOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsY0FBYyw4Q0FBSTtBQUNsQixNQUFNLDhDQUFJLG9CQUFvQiw4Q0FBSTtBQUNsQyxjQUFjLDhDQUFJO0FBQ2xCLGNBQWMsOENBQUksMkNBQTJDOztBQUU3RDtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsOENBQThDOztBQUU5QztBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0NBQWdDLDhDQUFJLG1DQUFtQyw4Q0FBSTtBQUMzRTs7QUFFQTtBQUNBLFFBQVEsOENBQUk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7O0FBRVY7QUFDQTtBQUNBOztBQUVBLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGlCQUFpQiw4Q0FBSSxNQUFNLDhDQUFJO0FBQy9CLE1BQU0sOENBQUk7QUFDVixpQkFBaUIsOENBQUksTUFBTSw4Q0FBSTtBQUMvQixNQUFNLDhDQUFJO0FBQ1YsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsOENBQUk7QUFDeEIsb0JBQW9CLDhDQUFJO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9SYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbnZhciB0bXBWZWNBID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNCID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNDID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNEID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNFID0gdmVjMy5jcmVhdGUoKTtcbi8qKlxuICog5YyF5ZCr5rGC5Lqk5pa55rOV77yaXG4gKiAqIGludGVyc2VjdHNTaGFwZShTaGFwZSwgaW50ZXJzZWN0aW9uKSDov5Tlm57kuqTngrnlkozmsYLkuqTnu5PmnpxcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BsYXljYW52YXMvZW5naW5lL2Jsb2IvbWFzdGVyL3NyYy9zaGFwZS9ib3VuZGluZy1ib3guanMjTDE2MVxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL2Jsb2IvZGV2L3NyYy9tYXRoL1JheS5qc1xuICovXG5cbmV4cG9ydCB2YXIgUmF5ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmF5KG9yaWdpbiwgZGlyZWN0aW9uKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJheSk7XG5cbiAgICB0aGlzLm9yaWdpbiA9IHZvaWQgMDtcbiAgICB0aGlzLmRpcmVjdGlvbiA9IHZvaWQgMDtcbiAgICB0aGlzLm9yaWdpbiA9IG9yaWdpbiB8fCB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uIHx8IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAtMSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmF5LCBbe1xuICAgIGtleTogXCJpbnRlcnNlY3RzQUFCQlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzQUFCQihhYWJiLCBpbnRlcnNlY3Rpb24pIHtcbiAgICAgIHJldHVybiBpbnRlcnNlY3Rpb24gPyB0aGlzLmludGVyc2VjdEFBQkJXaXRoSW50ZXJzZWN0aW9uKGFhYmIsIGludGVyc2VjdGlvbikgOiB0aGlzLmludGVyc2VjdHNBQUJCV2l0aG91dEludGVyc2VjdGlvbihhYWJiKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1NwaGVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzU3BoZXJlKHNwaGVyZSwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgbSA9IHZlYzMuc3ViKHRtcFZlY0EsIHRoaXMub3JpZ2luLCBzcGhlcmUuY2VudGVyKTtcbiAgICAgIHZlYzMubm9ybWFsaXplKHRtcFZlY0IsIHZlYzMuY29weSh0bXBWZWNCLCB0aGlzLmRpcmVjdGlvbikpO1xuICAgICAgdmFyIGIgPSB2ZWMzLmRvdChtLCB0bXBWZWNCKTtcbiAgICAgIHZhciBjID0gdmVjMy5kb3QobSwgbSkgLSBzcGhlcmUucmFkaXVzICogc3BoZXJlLnJhZGl1czsgLy8gZXhpdCBpZiByYXkncyBvcmlnaW4gb3V0c2lkZSBvZiBzcGhlcmUgKGMgPiAwKSBhbmQgcmF5IHBvaW50aW5nIGF3YXkgZnJvbSBzIChiID4gMClcblxuICAgICAgaWYgKGMgPiAwICYmIGIgPiAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGlzY3IgPSBiICogYiAtIGM7IC8vIGEgbmVnYXRpdmUgZGlzY3JpbWluYW50IGNvcnJlc3BvbmRzIHRvIHJheSBtaXNzaW5nIHNwaGVyZVxuXG4gICAgICBpZiAoZGlzY3IgPCAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gcmF5IGludGVyc2VjdHMgc3BoZXJlLCBjb21wdXRlIHNtYWxsZXN0IHQgdmFsdWUgb2YgaW50ZXJzZWN0aW9uXG5cblxuICAgICAgdmFyIHQgPSBNYXRoLmFicygtYiAtIE1hdGguc3FydChkaXNjcikpOyAvLyBpZiB0IGlzIG5lZ2F0aXZlLCByYXkgc3RhcnRlZCBpbnNpZGUgc3BoZXJlIHNvIGNsYW1wIHQgdG8gemVyb1xuXG4gICAgICBpZiAoaW50ZXJzZWN0aW9uKSB7XG4gICAgICAgIHZlYzMuY29weShpbnRlcnNlY3Rpb24sIHRoaXMuZGlyZWN0aW9uKTtcbiAgICAgICAgdmVjMy5zY2FsZUFuZEFkZChpbnRlcnNlY3Rpb24sIHRoaXMub3JpZ2luLCBpbnRlcnNlY3Rpb24sIHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1BsYW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNQbGFuZShwbGFuZSwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgdCA9IChwbGFuZS5kaXN0YW5jZSAtIHZlYzMuZG90KHBsYW5lLm5vcm1hbCwgdGhpcy5vcmlnaW4pKSAvIHZlYzMuZG90KHBsYW5lLm5vcm1hbCwgdGhpcy5kaXJlY3Rpb24pO1xuICAgICAgdmFyIGludGVyc2VjdHMgPSB0ID49IDA7XG5cbiAgICAgIGlmIChpbnRlcnNlY3RzICYmIGludGVyc2VjdGlvbikge1xuICAgICAgICB2ZWMzLnNjYWxlQW5kQWRkKGludGVyc2VjdGlvbiwgdGhpcy5vcmlnaW4sIHRoaXMuZGlyZWN0aW9uLCB0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIGZhc3RlciB0aGFuIGltcGxlbWVudHMgbGlrZSBUaHJlZS5qc1xuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BsYXljYW52YXMvZW5naW5lL2Jsb2IvbWFzdGVyL3NyYy9zaGFwZS9ib3VuZGluZy1ib3guanMjTDE2MVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c0FBQkJXaXRob3V0SW50ZXJzZWN0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNBQUJCV2l0aG91dEludGVyc2VjdGlvbihhYWJiKSB7XG4gICAgICB2YXIgZGlmZiA9IHRtcFZlY0E7XG4gICAgICB2YXIgY3Jvc3MgPSB0bXBWZWNCO1xuICAgICAgdmFyIHByb2QgPSB0bXBWZWNDO1xuICAgICAgdmFyIGFic0RpZmYgPSB0bXBWZWNEO1xuICAgICAgdmFyIGFic0RpciA9IHRtcFZlY0U7XG4gICAgICB2YXIgcmF5RGlyID0gdGhpcy5kaXJlY3Rpb247XG4gICAgICB2ZWMzLnN1YihkaWZmLCB0aGlzLm9yaWdpbiwgYWFiYi5jZW50ZXIpO1xuICAgICAgdmVjMy5zZXQoYWJzRGlmZiwgTWF0aC5hYnMoZGlmZlswXSksIE1hdGguYWJzKGRpZmZbMV0pLCBNYXRoLmFicyhkaWZmWzJdKSk7XG4gICAgICB2ZWMzLm11bChwcm9kLCBkaWZmLCByYXlEaXIpO1xuXG4gICAgICBpZiAoYWJzRGlmZlswXSA+IGFhYmIuaGFsZkV4dGVudHNbMF0gJiYgcHJvZFswXSA+PSAwIHx8IGFic0RpZmZbMV0gPiBhYWJiLmhhbGZFeHRlbnRzWzFdICYmIHByb2RbMV0gPj0gMCB8fCBhYnNEaWZmWzJdID4gYWFiYi5oYWxmRXh0ZW50c1syXSAmJiBwcm9kWzJdID49IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2ZWMzLnNldChhYnNEaXIsIE1hdGguYWJzKHJheURpclswXSksIE1hdGguYWJzKHJheURpclsxXSksIE1hdGguYWJzKHJheURpclsyXSkpO1xuICAgICAgdmVjMy5jcm9zcyhjcm9zcywgcmF5RGlyLCBkaWZmKTtcbiAgICAgIHZlYzMuc2V0KGNyb3NzLCBNYXRoLmFicyhjcm9zc1swXSksIE1hdGguYWJzKGNyb3NzWzFdKSwgTWF0aC5hYnMoY3Jvc3NbMl0pKTtcbiAgICAgIHJldHVybiAhKGNyb3NzWzBdID4gYWFiYi5oYWxmRXh0ZW50c1sxXSAqIGFic0RpclsyXSArIGFhYmIuaGFsZkV4dGVudHNbMl0gKiBhYnNEaXJbMV0gfHwgY3Jvc3NbMV0gPiBhYWJiLmhhbGZFeHRlbnRzWzBdICogYWJzRGlyWzJdICsgYWFiYi5oYWxmRXh0ZW50c1syXSAqIGFic0RpclswXSB8fCBjcm9zc1syXSA+IGFhYmIuaGFsZkV4dGVudHNbMF0gKiBhYnNEaXJbMV0gKyBhYWJiLmhhbGZFeHRlbnRzWzFdICogYWJzRGlyWzBdKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0QUFCQldpdGhJbnRlcnNlY3Rpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW50ZXJzZWN0QUFCQldpdGhJbnRlcnNlY3Rpb24oYWFiYiwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgdE1pbiA9IHZlYzMuY29weSh2ZWMzLmNyZWF0ZSgpLCBhYWJiLmdldE1pbigpKTtcbiAgICAgIHZlYzMuc3ViKHRNaW4sIHRNaW4sIHRoaXMub3JpZ2luKTtcbiAgICAgIHZhciB0TWF4ID0gdmVjMy5jb3B5KHZlYzMuY3JlYXRlKCksIGFhYmIuZ2V0TWF4KCkpO1xuICAgICAgdmVjMy5zdWIodE1heCwgdE1heCwgdGhpcy5vcmlnaW4pO1xuICAgICAgdmFyIGRpciA9IHRoaXMuZGlyZWN0aW9uOyAvLyBFbnN1cmUgdGhhdCB3ZSBhcmUgbm90IGRpdmlkaW5nIGl0IGJ5IHplcm9cblxuICAgICAgaWYgKGRpclswXSA9PT0gMCkge1xuICAgICAgICB0TWluWzBdID0gdE1pblswXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMF0gPSB0TWF4WzBdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMF0gLz0gZGlyWzBdO1xuICAgICAgICB0TWF4WzBdIC89IGRpclswXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpclsxXSA9PT0gMCkge1xuICAgICAgICB0TWluWzFdID0gdE1pblsxXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMV0gPSB0TWF4WzFdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMV0gLz0gZGlyWzFdO1xuICAgICAgICB0TWF4WzFdIC89IGRpclsxXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpclsyXSA9PT0gMCkge1xuICAgICAgICB0TWluWzJdID0gdE1pblsyXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMl0gPSB0TWF4WzJdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMl0gLz0gZGlyWzJdO1xuICAgICAgICB0TWF4WzJdIC89IGRpclsyXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlYWxNaW4gPSB2ZWMzLnNldCh0bXBWZWNDLCBNYXRoLm1pbih0TWluWzBdLCB0TWF4WzBdKSwgTWF0aC5taW4odE1pblsxXSwgdE1heFsxXSksIE1hdGgubWluKHRNaW5bMl0sIHRNYXhbMl0pKTtcbiAgICAgIHZhciByZWFsTWF4ID0gdmVjMy5zZXQodG1wVmVjRCwgTWF0aC5tYXgodE1pblswXSwgdE1heFswXSksIE1hdGgubWF4KHRNaW5bMV0sIHRNYXhbMV0pLCBNYXRoLm1heCh0TWluWzJdLCB0TWF4WzJdKSk7XG4gICAgICB2YXIgbWluTWF4ID0gTWF0aC5taW4oTWF0aC5taW4ocmVhbE1heFswXSwgcmVhbE1heFsxXSksIHJlYWxNYXhbMl0pO1xuICAgICAgdmFyIG1heE1pbiA9IE1hdGgubWF4KE1hdGgubWF4KHJlYWxNaW5bMF0sIHJlYWxNaW5bMV0pLCByZWFsTWluWzJdKTtcbiAgICAgIHZhciBpbnRlcnNlY3RzID0gbWluTWF4ID49IG1heE1pbiAmJiBtYXhNaW4gPj0gMDtcblxuICAgICAgaWYgKGludGVyc2VjdHMpIHtcbiAgICAgICAgdmVjMy5jb3B5KGludGVyc2VjdGlvbiwgdGhpcy5kaXJlY3Rpb24pO1xuICAgICAgICB2ZWMzLnNjYWxlQW5kQWRkKGludGVyc2VjdGlvbiwgdGhpcy5vcmlnaW4sIGludGVyc2VjdGlvbiwgbWF4TWluKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJheTtcbn0oKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/Ray.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/shape/index.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/shape/index.js ***! \************************************************************/ /*! exports provided: AABB, BoundingSphere, Mask, Frustum, Plane, Ray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AABB__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AABB */ \"./node_modules/@antv/g-webgpu-core/es/shape/AABB.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return _AABB__WEBPACK_IMPORTED_MODULE_0__[\"AABB\"]; });\n\n/* harmony import */ var _BoundingSphere__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BoundingSphere */ \"./node_modules/@antv/g-webgpu-core/es/shape/BoundingSphere.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return _BoundingSphere__WEBPACK_IMPORTED_MODULE_1__[\"BoundingSphere\"]; });\n\n/* harmony import */ var _Frustum__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Frustum */ \"./node_modules/@antv/g-webgpu-core/es/shape/Frustum.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return _Frustum__WEBPACK_IMPORTED_MODULE_2__[\"Mask\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return _Frustum__WEBPACK_IMPORTED_MODULE_2__[\"Frustum\"]; });\n\n/* harmony import */ var _Plane__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Plane */ \"./node_modules/@antv/g-webgpu-core/es/shape/Plane.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return _Plane__WEBPACK_IMPORTED_MODULE_3__[\"Plane\"]; });\n\n/* harmony import */ var _Ray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Ray */ \"./node_modules/@antv/g-webgpu-core/es/shape/Ray.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return _Ray__WEBPACK_IMPORTED_MODULE_4__[\"Ray\"]; });\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9pbmRleC5qcz9lM2M4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QjtBQUNVO0FBQ1A7QUFDRjtBQUNGO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL0FBQkInO1xuZXhwb3J0ICogZnJvbSAnLi9Cb3VuZGluZ1NwaGVyZSc7XG5leHBvcnQgKiBmcm9tICcuL0ZydXN0dW0nO1xuZXhwb3J0ICogZnJvbSAnLi9QbGFuZSc7XG5leHBvcnQgKiBmcm9tICcuL1JheSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/shape/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/utils/aabb.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/utils/aabb.js ***! \***********************************************************/ /*! exports provided: generateAABBFromVertices */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateAABBFromVertices\", function() { return generateAABBFromVertices; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _shape_AABB__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape/AABB */ \"./node_modules/@antv/g-webgpu-core/es/shape/AABB.js\");\n\n\n/**\n * generate AABB with positions\n * @param positions [x1,y1,z1, x2,y2,z2]\n */\n\nfunction generateAABBFromVertices(positions) {\n var aabb = new _shape_AABB__WEBPACK_IMPORTED_MODULE_1__[\"AABB\"]();\n var min = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(positions[0], positions[1], positions[2]);\n var max = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(positions[0], positions[1], positions[2]);\n\n for (var i = 3; i < positions.length;) {\n var x = positions[i++];\n var y = positions[i++];\n var z = positions[i++];\n\n if (x < min[0]) {\n min[0] = x;\n }\n\n if (y < min[1]) {\n min[1] = y;\n }\n\n if (z < min[2]) {\n min[2] = z;\n }\n\n if (x > max[0]) {\n max[0] = x;\n }\n\n if (y > max[1]) {\n max[1] = y;\n }\n\n if (z > max[2]) {\n max[2] = z;\n }\n }\n\n aabb.setMinMax(min, max);\n return aabb;\n}\n//# sourceMappingURL=aabb.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9hYWJiLmpzPzRhYzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSTtBQUNyQztBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLGlCQUFpQixnREFBSTtBQUNyQixZQUFZLDhDQUFJO0FBQ2hCLFlBQVksOENBQUk7O0FBRWhCLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9hYWJiLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBBQUJCIH0gZnJvbSAnLi4vc2hhcGUvQUFCQic7XG4vKipcbiAqIGdlbmVyYXRlIEFBQkIgd2l0aCBwb3NpdGlvbnNcbiAqIEBwYXJhbSBwb3NpdGlvbnMgW3gxLHkxLHoxLCB4Mix5Mix6Ml1cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzKHBvc2l0aW9ucykge1xuICB2YXIgYWFiYiA9IG5ldyBBQUJCKCk7XG4gIHZhciBtaW4gPSB2ZWMzLmZyb21WYWx1ZXMocG9zaXRpb25zWzBdLCBwb3NpdGlvbnNbMV0sIHBvc2l0aW9uc1syXSk7XG4gIHZhciBtYXggPSB2ZWMzLmZyb21WYWx1ZXMocG9zaXRpb25zWzBdLCBwb3NpdGlvbnNbMV0sIHBvc2l0aW9uc1syXSk7XG5cbiAgZm9yICh2YXIgaSA9IDM7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOykge1xuICAgIHZhciB4ID0gcG9zaXRpb25zW2krK107XG4gICAgdmFyIHkgPSBwb3NpdGlvbnNbaSsrXTtcbiAgICB2YXIgeiA9IHBvc2l0aW9uc1tpKytdO1xuXG4gICAgaWYgKHggPCBtaW5bMF0pIHtcbiAgICAgIG1pblswXSA9IHg7XG4gICAgfVxuXG4gICAgaWYgKHkgPCBtaW5bMV0pIHtcbiAgICAgIG1pblsxXSA9IHk7XG4gICAgfVxuXG4gICAgaWYgKHogPCBtaW5bMl0pIHtcbiAgICAgIG1pblsyXSA9IHo7XG4gICAgfVxuXG4gICAgaWYgKHggPiBtYXhbMF0pIHtcbiAgICAgIG1heFswXSA9IHg7XG4gICAgfVxuXG4gICAgaWYgKHkgPiBtYXhbMV0pIHtcbiAgICAgIG1heFsxXSA9IHk7XG4gICAgfVxuXG4gICAgaWYgKHogPiBtYXhbMl0pIHtcbiAgICAgIG1heFsyXSA9IHo7XG4gICAgfVxuICB9XG5cbiAgYWFiYi5zZXRNaW5NYXgobWluLCBtYXgpO1xuICByZXR1cm4gYWFiYjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFhYmIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/aabb.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/utils/is-number.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/utils/is-number.js ***! \****************************************************************/ /*! exports provided: isNumber */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy1udW1iZXIuanM/MzhhMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy1udW1iZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1udW1iZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/is-number.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/utils/is-typedarray.js": /*!********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/utils/is-typedarray.js ***! \********************************************************************/ /*! exports provided: isTypedArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy10eXBlZGFycmF5LmpzP2U5OTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0Q7O0FBRXBEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLG9FQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR087QUFDUCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3V0aWxzL2lzLXR5cGVkYXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIjtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG5cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG52YXIgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nO1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXSc7XG52YXIgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJztcbnZhciBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXSc7XG52YXIgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG52YXIgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXSc7XG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG52YXIgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXSc7XG52YXIgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG52YXIgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXSc7XG52YXIgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xudmFyIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJztcbnZhciBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSc7XG52YXIgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nO1xudmFyIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nO1xudmFyIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nO1xudmFyIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nO1xudmFyIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSc7XG52YXIgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJztcbnZhciB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xuXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPSB0eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9IHR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID0gdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG5cblxudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cblxudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW29iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpXTtcbn1cblxuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIF90eXBlb2YodmFsdWUpID09PSAnb2JqZWN0Jztcbn1cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cblxuXG5leHBvcnQgdmFyIGlzVHlwZWRBcnJheSA9IGJhc2VJc1R5cGVkQXJyYXk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy10eXBlZGFycmF5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/is-typedarray.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/utils/isSafari.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/utils/isSafari.js ***! \***************************************************************/ /*! exports provided: isSafari */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSafari\", function() { return isSafari; });\nvar isSafari = typeof navigator !== 'undefined' && /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent);\n//# sourceMappingURL=isSafari.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pc1NhZmFyaS5qcz85NjMzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvdXRpbHMvaXNTYWZhcmkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGlzU2FmYXJpID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL1ZlcnNpb25cXC9bXFxkXFwuXSsuKlNhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzU2FmYXJpLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/isSafari.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/utils/math.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/utils/math.js ***! \***********************************************************/ /*! exports provided: getAngle, createVec3, getRotationScale, decodePickingColor, encodePickingColor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAngle\", function() { return getAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createVec3\", function() { return createVec3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRotationScale\", function() { return getRotationScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decodePickingColor\", function() { return decodePickingColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encodePickingColor\", function() { return encodePickingColor; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/g-webgpu-core/es/utils/is-number.js\");\n\n\n\nfunction getAngle(angle) {\n if (angle === undefined) {\n return 0;\n } else if (angle > 360 || angle < -360) {\n return angle % 360;\n }\n\n return angle;\n}\nfunction createVec3(x, y, z) {\n if (Object(_is_number__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(x)) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].fromValues(x, y, z);\n }\n\n if (x.length === 3) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].clone(x);\n } // @ts-ignore\n\n\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].fromValues(x[0], x[1], x[2]);\n}\nfunction getRotationScale(matrix, result) {\n result[0] = matrix[0];\n result[1] = matrix[1];\n result[2] = matrix[2];\n result[3] = matrix[4];\n result[4] = matrix[5];\n result[5] = matrix[6];\n result[6] = matrix[8];\n result[7] = matrix[9];\n result[8] = matrix[10];\n return result;\n}\nfunction decodePickingColor(color) {\n var _color = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(color, 3),\n i1 = _color[0],\n i2 = _color[1],\n i3 = _color[2]; // 1 was added to seperate from no selection\n\n\n var index = i1 + i2 * 256 + i3 * 65536 - 1;\n return index;\n}\nfunction encodePickingColor(featureIdx) {\n return [featureIdx + 1 & 255, featureIdx + 1 >> 8 & 255, featureIdx + 1 >> 8 >> 8 & 255];\n}\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9tYXRoLmpzP2ZiMTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0U7QUFDakM7QUFDTTtBQUNoQztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUCxNQUFNLDJEQUFRO0FBQ2QsV0FBVyw4Q0FBSTtBQUNmOztBQUVBO0FBQ0EsV0FBVyw4Q0FBSTtBQUNmLEdBQUc7OztBQUdILFNBQVMsOENBQUk7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsZUFBZSwyRUFBYztBQUM3QjtBQUNBO0FBQ0EscUJBQXFCOzs7QUFHckI7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9tYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCB7IHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL2lzLW51bWJlcic7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5nbGUoYW5nbGUpIHtcbiAgaWYgKGFuZ2xlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChhbmdsZSA+IDM2MCB8fCBhbmdsZSA8IC0zNjApIHtcbiAgICByZXR1cm4gYW5nbGUgJSAzNjA7XG4gIH1cblxuICByZXR1cm4gYW5nbGU7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVmVjMyh4LCB5LCB6KSB7XG4gIGlmIChpc051bWJlcih4KSkge1xuICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXMoeCwgeSwgeik7XG4gIH1cblxuICBpZiAoeC5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gdmVjMy5jbG9uZSh4KTtcbiAgfSAvLyBAdHMtaWdub3JlXG5cblxuICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHhbMF0sIHhbMV0sIHhbMl0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdGF0aW9uU2NhbGUobWF0cml4LCByZXN1bHQpIHtcbiAgcmVzdWx0WzBdID0gbWF0cml4WzBdO1xuICByZXN1bHRbMV0gPSBtYXRyaXhbMV07XG4gIHJlc3VsdFsyXSA9IG1hdHJpeFsyXTtcbiAgcmVzdWx0WzNdID0gbWF0cml4WzRdO1xuICByZXN1bHRbNF0gPSBtYXRyaXhbNV07XG4gIHJlc3VsdFs1XSA9IG1hdHJpeFs2XTtcbiAgcmVzdWx0WzZdID0gbWF0cml4WzhdO1xuICByZXN1bHRbN10gPSBtYXRyaXhbOV07XG4gIHJlc3VsdFs4XSA9IG1hdHJpeFsxMF07XG4gIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlUGlja2luZ0NvbG9yKGNvbG9yKSB7XG4gIHZhciBfY29sb3IgPSBfc2xpY2VkVG9BcnJheShjb2xvciwgMyksXG4gICAgICBpMSA9IF9jb2xvclswXSxcbiAgICAgIGkyID0gX2NvbG9yWzFdLFxuICAgICAgaTMgPSBfY29sb3JbMl07IC8vIDEgd2FzIGFkZGVkIHRvIHNlcGVyYXRlIGZyb20gbm8gc2VsZWN0aW9uXG5cblxuICB2YXIgaW5kZXggPSBpMSArIGkyICogMjU2ICsgaTMgKiA2NTUzNiAtIDE7XG4gIHJldHVybiBpbmRleDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVQaWNraW5nQ29sb3IoZmVhdHVyZUlkeCkge1xuICByZXR1cm4gW2ZlYXR1cmVJZHggKyAxICYgMjU1LCBmZWF0dXJlSWR4ICsgMSA+PiA4ICYgMjU1LCBmZWF0dXJlSWR4ICsgMSA+PiA4ID4+IDggJiAyNTVdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/math.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/utils/shader-module.js": /*!********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/utils/shader-module.js ***! \********************************************************************/ /*! exports provided: getUniformLengthByType, extractUniforms */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getUniformLengthByType\", function() { return getUniformLengthByType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractUniforms\", function() { return extractUniforms; });\nfunction getUniformLengthByType(type) {\n var arrayLength = 0;\n\n switch (type) {\n case 'vec2':\n case 'ivec2':\n arrayLength = 2;\n break;\n\n case 'vec3':\n case 'ivec3':\n arrayLength = 3;\n break;\n\n case 'vec4':\n case 'ivec4':\n case 'mat2':\n arrayLength = 4;\n break;\n\n case 'mat3':\n arrayLength = 9;\n break;\n\n case 'mat4':\n arrayLength = 16;\n break;\n\n default:\n }\n\n return arrayLength;\n}\nvar uniformRegExp = /uniform\\s+(bool|float|int|vec2|vec3|vec4|ivec2|ivec3|ivec4|mat2|mat3|mat4|sampler2D|samplerCube)\\s+([\\s\\S]*?);/g;\nfunction extractUniforms(content) {\n var uniforms = {};\n content = content.replace(uniformRegExp, function (_, type, c) {\n var defaultValues = c.split(':');\n var uniformName = defaultValues[0].trim();\n var defaultValue = '';\n\n if (defaultValues.length > 1) {\n defaultValue = defaultValues[1].trim();\n } // set default value for uniform according to its type\n // eg. vec2 u -> [0.0, 0.0]\n\n\n switch (type) {\n case 'bool':\n defaultValue = defaultValue === 'true';\n break;\n\n case 'float':\n case 'int':\n defaultValue = Number(defaultValue);\n break;\n\n case 'vec2':\n case 'vec3':\n case 'vec4':\n case 'ivec2':\n case 'ivec3':\n case 'ivec4':\n case 'mat2':\n case 'mat3':\n case 'mat4':\n if (defaultValue) {\n defaultValue = defaultValue.replace('[', '').replace(']', '').split(',').reduce(function (prev, cur) {\n prev.push(Number(cur.trim()));\n return prev;\n }, []);\n } else {\n defaultValue = new Array(getUniformLengthByType(type)).fill(0);\n }\n\n break;\n\n default:\n } // @ts-ignore\n\n\n uniforms[uniformName] = defaultValue;\n return \"uniform \".concat(type, \" \").concat(uniformName, \";\\n\");\n });\n return {\n content: content,\n uniforms: uniforms\n };\n}\n//# sourceMappingURL=shader-module.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9zaGFkZXItbW9kdWxlLmpzPzVhZGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtSUFBbUk7QUFDNUg7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSw4REFBOEQ7QUFDOUQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1jb3JlL2VzL3V0aWxzL3NoYWRlci1tb2R1bGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0VW5pZm9ybUxlbmd0aEJ5VHlwZSh0eXBlKSB7XG4gIHZhciBhcnJheUxlbmd0aCA9IDA7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAndmVjMic6XG4gICAgY2FzZSAnaXZlYzInOlxuICAgICAgYXJyYXlMZW5ndGggPSAyO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICd2ZWMzJzpcbiAgICBjYXNlICdpdmVjMyc6XG4gICAgICBhcnJheUxlbmd0aCA9IDM7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3ZlYzQnOlxuICAgIGNhc2UgJ2l2ZWM0JzpcbiAgICBjYXNlICdtYXQyJzpcbiAgICAgIGFycmF5TGVuZ3RoID0gNDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbWF0Myc6XG4gICAgICBhcnJheUxlbmd0aCA9IDk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ21hdDQnOlxuICAgICAgYXJyYXlMZW5ndGggPSAxNjtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgfVxuXG4gIHJldHVybiBhcnJheUxlbmd0aDtcbn1cbnZhciB1bmlmb3JtUmVnRXhwID0gL3VuaWZvcm1cXHMrKGJvb2x8ZmxvYXR8aW50fHZlYzJ8dmVjM3x2ZWM0fGl2ZWMyfGl2ZWMzfGl2ZWM0fG1hdDJ8bWF0M3xtYXQ0fHNhbXBsZXIyRHxzYW1wbGVyQ3ViZSlcXHMrKFtcXHNcXFNdKj8pOy9nO1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RVbmlmb3Jtcyhjb250ZW50KSB7XG4gIHZhciB1bmlmb3JtcyA9IHt9O1xuICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKHVuaWZvcm1SZWdFeHAsIGZ1bmN0aW9uIChfLCB0eXBlLCBjKSB7XG4gICAgdmFyIGRlZmF1bHRWYWx1ZXMgPSBjLnNwbGl0KCc6Jyk7XG4gICAgdmFyIHVuaWZvcm1OYW1lID0gZGVmYXVsdFZhbHVlc1swXS50cmltKCk7XG4gICAgdmFyIGRlZmF1bHRWYWx1ZSA9ICcnO1xuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlc1sxXS50cmltKCk7XG4gICAgfSAvLyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgdW5pZm9ybSBhY2NvcmRpbmcgdG8gaXRzIHR5cGVcbiAgICAvLyBlZy4gdmVjMiB1IC0+IFswLjAsIDAuMF1cblxuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdib29sJzpcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlID09PSAndHJ1ZSc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdmbG9hdCc6XG4gICAgICBjYXNlICdpbnQnOlxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBOdW1iZXIoZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3ZlYzInOlxuICAgICAgY2FzZSAndmVjMyc6XG4gICAgICBjYXNlICd2ZWM0JzpcbiAgICAgIGNhc2UgJ2l2ZWMyJzpcbiAgICAgIGNhc2UgJ2l2ZWMzJzpcbiAgICAgIGNhc2UgJ2l2ZWM0JzpcbiAgICAgIGNhc2UgJ21hdDInOlxuICAgICAgY2FzZSAnbWF0Myc6XG4gICAgICBjYXNlICdtYXQ0JzpcbiAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZS5yZXBsYWNlKCdbJywgJycpLnJlcGxhY2UoJ10nLCAnJykuc3BsaXQoJywnKS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICAgICAgcHJldi5wdXNoKE51bWJlcihjdXIudHJpbSgpKSk7XG4gICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVmYXVsdFZhbHVlID0gbmV3IEFycmF5KGdldFVuaWZvcm1MZW5ndGhCeVR5cGUodHlwZSkpLmZpbGwoMCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgdW5pZm9ybXNbdW5pZm9ybU5hbWVdID0gZGVmYXVsdFZhbHVlO1xuICAgIHJldHVybiBcInVuaWZvcm0gXCIuY29uY2F0KHR5cGUsIFwiIFwiKS5jb25jYXQodW5pZm9ybU5hbWUsIFwiO1xcblwiKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY29udGVudDogY29udGVudCxcbiAgICB1bmlmb3JtczogdW5pZm9ybXNcbiAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYWRlci1tb2R1bGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/shader-module.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-core/es/utils/uniq.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-webgpu-core/es/utils/uniq.js ***! \***********************************************************/ /*! exports provided: uniq */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return uniq; });\nfunction uniq(array) {\n return array.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}\n//# sourceMappingURL=uniq.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy91bmlxLmpzPzU2MjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvdXRpbHMvdW5pcS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB1bmlxKGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24gKHYsIGksIGEpIHtcbiAgICByZXR1cm4gYS5pbmRleE9mKHYpID09PSBpO1xuICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVuaXEuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-core/es/utils/uniq.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/index.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/index.js ***! \********************************************************/ /*! exports provided: WebGLEngine, WebGPUEngine */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _webgl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webgl */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebGLEngine\", function() { return _webgl__WEBPACK_IMPORTED_MODULE_0__[\"WebGLEngine\"]; });\n\n/* harmony import */ var _webgpu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webgpu */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebGPUEngine\", function() { return _webgpu__WEBPACK_IMPORTED_MODULE_1__[\"WebGPUEngine\"]; });\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL2luZGV4LmpzP2QyNmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDRTtBQUNIO0FBQ3JDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdlYkdMRW5naW5lIH0gZnJvbSAnLi93ZWJnbCc7XG5pbXBvcnQgeyBXZWJHUFVFbmdpbmUgfSBmcm9tICcuL3dlYmdwdSc7XG5leHBvcnQgeyBXZWJHTEVuZ2luZSwgV2ViR1BVRW5naW5lIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/utils/dom.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/utils/dom.js ***! \************************************************************/ /*! exports provided: isWindowObjectExist, loadScript, loadScriptAsync */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWindowObjectExist\", function() { return isWindowObjectExist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadScript\", function() { return loadScript; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadScriptAsync\", function() { return loadScriptAsync; });\nfunction isWindowObjectExist() {\n return typeof window !== 'undefined';\n}\nfunction loadScript(scriptUrl, onSuccess, onError, scriptId) {\n if (!isWindowObjectExist()) {\n return;\n }\n\n var head = document.getElementsByTagName('head')[0];\n var script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', scriptUrl);\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n script.onload = function () {\n if (onSuccess) {\n onSuccess();\n }\n };\n\n script.onerror = function (e) {\n if (onError) {\n onError(\"Unable to load script '\".concat(scriptUrl, \"'\"), e);\n }\n };\n\n head.appendChild(script);\n}\nfunction loadScriptAsync(scriptUrl, scriptId) {\n return new Promise(function (resolve, reject) {\n loadScript(scriptUrl, function () {\n resolve();\n }, function (message, exception) {\n reject(exception);\n });\n });\n}\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2RvbS5qcz80MjQ5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2RvbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc1dpbmRvd09iamVjdEV4aXN0KCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG59XG5leHBvcnQgZnVuY3Rpb24gbG9hZFNjcmlwdChzY3JpcHRVcmwsIG9uU3VjY2Vzcywgb25FcnJvciwgc2NyaXB0SWQpIHtcbiAgaWYgKCFpc1dpbmRvd09iamVjdEV4aXN0KCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgc2NyaXB0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L2phdmFzY3JpcHQnKTtcbiAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnc3JjJywgc2NyaXB0VXJsKTtcblxuICBpZiAoc2NyaXB0SWQpIHtcbiAgICBzY3JpcHQuaWQgPSBzY3JpcHRJZDtcbiAgfVxuXG4gIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKG9uU3VjY2Vzcykge1xuICAgICAgb25TdWNjZXNzKCk7XG4gICAgfVxuICB9O1xuXG4gIHNjcmlwdC5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAob25FcnJvcikge1xuICAgICAgb25FcnJvcihcIlVuYWJsZSB0byBsb2FkIHNjcmlwdCAnXCIuY29uY2F0KHNjcmlwdFVybCwgXCInXCIpLCBlKTtcbiAgICB9XG4gIH07XG5cbiAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTY3JpcHRBc3luYyhzY3JpcHRVcmwsIHNjcmlwdElkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgbG9hZFNjcmlwdChzY3JpcHRVcmwsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9LCBmdW5jdGlvbiAobWVzc2FnZSwgZXhjZXB0aW9uKSB7XG4gICAgICByZWplY3QoZXhjZXB0aW9uKTtcbiAgICB9KTtcbiAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kb20uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/utils/dom.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/utils/is-number.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/utils/is-number.js ***! \******************************************************************/ /*! exports provided: isNumber */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2lzLW51bWJlci5qcz81ZjcyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtbnVtYmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtbnVtYmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/utils/is-number.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/utils/is-object.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/utils/is-object.js ***! \******************************************************************/ /*! exports provided: isObject */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction isObject(value) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value);\n\n return value != null && (type === 'object' || type === 'function');\n}\n//# sourceMappingURL=is-object.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2lzLW9iamVjdC5qcz8xZWE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9EO0FBQzdDO0FBQ1AsYUFBYSxvRUFBTzs7QUFFcEI7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy91dGlscy9pcy1vYmplY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIjtcbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IF90eXBlb2YodmFsdWUpO1xuXG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW9iamVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/utils/is-object.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/utils/is-typedarray.js": /*!**********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/utils/is-typedarray.js ***! \**********************************************************************/ /*! exports provided: isTypedArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2lzLXR5cGVkYXJyYXkuanM/NzEwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRDs7QUFFcEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0Isb0VBQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy91dGlscy9pcy10eXBlZGFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCI7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xuXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xudmFyIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJztcbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nO1xudmFyIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXSc7XG52YXIgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nO1xudmFyIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nO1xudmFyIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nO1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xudmFyIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nO1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xudmFyIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nO1xudmFyIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcbnZhciBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XSc7XG52YXIgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nO1xudmFyIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJztcbnZhciBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJztcbnZhciBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJztcbnZhciB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJztcbnZhciB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nO1xudmFyIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XSc7XG52YXIgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cblxudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID0gdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPSB0eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID0gdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPSB0eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuXG5cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG5cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKV07XG59XG5cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiBfdHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCc7XG59XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5cblxuZXhwb3J0IHZhciBpc1R5cGVkQXJyYXkgPSBiYXNlSXNUeXBlZEFycmF5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtdHlwZWRhcnJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/utils/is-typedarray.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/utils/uniform.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/utils/uniform.js ***! \****************************************************************/ /*! exports provided: extractUniforms */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractUniforms\", function() { return extractUniforms; });\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-object */ \"./node_modules/@antv/g-webgpu-engine/es/utils/is-object.js\");\n/* harmony import */ var _is_typedarray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-typedarray */ \"./node_modules/@antv/g-webgpu-engine/es/utils/is-typedarray.js\");\n\n\n/**\n * 考虑结构体命名, eg:\n * a: { b: 1 } -> 'a.b'\n * a: [ { b: 1 } ] -> 'a[0].b'\n */\n\nfunction extractUniforms(uniforms) {\n var extractedUniforms = {};\n Object.keys(uniforms).forEach(function (uniformName) {\n extractUniformsRecursively(uniformName, uniforms[uniformName], extractedUniforms, '');\n });\n return extractedUniforms;\n}\n\nfunction extractUniformsRecursively(uniformName, uniformValue, uniforms, prefix) {\n if (uniformValue === null || typeof uniformValue === 'number' || // u_A: 1\n typeof uniformValue === 'boolean' || // u_A: false\n Array.isArray(uniformValue) && typeof uniformValue[0] === 'number' || // u_A: [1, 2, 3]\n Object(_is_typedarray__WEBPACK_IMPORTED_MODULE_1__[\"isTypedArray\"])(uniformValue) || // u_A: Float32Array\n // @ts-ignore\n uniformValue === '' || // @ts-ignore\n uniformValue.resize !== undefined) {\n uniforms[\"\".concat(prefix && prefix + '.').concat(uniformName)] = uniformValue;\n return;\n } // u_Struct.a.b.c\n\n\n if (Object(_is_object__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(uniformValue)) {\n Object.keys(uniformValue).forEach(function (childName) {\n extractUniformsRecursively(childName, // @ts-ignore\n uniformValue[childName], uniforms, \"\".concat(prefix && prefix + '.').concat(uniformName));\n });\n } // u_Struct[0].a\n\n\n if (Array.isArray(uniformValue)) {\n // @ts-ignore\n uniformValue.forEach(function (child, idx) {\n Object.keys(child).forEach(function (childName) {\n extractUniformsRecursively(childName, // @ts-ignore\n child[childName], uniforms, \"\".concat(prefix && prefix + '.').concat(uniformName, \"[\").concat(idx, \"]\"));\n });\n });\n }\n}\n//# sourceMappingURL=uniform.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL3VuaWZvcm0uanM/MzlmNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QztBQUNRO0FBQy9DO0FBQ0E7QUFDQSxPQUFPLE9BQU87QUFDZCxTQUFTLE9BQU87QUFDaEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsTUFBTSwyREFBUTtBQUNkO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvdW5pZm9ybS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi9pcy1vYmplY3QnO1xuaW1wb3J0IHsgaXNUeXBlZEFycmF5IH0gZnJvbSAnLi9pcy10eXBlZGFycmF5Jztcbi8qKlxuICog6ICD6JmR57uT5p6E5L2T5ZG95ZCNLCBlZzpcbiAqIGE6IHsgYjogMSB9ICAtPiAgJ2EuYidcbiAqIGE6IFsgeyBiOiAxIH0gXSAtPiAnYVswXS5iJ1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0VW5pZm9ybXModW5pZm9ybXMpIHtcbiAgdmFyIGV4dHJhY3RlZFVuaWZvcm1zID0ge307XG4gIE9iamVjdC5rZXlzKHVuaWZvcm1zKS5mb3JFYWNoKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgIGV4dHJhY3RVbmlmb3Jtc1JlY3Vyc2l2ZWx5KHVuaWZvcm1OYW1lLCB1bmlmb3Jtc1t1bmlmb3JtTmFtZV0sIGV4dHJhY3RlZFVuaWZvcm1zLCAnJyk7XG4gIH0pO1xuICByZXR1cm4gZXh0cmFjdGVkVW5pZm9ybXM7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RVbmlmb3Jtc1JlY3Vyc2l2ZWx5KHVuaWZvcm1OYW1lLCB1bmlmb3JtVmFsdWUsIHVuaWZvcm1zLCBwcmVmaXgpIHtcbiAgaWYgKHVuaWZvcm1WYWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdW5pZm9ybVZhbHVlID09PSAnbnVtYmVyJyB8fCAvLyB1X0E6IDFcbiAgdHlwZW9mIHVuaWZvcm1WYWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IC8vIHVfQTogZmFsc2VcbiAgQXJyYXkuaXNBcnJheSh1bmlmb3JtVmFsdWUpICYmIHR5cGVvZiB1bmlmb3JtVmFsdWVbMF0gPT09ICdudW1iZXInIHx8IC8vIHVfQTogWzEsIDIsIDNdXG4gIGlzVHlwZWRBcnJheSh1bmlmb3JtVmFsdWUpIHx8IC8vIHVfQTogRmxvYXQzMkFycmF5XG4gIC8vIEB0cy1pZ25vcmVcbiAgdW5pZm9ybVZhbHVlID09PSAnJyB8fCAvLyBAdHMtaWdub3JlXG4gIHVuaWZvcm1WYWx1ZS5yZXNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgIHVuaWZvcm1zW1wiXCIuY29uY2F0KHByZWZpeCAmJiBwcmVmaXggKyAnLicpLmNvbmNhdCh1bmlmb3JtTmFtZSldID0gdW5pZm9ybVZhbHVlO1xuICAgIHJldHVybjtcbiAgfSAvLyB1X1N0cnVjdC5hLmIuY1xuXG5cbiAgaWYgKGlzT2JqZWN0KHVuaWZvcm1WYWx1ZSkpIHtcbiAgICBPYmplY3Qua2V5cyh1bmlmb3JtVmFsdWUpLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkTmFtZSkge1xuICAgICAgZXh0cmFjdFVuaWZvcm1zUmVjdXJzaXZlbHkoY2hpbGROYW1lLCAvLyBAdHMtaWdub3JlXG4gICAgICB1bmlmb3JtVmFsdWVbY2hpbGROYW1lXSwgdW5pZm9ybXMsIFwiXCIuY29uY2F0KHByZWZpeCAmJiBwcmVmaXggKyAnLicpLmNvbmNhdCh1bmlmb3JtTmFtZSkpO1xuICAgIH0pO1xuICB9IC8vIHVfU3RydWN0WzBdLmFcblxuXG4gIGlmIChBcnJheS5pc0FycmF5KHVuaWZvcm1WYWx1ZSkpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdW5pZm9ybVZhbHVlLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkLCBpZHgpIHtcbiAgICAgIE9iamVjdC5rZXlzKGNoaWxkKS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZE5hbWUpIHtcbiAgICAgICAgZXh0cmFjdFVuaWZvcm1zUmVjdXJzaXZlbHkoY2hpbGROYW1lLCAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNoaWxkW2NoaWxkTmFtZV0sIHVuaWZvcm1zLCBcIlwiLmNvbmNhdChwcmVmaXggJiYgcHJlZml4ICsgJy4nKS5jb25jYXQodW5pZm9ybU5hbWUsIFwiW1wiKS5jb25jYXQoaWR4LCBcIl1cIikpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVuaWZvcm0uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/utils/uniform.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglAttribute.js": /*!**********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglAttribute.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglAttribute; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#attributes\n */\nvar ReglAttribute = /*#__PURE__*/function () {\n function ReglAttribute(gl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglAttribute);\n\n this.attribute = void 0;\n this.buffer = void 0;\n var buffer = options.buffer,\n offset = options.offset,\n stride = options.stride,\n normalized = options.normalized,\n size = options.size,\n divisor = options.divisor;\n this.buffer = buffer;\n this.attribute = {\n buffer: buffer.get(),\n offset: offset || 0,\n stride: stride || 0,\n normalized: normalized || false,\n divisor: divisor || 0\n };\n\n if (size) {\n this.attribute.size = size;\n }\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglAttribute, [{\n key: \"get\",\n value: function get() {\n return this.attribute;\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return ReglAttribute;\n}();\n\n\n//# sourceMappingURL=ReglAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xBdHRyaWJ1dGUuanM/NjY2MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVtQztBQUNwQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEF0dHJpYnV0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNhdHRyaWJ1dGVzXG4gKi9cbnZhciBSZWdsQXR0cmlidXRlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbEF0dHJpYnV0ZShnbCwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWdsQXR0cmlidXRlKTtcblxuICAgIHRoaXMuYXR0cmlidXRlID0gdm9pZCAwO1xuICAgIHRoaXMuYnVmZmVyID0gdm9pZCAwO1xuICAgIHZhciBidWZmZXIgPSBvcHRpb25zLmJ1ZmZlcixcbiAgICAgICAgb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICAgIHN0cmlkZSA9IG9wdGlvbnMuc3RyaWRlLFxuICAgICAgICBub3JtYWxpemVkID0gb3B0aW9ucy5ub3JtYWxpemVkLFxuICAgICAgICBzaXplID0gb3B0aW9ucy5zaXplLFxuICAgICAgICBkaXZpc29yID0gb3B0aW9ucy5kaXZpc29yO1xuICAgIHRoaXMuYnVmZmVyID0gYnVmZmVyO1xuICAgIHRoaXMuYXR0cmlidXRlID0ge1xuICAgICAgYnVmZmVyOiBidWZmZXIuZ2V0KCksXG4gICAgICBvZmZzZXQ6IG9mZnNldCB8fCAwLFxuICAgICAgc3RyaWRlOiBzdHJpZGUgfHwgMCxcbiAgICAgIG5vcm1hbGl6ZWQ6IG5vcm1hbGl6ZWQgfHwgZmFsc2UsXG4gICAgICBkaXZpc29yOiBkaXZpc29yIHx8IDBcbiAgICB9O1xuXG4gICAgaWYgKHNpemUpIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlLnNpemUgPSBzaXplO1xuICAgIH1cbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZWdsQXR0cmlidXRlLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVCdWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlQnVmZmVyKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuYnVmZmVyLnN1YkRhdGEob3B0aW9ucyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMuYnVmZmVyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVnbEF0dHJpYnV0ZTtcbn0oKTtcblxuZXhwb3J0IHsgUmVnbEF0dHJpYnV0ZSBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZWdsQXR0cmlidXRlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglAttribute.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglBuffer.js": /*!*******************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglBuffer.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglBuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar ReglBuffer = /*#__PURE__*/function () {\n function ReglBuffer(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglBuffer);\n\n this.buffer = void 0;\n var data = options.data,\n usage = options.usage,\n type = options.type; // @ts-ignore\n\n this.buffer = reGl.buffer({\n data: data,\n usage: _constants__WEBPACK_IMPORTED_MODULE_3__[\"usageMap\"][usage || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].STATIC_DRAW],\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE] // length: 0,\n\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglBuffer, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// this.buffer.destroy();\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data,\n offset = _ref.offset;\n // @ts-ignore\n this.buffer.subdata(data, offset);\n }\n }]);\n\n return ReglBuffer;\n}();\n\n\n//# sourceMappingURL=ReglBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xCdWZmZXIuanM/OTgzMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDckI7QUFDVztBQUNwRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0EsYUFBYSxtREFBUSxVQUFVLHNEQUFFO0FBQ2pDLFlBQVksc0RBQVcsU0FBUyxzREFBRTs7QUFFbEMsS0FBSztBQUNMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLCtCQUErQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVnQztBQUNqQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEJ1ZmZlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBkYXRhVHlwZU1hcCwgdXNhZ2VNYXAgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKipcbiAqIGFkYXB0b3IgZm9yIHJlZ2wuQnVmZmVyXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNidWZmZXJzXG4gKi9cblxudmFyIFJlZ2xCdWZmZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWdsQnVmZmVyKHJlR2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbEJ1ZmZlcik7XG5cbiAgICB0aGlzLmJ1ZmZlciA9IHZvaWQgMDtcbiAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YSxcbiAgICAgICAgdXNhZ2UgPSBvcHRpb25zLnVzYWdlLFxuICAgICAgICB0eXBlID0gb3B0aW9ucy50eXBlOyAvLyBAdHMtaWdub3JlXG5cbiAgICB0aGlzLmJ1ZmZlciA9IHJlR2wuYnVmZmVyKHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICB1c2FnZTogdXNhZ2VNYXBbdXNhZ2UgfHwgZ2wuU1RBVElDX0RSQVddLFxuICAgICAgdHlwZTogZGF0YVR5cGVNYXBbdHlwZSB8fCBnbC5VTlNJR05FRF9CWVRFXSAvLyBsZW5ndGg6IDAsXG5cbiAgICB9KTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZWdsQnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7Ly8gdGhpcy5idWZmZXIuZGVzdHJveSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdWJEYXRhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YkRhdGEoX3JlZikge1xuICAgICAgdmFyIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgICAgb2Zmc2V0ID0gX3JlZi5vZmZzZXQ7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLmJ1ZmZlci5zdWJkYXRhKGRhdGEsIG9mZnNldCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xCdWZmZXI7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xCdWZmZXIgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbEJ1ZmZlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglBuffer.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js": /*!*************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglComputeModel; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/is-typedarray */ \"./node_modules/@antv/g-webgpu-engine/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n/* babel-plugin-inline-import './shaders/quad.vert.glsl' */\nvar quadVert = \"attribute vec3 a_Position;\\nattribute vec2 a_TexCoord;\\n\\nvarying vec2 v_TexCoord;\\n\\nvoid main() {\\n gl_Position = vec4(a_Position, 1.0);\\n v_TexCoord = a_TexCoord;\\n}\";\nvar textureId = 0;\nvar debug = false;\n/**\n * adaptor for regl.DrawCommand\n */\n\nvar ReglComputeModel = /*#__PURE__*/function () {\n function ReglComputeModel(reGl, context) {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, ReglComputeModel);\n\n this.reGl = reGl;\n this.context = context;\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"createEntity\"])();\n this.texFBO = void 0;\n this.computeCommand = void 0;\n this.textureCache = {};\n this.outputTextureName = void 0;\n this.swapOutputTextureName = void 0;\n this.compiledPingpong = void 0;\n this.dynamicPingpong = void 0;\n var uniforms = {};\n this.context.uniforms.forEach(function (uniform) {\n var name = uniform.name,\n type = uniform.type,\n data = uniform.data,\n isReferer = uniform.isReferer,\n storageClass = uniform.storageClass; // store data with a 2D texture\n\n if (storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"STORAGE_CLASS\"].StorageBuffer) {\n if (!isReferer) {\n _this.textureCache[name] = _this.calcDataTexture(name, type, data);\n var _this$textureCache$na = _this.textureCache[name],\n width = _this$textureCache$na.textureWidth,\n isOutput = _this$textureCache$na.isOutput;\n uniforms[\"\".concat(name, \"Size\")] = [width, width];\n\n if (isOutput) {\n _this.outputTextureName = name;\n\n if (_this.context.needPingpong) {\n _this.outputTextureName = \"\".concat(name, \"Output\");\n _this.textureCache[_this.outputTextureName] = _this.calcDataTexture(name, type, data);\n }\n }\n } else {\n // @ts-ignore\n _this.textureCache[name] = {\n data: undefined\n }; // refer to another kernel's output,\n // the referred kernel may not have been initialized, so we use dynamic way here\n\n uniforms[\"\".concat(name, \"Size\")] = function () {\n return (// @ts-ignore\n data.compiledBundle.context.output.textureSize\n );\n };\n }\n\n uniforms[name] = function () {\n if (debug) {\n console.log(\"[\".concat(_this.entity, \"]: \").concat(name, \" \").concat(_this.textureCache[name].id));\n }\n\n return _this.textureCache[name].texture;\n };\n } else if (storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"STORAGE_CLASS\"].Uniform) {\n if (data && (Array.isArray(data) || Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__[\"isTypedArray\"])(data)) && data.length > 16) {\n // up to mat4 which includes 16 elements\n throw new Error(\"invalid data type \".concat(type));\n } // get uniform dynamically\n\n\n uniforms[name] = function () {\n return uniform.data;\n };\n }\n });\n\n var _this$getOuputDataTex = this.getOuputDataTexture(),\n textureWidth = _this$getOuputDataTex.textureWidth,\n texelCount = _this$getOuputDataTex.texelCount; // 传入 output 纹理尺寸和数据长度,便于多余的 texel 提前退出\n\n\n uniforms.u_OutputTextureSize = [textureWidth, textureWidth];\n uniforms.u_OutputTexelCount = texelCount; // 保存在 Kernel 的上下文中,供其他 Kernel 引用\n\n this.context.output.textureSize = [textureWidth, textureWidth];\n var drawParams = {\n attributes: {\n a_Position: [[-1, 1, 0], [-1, -1, 0], [1, 1, 0], [1, -1, 0]],\n a_TexCoord: [[0, 1], [0, 0], [1, 1], [1, 0]]\n },\n frag: \"#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n#else\\n precision mediump float;\\n#endif\\n\".concat(this.context.shader),\n uniforms: uniforms,\n vert: quadVert,\n // TODO: use a fullscreen triangle instead.\n primitive: 'triangle strip',\n count: 4\n };\n this.computeCommand = this.reGl(drawParams);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(ReglComputeModel, [{\n key: \"run\",\n value: function run() {\n var _this2 = this;\n\n if (this.context.maxIteration > 1 && this.context.needPingpong) {\n this.compiledPingpong = true;\n } // need pingpong when (@in@out and execute(10)) or use `setBinding('out', self)`\n // this.needPingpong =\n // !!(this.context.maxIteration > 1 && this.context.needPingpong);\n // if (this.relativeOutputTextureNames.length) {\n // const { id, texture } = this.getOuputDataTexture();\n // this.relativeOutputTextureNames.forEach((name) => {\n // this.textureCache[name].id = id;\n // this.textureCache[name].texture = texture;\n // });\n // this.swap();\n // }\n\n\n if (this.compiledPingpong || this.dynamicPingpong) {\n this.swap();\n }\n\n this.texFBO = this.reGl.framebuffer({\n color: this.getOuputDataTexture().texture\n });\n this.texFBO.use(function () {\n _this2.computeCommand();\n });\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: output \").concat(this.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"readData\",\n value: function () {\n var _readData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() {\n var _this3 = this;\n\n var pixels, _this$getOuputDataTex2, originalDataLength, elementsPerTexel, _this$getOuputDataTex3, typedArrayConstructor, formattedPixels, i;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.reGl({\n framebuffer: this.texFBO\n })(function () {\n pixels = _this3.reGl.read();\n }); // @ts-ignore\n\n if (!pixels) {\n _context.next = 6;\n break;\n }\n\n _this$getOuputDataTex2 = this.getOuputDataTexture(), originalDataLength = _this$getOuputDataTex2.originalDataLength, elementsPerTexel = _this$getOuputDataTex2.elementsPerTexel, _this$getOuputDataTex3 = _this$getOuputDataTex2.typedArrayConstructor, typedArrayConstructor = _this$getOuputDataTex3 === void 0 ? Float32Array : _this$getOuputDataTex3;\n formattedPixels = [];\n\n if (elementsPerTexel !== 4) {\n for (i = 0; i < pixels.length; i += 4) {\n if (elementsPerTexel === 1) {\n formattedPixels.push(pixels[i]);\n } else if (elementsPerTexel === 2) {\n formattedPixels.push(pixels[i], pixels[i + 1]);\n } else {\n formattedPixels.push(pixels[i], pixels[i + 1], pixels[i + 2]);\n }\n }\n } else {\n // @ts-ignore\n formattedPixels = pixels;\n } // 截取多余的部分\n // @ts-ignore\n\n\n return _context.abrupt(\"return\", new typedArrayConstructor(formattedPixels.slice(0, originalDataLength)));\n\n case 6:\n return _context.abrupt(\"return\", new Float32Array());\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function readData() {\n return _readData.apply(this, arguments);\n }\n\n return readData;\n }()\n }, {\n key: \"confirmInput\",\n value: function confirmInput(model, inputName) {\n var inputModel; // refer to self, same as pingpong\n\n if (this.entity === model.entity) {\n this.dynamicPingpong = true;\n inputModel = this;\n } else {\n inputModel = model;\n }\n\n this.textureCache[inputName].id = inputModel.getOuputDataTexture().id;\n this.textureCache[inputName].texture = inputModel.getOuputDataTexture().texture;\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: confirm input \").concat(inputName, \" from model \").concat(inputModel.entity, \", \").concat(inputModel.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"updateUniform\",\n value: function updateUniform() {// already get uniform's data dynamically when created, do nothing here\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(bufferName, data) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n // regenerate data texture\n var buffer = this.context.uniforms.find(function (_ref) {\n var name = _ref.name;\n return name === bufferName;\n });\n\n if (buffer) {\n var _this$calcDataTexture = this.calcDataTexture(bufferName, buffer.type, data),\n texture = _this$calcDataTexture.texture,\n paddingData = _this$calcDataTexture.data; // TODO: destroy outdated texture\n\n\n this.textureCache[bufferName].data = paddingData;\n this.textureCache[bufferName].texture = texture;\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// regl will destroy all resources\n }\n }, {\n key: \"swap\",\n value: function swap() {\n if (!this.swapOutputTextureName) {\n this.createSwapOutputDataTexture();\n }\n\n if (this.compiledPingpong) {\n var outputTextureUniformName = this.context.output.name;\n this.textureCache[outputTextureUniformName].id = this.getOuputDataTexture().id;\n this.textureCache[outputTextureUniformName].texture = this.getOuputDataTexture().texture;\n }\n\n var tmp = this.outputTextureName;\n this.outputTextureName = this.swapOutputTextureName;\n this.swapOutputTextureName = tmp;\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: after swap, output \").concat(this.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"getOuputDataTexture\",\n value: function getOuputDataTexture() {\n return this.textureCache[this.outputTextureName];\n }\n }, {\n key: \"createSwapOutputDataTexture\",\n value: function createSwapOutputDataTexture() {\n var texture = this.cloneDataTexture(this.getOuputDataTexture());\n this.swapOutputTextureName = \"\".concat(this.entity, \"-swap\");\n this.textureCache[this.swapOutputTextureName] = texture;\n }\n }, {\n key: \"cloneDataTexture\",\n value: function cloneDataTexture(texture) {\n var data = texture.data,\n textureWidth = texture.textureWidth;\n return _objectSpread(_objectSpread({}, texture), {}, {\n id: textureId++,\n // @ts-ignore\n texture: this.reGl.texture({\n width: textureWidth,\n height: textureWidth,\n data: data,\n type: 'float'\n })\n });\n }\n }, {\n key: \"calcDataTexture\",\n value: function calcDataTexture(name, type, data) {\n var elementsPerTexel = 1;\n\n if (type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"AST_TOKEN_TYPES\"].Vector4FloatArray) {\n elementsPerTexel = 4;\n } // 用 0 补全不足 vec4 的部分\n\n\n var paddingData = [];\n\n for (var i = 0; i < data.length; i += elementsPerTexel) {\n if (elementsPerTexel === 1) {\n paddingData.push(data[i], 0, 0, 0);\n } else if (elementsPerTexel === 2) {\n paddingData.push(data[i], data[i + 1], 0, 0);\n } else if (elementsPerTexel === 3) {\n paddingData.push(data[i], data[i + 1], data[i + 2], 0);\n } else if (elementsPerTexel === 4) {\n paddingData.push(data[i], data[i + 1], data[i + 2], data[i + 3]);\n }\n } // 使用纹理存储,例如 Array(8) 使用 3 * 3 纹理,末尾空白使用 0 填充\n\n\n var originalDataLength = data.length;\n var texelCount = Math.ceil(originalDataLength / elementsPerTexel);\n var width = Math.ceil(Math.sqrt(texelCount));\n var paddingTexelCount = width * width;\n\n if (texelCount < paddingTexelCount) {\n paddingData.push.apply(paddingData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(new Array((paddingTexelCount - texelCount) * 4).fill(0)));\n }\n\n var texture = this.reGl.texture({\n width: width,\n height: width,\n data: paddingData,\n type: 'float'\n });\n return {\n id: textureId++,\n data: paddingData,\n originalDataLength: originalDataLength,\n typedArrayConstructor: Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__[\"isTypedArray\"])(data) ? data.constructor : undefined,\n textureWidth: width,\n texture: texture,\n texelCount: texelCount,\n elementsPerTexel: elementsPerTexel,\n isOutput: name === this.context.output.name\n };\n }\n }]);\n\n return ReglComputeModel;\n}();\n\n\n//# sourceMappingURL=ReglComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xDb21wdXRlTW9kZWwuanM/NTI2YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRTtBQUNOO0FBQ1A7QUFDVztBQUNKO0FBQ047O0FBRTlELDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLHVEQUF1RCxDQUFDLDRFQUFlLDJCQUEyQixFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyxpREFBaUQsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFamM7QUFDN0I7O0FBRXREO0FBQ0EsMENBQTBDLDRCQUE0Qiw0QkFBNEIsaUJBQWlCLHdDQUF3Qyw0QkFBNEIsR0FBRztBQUMxTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0Esa0JBQWtCLHdFQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDOztBQUU5QywyQkFBMkIsaUVBQWE7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPLDJCQUEyQixpRUFBYTtBQUMvQyw0Q0FBNEMseUVBQVk7QUFDeEQ7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0Esc0RBQXNEOzs7QUFHdEQ7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asd0VBQXdFLG1DQUFtQztBQUMzRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsY0FBYztBQUNoQztBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNCQUFzQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDekU7O0FBRUE7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQixFQUFFOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNkJBQTZCLG1CQUFtQjtBQUNoRDtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCOzs7QUFHQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRDs7O0FBR3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLGNBQWM7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsbUVBQWU7QUFDbEM7QUFDQSxPQUFPOzs7QUFHUDs7QUFFQSxxQkFBcUIsaUJBQWlCO0FBQ3RDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLCtFQUFrQjtBQUM5RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHlFQUFZO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRXNDO0FBQ3ZDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9SZWdsQ29tcHV0ZU1vZGVsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgQVNUX1RPS0VOX1RZUEVTLCBjcmVhdGVFbnRpdHksIFNUT1JBR0VfQ0xBU1MgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4uL3V0aWxzL2lzLXR5cGVkYXJyYXknO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3F1YWQudmVydC5nbHNsJyAqL1xudmFyIHF1YWRWZXJ0ID0gXCJhdHRyaWJ1dGUgdmVjMyBhX1Bvc2l0aW9uO1xcbmF0dHJpYnV0ZSB2ZWMyIGFfVGV4Q29vcmQ7XFxuXFxudmFyeWluZyB2ZWMyIHZfVGV4Q29vcmQ7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfUG9zaXRpb24sIDEuMCk7XFxuICB2X1RleENvb3JkID0gYV9UZXhDb29yZDtcXG59XCI7XG52YXIgdGV4dHVyZUlkID0gMDtcbnZhciBkZWJ1ZyA9IGZhbHNlO1xuLyoqXG4gKiBhZGFwdG9yIGZvciByZWdsLkRyYXdDb21tYW5kXG4gKi9cblxudmFyIFJlZ2xDb21wdXRlTW9kZWwgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWdsQ29tcHV0ZU1vZGVsKHJlR2wsIGNvbnRleHQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlZ2xDb21wdXRlTW9kZWwpO1xuXG4gICAgdGhpcy5yZUdsID0gcmVHbDtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuZW50aXR5ID0gY3JlYXRlRW50aXR5KCk7XG4gICAgdGhpcy50ZXhGQk8gPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wdXRlQ29tbWFuZCA9IHZvaWQgMDtcbiAgICB0aGlzLnRleHR1cmVDYWNoZSA9IHt9O1xuICAgIHRoaXMub3V0cHV0VGV4dHVyZU5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5zd2FwT3V0cHV0VGV4dHVyZU5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21waWxlZFBpbmdwb25nID0gdm9pZCAwO1xuICAgIHRoaXMuZHluYW1pY1Bpbmdwb25nID0gdm9pZCAwO1xuICAgIHZhciB1bmlmb3JtcyA9IHt9O1xuICAgIHRoaXMuY29udGV4dC51bmlmb3Jtcy5mb3JFYWNoKGZ1bmN0aW9uICh1bmlmb3JtKSB7XG4gICAgICB2YXIgbmFtZSA9IHVuaWZvcm0ubmFtZSxcbiAgICAgICAgICB0eXBlID0gdW5pZm9ybS50eXBlLFxuICAgICAgICAgIGRhdGEgPSB1bmlmb3JtLmRhdGEsXG4gICAgICAgICAgaXNSZWZlcmVyID0gdW5pZm9ybS5pc1JlZmVyZXIsXG4gICAgICAgICAgc3RvcmFnZUNsYXNzID0gdW5pZm9ybS5zdG9yYWdlQ2xhc3M7IC8vIHN0b3JlIGRhdGEgd2l0aCBhIDJEIHRleHR1cmVcblxuICAgICAgaWYgKHN0b3JhZ2VDbGFzcyA9PT0gU1RPUkFHRV9DTEFTUy5TdG9yYWdlQnVmZmVyKSB7XG4gICAgICAgIGlmICghaXNSZWZlcmVyKSB7XG4gICAgICAgICAgX3RoaXMudGV4dHVyZUNhY2hlW25hbWVdID0gX3RoaXMuY2FsY0RhdGFUZXh0dXJlKG5hbWUsIHR5cGUsIGRhdGEpO1xuICAgICAgICAgIHZhciBfdGhpcyR0ZXh0dXJlQ2FjaGUkbmEgPSBfdGhpcy50ZXh0dXJlQ2FjaGVbbmFtZV0sXG4gICAgICAgICAgICAgIHdpZHRoID0gX3RoaXMkdGV4dHVyZUNhY2hlJG5hLnRleHR1cmVXaWR0aCxcbiAgICAgICAgICAgICAgaXNPdXRwdXQgPSBfdGhpcyR0ZXh0dXJlQ2FjaGUkbmEuaXNPdXRwdXQ7XG4gICAgICAgICAgdW5pZm9ybXNbXCJcIi5jb25jYXQobmFtZSwgXCJTaXplXCIpXSA9IFt3aWR0aCwgd2lkdGhdO1xuXG4gICAgICAgICAgaWYgKGlzT3V0cHV0KSB7XG4gICAgICAgICAgICBfdGhpcy5vdXRwdXRUZXh0dXJlTmFtZSA9IG5hbWU7XG5cbiAgICAgICAgICAgIGlmIChfdGhpcy5jb250ZXh0Lm5lZWRQaW5ncG9uZykge1xuICAgICAgICAgICAgICBfdGhpcy5vdXRwdXRUZXh0dXJlTmFtZSA9IFwiXCIuY29uY2F0KG5hbWUsIFwiT3V0cHV0XCIpO1xuICAgICAgICAgICAgICBfdGhpcy50ZXh0dXJlQ2FjaGVbX3RoaXMub3V0cHV0VGV4dHVyZU5hbWVdID0gX3RoaXMuY2FsY0RhdGFUZXh0dXJlKG5hbWUsIHR5cGUsIGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgX3RoaXMudGV4dHVyZUNhY2hlW25hbWVdID0ge1xuICAgICAgICAgICAgZGF0YTogdW5kZWZpbmVkXG4gICAgICAgICAgfTsgLy8gcmVmZXIgdG8gYW5vdGhlciBrZXJuZWwncyBvdXRwdXQsXG4gICAgICAgICAgLy8gdGhlIHJlZmVycmVkIGtlcm5lbCBtYXkgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCwgc28gd2UgdXNlIGR5bmFtaWMgd2F5IGhlcmVcblxuICAgICAgICAgIHVuaWZvcm1zW1wiXCIuY29uY2F0KG5hbWUsIFwiU2l6ZVwiKV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgZGF0YS5jb21waWxlZEJ1bmRsZS5jb250ZXh0Lm91dHB1dC50ZXh0dXJlU2l6ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdW5pZm9ybXNbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIltcIi5jb25jYXQoX3RoaXMuZW50aXR5LCBcIl06IFwiKS5jb25jYXQobmFtZSwgXCIgXCIpLmNvbmNhdChfdGhpcy50ZXh0dXJlQ2FjaGVbbmFtZV0uaWQpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gX3RoaXMudGV4dHVyZUNhY2hlW25hbWVdLnRleHR1cmU7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHN0b3JhZ2VDbGFzcyA9PT0gU1RPUkFHRV9DTEFTUy5Vbmlmb3JtKSB7XG4gICAgICAgIGlmIChkYXRhICYmIChBcnJheS5pc0FycmF5KGRhdGEpIHx8IGlzVHlwZWRBcnJheShkYXRhKSkgJiYgZGF0YS5sZW5ndGggPiAxNikge1xuICAgICAgICAgIC8vIHVwIHRvIG1hdDQgd2hpY2ggaW5jbHVkZXMgMTYgZWxlbWVudHNcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGRhdGEgdHlwZSBcIi5jb25jYXQodHlwZSkpO1xuICAgICAgICB9IC8vIGdldCB1bmlmb3JtIGR5bmFtaWNhbGx5XG5cblxuICAgICAgICB1bmlmb3Jtc1tuYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gdW5pZm9ybS5kYXRhO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIF90aGlzJGdldE91cHV0RGF0YVRleCA9IHRoaXMuZ2V0T3VwdXREYXRhVGV4dHVyZSgpLFxuICAgICAgICB0ZXh0dXJlV2lkdGggPSBfdGhpcyRnZXRPdXB1dERhdGFUZXgudGV4dHVyZVdpZHRoLFxuICAgICAgICB0ZXhlbENvdW50ID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4LnRleGVsQ291bnQ7IC8vIOS8oOWFpSBvdXRwdXQg57q555CG5bC65a+45ZKM5pWw5o2u6ZW/5bqm77yM5L6/5LqO5aSa5L2Z55qEIHRleGVsIOaPkOWJjemAgOWHulxuXG5cbiAgICB1bmlmb3Jtcy51X091dHB1dFRleHR1cmVTaXplID0gW3RleHR1cmVXaWR0aCwgdGV4dHVyZVdpZHRoXTtcbiAgICB1bmlmb3Jtcy51X091dHB1dFRleGVsQ291bnQgPSB0ZXhlbENvdW50OyAvLyDkv53lrZjlnKggS2VybmVsIOeahOS4iuS4i+aWh+S4re+8jOS+m+WFtuS7liBLZXJuZWwg5byV55SoXG5cbiAgICB0aGlzLmNvbnRleHQub3V0cHV0LnRleHR1cmVTaXplID0gW3RleHR1cmVXaWR0aCwgdGV4dHVyZVdpZHRoXTtcbiAgICB2YXIgZHJhd1BhcmFtcyA9IHtcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgYV9Qb3NpdGlvbjogW1stMSwgMSwgMF0sIFstMSwgLTEsIDBdLCBbMSwgMSwgMF0sIFsxLCAtMSwgMF1dLFxuICAgICAgICBhX1RleENvb3JkOiBbWzAsIDFdLCBbMCwgMF0sIFsxLCAxXSwgWzEsIDBdXVxuICAgICAgfSxcbiAgICAgIGZyYWc6IFwiI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdIXFxuICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XFxuI2Vsc2VcXG4gIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xcbiNlbmRpZlxcblwiLmNvbmNhdCh0aGlzLmNvbnRleHQuc2hhZGVyKSxcbiAgICAgIHVuaWZvcm1zOiB1bmlmb3JtcyxcbiAgICAgIHZlcnQ6IHF1YWRWZXJ0LFxuICAgICAgLy8gVE9ETzogdXNlIGEgZnVsbHNjcmVlbiB0cmlhbmdsZSBpbnN0ZWFkLlxuICAgICAgcHJpbWl0aXZlOiAndHJpYW5nbGUgc3RyaXAnLFxuICAgICAgY291bnQ6IDRcbiAgICB9O1xuICAgIHRoaXMuY29tcHV0ZUNvbW1hbmQgPSB0aGlzLnJlR2woZHJhd1BhcmFtcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbENvbXB1dGVNb2RlbCwgW3tcbiAgICBrZXk6IFwicnVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1bigpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5jb250ZXh0Lm1heEl0ZXJhdGlvbiA+IDEgJiYgdGhpcy5jb250ZXh0Lm5lZWRQaW5ncG9uZykge1xuICAgICAgICB0aGlzLmNvbXBpbGVkUGluZ3BvbmcgPSB0cnVlO1xuICAgICAgfSAvLyBuZWVkIHBpbmdwb25nIHdoZW4gKEBpbkBvdXQgYW5kIGV4ZWN1dGUoMTApKSBvciB1c2UgYHNldEJpbmRpbmcoJ291dCcsIHNlbGYpYFxuICAgICAgLy8gdGhpcy5uZWVkUGluZ3BvbmcgPVxuICAgICAgLy8gICAhISh0aGlzLmNvbnRleHQubWF4SXRlcmF0aW9uID4gMSAmJiB0aGlzLmNvbnRleHQubmVlZFBpbmdwb25nKTtcbiAgICAgIC8vIGlmICh0aGlzLnJlbGF0aXZlT3V0cHV0VGV4dHVyZU5hbWVzLmxlbmd0aCkge1xuICAgICAgLy8gICBjb25zdCB7IGlkLCB0ZXh0dXJlIH0gPSB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKTtcbiAgICAgIC8vICAgdGhpcy5yZWxhdGl2ZU91dHB1dFRleHR1cmVOYW1lcy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAvLyAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbbmFtZV0uaWQgPSBpZDtcbiAgICAgIC8vICAgICB0aGlzLnRleHR1cmVDYWNoZVtuYW1lXS50ZXh0dXJlID0gdGV4dHVyZTtcbiAgICAgIC8vICAgfSk7XG4gICAgICAvLyAgIHRoaXMuc3dhcCgpO1xuICAgICAgLy8gfVxuXG5cbiAgICAgIGlmICh0aGlzLmNvbXBpbGVkUGluZ3BvbmcgfHwgdGhpcy5keW5hbWljUGluZ3BvbmcpIHtcbiAgICAgICAgdGhpcy5zd2FwKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGV4RkJPID0gdGhpcy5yZUdsLmZyYW1lYnVmZmVyKHtcbiAgICAgICAgY29sb3I6IHRoaXMuZ2V0T3VwdXREYXRhVGV4dHVyZSgpLnRleHR1cmVcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZXhGQk8udXNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLmNvbXB1dGVDb21tYW5kKCk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW1wiLmNvbmNhdCh0aGlzLmVudGl0eSwgXCJdOiBvdXRwdXQgXCIpLmNvbmNhdCh0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKS5pZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZWFkRGF0YVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlYWREYXRhID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIHBpeGVscywgX3RoaXMkZ2V0T3VwdXREYXRhVGV4Miwgb3JpZ2luYWxEYXRhTGVuZ3RoLCBlbGVtZW50c1BlclRleGVsLCBfdGhpcyRnZXRPdXB1dERhdGFUZXgzLCB0eXBlZEFycmF5Q29uc3RydWN0b3IsIGZvcm1hdHRlZFBpeGVscywgaTtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMucmVHbCh7XG4gICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlcjogdGhpcy50ZXhGQk9cbiAgICAgICAgICAgICAgICB9KShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICBwaXhlbHMgPSBfdGhpczMucmVHbC5yZWFkKCk7XG4gICAgICAgICAgICAgICAgfSk7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICAgIGlmICghcGl4ZWxzKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF90aGlzJGdldE91cHV0RGF0YVRleDIgPSB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKSwgb3JpZ2luYWxEYXRhTGVuZ3RoID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4Mi5vcmlnaW5hbERhdGFMZW5ndGgsIGVsZW1lbnRzUGVyVGV4ZWwgPSBfdGhpcyRnZXRPdXB1dERhdGFUZXgyLmVsZW1lbnRzUGVyVGV4ZWwsIF90aGlzJGdldE91cHV0RGF0YVRleDMgPSBfdGhpcyRnZXRPdXB1dERhdGFUZXgyLnR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgdHlwZWRBcnJheUNvbnN0cnVjdG9yID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4MyA9PT0gdm9pZCAwID8gRmxvYXQzMkFycmF5IDogX3RoaXMkZ2V0T3VwdXREYXRhVGV4MztcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRQaXhlbHMgPSBbXTtcblxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50c1BlclRleGVsICE9PSA0KSB7XG4gICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGl4ZWxzLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50c1BlclRleGVsID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkUGl4ZWxzLnB1c2gocGl4ZWxzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50c1BlclRleGVsID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkUGl4ZWxzLnB1c2gocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDFdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRQaXhlbHMucHVzaChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMV0sIHBpeGVsc1tpICsgMl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFBpeGVscyA9IHBpeGVscztcbiAgICAgICAgICAgICAgICB9IC8vIOaIquWPluWkmuS9meeahOmDqOWIhlxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCBuZXcgdHlwZWRBcnJheUNvbnN0cnVjdG9yKGZvcm1hdHRlZFBpeGVscy5zbGljZSgwLCBvcmlnaW5hbERhdGFMZW5ndGgpKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IEZsb2F0MzJBcnJheSgpKTtcblxuICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlYWREYXRhKCkge1xuICAgICAgICByZXR1cm4gX3JlYWREYXRhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkRGF0YTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJjb25maXJtSW5wdXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uZmlybUlucHV0KG1vZGVsLCBpbnB1dE5hbWUpIHtcbiAgICAgIHZhciBpbnB1dE1vZGVsOyAvLyByZWZlciB0byBzZWxmLCBzYW1lIGFzIHBpbmdwb25nXG5cbiAgICAgIGlmICh0aGlzLmVudGl0eSA9PT0gbW9kZWwuZW50aXR5KSB7XG4gICAgICAgIHRoaXMuZHluYW1pY1Bpbmdwb25nID0gdHJ1ZTtcbiAgICAgICAgaW5wdXRNb2RlbCA9IHRoaXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnB1dE1vZGVsID0gbW9kZWw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGV4dHVyZUNhY2hlW2lucHV0TmFtZV0uaWQgPSBpbnB1dE1vZGVsLmdldE91cHV0RGF0YVRleHR1cmUoKS5pZDtcbiAgICAgIHRoaXMudGV4dHVyZUNhY2hlW2lucHV0TmFtZV0udGV4dHVyZSA9IGlucHV0TW9kZWwuZ2V0T3VwdXREYXRhVGV4dHVyZSgpLnRleHR1cmU7XG5cbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcIltcIi5jb25jYXQodGhpcy5lbnRpdHksIFwiXTogY29uZmlybSBpbnB1dCBcIikuY29uY2F0KGlucHV0TmFtZSwgXCIgZnJvbSBtb2RlbCBcIikuY29uY2F0KGlucHV0TW9kZWwuZW50aXR5LCBcIiwgXCIpLmNvbmNhdChpbnB1dE1vZGVsLmdldE91cHV0RGF0YVRleHR1cmUoKS5pZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVVbmlmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZVVuaWZvcm0oKSB7Ly8gYWxyZWFkeSBnZXQgdW5pZm9ybSdzIGRhdGEgZHluYW1pY2FsbHkgd2hlbiBjcmVhdGVkLCBkbyBub3RoaW5nIGhlcmVcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlQnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZmZlcihidWZmZXJOYW1lLCBkYXRhKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAwO1xuICAgICAgLy8gcmVnZW5lcmF0ZSBkYXRhIHRleHR1cmVcbiAgICAgIHZhciBidWZmZXIgPSB0aGlzLmNvbnRleHQudW5pZm9ybXMuZmluZChmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcbiAgICAgICAgcmV0dXJuIG5hbWUgPT09IGJ1ZmZlck5hbWU7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGJ1ZmZlcikge1xuICAgICAgICB2YXIgX3RoaXMkY2FsY0RhdGFUZXh0dXJlID0gdGhpcy5jYWxjRGF0YVRleHR1cmUoYnVmZmVyTmFtZSwgYnVmZmVyLnR5cGUsIGRhdGEpLFxuICAgICAgICAgICAgdGV4dHVyZSA9IF90aGlzJGNhbGNEYXRhVGV4dHVyZS50ZXh0dXJlLFxuICAgICAgICAgICAgcGFkZGluZ0RhdGEgPSBfdGhpcyRjYWxjRGF0YVRleHR1cmUuZGF0YTsgLy8gVE9ETzogZGVzdHJveSBvdXRkYXRlZCB0ZXh0dXJlXG5cblxuICAgICAgICB0aGlzLnRleHR1cmVDYWNoZVtidWZmZXJOYW1lXS5kYXRhID0gcGFkZGluZ0RhdGE7XG4gICAgICAgIHRoaXMudGV4dHVyZUNhY2hlW2J1ZmZlck5hbWVdLnRleHR1cmUgPSB0ZXh0dXJlO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7Ly8gcmVnbCB3aWxsIGRlc3Ryb3kgYWxsIHJlc291cmNlc1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzd2FwXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN3YXAoKSB7XG4gICAgICBpZiAoIXRoaXMuc3dhcE91dHB1dFRleHR1cmVOYW1lKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlU3dhcE91dHB1dERhdGFUZXh0dXJlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbXBpbGVkUGluZ3BvbmcpIHtcbiAgICAgICAgdmFyIG91dHB1dFRleHR1cmVVbmlmb3JtTmFtZSA9IHRoaXMuY29udGV4dC5vdXRwdXQubmFtZTtcbiAgICAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbb3V0cHV0VGV4dHVyZVVuaWZvcm1OYW1lXS5pZCA9IHRoaXMuZ2V0T3VwdXREYXRhVGV4dHVyZSgpLmlkO1xuICAgICAgICB0aGlzLnRleHR1cmVDYWNoZVtvdXRwdXRUZXh0dXJlVW5pZm9ybU5hbWVdLnRleHR1cmUgPSB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKS50ZXh0dXJlO1xuICAgICAgfVxuXG4gICAgICB2YXIgdG1wID0gdGhpcy5vdXRwdXRUZXh0dXJlTmFtZTtcbiAgICAgIHRoaXMub3V0cHV0VGV4dHVyZU5hbWUgPSB0aGlzLnN3YXBPdXRwdXRUZXh0dXJlTmFtZTtcbiAgICAgIHRoaXMuc3dhcE91dHB1dFRleHR1cmVOYW1lID0gdG1wO1xuXG4gICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJbXCIuY29uY2F0KHRoaXMuZW50aXR5LCBcIl06IGFmdGVyIHN3YXAsIG91dHB1dCBcIikuY29uY2F0KHRoaXMuZ2V0T3VwdXREYXRhVGV4dHVyZSgpLmlkKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE91cHV0RGF0YVRleHR1cmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0T3VwdXREYXRhVGV4dHVyZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHR1cmVDYWNoZVt0aGlzLm91dHB1dFRleHR1cmVOYW1lXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlU3dhcE91dHB1dERhdGFUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVN3YXBPdXRwdXREYXRhVGV4dHVyZSgpIHtcbiAgICAgIHZhciB0ZXh0dXJlID0gdGhpcy5jbG9uZURhdGFUZXh0dXJlKHRoaXMuZ2V0T3VwdXREYXRhVGV4dHVyZSgpKTtcbiAgICAgIHRoaXMuc3dhcE91dHB1dFRleHR1cmVOYW1lID0gXCJcIi5jb25jYXQodGhpcy5lbnRpdHksIFwiLXN3YXBcIik7XG4gICAgICB0aGlzLnRleHR1cmVDYWNoZVt0aGlzLnN3YXBPdXRwdXRUZXh0dXJlTmFtZV0gPSB0ZXh0dXJlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjbG9uZURhdGFUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb25lRGF0YVRleHR1cmUodGV4dHVyZSkge1xuICAgICAgdmFyIGRhdGEgPSB0ZXh0dXJlLmRhdGEsXG4gICAgICAgICAgdGV4dHVyZVdpZHRoID0gdGV4dHVyZS50ZXh0dXJlV2lkdGg7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0ZXh0dXJlKSwge30sIHtcbiAgICAgICAgaWQ6IHRleHR1cmVJZCsrLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRleHR1cmU6IHRoaXMucmVHbC50ZXh0dXJlKHtcbiAgICAgICAgICB3aWR0aDogdGV4dHVyZVdpZHRoLFxuICAgICAgICAgIGhlaWdodDogdGV4dHVyZVdpZHRoLFxuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgdHlwZTogJ2Zsb2F0J1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNhbGNEYXRhVGV4dHVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjYWxjRGF0YVRleHR1cmUobmFtZSwgdHlwZSwgZGF0YSkge1xuICAgICAgdmFyIGVsZW1lbnRzUGVyVGV4ZWwgPSAxO1xuXG4gICAgICBpZiAodHlwZSA9PT0gQVNUX1RPS0VOX1RZUEVTLlZlY3RvcjRGbG9hdEFycmF5KSB7XG4gICAgICAgIGVsZW1lbnRzUGVyVGV4ZWwgPSA0O1xuICAgICAgfSAvLyDnlKggMCDooaXlhajkuI3otrMgdmVjNCDnmoTpg6jliIZcblxuXG4gICAgICB2YXIgcGFkZGluZ0RhdGEgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSBlbGVtZW50c1BlclRleGVsKSB7XG4gICAgICAgIGlmIChlbGVtZW50c1BlclRleGVsID09PSAxKSB7XG4gICAgICAgICAgcGFkZGluZ0RhdGEucHVzaChkYXRhW2ldLCAwLCAwLCAwKTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50c1BlclRleGVsID09PSAyKSB7XG4gICAgICAgICAgcGFkZGluZ0RhdGEucHVzaChkYXRhW2ldLCBkYXRhW2kgKyAxXSwgMCwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gMykge1xuICAgICAgICAgIHBhZGRpbmdEYXRhLnB1c2goZGF0YVtpXSwgZGF0YVtpICsgMV0sIGRhdGFbaSArIDJdLCAwKTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50c1BlclRleGVsID09PSA0KSB7XG4gICAgICAgICAgcGFkZGluZ0RhdGEucHVzaChkYXRhW2ldLCBkYXRhW2kgKyAxXSwgZGF0YVtpICsgMl0sIGRhdGFbaSArIDNdKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyDkvb/nlKjnurnnkIblrZjlgqjvvIzkvovlpoIgQXJyYXkoOCkg5L2/55SoIDMgKiAzIOe6ueeQhu+8jOacq+WwvuepuueZveS9v+eUqCAwIOWhq+WFhVxuXG5cbiAgICAgIHZhciBvcmlnaW5hbERhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDtcbiAgICAgIHZhciB0ZXhlbENvdW50ID0gTWF0aC5jZWlsKG9yaWdpbmFsRGF0YUxlbmd0aCAvIGVsZW1lbnRzUGVyVGV4ZWwpO1xuICAgICAgdmFyIHdpZHRoID0gTWF0aC5jZWlsKE1hdGguc3FydCh0ZXhlbENvdW50KSk7XG4gICAgICB2YXIgcGFkZGluZ1RleGVsQ291bnQgPSB3aWR0aCAqIHdpZHRoO1xuXG4gICAgICBpZiAodGV4ZWxDb3VudCA8IHBhZGRpbmdUZXhlbENvdW50KSB7XG4gICAgICAgIHBhZGRpbmdEYXRhLnB1c2guYXBwbHkocGFkZGluZ0RhdGEsIF90b0NvbnN1bWFibGVBcnJheShuZXcgQXJyYXkoKHBhZGRpbmdUZXhlbENvdW50IC0gdGV4ZWxDb3VudCkgKiA0KS5maWxsKDApKSk7XG4gICAgICB9XG5cbiAgICAgIHZhciB0ZXh0dXJlID0gdGhpcy5yZUdsLnRleHR1cmUoe1xuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogd2lkdGgsXG4gICAgICAgIGRhdGE6IHBhZGRpbmdEYXRhLFxuICAgICAgICB0eXBlOiAnZmxvYXQnXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiB0ZXh0dXJlSWQrKyxcbiAgICAgICAgZGF0YTogcGFkZGluZ0RhdGEsXG4gICAgICAgIG9yaWdpbmFsRGF0YUxlbmd0aDogb3JpZ2luYWxEYXRhTGVuZ3RoLFxuICAgICAgICB0eXBlZEFycmF5Q29uc3RydWN0b3I6IGlzVHlwZWRBcnJheShkYXRhKSA/IGRhdGEuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIHRleHR1cmVXaWR0aDogd2lkdGgsXG4gICAgICAgIHRleHR1cmU6IHRleHR1cmUsXG4gICAgICAgIHRleGVsQ291bnQ6IHRleGVsQ291bnQsXG4gICAgICAgIGVsZW1lbnRzUGVyVGV4ZWw6IGVsZW1lbnRzUGVyVGV4ZWwsXG4gICAgICAgIGlzT3V0cHV0OiBuYW1lID09PSB0aGlzLmNvbnRleHQub3V0cHV0Lm5hbWVcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xDb21wdXRlTW9kZWw7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xDb21wdXRlTW9kZWwgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbENvbXB1dGVNb2RlbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglElements.js": /*!*********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglElements.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglElements; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#elements\n */\n\nvar ReglElements = /*#__PURE__*/function () {\n function ReglElements(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglElements);\n\n this.elements = void 0;\n var data = options.data,\n usage = options.usage,\n type = options.type,\n count = options.count;\n this.elements = reGl.elements({\n data: data,\n usage: _constants__WEBPACK_IMPORTED_MODULE_3__[\"usageMap\"][usage || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].STATIC_DRAW],\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE],\n count: count\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglElements, [{\n key: \"get\",\n value: function get() {\n return this.elements;\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data;\n this.elements.subdata(data);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.elements.destroy();\n }\n }]);\n\n return ReglElements;\n}();\n\n\n//# sourceMappingURL=ReglElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xFbGVtZW50cy5qcz9lM2Q3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNyQjtBQUNXO0FBQ3BEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1EQUFRLFVBQVUsc0RBQUU7QUFDakMsWUFBWSxzREFBVyxTQUFTLHNEQUFFO0FBQ2xDO0FBQ0EsS0FBSztBQUNMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRWtDO0FBQ25DIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9SZWdsRWxlbWVudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyBnbCB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgZGF0YVR5cGVNYXAsIHVzYWdlTWFwIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNlbGVtZW50c1xuICovXG5cbnZhciBSZWdsRWxlbWVudHMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWdsRWxlbWVudHMocmVHbCwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWdsRWxlbWVudHMpO1xuXG4gICAgdGhpcy5lbGVtZW50cyA9IHZvaWQgMDtcbiAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YSxcbiAgICAgICAgdXNhZ2UgPSBvcHRpb25zLnVzYWdlLFxuICAgICAgICB0eXBlID0gb3B0aW9ucy50eXBlLFxuICAgICAgICBjb3VudCA9IG9wdGlvbnMuY291bnQ7XG4gICAgdGhpcy5lbGVtZW50cyA9IHJlR2wuZWxlbWVudHMoe1xuICAgICAgZGF0YTogZGF0YSxcbiAgICAgIHVzYWdlOiB1c2FnZU1hcFt1c2FnZSB8fCBnbC5TVEFUSUNfRFJBV10sXG4gICAgICB0eXBlOiBkYXRhVHlwZU1hcFt0eXBlIHx8IGdsLlVOU0lHTkVEX0JZVEVdLFxuICAgICAgY291bnQ6IGNvdW50XG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbEVsZW1lbnRzLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudHM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN1YkRhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3ViRGF0YShfcmVmKSB7XG4gICAgICB2YXIgZGF0YSA9IF9yZWYuZGF0YTtcbiAgICAgIHRoaXMuZWxlbWVudHMuc3ViZGF0YShkYXRhKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhpcy5lbGVtZW50cy5kZXN0cm95KCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xFbGVtZW50cztcbn0oKTtcblxuZXhwb3J0IHsgUmVnbEVsZW1lbnRzIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlZ2xFbGVtZW50cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglElements.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js": /*!************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglFramebuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/**\n * adaptor for regl.Framebuffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#framebuffers\n */\nvar ReglFramebuffer = /*#__PURE__*/function () {\n function ReglFramebuffer(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglFramebuffer);\n\n this.framebuffer = void 0;\n var width = options.width,\n height = options.height,\n color = options.color,\n colors = options.colors,\n depth = options.depth,\n stencil = options.stencil;\n var framebufferOptions = {\n width: width,\n height: height\n };\n\n if (Array.isArray(colors)) {\n framebufferOptions.colors = colors.map(function (c) {\n return c.get();\n });\n }\n\n if (color && typeof color !== 'boolean') {\n framebufferOptions.color = color.get();\n } // TODO: depth & stencil\n\n\n this.framebuffer = reGl.framebuffer(framebufferOptions);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglFramebuffer, [{\n key: \"get\",\n value: function get() {\n return this.framebuffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.framebuffer.destroy();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n this.framebuffer.resize(width, height);\n }\n }]);\n\n return ReglFramebuffer;\n}();\n\n\n//# sourceMappingURL=ReglFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xGcmFtZWJ1ZmZlci5qcz9hZTc3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOOztBQUU5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRXFDO0FBQ3RDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9SZWdsRnJhbWVidWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbi8qKlxuICogYWRhcHRvciBmb3IgcmVnbC5GcmFtZWJ1ZmZlclxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjZnJhbWVidWZmZXJzXG4gKi9cbnZhciBSZWdsRnJhbWVidWZmZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWdsRnJhbWVidWZmZXIocmVHbCwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWdsRnJhbWVidWZmZXIpO1xuXG4gICAgdGhpcy5mcmFtZWJ1ZmZlciA9IHZvaWQgMDtcbiAgICB2YXIgd2lkdGggPSBvcHRpb25zLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBvcHRpb25zLmhlaWdodCxcbiAgICAgICAgY29sb3IgPSBvcHRpb25zLmNvbG9yLFxuICAgICAgICBjb2xvcnMgPSBvcHRpb25zLmNvbG9ycyxcbiAgICAgICAgZGVwdGggPSBvcHRpb25zLmRlcHRoLFxuICAgICAgICBzdGVuY2lsID0gb3B0aW9ucy5zdGVuY2lsO1xuICAgIHZhciBmcmFtZWJ1ZmZlck9wdGlvbnMgPSB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodFxuICAgIH07XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2xvcnMpKSB7XG4gICAgICBmcmFtZWJ1ZmZlck9wdGlvbnMuY29sb3JzID0gY29sb3JzLm1hcChmdW5jdGlvbiAoYykge1xuICAgICAgICByZXR1cm4gYy5nZXQoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjb2xvciAmJiB0eXBlb2YgY29sb3IgIT09ICdib29sZWFuJykge1xuICAgICAgZnJhbWVidWZmZXJPcHRpb25zLmNvbG9yID0gY29sb3IuZ2V0KCk7XG4gICAgfSAvLyBUT0RPOiBkZXB0aCAmIHN0ZW5jaWxcblxuXG4gICAgdGhpcy5mcmFtZWJ1ZmZlciA9IHJlR2wuZnJhbWVidWZmZXIoZnJhbWVidWZmZXJPcHRpb25zKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZWdsRnJhbWVidWZmZXIsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5mcmFtZWJ1ZmZlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhpcy5mcmFtZWJ1ZmZlci5kZXN0cm95KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc2l6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNpemUoX3JlZikge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmLmhlaWdodDtcbiAgICAgIHRoaXMuZnJhbWVidWZmZXIucmVzaXplKHdpZHRoLCBoZWlnaHQpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZWdsRnJhbWVidWZmZXI7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xGcmFtZWJ1ZmZlciBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZWdsRnJhbWVidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglModel.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglModel.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglModel; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _utils_uniform__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/uniform */ \"./node_modules/@antv/g-webgpu-engine/es/utils/uniform.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n/**\n * adaptor for regl.DrawCommand\n */\nvar ReglModel = /*#__PURE__*/function () {\n function ReglModel(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, ReglModel);\n\n this.reGl = void 0;\n this.drawCommand = void 0;\n this.uniforms = {};\n this.reGl = reGl;\n var vs = options.vs,\n fs = options.fs,\n defines = options.defines,\n attributes = options.attributes,\n uniforms = options.uniforms,\n primitive = options.primitive,\n count = options.count,\n elements = options.elements,\n depth = options.depth,\n blend = options.blend,\n stencil = options.stencil,\n cull = options.cull,\n instances = options.instances,\n scissor = options.scissor,\n viewport = options.viewport;\n var reglUniforms = {};\n\n if (uniforms) {\n this.uniforms = Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(uniforms);\n Object.keys(uniforms).forEach(function (uniformName) {\n // use regl prop API\n // @ts-ignore\n reglUniforms[uniformName] = reGl.prop(uniformName);\n });\n }\n\n var reglAttributes = {};\n Object.keys(attributes).forEach(function (name) {\n reglAttributes[name] = attributes[name].get();\n });\n var defineStmts = defines && this.generateDefines(defines) || '';\n var drawParams = {\n attributes: reglAttributes,\n frag: \"#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n#else\\n precision mediump float;\\n#endif\\n\".concat(defineStmts, \"\\n\").concat(fs),\n uniforms: reglUniforms,\n vert: \"\\n\".concat(defineStmts, \"\\n\").concat(vs),\n primitive: _constants__WEBPACK_IMPORTED_MODULE_6__[\"primitiveMap\"][primitive === undefined ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].TRIANGLES : primitive]\n };\n\n if (instances) {\n drawParams.instances = instances;\n } // elements 中可能包含 count,此时不应传入\n\n\n if (count) {\n drawParams.count = count;\n }\n\n if (elements) {\n drawParams.elements = elements.get();\n }\n\n if (scissor) {\n drawParams.scissor = scissor;\n }\n\n if (viewport) {\n drawParams.viewport = viewport;\n }\n\n this.initDepthDrawParams({\n depth: depth\n }, drawParams);\n this.initBlendDrawParams({\n blend: blend\n }, drawParams);\n this.initStencilDrawParams({\n stencil: stencil\n }, drawParams);\n this.initCullDrawParams({\n cull: cull\n }, drawParams);\n this.drawCommand = reGl(drawParams);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(ReglModel, [{\n key: \"addUniforms\",\n value: function addUniforms(uniforms) {\n this.uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(uniforms));\n }\n }, {\n key: \"draw\",\n value: function draw(options) {\n var uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(options.uniforms || {}));\n\n var reglDrawProps = {};\n Object.keys(uniforms).forEach(function (uniformName) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(uniforms[uniformName]);\n\n if (type === 'boolean' || type === 'number' || Array.isArray(uniforms[uniformName]) || // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT) {\n reglDrawProps[uniformName] = uniforms[uniformName];\n } else if (type === 'string') {// TODO: image url\n } else {\n reglDrawProps[uniformName] = uniforms[uniformName].get();\n }\n });\n this.drawCommand(reglDrawProps);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// don't need do anything since we will call `rendererService.cleanup()`\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#depth-buffer\n */\n\n }, {\n key: \"initDepthDrawParams\",\n value: function initDepthDrawParams(_ref, drawParams) {\n var depth = _ref.depth;\n\n if (depth) {\n drawParams.depth = {\n enable: depth.enable === undefined ? true : !!depth.enable,\n mask: depth.mask === undefined ? true : !!depth.mask,\n func: _constants__WEBPACK_IMPORTED_MODULE_6__[\"depthFuncMap\"][depth.func || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].LESS],\n range: depth.range || [0, 1]\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#blending\n */\n\n }, {\n key: \"initBlendDrawParams\",\n value: function initBlendDrawParams(_ref2, drawParams) {\n var blend = _ref2.blend;\n\n if (blend) {\n var enable = blend.enable,\n func = blend.func,\n equation = blend.equation,\n _blend$color = blend.color,\n color = _blend$color === void 0 ? [0, 0, 0, 0] : _blend$color; // @ts-ignore\n\n drawParams.blend = {\n enable: !!enable,\n func: {\n srcRGB: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.srcRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SRC_ALPHA],\n srcAlpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.srcAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SRC_ALPHA],\n dstRGB: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.dstRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ONE_MINUS_SRC_ALPHA],\n dstAlpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.dstAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ONE_MINUS_SRC_ALPHA]\n },\n equation: {\n rgb: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendEquationMap\"][equation && equation.rgb || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].FUNC_ADD],\n alpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendEquationMap\"][equation && equation.alpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].FUNC_ADD]\n },\n color: color\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#stencil\n */\n\n }, {\n key: \"initStencilDrawParams\",\n value: function initStencilDrawParams(_ref3, drawParams) {\n var stencil = _ref3.stencil;\n\n if (stencil) {\n var enable = stencil.enable,\n _stencil$mask = stencil.mask,\n mask = _stencil$mask === void 0 ? -1 : _stencil$mask,\n _stencil$func = stencil.func,\n func = _stencil$func === void 0 ? {\n cmp: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ALWAYS,\n ref: 0,\n mask: -1\n } : _stencil$func,\n _stencil$opFront = stencil.opFront,\n opFront = _stencil$opFront === void 0 ? {\n fail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zfail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zpass: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP\n } : _stencil$opFront,\n _stencil$opBack = stencil.opBack,\n opBack = _stencil$opBack === void 0 ? {\n fail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zfail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zpass: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP\n } : _stencil$opBack;\n drawParams.stencil = {\n enable: !!enable,\n mask: mask,\n func: _objectSpread(_objectSpread({}, func), {}, {\n cmp: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilFuncMap\"][func.cmp]\n }),\n opFront: {\n fail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.fail],\n zfail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.zfail],\n zpass: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.zpass]\n },\n opBack: {\n fail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.fail],\n zfail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.zfail],\n zpass: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.zpass]\n }\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#culling\n */\n\n }, {\n key: \"initCullDrawParams\",\n value: function initCullDrawParams(_ref4, drawParams) {\n var cull = _ref4.cull;\n\n if (cull) {\n var enable = cull.enable,\n _cull$face = cull.face,\n face = _cull$face === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].BACK : _cull$face;\n drawParams.cull = {\n enable: !!enable,\n face: _constants__WEBPACK_IMPORTED_MODULE_6__[\"cullFaceMap\"][face]\n };\n }\n }\n }, {\n key: \"generateDefines\",\n value: function generateDefines(defines) {\n return Object.keys(defines).map(function (name) {\n return \"#define \".concat(name, \" \").concat(Number(defines[name]));\n }).join('\\n');\n }\n }]);\n\n return ReglModel;\n}();\n\n\n//# sourceMappingURL=ReglModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xNb2RlbC5qcz81ZTFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9EO0FBQ2dCO0FBQ0E7QUFDTjs7QUFFOUQsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUUzZTtBQUNVO0FBQ2lGOztBQUVwSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQixzRUFBZTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFLG1DQUFtQztBQUMzRztBQUNBO0FBQ0EsaUJBQWlCLHVEQUFZLDJCQUEyQixzREFBRTtBQUMxRDs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLG9EQUFvRCxrQkFBa0Isc0VBQWU7QUFDckY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1EQUFtRCxrQkFBa0Isc0VBQWUsdUJBQXVCOztBQUUzRztBQUNBO0FBQ0EsbUJBQW1CLG9FQUFPOztBQUUxQjtBQUNBO0FBQ0E7QUFDQSxTQUFTLDhCQUE4QjtBQUN2QyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdURBQVksZUFBZSxzREFBRTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEU7O0FBRTFFO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1REFBWSx3QkFBd0Isc0RBQUU7QUFDMUQsc0JBQXNCLHVEQUFZLDBCQUEwQixzREFBRTtBQUM5RCxvQkFBb0IsdURBQVksd0JBQXdCLHNEQUFFO0FBQzFELHNCQUFzQix1REFBWSwwQkFBMEIsc0RBQUU7QUFDOUQsV0FBVztBQUNYO0FBQ0EsaUJBQWlCLDJEQUFnQiw2QkFBNkIsc0RBQUU7QUFDaEUsbUJBQW1CLDJEQUFnQiwrQkFBK0Isc0RBQUU7QUFDcEUsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBRTtBQUNqQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQUU7QUFDbEIsaUJBQWlCLHNEQUFFO0FBQ25CLGlCQUFpQixzREFBRTtBQUNuQixTQUFTO0FBQ1Q7QUFDQTtBQUNBLGdCQUFnQixzREFBRTtBQUNsQixpQkFBaUIsc0RBQUU7QUFDbkIsaUJBQWlCLHNEQUFFO0FBQ25CLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsV0FBVztBQUN6RCxpQkFBaUIseURBQWM7QUFDL0IsV0FBVztBQUNYO0FBQ0Esa0JBQWtCLHVEQUFZO0FBQzlCLG1CQUFtQix1REFBWTtBQUMvQixtQkFBbUIsdURBQVk7QUFDL0IsV0FBVztBQUNYO0FBQ0Esa0JBQWtCLHVEQUFZO0FBQzlCLG1CQUFtQix1REFBWTtBQUMvQixtQkFBbUIsdURBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsc0RBQUU7QUFDN0M7QUFDQTtBQUNBLGdCQUFnQixzREFBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFK0I7QUFDaEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xNb2RlbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGV4dHJhY3RVbmlmb3JtcyB9IGZyb20gJy4uL3V0aWxzL3VuaWZvcm0nO1xuaW1wb3J0IHsgYmxlbmRFcXVhdGlvbk1hcCwgYmxlbmRGdW5jTWFwLCBjdWxsRmFjZU1hcCwgZGVwdGhGdW5jTWFwLCBwcmltaXRpdmVNYXAsIHN0ZW5jaWxGdW5jTWFwLCBzdGVuY2lsT3BNYXAgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8qKlxuICogYWRhcHRvciBmb3IgcmVnbC5EcmF3Q29tbWFuZFxuICovXG52YXIgUmVnbE1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbE1vZGVsKHJlR2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbE1vZGVsKTtcblxuICAgIHRoaXMucmVHbCA9IHZvaWQgMDtcbiAgICB0aGlzLmRyYXdDb21tYW5kID0gdm9pZCAwO1xuICAgIHRoaXMudW5pZm9ybXMgPSB7fTtcbiAgICB0aGlzLnJlR2wgPSByZUdsO1xuICAgIHZhciB2cyA9IG9wdGlvbnMudnMsXG4gICAgICAgIGZzID0gb3B0aW9ucy5mcyxcbiAgICAgICAgZGVmaW5lcyA9IG9wdGlvbnMuZGVmaW5lcyxcbiAgICAgICAgYXR0cmlidXRlcyA9IG9wdGlvbnMuYXR0cmlidXRlcyxcbiAgICAgICAgdW5pZm9ybXMgPSBvcHRpb25zLnVuaWZvcm1zLFxuICAgICAgICBwcmltaXRpdmUgPSBvcHRpb25zLnByaW1pdGl2ZSxcbiAgICAgICAgY291bnQgPSBvcHRpb25zLmNvdW50LFxuICAgICAgICBlbGVtZW50cyA9IG9wdGlvbnMuZWxlbWVudHMsXG4gICAgICAgIGRlcHRoID0gb3B0aW9ucy5kZXB0aCxcbiAgICAgICAgYmxlbmQgPSBvcHRpb25zLmJsZW5kLFxuICAgICAgICBzdGVuY2lsID0gb3B0aW9ucy5zdGVuY2lsLFxuICAgICAgICBjdWxsID0gb3B0aW9ucy5jdWxsLFxuICAgICAgICBpbnN0YW5jZXMgPSBvcHRpb25zLmluc3RhbmNlcyxcbiAgICAgICAgc2Npc3NvciA9IG9wdGlvbnMuc2Npc3NvcixcbiAgICAgICAgdmlld3BvcnQgPSBvcHRpb25zLnZpZXdwb3J0O1xuICAgIHZhciByZWdsVW5pZm9ybXMgPSB7fTtcblxuICAgIGlmICh1bmlmb3Jtcykge1xuICAgICAgdGhpcy51bmlmb3JtcyA9IGV4dHJhY3RVbmlmb3Jtcyh1bmlmb3Jtcyk7XG4gICAgICBPYmplY3Qua2V5cyh1bmlmb3JtcykuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybU5hbWUpIHtcbiAgICAgICAgLy8gdXNlIHJlZ2wgcHJvcCBBUElcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZWdsVW5pZm9ybXNbdW5pZm9ybU5hbWVdID0gcmVHbC5wcm9wKHVuaWZvcm1OYW1lKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciByZWdsQXR0cmlidXRlcyA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHJlZ2xBdHRyaWJ1dGVzW25hbWVdID0gYXR0cmlidXRlc1tuYW1lXS5nZXQoKTtcbiAgICB9KTtcbiAgICB2YXIgZGVmaW5lU3RtdHMgPSBkZWZpbmVzICYmIHRoaXMuZ2VuZXJhdGVEZWZpbmVzKGRlZmluZXMpIHx8ICcnO1xuICAgIHZhciBkcmF3UGFyYW1zID0ge1xuICAgICAgYXR0cmlidXRlczogcmVnbEF0dHJpYnV0ZXMsXG4gICAgICBmcmFnOiBcIiNpZmRlZiBHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSFxcbiAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xcbiNlbHNlXFxuICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcXG4jZW5kaWZcXG5cIi5jb25jYXQoZGVmaW5lU3RtdHMsIFwiXFxuXCIpLmNvbmNhdChmcyksXG4gICAgICB1bmlmb3JtczogcmVnbFVuaWZvcm1zLFxuICAgICAgdmVydDogXCJcXG5cIi5jb25jYXQoZGVmaW5lU3RtdHMsIFwiXFxuXCIpLmNvbmNhdCh2cyksXG4gICAgICBwcmltaXRpdmU6IHByaW1pdGl2ZU1hcFtwcmltaXRpdmUgPT09IHVuZGVmaW5lZCA/IGdsLlRSSUFOR0xFUyA6IHByaW1pdGl2ZV1cbiAgICB9O1xuXG4gICAgaWYgKGluc3RhbmNlcykge1xuICAgICAgZHJhd1BhcmFtcy5pbnN0YW5jZXMgPSBpbnN0YW5jZXM7XG4gICAgfSAvLyBlbGVtZW50cyDkuK3lj6/og73ljIXlkKsgY291bnTvvIzmraTml7bkuI3lupTkvKDlhaVcblxuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICBkcmF3UGFyYW1zLmNvdW50ID0gY291bnQ7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnRzKSB7XG4gICAgICBkcmF3UGFyYW1zLmVsZW1lbnRzID0gZWxlbWVudHMuZ2V0KCk7XG4gICAgfVxuXG4gICAgaWYgKHNjaXNzb3IpIHtcbiAgICAgIGRyYXdQYXJhbXMuc2Npc3NvciA9IHNjaXNzb3I7XG4gICAgfVxuXG4gICAgaWYgKHZpZXdwb3J0KSB7XG4gICAgICBkcmF3UGFyYW1zLnZpZXdwb3J0ID0gdmlld3BvcnQ7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0RGVwdGhEcmF3UGFyYW1zKHtcbiAgICAgIGRlcHRoOiBkZXB0aFxuICAgIH0sIGRyYXdQYXJhbXMpO1xuICAgIHRoaXMuaW5pdEJsZW5kRHJhd1BhcmFtcyh7XG4gICAgICBibGVuZDogYmxlbmRcbiAgICB9LCBkcmF3UGFyYW1zKTtcbiAgICB0aGlzLmluaXRTdGVuY2lsRHJhd1BhcmFtcyh7XG4gICAgICBzdGVuY2lsOiBzdGVuY2lsXG4gICAgfSwgZHJhd1BhcmFtcyk7XG4gICAgdGhpcy5pbml0Q3VsbERyYXdQYXJhbXMoe1xuICAgICAgY3VsbDogY3VsbFxuICAgIH0sIGRyYXdQYXJhbXMpO1xuICAgIHRoaXMuZHJhd0NvbW1hbmQgPSByZUdsKGRyYXdQYXJhbXMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlZ2xNb2RlbCwgW3tcbiAgICBrZXk6IFwiYWRkVW5pZm9ybXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkVW5pZm9ybXModW5pZm9ybXMpIHtcbiAgICAgIHRoaXMudW5pZm9ybXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMudW5pZm9ybXMpLCBleHRyYWN0VW5pZm9ybXModW5pZm9ybXMpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZHJhd1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkcmF3KG9wdGlvbnMpIHtcbiAgICAgIHZhciB1bmlmb3JtcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy51bmlmb3JtcyksIGV4dHJhY3RVbmlmb3JtcyhvcHRpb25zLnVuaWZvcm1zIHx8IHt9KSk7XG5cbiAgICAgIHZhciByZWdsRHJhd1Byb3BzID0ge307XG4gICAgICBPYmplY3Qua2V5cyh1bmlmb3JtcykuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybU5hbWUpIHtcbiAgICAgICAgdmFyIHR5cGUgPSBfdHlwZW9mKHVuaWZvcm1zW3VuaWZvcm1OYW1lXSk7XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICdib29sZWFuJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fCBBcnJheS5pc0FycmF5KHVuaWZvcm1zW3VuaWZvcm1OYW1lXSkgfHwgLy8gQHRzLWlnbm9yZVxuICAgICAgICB1bmlmb3Jtc1t1bmlmb3JtTmFtZV0uQllURVNfUEVSX0VMRU1FTlQpIHtcbiAgICAgICAgICByZWdsRHJhd1Byb3BzW3VuaWZvcm1OYW1lXSA9IHVuaWZvcm1zW3VuaWZvcm1OYW1lXTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnc3RyaW5nJykgey8vIFRPRE86IGltYWdlIHVybFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZ2xEcmF3UHJvcHNbdW5pZm9ybU5hbWVdID0gdW5pZm9ybXNbdW5pZm9ybU5hbWVdLmdldCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZHJhd0NvbW1hbmQocmVnbERyYXdQcm9wcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHsvLyBkb24ndCBuZWVkIGRvIGFueXRoaW5nIHNpbmNlIHdlIHdpbGwgY2FsbCBgcmVuZGVyZXJTZXJ2aWNlLmNsZWFudXAoKWBcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjZGVwdGgtYnVmZmVyXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJpbml0RGVwdGhEcmF3UGFyYW1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXREZXB0aERyYXdQYXJhbXMoX3JlZiwgZHJhd1BhcmFtcykge1xuICAgICAgdmFyIGRlcHRoID0gX3JlZi5kZXB0aDtcblxuICAgICAgaWYgKGRlcHRoKSB7XG4gICAgICAgIGRyYXdQYXJhbXMuZGVwdGggPSB7XG4gICAgICAgICAgZW5hYmxlOiBkZXB0aC5lbmFibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiAhIWRlcHRoLmVuYWJsZSxcbiAgICAgICAgICBtYXNrOiBkZXB0aC5tYXNrID09PSB1bmRlZmluZWQgPyB0cnVlIDogISFkZXB0aC5tYXNrLFxuICAgICAgICAgIGZ1bmM6IGRlcHRoRnVuY01hcFtkZXB0aC5mdW5jIHx8IGdsLkxFU1NdLFxuICAgICAgICAgIHJhbmdlOiBkZXB0aC5yYW5nZSB8fCBbMCwgMV1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjYmxlbmRpbmdcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImluaXRCbGVuZERyYXdQYXJhbXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdEJsZW5kRHJhd1BhcmFtcyhfcmVmMiwgZHJhd1BhcmFtcykge1xuICAgICAgdmFyIGJsZW5kID0gX3JlZjIuYmxlbmQ7XG5cbiAgICAgIGlmIChibGVuZCkge1xuICAgICAgICB2YXIgZW5hYmxlID0gYmxlbmQuZW5hYmxlLFxuICAgICAgICAgICAgZnVuYyA9IGJsZW5kLmZ1bmMsXG4gICAgICAgICAgICBlcXVhdGlvbiA9IGJsZW5kLmVxdWF0aW9uLFxuICAgICAgICAgICAgX2JsZW5kJGNvbG9yID0gYmxlbmQuY29sb3IsXG4gICAgICAgICAgICBjb2xvciA9IF9ibGVuZCRjb2xvciA9PT0gdm9pZCAwID8gWzAsIDAsIDAsIDBdIDogX2JsZW5kJGNvbG9yOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgZHJhd1BhcmFtcy5ibGVuZCA9IHtcbiAgICAgICAgICBlbmFibGU6ICEhZW5hYmxlLFxuICAgICAgICAgIGZ1bmM6IHtcbiAgICAgICAgICAgIHNyY1JHQjogYmxlbmRGdW5jTWFwW2Z1bmMgJiYgZnVuYy5zcmNSR0IgfHwgZ2wuU1JDX0FMUEhBXSxcbiAgICAgICAgICAgIHNyY0FscGhhOiBibGVuZEZ1bmNNYXBbZnVuYyAmJiBmdW5jLnNyY0FscGhhIHx8IGdsLlNSQ19BTFBIQV0sXG4gICAgICAgICAgICBkc3RSR0I6IGJsZW5kRnVuY01hcFtmdW5jICYmIGZ1bmMuZHN0UkdCIHx8IGdsLk9ORV9NSU5VU19TUkNfQUxQSEFdLFxuICAgICAgICAgICAgZHN0QWxwaGE6IGJsZW5kRnVuY01hcFtmdW5jICYmIGZ1bmMuZHN0QWxwaGEgfHwgZ2wuT05FX01JTlVTX1NSQ19BTFBIQV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVxdWF0aW9uOiB7XG4gICAgICAgICAgICByZ2I6IGJsZW5kRXF1YXRpb25NYXBbZXF1YXRpb24gJiYgZXF1YXRpb24ucmdiIHx8IGdsLkZVTkNfQUREXSxcbiAgICAgICAgICAgIGFscGhhOiBibGVuZEVxdWF0aW9uTWFwW2VxdWF0aW9uICYmIGVxdWF0aW9uLmFscGhhIHx8IGdsLkZVTkNfQUREXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29sb3I6IGNvbG9yXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI3N0ZW5jaWxcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImluaXRTdGVuY2lsRHJhd1BhcmFtc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0U3RlbmNpbERyYXdQYXJhbXMoX3JlZjMsIGRyYXdQYXJhbXMpIHtcbiAgICAgIHZhciBzdGVuY2lsID0gX3JlZjMuc3RlbmNpbDtcblxuICAgICAgaWYgKHN0ZW5jaWwpIHtcbiAgICAgICAgdmFyIGVuYWJsZSA9IHN0ZW5jaWwuZW5hYmxlLFxuICAgICAgICAgICAgX3N0ZW5jaWwkbWFzayA9IHN0ZW5jaWwubWFzayxcbiAgICAgICAgICAgIG1hc2sgPSBfc3RlbmNpbCRtYXNrID09PSB2b2lkIDAgPyAtMSA6IF9zdGVuY2lsJG1hc2ssXG4gICAgICAgICAgICBfc3RlbmNpbCRmdW5jID0gc3RlbmNpbC5mdW5jLFxuICAgICAgICAgICAgZnVuYyA9IF9zdGVuY2lsJGZ1bmMgPT09IHZvaWQgMCA/IHtcbiAgICAgICAgICBjbXA6IGdsLkFMV0FZUyxcbiAgICAgICAgICByZWY6IDAsXG4gICAgICAgICAgbWFzazogLTFcbiAgICAgICAgfSA6IF9zdGVuY2lsJGZ1bmMsXG4gICAgICAgICAgICBfc3RlbmNpbCRvcEZyb250ID0gc3RlbmNpbC5vcEZyb250LFxuICAgICAgICAgICAgb3BGcm9udCA9IF9zdGVuY2lsJG9wRnJvbnQgPT09IHZvaWQgMCA/IHtcbiAgICAgICAgICBmYWlsOiBnbC5LRUVQLFxuICAgICAgICAgIHpmYWlsOiBnbC5LRUVQLFxuICAgICAgICAgIHpwYXNzOiBnbC5LRUVQXG4gICAgICAgIH0gOiBfc3RlbmNpbCRvcEZyb250LFxuICAgICAgICAgICAgX3N0ZW5jaWwkb3BCYWNrID0gc3RlbmNpbC5vcEJhY2ssXG4gICAgICAgICAgICBvcEJhY2sgPSBfc3RlbmNpbCRvcEJhY2sgPT09IHZvaWQgMCA/IHtcbiAgICAgICAgICBmYWlsOiBnbC5LRUVQLFxuICAgICAgICAgIHpmYWlsOiBnbC5LRUVQLFxuICAgICAgICAgIHpwYXNzOiBnbC5LRUVQXG4gICAgICAgIH0gOiBfc3RlbmNpbCRvcEJhY2s7XG4gICAgICAgIGRyYXdQYXJhbXMuc3RlbmNpbCA9IHtcbiAgICAgICAgICBlbmFibGU6ICEhZW5hYmxlLFxuICAgICAgICAgIG1hc2s6IG1hc2ssXG4gICAgICAgICAgZnVuYzogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBmdW5jKSwge30sIHtcbiAgICAgICAgICAgIGNtcDogc3RlbmNpbEZ1bmNNYXBbZnVuYy5jbXBdXG4gICAgICAgICAgfSksXG4gICAgICAgICAgb3BGcm9udDoge1xuICAgICAgICAgICAgZmFpbDogc3RlbmNpbE9wTWFwW29wRnJvbnQuZmFpbF0sXG4gICAgICAgICAgICB6ZmFpbDogc3RlbmNpbE9wTWFwW29wRnJvbnQuemZhaWxdLFxuICAgICAgICAgICAgenBhc3M6IHN0ZW5jaWxPcE1hcFtvcEZyb250LnpwYXNzXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3BCYWNrOiB7XG4gICAgICAgICAgICBmYWlsOiBzdGVuY2lsT3BNYXBbb3BCYWNrLmZhaWxdLFxuICAgICAgICAgICAgemZhaWw6IHN0ZW5jaWxPcE1hcFtvcEJhY2suemZhaWxdLFxuICAgICAgICAgICAgenBhc3M6IHN0ZW5jaWxPcE1hcFtvcEJhY2suenBhc3NdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNjdWxsaW5nXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJpbml0Q3VsbERyYXdQYXJhbXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdEN1bGxEcmF3UGFyYW1zKF9yZWY0LCBkcmF3UGFyYW1zKSB7XG4gICAgICB2YXIgY3VsbCA9IF9yZWY0LmN1bGw7XG5cbiAgICAgIGlmIChjdWxsKSB7XG4gICAgICAgIHZhciBlbmFibGUgPSBjdWxsLmVuYWJsZSxcbiAgICAgICAgICAgIF9jdWxsJGZhY2UgPSBjdWxsLmZhY2UsXG4gICAgICAgICAgICBmYWNlID0gX2N1bGwkZmFjZSA9PT0gdm9pZCAwID8gZ2wuQkFDSyA6IF9jdWxsJGZhY2U7XG4gICAgICAgIGRyYXdQYXJhbXMuY3VsbCA9IHtcbiAgICAgICAgICBlbmFibGU6ICEhZW5hYmxlLFxuICAgICAgICAgIGZhY2U6IGN1bGxGYWNlTWFwW2ZhY2VdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdlbmVyYXRlRGVmaW5lc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZW5lcmF0ZURlZmluZXMoZGVmaW5lcykge1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGRlZmluZXMpLm1hcChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gXCIjZGVmaW5lIFwiLmNvbmNhdChuYW1lLCBcIiBcIikuY29uY2F0KE51bWJlcihkZWZpbmVzW25hbWVdKSk7XG4gICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVnbE1vZGVsO1xufSgpO1xuXG5leHBvcnQgeyBSZWdsTW9kZWwgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbE1vZGVsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglModel.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js": /*!**********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglTexture2D; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar ReglTexture2D = /*#__PURE__*/function () {\n function ReglTexture2D(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglTexture2D);\n\n this.texture = void 0;\n this.width = void 0;\n this.height = void 0;\n var data = options.data,\n _options$type = options.type,\n type = _options$type === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE : _options$type,\n width = options.width,\n height = options.height,\n _options$flipY = options.flipY,\n flipY = _options$flipY === void 0 ? false : _options$flipY,\n _options$format = options.format,\n format = _options$format === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].RGBA : _options$format,\n _options$mipmap = options.mipmap,\n mipmap = _options$mipmap === void 0 ? false : _options$mipmap,\n _options$wrapS = options.wrapS,\n wrapS = _options$wrapS === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _options$wrapS,\n _options$wrapT = options.wrapT,\n wrapT = _options$wrapT === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _options$wrapT,\n _options$aniso = options.aniso,\n aniso = _options$aniso === void 0 ? 0 : _options$aniso,\n _options$alignment = options.alignment,\n alignment = _options$alignment === void 0 ? 1 : _options$alignment,\n _options$premultiplyA = options.premultiplyAlpha,\n premultiplyAlpha = _options$premultiplyA === void 0 ? false : _options$premultiplyA,\n _options$mag = options.mag,\n mag = _options$mag === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _options$mag,\n _options$min = options.min,\n min = _options$min === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _options$min,\n _options$colorSpace = options.colorSpace,\n colorSpace = _options$colorSpace === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].BROWSER_DEFAULT_WEBGL : _options$colorSpace;\n this.width = width;\n this.height = height;\n var textureOptions = {\n width: width,\n height: height,\n // @ts-ignore\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type],\n format: _constants__WEBPACK_IMPORTED_MODULE_3__[\"formatMap\"][format],\n wrapS: _constants__WEBPACK_IMPORTED_MODULE_3__[\"wrapModeMap\"][wrapS],\n wrapT: _constants__WEBPACK_IMPORTED_MODULE_3__[\"wrapModeMap\"][wrapT],\n // @ts-ignore\n mag: _constants__WEBPACK_IMPORTED_MODULE_3__[\"filterMap\"][mag],\n min: _constants__WEBPACK_IMPORTED_MODULE_3__[\"filterMap\"][min],\n alignment: alignment,\n flipY: flipY,\n colorSpace: _constants__WEBPACK_IMPORTED_MODULE_3__[\"colorSpaceMap\"][colorSpace],\n premultiplyAlpha: premultiplyAlpha,\n aniso: aniso\n };\n\n if (data) {\n textureOptions.data = data;\n }\n\n if (typeof mipmap === 'number') {\n textureOptions.mipmap = _constants__WEBPACK_IMPORTED_MODULE_3__[\"mipmapMap\"][mipmap];\n } else if (typeof mipmap === 'boolean') {\n textureOptions.mipmap = mipmap;\n }\n\n this.texture = reGl.texture(textureOptions);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglTexture2D, [{\n key: \"get\",\n value: function get() {\n return this.texture;\n }\n }, {\n key: \"update\",\n value: function update() {\n // @ts-ignore\n this.texture._texture.bind();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n this.texture.resize(width, height);\n this.width = width;\n this.height = height;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.texture.destroy();\n }\n }]);\n\n return ReglTexture2D;\n}();\n\n\n//# sourceMappingURL=ReglTexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xUZXh0dXJlMkQuanM/ZmNmNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDckI7QUFDOEQ7QUFDdkc7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsc0RBQUU7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxzREFBRTtBQUNoRDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsc0RBQUU7QUFDOUM7QUFDQSw0Q0FBNEMsc0RBQUU7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0Msc0RBQUU7QUFDMUM7QUFDQSx3Q0FBd0Msc0RBQUU7QUFDMUM7QUFDQSxzREFBc0Qsc0RBQUU7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzREFBVztBQUN2QixjQUFjLG9EQUFTO0FBQ3ZCLGFBQWEsc0RBQVc7QUFDeEIsYUFBYSxzREFBVztBQUN4QjtBQUNBLFdBQVcsb0RBQVM7QUFDcEIsV0FBVyxvREFBUztBQUNwQjtBQUNBO0FBQ0Esa0JBQWtCLHdEQUFhO0FBQy9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw4QkFBOEIsb0RBQVM7QUFDdkMsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRW1DO0FBQ3BDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9SZWdsVGV4dHVyZTJELmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGNvbG9yU3BhY2VNYXAsIGRhdGFUeXBlTWFwLCBmaWx0ZXJNYXAsIGZvcm1hdE1hcCwgbWlwbWFwTWFwLCB3cmFwTW9kZU1hcCB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKlxuICogYWRhcHRvciBmb3IgcmVnbC5CdWZmZXJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI2J1ZmZlcnNcbiAqL1xuXG52YXIgUmVnbFRleHR1cmUyRCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJlZ2xUZXh0dXJlMkQocmVHbCwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWdsVGV4dHVyZTJEKTtcblxuICAgIHRoaXMudGV4dHVyZSA9IHZvaWQgMDtcbiAgICB0aGlzLndpZHRoID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhLFxuICAgICAgICBfb3B0aW9ucyR0eXBlID0gb3B0aW9ucy50eXBlLFxuICAgICAgICB0eXBlID0gX29wdGlvbnMkdHlwZSA9PT0gdm9pZCAwID8gZ2wuVU5TSUdORURfQllURSA6IF9vcHRpb25zJHR5cGUsXG4gICAgICAgIHdpZHRoID0gb3B0aW9ucy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHQsXG4gICAgICAgIF9vcHRpb25zJGZsaXBZID0gb3B0aW9ucy5mbGlwWSxcbiAgICAgICAgZmxpcFkgPSBfb3B0aW9ucyRmbGlwWSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRmbGlwWSxcbiAgICAgICAgX29wdGlvbnMkZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQsXG4gICAgICAgIGZvcm1hdCA9IF9vcHRpb25zJGZvcm1hdCA9PT0gdm9pZCAwID8gZ2wuUkdCQSA6IF9vcHRpb25zJGZvcm1hdCxcbiAgICAgICAgX29wdGlvbnMkbWlwbWFwID0gb3B0aW9ucy5taXBtYXAsXG4gICAgICAgIG1pcG1hcCA9IF9vcHRpb25zJG1pcG1hcCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRtaXBtYXAsXG4gICAgICAgIF9vcHRpb25zJHdyYXBTID0gb3B0aW9ucy53cmFwUyxcbiAgICAgICAgd3JhcFMgPSBfb3B0aW9ucyR3cmFwUyA9PT0gdm9pZCAwID8gZ2wuQ0xBTVBfVE9fRURHRSA6IF9vcHRpb25zJHdyYXBTLFxuICAgICAgICBfb3B0aW9ucyR3cmFwVCA9IG9wdGlvbnMud3JhcFQsXG4gICAgICAgIHdyYXBUID0gX29wdGlvbnMkd3JhcFQgPT09IHZvaWQgMCA/IGdsLkNMQU1QX1RPX0VER0UgOiBfb3B0aW9ucyR3cmFwVCxcbiAgICAgICAgX29wdGlvbnMkYW5pc28gPSBvcHRpb25zLmFuaXNvLFxuICAgICAgICBhbmlzbyA9IF9vcHRpb25zJGFuaXNvID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkYW5pc28sXG4gICAgICAgIF9vcHRpb25zJGFsaWdubWVudCA9IG9wdGlvbnMuYWxpZ25tZW50LFxuICAgICAgICBhbGlnbm1lbnQgPSBfb3B0aW9ucyRhbGlnbm1lbnQgPT09IHZvaWQgMCA/IDEgOiBfb3B0aW9ucyRhbGlnbm1lbnQsXG4gICAgICAgIF9vcHRpb25zJHByZW11bHRpcGx5QSA9IG9wdGlvbnMucHJlbXVsdGlwbHlBbHBoYSxcbiAgICAgICAgcHJlbXVsdGlwbHlBbHBoYSA9IF9vcHRpb25zJHByZW11bHRpcGx5QSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRwcmVtdWx0aXBseUEsXG4gICAgICAgIF9vcHRpb25zJG1hZyA9IG9wdGlvbnMubWFnLFxuICAgICAgICBtYWcgPSBfb3B0aW9ucyRtYWcgPT09IHZvaWQgMCA/IGdsLk5FQVJFU1QgOiBfb3B0aW9ucyRtYWcsXG4gICAgICAgIF9vcHRpb25zJG1pbiA9IG9wdGlvbnMubWluLFxuICAgICAgICBtaW4gPSBfb3B0aW9ucyRtaW4gPT09IHZvaWQgMCA/IGdsLk5FQVJFU1QgOiBfb3B0aW9ucyRtaW4sXG4gICAgICAgIF9vcHRpb25zJGNvbG9yU3BhY2UgPSBvcHRpb25zLmNvbG9yU3BhY2UsXG4gICAgICAgIGNvbG9yU3BhY2UgPSBfb3B0aW9ucyRjb2xvclNwYWNlID09PSB2b2lkIDAgPyBnbC5CUk9XU0VSX0RFRkFVTFRfV0VCR0wgOiBfb3B0aW9ucyRjb2xvclNwYWNlO1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB2YXIgdGV4dHVyZU9wdGlvbnMgPSB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHR5cGU6IGRhdGFUeXBlTWFwW3R5cGVdLFxuICAgICAgZm9ybWF0OiBmb3JtYXRNYXBbZm9ybWF0XSxcbiAgICAgIHdyYXBTOiB3cmFwTW9kZU1hcFt3cmFwU10sXG4gICAgICB3cmFwVDogd3JhcE1vZGVNYXBbd3JhcFRdLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbWFnOiBmaWx0ZXJNYXBbbWFnXSxcbiAgICAgIG1pbjogZmlsdGVyTWFwW21pbl0sXG4gICAgICBhbGlnbm1lbnQ6IGFsaWdubWVudCxcbiAgICAgIGZsaXBZOiBmbGlwWSxcbiAgICAgIGNvbG9yU3BhY2U6IGNvbG9yU3BhY2VNYXBbY29sb3JTcGFjZV0sXG4gICAgICBwcmVtdWx0aXBseUFscGhhOiBwcmVtdWx0aXBseUFscGhhLFxuICAgICAgYW5pc286IGFuaXNvXG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICB0ZXh0dXJlT3B0aW9ucy5kYXRhID0gZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1pcG1hcCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRleHR1cmVPcHRpb25zLm1pcG1hcCA9IG1pcG1hcE1hcFttaXBtYXBdO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG1pcG1hcCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0ZXh0dXJlT3B0aW9ucy5taXBtYXAgPSBtaXBtYXA7XG4gICAgfVxuXG4gICAgdGhpcy50ZXh0dXJlID0gcmVHbC50ZXh0dXJlKHRleHR1cmVPcHRpb25zKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZWdsVGV4dHVyZTJELCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dHVyZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMudGV4dHVyZS5fdGV4dHVyZS5iaW5kKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc2l6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNpemUoX3JlZikge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmLmhlaWdodDtcbiAgICAgIHRoaXMudGV4dHVyZS5yZXNpemUod2lkdGgsIGhlaWdodCk7XG4gICAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhpcy50ZXh0dXJlLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVnbFRleHR1cmUyRDtcbn0oKTtcblxuZXhwb3J0IHsgUmVnbFRleHR1cmUyRCBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZWdsVGV4dHVyZTJELmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js ***! \******************************************************************/ /*! exports provided: primitiveMap, usageMap, dataTypeMap, formatMap, mipmapMap, filterMap, wrapModeMap, colorSpaceMap, depthFuncMap, blendEquationMap, blendFuncMap, stencilFuncMap, stencilOpMap, cullFaceMap */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"primitiveMap\", function() { return primitiveMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"usageMap\", function() { return usageMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataTypeMap\", function() { return dataTypeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatMap\", function() { return formatMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mipmapMap\", function() { return mipmapMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterMap\", function() { return filterMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapModeMap\", function() { return wrapModeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"colorSpaceMap\", function() { return colorSpaceMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"depthFuncMap\", function() { return depthFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendEquationMap\", function() { return blendEquationMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendFuncMap\", function() { return blendFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stencilFuncMap\", function() { return stencilFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stencilOpMap\", function() { return stencilOpMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cullFaceMap\", function() { return cullFaceMap; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n\n\nvar _primitiveMap, _usageMap, _dataTypeMap, _formatMap, _mipmapMap, _filterMap, _wrapModeMap, _colorSpaceMap, _depthFuncMap, _blendEquationMap, _blendFuncMap, _stencilFuncMap, _stencilOpMap, _cullFaceMap;\n\n/**\n * @desc 由于 regl 使用大量字符串而非 WebGL 常量,因此需要映射\n */\n\n// @see https://github.com/regl-project/regl/blob/gh-pages/lib/constants/primitives.json\nvar primitiveMap = (_primitiveMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].POINTS, 'points'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINES, 'lines'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_LOOP, 'line loop'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_STRIP, 'line strip'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLES, 'triangles'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_FAN, 'triangle fan'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_STRIP, 'triangle strip'), _primitiveMap);\nvar usageMap = (_usageMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].STATIC_DRAW, 'static'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DYNAMIC_DRAW, 'dynamic'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].STREAM_DRAW, 'stream'), _usageMap);\nvar dataTypeMap = (_dataTypeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BYTE, 'int8'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_INT, 'int16'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INT, 'int32'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_BYTE, 'uint8'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_SHORT, 'uint16'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_INT, 'uint32'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FLOAT, 'float'), _dataTypeMap);\nvar formatMap = (_formatMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALPHA, 'alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LUMINANCE, 'luminance'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LUMINANCE_ALPHA, 'luminance alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB, 'rgb'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA, 'rgba'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA4, 'rgba4'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB5_A1, 'rgb5 a1'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB565, 'rgb565'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_COMPONENT, 'depth'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_STENCIL, 'depth stencil'), _formatMap);\nvar mipmapMap = (_mipmapMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DONT_CARE, 'dont care'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NICEST, 'nice'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FASTEST, 'fast'), _mipmapMap);\nvar filterMap = (_filterMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST, 'nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR, 'linear'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR_MIPMAP_LINEAR, 'mipmap'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST_MIPMAP_LINEAR, 'nearest mipmap linear'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR_MIPMAP_NEAREST, 'linear mipmap nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST_MIPMAP_NEAREST, 'nearest mipmap nearest'), _filterMap);\nvar wrapModeMap = (_wrapModeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPEAT, 'repeat'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CLAMP_TO_EDGE, 'clamp'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIRRORED_REPEAT, 'mirror'), _wrapModeMap);\nvar colorSpaceMap = (_colorSpaceMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_colorSpaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NONE, 'none'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_colorSpaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BROWSER_DEFAULT_WEBGL, 'browser'), _colorSpaceMap);\nvar depthFuncMap = (_depthFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, 'never'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, 'always'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, 'less'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, 'lequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, 'greater'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, 'gequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, 'equal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, 'notequal'), _depthFuncMap);\nvar blendEquationMap = (_blendEquationMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD, 'add'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIN_EXT, 'min'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MAX_EXT, 'max'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_SUBTRACT, 'subtract'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_REVERSE_SUBTRACT, 'reverse subtract'), _blendEquationMap);\nvar blendFuncMap = (_blendFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, 'zero'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE, 'one'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_COLOR, 'src color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_COLOR, 'one minus src color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA, 'src alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_ALPHA, 'one minus src alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_COLOR, 'dst color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_COLOR, 'one minus dst color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_ALPHA, 'dst alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_ALPHA, 'one minus dst alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_COLOR, 'constant color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_COLOR, 'one minus constant color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_ALPHA, 'constant alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_ALPHA, 'one minus constant alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA_SATURATE, 'src alpha saturate'), _blendFuncMap);\nvar stencilFuncMap = (_stencilFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, 'never'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, 'always'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, 'less'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, 'lequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, 'greater'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, 'gequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, 'equal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, 'notequal'), _stencilFuncMap);\nvar stencilOpMap = (_stencilOpMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, 'zero'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].KEEP, 'keep'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPLACE, 'replace'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INVERT, 'invert'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INCR, 'increment'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DECR, 'decrement'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INCR_WRAP, 'increment wrap'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DECR_WRAP, 'decrement wrap'), _stencilOpMap);\nvar cullFaceMap = (_cullFaceMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_cullFaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FRONT, 'front'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_cullFaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BACK, 'back'), _cullFaceMap);\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL2NvbnN0YW50cy5qcz85YTIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTs7QUFFcEU7O0FBRUE7QUFDQTtBQUNBO0FBQ3lDO0FBQ3pDO0FBQ08sc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUsa0JBQWtCLDRFQUFlLGdCQUFnQixzREFBRSwwQkFBMEIsNEVBQWUsZ0JBQWdCLHNEQUFFLDRCQUE0Qiw0RUFBZSxnQkFBZ0Isc0RBQUUsMEJBQTBCLDRFQUFlLGdCQUFnQixzREFBRSxnQ0FBZ0MsNEVBQWUsZ0JBQWdCLHNEQUFFO0FBQ3JhLDhCQUE4QixFQUFFLDRFQUFlLFlBQVksc0RBQUUseUJBQXlCLDRFQUFlLFlBQVksc0RBQUUsMkJBQTJCLDRFQUFlLFlBQVksc0RBQUU7QUFDM0ssb0NBQW9DLEVBQUUsNEVBQWUsZUFBZSxzREFBRSxnQkFBZ0IsNEVBQWUsZUFBZSxzREFBRSx5QkFBeUIsNEVBQWUsZUFBZSxzREFBRSxnQkFBZ0IsNEVBQWUsZUFBZSxzREFBRSwwQkFBMEIsNEVBQWUsZUFBZSxzREFBRSw0QkFBNEIsNEVBQWUsZUFBZSxzREFBRSwwQkFBMEIsNEVBQWUsZUFBZSxzREFBRTtBQUMvWSxnQ0FBZ0MsRUFBRSw0RUFBZSxhQUFhLHNEQUFFLGtCQUFrQiw0RUFBZSxhQUFhLHNEQUFFLDBCQUEwQiw0RUFBZSxhQUFhLHNEQUFFLHNDQUFzQyw0RUFBZSxhQUFhLHNEQUFFLGNBQWMsNEVBQWUsYUFBYSxzREFBRSxnQkFBZ0IsNEVBQWUsYUFBYSxzREFBRSxrQkFBa0IsNEVBQWUsYUFBYSxzREFBRSxzQkFBc0IsNEVBQWUsYUFBYSxzREFBRSxvQkFBb0IsNEVBQWUsYUFBYSxzREFBRSw0QkFBNEIsNEVBQWUsYUFBYSxzREFBRTtBQUN0aEIsZ0NBQWdDLEVBQUUsNEVBQWUsYUFBYSxzREFBRSwwQkFBMEIsNEVBQWUsYUFBYSxzREFBRSxrQkFBa0IsNEVBQWUsYUFBYSxzREFBRTtBQUN4SyxnQ0FBZ0MsRUFBRSw0RUFBZSxhQUFhLHNEQUFFLHNCQUFzQiw0RUFBZSxhQUFhLHNEQUFFLG9CQUFvQiw0RUFBZSxhQUFhLHNEQUFFLGtDQUFrQyw0RUFBZSxhQUFhLHNEQUFFLGtEQUFrRCw0RUFBZSxhQUFhLHNEQUFFLGtEQUFrRCw0RUFBZSxhQUFhLHNEQUFFO0FBQ3RZLG9DQUFvQyxFQUFFLDRFQUFlLGVBQWUsc0RBQUUsb0JBQW9CLDRFQUFlLGVBQWUsc0RBQUUsMEJBQTBCLDRFQUFlLGVBQWUsc0RBQUU7QUFDcEwsd0NBQXdDLEVBQUUsNEVBQWUsaUJBQWlCLHNEQUFFLGdCQUFnQiw0RUFBZSxpQkFBaUIsc0RBQUU7QUFDOUgsc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLGtCQUFrQiw0RUFBZSxnQkFBZ0Isc0RBQUUsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxnQkFBZ0IsNEVBQWUsZ0JBQWdCLHNEQUFFLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUsc0JBQXNCLDRFQUFlLGdCQUFnQixzREFBRSxvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGtCQUFrQiw0RUFBZSxnQkFBZ0Isc0RBQUU7QUFDdGIsOENBQThDLEVBQUUsNEVBQWUsb0JBQW9CLHNEQUFFLG1CQUFtQiw0RUFBZSxvQkFBb0Isc0RBQUUsa0JBQWtCLDRFQUFlLG9CQUFvQixzREFBRSxrQkFBa0IsNEVBQWUsb0JBQW9CLHNEQUFFLDZCQUE2Qiw0RUFBZSxvQkFBb0Isc0RBQUU7QUFDN1Qsc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsY0FBYyw0RUFBZSxnQkFBZ0Isc0RBQUUsMEJBQTBCLDRFQUFlLGdCQUFnQixzREFBRSw4Q0FBOEMsNEVBQWUsZ0JBQWdCLHNEQUFFLDBCQUEwQiw0RUFBZSxnQkFBZ0Isc0RBQUUsOENBQThDLDRFQUFlLGdCQUFnQixzREFBRSwwQkFBMEIsNEVBQWUsZ0JBQWdCLHNEQUFFLDhDQUE4Qyw0RUFBZSxnQkFBZ0Isc0RBQUUsMEJBQTBCLDRFQUFlLGdCQUFnQixzREFBRSw4Q0FBOEMsNEVBQWUsZ0JBQWdCLHNEQUFFLG9DQUFvQyw0RUFBZSxnQkFBZ0Isc0RBQUUsd0RBQXdELDRFQUFlLGdCQUFnQixzREFBRSxvQ0FBb0MsNEVBQWUsZ0JBQWdCLHNEQUFFLHdEQUF3RCw0RUFBZSxnQkFBZ0Isc0RBQUU7QUFDN2dDLDBDQUEwQyxFQUFFLDRFQUFlLGtCQUFrQixzREFBRSxrQkFBa0IsNEVBQWUsa0JBQWtCLHNEQUFFLG9CQUFvQiw0RUFBZSxrQkFBa0Isc0RBQUUsZ0JBQWdCLDRFQUFlLGtCQUFrQixzREFBRSxvQkFBb0IsNEVBQWUsa0JBQWtCLHNEQUFFLHNCQUFzQiw0RUFBZSxrQkFBa0Isc0RBQUUsb0JBQW9CLDRFQUFlLGtCQUFrQixzREFBRSxrQkFBa0IsNEVBQWUsa0JBQWtCLHNEQUFFO0FBQzFjLHNDQUFzQyxFQUFFLDRFQUFlLGdCQUFnQixzREFBRSxnQkFBZ0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsc0JBQXNCLDRFQUFlLGdCQUFnQixzREFBRSxvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLHFCQUFxQiw0RUFBZSxnQkFBZ0Isc0RBQUUscUJBQXFCLDRFQUFlLGdCQUFnQixzREFBRSwrQkFBK0IsNEVBQWUsZ0JBQWdCLHNEQUFFO0FBQ25jLG9DQUFvQyxFQUFFLDRFQUFlLGVBQWUsc0RBQUUsa0JBQWtCLDRFQUFlLGVBQWUsc0RBQUU7QUFDL0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL2NvbnN0YW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcblxudmFyIF9wcmltaXRpdmVNYXAsIF91c2FnZU1hcCwgX2RhdGFUeXBlTWFwLCBfZm9ybWF0TWFwLCBfbWlwbWFwTWFwLCBfZmlsdGVyTWFwLCBfd3JhcE1vZGVNYXAsIF9jb2xvclNwYWNlTWFwLCBfZGVwdGhGdW5jTWFwLCBfYmxlbmRFcXVhdGlvbk1hcCwgX2JsZW5kRnVuY01hcCwgX3N0ZW5jaWxGdW5jTWFwLCBfc3RlbmNpbE9wTWFwLCBfY3VsbEZhY2VNYXA7XG5cbi8qKlxuICogQGRlc2Mg55Sx5LqOIHJlZ2wg5L2/55So5aSn6YeP5a2X56ym5Liy6ICM6Z2eIFdlYkdMIOW4uOmHj++8jOWboOatpOmcgOimgeaYoOWwhFxuICovXG5pbXBvcnQgeyBnbCB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9saWIvY29uc3RhbnRzL3ByaW1pdGl2ZXMuanNvblxuZXhwb3J0IHZhciBwcmltaXRpdmVNYXAgPSAoX3ByaW1pdGl2ZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuUE9JTlRTLCAncG9pbnRzJyksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5MSU5FUywgJ2xpbmVzJyksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5MSU5FX0xPT1AsICdsaW5lIGxvb3AnKSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLkxJTkVfU1RSSVAsICdsaW5lIHN0cmlwJyksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5UUklBTkdMRVMsICd0cmlhbmdsZXMnKSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlRSSUFOR0xFX0ZBTiwgJ3RyaWFuZ2xlIGZhbicpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuVFJJQU5HTEVfU1RSSVAsICd0cmlhbmdsZSBzdHJpcCcpLCBfcHJpbWl0aXZlTWFwKTtcbmV4cG9ydCB2YXIgdXNhZ2VNYXAgPSAoX3VzYWdlTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfdXNhZ2VNYXAsIGdsLlNUQVRJQ19EUkFXLCAnc3RhdGljJyksIF9kZWZpbmVQcm9wZXJ0eShfdXNhZ2VNYXAsIGdsLkRZTkFNSUNfRFJBVywgJ2R5bmFtaWMnKSwgX2RlZmluZVByb3BlcnR5KF91c2FnZU1hcCwgZ2wuU1RSRUFNX0RSQVcsICdzdHJlYW0nKSwgX3VzYWdlTWFwKTtcbmV4cG9ydCB2YXIgZGF0YVR5cGVNYXAgPSAoX2RhdGFUeXBlTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfZGF0YVR5cGVNYXAsIGdsLkJZVEUsICdpbnQ4JyksIF9kZWZpbmVQcm9wZXJ0eShfZGF0YVR5cGVNYXAsIGdsLlVOU0lHTkVEX0lOVCwgJ2ludDE2JyksIF9kZWZpbmVQcm9wZXJ0eShfZGF0YVR5cGVNYXAsIGdsLklOVCwgJ2ludDMyJyksIF9kZWZpbmVQcm9wZXJ0eShfZGF0YVR5cGVNYXAsIGdsLlVOU0lHTkVEX0JZVEUsICd1aW50OCcpLCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5VTlNJR05FRF9TSE9SVCwgJ3VpbnQxNicpLCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5VTlNJR05FRF9JTlQsICd1aW50MzInKSwgX2RlZmluZVByb3BlcnR5KF9kYXRhVHlwZU1hcCwgZ2wuRkxPQVQsICdmbG9hdCcpLCBfZGF0YVR5cGVNYXApO1xuZXhwb3J0IHZhciBmb3JtYXRNYXAgPSAoX2Zvcm1hdE1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuQUxQSEEsICdhbHBoYScpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuTFVNSU5BTkNFLCAnbHVtaW5hbmNlJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5MVU1JTkFOQ0VfQUxQSEEsICdsdW1pbmFuY2UgYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLlJHQiwgJ3JnYicpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuUkdCQSwgJ3JnYmEnKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLlJHQkE0LCAncmdiYTQnKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLlJHQjVfQTEsICdyZ2I1IGExJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5SR0I1NjUsICdyZ2I1NjUnKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgJ2RlcHRoJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5ERVBUSF9TVEVOQ0lMLCAnZGVwdGggc3RlbmNpbCcpLCBfZm9ybWF0TWFwKTtcbmV4cG9ydCB2YXIgbWlwbWFwTWFwID0gKF9taXBtYXBNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9taXBtYXBNYXAsIGdsLkRPTlRfQ0FSRSwgJ2RvbnQgY2FyZScpLCBfZGVmaW5lUHJvcGVydHkoX21pcG1hcE1hcCwgZ2wuTklDRVNULCAnbmljZScpLCBfZGVmaW5lUHJvcGVydHkoX21pcG1hcE1hcCwgZ2wuRkFTVEVTVCwgJ2Zhc3QnKSwgX21pcG1hcE1hcCk7XG5leHBvcnQgdmFyIGZpbHRlck1hcCA9IChfZmlsdGVyTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5ORUFSRVNULCAnbmVhcmVzdCcpLCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTElORUFSLCAnbGluZWFyJyksIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5MSU5FQVJfTUlQTUFQX0xJTkVBUiwgJ21pcG1hcCcpLCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTkVBUkVTVF9NSVBNQVBfTElORUFSLCAnbmVhcmVzdCBtaXBtYXAgbGluZWFyJyksIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5MSU5FQVJfTUlQTUFQX05FQVJFU1QsICdsaW5lYXIgbWlwbWFwIG5lYXJlc3QnKSwgX2RlZmluZVByb3BlcnR5KF9maWx0ZXJNYXAsIGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsICduZWFyZXN0IG1pcG1hcCBuZWFyZXN0JyksIF9maWx0ZXJNYXApO1xuZXhwb3J0IHZhciB3cmFwTW9kZU1hcCA9IChfd3JhcE1vZGVNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF93cmFwTW9kZU1hcCwgZ2wuUkVQRUFULCAncmVwZWF0JyksIF9kZWZpbmVQcm9wZXJ0eShfd3JhcE1vZGVNYXAsIGdsLkNMQU1QX1RPX0VER0UsICdjbGFtcCcpLCBfZGVmaW5lUHJvcGVydHkoX3dyYXBNb2RlTWFwLCBnbC5NSVJST1JFRF9SRVBFQVQsICdtaXJyb3InKSwgX3dyYXBNb2RlTWFwKTtcbmV4cG9ydCB2YXIgY29sb3JTcGFjZU1hcCA9IChfY29sb3JTcGFjZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NvbG9yU3BhY2VNYXAsIGdsLk5PTkUsICdub25lJyksIF9kZWZpbmVQcm9wZXJ0eShfY29sb3JTcGFjZU1hcCwgZ2wuQlJPV1NFUl9ERUZBVUxUX1dFQkdMLCAnYnJvd3NlcicpLCBfY29sb3JTcGFjZU1hcCk7XG5leHBvcnQgdmFyIGRlcHRoRnVuY01hcCA9IChfZGVwdGhGdW5jTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5ORVZFUiwgJ25ldmVyJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5BTFdBWVMsICdhbHdheXMnKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkxFU1MsICdsZXNzJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5MRVFVQUwsICdsZXF1YWwnKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkdSRUFURVIsICdncmVhdGVyJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5HRVFVQUwsICdnZXF1YWwnKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkVRVUFMLCAnZXF1YWwnKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLk5PVEVRVUFMLCAnbm90ZXF1YWwnKSwgX2RlcHRoRnVuY01hcCk7XG5leHBvcnQgdmFyIGJsZW5kRXF1YXRpb25NYXAgPSAoX2JsZW5kRXF1YXRpb25NYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5GVU5DX0FERCwgJ2FkZCcpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLk1JTl9FWFQsICdtaW4nKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5NQVhfRVhULCAnbWF4JyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuRlVOQ19TVUJUUkFDVCwgJ3N1YnRyYWN0JyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuRlVOQ19SRVZFUlNFX1NVQlRSQUNULCAncmV2ZXJzZSBzdWJ0cmFjdCcpLCBfYmxlbmRFcXVhdGlvbk1hcCk7XG5leHBvcnQgdmFyIGJsZW5kRnVuY01hcCA9IChfYmxlbmRGdW5jTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5aRVJPLCAnemVybycpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuT05FLCAnb25lJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5TUkNfQ09MT1IsICdzcmMgY29sb3InKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19TUkNfQ09MT1IsICdvbmUgbWludXMgc3JjIGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5TUkNfQUxQSEEsICdzcmMgYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEsICdvbmUgbWludXMgc3JjIGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5EU1RfQ09MT1IsICdkc3QgY29sb3InKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19EU1RfQ09MT1IsICdvbmUgbWludXMgZHN0IGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5EU1RfQUxQSEEsICdkc3QgYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19EU1RfQUxQSEEsICdvbmUgbWludXMgZHN0IGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5DT05TVEFOVF9DT0xPUiwgJ2NvbnN0YW50IGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IsICdvbmUgbWludXMgY29uc3RhbnQgY29sb3InKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLkNPTlNUQU5UX0FMUEhBLCAnY29uc3RhbnQgYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSwgJ29uZSBtaW51cyBjb25zdGFudCBhbHBoYScpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuU1JDX0FMUEhBX1NBVFVSQVRFLCAnc3JjIGFscGhhIHNhdHVyYXRlJyksIF9ibGVuZEZ1bmNNYXApO1xuZXhwb3J0IHZhciBzdGVuY2lsRnVuY01hcCA9IChfc3RlbmNpbEZ1bmNNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsRnVuY01hcCwgZ2wuTkVWRVIsICduZXZlcicpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxGdW5jTWFwLCBnbC5BTFdBWVMsICdhbHdheXMnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsRnVuY01hcCwgZ2wuTEVTUywgJ2xlc3MnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsRnVuY01hcCwgZ2wuTEVRVUFMLCAnbGVxdWFsJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLkdSRUFURVIsICdncmVhdGVyJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLkdFUVVBTCwgJ2dlcXVhbCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxGdW5jTWFwLCBnbC5FUVVBTCwgJ2VxdWFsJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLk5PVEVRVUFMLCAnbm90ZXF1YWwnKSwgX3N0ZW5jaWxGdW5jTWFwKTtcbmV4cG9ydCB2YXIgc3RlbmNpbE9wTWFwID0gKF9zdGVuY2lsT3BNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLlpFUk8sICd6ZXJvJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbE9wTWFwLCBnbC5LRUVQLCAna2VlcCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxPcE1hcCwgZ2wuUkVQTEFDRSwgJ3JlcGxhY2UnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLklOVkVSVCwgJ2ludmVydCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxPcE1hcCwgZ2wuSU5DUiwgJ2luY3JlbWVudCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxPcE1hcCwgZ2wuREVDUiwgJ2RlY3JlbWVudCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxPcE1hcCwgZ2wuSU5DUl9XUkFQLCAnaW5jcmVtZW50IHdyYXAnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLkRFQ1JfV1JBUCwgJ2RlY3JlbWVudCB3cmFwJyksIF9zdGVuY2lsT3BNYXApO1xuZXhwb3J0IHZhciBjdWxsRmFjZU1hcCA9IChfY3VsbEZhY2VNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jdWxsRmFjZU1hcCwgZ2wuRlJPTlQsICdmcm9udCcpLCBfZGVmaW5lUHJvcGVydHkoX2N1bGxGYWNlTWFwLCBnbC5CQUNLLCAnYmFjaycpLCBfY3VsbEZhY2VNYXApO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/constants.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgl/index.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgl/index.js ***! \**************************************************************/ /*! exports provided: WebGLEngine */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebGLEngine\", function() { return WebGLEngine; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var regl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! regl */ \"./node_modules/regl/dist/regl.js\");\n/* harmony import */ var regl__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(regl__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _ReglAttribute__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ReglAttribute */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglAttribute.js\");\n/* harmony import */ var _ReglBuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ReglBuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglBuffer.js\");\n/* harmony import */ var _ReglComputeModel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ReglComputeModel */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js\");\n/* harmony import */ var _ReglElements__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ReglElements */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglElements.js\");\n/* harmony import */ var _ReglFramebuffer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ReglFramebuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js\");\n/* harmony import */ var _ReglModel__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ReglModel */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglModel.js\");\n/* harmony import */ var _ReglTexture2D__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ReglTexture2D */ \"./node_modules/@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js\");\n\n\n\n\n\nvar _dec, _class, _temp;\n\n/**\n * render w/ regl\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md\n */\n\n\n\n\n\n\n\n\n\n\n/**\n * regl renderer\n */\n\nvar WebGLEngine = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function WebGLEngine() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, WebGLEngine);\n\n this.supportWebGPU = false;\n this.useWGSL = false;\n this.$canvas = void 0;\n this.gl = void 0;\n this.inited = void 0;\n\n this.createModel = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(options) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!options.uniforms) {\n _context2.next = 3;\n break;\n }\n\n _context2.next = 3;\n return Promise.all(Object.keys(options.uniforms).map( /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(name) {\n var texture;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(options.uniforms[name] && options.uniforms[name].load !== undefined)) {\n _context.next = 5;\n break;\n }\n\n _context.next = 3;\n return options.uniforms[name].load();\n\n case 3:\n texture = _context.sent;\n // @ts-ignore\n options.uniforms[name] = texture;\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }()));\n\n case 3:\n return _context2.abrupt(\"return\", new _ReglModel__WEBPACK_IMPORTED_MODULE_12__[\"default\"](_this.gl, options));\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.createAttribute = function (options) {\n return new _ReglAttribute__WEBPACK_IMPORTED_MODULE_7__[\"default\"](_this.gl, options);\n };\n\n this.createBuffer = function (options) {\n return new _ReglBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.gl, options);\n };\n\n this.createElements = function (options) {\n return new _ReglElements__WEBPACK_IMPORTED_MODULE_10__[\"default\"](_this.gl, options);\n };\n\n this.createTexture2D = function (options) {\n return new _ReglTexture2D__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this.gl, options);\n };\n\n this.createFramebuffer = function (options) {\n return new _ReglFramebuffer__WEBPACK_IMPORTED_MODULE_11__[\"default\"](_this.gl, options);\n };\n\n this.useFramebuffer = function (framebuffer, drawCommands) {\n _this.gl({\n framebuffer: framebuffer ? framebuffer.get() : null\n })(drawCommands);\n };\n\n this.createComputeModel = /*#__PURE__*/function () {\n var _ref3 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(context) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", new _ReglComputeModel__WEBPACK_IMPORTED_MODULE_9__[\"default\"](_this.gl, context));\n\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n return function (_x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n\n this.clear = function (options) {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clear-the-draw-buffer\n var color = options.color,\n depth = options.depth,\n stencil = options.stencil,\n _options$framebuffer = options.framebuffer,\n framebuffer = _options$framebuffer === void 0 ? null : _options$framebuffer;\n var reglClearOptions = {\n color: color,\n depth: depth,\n stencil: stencil\n };\n reglClearOptions.framebuffer = framebuffer === null ? framebuffer : framebuffer.get();\n\n _this.gl.clear(reglClearOptions);\n };\n\n this.setScissor = function (scissor) {\n if (_this.gl && _this.gl._gl) {\n // https://developer.mozilla.org/zh-CN/docs/Web/API/WebGLRenderingContext/scissor\n if (scissor.enable && scissor.box) {\n // console.log(scissor.box);\n _this.gl._gl.enable(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SCISSOR_TEST);\n\n _this.gl._gl.scissor(scissor.box.x, scissor.box.y, scissor.box.width, scissor.box.height);\n } else {\n _this.gl._gl.disable(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SCISSOR_TEST);\n }\n\n _this.gl._refresh();\n }\n };\n\n this.viewport = function (_ref4) {\n var x = _ref4.x,\n y = _ref4.y,\n width = _ref4.width,\n height = _ref4.height;\n\n if (_this.gl && _this.gl._gl) {\n // use WebGL context directly\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#unsafe-escape-hatch\n _this.gl._gl.viewport(x, y, width, height);\n\n _this.gl._refresh();\n }\n };\n\n this.readPixels = function (options) {\n var framebuffer = options.framebuffer,\n x = options.x,\n y = options.y,\n width = options.width,\n height = options.height;\n var readPixelsOptions = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n\n if (framebuffer) {\n readPixelsOptions.framebuffer = framebuffer.get();\n }\n\n return _this.gl.read(readPixelsOptions);\n };\n\n this.getCanvas = function () {\n return _this.$canvas;\n };\n\n this.getGLContext = function () {\n return _this.gl._gl;\n };\n\n this.destroy = function () {\n if (_this.gl) {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clean-up\n _this.gl.destroy();\n\n _this.inited = false;\n }\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(WebGLEngine, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(cfg) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!this.inited) {\n _context4.next = 2;\n break;\n }\n\n return _context4.abrupt(\"return\");\n\n case 2:\n this.$canvas = cfg.canvas; // tslint:disable-next-line:typedef\n\n _context4.next = 5;\n return new Promise(function (resolve, reject) {\n regl__WEBPACK_IMPORTED_MODULE_6___default()({\n canvas: cfg.canvas,\n attributes: {\n alpha: true,\n // use TAA instead of MSAA\n // @see https://www.khronos.org/registry/webgl/specs/1.0/#5.2.1\n antialias: cfg.antialias,\n premultipliedAlpha: true // preserveDrawingBuffer: false,\n\n },\n pixelRatio: 1,\n // TODO: use extensions\n extensions: ['OES_element_index_uint', 'OES_texture_float', 'OES_standard_derivatives', // wireframe\n 'angle_instanced_arrays' // VSM shadow map\n ],\n optionalExtensions: ['EXT_texture_filter_anisotropic', 'EXT_blend_minmax', 'WEBGL_depth_texture'],\n profile: true,\n onDone: function onDone(err, r) {\n if (err || !r) {\n reject(err);\n } // @ts-ignore\n\n\n resolve(r);\n }\n });\n });\n\n case 5:\n this.gl = _context4.sent;\n this.inited = true;\n\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function init(_x4) {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"isFloatSupported\",\n value: function isFloatSupported() {\n // @see https://github.com/antvis/GWebGPUEngine/issues/26\n // @ts-ignore\n return this.gl.limits.readFloat;\n }\n }, {\n key: \"beginFrame\",\n value: function beginFrame() {//\n }\n }, {\n key: \"endFrame\",\n value: function endFrame() {//\n }\n }]);\n\n return WebGLEngine;\n}(), _temp)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL2luZGV4LmpzP2ZjOTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUNKO0FBQ047O0FBRTlEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ0Y7QUFDZjtBQUNvQjtBQUNOO0FBQ1k7QUFDUjtBQUNNO0FBQ1o7QUFDUTtBQUM1QztBQUNBO0FBQ0E7O0FBRU8sMEJBQTBCLDREQUFVO0FBQzNDO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDcEUsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhCQUE4Qiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDakY7QUFDQSwyQkFBMkIsaUVBQW1CO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixtQkFBbUI7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQSxzREFBc0QsbURBQVM7O0FBRS9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsaUJBQWlCLHNEQUFhO0FBQzlCOztBQUVBO0FBQ0EsaUJBQWlCLG1EQUFVO0FBQzNCOztBQUVBO0FBQ0EsaUJBQWlCLHNEQUFZO0FBQzdCOztBQUVBO0FBQ0EsaUJBQWlCLHVEQUFhO0FBQzlCOztBQUVBO0FBQ0EsaUJBQWlCLHlEQUFlO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBLGtCQUFrQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDckUsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELHlEQUFnQjs7QUFFdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLHNEQUFFOztBQUVoQztBQUNBLFNBQVM7QUFDVCwrQkFBK0Isc0RBQUU7QUFDakM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBLGtCQUFrQiwyQ0FBSTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7OztBQUd2QjtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGtDQUFrQztBQUNsQztBQUNBLEdBQUc7QUFDSDtBQUNBLGdDQUFnQztBQUNoQztBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuLyoqXG4gKiByZW5kZXIgdy8gcmVnbFxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWRcbiAqL1xuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHJlZ2wgZnJvbSAncmVnbCc7XG5pbXBvcnQgUmVnbEF0dHJpYnV0ZSBmcm9tICcuL1JlZ2xBdHRyaWJ1dGUnO1xuaW1wb3J0IFJlZ2xCdWZmZXIgZnJvbSAnLi9SZWdsQnVmZmVyJztcbmltcG9ydCBSZWdsQ29tcHV0ZU1vZGVsIGZyb20gJy4vUmVnbENvbXB1dGVNb2RlbCc7XG5pbXBvcnQgUmVnbEVsZW1lbnRzIGZyb20gJy4vUmVnbEVsZW1lbnRzJztcbmltcG9ydCBSZWdsRnJhbWVidWZmZXIgZnJvbSAnLi9SZWdsRnJhbWVidWZmZXInO1xuaW1wb3J0IFJlZ2xNb2RlbCBmcm9tICcuL1JlZ2xNb2RlbCc7XG5pbXBvcnQgUmVnbFRleHR1cmUyRCBmcm9tICcuL1JlZ2xUZXh0dXJlMkQnO1xuLyoqXG4gKiByZWdsIHJlbmRlcmVyXG4gKi9cblxuZXhwb3J0IHZhciBXZWJHTEVuZ2luZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdMRW5naW5lKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR0xFbmdpbmUpO1xuXG4gICAgdGhpcy5zdXBwb3J0V2ViR1BVID0gZmFsc2U7XG4gICAgdGhpcy51c2VXR1NMID0gZmFsc2U7XG4gICAgdGhpcy4kY2FudmFzID0gdm9pZCAwO1xuICAgIHRoaXMuZ2wgPSB2b2lkIDA7XG4gICAgdGhpcy5pbml0ZWQgPSB2b2lkIDA7XG5cbiAgICB0aGlzLmNyZWF0ZU1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMudW5pZm9ybXMpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoT2JqZWN0LmtleXMob3B0aW9ucy51bmlmb3JtcykubWFwKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0dXJlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG9wdGlvbnMudW5pZm9ybXNbbmFtZV0gJiYgb3B0aW9ucy51bmlmb3Jtc1tuYW1lXS5sb2FkICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnVuaWZvcm1zW25hbWVdLmxvYWQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSA9IF9jb250ZXh0LnNlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudW5pZm9ybXNbbmFtZV0gPSB0ZXh0dXJlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBfY2FsbGVlKTtcbiAgICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0oKSkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiLCBuZXcgUmVnbE1vZGVsKF90aGlzLmdsLCBvcHRpb25zKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMik7XG4gICAgICB9KSk7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgdGhpcy5jcmVhdGVBdHRyaWJ1dGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBSZWdsQXR0cmlidXRlKF90aGlzLmdsLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVCdWZmZXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBSZWdsQnVmZmVyKF90aGlzLmdsLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVFbGVtZW50cyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFJlZ2xFbGVtZW50cyhfdGhpcy5nbCwgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlVGV4dHVyZTJEID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnbFRleHR1cmUyRChfdGhpcy5nbCwgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlRnJhbWVidWZmZXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBSZWdsRnJhbWVidWZmZXIoX3RoaXMuZ2wsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLnVzZUZyYW1lYnVmZmVyID0gZnVuY3Rpb24gKGZyYW1lYnVmZmVyLCBkcmF3Q29tbWFuZHMpIHtcbiAgICAgIF90aGlzLmdsKHtcbiAgICAgICAgZnJhbWVidWZmZXI6IGZyYW1lYnVmZmVyID8gZnJhbWVidWZmZXIuZ2V0KCkgOiBudWxsXG4gICAgICB9KShkcmF3Q29tbWFuZHMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZUNvbXB1dGVNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjMgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMyhjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0Mykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuYWJydXB0KFwicmV0dXJuXCIsIG5ldyBSZWdsQ29tcHV0ZU1vZGVsKF90aGlzLmdsLCBjb250ZXh0KSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMyk7XG4gICAgICB9KSk7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gzKSB7XG4gICAgICAgIHJldHVybiBfcmVmMy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG5cbiAgICB0aGlzLmNsZWFyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI2NsZWFyLXRoZS1kcmF3LWJ1ZmZlclxuICAgICAgdmFyIGNvbG9yID0gb3B0aW9ucy5jb2xvcixcbiAgICAgICAgICBkZXB0aCA9IG9wdGlvbnMuZGVwdGgsXG4gICAgICAgICAgc3RlbmNpbCA9IG9wdGlvbnMuc3RlbmNpbCxcbiAgICAgICAgICBfb3B0aW9ucyRmcmFtZWJ1ZmZlciA9IG9wdGlvbnMuZnJhbWVidWZmZXIsXG4gICAgICAgICAgZnJhbWVidWZmZXIgPSBfb3B0aW9ucyRmcmFtZWJ1ZmZlciA9PT0gdm9pZCAwID8gbnVsbCA6IF9vcHRpb25zJGZyYW1lYnVmZmVyO1xuICAgICAgdmFyIHJlZ2xDbGVhck9wdGlvbnMgPSB7XG4gICAgICAgIGNvbG9yOiBjb2xvcixcbiAgICAgICAgZGVwdGg6IGRlcHRoLFxuICAgICAgICBzdGVuY2lsOiBzdGVuY2lsXG4gICAgICB9O1xuICAgICAgcmVnbENsZWFyT3B0aW9ucy5mcmFtZWJ1ZmZlciA9IGZyYW1lYnVmZmVyID09PSBudWxsID8gZnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlci5nZXQoKTtcblxuICAgICAgX3RoaXMuZ2wuY2xlYXIocmVnbENsZWFyT3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuc2V0U2Npc3NvciA9IGZ1bmN0aW9uIChzY2lzc29yKSB7XG4gICAgICBpZiAoX3RoaXMuZ2wgJiYgX3RoaXMuZ2wuX2dsKSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL3poLUNOL2RvY3MvV2ViL0FQSS9XZWJHTFJlbmRlcmluZ0NvbnRleHQvc2Npc3NvclxuICAgICAgICBpZiAoc2Npc3Nvci5lbmFibGUgJiYgc2Npc3Nvci5ib3gpIHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhzY2lzc29yLmJveCk7XG4gICAgICAgICAgX3RoaXMuZ2wuX2dsLmVuYWJsZShnbC5TQ0lTU09SX1RFU1QpO1xuXG4gICAgICAgICAgX3RoaXMuZ2wuX2dsLnNjaXNzb3Ioc2Npc3Nvci5ib3gueCwgc2Npc3Nvci5ib3gueSwgc2Npc3Nvci5ib3gud2lkdGgsIHNjaXNzb3IuYm94LmhlaWdodCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuZ2wuX2dsLmRpc2FibGUoZ2wuU0NJU1NPUl9URVNUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLmdsLl9yZWZyZXNoKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMudmlld3BvcnQgPSBmdW5jdGlvbiAoX3JlZjQpIHtcbiAgICAgIHZhciB4ID0gX3JlZjQueCxcbiAgICAgICAgICB5ID0gX3JlZjQueSxcbiAgICAgICAgICB3aWR0aCA9IF9yZWY0LndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF9yZWY0LmhlaWdodDtcblxuICAgICAgaWYgKF90aGlzLmdsICYmIF90aGlzLmdsLl9nbCkge1xuICAgICAgICAvLyB1c2UgV2ViR0wgY29udGV4dCBkaXJlY3RseVxuICAgICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCN1bnNhZmUtZXNjYXBlLWhhdGNoXG4gICAgICAgIF90aGlzLmdsLl9nbC52aWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgICAgICBfdGhpcy5nbC5fcmVmcmVzaCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnJlYWRQaXhlbHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIGZyYW1lYnVmZmVyID0gb3B0aW9ucy5mcmFtZWJ1ZmZlcixcbiAgICAgICAgICB4ID0gb3B0aW9ucy54LFxuICAgICAgICAgIHkgPSBvcHRpb25zLnksXG4gICAgICAgICAgd2lkdGggPSBvcHRpb25zLndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0O1xuICAgICAgdmFyIHJlYWRQaXhlbHNPcHRpb25zID0ge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9O1xuXG4gICAgICBpZiAoZnJhbWVidWZmZXIpIHtcbiAgICAgICAgcmVhZFBpeGVsc09wdGlvbnMuZnJhbWVidWZmZXIgPSBmcmFtZWJ1ZmZlci5nZXQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF90aGlzLmdsLnJlYWQocmVhZFBpeGVsc09wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmdldENhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy4kY2FudmFzO1xuICAgIH07XG5cbiAgICB0aGlzLmdldEdMQ29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5nbC5fZ2w7XG4gICAgfTtcblxuICAgIHRoaXMuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5nbCkge1xuICAgICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNjbGVhbi11cFxuICAgICAgICBfdGhpcy5nbC5kZXN0cm95KCk7XG5cbiAgICAgICAgX3RoaXMuaW5pdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJHTEVuZ2luZSwgW3tcbiAgICBrZXk6IFwiaW5pdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlNChjZmcpIHtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRlZCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAyO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cbiAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIHRoaXMuJGNhbnZhcyA9IGNmZy5jYW52YXM7IC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp0eXBlZGVmXG5cbiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICAgIHJlZ2woe1xuICAgICAgICAgICAgICAgICAgICBjYW52YXM6IGNmZy5jYW52YXMsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBhbHBoYTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgVEFBIGluc3RlYWQgb2YgTVNBQVxuICAgICAgICAgICAgICAgICAgICAgIC8vIEBzZWUgaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wvc3BlY3MvMS4wLyM1LjIuMVxuICAgICAgICAgICAgICAgICAgICAgIGFudGlhbGlhczogY2ZnLmFudGlhbGlhcyxcbiAgICAgICAgICAgICAgICAgICAgICBwcmVtdWx0aXBsaWVkQWxwaGE6IHRydWUgLy8gcHJlc2VydmVEcmF3aW5nQnVmZmVyOiBmYWxzZSxcblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwaXhlbFJhdGlvOiAxLFxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiB1c2UgZXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBbJ09FU19lbGVtZW50X2luZGV4X3VpbnQnLCAnT0VTX3RleHR1cmVfZmxvYXQnLCAnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJywgLy8gd2lyZWZyYW1lXG4gICAgICAgICAgICAgICAgICAgICdhbmdsZV9pbnN0YW5jZWRfYXJyYXlzJyAvLyBWU00gc2hhZG93IG1hcFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEV4dGVuc2lvbnM6IFsnRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljJywgJ0VYVF9ibGVuZF9taW5tYXgnLCAnV0VCR0xfZGVwdGhfdGV4dHVyZSddLFxuICAgICAgICAgICAgICAgICAgICBwcm9maWxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBvbkRvbmU6IGZ1bmN0aW9uIG9uRG9uZShlcnIsIHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyIHx8ICFyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIHRoaXMuZ2wgPSBfY29udGV4dDQuc2VudDtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlNCwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXQoX3g0KSB7XG4gICAgICAgIHJldHVybiBfaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJpc0Zsb2F0U3VwcG9ydGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzRmxvYXRTdXBwb3J0ZWQoKSB7XG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvR1dlYkdQVUVuZ2luZS9pc3N1ZXMvMjZcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiB0aGlzLmdsLmxpbWl0cy5yZWFkRmxvYXQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImJlZ2luRnJhbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmVnaW5GcmFtZSgpIHsvL1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJlbmRGcmFtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmRGcmFtZSgpIHsvL1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHTEVuZ2luZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgl/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js": /*!*************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUAttribute; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nvar WebGPUAttribute = /*#__PURE__*/function () {\n function WebGPUAttribute(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUAttribute);\n\n this.engine = engine;\n this.options = options;\n this.attribute = void 0;\n this.buffer = void 0;\n var _options = options,\n buffer = _options.buffer,\n offset = _options.offset,\n stride = _options.stride,\n normalized = _options.normalized,\n size = _options.size,\n divisor = _options.divisor,\n arrayStride = _options.arrayStride,\n attributes = _options.attributes,\n stepMode = _options.stepMode;\n this.buffer = buffer;\n this.attribute = {\n buffer: buffer.get(),\n offset: offset || 0,\n stride: stride || 0,\n normalized: normalized || false,\n divisor: divisor || 0,\n arrayStride: arrayStride || 0,\n // @ts-ignore\n attributes: attributes,\n stepMode: stepMode || 'vertex'\n };\n\n if (size) {\n this.attribute.size = size;\n }\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUAttribute, [{\n key: \"get\",\n value: function get() {\n return this.attribute;\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return WebGPUAttribute;\n}();\n\n\n//# sourceMappingURL=WebGPUAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVBdHRyaWJ1dGUuanM/YjkzYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRXFDO0FBQ3RDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvV2ViR1BVQXR0cmlidXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgV2ViR1BVQXR0cmlidXRlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gV2ViR1BVQXR0cmlidXRlKGVuZ2luZSwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVBdHRyaWJ1dGUpO1xuXG4gICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLmF0dHJpYnV0ZSA9IHZvaWQgMDtcbiAgICB0aGlzLmJ1ZmZlciA9IHZvaWQgMDtcbiAgICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgICBidWZmZXIgPSBfb3B0aW9ucy5idWZmZXIsXG4gICAgICAgIG9mZnNldCA9IF9vcHRpb25zLm9mZnNldCxcbiAgICAgICAgc3RyaWRlID0gX29wdGlvbnMuc3RyaWRlLFxuICAgICAgICBub3JtYWxpemVkID0gX29wdGlvbnMubm9ybWFsaXplZCxcbiAgICAgICAgc2l6ZSA9IF9vcHRpb25zLnNpemUsXG4gICAgICAgIGRpdmlzb3IgPSBfb3B0aW9ucy5kaXZpc29yLFxuICAgICAgICBhcnJheVN0cmlkZSA9IF9vcHRpb25zLmFycmF5U3RyaWRlLFxuICAgICAgICBhdHRyaWJ1dGVzID0gX29wdGlvbnMuYXR0cmlidXRlcyxcbiAgICAgICAgc3RlcE1vZGUgPSBfb3B0aW9ucy5zdGVwTW9kZTtcbiAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICB0aGlzLmF0dHJpYnV0ZSA9IHtcbiAgICAgIGJ1ZmZlcjogYnVmZmVyLmdldCgpLFxuICAgICAgb2Zmc2V0OiBvZmZzZXQgfHwgMCxcbiAgICAgIHN0cmlkZTogc3RyaWRlIHx8IDAsXG4gICAgICBub3JtYWxpemVkOiBub3JtYWxpemVkIHx8IGZhbHNlLFxuICAgICAgZGl2aXNvcjogZGl2aXNvciB8fCAwLFxuICAgICAgYXJyYXlTdHJpZGU6IGFycmF5U3RyaWRlIHx8IDAsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLFxuICAgICAgc3RlcE1vZGU6IHN0ZXBNb2RlIHx8ICd2ZXJ0ZXgnXG4gICAgfTtcblxuICAgIGlmIChzaXplKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZS5zaXplID0gc2l6ZTtcbiAgICB9XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR1BVQXR0cmlidXRlLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVCdWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlQnVmZmVyKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuYnVmZmVyLnN1YkRhdGEob3B0aW9ucyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMuYnVmZmVyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2ViR1BVQXR0cmlidXRlO1xufSgpO1xuXG5leHBvcnQgeyBXZWJHUFVBdHRyaWJ1dGUgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V2ViR1BVQXR0cmlidXRlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js": /*!**********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUBuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\nvar WebGPUBuffer = /*#__PURE__*/function () {\n function WebGPUBuffer(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUBuffer);\n\n this.engine = engine;\n this.options = options;\n this.buffer = void 0;\n var _options = options,\n data = _options.data,\n usage = _options.usage,\n type = _options.type;\n this.buffer = this.createBuffer(data instanceof Array ? new Float32Array(data) : data, // TODO: WebGL 和 WebGPU buffer usage 映射关系\n usage || _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"BufferUsage\"].Vertex | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"BufferUsage\"].CopyDst);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUBuffer, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data,\n offset = _ref.offset;\n this.setSubData(this.buffer, offset, data instanceof Array ? new Float32Array(data) : data);\n }\n }, {\n key: \"createBuffer\",\n value: function createBuffer(view, flags) {\n // @ts-ignore\n var padding = view.byteLength % 4;\n var verticesBufferDescriptor = {\n // @ts-ignore\n size: view.byteLength + padding,\n usage: flags\n };\n var buffer = this.engine.device.createBuffer(verticesBufferDescriptor);\n this.setSubData(buffer, 0, view);\n return buffer;\n }\n /**\n * 不同于 Babylon.js 的版本,使用最新的 GPUQueue.writeBuffer 方法\n * @see https://gpuweb.github.io/gpuweb/#dom-gpuqueue-writebuffer\n * 已废弃创建一个临时的 mapped buffer 用于拷贝数据 @see https://gpuweb.github.io/gpuweb/#GPUDevice-createBufferMapped\n * @see https://github.com/gpuweb/gpuweb/blob/master/design/BufferOperations.md#updating-data-to-an-existing-buffer-like-webgls-buffersubdata\n */\n\n }, {\n key: \"setSubData\",\n value: function setSubData(destBuffer, destOffset, srcArrayBuffer) {\n // deprecated API setSubData\n // destBuffer.setSubData(0, srcArrayBuffer);\n // deprecated API createBufferMapped\n // use createBuffer & getMappedRange instead\n // const [srcBuffer, arrayBuffer] = this.engine.device.createBufferMapped({\n // size: byteCount,\n // usage: WebGPUConstants.BufferUsage.CopySrc,\n // });\n var queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue; // @ts-ignore\n\n queue.writeBuffer(destBuffer, destOffset, srcArrayBuffer);\n }\n }]);\n\n return WebGPUBuffer;\n}();\n\n\n//# sourceMappingURL=WebGPUBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVCdWZmZXIuanM/ZDUwNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNmO0FBQ2lCOztBQUVoRTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsd0VBQTJCLFVBQVUsd0VBQTJCO0FBQzdFOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixrQkFBa0IsNERBQVE7QUFDMUIsc0VBQXNFOztBQUV0RTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRWtDO0FBQ25DIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvV2ViR1BVQnVmZmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcblxudmFyIFdlYkdQVUJ1ZmZlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdQVUJ1ZmZlcihlbmdpbmUsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR1BVQnVmZmVyKTtcblxuICAgIHRoaXMuZW5naW5lID0gZW5naW5lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5idWZmZXIgPSB2b2lkIDA7XG4gICAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgICAgZGF0YSA9IF9vcHRpb25zLmRhdGEsXG4gICAgICAgIHVzYWdlID0gX29wdGlvbnMudXNhZ2UsXG4gICAgICAgIHR5cGUgPSBfb3B0aW9ucy50eXBlO1xuICAgIHRoaXMuYnVmZmVyID0gdGhpcy5jcmVhdGVCdWZmZXIoZGF0YSBpbnN0YW5jZW9mIEFycmF5ID8gbmV3IEZsb2F0MzJBcnJheShkYXRhKSA6IGRhdGEsIC8vIFRPRE86IFdlYkdMIOWSjCBXZWJHUFUgYnVmZmVyIHVzYWdlIOaYoOWwhOWFs+ezu1xuICAgIHVzYWdlIHx8IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5WZXJ0ZXggfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR1BVQnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5kZXN0cm95KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN1YkRhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3ViRGF0YShfcmVmKSB7XG4gICAgICB2YXIgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgICBvZmZzZXQgPSBfcmVmLm9mZnNldDtcbiAgICAgIHRoaXMuc2V0U3ViRGF0YSh0aGlzLmJ1ZmZlciwgb2Zmc2V0LCBkYXRhIGluc3RhbmNlb2YgQXJyYXkgPyBuZXcgRmxvYXQzMkFycmF5KGRhdGEpIDogZGF0YSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZUJ1ZmZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVCdWZmZXIodmlldywgZmxhZ3MpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHZhciBwYWRkaW5nID0gdmlldy5ieXRlTGVuZ3RoICUgNDtcbiAgICAgIHZhciB2ZXJ0aWNlc0J1ZmZlckRlc2NyaXB0b3IgPSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2l6ZTogdmlldy5ieXRlTGVuZ3RoICsgcGFkZGluZyxcbiAgICAgICAgdXNhZ2U6IGZsYWdzXG4gICAgICB9O1xuICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVCdWZmZXIodmVydGljZXNCdWZmZXJEZXNjcmlwdG9yKTtcbiAgICAgIHRoaXMuc2V0U3ViRGF0YShidWZmZXIsIDAsIHZpZXcpO1xuICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5LiN5ZCM5LqOIEJhYnlsb24uanMg55qE54mI5pys77yM5L2/55So5pyA5paw55qEIEdQVVF1ZXVlLndyaXRlQnVmZmVyIOaWueazlVxuICAgICAqIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdXF1ZXVlLXdyaXRlYnVmZmVyXG4gICAgICog5bey5bqf5byD5Yib5bu65LiA5Liq5Li05pe255qEIG1hcHBlZCBidWZmZXIg55So5LqO5ou36LSd5pWw5o2uIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jR1BVRGV2aWNlLWNyZWF0ZUJ1ZmZlck1hcHBlZFxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL0J1ZmZlck9wZXJhdGlvbnMubWQjdXBkYXRpbmctZGF0YS10by1hbi1leGlzdGluZy1idWZmZXItbGlrZS13ZWJnbHMtYnVmZmVyc3ViZGF0YVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0U3ViRGF0YVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRTdWJEYXRhKGRlc3RCdWZmZXIsIGRlc3RPZmZzZXQsIHNyY0FycmF5QnVmZmVyKSB7XG4gICAgICAvLyBkZXByZWNhdGVkIEFQSSBzZXRTdWJEYXRhXG4gICAgICAvLyBkZXN0QnVmZmVyLnNldFN1YkRhdGEoMCwgc3JjQXJyYXlCdWZmZXIpO1xuICAgICAgLy8gZGVwcmVjYXRlZCBBUEkgY3JlYXRlQnVmZmVyTWFwcGVkXG4gICAgICAvLyB1c2UgY3JlYXRlQnVmZmVyICYgZ2V0TWFwcGVkUmFuZ2UgaW5zdGVhZFxuICAgICAgLy8gY29uc3QgW3NyY0J1ZmZlciwgYXJyYXlCdWZmZXJdID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJ1ZmZlck1hcHBlZCh7XG4gICAgICAvLyAgIHNpemU6IGJ5dGVDb3VudCxcbiAgICAgIC8vICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Db3B5U3JjLFxuICAgICAgLy8gfSk7XG4gICAgICB2YXIgcXVldWUgPSBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZW5naW5lLmRldmljZS5nZXRRdWV1ZSgpIDogdGhpcy5lbmdpbmUuZGV2aWNlLmRlZmF1bHRRdWV1ZTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICBxdWV1ZS53cml0ZUJ1ZmZlcihkZXN0QnVmZmVyLCBkZXN0T2Zmc2V0LCBzcmNBcnJheUJ1ZmZlcik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYkdQVUJ1ZmZlcjtcbn0oKTtcblxuZXhwb3J0IHsgV2ViR1BVQnVmZmVyIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdlYkdQVUJ1ZmZlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js": /*!****************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUComputeModel; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/is-number */ \"./node_modules/@antv/g-webgpu-engine/es/utils/is-number.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\n\n\n\n\n\nvar WebGPUComputeModel = /*#__PURE__*/function () {\n /**\n * 用于后续渲染时动态更新\n */\n function WebGPUComputeModel(engine, context) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, WebGPUComputeModel);\n\n this.engine = engine;\n this.context = context;\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"createEntity\"])();\n this.uniformGPUBufferLayout = [];\n this.uniformBuffer = void 0;\n this.vertexBuffers = {};\n this.outputBuffer = void 0;\n this.bindGroupEntries = void 0;\n this.bindGroup = void 0;\n this.computePipeline = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(WebGPUComputeModel, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n var _yield$this$compileCo, computeStage, buffers, uniforms, bufferBindingIndex, offset, mergedUniformData;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.compileComputePipelineStageDescriptor(this.context.shader);\n\n case 2:\n _yield$this$compileCo = _context.sent;\n computeStage = _yield$this$compileCo.computeStage;\n buffers = this.context.uniforms.filter(function (uniform) {\n return uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"STORAGE_CLASS\"].StorageBuffer;\n });\n uniforms = this.context.uniforms.filter(function (uniform) {\n return uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"STORAGE_CLASS\"].Uniform;\n });\n bufferBindingIndex = uniforms.length ? 1 : 0;\n this.bindGroupEntries = [];\n\n if (bufferBindingIndex) {\n offset = 0; // FIXME: 所有 uniform 合并成一个 buffer,固定使用 Float32Array 存储,确实会造成一些内存的浪费\n // we use std140 layout @see https://www.khronos.org/opengl/wiki/Interface_Block_(GLSL)\n\n mergedUniformData = [];\n uniforms.forEach(function (uniform) {\n if (Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_7__[\"isNumber\"])(uniform.data)) {\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n\n offset += 4; // @ts-ignore\n\n mergedUniformData.push(uniform.data);\n } else {\n var _uniform$data;\n\n // @ts-ignore\n var originDataLength = ((_uniform$data = uniform.data) === null || _uniform$data === void 0 ? void 0 : _uniform$data.length) || 1;\n\n if (originDataLength === 3) {\n // vec3 -> vec4\n // @see http://ptgmedia.pearsoncmg.com/images/9780321552624/downloads/0321552628_AppL.pdf\n originDataLength = 4; // @ts-ignore\n\n uniform.data.push(0);\n } // 4 elements per block/line\n\n\n var padding = offset / 4 % 4;\n\n if (padding > 0) {\n var space = 4 - padding;\n\n if (originDataLength > 1 && originDataLength <= space) {\n if (originDataLength === 2) {\n if (space === 3) {\n offset += 4;\n mergedUniformData.push(0);\n } // @ts-ignore\n\n\n mergedUniformData.push.apply(mergedUniformData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(uniform.data));\n\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n }\n } else {\n for (var i = 0; i < space; i++) {\n offset += 4;\n mergedUniformData.push(0);\n } // @ts-ignore\n\n\n mergedUniformData.push.apply(mergedUniformData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(uniform.data));\n\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n }\n }\n\n offset += 4 * originDataLength;\n }\n });\n this.uniformBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.engine, {\n // TODO: 处理 Struct 和 boolean\n // @ts-ignore\n data: mergedUniformData instanceof Array ? // @ts-ignore\n new Float32Array(mergedUniformData) : mergedUniformData,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Uniform | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst\n });\n this.bindGroupEntries.push({\n binding: 0,\n resource: {\n buffer: this.uniformBuffer.get()\n }\n });\n } // create GPUBuffers for storeage buffers\n\n\n buffers.forEach(function (buffer) {\n if (buffer.data !== null) {\n if (buffer.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"AST_TOKEN_TYPES\"].Vector4FloatArray || buffer.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"AST_TOKEN_TYPES\"].FloatArray) {\n var gpuBuffer;\n\n if (buffer.name === _this.context.output.name) {\n gpuBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.engine, {\n // @ts-ignore\n data: isFinite(Number(buffer.data)) ? [buffer.data] : buffer.data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Storage | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopySrc\n });\n _this.outputBuffer = gpuBuffer;\n _this.context.output = {\n name: buffer.name,\n // @ts-ignore\n length: isFinite(Number(buffer.data)) ? 1 : buffer.data.length,\n typedArrayConstructor: Float32Array,\n gpuBuffer: gpuBuffer.get()\n };\n } else {\n if (buffer.isReferer) {\n // @ts-ignore\n if (buffer.data.model && buffer.data.model.outputBuffer) {\n // @ts-ignore\n gpuBuffer = buffer.data.model.outputBuffer;\n } else {// referred kernel haven't been executed\n }\n } else {\n gpuBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.engine, {\n // @ts-ignore\n data: isFinite(Number(buffer.data)) ? [buffer.data] : buffer.data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Storage | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopySrc\n });\n }\n } // @ts-ignore\n\n\n _this.vertexBuffers[buffer.name] = gpuBuffer;\n\n _this.bindGroupEntries.push({\n binding: bufferBindingIndex,\n resource: {\n name: buffer.name,\n refer: gpuBuffer ? undefined : buffer.data,\n // @ts-ignore\n buffer: gpuBuffer ? gpuBuffer.get() : undefined\n }\n });\n\n bufferBindingIndex++;\n }\n }\n }); // create compute pipeline layout\n\n this.computePipeline = this.engine.device.createComputePipeline({\n computeStage: computeStage\n });\n console.log(this.bindGroupEntries);\n this.bindGroup = this.engine.device.createBindGroup({\n layout: this.computePipeline.getBindGroupLayout(0),\n entries: this.bindGroupEntries\n });\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n\n if (this.uniformBuffer) {\n this.uniformBuffer.destroy();\n }\n\n Object.keys(this.vertexBuffers).forEach(function (bufferName) {\n return _this2.vertexBuffers[bufferName].destroy();\n });\n }\n }, {\n key: \"readData\",\n value: function () {\n var _readData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var output, length, typedArrayConstructor, gpuBuffer, byteCount, gpuReadBuffer, encoder, queue, arraybuffer, typedArray;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n output = this.context.output;\n\n if (!output) {\n _context2.next = 16;\n break;\n }\n\n length = output.length, typedArrayConstructor = output.typedArrayConstructor, gpuBuffer = output.gpuBuffer;\n\n if (!gpuBuffer) {\n _context2.next = 16;\n break;\n }\n\n // await gpuBuffer.mapAsync(WebGPUConstants.MapMode.Read);\n // const arraybuffer = gpuBuffer.getMappedRange();\n // let arraybuffer;\n // if (isSafari) {\n // arraybuffer = await gpuBuffer.mapReadAsync();\n // } else {\n byteCount = length * typedArrayConstructor.BYTES_PER_ELEMENT; // @see https://developers.google.com/web/updates/2019/08/get-started-with-gpu-compute-on-the-web\n\n gpuReadBuffer = this.engine.device.createBuffer({\n size: byteCount,\n usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ\n });\n encoder = this.engine.device.createCommandEncoder();\n encoder.copyBufferToBuffer(gpuBuffer, 0, gpuReadBuffer, 0, byteCount);\n queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue;\n queue.submit([encoder.finish()]);\n _context2.next = 12;\n return gpuReadBuffer.mapAsync(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"MapMode\"].Read);\n\n case 12:\n arraybuffer = gpuReadBuffer.getMappedRange();\n typedArray = new typedArrayConstructor(arraybuffer.slice(0));\n gpuReadBuffer.unmap();\n return _context2.abrupt(\"return\", typedArray);\n\n case 16:\n return _context2.abrupt(\"return\", new Float32Array());\n\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function readData() {\n return _readData.apply(this, arguments);\n }\n\n return readData;\n }()\n }, {\n key: \"run\",\n value: function run() {\n if (this.engine.currentComputePass) {\n var _this$engine$currentC;\n\n this.engine.currentComputePass.setPipeline(this.computePipeline); // this.bindGroupEntries.forEach((entry) => {\n // if (!entry.resource.buffer) {\n // // get referred kernel's output\n // const gpuBuffer = (entry.resource.refer.model as WebGPUComputeModel)\n // .outputBuffer;\n // this.vertexBuffers[entry.resource.name] = gpuBuffer;\n // entry.resource.buffer = gpuBuffer.get();\n // }\n // });\n // const bindGroup = this.engine.device.createBindGroup({\n // layout: this.computePipeline.getBindGroupLayout(0),\n // entries: this.bindGroupEntries,\n // });\n\n this.engine.currentComputePass.setBindGroup(0, this.bindGroup);\n\n (_this$engine$currentC = this.engine.currentComputePass).dispatch.apply(_this$engine$currentC, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(this.context.dispatch));\n }\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(bufferName, data) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var buffer = this.vertexBuffers[bufferName];\n\n if (buffer) {\n buffer.subData({\n data: data,\n offset: offset\n });\n }\n }\n }, {\n key: \"updateUniform\",\n value: function updateUniform(uniformName, data) {\n var layout = this.uniformGPUBufferLayout.find(function (l) {\n return l.name === uniformName;\n });\n\n if (layout) {\n this.uniformBuffer.subData({\n data: Number.isFinite(data) ? new Float32Array([data]) : new Float32Array(data),\n offset: layout.offset\n });\n }\n }\n }, {\n key: \"confirmInput\",\n value: function confirmInput(model, inputName) {\n // copy output GPUBuffer of kernel\n var inputBuffer = this.vertexBuffers[inputName];\n var outputBuffer = model.outputBuffer;\n\n if (inputBuffer && outputBuffer && inputBuffer !== outputBuffer) {\n var encoder = this.engine.device.createCommandEncoder();\n var _context$output = model.context.output,\n length = _context$output.length,\n typedArrayConstructor = _context$output.typedArrayConstructor;\n var byteCount = length * typedArrayConstructor.BYTES_PER_ELEMENT;\n encoder.copyBufferToBuffer(outputBuffer.get(), 0, inputBuffer.get(), 0, byteCount);\n var queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue;\n queue.submit([encoder.finish()]);\n }\n }\n }, {\n key: \"compileShaderToSpirV\",\n value: function compileShaderToSpirV(source, type, shaderVersion) {\n return this.compileRawShaderToSpirV(shaderVersion + source, type);\n }\n }, {\n key: \"compileRawShaderToSpirV\",\n value: function compileRawShaderToSpirV(source, type) {\n return this.engine.glslang.compileGLSL(source, type);\n }\n }, {\n key: \"compileComputePipelineStageDescriptor\",\n value: function () {\n var _compileComputePipelineStageDescriptor = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(computeCode) {\n var computeShader, shaderVersion;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n computeShader = computeCode;\n shaderVersion = '#version 450\\n';\n\n if (this.engine.options.useWGSL) {\n _context3.next = 6;\n break;\n }\n\n _context3.next = 5;\n return this.compileShaderToSpirV(computeCode, 'compute', shaderVersion);\n\n case 5:\n computeShader = _context3.sent;\n\n case 6:\n return _context3.abrupt(\"return\", {\n computeStage: {\n module: this.engine.device.createShaderModule({\n code: computeShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"]\n }),\n entryPoint: 'main'\n }\n });\n\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function compileComputePipelineStageDescriptor(_x) {\n return _compileComputePipelineStageDescriptor.apply(this, arguments);\n }\n\n return compileComputePipelineStageDescriptor;\n }()\n }]);\n\n return WebGPUComputeModel;\n}();\n\n\n//# sourceMappingURL=WebGPUComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVDb21wdXRlTW9kZWwuanM/MDUzZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ2E7QUFDRjtBQUNKO0FBQ047QUFDK0I7QUFDN0I7QUFDbEI7QUFDSjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQSxrQkFBa0Isd0VBQVk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLGtCQUFrQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDckU7O0FBRUE7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxpRUFBYTtBQUMvRCxpQkFBaUI7QUFDakI7QUFDQSxrREFBa0QsaUVBQWE7QUFDL0QsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkI7QUFDN0I7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixpRUFBUTtBQUNoQztBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCLGtDQUFrQzs7QUFFbEM7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0EsdUJBQXVCOzs7QUFHdkI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOzs7QUFHN0IsNEVBQTRFLCtFQUFrQjs7QUFFOUY7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0EseUJBQXlCO0FBQ3pCLHlDQUF5QyxXQUFXO0FBQ3BEO0FBQ0E7QUFDQSwyQkFBMkI7OztBQUczQiwwRUFBMEUsK0VBQWtCOztBQUU1RjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLDJDQUEyQyxxREFBWTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix3RUFBMkIsV0FBVyx3RUFBMkI7QUFDNUYsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsaUJBQWlCOzs7QUFHakI7QUFDQTtBQUNBLHdDQUF3QyxtRUFBZSxzQ0FBc0MsbUVBQWU7QUFDNUc7O0FBRUE7QUFDQSx3Q0FBd0MscURBQVk7QUFDcEQ7QUFDQTtBQUNBLGlDQUFpQyx3RUFBMkIsV0FBVyx3RUFBMkIsV0FBVyx3RUFBMkI7QUFDeEkseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixPQUFPO0FBQ2xDO0FBQ0EseUJBQXlCO0FBQ3pCLDBDQUEwQyxxREFBWTtBQUN0RDtBQUNBO0FBQ0EsbUNBQW1DLHdFQUEyQixXQUFXLHdFQUEyQixXQUFXLHdFQUEyQjtBQUMxSSwyQkFBMkI7QUFDM0I7QUFDQSx1QkFBdUI7OztBQUd2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsRUFBRTs7QUFFbkI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFO0FBQ0EsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQiw2RUFBNkU7O0FBRTdFO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0Esd0JBQXdCLDREQUFRO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxvRUFBdUI7O0FBRXJFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5RUFBeUU7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsWUFBWTs7QUFFWjs7QUFFQSx1R0FBdUcsK0VBQWtCO0FBQ3pIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDREQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxtREFBbUQsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3RHO0FBQ0EsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDREQUFRO0FBQ3ZDLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUV3QztBQUN6QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVNb2RlbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IEFTVF9UT0tFTl9UWVBFUywgY3JlYXRlRW50aXR5LCBpc1NhZmFyaSwgU1RPUkFHRV9DTEFTUyB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlscy9pcy1udW1iZXInO1xuaW1wb3J0IFdlYkdQVUJ1ZmZlciBmcm9tICcuL1dlYkdQVUJ1ZmZlcic7XG5cbnZhciBXZWJHUFVDb21wdXRlTW9kZWwgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICog55So5LqO5ZCO57ut5riy5p+T5pe25Yqo5oCB5pu05pawXG4gICAqL1xuICBmdW5jdGlvbiBXZWJHUFVDb21wdXRlTW9kZWwoZW5naW5lLCBjb250ZXh0KSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdQVUNvbXB1dGVNb2RlbCk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuZW50aXR5ID0gY3JlYXRlRW50aXR5KCk7XG4gICAgdGhpcy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0ID0gW107XG4gICAgdGhpcy51bmlmb3JtQnVmZmVyID0gdm9pZCAwO1xuICAgIHRoaXMudmVydGV4QnVmZmVycyA9IHt9O1xuICAgIHRoaXMub3V0cHV0QnVmZmVyID0gdm9pZCAwO1xuICAgIHRoaXMuYmluZEdyb3VwRW50cmllcyA9IHZvaWQgMDtcbiAgICB0aGlzLmJpbmRHcm91cCA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbXB1dGVQaXBlbGluZSA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJHUFVDb21wdXRlTW9kZWwsIFt7XG4gICAga2V5OiBcImluaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICB2YXIgX3lpZWxkJHRoaXMkY29tcGlsZUNvLCBjb21wdXRlU3RhZ2UsIGJ1ZmZlcnMsIHVuaWZvcm1zLCBidWZmZXJCaW5kaW5nSW5kZXgsIG9mZnNldCwgbWVyZ2VkVW5pZm9ybURhdGE7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21waWxlQ29tcHV0ZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yKHRoaXMuY29udGV4dC5zaGFkZXIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBfeWllbGQkdGhpcyRjb21waWxlQ28gPSBfY29udGV4dC5zZW50O1xuICAgICAgICAgICAgICAgIGNvbXB1dGVTdGFnZSA9IF95aWVsZCR0aGlzJGNvbXBpbGVDby5jb21wdXRlU3RhZ2U7XG4gICAgICAgICAgICAgICAgYnVmZmVycyA9IHRoaXMuY29udGV4dC51bmlmb3Jtcy5maWx0ZXIoZnVuY3Rpb24gKHVuaWZvcm0pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB1bmlmb3JtLnN0b3JhZ2VDbGFzcyA9PT0gU1RPUkFHRV9DTEFTUy5TdG9yYWdlQnVmZmVyO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHVuaWZvcm1zID0gdGhpcy5jb250ZXh0LnVuaWZvcm1zLmZpbHRlcihmdW5jdGlvbiAodW5pZm9ybSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuaWZvcm0uc3RvcmFnZUNsYXNzID09PSBTVE9SQUdFX0NMQVNTLlVuaWZvcm07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnVmZmVyQmluZGluZ0luZGV4ID0gdW5pZm9ybXMubGVuZ3RoID8gMSA6IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kR3JvdXBFbnRyaWVzID0gW107XG5cbiAgICAgICAgICAgICAgICBpZiAoYnVmZmVyQmluZGluZ0luZGV4KSB7XG4gICAgICAgICAgICAgICAgICBvZmZzZXQgPSAwOyAvLyBGSVhNRTog5omA5pyJIHVuaWZvcm0g5ZCI5bm25oiQ5LiA5LiqIGJ1ZmZlcu+8jOWbuuWumuS9v+eUqCBGbG9hdDMyQXJyYXkg5a2Y5YKo77yM56Gu5a6e5Lya6YCg5oiQ5LiA5Lqb5YaF5a2Y55qE5rWq6LS5XG4gICAgICAgICAgICAgICAgICAvLyB3ZSB1c2Ugc3RkMTQwIGxheW91dCBAc2VlIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5nbC93aWtpL0ludGVyZmFjZV9CbG9ja18oR0xTTClcblxuICAgICAgICAgICAgICAgICAgbWVyZ2VkVW5pZm9ybURhdGEgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHVuaWZvcm1zLmZvckVhY2goZnVuY3Rpb24gKHVuaWZvcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKHVuaWZvcm0uZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdW5pZm9ybS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSA0OyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRVbmlmb3JtRGF0YS5wdXNoKHVuaWZvcm0uZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIF91bmlmb3JtJGRhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIG9yaWdpbkRhdGFMZW5ndGggPSAoKF91bmlmb3JtJGRhdGEgPSB1bmlmb3JtLmRhdGEpID09PSBudWxsIHx8IF91bmlmb3JtJGRhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF91bmlmb3JtJGRhdGEubGVuZ3RoKSB8fCAxO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbkRhdGFMZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZlYzMgLT4gdmVjNFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHNlZSBodHRwOi8vcHRnbWVkaWEucGVhcnNvbmNtZy5jb20vaW1hZ2VzLzk3ODAzMjE1NTI2MjQvZG93bmxvYWRzLzAzMjE1NTI2MjhfQXBwTC5wZGZcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbkRhdGFMZW5ndGggPSA0OyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm0uZGF0YS5wdXNoKDApO1xuICAgICAgICAgICAgICAgICAgICAgIH0gLy8gNCBlbGVtZW50cyBwZXIgYmxvY2svbGluZVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFkZGluZyA9IG9mZnNldCAvIDQgJSA0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZGRpbmcgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3BhY2UgPSA0IC0gcGFkZGluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbkRhdGFMZW5ndGggPiAxICYmIG9yaWdpbkRhdGFMZW5ndGggPD0gc3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbkRhdGFMZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BhY2UgPT09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkVW5pZm9ybURhdGEucHVzaCgwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkVW5pZm9ybURhdGEucHVzaC5hcHBseShtZXJnZWRVbmlmb3JtRGF0YSwgX3RvQ29uc3VtYWJsZUFycmF5KHVuaWZvcm0uZGF0YSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMudW5pZm9ybUdQVUJ1ZmZlckxheW91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVuaWZvcm0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3BhY2U7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFVuaWZvcm1EYXRhLnB1c2goMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gLy8gQHRzLWlnbm9yZVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkVW5pZm9ybURhdGEucHVzaC5hcHBseShtZXJnZWRVbmlmb3JtRGF0YSwgX3RvQ29uc3VtYWJsZUFycmF5KHVuaWZvcm0uZGF0YSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnVuaWZvcm1HUFVCdWZmZXJMYXlvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdW5pZm9ybS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSA0ICogb3JpZ2luRGF0YUxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnVuaWZvcm1CdWZmZXIgPSBuZXcgV2ViR1BVQnVmZmVyKHRoaXMuZW5naW5lLCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IOWkhOeQhiBTdHJ1Y3Qg5ZKMIGJvb2xlYW5cbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBtZXJnZWRVbmlmb3JtRGF0YSBpbnN0YW5jZW9mIEFycmF5ID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBuZXcgRmxvYXQzMkFycmF5KG1lcmdlZFVuaWZvcm1EYXRhKSA6IG1lcmdlZFVuaWZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICB1c2FnZTogV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLlVuaWZvcm0gfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmJpbmRHcm91cEVudHJpZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJpbmRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiB0aGlzLnVuaWZvcm1CdWZmZXIuZ2V0KClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSAvLyBjcmVhdGUgR1BVQnVmZmVycyBmb3Igc3RvcmVhZ2UgYnVmZmVyc1xuXG5cbiAgICAgICAgICAgICAgICBidWZmZXJzLmZvckVhY2goZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5kYXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIudHlwZSA9PT0gQVNUX1RPS0VOX1RZUEVTLlZlY3RvcjRGbG9hdEFycmF5IHx8IGJ1ZmZlci50eXBlID09PSBBU1RfVE9LRU5fVFlQRVMuRmxvYXRBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBncHVCdWZmZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLm5hbWUgPT09IF90aGlzLmNvbnRleHQub3V0cHV0Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdwdUJ1ZmZlciA9IG5ldyBXZWJHUFVCdWZmZXIoX3RoaXMuZW5naW5lLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogaXNGaW5pdGUoTnVtYmVyKGJ1ZmZlci5kYXRhKSkgPyBbYnVmZmVyLmRhdGFdIDogYnVmZmVyLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlOiBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuU3RvcmFnZSB8IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Db3B5RHN0IHwgV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLkNvcHlTcmNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMub3V0cHV0QnVmZmVyID0gZ3B1QnVmZmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuY29udGV4dC5vdXRwdXQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGJ1ZmZlci5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDogaXNGaW5pdGUoTnVtYmVyKGJ1ZmZlci5kYXRhKSkgPyAxIDogYnVmZmVyLmRhdGEubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlZEFycmF5Q29uc3RydWN0b3I6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1QnVmZmVyOiBncHVCdWZmZXIuZ2V0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIuaXNSZWZlcmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5kYXRhLm1vZGVsICYmIGJ1ZmZlci5kYXRhLm1vZGVsLm91dHB1dEJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHVCdWZmZXIgPSBidWZmZXIuZGF0YS5tb2RlbC5vdXRwdXRCdWZmZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ly8gcmVmZXJyZWQga2VybmVsIGhhdmVuJ3QgYmVlbiBleGVjdXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncHVCdWZmZXIgPSBuZXcgV2ViR1BVQnVmZmVyKF90aGlzLmVuZ2luZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBpc0Zpbml0ZShOdW1iZXIoYnVmZmVyLmRhdGEpKSA/IFtidWZmZXIuZGF0YV0gOiBidWZmZXIuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZTogV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLlN0b3JhZ2UgfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdCB8IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Db3B5U3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gLy8gQHRzLWlnbm9yZVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy52ZXJ0ZXhCdWZmZXJzW2J1ZmZlci5uYW1lXSA9IGdwdUJ1ZmZlcjtcblxuICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmJpbmRHcm91cEVudHJpZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBiaW5kaW5nOiBidWZmZXJCaW5kaW5nSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBidWZmZXIubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXI6IGdwdUJ1ZmZlciA/IHVuZGVmaW5lZCA6IGJ1ZmZlci5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcjogZ3B1QnVmZmVyID8gZ3B1QnVmZmVyLmdldCgpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBidWZmZXJCaW5kaW5nSW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pOyAvLyBjcmVhdGUgY29tcHV0ZSBwaXBlbGluZSBsYXlvdXRcblxuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZVBpcGVsaW5lID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7XG4gICAgICAgICAgICAgICAgICBjb21wdXRlU3RhZ2U6IGNvbXB1dGVTdGFnZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuYmluZEdyb3VwRW50cmllcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kR3JvdXAgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHtcbiAgICAgICAgICAgICAgICAgIGxheW91dDogdGhpcy5jb21wdXRlUGlwZWxpbmUuZ2V0QmluZEdyb3VwTGF5b3V0KDApLFxuICAgICAgICAgICAgICAgICAgZW50cmllczogdGhpcy5iaW5kR3JvdXBFbnRyaWVzXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0O1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy51bmlmb3JtQnVmZmVyKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybUJ1ZmZlci5kZXN0cm95KCk7XG4gICAgICB9XG5cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMudmVydGV4QnVmZmVycykuZm9yRWFjaChmdW5jdGlvbiAoYnVmZmVyTmFtZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMyLnZlcnRleEJ1ZmZlcnNbYnVmZmVyTmFtZV0uZGVzdHJveSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlYWREYXRhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVhZERhdGEgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHtcbiAgICAgICAgdmFyIG91dHB1dCwgbGVuZ3RoLCB0eXBlZEFycmF5Q29uc3RydWN0b3IsIGdwdUJ1ZmZlciwgYnl0ZUNvdW50LCBncHVSZWFkQnVmZmVyLCBlbmNvZGVyLCBxdWV1ZSwgYXJyYXlidWZmZXIsIHR5cGVkQXJyYXk7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIG91dHB1dCA9IHRoaXMuY29udGV4dC5vdXRwdXQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoIW91dHB1dCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxlbmd0aCA9IG91dHB1dC5sZW5ndGgsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IG91dHB1dC50eXBlZEFycmF5Q29uc3RydWN0b3IsIGdwdUJ1ZmZlciA9IG91dHB1dC5ncHVCdWZmZXI7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWdwdUJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGF3YWl0IGdwdUJ1ZmZlci5tYXBBc3luYyhXZWJHUFVDb25zdGFudHMuTWFwTW9kZS5SZWFkKTtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBhcnJheWJ1ZmZlciA9IGdwdUJ1ZmZlci5nZXRNYXBwZWRSYW5nZSgpO1xuICAgICAgICAgICAgICAgIC8vIGxldCBhcnJheWJ1ZmZlcjtcbiAgICAgICAgICAgICAgICAvLyBpZiAoaXNTYWZhcmkpIHtcbiAgICAgICAgICAgICAgICAvLyAgIGFycmF5YnVmZmVyID0gYXdhaXQgZ3B1QnVmZmVyLm1hcFJlYWRBc3luYygpO1xuICAgICAgICAgICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnl0ZUNvdW50ID0gbGVuZ3RoICogdHlwZWRBcnJheUNvbnN0cnVjdG9yLkJZVEVTX1BFUl9FTEVNRU5UOyAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYi91cGRhdGVzLzIwMTkvMDgvZ2V0LXN0YXJ0ZWQtd2l0aC1ncHUtY29tcHV0ZS1vbi10aGUtd2ViXG5cbiAgICAgICAgICAgICAgICBncHVSZWFkQnVmZmVyID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7XG4gICAgICAgICAgICAgICAgICBzaXplOiBieXRlQ291bnQsXG4gICAgICAgICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGVuY29kZXIgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTtcbiAgICAgICAgICAgICAgICBlbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihncHVCdWZmZXIsIDAsIGdwdVJlYWRCdWZmZXIsIDAsIGJ5dGVDb3VudCk7XG4gICAgICAgICAgICAgICAgcXVldWUgPSBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZS5kZXZpY2UuZ2V0UXVldWUoKSA6IHRoaXMuZW5naW5lLmRldmljZS5kZWZhdWx0UXVldWU7XG4gICAgICAgICAgICAgICAgcXVldWUuc3VibWl0KFtlbmNvZGVyLmZpbmlzaCgpXSk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3B1UmVhZEJ1ZmZlci5tYXBBc3luYyhXZWJHUFVDb25zdGFudHMuTWFwTW9kZS5SZWFkKTtcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgIGFycmF5YnVmZmVyID0gZ3B1UmVhZEJ1ZmZlci5nZXRNYXBwZWRSYW5nZSgpO1xuICAgICAgICAgICAgICAgIHR5cGVkQXJyYXkgPSBuZXcgdHlwZWRBcnJheUNvbnN0cnVjdG9yKGFycmF5YnVmZmVyLnNsaWNlKDApKTtcbiAgICAgICAgICAgICAgICBncHVSZWFkQnVmZmVyLnVubWFwKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIiwgdHlwZWRBcnJheSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiLCBuZXcgRmxvYXQzMkFycmF5KCkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUyLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gcmVhZERhdGEoKSB7XG4gICAgICAgIHJldHVybiBfcmVhZERhdGEuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlYWREYXRhO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInJ1blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oKSB7XG4gICAgICBpZiAodGhpcy5lbmdpbmUuY3VycmVudENvbXB1dGVQYXNzKSB7XG4gICAgICAgIHZhciBfdGhpcyRlbmdpbmUkY3VycmVudEM7XG5cbiAgICAgICAgdGhpcy5lbmdpbmUuY3VycmVudENvbXB1dGVQYXNzLnNldFBpcGVsaW5lKHRoaXMuY29tcHV0ZVBpcGVsaW5lKTsgLy8gdGhpcy5iaW5kR3JvdXBFbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIC8vICAgaWYgKCFlbnRyeS5yZXNvdXJjZS5idWZmZXIpIHtcbiAgICAgICAgLy8gICAgIC8vIGdldCByZWZlcnJlZCBrZXJuZWwncyBvdXRwdXRcbiAgICAgICAgLy8gICAgIGNvbnN0IGdwdUJ1ZmZlciA9IChlbnRyeS5yZXNvdXJjZS5yZWZlci5tb2RlbCBhcyBXZWJHUFVDb21wdXRlTW9kZWwpXG4gICAgICAgIC8vICAgICAgIC5vdXRwdXRCdWZmZXI7XG4gICAgICAgIC8vICAgICB0aGlzLnZlcnRleEJ1ZmZlcnNbZW50cnkucmVzb3VyY2UubmFtZV0gPSBncHVCdWZmZXI7XG4gICAgICAgIC8vICAgICBlbnRyeS5yZXNvdXJjZS5idWZmZXIgPSBncHVCdWZmZXIuZ2V0KCk7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9KTtcbiAgICAgICAgLy8gY29uc3QgYmluZEdyb3VwID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7XG4gICAgICAgIC8vICAgbGF5b3V0OiB0aGlzLmNvbXB1dGVQaXBlbGluZS5nZXRCaW5kR3JvdXBMYXlvdXQoMCksXG4gICAgICAgIC8vICAgZW50cmllczogdGhpcy5iaW5kR3JvdXBFbnRyaWVzLFxuICAgICAgICAvLyB9KTtcblxuICAgICAgICB0aGlzLmVuZ2luZS5jdXJyZW50Q29tcHV0ZVBhc3Muc2V0QmluZEdyb3VwKDAsIHRoaXMuYmluZEdyb3VwKTtcblxuICAgICAgICAoX3RoaXMkZW5naW5lJGN1cnJlbnRDID0gdGhpcy5lbmdpbmUuY3VycmVudENvbXB1dGVQYXNzKS5kaXNwYXRjaC5hcHBseShfdGhpcyRlbmdpbmUkY3VycmVudEMsIF90b0NvbnN1bWFibGVBcnJheSh0aGlzLmNvbnRleHQuZGlzcGF0Y2gpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlQnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZmZlcihidWZmZXJOYW1lLCBkYXRhKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAwO1xuICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMudmVydGV4QnVmZmVyc1tidWZmZXJOYW1lXTtcblxuICAgICAgaWYgKGJ1ZmZlcikge1xuICAgICAgICBidWZmZXIuc3ViRGF0YSh7XG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlVW5pZm9ybVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVVbmlmb3JtKHVuaWZvcm1OYW1lLCBkYXRhKSB7XG4gICAgICB2YXIgbGF5b3V0ID0gdGhpcy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LmZpbmQoZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgcmV0dXJuIGwubmFtZSA9PT0gdW5pZm9ybU5hbWU7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGxheW91dCkge1xuICAgICAgICB0aGlzLnVuaWZvcm1CdWZmZXIuc3ViRGF0YSh7XG4gICAgICAgICAgZGF0YTogTnVtYmVyLmlzRmluaXRlKGRhdGEpID8gbmV3IEZsb2F0MzJBcnJheShbZGF0YV0pIDogbmV3IEZsb2F0MzJBcnJheShkYXRhKSxcbiAgICAgICAgICBvZmZzZXQ6IGxheW91dC5vZmZzZXRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbmZpcm1JbnB1dFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb25maXJtSW5wdXQobW9kZWwsIGlucHV0TmFtZSkge1xuICAgICAgLy8gY29weSBvdXRwdXQgR1BVQnVmZmVyIG9mIGtlcm5lbFxuICAgICAgdmFyIGlucHV0QnVmZmVyID0gdGhpcy52ZXJ0ZXhCdWZmZXJzW2lucHV0TmFtZV07XG4gICAgICB2YXIgb3V0cHV0QnVmZmVyID0gbW9kZWwub3V0cHV0QnVmZmVyO1xuXG4gICAgICBpZiAoaW5wdXRCdWZmZXIgJiYgb3V0cHV0QnVmZmVyICYmIGlucHV0QnVmZmVyICE9PSBvdXRwdXRCdWZmZXIpIHtcbiAgICAgICAgdmFyIGVuY29kZXIgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTtcbiAgICAgICAgdmFyIF9jb250ZXh0JG91dHB1dCA9IG1vZGVsLmNvbnRleHQub3V0cHV0LFxuICAgICAgICAgICAgbGVuZ3RoID0gX2NvbnRleHQkb3V0cHV0Lmxlbmd0aCxcbiAgICAgICAgICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IF9jb250ZXh0JG91dHB1dC50eXBlZEFycmF5Q29uc3RydWN0b3I7XG4gICAgICAgIHZhciBieXRlQ291bnQgPSBsZW5ndGggKiB0eXBlZEFycmF5Q29uc3RydWN0b3IuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgIGVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKG91dHB1dEJ1ZmZlci5nZXQoKSwgMCwgaW5wdXRCdWZmZXIuZ2V0KCksIDAsIGJ5dGVDb3VudCk7XG4gICAgICAgIHZhciBxdWV1ZSA9IGlzU2FmYXJpID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmVuZ2luZS5kZXZpY2UuZ2V0UXVldWUoKSA6IHRoaXMuZW5naW5lLmRldmljZS5kZWZhdWx0UXVldWU7XG4gICAgICAgIHF1ZXVlLnN1Ym1pdChbZW5jb2Rlci5maW5pc2goKV0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlU2hhZGVyVG9TcGlyVlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21waWxlU2hhZGVyVG9TcGlyVihzb3VyY2UsIHR5cGUsIHNoYWRlclZlcnNpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVSYXdTaGFkZXJUb1NwaXJWKHNoYWRlclZlcnNpb24gKyBzb3VyY2UsIHR5cGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlUmF3U2hhZGVyVG9TcGlyVlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21waWxlUmF3U2hhZGVyVG9TcGlyVihzb3VyY2UsIHR5cGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmVuZ2luZS5nbHNsYW5nLmNvbXBpbGVHTFNMKHNvdXJjZSwgdHlwZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBpbGVDb21wdXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9jb21waWxlQ29tcHV0ZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoY29tcHV0ZUNvZGUpIHtcbiAgICAgICAgdmFyIGNvbXB1dGVTaGFkZXIsIHNoYWRlclZlcnNpb247XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0Mykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGNvbXB1dGVTaGFkZXIgPSBjb21wdXRlQ29kZTtcbiAgICAgICAgICAgICAgICBzaGFkZXJWZXJzaW9uID0gJyN2ZXJzaW9uIDQ1MFxcbic7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lbmdpbmUub3B0aW9ucy51c2VXR1NMKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDY7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZVNoYWRlclRvU3BpclYoY29tcHV0ZUNvZGUsICdjb21wdXRlJywgc2hhZGVyVmVyc2lvbik7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIGNvbXB1dGVTaGFkZXIgPSBfY29udGV4dDMuc2VudDtcblxuICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5hYnJ1cHQoXCJyZXR1cm5cIiwge1xuICAgICAgICAgICAgICAgICAgY29tcHV0ZVN0YWdlOiB7XG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZTogdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgY29kZTogY29tcHV0ZVNoYWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgaXNXSExTTDogaXNTYWZhcmlcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGVudHJ5UG9pbnQ6ICdtYWluJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTMsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBjb21waWxlQ29tcHV0ZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yKF94KSB7XG4gICAgICAgIHJldHVybiBfY29tcGlsZUNvbXB1dGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tcGlsZUNvbXB1dGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcjtcbiAgICB9KClcbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVDb21wdXRlTW9kZWw7XG59KCk7XG5cbmV4cG9ydCB7IFdlYkdQVUNvbXB1dGVNb2RlbCBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XZWJHUFVDb21wdXRlTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js": /*!************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUElements; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\nvar WebGPUElements = /*#__PURE__*/function () {\n function WebGPUElements(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUElements);\n\n this.engine = engine;\n this.options = options;\n this.indexCount = void 0;\n this.buffer = void 0;\n var _options = options,\n data = _options.data,\n usage = _options.usage,\n type = _options.type,\n count = _options.count;\n this.indexCount = count || 0;\n this.buffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"](engine, {\n // @ts-ignore\n data: data instanceof Array ? new Uint16Array(data) : data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BufferUsage\"].Index | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BufferUsage\"].CopyDst\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUElements, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"subData\",\n value: function subData(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return WebGPUElements;\n}();\n\n\n//# sourceMappingURL=WebGPUElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVFbGVtZW50cy5qcz9hZmRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQ0U7QUFDdEI7O0FBRTFDO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixxREFBWTtBQUNsQztBQUNBO0FBQ0EsYUFBYSx3RUFBMkIsU0FBUyx3RUFBMkI7QUFDNUUsS0FBSztBQUNMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVvQztBQUNyQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUVsZW1lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IFdlYkdQVUJ1ZmZlciBmcm9tICcuL1dlYkdQVUJ1ZmZlcic7XG5cbnZhciBXZWJHUFVFbGVtZW50cyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdQVUVsZW1lbnRzKGVuZ2luZSwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVFbGVtZW50cyk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuaW5kZXhDb3VudCA9IHZvaWQgMDtcbiAgICB0aGlzLmJ1ZmZlciA9IHZvaWQgMDtcbiAgICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgICBkYXRhID0gX29wdGlvbnMuZGF0YSxcbiAgICAgICAgdXNhZ2UgPSBfb3B0aW9ucy51c2FnZSxcbiAgICAgICAgdHlwZSA9IF9vcHRpb25zLnR5cGUsXG4gICAgICAgIGNvdW50ID0gX29wdGlvbnMuY291bnQ7XG4gICAgdGhpcy5pbmRleENvdW50ID0gY291bnQgfHwgMDtcbiAgICB0aGlzLmJ1ZmZlciA9IG5ldyBXZWJHUFVCdWZmZXIoZW5naW5lLCB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBkYXRhOiBkYXRhIGluc3RhbmNlb2YgQXJyYXkgPyBuZXcgVWludDE2QXJyYXkoZGF0YSkgOiBkYXRhLFxuICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5JbmRleCB8IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Db3B5RHN0XG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR1BVRWxlbWVudHMsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN1YkRhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3ViRGF0YShvcHRpb25zKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5zdWJEYXRhKG9wdGlvbnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5kZXN0cm95KCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYkdQVUVsZW1lbnRzO1xufSgpO1xuXG5leHBvcnQgeyBXZWJHUFVFbGVtZW50cyBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XZWJHUFVFbGVtZW50cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js": /*!***************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUFramebuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nvar WebGPUFramebuffer = /*#__PURE__*/function () {\n function WebGPUFramebuffer(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUFramebuffer);\n\n this.engine = engine;\n this.options = options;\n this.colorTexture = void 0;\n this.depthTexture = void 0;\n this.width = 0;\n this.height = 0;\n var _options = options,\n width = _options.width,\n height = _options.height,\n color = _options.color,\n colors = _options.colors,\n depth = _options.depth,\n stencil = _options.stencil;\n\n if (color) {\n this.colorTexture = color;\n }\n\n if (depth) {\n this.depthTexture = depth;\n } // TODO: depth & stencil\n\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUFramebuffer, [{\n key: \"get\",\n value: function get() {\n var _this$colorTexture, _this$depthTexture;\n\n return {\n color: (_this$colorTexture = this.colorTexture) === null || _this$colorTexture === void 0 ? void 0 : _this$colorTexture.get(),\n depth: (_this$depthTexture = this.depthTexture) === null || _this$depthTexture === void 0 ? void 0 : _this$depthTexture.get()\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this$colorTexture2, _this$depthTexture2;\n\n (_this$colorTexture2 = this.colorTexture) === null || _this$colorTexture2 === void 0 ? void 0 : _this$colorTexture2.destroy();\n (_this$depthTexture2 = this.depthTexture) === null || _this$depthTexture2 === void 0 ? void 0 : _this$depthTexture2.destroy();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n if (width !== this.width || height !== this.height) {\n var _this$colorTexture3, _this$depthTexture3;\n\n (_this$colorTexture3 = this.colorTexture) === null || _this$colorTexture3 === void 0 ? void 0 : _this$colorTexture3.resize({\n width: width,\n height: height\n });\n (_this$depthTexture3 = this.depthTexture) === null || _this$depthTexture3 === void 0 ? void 0 : _this$depthTexture3.resize({\n width: width,\n height: height\n });\n }\n\n this.width = width;\n this.height = height;\n }\n }]);\n\n return WebGPUFramebuffer;\n}();\n\n\n//# sourceMappingURL=WebGPUFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVGcmFtZWJ1ZmZlci5qcz82YmIwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOOztBQUU5RDtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFdUM7QUFDeEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVGcmFtZWJ1ZmZlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIFdlYkdQVUZyYW1lYnVmZmVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gV2ViR1BVRnJhbWVidWZmZXIoZW5naW5lLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdQVUZyYW1lYnVmZmVyKTtcblxuICAgIHRoaXMuZW5naW5lID0gZW5naW5lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5jb2xvclRleHR1cmUgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXB0aFRleHR1cmUgPSB2b2lkIDA7XG4gICAgdGhpcy53aWR0aCA9IDA7XG4gICAgdGhpcy5oZWlnaHQgPSAwO1xuICAgIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICAgIHdpZHRoID0gX29wdGlvbnMud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF9vcHRpb25zLmhlaWdodCxcbiAgICAgICAgY29sb3IgPSBfb3B0aW9ucy5jb2xvcixcbiAgICAgICAgY29sb3JzID0gX29wdGlvbnMuY29sb3JzLFxuICAgICAgICBkZXB0aCA9IF9vcHRpb25zLmRlcHRoLFxuICAgICAgICBzdGVuY2lsID0gX29wdGlvbnMuc3RlbmNpbDtcblxuICAgIGlmIChjb2xvcikge1xuICAgICAgdGhpcy5jb2xvclRleHR1cmUgPSBjb2xvcjtcbiAgICB9XG5cbiAgICBpZiAoZGVwdGgpIHtcbiAgICAgIHRoaXMuZGVwdGhUZXh0dXJlID0gZGVwdGg7XG4gICAgfSAvLyBUT0RPOiBkZXB0aCAmIHN0ZW5jaWxcblxuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVUZyYW1lYnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgdmFyIF90aGlzJGNvbG9yVGV4dHVyZSwgX3RoaXMkZGVwdGhUZXh0dXJlO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogKF90aGlzJGNvbG9yVGV4dHVyZSA9IHRoaXMuY29sb3JUZXh0dXJlKSA9PT0gbnVsbCB8fCBfdGhpcyRjb2xvclRleHR1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGNvbG9yVGV4dHVyZS5nZXQoKSxcbiAgICAgICAgZGVwdGg6IChfdGhpcyRkZXB0aFRleHR1cmUgPSB0aGlzLmRlcHRoVGV4dHVyZSkgPT09IG51bGwgfHwgX3RoaXMkZGVwdGhUZXh0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRkZXB0aFRleHR1cmUuZ2V0KClcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHZhciBfdGhpcyRjb2xvclRleHR1cmUyLCBfdGhpcyRkZXB0aFRleHR1cmUyO1xuXG4gICAgICAoX3RoaXMkY29sb3JUZXh0dXJlMiA9IHRoaXMuY29sb3JUZXh0dXJlKSA9PT0gbnVsbCB8fCBfdGhpcyRjb2xvclRleHR1cmUyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRjb2xvclRleHR1cmUyLmRlc3Ryb3koKTtcbiAgICAgIChfdGhpcyRkZXB0aFRleHR1cmUyID0gdGhpcy5kZXB0aFRleHR1cmUpID09PSBudWxsIHx8IF90aGlzJGRlcHRoVGV4dHVyZTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGRlcHRoVGV4dHVyZTIuZGVzdHJveSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXNpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzaXplKF9yZWYpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG5cbiAgICAgIGlmICh3aWR0aCAhPT0gdGhpcy53aWR0aCB8fCBoZWlnaHQgIT09IHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgIHZhciBfdGhpcyRjb2xvclRleHR1cmUzLCBfdGhpcyRkZXB0aFRleHR1cmUzO1xuXG4gICAgICAgIChfdGhpcyRjb2xvclRleHR1cmUzID0gdGhpcy5jb2xvclRleHR1cmUpID09PSBudWxsIHx8IF90aGlzJGNvbG9yVGV4dHVyZTMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGNvbG9yVGV4dHVyZTMucmVzaXplKHtcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICAgIChfdGhpcyRkZXB0aFRleHR1cmUzID0gdGhpcy5kZXB0aFRleHR1cmUpID09PSBudWxsIHx8IF90aGlzJGRlcHRoVGV4dHVyZTMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGRlcHRoVGV4dHVyZTMucmVzaXplKHtcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVGcmFtZWJ1ZmZlcjtcbn0oKTtcblxuZXhwb3J0IHsgV2ViR1BVRnJhbWVidWZmZXIgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V2ViR1BVRnJhbWVidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js": /*!*********************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUModel; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _utils_uniform__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/uniform */ \"./node_modules/@antv/g-webgpu-engine/es/utils/uniform.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/constants.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n\n\n// @ts-ignore\nfunction concatenate(resultConstructor) {\n var totalLength = 0;\n\n for (var _len = arguments.length, arrays = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n arrays[_key - 1] = arguments[_key];\n }\n\n for (var _i = 0, _arrays = arrays; _i < _arrays.length; _i++) {\n var arr = _arrays[_i];\n totalLength += arr.length;\n }\n\n var result = new resultConstructor(totalLength);\n var offset = 0;\n\n for (var _i2 = 0, _arrays2 = arrays; _i2 < _arrays2.length; _i2++) {\n var _arr = _arrays2[_i2];\n result.set(_arr, offset);\n offset += _arr.length;\n }\n\n return result;\n}\n\nvar WebGPUModel = /*#__PURE__*/function () {\n /**\n * 用于后续渲染时动态更新\n */\n\n /**\n * vertex\n */\n\n /**\n * indices's buffer\n */\n function WebGPUModel(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5___default()(this, WebGPUModel);\n\n this.engine = engine;\n this.options = options;\n this.pipelineLayout = void 0;\n this.renderPipeline = void 0;\n this.uniformsBindGroupLayout = void 0;\n this.uniformBindGroup = void 0;\n this.uniformBuffer = void 0;\n this.uniforms = {};\n this.uniformGPUBufferLayout = [];\n this.attributeCache = {};\n this.indexBuffer = void 0;\n this.indexCount = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6___default()(WebGPUModel, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() {\n var _this = this;\n\n var _this$options, vs, fs, attributes, uniforms, primitive, count, elements, depth, blend, stencil, cull, instances, _yield$this$compilePi, vertexStage, fragmentStage, vertexState, descriptor;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this$options = this.options, vs = _this$options.vs, fs = _this$options.fs, attributes = _this$options.attributes, uniforms = _this$options.uniforms, primitive = _this$options.primitive, count = _this$options.count, elements = _this$options.elements, depth = _this$options.depth, blend = _this$options.blend, stencil = _this$options.stencil, cull = _this$options.cull, instances = _this$options.instances; // build shaders first\n\n _context.next = 3;\n return this.compilePipelineStageDescriptor(vs, fs, null);\n\n case 3:\n _yield$this$compilePi = _context.sent;\n vertexStage = _yield$this$compilePi.vertexStage;\n fragmentStage = _yield$this$compilePi.fragmentStage;\n\n if (uniforms) {\n // create uniform bind groups & layout\n this.buildUniformBindGroup(uniforms);\n }\n\n if (elements) {\n this.indexBuffer = elements.get();\n this.indexCount = elements.indexCount;\n } // TODO: instanced array\n\n\n vertexState = {\n vertexBuffers: Object.keys(attributes).map(function (attributeName, i) {\n var attribute = attributes[attributeName];\n\n var _attribute$get = attribute.get(),\n arrayStride = _attribute$get.arrayStride,\n stepMode = _attribute$get.stepMode,\n ats = _attribute$get.attributes;\n\n _this.attributeCache[attributeName] = attribute;\n return {\n arrayStride: arrayStride,\n stepMode: stepMode,\n attributes: ats\n };\n })\n };\n descriptor = {\n sampleCount: this.engine.mainPassSampleCount,\n primitiveTopology: _constants__WEBPACK_IMPORTED_MODULE_10__[\"primitiveMap\"][primitive || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].TRIANGLES],\n rasterizationState: _objectSpread(_objectSpread({}, this.getDefaultRasterizationStateDescriptor()), {}, {\n // TODO: support frontface\n cullMode: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getCullMode\"])({\n cull: cull\n })\n }),\n depthStencilState: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getDepthStencilStateDescriptor\"])({\n depth: depth,\n stencil: stencil\n }),\n colorStates: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getColorStateDescriptors\"])({\n blend: blend\n }, this.engine.options.swapChainFormat),\n layout: this.pipelineLayout,\n vertexStage: vertexStage,\n fragmentStage: fragmentStage,\n vertexState: vertexState\n }; // create pipeline\n\n this.renderPipeline = this.engine.device.createRenderPipeline(descriptor);\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"addUniforms\",\n value: function addUniforms(uniforms) {\n this.uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_9__[\"extractUniforms\"])(uniforms));\n }\n }, {\n key: \"draw\",\n value: function draw(options) {\n var _this2 = this;\n\n var renderPass = this.engine.getCurrentRenderPass();\n\n var uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_9__[\"extractUniforms\"])(options.uniforms || {}));\n\n var bindGroupBindings = []; // TODO: uniform 发生修改\n\n Object.keys(uniforms).forEach(function (uniformName) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default()(uniforms[uniformName]);\n\n if (type === 'boolean' || type === 'number' || Array.isArray(uniforms[uniformName]) || // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT) {\n var _this2$uniformGPUBuff;\n\n var offset = (_this2$uniformGPUBuff = _this2.uniformGPUBufferLayout.find(function (_ref) {\n var name = _ref.name;\n return name === uniformName;\n })) === null || _this2$uniformGPUBuff === void 0 ? void 0 : _this2$uniformGPUBuff.offset;\n\n if (offset !== null) {\n _this2.uniformBuffer.subData({\n // @ts-ignore\n data: uniforms[uniformName],\n // @ts-ignore\n offset: offset\n });\n }\n } else {\n var _this2$uniformGPUBuff2;\n\n var _offset = (_this2$uniformGPUBuff2 = _this2.uniformGPUBufferLayout.find(function (_ref2) {\n var name = _ref2.name;\n return name === uniformName;\n })) === null || _this2$uniformGPUBuff2 === void 0 ? void 0 : _this2$uniformGPUBuff2.offset;\n\n if (_offset !== null) {\n var textureOrFramebuffer = uniforms[uniformName].get();\n\n var _ref3 = // @ts-ignore\n textureOrFramebuffer.color || textureOrFramebuffer,\n texture = _ref3.texture,\n sampler = _ref3.sampler;\n\n if (sampler) {\n bindGroupBindings.push({\n // @ts-ignore\n binding: _offset,\n resource: sampler\n }); // @ts-ignore\n\n _offset++;\n }\n\n bindGroupBindings.push({\n // @ts-ignore\n binding: _offset,\n resource: texture.createView()\n });\n }\n }\n });\n\n if (this.uniformBuffer) {\n bindGroupBindings[0] = {\n binding: 0,\n resource: {\n buffer: this.uniformBuffer.get() // 返回 GPUBuffer 原生对象\n\n }\n };\n }\n\n this.uniformBindGroup = this.engine.device.createBindGroup({\n layout: this.uniformsBindGroupLayout,\n entries: bindGroupBindings\n });\n\n if (this.renderPipeline) {\n renderPass.setPipeline(this.renderPipeline);\n }\n\n renderPass.setBindGroup(0, this.uniformBindGroup);\n\n if (this.indexBuffer) {\n renderPass.setIndexBuffer(this.indexBuffer.get(), _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"IndexFormat\"].Uint32, 0);\n }\n\n Object.keys(this.attributeCache).forEach(function (attributeName, i) {\n renderPass.setVertexBuffer(0 + i, _this2.attributeCache[attributeName].get().buffer, 0);\n }); // renderPass.draw(verticesCount, instancesCount, verticesStart, 0);\n\n if (this.indexBuffer) {\n renderPass.drawIndexed(this.indexCount, this.options.instances || 1, 0, 0, 0);\n } else {\n renderPass.draw(this.options.count || 0, this.options.instances || 0, 0, 0);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n throw new Error('Method not implemented.');\n }\n }, {\n key: \"compilePipelineStageDescriptor\",\n value: function () {\n var _compilePipelineStageDescriptor = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee2(vertexCode, fragmentCode, defines) {\n var shaderVersion, vertexShader, fragmentShader;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n shaderVersion = '#version 450\\n';\n vertexShader = vertexCode;\n fragmentShader = fragmentCode;\n\n if (this.engine.options.useWGSL) {\n _context2.next = 10;\n break;\n }\n\n _context2.next = 6;\n return this.compileShaderToSpirV(vertexCode, 'vertex', shaderVersion);\n\n case 6:\n vertexShader = _context2.sent;\n _context2.next = 9;\n return this.compileShaderToSpirV(fragmentCode, 'fragment', shaderVersion);\n\n case 9:\n fragmentShader = _context2.sent;\n\n case 10:\n return _context2.abrupt(\"return\", this.createPipelineStageDescriptor(vertexShader, fragmentShader));\n\n case 11:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function compilePipelineStageDescriptor(_x, _x2, _x3) {\n return _compilePipelineStageDescriptor.apply(this, arguments);\n }\n\n return compilePipelineStageDescriptor;\n }()\n }, {\n key: \"compileShaderToSpirV\",\n value: function compileShaderToSpirV(source, type, shaderVersion) {\n return this.compileRawShaderToSpirV(shaderVersion + source, type);\n }\n }, {\n key: \"compileRawShaderToSpirV\",\n value: function compileRawShaderToSpirV(source, type) {\n return this.engine.glslang.compileGLSL(source, type);\n }\n }, {\n key: \"createPipelineStageDescriptor\",\n value: function createPipelineStageDescriptor(vertexShader, fragmentShader) {\n return {\n vertexStage: {\n module: this.engine.device.createShaderModule({\n code: vertexShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"isSafari\"]\n }),\n entryPoint: 'main'\n },\n fragmentStage: {\n module: this.engine.device.createShaderModule({\n code: fragmentShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"isSafari\"]\n }),\n entryPoint: 'main'\n }\n };\n }\n /**\n * @see https://gpuweb.github.io/gpuweb/#rasterization-state\n */\n\n }, {\n key: \"getDefaultRasterizationStateDescriptor\",\n value: function getDefaultRasterizationStateDescriptor() {\n return {\n frontFace: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"FrontFace\"].CCW,\n cullMode: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"CullMode\"].None,\n depthBias: 0,\n depthBiasSlopeScale: 0,\n depthBiasClamp: 0\n };\n }\n }, {\n key: \"buildUniformBindGroup\",\n value: function buildUniformBindGroup(uniforms) {\n var _this3 = this;\n\n var offset = 0; // FIXME: 所有 uniform 合并成一个 buffer,固定使用 Float32Array 存储,确实会造成一些内存的浪费\n\n var mergedUniformData = concatenate.apply(void 0, [Float32Array].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Object.keys(uniforms).map(function (uniformName) {\n if (uniforms[uniformName]) {\n _this3.uniformGPUBufferLayout.push({\n name: uniformName,\n offset: offset\n }); // @ts-ignore\n\n\n offset += (uniforms[uniformName].length || 1) * 4;\n return uniforms[uniformName];\n } else {\n // texture & framebuffer\n return [];\n }\n }))));\n var entries = [];\n var hasUniform = false;\n\n if (mergedUniformData.length) {\n hasUniform = true; // TODO: 所有 uniform 绑定到 slot 0,通过解析 Shader 代码判定可见性\n\n entries.push({\n // TODO: 暂时都绑定到 slot 0\n binding: 0,\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Vertex,\n // TODO: 暂时 VS 和 FS 都可见\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].UniformBuffer\n });\n } // 声明 texture & sampler\n\n\n Object.keys(uniforms).filter(function (uniformName) {\n return uniforms[uniformName] === null;\n }).forEach(function (uniformName, i) {\n _this3.uniformGPUBufferLayout.push({\n name: uniformName,\n offset: i * 2 + (hasUniform ? 1 : 0)\n });\n\n entries.push({\n // Sampler\n binding: i * 2 + (hasUniform ? 1 : 0),\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment,\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].Sampler\n }, {\n // Texture view\n binding: i * 2 + (hasUniform ? 1 : 0) + 1,\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment,\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].SampledTexture\n });\n });\n this.uniformsBindGroupLayout = this.engine.device.createBindGroupLayout({\n // 最新 API 0.0.22 版本使用 entries。Chrome Canary 84.0.4110.0 已实现。\n // 使用 bindings 会报 Warning: GPUBindGroupLayoutDescriptor.bindings is deprecated: renamed to entries\n // @see https://github.com/antvis/GWebGPUEngine/issues/5\n entries: entries\n });\n this.pipelineLayout = this.engine.device.createPipelineLayout({\n bindGroupLayouts: [this.uniformsBindGroupLayout]\n });\n\n if (hasUniform) {\n this.uniformBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_11__[\"default\"](this.engine, {\n // TODO: 处理 Struct 和 boolean\n // @ts-ignore\n data: mergedUniformData instanceof Array ? // @ts-ignore\n new Float32Array(mergedUniformData) : mergedUniformData,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BufferUsage\"].Uniform | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BufferUsage\"].CopyDst\n });\n }\n }\n }]);\n\n return WebGPUModel;\n}();\n\n\n//# sourceMappingURL=WebGPUModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVNb2RlbC5qcz81YTViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBFO0FBQ3RCO0FBQ1M7QUFDTztBQUNJO0FBQ0o7QUFDTjs7QUFFOUQsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVqZTtBQUNhO0FBQ2I7QUFDK0Q7QUFDeEU7O0FBRTFDO0FBQ0E7QUFDQTs7QUFFQSwwRkFBMEYsYUFBYTtBQUN2RztBQUNBOztBQUVBLG9DQUFvQyxxQkFBcUI7QUFDekQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsc0NBQXNDLHVCQUF1QjtBQUM3RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRTs7QUFFQTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQSxxYUFBcWE7O0FBRXJhO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOzs7QUFHakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsd0RBQVksY0FBYyxzREFBRTtBQUNqRSxvRUFBb0Usb0RBQW9EO0FBQ3hIO0FBQ0EsOEJBQThCLCtEQUFXO0FBQ3pDO0FBQ0EscUJBQXFCO0FBQ3JCLG1CQUFtQjtBQUNuQixxQ0FBcUMsa0ZBQThCO0FBQ25FO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsK0JBQStCLDRFQUF3QjtBQUN2RDtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLG9EQUFvRCxrQkFBa0Isc0VBQWU7QUFDckY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBLG1EQUFtRCxrQkFBa0Isc0VBQWUsdUJBQXVCOztBQUUzRyxpQ0FBaUM7O0FBRWpDO0FBQ0EsbUJBQW1CLG9FQUFPOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLEVBQUU7O0FBRWpCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSwwREFBMEQsd0VBQTJCO0FBQ3JGOztBQUVBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDRDQUE0Qyw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDL0Y7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNERBQVE7QUFDN0IsV0FBVztBQUNYO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDREQUFRO0FBQzdCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNFQUF5QjtBQUM1QyxrQkFBa0IscUVBQXdCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLHFCQUFxQjs7QUFFckIsOEVBQThFLCtFQUFrQjtBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTs7O0FBR2I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHdFQUEyQixZQUFZLHdFQUEyQjtBQUN4RjtBQUNBLGdCQUFnQix3RUFBMkI7QUFDM0MsU0FBUztBQUNULE9BQU87OztBQUdQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isd0VBQTJCO0FBQ2pELGdCQUFnQix3RUFBMkI7QUFDM0MsU0FBUztBQUNUO0FBQ0E7QUFDQSxzQkFBc0Isd0VBQTJCO0FBQ2pELGdCQUFnQix3RUFBMkI7QUFDM0MsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0EsaUNBQWlDLHNEQUFZO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdFQUEyQixXQUFXLHdFQUEyQjtBQUNsRixTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVpQztBQUNsQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVU1vZGVsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCI7XG5pbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgeyBnbCwgaXNTYWZhcmkgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcbmltcG9ydCB7IGV4dHJhY3RVbmlmb3JtcyB9IGZyb20gJy4uL3V0aWxzL3VuaWZvcm0nO1xuaW1wb3J0IHsgZ2V0Q29sb3JTdGF0ZURlc2NyaXB0b3JzLCBnZXRDdWxsTW9kZSwgZ2V0RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLCBwcmltaXRpdmVNYXAgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgV2ViR1BVQnVmZmVyIGZyb20gJy4vV2ViR1BVQnVmZmVyJztcblxuLy8gQHRzLWlnbm9yZVxuZnVuY3Rpb24gY29uY2F0ZW5hdGUocmVzdWx0Q29uc3RydWN0b3IpIHtcbiAgdmFyIHRvdGFsTGVuZ3RoID0gMDtcblxuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJyYXlzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcnJheXNbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgZm9yICh2YXIgX2kgPSAwLCBfYXJyYXlzID0gYXJyYXlzOyBfaSA8IF9hcnJheXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIGFyciA9IF9hcnJheXNbX2ldO1xuICAgIHRvdGFsTGVuZ3RoICs9IGFyci5sZW5ndGg7XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gbmV3IHJlc3VsdENvbnN0cnVjdG9yKHRvdGFsTGVuZ3RoKTtcbiAgdmFyIG9mZnNldCA9IDA7XG5cbiAgZm9yICh2YXIgX2kyID0gMCwgX2FycmF5czIgPSBhcnJheXM7IF9pMiA8IF9hcnJheXMyLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgX2FyciA9IF9hcnJheXMyW19pMl07XG4gICAgcmVzdWx0LnNldChfYXJyLCBvZmZzZXQpO1xuICAgIG9mZnNldCArPSBfYXJyLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbnZhciBXZWJHUFVNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiDnlKjkuo7lkI7nu63muLLmn5Pml7bliqjmgIHmm7TmlrBcbiAgICovXG5cbiAgLyoqXG4gICAqIHZlcnRleFxuICAgKi9cblxuICAvKipcbiAgICogaW5kaWNlcydzIGJ1ZmZlclxuICAgKi9cbiAgZnVuY3Rpb24gV2ViR1BVTW9kZWwoZW5naW5lLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdQVU1vZGVsKTtcblxuICAgIHRoaXMuZW5naW5lID0gZW5naW5lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5waXBlbGluZUxheW91dCA9IHZvaWQgMDtcbiAgICB0aGlzLnJlbmRlclBpcGVsaW5lID0gdm9pZCAwO1xuICAgIHRoaXMudW5pZm9ybXNCaW5kR3JvdXBMYXlvdXQgPSB2b2lkIDA7XG4gICAgdGhpcy51bmlmb3JtQmluZEdyb3VwID0gdm9pZCAwO1xuICAgIHRoaXMudW5pZm9ybUJ1ZmZlciA9IHZvaWQgMDtcbiAgICB0aGlzLnVuaWZvcm1zID0ge307XG4gICAgdGhpcy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0ID0gW107XG4gICAgdGhpcy5hdHRyaWJ1dGVDYWNoZSA9IHt9O1xuICAgIHRoaXMuaW5kZXhCdWZmZXIgPSB2b2lkIDA7XG4gICAgdGhpcy5pbmRleENvdW50ID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVU1vZGVsLCBbe1xuICAgIGtleTogXCJpbml0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfaW5pdCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIF90aGlzJG9wdGlvbnMsIHZzLCBmcywgYXR0cmlidXRlcywgdW5pZm9ybXMsIHByaW1pdGl2ZSwgY291bnQsIGVsZW1lbnRzLCBkZXB0aCwgYmxlbmQsIHN0ZW5jaWwsIGN1bGwsIGluc3RhbmNlcywgX3lpZWxkJHRoaXMkY29tcGlsZVBpLCB2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgdmVydGV4U3RhdGUsIGRlc2NyaXB0b3I7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfdGhpcyRvcHRpb25zID0gdGhpcy5vcHRpb25zLCB2cyA9IF90aGlzJG9wdGlvbnMudnMsIGZzID0gX3RoaXMkb3B0aW9ucy5mcywgYXR0cmlidXRlcyA9IF90aGlzJG9wdGlvbnMuYXR0cmlidXRlcywgdW5pZm9ybXMgPSBfdGhpcyRvcHRpb25zLnVuaWZvcm1zLCBwcmltaXRpdmUgPSBfdGhpcyRvcHRpb25zLnByaW1pdGl2ZSwgY291bnQgPSBfdGhpcyRvcHRpb25zLmNvdW50LCBlbGVtZW50cyA9IF90aGlzJG9wdGlvbnMuZWxlbWVudHMsIGRlcHRoID0gX3RoaXMkb3B0aW9ucy5kZXB0aCwgYmxlbmQgPSBfdGhpcyRvcHRpb25zLmJsZW5kLCBzdGVuY2lsID0gX3RoaXMkb3B0aW9ucy5zdGVuY2lsLCBjdWxsID0gX3RoaXMkb3B0aW9ucy5jdWxsLCBpbnN0YW5jZXMgPSBfdGhpcyRvcHRpb25zLmluc3RhbmNlczsgLy8gYnVpbGQgc2hhZGVycyBmaXJzdFxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yKHZzLCBmcywgbnVsbCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIF95aWVsZCR0aGlzJGNvbXBpbGVQaSA9IF9jb250ZXh0LnNlbnQ7XG4gICAgICAgICAgICAgICAgdmVydGV4U3RhZ2UgPSBfeWllbGQkdGhpcyRjb21waWxlUGkudmVydGV4U3RhZ2U7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnRTdGFnZSA9IF95aWVsZCR0aGlzJGNvbXBpbGVQaS5mcmFnbWVudFN0YWdlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHVuaWZvcm1zKSB7XG4gICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdW5pZm9ybSBiaW5kIGdyb3VwcyAmIGxheW91dFxuICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZFVuaWZvcm1CaW5kR3JvdXAodW5pZm9ybXMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50cykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleEJ1ZmZlciA9IGVsZW1lbnRzLmdldCgpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleENvdW50ID0gZWxlbWVudHMuaW5kZXhDb3VudDtcbiAgICAgICAgICAgICAgICB9IC8vIFRPRE86IGluc3RhbmNlZCBhcnJheVxuXG5cbiAgICAgICAgICAgICAgICB2ZXJ0ZXhTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgIHZlcnRleEJ1ZmZlcnM6IE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLm1hcChmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSwgaSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYXR0cmlidXRlID0gYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgX2F0dHJpYnV0ZSRnZXQgPSBhdHRyaWJ1dGUuZ2V0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheVN0cmlkZSA9IF9hdHRyaWJ1dGUkZ2V0LmFycmF5U3RyaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcE1vZGUgPSBfYXR0cmlidXRlJGdldC5zdGVwTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0cyA9IF9hdHRyaWJ1dGUkZ2V0LmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuYXR0cmlidXRlQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSBhdHRyaWJ1dGU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgYXJyYXlTdHJpZGU6IGFycmF5U3RyaWRlLFxuICAgICAgICAgICAgICAgICAgICAgIHN0ZXBNb2RlOiBzdGVwTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBhdHNcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yID0ge1xuICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQ6IHRoaXMuZW5naW5lLm1haW5QYXNzU2FtcGxlQ291bnQsXG4gICAgICAgICAgICAgICAgICBwcmltaXRpdmVUb3BvbG9neTogcHJpbWl0aXZlTWFwW3ByaW1pdGl2ZSB8fCBnbC5UUklBTkdMRVNdLFxuICAgICAgICAgICAgICAgICAgcmFzdGVyaXphdGlvblN0YXRlOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMuZ2V0RGVmYXVsdFJhc3Rlcml6YXRpb25TdGF0ZURlc2NyaXB0b3IoKSksIHt9LCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgZnJvbnRmYWNlXG4gICAgICAgICAgICAgICAgICAgIGN1bGxNb2RlOiBnZXRDdWxsTW9kZSh7XG4gICAgICAgICAgICAgICAgICAgICAgY3VsbDogY3VsbFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZTogZ2V0RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yKHtcbiAgICAgICAgICAgICAgICAgICAgZGVwdGg6IGRlcHRoLFxuICAgICAgICAgICAgICAgICAgICBzdGVuY2lsOiBzdGVuY2lsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIGNvbG9yU3RhdGVzOiBnZXRDb2xvclN0YXRlRGVzY3JpcHRvcnMoe1xuICAgICAgICAgICAgICAgICAgICBibGVuZDogYmxlbmRcbiAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZW5naW5lLm9wdGlvbnMuc3dhcENoYWluRm9ybWF0KSxcbiAgICAgICAgICAgICAgICAgIGxheW91dDogdGhpcy5waXBlbGluZUxheW91dCxcbiAgICAgICAgICAgICAgICAgIHZlcnRleFN0YWdlOiB2ZXJ0ZXhTdGFnZSxcbiAgICAgICAgICAgICAgICAgIGZyYWdtZW50U3RhZ2U6IGZyYWdtZW50U3RhZ2UsXG4gICAgICAgICAgICAgICAgICB2ZXJ0ZXhTdGF0ZTogdmVydGV4U3RhdGVcbiAgICAgICAgICAgICAgICB9OyAvLyBjcmVhdGUgcGlwZWxpbmVcblxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyUGlwZWxpbmUgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoZGVzY3JpcHRvcik7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0O1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcImFkZFVuaWZvcm1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZFVuaWZvcm1zKHVuaWZvcm1zKSB7XG4gICAgICB0aGlzLnVuaWZvcm1zID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLnVuaWZvcm1zKSwgZXh0cmFjdFVuaWZvcm1zKHVuaWZvcm1zKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRyYXdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZHJhdyhvcHRpb25zKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIHJlbmRlclBhc3MgPSB0aGlzLmVuZ2luZS5nZXRDdXJyZW50UmVuZGVyUGFzcygpO1xuXG4gICAgICB2YXIgdW5pZm9ybXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMudW5pZm9ybXMpLCBleHRyYWN0VW5pZm9ybXMob3B0aW9ucy51bmlmb3JtcyB8fCB7fSkpO1xuXG4gICAgICB2YXIgYmluZEdyb3VwQmluZGluZ3MgPSBbXTsgLy8gVE9ETzogdW5pZm9ybSDlj5HnlJ/kv67mlLlcblxuICAgICAgT2JqZWN0LmtleXModW5pZm9ybXMpLmZvckVhY2goZnVuY3Rpb24gKHVuaWZvcm1OYW1lKSB7XG4gICAgICAgIHZhciB0eXBlID0gX3R5cGVvZih1bmlmb3Jtc1t1bmlmb3JtTmFtZV0pO1xuXG4gICAgICAgIGlmICh0eXBlID09PSAnYm9vbGVhbicgfHwgdHlwZSA9PT0gJ251bWJlcicgfHwgQXJyYXkuaXNBcnJheSh1bmlmb3Jtc1t1bmlmb3JtTmFtZV0pIHx8IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdW5pZm9ybXNbdW5pZm9ybU5hbWVdLkJZVEVTX1BFUl9FTEVNRU5UKSB7XG4gICAgICAgICAgdmFyIF90aGlzMiR1bmlmb3JtR1BVQnVmZjtcblxuICAgICAgICAgIHZhciBvZmZzZXQgPSAoX3RoaXMyJHVuaWZvcm1HUFVCdWZmID0gX3RoaXMyLnVuaWZvcm1HUFVCdWZmZXJMYXlvdXQuZmluZChmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gdW5pZm9ybU5hbWU7XG4gICAgICAgICAgfSkpID09PSBudWxsIHx8IF90aGlzMiR1bmlmb3JtR1BVQnVmZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMyJHVuaWZvcm1HUFVCdWZmLm9mZnNldDtcblxuICAgICAgICAgIGlmIChvZmZzZXQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIF90aGlzMi51bmlmb3JtQnVmZmVyLnN1YkRhdGEoe1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGRhdGE6IHVuaWZvcm1zW3VuaWZvcm1OYW1lXSxcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBfdGhpczIkdW5pZm9ybUdQVUJ1ZmYyO1xuXG4gICAgICAgICAgdmFyIF9vZmZzZXQgPSAoX3RoaXMyJHVuaWZvcm1HUFVCdWZmMiA9IF90aGlzMi51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYyLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gdW5pZm9ybU5hbWU7XG4gICAgICAgICAgfSkpID09PSBudWxsIHx8IF90aGlzMiR1bmlmb3JtR1BVQnVmZjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiR1bmlmb3JtR1BVQnVmZjIub2Zmc2V0O1xuXG4gICAgICAgICAgaWYgKF9vZmZzZXQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciB0ZXh0dXJlT3JGcmFtZWJ1ZmZlciA9IHVuaWZvcm1zW3VuaWZvcm1OYW1lXS5nZXQoKTtcblxuICAgICAgICAgICAgdmFyIF9yZWYzID0gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGV4dHVyZU9yRnJhbWVidWZmZXIuY29sb3IgfHwgdGV4dHVyZU9yRnJhbWVidWZmZXIsXG4gICAgICAgICAgICAgICAgdGV4dHVyZSA9IF9yZWYzLnRleHR1cmUsXG4gICAgICAgICAgICAgICAgc2FtcGxlciA9IF9yZWYzLnNhbXBsZXI7XG5cbiAgICAgICAgICAgIGlmIChzYW1wbGVyKSB7XG4gICAgICAgICAgICAgIGJpbmRHcm91cEJpbmRpbmdzLnB1c2goe1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBiaW5kaW5nOiBfb2Zmc2V0LFxuICAgICAgICAgICAgICAgIHJlc291cmNlOiBzYW1wbGVyXG4gICAgICAgICAgICAgIH0pOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgX29mZnNldCsrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBiaW5kR3JvdXBCaW5kaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBiaW5kaW5nOiBfb2Zmc2V0LFxuICAgICAgICAgICAgICByZXNvdXJjZTogdGV4dHVyZS5jcmVhdGVWaWV3KClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLnVuaWZvcm1CdWZmZXIpIHtcbiAgICAgICAgYmluZEdyb3VwQmluZGluZ3NbMF0gPSB7XG4gICAgICAgICAgYmluZGluZzogMCxcbiAgICAgICAgICByZXNvdXJjZToge1xuICAgICAgICAgICAgYnVmZmVyOiB0aGlzLnVuaWZvcm1CdWZmZXIuZ2V0KCkgLy8g6L+U5ZueIEdQVUJ1ZmZlciDljp/nlJ/lr7nosaFcblxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51bmlmb3JtQmluZEdyb3VwID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7XG4gICAgICAgIGxheW91dDogdGhpcy51bmlmb3Jtc0JpbmRHcm91cExheW91dCxcbiAgICAgICAgZW50cmllczogYmluZEdyb3VwQmluZGluZ3NcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5yZW5kZXJQaXBlbGluZSkge1xuICAgICAgICByZW5kZXJQYXNzLnNldFBpcGVsaW5lKHRoaXMucmVuZGVyUGlwZWxpbmUpO1xuICAgICAgfVxuXG4gICAgICByZW5kZXJQYXNzLnNldEJpbmRHcm91cCgwLCB0aGlzLnVuaWZvcm1CaW5kR3JvdXApO1xuXG4gICAgICBpZiAodGhpcy5pbmRleEJ1ZmZlcikge1xuICAgICAgICByZW5kZXJQYXNzLnNldEluZGV4QnVmZmVyKHRoaXMuaW5kZXhCdWZmZXIuZ2V0KCksIFdlYkdQVUNvbnN0YW50cy5JbmRleEZvcm1hdC5VaW50MzIsIDApO1xuICAgICAgfVxuXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmF0dHJpYnV0ZUNhY2hlKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGVOYW1lLCBpKSB7XG4gICAgICAgIHJlbmRlclBhc3Muc2V0VmVydGV4QnVmZmVyKDAgKyBpLCBfdGhpczIuYXR0cmlidXRlQ2FjaGVbYXR0cmlidXRlTmFtZV0uZ2V0KCkuYnVmZmVyLCAwKTtcbiAgICAgIH0pOyAvLyByZW5kZXJQYXNzLmRyYXcodmVydGljZXNDb3VudCwgaW5zdGFuY2VzQ291bnQsIHZlcnRpY2VzU3RhcnQsIDApO1xuXG4gICAgICBpZiAodGhpcy5pbmRleEJ1ZmZlcikge1xuICAgICAgICByZW5kZXJQYXNzLmRyYXdJbmRleGVkKHRoaXMuaW5kZXhDb3VudCwgdGhpcy5vcHRpb25zLmluc3RhbmNlcyB8fCAxLCAwLCAwLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbmRlclBhc3MuZHJhdyh0aGlzLm9wdGlvbnMuY291bnQgfHwgMCwgdGhpcy5vcHRpb25zLmluc3RhbmNlcyB8fCAwLCAwLCAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9jb21waWxlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMih2ZXJ0ZXhDb2RlLCBmcmFnbWVudENvZGUsIGRlZmluZXMpIHtcbiAgICAgICAgdmFyIHNoYWRlclZlcnNpb24sIHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXI7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHNoYWRlclZlcnNpb24gPSAnI3ZlcnNpb24gNDUwXFxuJztcbiAgICAgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXIgPSB2ZXJ0ZXhDb2RlO1xuICAgICAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyID0gZnJhZ21lbnRDb2RlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZW5naW5lLm9wdGlvbnMudXNlV0dTTCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21waWxlU2hhZGVyVG9TcGlyVih2ZXJ0ZXhDb2RlLCAndmVydGV4Jywgc2hhZGVyVmVyc2lvbik7XG5cbiAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHZlcnRleFNoYWRlciA9IF9jb250ZXh0Mi5zZW50O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gOTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21waWxlU2hhZGVyVG9TcGlyVihmcmFnbWVudENvZGUsICdmcmFnbWVudCcsIHNoYWRlclZlcnNpb24pO1xuXG4gICAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICBmcmFnbWVudFNoYWRlciA9IF9jb250ZXh0Mi5zZW50O1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIiwgdGhpcy5jcmVhdGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcih2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBjb21waWxlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IoX3gsIF94MiwgX3gzKSB7XG4gICAgICAgIHJldHVybiBfY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21waWxlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVNoYWRlclRvU3BpclZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcGlsZVNoYWRlclRvU3BpclYoc291cmNlLCB0eXBlLCBzaGFkZXJWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21waWxlUmF3U2hhZGVyVG9TcGlyVihzaGFkZXJWZXJzaW9uICsgc291cmNlLCB0eXBlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVJhd1NoYWRlclRvU3BpclZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcGlsZVJhd1NoYWRlclRvU3BpclYoc291cmNlLCB0eXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmdpbmUuZ2xzbGFuZy5jb21waWxlR0xTTChzb3VyY2UsIHR5cGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcih2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2ZXJ0ZXhTdGFnZToge1xuICAgICAgICAgIG1vZHVsZTogdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7XG4gICAgICAgICAgICBjb2RlOiB2ZXJ0ZXhTaGFkZXIsXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBpc1dITFNMOiBpc1NhZmFyaVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGVudHJ5UG9pbnQ6ICdtYWluJ1xuICAgICAgICB9LFxuICAgICAgICBmcmFnbWVudFN0YWdlOiB7XG4gICAgICAgICAgbW9kdWxlOiB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHtcbiAgICAgICAgICAgIGNvZGU6IGZyYWdtZW50U2hhZGVyLFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaXNXSExTTDogaXNTYWZhcmlcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBlbnRyeVBvaW50OiAnbWFpbidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNyYXN0ZXJpemF0aW9uLXN0YXRlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXREZWZhdWx0UmFzdGVyaXphdGlvblN0YXRlRGVzY3JpcHRvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZWZhdWx0UmFzdGVyaXphdGlvblN0YXRlRGVzY3JpcHRvcigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZyb250RmFjZTogV2ViR1BVQ29uc3RhbnRzLkZyb250RmFjZS5DQ1csXG4gICAgICAgIGN1bGxNb2RlOiBXZWJHUFVDb25zdGFudHMuQ3VsbE1vZGUuTm9uZSxcbiAgICAgICAgZGVwdGhCaWFzOiAwLFxuICAgICAgICBkZXB0aEJpYXNTbG9wZVNjYWxlOiAwLFxuICAgICAgICBkZXB0aEJpYXNDbGFtcDogMFxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYnVpbGRVbmlmb3JtQmluZEdyb3VwXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJ1aWxkVW5pZm9ybUJpbmRHcm91cCh1bmlmb3Jtcykge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBvZmZzZXQgPSAwOyAvLyBGSVhNRTog5omA5pyJIHVuaWZvcm0g5ZCI5bm25oiQ5LiA5LiqIGJ1ZmZlcu+8jOWbuuWumuS9v+eUqCBGbG9hdDMyQXJyYXkg5a2Y5YKo77yM56Gu5a6e5Lya6YCg5oiQ5LiA5Lqb5YaF5a2Y55qE5rWq6LS5XG5cbiAgICAgIHZhciBtZXJnZWRVbmlmb3JtRGF0YSA9IGNvbmNhdGVuYXRlLmFwcGx5KHZvaWQgMCwgW0Zsb2F0MzJBcnJheV0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShPYmplY3Qua2V5cyh1bmlmb3JtcykubWFwKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgICAgICBpZiAodW5pZm9ybXNbdW5pZm9ybU5hbWVdKSB7XG4gICAgICAgICAgX3RoaXMzLnVuaWZvcm1HUFVCdWZmZXJMYXlvdXQucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiB1bmlmb3JtTmFtZSxcbiAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgICAgfSk7IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgb2Zmc2V0ICs9ICh1bmlmb3Jtc1t1bmlmb3JtTmFtZV0ubGVuZ3RoIHx8IDEpICogNDtcbiAgICAgICAgICByZXR1cm4gdW5pZm9ybXNbdW5pZm9ybU5hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRleHR1cmUgJiBmcmFtZWJ1ZmZlclxuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgfSkpKSk7XG4gICAgICB2YXIgZW50cmllcyA9IFtdO1xuICAgICAgdmFyIGhhc1VuaWZvcm0gPSBmYWxzZTtcblxuICAgICAgaWYgKG1lcmdlZFVuaWZvcm1EYXRhLmxlbmd0aCkge1xuICAgICAgICBoYXNVbmlmb3JtID0gdHJ1ZTsgLy8gVE9ETzog5omA5pyJIHVuaWZvcm0g57uR5a6a5YiwIHNsb3QgMO+8jOmAmui/h+ino+aekCBTaGFkZXIg5Luj56CB5Yik5a6a5Y+v6KeB5oCnXG5cbiAgICAgICAgZW50cmllcy5wdXNoKHtcbiAgICAgICAgICAvLyBUT0RPOiDmmoLml7bpg73nu5HlrprliLAgc2xvdCAwXG4gICAgICAgICAgYmluZGluZzogMCxcbiAgICAgICAgICB2aXNpYmlsaXR5OiBXZWJHUFVDb25zdGFudHMuU2hhZGVyU3RhZ2UuRnJhZ21lbnQgfCBXZWJHUFVDb25zdGFudHMuU2hhZGVyU3RhZ2UuVmVydGV4LFxuICAgICAgICAgIC8vIFRPRE86IOaaguaXtiBWUyDlkowgRlMg6YO95Y+v6KeBXG4gICAgICAgICAgdHlwZTogV2ViR1BVQ29uc3RhbnRzLkJpbmRpbmdUeXBlLlVuaWZvcm1CdWZmZXJcbiAgICAgICAgfSk7XG4gICAgICB9IC8vIOWjsOaYjiB0ZXh0dXJlICYgc2FtcGxlclxuXG5cbiAgICAgIE9iamVjdC5rZXlzKHVuaWZvcm1zKS5maWx0ZXIoZnVuY3Rpb24gKHVuaWZvcm1OYW1lKSB7XG4gICAgICAgIHJldHVybiB1bmlmb3Jtc1t1bmlmb3JtTmFtZV0gPT09IG51bGw7XG4gICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSwgaSkge1xuICAgICAgICBfdGhpczMudW5pZm9ybUdQVUJ1ZmZlckxheW91dC5wdXNoKHtcbiAgICAgICAgICBuYW1lOiB1bmlmb3JtTmFtZSxcbiAgICAgICAgICBvZmZzZXQ6IGkgKiAyICsgKGhhc1VuaWZvcm0gPyAxIDogMClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZW50cmllcy5wdXNoKHtcbiAgICAgICAgICAvLyBTYW1wbGVyXG4gICAgICAgICAgYmluZGluZzogaSAqIDIgKyAoaGFzVW5pZm9ybSA/IDEgOiAwKSxcbiAgICAgICAgICB2aXNpYmlsaXR5OiBXZWJHUFVDb25zdGFudHMuU2hhZGVyU3RhZ2UuRnJhZ21lbnQsXG4gICAgICAgICAgdHlwZTogV2ViR1BVQ29uc3RhbnRzLkJpbmRpbmdUeXBlLlNhbXBsZXJcbiAgICAgICAgfSwge1xuICAgICAgICAgIC8vIFRleHR1cmUgdmlld1xuICAgICAgICAgIGJpbmRpbmc6IGkgKiAyICsgKGhhc1VuaWZvcm0gPyAxIDogMCkgKyAxLFxuICAgICAgICAgIHZpc2liaWxpdHk6IFdlYkdQVUNvbnN0YW50cy5TaGFkZXJTdGFnZS5GcmFnbWVudCxcbiAgICAgICAgICB0eXBlOiBXZWJHUFVDb25zdGFudHMuQmluZGluZ1R5cGUuU2FtcGxlZFRleHR1cmVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudW5pZm9ybXNCaW5kR3JvdXBMYXlvdXQgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHtcbiAgICAgICAgLy8g5pyA5pawIEFQSSAwLjAuMjIg54mI5pys5L2/55SoIGVudHJpZXPjgIJDaHJvbWUgQ2FuYXJ5IDg0LjAuNDExMC4wIOW3suWunueOsOOAglxuICAgICAgICAvLyDkvb/nlKggYmluZGluZ3Mg5Lya5oqlIFdhcm5pbmc6IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuYmluZGluZ3MgaXMgZGVwcmVjYXRlZDogcmVuYW1lZCB0byBlbnRyaWVzXG4gICAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9HV2ViR1BVRW5naW5lL2lzc3Vlcy81XG4gICAgICAgIGVudHJpZXM6IGVudHJpZXNcbiAgICAgIH0pO1xuICAgICAgdGhpcy5waXBlbGluZUxheW91dCA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7XG4gICAgICAgIGJpbmRHcm91cExheW91dHM6IFt0aGlzLnVuaWZvcm1zQmluZEdyb3VwTGF5b3V0XVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChoYXNVbmlmb3JtKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybUJ1ZmZlciA9IG5ldyBXZWJHUFVCdWZmZXIodGhpcy5lbmdpbmUsIHtcbiAgICAgICAgICAvLyBUT0RPOiDlpITnkIYgU3RydWN0IOWSjCBib29sZWFuXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGRhdGE6IG1lcmdlZFVuaWZvcm1EYXRhIGluc3RhbmNlb2YgQXJyYXkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgbmV3IEZsb2F0MzJBcnJheShtZXJnZWRVbmlmb3JtRGF0YSkgOiBtZXJnZWRVbmlmb3JtRGF0YSxcbiAgICAgICAgICB1c2FnZTogV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLlVuaWZvcm0gfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2ViR1BVTW9kZWw7XG59KCk7XG5cbmV4cG9ydCB7IFdlYkdQVU1vZGVsIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdlYkdQVU1vZGVsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js": /*!*************************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUTexture2D; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/constants.js\");\n\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar WebGPUTexture2D = /*#__PURE__*/function () {\n function WebGPUTexture2D(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUTexture2D);\n\n this.engine = engine;\n this.options = options;\n this.texture = void 0;\n this.sampler = void 0;\n this.width = void 0;\n this.height = void 0;\n this.createTexture();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUTexture2D, [{\n key: \"get\",\n value: function get() {\n return {\n texture: this.texture,\n sampler: this.sampler\n };\n }\n }, {\n key: \"update\",\n value: function update() {// TODO\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n // TODO: it seems that Texture doesn't support `resize`\n if (width !== this.width || height !== this.height) {\n this.destroy();\n this.createTexture();\n }\n\n this.width = width;\n this.height = height;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.texture) {\n this.texture.destroy();\n }\n }\n }, {\n key: \"createTexture\",\n value: function createTexture() {\n var _this$options = this.options,\n data = _this$options.data,\n _this$options$type = _this$options.type,\n type = _this$options$type === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE : _this$options$type,\n width = _this$options.width,\n height = _this$options.height,\n _this$options$flipY = _this$options.flipY,\n flipY = _this$options$flipY === void 0 ? false : _this$options$flipY,\n _this$options$format = _this$options.format,\n format = _this$options$format === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].RGBA : _this$options$format,\n _this$options$mipmap = _this$options.mipmap,\n mipmap = _this$options$mipmap === void 0 ? false : _this$options$mipmap,\n _this$options$wrapS = _this$options.wrapS,\n wrapS = _this$options$wrapS === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _this$options$wrapS,\n _this$options$wrapT = _this$options.wrapT,\n wrapT = _this$options$wrapT === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _this$options$wrapT,\n _this$options$aniso = _this$options.aniso,\n aniso = _this$options$aniso === void 0 ? 0 : _this$options$aniso,\n _this$options$alignme = _this$options.alignment,\n alignment = _this$options$alignme === void 0 ? 1 : _this$options$alignme,\n _this$options$premult = _this$options.premultiplyAlpha,\n premultiplyAlpha = _this$options$premult === void 0 ? false : _this$options$premult,\n _this$options$mag = _this$options.mag,\n mag = _this$options$mag === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _this$options$mag,\n _this$options$min = _this$options.min,\n min = _this$options$min === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _this$options$min,\n _this$options$colorSp = _this$options.colorSpace,\n colorSpace = _this$options$colorSp === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].BROWSER_DEFAULT_WEBGL : _this$options$colorSp,\n usage = _this$options.usage;\n this.width = width;\n this.height = height;\n this.texture = this.engine.device.createTexture({\n size: [width, height, 1],\n // TODO: arrayLayerCount is deprecated: use size.depth\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n // TODO: https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-miplevelcount\n sampleCount: 1,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureDimension\"].E2d,\n format: _constants__WEBPACK_IMPORTED_MODULE_4__[\"formatMap\"][format],\n // could throw texture binding usage mismatch\n usage: usage || _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].Sampled | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].CopyDst\n });\n\n if (!usage || usage & _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].Sampled) {\n this.sampler = this.engine.device.createSampler({\n addressModeU: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapS],\n addressModeV: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapT],\n addressModeW: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapS],\n // TODO: same as addressModeU\n magFilter: _constants__WEBPACK_IMPORTED_MODULE_4__[\"filterMap\"][mag],\n minFilter: _constants__WEBPACK_IMPORTED_MODULE_4__[\"filterMap\"][min],\n maxAnisotropy: aniso // @see https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-maxanisotropy\n\n });\n }\n }\n }]);\n\n return WebGPUTexture2D;\n}();\n\n\n//# sourceMappingURL=WebGPUTexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVUZXh0dXJlMkQuanM/ZDExMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQ3JCO0FBQ3VCO0FBQ0E7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELHNEQUFFO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsc0RBQUU7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELHNEQUFFO0FBQ3JEO0FBQ0EsbURBQW1ELHNEQUFFO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLHNEQUFFO0FBQ2pEO0FBQ0EsK0NBQStDLHNEQUFFO0FBQ2pEO0FBQ0EsMERBQTBELHNEQUFFO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDZFQUFnQztBQUNuRCxnQkFBZ0Isb0RBQVM7QUFDekI7QUFDQSx3QkFBd0IseUVBQTRCLFdBQVcseUVBQTRCO0FBQzNGLE9BQU87O0FBRVAsNEJBQTRCLHlFQUE0QjtBQUN4RDtBQUNBLHdCQUF3QixzREFBVztBQUNuQyx3QkFBd0Isc0RBQVc7QUFDbkMsd0JBQXdCLHNEQUFXO0FBQ25DO0FBQ0EscUJBQXFCLG9EQUFTO0FBQzlCLHFCQUFxQixvREFBUztBQUM5Qjs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVxQztBQUN0QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUyRC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBmaWx0ZXJNYXAsIGZvcm1hdE1hcCwgd3JhcE1vZGVNYXAgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKipcbiAqIGFkYXB0b3IgZm9yIHJlZ2wuQnVmZmVyXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNidWZmZXJzXG4gKi9cblxudmFyIFdlYkdQVVRleHR1cmUyRCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdQVVRleHR1cmUyRChlbmdpbmUsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR1BVVGV4dHVyZTJEKTtcblxuICAgIHRoaXMuZW5naW5lID0gZW5naW5lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy50ZXh0dXJlID0gdm9pZCAwO1xuICAgIHRoaXMuc2FtcGxlciA9IHZvaWQgMDtcbiAgICB0aGlzLndpZHRoID0gdm9pZCAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMuY3JlYXRlVGV4dHVyZSgpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVVRleHR1cmUyRCwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRleHR1cmU6IHRoaXMudGV4dHVyZSxcbiAgICAgICAgc2FtcGxlcjogdGhpcy5zYW1wbGVyXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlKCkgey8vIFRPRE9cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVzaXplXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2l6ZShfcmVmKSB7XG4gICAgICB2YXIgd2lkdGggPSBfcmVmLndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF9yZWYuaGVpZ2h0O1xuXG4gICAgICAvLyBUT0RPOiBpdCBzZWVtcyB0aGF0IFRleHR1cmUgZG9lc24ndCBzdXBwb3J0IGByZXNpemVgXG4gICAgICBpZiAod2lkdGggIT09IHRoaXMud2lkdGggfHwgaGVpZ2h0ICE9PSB0aGlzLmhlaWdodCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5jcmVhdGVUZXh0dXJlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICBpZiAodGhpcy50ZXh0dXJlKSB7XG4gICAgICAgIHRoaXMudGV4dHVyZS5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVRleHR1cmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlVGV4dHVyZSgpIHtcbiAgICAgIHZhciBfdGhpcyRvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuICAgICAgICAgIGRhdGEgPSBfdGhpcyRvcHRpb25zLmRhdGEsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyR0eXBlID0gX3RoaXMkb3B0aW9ucy50eXBlLFxuICAgICAgICAgIHR5cGUgPSBfdGhpcyRvcHRpb25zJHR5cGUgPT09IHZvaWQgMCA/IGdsLlVOU0lHTkVEX0JZVEUgOiBfdGhpcyRvcHRpb25zJHR5cGUsXG4gICAgICAgICAgd2lkdGggPSBfdGhpcyRvcHRpb25zLndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF90aGlzJG9wdGlvbnMuaGVpZ2h0LFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkZmxpcFkgPSBfdGhpcyRvcHRpb25zLmZsaXBZLFxuICAgICAgICAgIGZsaXBZID0gX3RoaXMkb3B0aW9ucyRmbGlwWSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfdGhpcyRvcHRpb25zJGZsaXBZLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkZm9ybWF0ID0gX3RoaXMkb3B0aW9ucy5mb3JtYXQsXG4gICAgICAgICAgZm9ybWF0ID0gX3RoaXMkb3B0aW9ucyRmb3JtYXQgPT09IHZvaWQgMCA/IGdsLlJHQkEgOiBfdGhpcyRvcHRpb25zJGZvcm1hdCxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJG1pcG1hcCA9IF90aGlzJG9wdGlvbnMubWlwbWFwLFxuICAgICAgICAgIG1pcG1hcCA9IF90aGlzJG9wdGlvbnMkbWlwbWFwID09PSB2b2lkIDAgPyBmYWxzZSA6IF90aGlzJG9wdGlvbnMkbWlwbWFwLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkd3JhcFMgPSBfdGhpcyRvcHRpb25zLndyYXBTLFxuICAgICAgICAgIHdyYXBTID0gX3RoaXMkb3B0aW9ucyR3cmFwUyA9PT0gdm9pZCAwID8gZ2wuQ0xBTVBfVE9fRURHRSA6IF90aGlzJG9wdGlvbnMkd3JhcFMsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyR3cmFwVCA9IF90aGlzJG9wdGlvbnMud3JhcFQsXG4gICAgICAgICAgd3JhcFQgPSBfdGhpcyRvcHRpb25zJHdyYXBUID09PSB2b2lkIDAgPyBnbC5DTEFNUF9UT19FREdFIDogX3RoaXMkb3B0aW9ucyR3cmFwVCxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJGFuaXNvID0gX3RoaXMkb3B0aW9ucy5hbmlzbyxcbiAgICAgICAgICBhbmlzbyA9IF90aGlzJG9wdGlvbnMkYW5pc28gPT09IHZvaWQgMCA/IDAgOiBfdGhpcyRvcHRpb25zJGFuaXNvLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkYWxpZ25tZSA9IF90aGlzJG9wdGlvbnMuYWxpZ25tZW50LFxuICAgICAgICAgIGFsaWdubWVudCA9IF90aGlzJG9wdGlvbnMkYWxpZ25tZSA9PT0gdm9pZCAwID8gMSA6IF90aGlzJG9wdGlvbnMkYWxpZ25tZSxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJHByZW11bHQgPSBfdGhpcyRvcHRpb25zLnByZW11bHRpcGx5QWxwaGEsXG4gICAgICAgICAgcHJlbXVsdGlwbHlBbHBoYSA9IF90aGlzJG9wdGlvbnMkcHJlbXVsdCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfdGhpcyRvcHRpb25zJHByZW11bHQsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyRtYWcgPSBfdGhpcyRvcHRpb25zLm1hZyxcbiAgICAgICAgICBtYWcgPSBfdGhpcyRvcHRpb25zJG1hZyA9PT0gdm9pZCAwID8gZ2wuTkVBUkVTVCA6IF90aGlzJG9wdGlvbnMkbWFnLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkbWluID0gX3RoaXMkb3B0aW9ucy5taW4sXG4gICAgICAgICAgbWluID0gX3RoaXMkb3B0aW9ucyRtaW4gPT09IHZvaWQgMCA/IGdsLk5FQVJFU1QgOiBfdGhpcyRvcHRpb25zJG1pbixcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJGNvbG9yU3AgPSBfdGhpcyRvcHRpb25zLmNvbG9yU3BhY2UsXG4gICAgICAgICAgY29sb3JTcGFjZSA9IF90aGlzJG9wdGlvbnMkY29sb3JTcCA9PT0gdm9pZCAwID8gZ2wuQlJPV1NFUl9ERUZBVUxUX1dFQkdMIDogX3RoaXMkb3B0aW9ucyRjb2xvclNwLFxuICAgICAgICAgIHVzYWdlID0gX3RoaXMkb3B0aW9ucy51c2FnZTtcbiAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgdGhpcy50ZXh0dXJlID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVRleHR1cmUoe1xuICAgICAgICBzaXplOiBbd2lkdGgsIGhlaWdodCwgMV0sXG4gICAgICAgIC8vIFRPRE86IGFycmF5TGF5ZXJDb3VudCBpcyBkZXByZWNhdGVkOiB1c2Ugc2l6ZS5kZXB0aFxuICAgICAgICAvLyBhcnJheUxheWVyQ291bnQ6IDEsXG4gICAgICAgIG1pcExldmVsQ291bnQ6IDEsXG4gICAgICAgIC8vIFRPRE86IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHV0ZXh0dXJldmlld2Rlc2NyaXB0b3ItbWlwbGV2ZWxjb3VudFxuICAgICAgICBzYW1wbGVDb3VudDogMSxcbiAgICAgICAgZGltZW5zaW9uOiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZURpbWVuc2lvbi5FMmQsXG4gICAgICAgIGZvcm1hdDogZm9ybWF0TWFwW2Zvcm1hdF0sXG4gICAgICAgIC8vIGNvdWxkIHRocm93IHRleHR1cmUgYmluZGluZyB1c2FnZSBtaXNtYXRjaFxuICAgICAgICB1c2FnZTogdXNhZ2UgfHwgV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVVc2FnZS5TYW1wbGVkIHwgV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVVc2FnZS5Db3B5RHN0XG4gICAgICB9KTtcblxuICAgICAgaWYgKCF1c2FnZSB8fCB1c2FnZSAmIFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuU2FtcGxlZCkge1xuICAgICAgICB0aGlzLnNhbXBsZXIgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlU2FtcGxlcih7XG4gICAgICAgICAgYWRkcmVzc01vZGVVOiB3cmFwTW9kZU1hcFt3cmFwU10sXG4gICAgICAgICAgYWRkcmVzc01vZGVWOiB3cmFwTW9kZU1hcFt3cmFwVF0sXG4gICAgICAgICAgYWRkcmVzc01vZGVXOiB3cmFwTW9kZU1hcFt3cmFwU10sXG4gICAgICAgICAgLy8gVE9ETzogc2FtZSBhcyBhZGRyZXNzTW9kZVVcbiAgICAgICAgICBtYWdGaWx0ZXI6IGZpbHRlck1hcFttYWddLFxuICAgICAgICAgIG1pbkZpbHRlcjogZmlsdGVyTWFwW21pbl0sXG4gICAgICAgICAgbWF4QW5pc290cm9weTogYW5pc28gLy8gQHNlZSBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1c2FtcGxlcmRlc2NyaXB0b3ItbWF4YW5pc290cm9weVxuXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVUZXh0dXJlMkQ7XG59KCk7XG5cbmV4cG9ydCB7IFdlYkdQVVRleHR1cmUyRCBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XZWJHUFVUZXh0dXJlMkQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/constants.js": /*!*******************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/constants.js ***! \*******************************************************************/ /*! exports provided: primitiveMap, depthFuncMap, blendEquationMap, blendFuncMap, formatMap, filterMap, wrapModeMap, getCullMode, getDepthStencilStateDescriptor, getColorStateDescriptors */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"primitiveMap\", function() { return primitiveMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"depthFuncMap\", function() { return depthFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendEquationMap\", function() { return blendEquationMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendFuncMap\", function() { return blendFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatMap\", function() { return formatMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterMap\", function() { return filterMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapModeMap\", function() { return wrapModeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCullMode\", function() { return getCullMode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDepthStencilStateDescriptor\", function() { return getDepthStencilStateDescriptor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColorStateDescriptors\", function() { return getColorStateDescriptors; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__);\n\n\nvar _primitiveMap, _depthFuncMap, _blendEquationMap, _blendFuncMap, _formatMap, _filterMap, _wrapModeMap;\n\n\n // WebGPU 不支持 LINE_LOOP & TRIANGLE_FAN\n\nvar primitiveMap = (_primitiveMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].POINTS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].PointList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINES, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_LOOP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_STRIP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineStrip), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLES, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_FAN, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_STRIP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleStrip), _primitiveMap);\nvar depthFuncMap = (_depthFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Never), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Always), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Less), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].LessEqual), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Greater), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].GreaterEqual), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Equal), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].NotEqual), _depthFuncMap);\nvar blendEquationMap = (_blendEquationMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Add), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIN_EXT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Min), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MAX_EXT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Max), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_SUBTRACT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Subtract), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_REVERSE_SUBTRACT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].ReverseSubtract), _blendEquationMap); // @see https://gpuweb.github.io/gpuweb/#blend-state\n// 不支持 'constant alpha' 和 'one minus constant alpha'\n\nvar blendFuncMap = (_blendFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].Zero), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].One), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusSrcColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusSrcAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].DstColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusDstColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].DstAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusDstAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].BlendColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusBlendColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA_SATURATE, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcAlphaSaturated), _blendFuncMap); // @see https://gpuweb.github.io/gpuweb/#texture-formats\n\nvar formatMap = (_formatMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALPHA, 'r8unorm'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA, 'rgba8unorm'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_COMPONENT, 'depth32float'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_STENCIL, 'depth24plus-stencil8'), _formatMap); // @see https://gpuweb.github.io/gpuweb/#enumdef-gpufiltermode\n\nvar filterMap = (_filterMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST, 'nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR, 'linear'), _filterMap); // @see https://gpuweb.github.io/gpuweb/#enumdef-gpuaddressmode\n\nvar wrapModeMap = (_wrapModeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPEAT, 'repeat'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CLAMP_TO_EDGE, 'clamp-to-edge'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIRRORED_REPEAT, 'mirror-repeat'), _wrapModeMap);\nfunction getCullMode(_ref) {\n var cull = _ref.cull;\n\n if (!cull || !cull.enable) {\n return _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].None;\n }\n\n if (cull.face) {\n return cull.face === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FRONT ? _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].Front : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].Back;\n }\n}\nfunction getDepthStencilStateDescriptor(_ref2) {\n var depth = _ref2.depth,\n stencil = _ref2.stencil;\n // TODO: stencil\n var stencilFrontBack = {\n compare: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Always,\n depthFailOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep,\n failOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep,\n passOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep\n };\n return {\n depthWriteEnabled: depth && depth.enable,\n depthCompare: depthFuncMap[(depth === null || depth === void 0 ? void 0 : depth.func) || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS],\n format: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"TextureFormat\"].Depth24PlusStencil8,\n stencilFront: stencilFrontBack,\n stencilBack: stencilFrontBack,\n stencilReadMask: 0xffffffff,\n stencilWriteMask: 0xffffffff\n };\n}\n/**\n * @see https://gpuweb.github.io/gpuweb/#color-state\n */\n\nfunction getColorStateDescriptors(_ref3, swapChainFormat) {\n var blend = _ref3.blend;\n return [{\n format: swapChainFormat,\n // https://gpuweb.github.io/gpuweb/#blend-state\n alphaBlend: {\n srcFactor: blendFuncMap[blend && blend.func && blend.func.srcAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE],\n dstFactor: blendFuncMap[blend && blend.func && blend.func.dstAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO],\n operation: blendEquationMap[blend && blend.equation && blend.equation.alpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD]\n },\n colorBlend: {\n srcFactor: blendFuncMap[blend && blend.func && blend.func.srcRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE],\n dstFactor: blendFuncMap[blend && blend.func && blend.func.dstRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO],\n operation: blendEquationMap[blend && blend.equation && blend.equation.rgb || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD]\n },\n writeMask: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"ColorWrite\"].All\n }];\n}\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9jb25zdGFudHMuanM/MTk2ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTs7QUFFcEU7O0FBRXlDO0FBQ3VCOztBQUV6RCxzQ0FBc0MsRUFBRSw0RUFBZSxnQkFBZ0Isc0RBQUUsU0FBUyw4RUFBaUMsYUFBYSw0RUFBZSxnQkFBZ0Isc0RBQUUsUUFBUSw4RUFBaUMsWUFBWSw0RUFBZSxnQkFBZ0Isc0RBQUUsWUFBWSw4RUFBaUMsWUFBWSw0RUFBZSxnQkFBZ0Isc0RBQUUsYUFBYSw4RUFBaUMsYUFBYSw0RUFBZSxnQkFBZ0Isc0RBQUUsWUFBWSw4RUFBaUMsZ0JBQWdCLDRFQUFlLGdCQUFnQixzREFBRSxlQUFlLDhFQUFpQyxnQkFBZ0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGlCQUFpQiw4RUFBaUM7QUFDOXBCLHNDQUFzQyxFQUFFLDRFQUFlLGdCQUFnQixzREFBRSxRQUFRLDRFQUErQixTQUFTLDRFQUFlLGdCQUFnQixzREFBRSxTQUFTLDRFQUErQixVQUFVLDRFQUFlLGdCQUFnQixzREFBRSxPQUFPLDRFQUErQixRQUFRLDRFQUFlLGdCQUFnQixzREFBRSxTQUFTLDRFQUErQixhQUFhLDRFQUFlLGdCQUFnQixzREFBRSxVQUFVLDRFQUErQixXQUFXLDRFQUFlLGdCQUFnQixzREFBRSxTQUFTLDRFQUErQixnQkFBZ0IsNEVBQWUsZ0JBQWdCLHNEQUFFLFFBQVEsNEVBQStCLFNBQVMsNEVBQWUsZ0JBQWdCLHNEQUFFLFdBQVcsNEVBQStCO0FBQzNyQiw4Q0FBOEMsRUFBRSw0RUFBZSxvQkFBb0Isc0RBQUUsV0FBVywyRUFBOEIsT0FBTyw0RUFBZSxvQkFBb0Isc0RBQUUsVUFBVSwyRUFBOEIsT0FBTyw0RUFBZSxvQkFBb0Isc0RBQUUsVUFBVSwyRUFBOEIsT0FBTyw0RUFBZSxvQkFBb0Isc0RBQUUsZ0JBQWdCLDJFQUE4QixZQUFZLDRFQUFlLG9CQUFvQixzREFBRSx3QkFBd0IsMkVBQThCLHNDQUFzQztBQUNwaEI7O0FBRU8sc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLE9BQU8sd0VBQTJCLFFBQVEsNEVBQWUsZ0JBQWdCLHNEQUFFLE1BQU0sd0VBQTJCLE9BQU8sNEVBQWUsZ0JBQWdCLHNEQUFFLFlBQVksd0VBQTJCLFlBQVksNEVBQWUsZ0JBQWdCLHNEQUFFLHNCQUFzQix3RUFBMkIsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxZQUFZLHdFQUEyQixZQUFZLDRFQUFlLGdCQUFnQixzREFBRSxzQkFBc0Isd0VBQTJCLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUsWUFBWSx3RUFBMkIsWUFBWSw0RUFBZSxnQkFBZ0Isc0RBQUUsc0JBQXNCLHdFQUEyQixvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLFlBQVksd0VBQTJCLFlBQVksNEVBQWUsZ0JBQWdCLHNEQUFFLHNCQUFzQix3RUFBMkIsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxpQkFBaUIsd0VBQTJCLGNBQWMsNEVBQWUsZ0JBQWdCLHNEQUFFLDJCQUEyQix3RUFBMkIsc0JBQXNCLDRFQUFlLGdCQUFnQixzREFBRSxxQkFBcUIsd0VBQTJCLG9DQUFvQzs7QUFFanVDLGdDQUFnQyxFQUFFLDRFQUFlLGFBQWEsc0RBQUUsb0JBQW9CLDRFQUFlLGFBQWEsc0RBQUUsc0JBQXNCLDRFQUFlLGFBQWEsc0RBQUUsbUNBQW1DLDRFQUFlLGFBQWEsc0RBQUUscURBQXFEOztBQUU1UixnQ0FBZ0MsRUFBRSw0RUFBZSxhQUFhLHNEQUFFLHNCQUFzQiw0RUFBZSxhQUFhLHNEQUFFLGdDQUFnQzs7QUFFcEosb0NBQW9DLEVBQUUsNEVBQWUsZUFBZSxzREFBRSxvQkFBb0IsNEVBQWUsZUFBZSxzREFBRSxrQ0FBa0MsNEVBQWUsZUFBZSxzREFBRTtBQUM1TDtBQUNQOztBQUVBO0FBQ0EsV0FBVyxxRUFBd0I7QUFDbkM7O0FBRUE7QUFDQSx5QkFBeUIsc0RBQUUsU0FBUyxxRUFBd0IsU0FBUyxxRUFBd0I7QUFDN0Y7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDRFQUErQjtBQUM1QyxpQkFBaUIsNkVBQWdDO0FBQ2pELFlBQVksNkVBQWdDO0FBQzVDLFlBQVksNkVBQWdDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLDZGQUE2RixzREFBRTtBQUMvRixZQUFZLDBFQUE2QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFLHNEQUFFO0FBQzlFLDRFQUE0RSxzREFBRTtBQUM5RSxxRkFBcUYsc0RBQUU7QUFDdkYsS0FBSztBQUNMO0FBQ0EsMEVBQTBFLHNEQUFFO0FBQzVFLDBFQUEwRSxzREFBRTtBQUM1RSxtRkFBbUYsc0RBQUU7QUFDckYsS0FBSztBQUNMLGVBQWUsdUVBQTBCO0FBQ3pDLEdBQUc7QUFDSDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvY29uc3RhbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuXG52YXIgX3ByaW1pdGl2ZU1hcCwgX2RlcHRoRnVuY01hcCwgX2JsZW5kRXF1YXRpb25NYXAsIF9ibGVuZEZ1bmNNYXAsIF9mb3JtYXRNYXAsIF9maWx0ZXJNYXAsIF93cmFwTW9kZU1hcDtcblxuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJzsgLy8gV2ViR1BVIOS4jeaUr+aMgSBMSU5FX0xPT1AgJiBUUklBTkdMRV9GQU5cblxuZXhwb3J0IHZhciBwcmltaXRpdmVNYXAgPSAoX3ByaW1pdGl2ZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuUE9JTlRTLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuUG9pbnRMaXN0KSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLkxJTkVTLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuTGluZUxpc3QpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuTElORV9MT09QLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuTGluZUxpc3QpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuTElORV9TVFJJUCwgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LkxpbmVTdHJpcCksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5UUklBTkdMRVMsIFdlYkdQVUNvbnN0YW50cy5QcmltaXRpdmVUb3BvbG9neS5UcmlhbmdsZUxpc3QpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuVFJJQU5HTEVfRkFOLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuVHJpYW5nbGVMaXN0KSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlRSSUFOR0xFX1NUUklQLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuVHJpYW5nbGVTdHJpcCksIF9wcmltaXRpdmVNYXApO1xuZXhwb3J0IHZhciBkZXB0aEZ1bmNNYXAgPSAoX2RlcHRoRnVuY01hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTkVWRVIsIFdlYkdQVUNvbnN0YW50cy5Db21wYXJlRnVuY3Rpb24uTmV2ZXIpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuQUxXQVlTLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLkFsd2F5cyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5MRVNTLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLkxlc3MpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTEVRVUFMLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLkxlc3NFcXVhbCksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5HUkVBVEVSLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLkdyZWF0ZXIpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuR0VRVUFMLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLkdyZWF0ZXJFcXVhbCksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5FUVVBTCwgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5FcXVhbCksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5OT1RFUVVBTCwgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5Ob3RFcXVhbCksIF9kZXB0aEZ1bmNNYXApO1xuZXhwb3J0IHZhciBibGVuZEVxdWF0aW9uTWFwID0gKF9ibGVuZEVxdWF0aW9uTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuRlVOQ19BREQsIFdlYkdQVUNvbnN0YW50cy5CbGVuZE9wZXJhdGlvbi5BZGQpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLk1JTl9FWFQsIFdlYkdQVUNvbnN0YW50cy5CbGVuZE9wZXJhdGlvbi5NaW4pLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLk1BWF9FWFQsIFdlYkdQVUNvbnN0YW50cy5CbGVuZE9wZXJhdGlvbi5NYXgpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLkZVTkNfU1VCVFJBQ1QsIFdlYkdQVUNvbnN0YW50cy5CbGVuZE9wZXJhdGlvbi5TdWJ0cmFjdCksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuRlVOQ19SRVZFUlNFX1NVQlRSQUNULCBXZWJHUFVDb25zdGFudHMuQmxlbmRPcGVyYXRpb24uUmV2ZXJzZVN1YnRyYWN0KSwgX2JsZW5kRXF1YXRpb25NYXApOyAvLyBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2JsZW5kLXN0YXRlXG4vLyDkuI3mlK/mjIEgJ2NvbnN0YW50IGFscGhhJyDlkowgJ29uZSBtaW51cyBjb25zdGFudCBhbHBoYSdcblxuZXhwb3J0IHZhciBibGVuZEZ1bmNNYXAgPSAoX2JsZW5kRnVuY01hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuWkVSTywgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLlplcm8pLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuT05FLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLlNSQ19DT0xPUiwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLlNyY0NvbG9yKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19TUkNfQ09MT1IsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5PbmVNaW51c1NyY0NvbG9yKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLlNSQ19BTFBIQSwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLlNyY0FscGhhKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5PbmVNaW51c1NyY0FscGhhKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLkRTVF9DT0xPUiwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLkRzdENvbG9yKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19EU1RfQ09MT1IsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5PbmVNaW51c0RzdENvbG9yKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLkRTVF9BTFBIQSwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLkRzdEFscGhhKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORV9NSU5VU19EU1RfQUxQSEEsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5PbmVNaW51c0RzdEFscGhhKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLkNPTlNUQU5UX0NPTE9SLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuQmxlbmRDb2xvciksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5PbmVNaW51c0JsZW5kQ29sb3IpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuU1JDX0FMUEhBX1NBVFVSQVRFLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuU3JjQWxwaGFTYXR1cmF0ZWQpLCBfYmxlbmRGdW5jTWFwKTsgLy8gQHNlZSBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyN0ZXh0dXJlLWZvcm1hdHNcblxuZXhwb3J0IHZhciBmb3JtYXRNYXAgPSAoX2Zvcm1hdE1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuQUxQSEEsICdyOHVub3JtJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5SR0JBLCAncmdiYTh1bm9ybScpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuREVQVEhfQ09NUE9ORU5ULCAnZGVwdGgzMmZsb2F0JyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5ERVBUSF9TVEVOQ0lMLCAnZGVwdGgyNHBsdXMtc3RlbmNpbDgnKSwgX2Zvcm1hdE1hcCk7IC8vIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZW51bWRlZi1ncHVmaWx0ZXJtb2RlXG5cbmV4cG9ydCB2YXIgZmlsdGVyTWFwID0gKF9maWx0ZXJNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9maWx0ZXJNYXAsIGdsLk5FQVJFU1QsICduZWFyZXN0JyksIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5MSU5FQVIsICdsaW5lYXInKSwgX2ZpbHRlck1hcCk7IC8vIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZW51bWRlZi1ncHVhZGRyZXNzbW9kZVxuXG5leHBvcnQgdmFyIHdyYXBNb2RlTWFwID0gKF93cmFwTW9kZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3dyYXBNb2RlTWFwLCBnbC5SRVBFQVQsICdyZXBlYXQnKSwgX2RlZmluZVByb3BlcnR5KF93cmFwTW9kZU1hcCwgZ2wuQ0xBTVBfVE9fRURHRSwgJ2NsYW1wLXRvLWVkZ2UnKSwgX2RlZmluZVByb3BlcnR5KF93cmFwTW9kZU1hcCwgZ2wuTUlSUk9SRURfUkVQRUFULCAnbWlycm9yLXJlcGVhdCcpLCBfd3JhcE1vZGVNYXApO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEN1bGxNb2RlKF9yZWYpIHtcbiAgdmFyIGN1bGwgPSBfcmVmLmN1bGw7XG5cbiAgaWYgKCFjdWxsIHx8ICFjdWxsLmVuYWJsZSkge1xuICAgIHJldHVybiBXZWJHUFVDb25zdGFudHMuQ3VsbE1vZGUuTm9uZTtcbiAgfVxuXG4gIGlmIChjdWxsLmZhY2UpIHtcbiAgICByZXR1cm4gY3VsbC5mYWNlID09PSBnbC5GUk9OVCA/IFdlYkdQVUNvbnN0YW50cy5DdWxsTW9kZS5Gcm9udCA6IFdlYkdQVUNvbnN0YW50cy5DdWxsTW9kZS5CYWNrO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yKF9yZWYyKSB7XG4gIHZhciBkZXB0aCA9IF9yZWYyLmRlcHRoLFxuICAgICAgc3RlbmNpbCA9IF9yZWYyLnN0ZW5jaWw7XG4gIC8vIFRPRE86IHN0ZW5jaWxcbiAgdmFyIHN0ZW5jaWxGcm9udEJhY2sgPSB7XG4gICAgY29tcGFyZTogV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5BbHdheXMsXG4gICAgZGVwdGhGYWlsT3A6IFdlYkdQVUNvbnN0YW50cy5TdGVuY2lsT3BlcmF0aW9uLktlZXAsXG4gICAgZmFpbE9wOiBXZWJHUFVDb25zdGFudHMuU3RlbmNpbE9wZXJhdGlvbi5LZWVwLFxuICAgIHBhc3NPcDogV2ViR1BVQ29uc3RhbnRzLlN0ZW5jaWxPcGVyYXRpb24uS2VlcFxuICB9O1xuICByZXR1cm4ge1xuICAgIGRlcHRoV3JpdGVFbmFibGVkOiBkZXB0aCAmJiBkZXB0aC5lbmFibGUsXG4gICAgZGVwdGhDb21wYXJlOiBkZXB0aEZ1bmNNYXBbKGRlcHRoID09PSBudWxsIHx8IGRlcHRoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZXB0aC5mdW5jKSB8fCBnbC5BTFdBWVNdLFxuICAgIGZvcm1hdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuRGVwdGgyNFBsdXNTdGVuY2lsOCxcbiAgICBzdGVuY2lsRnJvbnQ6IHN0ZW5jaWxGcm9udEJhY2ssXG4gICAgc3RlbmNpbEJhY2s6IHN0ZW5jaWxGcm9udEJhY2ssXG4gICAgc3RlbmNpbFJlYWRNYXNrOiAweGZmZmZmZmZmLFxuICAgIHN0ZW5jaWxXcml0ZU1hc2s6IDB4ZmZmZmZmZmZcbiAgfTtcbn1cbi8qKlxuICogQHNlZSBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNjb2xvci1zdGF0ZVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvclN0YXRlRGVzY3JpcHRvcnMoX3JlZjMsIHN3YXBDaGFpbkZvcm1hdCkge1xuICB2YXIgYmxlbmQgPSBfcmVmMy5ibGVuZDtcbiAgcmV0dXJuIFt7XG4gICAgZm9ybWF0OiBzd2FwQ2hhaW5Gb3JtYXQsXG4gICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jYmxlbmQtc3RhdGVcbiAgICBhbHBoYUJsZW5kOiB7XG4gICAgICBzcmNGYWN0b3I6IGJsZW5kRnVuY01hcFtibGVuZCAmJiBibGVuZC5mdW5jICYmIGJsZW5kLmZ1bmMuc3JjQWxwaGEgfHwgZ2wuT05FXSxcbiAgICAgIGRzdEZhY3RvcjogYmxlbmRGdW5jTWFwW2JsZW5kICYmIGJsZW5kLmZ1bmMgJiYgYmxlbmQuZnVuYy5kc3RBbHBoYSB8fCBnbC5aRVJPXSxcbiAgICAgIG9wZXJhdGlvbjogYmxlbmRFcXVhdGlvbk1hcFtibGVuZCAmJiBibGVuZC5lcXVhdGlvbiAmJiBibGVuZC5lcXVhdGlvbi5hbHBoYSB8fCBnbC5GVU5DX0FERF1cbiAgICB9LFxuICAgIGNvbG9yQmxlbmQ6IHtcbiAgICAgIHNyY0ZhY3RvcjogYmxlbmRGdW5jTWFwW2JsZW5kICYmIGJsZW5kLmZ1bmMgJiYgYmxlbmQuZnVuYy5zcmNSR0IgfHwgZ2wuT05FXSxcbiAgICAgIGRzdEZhY3RvcjogYmxlbmRGdW5jTWFwW2JsZW5kICYmIGJsZW5kLmZ1bmMgJiYgYmxlbmQuZnVuYy5kc3RSR0IgfHwgZ2wuWkVST10sXG4gICAgICBvcGVyYXRpb246IGJsZW5kRXF1YXRpb25NYXBbYmxlbmQgJiYgYmxlbmQuZXF1YXRpb24gJiYgYmxlbmQuZXF1YXRpb24ucmdiIHx8IGdsLkZVTkNfQUREXVxuICAgIH0sXG4gICAgd3JpdGVNYXNrOiBXZWJHUFVDb25zdGFudHMuQ29sb3JXcml0ZS5BbGxcbiAgfV07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25zdGFudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/constants.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/glslang.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/glslang.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/dom */ \"./node_modules/@antv/g-webgpu-engine/es/utils/dom.js\");\n\n\n\nvar glslang;\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return _ref.apply(this, arguments);\n});\n\nfunction _ref() {\n _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!glslang) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\", glslang);\n\n case 2:\n _context.next = 4;\n return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__[\"loadScriptAsync\"])('https://preview.babylonjs.com/glslang/glslang.js');\n\n case 4:\n glslang = window.glslang('https://preview.babylonjs.com/glslang/glslang.wasm');\n return _context.abrupt(\"return\", glslang);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _ref.apply(this, arguments);\n}\n//# sourceMappingURL=glslang.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9nbHNsYW5nLmpzPzZhMjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDekI7QUFDL0M7QUFDZTtBQUNmO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBLFNBQVMsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQzVELFdBQVcsaUVBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsa0VBQWU7O0FBRWxDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9nbHNsYW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IHsgbG9hZFNjcmlwdEFzeW5jIH0gZnJvbSAnLi4vdXRpbHMvZG9tJztcbnZhciBnbHNsYW5nO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5mdW5jdGlvbiBfcmVmKCkge1xuICBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICB3aGlsZSAoMSkge1xuICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgaWYgKCFnbHNsYW5nKSB7XG4gICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCBnbHNsYW5nKTtcblxuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA0O1xuICAgICAgICAgICAgcmV0dXJuIGxvYWRTY3JpcHRBc3luYygnaHR0cHM6Ly9wcmV2aWV3LmJhYnlsb25qcy5jb20vZ2xzbGFuZy9nbHNsYW5nLmpzJyk7XG5cbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBnbHNsYW5nID0gd2luZG93Lmdsc2xhbmcoJ2h0dHBzOi8vcHJldmlldy5iYWJ5bG9uanMuY29tL2dsc2xhbmcvZ2xzbGFuZy53YXNtJyk7XG4gICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGdsc2xhbmcpO1xuXG4gICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBfY2FsbGVlKTtcbiAgfSkpO1xuICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2xzbGFuZy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/glslang.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu-engine/es/webgpu/index.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/g-webgpu-engine/es/webgpu/index.js ***! \***************************************************************/ /*! exports provided: WebGPUEngine */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebGPUEngine\", function() { return WebGPUEngine; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _glslang__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./glslang */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/glslang.js\");\n/* harmony import */ var _WebGPUAttribute__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./WebGPUAttribute */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n/* harmony import */ var _WebGPUComputeModel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./WebGPUComputeModel */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js\");\n/* harmony import */ var _WebGPUElements__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./WebGPUElements */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js\");\n/* harmony import */ var _WebGPUFramebuffer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./WebGPUFramebuffer */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js\");\n/* harmony import */ var _WebGPUModel__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./WebGPUModel */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js\");\n/* harmony import */ var _WebGPUTexture2D__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./WebGPUTexture2D */ \"./node_modules/@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js\");\n\n\n\n\n\nvar _dec, _class, _temp;\n\n/**\n * implements renderService with WebGPU API\n * @see https://webgpu.io/\n * @see https://github.com/BabylonJS/Babylon.js/blob/WebGPU/src/Engines/webgpuEngine.ts\n */\n // import { Glslang } from '@webgpu/glslang/dist/web-devel/glslang.onefile';\n\n\n\n\n\n\n\n\n\n\n\nvar WebGPUEngine = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function WebGPUEngine() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, WebGPUEngine);\n\n this.supportWebGPU = true;\n this.useWGSL = false;\n this.options = void 0;\n this.canvas = void 0;\n this.context = void 0;\n this.glslang = void 0;\n this.adapter = void 0;\n this.device = void 0;\n this.swapChain = void 0;\n this.mainPassSampleCount = void 0;\n this.mainTexture = void 0;\n this.depthTexture = void 0;\n this.mainColorAttachments = void 0;\n this.mainTextureExtends = void 0;\n this.mainDepthAttachment = void 0;\n this.uploadEncoder = void 0;\n this.renderEncoder = void 0;\n this.computeEncoder = void 0;\n this.renderTargetEncoder = void 0;\n this.commandBuffers = new Array(4).fill(undefined);\n this.currentRenderPass = null;\n this.mainRenderPass = null;\n this.currentRenderTargetViewDescriptor = void 0;\n this.currentComputePass = null;\n this.bundleEncoder = void 0;\n this.tempBuffers = [];\n this.currentRenderTarget = null;\n this.uploadEncoderDescriptor = {\n label: 'upload'\n };\n this.renderEncoderDescriptor = {\n label: 'render'\n };\n this.renderTargetEncoderDescriptor = {\n label: 'renderTarget'\n };\n this.computeEncoderDescriptor = {\n label: 'compute'\n };\n this.pipelines = {};\n this.computePipelines = {};\n this.defaultSampleCount = 4;\n this.clearDepthValue = 1;\n this.clearStencilValue = 0;\n this.transientViewport = {\n x: Infinity,\n y: 0,\n width: 0,\n height: 0\n };\n this.cachedViewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n\n this.clear = function (options) {\n var framebuffer = options.framebuffer,\n color = options.color,\n depth = options.depth,\n stencil = options.stencil;\n\n if (_this.options.supportCompute) {\n _this.startComputePass();\n } // We need to recreate the render pass so that the new parameters for clear color / depth / stencil are taken into account\n\n\n if (_this.currentRenderTarget) {\n if (_this.currentRenderPass) {\n _this.endRenderTargetRenderPass();\n }\n\n _this.startRenderTargetRenderPass(_this.currentRenderTarget, color ? color : null, !!depth, !!stencil);\n } else {\n // if (this.useReverseDepthBuffer) {\n // this._depthCullingState.depthFunc = Constants.GREATER;\n // }\n _this.mainColorAttachments[0].loadValue = color ? color : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n _this.mainDepthAttachment.depthLoadValue = depth ? depth : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n _this.mainDepthAttachment.stencilLoadValue = stencil ? _this.clearStencilValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n\n if (_this.mainRenderPass) {\n _this.endMainRenderPass();\n }\n\n _this.startMainRenderPass();\n }\n };\n\n this.createModel = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(options) {\n var model;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n model = new _WebGPUModel__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this, options);\n _context.next = 3;\n return model.init();\n\n case 3:\n return _context.abrupt(\"return\", model);\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.createAttribute = function (options) {\n return new _WebGPUAttribute__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this, options);\n };\n\n this.createBuffer = function (options) {\n return new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_9__[\"default\"](_this, options);\n };\n\n this.createElements = function (options) {\n return new _WebGPUElements__WEBPACK_IMPORTED_MODULE_11__[\"default\"](_this, options);\n };\n\n this.createTexture2D = function (options) {\n return new _WebGPUTexture2D__WEBPACK_IMPORTED_MODULE_14__[\"default\"](_this, options);\n };\n\n this.createFramebuffer = function (options) {\n return new _WebGPUFramebuffer__WEBPACK_IMPORTED_MODULE_12__[\"default\"](_this, options);\n };\n\n this.useFramebuffer = function (framebuffer, drawCommands) {\n // bind\n if (_this.currentRenderTarget) {\n _this.unbindFramebuffer(_this.currentRenderTarget);\n }\n\n _this.currentRenderTarget = framebuffer; // TODO: use mipmap options in framebuffer\n\n _this.currentRenderTargetViewDescriptor = {\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureViewDimension\"].E2d,\n // mipLevelCount: bindWithMipMaps ? WebGPUTextureHelper.computeNumMipmapLevels(texture.width, texture.height) - lodLevel : 1,\n // baseArrayLayer: faceIndex,\n // baseMipLevel: lodLevel,\n arrayLayerCount: 1,\n aspect: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureAspect\"].All\n };\n _this.currentRenderPass = null;\n drawCommands();\n };\n\n this.createComputeModel = /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(context) {\n var model;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n model = new _WebGPUComputeModel__WEBPACK_IMPORTED_MODULE_10__[\"default\"](_this, context);\n _context2.next = 3;\n return model.init();\n\n case 3:\n return _context2.abrupt(\"return\", model);\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n this.getCanvas = function () {\n return _this.canvas;\n };\n\n this.getGLContext = function () {\n throw new Error('Method not implemented.');\n };\n\n this.viewport = function (_ref3) {\n var x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height;\n\n if (!_this.currentRenderPass) {\n // call viewport() before current render pass created\n _this.transientViewport = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n } else if (_this.transientViewport.x !== Infinity) {\n var renderPass = _this.getCurrentRenderPass(); // @see https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setviewport\n\n\n renderPass.setViewport(_this.transientViewport.x, _this.transientViewport.y, _this.transientViewport.width, _this.transientViewport.height, 0, 1);\n } else if (x !== _this.cachedViewport.x || y !== _this.cachedViewport.y || width !== _this.cachedViewport.width || height !== _this.cachedViewport.height) {\n _this.cachedViewport = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n\n var _renderPass = _this.getCurrentRenderPass();\n\n _renderPass.setViewport(x, y, width, height, 0, 1);\n }\n };\n\n this.readPixels = function (options) {\n throw new Error('Method not implemented.');\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(WebGPUEngine, [{\n key: \"isFloatSupported\",\n value: function isFloatSupported() {\n return true;\n }\n }, {\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(config) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.canvas = config.canvas;\n this.options = config;\n this.useWGSL = !!config.useWGSL;\n this.mainPassSampleCount = config.antialiasing ? this.defaultSampleCount : 1;\n _context3.next = 6;\n return this.initGlslang();\n\n case 6:\n this.initContextAndSwapChain();\n this.initMainAttachments();\n\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function init(_x3) {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"setScissor\",\n value: function setScissor(scissor) {\n throw new Error('Method not implemented.');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.mainTexture) {\n this.mainTexture.destroy();\n }\n\n if (this.depthTexture) {\n this.depthTexture.destroy();\n }\n\n this.tempBuffers.forEach(function (buffer) {\n return buffer.destroy();\n });\n this.tempBuffers = [];\n }\n }, {\n key: \"beginFrame\",\n value: function beginFrame() {\n this.uploadEncoder = this.device.createCommandEncoder(this.uploadEncoderDescriptor);\n this.renderEncoder = this.device.createCommandEncoder(this.renderEncoderDescriptor);\n this.renderTargetEncoder = this.device.createCommandEncoder(this.renderTargetEncoderDescriptor);\n\n if (this.options.supportCompute) {\n this.computeEncoder = this.device.createCommandEncoder(this.computeEncoderDescriptor);\n }\n }\n }, {\n key: \"endFrame\",\n value: function endFrame() {\n if (this.options.supportCompute) {\n this.endComputePass();\n }\n\n this.endMainRenderPass();\n this.commandBuffers[0] = this.uploadEncoder.finish();\n this.commandBuffers[1] = this.renderEncoder.finish();\n\n if (this.options.supportCompute) {\n this.commandBuffers[2] = this.computeEncoder.finish();\n }\n\n this.commandBuffers[3] = this.renderTargetEncoder.finish();\n\n if (_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"]) {\n this.device // @ts-ignore\n .getQueue().submit(this.commandBuffers.filter(function (buffer) {\n return buffer;\n }));\n } else {\n this.device.defaultQueue.submit(this.commandBuffers.filter(function (buffer) {\n return buffer;\n }));\n }\n }\n }, {\n key: \"getCurrentRenderPass\",\n value: function getCurrentRenderPass() {\n if (this.currentRenderTarget && !this.currentRenderPass) {\n this.startRenderTargetRenderPass(this.currentRenderTarget, null, false, false);\n } else if (!this.currentRenderPass) {\n this.startMainRenderPass();\n }\n\n return this.currentRenderPass;\n }\n }, {\n key: \"initGlslang\",\n value: function () {\n var _initGlslang = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var _navigator, _navigator$gpu;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return Object(_glslang__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n\n case 2:\n this.glslang = _context4.sent;\n _context4.next = 5;\n return (_navigator = navigator) === null || _navigator === void 0 ? void 0 : (_navigator$gpu = _navigator.gpu) === null || _navigator$gpu === void 0 ? void 0 : _navigator$gpu.requestAdapter();\n\n case 5:\n this.adapter = _context4.sent;\n _context4.next = 8;\n return this.adapter.requestDevice();\n\n case 8:\n this.device = _context4.sent;\n\n case 9:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function initGlslang() {\n return _initGlslang.apply(this, arguments);\n }\n\n return initGlslang;\n }()\n }, {\n key: \"initContextAndSwapChain\",\n value: function initContextAndSwapChain() {\n this.context = this.canvas.getContext(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? 'gpu' : 'gpupresent');\n this.swapChain = this.context.configureSwapChain({\n device: this.device,\n format: this.options.swapChainFormat,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].CopySrc\n });\n }\n }, {\n key: \"initMainAttachments\",\n value: function initMainAttachments() {\n this.mainTextureExtends = {\n width: this.canvas.width,\n height: this.canvas.height,\n depth: 1\n };\n\n if (this.options.antialiasing) {\n var mainTextureDescriptor = {\n size: this.mainTextureExtends,\n // TODO: arrayLayerCount is deprecated: use size.depth\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n sampleCount: this.mainPassSampleCount,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureDimension\"].E2d,\n format: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureFormat\"].BGRA8Unorm,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment\n };\n\n if (this.mainTexture) {\n this.mainTexture.destroy();\n }\n\n this.mainTexture = this.device.createTexture(mainTextureDescriptor);\n this.mainColorAttachments = [{\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.mainTexture.createDefaultView() : this.mainTexture.createView(),\n loadValue: [0, 0, 0, 1],\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }];\n } else {\n this.mainColorAttachments = [{\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView(),\n loadValue: [0, 0, 0, 1],\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }];\n }\n\n var depthTextureDescriptor = {\n size: this.mainTextureExtends,\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n sampleCount: this.mainPassSampleCount,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureDimension\"].E2d,\n format: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? 'depth32float-stencil8' : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureFormat\"].Depth24PlusStencil8,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment\n };\n\n if (this.depthTexture) {\n this.depthTexture.destroy();\n }\n\n this.depthTexture = this.device.createTexture( // @ts-ignore\n depthTextureDescriptor);\n this.mainDepthAttachment = {\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.depthTexture.createDefaultView() : this.depthTexture.createView(),\n depthLoadValue: this.clearDepthValue,\n depthStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store,\n stencilLoadValue: this.clearStencilValue,\n stencilStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n };\n }\n }, {\n key: \"startComputePass\",\n value: function startComputePass() {\n if (this.currentComputePass) {\n this.endComputePass();\n }\n\n this.currentComputePass = this.computeEncoder.beginComputePass();\n }\n }, {\n key: \"startMainRenderPass\",\n value: function startMainRenderPass() {\n if (this.currentRenderPass && !this.currentRenderTarget) {\n this.endMainRenderPass();\n } // Resolve in case of MSAA\n\n\n if (this.options.antialiasing) {\n this.mainColorAttachments[0].resolveTarget = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView();\n } else {\n this.mainColorAttachments[0].attachment = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView();\n }\n\n this.currentRenderPass = this.renderEncoder.beginRenderPass({\n colorAttachments: this.mainColorAttachments,\n depthStencilAttachment: this.mainDepthAttachment // TODO: use framebuffer's depth & stencil\n\n });\n this.mainRenderPass = this.currentRenderPass;\n\n if (this.cachedViewport) {\n this.viewport(this.cachedViewport);\n }\n }\n }, {\n key: \"startRenderTargetRenderPass\",\n value: function startRenderTargetRenderPass(renderTarget, clearColor, clearDepth) {\n var _renderTarget$get$col, _renderTarget$get$dep;\n\n var clearStencil = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var gpuTexture = (_renderTarget$get$col = renderTarget.get().color) === null || _renderTarget$get$col === void 0 ? void 0 : _renderTarget$get$col.texture;\n var colorTextureView;\n\n if (gpuTexture) {\n colorTextureView = gpuTexture.createView(this.currentRenderTargetViewDescriptor);\n }\n\n var depthStencilTexture = (_renderTarget$get$dep = renderTarget.get().depth) === null || _renderTarget$get$dep === void 0 ? void 0 : _renderTarget$get$dep.texture;\n var depthStencilTextureView;\n\n if (depthStencilTexture) {\n depthStencilTextureView = depthStencilTexture.createView();\n }\n\n var renderPass = this.renderTargetEncoder.beginRenderPass({\n colorAttachments: [{\n attachment: colorTextureView,\n loadValue: clearColor !== null ? clearColor : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }],\n depthStencilAttachment: depthStencilTexture && depthStencilTextureView ? {\n attachment: depthStencilTextureView,\n depthLoadValue: clearDepth ? this.clearDepthValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n depthStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store,\n stencilLoadValue: clearStencil ? this.clearStencilValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n stencilStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n } : undefined\n });\n this.currentRenderPass = renderPass;\n\n if (this.cachedViewport) {\n this.viewport(this.cachedViewport);\n } // TODO WEBGPU set the scissor rect and the stencil reference value\n\n }\n }, {\n key: \"endMainRenderPass\",\n value: function endMainRenderPass() {\n if (this.currentRenderPass === this.mainRenderPass && this.currentRenderPass !== null) {\n this.currentRenderPass.endPass();\n this.resetCachedViewport();\n this.currentRenderPass = null;\n this.mainRenderPass = null;\n }\n }\n }, {\n key: \"endComputePass\",\n value: function endComputePass() {\n if (this.currentComputePass) {\n this.currentComputePass.endPass();\n this.currentComputePass = null;\n }\n }\n }, {\n key: \"endRenderTargetRenderPass\",\n value: function endRenderTargetRenderPass() {\n if (this.currentRenderPass) {\n this.currentRenderPass.endPass();\n this.resetCachedViewport();\n }\n }\n }, {\n key: \"resetCachedViewport\",\n value: function resetCachedViewport() {\n this.cachedViewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n }, {\n key: \"unbindFramebuffer\",\n value: function unbindFramebuffer(framebuffer) {\n // unbind\n if (this.currentRenderPass && this.currentRenderPass !== this.mainRenderPass) {\n this.endRenderTargetRenderPass();\n }\n\n this.transientViewport.x = Infinity;\n this.currentRenderTarget = null; // if (texture.generateMipMaps && !disableGenerateMipMaps && !texture.isCube) {\n // this._generateMipmaps(texture);\n // }\n\n this.currentRenderPass = this.mainRenderPass;\n }\n }]);\n\n return WebGPUEngine;\n}(), _temp)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9pbmRleC5qcz80ZTU3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUNKO0FBQ047O0FBRTlEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDK0MsWUFBWSxVQUFVOztBQUVMO0FBQ3pCO0FBQ1A7QUFDZ0I7QUFDTjtBQUNZO0FBQ1I7QUFDTTtBQUNaO0FBQ1E7QUFLaEQsMkJBQTJCLDREQUFVO0FBQ3JDO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxrRUFBa0UsbUVBQXNCO0FBQ3hGLG1FQUFtRSxtRUFBc0I7QUFDekYseUZBQXlGLG1FQUFzQjs7QUFFL0c7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDcEU7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscURBQVc7QUFDdkM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsaUJBQWlCLHdEQUFlO0FBQ2hDOztBQUVBO0FBQ0EsaUJBQWlCLHFEQUFZO0FBQzdCOztBQUVBO0FBQ0EsaUJBQWlCLHdEQUFjO0FBQy9COztBQUVBO0FBQ0EsaUJBQWlCLHlEQUFlO0FBQ2hDOztBQUVBO0FBQ0EsaUJBQWlCLDJEQUFpQjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhDQUE4Qzs7QUFFOUM7QUFDQSxtQkFBbUIsaUZBQW9DO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDBFQUE2QjtBQUM3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDckU7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsNERBQWtCO0FBQzlDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxzREFBc0Q7OztBQUd0RDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxVQUFVLDREQUFRO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EseUJBQXlCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUM1RTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix3REFBTzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNENBQTRDLDREQUFRO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBLGVBQWUseUVBQTRCLG9CQUFvQix5RUFBNEI7QUFDM0YsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZFQUFnQztBQUNyRCxrQkFBa0IsMEVBQTZCO0FBQy9DLGlCQUFpQix5RUFBNEI7QUFDN0M7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0IsNERBQVE7QUFDOUI7QUFDQTtBQUNBLG1CQUFtQixvRUFBdUI7QUFDMUMsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLHNCQUFzQiw0REFBUTtBQUM5QjtBQUNBO0FBQ0EsbUJBQW1CLG9FQUF1QjtBQUMxQyxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiw2RUFBZ0M7QUFDbkQsZ0JBQWdCLDREQUFRLDZCQUE2QiwwRUFBNkI7QUFDbEYsZUFBZSx5RUFBNEI7QUFDM0M7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw0REFBUTtBQUM1QjtBQUNBO0FBQ0Esc0JBQXNCLG9FQUF1QjtBQUM3QztBQUNBLHdCQUF3QixvRUFBdUI7QUFDL0M7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBLHFEQUFxRCw0REFBUTtBQUM3RDtBQUNBLE9BQU87QUFDUCxrREFBa0QsNERBQVE7QUFDMUQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxtRUFBc0I7QUFDOUUsbUJBQW1CLG9FQUF1QjtBQUMxQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLDhEQUE4RCxtRUFBc0I7QUFDcEYsd0JBQXdCLG9FQUF1QjtBQUMvQyxvRUFBb0UsbUVBQXNCO0FBQzFGLDBCQUEwQixvRUFBdUI7QUFDakQsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbnZhciBfZGVjLCBfY2xhc3MsIF90ZW1wO1xuXG4vKipcbiAqIGltcGxlbWVudHMgcmVuZGVyU2VydmljZSB3aXRoIFdlYkdQVSBBUElcbiAqIEBzZWUgaHR0cHM6Ly93ZWJncHUuaW8vXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9CYWJ5bG9uSlMvQmFieWxvbi5qcy9ibG9iL1dlYkdQVS9zcmMvRW5naW5lcy93ZWJncHVFbmdpbmUudHNcbiAqL1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJzsgLy8gaW1wb3J0IHsgR2xzbGFuZyB9IGZyb20gJ0B3ZWJncHUvZ2xzbGFuZy9kaXN0L3dlYi1kZXZlbC9nbHNsYW5nLm9uZWZpbGUnO1xuXG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCBnbHNsYW5nIGZyb20gJy4vZ2xzbGFuZyc7XG5pbXBvcnQgV2ViR1BVQXR0cmlidXRlIGZyb20gJy4vV2ViR1BVQXR0cmlidXRlJztcbmltcG9ydCBXZWJHUFVCdWZmZXIgZnJvbSAnLi9XZWJHUFVCdWZmZXInO1xuaW1wb3J0IFdlYkdQVUNvbXB1dGVNb2RlbCBmcm9tICcuL1dlYkdQVUNvbXB1dGVNb2RlbCc7XG5pbXBvcnQgV2ViR1BVRWxlbWVudHMgZnJvbSAnLi9XZWJHUFVFbGVtZW50cyc7XG5pbXBvcnQgV2ViR1BVRnJhbWVidWZmZXIgZnJvbSAnLi9XZWJHUFVGcmFtZWJ1ZmZlcic7XG5pbXBvcnQgV2ViR1BVTW9kZWwgZnJvbSAnLi9XZWJHUFVNb2RlbCc7XG5pbXBvcnQgV2ViR1BVVGV4dHVyZTJEIGZyb20gJy4vV2ViR1BVVGV4dHVyZTJEJztcbmV4cG9ydFxuLyoqXG4gKiByZWdsIHJlbmRlcmVyXG4gKi9cbnZhciBXZWJHUFVFbmdpbmUgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJHUFVFbmdpbmUoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVFbmdpbmUpO1xuXG4gICAgdGhpcy5zdXBwb3J0V2ViR1BVID0gdHJ1ZTtcbiAgICB0aGlzLnVzZVdHU0wgPSBmYWxzZTtcbiAgICB0aGlzLm9wdGlvbnMgPSB2b2lkIDA7XG4gICAgdGhpcy5jYW52YXMgPSB2b2lkIDA7XG4gICAgdGhpcy5jb250ZXh0ID0gdm9pZCAwO1xuICAgIHRoaXMuZ2xzbGFuZyA9IHZvaWQgMDtcbiAgICB0aGlzLmFkYXB0ZXIgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXZpY2UgPSB2b2lkIDA7XG4gICAgdGhpcy5zd2FwQ2hhaW4gPSB2b2lkIDA7XG4gICAgdGhpcy5tYWluUGFzc1NhbXBsZUNvdW50ID0gdm9pZCAwO1xuICAgIHRoaXMubWFpblRleHR1cmUgPSB2b2lkIDA7XG4gICAgdGhpcy5kZXB0aFRleHR1cmUgPSB2b2lkIDA7XG4gICAgdGhpcy5tYWluQ29sb3JBdHRhY2htZW50cyA9IHZvaWQgMDtcbiAgICB0aGlzLm1haW5UZXh0dXJlRXh0ZW5kcyA9IHZvaWQgMDtcbiAgICB0aGlzLm1haW5EZXB0aEF0dGFjaG1lbnQgPSB2b2lkIDA7XG4gICAgdGhpcy51cGxvYWRFbmNvZGVyID0gdm9pZCAwO1xuICAgIHRoaXMucmVuZGVyRW5jb2RlciA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbXB1dGVFbmNvZGVyID0gdm9pZCAwO1xuICAgIHRoaXMucmVuZGVyVGFyZ2V0RW5jb2RlciA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbW1hbmRCdWZmZXJzID0gbmV3IEFycmF5KDQpLmZpbGwodW5kZWZpbmVkKTtcbiAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzID0gbnVsbDtcbiAgICB0aGlzLm1haW5SZW5kZXJQYXNzID0gbnVsbDtcbiAgICB0aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXRWaWV3RGVzY3JpcHRvciA9IHZvaWQgMDtcbiAgICB0aGlzLmN1cnJlbnRDb21wdXRlUGFzcyA9IG51bGw7XG4gICAgdGhpcy5idW5kbGVFbmNvZGVyID0gdm9pZCAwO1xuICAgIHRoaXMudGVtcEJ1ZmZlcnMgPSBbXTtcbiAgICB0aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQgPSBudWxsO1xuICAgIHRoaXMudXBsb2FkRW5jb2RlckRlc2NyaXB0b3IgPSB7XG4gICAgICBsYWJlbDogJ3VwbG9hZCdcbiAgICB9O1xuICAgIHRoaXMucmVuZGVyRW5jb2RlckRlc2NyaXB0b3IgPSB7XG4gICAgICBsYWJlbDogJ3JlbmRlcidcbiAgICB9O1xuICAgIHRoaXMucmVuZGVyVGFyZ2V0RW5jb2RlckRlc2NyaXB0b3IgPSB7XG4gICAgICBsYWJlbDogJ3JlbmRlclRhcmdldCdcbiAgICB9O1xuICAgIHRoaXMuY29tcHV0ZUVuY29kZXJEZXNjcmlwdG9yID0ge1xuICAgICAgbGFiZWw6ICdjb21wdXRlJ1xuICAgIH07XG4gICAgdGhpcy5waXBlbGluZXMgPSB7fTtcbiAgICB0aGlzLmNvbXB1dGVQaXBlbGluZXMgPSB7fTtcbiAgICB0aGlzLmRlZmF1bHRTYW1wbGVDb3VudCA9IDQ7XG4gICAgdGhpcy5jbGVhckRlcHRoVmFsdWUgPSAxO1xuICAgIHRoaXMuY2xlYXJTdGVuY2lsVmFsdWUgPSAwO1xuICAgIHRoaXMudHJhbnNpZW50Vmlld3BvcnQgPSB7XG4gICAgICB4OiBJbmZpbml0eSxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdGhpcy5jYWNoZWRWaWV3cG9ydCA9IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9O1xuXG4gICAgdGhpcy5jbGVhciA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICB2YXIgZnJhbWVidWZmZXIgPSBvcHRpb25zLmZyYW1lYnVmZmVyLFxuICAgICAgICAgIGNvbG9yID0gb3B0aW9ucy5jb2xvcixcbiAgICAgICAgICBkZXB0aCA9IG9wdGlvbnMuZGVwdGgsXG4gICAgICAgICAgc3RlbmNpbCA9IG9wdGlvbnMuc3RlbmNpbDtcblxuICAgICAgaWYgKF90aGlzLm9wdGlvbnMuc3VwcG9ydENvbXB1dGUpIHtcbiAgICAgICAgX3RoaXMuc3RhcnRDb21wdXRlUGFzcygpO1xuICAgICAgfSAvLyBXZSBuZWVkIHRvIHJlY3JlYXRlIHRoZSByZW5kZXIgcGFzcyBzbyB0aGF0IHRoZSBuZXcgcGFyYW1ldGVycyBmb3IgY2xlYXIgY29sb3IgLyBkZXB0aCAvIHN0ZW5jaWwgYXJlIHRha2VuIGludG8gYWNjb3VudFxuXG5cbiAgICAgIGlmIChfdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0KSB7XG4gICAgICAgIGlmIChfdGhpcy5jdXJyZW50UmVuZGVyUGFzcykge1xuICAgICAgICAgIF90aGlzLmVuZFJlbmRlclRhcmdldFJlbmRlclBhc3MoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLnN0YXJ0UmVuZGVyVGFyZ2V0UmVuZGVyUGFzcyhfdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0LCBjb2xvciA/IGNvbG9yIDogbnVsbCwgISFkZXB0aCwgISFzdGVuY2lsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGlmICh0aGlzLnVzZVJldmVyc2VEZXB0aEJ1ZmZlcikge1xuICAgICAgICAvLyAgICAgdGhpcy5fZGVwdGhDdWxsaW5nU3RhdGUuZGVwdGhGdW5jID0gQ29uc3RhbnRzLkdSRUFURVI7XG4gICAgICAgIC8vIH1cbiAgICAgICAgX3RoaXMubWFpbkNvbG9yQXR0YWNobWVudHNbMF0ubG9hZFZhbHVlID0gY29sb3IgPyBjb2xvciA6IFdlYkdQVUNvbnN0YW50cy5Mb2FkT3AuTG9hZDtcbiAgICAgICAgX3RoaXMubWFpbkRlcHRoQXR0YWNobWVudC5kZXB0aExvYWRWYWx1ZSA9IGRlcHRoID8gZGVwdGggOiBXZWJHUFVDb25zdGFudHMuTG9hZE9wLkxvYWQ7XG4gICAgICAgIF90aGlzLm1haW5EZXB0aEF0dGFjaG1lbnQuc3RlbmNpbExvYWRWYWx1ZSA9IHN0ZW5jaWwgPyBfdGhpcy5jbGVhclN0ZW5jaWxWYWx1ZSA6IFdlYkdQVUNvbnN0YW50cy5Mb2FkT3AuTG9hZDtcblxuICAgICAgICBpZiAoX3RoaXMubWFpblJlbmRlclBhc3MpIHtcbiAgICAgICAgICBfdGhpcy5lbmRNYWluUmVuZGVyUGFzcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc3RhcnRNYWluUmVuZGVyUGFzcygpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZU1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShvcHRpb25zKSB7XG4gICAgICAgIHZhciBtb2RlbDtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBtb2RlbCA9IG5ldyBXZWJHUFVNb2RlbChfdGhpcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsLmluaXQoKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCBtb2RlbCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUpO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94KSB7XG4gICAgICAgIHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIHRoaXMuY3JlYXRlQXR0cmlidXRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgV2ViR1BVQXR0cmlidXRlKF90aGlzLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVCdWZmZXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBXZWJHUFVCdWZmZXIoX3RoaXMsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZUVsZW1lbnRzID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgV2ViR1BVRWxlbWVudHMoX3RoaXMsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZVRleHR1cmUyRCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFdlYkdQVVRleHR1cmUyRChfdGhpcywgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlRnJhbWVidWZmZXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBXZWJHUFVGcmFtZWJ1ZmZlcihfdGhpcywgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMudXNlRnJhbWVidWZmZXIgPSBmdW5jdGlvbiAoZnJhbWVidWZmZXIsIGRyYXdDb21tYW5kcykge1xuICAgICAgLy8gYmluZFxuICAgICAgaWYgKF90aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQpIHtcbiAgICAgICAgX3RoaXMudW5iaW5kRnJhbWVidWZmZXIoX3RoaXMuY3VycmVudFJlbmRlclRhcmdldCk7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQgPSBmcmFtZWJ1ZmZlcjsgLy8gVE9ETzogdXNlIG1pcG1hcCBvcHRpb25zIGluIGZyYW1lYnVmZmVyXG5cbiAgICAgIF90aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXRWaWV3RGVzY3JpcHRvciA9IHtcbiAgICAgICAgZGltZW5zaW9uOiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZVZpZXdEaW1lbnNpb24uRTJkLFxuICAgICAgICAvLyBtaXBMZXZlbENvdW50OiBiaW5kV2l0aE1pcE1hcHMgPyBXZWJHUFVUZXh0dXJlSGVscGVyLmNvbXB1dGVOdW1NaXBtYXBMZXZlbHModGV4dHVyZS53aWR0aCwgdGV4dHVyZS5oZWlnaHQpIC0gbG9kTGV2ZWwgOiAxLFxuICAgICAgICAvLyBiYXNlQXJyYXlMYXllcjogZmFjZUluZGV4LFxuICAgICAgICAvLyBiYXNlTWlwTGV2ZWw6IGxvZExldmVsLFxuICAgICAgICBhcnJheUxheWVyQ291bnQ6IDEsXG4gICAgICAgIGFzcGVjdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVBc3BlY3QuQWxsXG4gICAgICB9O1xuICAgICAgX3RoaXMuY3VycmVudFJlbmRlclBhc3MgPSBudWxsO1xuICAgICAgZHJhd0NvbW1hbmRzKCk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlQ29tcHV0ZU1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmMiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIG1vZGVsO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBtb2RlbCA9IG5ldyBXZWJHUFVDb21wdXRlTW9kZWwoX3RoaXMsIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kZWwuaW5pdCgpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiLCBtb2RlbCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMik7XG4gICAgICB9KSk7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gyKSB7XG4gICAgICAgIHJldHVybiBfcmVmMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG5cbiAgICB0aGlzLmdldENhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5jYW52YXM7XG4gICAgfTtcblxuICAgIHRoaXMuZ2V0R0xDb250ZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH07XG5cbiAgICB0aGlzLnZpZXdwb3J0ID0gZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICB2YXIgeCA9IF9yZWYzLngsXG4gICAgICAgICAgeSA9IF9yZWYzLnksXG4gICAgICAgICAgd2lkdGggPSBfcmVmMy53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmMy5oZWlnaHQ7XG5cbiAgICAgIGlmICghX3RoaXMuY3VycmVudFJlbmRlclBhc3MpIHtcbiAgICAgICAgLy8gY2FsbCB2aWV3cG9ydCgpIGJlZm9yZSBjdXJyZW50IHJlbmRlciBwYXNzIGNyZWF0ZWRcbiAgICAgICAgX3RoaXMudHJhbnNpZW50Vmlld3BvcnQgPSB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiB5LFxuICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChfdGhpcy50cmFuc2llbnRWaWV3cG9ydC54ICE9PSBJbmZpbml0eSkge1xuICAgICAgICB2YXIgcmVuZGVyUGFzcyA9IF90aGlzLmdldEN1cnJlbnRSZW5kZXJQYXNzKCk7IC8vIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdXJlbmRlcnBhc3NlbmNvZGVyLXNldHZpZXdwb3J0XG5cblxuICAgICAgICByZW5kZXJQYXNzLnNldFZpZXdwb3J0KF90aGlzLnRyYW5zaWVudFZpZXdwb3J0LngsIF90aGlzLnRyYW5zaWVudFZpZXdwb3J0LnksIF90aGlzLnRyYW5zaWVudFZpZXdwb3J0LndpZHRoLCBfdGhpcy50cmFuc2llbnRWaWV3cG9ydC5oZWlnaHQsIDAsIDEpO1xuICAgICAgfSBlbHNlIGlmICh4ICE9PSBfdGhpcy5jYWNoZWRWaWV3cG9ydC54IHx8IHkgIT09IF90aGlzLmNhY2hlZFZpZXdwb3J0LnkgfHwgd2lkdGggIT09IF90aGlzLmNhY2hlZFZpZXdwb3J0LndpZHRoIHx8IGhlaWdodCAhPT0gX3RoaXMuY2FjaGVkVmlld3BvcnQuaGVpZ2h0KSB7XG4gICAgICAgIF90aGlzLmNhY2hlZFZpZXdwb3J0ID0ge1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogeSxcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgX3JlbmRlclBhc3MgPSBfdGhpcy5nZXRDdXJyZW50UmVuZGVyUGFzcygpO1xuXG4gICAgICAgIF9yZW5kZXJQYXNzLnNldFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQsIDAsIDEpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnJlYWRQaXhlbHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH07XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR1BVRW5naW5lLCBbe1xuICAgIGtleTogXCJpc0Zsb2F0U3VwcG9ydGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzRmxvYXRTdXBwb3J0ZWQoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMyhjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgdGhpcy5jYW52YXMgPSBjb25maWcuY2FudmFzO1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IGNvbmZpZztcbiAgICAgICAgICAgICAgICB0aGlzLnVzZVdHU0wgPSAhIWNvbmZpZy51c2VXR1NMO1xuICAgICAgICAgICAgICAgIHRoaXMubWFpblBhc3NTYW1wbGVDb3VudCA9IGNvbmZpZy5hbnRpYWxpYXNpbmcgPyB0aGlzLmRlZmF1bHRTYW1wbGVDb3VudCA6IDE7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA2O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRHbHNsYW5nKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdENvbnRleHRBbmRTd2FwQ2hhaW4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRNYWluQXR0YWNobWVudHMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUzLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdChfeDMpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0O1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInNldFNjaXNzb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0U2Npc3NvcihzY2lzc29yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIGlmICh0aGlzLm1haW5UZXh0dXJlKSB7XG4gICAgICAgIHRoaXMubWFpblRleHR1cmUuZGVzdHJveSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kZXB0aFRleHR1cmUpIHtcbiAgICAgICAgdGhpcy5kZXB0aFRleHR1cmUuZGVzdHJveSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlbXBCdWZmZXJzLmZvckVhY2goZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gYnVmZmVyLmRlc3Ryb3koKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZW1wQnVmZmVycyA9IFtdO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJiZWdpbkZyYW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJlZ2luRnJhbWUoKSB7XG4gICAgICB0aGlzLnVwbG9hZEVuY29kZXIgPSB0aGlzLmRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcih0aGlzLnVwbG9hZEVuY29kZXJEZXNjcmlwdG9yKTtcbiAgICAgIHRoaXMucmVuZGVyRW5jb2RlciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKHRoaXMucmVuZGVyRW5jb2RlckRlc2NyaXB0b3IpO1xuICAgICAgdGhpcy5yZW5kZXJUYXJnZXRFbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIodGhpcy5yZW5kZXJUYXJnZXRFbmNvZGVyRGVzY3JpcHRvcik7XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3VwcG9ydENvbXB1dGUpIHtcbiAgICAgICAgdGhpcy5jb21wdXRlRW5jb2RlciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKHRoaXMuY29tcHV0ZUVuY29kZXJEZXNjcmlwdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZW5kRnJhbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW5kRnJhbWUoKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnN1cHBvcnRDb21wdXRlKSB7XG4gICAgICAgIHRoaXMuZW5kQ29tcHV0ZVBhc3MoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbmRNYWluUmVuZGVyUGFzcygpO1xuICAgICAgdGhpcy5jb21tYW5kQnVmZmVyc1swXSA9IHRoaXMudXBsb2FkRW5jb2Rlci5maW5pc2goKTtcbiAgICAgIHRoaXMuY29tbWFuZEJ1ZmZlcnNbMV0gPSB0aGlzLnJlbmRlckVuY29kZXIuZmluaXNoKCk7XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3VwcG9ydENvbXB1dGUpIHtcbiAgICAgICAgdGhpcy5jb21tYW5kQnVmZmVyc1syXSA9IHRoaXMuY29tcHV0ZUVuY29kZXIuZmluaXNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29tbWFuZEJ1ZmZlcnNbM10gPSB0aGlzLnJlbmRlclRhcmdldEVuY29kZXIuZmluaXNoKCk7XG5cbiAgICAgIGlmIChpc1NhZmFyaSkge1xuICAgICAgICB0aGlzLmRldmljZSAvLyBAdHMtaWdub3JlXG4gICAgICAgIC5nZXRRdWV1ZSgpLnN1Ym1pdCh0aGlzLmNvbW1hbmRCdWZmZXJzLmZpbHRlcihmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZXZpY2UuZGVmYXVsdFF1ZXVlLnN1Ym1pdCh0aGlzLmNvbW1hbmRCdWZmZXJzLmZpbHRlcihmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDdXJyZW50UmVuZGVyUGFzc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDdXJyZW50UmVuZGVyUGFzcygpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQgJiYgIXRoaXMuY3VycmVudFJlbmRlclBhc3MpIHtcbiAgICAgICAgdGhpcy5zdGFydFJlbmRlclRhcmdldFJlbmRlclBhc3ModGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0LCBudWxsLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5jdXJyZW50UmVuZGVyUGFzcykge1xuICAgICAgICB0aGlzLnN0YXJ0TWFpblJlbmRlclBhc3MoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFJlbmRlclBhc3M7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluaXRHbHNsYW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfaW5pdEdsc2xhbmcgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHtcbiAgICAgICAgdmFyIF9uYXZpZ2F0b3IsIF9uYXZpZ2F0b3IkZ3B1O1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2xzbGFuZygpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICB0aGlzLmdsc2xhbmcgPSBfY29udGV4dDQuc2VudDtcbiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChfbmF2aWdhdG9yID0gbmF2aWdhdG9yKSA9PT0gbnVsbCB8fCBfbmF2aWdhdG9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX25hdmlnYXRvciRncHUgPSBfbmF2aWdhdG9yLmdwdSkgPT09IG51bGwgfHwgX25hdmlnYXRvciRncHUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9uYXZpZ2F0b3IkZ3B1LnJlcXVlc3RBZGFwdGVyKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIHRoaXMuYWRhcHRlciA9IF9jb250ZXh0NC5zZW50O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gODtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJlcXVlc3REZXZpY2UoKTtcblxuICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgdGhpcy5kZXZpY2UgPSBfY29udGV4dDQuc2VudDtcblxuICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWU0LCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdEdsc2xhbmcoKSB7XG4gICAgICAgIHJldHVybiBfaW5pdEdsc2xhbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluaXRHbHNsYW5nO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcImluaXRDb250ZXh0QW5kU3dhcENoYWluXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXRDb250ZXh0QW5kU3dhcENoYWluKCkge1xuICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dChpc1NhZmFyaSA/ICdncHUnIDogJ2dwdXByZXNlbnQnKTtcbiAgICAgIHRoaXMuc3dhcENoYWluID0gdGhpcy5jb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbih7XG4gICAgICAgIGRldmljZTogdGhpcy5kZXZpY2UsXG4gICAgICAgIGZvcm1hdDogdGhpcy5vcHRpb25zLnN3YXBDaGFpbkZvcm1hdCxcbiAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuT3V0cHV0QXR0YWNobWVudCB8IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuQ29weVNyY1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluaXRNYWluQXR0YWNobWVudHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdE1haW5BdHRhY2htZW50cygpIHtcbiAgICAgIHRoaXMubWFpblRleHR1cmVFeHRlbmRzID0ge1xuICAgICAgICB3aWR0aDogdGhpcy5jYW52YXMud2lkdGgsXG4gICAgICAgIGhlaWdodDogdGhpcy5jYW52YXMuaGVpZ2h0LFxuICAgICAgICBkZXB0aDogMVxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hbnRpYWxpYXNpbmcpIHtcbiAgICAgICAgdmFyIG1haW5UZXh0dXJlRGVzY3JpcHRvciA9IHtcbiAgICAgICAgICBzaXplOiB0aGlzLm1haW5UZXh0dXJlRXh0ZW5kcyxcbiAgICAgICAgICAvLyBUT0RPOiBhcnJheUxheWVyQ291bnQgaXMgZGVwcmVjYXRlZDogdXNlIHNpemUuZGVwdGhcbiAgICAgICAgICAvLyBhcnJheUxheWVyQ291bnQ6IDEsXG4gICAgICAgICAgbWlwTGV2ZWxDb3VudDogMSxcbiAgICAgICAgICBzYW1wbGVDb3VudDogdGhpcy5tYWluUGFzc1NhbXBsZUNvdW50LFxuICAgICAgICAgIGRpbWVuc2lvbjogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVEaW1lbnNpb24uRTJkLFxuICAgICAgICAgIGZvcm1hdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuQkdSQThVbm9ybSxcbiAgICAgICAgICB1c2FnZTogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVVc2FnZS5PdXRwdXRBdHRhY2htZW50XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMubWFpblRleHR1cmUpIHtcbiAgICAgICAgICB0aGlzLm1haW5UZXh0dXJlLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWFpblRleHR1cmUgPSB0aGlzLmRldmljZS5jcmVhdGVUZXh0dXJlKG1haW5UZXh0dXJlRGVzY3JpcHRvcik7XG4gICAgICAgIHRoaXMubWFpbkNvbG9yQXR0YWNobWVudHMgPSBbe1xuICAgICAgICAgIGF0dGFjaG1lbnQ6IGlzU2FmYXJpID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMubWFpblRleHR1cmUuY3JlYXRlRGVmYXVsdFZpZXcoKSA6IHRoaXMubWFpblRleHR1cmUuY3JlYXRlVmlldygpLFxuICAgICAgICAgIGxvYWRWYWx1ZTogWzAsIDAsIDAsIDFdLFxuICAgICAgICAgIHN0b3JlT3A6IFdlYkdQVUNvbnN0YW50cy5TdG9yZU9wLlN0b3JlXG4gICAgICAgIH1dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tYWluQ29sb3JBdHRhY2htZW50cyA9IFt7XG4gICAgICAgICAgYXR0YWNobWVudDogaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpIDogdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVWaWV3KCksXG4gICAgICAgICAgbG9hZFZhbHVlOiBbMCwgMCwgMCwgMV0sXG4gICAgICAgICAgc3RvcmVPcDogV2ViR1BVQ29uc3RhbnRzLlN0b3JlT3AuU3RvcmVcbiAgICAgICAgfV07XG4gICAgICB9XG5cbiAgICAgIHZhciBkZXB0aFRleHR1cmVEZXNjcmlwdG9yID0ge1xuICAgICAgICBzaXplOiB0aGlzLm1haW5UZXh0dXJlRXh0ZW5kcyxcbiAgICAgICAgLy8gYXJyYXlMYXllckNvdW50OiAxLFxuICAgICAgICBtaXBMZXZlbENvdW50OiAxLFxuICAgICAgICBzYW1wbGVDb3VudDogdGhpcy5tYWluUGFzc1NhbXBsZUNvdW50LFxuICAgICAgICBkaW1lbnNpb246IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRGltZW5zaW9uLkUyZCxcbiAgICAgICAgZm9ybWF0OiBpc1NhZmFyaSA/ICdkZXB0aDMyZmxvYXQtc3RlbmNpbDgnIDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuRGVwdGgyNFBsdXNTdGVuY2lsOCxcbiAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuT3V0cHV0QXR0YWNobWVudFxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuZGVwdGhUZXh0dXJlKSB7XG4gICAgICAgIHRoaXMuZGVwdGhUZXh0dXJlLmRlc3Ryb3koKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kZXB0aFRleHR1cmUgPSB0aGlzLmRldmljZS5jcmVhdGVUZXh0dXJlKCAvLyBAdHMtaWdub3JlXG4gICAgICBkZXB0aFRleHR1cmVEZXNjcmlwdG9yKTtcbiAgICAgIHRoaXMubWFpbkRlcHRoQXR0YWNobWVudCA9IHtcbiAgICAgICAgYXR0YWNobWVudDogaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuZGVwdGhUZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCkgOiB0aGlzLmRlcHRoVGV4dHVyZS5jcmVhdGVWaWV3KCksXG4gICAgICAgIGRlcHRoTG9hZFZhbHVlOiB0aGlzLmNsZWFyRGVwdGhWYWx1ZSxcbiAgICAgICAgZGVwdGhTdG9yZU9wOiBXZWJHUFVDb25zdGFudHMuU3RvcmVPcC5TdG9yZSxcbiAgICAgICAgc3RlbmNpbExvYWRWYWx1ZTogdGhpcy5jbGVhclN0ZW5jaWxWYWx1ZSxcbiAgICAgICAgc3RlbmNpbFN0b3JlT3A6IFdlYkdQVUNvbnN0YW50cy5TdG9yZU9wLlN0b3JlXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydENvbXB1dGVQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0YXJ0Q29tcHV0ZVBhc3MoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MpIHtcbiAgICAgICAgdGhpcy5lbmRDb21wdXRlUGFzcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRDb21wdXRlUGFzcyA9IHRoaXMuY29tcHV0ZUVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydE1haW5SZW5kZXJQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0YXJ0TWFpblJlbmRlclBhc3MoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UmVuZGVyUGFzcyAmJiAhdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0KSB7XG4gICAgICAgIHRoaXMuZW5kTWFpblJlbmRlclBhc3MoKTtcbiAgICAgIH0gLy8gUmVzb2x2ZSBpbiBjYXNlIG9mIE1TQUFcblxuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmFudGlhbGlhc2luZykge1xuICAgICAgICB0aGlzLm1haW5Db2xvckF0dGFjaG1lbnRzWzBdLnJlc29sdmVUYXJnZXQgPSBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpIDogdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVWaWV3KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1haW5Db2xvckF0dGFjaG1lbnRzWzBdLmF0dGFjaG1lbnQgPSBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpIDogdGhpcy5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVWaWV3KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3VycmVudFJlbmRlclBhc3MgPSB0aGlzLnJlbmRlckVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHtcbiAgICAgICAgY29sb3JBdHRhY2htZW50czogdGhpcy5tYWluQ29sb3JBdHRhY2htZW50cyxcbiAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudDogdGhpcy5tYWluRGVwdGhBdHRhY2htZW50IC8vIFRPRE86IHVzZSBmcmFtZWJ1ZmZlcidzIGRlcHRoICYgc3RlbmNpbFxuXG4gICAgICB9KTtcbiAgICAgIHRoaXMubWFpblJlbmRlclBhc3MgPSB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzO1xuXG4gICAgICBpZiAodGhpcy5jYWNoZWRWaWV3cG9ydCkge1xuICAgICAgICB0aGlzLnZpZXdwb3J0KHRoaXMuY2FjaGVkVmlld3BvcnQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydFJlbmRlclRhcmdldFJlbmRlclBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3RhcnRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzKHJlbmRlclRhcmdldCwgY2xlYXJDb2xvciwgY2xlYXJEZXB0aCkge1xuICAgICAgdmFyIF9yZW5kZXJUYXJnZXQkZ2V0JGNvbCwgX3JlbmRlclRhcmdldCRnZXQkZGVwO1xuXG4gICAgICB2YXIgY2xlYXJTdGVuY2lsID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBmYWxzZTtcbiAgICAgIHZhciBncHVUZXh0dXJlID0gKF9yZW5kZXJUYXJnZXQkZ2V0JGNvbCA9IHJlbmRlclRhcmdldC5nZXQoKS5jb2xvcikgPT09IG51bGwgfHwgX3JlbmRlclRhcmdldCRnZXQkY29sID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfcmVuZGVyVGFyZ2V0JGdldCRjb2wudGV4dHVyZTtcbiAgICAgIHZhciBjb2xvclRleHR1cmVWaWV3O1xuXG4gICAgICBpZiAoZ3B1VGV4dHVyZSkge1xuICAgICAgICBjb2xvclRleHR1cmVWaWV3ID0gZ3B1VGV4dHVyZS5jcmVhdGVWaWV3KHRoaXMuY3VycmVudFJlbmRlclRhcmdldFZpZXdEZXNjcmlwdG9yKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRlcHRoU3RlbmNpbFRleHR1cmUgPSAoX3JlbmRlclRhcmdldCRnZXQkZGVwID0gcmVuZGVyVGFyZ2V0LmdldCgpLmRlcHRoKSA9PT0gbnVsbCB8fCBfcmVuZGVyVGFyZ2V0JGdldCRkZXAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9yZW5kZXJUYXJnZXQkZ2V0JGRlcC50ZXh0dXJlO1xuICAgICAgdmFyIGRlcHRoU3RlbmNpbFRleHR1cmVWaWV3O1xuXG4gICAgICBpZiAoZGVwdGhTdGVuY2lsVGV4dHVyZSkge1xuICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlVmlldyA9IGRlcHRoU3RlbmNpbFRleHR1cmUuY3JlYXRlVmlldygpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVuZGVyUGFzcyA9IHRoaXMucmVuZGVyVGFyZ2V0RW5jb2Rlci5iZWdpblJlbmRlclBhc3Moe1xuICAgICAgICBjb2xvckF0dGFjaG1lbnRzOiBbe1xuICAgICAgICAgIGF0dGFjaG1lbnQ6IGNvbG9yVGV4dHVyZVZpZXcsXG4gICAgICAgICAgbG9hZFZhbHVlOiBjbGVhckNvbG9yICE9PSBudWxsID8gY2xlYXJDb2xvciA6IFdlYkdQVUNvbnN0YW50cy5Mb2FkT3AuTG9hZCxcbiAgICAgICAgICBzdG9yZU9wOiBXZWJHUFVDb25zdGFudHMuU3RvcmVPcC5TdG9yZVxuICAgICAgICB9XSxcbiAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudDogZGVwdGhTdGVuY2lsVGV4dHVyZSAmJiBkZXB0aFN0ZW5jaWxUZXh0dXJlVmlldyA/IHtcbiAgICAgICAgICBhdHRhY2htZW50OiBkZXB0aFN0ZW5jaWxUZXh0dXJlVmlldyxcbiAgICAgICAgICBkZXB0aExvYWRWYWx1ZTogY2xlYXJEZXB0aCA/IHRoaXMuY2xlYXJEZXB0aFZhbHVlIDogV2ViR1BVQ29uc3RhbnRzLkxvYWRPcC5Mb2FkLFxuICAgICAgICAgIGRlcHRoU3RvcmVPcDogV2ViR1BVQ29uc3RhbnRzLlN0b3JlT3AuU3RvcmUsXG4gICAgICAgICAgc3RlbmNpbExvYWRWYWx1ZTogY2xlYXJTdGVuY2lsID8gdGhpcy5jbGVhclN0ZW5jaWxWYWx1ZSA6IFdlYkdQVUNvbnN0YW50cy5Mb2FkT3AuTG9hZCxcbiAgICAgICAgICBzdGVuY2lsU3RvcmVPcDogV2ViR1BVQ29uc3RhbnRzLlN0b3JlT3AuU3RvcmVcbiAgICAgICAgfSA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG4gICAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzID0gcmVuZGVyUGFzcztcblxuICAgICAgaWYgKHRoaXMuY2FjaGVkVmlld3BvcnQpIHtcbiAgICAgICAgdGhpcy52aWV3cG9ydCh0aGlzLmNhY2hlZFZpZXdwb3J0KTtcbiAgICAgIH0gLy8gVE9ETyBXRUJHUFUgc2V0IHRoZSBzY2lzc29yIHJlY3QgYW5kIHRoZSBzdGVuY2lsIHJlZmVyZW5jZSB2YWx1ZVxuXG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVuZE1haW5SZW5kZXJQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuZE1haW5SZW5kZXJQYXNzKCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFJlbmRlclBhc3MgPT09IHRoaXMubWFpblJlbmRlclBhc3MgJiYgdGhpcy5jdXJyZW50UmVuZGVyUGFzcyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzLmVuZFBhc3MoKTtcbiAgICAgICAgdGhpcy5yZXNldENhY2hlZFZpZXdwb3J0KCk7XG4gICAgICAgIHRoaXMuY3VycmVudFJlbmRlclBhc3MgPSBudWxsO1xuICAgICAgICB0aGlzLm1haW5SZW5kZXJQYXNzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZW5kQ29tcHV0ZVBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW5kQ29tcHV0ZVBhc3MoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MuZW5kUGFzcygpO1xuICAgICAgICB0aGlzLmN1cnJlbnRDb21wdXRlUGFzcyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVuZFJlbmRlclRhcmdldFJlbmRlclBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW5kUmVuZGVyVGFyZ2V0UmVuZGVyUGFzcygpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRSZW5kZXJQYXNzKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFJlbmRlclBhc3MuZW5kUGFzcygpO1xuICAgICAgICB0aGlzLnJlc2V0Q2FjaGVkVmlld3BvcnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVzZXRDYWNoZWRWaWV3cG9ydFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldENhY2hlZFZpZXdwb3J0KCkge1xuICAgICAgdGhpcy5jYWNoZWRWaWV3cG9ydCA9IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMCxcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMFxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5iaW5kRnJhbWVidWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5iaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXIpIHtcbiAgICAgIC8vIHVuYmluZFxuICAgICAgaWYgKHRoaXMuY3VycmVudFJlbmRlclBhc3MgJiYgdGhpcy5jdXJyZW50UmVuZGVyUGFzcyAhPT0gdGhpcy5tYWluUmVuZGVyUGFzcykge1xuICAgICAgICB0aGlzLmVuZFJlbmRlclRhcmdldFJlbmRlclBhc3MoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50cmFuc2llbnRWaWV3cG9ydC54ID0gSW5maW5pdHk7XG4gICAgICB0aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQgPSBudWxsOyAvLyBpZiAodGV4dHVyZS5nZW5lcmF0ZU1pcE1hcHMgJiYgIWRpc2FibGVHZW5lcmF0ZU1pcE1hcHMgJiYgIXRleHR1cmUuaXNDdWJlKSB7XG4gICAgICAvLyAgIHRoaXMuX2dlbmVyYXRlTWlwbWFwcyh0ZXh0dXJlKTtcbiAgICAgIC8vIH1cblxuICAgICAgdGhpcy5jdXJyZW50UmVuZGVyUGFzcyA9IHRoaXMubWFpblJlbmRlclBhc3M7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYkdQVUVuZ2luZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu-engine/es/webgpu/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/Kernel.js": /*!**************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/Kernel.js ***! \**************************************************/ /*! exports provided: Kernel */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Kernel\", function() { return Kernel; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _utils_canvas__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/canvas */ \"./node_modules/@antv/g-webgpu/es/utils/canvas.js\");\n/* harmony import */ var _utils_is_array__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/is-array */ \"./node_modules/@antv/g-webgpu/es/utils/is-array.js\");\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/is-number */ \"./node_modules/@antv/g-webgpu/es/utils/is-number.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils/is-typedarray */ \"./node_modules/@antv/g-webgpu/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n\n\n\nvar Kernel = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Kernel() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, Kernel);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"configService\", _descriptor2, this);\n\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n this.model = void 0;\n this.dirty = true;\n this.compiledBundle = void 0;\n this.initPromise = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(Kernel, [{\n key: \"init\",\n value: function init() {\n var _this$configService$g = this.configService.get(),\n canvas = _this$configService$g.canvas,\n engineOptions = _this$configService$g.engineOptions;\n\n this.initPromise = this.engine.init(_objectSpread({\n canvas: canvas || Object(_utils_canvas__WEBPACK_IMPORTED_MODULE_11__[\"createCanvas\"])(),\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n }, engineOptions));\n }\n }, {\n key: \"setBundle\",\n value: function setBundle(bundle) {\n // deep clone\n this.compiledBundle = JSON.parse(JSON.stringify(bundle));\n }\n }, {\n key: \"setDispatch\",\n value: function setDispatch(dispatch) {\n if (this.compiledBundle.context) {\n this.compiledBundle.context.dispatch = dispatch;\n }\n\n return this;\n }\n }, {\n key: \"setMaxIteration\",\n value: function setMaxIteration(maxIteration) {\n if (this.compiledBundle.context) {\n this.compiledBundle.context.maxIteration = maxIteration;\n }\n\n return this;\n }\n }, {\n key: \"setBinding\",\n value: function setBinding(name, data) {\n var _this = this;\n\n if (typeof name === 'string') {\n var isNumberLikeData = Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_13__[\"isNumber\"])(data) || Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_14__[\"isTypedArray\"])(data) || Object(_utils_is_array__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(data);\n\n if (this.compiledBundle && this.compiledBundle.context) {\n // set define, eg. setBinding('MAX_LENGTH', 10)\n var existedDefine = this.compiledBundle.context.defines.find(function (b) {\n return b.name === name;\n });\n\n if (existedDefine) {\n existedDefine.value = data;\n return this;\n } // set uniform\n\n\n var existedBinding = this.compiledBundle.context.uniforms.find(function (b) {\n return b.name === name;\n });\n\n if (existedBinding) {\n // update uniform or buffer\n if (isNumberLikeData) {\n // @ts-ignore\n existedBinding.data = data;\n existedBinding.isReferer = false;\n\n if (existedBinding.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"STORAGE_CLASS\"].Uniform) {\n if (this.model) {\n // @ts-ignore\n this.model.updateUniform(name, data);\n }\n } else {\n if (this.model) {\n // @ts-ignore\n this.model.updateBuffer(name, data);\n }\n }\n } else {\n // update with another kernel\n existedBinding.isReferer = true; // @ts-ignore\n\n existedBinding.data = data;\n }\n }\n }\n } else {\n Object.keys(name).forEach(function (key) {\n _this.setBinding(key, name[key]);\n });\n }\n\n return this;\n }\n }, {\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this2 = this;\n\n var iteration,\n i,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n iteration = _args.length > 0 && _args[0] !== undefined ? _args[0] : 1;\n\n if (!this.dirty) {\n _context.next = 6;\n break;\n }\n\n if (this.compiledBundle.context) {\n if (iteration > 1) {\n this.compiledBundle.context.maxIteration = iteration;\n } else {\n this.compiledBundle.context.maxIteration++;\n }\n }\n\n _context.next = 5;\n return this.compile();\n\n case 5:\n this.dirty = false;\n\n case 6:\n this.engine.beginFrame(); // 首先开启当前 frame 的 compute pass\n\n this.engine.clear({});\n\n if (this.compiledBundle.context) {\n this.compiledBundle.context.uniforms.filter(function (_ref) {\n var isReferer = _ref.isReferer;\n return isReferer;\n }).forEach(function (_ref2) {\n var data = _ref2.data,\n name = _ref2.name;\n\n // @ts-ignore\n _this2.model.confirmInput(data.model, name);\n });\n }\n\n for (i = 0; i < iteration; i++) {\n this.model.run();\n }\n\n this.engine.endFrame();\n return _context.abrupt(\"return\", this);\n\n case 12:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n /**\n * read output from GPUBuffer\n */\n\n }, {\n key: \"getOutput\",\n value: function () {\n var _getOutput = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", this.model.readData());\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getOutput() {\n return _getOutput.apply(this, arguments);\n }\n\n return getOutput;\n }()\n }, {\n key: \"compile\",\n value: function () {\n var _compile = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var context, target, shader;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.initPromise;\n\n case 2:\n context = _objectSpread({}, this.compiledBundle.context);\n target = this.engine.supportWebGPU ? this.engine.useWGSL ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].WGSL : _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].GLSL450 : _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].GLSL100;\n shader = this.compiledBundle.shaders[target]; // this.bindings?.forEach(({ name, data }) => {\n // if (name === name.toUpperCase()) {\n // const define = context.defines.find((d) => d.name === name);\n // if (define) {\n // // @ts-ignore\n // define.value = data;\n // }\n // }\n // });\n // 生成运行时 define\n\n context.defines.filter(function (define) {\n return define.runtime;\n }).forEach(function (define) {\n var valuePlaceHolder = \"\".concat(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"DefineValuePlaceholder\"]).concat(define.name);\n shader = shader.replace(valuePlaceHolder, \"\".concat(define.value));\n });\n context.shader = shader; // 添加 uniform 绑定的数据\n\n context.uniforms.forEach(function (uniform) {\n // const binding = this.bindings.find((b) => b.name === uniform.name);\n // if (binding) {\n // // @ts-ignore\n // uniform.data = binding.referer || binding.data;\n // // @ts-ignore\n // uniform.isReferer = !!binding.referer;\n // }\n // 未指定数据,尝试根据 uniform 类型初始化\n if (!uniform.data) {\n if (uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"STORAGE_CLASS\"].StorageBuffer) {\n var sizePerElement = 1;\n\n if (uniform.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"AST_TOKEN_TYPES\"].FloatArray) {\n sizePerElement = 1;\n } else if (uniform.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"AST_TOKEN_TYPES\"].Vector4FloatArray) {\n sizePerElement = 4;\n }\n\n uniform.data = new Float32Array(context.output.length * sizePerElement).fill(0);\n }\n }\n }); // } else if (uniform.type === 'image2D') {\n // // @ts-ignore\n // buffer.data = new Uint8ClampedArray(context.output.length!).fill(0);\n // }\n\n this.compiledBundle.context = context;\n _context3.next = 11;\n return this.engine.createComputeModel(this.compiledBundle.context);\n\n case 11:\n this.model = _context3.sent;\n\n case 12:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function compile() {\n return _compile.apply(this, arguments);\n }\n\n return compile;\n }()\n }]);\n\n return Kernel;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"configService\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Kernel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvS2VybmVsLmpzPzNiN2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDSjtBQUNzQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLHVEQUF1RCxDQUFDLDRFQUFlLDJCQUEyQixFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyxpREFBaUQsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFclo7O0FBRS9EO0FBQ2pCO0FBQ0Q7QUFDUDtBQUNNO0FBQ1E7QUFDOUMscUJBQXFCLDZEQUFVLFlBQVkseURBQU0sQ0FBQyw4REFBVSx3QkFBd0IseURBQU0sQ0FBQyw4REFBVTtBQUM1RztBQUNBLElBQUksNEVBQWU7O0FBRW5CLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsa0JBQWtCLHdFQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEIsbUVBQVk7QUFDdEMseUJBQXlCLDBFQUE2QjtBQUN0RDtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCLGtFQUFRLFVBQVUsMEVBQVksVUFBVSxnRUFBTzs7QUFFOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrREFBa0QsaUVBQWE7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLDhDQUE4Qzs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EseUNBQXlDOztBQUV6QyxvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjs7QUFFQSwyQkFBMkIsZUFBZTtBQUMxQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSx1QkFBdUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQzFFLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFO0FBQ0EsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUEwQztBQUMxQywyRUFBMkUsMERBQU0sUUFBUSwwREFBTSxXQUFXLDBEQUFNO0FBQ2hILDZEQUE2RCw2QkFBNkIsYUFBYTtBQUN2RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLG1EQUFtRCwwRUFBc0I7QUFDekU7QUFDQSxpQkFBaUI7QUFDakIsd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxpRUFBYTtBQUM5RDs7QUFFQSwyQ0FBMkMsbUVBQWU7QUFDMUQ7QUFDQSx1QkFBdUIsMkJBQTJCLG1FQUFlO0FBQ2pFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEVBQUUsS0FBSztBQUN4QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL0tlcm5lbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF90ZW1wO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgQVNUX1RPS0VOX1RZUEVTLCBjcmVhdGVFbnRpdHksIERlZmluZVZhbHVlUGxhY2Vob2xkZXIsIElERU5USUZJRVIsIFNUT1JBR0VfQ0xBU1MsIFRhcmdldCB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnOyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tc3VibW9kdWxlLWltcG9ydHNcblxuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IGNyZWF0ZUNhbnZhcyB9IGZyb20gJy4vdXRpbHMvY2FudmFzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vdXRpbHMvaXMtYXJyYXknO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL3V0aWxzL2lzLW51bWJlcic7XG5pbXBvcnQgeyBpc1R5cGVkQXJyYXkgfSBmcm9tICcuL3V0aWxzL2lzLXR5cGVkYXJyYXknO1xuZXhwb3J0IHZhciBLZXJuZWwgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5SZW5kZXJFbmdpbmUpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLkNvbmZpZ1NlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gS2VybmVsKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBLZXJuZWwpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjb25maWdTZXJ2aWNlXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgICB0aGlzLmVudGl0eSA9IGNyZWF0ZUVudGl0eSgpO1xuICAgIHRoaXMubW9kZWwgPSB2b2lkIDA7XG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5jb21waWxlZEJ1bmRsZSA9IHZvaWQgMDtcbiAgICB0aGlzLmluaXRQcm9taXNlID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEtlcm5lbCwgW3tcbiAgICBrZXk6IFwiaW5pdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0KCkge1xuICAgICAgdmFyIF90aGlzJGNvbmZpZ1NlcnZpY2UkZyA9IHRoaXMuY29uZmlnU2VydmljZS5nZXQoKSxcbiAgICAgICAgICBjYW52YXMgPSBfdGhpcyRjb25maWdTZXJ2aWNlJGcuY2FudmFzLFxuICAgICAgICAgIGVuZ2luZU9wdGlvbnMgPSBfdGhpcyRjb25maWdTZXJ2aWNlJGcuZW5naW5lT3B0aW9ucztcblxuICAgICAgdGhpcy5pbml0UHJvbWlzZSA9IHRoaXMuZW5naW5lLmluaXQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIGNhbnZhczogY2FudmFzIHx8IGNyZWF0ZUNhbnZhcygpLFxuICAgICAgICBzd2FwQ2hhaW5Gb3JtYXQ6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRm9ybWF0LkJHUkE4VW5vcm0sXG4gICAgICAgIGFudGlhbGlhc2luZzogZmFsc2VcbiAgICAgIH0sIGVuZ2luZU9wdGlvbnMpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0QnVuZGxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEJ1bmRsZShidW5kbGUpIHtcbiAgICAgIC8vIGRlZXAgY2xvbmVcbiAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGJ1bmRsZSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXREaXNwYXRjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXREaXNwYXRjaChkaXNwYXRjaCkge1xuICAgICAgaWYgKHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dCkge1xuICAgICAgICB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQuZGlzcGF0Y2ggPSBkaXNwYXRjaDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldE1heEl0ZXJhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNYXhJdGVyYXRpb24obWF4SXRlcmF0aW9uKSB7XG4gICAgICBpZiAodGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0KSB7XG4gICAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC5tYXhJdGVyYXRpb24gPSBtYXhJdGVyYXRpb247XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRCaW5kaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEJpbmRpbmcobmFtZSwgZGF0YSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICB2YXIgaXNOdW1iZXJMaWtlRGF0YSA9IGlzTnVtYmVyKGRhdGEpIHx8IGlzVHlwZWRBcnJheShkYXRhKSB8fCBpc0FycmF5KGRhdGEpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbXBpbGVkQnVuZGxlICYmIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dCkge1xuICAgICAgICAgIC8vIHNldCBkZWZpbmUsIGVnLiBzZXRCaW5kaW5nKCdNQVhfTEVOR1RIJywgMTApXG4gICAgICAgICAgdmFyIGV4aXN0ZWREZWZpbmUgPSB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQuZGVmaW5lcy5maW5kKGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5uYW1lID09PSBuYW1lO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGV4aXN0ZWREZWZpbmUpIHtcbiAgICAgICAgICAgIGV4aXN0ZWREZWZpbmUudmFsdWUgPSBkYXRhO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgfSAvLyBzZXQgdW5pZm9ybVxuXG5cbiAgICAgICAgICB2YXIgZXhpc3RlZEJpbmRpbmcgPSB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQudW5pZm9ybXMuZmluZChmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgcmV0dXJuIGIubmFtZSA9PT0gbmFtZTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChleGlzdGVkQmluZGluZykge1xuICAgICAgICAgICAgLy8gdXBkYXRlIHVuaWZvcm0gb3IgYnVmZmVyXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXJMaWtlRGF0YSkge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGV4aXN0ZWRCaW5kaW5nLmRhdGEgPSBkYXRhO1xuICAgICAgICAgICAgICBleGlzdGVkQmluZGluZy5pc1JlZmVyZXIgPSBmYWxzZTtcblxuICAgICAgICAgICAgICBpZiAoZXhpc3RlZEJpbmRpbmcuc3RvcmFnZUNsYXNzID09PSBTVE9SQUdFX0NMQVNTLlVuaWZvcm0pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC51cGRhdGVVbmlmb3JtKG5hbWUsIGRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC51cGRhdGVCdWZmZXIobmFtZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyB1cGRhdGUgd2l0aCBhbm90aGVyIGtlcm5lbFxuICAgICAgICAgICAgICBleGlzdGVkQmluZGluZy5pc1JlZmVyZXIgPSB0cnVlOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgZXhpc3RlZEJpbmRpbmcuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3Qua2V5cyhuYW1lKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRCaW5kaW5nKGtleSwgbmFtZVtrZXldKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJleGVjdXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZXhlY3V0ZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAgIHZhciBpdGVyYXRpb24sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgX2FyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaXRlcmF0aW9uID0gX2FyZ3MubGVuZ3RoID4gMCAmJiBfYXJnc1swXSAhPT0gdW5kZWZpbmVkID8gX2FyZ3NbMF0gOiAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChpdGVyYXRpb24gPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC5tYXhJdGVyYXRpb24gPSBpdGVyYXRpb247XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQubWF4SXRlcmF0aW9uKys7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZSgpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lLmJlZ2luRnJhbWUoKTsgLy8g6aaW5YWI5byA5ZCv5b2T5YmNIGZyYW1lIOeahCBjb21wdXRlIHBhc3NcblxuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lLmNsZWFyKHt9KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC51bmlmb3Jtcy5maWx0ZXIoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzUmVmZXJlciA9IF9yZWYuaXNSZWZlcmVyO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNSZWZlcmVyO1xuICAgICAgICAgICAgICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBfcmVmMi5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IF9yZWYyLm5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBfdGhpczIubW9kZWwuY29uZmlybUlucHV0KGRhdGEubW9kZWwsIG5hbWUpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGl0ZXJhdGlvbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnJ1bigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lLmVuZEZyYW1lKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCB0aGlzKTtcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gICAgLyoqXG4gICAgICogcmVhZCBvdXRwdXQgZnJvbSBHUFVCdWZmZXJcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldE91dHB1dFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2dldE91dHB1dCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiLCB0aGlzLm1vZGVsLnJlYWREYXRhKCkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBnZXRPdXRwdXQoKSB7XG4gICAgICAgIHJldHVybiBfZ2V0T3V0cHV0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBnZXRPdXRwdXQ7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2NvbXBpbGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHtcbiAgICAgICAgdmFyIGNvbnRleHQsIHRhcmdldCwgc2hhZGVyO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdFByb21pc2U7XG5cbiAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGNvbnRleHQgPSBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQpO1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IHRoaXMuZW5naW5lLnN1cHBvcnRXZWJHUFUgPyB0aGlzLmVuZ2luZS51c2VXR1NMID8gVGFyZ2V0LldHU0wgOiBUYXJnZXQuR0xTTDQ1MCA6IFRhcmdldC5HTFNMMTAwO1xuICAgICAgICAgICAgICAgIHNoYWRlciA9IHRoaXMuY29tcGlsZWRCdW5kbGUuc2hhZGVyc1t0YXJnZXRdOyAvLyB0aGlzLmJpbmRpbmdzPy5mb3JFYWNoKCh7IG5hbWUsIGRhdGEgfSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vICAgaWYgKG5hbWUgPT09IG5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIC8vICAgICBjb25zdCBkZWZpbmUgPSBjb250ZXh0LmRlZmluZXMuZmluZCgoZCkgPT4gZC5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgICAgICAgICAvLyAgICAgaWYgKGRlZmluZSkge1xuICAgICAgICAgICAgICAgIC8vICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAvLyAgICAgICBkZWZpbmUudmFsdWUgPSBkYXRhO1xuICAgICAgICAgICAgICAgIC8vICAgICB9XG4gICAgICAgICAgICAgICAgLy8gICB9XG4gICAgICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgICAgICAgLy8g55Sf5oiQ6L+Q6KGM5pe2IGRlZmluZVxuXG4gICAgICAgICAgICAgICAgY29udGV4dC5kZWZpbmVzLmZpbHRlcihmdW5jdGlvbiAoZGVmaW5lKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5lLnJ1bnRpbWU7XG4gICAgICAgICAgICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoZGVmaW5lKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgdmFsdWVQbGFjZUhvbGRlciA9IFwiXCIuY29uY2F0KERlZmluZVZhbHVlUGxhY2Vob2xkZXIpLmNvbmNhdChkZWZpbmUubmFtZSk7XG4gICAgICAgICAgICAgICAgICBzaGFkZXIgPSBzaGFkZXIucmVwbGFjZSh2YWx1ZVBsYWNlSG9sZGVyLCBcIlwiLmNvbmNhdChkZWZpbmUudmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNoYWRlciA9IHNoYWRlcjsgLy8g5re75YqgIHVuaWZvcm0g57uR5a6a55qE5pWw5o2uXG5cbiAgICAgICAgICAgICAgICBjb250ZXh0LnVuaWZvcm1zLmZvckVhY2goZnVuY3Rpb24gKHVuaWZvcm0pIHtcbiAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGJpbmRpbmcgPSB0aGlzLmJpbmRpbmdzLmZpbmQoKGIpID0+IGIubmFtZSA9PT0gdW5pZm9ybS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgIC8vIGlmIChiaW5kaW5nKSB7XG4gICAgICAgICAgICAgICAgICAvLyAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgIC8vICAgdW5pZm9ybS5kYXRhID0gYmluZGluZy5yZWZlcmVyIHx8IGJpbmRpbmcuZGF0YTtcbiAgICAgICAgICAgICAgICAgIC8vICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgLy8gICB1bmlmb3JtLmlzUmVmZXJlciA9ICEhYmluZGluZy5yZWZlcmVyO1xuICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgLy8g5pyq5oyH5a6a5pWw5o2u77yM5bCd6K+V5qC55o2uIHVuaWZvcm0g57G75Z6L5Yid5aeL5YyWXG4gICAgICAgICAgICAgICAgICBpZiAoIXVuaWZvcm0uZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodW5pZm9ybS5zdG9yYWdlQ2xhc3MgPT09IFNUT1JBR0VfQ0xBU1MuU3RvcmFnZUJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBzaXplUGVyRWxlbWVudCA9IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pZm9ybS50eXBlID09PSBBU1RfVE9LRU5fVFlQRVMuRmxvYXRBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZVBlckVsZW1lbnQgPSAxO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodW5pZm9ybS50eXBlID09PSBBU1RfVE9LRU5fVFlQRVMuVmVjdG9yNEZsb2F0QXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVQZXJFbGVtZW50ID0gNDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtLmRhdGEgPSBuZXcgRmxvYXQzMkFycmF5KGNvbnRleHQub3V0cHV0Lmxlbmd0aCAqIHNpemVQZXJFbGVtZW50KS5maWxsKDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7IC8vIH0gZWxzZSBpZiAodW5pZm9ybS50eXBlID09PSAnaW1hZ2UyRCcpIHtcbiAgICAgICAgICAgICAgICAvLyAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAvLyAgIGJ1ZmZlci5kYXRhID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGNvbnRleHQub3V0cHV0Lmxlbmd0aCEpLmZpbGwoMCk7XG4gICAgICAgICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDExO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVuZ2luZS5jcmVhdGVDb21wdXRlTW9kZWwodGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0KTtcblxuICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwgPSBfY29udGV4dDMuc2VudDtcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMywgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGNvbXBpbGUoKSB7XG4gICAgICAgIHJldHVybiBfY29tcGlsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tcGlsZTtcbiAgICB9KClcbiAgfV0pO1xuXG4gIHJldHVybiBLZXJuZWw7XG59KCksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJlbmdpbmVcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY29uZmlnU2VydmljZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9S2VybmVsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/Kernel.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/Renderer.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/Renderer.js ***! \****************************************************/ /*! exports provided: Renderer */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Renderer\", function() { return Renderer; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n/* babel-plugin-inline-import './material/shaders/map.frag.declaration.glsl' */\nvar mapFragDeclaration = \"#ifdef USE_MAP\\n uniform sampler2D map;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/map.frag.main.glsl' */\nvar mapFragMain = \"#ifdef USE_MAP\\n vec4 texelColor = texture2D(map, vUv);\\n // texelColor = mapTexelToLinear(texelColor);\\n diffuseColor *= texelColor;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.frag.declaration.glsl' */\nvar uvFragDeclaration = \"#if (defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ))\\n varying vec2 vUv;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.vert.declaration.glsl' */\nvar uvVertDeclaration = \"#ifdef USE_UV\\n attribute vec2 uv;\\n\\t#ifdef UVS_VERTEX_ONLY\\n vec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.vert.main.glsl' */\nvar uvVertMain = \"#ifdef USE_UV\\n vUv = (uvTransform * vec3(uv, 1)).xy;\\n#endif\";\nvar Renderer = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ShaderModuleService), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Renderer() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Renderer);\n\n this.container = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"shaderModule\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"configService\", _descriptor3, this);\n\n this.inited = false;\n this.rendering = false;\n this.pendings = [];\n this.views = [];\n this.size = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(Renderer, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var systems, config, _iterator, _step, system;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // 模块化处理\n this.shaderModule.registerBuiltinModules();\n this.shaderModule.registerModule('uv.vert.declaration', {\n vs: uvVertDeclaration\n });\n this.shaderModule.registerModule('uv.vert.main', {\n vs: uvVertMain\n });\n this.shaderModule.registerModule('uv.frag.declaration', {\n fs: uvFragDeclaration\n });\n this.shaderModule.registerModule('map.frag.declaration', {\n fs: mapFragDeclaration\n });\n this.shaderModule.registerModule('map.frag.main', {\n fs: mapFragMain\n });\n systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].Systems);\n config = this.configService.get();\n\n if (!config.canvas) {\n _context.next = 30;\n break;\n }\n\n _context.next = 11;\n return this.engine.init({\n canvas: config.canvas,\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n });\n\n case 11:\n _iterator = _createForOfIteratorHelper(systems);\n _context.prev = 12;\n\n _iterator.s();\n\n case 14:\n if ((_step = _iterator.n()).done) {\n _context.next = 21;\n break;\n }\n\n system = _step.value;\n\n if (!system.initialize) {\n _context.next = 19;\n break;\n }\n\n _context.next = 19;\n return system.initialize();\n\n case 19:\n _context.next = 14;\n break;\n\n case 21:\n _context.next = 26;\n break;\n\n case 23:\n _context.prev = 23;\n _context.t0 = _context[\"catch\"](12);\n\n _iterator.e(_context.t0);\n\n case 26:\n _context.prev = 26;\n\n _iterator.f();\n\n return _context.finish(26);\n\n case 29:\n this.inited = true;\n\n case 30:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[12, 23, 26, 29]]);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"render\",\n value: function () {\n var _render = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var systems,\n _len,\n views,\n _key,\n _iterator2,\n _step2,\n system,\n _args2 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(!this.inited || this.rendering)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n if (this.pendings.length) {\n this.pendings.forEach(function (pending) {\n pending();\n });\n }\n\n this.rendering = true;\n this.engine.beginFrame();\n systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].Systems);\n\n for (_len = _args2.length, views = new Array(_len), _key = 0; _key < _len; _key++) {\n views[_key] = _args2[_key];\n }\n\n _iterator2 = _createForOfIteratorHelper(systems);\n _context2.prev = 8;\n\n _iterator2.s();\n\n case 10:\n if ((_step2 = _iterator2.n()).done) {\n _context2.next = 17;\n break;\n }\n\n system = _step2.value;\n\n if (!system.execute) {\n _context2.next = 15;\n break;\n }\n\n _context2.next = 15;\n return system.execute(views);\n\n case 15:\n _context2.next = 10;\n break;\n\n case 17:\n _context2.next = 22;\n break;\n\n case 19:\n _context2.prev = 19;\n _context2.t0 = _context2[\"catch\"](8);\n\n _iterator2.e(_context2.t0);\n\n case 22:\n _context2.prev = 22;\n\n _iterator2.f();\n\n return _context2.finish(22);\n\n case 25:\n // 录制一遍绘制命令,后续直接播放\n // if (this.useRenderBundle) {\n // if (!this.renderBundleRecorded) {\n // this.engine.startRecordBundle();\n // if (this.onUpdate) {\n // await this.onUpdate(this.engine);\n // }\n // this.renderBundle = this.engine.stopRecordBundle();\n // this.renderBundleRecorded = true;\n // }\n // this.engine.executeBundles([this.renderBundle]);\n // } else {\n // if (this.onUpdate) {\n // await this.onUpdate(this.engine);\n // }\n // }\n this.engine.endFrame();\n this.rendering = false;\n\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[8, 19, 22, 25]]);\n }));\n\n function render() {\n return _render.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"clear\",\n value: function clear(options) {\n var _this = this;\n\n if (this.inited) {\n this.engine.clear(options);\n } else {\n this.pendings.unshift(function () {\n _this.engine.clear(options);\n\n _this.pendings.shift();\n });\n }\n\n return this;\n } // public setScissor(\n // scissor: Partial<{\n // enable: boolean;\n // box: {\n // x: number;\n // y: number;\n // width: number;\n // height: number;\n // };\n // }>,\n // ) {\n // this.engine.setScissor(scissor);\n // return this;\n // }\n\n }, {\n key: \"setSize\",\n value: function setSize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n var canvas = this.engine.getCanvas();\n this.size = {\n width: width,\n height: height\n };\n canvas.width = width;\n canvas.height = height;\n return this;\n }\n }, {\n key: \"getSize\",\n value: function getSize() {\n return this.size;\n }\n }]);\n\n return Renderer;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"shaderModule\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"configService\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Renderer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvUmVuZGVyZXIuanM/M2QxNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUNrQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLHdEQUF3RCxRQUFRLG1FQUFtRSx3SEFBd0gsZ0JBQWdCLFdBQVcseUJBQXlCLFNBQVMsd0JBQXdCLDRCQUE0QixjQUFjLFNBQVMsOEJBQThCLEVBQUUscUJBQXFCLFVBQVUsRUFBRSxTQUFTLEVBQUUsOEpBQThKLEVBQUUsa0RBQWtELFNBQVMsa0JBQWtCLDJCQUEyQixFQUFFLG1CQUFtQixzQkFBc0IsOEJBQThCLGFBQWEsRUFBRSxzQkFBc0IsZUFBZSxXQUFXLEVBQUUsbUJBQW1CLE1BQU0seURBQXlELEVBQUUsVUFBVSx1QkFBdUIsRUFBRSxFQUFFLEdBQUc7O0FBRTc5QixpREFBaUQsZ0JBQWdCLGdFQUFnRSx3REFBd0QsNkRBQTZELHNEQUFzRCxrSEFBa0g7O0FBRTlaLHNDQUFzQyx1REFBdUQsdUNBQXVDLFNBQVMsT0FBTyxrQkFBa0IsRUFBRSxhQUFhOztBQUVwSTs7QUFFZTtBQUNqQjs7QUFFL0M7QUFDQSxrRUFBa0U7O0FBRWxFO0FBQ0EsMkVBQTJFLGlEQUFpRCwrQkFBK0I7O0FBRTNKO0FBQ0EscUdBQXFHOztBQUVyRztBQUNBLDREQUE0RCx5Q0FBeUMsZ0NBQWdDLHVDQUF1Qzs7QUFFNUs7QUFDQSx3RUFBd0U7QUFDakUsdUJBQXVCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyw4REFBVSx3QkFBd0Isd0RBQU0sQ0FBQyw4REFBVSwrQkFBK0Isd0RBQU0sQ0FBQyw4REFBVTtBQUM5SjtBQUNBLElBQUksNEVBQWU7O0FBRW5COztBQUVBLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLGtCQUFrQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDckU7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixnREFBZ0QsOERBQVU7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDBFQUE2QjtBQUNoRTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLG9CQUFvQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjs7QUFFQTtBQUNBO0FBQ0EsZ0RBQWdELDhEQUFVOztBQUUxRCw2RUFBNkUsYUFBYTtBQUMxRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy9SZW5kZXJlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2Rlc2NyaXB0b3IyLCBfZGVzY3JpcHRvcjMsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJzsgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXN1Ym1vZHVsZS1pbXBvcnRzXG5cbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL21hdGVyaWFsL3NoYWRlcnMvbWFwLmZyYWcuZGVjbGFyYXRpb24uZ2xzbCcgKi9cbnZhciBtYXBGcmFnRGVjbGFyYXRpb24gPSBcIiNpZmRlZiBVU0VfTUFQXFxuICB1bmlmb3JtIHNhbXBsZXIyRCBtYXA7XFxuI2VuZGlmXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL21hdGVyaWFsL3NoYWRlcnMvbWFwLmZyYWcubWFpbi5nbHNsJyAqL1xudmFyIG1hcEZyYWdNYWluID0gXCIjaWZkZWYgVVNFX01BUFxcbiAgdmVjNCB0ZXhlbENvbG9yID0gdGV4dHVyZTJEKG1hcCwgdlV2KTtcXG4gIC8vIHRleGVsQ29sb3IgPSBtYXBUZXhlbFRvTGluZWFyKHRleGVsQ29sb3IpO1xcbiAgZGlmZnVzZUNvbG9yICo9IHRleGVsQ29sb3I7XFxuI2VuZGlmXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL21hdGVyaWFsL3NoYWRlcnMvdXYuZnJhZy5kZWNsYXJhdGlvbi5nbHNsJyAqL1xudmFyIHV2RnJhZ0RlY2xhcmF0aW9uID0gXCIjaWYgKGRlZmluZWQoIFVTRV9VViApICYmICEgZGVmaW5lZCggVVZTX1ZFUlRFWF9PTkxZICkpXFxuICB2YXJ5aW5nIHZlYzIgdlV2O1xcbiNlbmRpZlwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9tYXRlcmlhbC9zaGFkZXJzL3V2LnZlcnQuZGVjbGFyYXRpb24uZ2xzbCcgKi9cbnZhciB1dlZlcnREZWNsYXJhdGlvbiA9IFwiI2lmZGVmIFVTRV9VVlxcbiAgYXR0cmlidXRlIHZlYzIgdXY7XFxuXFx0I2lmZGVmIFVWU19WRVJURVhfT05MWVxcbiAgICB2ZWMyIHZVdjtcXG5cXHQjZWxzZVxcblxcdFxcdHZhcnlpbmcgdmVjMiB2VXY7XFxuXFx0I2VuZGlmXFxuXFx0dW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xcbiNlbmRpZlwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9tYXRlcmlhbC9zaGFkZXJzL3V2LnZlcnQubWFpbi5nbHNsJyAqL1xudmFyIHV2VmVydE1haW4gPSBcIiNpZmRlZiBVU0VfVVZcXG4gIHZVdiA9ICh1dlRyYW5zZm9ybSAqIHZlYzModXYsIDEpKS54eTtcXG4jZW5kaWZcIjtcbmV4cG9ydCB2YXIgUmVuZGVyZXIgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5SZW5kZXJFbmdpbmUpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlNoYWRlck1vZHVsZVNlcnZpY2UpLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLkNvbmZpZ1NlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVuZGVyZXIoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlbmRlcmVyKTtcblxuICAgIHRoaXMuY29udGFpbmVyID0gdm9pZCAwO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJzaGFkZXJNb2R1bGVcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiY29uZmlnU2VydmljZVwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgdGhpcy5pbml0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcmluZyA9IGZhbHNlO1xuICAgIHRoaXMucGVuZGluZ3MgPSBbXTtcbiAgICB0aGlzLnZpZXdzID0gW107XG4gICAgdGhpcy5zaXplID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlbmRlcmVyLCBbe1xuICAgIGtleTogXCJpbml0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfaW5pdCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBzeXN0ZW1zLCBjb25maWcsIF9pdGVyYXRvciwgX3N0ZXAsIHN5c3RlbTtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIC8vIOaooeWdl+WMluWkhOeQhlxuICAgICAgICAgICAgICAgIHRoaXMuc2hhZGVyTW9kdWxlLnJlZ2lzdGVyQnVpbHRpbk1vZHVsZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNoYWRlck1vZHVsZS5yZWdpc3Rlck1vZHVsZSgndXYudmVydC5kZWNsYXJhdGlvbicsIHtcbiAgICAgICAgICAgICAgICAgIHZzOiB1dlZlcnREZWNsYXJhdGlvblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhZGVyTW9kdWxlLnJlZ2lzdGVyTW9kdWxlKCd1di52ZXJ0Lm1haW4nLCB7XG4gICAgICAgICAgICAgICAgICB2czogdXZWZXJ0TWFpblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhZGVyTW9kdWxlLnJlZ2lzdGVyTW9kdWxlKCd1di5mcmFnLmRlY2xhcmF0aW9uJywge1xuICAgICAgICAgICAgICAgICAgZnM6IHV2RnJhZ0RlY2xhcmF0aW9uXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUoJ21hcC5mcmFnLmRlY2xhcmF0aW9uJywge1xuICAgICAgICAgICAgICAgICAgZnM6IG1hcEZyYWdEZWNsYXJhdGlvblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhZGVyTW9kdWxlLnJlZ2lzdGVyTW9kdWxlKCdtYXAuZnJhZy5tYWluJywge1xuICAgICAgICAgICAgICAgICAgZnM6IG1hcEZyYWdNYWluXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3lzdGVtcyA9IHRoaXMuY29udGFpbmVyLmdldEFsbChJREVOVElGSUVSLlN5c3RlbXMpO1xuICAgICAgICAgICAgICAgIGNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5nZXQoKTtcblxuICAgICAgICAgICAgICAgIGlmICghY29uZmlnLmNhbnZhcykge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDMwO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDExO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVuZ2luZS5pbml0KHtcbiAgICAgICAgICAgICAgICAgIGNhbnZhczogY29uZmlnLmNhbnZhcyxcbiAgICAgICAgICAgICAgICAgIHN3YXBDaGFpbkZvcm1hdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuQkdSQThVbm9ybSxcbiAgICAgICAgICAgICAgICAgIGFudGlhbGlhc2luZzogZmFsc2VcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHN5c3RlbXMpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxMjtcblxuICAgICAgICAgICAgICAgIF9pdGVyYXRvci5zKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgICAgICBpZiAoKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDIxO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3lzdGVtID0gX3N0ZXAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXN5c3RlbS5pbml0aWFsaXplKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5c3RlbS5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMjM7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQudDAgPSBfY29udGV4dFtcImNhdGNoXCJdKDEyKTtcblxuICAgICAgICAgICAgICAgIF9pdGVyYXRvci5lKF9jb250ZXh0LnQwKTtcblxuICAgICAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAyNjtcblxuICAgICAgICAgICAgICAgIF9pdGVyYXRvci5mKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuZmluaXNoKDI2KTtcblxuICAgICAgICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBjYXNlIDMwOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMsIFtbMTIsIDIzLCAyNiwgMjldXSk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICAgIHJldHVybiBfaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZW5kZXIgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHtcbiAgICAgICAgdmFyIHN5c3RlbXMsXG4gICAgICAgICAgICBfbGVuLFxuICAgICAgICAgICAgdmlld3MsXG4gICAgICAgICAgICBfa2V5LFxuICAgICAgICAgICAgX2l0ZXJhdG9yMixcbiAgICAgICAgICAgIF9zdGVwMixcbiAgICAgICAgICAgIHN5c3RlbSxcbiAgICAgICAgICAgIF9hcmdzMiA9IGFyZ3VtZW50cztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBpZiAoISghdGhpcy5pbml0ZWQgfHwgdGhpcy5yZW5kZXJpbmcpKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGVuZGluZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdzLmZvckVhY2goZnVuY3Rpb24gKHBlbmRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZygpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lLmJlZ2luRnJhbWUoKTtcbiAgICAgICAgICAgICAgICBzeXN0ZW1zID0gdGhpcy5jb250YWluZXIuZ2V0QWxsKElERU5USUZJRVIuU3lzdGVtcyk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKF9sZW4gPSBfYXJnczIubGVuZ3RoLCB2aWV3cyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgICAgICAgICAgIHZpZXdzW19rZXldID0gX2FyZ3MyW19rZXldO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihzeXN0ZW1zKTtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDg7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLnMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICAgIGlmICgoX3N0ZXAyID0gX2l0ZXJhdG9yMi5uKCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTc7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzeXN0ZW0gPSBfc3RlcDIudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXN5c3RlbS5leGVjdXRlKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE1O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3lzdGVtLmV4ZWN1dGUodmlld3MpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMDtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDE5O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MltcImNhdGNoXCJdKDgpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMi5lKF9jb250ZXh0Mi50MCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDIyO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMi5mKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmZpbmlzaCgyMik7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICAgICAgICAvLyDlvZXliLbkuIDpgY3nu5jliLblkb3ku6TvvIzlkI7nu63nm7TmjqXmkq3mlL5cbiAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy51c2VSZW5kZXJCdW5kbGUpIHtcbiAgICAgICAgICAgICAgICAvLyAgIGlmICghdGhpcy5yZW5kZXJCdW5kbGVSZWNvcmRlZCkge1xuICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmVuZ2luZS5zdGFydFJlY29yZEJ1bmRsZSgpO1xuICAgICAgICAgICAgICAgIC8vICAgICBpZiAodGhpcy5vblVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vICAgICAgIGF3YWl0IHRoaXMub25VcGRhdGUodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgIC8vICAgICB9XG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMucmVuZGVyQnVuZGxlID0gdGhpcy5lbmdpbmUuc3RvcFJlY29yZEJ1bmRsZSgpO1xuICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLnJlbmRlckJ1bmRsZVJlY29yZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgICAgICAvLyAgIHRoaXMuZW5naW5lLmV4ZWN1dGVCdW5kbGVzKFt0aGlzLnJlbmRlckJ1bmRsZV0pO1xuICAgICAgICAgICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gICBpZiAodGhpcy5vblVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vICAgICBhd2FpdCB0aGlzLm9uVXBkYXRlKHRoaXMuZW5naW5lKTtcbiAgICAgICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuZW5kRnJhbWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUyLCB0aGlzLCBbWzgsIDE5LCAyMiwgMjVdXSk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIF9yZW5kZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlbmRlcjtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJjbGVhclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhcihvcHRpb25zKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5pbml0ZWQpIHtcbiAgICAgICAgdGhpcy5lbmdpbmUuY2xlYXIob3B0aW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBlbmRpbmdzLnVuc2hpZnQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLmVuZ2luZS5jbGVhcihvcHRpb25zKTtcblxuICAgICAgICAgIF90aGlzLnBlbmRpbmdzLnNoaWZ0KCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IC8vIHB1YmxpYyBzZXRTY2lzc29yKFxuICAgIC8vICAgc2Npc3NvcjogUGFydGlhbDx7XG4gICAgLy8gICAgIGVuYWJsZTogYm9vbGVhbjtcbiAgICAvLyAgICAgYm94OiB7XG4gICAgLy8gICAgICAgeDogbnVtYmVyO1xuICAgIC8vICAgICAgIHk6IG51bWJlcjtcbiAgICAvLyAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgIC8vICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgIC8vICAgICB9O1xuICAgIC8vICAgfT4sXG4gICAgLy8gKSB7XG4gICAgLy8gICB0aGlzLmVuZ2luZS5zZXRTY2lzc29yKHNjaXNzb3IpO1xuICAgIC8vICAgcmV0dXJuIHRoaXM7XG4gICAgLy8gfVxuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0U2l6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRTaXplKF9yZWYpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG4gICAgICB2YXIgY2FudmFzID0gdGhpcy5lbmdpbmUuZ2V0Q2FudmFzKCk7XG4gICAgICB0aGlzLnNpemUgPSB7XG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgIH07XG4gICAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2l6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2l6ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVuZGVyZXI7XG59KCksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJlbmdpbmVcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2hhZGVyTW9kdWxlXCIsIFtfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImNvbmZpZ1NlcnZpY2VcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlbmRlcmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/Renderer.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/Scene.js": /*!*************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/Scene.js ***! \*************************************************/ /*! exports provided: Scene */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Scene\", function() { return Scene; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar Scene = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function Scene() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Scene);\n\n this.entities = [];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Scene, [{\n key: \"getEntities\",\n value: function getEntities() {\n return this.entities;\n }\n }, {\n key: \"addRenderable\",\n value: function addRenderable(renderable) {\n this.addEntity(renderable.getEntity());\n return this;\n }\n }, {\n key: \"removeRenderable\",\n value: function removeRenderable(renderable) {\n this.removeEntity(renderable.getEntity());\n return this;\n }\n }, {\n key: \"addLight\",\n value: function addLight() {}\n }, {\n key: \"addEntity\",\n value: function addEntity(entity) {\n if (this.entities.indexOf(entity) === -1) {\n this.entities.push(entity);\n }\n\n return this;\n }\n }, {\n key: \"removeEntity\",\n value: function removeEntity(entity) {\n var index = this.entities.indexOf(entity);\n this.entities.splice(index, 1);\n return this;\n }\n }]);\n\n return Scene;\n}(), _temp)) || _class);\n//# sourceMappingURL=Scene.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvU2NlbmUuanM/ZGFmNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047O0FBRTlEOztBQUV1QztBQUNoQyxvQkFBb0IsNERBQVU7QUFDckM7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy9TY2VuZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIF9kZWMsIF9jbGFzcywgX3RlbXA7XG5cbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuZXhwb3J0IHZhciBTY2VuZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNjZW5lKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTY2VuZSk7XG5cbiAgICB0aGlzLmVudGl0aWVzID0gW107XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2NlbmUsIFt7XG4gICAga2V5OiBcImdldEVudGl0aWVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEVudGl0aWVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZW50aXRpZXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFkZFJlbmRlcmFibGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkUmVuZGVyYWJsZShyZW5kZXJhYmxlKSB7XG4gICAgICB0aGlzLmFkZEVudGl0eShyZW5kZXJhYmxlLmdldEVudGl0eSgpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW1vdmVSZW5kZXJhYmxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZVJlbmRlcmFibGUocmVuZGVyYWJsZSkge1xuICAgICAgdGhpcy5yZW1vdmVFbnRpdHkocmVuZGVyYWJsZS5nZXRFbnRpdHkoKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYWRkTGlnaHRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkTGlnaHQoKSB7fVxuICB9LCB7XG4gICAga2V5OiBcImFkZEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRFbnRpdHkoZW50aXR5KSB7XG4gICAgICBpZiAodGhpcy5lbnRpdGllcy5pbmRleE9mKGVudGl0eSkgPT09IC0xKSB7XG4gICAgICAgIHRoaXMuZW50aXRpZXMucHVzaChlbnRpdHkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVtb3ZlRW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZUVudGl0eShlbnRpdHkpIHtcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuZW50aXRpZXMuaW5kZXhPZihlbnRpdHkpO1xuICAgICAgdGhpcy5lbnRpdGllcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFNjZW5lO1xufSgpLCBfdGVtcCkpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TY2VuZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/Scene.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/View.js": /*!************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/View.js ***! \************************************************/ /*! exports provided: View */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"View\", function() { return View; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _temp;\n\n\n\nvar View = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].RendererSystem), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function View() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, View);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"rendererSystem\", _descriptor, this);\n\n this.camera = void 0;\n this.scene = void 0;\n this.viewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n this.clearColor = [1, 1, 1, 1];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(View, [{\n key: \"getCamera\",\n value: function getCamera() {\n return this.camera;\n }\n }, {\n key: \"getScene\",\n value: function getScene() {\n return this.scene;\n }\n }, {\n key: \"getViewport\",\n value: function getViewport() {\n return this.viewport;\n }\n }, {\n key: \"getClearColor\",\n value: function getClearColor() {\n return this.clearColor;\n }\n }, {\n key: \"setCamera\",\n value: function setCamera(camera) {\n this.camera = camera;\n return this;\n }\n }, {\n key: \"setScene\",\n value: function setScene(scene) {\n this.scene = scene;\n return this;\n }\n }, {\n key: \"setViewport\",\n value: function setViewport(viewport) {\n this.viewport = viewport;\n return this;\n }\n }, {\n key: \"setClearColor\",\n value: function setClearColor(clearColor) {\n this.clearColor = clearColor;\n return this;\n }\n }, {\n key: \"pick\",\n value: function pick(position) {\n return this.rendererSystem.pick(position, this);\n }\n }]);\n\n return View;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"rendererSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=View.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvVmlldy5qcz8wZTkxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVpRDtBQUNLO0FBQy9DLG1CQUFtQiw0REFBVSxZQUFZLHdEQUFNLENBQUMsOERBQVUsbUJBQW1CLHVEQUFLLENBQUMsOERBQVU7QUFDcEc7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL1ZpZXcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX3RlbXA7XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuZXhwb3J0IHZhciBWaWV3ID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWMzID0gbmFtZWQoSURFTlRJRklFUi5SZW5kZXJlclN5c3RlbSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBWaWV3KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBWaWV3KTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwicmVuZGVyZXJTeXN0ZW1cIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgdGhpcy5jYW1lcmEgPSB2b2lkIDA7XG4gICAgdGhpcy5zY2VuZSA9IHZvaWQgMDtcbiAgICB0aGlzLnZpZXdwb3J0ID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdGhpcy5jbGVhckNvbG9yID0gWzEsIDEsIDEsIDFdO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFZpZXcsIFt7XG4gICAga2V5OiBcImdldENhbWVyYVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDYW1lcmEoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYW1lcmE7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNjZW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNjZW5lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NlbmU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFZpZXdwb3J0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpZXdwb3J0KCkge1xuICAgICAgcmV0dXJuIHRoaXMudmlld3BvcnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENsZWFyQ29sb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q2xlYXJDb2xvcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsZWFyQ29sb3I7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldENhbWVyYVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDYW1lcmEoY2FtZXJhKSB7XG4gICAgICB0aGlzLmNhbWVyYSA9IGNhbWVyYTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRTY2VuZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRTY2VuZShzY2VuZSkge1xuICAgICAgdGhpcy5zY2VuZSA9IHNjZW5lO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFZpZXdwb3J0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFZpZXdwb3J0KHZpZXdwb3J0KSB7XG4gICAgICB0aGlzLnZpZXdwb3J0ID0gdmlld3BvcnQ7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q2xlYXJDb2xvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDbGVhckNvbG9yKGNsZWFyQ29sb3IpIHtcbiAgICAgIHRoaXMuY2xlYXJDb2xvciA9IGNsZWFyQ29sb3I7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGlja1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwaWNrKHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJlclN5c3RlbS5waWNrKHBvc2l0aW9uLCB0aGlzKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVmlldztcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlbmRlcmVyU3lzdGVtXCIsIFtfZGVjMiwgX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Vmlldy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/View.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/World.js": /*!*************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/World.js ***! \*************************************************/ /*! exports provided: World */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"World\", function() { return World; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-engine */ \"./node_modules/@antv/g-webgpu-engine/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _camera_Camera__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./camera/Camera */ \"./node_modules/@antv/g-webgpu/es/camera/Camera.js\");\n/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./geometry */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n/* harmony import */ var _geometry_Box__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./geometry/Box */ \"./node_modules/@antv/g-webgpu/es/geometry/Box.js\");\n/* harmony import */ var _geometry_Merged__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./geometry/Merged */ \"./node_modules/@antv/g-webgpu/es/geometry/Merged.js\");\n/* harmony import */ var _geometry_Plane__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./geometry/Plane */ \"./node_modules/@antv/g-webgpu/es/geometry/Plane.js\");\n/* harmony import */ var _geometry_Sphere__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./geometry/Sphere */ \"./node_modules/@antv/g-webgpu/es/geometry/Sphere.js\");\n/* harmony import */ var _Kernel__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Kernel */ \"./node_modules/@antv/g-webgpu/es/Kernel.js\");\n/* harmony import */ var _material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./material */ \"./node_modules/@antv/g-webgpu/es/material/index.js\");\n/* harmony import */ var _material_basic__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./material/basic */ \"./node_modules/@antv/g-webgpu/es/material/basic/index.js\");\n/* harmony import */ var _renderable_grid__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./renderable/grid */ \"./node_modules/@antv/g-webgpu/es/renderable/grid/index.js\");\n/* harmony import */ var _renderable_line__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./renderable/line */ \"./node_modules/@antv/g-webgpu/es/renderable/line/index.js\");\n/* harmony import */ var _renderable_point__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./renderable/point */ \"./node_modules/@antv/g-webgpu/es/renderable/point/index.js\");\n/* harmony import */ var _renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./renderable/Renderable */ \"./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\");\n/* harmony import */ var _Renderer__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./Renderer */ \"./node_modules/@antv/g-webgpu/es/Renderer.js\");\n/* harmony import */ var _Scene__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./Scene */ \"./node_modules/@antv/g-webgpu/es/Scene.js\");\n/* harmony import */ var _texture_Cache__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./texture/Cache */ \"./node_modules/@antv/g-webgpu/es/texture/Cache.js\");\n/* harmony import */ var _texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./texture/Texture2D */ \"./node_modules/@antv/g-webgpu/es/texture/Texture2D.js\");\n/* harmony import */ var _utils_canvas__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./utils/canvas */ \"./node_modules/@antv/g-webgpu/es/utils/canvas.js\");\n/* harmony import */ var _View__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./View */ \"./node_modules/@antv/g-webgpu/es/View.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n// tslint:disable-next-line:no-reference\n/// \n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar World = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function World() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, World);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"configService\", _descriptor, this);\n\n this.container = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(World, [{\n key: \"getEngine\",\n value: function () {\n var _getEngine = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var engine, _this$configService$g, canvas, engineOptions;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n engine = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine);\n _this$configService$g = this.configService.get(), canvas = _this$configService$g.canvas, engineOptions = _this$configService$g.engineOptions;\n _context.next = 4;\n return engine.init(_objectSpread({\n canvas: canvas || Object(_utils_canvas__WEBPACK_IMPORTED_MODULE_29__[\"createCanvas\"])(),\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n }, engineOptions));\n\n case 4:\n return _context.abrupt(\"return\", engine);\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getEngine() {\n return _getEngine.apply(this, arguments);\n }\n\n return getEngine;\n }()\n /**\n * get transform component\n * @param entity\n */\n\n }, {\n key: \"getTransformComponent\",\n value: function getTransformComponent(entity) {\n var manager = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].TransformComponentManager);\n return manager.getComponentByEntity(entity);\n }\n }, {\n key: \"getMeshComponent\",\n value: function getMeshComponent(entity) {\n var manager = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MeshComponentManager);\n return manager.getComponentByEntity(entity);\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.configService.set(config);\n }\n }, {\n key: \"setContainer\",\n value: function setContainer(container) {\n this.container = container;\n }\n }, {\n key: \"getContainer\",\n value: function getContainer() {\n return this.container;\n }\n }, {\n key: \"createEntity\",\n value: function createEntity() {\n return Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n }\n }, {\n key: \"createScene\",\n value: function createScene() {\n return this.container.get(_Scene__WEBPACK_IMPORTED_MODULE_26__[\"Scene\"]);\n }\n }, {\n key: \"createCamera\",\n value: function createCamera() {\n return this.container.get(_camera_Camera__WEBPACK_IMPORTED_MODULE_12__[\"Camera\"]);\n }\n }, {\n key: \"createView\",\n value: function createView() {\n return this.container.get(_View__WEBPACK_IMPORTED_MODULE_30__[\"View\"]);\n } // public createLight(type: string,) {\n // return this.container.getNamed(IDENTIFIER.Light, type)\n // }\n\n }, {\n key: \"createRenderable\",\n value: function createRenderable(type, config) {\n var renderable = type ? this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable, type) : this.container.get(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"]);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n renderable.setConfig(config || {});\n renderable.setEntity(entity);\n return renderable;\n }\n }, {\n key: \"createGeometry\",\n value: function createGeometry(type, config) {\n var geometry = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry, type);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n geometry.setConfig(config || {});\n geometry.setEntity(entity);\n return geometry.getComponent();\n }\n }, {\n key: \"createMaterial\",\n value: function createMaterial(type, config) {\n var material = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Material, type);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n material.setConfig(config || {});\n material.setEntity(entity, type);\n return material.getComponent();\n }\n }, {\n key: \"createTexture2D\",\n value: function createTexture2D(config) {\n var texture = this.container.get(_texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__[\"Texture2D\"]);\n texture.setConfig(config);\n return texture;\n }\n }, {\n key: \"createBufferGeometry\",\n value: function createBufferGeometry(params) {\n var geometrySystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].GeometrySystem);\n return geometrySystem.createBufferGeometry(params);\n }\n }, {\n key: \"createInstancedBufferGeometry\",\n value: function createInstancedBufferGeometry(params) {\n var geometrySystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].GeometrySystem);\n return geometrySystem.createInstancedBufferGeometry(params);\n }\n }, {\n key: \"createShaderMaterial\",\n value: function createShaderMaterial(params) {\n var materialSystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MaterialSystem);\n return materialSystem.createShaderMaterial(params);\n }\n }, {\n key: \"createKernel\",\n value: function createKernel(precompiledBundle) {\n var kernel = this.container.get(_Kernel__WEBPACK_IMPORTED_MODULE_18__[\"Kernel\"]);\n\n if (typeof precompiledBundle === 'string') {\n kernel.setBundle(JSON.parse(precompiledBundle));\n } else {\n kernel.setBundle(precompiledBundle);\n }\n\n kernel.init();\n return kernel;\n }\n }, {\n key: \"createRenderer\",\n value: function createRenderer() {\n var renderer = this.container.get(_Renderer__WEBPACK_IMPORTED_MODULE_25__[\"Renderer\"]);\n renderer.container = this.container;\n renderer.init();\n return renderer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems);\n systems.forEach(function (system) {\n if (system.tearDown) {\n system.tearDown();\n }\n });\n var engine = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine);\n engine.destroy();\n var interactor = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].InteractorService);\n interactor.destroy();\n }\n }], [{\n key: \"create\",\n value: function create() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var worldContainer = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createWorldContainer\"])(); // bind render engine, fallback to WebGL\n\n var engineClazz = !navigator.gpu ? _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__[\"WebGLEngine\"] : _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__[\"WebGPUEngine\"];\n\n if (!worldContainer.isBound(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine)) {\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine) // @ts-ignore\n .to(engineClazz).inSingletonScope();\n }\n\n worldContainer.bind(_Renderer__WEBPACK_IMPORTED_MODULE_25__[\"Renderer\"]).toSelf();\n worldContainer.bind(_Kernel__WEBPACK_IMPORTED_MODULE_18__[\"Kernel\"]).toSelf();\n worldContainer.bind(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"]).toSelf();\n worldContainer.bind(_View__WEBPACK_IMPORTED_MODULE_30__[\"View\"]).toSelf();\n worldContainer.bind(_camera_Camera__WEBPACK_IMPORTED_MODULE_12__[\"Camera\"]).toSelf();\n worldContainer.bind(_Scene__WEBPACK_IMPORTED_MODULE_26__[\"Scene\"]).toSelf();\n worldContainer.bind(World).toSelf();\n worldContainer.bind(_texture_Cache__WEBPACK_IMPORTED_MODULE_27__[\"TextureCache\"]).toSelf();\n worldContainer.bind(_texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__[\"Texture2D\"]).toSelf(); // bind geometries\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Box__WEBPACK_IMPORTED_MODULE_14__[\"Box\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].BOX);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Sphere__WEBPACK_IMPORTED_MODULE_17__[\"Sphere\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].SPHERE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Plane__WEBPACK_IMPORTED_MODULE_16__[\"Plane\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].PLANE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Merged__WEBPACK_IMPORTED_MODULE_15__[\"Merged\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].MERGED); // bind materials\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Material).to(_material_basic__WEBPACK_IMPORTED_MODULE_20__[\"Basic\"]).whenTargetNamed(_material__WEBPACK_IMPORTED_MODULE_19__[\"Material\"].BASIC); // bind renderables\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_point__WEBPACK_IMPORTED_MODULE_23__[\"Point\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].POINT);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_line__WEBPACK_IMPORTED_MODULE_22__[\"Line\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].LINE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_grid__WEBPACK_IMPORTED_MODULE_21__[\"Grid\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].GRID);\n var world = worldContainer.get(World);\n world.setContainer(worldContainer);\n world.setConfig(config);\n return world;\n }\n }]);\n\n return World;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"configService\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=World.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvV29ybGQuanM/MTgxMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNPO0FBQ0k7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBoQjtBQUNBO0FBQ3NHO0FBQ3BDOztBQUVGO0FBQ2pCO0FBQ047QUFDSDtBQUNEO0FBQ007QUFDRjtBQUNFO0FBQ1Q7QUFDSTtBQUNHO0FBQ0E7QUFDQTtBQUNFO0FBQ1U7QUFDZjtBQUNOO0FBQ2U7QUFDQztBQUNGO0FBQ2hCO0FBQ3ZCLG9CQUFvQiw2REFBVSxZQUFZLHlEQUFNLENBQUMsOERBQVU7QUFDbEU7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLHVCQUF1Qiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDMUU7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLDhEQUFVO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxtRUFBWTtBQUNoRCxtQ0FBbUMsMkVBQTZCO0FBQ2hFO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSx1Q0FBdUMsOERBQVU7QUFDakQ7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUNBQXVDLDhEQUFVO0FBQ2pEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGFBQWEsd0VBQWE7QUFDMUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGdDQUFnQyw2Q0FBSztBQUNyQztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0NBQWdDLHNEQUFNO0FBQ3RDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxnQ0FBZ0MsMkNBQUk7QUFDcEMsS0FBSztBQUNMO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxzREFBc0QsOERBQVUsd0NBQXdDLGtFQUFVOztBQUVsSCxtQkFBbUIsd0VBQWE7O0FBRWhDLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDZDQUE2Qyw4REFBVTs7QUFFdkQsbUJBQW1CLHdFQUFhOztBQUVoQyxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSw2Q0FBNkMsOERBQVU7O0FBRXZELG1CQUFtQix3RUFBYTs7QUFFaEMscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUNBQXVDLDZEQUFTO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbURBQW1ELDhEQUFVLFVBQVUsOERBQVU7QUFDakY7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbURBQW1ELDhEQUFVLFVBQVUsOERBQVU7QUFDakY7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbURBQW1ELDhEQUFVLFVBQVUsOERBQVU7QUFDakY7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esc0NBQXNDLCtDQUFNOztBQUU1QztBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx3Q0FBd0MsbURBQVE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDBDQUEwQyw4REFBVTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxzQ0FBc0MsOERBQVU7QUFDaEQ7QUFDQSwwQ0FBMEMsOERBQVU7QUFDcEQ7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsZ0ZBQW9CLEdBQUc7O0FBRWxELHlDQUF5QyxpRUFBVyxHQUFHLGtFQUFZOztBQUVuRSxrQ0FBa0MsOERBQVU7QUFDNUMsNEJBQTRCLDhEQUFVO0FBQ3RDO0FBQ0E7O0FBRUEsMEJBQTBCLG1EQUFRO0FBQ2xDLDBCQUEwQiwrQ0FBTTtBQUNoQywwQkFBMEIsa0VBQVU7QUFDcEMsMEJBQTBCLDJDQUFJO0FBQzlCLDBCQUEwQixzREFBTTtBQUNoQywwQkFBMEIsNkNBQUs7QUFDL0I7QUFDQSwwQkFBMEIsNERBQVk7QUFDdEMsMEJBQTBCLDZEQUFTLFdBQVc7O0FBRTlDLDBCQUEwQiw4REFBVSxjQUFjLGtEQUFHLGtCQUFrQixtREFBUTtBQUMvRSwwQkFBMEIsOERBQVUsY0FBYyx3REFBTSxrQkFBa0IsbURBQVE7QUFDbEYsMEJBQTBCLDhEQUFVLGNBQWMsc0RBQUssa0JBQWtCLG1EQUFRO0FBQ2pGLDBCQUEwQiw4REFBVSxjQUFjLHdEQUFNLGtCQUFrQixtREFBUSxTQUFTOztBQUUzRiwwQkFBMEIsOERBQVUsY0FBYyxzREFBSyxrQkFBa0IsbURBQVEsUUFBUTs7QUFFekYsMEJBQTBCLDhEQUFVLGdCQUFnQix3REFBSyxrQkFBa0Isa0VBQVU7QUFDckYsMEJBQTBCLDhEQUFVLGdCQUFnQixzREFBSSxrQkFBa0Isa0VBQVU7QUFDcEYsMEJBQTBCLDhEQUFVLGdCQUFnQixzREFBSSxrQkFBa0Isa0VBQVU7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvV29ybGQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfdGVtcDtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1yZWZlcmVuY2Vcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdlYmdwdS90eXBlcy9kaXN0L2luZGV4LmQudHNcIiAvPlxuaW1wb3J0IHsgY3JlYXRlRW50aXR5IGFzIF9jcmVhdGVFbnRpdHksIGNyZWF0ZVdvcmxkQ29udGFpbmVyLCBJREVOVElGSUVSIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBXZWJHTEVuZ2luZSwgV2ViR1BVRW5naW5lIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtZW5naW5lJzsgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXN1Ym1vZHVsZS1pbXBvcnRzXG5cbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBDYW1lcmEgfSBmcm9tICcuL2NhbWVyYS9DYW1lcmEnO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICcuL2dlb21ldHJ5JztcbmltcG9ydCB7IEJveCB9IGZyb20gJy4vZ2VvbWV0cnkvQm94JztcbmltcG9ydCB7IE1lcmdlZCB9IGZyb20gJy4vZ2VvbWV0cnkvTWVyZ2VkJztcbmltcG9ydCB7IFBsYW5lIH0gZnJvbSAnLi9nZW9tZXRyeS9QbGFuZSc7XG5pbXBvcnQgeyBTcGhlcmUgfSBmcm9tICcuL2dlb21ldHJ5L1NwaGVyZSc7XG5pbXBvcnQgeyBLZXJuZWwgfSBmcm9tICcuL0tlcm5lbCc7XG5pbXBvcnQgeyBNYXRlcmlhbCB9IGZyb20gJy4vbWF0ZXJpYWwnO1xuaW1wb3J0IHsgQmFzaWMgfSBmcm9tICcuL21hdGVyaWFsL2Jhc2ljJztcbmltcG9ydCB7IEdyaWQgfSBmcm9tICcuL3JlbmRlcmFibGUvZ3JpZCc7XG5pbXBvcnQgeyBMaW5lIH0gZnJvbSAnLi9yZW5kZXJhYmxlL2xpbmUnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuL3JlbmRlcmFibGUvcG9pbnQnO1xuaW1wb3J0IHsgUmVuZGVyYWJsZSB9IGZyb20gJy4vcmVuZGVyYWJsZS9SZW5kZXJhYmxlJztcbmltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSAnLi9SZW5kZXJlcic7XG5pbXBvcnQgeyBTY2VuZSB9IGZyb20gJy4vU2NlbmUnO1xuaW1wb3J0IHsgVGV4dHVyZUNhY2hlIH0gZnJvbSAnLi90ZXh0dXJlL0NhY2hlJztcbmltcG9ydCB7IFRleHR1cmUyRCB9IGZyb20gJy4vdGV4dHVyZS9UZXh0dXJlMkQnO1xuaW1wb3J0IHsgY3JlYXRlQ2FudmFzIH0gZnJvbSAnLi91dGlscy9jYW52YXMnO1xuaW1wb3J0IHsgVmlldyB9IGZyb20gJy4vVmlldyc7XG5leHBvcnQgdmFyIFdvcmxkID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuQ29uZmlnU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXb3JsZCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV29ybGQpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjb25maWdTZXJ2aWNlXCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIHRoaXMuY29udGFpbmVyID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdvcmxkLCBbe1xuICAgIGtleTogXCJnZXRFbmdpbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9nZXRFbmdpbmUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICB2YXIgZW5naW5lLCBfdGhpcyRjb25maWdTZXJ2aWNlJGcsIGNhbnZhcywgZW5naW5lT3B0aW9ucztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGVuZ2luZSA9IHRoaXMuY29udGFpbmVyLmdldChJREVOVElGSUVSLlJlbmRlckVuZ2luZSk7XG4gICAgICAgICAgICAgICAgX3RoaXMkY29uZmlnU2VydmljZSRnID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldCgpLCBjYW52YXMgPSBfdGhpcyRjb25maWdTZXJ2aWNlJGcuY2FudmFzLCBlbmdpbmVPcHRpb25zID0gX3RoaXMkY29uZmlnU2VydmljZSRnLmVuZ2luZU9wdGlvbnM7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZS5pbml0KF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgICAgICAgICAgY2FudmFzOiBjYW52YXMgfHwgY3JlYXRlQ2FudmFzKCksXG4gICAgICAgICAgICAgICAgICBzd2FwQ2hhaW5Gb3JtYXQ6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRm9ybWF0LkJHUkE4VW5vcm0sXG4gICAgICAgICAgICAgICAgICBhbnRpYWxpYXNpbmc6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSwgZW5naW5lT3B0aW9ucykpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGVuZ2luZSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBnZXRFbmdpbmUoKSB7XG4gICAgICAgIHJldHVybiBfZ2V0RW5naW5lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBnZXRFbmdpbmU7XG4gICAgfSgpXG4gICAgLyoqXG4gICAgICogZ2V0IHRyYW5zZm9ybSBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gZW50aXR5XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRUcmFuc2Zvcm1Db21wb25lbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHJhbnNmb3JtQ29tcG9uZW50KGVudGl0eSkge1xuICAgICAgdmFyIG1hbmFnZXIgPSB0aGlzLmNvbnRhaW5lci5nZXQoSURFTlRJRklFUi5UcmFuc2Zvcm1Db21wb25lbnRNYW5hZ2VyKTtcbiAgICAgIHJldHVybiBtYW5hZ2VyLmdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1lc2hDb21wb25lbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TWVzaENvbXBvbmVudChlbnRpdHkpIHtcbiAgICAgIHZhciBtYW5hZ2VyID0gdGhpcy5jb250YWluZXIuZ2V0KElERU5USUZJRVIuTWVzaENvbXBvbmVudE1hbmFnZXIpO1xuICAgICAgcmV0dXJuIG1hbmFnZXIuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q29uZmlnXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENvbmZpZyhjb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5zZXQoY29uZmlnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q29udGFpbmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENvbnRhaW5lcihjb250YWluZXIpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb250YWluZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29udGFpbmVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlRW50aXR5KCkge1xuICAgICAgcmV0dXJuIF9jcmVhdGVFbnRpdHkoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlU2NlbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlU2NlbmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250YWluZXIuZ2V0KFNjZW5lKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlQ2FtZXJhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUNhbWVyYSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5nZXQoQ2FtZXJhKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlVmlld1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVWaWV3KCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmdldChWaWV3KTtcbiAgICB9IC8vIHB1YmxpYyBjcmVhdGVMaWdodCh0eXBlOiBzdHJpbmcsKSB7XG4gICAgLy8gICByZXR1cm4gdGhpcy5jb250YWluZXIuZ2V0TmFtZWQoSURFTlRJRklFUi5MaWdodCwgdHlwZSlcbiAgICAvLyB9XG5cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVSZW5kZXJhYmxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVJlbmRlcmFibGUodHlwZSwgY29uZmlnKSB7XG4gICAgICB2YXIgcmVuZGVyYWJsZSA9IHR5cGUgPyB0aGlzLmNvbnRhaW5lci5nZXROYW1lZChJREVOVElGSUVSLlJlbmRlcmFibGUsIHR5cGUpIDogdGhpcy5jb250YWluZXIuZ2V0KFJlbmRlcmFibGUpO1xuXG4gICAgICB2YXIgZW50aXR5ID0gX2NyZWF0ZUVudGl0eSgpO1xuXG4gICAgICByZW5kZXJhYmxlLnNldENvbmZpZyhjb25maWcgfHwge30pO1xuICAgICAgcmVuZGVyYWJsZS5zZXRFbnRpdHkoZW50aXR5KTtcbiAgICAgIHJldHVybiByZW5kZXJhYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVHZW9tZXRyeVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVHZW9tZXRyeSh0eXBlLCBjb25maWcpIHtcbiAgICAgIHZhciBnZW9tZXRyeSA9IHRoaXMuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuR2VvbWV0cnksIHR5cGUpO1xuXG4gICAgICB2YXIgZW50aXR5ID0gX2NyZWF0ZUVudGl0eSgpO1xuXG4gICAgICBnZW9tZXRyeS5zZXRDb25maWcoY29uZmlnIHx8IHt9KTtcbiAgICAgIGdlb21ldHJ5LnNldEVudGl0eShlbnRpdHkpO1xuICAgICAgcmV0dXJuIGdlb21ldHJ5LmdldENvbXBvbmVudCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVNYXRlcmlhbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVNYXRlcmlhbCh0eXBlLCBjb25maWcpIHtcbiAgICAgIHZhciBtYXRlcmlhbCA9IHRoaXMuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWwsIHR5cGUpO1xuXG4gICAgICB2YXIgZW50aXR5ID0gX2NyZWF0ZUVudGl0eSgpO1xuXG4gICAgICBtYXRlcmlhbC5zZXRDb25maWcoY29uZmlnIHx8IHt9KTtcbiAgICAgIG1hdGVyaWFsLnNldEVudGl0eShlbnRpdHksIHR5cGUpO1xuICAgICAgcmV0dXJuIG1hdGVyaWFsLmdldENvbXBvbmVudCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVUZXh0dXJlMkRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlVGV4dHVyZTJEKGNvbmZpZykge1xuICAgICAgdmFyIHRleHR1cmUgPSB0aGlzLmNvbnRhaW5lci5nZXQoVGV4dHVyZTJEKTtcbiAgICAgIHRleHR1cmUuc2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgICByZXR1cm4gdGV4dHVyZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlQnVmZmVyR2VvbWV0cnlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVmZmVyR2VvbWV0cnkocGFyYW1zKSB7XG4gICAgICB2YXIgZ2VvbWV0cnlTeXN0ZW0gPSB0aGlzLmNvbnRhaW5lci5nZXROYW1lZChJREVOVElGSUVSLlN5c3RlbXMsIElERU5USUZJRVIuR2VvbWV0cnlTeXN0ZW0pO1xuICAgICAgcmV0dXJuIGdlb21ldHJ5U3lzdGVtLmNyZWF0ZUJ1ZmZlckdlb21ldHJ5KHBhcmFtcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZUluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KHBhcmFtcykge1xuICAgICAgdmFyIGdlb21ldHJ5U3lzdGVtID0gdGhpcy5jb250YWluZXIuZ2V0TmFtZWQoSURFTlRJRklFUi5TeXN0ZW1zLCBJREVOVElGSUVSLkdlb21ldHJ5U3lzdGVtKTtcbiAgICAgIHJldHVybiBnZW9tZXRyeVN5c3RlbS5jcmVhdGVJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeShwYXJhbXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVTaGFkZXJNYXRlcmlhbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVTaGFkZXJNYXRlcmlhbChwYXJhbXMpIHtcbiAgICAgIHZhciBtYXRlcmlhbFN5c3RlbSA9IHRoaXMuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuU3lzdGVtcywgSURFTlRJRklFUi5NYXRlcmlhbFN5c3RlbSk7XG4gICAgICByZXR1cm4gbWF0ZXJpYWxTeXN0ZW0uY3JlYXRlU2hhZGVyTWF0ZXJpYWwocGFyYW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlS2VybmVsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUtlcm5lbChwcmVjb21waWxlZEJ1bmRsZSkge1xuICAgICAgdmFyIGtlcm5lbCA9IHRoaXMuY29udGFpbmVyLmdldChLZXJuZWwpO1xuXG4gICAgICBpZiAodHlwZW9mIHByZWNvbXBpbGVkQnVuZGxlID09PSAnc3RyaW5nJykge1xuICAgICAgICBrZXJuZWwuc2V0QnVuZGxlKEpTT04ucGFyc2UocHJlY29tcGlsZWRCdW5kbGUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtlcm5lbC5zZXRCdW5kbGUocHJlY29tcGlsZWRCdW5kbGUpO1xuICAgICAgfVxuXG4gICAgICBrZXJuZWwuaW5pdCgpO1xuICAgICAgcmV0dXJuIGtlcm5lbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUmVuZGVyZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlUmVuZGVyZXIoKSB7XG4gICAgICB2YXIgcmVuZGVyZXIgPSB0aGlzLmNvbnRhaW5lci5nZXQoUmVuZGVyZXIpO1xuICAgICAgcmVuZGVyZXIuY29udGFpbmVyID0gdGhpcy5jb250YWluZXI7XG4gICAgICByZW5kZXJlci5pbml0KCk7XG4gICAgICByZXR1cm4gcmVuZGVyZXI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHZhciBzeXN0ZW1zID0gdGhpcy5jb250YWluZXIuZ2V0QWxsKElERU5USUZJRVIuU3lzdGVtcyk7XG4gICAgICBzeXN0ZW1zLmZvckVhY2goZnVuY3Rpb24gKHN5c3RlbSkge1xuICAgICAgICBpZiAoc3lzdGVtLnRlYXJEb3duKSB7XG4gICAgICAgICAgc3lzdGVtLnRlYXJEb3duKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIGVuZ2luZSA9IHRoaXMuY29udGFpbmVyLmdldChJREVOVElGSUVSLlJlbmRlckVuZ2luZSk7XG4gICAgICBlbmdpbmUuZGVzdHJveSgpO1xuICAgICAgdmFyIGludGVyYWN0b3IgPSB0aGlzLmNvbnRhaW5lci5nZXQoSURFTlRJRklFUi5JbnRlcmFjdG9yU2VydmljZSk7XG4gICAgICBpbnRlcmFjdG9yLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJjcmVhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlKCkge1xuICAgICAgdmFyIGNvbmZpZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgICB2YXIgd29ybGRDb250YWluZXIgPSBjcmVhdGVXb3JsZENvbnRhaW5lcigpOyAvLyBiaW5kIHJlbmRlciBlbmdpbmUsIGZhbGxiYWNrIHRvIFdlYkdMXG5cbiAgICAgIHZhciBlbmdpbmVDbGF6eiA9ICFuYXZpZ2F0b3IuZ3B1ID8gV2ViR0xFbmdpbmUgOiBXZWJHUFVFbmdpbmU7XG5cbiAgICAgIGlmICghd29ybGRDb250YWluZXIuaXNCb3VuZChJREVOVElGSUVSLlJlbmRlckVuZ2luZSkpIHtcbiAgICAgICAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlckVuZ2luZSkgLy8gQHRzLWlnbm9yZVxuICAgICAgICAudG8oZW5naW5lQ2xhenopLmluU2luZ2xldG9uU2NvcGUoKTtcbiAgICAgIH1cblxuICAgICAgd29ybGRDb250YWluZXIuYmluZChSZW5kZXJlcikudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKEtlcm5lbCkudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFJlbmRlcmFibGUpLnRvU2VsZigpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChWaWV3KS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoQ2FtZXJhKS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoU2NlbmUpLnRvU2VsZigpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChXb3JsZCkudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFRleHR1cmVDYWNoZSkudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFRleHR1cmUyRCkudG9TZWxmKCk7IC8vIGJpbmQgZ2VvbWV0cmllc1xuXG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnkpLnRvKEJveCkud2hlblRhcmdldE5hbWVkKEdlb21ldHJ5LkJPWCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnkpLnRvKFNwaGVyZSkud2hlblRhcmdldE5hbWVkKEdlb21ldHJ5LlNQSEVSRSk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnkpLnRvKFBsYW5lKS53aGVuVGFyZ2V0TmFtZWQoR2VvbWV0cnkuUExBTkUpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLkdlb21ldHJ5KS50byhNZXJnZWQpLndoZW5UYXJnZXROYW1lZChHZW9tZXRyeS5NRVJHRUQpOyAvLyBiaW5kIG1hdGVyaWFsc1xuXG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuTWF0ZXJpYWwpLnRvKEJhc2ljKS53aGVuVGFyZ2V0TmFtZWQoTWF0ZXJpYWwuQkFTSUMpOyAvLyBiaW5kIHJlbmRlcmFibGVzXG5cbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5SZW5kZXJhYmxlKS50byhQb2ludCkud2hlblRhcmdldE5hbWVkKFJlbmRlcmFibGUuUE9JTlQpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlcmFibGUpLnRvKExpbmUpLndoZW5UYXJnZXROYW1lZChSZW5kZXJhYmxlLkxJTkUpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlcmFibGUpLnRvKEdyaWQpLndoZW5UYXJnZXROYW1lZChSZW5kZXJhYmxlLkdSSUQpO1xuICAgICAgdmFyIHdvcmxkID0gd29ybGRDb250YWluZXIuZ2V0KFdvcmxkKTtcbiAgICAgIHdvcmxkLnNldENvbnRhaW5lcih3b3JsZENvbnRhaW5lcik7XG4gICAgICB3b3JsZC5zZXRDb25maWcoY29uZmlnKTtcbiAgICAgIHJldHVybiB3b3JsZDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV29ybGQ7XG59KCksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJjb25maWdTZXJ2aWNlXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Xb3JsZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/World.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/camera/Camera.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/camera/Camera.js ***! \*********************************************************/ /*! exports provided: CAMERA_TYPE, CAMERA_TRACKING_MODE, CAMERA_PROJECTION_MODE, Camera */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_TYPE\", function() { return CAMERA_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_TRACKING_MODE\", function() { return CAMERA_TRACKING_MODE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_PROJECTION_MODE\", function() { return CAMERA_PROJECTION_MODE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Camera\", function() { return Camera; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/math */ \"./node_modules/@antv/g-webgpu/es/utils/math.js\");\n/* harmony import */ var _Landmark__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Landmark */ \"./node_modules/@antv/g-webgpu/es/camera/Landmark.js\");\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\n\n\n\nvar CAMERA_TYPE;\n\n(function (CAMERA_TYPE) {\n CAMERA_TYPE[\"ORBITING\"] = \"ORBITING\";\n CAMERA_TYPE[\"EXPLORING\"] = \"EXPLORING\";\n CAMERA_TYPE[\"TRACKING\"] = \"TRACKING\";\n})(CAMERA_TYPE || (CAMERA_TYPE = {}));\n\nvar CAMERA_TRACKING_MODE;\n\n(function (CAMERA_TRACKING_MODE) {\n CAMERA_TRACKING_MODE[\"DEFAULT\"] = \"DEFAULT\";\n CAMERA_TRACKING_MODE[\"ROTATIONAL\"] = \"ROTATIONAL\";\n CAMERA_TRACKING_MODE[\"TRANSLATIONAL\"] = \"TRANSLATIONAL\";\n CAMERA_TRACKING_MODE[\"CINEMATIC\"] = \"CINEMATIC\";\n})(CAMERA_TRACKING_MODE || (CAMERA_TRACKING_MODE = {}));\n\nvar CAMERA_PROJECTION_MODE;\n\n(function (CAMERA_PROJECTION_MODE) {\n CAMERA_PROJECTION_MODE[\"ORTHOGRAPHIC\"] = \"ORTHOGRAPHIC\";\n CAMERA_PROJECTION_MODE[\"PERSPECTIVE\"] = \"PERSPECTIVE\";\n})(CAMERA_PROJECTION_MODE || (CAMERA_PROJECTION_MODE = {}));\n\nvar DEG_2_RAD = Math.PI / 180;\nvar RAD_2_DEG = 180 / Math.PI;\n/**\n * 参考「WebGL Insights - 23.Designing Cameras for WebGL Applications」,基于 Responsible Camera 思路设计\n * 保存相机参数,定义相机动作:\n * 1. dolly 沿 n 轴移动\n * 2. pan 沿 u v 轴移动\n * 3. rotate 以方位角旋转\n * 4. 移动到 Landmark,具有平滑的动画效果,其间禁止其他用户交互\n */\n\nvar Camera = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].InteractorService), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Camera() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Camera);\n\n this.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n this.right = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 0, 0);\n this.up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 1, 0);\n this.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 1);\n this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 1);\n this.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.distance = 1;\n this.azimuth = 0;\n this.elevation = 0;\n this.roll = 0;\n this.relAzimuth = 0;\n this.relElevation = 0;\n this.relRoll = 0;\n this.dollyingStep = 0;\n this.maxDistance = Infinity;\n this.minDistance = -Infinity;\n this.rotateWorld = false;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"interactor\", _descriptor, this);\n\n this.fov = 30;\n this.near = 0.1;\n this.far = 10000;\n this.aspect = 1;\n this.left = void 0;\n this.rright = void 0;\n this.top = void 0;\n this.bottom = void 0;\n this.zoom = 1;\n this.perspective = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n this.view = void 0;\n this.following = undefined;\n this.type = CAMERA_TYPE.EXPLORING;\n this.trackingMode = CAMERA_TRACKING_MODE.DEFAULT;\n this.projectionMode = CAMERA_PROJECTION_MODE.PERSPECTIVE;\n this.frustum = new _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"Frustum\"]();\n this.landmarks = [];\n this.landmarkAnimationID = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Camera, [{\n key: \"clone\",\n value: function clone() {\n var camera = new Camera();\n camera.setType(this.type, undefined);\n camera.interactor = this.interactor;\n return camera;\n }\n }, {\n key: \"getProjectionMode\",\n value: function getProjectionMode() {\n return this.projectionMode;\n }\n }, {\n key: \"getPerspective\",\n value: function getPerspective() {\n return this.perspective;\n }\n }, {\n key: \"getFrustum\",\n value: function getFrustum() {\n return this.frustum;\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n return this.position;\n }\n }, {\n key: \"setType\",\n value: function setType(type, trackingMode) {\n this.type = type;\n\n if (this.type === CAMERA_TYPE.EXPLORING) {\n this.setWorldRotation(true);\n } else {\n this.setWorldRotation(false);\n }\n\n this._getAngles();\n\n if (this.type === CAMERA_TYPE.TRACKING && trackingMode !== undefined) {\n this.setTrackingMode(trackingMode);\n }\n\n return this;\n }\n }, {\n key: \"setProjectionMode\",\n value: function setProjectionMode(projectionMode) {\n this.projectionMode = projectionMode;\n return this;\n }\n }, {\n key: \"setTrackingMode\",\n value: function setTrackingMode(trackingMode) {\n if (this.type !== CAMERA_TYPE.TRACKING) {\n throw new Error('Impossible to set a tracking mode if the camera is not of tracking type');\n }\n\n this.trackingMode = trackingMode;\n return this;\n }\n /**\n * If flag is true, it reverses the azimuth and elevation angles.\n * Subsequent calls to rotate, setAzimuth, setElevation,\n * changeAzimuth or changeElevation will cause the inverted effect.\n * setRoll or changeRoll is not affected by this method.\n *\n * This inversion is useful when one wants to simulate that the world\n * is moving, instead of the camera.\n *\n * By default the camera angles are not reversed.\n * @param {Boolean} flag the boolean flag to reverse the angles.\n */\n\n }, {\n key: \"setWorldRotation\",\n value: function setWorldRotation(flag) {\n this.rotateWorld = flag;\n\n this._getAngles();\n }\n /**\n * 计算 MV 矩阵,为相机矩阵的逆矩阵\n */\n\n }, {\n key: \"getViewTransform\",\n value: function getViewTransform() {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), this.matrix);\n }\n }, {\n key: \"getWorldTransform\",\n value: function getWorldTransform() {\n return this.matrix;\n }\n /**\n * 设置相机矩阵\n */\n\n }, {\n key: \"setMatrix\",\n value: function setMatrix(matrix) {\n this.matrix = matrix;\n\n this._update();\n\n return this;\n }\n }, {\n key: \"setAspect\",\n value: function setAspect(aspect) {\n this.setPerspective(this.near, this.far, this.fov, aspect);\n return this;\n }\n /**\n * Sets an offset in a larger frustum, used in PixelPicking\n */\n\n }, {\n key: \"setViewOffset\",\n value: function setViewOffset(fullWidth, fullHeight, x, y, width, height) {\n this.aspect = fullWidth / fullHeight;\n\n if (this.view === undefined) {\n this.view = {\n enabled: true,\n fullWidth: 1,\n fullHeight: 1,\n offsetX: 0,\n offsetY: 0,\n width: 1,\n height: 1\n };\n }\n\n this.view.enabled = true;\n this.view.fullWidth = fullWidth;\n this.view.fullHeight = fullHeight;\n this.view.offsetX = x;\n this.view.offsetY = y;\n this.view.width = width;\n this.view.height = height;\n\n if (this.projectionMode === CAMERA_PROJECTION_MODE.PERSPECTIVE) {\n this.setPerspective(this.near, this.far, this.fov, this.aspect);\n } else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, this.far);\n }\n\n return this;\n }\n }, {\n key: \"clearViewOffset\",\n value: function clearViewOffset() {\n if (this.view !== undefined) {\n this.view.enabled = false;\n }\n\n if (this.projectionMode === CAMERA_PROJECTION_MODE.PERSPECTIVE) {\n this.setPerspective(this.near, this.far, this.fov, this.aspect);\n } else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, this.far);\n }\n\n return this;\n }\n }, {\n key: \"setPerspective\",\n value: function setPerspective(near, far, fov, aspect) {\n this.projectionMode = CAMERA_PROJECTION_MODE.PERSPECTIVE;\n this.fov = fov;\n this.near = near;\n this.far = far;\n this.aspect = aspect;\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].perspective(this.perspective, this.fov * DEG_2_RAD, this.aspect, this.near, this.far);\n return this;\n }\n }, {\n key: \"setOrthographic\",\n value: function setOrthographic(l, r, t, b, near, far) {\n this.projectionMode = CAMERA_PROJECTION_MODE.ORTHOGRAPHIC;\n this.rright = r;\n this.left = l;\n this.top = t;\n this.bottom = b;\n this.near = near;\n this.far = far;\n var dx = (this.rright - this.left) / (2 * this.zoom);\n var dy = (this.top - this.bottom) / (2 * this.zoom);\n var cx = (this.rright + this.left) / 2;\n var cy = (this.top + this.bottom) / 2;\n var left = cx - dx;\n var right = cx + dx;\n var top = cy + dy;\n var bottom = cy - dy;\n\n if (this.view !== undefined && this.view.enabled) {\n var scaleW = (this.rright - this.left) / this.view.fullWidth / this.zoom;\n var scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n left += scaleW * this.view.offsetX;\n right = left + scaleW * this.view.width;\n top -= scaleH * this.view.offsetY;\n bottom = top - scaleH * this.view.height;\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].ortho(this.perspective, left, right, top, bottom, near, far);\n return this;\n }\n /**\n * 设置相机位置\n */\n\n }, {\n key: \"setPosition\",\n value: function setPosition(x, y, z) {\n this._setPosition(x, y, z);\n\n this.setFocalPoint(this.focalPoint);\n return this;\n }\n /**\n * 设置视点位置\n */\n\n }, {\n key: \"setFocalPoint\",\n value: function setFocalPoint(x, y, z) {\n var up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 1, 0);\n this.focalPoint = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(x, y, z);\n\n if (this.trackingMode === CAMERA_TRACKING_MODE.CINEMATIC) {\n var d = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].subtract(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.focalPoint, this.position);\n x = d[0];\n y = d[1];\n z = d[2];\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(d);\n var el = Math.asin(y / r) * RAD_2_DEG;\n var az = 90 + Math.atan2(z, x) * RAD_2_DEG;\n var m = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].rotateY(m, m, az * DEG_2_RAD);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].rotateX(m, m, el * DEG_2_RAD);\n up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), [0, 1, 0], m);\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(this.matrix, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].lookAt(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), this.position, this.focalPoint, up));\n\n this._getAxes();\n\n this._getDistance();\n\n this._getAngles();\n\n return this;\n }\n /**\n * 固定当前视点,按指定距离放置相机\n */\n\n }, {\n key: \"setDistance\",\n value: function setDistance(d) {\n if (this.distance === d || d < 0) {\n return;\n }\n\n this.distance = d;\n\n if (this.distance < 0.0002) {\n this.distance = 0.0002;\n }\n\n this.dollyingStep = this.distance / 100;\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n d = this.distance;\n var n = this.forward;\n var f = this.focalPoint;\n pos[0] = d * n[0] + f[0];\n pos[1] = d * n[1] + f[1];\n pos[2] = d * n[2] + f[2];\n\n this._setPosition(pos);\n\n return this;\n }\n }, {\n key: \"setMaxDistance\",\n value: function setMaxDistance(d) {\n this.maxDistance = d;\n return this;\n }\n }, {\n key: \"setMinDistance\",\n value: function setMinDistance(d) {\n this.minDistance = d;\n return this;\n }\n /**\n * Changes the initial azimuth of the camera\n */\n\n }, {\n key: \"changeAzimuth\",\n value: function changeAzimuth(az) {\n this.setAzimuth(this.azimuth + az);\n return this;\n }\n /**\n * Changes the initial elevation of the camera\n */\n\n }, {\n key: \"changeElevation\",\n value: function changeElevation(el) {\n this.setElevation(this.elevation + el);\n return this;\n }\n /**\n * Changes the initial roll of the camera\n */\n\n }, {\n key: \"changeRoll\",\n value: function changeRoll(rl) {\n this.setRoll(this.roll + rl);\n return this;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} el the azimuth in degrees\n */\n\n }, {\n key: \"setAzimuth\",\n value: function setAzimuth(az) {\n this.azimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(az);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n }, {\n key: \"getAzimuth\",\n value: function getAzimuth() {\n return this.azimuth;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} el the elevation in degrees\n */\n\n }, {\n key: \"setElevation\",\n value: function setElevation(el) {\n this.elevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(el);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} angle the roll angle\n */\n\n }, {\n key: \"setRoll\",\n value: function setRoll(angle) {\n this.roll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(angle);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n /**\n * Changes the azimuth and elevation with respect to the current camera axes\n * @param {Number} azimuth the relative azimuth\n * @param {Number} elevation the relative elevation\n * @param {Number} roll the relative roll\n */\n\n }, {\n key: \"rotate\",\n value: function rotate(azimuth, elevation, roll) {\n if (this.type === CAMERA_TYPE.EXPLORING) {\n azimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(azimuth);\n elevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(elevation);\n roll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(roll);\n var rotX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [1, 0, 0], (this.rotateWorld ? 1 : -1) * elevation * DEG_2_RAD);\n var rotY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 1, 0], (this.rotateWorld ? 1 : -1) * azimuth * DEG_2_RAD);\n var rotZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 0, 1], roll * DEG_2_RAD);\n var rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotY, rotX);\n rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotQ, rotZ);\n var rotMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromQuat(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), rotQ);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, -this.distance]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, this.distance]);\n } else {\n if (Math.abs(this.elevation + elevation) > 90) {\n return;\n }\n\n this.relElevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(elevation);\n this.relAzimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(azimuth);\n this.relRoll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(roll);\n this.elevation += this.relElevation;\n this.azimuth += this.relAzimuth;\n this.roll += this.relRoll;\n this.computeMatrix();\n }\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n this._update();\n\n return this;\n }\n /**\n * 沿水平(right) & 垂直(up)平移相机\n */\n\n }, {\n key: \"pan\",\n value: function pan(tx, ty) {\n var coords = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(tx, ty, 0);\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].clone(this.position);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(pos, pos, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].scale(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.right, coords[0]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(pos, pos, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].scale(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.up, coords[1]));\n\n this._setPosition(pos);\n\n return this;\n }\n /**\n * 沿 n 轴移动,当距离视点远时移动速度较快,离视点越近速度越慢\n */\n\n }, {\n key: \"dolly\",\n value: function dolly(value) {\n var n = this.forward;\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].clone(this.position);\n var step = value * this.dollyingStep;\n var updatedDistance = this.distance + value * this.dollyingStep; // 限制视点距离范围\n\n step = Math.max(Math.min(updatedDistance, this.maxDistance), this.minDistance) - this.distance;\n pos[0] += step * n[0];\n pos[1] += step * n[1];\n pos[2] += step * n[2];\n\n this._setPosition(pos);\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n // 重新计算视点距离\n this._getDistance();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n // 保持视距,移动视点位置\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(this.focalPoint, pos, this.distanceVector);\n }\n\n return this;\n }\n }, {\n key: \"createLandmark\",\n value: function createLandmark(name, params) {\n var camera = this.clone();\n camera.setPosition(params.position);\n camera.setFocalPoint(params.focalPoint);\n\n if (params.roll !== undefined) {\n camera.setRoll(params.roll);\n }\n\n var landmark = new _Landmark__WEBPACK_IMPORTED_MODULE_9__[\"default\"](name, camera);\n this.landmarks.push(landmark);\n return landmark;\n }\n }, {\n key: \"setLandmark\",\n value: function setLandmark(name) {\n var landmark = new _Landmark__WEBPACK_IMPORTED_MODULE_9__[\"default\"](name, this);\n this.landmarks.push(landmark);\n return this;\n }\n }, {\n key: \"gotoLandmark\",\n value: function gotoLandmark(name) {\n var _this = this;\n\n var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n var landmark = this.landmarks.find(function (l) {\n return l.name === name;\n });\n\n if (landmark) {\n if (duration === 0) {\n landmark.retrieve(this);\n return;\n }\n\n if (this.landmarkAnimationID !== undefined) {\n window.cancelAnimationFrame(this.landmarkAnimationID);\n } // TODO: do not process events during animation\n\n\n this.interactor.disconnect();\n var destPosition = landmark.getPosition();\n var destFocalPoint = landmark.getFocalPoint();\n var destRoll = landmark.getRoll();\n var timeStart;\n\n var animate = function animate(timestamp) {\n if (timeStart === undefined) {\n timeStart = timestamp;\n }\n\n var elapsed = timestamp - timeStart; // TODO: use better ease function\n\n var t = (1 - Math.cos(elapsed / duration * Math.PI)) / 2;\n var interFocalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var interPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var interRoll = 0;\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(interFocalPoint, _this.focalPoint, destFocalPoint, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(interPosition, _this.position, destPosition, t);\n interRoll = _this.roll * (1 - t) + destRoll * t;\n\n _this.setFocalPoint(interFocalPoint);\n\n _this.setPosition(interPosition);\n\n _this.setRoll(interRoll);\n\n _this.computeMatrix();\n\n var dist = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].dist(interFocalPoint, destFocalPoint) + gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].dist(interPosition, destPosition);\n\n if (dist > 0.01) {//\n } else {\n _this.setFocalPoint(interFocalPoint);\n\n _this.setPosition(interPosition);\n\n _this.setRoll(interRoll);\n\n _this.computeMatrix();\n\n _this.interactor.connect();\n\n return;\n }\n\n if (elapsed < duration) {\n _this.landmarkAnimationID = window.requestAnimationFrame(animate);\n }\n };\n\n window.requestAnimationFrame(animate);\n }\n }\n /**\n * 根据相机矩阵重新计算各种相机参数\n */\n\n }, {\n key: \"_update\",\n value: function _update() {\n this._getAxes();\n\n this._getPosition();\n\n this._getDistance();\n\n this._getAngles();\n }\n /**\n * 计算相机矩阵\n */\n\n }, {\n key: \"computeMatrix\",\n value: function computeMatrix() {\n var rotX;\n var rotY; // 使用四元数描述 3D 旋转\n // @see https://xiaoiver.github.io/coding/2018/12/28/Camera-%E8%AE%BE%E8%AE%A1-%E4%B8%80.html\n\n var rotZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 0, 1], this.roll * DEG_2_RAD);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].identity(this.matrix); // only consider HCS for EXPLORING and ORBITING cameras\n\n rotX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [1, 0, 0], (this.rotateWorld && this.type !== CAMERA_TYPE.TRACKING || this.type === CAMERA_TYPE.TRACKING ? 1 : -1) * this.elevation * DEG_2_RAD);\n rotY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 1, 0], (this.rotateWorld && this.type !== CAMERA_TYPE.TRACKING || this.type === CAMERA_TYPE.TRACKING ? 1 : -1) * this.azimuth * DEG_2_RAD);\n var rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotY, rotX);\n rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotQ, rotZ);\n var rotMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromQuat(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), rotQ);\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, this.focalPoint);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, this.distance]);\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, this.position);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n }\n }\n /**\n * Sets the camera position in the camera matrix\n */\n\n }, {\n key: \"_setPosition\",\n value: function _setPosition(x, y, z) {\n this.position = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(x, y, z);\n var m = this.matrix;\n m[12] = this.position[0];\n m[13] = this.position[1];\n m[14] = this.position[2];\n m[15] = 1;\n }\n /**\n * Recalculates axes based on the current matrix\n */\n\n }, {\n key: \"_getAxes\",\n value: function _getAxes() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.right, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [1, 0, 0, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.up, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 1, 0, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.forward, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 0, 1, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.right, this.right);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.up, this.up);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.forward, this.forward);\n }\n /**\n * Recalculates euler angles based on the current state\n */\n\n }, {\n key: \"_getAngles\",\n value: function _getAngles() {\n // Recalculates angles\n var x = this.distanceVector[0];\n var y = this.distanceVector[1];\n var z = this.distanceVector[2];\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(this.distanceVector); // FAST FAIL: If there is no distance we cannot compute angles\n\n if (r === 0) {\n this.elevation = 0;\n this.azimuth = 0;\n return;\n }\n\n if (this.type === CAMERA_TYPE.TRACKING) {\n this.elevation = Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = Math.atan2(-x, -z) * RAD_2_DEG;\n } else {\n if (this.rotateWorld) {\n this.elevation = Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = Math.atan2(-x, -z) * RAD_2_DEG;\n } else {\n this.elevation = -Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = -Math.atan2(-x, -z) * RAD_2_DEG;\n }\n }\n }\n /**\n * 重新计算相机位置,只有 ORBITING 模式相机位置才会发生变化\n */\n\n }, {\n key: \"_getPosition\",\n value: function _getPosition() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.position, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 0, 0, 1], this.matrix))); // 相机位置变化,需要重新计算视距\n\n this._getDistance();\n }\n /**\n * 重新计算视点,只有 TRACKING 模式视点才会发生变化\n */\n\n }, {\n key: \"_getFocalPoint\",\n value: function _getFocalPoint() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat3(this.distanceVector, [0, 0, -this.distance], gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"].fromMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"].create(), this.matrix));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(this.focalPoint, this.position, this.distanceVector); // 视点变化,需要重新计算视距\n\n this._getDistance();\n }\n /**\n * 重新计算视距\n */\n\n }, {\n key: \"_getDistance\",\n value: function _getDistance() {\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].subtract(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.focalPoint, this.position);\n this.distance = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(this.distanceVector);\n this.dollyingStep = this.distance / 100;\n }\n }]);\n\n return Camera;\n}(), _class3.ProjectionMode = {\n ORTHOGRAPHIC: 'ORTHOGRAPHIC',\n PERSPECTIVE: 'PERSPECTIVE'\n}, _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"interactor\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Camera.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvY2FtZXJhL0NhbWVyYS5qcz9hZDk1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUUwRDtBQUNEO0FBQ1Y7QUFDTTtBQUNuQjtBQUMzQjs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0NBQWtDOztBQUU1Qjs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxvREFBb0Q7O0FBRTlDOztBQUVQO0FBQ0E7QUFDQTtBQUNBLENBQUMsd0RBQXdEOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTyxxQkFBcUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLDhEQUFVO0FBQ25FO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkIsa0JBQWtCLDhDQUFJO0FBQ3RCLGlCQUFpQiw4Q0FBSTtBQUNyQixjQUFjLDhDQUFJO0FBQ2xCLG1CQUFtQiw4Q0FBSTtBQUN2QixvQkFBb0IsOENBQUk7QUFDeEIsc0JBQXNCLDhDQUFJO0FBQzFCLDBCQUEwQiw4Q0FBSTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUksdUZBQTBCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsOENBQUk7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwyREFBTztBQUM5QjtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGFBQWEsOENBQUksUUFBUSw4Q0FBSTtBQUM3QjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGVBQWUsOENBQUk7QUFDbkIsd0JBQXdCLDhEQUFVOztBQUVsQztBQUNBLGdCQUFnQiw4Q0FBSSxVQUFVLDhDQUFJO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBSTtBQUNwQjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFJO0FBQ3BCLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osYUFBYSw4Q0FBSSxlQUFlLDhDQUFJO0FBQ3BDOztBQUVBLE1BQU0sOENBQUkscUJBQXFCLDhDQUFJLFFBQVEsOENBQUk7O0FBRS9DOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLDhDQUFJO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsNERBQVE7QUFDN0I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUJBQXVCLDREQUFRO0FBQy9COztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0Qjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGtCQUFrQiw0REFBUTtBQUMxQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0Qjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDREQUFRO0FBQzFCLG9CQUFvQiw0REFBUTtBQUM1QixlQUFlLDREQUFRO0FBQ3ZCLG1CQUFtQiw4Q0FBSSxjQUFjLDhDQUFJO0FBQ3pDLG1CQUFtQiw4Q0FBSSxjQUFjLDhDQUFJO0FBQ3pDLG1CQUFtQiw4Q0FBSSxjQUFjLDhDQUFJO0FBQ3pDLG1CQUFtQiw4Q0FBSSxVQUFVLDhDQUFJO0FBQ3JDLGVBQWUsOENBQUksVUFBVSw4Q0FBSTtBQUNqQyx3QkFBd0IsOENBQUksVUFBVSw4Q0FBSTtBQUMxQyxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLDRCQUE0Qiw0REFBUTtBQUNwQywwQkFBMEIsNERBQVE7QUFDbEMsdUJBQXVCLDREQUFRO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsOERBQVU7QUFDN0IsZ0JBQWdCLDhDQUFJO0FBQ3BCLE1BQU0sOENBQUksZUFBZSw4Q0FBSSxPQUFPLDhDQUFJO0FBQ3hDLE1BQU0sOENBQUksZUFBZSw4Q0FBSSxPQUFPLDhDQUFJOztBQUV4Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQUk7QUFDcEI7QUFDQSxzRUFBc0U7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLFFBQVEsOENBQUk7QUFDWjs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixpREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHlCQUF5QixpREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEM7O0FBRTlDO0FBQ0EsZ0NBQWdDLDhDQUFJO0FBQ3BDLDhCQUE4Qiw4Q0FBSTtBQUNsQztBQUNBLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2Q7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUEscUJBQXFCLDhDQUFJLHlDQUF5Qyw4Q0FBSTs7QUFFdEUsNEJBQTRCO0FBQzVCLFdBQVc7QUFDWDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQSxpQkFBaUIsOENBQUksY0FBYyw4Q0FBSTtBQUN2QyxNQUFNLDhDQUFJLHVCQUF1Qjs7QUFFakMsYUFBYSw4Q0FBSSxjQUFjLDhDQUFJO0FBQ25DLGFBQWEsOENBQUksY0FBYyw4Q0FBSTtBQUNuQyxpQkFBaUIsOENBQUksVUFBVSw4Q0FBSTtBQUNuQyxhQUFhLDhDQUFJLFVBQVUsOENBQUk7QUFDL0Isc0JBQXNCLDhDQUFJLFVBQVUsOENBQUk7O0FBRXhDO0FBQ0EsUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osT0FBTztBQUNQLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNCQUFzQiw4REFBVTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJLGtCQUFrQiw4REFBVSxDQUFDLDhDQUFJLGVBQWUsOENBQUk7QUFDOUQsTUFBTSw4Q0FBSSxlQUFlLDhEQUFVLENBQUMsOENBQUksZUFBZSw4Q0FBSTtBQUMzRCxNQUFNLDhDQUFJLG9CQUFvQiw4REFBVSxDQUFDLDhDQUFJLGVBQWUsOENBQUk7QUFDaEUsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsOENBQUksNkJBQTZCOztBQUUvQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUkscUJBQXFCLDhEQUFVLENBQUMsOENBQUksZUFBZSw4Q0FBSSx3Q0FBd0M7O0FBRXpHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJLDREQUE0RCw4Q0FBSSxVQUFVLDhDQUFJO0FBQ3hGLE1BQU0sOENBQUksMERBQTBEOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFJLFVBQVUsOENBQUk7QUFDOUMsc0JBQXNCLDhDQUFJO0FBQzFCO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDLHlCQUF5QixzRkFBeUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvY2FtZXJhL0NhbWVyYS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9jbGFzczMsIF90ZW1wO1xuXG5pbXBvcnQgeyBGcnVzdHVtLCBJREVOVElGSUVSIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBtYXQzLCBtYXQ0LCBxdWF0LCB2ZWMzLCB2ZWM0IH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBjcmVhdGVWZWMzLCBnZXRBbmdsZSB9IGZyb20gJy4uL3V0aWxzL21hdGgnO1xuaW1wb3J0IExhbmRtYXJrIGZyb20gJy4vTGFuZG1hcmsnO1xuZXhwb3J0IHZhciBDQU1FUkFfVFlQRTtcblxuKGZ1bmN0aW9uIChDQU1FUkFfVFlQRSkge1xuICBDQU1FUkFfVFlQRVtcIk9SQklUSU5HXCJdID0gXCJPUkJJVElOR1wiO1xuICBDQU1FUkFfVFlQRVtcIkVYUExPUklOR1wiXSA9IFwiRVhQTE9SSU5HXCI7XG4gIENBTUVSQV9UWVBFW1wiVFJBQ0tJTkdcIl0gPSBcIlRSQUNLSU5HXCI7XG59KShDQU1FUkFfVFlQRSB8fCAoQ0FNRVJBX1RZUEUgPSB7fSkpO1xuXG5leHBvcnQgdmFyIENBTUVSQV9UUkFDS0lOR19NT0RFO1xuXG4oZnVuY3Rpb24gKENBTUVSQV9UUkFDS0lOR19NT0RFKSB7XG4gIENBTUVSQV9UUkFDS0lOR19NT0RFW1wiREVGQVVMVFwiXSA9IFwiREVGQVVMVFwiO1xuICBDQU1FUkFfVFJBQ0tJTkdfTU9ERVtcIlJPVEFUSU9OQUxcIl0gPSBcIlJPVEFUSU9OQUxcIjtcbiAgQ0FNRVJBX1RSQUNLSU5HX01PREVbXCJUUkFOU0xBVElPTkFMXCJdID0gXCJUUkFOU0xBVElPTkFMXCI7XG4gIENBTUVSQV9UUkFDS0lOR19NT0RFW1wiQ0lORU1BVElDXCJdID0gXCJDSU5FTUFUSUNcIjtcbn0pKENBTUVSQV9UUkFDS0lOR19NT0RFIHx8IChDQU1FUkFfVFJBQ0tJTkdfTU9ERSA9IHt9KSk7XG5cbmV4cG9ydCB2YXIgQ0FNRVJBX1BST0pFQ1RJT05fTU9ERTtcblxuKGZ1bmN0aW9uIChDQU1FUkFfUFJPSkVDVElPTl9NT0RFKSB7XG4gIENBTUVSQV9QUk9KRUNUSU9OX01PREVbXCJPUlRIT0dSQVBISUNcIl0gPSBcIk9SVEhPR1JBUEhJQ1wiO1xuICBDQU1FUkFfUFJPSkVDVElPTl9NT0RFW1wiUEVSU1BFQ1RJVkVcIl0gPSBcIlBFUlNQRUNUSVZFXCI7XG59KShDQU1FUkFfUFJPSkVDVElPTl9NT0RFIHx8IChDQU1FUkFfUFJPSkVDVElPTl9NT0RFID0ge30pKTtcblxudmFyIERFR18yX1JBRCA9IE1hdGguUEkgLyAxODA7XG52YXIgUkFEXzJfREVHID0gMTgwIC8gTWF0aC5QSTtcbi8qKlxuICog5Y+C6ICD44CMV2ViR0wgSW5zaWdodHMgLSAyMy5EZXNpZ25pbmcgQ2FtZXJhcyBmb3IgV2ViR0wgQXBwbGljYXRpb25z44CN77yM5Z+65LqOIFJlc3BvbnNpYmxlIENhbWVyYSDmgJ3ot6/orr7orqFcbiAqIOS/neWtmOebuOacuuWPguaVsO+8jOWumuS5ieebuOacuuWKqOS9nO+8mlxuICogMS4gZG9sbHkg5rK/IG4g6L2056e75YqoXG4gKiAyLiBwYW4g5rK/IHUgdiDovbTnp7vliqhcbiAqIDMuIHJvdGF0ZSDku6XmlrnkvY3op5Lml4vovaxcbiAqIDQuIOenu+WKqOWIsCBMYW5kbWFya++8jOWFt+acieW5s+a7keeahOWKqOeUu+aViOaenO+8jOWFtumXtOemgeatouWFtuS7lueUqOaIt+S6pOS6klxuICovXG5cbmV4cG9ydCB2YXIgQ2FtZXJhID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuSW50ZXJhY3RvclNlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENhbWVyYSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2FtZXJhKTtcblxuICAgIHRoaXMubWF0cml4ID0gbWF0NC5jcmVhdGUoKTtcbiAgICB0aGlzLnJpZ2h0ID0gdmVjMy5mcm9tVmFsdWVzKDEsIDAsIDApO1xuICAgIHRoaXMudXAgPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMSwgMCk7XG4gICAgdGhpcy5mb3J3YXJkID0gdmVjMy5mcm9tVmFsdWVzKDAsIDAsIDEpO1xuICAgIHRoaXMucG9zaXRpb24gPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMSk7XG4gICAgdGhpcy5mb2NhbFBvaW50ID0gdmVjMy5mcm9tVmFsdWVzKDAsIDAsIDApO1xuICAgIHRoaXMuZGlzdGFuY2VWZWN0b3IgPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMCk7XG4gICAgdGhpcy5kaXN0YW5jZSA9IDE7XG4gICAgdGhpcy5hemltdXRoID0gMDtcbiAgICB0aGlzLmVsZXZhdGlvbiA9IDA7XG4gICAgdGhpcy5yb2xsID0gMDtcbiAgICB0aGlzLnJlbEF6aW11dGggPSAwO1xuICAgIHRoaXMucmVsRWxldmF0aW9uID0gMDtcbiAgICB0aGlzLnJlbFJvbGwgPSAwO1xuICAgIHRoaXMuZG9sbHlpbmdTdGVwID0gMDtcbiAgICB0aGlzLm1heERpc3RhbmNlID0gSW5maW5pdHk7XG4gICAgdGhpcy5taW5EaXN0YW5jZSA9IC1JbmZpbml0eTtcbiAgICB0aGlzLnJvdGF0ZVdvcmxkID0gZmFsc2U7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImludGVyYWN0b3JcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgdGhpcy5mb3YgPSAzMDtcbiAgICB0aGlzLm5lYXIgPSAwLjE7XG4gICAgdGhpcy5mYXIgPSAxMDAwMDtcbiAgICB0aGlzLmFzcGVjdCA9IDE7XG4gICAgdGhpcy5sZWZ0ID0gdm9pZCAwO1xuICAgIHRoaXMucnJpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMudG9wID0gdm9pZCAwO1xuICAgIHRoaXMuYm90dG9tID0gdm9pZCAwO1xuICAgIHRoaXMuem9vbSA9IDE7XG4gICAgdGhpcy5wZXJzcGVjdGl2ZSA9IG1hdDQuY3JlYXRlKCk7XG4gICAgdGhpcy52aWV3ID0gdm9pZCAwO1xuICAgIHRoaXMuZm9sbG93aW5nID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudHlwZSA9IENBTUVSQV9UWVBFLkVYUExPUklORztcbiAgICB0aGlzLnRyYWNraW5nTW9kZSA9IENBTUVSQV9UUkFDS0lOR19NT0RFLkRFRkFVTFQ7XG4gICAgdGhpcy5wcm9qZWN0aW9uTW9kZSA9IENBTUVSQV9QUk9KRUNUSU9OX01PREUuUEVSU1BFQ1RJVkU7XG4gICAgdGhpcy5mcnVzdHVtID0gbmV3IEZydXN0dW0oKTtcbiAgICB0aGlzLmxhbmRtYXJrcyA9IFtdO1xuICAgIHRoaXMubGFuZG1hcmtBbmltYXRpb25JRCA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhDYW1lcmEsIFt7XG4gICAga2V5OiBcImNsb25lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb25lKCkge1xuICAgICAgdmFyIGNhbWVyYSA9IG5ldyBDYW1lcmEoKTtcbiAgICAgIGNhbWVyYS5zZXRUeXBlKHRoaXMudHlwZSwgdW5kZWZpbmVkKTtcbiAgICAgIGNhbWVyYS5pbnRlcmFjdG9yID0gdGhpcy5pbnRlcmFjdG9yO1xuICAgICAgcmV0dXJuIGNhbWVyYTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UHJvamVjdGlvbk1vZGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UHJvamVjdGlvbk1vZGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9qZWN0aW9uTW9kZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UGVyc3BlY3RpdmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UGVyc3BlY3RpdmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wZXJzcGVjdGl2ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RnJ1c3R1bVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGcnVzdHVtKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZnJ1c3R1bTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UG9zaXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0VHlwZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRUeXBlKHR5cGUsIHRyYWNraW5nTW9kZSkge1xuICAgICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HKSB7XG4gICAgICAgIHRoaXMuc2V0V29ybGRSb3RhdGlvbih0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0V29ybGRSb3RhdGlvbihmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2dldEFuZ2xlcygpO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORyAmJiB0cmFja2luZ01vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNldFRyYWNraW5nTW9kZSh0cmFja2luZ01vZGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0UHJvamVjdGlvbk1vZGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0UHJvamVjdGlvbk1vZGUocHJvamVjdGlvbk1vZGUpIHtcbiAgICAgIHRoaXMucHJvamVjdGlvbk1vZGUgPSBwcm9qZWN0aW9uTW9kZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRUcmFja2luZ01vZGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0VHJhY2tpbmdNb2RlKHRyYWNraW5nTW9kZSkge1xuICAgICAgaWYgKHRoaXMudHlwZSAhPT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbXBvc3NpYmxlIHRvIHNldCBhIHRyYWNraW5nIG1vZGUgaWYgdGhlIGNhbWVyYSBpcyBub3Qgb2YgdHJhY2tpbmcgdHlwZScpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRyYWNraW5nTW9kZSA9IHRyYWNraW5nTW9kZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJZiBmbGFnIGlzIHRydWUsIGl0IHJldmVyc2VzIHRoZSBhemltdXRoIGFuZCBlbGV2YXRpb24gYW5nbGVzLlxuICAgICAqIFN1YnNlcXVlbnQgY2FsbHMgdG8gcm90YXRlLCBzZXRBemltdXRoLCBzZXRFbGV2YXRpb24sXG4gICAgICogY2hhbmdlQXppbXV0aCBvciBjaGFuZ2VFbGV2YXRpb24gd2lsbCBjYXVzZSB0aGUgaW52ZXJ0ZWQgZWZmZWN0LlxuICAgICAqIHNldFJvbGwgb3IgY2hhbmdlUm9sbCBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBtZXRob2QuXG4gICAgICpcbiAgICAgKiBUaGlzIGludmVyc2lvbiBpcyB1c2VmdWwgd2hlbiBvbmUgd2FudHMgdG8gc2ltdWxhdGUgdGhhdCB0aGUgd29ybGRcbiAgICAgKiBpcyBtb3ZpbmcsIGluc3RlYWQgb2YgdGhlIGNhbWVyYS5cbiAgICAgKlxuICAgICAqIEJ5IGRlZmF1bHQgdGhlIGNhbWVyYSBhbmdsZXMgYXJlIG5vdCByZXZlcnNlZC5cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGZsYWcgdGhlIGJvb2xlYW4gZmxhZyB0byByZXZlcnNlIHRoZSBhbmdsZXMuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRXb3JsZFJvdGF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFdvcmxkUm90YXRpb24oZmxhZykge1xuICAgICAgdGhpcy5yb3RhdGVXb3JsZCA9IGZsYWc7XG5cbiAgICAgIHRoaXMuX2dldEFuZ2xlcygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorqHnrpcgTVYg55+p6Zi177yM5Li655u45py655+p6Zi155qE6YCG55+p6Zi1XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRWaWV3VHJhbnNmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpZXdUcmFuc2Zvcm0oKSB7XG4gICAgICByZXR1cm4gbWF0NC5pbnZlcnQobWF0NC5jcmVhdGUoKSwgdGhpcy5tYXRyaXgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRXb3JsZFRyYW5zZm9ybVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRXb3JsZFRyYW5zZm9ybSgpIHtcbiAgICAgIHJldHVybiB0aGlzLm1hdHJpeDtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u55u45py655+p6Zi1XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRNYXRyaXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWF0cml4KG1hdHJpeCkge1xuICAgICAgdGhpcy5tYXRyaXggPSBtYXRyaXg7XG5cbiAgICAgIHRoaXMuX3VwZGF0ZSgpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0QXNwZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEFzcGVjdChhc3BlY3QpIHtcbiAgICAgIHRoaXMuc2V0UGVyc3BlY3RpdmUodGhpcy5uZWFyLCB0aGlzLmZhciwgdGhpcy5mb3YsIGFzcGVjdCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhbiBvZmZzZXQgaW4gYSBsYXJnZXIgZnJ1c3R1bSwgdXNlZCBpbiBQaXhlbFBpY2tpbmdcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFZpZXdPZmZzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Vmlld09mZnNldChmdWxsV2lkdGgsIGZ1bGxIZWlnaHQsIHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgIHRoaXMuYXNwZWN0ID0gZnVsbFdpZHRoIC8gZnVsbEhlaWdodDtcblxuICAgICAgaWYgKHRoaXMudmlldyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMudmlldyA9IHtcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIGZ1bGxXaWR0aDogMSxcbiAgICAgICAgICBmdWxsSGVpZ2h0OiAxLFxuICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgb2Zmc2V0WTogMCxcbiAgICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgICBoZWlnaHQ6IDFcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy52aWV3LmVuYWJsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52aWV3LmZ1bGxXaWR0aCA9IGZ1bGxXaWR0aDtcbiAgICAgIHRoaXMudmlldy5mdWxsSGVpZ2h0ID0gZnVsbEhlaWdodDtcbiAgICAgIHRoaXMudmlldy5vZmZzZXRYID0geDtcbiAgICAgIHRoaXMudmlldy5vZmZzZXRZID0geTtcbiAgICAgIHRoaXMudmlldy53aWR0aCA9IHdpZHRoO1xuICAgICAgdGhpcy52aWV3LmhlaWdodCA9IGhlaWdodDtcblxuICAgICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgPT09IENBTUVSQV9QUk9KRUNUSU9OX01PREUuUEVSU1BFQ1RJVkUpIHtcbiAgICAgICAgdGhpcy5zZXRQZXJzcGVjdGl2ZSh0aGlzLm5lYXIsIHRoaXMuZmFyLCB0aGlzLmZvdiwgdGhpcy5hc3BlY3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRPcnRob2dyYXBoaWModGhpcy5sZWZ0LCB0aGlzLnJyaWdodCwgdGhpcy50b3AsIHRoaXMuYm90dG9tLCB0aGlzLm5lYXIsIHRoaXMuZmFyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyVmlld09mZnNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhclZpZXdPZmZzZXQoKSB7XG4gICAgICBpZiAodGhpcy52aWV3ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy52aWV3LmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgPT09IENBTUVSQV9QUk9KRUNUSU9OX01PREUuUEVSU1BFQ1RJVkUpIHtcbiAgICAgICAgdGhpcy5zZXRQZXJzcGVjdGl2ZSh0aGlzLm5lYXIsIHRoaXMuZmFyLCB0aGlzLmZvdiwgdGhpcy5hc3BlY3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRPcnRob2dyYXBoaWModGhpcy5sZWZ0LCB0aGlzLnJyaWdodCwgdGhpcy50b3AsIHRoaXMuYm90dG9tLCB0aGlzLm5lYXIsIHRoaXMuZmFyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFBlcnNwZWN0aXZlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFBlcnNwZWN0aXZlKG5lYXIsIGZhciwgZm92LCBhc3BlY3QpIHtcbiAgICAgIHRoaXMucHJvamVjdGlvbk1vZGUgPSBDQU1FUkFfUFJPSkVDVElPTl9NT0RFLlBFUlNQRUNUSVZFO1xuICAgICAgdGhpcy5mb3YgPSBmb3Y7XG4gICAgICB0aGlzLm5lYXIgPSBuZWFyO1xuICAgICAgdGhpcy5mYXIgPSBmYXI7XG4gICAgICB0aGlzLmFzcGVjdCA9IGFzcGVjdDtcbiAgICAgIG1hdDQucGVyc3BlY3RpdmUodGhpcy5wZXJzcGVjdGl2ZSwgdGhpcy5mb3YgKiBERUdfMl9SQUQsIHRoaXMuYXNwZWN0LCB0aGlzLm5lYXIsIHRoaXMuZmFyKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRPcnRob2dyYXBoaWNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0T3J0aG9ncmFwaGljKGwsIHIsIHQsIGIsIG5lYXIsIGZhcikge1xuICAgICAgdGhpcy5wcm9qZWN0aW9uTW9kZSA9IENBTUVSQV9QUk9KRUNUSU9OX01PREUuT1JUSE9HUkFQSElDO1xuICAgICAgdGhpcy5ycmlnaHQgPSByO1xuICAgICAgdGhpcy5sZWZ0ID0gbDtcbiAgICAgIHRoaXMudG9wID0gdDtcbiAgICAgIHRoaXMuYm90dG9tID0gYjtcbiAgICAgIHRoaXMubmVhciA9IG5lYXI7XG4gICAgICB0aGlzLmZhciA9IGZhcjtcbiAgICAgIHZhciBkeCA9ICh0aGlzLnJyaWdodCAtIHRoaXMubGVmdCkgLyAoMiAqIHRoaXMuem9vbSk7XG4gICAgICB2YXIgZHkgPSAodGhpcy50b3AgLSB0aGlzLmJvdHRvbSkgLyAoMiAqIHRoaXMuem9vbSk7XG4gICAgICB2YXIgY3ggPSAodGhpcy5ycmlnaHQgKyB0aGlzLmxlZnQpIC8gMjtcbiAgICAgIHZhciBjeSA9ICh0aGlzLnRvcCArIHRoaXMuYm90dG9tKSAvIDI7XG4gICAgICB2YXIgbGVmdCA9IGN4IC0gZHg7XG4gICAgICB2YXIgcmlnaHQgPSBjeCArIGR4O1xuICAgICAgdmFyIHRvcCA9IGN5ICsgZHk7XG4gICAgICB2YXIgYm90dG9tID0gY3kgLSBkeTtcblxuICAgICAgaWYgKHRoaXMudmlldyAhPT0gdW5kZWZpbmVkICYmIHRoaXMudmlldy5lbmFibGVkKSB7XG4gICAgICAgIHZhciBzY2FsZVcgPSAodGhpcy5ycmlnaHQgLSB0aGlzLmxlZnQpIC8gdGhpcy52aWV3LmZ1bGxXaWR0aCAvIHRoaXMuem9vbTtcbiAgICAgICAgdmFyIHNjYWxlSCA9ICh0aGlzLnRvcCAtIHRoaXMuYm90dG9tKSAvIHRoaXMudmlldy5mdWxsSGVpZ2h0IC8gdGhpcy56b29tO1xuICAgICAgICBsZWZ0ICs9IHNjYWxlVyAqIHRoaXMudmlldy5vZmZzZXRYO1xuICAgICAgICByaWdodCA9IGxlZnQgKyBzY2FsZVcgKiB0aGlzLnZpZXcud2lkdGg7XG4gICAgICAgIHRvcCAtPSBzY2FsZUggKiB0aGlzLnZpZXcub2Zmc2V0WTtcbiAgICAgICAgYm90dG9tID0gdG9wIC0gc2NhbGVIICogdGhpcy52aWV3LmhlaWdodDtcbiAgICAgIH1cblxuICAgICAgbWF0NC5vcnRobyh0aGlzLnBlcnNwZWN0aXZlLCBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIG5lYXIsIGZhcik7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u55u45py65L2N572uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRQb3NpdGlvbih4LCB5LCB6KSB7XG4gICAgICB0aGlzLl9zZXRQb3NpdGlvbih4LCB5LCB6KTtcblxuICAgICAgdGhpcy5zZXRGb2NhbFBvaW50KHRoaXMuZm9jYWxQb2ludCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u6KeG54K55L2N572uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRGb2NhbFBvaW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEZvY2FsUG9pbnQoeCwgeSwgeikge1xuICAgICAgdmFyIHVwID0gdmVjMy5mcm9tVmFsdWVzKDAsIDEsIDApO1xuICAgICAgdGhpcy5mb2NhbFBvaW50ID0gY3JlYXRlVmVjMyh4LCB5LCB6KTtcblxuICAgICAgaWYgKHRoaXMudHJhY2tpbmdNb2RlID09PSBDQU1FUkFfVFJBQ0tJTkdfTU9ERS5DSU5FTUFUSUMpIHtcbiAgICAgICAgdmFyIGQgPSB2ZWMzLnN1YnRyYWN0KHZlYzMuY3JlYXRlKCksIHRoaXMuZm9jYWxQb2ludCwgdGhpcy5wb3NpdGlvbik7XG4gICAgICAgIHggPSBkWzBdO1xuICAgICAgICB5ID0gZFsxXTtcbiAgICAgICAgeiA9IGRbMl07XG4gICAgICAgIHZhciByID0gdmVjMy5sZW5ndGgoZCk7XG4gICAgICAgIHZhciBlbCA9IE1hdGguYXNpbih5IC8gcikgKiBSQURfMl9ERUc7XG4gICAgICAgIHZhciBheiA9IDkwICsgTWF0aC5hdGFuMih6LCB4KSAqIFJBRF8yX0RFRztcbiAgICAgICAgdmFyIG0gPSBtYXQ0LmNyZWF0ZSgpO1xuICAgICAgICBtYXQ0LnJvdGF0ZVkobSwgbSwgYXogKiBERUdfMl9SQUQpO1xuICAgICAgICBtYXQ0LnJvdGF0ZVgobSwgbSwgZWwgKiBERUdfMl9SQUQpO1xuICAgICAgICB1cCA9IHZlYzMudHJhbnNmb3JtTWF0NCh2ZWMzLmNyZWF0ZSgpLCBbMCwgMSwgMF0sIG0pO1xuICAgICAgfVxuXG4gICAgICBtYXQ0LmludmVydCh0aGlzLm1hdHJpeCwgbWF0NC5sb29rQXQobWF0NC5jcmVhdGUoKSwgdGhpcy5wb3NpdGlvbiwgdGhpcy5mb2NhbFBvaW50LCB1cCkpO1xuXG4gICAgICB0aGlzLl9nZXRBeGVzKCk7XG5cbiAgICAgIHRoaXMuX2dldERpc3RhbmNlKCk7XG5cbiAgICAgIHRoaXMuX2dldEFuZ2xlcygpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog5Zu65a6a5b2T5YmN6KeG54K577yM5oyJ5oyH5a6a6Led56a75pS+572u55u45py6XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXREaXN0YW5jZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXREaXN0YW5jZShkKSB7XG4gICAgICBpZiAodGhpcy5kaXN0YW5jZSA9PT0gZCB8fCBkIDwgMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlzdGFuY2UgPSBkO1xuXG4gICAgICBpZiAodGhpcy5kaXN0YW5jZSA8IDAuMDAwMikge1xuICAgICAgICB0aGlzLmRpc3RhbmNlID0gMC4wMDAyO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRvbGx5aW5nU3RlcCA9IHRoaXMuZGlzdGFuY2UgLyAxMDA7XG4gICAgICB2YXIgcG9zID0gdmVjMy5jcmVhdGUoKTtcbiAgICAgIGQgPSB0aGlzLmRpc3RhbmNlO1xuICAgICAgdmFyIG4gPSB0aGlzLmZvcndhcmQ7XG4gICAgICB2YXIgZiA9IHRoaXMuZm9jYWxQb2ludDtcbiAgICAgIHBvc1swXSA9IGQgKiBuWzBdICsgZlswXTtcbiAgICAgIHBvc1sxXSA9IGQgKiBuWzFdICsgZlsxXTtcbiAgICAgIHBvc1syXSA9IGQgKiBuWzJdICsgZlsyXTtcblxuICAgICAgdGhpcy5fc2V0UG9zaXRpb24ocG9zKTtcblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldE1heERpc3RhbmNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldE1heERpc3RhbmNlKGQpIHtcbiAgICAgIHRoaXMubWF4RGlzdGFuY2UgPSBkO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldE1pbkRpc3RhbmNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldE1pbkRpc3RhbmNlKGQpIHtcbiAgICAgIHRoaXMubWluRGlzdGFuY2UgPSBkO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIGluaXRpYWwgYXppbXV0aCBvZiB0aGUgY2FtZXJhXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjaGFuZ2VBemltdXRoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNoYW5nZUF6aW11dGgoYXopIHtcbiAgICAgIHRoaXMuc2V0QXppbXV0aCh0aGlzLmF6aW11dGggKyBheik7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgaW5pdGlhbCBlbGV2YXRpb24gb2YgdGhlIGNhbWVyYVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiY2hhbmdlRWxldmF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNoYW5nZUVsZXZhdGlvbihlbCkge1xuICAgICAgdGhpcy5zZXRFbGV2YXRpb24odGhpcy5lbGV2YXRpb24gKyBlbCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgaW5pdGlhbCByb2xsIG9mIHRoZSBjYW1lcmFcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNoYW5nZVJvbGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2hhbmdlUm9sbChybCkge1xuICAgICAgdGhpcy5zZXRSb2xsKHRoaXMucm9sbCArIHJsKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7nm7jmnLrmlrnkvY3op5LvvIzkuI3lkIznm7jmnLrmqKHlvI/kuIvpnIDopoHph43mlrDorqHnrpfnm7jmnLrkvY3nva7miJbogIXmmK/op4bngrnkvY3nva5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gZWwgdGhlIGF6aW11dGggaW4gZGVncmVlc1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0QXppbXV0aFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRBemltdXRoKGF6KSB7XG4gICAgICB0aGlzLmF6aW11dGggPSBnZXRBbmdsZShheik7XG4gICAgICB0aGlzLmNvbXB1dGVNYXRyaXgoKTtcblxuICAgICAgdGhpcy5fZ2V0QXhlcygpO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5PUkJJVElORyB8fCB0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLkVYUExPUklORykge1xuICAgICAgICB0aGlzLl9nZXRQb3NpdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIHRoaXMuX2dldEZvY2FsUG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEF6aW11dGhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QXppbXV0aCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmF6aW11dGg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruebuOacuuaWueS9jeinku+8jOS4jeWQjOebuOacuuaooeW8j+S4i+mcgOimgemHjeaWsOiuoeeul+ebuOacuuS9jee9ruaIluiAheaYr+inhueCueS9jee9rlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBlbCB0aGUgZWxldmF0aW9uIGluIGRlZ3JlZXNcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldEVsZXZhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRFbGV2YXRpb24oZWwpIHtcbiAgICAgIHRoaXMuZWxldmF0aW9uID0gZ2V0QW5nbGUoZWwpO1xuICAgICAgdGhpcy5jb21wdXRlTWF0cml4KCk7XG5cbiAgICAgIHRoaXMuX2dldEF4ZXMoKTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuT1JCSVRJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgdGhpcy5fZ2V0UG9zaXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORykge1xuICAgICAgICB0aGlzLl9nZXRGb2NhbFBvaW50KCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7nm7jmnLrmlrnkvY3op5LvvIzkuI3lkIznm7jmnLrmqKHlvI/kuIvpnIDopoHph43mlrDorqHnrpfnm7jmnLrkvY3nva7miJbogIXmmK/op4bngrnkvY3nva5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gYW5nbGUgdGhlIHJvbGwgYW5nbGVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFJvbGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Um9sbChhbmdsZSkge1xuICAgICAgdGhpcy5yb2xsID0gZ2V0QW5nbGUoYW5nbGUpO1xuICAgICAgdGhpcy5jb21wdXRlTWF0cml4KCk7XG5cbiAgICAgIHRoaXMuX2dldEF4ZXMoKTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuT1JCSVRJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgdGhpcy5fZ2V0UG9zaXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORykge1xuICAgICAgICB0aGlzLl9nZXRGb2NhbFBvaW50KCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGFuZ2VzIHRoZSBhemltdXRoIGFuZCBlbGV2YXRpb24gd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGNhbWVyYSBheGVzXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGF6aW11dGggdGhlIHJlbGF0aXZlIGF6aW11dGhcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gZWxldmF0aW9uIHRoZSByZWxhdGl2ZSBlbGV2YXRpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gcm9sbCB0aGUgcmVsYXRpdmUgcm9sbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicm90YXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJvdGF0ZShhemltdXRoLCBlbGV2YXRpb24sIHJvbGwpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLkVYUExPUklORykge1xuICAgICAgICBhemltdXRoID0gZ2V0QW5nbGUoYXppbXV0aCk7XG4gICAgICAgIGVsZXZhdGlvbiA9IGdldEFuZ2xlKGVsZXZhdGlvbik7XG4gICAgICAgIHJvbGwgPSBnZXRBbmdsZShyb2xsKTtcbiAgICAgICAgdmFyIHJvdFggPSBxdWF0LnNldEF4aXNBbmdsZShxdWF0LmNyZWF0ZSgpLCBbMSwgMCwgMF0sICh0aGlzLnJvdGF0ZVdvcmxkID8gMSA6IC0xKSAqIGVsZXZhdGlvbiAqIERFR18yX1JBRCk7XG4gICAgICAgIHZhciByb3RZID0gcXVhdC5zZXRBeGlzQW5nbGUocXVhdC5jcmVhdGUoKSwgWzAsIDEsIDBdLCAodGhpcy5yb3RhdGVXb3JsZCA/IDEgOiAtMSkgKiBhemltdXRoICogREVHXzJfUkFEKTtcbiAgICAgICAgdmFyIHJvdFogPSBxdWF0LnNldEF4aXNBbmdsZShxdWF0LmNyZWF0ZSgpLCBbMCwgMCwgMV0sIHJvbGwgKiBERUdfMl9SQUQpO1xuICAgICAgICB2YXIgcm90USA9IHF1YXQubXVsdGlwbHkocXVhdC5jcmVhdGUoKSwgcm90WSwgcm90WCk7XG4gICAgICAgIHJvdFEgPSBxdWF0Lm11bHRpcGx5KHF1YXQuY3JlYXRlKCksIHJvdFEsIHJvdFopO1xuICAgICAgICB2YXIgcm90TWF0cml4ID0gbWF0NC5mcm9tUXVhdChtYXQ0LmNyZWF0ZSgpLCByb3RRKTtcbiAgICAgICAgbWF0NC50cmFuc2xhdGUodGhpcy5tYXRyaXgsIHRoaXMubWF0cml4LCBbMCwgMCwgLXRoaXMuZGlzdGFuY2VdKTtcbiAgICAgICAgbWF0NC5tdWx0aXBseSh0aGlzLm1hdHJpeCwgdGhpcy5tYXRyaXgsIHJvdE1hdHJpeCk7XG4gICAgICAgIG1hdDQudHJhbnNsYXRlKHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgWzAsIDAsIHRoaXMuZGlzdGFuY2VdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChNYXRoLmFicyh0aGlzLmVsZXZhdGlvbiArIGVsZXZhdGlvbikgPiA5MCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVsRWxldmF0aW9uID0gZ2V0QW5nbGUoZWxldmF0aW9uKTtcbiAgICAgICAgdGhpcy5yZWxBemltdXRoID0gZ2V0QW5nbGUoYXppbXV0aCk7XG4gICAgICAgIHRoaXMucmVsUm9sbCA9IGdldEFuZ2xlKHJvbGwpO1xuICAgICAgICB0aGlzLmVsZXZhdGlvbiArPSB0aGlzLnJlbEVsZXZhdGlvbjtcbiAgICAgICAgdGhpcy5hemltdXRoICs9IHRoaXMucmVsQXppbXV0aDtcbiAgICAgICAgdGhpcy5yb2xsICs9IHRoaXMucmVsUm9sbDtcbiAgICAgICAgdGhpcy5jb21wdXRlTWF0cml4KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2dldEF4ZXMoKTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuT1JCSVRJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgdGhpcy5fZ2V0UG9zaXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORykge1xuICAgICAgICB0aGlzLl9nZXRGb2NhbFBvaW50KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3VwZGF0ZSgpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog5rK/5rC05bmzKHJpZ2h0KSAmIOWeguebtCh1cCnlubPnp7vnm7jmnLpcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInBhblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYW4odHgsIHR5KSB7XG4gICAgICB2YXIgY29vcmRzID0gY3JlYXRlVmVjMyh0eCwgdHksIDApO1xuICAgICAgdmFyIHBvcyA9IHZlYzMuY2xvbmUodGhpcy5wb3NpdGlvbik7XG4gICAgICB2ZWMzLmFkZChwb3MsIHBvcywgdmVjMy5zY2FsZSh2ZWMzLmNyZWF0ZSgpLCB0aGlzLnJpZ2h0LCBjb29yZHNbMF0pKTtcbiAgICAgIHZlYzMuYWRkKHBvcywgcG9zLCB2ZWMzLnNjYWxlKHZlYzMuY3JlYXRlKCksIHRoaXMudXAsIGNvb3Jkc1sxXSkpO1xuXG4gICAgICB0aGlzLl9zZXRQb3NpdGlvbihwb3MpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICog5rK/IG4g6L2056e75Yqo77yM5b2T6Led56a76KeG54K56L+c5pe256e75Yqo6YCf5bqm6L6D5b+r77yM56a76KeG54K56LaK6L+R6YCf5bqm6LaK5oWiXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJkb2xseVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkb2xseSh2YWx1ZSkge1xuICAgICAgdmFyIG4gPSB0aGlzLmZvcndhcmQ7XG4gICAgICB2YXIgcG9zID0gdmVjMy5jbG9uZSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHZhciBzdGVwID0gdmFsdWUgKiB0aGlzLmRvbGx5aW5nU3RlcDtcbiAgICAgIHZhciB1cGRhdGVkRGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlICsgdmFsdWUgKiB0aGlzLmRvbGx5aW5nU3RlcDsgLy8g6ZmQ5Yi26KeG54K56Led56a76IyD5Zu0XG5cbiAgICAgIHN0ZXAgPSBNYXRoLm1heChNYXRoLm1pbih1cGRhdGVkRGlzdGFuY2UsIHRoaXMubWF4RGlzdGFuY2UpLCB0aGlzLm1pbkRpc3RhbmNlKSAtIHRoaXMuZGlzdGFuY2U7XG4gICAgICBwb3NbMF0gKz0gc3RlcCAqIG5bMF07XG4gICAgICBwb3NbMV0gKz0gc3RlcCAqIG5bMV07XG4gICAgICBwb3NbMl0gKz0gc3RlcCAqIG5bMl07XG5cbiAgICAgIHRoaXMuX3NldFBvc2l0aW9uKHBvcyk7XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLk9SQklUSU5HIHx8IHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HKSB7XG4gICAgICAgIC8vIOmHjeaWsOiuoeeul+inhueCuei3neemu1xuICAgICAgICB0aGlzLl9nZXREaXN0YW5jZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIC8vIOS/neaMgeinhui3ne+8jOenu+WKqOinhueCueS9jee9rlxuICAgICAgICB2ZWMzLmFkZCh0aGlzLmZvY2FsUG9pbnQsIHBvcywgdGhpcy5kaXN0YW5jZVZlY3Rvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVMYW5kbWFya1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVMYW5kbWFyayhuYW1lLCBwYXJhbXMpIHtcbiAgICAgIHZhciBjYW1lcmEgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjYW1lcmEuc2V0UG9zaXRpb24ocGFyYW1zLnBvc2l0aW9uKTtcbiAgICAgIGNhbWVyYS5zZXRGb2NhbFBvaW50KHBhcmFtcy5mb2NhbFBvaW50KTtcblxuICAgICAgaWYgKHBhcmFtcy5yb2xsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2FtZXJhLnNldFJvbGwocGFyYW1zLnJvbGwpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGFuZG1hcmsgPSBuZXcgTGFuZG1hcmsobmFtZSwgY2FtZXJhKTtcbiAgICAgIHRoaXMubGFuZG1hcmtzLnB1c2gobGFuZG1hcmspO1xuICAgICAgcmV0dXJuIGxhbmRtYXJrO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRMYW5kbWFya1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMYW5kbWFyayhuYW1lKSB7XG4gICAgICB2YXIgbGFuZG1hcmsgPSBuZXcgTGFuZG1hcmsobmFtZSwgdGhpcyk7XG4gICAgICB0aGlzLmxhbmRtYXJrcy5wdXNoKGxhbmRtYXJrKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnb3RvTGFuZG1hcmtcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ290b0xhbmRtYXJrKG5hbWUpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBkdXJhdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMTAwMDtcbiAgICAgIHZhciBsYW5kbWFyayA9IHRoaXMubGFuZG1hcmtzLmZpbmQoZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgcmV0dXJuIGwubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobGFuZG1hcmspIHtcbiAgICAgICAgaWYgKGR1cmF0aW9uID09PSAwKSB7XG4gICAgICAgICAgbGFuZG1hcmsucmV0cmlldmUodGhpcyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGFuZG1hcmtBbmltYXRpb25JRCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMubGFuZG1hcmtBbmltYXRpb25JRCk7XG4gICAgICAgIH0gLy8gVE9ETzogZG8gbm90IHByb2Nlc3MgZXZlbnRzIGR1cmluZyBhbmltYXRpb25cblxuXG4gICAgICAgIHRoaXMuaW50ZXJhY3Rvci5kaXNjb25uZWN0KCk7XG4gICAgICAgIHZhciBkZXN0UG9zaXRpb24gPSBsYW5kbWFyay5nZXRQb3NpdGlvbigpO1xuICAgICAgICB2YXIgZGVzdEZvY2FsUG9pbnQgPSBsYW5kbWFyay5nZXRGb2NhbFBvaW50KCk7XG4gICAgICAgIHZhciBkZXN0Um9sbCA9IGxhbmRtYXJrLmdldFJvbGwoKTtcbiAgICAgICAgdmFyIHRpbWVTdGFydDtcblxuICAgICAgICB2YXIgYW5pbWF0ZSA9IGZ1bmN0aW9uIGFuaW1hdGUodGltZXN0YW1wKSB7XG4gICAgICAgICAgaWYgKHRpbWVTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aW1lU3RhcnQgPSB0aW1lc3RhbXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGVsYXBzZWQgPSB0aW1lc3RhbXAgLSB0aW1lU3RhcnQ7IC8vIFRPRE86IHVzZSBiZXR0ZXIgZWFzZSBmdW5jdGlvblxuXG4gICAgICAgICAgdmFyIHQgPSAoMSAtIE1hdGguY29zKGVsYXBzZWQgLyBkdXJhdGlvbiAqIE1hdGguUEkpKSAvIDI7XG4gICAgICAgICAgdmFyIGludGVyRm9jYWxQb2ludCA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICAgICAgdmFyIGludGVyUG9zaXRpb24gPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgICAgIHZhciBpbnRlclJvbGwgPSAwO1xuICAgICAgICAgIHZlYzMubGVycChpbnRlckZvY2FsUG9pbnQsIF90aGlzLmZvY2FsUG9pbnQsIGRlc3RGb2NhbFBvaW50LCB0KTtcbiAgICAgICAgICB2ZWMzLmxlcnAoaW50ZXJQb3NpdGlvbiwgX3RoaXMucG9zaXRpb24sIGRlc3RQb3NpdGlvbiwgdCk7XG4gICAgICAgICAgaW50ZXJSb2xsID0gX3RoaXMucm9sbCAqICgxIC0gdCkgKyBkZXN0Um9sbCAqIHQ7XG5cbiAgICAgICAgICBfdGhpcy5zZXRGb2NhbFBvaW50KGludGVyRm9jYWxQb2ludCk7XG5cbiAgICAgICAgICBfdGhpcy5zZXRQb3NpdGlvbihpbnRlclBvc2l0aW9uKTtcblxuICAgICAgICAgIF90aGlzLnNldFJvbGwoaW50ZXJSb2xsKTtcblxuICAgICAgICAgIF90aGlzLmNvbXB1dGVNYXRyaXgoKTtcblxuICAgICAgICAgIHZhciBkaXN0ID0gdmVjMy5kaXN0KGludGVyRm9jYWxQb2ludCwgZGVzdEZvY2FsUG9pbnQpICsgdmVjMy5kaXN0KGludGVyUG9zaXRpb24sIGRlc3RQb3NpdGlvbik7XG5cbiAgICAgICAgICBpZiAoZGlzdCA+IDAuMDEpIHsvL1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5zZXRGb2NhbFBvaW50KGludGVyRm9jYWxQb2ludCk7XG5cbiAgICAgICAgICAgIF90aGlzLnNldFBvc2l0aW9uKGludGVyUG9zaXRpb24pO1xuXG4gICAgICAgICAgICBfdGhpcy5zZXRSb2xsKGludGVyUm9sbCk7XG5cbiAgICAgICAgICAgIF90aGlzLmNvbXB1dGVNYXRyaXgoKTtcblxuICAgICAgICAgICAgX3RoaXMuaW50ZXJhY3Rvci5jb25uZWN0KCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZWxhcHNlZCA8IGR1cmF0aW9uKSB7XG4gICAgICAgICAgICBfdGhpcy5sYW5kbWFya0FuaW1hdGlvbklEID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICog5qC55o2u55u45py655+p6Zi16YeN5paw6K6h566X5ZCE56eN55u45py65Y+C5pWwXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfdXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF91cGRhdGUoKSB7XG4gICAgICB0aGlzLl9nZXRBeGVzKCk7XG5cbiAgICAgIHRoaXMuX2dldFBvc2l0aW9uKCk7XG5cbiAgICAgIHRoaXMuX2dldERpc3RhbmNlKCk7XG5cbiAgICAgIHRoaXMuX2dldEFuZ2xlcygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorqHnrpfnm7jmnLrnn6npmLVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNvbXB1dGVNYXRyaXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcHV0ZU1hdHJpeCgpIHtcbiAgICAgIHZhciByb3RYO1xuICAgICAgdmFyIHJvdFk7IC8vIOS9v+eUqOWbm+WFg+aVsOaPj+i/sCAzRCDml4vovaxcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly94aWFvaXZlci5naXRodWIuaW8vY29kaW5nLzIwMTgvMTIvMjgvQ2FtZXJhLSVFOCVBRSVCRSVFOCVBRSVBMS0lRTQlQjglODAuaHRtbFxuXG4gICAgICB2YXIgcm90WiA9IHF1YXQuc2V0QXhpc0FuZ2xlKHF1YXQuY3JlYXRlKCksIFswLCAwLCAxXSwgdGhpcy5yb2xsICogREVHXzJfUkFEKTtcbiAgICAgIG1hdDQuaWRlbnRpdHkodGhpcy5tYXRyaXgpOyAvLyBvbmx5IGNvbnNpZGVyIEhDUyBmb3IgRVhQTE9SSU5HIGFuZCBPUkJJVElORyBjYW1lcmFzXG5cbiAgICAgIHJvdFggPSBxdWF0LnNldEF4aXNBbmdsZShxdWF0LmNyZWF0ZSgpLCBbMSwgMCwgMF0sICh0aGlzLnJvdGF0ZVdvcmxkICYmIHRoaXMudHlwZSAhPT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORyA/IDEgOiAtMSkgKiB0aGlzLmVsZXZhdGlvbiAqIERFR18yX1JBRCk7XG4gICAgICByb3RZID0gcXVhdC5zZXRBeGlzQW5nbGUocXVhdC5jcmVhdGUoKSwgWzAsIDEsIDBdLCAodGhpcy5yb3RhdGVXb3JsZCAmJiB0aGlzLnR5cGUgIT09IENBTUVSQV9UWVBFLlRSQUNLSU5HIHx8IHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcgPyAxIDogLTEpICogdGhpcy5hemltdXRoICogREVHXzJfUkFEKTtcbiAgICAgIHZhciByb3RRID0gcXVhdC5tdWx0aXBseShxdWF0LmNyZWF0ZSgpLCByb3RZLCByb3RYKTtcbiAgICAgIHJvdFEgPSBxdWF0Lm11bHRpcGx5KHF1YXQuY3JlYXRlKCksIHJvdFEsIHJvdFopO1xuICAgICAgdmFyIHJvdE1hdHJpeCA9IG1hdDQuZnJvbVF1YXQobWF0NC5jcmVhdGUoKSwgcm90USk7XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLk9SQklUSU5HIHx8IHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HKSB7XG4gICAgICAgIG1hdDQudHJhbnNsYXRlKHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgdGhpcy5mb2NhbFBvaW50KTtcbiAgICAgICAgbWF0NC5tdWx0aXBseSh0aGlzLm1hdHJpeCwgdGhpcy5tYXRyaXgsIHJvdE1hdHJpeCk7XG4gICAgICAgIG1hdDQudHJhbnNsYXRlKHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgWzAsIDAsIHRoaXMuZGlzdGFuY2VdKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORykge1xuICAgICAgICBtYXQ0LnRyYW5zbGF0ZSh0aGlzLm1hdHJpeCwgdGhpcy5tYXRyaXgsIHRoaXMucG9zaXRpb24pO1xuICAgICAgICBtYXQ0Lm11bHRpcGx5KHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgcm90TWF0cml4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY2FtZXJhIHBvc2l0aW9uIGluIHRoZSBjYW1lcmEgbWF0cml4XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfc2V0UG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3NldFBvc2l0aW9uKHgsIHksIHopIHtcbiAgICAgIHRoaXMucG9zaXRpb24gPSBjcmVhdGVWZWMzKHgsIHksIHopO1xuICAgICAgdmFyIG0gPSB0aGlzLm1hdHJpeDtcbiAgICAgIG1bMTJdID0gdGhpcy5wb3NpdGlvblswXTtcbiAgICAgIG1bMTNdID0gdGhpcy5wb3NpdGlvblsxXTtcbiAgICAgIG1bMTRdID0gdGhpcy5wb3NpdGlvblsyXTtcbiAgICAgIG1bMTVdID0gMTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVjYWxjdWxhdGVzIGF4ZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgbWF0cml4XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0QXhlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0QXhlcygpIHtcbiAgICAgIHZlYzMuY29weSh0aGlzLnJpZ2h0LCBjcmVhdGVWZWMzKHZlYzQudHJhbnNmb3JtTWF0NCh2ZWM0LmNyZWF0ZSgpLCBbMSwgMCwgMCwgMF0sIHRoaXMubWF0cml4KSkpO1xuICAgICAgdmVjMy5jb3B5KHRoaXMudXAsIGNyZWF0ZVZlYzModmVjNC50cmFuc2Zvcm1NYXQ0KHZlYzQuY3JlYXRlKCksIFswLCAxLCAwLCAwXSwgdGhpcy5tYXRyaXgpKSk7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5mb3J3YXJkLCBjcmVhdGVWZWMzKHZlYzQudHJhbnNmb3JtTWF0NCh2ZWM0LmNyZWF0ZSgpLCBbMCwgMCwgMSwgMF0sIHRoaXMubWF0cml4KSkpO1xuICAgICAgdmVjMy5ub3JtYWxpemUodGhpcy5yaWdodCwgdGhpcy5yaWdodCk7XG4gICAgICB2ZWMzLm5vcm1hbGl6ZSh0aGlzLnVwLCB0aGlzLnVwKTtcbiAgICAgIHZlYzMubm9ybWFsaXplKHRoaXMuZm9yd2FyZCwgdGhpcy5mb3J3YXJkKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVjYWxjdWxhdGVzIGV1bGVyIGFuZ2xlcyBiYXNlZCBvbiB0aGUgY3VycmVudCBzdGF0ZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiX2dldEFuZ2xlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0QW5nbGVzKCkge1xuICAgICAgLy8gUmVjYWxjdWxhdGVzIGFuZ2xlc1xuICAgICAgdmFyIHggPSB0aGlzLmRpc3RhbmNlVmVjdG9yWzBdO1xuICAgICAgdmFyIHkgPSB0aGlzLmRpc3RhbmNlVmVjdG9yWzFdO1xuICAgICAgdmFyIHogPSB0aGlzLmRpc3RhbmNlVmVjdG9yWzJdO1xuICAgICAgdmFyIHIgPSB2ZWMzLmxlbmd0aCh0aGlzLmRpc3RhbmNlVmVjdG9yKTsgLy8gRkFTVCBGQUlMOiBJZiB0aGVyZSBpcyBubyBkaXN0YW5jZSB3ZSBjYW5ub3QgY29tcHV0ZSBhbmdsZXNcblxuICAgICAgaWYgKHIgPT09IDApIHtcbiAgICAgICAgdGhpcy5lbGV2YXRpb24gPSAwO1xuICAgICAgICB0aGlzLmF6aW11dGggPSAwO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIHRoaXMuZWxldmF0aW9uID0gTWF0aC5hc2luKHkgLyByKSAqIFJBRF8yX0RFRztcbiAgICAgICAgdGhpcy5hemltdXRoID0gTWF0aC5hdGFuMigteCwgLXopICogUkFEXzJfREVHO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMucm90YXRlV29ybGQpIHtcbiAgICAgICAgICB0aGlzLmVsZXZhdGlvbiA9IE1hdGguYXNpbih5IC8gcikgKiBSQURfMl9ERUc7XG4gICAgICAgICAgdGhpcy5hemltdXRoID0gTWF0aC5hdGFuMigteCwgLXopICogUkFEXzJfREVHO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZWxldmF0aW9uID0gLU1hdGguYXNpbih5IC8gcikgKiBSQURfMl9ERUc7XG4gICAgICAgICAgdGhpcy5hemltdXRoID0gLU1hdGguYXRhbjIoLXgsIC16KSAqIFJBRF8yX0RFRztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiDph43mlrDorqHnrpfnm7jmnLrkvY3nva7vvIzlj6rmnIkgT1JCSVRJTkcg5qih5byP55u45py65L2N572u5omN5Lya5Y+R55Sf5Y+Y5YyWXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0UG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2dldFBvc2l0aW9uKCkge1xuICAgICAgdmVjMy5jb3B5KHRoaXMucG9zaXRpb24sIGNyZWF0ZVZlYzModmVjNC50cmFuc2Zvcm1NYXQ0KHZlYzQuY3JlYXRlKCksIFswLCAwLCAwLCAxXSwgdGhpcy5tYXRyaXgpKSk7IC8vIOebuOacuuS9jee9ruWPmOWMlu+8jOmcgOimgemHjeaWsOiuoeeul+inhui3nVxuXG4gICAgICB0aGlzLl9nZXREaXN0YW5jZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDph43mlrDorqHnrpfop4bngrnvvIzlj6rmnIkgVFJBQ0tJTkcg5qih5byP6KeG54K55omN5Lya5Y+R55Sf5Y+Y5YyWXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0Rm9jYWxQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0Rm9jYWxQb2ludCgpIHtcbiAgICAgIHZlYzMudHJhbnNmb3JtTWF0Myh0aGlzLmRpc3RhbmNlVmVjdG9yLCBbMCwgMCwgLXRoaXMuZGlzdGFuY2VdLCBtYXQzLmZyb21NYXQ0KG1hdDMuY3JlYXRlKCksIHRoaXMubWF0cml4KSk7XG4gICAgICB2ZWMzLmFkZCh0aGlzLmZvY2FsUG9pbnQsIHRoaXMucG9zaXRpb24sIHRoaXMuZGlzdGFuY2VWZWN0b3IpOyAvLyDop4bngrnlj5jljJbvvIzpnIDopoHph43mlrDorqHnrpfop4bot51cblxuICAgICAgdGhpcy5fZ2V0RGlzdGFuY2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6YeN5paw6K6h566X6KeG6LedXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0RGlzdGFuY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2dldERpc3RhbmNlKCkge1xuICAgICAgdGhpcy5kaXN0YW5jZVZlY3RvciA9IHZlYzMuc3VidHJhY3QodmVjMy5jcmVhdGUoKSwgdGhpcy5mb2NhbFBvaW50LCB0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMuZGlzdGFuY2UgPSB2ZWMzLmxlbmd0aCh0aGlzLmRpc3RhbmNlVmVjdG9yKTtcbiAgICAgIHRoaXMuZG9sbHlpbmdTdGVwID0gdGhpcy5kaXN0YW5jZSAvIDEwMDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2FtZXJhO1xufSgpLCBfY2xhc3MzLlByb2plY3Rpb25Nb2RlID0ge1xuICBPUlRIT0dSQVBISUM6ICdPUlRIT0dSQVBISUMnLFxuICBQRVJTUEVDVElWRTogJ1BFUlNQRUNUSVZFJ1xufSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImludGVyYWN0b3JcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNhbWVyYS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/camera/Camera.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/camera/Landmark.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/camera/Landmark.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Landmark; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n\n\n\n\n/**\n * 保存相机状态,便于后续在多个 Landmark 间移动\n */\nvar Landmark = /*#__PURE__*/function () {\n function Landmark(name, c) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Landmark);\n\n this.name = void 0;\n this.matrix = void 0;\n this.right = void 0;\n this.up = void 0;\n this.forward = void 0;\n this.position = void 0;\n this.focalPoint = void 0;\n this.distanceVector = void 0;\n this.distance = void 0;\n this.dollyingStep = void 0;\n this.azimuth = 0;\n this.elevation = 0;\n this.roll = 0;\n this.relAzimuth = 0;\n this.relElevation = 0;\n this.relRoll = 0;\n this.name = name;\n this.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"mat4\"].clone(c.matrix);\n this.right = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.right);\n this.up = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.up);\n this.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.forward);\n this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.position);\n this.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.focalPoint);\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.distanceVector);\n this.azimuth = c.azimuth;\n this.elevation = c.elevation;\n this.roll = c.roll;\n this.relAzimuth = c.relAzimuth;\n this.relElevation = c.relElevation;\n this.relRoll = c.relRoll;\n this.dollyingStep = c.dollyingStep;\n this.distance = c.distance;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Landmark, [{\n key: \"getPosition\",\n value: function getPosition() {\n return this.position;\n }\n }, {\n key: \"getFocalPoint\",\n value: function getFocalPoint() {\n return this.focalPoint;\n }\n }, {\n key: \"getRoll\",\n value: function getRoll() {\n return this.roll;\n }\n }, {\n key: \"retrieve\",\n value: function retrieve(c) {\n c.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"mat4\"].copy(c.matrix, this.matrix);\n c.right = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.right, this.right);\n c.up = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.up, this.up);\n c.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.forward, this.forward);\n c.position = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.position, this.position);\n c.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.focalPoint, this.focalPoint);\n c.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.distanceVector, this.distanceVector);\n c.azimuth = this.azimuth;\n c.elevation = this.elevation;\n c.roll = this.roll;\n c.relAzimuth = this.relAzimuth;\n c.relElevation = this.relElevation;\n c.relRoll = this.relRoll;\n c.dollyingStep = this.dollyingStep;\n c.distance = this.distance;\n }\n }]);\n\n return Landmark;\n}();\n\n\n//# sourceMappingURL=Landmark.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvY2FtZXJhL0xhbmRtYXJrLmpzP2I5ZGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUN2Qjs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsOENBQUk7QUFDdEIsaUJBQWlCLDhDQUFJO0FBQ3JCLGNBQWMsOENBQUk7QUFDbEIsbUJBQW1CLDhDQUFJO0FBQ3ZCLG9CQUFvQiw4Q0FBSTtBQUN4QixzQkFBc0IsOENBQUk7QUFDMUIsMEJBQTBCLDhDQUFJO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGlCQUFpQiw4Q0FBSTtBQUNyQixnQkFBZ0IsOENBQUk7QUFDcEIsYUFBYSw4Q0FBSTtBQUNqQixrQkFBa0IsOENBQUk7QUFDdEIsbUJBQW1CLDhDQUFJO0FBQ3ZCLHFCQUFxQiw4Q0FBSTtBQUN6Qix5QkFBeUIsOENBQUk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRThCO0FBQy9CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL2NhbWVyYS9MYW5kbWFyay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IG1hdDQsIHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuXG4vKipcbiAqIOS/neWtmOebuOacuueKtuaAge+8jOS+v+S6juWQjue7reWcqOWkmuS4qiBMYW5kbWFyayDpl7Tnp7vliqhcbiAqL1xudmFyIExhbmRtYXJrID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGFuZG1hcmsobmFtZSwgYykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMYW5kbWFyayk7XG5cbiAgICB0aGlzLm5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5tYXRyaXggPSB2b2lkIDA7XG4gICAgdGhpcy5yaWdodCA9IHZvaWQgMDtcbiAgICB0aGlzLnVwID0gdm9pZCAwO1xuICAgIHRoaXMuZm9yd2FyZCA9IHZvaWQgMDtcbiAgICB0aGlzLnBvc2l0aW9uID0gdm9pZCAwO1xuICAgIHRoaXMuZm9jYWxQb2ludCA9IHZvaWQgMDtcbiAgICB0aGlzLmRpc3RhbmNlVmVjdG9yID0gdm9pZCAwO1xuICAgIHRoaXMuZGlzdGFuY2UgPSB2b2lkIDA7XG4gICAgdGhpcy5kb2xseWluZ1N0ZXAgPSB2b2lkIDA7XG4gICAgdGhpcy5hemltdXRoID0gMDtcbiAgICB0aGlzLmVsZXZhdGlvbiA9IDA7XG4gICAgdGhpcy5yb2xsID0gMDtcbiAgICB0aGlzLnJlbEF6aW11dGggPSAwO1xuICAgIHRoaXMucmVsRWxldmF0aW9uID0gMDtcbiAgICB0aGlzLnJlbFJvbGwgPSAwO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5tYXRyaXggPSBtYXQ0LmNsb25lKGMubWF0cml4KTtcbiAgICB0aGlzLnJpZ2h0ID0gdmVjMy5jbG9uZShjLnJpZ2h0KTtcbiAgICB0aGlzLnVwID0gdmVjMy5jbG9uZShjLnVwKTtcbiAgICB0aGlzLmZvcndhcmQgPSB2ZWMzLmNsb25lKGMuZm9yd2FyZCk7XG4gICAgdGhpcy5wb3NpdGlvbiA9IHZlYzMuY2xvbmUoYy5wb3NpdGlvbik7XG4gICAgdGhpcy5mb2NhbFBvaW50ID0gdmVjMy5jbG9uZShjLmZvY2FsUG9pbnQpO1xuICAgIHRoaXMuZGlzdGFuY2VWZWN0b3IgPSB2ZWMzLmNsb25lKGMuZGlzdGFuY2VWZWN0b3IpO1xuICAgIHRoaXMuYXppbXV0aCA9IGMuYXppbXV0aDtcbiAgICB0aGlzLmVsZXZhdGlvbiA9IGMuZWxldmF0aW9uO1xuICAgIHRoaXMucm9sbCA9IGMucm9sbDtcbiAgICB0aGlzLnJlbEF6aW11dGggPSBjLnJlbEF6aW11dGg7XG4gICAgdGhpcy5yZWxFbGV2YXRpb24gPSBjLnJlbEVsZXZhdGlvbjtcbiAgICB0aGlzLnJlbFJvbGwgPSBjLnJlbFJvbGw7XG4gICAgdGhpcy5kb2xseWluZ1N0ZXAgPSBjLmRvbGx5aW5nU3RlcDtcbiAgICB0aGlzLmRpc3RhbmNlID0gYy5kaXN0YW5jZTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMYW5kbWFyaywgW3tcbiAgICBrZXk6IFwiZ2V0UG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UG9zaXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Rm9jYWxQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGb2NhbFBvaW50KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9jYWxQb2ludDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Um9sbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSb2xsKCkge1xuICAgICAgcmV0dXJuIHRoaXMucm9sbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmV0cmlldmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmV0cmlldmUoYykge1xuICAgICAgYy5tYXRyaXggPSBtYXQ0LmNvcHkoYy5tYXRyaXgsIHRoaXMubWF0cml4KTtcbiAgICAgIGMucmlnaHQgPSB2ZWMzLmNvcHkoYy5yaWdodCwgdGhpcy5yaWdodCk7XG4gICAgICBjLnVwID0gdmVjMy5jb3B5KGMudXAsIHRoaXMudXApO1xuICAgICAgYy5mb3J3YXJkID0gdmVjMy5jb3B5KGMuZm9yd2FyZCwgdGhpcy5mb3J3YXJkKTtcbiAgICAgIGMucG9zaXRpb24gPSB2ZWMzLmNvcHkoYy5wb3NpdGlvbiwgdGhpcy5wb3NpdGlvbik7XG4gICAgICBjLmZvY2FsUG9pbnQgPSB2ZWMzLmNvcHkoYy5mb2NhbFBvaW50LCB0aGlzLmZvY2FsUG9pbnQpO1xuICAgICAgYy5kaXN0YW5jZVZlY3RvciA9IHZlYzMuY29weShjLmRpc3RhbmNlVmVjdG9yLCB0aGlzLmRpc3RhbmNlVmVjdG9yKTtcbiAgICAgIGMuYXppbXV0aCA9IHRoaXMuYXppbXV0aDtcbiAgICAgIGMuZWxldmF0aW9uID0gdGhpcy5lbGV2YXRpb247XG4gICAgICBjLnJvbGwgPSB0aGlzLnJvbGw7XG4gICAgICBjLnJlbEF6aW11dGggPSB0aGlzLnJlbEF6aW11dGg7XG4gICAgICBjLnJlbEVsZXZhdGlvbiA9IHRoaXMucmVsRWxldmF0aW9uO1xuICAgICAgYy5yZWxSb2xsID0gdGhpcy5yZWxSb2xsO1xuICAgICAgYy5kb2xseWluZ1N0ZXAgPSB0aGlzLmRvbGx5aW5nU3RlcDtcbiAgICAgIGMuZGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBMYW5kbWFyaztcbn0oKTtcblxuZXhwb3J0IHsgTGFuZG1hcmsgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGFuZG1hcmsuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/camera/Landmark.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/geometry/Box.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/geometry/Box.js ***! \********************************************************/ /*! exports provided: Box */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Box\", function() { return Box; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! . */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\nvar primitiveUv1Padding = 4.0 / 64;\nvar primitiveUv1PaddingScale = 1.0 - primitiveUv1Padding * 2;\nvar\n/**\n * borrow from playcanvas:\n * Creates a procedural box-shaped mesh\n */\nBox = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(Box, _Geometry);\n\n var _super = _createSuper(Box);\n\n function Box() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Box);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Box, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$widthSeg = _this$config.widthSegments,\n widthSegments = _this$config$widthSeg === void 0 ? 1 : _this$config$widthSeg,\n _this$config$heightSe = _this$config.heightSegments,\n heightSegments = _this$config$heightSe === void 0 ? 1 : _this$config$heightSe,\n _this$config$depthSeg = _this$config.depthSegments,\n depthSegments = _this$config$depthSeg === void 0 ? 1 : _this$config$depthSeg,\n _this$config$halfExte = _this$config.halfExtents,\n halfExtents = _this$config$halfExte === void 0 ? gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(0.5, 0.5, 0.5) : _this$config$halfExte;\n var ws = widthSegments;\n var hs = heightSegments;\n var ds = depthSegments;\n\n var _halfExtents = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(halfExtents, 3),\n hex = _halfExtents[0],\n hey = _halfExtents[1],\n hez = _halfExtents[2];\n\n var corners = [gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, -hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, -hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, -hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, -hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, hey, -hez)];\n var faceAxes = [[0, 1, 3], // FRONT\n [4, 5, 7], // BACK\n [3, 2, 6], // TOP\n [1, 0, 4], // BOTTOM\n [1, 4, 2], // RIGHT\n [5, 0, 6] // LEFT\n ];\n var faceNormals = [[0, 0, 1], // FRONT\n [0, 0, -1], // BACK\n [0, 1, 0], // TOP\n [0, -1, 0], // BOTTOM\n [1, 0, 0], // RIGHT\n [-1, 0, 0] // LEFT\n ];\n var sides = {\n FRONT: 0,\n BACK: 1,\n TOP: 2,\n BOTTOM: 3,\n RIGHT: 4,\n LEFT: 5\n };\n var positions = [];\n var normals = [];\n var uvs = [];\n var uvs1 = [];\n var indices = [];\n var vcounter = 0;\n\n var generateFace = function generateFace(side, uSegments, vSegments) {\n var u;\n var v;\n var i;\n var j;\n\n for (i = 0; i <= uSegments; i++) {\n for (j = 0; j <= vSegments; j++) {\n var temp1 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var temp2 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var temp3 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].lerp(temp1, corners[faceAxes[side][0]], corners[faceAxes[side][1]], i / uSegments);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].lerp(temp2, corners[faceAxes[side][0]], corners[faceAxes[side][2]], j / vSegments);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].sub(temp3, temp2, corners[faceAxes[side][0]]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].add(r, temp1, temp3);\n u = i / uSegments;\n v = j / vSegments;\n positions.push(r[0], r[1], r[2]);\n normals.push(faceNormals[side][0], faceNormals[side][1], faceNormals[side][2]);\n uvs.push(u, v); // pack as 3x2\n // 1/3 will be empty, but it's either that or stretched pixels\n // TODO: generate non-rectangular lightMaps, so we could use space without stretching\n\n u /= 3;\n v /= 3;\n u = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n v = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n u += side % 3 / 3;\n v += Math.floor(side / 3) / 3;\n uvs1.push(u, v);\n\n if (i < uSegments && j < vSegments) {\n indices.push(vcounter + vSegments + 1, vcounter + 1, vcounter);\n indices.push(vcounter + vSegments + 1, vcounter + vSegments + 2, vcounter + 1);\n }\n\n vcounter++;\n }\n }\n };\n\n generateFace(sides.FRONT, ws, hs);\n generateFace(sides.BACK, ws, hs);\n generateFace(sides.TOP, ws, ds);\n generateFace(sides.BOTTOM, ws, ds);\n generateFace(sides.RIGHT, ds, hs);\n generateFace(sides.LEFT, ds, hs); // generate AABB\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = vcounter;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Box;\n}(___WEBPACK_IMPORTED_MODULE_9__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Box.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvQm94LmpzPzcxMWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0U7QUFDRTtBQUNOO0FBQ047QUFDa0M7QUFDdEI7O0FBRXBFOztBQUVBLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRW5RO0FBQzlCO0FBQ007QUFDVjtBQUM3QjtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsNERBQVU7QUFDeEIsRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELDhDQUFJO0FBQy9EO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsMkVBQWM7QUFDdkM7QUFDQTtBQUNBOztBQUVBLHFCQUFxQiw4Q0FBSSw4QkFBOEIsOENBQUksNkJBQTZCLDhDQUFJLDRCQUE0Qiw4Q0FBSSw2QkFBNkIsOENBQUksOEJBQThCLDhDQUFJLCtCQUErQiw4Q0FBSSw4QkFBOEIsOENBQUk7QUFDcFE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DLHFCQUFxQixnQkFBZ0I7QUFDckMsd0JBQXdCLDhDQUFJO0FBQzVCLHdCQUF3Qiw4Q0FBSTtBQUM1Qix3QkFBd0IsOENBQUk7QUFDNUIsb0JBQW9CLDhDQUFJO0FBQ3hCLFlBQVksOENBQUk7QUFDaEIsWUFBWSw4Q0FBSTtBQUNoQixZQUFZLDhDQUFJO0FBQ2hCLFlBQVksOENBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QyxpQkFBaUIsb0ZBQXdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRTtBQUNUO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQywwQ0FBUTtBQUNWIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L0JveC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG52YXIgX2RlYywgX2NsYXNzO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IGdlbmVyYXRlQUFCQkZyb21WZXJ0aWNlcyB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnLic7XG52YXIgcHJpbWl0aXZlVXYxUGFkZGluZyA9IDQuMCAvIDY0O1xudmFyIHByaW1pdGl2ZVV2MVBhZGRpbmdTY2FsZSA9IDEuMCAtIHByaW1pdGl2ZVV2MVBhZGRpbmcgKiAyO1xuZXhwb3J0IHZhclxuLyoqXG4gKiBib3Jyb3cgZnJvbSBwbGF5Y2FudmFzOlxuICogQ3JlYXRlcyBhIHByb2NlZHVyYWwgYm94LXNoYXBlZCBtZXNoXG4gKi9cbkJveCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0dlb21ldHJ5KSB7XG4gIF9pbmhlcml0cyhCb3gsIF9HZW9tZXRyeSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihCb3gpO1xuXG4gIGZ1bmN0aW9uIEJveCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQm94KTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhCb3gsIFt7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB2YXIgX3RoaXMkY29uZmlnID0gdGhpcy5jb25maWcsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJHdpZHRoU2VnID0gX3RoaXMkY29uZmlnLndpZHRoU2VnbWVudHMsXG4gICAgICAgICAgd2lkdGhTZWdtZW50cyA9IF90aGlzJGNvbmZpZyR3aWR0aFNlZyA9PT0gdm9pZCAwID8gMSA6IF90aGlzJGNvbmZpZyR3aWR0aFNlZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckaGVpZ2h0U2UgPSBfdGhpcyRjb25maWcuaGVpZ2h0U2VnbWVudHMsXG4gICAgICAgICAgaGVpZ2h0U2VnbWVudHMgPSBfdGhpcyRjb25maWckaGVpZ2h0U2UgPT09IHZvaWQgMCA/IDEgOiBfdGhpcyRjb25maWckaGVpZ2h0U2UsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJGRlcHRoU2VnID0gX3RoaXMkY29uZmlnLmRlcHRoU2VnbWVudHMsXG4gICAgICAgICAgZGVwdGhTZWdtZW50cyA9IF90aGlzJGNvbmZpZyRkZXB0aFNlZyA9PT0gdm9pZCAwID8gMSA6IF90aGlzJGNvbmZpZyRkZXB0aFNlZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckaGFsZkV4dGUgPSBfdGhpcyRjb25maWcuaGFsZkV4dGVudHMsXG4gICAgICAgICAgaGFsZkV4dGVudHMgPSBfdGhpcyRjb25maWckaGFsZkV4dGUgPT09IHZvaWQgMCA/IHZlYzMuZnJvbVZhbHVlcygwLjUsIDAuNSwgMC41KSA6IF90aGlzJGNvbmZpZyRoYWxmRXh0ZTtcbiAgICAgIHZhciB3cyA9IHdpZHRoU2VnbWVudHM7XG4gICAgICB2YXIgaHMgPSBoZWlnaHRTZWdtZW50cztcbiAgICAgIHZhciBkcyA9IGRlcHRoU2VnbWVudHM7XG5cbiAgICAgIHZhciBfaGFsZkV4dGVudHMgPSBfc2xpY2VkVG9BcnJheShoYWxmRXh0ZW50cywgMyksXG4gICAgICAgICAgaGV4ID0gX2hhbGZFeHRlbnRzWzBdLFxuICAgICAgICAgIGhleSA9IF9oYWxmRXh0ZW50c1sxXSxcbiAgICAgICAgICBoZXogPSBfaGFsZkV4dGVudHNbMl07XG5cbiAgICAgIHZhciBjb3JuZXJzID0gW3ZlYzMuZnJvbVZhbHVlcygtaGV4LCAtaGV5LCBoZXopLCB2ZWMzLmZyb21WYWx1ZXMoaGV4LCAtaGV5LCBoZXopLCB2ZWMzLmZyb21WYWx1ZXMoaGV4LCBoZXksIGhleiksIHZlYzMuZnJvbVZhbHVlcygtaGV4LCBoZXksIGhleiksIHZlYzMuZnJvbVZhbHVlcyhoZXgsIC1oZXksIC1oZXopLCB2ZWMzLmZyb21WYWx1ZXMoLWhleCwgLWhleSwgLWhleiksIHZlYzMuZnJvbVZhbHVlcygtaGV4LCBoZXksIC1oZXopLCB2ZWMzLmZyb21WYWx1ZXMoaGV4LCBoZXksIC1oZXopXTtcbiAgICAgIHZhciBmYWNlQXhlcyA9IFtbMCwgMSwgM10sIC8vIEZST05UXG4gICAgICBbNCwgNSwgN10sIC8vIEJBQ0tcbiAgICAgIFszLCAyLCA2XSwgLy8gVE9QXG4gICAgICBbMSwgMCwgNF0sIC8vIEJPVFRPTVxuICAgICAgWzEsIDQsIDJdLCAvLyBSSUdIVFxuICAgICAgWzUsIDAsIDZdIC8vIExFRlRcbiAgICAgIF07XG4gICAgICB2YXIgZmFjZU5vcm1hbHMgPSBbWzAsIDAsIDFdLCAvLyBGUk9OVFxuICAgICAgWzAsIDAsIC0xXSwgLy8gQkFDS1xuICAgICAgWzAsIDEsIDBdLCAvLyBUT1BcbiAgICAgIFswLCAtMSwgMF0sIC8vIEJPVFRPTVxuICAgICAgWzEsIDAsIDBdLCAvLyBSSUdIVFxuICAgICAgWy0xLCAwLCAwXSAvLyBMRUZUXG4gICAgICBdO1xuICAgICAgdmFyIHNpZGVzID0ge1xuICAgICAgICBGUk9OVDogMCxcbiAgICAgICAgQkFDSzogMSxcbiAgICAgICAgVE9QOiAyLFxuICAgICAgICBCT1RUT006IDMsXG4gICAgICAgIFJJR0hUOiA0LFxuICAgICAgICBMRUZUOiA1XG4gICAgICB9O1xuICAgICAgdmFyIHBvc2l0aW9ucyA9IFtdO1xuICAgICAgdmFyIG5vcm1hbHMgPSBbXTtcbiAgICAgIHZhciB1dnMgPSBbXTtcbiAgICAgIHZhciB1dnMxID0gW107XG4gICAgICB2YXIgaW5kaWNlcyA9IFtdO1xuICAgICAgdmFyIHZjb3VudGVyID0gMDtcblxuICAgICAgdmFyIGdlbmVyYXRlRmFjZSA9IGZ1bmN0aW9uIGdlbmVyYXRlRmFjZShzaWRlLCB1U2VnbWVudHMsIHZTZWdtZW50cykge1xuICAgICAgICB2YXIgdTtcbiAgICAgICAgdmFyIHY7XG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgajtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IHVTZWdtZW50czsgaSsrKSB7XG4gICAgICAgICAgZm9yIChqID0gMDsgaiA8PSB2U2VnbWVudHM7IGorKykge1xuICAgICAgICAgICAgdmFyIHRlbXAxID0gdmVjMy5jcmVhdGUoKTtcbiAgICAgICAgICAgIHZhciB0ZW1wMiA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICAgICAgICB2YXIgdGVtcDMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgICAgICAgdmFyIHIgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgICAgICAgdmVjMy5sZXJwKHRlbXAxLCBjb3JuZXJzW2ZhY2VBeGVzW3NpZGVdWzBdXSwgY29ybmVyc1tmYWNlQXhlc1tzaWRlXVsxXV0sIGkgLyB1U2VnbWVudHMpO1xuICAgICAgICAgICAgdmVjMy5sZXJwKHRlbXAyLCBjb3JuZXJzW2ZhY2VBeGVzW3NpZGVdWzBdXSwgY29ybmVyc1tmYWNlQXhlc1tzaWRlXVsyXV0sIGogLyB2U2VnbWVudHMpO1xuICAgICAgICAgICAgdmVjMy5zdWIodGVtcDMsIHRlbXAyLCBjb3JuZXJzW2ZhY2VBeGVzW3NpZGVdWzBdXSk7XG4gICAgICAgICAgICB2ZWMzLmFkZChyLCB0ZW1wMSwgdGVtcDMpO1xuICAgICAgICAgICAgdSA9IGkgLyB1U2VnbWVudHM7XG4gICAgICAgICAgICB2ID0gaiAvIHZTZWdtZW50cztcbiAgICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKHJbMF0sIHJbMV0sIHJbMl0pO1xuICAgICAgICAgICAgbm9ybWFscy5wdXNoKGZhY2VOb3JtYWxzW3NpZGVdWzBdLCBmYWNlTm9ybWFsc1tzaWRlXVsxXSwgZmFjZU5vcm1hbHNbc2lkZV1bMl0pO1xuICAgICAgICAgICAgdXZzLnB1c2godSwgdik7IC8vIHBhY2sgYXMgM3gyXG4gICAgICAgICAgICAvLyAxLzMgd2lsbCBiZSBlbXB0eSwgYnV0IGl0J3MgZWl0aGVyIHRoYXQgb3Igc3RyZXRjaGVkIHBpeGVsc1xuICAgICAgICAgICAgLy8gVE9ETzogZ2VuZXJhdGUgbm9uLXJlY3Rhbmd1bGFyIGxpZ2h0TWFwcywgc28gd2UgY291bGQgdXNlIHNwYWNlIHdpdGhvdXQgc3RyZXRjaGluZ1xuXG4gICAgICAgICAgICB1IC89IDM7XG4gICAgICAgICAgICB2IC89IDM7XG4gICAgICAgICAgICB1ID0gdSAqIHByaW1pdGl2ZVV2MVBhZGRpbmdTY2FsZSArIHByaW1pdGl2ZVV2MVBhZGRpbmc7XG4gICAgICAgICAgICB2ID0gdiAqIHByaW1pdGl2ZVV2MVBhZGRpbmdTY2FsZSArIHByaW1pdGl2ZVV2MVBhZGRpbmc7XG4gICAgICAgICAgICB1ICs9IHNpZGUgJSAzIC8gMztcbiAgICAgICAgICAgIHYgKz0gTWF0aC5mbG9vcihzaWRlIC8gMykgLyAzO1xuICAgICAgICAgICAgdXZzMS5wdXNoKHUsIHYpO1xuXG4gICAgICAgICAgICBpZiAoaSA8IHVTZWdtZW50cyAmJiBqIDwgdlNlZ21lbnRzKSB7XG4gICAgICAgICAgICAgIGluZGljZXMucHVzaCh2Y291bnRlciArIHZTZWdtZW50cyArIDEsIHZjb3VudGVyICsgMSwgdmNvdW50ZXIpO1xuICAgICAgICAgICAgICBpbmRpY2VzLnB1c2godmNvdW50ZXIgKyB2U2VnbWVudHMgKyAxLCB2Y291bnRlciArIHZTZWdtZW50cyArIDIsIHZjb3VudGVyICsgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZjb3VudGVyKys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBnZW5lcmF0ZUZhY2Uoc2lkZXMuRlJPTlQsIHdzLCBocyk7XG4gICAgICBnZW5lcmF0ZUZhY2Uoc2lkZXMuQkFDSywgd3MsIGhzKTtcbiAgICAgIGdlbmVyYXRlRmFjZShzaWRlcy5UT1AsIHdzLCBkcyk7XG4gICAgICBnZW5lcmF0ZUZhY2Uoc2lkZXMuQk9UVE9NLCB3cywgZHMpO1xuICAgICAgZ2VuZXJhdGVGYWNlKHNpZGVzLlJJR0hULCBkcywgaHMpO1xuICAgICAgZ2VuZXJhdGVGYWNlKHNpZGVzLkxFRlQsIGRzLCBocyk7IC8vIGdlbmVyYXRlIEFBQkJcblxuICAgICAgdmFyIGFhYmIgPSBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMocG9zaXRpb25zKTtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudCgpO1xuICAgICAgY29tcG9uZW50LmluZGljZXMgPSBVaW50MzJBcnJheS5mcm9tKGluZGljZXMpO1xuICAgICAgY29tcG9uZW50LmFhYmIgPSBhYWJiO1xuICAgICAgY29tcG9uZW50LnZlcnRleENvdW50ID0gdmNvdW50ZXI7XG4gICAgICBjb21wb25lbnQuYXR0cmlidXRlcyA9IFt7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAncG9zaXRpb24nLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbShwb3NpdGlvbnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ25vcm1hbCcsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKG5vcm1hbHMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMSxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ3V2JyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20odXZzKSxcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDIsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgfV1cbiAgICAgIH1dOyAvLyBUT0RPOiBiYXJ5Y2VudHJpYyAmIHRhbmdlbnRcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQm94O1xufShHZW9tZXRyeSkpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Cb3guanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/geometry/Box.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/geometry/Merged.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/geometry/Merged.js ***! \***********************************************************/ /*! exports provided: Merged */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Merged\", function() { return Merged; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! . */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/is-number */ \"./node_modules/@antv/g-webgpu/es/utils/is-number.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/is-typedarray */ \"./node_modules/@antv/g-webgpu/es/utils/is-typedarray.js\");\n/* harmony import */ var _utils_typedarray__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/typedarray */ \"./node_modules/@antv/g-webgpu/es/utils/typedarray.js\");\n\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\nvar\n/**\n * merge many geometries into one, use a batch of draw calls\n */\nMerged = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(Merged, _Geometry);\n\n var _super = _createSuper(Merged);\n\n function Merged() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Merged);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Merged, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config$geometri = this.config.geometries,\n geometries = _this$config$geometri === void 0 ? [] : _this$config$geometri;\n var mergedComponent = this.getComponent();\n mergedComponent.aabb = new _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"AABB\"]();\n var mergedAttributes = [];\n var mergedIndices = [];\n var indexOffset = 0;\n geometries.forEach(function (geometry) {\n var aabb = geometry.aabb,\n indices = geometry.indices,\n vertexCount = geometry.vertexCount,\n attributes = geometry.attributes; // merge aabb\n\n mergedComponent.aabb.add(aabb);\n mergedComponent.vertexCount += vertexCount; // merge indices\n\n if (indices) {\n mergedIndices.push.apply(mergedIndices, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(indices.map(function (index) {\n return index + indexOffset;\n })));\n }\n\n indexOffset += vertexCount; // merge attributes\n\n attributes.forEach(function (attribute, i) {\n if (!mergedAttributes[i]) {\n mergedAttributes[i] = attribute;\n mergedAttributes[i].dirty = true;\n } else {\n if (attribute.data) {\n if (Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_9__[\"isNumber\"])(attribute.data)) {\n // @ts-ignore\n mergedAttributes[i].push(attribute.data);\n } else if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_10__[\"isTypedArray\"])(attribute.data)) {\n // @ts-ignore\n mergedAttributes[i].data = Object(_utils_typedarray__WEBPACK_IMPORTED_MODULE_11__[\"merge\"])( // @ts-ignore\n mergedAttributes[i].data, attribute.data);\n } else {\n // @ts-ignore\n mergedAttributes[i].data = mergedAttributes[i].data.concat(attribute.data);\n }\n }\n }\n });\n });\n mergedComponent.attributes = mergedAttributes;\n mergedComponent.indices = Uint32Array.from(mergedIndices);\n mergedComponent.dirty = true;\n }\n }]);\n\n return Merged;\n}(___WEBPACK_IMPORTED_MODULE_8__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Merged.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvTWVyZ2VkLmpzP2Y1MTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBFO0FBQ047QUFDTjtBQUNOO0FBQ2tDO0FBQ3RCOztBQUVwRTs7QUFFQSxnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUV2UjtBQUNKO0FBQ1Y7QUFDaUI7QUFDUTtBQUNWO0FBQ3JDO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDREQUFVO0FBQzNCLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHdEQUFJO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBLG1EQUFtRDs7QUFFbkQ7QUFDQSxrREFBa0QsK0VBQWtCO0FBQ3BFO0FBQ0EsV0FBVztBQUNYOztBQUVBLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxrQkFBa0IsaUVBQVE7QUFDMUI7QUFDQTtBQUNBLGVBQWUsVUFBVSwwRUFBWTtBQUNyQztBQUNBLDJDQUEyQyxnRUFBSztBQUNoRDtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMENBQVE7QUFDViIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy9nZW9tZXRyeS9NZXJnZWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3RvQ29uc3VtYWJsZUFycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG52YXIgX2RlYywgX2NsYXNzO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IEFBQkIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICcuJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbHMvaXMtbnVtYmVyJztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4uL3V0aWxzL2lzLXR5cGVkYXJyYXknO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICcuLi91dGlscy90eXBlZGFycmF5JztcbmV4cG9ydCB2YXJcbi8qKlxuICogbWVyZ2UgbWFueSBnZW9tZXRyaWVzIGludG8gb25lLCB1c2UgYSBiYXRjaCBvZiBkcmF3IGNhbGxzXG4gKi9cbk1lcmdlZCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0dlb21ldHJ5KSB7XG4gIF9pbmhlcml0cyhNZXJnZWQsIF9HZW9tZXRyeSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihNZXJnZWQpO1xuXG4gIGZ1bmN0aW9uIE1lcmdlZCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWVyZ2VkKTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhNZXJnZWQsIFt7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB2YXIgX3RoaXMkY29uZmlnJGdlb21ldHJpID0gdGhpcy5jb25maWcuZ2VvbWV0cmllcyxcbiAgICAgICAgICBnZW9tZXRyaWVzID0gX3RoaXMkY29uZmlnJGdlb21ldHJpID09PSB2b2lkIDAgPyBbXSA6IF90aGlzJGNvbmZpZyRnZW9tZXRyaTtcbiAgICAgIHZhciBtZXJnZWRDb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudCgpO1xuICAgICAgbWVyZ2VkQ29tcG9uZW50LmFhYmIgPSBuZXcgQUFCQigpO1xuICAgICAgdmFyIG1lcmdlZEF0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHZhciBtZXJnZWRJbmRpY2VzID0gW107XG4gICAgICB2YXIgaW5kZXhPZmZzZXQgPSAwO1xuICAgICAgZ2VvbWV0cmllcy5mb3JFYWNoKGZ1bmN0aW9uIChnZW9tZXRyeSkge1xuICAgICAgICB2YXIgYWFiYiA9IGdlb21ldHJ5LmFhYmIsXG4gICAgICAgICAgICBpbmRpY2VzID0gZ2VvbWV0cnkuaW5kaWNlcyxcbiAgICAgICAgICAgIHZlcnRleENvdW50ID0gZ2VvbWV0cnkudmVydGV4Q291bnQsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzID0gZ2VvbWV0cnkuYXR0cmlidXRlczsgLy8gbWVyZ2UgYWFiYlxuXG4gICAgICAgIG1lcmdlZENvbXBvbmVudC5hYWJiLmFkZChhYWJiKTtcbiAgICAgICAgbWVyZ2VkQ29tcG9uZW50LnZlcnRleENvdW50ICs9IHZlcnRleENvdW50OyAvLyBtZXJnZSBpbmRpY2VzXG5cbiAgICAgICAgaWYgKGluZGljZXMpIHtcbiAgICAgICAgICBtZXJnZWRJbmRpY2VzLnB1c2guYXBwbHkobWVyZ2VkSW5kaWNlcywgX3RvQ29uc3VtYWJsZUFycmF5KGluZGljZXMubWFwKGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIGluZGV4ICsgaW5kZXhPZmZzZXQ7XG4gICAgICAgICAgfSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluZGV4T2Zmc2V0ICs9IHZlcnRleENvdW50OyAvLyBtZXJnZSBhdHRyaWJ1dGVzXG5cbiAgICAgICAgYXR0cmlidXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUsIGkpIHtcbiAgICAgICAgICBpZiAoIW1lcmdlZEF0dHJpYnV0ZXNbaV0pIHtcbiAgICAgICAgICAgIG1lcmdlZEF0dHJpYnV0ZXNbaV0gPSBhdHRyaWJ1dGU7XG4gICAgICAgICAgICBtZXJnZWRBdHRyaWJ1dGVzW2ldLmRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZS5kYXRhKSB7XG4gICAgICAgICAgICAgIGlmIChpc051bWJlcihhdHRyaWJ1dGUuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1tpXS5wdXNoKGF0dHJpYnV0ZS5kYXRhKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1R5cGVkQXJyYXkoYXR0cmlidXRlLmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIG1lcmdlZEF0dHJpYnV0ZXNbaV0uZGF0YSA9IG1lcmdlKCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1tpXS5kYXRhLCBhdHRyaWJ1dGUuZGF0YSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIG1lcmdlZEF0dHJpYnV0ZXNbaV0uZGF0YSA9IG1lcmdlZEF0dHJpYnV0ZXNbaV0uZGF0YS5jb25jYXQoYXR0cmlidXRlLmRhdGEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgbWVyZ2VkQ29tcG9uZW50LmF0dHJpYnV0ZXMgPSBtZXJnZWRBdHRyaWJ1dGVzO1xuICAgICAgbWVyZ2VkQ29tcG9uZW50LmluZGljZXMgPSBVaW50MzJBcnJheS5mcm9tKG1lcmdlZEluZGljZXMpO1xuICAgICAgbWVyZ2VkQ29tcG9uZW50LmRpcnR5ID0gdHJ1ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWVyZ2VkO1xufShHZW9tZXRyeSkpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NZXJnZWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/geometry/Merged.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/geometry/Plane.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/geometry/Plane.js ***! \**********************************************************/ /*! exports provided: Plane */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return Plane; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! . */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar\n/**\n * borrow from playcanvas\n */\nPlane = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Plane, _Geometry);\n\n var _super = _createSuper(Plane);\n\n function Plane() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Plane);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Plane, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$halfExte = _this$config.halfExtents,\n halfExtents = _this$config$halfExte === void 0 ? [0.5, 0.5] : _this$config$halfExte,\n _this$config$widthSeg = _this$config.widthSegments,\n widthSegments = _this$config$widthSeg === void 0 ? 5 : _this$config$widthSeg,\n _this$config$lengthSe = _this$config.lengthSegments,\n lengthSegments = _this$config$lengthSe === void 0 ? 5 : _this$config$lengthSe;\n var positions = [];\n var normals = [];\n var uvs = [];\n var indices = [];\n var vcounter = 0;\n\n for (var i = 0; i <= widthSegments; i++) {\n for (var j = 0; j <= lengthSegments; j++) {\n var x = -halfExtents[0] + 2.0 * halfExtents[0] * i / widthSegments;\n var y = 0.0;\n var z = -(-halfExtents[1] + 2.0 * halfExtents[1] * j / lengthSegments);\n var u = i / widthSegments;\n var v = j / lengthSegments;\n positions.push(x, y, z);\n normals.push(0.0, 1.0, 0.0);\n uvs.push(u, v);\n\n if (i < widthSegments && j < lengthSegments) {\n indices.push(vcounter + lengthSegments + 1, vcounter + 1, vcounter);\n indices.push(vcounter + lengthSegments + 1, vcounter + lengthSegments + 2, vcounter + 1);\n }\n\n vcounter++;\n }\n } // generate AABB\n\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = vcounter;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Plane;\n}(___WEBPACK_IMPORTED_MODULE_7__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Plane.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvUGxhbmUuanM/NDA5ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQ047QUFDa0M7QUFDdEI7O0FBRXBFOztBQUVBLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRW5RO0FBQ3hCO0FBQ1Y7QUFDdEI7QUFDUDtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNERBQVU7QUFDMUIsRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLG9CQUFvQjtBQUN6Qyx1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQLGlCQUFpQixvRkFBd0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTyxFQUFFO0FBQ1Q7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLDBDQUFRO0FBQ1YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvUGxhbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG52YXIgX2RlYywgX2NsYXNzO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IGdlbmVyYXRlQUFCQkZyb21WZXJ0aWNlcyB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJy4nO1xuZXhwb3J0IHZhclxuLyoqXG4gKiBib3Jyb3cgZnJvbSBwbGF5Y2FudmFzXG4gKi9cblBsYW5lID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfR2VvbWV0cnkpIHtcbiAgX2luaGVyaXRzKFBsYW5lLCBfR2VvbWV0cnkpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoUGxhbmUpO1xuXG4gIGZ1bmN0aW9uIFBsYW5lKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQbGFuZSk7XG5cbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUGxhbmUsIFt7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB2YXIgX3RoaXMkY29uZmlnID0gdGhpcy5jb25maWcsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJGhhbGZFeHRlID0gX3RoaXMkY29uZmlnLmhhbGZFeHRlbnRzLFxuICAgICAgICAgIGhhbGZFeHRlbnRzID0gX3RoaXMkY29uZmlnJGhhbGZFeHRlID09PSB2b2lkIDAgPyBbMC41LCAwLjVdIDogX3RoaXMkY29uZmlnJGhhbGZFeHRlLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyR3aWR0aFNlZyA9IF90aGlzJGNvbmZpZy53aWR0aFNlZ21lbnRzLFxuICAgICAgICAgIHdpZHRoU2VnbWVudHMgPSBfdGhpcyRjb25maWckd2lkdGhTZWcgPT09IHZvaWQgMCA/IDUgOiBfdGhpcyRjb25maWckd2lkdGhTZWcsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJGxlbmd0aFNlID0gX3RoaXMkY29uZmlnLmxlbmd0aFNlZ21lbnRzLFxuICAgICAgICAgIGxlbmd0aFNlZ21lbnRzID0gX3RoaXMkY29uZmlnJGxlbmd0aFNlID09PSB2b2lkIDAgPyA1IDogX3RoaXMkY29uZmlnJGxlbmd0aFNlO1xuICAgICAgdmFyIHBvc2l0aW9ucyA9IFtdO1xuICAgICAgdmFyIG5vcm1hbHMgPSBbXTtcbiAgICAgIHZhciB1dnMgPSBbXTtcbiAgICAgIHZhciBpbmRpY2VzID0gW107XG4gICAgICB2YXIgdmNvdW50ZXIgPSAwO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSB3aWR0aFNlZ21lbnRzOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPD0gbGVuZ3RoU2VnbWVudHM7IGorKykge1xuICAgICAgICAgIHZhciB4ID0gLWhhbGZFeHRlbnRzWzBdICsgMi4wICogaGFsZkV4dGVudHNbMF0gKiBpIC8gd2lkdGhTZWdtZW50cztcbiAgICAgICAgICB2YXIgeSA9IDAuMDtcbiAgICAgICAgICB2YXIgeiA9IC0oLWhhbGZFeHRlbnRzWzFdICsgMi4wICogaGFsZkV4dGVudHNbMV0gKiBqIC8gbGVuZ3RoU2VnbWVudHMpO1xuICAgICAgICAgIHZhciB1ID0gaSAvIHdpZHRoU2VnbWVudHM7XG4gICAgICAgICAgdmFyIHYgPSBqIC8gbGVuZ3RoU2VnbWVudHM7XG4gICAgICAgICAgcG9zaXRpb25zLnB1c2goeCwgeSwgeik7XG4gICAgICAgICAgbm9ybWFscy5wdXNoKDAuMCwgMS4wLCAwLjApO1xuICAgICAgICAgIHV2cy5wdXNoKHUsIHYpO1xuXG4gICAgICAgICAgaWYgKGkgPCB3aWR0aFNlZ21lbnRzICYmIGogPCBsZW5ndGhTZWdtZW50cykge1xuICAgICAgICAgICAgaW5kaWNlcy5wdXNoKHZjb3VudGVyICsgbGVuZ3RoU2VnbWVudHMgKyAxLCB2Y291bnRlciArIDEsIHZjb3VudGVyKTtcbiAgICAgICAgICAgIGluZGljZXMucHVzaCh2Y291bnRlciArIGxlbmd0aFNlZ21lbnRzICsgMSwgdmNvdW50ZXIgKyBsZW5ndGhTZWdtZW50cyArIDIsIHZjb3VudGVyICsgMSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmNvdW50ZXIrKztcbiAgICAgICAgfVxuICAgICAgfSAvLyBnZW5lcmF0ZSBBQUJCXG5cblxuICAgICAgdmFyIGFhYmIgPSBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMocG9zaXRpb25zKTtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudCgpO1xuICAgICAgY29tcG9uZW50LmluZGljZXMgPSBVaW50MzJBcnJheS5mcm9tKGluZGljZXMpO1xuICAgICAgY29tcG9uZW50LmFhYmIgPSBhYWJiO1xuICAgICAgY29tcG9uZW50LnZlcnRleENvdW50ID0gdmNvdW50ZXI7XG4gICAgICBjb21wb25lbnQuYXR0cmlidXRlcyA9IFt7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAncG9zaXRpb24nLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbShwb3NpdGlvbnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ25vcm1hbCcsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKG5vcm1hbHMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMSxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ3V2JyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20odXZzKSxcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDIsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgfV1cbiAgICAgIH1dOyAvLyBUT0RPOiBiYXJ5Y2VudHJpYyAmIHRhbmdlbnRcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGxhbmU7XG59KEdlb21ldHJ5KSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBsYW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/geometry/Plane.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/geometry/Sphere.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/geometry/Sphere.js ***! \***********************************************************/ /*! exports provided: Sphere */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sphere\", function() { return Sphere; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! . */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar\n/**\n * borrow from playcanvas\n */\nSphere = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Sphere, _Geometry);\n\n var _super = _createSuper(Sphere);\n\n function Sphere() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Sphere);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Sphere, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$radius = _this$config.radius,\n radius = _this$config$radius === void 0 ? 0.5 : _this$config$radius,\n _this$config$latitude = _this$config.latitudeBands,\n latitudeBands = _this$config$latitude === void 0 ? 16 : _this$config$latitude,\n _this$config$longitud = _this$config.longitudeBands,\n longitudeBands = _this$config$longitud === void 0 ? 16 : _this$config$longitud;\n var positions = [];\n var normals = [];\n var uvs = [];\n var indices = [];\n\n for (var lat = 0; lat <= latitudeBands; lat++) {\n var theta = lat * Math.PI / latitudeBands;\n var sinTheta = Math.sin(theta);\n var cosTheta = Math.cos(theta);\n\n for (var lon = 0; lon <= longitudeBands; lon++) {\n // Sweep the sphere from the positive Z axis to match a 3DS Max sphere\n var phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2.0;\n var sinPhi = Math.sin(phi);\n var cosPhi = Math.cos(phi);\n var x = cosPhi * sinTheta;\n var y = cosTheta;\n var z = sinPhi * sinTheta;\n var u = 1.0 - lon / longitudeBands;\n var v = 1.0 - lat / latitudeBands;\n positions.push(x * radius, y * radius, z * radius);\n normals.push(x, y, z);\n uvs.push(u, v);\n }\n }\n\n for (var _lat = 0; _lat < latitudeBands; ++_lat) {\n for (var _lon = 0; _lon < longitudeBands; ++_lon) {\n var first = _lat * (longitudeBands + 1) + _lon;\n var second = first + longitudeBands + 1;\n indices.push(first + 1, second, first);\n indices.push(first + 1, second + 1, second);\n }\n } // generate AABB\n\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = positions.length / 3;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Sphere;\n}(___WEBPACK_IMPORTED_MODULE_7__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Sphere.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvU3BoZXJlLmpzPzE0YjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNOO0FBQ2tDO0FBQ3RCOztBQUVwRTs7QUFFQSxnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVuUTtBQUN4QjtBQUNWO0FBQ3RCO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDREQUFVO0FBQzNCLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0JBQXNCO0FBQzdDO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsdUJBQXVCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLHNCQUFzQjtBQUM5QywwQkFBMEIsdUJBQXVCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUCxpQkFBaUIsb0ZBQXdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRTtBQUNUO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQywwQ0FBUTtBQUNWIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L1NwaGVyZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbnZhciBfZGVjLCBfY2xhc3M7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnLic7XG5leHBvcnQgdmFyXG4vKipcbiAqIGJvcnJvdyBmcm9tIHBsYXljYW52YXNcbiAqL1xuU3BoZXJlID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfR2VvbWV0cnkpIHtcbiAgX2luaGVyaXRzKFNwaGVyZSwgX0dlb21ldHJ5KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNwaGVyZSk7XG5cbiAgZnVuY3Rpb24gU3BoZXJlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTcGhlcmUpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFNwaGVyZSwgW3tcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBfdGhpcyRjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckcmFkaXVzID0gX3RoaXMkY29uZmlnLnJhZGl1cyxcbiAgICAgICAgICByYWRpdXMgPSBfdGhpcyRjb25maWckcmFkaXVzID09PSB2b2lkIDAgPyAwLjUgOiBfdGhpcyRjb25maWckcmFkaXVzLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyRsYXRpdHVkZSA9IF90aGlzJGNvbmZpZy5sYXRpdHVkZUJhbmRzLFxuICAgICAgICAgIGxhdGl0dWRlQmFuZHMgPSBfdGhpcyRjb25maWckbGF0aXR1ZGUgPT09IHZvaWQgMCA/IDE2IDogX3RoaXMkY29uZmlnJGxhdGl0dWRlLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyRsb25naXR1ZCA9IF90aGlzJGNvbmZpZy5sb25naXR1ZGVCYW5kcyxcbiAgICAgICAgICBsb25naXR1ZGVCYW5kcyA9IF90aGlzJGNvbmZpZyRsb25naXR1ZCA9PT0gdm9pZCAwID8gMTYgOiBfdGhpcyRjb25maWckbG9uZ2l0dWQ7XG4gICAgICB2YXIgcG9zaXRpb25zID0gW107XG4gICAgICB2YXIgbm9ybWFscyA9IFtdO1xuICAgICAgdmFyIHV2cyA9IFtdO1xuICAgICAgdmFyIGluZGljZXMgPSBbXTtcblxuICAgICAgZm9yICh2YXIgbGF0ID0gMDsgbGF0IDw9IGxhdGl0dWRlQmFuZHM7IGxhdCsrKSB7XG4gICAgICAgIHZhciB0aGV0YSA9IGxhdCAqIE1hdGguUEkgLyBsYXRpdHVkZUJhbmRzO1xuICAgICAgICB2YXIgc2luVGhldGEgPSBNYXRoLnNpbih0aGV0YSk7XG4gICAgICAgIHZhciBjb3NUaGV0YSA9IE1hdGguY29zKHRoZXRhKTtcblxuICAgICAgICBmb3IgKHZhciBsb24gPSAwOyBsb24gPD0gbG9uZ2l0dWRlQmFuZHM7IGxvbisrKSB7XG4gICAgICAgICAgLy8gU3dlZXAgdGhlIHNwaGVyZSBmcm9tIHRoZSBwb3NpdGl2ZSBaIGF4aXMgdG8gbWF0Y2ggYSAzRFMgTWF4IHNwaGVyZVxuICAgICAgICAgIHZhciBwaGkgPSBsb24gKiAyICogTWF0aC5QSSAvIGxvbmdpdHVkZUJhbmRzIC0gTWF0aC5QSSAvIDIuMDtcbiAgICAgICAgICB2YXIgc2luUGhpID0gTWF0aC5zaW4ocGhpKTtcbiAgICAgICAgICB2YXIgY29zUGhpID0gTWF0aC5jb3MocGhpKTtcbiAgICAgICAgICB2YXIgeCA9IGNvc1BoaSAqIHNpblRoZXRhO1xuICAgICAgICAgIHZhciB5ID0gY29zVGhldGE7XG4gICAgICAgICAgdmFyIHogPSBzaW5QaGkgKiBzaW5UaGV0YTtcbiAgICAgICAgICB2YXIgdSA9IDEuMCAtIGxvbiAvIGxvbmdpdHVkZUJhbmRzO1xuICAgICAgICAgIHZhciB2ID0gMS4wIC0gbGF0IC8gbGF0aXR1ZGVCYW5kcztcbiAgICAgICAgICBwb3NpdGlvbnMucHVzaCh4ICogcmFkaXVzLCB5ICogcmFkaXVzLCB6ICogcmFkaXVzKTtcbiAgICAgICAgICBub3JtYWxzLnB1c2goeCwgeSwgeik7XG4gICAgICAgICAgdXZzLnB1c2godSwgdik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgX2xhdCA9IDA7IF9sYXQgPCBsYXRpdHVkZUJhbmRzOyArK19sYXQpIHtcbiAgICAgICAgZm9yICh2YXIgX2xvbiA9IDA7IF9sb24gPCBsb25naXR1ZGVCYW5kczsgKytfbG9uKSB7XG4gICAgICAgICAgdmFyIGZpcnN0ID0gX2xhdCAqIChsb25naXR1ZGVCYW5kcyArIDEpICsgX2xvbjtcbiAgICAgICAgICB2YXIgc2Vjb25kID0gZmlyc3QgKyBsb25naXR1ZGVCYW5kcyArIDE7XG4gICAgICAgICAgaW5kaWNlcy5wdXNoKGZpcnN0ICsgMSwgc2Vjb25kLCBmaXJzdCk7XG4gICAgICAgICAgaW5kaWNlcy5wdXNoKGZpcnN0ICsgMSwgc2Vjb25kICsgMSwgc2Vjb25kKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBnZW5lcmF0ZSBBQUJCXG5cblxuICAgICAgdmFyIGFhYmIgPSBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMocG9zaXRpb25zKTtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudCgpO1xuICAgICAgY29tcG9uZW50LmluZGljZXMgPSBVaW50MzJBcnJheS5mcm9tKGluZGljZXMpO1xuICAgICAgY29tcG9uZW50LmFhYmIgPSBhYWJiO1xuICAgICAgY29tcG9uZW50LnZlcnRleENvdW50ID0gcG9zaXRpb25zLmxlbmd0aCAvIDM7XG4gICAgICBjb21wb25lbnQuYXR0cmlidXRlcyA9IFt7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAncG9zaXRpb24nLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbShwb3NpdGlvbnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ25vcm1hbCcsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKG5vcm1hbHMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMSxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQzJ1xuICAgICAgICB9XVxuICAgICAgfSwge1xuICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ3V2JyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20odXZzKSxcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDIsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgfV1cbiAgICAgIH1dOyAvLyBUT0RPOiBiYXJ5Y2VudHJpYyAmIHRhbmdlbnRcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3BoZXJlO1xufShHZW9tZXRyeSkpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TcGhlcmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/geometry/Sphere.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/geometry/index.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/geometry/index.js ***! \**********************************************************/ /*! exports provided: Geometry */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Geometry\", function() { return Geometry; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\nvar Geometry = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].GeometryComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Geometry() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Geometry);\n\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"geometry\", _descriptor, this);\n\n this.entity = void 0;\n this.component = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Geometry, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getComponent\",\n value: function getComponent() {\n return this.component;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity) {\n this.entity = entity;\n this.component = this.geometry.create(entity);\n this.component.entity = entity;\n this.onEntityCreated();\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }]);\n\n return Geometry;\n}(), _class3.BOX = 'box', _class3.SPHERE = 'sphere', _class3.PLANE = 'plane', _class3.MERGED = 'merged', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"geometry\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvaW5kZXguanM/ZmZhNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFaUQ7QUFDRjtBQUN4Qyx1QkFBdUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLDhEQUFVO0FBQ3JFO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7O0FBRUEsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywrSEFBK0gsc0ZBQXlCO0FBQ3pKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2NsYXNzMywgX3RlbXA7XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIEdlb21ldHJ5ID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuR2VvbWV0cnlDb21wb25lbnRNYW5hZ2VyKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHZW9tZXRyeSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2VvbWV0cnkpO1xuXG4gICAgdGhpcy5jb25maWcgPSB2b2lkIDA7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImdlb21ldHJ5XCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIHRoaXMuZW50aXR5ID0gdm9pZCAwO1xuICAgIHRoaXMuY29tcG9uZW50ID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEdlb21ldHJ5LCBbe1xuICAgIGtleTogXCJnZXRFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RW50aXR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZW50aXR5O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb21wb25lbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29tcG9uZW50KCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRDb25maWdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q29uZmlnKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRFbnRpdHkoZW50aXR5KSB7XG4gICAgICB0aGlzLmVudGl0eSA9IGVudGl0eTtcbiAgICAgIHRoaXMuY29tcG9uZW50ID0gdGhpcy5nZW9tZXRyeS5jcmVhdGUoZW50aXR5KTtcbiAgICAgIHRoaXMuY29tcG9uZW50LmVudGl0eSA9IGVudGl0eTtcbiAgICAgIHRoaXMub25FbnRpdHlDcmVhdGVkKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7Ly9cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gR2VvbWV0cnk7XG59KCksIF9jbGFzczMuQk9YID0gJ2JveCcsIF9jbGFzczMuU1BIRVJFID0gJ3NwaGVyZScsIF9jbGFzczMuUExBTkUgPSAncGxhbmUnLCBfY2xhc3MzLk1FUkdFRCA9ICdtZXJnZWQnLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/geometry/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/index.js": /*!*************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/index.js ***! \*************************************************/ /*! exports provided: World, Kernel, Camera, Renderable, Geometry, Material */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _camera_Camera__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./camera/Camera */ \"./node_modules/@antv/g-webgpu/es/camera/Camera.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Camera\", function() { return _camera_Camera__WEBPACK_IMPORTED_MODULE_0__[\"Camera\"]; });\n\n/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./geometry */ \"./node_modules/@antv/g-webgpu/es/geometry/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Geometry\", function() { return _geometry__WEBPACK_IMPORTED_MODULE_1__[\"Geometry\"]; });\n\n/* harmony import */ var _Kernel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Kernel */ \"./node_modules/@antv/g-webgpu/es/Kernel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Kernel\", function() { return _Kernel__WEBPACK_IMPORTED_MODULE_2__[\"Kernel\"]; });\n\n/* harmony import */ var _material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./material */ \"./node_modules/@antv/g-webgpu/es/material/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Material\", function() { return _material__WEBPACK_IMPORTED_MODULE_3__[\"Material\"]; });\n\n/* harmony import */ var _renderable_Renderable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderable/Renderable */ \"./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Renderable\", function() { return _renderable_Renderable__WEBPACK_IMPORTED_MODULE_4__[\"Renderable\"]; });\n\n/* harmony import */ var _World__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./World */ \"./node_modules/@antv/g-webgpu/es/World.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"World\", function() { return _World__WEBPACK_IMPORTED_MODULE_5__[\"World\"]; });\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvaW5kZXguanM/YTE5NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNIO0FBQ0o7QUFDSTtBQUNlO0FBQ3JCO0FBQ2lDO0FBQ2pFIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FtZXJhIH0gZnJvbSAnLi9jYW1lcmEvQ2FtZXJhJztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBLZXJuZWwgfSBmcm9tICcuL0tlcm5lbCc7XG5pbXBvcnQgeyBNYXRlcmlhbCB9IGZyb20gJy4vbWF0ZXJpYWwnO1xuaW1wb3J0IHsgUmVuZGVyYWJsZSB9IGZyb20gJy4vcmVuZGVyYWJsZS9SZW5kZXJhYmxlJztcbmltcG9ydCB7IFdvcmxkIH0gZnJvbSAnLi9Xb3JsZCc7XG5leHBvcnQgeyBXb3JsZCwgS2VybmVsLCBDYW1lcmEsIFJlbmRlcmFibGUsIEdlb21ldHJ5LCBNYXRlcmlhbCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/material/basic/index.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/material/basic/index.js ***! \****************************************************************/ /*! exports provided: Basic */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Basic\", function() { return Basic; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! .. */ \"./node_modules/@antv/g-webgpu/es/material/index.js\");\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.basic.frag.glsl' */\nvar webglFragmentShaderGLSL = \"varying vec4 fragColor;\\n\\n#pragma include \\\"uv.frag.declaration\\\"\\n#pragma include \\\"map.frag.declaration\\\"\\n\\nvoid main() {\\n vec4 diffuseColor = fragColor;\\n\\n #pragma include \\\"map.frag.main\\\"\\n\\n gl_FragColor = diffuseColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.basic.vert.glsl' */\nvar webglVertexShaderGLSL = \"attribute vec3 position;\\nattribute vec3 normal;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform vec4 color;\\n\\nvarying vec4 fragColor;\\n\\n#pragma include \\\"uv.vert.declaration\\\"\\n\\nvoid main() {\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\\n fragColor = color;\\n\\n #pragma include \\\"uv.vert.main\\\"\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgpu.basic.frag.glsl' */\nvar webgpuFragmentShaderGLSL = \"// layout(set = 0, binding = 1) uniform WireframeUniforms {\\n// float lineWidth;\\n// vec4 lineColor;\\n// } wireframe;\\n\\nlayout(location = 0) in vec4 fragColor;\\n// layout(location = 1) in vec3 v_Barycentric;\\n\\nlayout(location = 0) out vec4 outColor;\\n\\n// wireframe\\n// float edgeFactor() {\\n// vec3 d = fwidth(v_Barycentric);\\n// vec3 a3 = smoothstep(vec3(0.0), d * wireframe.lineWidth, v_Barycentric);\\n// return min(min(a3.x, a3.y), a3.z);\\n// }\\n\\nvoid main() {\\n // outColor = mix(fragColor, wireframe.lineColor, (1.0 - edgeFactor()));\\n outColor = fragColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgpu.basic.vert.glsl' */\nvar webgpuVertexShaderGLSL = \"layout(set = 0, binding = 0) uniform Uniforms {\\n vec4 color;\\n mat4 projectionMatrix;\\n mat4 modelViewMatrix;\\n} uniforms;\\n\\nlayout(location = 0) in vec3 position;\\n// layout(location = 1) in vec3 barycentric;\\n\\nlayout(location = 0) out vec4 fragColor;\\n// layout(location = 1) out vec3 v_Barycentric;\\n\\nvoid main() {\\n gl_Position = uniforms.projectionMatrix * uniforms.modelViewMatrix * vec4(position, 1.0);\\n fragColor = uniforms.color;\\n // v_Barycentric = barycentric;\\n}\";\nvar\n/**\n * This material is not affected by lights.\n * @see https://threejs.org/docs/#api/en/materials/MeshBasicMaterial\n */\nBasic = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Material) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Basic, _Material);\n\n var _super = _createSuper(Basic);\n\n function Basic() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Basic);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"engine\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"shaderModuleService\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Basic, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var component = this.getComponent();\n var vertexShaderGLSL = this.engine.supportWebGPU ? webgpuVertexShaderGLSL : webglVertexShaderGLSL;\n var fragmentShaderGLSL = this.engine.supportWebGPU ? webgpuFragmentShaderGLSL : webglFragmentShaderGLSL;\n this.shaderModuleService.registerModule('material-basic', {\n vs: vertexShaderGLSL,\n fs: fragmentShaderGLSL\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('material-basic'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n component.vertexShaderGLSL = vs;\n component.fragmentShaderGLSL = fs; // @ts-ignore\n\n component.setUniform(extractedUniforms);\n\n if (this.config.map) {\n component.setDefines({\n USE_UV: 1,\n USE_MAP: 1\n });\n component.setUniform({\n // @ts-ignore\n map: this.config.map,\n uvTransform: gl_matrix__WEBPACK_IMPORTED_MODULE_10__[\"mat3\"].create()\n });\n }\n }\n }]);\n\n return Basic;\n}(___WEBPACK_IMPORTED_MODULE_12__[\"Material\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"shaderModuleService\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvbWF0ZXJpYWwvYmFzaWMvaW5kZXguanM/N2U2ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRjtBQUN0QjtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCO0FBQ29CO0FBQ0E7O0FBRXhGOztBQUVBLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRWpSO0FBQ2hCO0FBQ2M7QUFDakI7O0FBRTlCO0FBQ0Esc0RBQXNELHNHQUFzRyxrQ0FBa0MseUVBQXlFLEdBQUc7O0FBRTFRO0FBQ0EscURBQXFELHdCQUF3QixrQ0FBa0MsK0JBQStCLHFCQUFxQiwyQkFBMkIsNERBQTRELDJFQUEyRSxzQkFBc0IseUNBQXlDOztBQUVwWTtBQUNBLDJGQUEyRix1QkFBdUIsc0JBQXNCLE1BQU0sV0FBVywyQ0FBMkMsZ0RBQWdELDJDQUEyQyx5Q0FBeUMsc0NBQXNDLCtFQUErRSx5Q0FBeUMsTUFBTSxpQkFBaUIsNEVBQTRFLHlCQUF5QixHQUFHOztBQUVybUI7QUFDQSw2RUFBNkUsZUFBZSwwQkFBMEIseUJBQXlCLEdBQUcsVUFBVSwwQ0FBMEMsOENBQThDLDRDQUE0QyxpREFBaUQsaUJBQWlCLDZGQUE2RiwrQkFBK0IsbUNBQW1DLEdBQUc7QUFDN2Y7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw2REFBVSxZQUFZLHlEQUFNLENBQUMsOERBQVUsd0JBQXdCLHlEQUFNLENBQUMsOERBQVU7QUFDaEcsRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CLHVFQUF1RSxhQUFhO0FBQ3BGO0FBQ0E7O0FBRUE7O0FBRUEsSUFBSSx1RkFBMEIsK0JBQStCLG1GQUFzQjs7QUFFbkYsSUFBSSx1RkFBMEIsNkNBQTZDLG1GQUFzQjs7QUFFakc7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0M7O0FBRXhDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwrQ0FBSTtBQUMzQixTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMkNBQVEsMEJBQTBCLHNGQUF5QjtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy9tYXRlcmlhbC9iYXNpYy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IG1hdDMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IE1hdGVyaWFsIH0gZnJvbSAnLi4nO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdsLmJhc2ljLmZyYWcuZ2xzbCcgKi9cbnZhciB3ZWJnbEZyYWdtZW50U2hhZGVyR0xTTCA9IFwidmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcXG5cXG4jcHJhZ21hIGluY2x1ZGUgXFxcInV2LmZyYWcuZGVjbGFyYXRpb25cXFwiXFxuI3ByYWdtYSBpbmNsdWRlIFxcXCJtYXAuZnJhZy5kZWNsYXJhdGlvblxcXCJcXG5cXG52b2lkIG1haW4oKSB7XFxuICB2ZWM0IGRpZmZ1c2VDb2xvciA9IGZyYWdDb2xvcjtcXG5cXG4gICNwcmFnbWEgaW5jbHVkZSBcXFwibWFwLmZyYWcubWFpblxcXCJcXG5cXG4gIGdsX0ZyYWdDb2xvciA9IGRpZmZ1c2VDb2xvcjtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wuYmFzaWMudmVydC5nbHNsJyAqL1xudmFyIHdlYmdsVmVydGV4U2hhZGVyR0xTTCA9IFwiYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XFxuYXR0cmlidXRlIHZlYzMgbm9ybWFsO1xcblxcbnVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xcbnVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7XFxudW5pZm9ybSB2ZWM0IGNvbG9yO1xcblxcbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XFxuXFxuI3ByYWdtYSBpbmNsdWRlIFxcXCJ1di52ZXJ0LmRlY2xhcmF0aW9uXFxcIlxcblxcbnZvaWQgbWFpbigpIHtcXG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XFxuICBmcmFnQ29sb3IgPSBjb2xvcjtcXG5cXG4gICNwcmFnbWEgaW5jbHVkZSBcXFwidXYudmVydC5tYWluXFxcIlxcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJncHUuYmFzaWMuZnJhZy5nbHNsJyAqL1xudmFyIHdlYmdwdUZyYWdtZW50U2hhZGVyR0xTTCA9IFwiLy8gbGF5b3V0KHNldCA9IDAsIGJpbmRpbmcgPSAxKSB1bmlmb3JtIFdpcmVmcmFtZVVuaWZvcm1zIHtcXG4vLyAgIGZsb2F0IGxpbmVXaWR0aDtcXG4vLyAgIHZlYzQgbGluZUNvbG9yO1xcbi8vIH0gd2lyZWZyYW1lO1xcblxcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzQgZnJhZ0NvbG9yO1xcbi8vIGxheW91dChsb2NhdGlvbiA9IDEpIGluIHZlYzMgdl9CYXJ5Y2VudHJpYztcXG5cXG5sYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgdmVjNCBvdXRDb2xvcjtcXG5cXG4vLyB3aXJlZnJhbWVcXG4vLyBmbG9hdCBlZGdlRmFjdG9yKCkge1xcbi8vICAgdmVjMyBkID0gZndpZHRoKHZfQmFyeWNlbnRyaWMpO1xcbi8vICAgdmVjMyBhMyA9IHNtb290aHN0ZXAodmVjMygwLjApLCBkICogd2lyZWZyYW1lLmxpbmVXaWR0aCwgdl9CYXJ5Y2VudHJpYyk7XFxuLy8gICByZXR1cm4gbWluKG1pbihhMy54LCBhMy55KSwgYTMueik7XFxuLy8gfVxcblxcbnZvaWQgbWFpbigpIHtcXG4gIC8vIG91dENvbG9yID0gbWl4KGZyYWdDb2xvciwgd2lyZWZyYW1lLmxpbmVDb2xvciwgKDEuMCAtIGVkZ2VGYWN0b3IoKSkpO1xcbiAgb3V0Q29sb3IgPSBmcmFnQ29sb3I7XFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdwdS5iYXNpYy52ZXJ0Lmdsc2wnICovXG52YXIgd2ViZ3B1VmVydGV4U2hhZGVyR0xTTCA9IFwibGF5b3V0KHNldCA9IDAsIGJpbmRpbmcgPSAwKSB1bmlmb3JtIFVuaWZvcm1zIHtcXG4gIHZlYzQgY29sb3I7XFxuICBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XFxuICBtYXQ0IG1vZGVsVmlld01hdHJpeDtcXG59IHVuaWZvcm1zO1xcblxcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgcG9zaXRpb247XFxuLy8gbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gdmVjMyBiYXJ5Y2VudHJpYztcXG5cXG5sYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgdmVjNCBmcmFnQ29sb3I7XFxuLy8gbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IHZlYzMgdl9CYXJ5Y2VudHJpYztcXG5cXG52b2lkIG1haW4oKSB7XFxuICBnbF9Qb3NpdGlvbiA9IHVuaWZvcm1zLnByb2plY3Rpb25NYXRyaXggKiB1bmlmb3Jtcy5tb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xcbiAgZnJhZ0NvbG9yID0gdW5pZm9ybXMuY29sb3I7XFxuICAvLyB2X0JhcnljZW50cmljID0gYmFyeWNlbnRyaWM7XFxufVwiO1xuZXhwb3J0IHZhclxuLyoqXG4gKiBUaGlzIG1hdGVyaWFsIGlzIG5vdCBhZmZlY3RlZCBieSBsaWdodHMuXG4gKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jYXBpL2VuL21hdGVyaWFscy9NZXNoQmFzaWNNYXRlcmlhbFxuICovXG5CYXNpYyA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuU2hhZGVyTW9kdWxlU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9NYXRlcmlhbCkge1xuICBfaW5oZXJpdHMoQmFzaWMsIF9NYXRlcmlhbCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihCYXNpYyk7XG5cbiAgZnVuY3Rpb24gQmFzaWMoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJhc2ljKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgX2Rlc2NyaXB0b3IyLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQmFzaWMsIFt7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5nZXRDb21wb25lbnQoKTtcbiAgICAgIHZhciB2ZXJ0ZXhTaGFkZXJHTFNMID0gdGhpcy5lbmdpbmUuc3VwcG9ydFdlYkdQVSA/IHdlYmdwdVZlcnRleFNoYWRlckdMU0wgOiB3ZWJnbFZlcnRleFNoYWRlckdMU0w7XG4gICAgICB2YXIgZnJhZ21lbnRTaGFkZXJHTFNMID0gdGhpcy5lbmdpbmUuc3VwcG9ydFdlYkdQVSA/IHdlYmdwdUZyYWdtZW50U2hhZGVyR0xTTCA6IHdlYmdsRnJhZ21lbnRTaGFkZXJHTFNMO1xuICAgICAgdGhpcy5zaGFkZXJNb2R1bGVTZXJ2aWNlLnJlZ2lzdGVyTW9kdWxlKCdtYXRlcmlhbC1iYXNpYycsIHtcbiAgICAgICAgdnM6IHZlcnRleFNoYWRlckdMU0wsXG4gICAgICAgIGZzOiBmcmFnbWVudFNoYWRlckdMU0xcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX3RoaXMkc2hhZGVyTW9kdWxlU2VyID0gdGhpcy5zaGFkZXJNb2R1bGVTZXJ2aWNlLmdldE1vZHVsZSgnbWF0ZXJpYWwtYmFzaWMnKSxcbiAgICAgICAgICB2cyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci52cyxcbiAgICAgICAgICBmcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci5mcyxcbiAgICAgICAgICBleHRyYWN0ZWRVbmlmb3JtcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci51bmlmb3JtcztcblxuICAgICAgY29tcG9uZW50LnZlcnRleFNoYWRlckdMU0wgPSB2cztcbiAgICAgIGNvbXBvbmVudC5mcmFnbWVudFNoYWRlckdMU0wgPSBmczsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICBjb21wb25lbnQuc2V0VW5pZm9ybShleHRyYWN0ZWRVbmlmb3Jtcyk7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5tYXApIHtcbiAgICAgICAgY29tcG9uZW50LnNldERlZmluZXMoe1xuICAgICAgICAgIFVTRV9VVjogMSxcbiAgICAgICAgICBVU0VfTUFQOiAxXG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnQuc2V0VW5pZm9ybSh7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1hcDogdGhpcy5jb25maWcubWFwLFxuICAgICAgICAgIHV2VHJhbnNmb3JtOiBtYXQzLmNyZWF0ZSgpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCYXNpYztcbn0oTWF0ZXJpYWwpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/material/basic/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/material/index.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/material/index.js ***! \**********************************************************/ /*! exports provided: Material */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Material\", function() { return Material; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\nvar Material = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].MaterialComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Material() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Material);\n\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"material\", _descriptor, this);\n\n this.entity = void 0;\n this.component = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Material, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getComponent\",\n value: function getComponent() {\n return this.component;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity, type) {\n this.entity = entity;\n this.component = this.material.create(entity);\n this.component.entity = entity;\n this.component.type = type;\n this.onEntityCreated();\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }]);\n\n return Material;\n}(), _class3.BASIC = 'basic', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"material\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvbWF0ZXJpYWwvaW5kZXguanM/MTg0NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFaUQ7QUFDRjtBQUN4Qyx1QkFBdUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLDhEQUFVO0FBQ3JFO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7O0FBRUEsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHVDQUF1QztBQUN2QztBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLG9EQUFvRCxzRkFBeUI7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvbWF0ZXJpYWwvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfY2xhc3MzLCBfdGVtcDtcblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmV4cG9ydCB2YXIgTWF0ZXJpYWwgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NYXRlcmlhbENvbXBvbmVudE1hbmFnZXIpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1hdGVyaWFsKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNYXRlcmlhbCk7XG5cbiAgICB0aGlzLmNvbmZpZyA9IHZvaWQgMDtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwibWF0ZXJpYWxcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgdGhpcy5lbnRpdHkgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wb25lbnQgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTWF0ZXJpYWwsIFt7XG4gICAga2V5OiBcImdldEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRFbnRpdHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdHk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENvbXBvbmVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb21wb25lbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldENvbmZpZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEVudGl0eShlbnRpdHksIHR5cGUpIHtcbiAgICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuICAgICAgdGhpcy5jb21wb25lbnQgPSB0aGlzLm1hdGVyaWFsLmNyZWF0ZShlbnRpdHkpO1xuICAgICAgdGhpcy5jb21wb25lbnQuZW50aXR5ID0gZW50aXR5O1xuICAgICAgdGhpcy5jb21wb25lbnQudHlwZSA9IHR5cGU7XG4gICAgICB0aGlzLm9uRW50aXR5Q3JlYXRlZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvbkVudGl0eUNyZWF0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FbnRpdHlDcmVhdGVkKCkgey8vXG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1hdGVyaWFsO1xufSgpLCBfY2xhc3MzLkJBU0lDID0gJ2Jhc2ljJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1hdGVyaWFsXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/material/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/renderable/Renderable.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/renderable/Renderable.js ***! \*****************************************************************/ /*! exports provided: Renderable */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Renderable\", function() { return Renderable; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _class3, _temp;\n\n\n\nvar Renderable = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].CullableComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].TransformComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].Systems), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].SceneGraphSystem), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Renderable() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Renderable);\n\n this.attributes = {};\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"cullable\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"transform\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"sceneGraphSystem\", _descriptor4, this);\n\n this.meshComponent = void 0;\n this.transformComponent = void 0;\n this.entity = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Renderable, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getTransformComponent\",\n value: function getTransformComponent() {\n return this.transformComponent;\n }\n }, {\n key: \"getMeshComponent\",\n value: function getMeshComponent() {\n return this.meshComponent;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity) {\n this.entity = entity;\n this.cullable.create(entity);\n this.meshComponent = this.mesh.create(entity);\n this.transformComponent = this.transform.create(entity);\n this.onEntityCreated();\n }\n }, {\n key: \"setMaterial\",\n value: function setMaterial(material) {\n this.meshComponent.material = material;\n return this;\n }\n }, {\n key: \"setGeometry\",\n value: function setGeometry(geometry) {\n this.meshComponent.geometry = geometry;\n return this;\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(attributes) {\n var _this = this;\n\n Object.keys(attributes).forEach(function (name) {\n if (attributes[name] !== undefined && attributes[name] !== _this.attributes[name]) {\n _this.onAttributeChanged({\n name: name,\n data: attributes[name]\n });\n\n _this.attributes[name] = attributes[name];\n }\n });\n }\n }, {\n key: \"setVisible\",\n value: function setVisible(visible) {\n var _this2 = this;\n\n this.meshComponent.visible = visible;\n this.meshComponent.children.forEach(function (childEntity) {\n var child = _this2.mesh.getComponentByEntity(childEntity);\n\n if (child) {\n child.visible = visible;\n }\n });\n return this;\n }\n }, {\n key: \"isVisible\",\n value: function isVisible() {\n return this.meshComponent.visible;\n }\n }, {\n key: \"attach\",\n value: function attach(parentRenderable) {\n this.sceneGraphSystem.attach(this.entity, parentRenderable.entity);\n return this;\n }\n }, {\n key: \"detach\",\n value: function detach() {\n this.sceneGraphSystem.detach(this.entity);\n return this;\n }\n }, {\n key: \"detachChildren\",\n value: function detachChildren() {\n this.sceneGraphSystem.detachChildren(this.entity);\n return this;\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }, {\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n\n if (this.meshComponent && this.meshComponent.material) {\n this.meshComponent.material.setUniform(this.convertAttributeName2UniformName(name), data);\n }\n }\n }, {\n key: \"convertAttributeName2UniformName\",\n value: function convertAttributeName2UniformName(attributeName) {\n return attributeName;\n }\n }]);\n\n return Renderable;\n}(), _class3.POINT = 'point', _class3.LINE = 'line', _class3.GRID = 'grid', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"cullable\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"transform\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"sceneGraphSystem\", [_dec5, _dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Renderable.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9SZW5kZXJhYmxlLmpzPzA0MWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBGO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRWlEO0FBQ0s7QUFDL0MseUJBQXlCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyw4REFBVSxnQ0FBZ0Msd0RBQU0sQ0FBQyw4REFBVSxvQ0FBb0Msd0RBQU0sQ0FBQyw4REFBVSxxQ0FBcUMsd0RBQU0sQ0FBQyw4REFBVSxtQkFBbUIsdURBQUssQ0FBQyw4REFBVTtBQUN0UTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsa0dBQWtHLHNGQUF5QjtBQUM1SDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy9yZW5kZXJhYmxlL1JlbmRlcmFibGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2RlYzQsIF9kZWM1LCBfZGVjNiwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2Rlc2NyaXB0b3IyLCBfZGVzY3JpcHRvcjMsIF9kZXNjcmlwdG9yNCwgX2NsYXNzMywgX3RlbXA7XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuZXhwb3J0IHZhciBSZW5kZXJhYmxlID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuTWVzaENvbXBvbmVudE1hbmFnZXIpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLkN1bGxhYmxlQ29tcG9uZW50TWFuYWdlciksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWM1ID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWM2ID0gbmFtZWQoSURFTlRJRklFUi5TY2VuZUdyYXBoU3lzdGVtKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJhYmxlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZW5kZXJhYmxlKTtcblxuICAgIHRoaXMuYXR0cmlidXRlcyA9IHt9O1xuICAgIHRoaXMuY29uZmlnID0gdm9pZCAwO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtZXNoXCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiY3VsbGFibGVcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwidHJhbnNmb3JtXCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInNjZW5lR3JhcGhTeXN0ZW1cIiwgX2Rlc2NyaXB0b3I0LCB0aGlzKTtcblxuICAgIHRoaXMubWVzaENvbXBvbmVudCA9IHZvaWQgMDtcbiAgICB0aGlzLnRyYW5zZm9ybUNvbXBvbmVudCA9IHZvaWQgMDtcbiAgICB0aGlzLmVudGl0eSA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZW5kZXJhYmxlLCBbe1xuICAgIGtleTogXCJnZXRFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RW50aXR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZW50aXR5O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRUcmFuc2Zvcm1Db21wb25lbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHJhbnNmb3JtQ29tcG9uZW50KCkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtQ29tcG9uZW50O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRNZXNoQ29tcG9uZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldE1lc2hDb21wb25lbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXNoQ29tcG9uZW50O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRDb25maWdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q29uZmlnKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRFbnRpdHkoZW50aXR5KSB7XG4gICAgICB0aGlzLmVudGl0eSA9IGVudGl0eTtcbiAgICAgIHRoaXMuY3VsbGFibGUuY3JlYXRlKGVudGl0eSk7XG4gICAgICB0aGlzLm1lc2hDb21wb25lbnQgPSB0aGlzLm1lc2guY3JlYXRlKGVudGl0eSk7XG4gICAgICB0aGlzLnRyYW5zZm9ybUNvbXBvbmVudCA9IHRoaXMudHJhbnNmb3JtLmNyZWF0ZShlbnRpdHkpO1xuICAgICAgdGhpcy5vbkVudGl0eUNyZWF0ZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWF0ZXJpYWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWF0ZXJpYWwobWF0ZXJpYWwpIHtcbiAgICAgIHRoaXMubWVzaENvbXBvbmVudC5tYXRlcmlhbCA9IG1hdGVyaWFsO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEdlb21ldHJ5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEdlb21ldHJ5KGdlb21ldHJ5KSB7XG4gICAgICB0aGlzLm1lc2hDb21wb25lbnQuZ2VvbWV0cnkgPSBnZW9tZXRyeTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRBdHRyaWJ1dGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZXMoYXR0cmlidXRlcykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICBpZiAoYXR0cmlidXRlc1tuYW1lXSAhPT0gdW5kZWZpbmVkICYmIGF0dHJpYnV0ZXNbbmFtZV0gIT09IF90aGlzLmF0dHJpYnV0ZXNbbmFtZV0pIHtcbiAgICAgICAgICBfdGhpcy5vbkF0dHJpYnV0ZUNoYW5nZWQoe1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGRhdGE6IGF0dHJpYnV0ZXNbbmFtZV1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIF90aGlzLmF0dHJpYnV0ZXNbbmFtZV0gPSBhdHRyaWJ1dGVzW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0VmlzaWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRWaXNpYmxlKHZpc2libGUpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLm1lc2hDb21wb25lbnQudmlzaWJsZSA9IHZpc2libGU7XG4gICAgICB0aGlzLm1lc2hDb21wb25lbnQuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGRFbnRpdHkpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gX3RoaXMyLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoY2hpbGRFbnRpdHkpO1xuXG4gICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgIGNoaWxkLnZpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc1Zpc2libGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNWaXNpYmxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMubWVzaENvbXBvbmVudC52aXNpYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhdHRhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXR0YWNoKHBhcmVudFJlbmRlcmFibGUpIHtcbiAgICAgIHRoaXMuc2NlbmVHcmFwaFN5c3RlbS5hdHRhY2godGhpcy5lbnRpdHksIHBhcmVudFJlbmRlcmFibGUuZW50aXR5KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXRhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGV0YWNoKCkge1xuICAgICAgdGhpcy5zY2VuZUdyYXBoU3lzdGVtLmRldGFjaCh0aGlzLmVudGl0eSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGV0YWNoQ2hpbGRyZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGV0YWNoQ2hpbGRyZW4oKSB7XG4gICAgICB0aGlzLnNjZW5lR3JhcGhTeXN0ZW0uZGV0YWNoQ2hpbGRyZW4odGhpcy5lbnRpdHkpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7Ly9cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25BdHRyaWJ1dGVDaGFuZ2VkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQXR0cmlidXRlQ2hhbmdlZChfcmVmKSB7XG4gICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgICAgICBkYXRhID0gX3JlZi5kYXRhO1xuXG4gICAgICBpZiAodGhpcy5tZXNoQ29tcG9uZW50ICYmIHRoaXMubWVzaENvbXBvbmVudC5tYXRlcmlhbCkge1xuICAgICAgICB0aGlzLm1lc2hDb21wb25lbnQubWF0ZXJpYWwuc2V0VW5pZm9ybSh0aGlzLmNvbnZlcnRBdHRyaWJ1dGVOYW1lMlVuaWZvcm1OYW1lKG5hbWUpLCBkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29udmVydEF0dHJpYnV0ZU5hbWUyVW5pZm9ybU5hbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29udmVydEF0dHJpYnV0ZU5hbWUyVW5pZm9ybU5hbWUoYXR0cmlidXRlTmFtZSkge1xuICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlbmRlcmFibGU7XG59KCksIF9jbGFzczMuUE9JTlQgPSAncG9pbnQnLCBfY2xhc3MzLkxJTkUgPSAnbGluZScsIF9jbGFzczMuR1JJRCA9ICdncmlkJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1lc2hcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY3VsbGFibGVcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwidHJhbnNmb3JtXCIsIFtfZGVjNF0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjQgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNjZW5lR3JhcGhTeXN0ZW1cIiwgW19kZWM1LCBfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZW5kZXJhYmxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/renderable/grid/index.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/renderable/grid/index.js ***! \*****************************************************************/ /*! exports provided: Grid */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Grid\", function() { return Grid; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.grid.frag.glsl' */\nvar gridFrag = \"// generate grid, borrow from clay.gl viewer\\n// @see https://github.com/pissang/clay-viewer/blob/master/src/graphic/ground.glsl\\n#extension GL_OES_standard_derivatives : enable\\n\\nvarying vec3 v_Position;\\n// varying vec3 v_Normal;\\n\\nuniform float u_GridSize : 5;\\nuniform float u_GridSize2 : .5;\\nuniform vec4 u_GridColor : [0, 0, 0, 1];\\nuniform vec4 u_GridColor2 : [0.3, 0.3, 0.3, 1];\\nuniform bool u_GridEnabled : true;\\n\\n// uniform vec3 u_LightDirection;\\n// uniform vec3 u_LightColor;\\n// uniform vec3 u_Camera;\\n\\nvoid main() {\\n // vec3 n = v_Normal;\\n // vec3 l = normalize(u_LightDirection);\\n // float NdotL = clamp(dot(n, l), 0.001, 1.0);\\n\\n gl_FragColor = vec4(1.);\\n\\n if (u_GridEnabled) {\\n float wx = v_Position.x;\\n float wz = v_Position.z;\\n // float x0 = abs(fract(wx / u_GridSize - 0.5) - 0.5) / fwidth(wx) * u_GridSize / 2.0;\\n // float z0 = abs(fract(wz / u_GridSize - 0.5) - 0.5) / fwidth(wz) * u_GridSize / 2.0;\\n\\n float x1 = abs(fract(wx / u_GridSize2 - 0.5) - 0.5) / fwidth(wx) * u_GridSize2;\\n float z1 = abs(fract(wz / u_GridSize2 - 0.5) - 0.5) / fwidth(wz) * u_GridSize2;\\n\\n // float v0 = 1.0 - clamp(min(x0, z0), 0.0, 1.0);\\n float v1 = 1.0 - clamp(min(x1, z1), 0.0, 1.0);\\n // if (v0 > 0.1) {\\n // gl_FragColor = mix(gl_FragColor, u_GridColor, v0);\\n // }\\n // else {\\n gl_FragColor = mix(gl_FragColor, u_GridColor2, v1);\\n // }\\n }\\n\\n // float shadowFactor = calcShadow(u_ShadowMap, v_PositionFromLight, l, n);\\n // vec3 diffuseColor = u_LightColor * NdotL * shadowFactor;\\n\\n // gl_FragColor.rgb *= diffuseColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.grid.vert.glsl' */\nvar gridVert = \"attribute vec3 a_Position;\\n\\nvarying vec3 v_Position;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\n\\nvoid main() {\\n v_Position = a_Position;\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(a_Position, 1.);\\n}\";\nvar Grid = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Grid, _Renderable);\n\n var _super = _createSuper(Grid);\n\n function Grid() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Grid);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Grid, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n if (name === 'gridColor') {\n mesh.material.setUniform('u_GridColor', data);\n mesh.material.setUniform('u_GridColor2', data);\n } else if (name === 'gridSize') {\n mesh.material.setUniform('u_GridSize', data);\n mesh.material.setUniform('u_GridSize2', data);\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n this.shaderModuleService.registerModule('grid', {\n vs: gridVert,\n fs: gridFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('grid'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs\n });\n this.setMaterial(material);\n var geometry = this.geometrySystem.createBufferGeometry({\n vertexCount: 4\n });\n this.setGeometry(geometry);\n material.setCull({\n enable: false,\n face: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"gl\"].BACK\n }).setDepth({\n enable: true,\n func: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"gl\"].LESS\n }); // @ts-ignore\n\n material.setUniform(extractedUniforms);\n this.setAttributes({\n gridColor: this.config.gridColor,\n gridSize: this.config.gridSize\n });\n geometry.setIndex([0, 3, 2, 2, 1, 0]);\n geometry.setAttribute('a_Position', Float32Array.from([-4, -1, -4, 4, -1, -4, 4, -1, 4, -4, -1, 4]), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n }\n }]);\n\n return Grid;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_11__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9ncmlkL2luZGV4LmpzPzcwYmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBGO0FBQ3RCO0FBQ047QUFDb0I7QUFDMUI7QUFDa0M7QUFDdEI7QUFDb0I7QUFDQTs7QUFFeEY7O0FBRUEsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFN1E7QUFDQztBQUNYOztBQUUzQztBQUNBLDZOQUE2TiwyQkFBMkIsaUNBQWlDLGlDQUFpQywwQ0FBMEMsaURBQWlELG9DQUFvQyxxQ0FBcUMsK0JBQStCLDJCQUEyQixpQkFBaUIseUJBQXlCLDRDQUE0QyxrREFBa0QsOEJBQThCLDBCQUEwQiw4QkFBOEIsOEJBQThCLDRGQUE0Riw0RkFBNEYsdUZBQXVGLHFGQUFxRix5REFBeUQsb0RBQW9ELHdCQUF3QiwrREFBK0QsVUFBVSxlQUFlLDZEQUE2RCxVQUFVLEtBQUssaUZBQWlGLCtEQUErRCwwQ0FBMEMsR0FBRzs7QUFFOWxEO0FBQ0EsMENBQTBDLDRCQUE0QixrQ0FBa0MsK0JBQStCLGlCQUFpQiw0QkFBNEIsNEVBQTRFLEdBQUc7QUFDNVAsbUJBQW1CLDZEQUFVLFlBQVkseURBQU0sQ0FBQyw4REFBVSxtQkFBbUIsd0RBQUssQ0FBQyw4REFBVSwwQkFBMEIseURBQU0sQ0FBQyw4REFBVSxtQkFBbUIsd0RBQUssQ0FBQyw4REFBVSwwQkFBMEIseURBQU0sQ0FBQyw4REFBVTtBQUM3TixFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsdUVBQXVFLGFBQWE7QUFDcEY7QUFDQTs7QUFFQTs7QUFFQSxJQUFJLHVGQUEwQix1Q0FBdUMsbUZBQXNCOztBQUUzRixJQUFJLHVGQUEwQix3Q0FBd0MsbUZBQXNCOztBQUU1RixJQUFJLHVGQUEwQiw2Q0FBNkMsbUZBQXNCOztBQUVqRztBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHNEQUFFO0FBQ2hCLE9BQU87QUFDUDtBQUNBLGNBQWMsc0RBQUU7QUFDaEIsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQyx1REFBVSwwQkFBMEIsc0ZBQXlCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvZ3JpZC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX3RlbXA7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2wsIElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgUmVuZGVyYWJsZSB9IGZyb20gJy4uL1JlbmRlcmFibGUnO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdsLmdyaWQuZnJhZy5nbHNsJyAqL1xudmFyIGdyaWRGcmFnID0gXCIvLyBnZW5lcmF0ZSBncmlkLCBib3Jyb3cgZnJvbSBjbGF5LmdsIHZpZXdlclxcbi8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Bpc3NhbmcvY2xheS12aWV3ZXIvYmxvYi9tYXN0ZXIvc3JjL2dyYXBoaWMvZ3JvdW5kLmdsc2xcXG4jZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZVxcblxcbnZhcnlpbmcgdmVjMyB2X1Bvc2l0aW9uO1xcbi8vIHZhcnlpbmcgdmVjMyB2X05vcm1hbDtcXG5cXG51bmlmb3JtIGZsb2F0IHVfR3JpZFNpemUgOiA1O1xcbnVuaWZvcm0gZmxvYXQgdV9HcmlkU2l6ZTIgOiAuNTtcXG51bmlmb3JtIHZlYzQgdV9HcmlkQ29sb3IgOiBbMCwgMCwgMCwgMV07XFxudW5pZm9ybSB2ZWM0IHVfR3JpZENvbG9yMiA6IFswLjMsIDAuMywgMC4zLCAxXTtcXG51bmlmb3JtIGJvb2wgdV9HcmlkRW5hYmxlZCA6IHRydWU7XFxuXFxuLy8gdW5pZm9ybSB2ZWMzIHVfTGlnaHREaXJlY3Rpb247XFxuLy8gdW5pZm9ybSB2ZWMzIHVfTGlnaHRDb2xvcjtcXG4vLyB1bmlmb3JtIHZlYzMgdV9DYW1lcmE7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgLy8gdmVjMyBuID0gdl9Ob3JtYWw7XFxuICAvLyB2ZWMzIGwgPSBub3JtYWxpemUodV9MaWdodERpcmVjdGlvbik7XFxuICAvLyBmbG9hdCBOZG90TCA9IGNsYW1wKGRvdChuLCBsKSwgMC4wMDEsIDEuMCk7XFxuXFxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuKTtcXG5cXG4gIGlmICh1X0dyaWRFbmFibGVkKSB7XFxuICAgIGZsb2F0IHd4ID0gdl9Qb3NpdGlvbi54O1xcbiAgICBmbG9hdCB3eiA9IHZfUG9zaXRpb24uejtcXG4gICAgLy8gZmxvYXQgeDAgPSBhYnMoZnJhY3Qod3ggLyB1X0dyaWRTaXplIC0gMC41KSAtIDAuNSkgLyBmd2lkdGgod3gpICogdV9HcmlkU2l6ZSAvIDIuMDtcXG4gICAgLy8gZmxvYXQgejAgPSBhYnMoZnJhY3Qod3ogLyB1X0dyaWRTaXplIC0gMC41KSAtIDAuNSkgLyBmd2lkdGgod3opICogdV9HcmlkU2l6ZSAvIDIuMDtcXG5cXG4gICAgZmxvYXQgeDEgPSBhYnMoZnJhY3Qod3ggLyB1X0dyaWRTaXplMiAtIDAuNSkgLSAwLjUpIC8gZndpZHRoKHd4KSAqIHVfR3JpZFNpemUyO1xcbiAgICBmbG9hdCB6MSA9IGFicyhmcmFjdCh3eiAvIHVfR3JpZFNpemUyIC0gMC41KSAtIDAuNSkgLyBmd2lkdGgod3opICogdV9HcmlkU2l6ZTI7XFxuXFxuICAgIC8vIGZsb2F0IHYwID0gMS4wIC0gY2xhbXAobWluKHgwLCB6MCksIDAuMCwgMS4wKTtcXG4gICAgZmxvYXQgdjEgPSAxLjAgLSBjbGFtcChtaW4oeDEsIHoxKSwgMC4wLCAxLjApO1xcbiAgICAvLyBpZiAodjAgPiAwLjEpIHtcXG4gICAgICAgIC8vIGdsX0ZyYWdDb2xvciA9IG1peChnbF9GcmFnQ29sb3IsIHVfR3JpZENvbG9yLCB2MCk7XFxuICAgIC8vIH1cXG4gICAgLy8gZWxzZSB7XFxuICAgICAgICBnbF9GcmFnQ29sb3IgPSBtaXgoZ2xfRnJhZ0NvbG9yLCB1X0dyaWRDb2xvcjIsIHYxKTtcXG4gICAgLy8gfVxcbiAgfVxcblxcbiAgLy8gZmxvYXQgc2hhZG93RmFjdG9yID0gY2FsY1NoYWRvdyh1X1NoYWRvd01hcCwgdl9Qb3NpdGlvbkZyb21MaWdodCwgbCwgbik7XFxuICAvLyB2ZWMzIGRpZmZ1c2VDb2xvciA9IHVfTGlnaHRDb2xvciAqIE5kb3RMICogc2hhZG93RmFjdG9yO1xcblxcbiAgLy8gZ2xfRnJhZ0NvbG9yLnJnYiAqPSBkaWZmdXNlQ29sb3I7XFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdsLmdyaWQudmVydC5nbHNsJyAqL1xudmFyIGdyaWRWZXJ0ID0gXCJhdHRyaWJ1dGUgdmVjMyBhX1Bvc2l0aW9uO1xcblxcbnZhcnlpbmcgdmVjMyB2X1Bvc2l0aW9uO1xcblxcbnVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xcbnVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9Qb3NpdGlvbiA9IGFfUG9zaXRpb247XFxuICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KGFfUG9zaXRpb24sIDEuKTtcXG59XCI7XG5leHBvcnQgdmFyIEdyaWQgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzMgPSBuYW1lZChJREVOVElGSUVSLk1hdGVyaWFsU3lzdGVtKSwgX2RlYzQgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzUgPSBuYW1lZChJREVOVElGSUVSLkdlb21ldHJ5U3lzdGVtKSwgX2RlYzYgPSBpbmplY3QoSURFTlRJRklFUi5TaGFkZXJNb2R1bGVTZXJ2aWNlKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlbmRlcmFibGUpIHtcbiAgX2luaGVyaXRzKEdyaWQsIF9SZW5kZXJhYmxlKTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEdyaWQpO1xuXG4gIGZ1bmN0aW9uIEdyaWQoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEdyaWQpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcIm1hdGVyaWFsU3lzdGVtXCIsIF9kZXNjcmlwdG9yLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJnZW9tZXRyeVN5c3RlbVwiLCBfZGVzY3JpcHRvcjIsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgX2Rlc2NyaXB0b3IzLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoR3JpZCwgW3tcbiAgICBrZXk6IFwib25BdHRyaWJ1dGVDaGFuZ2VkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQXR0cmlidXRlQ2hhbmdlZChfcmVmKSB7XG4gICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgICAgICBkYXRhID0gX3JlZi5kYXRhO1xuICAgICAgdmFyIG1lc2ggPSB0aGlzLmdldE1lc2hDb21wb25lbnQoKTtcblxuICAgICAgaWYgKG1lc2ggJiYgbWVzaC5tYXRlcmlhbCkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2dyaWRDb2xvcicpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfR3JpZENvbG9yJywgZGF0YSk7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X0dyaWRDb2xvcjInLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChuYW1lID09PSAnZ3JpZFNpemUnKSB7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X0dyaWRTaXplJywgZGF0YSk7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X0dyaWRTaXplMicsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UucmVnaXN0ZXJNb2R1bGUoJ2dyaWQnLCB7XG4gICAgICAgIHZzOiBncmlkVmVydCxcbiAgICAgICAgZnM6IGdyaWRGcmFnXG4gICAgICB9KTtcblxuICAgICAgdmFyIF90aGlzJHNoYWRlck1vZHVsZVNlciA9IHRoaXMuc2hhZGVyTW9kdWxlU2VydmljZS5nZXRNb2R1bGUoJ2dyaWQnKSxcbiAgICAgICAgICB2cyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci52cyxcbiAgICAgICAgICBmcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci5mcyxcbiAgICAgICAgICBleHRyYWN0ZWRVbmlmb3JtcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci51bmlmb3JtcztcblxuICAgICAgdmFyIG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFN5c3RlbS5jcmVhdGVTaGFkZXJNYXRlcmlhbCh7XG4gICAgICAgIHZlcnRleFNoYWRlcjogdnMsXG4gICAgICAgIGZyYWdtZW50U2hhZGVyOiBmc1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNldE1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIHZhciBnZW9tZXRyeSA9IHRoaXMuZ2VvbWV0cnlTeXN0ZW0uY3JlYXRlQnVmZmVyR2VvbWV0cnkoe1xuICAgICAgICB2ZXJ0ZXhDb3VudDogNFxuICAgICAgfSk7XG4gICAgICB0aGlzLnNldEdlb21ldHJ5KGdlb21ldHJ5KTtcbiAgICAgIG1hdGVyaWFsLnNldEN1bGwoe1xuICAgICAgICBlbmFibGU6IGZhbHNlLFxuICAgICAgICBmYWNlOiBnbC5CQUNLXG4gICAgICB9KS5zZXREZXB0aCh7XG4gICAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgICAgZnVuYzogZ2wuTEVTU1xuICAgICAgfSk7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybShleHRyYWN0ZWRVbmlmb3Jtcyk7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZXMoe1xuICAgICAgICBncmlkQ29sb3I6IHRoaXMuY29uZmlnLmdyaWRDb2xvcixcbiAgICAgICAgZ3JpZFNpemU6IHRoaXMuY29uZmlnLmdyaWRTaXplXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEluZGV4KFswLCAzLCAyLCAyLCAxLCAwXSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfUG9zaXRpb24nLCBGbG9hdDMyQXJyYXkuZnJvbShbLTQsIC0xLCAtNCwgNCwgLTEsIC00LCA0LCAtMSwgNCwgLTQsIC0xLCA0XSksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDAsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBHcmlkO1xufShSZW5kZXJhYmxlKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1hdGVyaWFsU3lzdGVtXCIsIFtfZGVjMiwgX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJnZW9tZXRyeVN5c3RlbVwiLCBbX2RlYzQsIF9kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBbX2RlYzZdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/renderable/grid/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/renderable/line/index.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/renderable/line/index.js ***! \*****************************************************************/ /*! exports provided: Line */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return Line; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _utils_polyline_normals__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils/polyline-normals */ \"./node_modules/@antv/g-webgpu/es/utils/polyline-normals.js\");\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.line.frag.glsl' */\nvar lineFrag = \"uniform float u_dash_array : 0.02;\\nuniform float u_dash_offset : 0;\\nuniform float u_dash_ratio : 0;\\nuniform float u_thickness : 0.02;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_normal;\\nvarying float v_counters;\\n\\nvoid main() {\\n float blur = 1. - smoothstep(0.98, 1., length(v_normal));\\n\\n gl_FragColor = v_color;\\n gl_FragColor.a *= blur * ceil(mod(v_counters + u_dash_offset, u_dash_array) - (u_dash_array * u_dash_ratio));\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.line.vert.glsl' */\nvar lineVert = \"attribute vec2 a_pos;\\nattribute vec4 a_color;\\nattribute float a_line_miter;\\nattribute vec2 a_line_normal;\\nattribute float a_counters;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform float u_thickness : 0.02;\\nuniform vec2 u_viewport;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_normal;\\nvarying float v_counters;\\n\\nvoid main() {\\n v_color = a_color;\\n v_counters = a_counters;\\n\\n vec3 normal = normalize(vec3(a_line_normal, 0.0));\\n\\n vec4 offset = vec4(normal * u_thickness / 2.0 * a_line_miter, 0.0);\\n\\n v_normal = vec2(normal * sign(a_line_miter));\\n\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(a_pos, 0.0, 1.0) + offset;\\n}\\n\";\nvar Line = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Line, _Renderable);\n\n var _super = _createSuper(Line);\n\n function Line() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Line);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _this.vertexCount = void 0;\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Line, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n switch (name) {\n case 'dashArray':\n mesh.material.setUniform('u_dash_array', data);\n break;\n\n case 'dashOffset':\n mesh.material.setUniform('u_dash_offset', data);\n break;\n\n case 'dashRatio':\n mesh.material.setUniform('u_dash_ratio', data);\n break;\n\n case 'thickness':\n mesh.material.setUniform('u_thickness', data);\n break;\n\n case 'color':\n var colors = new Array(this.vertexCount).fill(undefined).map(function () {\n return data;\n }).reduce(function (prev, cur) {\n // @ts-ignore\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []); // @ts-ignore\n\n mesh.geometry.setAttribute('a_color', Float32Array.from(colors), {\n arrayStride: 4 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float4'\n }]\n });\n break;\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this2 = this;\n\n this.shaderModuleService.registerModule('line', {\n vs: lineVert,\n fs: lineFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('line'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs\n });\n\n var _getNormals = Object(_utils_polyline_normals__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(this.config.points, false),\n normals = _getNormals.normals,\n attrIndex = _getNormals.attrIndex,\n attrPos = _getNormals.attrPos,\n attrCounters = _getNormals.attrCounters;\n\n var vertexCount = attrPos.length;\n this.vertexCount = vertexCount;\n var geometry = this.geometrySystem.createBufferGeometry({\n vertexCount: vertexCount\n });\n this.setMaterial(material);\n this.setGeometry(geometry);\n material.setCull({\n enable: false,\n face: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].BACK\n }) // @ts-ignore\n .setUniform(extractedUniforms);\n this.setAttributes({\n dashArray: this.config.dashArray,\n dashOffset: this.config.dashOffset,\n dashRatio: this.config.dashRatio,\n thickness: this.config.thickness\n });\n var attrNormal = [];\n var attrMiter = [];\n normals.forEach(function (n) {\n var norm = n[0];\n var miter = n[1];\n attrNormal.push([norm[0], norm[1]]); // @ts-ignore\n\n attrMiter.push(miter);\n }); // [[0,1,2], [2,1,3]]\n\n geometry.setIndex(attrIndex.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []));\n geometry.setAttribute('a_pos', Float32Array.from(attrPos.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, [])), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n var colors = new Array(vertexCount).fill(undefined).map(function () {\n return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(_this2.config.color);\n }).reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []);\n geometry.setAttribute('a_color', Float32Array.from(colors), {\n arrayStride: 4 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float4'\n }]\n });\n geometry.setAttribute('a_line_miter', Float32Array.from(attrMiter), {\n arrayStride: 4 * 1,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('a_line_normal', Float32Array.from(attrNormal.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, [])), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 3,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('a_counters', Float32Array.from(attrCounters), {\n arrayStride: 4 * 1,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 4,\n offset: 0,\n format: 'float'\n }]\n });\n }\n }]);\n\n return Line;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_13__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9saW5lL2luZGV4LmpzP2QzMDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBFO0FBQ2dCO0FBQ3RCO0FBQ047QUFDb0I7QUFDMUI7QUFDa0M7QUFDdEI7QUFDb0I7QUFDQTs7QUFFeEY7O0FBRUEsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFN1E7QUFDQztBQUNBO0FBQ1g7O0FBRTNDO0FBQ0Esa0RBQWtELGtDQUFrQyxpQ0FBaUMsbUNBQW1DLHlCQUF5Qix3QkFBd0IsMkJBQTJCLGlCQUFpQiwrREFBK0QsK0JBQStCLG1IQUFtSCxHQUFHOztBQUV6YztBQUNBLHFDQUFxQyx5QkFBeUIsK0JBQStCLCtCQUErQiw2QkFBNkIsa0NBQWtDLCtCQUErQixtQ0FBbUMsMEJBQTBCLHlCQUF5Qix3QkFBd0IsMkJBQTJCLGlCQUFpQixzQkFBc0IsNEJBQTRCLHdEQUF3RCx5RUFBeUUsbURBQW1ELHdGQUF3RixHQUFHO0FBQzlxQixtQkFBbUIsNkRBQVUsWUFBWSx5REFBTSxDQUFDLCtEQUFVLG1CQUFtQix3REFBSyxDQUFDLCtEQUFVLDBCQUEwQix5REFBTSxDQUFDLCtEQUFVLG1CQUFtQix3REFBSyxDQUFDLCtEQUFVLDBCQUEwQix5REFBTSxDQUFDLCtEQUFVO0FBQzdOLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQix1RUFBdUUsYUFBYTtBQUNwRjtBQUNBOztBQUVBOztBQUVBLElBQUksdUZBQTBCLHVDQUF1QyxtRkFBc0I7O0FBRTNGLElBQUksdUZBQTBCLHdDQUF3QyxtRkFBc0I7O0FBRTVGLElBQUksdUZBQTBCLDZDQUE2QyxtRkFBc0I7O0FBRWpHO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLCtCQUErQiwrRUFBa0IsUUFBUSwrRUFBa0I7QUFDM0UsYUFBYSxNQUFNOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUCx3QkFBd0Isd0VBQVU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHVEQUFFO0FBQ2hCLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQSx5QkFBeUIsK0VBQWtCLFFBQVEsK0VBQWtCO0FBQ3JFLE9BQU87QUFDUDtBQUNBLHlCQUF5QiwrRUFBa0IsUUFBUSwrRUFBa0I7QUFDckUsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxlQUFlLCtFQUFrQjtBQUNqQyxPQUFPO0FBQ1AseUJBQXlCLCtFQUFrQixRQUFRLCtFQUFrQjtBQUNyRSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLHlCQUF5QiwrRUFBa0IsUUFBUSwrRUFBa0I7QUFDckUsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQyx1REFBVSwwQkFBMEIsc0ZBQXlCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvbGluZS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX3RlbXA7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2wsIElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IGdldE5vcm1hbHMgZnJvbSAnLi4vLi4vdXRpbHMvcG9seWxpbmUtbm9ybWFscyc7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSAnLi4vUmVuZGVyYWJsZSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wubGluZS5mcmFnLmdsc2wnICovXG52YXIgbGluZUZyYWcgPSBcInVuaWZvcm0gZmxvYXQgdV9kYXNoX2FycmF5IDogMC4wMjtcXG51bmlmb3JtIGZsb2F0IHVfZGFzaF9vZmZzZXQgOiAwO1xcbnVuaWZvcm0gZmxvYXQgdV9kYXNoX3JhdGlvIDogMDtcXG51bmlmb3JtIGZsb2F0IHVfdGhpY2tuZXNzIDogMC4wMjtcXG5cXG52YXJ5aW5nIHZlYzQgdl9jb2xvcjtcXG52YXJ5aW5nIHZlYzIgdl9ub3JtYWw7XFxudmFyeWluZyBmbG9hdCB2X2NvdW50ZXJzO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gICAgZmxvYXQgYmx1ciA9IDEuIC0gc21vb3Roc3RlcCgwLjk4LCAxLiwgbGVuZ3RoKHZfbm9ybWFsKSk7XFxuXFxuICAgIGdsX0ZyYWdDb2xvciA9IHZfY29sb3I7XFxuICAgIGdsX0ZyYWdDb2xvci5hICo9IGJsdXIgKiBjZWlsKG1vZCh2X2NvdW50ZXJzICsgdV9kYXNoX29mZnNldCwgdV9kYXNoX2FycmF5KSAtICh1X2Rhc2hfYXJyYXkgKiB1X2Rhc2hfcmF0aW8pKTtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wubGluZS52ZXJ0Lmdsc2wnICovXG52YXIgbGluZVZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMyIGFfcG9zO1xcbmF0dHJpYnV0ZSB2ZWM0IGFfY29sb3I7XFxuYXR0cmlidXRlIGZsb2F0IGFfbGluZV9taXRlcjtcXG5hdHRyaWJ1dGUgdmVjMiBhX2xpbmVfbm9ybWFsO1xcbmF0dHJpYnV0ZSBmbG9hdCBhX2NvdW50ZXJzO1xcblxcbnVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xcbnVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7XFxudW5pZm9ybSBmbG9hdCB1X3RoaWNrbmVzcyA6IDAuMDI7XFxudW5pZm9ybSB2ZWMyIHVfdmlld3BvcnQ7XFxuXFxudmFyeWluZyB2ZWM0IHZfY29sb3I7XFxudmFyeWluZyB2ZWMyIHZfbm9ybWFsO1xcbnZhcnlpbmcgZmxvYXQgdl9jb3VudGVycztcXG5cXG52b2lkIG1haW4oKSB7XFxuICB2X2NvbG9yID0gYV9jb2xvcjtcXG4gIHZfY291bnRlcnMgPSBhX2NvdW50ZXJzO1xcblxcbiAgdmVjMyBub3JtYWwgPSBub3JtYWxpemUodmVjMyhhX2xpbmVfbm9ybWFsLCAwLjApKTtcXG5cXG4gIHZlYzQgb2Zmc2V0ID0gdmVjNChub3JtYWwgKiB1X3RoaWNrbmVzcyAvIDIuMCAqIGFfbGluZV9taXRlciwgMC4wKTtcXG5cXG4gIHZfbm9ybWFsID0gdmVjMihub3JtYWwgKiBzaWduKGFfbGluZV9taXRlcikpO1xcblxcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNChhX3BvcywgMC4wLCAxLjApICsgb2Zmc2V0O1xcbn1cXG5cIjtcbmV4cG9ydCB2YXIgTGluZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjMyA9IG5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWxTeXN0ZW0pLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjNSA9IG5hbWVkKElERU5USUZJRVIuR2VvbWV0cnlTeXN0ZW0pLCBfZGVjNiA9IGluamVjdChJREVOVElGSUVSLlNoYWRlck1vZHVsZVNlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVuZGVyYWJsZSkge1xuICBfaW5oZXJpdHMoTGluZSwgX1JlbmRlcmFibGUpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTGluZSk7XG5cbiAgZnVuY3Rpb24gTGluZSgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTGluZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwibWF0ZXJpYWxTeXN0ZW1cIiwgX2Rlc2NyaXB0b3IsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcImdlb21ldHJ5U3lzdGVtXCIsIF9kZXNjcmlwdG9yMiwgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBfZGVzY3JpcHRvcjMsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF90aGlzLnZlcnRleENvdW50ID0gdm9pZCAwO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMaW5lLCBbe1xuICAgIGtleTogXCJvbkF0dHJpYnV0ZUNoYW5nZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25BdHRyaWJ1dGVDaGFuZ2VkKF9yZWYpIHtcbiAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7XG4gICAgICB2YXIgbWVzaCA9IHRoaXMuZ2V0TWVzaENvbXBvbmVudCgpO1xuXG4gICAgICBpZiAobWVzaCAmJiBtZXNoLm1hdGVyaWFsKSB7XG4gICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgIGNhc2UgJ2Rhc2hBcnJheSc6XG4gICAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfZGFzaF9hcnJheScsIGRhdGEpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdkYXNoT2Zmc2V0JzpcbiAgICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9kYXNoX29mZnNldCcsIGRhdGEpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdkYXNoUmF0aW8nOlxuICAgICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X2Rhc2hfcmF0aW8nLCBkYXRhKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAndGhpY2tuZXNzJzpcbiAgICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV90aGlja25lc3MnLCBkYXRhKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnY29sb3InOlxuICAgICAgICAgICAgdmFyIGNvbG9ycyA9IG5ldyBBcnJheSh0aGlzLnZlcnRleENvdW50KS5maWxsKHVuZGVmaW5lZCkubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHByZXYpLCBfdG9Db25zdW1hYmxlQXJyYXkoY3VyKSk7XG4gICAgICAgICAgICB9LCBbXSk7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgbWVzaC5nZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfY29sb3InLCBGbG9hdDMyQXJyYXkuZnJvbShjb2xvcnMpLCB7XG4gICAgICAgICAgICAgIGFycmF5U3RyaWRlOiA0ICogNCxcbiAgICAgICAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDQnXG4gICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdGhpcy5zaGFkZXJNb2R1bGVTZXJ2aWNlLnJlZ2lzdGVyTW9kdWxlKCdsaW5lJywge1xuICAgICAgICB2czogbGluZVZlcnQsXG4gICAgICAgIGZzOiBsaW5lRnJhZ1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBfdGhpcyRzaGFkZXJNb2R1bGVTZXIgPSB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UuZ2V0TW9kdWxlKCdsaW5lJyksXG4gICAgICAgICAgdnMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIudnMsXG4gICAgICAgICAgZnMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIuZnMsXG4gICAgICAgICAgZXh0cmFjdGVkVW5pZm9ybXMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIudW5pZm9ybXM7XG5cbiAgICAgIHZhciBtYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxTeXN0ZW0uY3JlYXRlU2hhZGVyTWF0ZXJpYWwoe1xuICAgICAgICB2ZXJ0ZXhTaGFkZXI6IHZzLFxuICAgICAgICBmcmFnbWVudFNoYWRlcjogZnNcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX2dldE5vcm1hbHMgPSBnZXROb3JtYWxzKHRoaXMuY29uZmlnLnBvaW50cywgZmFsc2UpLFxuICAgICAgICAgIG5vcm1hbHMgPSBfZ2V0Tm9ybWFscy5ub3JtYWxzLFxuICAgICAgICAgIGF0dHJJbmRleCA9IF9nZXROb3JtYWxzLmF0dHJJbmRleCxcbiAgICAgICAgICBhdHRyUG9zID0gX2dldE5vcm1hbHMuYXR0clBvcyxcbiAgICAgICAgICBhdHRyQ291bnRlcnMgPSBfZ2V0Tm9ybWFscy5hdHRyQ291bnRlcnM7XG5cbiAgICAgIHZhciB2ZXJ0ZXhDb3VudCA9IGF0dHJQb3MubGVuZ3RoO1xuICAgICAgdGhpcy52ZXJ0ZXhDb3VudCA9IHZlcnRleENvdW50O1xuICAgICAgdmFyIGdlb21ldHJ5ID0gdGhpcy5nZW9tZXRyeVN5c3RlbS5jcmVhdGVCdWZmZXJHZW9tZXRyeSh7XG4gICAgICAgIHZlcnRleENvdW50OiB2ZXJ0ZXhDb3VudFxuICAgICAgfSk7XG4gICAgICB0aGlzLnNldE1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIHRoaXMuc2V0R2VvbWV0cnkoZ2VvbWV0cnkpO1xuICAgICAgbWF0ZXJpYWwuc2V0Q3VsbCh7XG4gICAgICAgIGVuYWJsZTogZmFsc2UsXG4gICAgICAgIGZhY2U6IGdsLkJBQ0tcbiAgICAgIH0pIC8vIEB0cy1pZ25vcmVcbiAgICAgIC5zZXRVbmlmb3JtKGV4dHJhY3RlZFVuaWZvcm1zKTtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlcyh7XG4gICAgICAgIGRhc2hBcnJheTogdGhpcy5jb25maWcuZGFzaEFycmF5LFxuICAgICAgICBkYXNoT2Zmc2V0OiB0aGlzLmNvbmZpZy5kYXNoT2Zmc2V0LFxuICAgICAgICBkYXNoUmF0aW86IHRoaXMuY29uZmlnLmRhc2hSYXRpbyxcbiAgICAgICAgdGhpY2tuZXNzOiB0aGlzLmNvbmZpZy50aGlja25lc3NcbiAgICAgIH0pO1xuICAgICAgdmFyIGF0dHJOb3JtYWwgPSBbXTtcbiAgICAgIHZhciBhdHRyTWl0ZXIgPSBbXTtcbiAgICAgIG5vcm1hbHMuZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICB2YXIgbm9ybSA9IG5bMF07XG4gICAgICAgIHZhciBtaXRlciA9IG5bMV07XG4gICAgICAgIGF0dHJOb3JtYWwucHVzaChbbm9ybVswXSwgbm9ybVsxXV0pOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgYXR0ck1pdGVyLnB1c2gobWl0ZXIpO1xuICAgICAgfSk7IC8vIFtbMCwxLDJdLCBbMiwxLDNdXVxuXG4gICAgICBnZW9tZXRyeS5zZXRJbmRleChhdHRySW5kZXgucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXIpIHtcbiAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocHJldiksIF90b0NvbnN1bWFibGVBcnJheShjdXIpKTtcbiAgICAgIH0sIFtdKSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfcG9zJywgRmxvYXQzMkFycmF5LmZyb20oYXR0clBvcy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShwcmV2KSwgX3RvQ29uc3VtYWJsZUFycmF5KGN1cikpO1xuICAgICAgfSwgW10pKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICB2YXIgY29sb3JzID0gbmV3IEFycmF5KHZlcnRleENvdW50KS5maWxsKHVuZGVmaW5lZCkubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90b0NvbnN1bWFibGVBcnJheShfdGhpczIuY29uZmlnLmNvbG9yKTtcbiAgICAgIH0pLnJlZHVjZShmdW5jdGlvbiAocHJldiwgY3VyKSB7XG4gICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHByZXYpLCBfdG9Db25zdW1hYmxlQXJyYXkoY3VyKSk7XG4gICAgICB9LCBbXSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfY29sb3InLCBGbG9hdDMyQXJyYXkuZnJvbShjb2xvcnMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogNCxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDQnXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9saW5lX21pdGVyJywgRmxvYXQzMkFycmF5LmZyb20oYXR0ck1pdGVyKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDEsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMixcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQnXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9saW5lX25vcm1hbCcsIEZsb2F0MzJBcnJheS5mcm9tKGF0dHJOb3JtYWwucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXIpIHtcbiAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocHJldiksIF90b0NvbnN1bWFibGVBcnJheShjdXIpKTtcbiAgICAgIH0sIFtdKSksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDMsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdhX2NvdW50ZXJzJywgRmxvYXQzMkFycmF5LmZyb20oYXR0ckNvdW50ZXJzKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDEsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogNCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQnXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGluZTtcbn0oUmVuZGVyYWJsZSksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJtYXRlcmlhbFN5c3RlbVwiLCBbX2RlYzIsIF9kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlTeXN0ZW1cIiwgW19kZWM0LCBfZGVjNV0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgW19kZWM2XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/renderable/line/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/renderable/point/index.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/renderable/point/index.js ***! \******************************************************************/ /*! exports provided: Point */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Point\", function() { return Point; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _utils_picking__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils/picking */ \"./node_modules/@antv/g-webgpu/es/utils/picking.js\");\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.point.frag.glsl' */\nvar pointFrag = \"uniform float u_blur : 0.05;\\nuniform float u_opacity : 0.7;\\nuniform float u_stroke_width : 0.01;\\nuniform vec4 u_stroke_color : [0, 0, 0, 0];\\nuniform float u_stroke_opacity : 1;\\n\\nvarying vec4 v_color;\\nvarying vec4 v_data;\\nvarying float v_radius;\\n\\n#pragma include \\\"sdf2d\\\"\\n#pragma include \\\"picking\\\"\\n\\nvoid main() {\\n int shape = int(floor(v_data.w + 0.5));\\n\\n float antialiasblur = v_data.z;\\n float antialiased_blur = -max(u_blur, antialiasblur);\\n float r = v_radius / (v_radius + u_stroke_width);\\n\\n float outer_df;\\n float inner_df;\\n // 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'\\n // if (shape == 0) {\\n outer_df = sdCircle(v_data.xy, 1.0);\\n inner_df = sdCircle(v_data.xy, r);\\n // } else if (shape == 1) {\\n // outer_df = sdEquilateralTriangle(1.1 * v_data.xy);\\n // inner_df = sdEquilateralTriangle(1.1 / r * v_data.xy);\\n // } else if (shape == 2) {\\n // outer_df = sdBox(v_data.xy, vec2(1.));\\n // inner_df = sdBox(v_data.xy, vec2(r));\\n // } else if (shape == 3) {\\n // outer_df = sdPentagon(v_data.xy, 0.8);\\n // inner_df = sdPentagon(v_data.xy, r * 0.8);\\n // } else if (shape == 4) {\\n // outer_df = sdHexagon(v_data.xy, 0.8);\\n // inner_df = sdHexagon(v_data.xy, r * 0.8);\\n // } else if (shape == 5) {\\n // outer_df = sdOctogon(v_data.xy, 1.0);\\n // inner_df = sdOctogon(v_data.xy, r);\\n // } else if (shape == 6) {\\n // outer_df = sdHexagram(v_data.xy, 0.52);\\n // inner_df = sdHexagram(v_data.xy, r * 0.52);\\n // } else if (shape == 7) {\\n // outer_df = sdRhombus(v_data.xy, vec2(1.0));\\n // inner_df = sdRhombus(v_data.xy, vec2(r));\\n // } else if (shape == 8) {\\n // outer_df = sdVesica(v_data.xy, 1.1, 0.8);\\n // inner_df = sdVesica(v_data.xy, r * 1.1, r * 0.8);\\n // }\\n\\n float opacity_t = smoothstep(0.0, antialiased_blur, outer_df);\\n\\n float color_t = u_stroke_width < 0.01 ? 0.0 : smoothstep(\\n antialiased_blur,\\n 0.0,\\n inner_df\\n );\\n vec4 strokeColor = u_stroke_color == vec4(0) ? v_color : u_stroke_color;\\n\\n gl_FragColor = mix(vec4(v_color.rgb, v_color.a * u_opacity), strokeColor * u_stroke_opacity, color_t);\\n gl_FragColor.a = gl_FragColor.a * opacity_t;\\n\\n gl_FragColor = filterColor(gl_FragColor);\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.point.vert.glsl' */\nvar pointVert = \"attribute vec2 position;\\nattribute vec4 color;\\nattribute float shape;\\nattribute vec2 offset;\\nattribute float size;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\n\\nuniform float u_stroke_width : 0.01;\\nuniform float u_device_pixel_ratio;\\nuniform vec2 u_viewport;\\n\\nvarying vec4 v_color;\\nvarying vec4 v_data;\\nvarying float v_radius;\\n\\n#pragma include \\\"picking\\\"\\n\\nvoid main() {\\n v_color = color;\\n v_radius = size;\\n\\n lowp float antialiasblur = 1.0 / u_device_pixel_ratio * (size + u_stroke_width);\\n\\n // construct point coords\\n v_data = vec4(position, antialiasblur, shape);\\n\\n gl_Position = projectionMatrix * modelViewMatrix\\n * vec4(position * size + offset, 0.0, 1.0);\\n\\n setPickingColor(a_PickingColor);\\n}\";\nvar pointShapes = ['circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'];\nvar Point = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(Point, _Renderable);\n\n var _super = _createSuper(Point);\n\n function Point() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Point);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(Point, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n if (name === 'strokeWidth') {\n mesh.material.setUniform('u_stroke_width', data);\n } else if (name === 'strokeColor') {\n mesh.material.setUniform('u_stroke_color', data);\n } else if (name === 'strokeOpacity') {\n mesh.material.setUniform('u_stroke_opacity', data);\n } else if (name === 'opacity') {\n mesh.material.setUniform('u_opacity', data);\n } else if (name === 'blur') {\n mesh.material.setUniform('u_blur', data);\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n this.shaderModuleService.registerModule('grid', {\n vs: pointVert,\n fs: pointFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('grid'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs,\n cull: {\n enable: false\n },\n depth: {\n enable: false\n },\n blend: {\n enable: true,\n func: {\n srcRGB: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"gl\"].SRC_ALPHA,\n dstRGB: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"gl\"].ONE_MINUS_SRC_ALPHA,\n srcAlpha: 1,\n dstAlpha: 1\n }\n }\n }); // TODO: support define stroke-relative props per point\n\n material.setUniform(_objectSpread({\n u_device_pixel_ratio: window.devicePixelRatio\n }, extractedUniforms));\n var attributes = this.buildAttributes();\n var geometry = this.geometrySystem.createInstancedBufferGeometry({\n maxInstancedCount: attributes.instancedOffsets.length / 2,\n vertexCount: 6\n });\n geometry.setIndex([0, 2, 1, 0, 3, 2]);\n geometry.setAttribute('position', Float32Array.from(attributes.positions), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('offset', Float32Array.from(attributes.instancedOffsets), {\n arrayStride: 4 * 2,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('color', Float32Array.from(attributes.instancedColors), {\n arrayStride: 4 * 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float4'\n }]\n });\n geometry.setAttribute('size', Float32Array.from(attributes.instancedSizes), {\n arrayStride: 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 3,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('shape', Float32Array.from(attributes.instancedShapes), {\n arrayStride: 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 4,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('a_PickingColor', Float32Array.from(attributes.instancedPickingColors), {\n arrayStride: 4 * 3,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 6,\n offset: 0,\n format: 'float3'\n }]\n });\n this.setMaterial(material);\n this.setGeometry(geometry);\n }\n }, {\n key: \"buildAttribute\",\n value: function buildAttribute(config, attributes, index) {\n var _attributes$instanced, _attributes$instanced2, _attributes$instanced3, _attributes$instanced4;\n\n (_attributes$instanced = attributes.instancedPickingColors).push.apply(_attributes$instanced, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Object(_utils_picking__WEBPACK_IMPORTED_MODULE_13__[\"encodePickingColor\"])(config.id || index)));\n\n attributes.instancedShapes.push(pointShapes.indexOf(config.shape || 'circle'));\n\n (_attributes$instanced2 = attributes.instancedColors).push.apply(_attributes$instanced2, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.color || [1, 0, 0, 1]));\n\n (_attributes$instanced3 = attributes.instancedOffsets).push.apply(_attributes$instanced3, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.position || [0, 0]));\n\n (_attributes$instanced4 = attributes.instancedSizes).push.apply(_attributes$instanced4, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.size || [0.2, 0.2]));\n }\n }, {\n key: \"buildAttributes\",\n value: function buildAttributes() {\n var _this2 = this;\n\n var attributes = {\n positions: [1, 1, 1, -1, -1, -1, -1, 1],\n instancedOffsets: [],\n instancedColors: [],\n instancedSizes: [],\n instancedShapes: [],\n instancedPickingColors: []\n };\n\n if (Array.isArray(this.config)) {\n this.config.forEach(function (config, i) {\n _this2.buildAttribute(config, attributes, i);\n });\n } else {\n this.buildAttribute(this.config, attributes, 0);\n }\n\n return attributes;\n }\n }]);\n\n return Point;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_14__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9wb2ludC9pbmRleC5qcz9hMjE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEU7QUFDTjtBQUNzQjtBQUN0QjtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCO0FBQ29CO0FBQ0E7O0FBRXhGOztBQUVBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLHVEQUF1RCxDQUFDLDRFQUFlLDJCQUEyQixFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyxpREFBaUQsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGhCLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRTdRO0FBQ0M7QUFDRztBQUNkOztBQUUzQztBQUNBLDZDQUE2QyxnQ0FBZ0Msc0NBQXNDLDZDQUE2QyxxQ0FBcUMseUJBQXlCLHNCQUFzQix5QkFBeUIsMkVBQTJFLDJDQUEyQyxxQ0FBcUMseURBQXlELHFEQUFxRCxxQkFBcUIsbUJBQW1CLGdJQUFnSSwwQ0FBMEMsd0NBQXdDLFFBQVEsdUJBQXVCLDJEQUEyRCwrREFBK0QsUUFBUSx1QkFBdUIsK0NBQStDLDhDQUE4QyxRQUFRLHVCQUF1QiwrQ0FBK0MsbURBQW1ELFFBQVEsdUJBQXVCLDhDQUE4QyxrREFBa0QsUUFBUSx1QkFBdUIsOENBQThDLDRDQUE0QyxRQUFRLHVCQUF1QixnREFBZ0Qsb0RBQW9ELFFBQVEsdUJBQXVCLG9EQUFvRCxrREFBa0QsUUFBUSx1QkFBdUIsa0RBQWtELDBEQUEwRCxRQUFRLG9FQUFvRSxvSEFBb0gsNEVBQTRFLDRHQUE0RyxnREFBZ0QsK0NBQStDLEdBQUc7O0FBRTN3RTtBQUNBLHlDQUF5Qyx1QkFBdUIsd0JBQXdCLHdCQUF3Qix1QkFBdUIsa0NBQWtDLCtCQUErQix3Q0FBd0MscUNBQXFDLDBCQUEwQix5QkFBeUIsc0JBQXNCLHlCQUF5QixnREFBZ0Qsb0JBQW9CLG9CQUFvQixzRkFBc0YsaUZBQWlGLHVHQUF1RyxzQ0FBc0MsR0FBRztBQUN0d0I7QUFLQSxvQkFBb0IsNkRBQVUsWUFBWSx5REFBTSxDQUFDLCtEQUFVLG1CQUFtQix3REFBSyxDQUFDLCtEQUFVLDBCQUEwQix5REFBTSxDQUFDLCtEQUFVLG1CQUFtQix3REFBSyxDQUFDLCtEQUFVLDBCQUEwQix5REFBTSxDQUFDLCtEQUFVO0FBQ3ZOLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQix1RUFBdUUsYUFBYTtBQUNwRjtBQUNBOztBQUVBOztBQUVBLElBQUksdUZBQTBCLHVDQUF1QyxtRkFBc0I7O0FBRTNGLElBQUksdUZBQTBCLHdDQUF3QyxtRkFBc0I7O0FBRTVGLElBQUksdUZBQTBCLDZDQUE2QyxtRkFBc0I7O0FBRWpHO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdURBQUU7QUFDdEIsb0JBQW9CLHVEQUFFO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLG9HQUFvRywrRUFBa0IsQ0FBQywwRUFBa0I7O0FBRXpJOztBQUVBLCtGQUErRiwrRUFBa0I7O0FBRWpILGdHQUFnRywrRUFBa0I7O0FBRWxILDhGQUE4RiwrRUFBa0I7QUFDaEg7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLHVEQUFVLDBCQUEwQixzRkFBeUI7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9wb2ludC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX3RlbXA7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IGdsLCBJREVOVElGSUVSIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUsIG5hbWVkIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IGVuY29kZVBpY2tpbmdDb2xvciB9IGZyb20gJy4uLy4uL3V0aWxzL3BpY2tpbmcnO1xuaW1wb3J0IHsgUmVuZGVyYWJsZSB9IGZyb20gJy4uL1JlbmRlcmFibGUnO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdsLnBvaW50LmZyYWcuZ2xzbCcgKi9cbnZhciBwb2ludEZyYWcgPSBcInVuaWZvcm0gZmxvYXQgdV9ibHVyIDogMC4wNTtcXG51bmlmb3JtIGZsb2F0IHVfb3BhY2l0eSA6IDAuNztcXG51bmlmb3JtIGZsb2F0IHVfc3Ryb2tlX3dpZHRoIDogMC4wMTtcXG51bmlmb3JtIHZlYzQgdV9zdHJva2VfY29sb3IgOiBbMCwgMCwgMCwgMF07XFxudW5pZm9ybSBmbG9hdCB1X3N0cm9rZV9vcGFjaXR5IDogMTtcXG5cXG52YXJ5aW5nIHZlYzQgdl9jb2xvcjtcXG52YXJ5aW5nIHZlYzQgdl9kYXRhO1xcbnZhcnlpbmcgZmxvYXQgdl9yYWRpdXM7XFxuXFxuI3ByYWdtYSBpbmNsdWRlIFxcXCJzZGYyZFxcXCJcXG4jcHJhZ21hIGluY2x1ZGUgXFxcInBpY2tpbmdcXFwiXFxuXFxudm9pZCBtYWluKCkge1xcbiAgaW50IHNoYXBlID0gaW50KGZsb29yKHZfZGF0YS53ICsgMC41KSk7XFxuXFxuICBmbG9hdCBhbnRpYWxpYXNibHVyID0gdl9kYXRhLno7XFxuICBmbG9hdCBhbnRpYWxpYXNlZF9ibHVyID0gLW1heCh1X2JsdXIsIGFudGlhbGlhc2JsdXIpO1xcbiAgZmxvYXQgciA9IHZfcmFkaXVzIC8gKHZfcmFkaXVzICsgdV9zdHJva2Vfd2lkdGgpO1xcblxcbiAgZmxvYXQgb3V0ZXJfZGY7XFxuICBmbG9hdCBpbm5lcl9kZjtcXG4gIC8vICdjaXJjbGUnLCAndHJpYW5nbGUnLCAnc3F1YXJlJywgJ3BlbnRhZ29uJywgJ2hleGFnb24nLCAnb2N0b2dvbicsICdoZXhhZ3JhbScsICdyaG9tYnVzJywgJ3Zlc2ljYSdcXG4gIC8vIGlmIChzaGFwZSA9PSAwKSB7XFxuICAgIG91dGVyX2RmID0gc2RDaXJjbGUodl9kYXRhLnh5LCAxLjApO1xcbiAgICBpbm5lcl9kZiA9IHNkQ2lyY2xlKHZfZGF0YS54eSwgcik7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDEpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZEVxdWlsYXRlcmFsVHJpYW5nbGUoMS4xICogdl9kYXRhLnh5KTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZEVxdWlsYXRlcmFsVHJpYW5nbGUoMS4xIC8gciAqIHZfZGF0YS54eSk7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDIpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZEJveCh2X2RhdGEueHksIHZlYzIoMS4pKTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZEJveCh2X2RhdGEueHksIHZlYzIocikpO1xcbiAgLy8gfSBlbHNlIGlmIChzaGFwZSA9PSAzKSB7XFxuICAvLyAgIG91dGVyX2RmID0gc2RQZW50YWdvbih2X2RhdGEueHksIDAuOCk7XFxuICAvLyAgIGlubmVyX2RmID0gc2RQZW50YWdvbih2X2RhdGEueHksIHIgKiAwLjgpO1xcbiAgLy8gfSBlbHNlIGlmIChzaGFwZSA9PSA0KSB7XFxuICAvLyAgIG91dGVyX2RmID0gc2RIZXhhZ29uKHZfZGF0YS54eSwgMC44KTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZEhleGFnb24odl9kYXRhLnh5LCByICogMC44KTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gNSkge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkT2N0b2dvbih2X2RhdGEueHksIDEuMCk7XFxuICAvLyAgIGlubmVyX2RmID0gc2RPY3RvZ29uKHZfZGF0YS54eSwgcik7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDYpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZEhleGFncmFtKHZfZGF0YS54eSwgMC41Mik7XFxuICAvLyAgIGlubmVyX2RmID0gc2RIZXhhZ3JhbSh2X2RhdGEueHksIHIgKiAwLjUyKTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gNykge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkUmhvbWJ1cyh2X2RhdGEueHksIHZlYzIoMS4wKSk7XFxuICAvLyAgIGlubmVyX2RmID0gc2RSaG9tYnVzKHZfZGF0YS54eSwgdmVjMihyKSk7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDgpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZFZlc2ljYSh2X2RhdGEueHksIDEuMSwgMC44KTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZFZlc2ljYSh2X2RhdGEueHksIHIgKiAxLjEsIHIgKiAwLjgpO1xcbiAgLy8gfVxcblxcbiAgZmxvYXQgb3BhY2l0eV90ID0gc21vb3Roc3RlcCgwLjAsIGFudGlhbGlhc2VkX2JsdXIsIG91dGVyX2RmKTtcXG5cXG4gIGZsb2F0IGNvbG9yX3QgPSB1X3N0cm9rZV93aWR0aCA8IDAuMDEgPyAwLjAgOiBzbW9vdGhzdGVwKFxcbiAgICBhbnRpYWxpYXNlZF9ibHVyLFxcbiAgICAwLjAsXFxuICAgIGlubmVyX2RmXFxuICApO1xcbiAgdmVjNCBzdHJva2VDb2xvciA9IHVfc3Ryb2tlX2NvbG9yID09IHZlYzQoMCkgPyB2X2NvbG9yIDogdV9zdHJva2VfY29sb3I7XFxuXFxuICBnbF9GcmFnQ29sb3IgPSBtaXgodmVjNCh2X2NvbG9yLnJnYiwgdl9jb2xvci5hICogdV9vcGFjaXR5KSwgc3Ryb2tlQ29sb3IgKiB1X3N0cm9rZV9vcGFjaXR5LCBjb2xvcl90KTtcXG4gIGdsX0ZyYWdDb2xvci5hID0gZ2xfRnJhZ0NvbG9yLmEgKiBvcGFjaXR5X3Q7XFxuXFxuICBnbF9GcmFnQ29sb3IgPSBmaWx0ZXJDb2xvcihnbF9GcmFnQ29sb3IpO1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5wb2ludC52ZXJ0Lmdsc2wnICovXG52YXIgcG9pbnRWZXJ0ID0gXCJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcXG5hdHRyaWJ1dGUgdmVjNCBjb2xvcjtcXG5hdHRyaWJ1dGUgZmxvYXQgc2hhcGU7XFxuYXR0cmlidXRlIHZlYzIgb2Zmc2V0O1xcbmF0dHJpYnV0ZSBmbG9hdCBzaXplO1xcblxcbnVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xcbnVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7XFxuXFxudW5pZm9ybSBmbG9hdCB1X3N0cm9rZV93aWR0aCA6IDAuMDE7XFxudW5pZm9ybSBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbztcXG51bmlmb3JtIHZlYzIgdV92aWV3cG9ydDtcXG5cXG52YXJ5aW5nIHZlYzQgdl9jb2xvcjtcXG52YXJ5aW5nIHZlYzQgdl9kYXRhO1xcbnZhcnlpbmcgZmxvYXQgdl9yYWRpdXM7XFxuXFxuI3ByYWdtYSBpbmNsdWRlIFxcXCJwaWNraW5nXFxcIlxcblxcbnZvaWQgbWFpbigpIHtcXG4gIHZfY29sb3IgPSBjb2xvcjtcXG4gIHZfcmFkaXVzID0gc2l6ZTtcXG5cXG4gIGxvd3AgZmxvYXQgYW50aWFsaWFzYmx1ciA9IDEuMCAvIHVfZGV2aWNlX3BpeGVsX3JhdGlvICogKHNpemUgKyB1X3N0cm9rZV93aWR0aCk7XFxuXFxuICAvLyBjb25zdHJ1Y3QgcG9pbnQgY29vcmRzXFxuICB2X2RhdGEgPSB2ZWM0KHBvc2l0aW9uLCBhbnRpYWxpYXNibHVyLCBzaGFwZSk7XFxuXFxuICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXhcXG4gICAgKiB2ZWM0KHBvc2l0aW9uICogc2l6ZSArIG9mZnNldCwgMC4wLCAxLjApO1xcblxcbiAgc2V0UGlja2luZ0NvbG9yKGFfUGlja2luZ0NvbG9yKTtcXG59XCI7XG52YXIgcG9pbnRTaGFwZXMgPSBbJ2NpcmNsZScsICd0cmlhbmdsZScsICdzcXVhcmUnLCAncGVudGFnb24nLCAnaGV4YWdvbicsICdvY3RvZ29uJywgJ2hleGFncmFtJywgJ3Job21idXMnLCAndmVzaWNhJ107XG5leHBvcnRcbi8qKlxuICogVXNlIFNERiB0byBkcmF3IDJEIHBvaW50IHdpdGggc3Ryb2tlLlxuICovXG52YXIgUG9pbnQgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzMgPSBuYW1lZChJREVOVElGSUVSLk1hdGVyaWFsU3lzdGVtKSwgX2RlYzQgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzUgPSBuYW1lZChJREVOVElGSUVSLkdlb21ldHJ5U3lzdGVtKSwgX2RlYzYgPSBpbmplY3QoSURFTlRJRklFUi5TaGFkZXJNb2R1bGVTZXJ2aWNlKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlbmRlcmFibGUpIHtcbiAgX2luaGVyaXRzKFBvaW50LCBfUmVuZGVyYWJsZSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihQb2ludCk7XG5cbiAgZnVuY3Rpb24gUG9pbnQoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBvaW50KTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJtYXRlcmlhbFN5c3RlbVwiLCBfZGVzY3JpcHRvciwgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiZ2VvbWV0cnlTeXN0ZW1cIiwgX2Rlc2NyaXB0b3IyLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJzaGFkZXJNb2R1bGVTZXJ2aWNlXCIsIF9kZXNjcmlwdG9yMywgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFBvaW50LCBbe1xuICAgIGtleTogXCJvbkF0dHJpYnV0ZUNoYW5nZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25BdHRyaWJ1dGVDaGFuZ2VkKF9yZWYpIHtcbiAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7XG4gICAgICB2YXIgbWVzaCA9IHRoaXMuZ2V0TWVzaENvbXBvbmVudCgpO1xuXG4gICAgICBpZiAobWVzaCAmJiBtZXNoLm1hdGVyaWFsKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnc3Ryb2tlV2lkdGgnKSB7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X3N0cm9rZV93aWR0aCcsIGRhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdzdHJva2VDb2xvcicpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3Vfc3Ryb2tlX2NvbG9yJywgZGF0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3N0cm9rZU9wYWNpdHknKSB7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X3N0cm9rZV9vcGFjaXR5JywgZGF0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ29wYWNpdHknKSB7XG4gICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X29wYWNpdHknLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChuYW1lID09PSAnYmx1cicpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfYmx1cicsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7XG4gICAgICB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UucmVnaXN0ZXJNb2R1bGUoJ2dyaWQnLCB7XG4gICAgICAgIHZzOiBwb2ludFZlcnQsXG4gICAgICAgIGZzOiBwb2ludEZyYWdcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX3RoaXMkc2hhZGVyTW9kdWxlU2VyID0gdGhpcy5zaGFkZXJNb2R1bGVTZXJ2aWNlLmdldE1vZHVsZSgnZ3JpZCcpLFxuICAgICAgICAgIHZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnZzLFxuICAgICAgICAgIGZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLmZzLFxuICAgICAgICAgIGV4dHJhY3RlZFVuaWZvcm1zID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnVuaWZvcm1zO1xuXG4gICAgICB2YXIgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsU3lzdGVtLmNyZWF0ZVNoYWRlck1hdGVyaWFsKHtcbiAgICAgICAgdmVydGV4U2hhZGVyOiB2cyxcbiAgICAgICAgZnJhZ21lbnRTaGFkZXI6IGZzLFxuICAgICAgICBjdWxsOiB7XG4gICAgICAgICAgZW5hYmxlOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBkZXB0aDoge1xuICAgICAgICAgIGVuYWJsZTogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgYmxlbmQ6IHtcbiAgICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgICAgZnVuYzoge1xuICAgICAgICAgICAgc3JjUkdCOiBnbC5TUkNfQUxQSEEsXG4gICAgICAgICAgICBkc3RSR0I6IGdsLk9ORV9NSU5VU19TUkNfQUxQSEEsXG4gICAgICAgICAgICBzcmNBbHBoYTogMSxcbiAgICAgICAgICAgIGRzdEFscGhhOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTsgLy8gVE9ETzogc3VwcG9ydCBkZWZpbmUgc3Ryb2tlLXJlbGF0aXZlIHByb3BzIHBlciBwb2ludFxuXG4gICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICB1X2RldmljZV9waXhlbF9yYXRpbzogd2luZG93LmRldmljZVBpeGVsUmF0aW9cbiAgICAgIH0sIGV4dHJhY3RlZFVuaWZvcm1zKSk7XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuYnVpbGRBdHRyaWJ1dGVzKCk7XG4gICAgICB2YXIgZ2VvbWV0cnkgPSB0aGlzLmdlb21ldHJ5U3lzdGVtLmNyZWF0ZUluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KHtcbiAgICAgICAgbWF4SW5zdGFuY2VkQ291bnQ6IGF0dHJpYnV0ZXMuaW5zdGFuY2VkT2Zmc2V0cy5sZW5ndGggLyAyLFxuICAgICAgICB2ZXJ0ZXhDb3VudDogNlxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRJbmRleChbMCwgMiwgMSwgMCwgMywgMl0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsIEZsb2F0MzJBcnJheS5mcm9tKGF0dHJpYnV0ZXMucG9zaXRpb25zKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ29mZnNldCcsIEZsb2F0MzJBcnJheS5mcm9tKGF0dHJpYnV0ZXMuaW5zdGFuY2VkT2Zmc2V0cyksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiAyLFxuICAgICAgICBzdGVwTW9kZTogJ2luc3RhbmNlJyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMSxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2NvbG9yJywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5pbnN0YW5jZWRDb2xvcnMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogNCxcbiAgICAgICAgc3RlcE1vZGU6ICdpbnN0YW5jZScsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDIsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0NCdcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdzaXplJywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5pbnN0YW5jZWRTaXplcyksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQsXG4gICAgICAgIHN0ZXBNb2RlOiAnaW5zdGFuY2UnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAzLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdCdcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdzaGFwZScsIEZsb2F0MzJBcnJheS5mcm9tKGF0dHJpYnV0ZXMuaW5zdGFuY2VkU2hhcGVzKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCxcbiAgICAgICAgc3RlcE1vZGU6ICdpbnN0YW5jZScsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDQsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0J1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfUGlja2luZ0NvbG9yJywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5pbnN0YW5jZWRQaWNraW5nQ29sb3JzKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDMsXG4gICAgICAgIHN0ZXBNb2RlOiAnaW5zdGFuY2UnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiA2LFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2V0TWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgdGhpcy5zZXRHZW9tZXRyeShnZW9tZXRyeSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImJ1aWxkQXR0cmlidXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJ1aWxkQXR0cmlidXRlKGNvbmZpZywgYXR0cmlidXRlcywgaW5kZXgpIHtcbiAgICAgIHZhciBfYXR0cmlidXRlcyRpbnN0YW5jZWQsIF9hdHRyaWJ1dGVzJGluc3RhbmNlZDIsIF9hdHRyaWJ1dGVzJGluc3RhbmNlZDMsIF9hdHRyaWJ1dGVzJGluc3RhbmNlZDQ7XG5cbiAgICAgIChfYXR0cmlidXRlcyRpbnN0YW5jZWQgPSBhdHRyaWJ1dGVzLmluc3RhbmNlZFBpY2tpbmdDb2xvcnMpLnB1c2guYXBwbHkoX2F0dHJpYnV0ZXMkaW5zdGFuY2VkLCBfdG9Db25zdW1hYmxlQXJyYXkoZW5jb2RlUGlja2luZ0NvbG9yKGNvbmZpZy5pZCB8fCBpbmRleCkpKTtcblxuICAgICAgYXR0cmlidXRlcy5pbnN0YW5jZWRTaGFwZXMucHVzaChwb2ludFNoYXBlcy5pbmRleE9mKGNvbmZpZy5zaGFwZSB8fCAnY2lyY2xlJykpO1xuXG4gICAgICAoX2F0dHJpYnV0ZXMkaW5zdGFuY2VkMiA9IGF0dHJpYnV0ZXMuaW5zdGFuY2VkQ29sb3JzKS5wdXNoLmFwcGx5KF9hdHRyaWJ1dGVzJGluc3RhbmNlZDIsIF90b0NvbnN1bWFibGVBcnJheShjb25maWcuY29sb3IgfHwgWzEsIDAsIDAsIDFdKSk7XG5cbiAgICAgIChfYXR0cmlidXRlcyRpbnN0YW5jZWQzID0gYXR0cmlidXRlcy5pbnN0YW5jZWRPZmZzZXRzKS5wdXNoLmFwcGx5KF9hdHRyaWJ1dGVzJGluc3RhbmNlZDMsIF90b0NvbnN1bWFibGVBcnJheShjb25maWcucG9zaXRpb24gfHwgWzAsIDBdKSk7XG5cbiAgICAgIChfYXR0cmlidXRlcyRpbnN0YW5jZWQ0ID0gYXR0cmlidXRlcy5pbnN0YW5jZWRTaXplcykucHVzaC5hcHBseShfYXR0cmlidXRlcyRpbnN0YW5jZWQ0LCBfdG9Db25zdW1hYmxlQXJyYXkoY29uZmlnLnNpemUgfHwgWzAuMiwgMC4yXSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJidWlsZEF0dHJpYnV0ZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYnVpbGRBdHRyaWJ1dGVzKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBhdHRyaWJ1dGVzID0ge1xuICAgICAgICBwb3NpdGlvbnM6IFsxLCAxLCAxLCAtMSwgLTEsIC0xLCAtMSwgMV0sXG4gICAgICAgIGluc3RhbmNlZE9mZnNldHM6IFtdLFxuICAgICAgICBpbnN0YW5jZWRDb2xvcnM6IFtdLFxuICAgICAgICBpbnN0YW5jZWRTaXplczogW10sXG4gICAgICAgIGluc3RhbmNlZFNoYXBlczogW10sXG4gICAgICAgIGluc3RhbmNlZFBpY2tpbmdDb2xvcnM6IFtdXG4gICAgICB9O1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZykpIHtcbiAgICAgICAgdGhpcy5jb25maWcuZm9yRWFjaChmdW5jdGlvbiAoY29uZmlnLCBpKSB7XG4gICAgICAgICAgX3RoaXMyLmJ1aWxkQXR0cmlidXRlKGNvbmZpZywgYXR0cmlidXRlcywgaSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5idWlsZEF0dHJpYnV0ZSh0aGlzLmNvbmZpZywgYXR0cmlidXRlcywgMCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBQb2ludDtcbn0oUmVuZGVyYWJsZSksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJtYXRlcmlhbFN5c3RlbVwiLCBbX2RlYzIsIF9kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlTeXN0ZW1cIiwgW19kZWM0LCBfZGVjNV0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgW19kZWM2XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/renderable/point/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/texture/Cache.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/texture/Cache.js ***! \*********************************************************/ /*! exports provided: TextureCache */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TextureCache\", function() { return TextureCache; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar TextureCache = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function TextureCache() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, TextureCache);\n\n this.cache = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(TextureCache, [{\n key: \"get\",\n value: function get(name) {\n return this.cache[name];\n }\n }, {\n key: \"set\",\n value: function set(name, texture) {\n this.cache[name] = texture;\n }\n }]);\n\n return TextureCache;\n}(), _temp)) || _class);\n//# sourceMappingURL=Cache.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdGV4dHVyZS9DYWNoZS5qcz84NTA5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7O0FBRXVDO0FBQ2hDLDJCQUEyQiw0REFBVTtBQUM1QztBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy90ZXh0dXJlL0NhY2hlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIFRleHR1cmVDYWNoZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRleHR1cmVDYWNoZSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGV4dHVyZUNhY2hlKTtcblxuICAgIHRoaXMuY2FjaGUgPSB7fTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUZXh0dXJlQ2FjaGUsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQobmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVbbmFtZV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQobmFtZSwgdGV4dHVyZSkge1xuICAgICAgdGhpcy5jYWNoZVtuYW1lXSA9IHRleHR1cmU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRleHR1cmVDYWNoZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2FjaGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/texture/Cache.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/texture/Texture2D.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/texture/Texture2D.js ***! \*************************************************************/ /*! exports provided: Texture2D */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Texture2D\", function() { return Texture2D; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! inversify */ \"./node_modules/inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Cache__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Cache */ \"./node_modules/@antv/g-webgpu/es/texture/Cache.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\nvar Texture2D = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_Cache__WEBPACK_IMPORTED_MODULE_10__[\"TextureCache\"]), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Texture2D() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, Texture2D);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"textureCache\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor2, this);\n\n this.config = void 0;\n this.loaded = false;\n this.texture = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(Texture2D, [{\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return this.loaded;\n } // public update(config: ITexture2DInitializationOptions) {\n // if (this.loaded && this.texture) {\n // const t = this.texture.get();\n // }\n // }\n\n }, {\n key: \"load\",\n value: function () {\n var _load = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this.config.url) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n var existed = _this.textureCache.get(_this.config.url);\n\n if (existed) {\n resolve(existed);\n } else {\n var image = new Image();\n image.crossOrigin = 'Anonymous';\n image.src = _this.config.url;\n\n image.onload = function () {\n var texture = _this.engine.createTexture2D(_objectSpread(_objectSpread({}, _this.config), {}, {\n data: image,\n width: image.width,\n height: image.height,\n flipY: true\n }));\n\n _this.textureCache.set(_this.config.url, texture);\n\n _this.texture = texture;\n _this.loaded = true;\n resolve(texture);\n };\n\n image.onerror = function () {\n reject();\n };\n }\n }));\n\n case 4:\n this.loaded = true;\n this.texture = this.engine.createTexture2D(this.config);\n return _context.abrupt(\"return\", this.texture);\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function load() {\n return _load.apply(this, arguments);\n }\n\n return load;\n }()\n }]);\n\n return Texture2D;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"textureCache\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Texture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdGV4dHVyZS9UZXh0dXJlMkQuanM/ODhjNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNPO0FBQ0k7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRW5lO0FBQ0Y7QUFDUjtBQUNoQyx3QkFBd0IsNERBQVUsWUFBWSx3REFBTSxDQUFDLG9EQUFZLFdBQVcsd0RBQU0sQ0FBQyw4REFBVTtBQUNwRztBQUNBLElBQUksNEVBQWU7O0FBRW5CLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGtCQUFrQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDckU7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtGQUErRixtQkFBbUI7QUFDbEg7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdGV4dHVyZS9UZXh0dXJlMkQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2Rlc2NyaXB0b3IyLCBfdGVtcDtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBUZXh0dXJlQ2FjaGUgfSBmcm9tICcuL0NhY2hlJztcbmV4cG9ydCB2YXIgVGV4dHVyZTJEID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KFRleHR1cmVDYWNoZSksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRleHR1cmUyRCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGV4dHVyZTJEKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwidGV4dHVyZUNhY2hlXCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiZW5naW5lXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgICB0aGlzLmNvbmZpZyA9IHZvaWQgMDtcbiAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMudGV4dHVyZSA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUZXh0dXJlMkQsIFt7XG4gICAga2V5OiBcInNldENvbmZpZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNMb2FkZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNMb2FkZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkZWQ7XG4gICAgfSAvLyBwdWJsaWMgdXBkYXRlKGNvbmZpZzogSVRleHR1cmUyREluaXRpYWxpemF0aW9uT3B0aW9ucykge1xuICAgIC8vICAgaWYgKHRoaXMubG9hZGVkICYmIHRoaXMudGV4dHVyZSkge1xuICAgIC8vICAgICBjb25zdCB0ID0gdGhpcy50ZXh0dXJlLmdldCgpO1xuICAgIC8vICAgfVxuICAgIC8vIH1cblxuICB9LCB7XG4gICAga2V5OiBcImxvYWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9sb2FkID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb25maWcudXJsKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgICAgICAgdmFyIGV4aXN0ZWQgPSBfdGhpcy50ZXh0dXJlQ2FjaGUuZ2V0KF90aGlzLmNvbmZpZy51cmwpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoZXhpc3RlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGV4aXN0ZWQpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IF90aGlzLmNvbmZpZy51cmw7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0dXJlID0gX3RoaXMuZW5naW5lLmNyZWF0ZVRleHR1cmUyRChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF90aGlzLmNvbmZpZyksIHt9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBpbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBpbWFnZS53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaW1hZ2UuaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmxpcFk6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy50ZXh0dXJlQ2FjaGUuc2V0KF90aGlzLmNvbmZpZy51cmwsIHRleHR1cmUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMudGV4dHVyZSA9IHRleHR1cmU7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRleHR1cmUpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGltYWdlLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy50ZXh0dXJlID0gdGhpcy5lbmdpbmUuY3JlYXRlVGV4dHVyZTJEKHRoaXMuY29uZmlnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIHRoaXMudGV4dHVyZSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBsb2FkKCkge1xuICAgICAgICByZXR1cm4gX2xvYWQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxvYWQ7XG4gICAgfSgpXG4gIH1dKTtcblxuICByZXR1cm4gVGV4dHVyZTJEO1xufSgpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwidGV4dHVyZUNhY2hlXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dHVyZTJELmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/texture/Texture2D.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/utils/canvas.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/utils/canvas.js ***! \********************************************************/ /*! exports provided: createCanvas */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCanvas\", function() { return createCanvas; });\nfunction createCanvas() {\n if (typeof document !== 'undefined') {\n return document.createElement('canvas');\n } else {\n throw new Error('Cannot create a canvas in this context');\n }\n}\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvY2FudmFzLmpzPzMzY2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy91dGlscy9jYW52YXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2FudmFzKCkge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgYSBjYW52YXMgaW4gdGhpcyBjb250ZXh0Jyk7XG4gIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNhbnZhcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/canvas.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/utils/is-array.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/utils/is-array.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/g-webgpu/es/utils/is-type.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Array.isArray ? Array.isArray(value) : Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Array');\n});\n//# sourceMappingURL=is-array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtYXJyYXkuanM/MDRkNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQStCO0FBQ2Y7QUFDaEIsZ0RBQWdELHdEQUFNO0FBQ3RELENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLWFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzLXR5cGUnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSA/IEFycmF5LmlzQXJyYXkodmFsdWUpIDogaXNUeXBlKHZhbHVlLCAnQXJyYXknKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtYXJyYXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/is-array.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/utils/is-number.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/utils/is-number.js ***! \***********************************************************/ /*! exports provided: isNumber */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtbnVtYmVyLmpzPzE2NDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLW51bWJlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW51bWJlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/is-number.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/utils/is-type.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/utils/is-type.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar toString = {}.toString;\n\nvar isType = function isType(value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (isType);\n//# sourceMappingURL=is-type.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtdHlwZS5qcz80ZGIyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRWUscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy91dGlscy9pcy10eXBlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciBpc1R5cGUgPSBmdW5jdGlvbiBpc1R5cGUodmFsdWUsIHR5cGUpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCAnICsgdHlwZSArICddJztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGlzVHlwZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLXR5cGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/is-type.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/utils/is-typedarray.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/utils/is-typedarray.js ***! \***************************************************************/ /*! exports provided: isTypedArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtdHlwZWRhcnJheS5qcz80MzA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9EOztBQUVwRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQixvRUFBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1AiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtdHlwZWRhcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cblxudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcbnZhciBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XSc7XG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJztcbnZhciBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nO1xudmFyIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJztcbnZhciBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJztcbnZhciBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJztcbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcbnZhciByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJztcbnZhciBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcbnZhciB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG52YXIgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nO1xudmFyIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJztcbnZhciBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XSc7XG52YXIgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XSc7XG52YXIgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XSc7XG52YXIgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XSc7XG52YXIgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJztcbnZhciB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nO1xudmFyIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG5cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID0gdHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID0gdHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cblxuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cblxuXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xuXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cblxuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSldO1xufVxuXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnO1xufVxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuXG5cbmV4cG9ydCB2YXIgaXNUeXBlZEFycmF5ID0gYmFzZUlzVHlwZWRBcnJheTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLXR5cGVkYXJyYXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/is-typedarray.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/utils/math.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/utils/math.js ***! \******************************************************/ /*! exports provided: getAngle, createVec3 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAngle\", function() { return getAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createVec3\", function() { return createVec3; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/g-webgpu/es/utils/is-number.js\");\n\n\nfunction getAngle(angle) {\n if (angle === undefined) {\n return 0;\n } else if (angle > 360 || angle < -360) {\n return angle % 360;\n }\n\n return angle;\n}\nfunction createVec3(x, y, z) {\n if (Object(_is_number__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(x)) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(x, y, z);\n }\n\n if (x.length === 3) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].clone(x);\n } // @ts-ignore\n\n\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(x[0], x[1], x[2]);\n}\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvbWF0aC5qcz82OWY3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDTTtBQUNoQztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUCxNQUFNLDJEQUFRO0FBQ2QsV0FBVyw4Q0FBSTtBQUNmOztBQUVBO0FBQ0EsV0FBVyw4Q0FBSTtBQUNmLEdBQUc7OztBQUdILFNBQVMsOENBQUk7QUFDYjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL21hdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi9pcy1udW1iZXInO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xlKGFuZ2xlKSB7XG4gIGlmIChhbmdsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSBpZiAoYW5nbGUgPiAzNjAgfHwgYW5nbGUgPCAtMzYwKSB7XG4gICAgcmV0dXJuIGFuZ2xlICUgMzYwO1xuICB9XG5cbiAgcmV0dXJuIGFuZ2xlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVZlYzMoeCwgeSwgeikge1xuICBpZiAoaXNOdW1iZXIoeCkpIHtcbiAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHgsIHksIHopO1xuICB9XG5cbiAgaWYgKHgubGVuZ3RoID09PSAzKSB7XG4gICAgcmV0dXJuIHZlYzMuY2xvbmUoeCk7XG4gIH0gLy8gQHRzLWlnbm9yZVxuXG5cbiAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh4WzBdLCB4WzFdLCB4WzJdKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/math.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/utils/picking.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/utils/picking.js ***! \*********************************************************/ /*! exports provided: encodePickingColor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encodePickingColor\", function() { return encodePickingColor; });\nfunction encodePickingColor(featureIdx) {\n return [featureIdx + 1 & 255, featureIdx + 1 >> 8 & 255, featureIdx + 1 >> 8 >> 8 & 255];\n}\n//# sourceMappingURL=picking.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvcGlja2luZy5qcz8wZDhmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nLXdlYmdwdS9lcy91dGlscy9waWNraW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVBpY2tpbmdDb2xvcihmZWF0dXJlSWR4KSB7XG4gIHJldHVybiBbZmVhdHVyZUlkeCArIDEgJiAyNTUsIGZlYXR1cmVJZHggKyAxID4+IDggJiAyNTUsIGZlYXR1cmVJZHggKyAxID4+IDggPj4gOCAmIDI1NV07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1waWNraW5nLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/picking.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/utils/polyline-normals.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/utils/polyline-normals.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var gl_vec2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-vec2 */ \"./node_modules/gl-vec2/index.js\");\n/* harmony import */ var gl_vec2__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(gl_vec2__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! polyline-miter-util */ \"./node_modules/polyline-miter-util/index.js\");\n/* harmony import */ var polyline_miter_util__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__);\n// @ts-ignore\n // @ts-ignore\n\n\n\nfunction extrusions(positions, out, point, normal, scale) {\n addNext(out, normal, -scale);\n addNext(out, normal, scale);\n positions.push(point);\n positions.push(point);\n}\n\nfunction addNext(out, normal, length) {\n out.push([[normal[0], normal[1]], length]);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (points, closed, indexOffset) {\n var lineA = [0, 0];\n var lineB = [0, 0];\n var tangent = [0, 0];\n var miter = [0, 0];\n\n var _lastFlip = -1;\n\n var _started = false;\n var _normal = null;\n var tmp = Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"create\"])();\n var count = indexOffset || 0;\n var miterLimit = 3;\n var out = [];\n var attrPos = [];\n var attrIndex = [];\n var attrCounters = [0, 0];\n\n if (closed) {\n points = points.slice();\n points.push(points[0]);\n }\n\n var total = points.length;\n\n for (var i = 1; i < total; i++) {\n var index = count;\n var last = points[i - 1];\n var cur = points[i];\n var next = i < points.length - 1 ? points[i + 1] : null;\n attrCounters.push(i / total, i / total);\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"direction\"])(lineA, cur, last);\n\n if (!_normal) {\n _normal = [0, 0];\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA);\n }\n\n if (!_started) {\n _started = true;\n extrusions(attrPos, out, last, _normal, 1);\n }\n\n attrIndex.push([index + 0, index + 1, index + 2]);\n\n if (!next) {\n // no miter, simple segment\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA); // reset normal\n\n extrusions(attrPos, out, cur, _normal, 1);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n count += 2;\n } else {\n // miter with last\n // get unit dir of next line\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"direction\"])(lineB, next, cur); // stores tangent & miter\n\n var miterLen = Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"computeMiter\"])(tangent, miter, lineA, lineB, 1); // get orientation\n\n var flip = Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"dot\"])(tangent, _normal) < 0 ? -1 : 1;\n var bevel = miterLen > miterLimit; // 处理相邻线段重叠的情况\n\n if (!isFinite(miterLen)) {\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA); // reset normal\n\n extrusions(attrPos, out, cur, _normal, 1);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n count += 2;\n _lastFlip = flip;\n continue;\n }\n\n if (bevel) {\n miterLen = miterLimit;\n attrCounters.push(i / total); // next two points in our first segment\n\n addNext(out, _normal, -flip);\n attrPos.push(cur);\n addNext(out, miter, miterLen * flip);\n attrPos.push(cur);\n attrIndex.push(_lastFlip !== -flip ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]); // now add the bevel triangle\n\n attrIndex.push([index + 2, index + 3, index + 4]);\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(tmp, lineB);\n Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"copy\"])(_normal, tmp); // store normal for next round\n\n addNext(out, _normal, -flip);\n attrPos.push(cur); // the miter is now the normal for our next join\n\n count += 3;\n } else {\n // miter\n // next two points for our miter join\n extrusions(attrPos, out, cur, miter, miterLen);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n flip = -1; // the miter is now the normal for our next join\n\n Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"copy\"])(_normal, miter);\n count += 2;\n }\n\n _lastFlip = flip;\n }\n }\n\n return {\n normals: out,\n attrIndex: attrIndex,\n attrPos: attrPos,\n attrCounters: attrCounters\n };\n});\n//# sourceMappingURL=polyline-normals.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvcG9seWxpbmUtbm9ybWFscy5qcz9lNWE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUM0Qzs7QUFFMEI7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxzREFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsaUJBQWlCLFdBQVc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUkscUVBQVM7O0FBRWI7QUFDQTtBQUNBLE1BQU0sa0VBQU07QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSxrRUFBTSxpQkFBaUI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsTUFBTSxxRUFBUyxtQkFBbUI7O0FBRWxDLHFCQUFxQix3RUFBWSxrQ0FBa0M7O0FBRW5FLGlCQUFpQixtREFBRztBQUNwQix3Q0FBd0M7O0FBRXhDO0FBQ0EsUUFBUSxrRUFBTSxpQkFBaUI7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGdIQUFnSDs7QUFFaEg7QUFDQSxRQUFRLGtFQUFNO0FBQ2QsUUFBUSxvREFBSSxlQUFlOztBQUUzQjtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCLFFBQVEsb0RBQUk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvcG9seWxpbmUtbm9ybWFscy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGNvcHksIGNyZWF0ZSwgZG90IH0gZnJvbSAnZ2wtdmVjMic7IC8vIEB0cy1pZ25vcmVcblxuaW1wb3J0IHsgY29tcHV0ZU1pdGVyLCBkaXJlY3Rpb24sIG5vcm1hbCB9IGZyb20gJ3BvbHlsaW5lLW1pdGVyLXV0aWwnO1xuXG5mdW5jdGlvbiBleHRydXNpb25zKHBvc2l0aW9ucywgb3V0LCBwb2ludCwgbm9ybWFsLCBzY2FsZSkge1xuICBhZGROZXh0KG91dCwgbm9ybWFsLCAtc2NhbGUpO1xuICBhZGROZXh0KG91dCwgbm9ybWFsLCBzY2FsZSk7XG4gIHBvc2l0aW9ucy5wdXNoKHBvaW50KTtcbiAgcG9zaXRpb25zLnB1c2gocG9pbnQpO1xufVxuXG5mdW5jdGlvbiBhZGROZXh0KG91dCwgbm9ybWFsLCBsZW5ndGgpIHtcbiAgb3V0LnB1c2goW1tub3JtYWxbMF0sIG5vcm1hbFsxXV0sIGxlbmd0aF0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocG9pbnRzLCBjbG9zZWQsIGluZGV4T2Zmc2V0KSB7XG4gIHZhciBsaW5lQSA9IFswLCAwXTtcbiAgdmFyIGxpbmVCID0gWzAsIDBdO1xuICB2YXIgdGFuZ2VudCA9IFswLCAwXTtcbiAgdmFyIG1pdGVyID0gWzAsIDBdO1xuXG4gIHZhciBfbGFzdEZsaXAgPSAtMTtcblxuICB2YXIgX3N0YXJ0ZWQgPSBmYWxzZTtcbiAgdmFyIF9ub3JtYWwgPSBudWxsO1xuICB2YXIgdG1wID0gY3JlYXRlKCk7XG4gIHZhciBjb3VudCA9IGluZGV4T2Zmc2V0IHx8IDA7XG4gIHZhciBtaXRlckxpbWl0ID0gMztcbiAgdmFyIG91dCA9IFtdO1xuICB2YXIgYXR0clBvcyA9IFtdO1xuICB2YXIgYXR0ckluZGV4ID0gW107XG4gIHZhciBhdHRyQ291bnRlcnMgPSBbMCwgMF07XG5cbiAgaWYgKGNsb3NlZCkge1xuICAgIHBvaW50cyA9IHBvaW50cy5zbGljZSgpO1xuICAgIHBvaW50cy5wdXNoKHBvaW50c1swXSk7XG4gIH1cblxuICB2YXIgdG90YWwgPSBwb2ludHMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAxOyBpIDwgdG90YWw7IGkrKykge1xuICAgIHZhciBpbmRleCA9IGNvdW50O1xuICAgIHZhciBsYXN0ID0gcG9pbnRzW2kgLSAxXTtcbiAgICB2YXIgY3VyID0gcG9pbnRzW2ldO1xuICAgIHZhciBuZXh0ID0gaSA8IHBvaW50cy5sZW5ndGggLSAxID8gcG9pbnRzW2kgKyAxXSA6IG51bGw7XG4gICAgYXR0ckNvdW50ZXJzLnB1c2goaSAvIHRvdGFsLCBpIC8gdG90YWwpO1xuICAgIGRpcmVjdGlvbihsaW5lQSwgY3VyLCBsYXN0KTtcblxuICAgIGlmICghX25vcm1hbCkge1xuICAgICAgX25vcm1hbCA9IFswLCAwXTtcbiAgICAgIG5vcm1hbChfbm9ybWFsLCBsaW5lQSk7XG4gICAgfVxuXG4gICAgaWYgKCFfc3RhcnRlZCkge1xuICAgICAgX3N0YXJ0ZWQgPSB0cnVlO1xuICAgICAgZXh0cnVzaW9ucyhhdHRyUG9zLCBvdXQsIGxhc3QsIF9ub3JtYWwsIDEpO1xuICAgIH1cblxuICAgIGF0dHJJbmRleC5wdXNoKFtpbmRleCArIDAsIGluZGV4ICsgMSwgaW5kZXggKyAyXSk7XG5cbiAgICBpZiAoIW5leHQpIHtcbiAgICAgIC8vIG5vIG1pdGVyLCBzaW1wbGUgc2VnbWVudFxuICAgICAgbm9ybWFsKF9ub3JtYWwsIGxpbmVBKTsgLy8gcmVzZXQgbm9ybWFsXG5cbiAgICAgIGV4dHJ1c2lvbnMoYXR0clBvcywgb3V0LCBjdXIsIF9ub3JtYWwsIDEpO1xuICAgICAgYXR0ckluZGV4LnB1c2goX2xhc3RGbGlwID09PSAxID8gW2luZGV4LCBpbmRleCArIDIsIGluZGV4ICsgM10gOiBbaW5kZXggKyAyLCBpbmRleCArIDEsIGluZGV4ICsgM10pO1xuICAgICAgY291bnQgKz0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbWl0ZXIgd2l0aCBsYXN0XG4gICAgICAvLyBnZXQgdW5pdCBkaXIgb2YgbmV4dCBsaW5lXG4gICAgICBkaXJlY3Rpb24obGluZUIsIG5leHQsIGN1cik7IC8vIHN0b3JlcyB0YW5nZW50ICYgbWl0ZXJcblxuICAgICAgdmFyIG1pdGVyTGVuID0gY29tcHV0ZU1pdGVyKHRhbmdlbnQsIG1pdGVyLCBsaW5lQSwgbGluZUIsIDEpOyAvLyBnZXQgb3JpZW50YXRpb25cblxuICAgICAgdmFyIGZsaXAgPSBkb3QodGFuZ2VudCwgX25vcm1hbCkgPCAwID8gLTEgOiAxO1xuICAgICAgdmFyIGJldmVsID0gbWl0ZXJMZW4gPiBtaXRlckxpbWl0OyAvLyDlpITnkIbnm7jpgrvnur/mrrXph43lj6DnmoTmg4XlhrVcblxuICAgICAgaWYgKCFpc0Zpbml0ZShtaXRlckxlbikpIHtcbiAgICAgICAgbm9ybWFsKF9ub3JtYWwsIGxpbmVBKTsgLy8gcmVzZXQgbm9ybWFsXG5cbiAgICAgICAgZXh0cnVzaW9ucyhhdHRyUG9zLCBvdXQsIGN1ciwgX25vcm1hbCwgMSk7XG4gICAgICAgIGF0dHJJbmRleC5wdXNoKF9sYXN0RmxpcCA9PT0gMSA/IFtpbmRleCwgaW5kZXggKyAyLCBpbmRleCArIDNdIDogW2luZGV4ICsgMiwgaW5kZXggKyAxLCBpbmRleCArIDNdKTtcbiAgICAgICAgY291bnQgKz0gMjtcbiAgICAgICAgX2xhc3RGbGlwID0gZmxpcDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChiZXZlbCkge1xuICAgICAgICBtaXRlckxlbiA9IG1pdGVyTGltaXQ7XG4gICAgICAgIGF0dHJDb3VudGVycy5wdXNoKGkgLyB0b3RhbCk7IC8vIG5leHQgdHdvIHBvaW50cyBpbiBvdXIgZmlyc3Qgc2VnbWVudFxuXG4gICAgICAgIGFkZE5leHQob3V0LCBfbm9ybWFsLCAtZmxpcCk7XG4gICAgICAgIGF0dHJQb3MucHVzaChjdXIpO1xuICAgICAgICBhZGROZXh0KG91dCwgbWl0ZXIsIG1pdGVyTGVuICogZmxpcCk7XG4gICAgICAgIGF0dHJQb3MucHVzaChjdXIpO1xuICAgICAgICBhdHRySW5kZXgucHVzaChfbGFzdEZsaXAgIT09IC1mbGlwID8gW2luZGV4LCBpbmRleCArIDIsIGluZGV4ICsgM10gOiBbaW5kZXggKyAyLCBpbmRleCArIDEsIGluZGV4ICsgM10pOyAvLyBub3cgYWRkIHRoZSBiZXZlbCB0cmlhbmdsZVxuXG4gICAgICAgIGF0dHJJbmRleC5wdXNoKFtpbmRleCArIDIsIGluZGV4ICsgMywgaW5kZXggKyA0XSk7XG4gICAgICAgIG5vcm1hbCh0bXAsIGxpbmVCKTtcbiAgICAgICAgY29weShfbm9ybWFsLCB0bXApOyAvLyBzdG9yZSBub3JtYWwgZm9yIG5leHQgcm91bmRcblxuICAgICAgICBhZGROZXh0KG91dCwgX25vcm1hbCwgLWZsaXApO1xuICAgICAgICBhdHRyUG9zLnB1c2goY3VyKTsgLy8gdGhlIG1pdGVyIGlzIG5vdyB0aGUgbm9ybWFsIGZvciBvdXIgbmV4dCBqb2luXG5cbiAgICAgICAgY291bnQgKz0gMztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG1pdGVyXG4gICAgICAgIC8vIG5leHQgdHdvIHBvaW50cyBmb3Igb3VyIG1pdGVyIGpvaW5cbiAgICAgICAgZXh0cnVzaW9ucyhhdHRyUG9zLCBvdXQsIGN1ciwgbWl0ZXIsIG1pdGVyTGVuKTtcbiAgICAgICAgYXR0ckluZGV4LnB1c2goX2xhc3RGbGlwID09PSAxID8gW2luZGV4LCBpbmRleCArIDIsIGluZGV4ICsgM10gOiBbaW5kZXggKyAyLCBpbmRleCArIDEsIGluZGV4ICsgM10pO1xuICAgICAgICBmbGlwID0gLTE7IC8vIHRoZSBtaXRlciBpcyBub3cgdGhlIG5vcm1hbCBmb3Igb3VyIG5leHQgam9pblxuXG4gICAgICAgIGNvcHkoX25vcm1hbCwgbWl0ZXIpO1xuICAgICAgICBjb3VudCArPSAyO1xuICAgICAgfVxuXG4gICAgICBfbGFzdEZsaXAgPSBmbGlwO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbm9ybWFsczogb3V0LFxuICAgIGF0dHJJbmRleDogYXR0ckluZGV4LFxuICAgIGF0dHJQb3M6IGF0dHJQb3MsXG4gICAgYXR0ckNvdW50ZXJzOiBhdHRyQ291bnRlcnNcbiAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlsaW5lLW5vcm1hbHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/polyline-normals.js\n"); /***/ }), /***/ "./node_modules/@antv/g-webgpu/es/utils/typedarray.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g-webgpu/es/utils/typedarray.js ***! \************************************************************/ /*! exports provided: merge */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\nfunction merge(a, b) {\n // Checks for truthy values on both arrays\n if (!a && !b) {\n throw new Error('Please specify valid arguments for parameters a and b.');\n } // Checks for truthy values or empty arrays on each argument\n // to avoid the unnecessary construction of a new array and\n // the type comparison\n\n\n if (!b || b.length === 0) {\n return a;\n }\n\n if (!a || a.length === 0) {\n return b;\n } // Make sure that both typed arrays are of the same type\n\n\n if (Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) {\n throw new Error('The types of the two arguments passed for parameters a and b do not match.');\n } // @ts-ignore\n\n\n var c = new a.constructor(a.length + b.length);\n c.set(a);\n c.set(b, a.length);\n return c;\n}\n//# sourceMappingURL=typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvdHlwZWRhcnJheS5qcz8wODlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvdHlwZWRhcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBtZXJnZShhLCBiKSB7XG4gIC8vIENoZWNrcyBmb3IgdHJ1dGh5IHZhbHVlcyBvbiBib3RoIGFycmF5c1xuICBpZiAoIWEgJiYgIWIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBzcGVjaWZ5IHZhbGlkIGFyZ3VtZW50cyBmb3IgcGFyYW1ldGVycyBhIGFuZCBiLicpO1xuICB9IC8vIENoZWNrcyBmb3IgdHJ1dGh5IHZhbHVlcyBvciBlbXB0eSBhcnJheXMgb24gZWFjaCBhcmd1bWVudFxuICAvLyB0byBhdm9pZCB0aGUgdW5uZWNlc3NhcnkgY29uc3RydWN0aW9uIG9mIGEgbmV3IGFycmF5IGFuZFxuICAvLyB0aGUgdHlwZSBjb21wYXJpc29uXG5cblxuICBpZiAoIWIgfHwgYi5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gYTtcbiAgfVxuXG4gIGlmICghYSB8fCBhLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiO1xuICB9IC8vIE1ha2Ugc3VyZSB0aGF0IGJvdGggdHlwZWQgYXJyYXlzIGFyZSBvZiB0aGUgc2FtZSB0eXBlXG5cblxuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB0eXBlcyBvZiB0aGUgdHdvIGFyZ3VtZW50cyBwYXNzZWQgZm9yIHBhcmFtZXRlcnMgYSBhbmQgYiBkbyBub3QgbWF0Y2guJyk7XG4gIH0gLy8gQHRzLWlnbm9yZVxuXG5cbiAgdmFyIGMgPSBuZXcgYS5jb25zdHJ1Y3RvcihhLmxlbmd0aCArIGIubGVuZ3RoKTtcbiAgYy5zZXQoYSk7XG4gIGMuc2V0KGIsIGEubGVuZ3RoKTtcbiAgcmV0dXJuIGM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10eXBlZGFycmF5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g-webgpu/es/utils/typedarray.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/behavior/behavior.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/behavior/behavior.js ***! \************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _behaviorOption__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./behaviorOption */ \"./node_modules/@antv/g6-core/es/behavior/behaviorOption.js\");\n\n\n\nvar Behavior =\n/** @class */\nfunction () {\n function Behavior() {}\n /**\n * 自定义 Behavior\n * @param type Behavior 名称\n * @param behavior Behavior 定义的方法集合\n */\n\n\n Behavior.registerBehavior = function (type, behavior) {\n if (!behavior) {\n throw new Error(\"please specify handler for this behavior: \".concat(type));\n }\n\n var prototype = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(_behaviorOption__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n Object.assign(prototype, behavior); // eslint-disable-next-line func-names\n\n var base = function base(cfg) {\n var _this = this;\n\n Object.assign(this, this.getDefaultCfg(), cfg);\n var events = this.getEvents();\n this.events = null;\n var eventsToBind = {};\n\n if (events) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handle, event) {\n eventsToBind[event] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"wrapBehavior\"])(_this, handle);\n });\n this.events = eventsToBind;\n }\n };\n\n base.prototype = prototype;\n Behavior.types[type] = base;\n };\n\n Behavior.hasBehavior = function (type) {\n return !!Behavior.types[type];\n };\n\n Behavior.getBehavior = function (type) {\n return Behavior.types[type];\n }; // 所有自定义的 Behavior 的实例\n\n\n Behavior.types = {};\n return Behavior;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Behavior);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9iZWhhdmlvci5qcz8yOGQ1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUF1RDtBQUNUOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQix3REFBSyxDQUFDLHVEQUFjO0FBQ3hDLHVDQUF1Qzs7QUFFdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsdURBQUk7QUFDWixnQ0FBZ0MsK0RBQVk7QUFDNUMsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0EsQ0FBQzs7QUFFYyx1RUFBUSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2JlaGF2aW9yL2JlaGF2aW9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmUsIGVhY2gsIHdyYXBCZWhhdmlvciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IGJlaGF2aW9yT3B0aW9uIGZyb20gJy4vYmVoYXZpb3JPcHRpb24nO1xuXG52YXIgQmVoYXZpb3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCZWhhdmlvcigpIHt9XG4gIC8qKlxuICAgKiDoh6rlrprkuYkgQmVoYXZpb3JcbiAgICogQHBhcmFtIHR5cGUgQmVoYXZpb3Ig5ZCN56ewXG4gICAqIEBwYXJhbSBiZWhhdmlvciBCZWhhdmlvciDlrprkuYnnmoTmlrnms5Xpm4blkIhcbiAgICovXG5cblxuICBCZWhhdmlvci5yZWdpc3RlckJlaGF2aW9yID0gZnVuY3Rpb24gKHR5cGUsIGJlaGF2aW9yKSB7XG4gICAgaWYgKCFiZWhhdmlvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicGxlYXNlIHNwZWNpZnkgaGFuZGxlciBmb3IgdGhpcyBiZWhhdmlvcjogXCIuY29uY2F0KHR5cGUpKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG90eXBlID0gY2xvbmUoYmVoYXZpb3JPcHRpb24pO1xuICAgIE9iamVjdC5hc3NpZ24ocHJvdG90eXBlLCBiZWhhdmlvcik7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5cbiAgICB2YXIgYmFzZSA9IGZ1bmN0aW9uIGJhc2UoY2ZnKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMsIHRoaXMuZ2V0RGVmYXVsdENmZygpLCBjZmcpO1xuICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzKCk7XG4gICAgICB0aGlzLmV2ZW50cyA9IG51bGw7XG4gICAgICB2YXIgZXZlbnRzVG9CaW5kID0ge307XG5cbiAgICAgIGlmIChldmVudHMpIHtcbiAgICAgICAgZWFjaChldmVudHMsIGZ1bmN0aW9uIChoYW5kbGUsIGV2ZW50KSB7XG4gICAgICAgICAgZXZlbnRzVG9CaW5kW2V2ZW50XSA9IHdyYXBCZWhhdmlvcihfdGhpcywgaGFuZGxlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gZXZlbnRzVG9CaW5kO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBiYXNlLnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgICBCZWhhdmlvci50eXBlc1t0eXBlXSA9IGJhc2U7XG4gIH07XG5cbiAgQmVoYXZpb3IuaGFzQmVoYXZpb3IgPSBmdW5jdGlvbiAodHlwZSkge1xuICAgIHJldHVybiAhIUJlaGF2aW9yLnR5cGVzW3R5cGVdO1xuICB9O1xuXG4gIEJlaGF2aW9yLmdldEJlaGF2aW9yID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICByZXR1cm4gQmVoYXZpb3IudHlwZXNbdHlwZV07XG4gIH07IC8vIOaJgOacieiHquWumuS5ieeahCBCZWhhdmlvciDnmoTlrp7kvotcblxuXG4gIEJlaGF2aW9yLnR5cGVzID0ge307XG4gIHJldHVybiBCZWhhdmlvcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgQmVoYXZpb3I7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/behavior/behavior.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/behavior/behaviorOption.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/behavior/behaviorOption.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n // 自定义 Behavior 时候共有的方法\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {};\n },\n\n /**\n * register event handler, behavior will auto bind events\n * for example:\n * return {\n * click: 'onClick'\n * }\n */\n getEvents: function getEvents() {\n return {};\n },\n updateCfg: function updateCfg(cfg) {\n Object.assign(this, cfg);\n return true;\n },\n shouldBegin: function shouldBegin() {\n return true;\n },\n shouldUpdate: function shouldUpdate() {\n return true;\n },\n shouldEnd: function shouldEnd() {\n return true;\n },\n\n /**\n * auto bind events when register behavior\n * @param graph Graph instance\n */\n bind: function bind(graph) {\n var _this = this;\n\n var events = this.events;\n this.graph = graph;\n\n if (this.type === 'drag-canvas' || this.type === 'brush-select' || this.type === 'lasso-select') {\n graph.get('canvas').set('draggable', true);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handler, event) {\n graph.on(event, handler);\n }); // To avoid the tabs switching makes the keydown related behaviors disable\n\n document.addEventListener('visibilitychange', function () {\n _this.keydown = false;\n });\n },\n unbind: function unbind(graph) {\n var events = this.events;\n var draggable = graph.get('canvas').get('draggable');\n\n if (this.type === 'drag-canvas' || this.type === 'brush-select' || this.type === 'lasso-select') {\n graph.get('canvas').set('draggable', false);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handler, event) {\n graph.off(event, handler);\n });\n graph.get('canvas').set('draggable', draggable);\n },\n get: function get(val) {\n return this[val];\n },\n set: function set(key, val) {\n this[key] = val;\n return this;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9iZWhhdmlvck9wdGlvbi5qcz8xZTU0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBa0M7O0FBRW5CO0FBQ2Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2JlaGF2aW9yL2JlaGF2aW9yT3B0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnOyAvLyDoh6rlrprkuYkgQmVoYXZpb3Ig5pe25YCZ5YWx5pyJ55qE5pa55rOVXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge307XG4gIH0sXG5cbiAgLyoqXG4gICAqIHJlZ2lzdGVyIGV2ZW50IGhhbmRsZXIsIGJlaGF2aW9yIHdpbGwgYXV0byBiaW5kIGV2ZW50c1xuICAgKiBmb3IgZXhhbXBsZTpcbiAgICogcmV0dXJuIHtcbiAgICogIGNsaWNrOiAnb25DbGljaydcbiAgICogfVxuICAgKi9cbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9LFxuICB1cGRhdGVDZmc6IGZ1bmN0aW9uIHVwZGF0ZUNmZyhjZmcpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGNmZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIHNob3VsZEJlZ2luOiBmdW5jdGlvbiBzaG91bGRCZWdpbigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgc2hvdWxkVXBkYXRlOiBmdW5jdGlvbiBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIHNob3VsZEVuZDogZnVuY3Rpb24gc2hvdWxkRW5kKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBhdXRvIGJpbmQgZXZlbnRzIHdoZW4gcmVnaXN0ZXIgYmVoYXZpb3JcbiAgICogQHBhcmFtIGdyYXBoIEdyYXBoIGluc3RhbmNlXG4gICAqL1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kKGdyYXBoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBldmVudHMgPSB0aGlzLmV2ZW50cztcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZHJhZy1jYW52YXMnIHx8IHRoaXMudHlwZSA9PT0gJ2JydXNoLXNlbGVjdCcgfHwgdGhpcy50eXBlID09PSAnbGFzc28tc2VsZWN0Jykge1xuICAgICAgZ3JhcGguZ2V0KCdjYW52YXMnKS5zZXQoJ2RyYWdnYWJsZScsIHRydWUpO1xuICAgIH1cblxuICAgIGVhY2goZXZlbnRzLCBmdW5jdGlvbiAoaGFuZGxlciwgZXZlbnQpIHtcbiAgICAgIGdyYXBoLm9uKGV2ZW50LCBoYW5kbGVyKTtcbiAgICB9KTsgLy8gVG8gYXZvaWQgdGhlIHRhYnMgc3dpdGNoaW5nIG1ha2VzIHRoZSBrZXlkb3duIHJlbGF0ZWQgYmVoYXZpb3JzIGRpc2FibGVcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5rZXlkb3duID0gZmFsc2U7XG4gICAgfSk7XG4gIH0sXG4gIHVuYmluZDogZnVuY3Rpb24gdW5iaW5kKGdyYXBoKSB7XG4gICAgdmFyIGV2ZW50cyA9IHRoaXMuZXZlbnRzO1xuICAgIHZhciBkcmFnZ2FibGUgPSBncmFwaC5nZXQoJ2NhbnZhcycpLmdldCgnZHJhZ2dhYmxlJyk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZHJhZy1jYW52YXMnIHx8IHRoaXMudHlwZSA9PT0gJ2JydXNoLXNlbGVjdCcgfHwgdGhpcy50eXBlID09PSAnbGFzc28tc2VsZWN0Jykge1xuICAgICAgZ3JhcGguZ2V0KCdjYW52YXMnKS5zZXQoJ2RyYWdnYWJsZScsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBlYWNoKGV2ZW50cywgZnVuY3Rpb24gKGhhbmRsZXIsIGV2ZW50KSB7XG4gICAgICBncmFwaC5vZmYoZXZlbnQsIGhhbmRsZXIpO1xuICAgIH0pO1xuICAgIGdyYXBoLmdldCgnY2FudmFzJykuc2V0KCdkcmFnZ2FibGUnLCBkcmFnZ2FibGUpO1xuICB9LFxuICBnZXQ6IGZ1bmN0aW9uIGdldCh2YWwpIHtcbiAgICByZXR1cm4gdGhpc1t2YWxdO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbCkge1xuICAgIHRoaXNba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/behavior/behaviorOption.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/behavior/index.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g6-core/es/behavior/index.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./behavior */ \"./node_modules/@antv/g6-core/es/behavior/behavior.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9pbmRleC5qcz8zZTFlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBa0M7QUFDbkIsZ0hBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCZWhhdmlvciBmcm9tICcuL2JlaGF2aW9yJztcbmV4cG9ydCBkZWZhdWx0IEJlaGF2aW9yOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/behavior/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/arrow.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/arrow.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n triangle: function triangle(width, length, d) {\n if (width === void 0) {\n width = 10;\n }\n\n if (length === void 0) {\n length = 15;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \".concat(begin, \",0 L \").concat(begin + length, \",-\").concat(width / 2, \" L \").concat(begin + length, \",\").concat(width / 2, \" Z\");\n return path;\n },\n vee: function vee(width, length, d) {\n if (width === void 0) {\n width = 15;\n }\n\n if (length === void 0) {\n length = 20;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \".concat(begin, \",0 L \").concat(begin + length, \",-\").concat(width / 2, \"\\n L \").concat(begin + 2 * length / 3, \",0 L \").concat(begin + length, \",\").concat(width / 2, \" Z\");\n return path;\n },\n circle: function circle(r, d) {\n if (r === void 0) {\n r = 5;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \".concat(begin, \", 0\\n a \").concat(r, \",\").concat(r, \" 0 1,0 \").concat(r * 2, \",0\\n a \").concat(r, \",\").concat(r, \" 0 1,0 \").concat(-r * 2, \",0\");\n return path;\n },\n rect: function rect(width, length, d) {\n if (width === void 0) {\n width = 10;\n }\n\n if (length === void 0) {\n length = 10;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \".concat(begin, \",\").concat(-width / 2, \" \\n L \").concat(begin + length, \",\").concat(-width / 2, \" \\n L \").concat(begin + length, \",\").concat(width / 2, \" \\n L \").concat(begin, \",\").concat(width / 2, \" Z\");\n return path;\n },\n diamond: function diamond(width, length, d) {\n if (width === void 0) {\n width = 15;\n }\n\n if (length === void 0) {\n length = 15;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \".concat(begin, \",0 \\n L \").concat(begin + length / 2, \",\").concat(-width / 2, \" \\n L \").concat(begin + length, \",0 \\n L \").concat(begin + length / 2, \",\").concat(width / 2, \" Z\");\n return path;\n },\n triangleRect: function triangleRect(tWidth, tLength, rWidth, rLength, gap, d) {\n if (tWidth === void 0) {\n tWidth = 15;\n }\n\n if (tLength === void 0) {\n tLength = 15;\n }\n\n if (rWidth === void 0) {\n rWidth = 15;\n }\n\n if (rLength === void 0) {\n rLength = 3;\n }\n\n if (gap === void 0) {\n gap = 5;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var rectBegin = begin + tLength + gap;\n var path = \"M \".concat(begin, \",0 L \").concat(begin + tLength, \",-\").concat(tWidth / 2, \" L \").concat(begin + tLength, \",\").concat(tWidth / 2, \" Z\\n M \").concat(rectBegin, \", -\").concat(rWidth / 2, \"\\n L \").concat(rectBegin + rLength, \" -\").concat(rWidth / 2, \"\\n L \").concat(rectBegin + rLength, \" \").concat(rWidth / 2, \"\\n L \").concat(rectBegin, \" \").concat(rWidth / 2, \"\\n Z\");\n return path;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2Fycm93LmpzPzY2NjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvYXJyb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIHRyaWFuZ2xlOiBmdW5jdGlvbiB0cmlhbmdsZSh3aWR0aCwgbGVuZ3RoLCBkKSB7XG4gICAgaWYgKHdpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHdpZHRoID0gMTA7XG4gICAgfVxuXG4gICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICBsZW5ndGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIi5jb25jYXQoYmVnaW4sIFwiLDAgTCBcIikuY29uY2F0KGJlZ2luICsgbGVuZ3RoLCBcIiwtXCIpLmNvbmNhdCh3aWR0aCAvIDIsIFwiIEwgXCIpLmNvbmNhdChiZWdpbiArIGxlbmd0aCwgXCIsXCIpLmNvbmNhdCh3aWR0aCAvIDIsIFwiIFpcIik7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIHZlZTogZnVuY3Rpb24gdmVlKHdpZHRoLCBsZW5ndGgsIGQpIHtcbiAgICBpZiAod2lkdGggPT09IHZvaWQgMCkge1xuICAgICAgd2lkdGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoID09PSB2b2lkIDApIHtcbiAgICAgIGxlbmd0aCA9IDIwO1xuICAgIH1cblxuICAgIGlmIChkID09PSB2b2lkIDApIHtcbiAgICAgIGQgPSAwO1xuICAgIH1cblxuICAgIHZhciBiZWdpbiA9IGQgKiAyO1xuICAgIHZhciBwYXRoID0gXCJNIFwiLmNvbmNhdChiZWdpbiwgXCIsMCBMIFwiKS5jb25jYXQoYmVnaW4gKyBsZW5ndGgsIFwiLC1cIikuY29uY2F0KHdpZHRoIC8gMiwgXCJcXG4gICAgICAgIEwgXCIpLmNvbmNhdChiZWdpbiArIDIgKiBsZW5ndGggLyAzLCBcIiwwIEwgXCIpLmNvbmNhdChiZWdpbiArIGxlbmd0aCwgXCIsXCIpLmNvbmNhdCh3aWR0aCAvIDIsIFwiIFpcIik7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIGNpcmNsZTogZnVuY3Rpb24gY2lyY2xlKHIsIGQpIHtcbiAgICBpZiAociA9PT0gdm9pZCAwKSB7XG4gICAgICByID0gNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIi5jb25jYXQoYmVnaW4sIFwiLCAwXFxuICAgICAgICAgICAgYSBcIikuY29uY2F0KHIsIFwiLFwiKS5jb25jYXQociwgXCIgMCAxLDAgXCIpLmNvbmNhdChyICogMiwgXCIsMFxcbiAgICAgICAgICAgIGEgXCIpLmNvbmNhdChyLCBcIixcIikuY29uY2F0KHIsIFwiIDAgMSwwIFwiKS5jb25jYXQoLXIgKiAyLCBcIiwwXCIpO1xuICAgIHJldHVybiBwYXRoO1xuICB9LFxuICByZWN0OiBmdW5jdGlvbiByZWN0KHdpZHRoLCBsZW5ndGgsIGQpIHtcbiAgICBpZiAod2lkdGggPT09IHZvaWQgMCkge1xuICAgICAgd2lkdGggPSAxMDtcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoID09PSB2b2lkIDApIHtcbiAgICAgIGxlbmd0aCA9IDEwO1xuICAgIH1cblxuICAgIGlmIChkID09PSB2b2lkIDApIHtcbiAgICAgIGQgPSAwO1xuICAgIH1cblxuICAgIHZhciBiZWdpbiA9IGQgKiAyO1xuICAgIHZhciBwYXRoID0gXCJNIFwiLmNvbmNhdChiZWdpbiwgXCIsXCIpLmNvbmNhdCgtd2lkdGggLyAyLCBcIiBcXG4gICAgICAgIEwgXCIpLmNvbmNhdChiZWdpbiArIGxlbmd0aCwgXCIsXCIpLmNvbmNhdCgtd2lkdGggLyAyLCBcIiBcXG4gICAgICAgIEwgXCIpLmNvbmNhdChiZWdpbiArIGxlbmd0aCwgXCIsXCIpLmNvbmNhdCh3aWR0aCAvIDIsIFwiIFxcbiAgICAgICAgTCBcIikuY29uY2F0KGJlZ2luLCBcIixcIikuY29uY2F0KHdpZHRoIC8gMiwgXCIgWlwiKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcbiAgZGlhbW9uZDogZnVuY3Rpb24gZGlhbW9uZCh3aWR0aCwgbGVuZ3RoLCBkKSB7XG4gICAgaWYgKHdpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHdpZHRoID0gMTU7XG4gICAgfVxuXG4gICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICBsZW5ndGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIi5jb25jYXQoYmVnaW4sIFwiLDAgXFxuICAgICAgICBMIFwiKS5jb25jYXQoYmVnaW4gKyBsZW5ndGggLyAyLCBcIixcIikuY29uY2F0KC13aWR0aCAvIDIsIFwiIFxcbiAgICAgICAgTCBcIikuY29uY2F0KGJlZ2luICsgbGVuZ3RoLCBcIiwwIFxcbiAgICAgICAgTCBcIikuY29uY2F0KGJlZ2luICsgbGVuZ3RoIC8gMiwgXCIsXCIpLmNvbmNhdCh3aWR0aCAvIDIsIFwiIFpcIik7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIHRyaWFuZ2xlUmVjdDogZnVuY3Rpb24gdHJpYW5nbGVSZWN0KHRXaWR0aCwgdExlbmd0aCwgcldpZHRoLCByTGVuZ3RoLCBnYXAsIGQpIHtcbiAgICBpZiAodFdpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHRXaWR0aCA9IDE1O1xuICAgIH1cblxuICAgIGlmICh0TGVuZ3RoID09PSB2b2lkIDApIHtcbiAgICAgIHRMZW5ndGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAocldpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHJXaWR0aCA9IDE1O1xuICAgIH1cblxuICAgIGlmIChyTGVuZ3RoID09PSB2b2lkIDApIHtcbiAgICAgIHJMZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChnYXAgPT09IHZvaWQgMCkge1xuICAgICAgZ2FwID0gNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcmVjdEJlZ2luID0gYmVnaW4gKyB0TGVuZ3RoICsgZ2FwO1xuICAgIHZhciBwYXRoID0gXCJNIFwiLmNvbmNhdChiZWdpbiwgXCIsMCBMIFwiKS5jb25jYXQoYmVnaW4gKyB0TGVuZ3RoLCBcIiwtXCIpLmNvbmNhdCh0V2lkdGggLyAyLCBcIiBMIFwiKS5jb25jYXQoYmVnaW4gKyB0TGVuZ3RoLCBcIixcIikuY29uY2F0KHRXaWR0aCAvIDIsIFwiIFpcXG4gICAgICAgICAgICBNIFwiKS5jb25jYXQocmVjdEJlZ2luLCBcIiwgLVwiKS5jb25jYXQocldpZHRoIC8gMiwgXCJcXG4gICAgICAgICAgICBMIFwiKS5jb25jYXQocmVjdEJlZ2luICsgckxlbmd0aCwgXCIgLVwiKS5jb25jYXQocldpZHRoIC8gMiwgXCJcXG4gICAgICAgICAgICBMIFwiKS5jb25jYXQocmVjdEJlZ2luICsgckxlbmd0aCwgXCIgXCIpLmNvbmNhdChyV2lkdGggLyAyLCBcIlxcbiAgICAgICAgICAgIEwgXCIpLmNvbmNhdChyZWN0QmVnaW4sIFwiIFwiKS5jb25jYXQocldpZHRoIC8gMiwgXCJcXG4gICAgICAgICAgICBaXCIpO1xuICAgIHJldHVybiBwYXRoO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/arrow.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/combo.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/combo.js ***! \********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/@antv/g6-core/es/element/shapeBase.js\");\n\n\n\n\n\nvar singleCombo = {\n itemType: 'combo',\n // 单个图形的类型\n shapeType: 'single-combo',\n\n /**\n * Combo 标题文本相对图形的位置,默认为 top\n * 位置包括: top, bottom, left, right, center\n * @type {String}\n */\n labelPosition: 'top',\n\n /**\n * 标题文本相对偏移,当 labelPosition 不为 center 时有效\n * @type {Number}\n */\n refX: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.refX,\n refY: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.refY,\n options: {\n style: {\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboStateStyles)\n },\n\n /**\n * 获取 Combo 宽高\n * @internal 返回 Combo 的大小,以 [width, height] 的方式维护\n * @param {Object} cfg Combo 的配置项\n * @return {Array} 宽高\n */\n getSize: function getSize(cfg) {\n var size = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(cfg.size || this.options.size || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size); // size 是数组,若长度为 1,则补长度为 2\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size) && size.length === 1) {\n size = [size[0], size[0]];\n } // size 为数字,则转换为数组\n\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size)) {\n size = [size, size];\n }\n\n return size;\n },\n // 私有方法,不希望扩展的 Combo 复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition;\n var cfgStyle = cfg.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(padding)) padding = padding[0];\n var refX = labelCfg.refX,\n refY = labelCfg.refY; // 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refX\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refX)) {\n refX = this.refX; // 不居中时的偏移量\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refY)) {\n refY = this.refY; // 不居中时的偏移量\n }\n\n var size = this.getSize(cfg);\n var r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;\n var dis = r + padding;\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0,\n y: -dis - refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: dis + refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'left':\n style = {\n x: -dis + refX,\n y: 0,\n textAlign: 'left'\n };\n break;\n\n case 'center':\n style = {\n x: 0,\n y: 0,\n text: cfg.label,\n textAlign: 'center'\n };\n break;\n\n default:\n style = {\n x: dis + refX,\n y: 0,\n textAlign: 'right'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType; // || this.type,都已经加了 shapeType\n\n var style = this.getShapeStyle(cfg);\n var shape = group.addShape(shapeType, {\n attrs: style,\n draggable: true,\n name: 'combo-shape'\n });\n return shape;\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle) {\n var keyShape = item.get('keyShape');\n var animate = cfg.animate === undefined ? this.options.animate : cfg.animate;\n\n if (animate && keyShape.animate) {\n keyShape.animate(keyShapeStyle, {\n duration: 200,\n easing: 'easeLinear'\n });\n } else {\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n }\n\n this.updateLabel(cfg, item); // special for some types of nodes\n }\n};\n\nvar singleComboDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_4__[\"shapeBase\"]), singleCombo);\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerCombo('single-combo', singleComboDef);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvLmpzPzczNjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2tCO0FBQ3BCO0FBQ0g7QUFDWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUSwrQ0FBTTtBQUNkLFFBQVEsK0NBQU07QUFDZDtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixZQUFZLCtDQUFNO0FBQ2xCLGlCQUFpQiwrQ0FBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsa0JBQWtCLCtDQUFNO0FBQ3hCLG9CQUFvQiwrQ0FBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTCxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLCtDQUFNO0FBQ3BDLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsTUFBTTtBQUNwQjtBQUNBO0FBQ0EsZUFBZSx3REFBSyxrQ0FBa0MsK0NBQU0sb0JBQW9COztBQUVoRixRQUFRLDBEQUFPO0FBQ2Y7QUFDQSxLQUFLOzs7QUFHTCxTQUFTLDBEQUFPO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMERBQU87QUFDZjtBQUNBLDZCQUE2Qjs7QUFFN0IsUUFBUSx3REFBSztBQUNiLHVCQUF1QjtBQUN2Qjs7QUFFQSxRQUFRLHdEQUFLO0FBQ2IsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsb0JBQW9CLHNEQUFRLEdBQUc7QUFDL0I7O0FBRUEsZ0NBQWdDO0FBQ2hDO0FBQ0E7O0FBRUEscUJBQXFCLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxFQUFFLG9EQUFTOztBQUVwRCw4Q0FBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm8uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNOaWwsIGNsb25lIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5pbXBvcnQgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBzaGFwZUJhc2UgfSBmcm9tICcuL3NoYXBlQmFzZSc7XG52YXIgc2luZ2xlQ29tYm8gPSB7XG4gIGl0ZW1UeXBlOiAnY29tYm8nLFxuICAvLyDljZXkuKrlm77lvaLnmoTnsbvlnotcbiAgc2hhcGVUeXBlOiAnc2luZ2xlLWNvbWJvJyxcblxuICAvKipcbiAgICogQ29tYm8g5qCH6aKY5paH5pys55u45a+55Zu+5b2i55qE5L2N572u77yM6buY6K6k5Li6IHRvcFxuICAgKiDkvY3nva7ljIXmi6zvvJogdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LCBjZW50ZXJcbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIGxhYmVsUG9zaXRpb246ICd0b3AnLFxuXG4gIC8qKlxuICAgKiDmoIfpopjmlofmnKznm7jlr7nlgY/np7vvvIzlvZMgbGFiZWxQb3NpdGlvbiDkuI3kuLogY2VudGVyIOaXtuacieaViFxuICAgKiBAdHlwZSB7TnVtYmVyfVxuICAgKi9cbiAgcmVmWDogR2xvYmFsLmNvbWJvTGFiZWwucmVmWCxcbiAgcmVmWTogR2xvYmFsLmNvbWJvTGFiZWwucmVmWSxcbiAgb3B0aW9uczoge1xuICAgIHN0eWxlOiB7XG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5jb21ib0xhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLmNvbWJvU3RhdGVTdHlsZXMpXG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPliBDb21ibyDlrr3pq5hcbiAgICogQGludGVybmFsIOi/lOWbniBDb21ibyDnmoTlpKflsI/vvIzku6UgW3dpZHRoLCBoZWlnaHRdIOeahOaWueW8j+e7tOaKpFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyBDb21ibyDnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl9IOWuvemrmFxuICAgKi9cbiAgZ2V0U2l6ZTogZnVuY3Rpb24gZ2V0U2l6ZShjZmcpIHtcbiAgICB2YXIgc2l6ZSA9IGNsb25lKGNmZy5zaXplIHx8IHRoaXMub3B0aW9ucy5zaXplIHx8IEdsb2JhbC5kZWZhdWx0Q29tYm8uc2l6ZSk7IC8vIHNpemUg5piv5pWw57uE77yM6Iul6ZW/5bqm5Li6IDHvvIzliJnooaXplb/luqbkuLogMlxuXG4gICAgaWYgKGlzQXJyYXkoc2l6ZSkgJiYgc2l6ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHNpemUgPSBbc2l6ZVswXSwgc2l6ZVswXV07XG4gICAgfSAvLyBzaXplIOS4uuaVsOWtl++8jOWImei9rOaNouS4uuaVsOe7hFxuXG5cbiAgICBpZiAoIWlzQXJyYXkoc2l6ZSkpIHtcbiAgICAgIHNpemUgPSBbc2l6ZSwgc2l6ZV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpemU7XG4gIH0sXG4gIC8vIOengeacieaWueazle+8jOS4jeW4jOacm+aJqeWxleeahCBDb21ibyDlpI3lhpnov5nkuKrmlrnms5VcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcpIHtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjtcbiAgICB2YXIgY2ZnU3R5bGUgPSBjZmcuc3R5bGU7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNBcnJheShwYWRkaW5nKSkgcGFkZGluZyA9IHBhZGRpbmdbMF07XG4gICAgdmFyIHJlZlggPSBsYWJlbENmZy5yZWZYLFxuICAgICAgICByZWZZID0gbGFiZWxDZmcucmVmWTsgLy8g6ICD6JmRIHJlZlgg5ZKMIHJlZlkgPSAwIOeahOWcuuaZr++8jOS4jeeUqOeUqCBsYWJlbENmZy5yZWZYIHx8IEdsb2JhbC5ub2RlTGFiZWwucmVmWFxuXG4gICAgaWYgKGlzTmlsKHJlZlgpKSB7XG4gICAgICByZWZYID0gdGhpcy5yZWZYOyAvLyDkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cbiAgICB9XG5cbiAgICBpZiAoaXNOaWwocmVmWSkpIHtcbiAgICAgIHJlZlkgPSB0aGlzLnJlZlk7IC8vIOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuICAgIH1cblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHIgPSBNYXRoLm1heChjZmdTdHlsZS5yLCBzaXplWzBdIC8gMikgfHwgc2l6ZVswXSAvIDI7XG4gICAgdmFyIGRpcyA9IHIgKyBwYWRkaW5nO1xuICAgIHZhciBzdHlsZTtcblxuICAgIHN3aXRjaCAobGFiZWxQb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtZGlzIC0gcmVmWSxcbiAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdib3R0b20nLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogZGlzICsgcmVmWSxcbiAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdib3R0b20nLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAtZGlzICsgcmVmWCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IGRpcyArIHJlZlgsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCdcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgc3R5bGUudGV4dCA9IGNmZy5sYWJlbDtcbiAgICByZXR1cm4gc3R5bGU7XG4gIH0sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc2hhcGVUeXBlID0gdGhpcy5zaGFwZVR5cGU7IC8vIHx8IHRoaXMudHlwZe+8jOmDveW3sue7j+WKoOS6hiBzaGFwZVR5cGVcblxuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHNoYXBlVHlwZSwge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgbmFtZTogJ2NvbWJvLXNoYXBlJ1xuICAgIH0pO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcbiAgdXBkYXRlU2hhcGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlKGNmZywgaXRlbSwga2V5U2hhcGVTdHlsZSkge1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBhbmltYXRlID0gY2ZnLmFuaW1hdGUgPT09IHVuZGVmaW5lZCA/IHRoaXMub3B0aW9ucy5hbmltYXRlIDogY2ZnLmFuaW1hdGU7XG5cbiAgICBpZiAoYW5pbWF0ZSAmJiBrZXlTaGFwZS5hbmltYXRlKSB7XG4gICAgICBrZXlTaGFwZS5hbmltYXRlKGtleVNoYXBlU3R5bGUsIHtcbiAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgZWFzaW5nOiAnZWFzZUxpbmVhcidcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlTaGFwZS5hdHRyKF9fYXNzaWduKHt9LCBrZXlTaGFwZVN0eWxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0pOyAvLyBzcGVjaWFsIGZvciBzb21lIHR5cGVzIG9mIG5vZGVzXG4gIH1cbn07XG5cbnZhciBzaW5nbGVDb21ib0RlZiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzaGFwZUJhc2UpLCBzaW5nbGVDb21ibyk7XG5cblNoYXBlLnJlZ2lzdGVyQ29tYm8oJ3NpbmdsZS1jb21ibycsIHNpbmdsZUNvbWJvRGVmKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/combo.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/combos/circle.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/combos/circle.js ***! \****************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n\n // 圆形 Combo\n\n_shape__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo('circle', {\n // 自定义节点时的配置\n options: {\n size: [_global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.size[0], _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.size[0]],\n padding: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.padding[0],\n animate: true,\n style: {\n stroke: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboLabel.style.fontSize\n },\n refX: 0,\n refY: 0\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'top',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n delete style.height;\n delete style.width;\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: 'circle-combo',\n name: 'circle-combo',\n draggable: true\n });\n return keyShape;\n },\n\n /**\n * 获取 Combo 的样式,供基于该 Combo 自定义时使用\n * @param {Object} cfg Combo 数据模型\n * @return {Object} Combo 的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isArray\"])(padding)) padding = padding[0];\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var r;\n\n if (cfg.fixSize) {\n r = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0];\n } else {\n var size = this.getSize(cfg);\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(style.r) || isNaN(style.r)) r = size[0] / 2 || _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.r;else r = Math.max(style.r, size[0] / 2) || size[0] / 2;\n }\n\n style.r = r + padding;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0\n }, style);\n\n if (cfg.style) cfg.style.r = r;else {\n cfg.style = {\n r: r\n };\n }\n return styles;\n },\n update: function update(cfg, item) {\n var size = this.getSize(cfg);\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isArray\"])(padding)) padding = padding[0];\n var cfgStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(cfg.style);\n var r;\n\n if (cfg.fixSize) {\n r = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0];\n } else {\n r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;\n }\n\n cfgStyle.r = r + padding;\n var itemCacheSize = item.get('sizeCache');\n\n if (itemCacheSize) {\n itemCacheSize.r = cfgStyle.r;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, keyShape.attr(), strokeStyle, cfgStyle);\n if (cfg.style) cfg.style.r = r;else {\n cfg.style = {\n r: r\n };\n }\n this.updateShape(cfg, item, style, true);\n }\n}, 'single-combo');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9jaXJjbGUuanM/MWFmMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0M7QUFDTDtBQUM4Qjs7QUFFM0QsOENBQUs7QUFDTDtBQUNBO0FBQ0EsV0FBVywrQ0FBTSx1QkFBdUIsK0NBQU07QUFDOUMsYUFBYSwrQ0FBTTtBQUNuQjtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixZQUFZLCtDQUFNO0FBQ2xCLGlCQUFpQiwrQ0FBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsa0JBQWtCLCtDQUFNO0FBQ3hCLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBEQUFPO0FBQ2Y7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUE7QUFDQSxVQUFVLDJEQUFRO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLFdBQVcsMkRBQVEsZ0RBQWdELCtDQUFNLHNCQUFzQjtBQUMvRjs7QUFFQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLEtBQUs7O0FBRUwsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwREFBTztBQUNmLG1CQUFtQix3REFBSztBQUN4Qjs7QUFFQTtBQUNBLFVBQVUsMkRBQVE7QUFDbEIsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm9zL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uLy4uL2dsb2JhbCc7XG5pbXBvcnQgU2hhcGUgZnJvbSAnLi4vc2hhcGUnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGNsb25lLCBtaXgsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJzsgLy8g5ZyG5b2iIENvbWJvXG5cblNoYXBlLnJlZ2lzdGVyQ29tYm8oJ2NpcmNsZScsIHtcbiAgLy8g6Ieq5a6a5LmJ6IqC54K55pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBbR2xvYmFsLmRlZmF1bHRDb21iby5zaXplWzBdLCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF1dLFxuICAgIHBhZGRpbmc6IEdsb2JhbC5kZWZhdWx0Q29tYm8ucGFkZGluZ1swXSxcbiAgICBhbmltYXRlOiB0cnVlLFxuICAgIHN0eWxlOiB7XG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5jb21ib0xhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5mb250U2l6ZVxuICAgICAgfSxcbiAgICAgIHJlZlg6IDAsXG4gICAgICByZWZZOiAwXG4gICAgfSxcbiAgICBzdGF0ZVN0eWxlczogX19hc3NpZ24oe30sIEdsb2JhbC5jb21ib1N0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdjaXJjbGUnLFxuICAvLyDmlofmnKzkvY3nva5cbiAgbGFiZWxQb3NpdGlvbjogJ3RvcCcsXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICBkZWxldGUgc3R5bGUuaGVpZ2h0O1xuICAgIGRlbGV0ZSBzdHlsZS53aWR0aDtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiAnY2lyY2xlLWNvbWJvJyxcbiAgICAgIG5hbWU6ICdjaXJjbGUtY29tYm8nLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5YgQ29tYm8g55qE5qC35byP77yM5L6b5Z+65LqO6K+lIENvbWJvIOiHquWumuS5ieaXtuS9v+eUqFxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIENvbWJvIOaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IENvbWJvIOeahOagt+W8j1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5vcHRpb25zLnN0eWxlO1xuICAgIHZhciBwYWRkaW5nID0gY2ZnLnBhZGRpbmcgfHwgdGhpcy5vcHRpb25zLnBhZGRpbmc7XG4gICAgaWYgKGlzQXJyYXkocGFkZGluZykpIHBhZGRpbmcgPSBwYWRkaW5nWzBdO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5aaC5p6c6K6+572u5LqGY29sb3LvvIzliJnopobnm5bpu5jorqTnmoRzdHJva2XlsZ7mgKdcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBzdHJva2VTdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB2YXIgcjtcblxuICAgIGlmIChjZmcuZml4U2l6ZSkge1xuICAgICAgciA9IGlzTnVtYmVyKGNmZy5maXhTaXplKSA/IGNmZy5maXhTaXplIDogY2ZnLmZpeFNpemVbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgICBpZiAoIWlzTnVtYmVyKHN0eWxlLnIpIHx8IGlzTmFOKHN0eWxlLnIpKSByID0gc2l6ZVswXSAvIDIgfHwgR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5yO2Vsc2UgciA9IE1hdGgubWF4KHN0eWxlLnIsIHNpemVbMF0gLyAyKSB8fCBzaXplWzBdIC8gMjtcbiAgICB9XG5cbiAgICBzdHlsZS5yID0gciArIHBhZGRpbmc7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9LCBzdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlKSBjZmcuc3R5bGUuciA9IHI7ZWxzZSB7XG4gICAgICBjZmcuc3R5bGUgPSB7XG4gICAgICAgIHI6IHJcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSkge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNBcnJheShwYWRkaW5nKSkgcGFkZGluZyA9IHBhZGRpbmdbMF07XG4gICAgdmFyIGNmZ1N0eWxlID0gY2xvbmUoY2ZnLnN0eWxlKTtcbiAgICB2YXIgcjtcblxuICAgIGlmIChjZmcuZml4U2l6ZSkge1xuICAgICAgciA9IGlzTnVtYmVyKGNmZy5maXhTaXplKSA/IGNmZy5maXhTaXplIDogY2ZnLmZpeFNpemVbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHIgPSBNYXRoLm1heChjZmdTdHlsZS5yLCBzaXplWzBdIC8gMikgfHwgc2l6ZVswXSAvIDI7XG4gICAgfVxuXG4gICAgY2ZnU3R5bGUuciA9IHIgKyBwYWRkaW5nO1xuICAgIHZhciBpdGVtQ2FjaGVTaXplID0gaXRlbS5nZXQoJ3NpemVDYWNoZScpO1xuXG4gICAgaWYgKGl0ZW1DYWNoZVNpemUpIHtcbiAgICAgIGl0ZW1DYWNoZVNpemUuciA9IGNmZ1N0eWxlLnI7XG4gICAgfSAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG5cblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBzdHlsZSA9IG1peCh7fSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSwgY2ZnU3R5bGUpO1xuICAgIGlmIChjZmcuc3R5bGUpIGNmZy5zdHlsZS5yID0gcjtlbHNlIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgcjogclxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlKTtcbiAgfVxufSwgJ3NpbmdsZS1jb21ibycpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/combos/circle.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/combos/index.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/combos/index.js ***! \***************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./circle */ \"./node_modules/@antv/g6-core/es/element/combos/circle.js\");\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/@antv/g6-core/es/element/combos/rect.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9pbmRleC5qcz9lOTdmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFrQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm9zL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2NpcmNsZSc7XG5pbXBvcnQgJy4vcmVjdCc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/combos/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/combos/rect.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/combos/rect.js ***! \**************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n\n\n\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerCombo('rect', {\n // 自定义 Combo 时的配置\n options: {\n size: [40, 5],\n padding: [25, 20, 15, 20],\n animate: true,\n style: {\n radius: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n // 连接点,默认为左右\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboStateStyles)\n },\n shapeType: 'rect',\n labelPosition: 'top',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: 'rect-combo',\n name: 'rect-combo',\n draggable: true\n });\n return keyShape;\n },\n // 私有方法,不希望扩展的 Combo 复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition;\n var cfgStyle = cfg.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var refX = labelCfg.refX,\n refY = labelCfg.refY; // 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refY\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refX)) {\n refX = this.refX; // 不居中时的偏移量\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refY)) {\n refY = this.refY; // 不居中时的偏移量\n }\n\n var leftDis = cfgStyle.width / 2 + padding[3];\n var topDis = cfgStyle.height / 2 + padding[0];\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0 - leftDis + refX,\n y: 0 - topDis + refY,\n textBaseline: 'top',\n textAlign: 'left'\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: topDis + refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'left':\n style = {\n x: 0 - leftDis + refY,\n y: 0,\n textAlign: 'left'\n };\n break;\n\n case 'center':\n style = {\n x: 0,\n y: 0,\n text: cfg.label,\n textAlign: 'center'\n };\n break;\n\n default:\n style = {\n x: leftDis + refX,\n y: 0,\n textAlign: 'right'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var size = this.getSize(cfg);\n var width;\n var height;\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n\n if (fixSize) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(fixSize)) {\n width = fixSize;\n height = fixSize;\n } else {\n width = fixSize[0];\n height = fixSize[1];\n }\n } else {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(style.width) || isNaN(style.width)) width = size[0] || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.width;else width = Math.max(style.width, size[0]) || size[0];\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(style.height) || isNaN(style.height)) height = size[1] || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.height;else height = Math.max(style.height, size[1]) || size[1];\n }\n\n var x = -width / 2 - padding[3];\n var y = -height / 2 - padding[0];\n style.width = width + padding[1] + padding[3];\n style.height = height + padding[0] + padding[2];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: x,\n y: y\n }, style);\n\n if (!cfg.style) {\n cfg.style = {\n width: width,\n height: height\n };\n } else {\n cfg.style.width = width;\n cfg.style.height = height;\n }\n\n return styles;\n },\n update: function update(cfg, item) {\n var size = this.getSize(cfg);\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var cfgStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(cfg.style);\n var width, height;\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n\n if (fixSize) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(fixSize)) {\n width = fixSize;\n height = fixSize;\n } else {\n width = fixSize[0];\n height = fixSize[1];\n }\n } else {\n width = Math.max(cfgStyle.width, size[0]) || size[0];\n height = Math.max(cfgStyle.height, size[1]) || size[1];\n }\n\n cfgStyle.width = width + padding[1] + padding[3];\n cfgStyle.height = height + padding[0] + padding[2];\n var itemCacheSize = item.get('sizeCache');\n\n if (itemCacheSize) {\n itemCacheSize.width = cfgStyle.width;\n itemCacheSize.height = cfgStyle.height;\n }\n\n cfgStyle.x = -width / 2 - padding[3];\n cfgStyle.y = -height / 2 - padding[0]; // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, keyShape.attr(), strokeStyle, cfgStyle);\n\n if (cfg.style) {\n cfg.style.width = width;\n cfg.style.height = height;\n } else {\n cfg.style = {\n width: width,\n height: height\n };\n }\n\n this.updateShape(cfg, item, style, false);\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle) {\n var keyShape = item.get('keyShape');\n var animate = cfg.animate === undefined ? this.options.animate : cfg.animate;\n\n if (animate && keyShape.animate) {\n keyShape.animate(keyShapeStyle, {\n duration: 200,\n easing: 'easeLinear'\n });\n } else {\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n }\n\n this.updateLabel(cfg, item);\n }\n}, 'single-combo');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9yZWN0LmpzP2YxZjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUN3QjtBQUN2QjtBQUNMO0FBQzdCLDhDQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLFlBQVksK0NBQU07QUFDbEIsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBLDZCQUE2Qjs7QUFFN0IsUUFBUSx3REFBSztBQUNiLHVCQUF1QjtBQUN2Qjs7QUFFQSxRQUFRLHdEQUFLO0FBQ2IsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSwyREFBUTtBQUNsQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxXQUFXLDJEQUFRLHdEQUF3RCwrQ0FBTSwwQkFBMEI7QUFDM0csV0FBVywyREFBUSwyREFBMkQsK0NBQU0sMkJBQTJCO0FBQy9HOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCLG1CQUFtQix3REFBSztBQUN4QjtBQUNBOztBQUVBO0FBQ0EsVUFBVSwyREFBUTtBQUNsQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHOztBQUV0QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLG9CQUFvQixzREFBUSxHQUFHO0FBQy9COztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9jb21ib3MvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBtaXgsIGlzTnVtYmVyLCBjbG9uZSwgaXNOaWwgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7XG5TaGFwZS5yZWdpc3RlckNvbWJvKCdyZWN0Jywge1xuICAvLyDoh6rlrprkuYkgQ29tYm8g5pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBbNDAsIDVdLFxuICAgIHBhZGRpbmc6IFsyNSwgMjAsIDE1LCAyMF0sXG4gICAgYW5pbWF0ZTogdHJ1ZSxcbiAgICBzdHlsZToge1xuICAgICAgcmFkaXVzOiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuZmlsbCxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIC8vIOaWh+acrOagt+W8j+mFjee9rlxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLmNvbWJvTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDov57mjqXngrnvvIzpu5jorqTkuLrlt6blj7NcbiAgICBhbmNob3JQb2ludHM6IFtbMCwgMC41XSwgWzEsIDAuNV1dLFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLmNvbWJvU3RhdGVTdHlsZXMpXG4gIH0sXG4gIHNoYXBlVHlwZTogJ3JlY3QnLFxuICBsYWJlbFBvc2l0aW9uOiAndG9wJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiAncmVjdC1jb21ibycsXG4gICAgICBuYW1lOiAncmVjdC1jb21ibycsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG4gIC8vIOengeacieaWueazle+8jOS4jeW4jOacm+aJqeWxleeahCBDb21ibyDlpI3lhpnov5nkuKrmlrnms5VcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcpIHtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjtcbiAgICB2YXIgY2ZnU3R5bGUgPSBjZmcuc3R5bGU7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNOdW1iZXIocGFkZGluZykpIHBhZGRpbmcgPSBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gICAgdmFyIHJlZlggPSBsYWJlbENmZy5yZWZYLFxuICAgICAgICByZWZZID0gbGFiZWxDZmcucmVmWTsgLy8g6ICD6JmRIHJlZlgg5ZKMIHJlZlkgPSAwIOeahOWcuuaZr++8jOS4jeeUqOeUqCBsYWJlbENmZy5yZWZYIHx8IEdsb2JhbC5ub2RlTGFiZWwucmVmWVxuXG4gICAgaWYgKGlzTmlsKHJlZlgpKSB7XG4gICAgICByZWZYID0gdGhpcy5yZWZYOyAvLyDkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cbiAgICB9XG5cbiAgICBpZiAoaXNOaWwocmVmWSkpIHtcbiAgICAgIHJlZlkgPSB0aGlzLnJlZlk7IC8vIOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuICAgIH1cblxuICAgIHZhciBsZWZ0RGlzID0gY2ZnU3R5bGUud2lkdGggLyAyICsgcGFkZGluZ1szXTtcbiAgICB2YXIgdG9wRGlzID0gY2ZnU3R5bGUuaGVpZ2h0IC8gMiArIHBhZGRpbmdbMF07XG4gICAgdmFyIHN0eWxlO1xuXG4gICAgc3dpdGNoIChsYWJlbFBvc2l0aW9uKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwIC0gbGVmdERpcyArIHJlZlgsXG4gICAgICAgICAgeTogMCAtIHRvcERpcyArIHJlZlksXG4gICAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJyxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0J1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiB0b3BEaXMgKyByZWZZLFxuICAgICAgICAgIHRleHRCYXNlbGluZTogJ2JvdHRvbScsXG4gICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAgLSBsZWZ0RGlzICsgcmVmWSxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IGxlZnREaXMgKyByZWZYLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTmoLflvI/vvIzkvpvln7rkuo7or6XoioLngrnoh6rlrprkuYnml7bkvb/nlKhcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICogQHJldHVybiB7T2JqZWN0fSDoioLngrnnmoTmoLflvI9cbiAgICovXG4gIGdldFNoYXBlU3R5bGU6IGZ1bmN0aW9uIGdldFNoYXBlU3R5bGUoY2ZnKSB7XG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IHRoaXMub3B0aW9ucy5zdHlsZTtcbiAgICB2YXIgcGFkZGluZyA9IGNmZy5wYWRkaW5nIHx8IHRoaXMub3B0aW9ucy5wYWRkaW5nO1xuICAgIGlmIChpc051bWJlcihwYWRkaW5nKSkgcGFkZGluZyA9IFtwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nXTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGg7XG4gICAgdmFyIGhlaWdodDtcbiAgICB2YXIgZml4U2l6ZSA9IGNmZy5jb2xsYXBzZWQgJiYgY2ZnLmZpeENvbGxhcHNlU2l6ZSA/IGNmZy5maXhDb2xsYXBzZVNpemUgOiBjZmcuZml4U2l6ZTtcblxuICAgIGlmIChmaXhTaXplKSB7XG4gICAgICBpZiAoaXNOdW1iZXIoZml4U2l6ZSkpIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplWzBdO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplWzFdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWlzTnVtYmVyKHN0eWxlLndpZHRoKSB8fCBpc05hTihzdHlsZS53aWR0aCkpIHdpZHRoID0gc2l6ZVswXSB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLndpZHRoO2Vsc2Ugd2lkdGggPSBNYXRoLm1heChzdHlsZS53aWR0aCwgc2l6ZVswXSkgfHwgc2l6ZVswXTtcbiAgICAgIGlmICghaXNOdW1iZXIoc3R5bGUuaGVpZ2h0KSB8fCBpc05hTihzdHlsZS5oZWlnaHQpKSBoZWlnaHQgPSBzaXplWzFdIHx8IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuaGVpZ2h0O2Vsc2UgaGVpZ2h0ID0gTWF0aC5tYXgoc3R5bGUuaGVpZ2h0LCBzaXplWzFdKSB8fCBzaXplWzFdO1xuICAgIH1cblxuICAgIHZhciB4ID0gLXdpZHRoIC8gMiAtIHBhZGRpbmdbM107XG4gICAgdmFyIHkgPSAtaGVpZ2h0IC8gMiAtIHBhZGRpbmdbMF07XG4gICAgc3R5bGUud2lkdGggPSB3aWR0aCArIHBhZGRpbmdbMV0gKyBwYWRkaW5nWzNdO1xuICAgIHN0eWxlLmhlaWdodCA9IGhlaWdodCArIHBhZGRpbmdbMF0gKyBwYWRkaW5nWzJdO1xuXG4gICAgdmFyIHN0eWxlcyA9IF9fYXNzaWduKHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSwgc3R5bGUpO1xuXG4gICAgaWYgKCFjZmcuc3R5bGUpIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2ZnLnN0eWxlLndpZHRoID0gd2lkdGg7XG4gICAgICBjZmcuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSkge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNOdW1iZXIocGFkZGluZykpIHBhZGRpbmcgPSBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gICAgdmFyIGNmZ1N0eWxlID0gY2xvbmUoY2ZnLnN0eWxlKTtcbiAgICB2YXIgd2lkdGgsIGhlaWdodDtcbiAgICB2YXIgZml4U2l6ZSA9IGNmZy5jb2xsYXBzZWQgJiYgY2ZnLmZpeENvbGxhcHNlU2l6ZSA/IGNmZy5maXhDb2xsYXBzZVNpemUgOiBjZmcuZml4U2l6ZTtcblxuICAgIGlmIChmaXhTaXplKSB7XG4gICAgICBpZiAoaXNOdW1iZXIoZml4U2l6ZSkpIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplWzBdO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplWzFdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB3aWR0aCA9IE1hdGgubWF4KGNmZ1N0eWxlLndpZHRoLCBzaXplWzBdKSB8fCBzaXplWzBdO1xuICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoY2ZnU3R5bGUuaGVpZ2h0LCBzaXplWzFdKSB8fCBzaXplWzFdO1xuICAgIH1cblxuICAgIGNmZ1N0eWxlLndpZHRoID0gd2lkdGggKyBwYWRkaW5nWzFdICsgcGFkZGluZ1szXTtcbiAgICBjZmdTdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyBwYWRkaW5nWzBdICsgcGFkZGluZ1syXTtcbiAgICB2YXIgaXRlbUNhY2hlU2l6ZSA9IGl0ZW0uZ2V0KCdzaXplQ2FjaGUnKTtcblxuICAgIGlmIChpdGVtQ2FjaGVTaXplKSB7XG4gICAgICBpdGVtQ2FjaGVTaXplLndpZHRoID0gY2ZnU3R5bGUud2lkdGg7XG4gICAgICBpdGVtQ2FjaGVTaXplLmhlaWdodCA9IGNmZ1N0eWxlLmhlaWdodDtcbiAgICB9XG5cbiAgICBjZmdTdHlsZS54ID0gLXdpZHRoIC8gMiAtIHBhZGRpbmdbM107XG4gICAgY2ZnU3R5bGUueSA9IC1oZWlnaHQgLyAyIC0gcGFkZGluZ1swXTsgLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDkuI4gZ2V0U2hhcGVTdHlsZSDkuI3lkIzlnKjkuo7vvIx1cGRhdGUg5pe26ZyA6KaB6I635Y+W5Yiw5b2T5YmN55qEIHN0eWxlIOi/m+ihjOiejeWQiOOAguWNs+aWsOS8oOWFpeeahOmFjee9rumhueS4reayoeaciea2ieWPiueahOWxnuaAp++8jOS/neeVmeW9k+WJjeeahOmFjee9ruOAglxuXG4gICAgdmFyIGtleVNoYXBlID0gaXRlbS5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmdTdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlKSB7XG4gICAgICBjZmcuc3R5bGUud2lkdGggPSB3aWR0aDtcbiAgICAgIGNmZy5zdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIGZhbHNlKTtcbiAgfSxcbiAgdXBkYXRlU2hhcGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlKGNmZywgaXRlbSwga2V5U2hhcGVTdHlsZSkge1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBhbmltYXRlID0gY2ZnLmFuaW1hdGUgPT09IHVuZGVmaW5lZCA/IHRoaXMub3B0aW9ucy5hbmltYXRlIDogY2ZnLmFuaW1hdGU7XG5cbiAgICBpZiAoYW5pbWF0ZSAmJiBrZXlTaGFwZS5hbmltYXRlKSB7XG4gICAgICBrZXlTaGFwZS5hbmltYXRlKGtleVNoYXBlU3R5bGUsIHtcbiAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgZWFzaW5nOiAnZWFzZUxpbmVhcidcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlTaGFwZS5hdHRyKF9fYXNzaWduKHt9LCBrZXlTaGFwZVN0eWxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0pO1xuICB9XG59LCAnc2luZ2xlLWNvbWJvJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/combos/rect.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/edge.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/edge.js ***! \*******************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/path */ \"./node_modules/@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/@antv/g6-core/es/element/shapeBase.js\");\n/**\n * @fileOverview 自定义边\n * @description 自定义边中有大量逻辑同自定义节点重复,虽然可以提取成为 mixin ,但是考虑到代码的可读性,还是单独实现。\n */\n\n\n\n\n\n\n\n\nvar CLS_SHAPE = 'edge-shape'; // start,end 倒置,center 不变\n\nfunction revertAlign(labelPosition) {\n var textAlign = labelPosition;\n\n if (labelPosition === 'start') {\n textAlign = 'end';\n } else if (labelPosition === 'end') {\n textAlign = 'start';\n }\n\n return textAlign;\n}\n\nvar singleEdge = {\n itemType: 'edge',\n\n /**\n * 文本的位置\n * @type {String}\n */\n labelPosition: 'center',\n\n /**\n * 文本的 x 偏移\n * @type {Number}\n */\n refX: 0,\n\n /**\n * 文本的 y 偏移\n * @type {Number}\n */\n refY: 0,\n\n /**\n * 文本是否跟着线自动旋转,默认 false\n * @type {Boolean}\n */\n labelAutoRotate: false,\n // 自定义边时的配置\n options: {\n size: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.size,\n style: {\n x: 0,\n y: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style.stroke,\n lineAppendWidth: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style.lineAppendWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeStateStyles)\n },\n\n /**\n * 获取边的 path\n * @internal 供扩展的边覆盖\n * @param {Array} points 构成边的点的集合\n * @return {Array} 构成 path 的数组\n */\n getPath: function getPath(points) {\n var path = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n return path;\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var size = cfg.size || _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg);\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var path = this.getPath(points);\n var styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style, {\n stroke: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.color,\n lineWidth: size,\n path: path\n }, style);\n return styles;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item, updateType) {\n var _a;\n\n var group = item.getContainer(); // const strokeStyle: ShapeStyle = {\n // stroke: cfg.color,\n // };\n\n var shape = ((_a = item.getKeyShape) === null || _a === void 0 ? void 0 : _a.call(item)) || group['shapeMap']['edge-shape']; // group.find((element) => element.get('className') === 'edge-shape');\n\n var size = cfg.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg); // || cfg.controlPoints;\n\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var currentAttr = shape.attr(); // const previousStyle = mix({}, strokeStyle, currentAttr, cfg.style);\n\n var previousStyle = cfg.style || {};\n\n if (previousStyle.stroke === undefined) {\n previousStyle.stroke = cfg.color;\n }\n\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var routeCfg = {\n radius: previousStyle.radius\n };\n\n if (!controlPoints) {\n routeCfg = {\n source: source,\n target: target,\n offset: previousStyle.offset,\n radius: previousStyle.radius\n };\n }\n\n var path = this.getPath(points, routeCfg);\n var style = {};\n\n if (updateType === 'move') {\n style = {\n path: path\n };\n } else {\n if (currentAttr.endArrow && previousStyle.endArrow === false) {\n cfg.style.endArrow = {\n path: ''\n };\n }\n\n if (currentAttr.startArrow && previousStyle.startArrow === false) {\n cfg.style.startArrow = {\n path: ''\n };\n }\n\n style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg.style);\n if (style.lineWidth === undefined) style.lineWdith = (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(size) ? size : size === null || size === void 0 ? void 0 : size[0]) || currentAttr.lineWidth;\n if (style.path === undefined) style.path = path;\n if (style.stroke === undefined) style.stroke = currentAttr.stroke || cfg.color;\n }\n\n if (shape) {\n shape.attr(style);\n }\n },\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group) {\n var labelPosition = labelCfg.position || this.labelPosition; // 文本的位置用户可以传入\n\n var style = {};\n var pathShape = group === null || group === void 0 ? void 0 : group['shapeMap'][CLS_SHAPE]; // group?.find((element) => element.get('className') === CLS_SHAPE);\n // 不对 pathShape 进行判空,如果线不存在,说明有问题了\n\n var pointPercent;\n\n if (labelPosition === 'start') {\n pointPercent = 0;\n } else if (labelPosition === 'end') {\n pointPercent = 1;\n } else {\n pointPercent = 0.5;\n } // 偏移量\n\n\n var offsetX = labelCfg.refX || this.refX;\n var offsetY = labelCfg.refY || this.refY; // 如果两个节点重叠,线就变成了一个点,这时候label的位置,就是这个点 + 绝对偏移\n\n if (cfg.startPoint.x === cfg.endPoint.x && cfg.startPoint.y === cfg.endPoint.y) {\n style.x = cfg.startPoint.x + offsetX;\n style.y = cfg.startPoint.y + offsetY;\n style.text = cfg.label;\n return style;\n }\n\n var autoRotate;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;else autoRotate = labelCfg.autoRotate;\n var offsetStyle = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getLabelPosition\"])(pathShape, pointPercent, offsetX, offsetY, autoRotate);\n style.x = offsetStyle.x;\n style.y = offsetStyle.y;\n style.rotate = offsetStyle.rotate;\n style.textAlign = this._getTextAlign(labelPosition, offsetStyle.angle);\n style.text = cfg.label;\n return style;\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, labelCfg) {\n if (!label) {\n return {};\n }\n\n var bbox = label.getBBox();\n var backgroundStyle = labelCfg.style && labelCfg.style.background;\n\n if (!backgroundStyle) {\n return {};\n }\n\n var padding = backgroundStyle.padding;\n var backgroundWidth = bbox.width + padding[1] + padding[3];\n var backgroundHeight = bbox.height + padding[0] + padding[2];\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, backgroundStyle), {\n width: backgroundWidth,\n height: backgroundHeight,\n x: bbox.minX - padding[3],\n y: bbox.minY - padding[0],\n matrix: [1, 0, 0, 0, 1, 0, 0, 0, 1]\n });\n\n var autoRotate;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;else autoRotate = labelCfg.autoRotate;\n\n if (autoRotate) {\n style.matrix = label.attr('matrix') || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n return style;\n },\n // 获取文本对齐方式\n _getTextAlign: function _getTextAlign(labelPosition, angle) {\n var textAlign = 'center';\n\n if (!angle) {\n return labelPosition;\n }\n\n angle = angle % (Math.PI * 2); // 取模\n\n if (labelPosition !== 'center') {\n if (angle >= 0 && angle <= Math.PI / 2 || angle >= 3 / 2 * Math.PI && angle < 2 * Math.PI) {\n textAlign = labelPosition;\n } else {\n textAlign = revertAlign(labelPosition);\n }\n }\n\n return textAlign;\n },\n\n /**\n * @internal 获取边的控制点\n * @param {Object} cfg 边的配置项\n * @return {Array} 控制点的数组\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * @internal 处理需要重计算点和边的情况\n * @param {Object} cfg 边的配置项\n * @return {Object} 边的配置项\n */\n getPathPoints: function getPathPoints(cfg) {\n return cfg;\n },\n\n /**\n * 绘制边\n * @override\n * @param {Object} cfg 边的配置项\n * @param {G.Group} group 边的容器\n * @return {IShape} 图形\n */\n drawShape: function drawShape(cfg, group) {\n var shapeStyle = this.getShapeStyle(cfg);\n var shape = group.addShape('path', {\n className: CLS_SHAPE,\n name: CLS_SHAPE,\n attrs: shapeStyle\n });\n group['shapeMap'][CLS_SHAPE] = shape;\n return shape;\n },\n drawLabel: function drawLabel(cfg, group) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var labelStyle = this.getLabelStyle(cfg, labelCfg, group);\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate;\n var label = group.addShape('text', {\n attrs: labelStyle,\n name: 'text-shape',\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n\n if (!isNaN(rotate) && rotate !== '') {\n label.rotateAtStart(rotate);\n }\n\n if (labelStyle.background) {\n var rect = this.drawLabelBg(cfg, group, label, labelStyle, rotate);\n var labelBgClassname = this.itemType + _shapeBase__WEBPACK_IMPORTED_MODULE_7__[\"CLS_LABEL_BG_SUFFIX\"];\n rect.set('classname', labelBgClassname);\n group['shapeMap'][labelBgClassname] = rect;\n label.toFront();\n }\n\n return label;\n },\n drawLabelBg: function drawLabelBg(cfg, group, label, labelStyle, rotate) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var style = this.getLabelBgStyleByPosition(label, labelCfg);\n var rect = group.addShape('rect', {\n name: 'text-bg-shape',\n attrs: style,\n labelRelated: true\n });\n group['shapeMap']['text-bg-shape'] = rect;\n return rect;\n }\n};\n\nvar singleEdgeDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_7__[\"shapeBase\"]), singleEdge);\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('single-edge', singleEdgeDef); // 直线, 不支持控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('line', {\n // 控制点不生效\n getControlPoints: function getControlPoints() {\n return undefined;\n }\n}, 'single-edge'); // 直线\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('spline', {\n getPath: function getPath(points) {\n var path = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getSpline\"])(points);\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('arc', {\n curveOffset: 20,\n clockwise: 1,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var midPoint = {\n x: (startPoint.x + endPoint.x) / 2,\n y: (startPoint.y + endPoint.y) / 2\n };\n var center;\n var arcPoint; // 根据给定点计算圆弧\n\n if (cfg.controlPoints !== undefined) {\n arcPoint = cfg.controlPoints[0];\n center = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"getCircleCenterByPoints\"])(startPoint, arcPoint, endPoint); // 根据控制点和直线关系决定 clockwise值\n\n if (startPoint.x <= endPoint.x && startPoint.y > endPoint.y) {\n this.clockwise = center.x > arcPoint.x ? 0 : 1;\n } else if (startPoint.x <= endPoint.x && startPoint.y < endPoint.y) {\n this.clockwise = center.x > arcPoint.x ? 1 : 0;\n } else if (startPoint.x > endPoint.x && startPoint.y <= endPoint.y) {\n this.clockwise = center.y < arcPoint.y ? 0 : 1;\n } else {\n this.clockwise = center.y < arcPoint.y ? 1 : 0;\n } // 若给定点和两端点共线,无法生成圆弧,绘制直线\n\n\n if ((arcPoint.x - startPoint.x) / (arcPoint.y - startPoint.y) === (endPoint.x - startPoint.x) / (endPoint.y - startPoint.y)) {\n return [];\n }\n } else {\n // 根据直线连线中点的的偏移计算圆弧\n // 若用户给定偏移量则根据其计算,否则按照默认偏移值计算\n if (cfg.curveOffset === undefined) {\n cfg.curveOffset = this.curveOffset;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(cfg.curveOffset)) {\n cfg.curveOffset = cfg.curveOffset[0];\n }\n\n if (cfg.curveOffset < 0) {\n this.clockwise = 0;\n } else {\n this.clockwise = 1;\n }\n\n var vec = {\n x: endPoint.x - startPoint.x,\n y: endPoint.y - startPoint.y\n };\n var edgeAngle = Math.atan2(vec.y, vec.x);\n arcPoint = {\n x: cfg.curveOffset * Math.cos(-Math.PI / 2 + edgeAngle) + midPoint.x,\n y: cfg.curveOffset * Math.sin(-Math.PI / 2 + edgeAngle) + midPoint.y\n };\n center = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"getCircleCenterByPoints\"])(startPoint, arcPoint, endPoint);\n }\n\n var radius = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"distance\"])(startPoint, center);\n var controlPoints = [{\n x: radius,\n y: radius\n }];\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]); // 控制点与端点共线\n\n if (points.length === 2) {\n path.push(['L', points[1].x, points[1].y]);\n } else {\n path.push(['A', points[1].x, points[1].y, 0, 0, this.clockwise, points[2].x, points[2].y]);\n }\n\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('quadratic', {\n curvePosition: 0.5,\n curveOffset: -20,\n getControlPoints: function getControlPoints(cfg) {\n var controlPoints = cfg.controlPoints; // 指定controlPoints\n\n if (!controlPoints || !controlPoints.length) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(this.curveOffset)) cfg.curveOffset = cfg.curveOffset[0];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(this.curvePosition)) cfg.curvePosition = cfg.curveOffset[0];\n var innerPoint = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition, cfg.curveOffset);\n controlPoints = [innerPoint];\n }\n\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]);\n path.push(['Q', points[1].x, points[1].y, points[2].x, points[2].y]);\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic', {\n curvePosition: [1 / 2, 1 / 2],\n curveOffset: [-20, 20],\n getControlPoints: function getControlPoints(cfg) {\n var controlPoints = cfg.controlPoints; // 指定 controlPoints\n\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n\n if (!controlPoints || !controlPoints.length || controlPoints.length < 2) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var innerPoint1 = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition[0], cfg.curveOffset[0]);\n var innerPoint2 = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition[1], cfg.curveOffset[1]);\n controlPoints = [innerPoint1, innerPoint2];\n }\n\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]);\n path.push(['C', points[1].x, points[1].y, points[2].x, points[2].y, points[3].x, points[3].y]);\n return path;\n }\n}, 'single-edge'); // 垂直方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic-vertical', {\n curvePosition: [1 / 2, 1 / 2],\n minCurveOffset: [0, 0],\n curveOffset: undefined,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.minCurveOffset === undefined) cfg.minCurveOffset = this.minCurveOffset;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n var yDist = endPoint.y - startPoint.y;\n var curveOffset = [0, 0];\n\n if (cfg.curveOffset) {\n curveOffset = cfg.curveOffset;\n } else if (Math.abs(yDist) < Math.abs(cfg.minCurveOffset[0])) {\n curveOffset = cfg.minCurveOffset;\n }\n\n var innerPoint1 = {\n x: startPoint.x,\n y: startPoint.y + yDist * this.curvePosition[0] + curveOffset[0]\n };\n var innerPoint2 = {\n x: endPoint.x,\n y: endPoint.y - yDist * this.curvePosition[1] + curveOffset[1]\n };\n return [innerPoint1, innerPoint2];\n }\n}, 'cubic'); // 水平方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic-horizontal', {\n curvePosition: [1 / 2, 1 / 2],\n minCurveOffset: [0, 0],\n curveOffset: undefined,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.minCurveOffset === undefined) cfg.minCurveOffset = this.minCurveOffset;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n var xDist = endPoint.x - startPoint.x;\n var curveOffset = [0, 0];\n\n if (cfg.curveOffset) {\n curveOffset = cfg.curveOffset;\n } else if (Math.abs(xDist) < Math.abs(cfg.minCurveOffset[0])) {\n curveOffset = cfg.minCurveOffset;\n }\n\n var innerPoint1 = {\n x: startPoint.x + xDist * this.curvePosition[0] + curveOffset[0],\n y: startPoint.y\n };\n var innerPoint2 = {\n x: endPoint.x - xDist * this.curvePosition[1] + curveOffset[1],\n y: endPoint.y\n };\n var controlPoints = [innerPoint1, innerPoint2];\n return controlPoints;\n }\n}, 'cubic');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('loop', {\n getPathPoints: function getPathPoints(cfg) {\n return Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getLoopCfgs\"])(cfg);\n },\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n afterDraw: function afterDraw(cfg) {\n cfg.controlPoints = undefined;\n },\n afterUpdate: function afterUpdate(cfg) {\n cfg.controlPoints = undefined;\n }\n}, 'cubic');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2VkZ2UuanM/ODk2YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNpQztBQUN5QztBQUNWO0FBQ0M7QUFDUDtBQUMzQjtBQUNIO0FBQ2lDO0FBQzdELDZCQUE2Qjs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLCtDQUFNO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsdUJBQXVCLCtDQUFNO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixrQkFBa0IsK0NBQU07QUFDeEIsb0JBQW9CLCtDQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEIsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLDJCQUEyQiwrQ0FBTTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLGlCQUFpQixzREFBRyxHQUFHLEVBQUUsK0NBQU07QUFDL0IsY0FBYywrQ0FBTTtBQUNwQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsb0NBQW9DO0FBQ3BDO0FBQ0E7O0FBRUEsZ0lBQWdJOztBQUVoSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDs7QUFFbkQsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBLG1DQUFtQyxnQ0FBZ0M7O0FBRW5FOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsY0FBYyxzREFBUSxHQUFHO0FBQ3pCLDREQUE0RCwyREFBUTtBQUNwRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBLCtGQUErRjtBQUMvRjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsd0RBQUsseURBQXlEO0FBQ3RFLHNCQUFzQixzRUFBZ0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsUUFBUSx3REFBSyx5REFBeUQ7O0FBRXRFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1CQUFtQiwwREFBTyxHQUFHO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkNBQTZDLDhEQUFtQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLDBEQUFPLEdBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHLEVBQUUsb0RBQVM7O0FBRW5ELDhDQUFLLDRDQUE0Qzs7QUFFakQsOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsaUJBQWlCOztBQUVsQiw4Q0FBSztBQUNMO0FBQ0EsZUFBZSw0REFBUztBQUN4QjtBQUNBO0FBQ0EsQ0FBQztBQUNELDhDQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSxlQUFlLDBFQUF1QixpQ0FBaUM7O0FBRXZFO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLDBEQUFPO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMEVBQXVCO0FBQ3RDOztBQUVBLGlCQUFpQiwyREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0M7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDBEQUFPO0FBQ2pCLFVBQVUsMERBQU87QUFDakIsdUJBQXVCLGtFQUFlO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELDhDQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQixRQUFRLDJEQUFROztBQUVoQjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0VBQWU7QUFDdkMsd0JBQXdCLGtFQUFlO0FBQ3ZDO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxpQkFBaUI7O0FBRWxCLDhDQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQixRQUFRLDJEQUFRO0FBQ2hCLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLFdBQVc7O0FBRVosOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCLFFBQVEsMkRBQVE7QUFDaEIsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELDhDQUFLO0FBQ0w7QUFDQSxXQUFXLGlFQUFXO0FBQ3RCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvZWRnZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyDoh6rlrprkuYnovrlcbiAqIEBkZXNjcmlwdGlvbiDoh6rlrprkuYnovrnkuK3mnInlpKfph4/pgLvovpHlkIzoh6rlrprkuYnoioLngrnph43lpI3vvIzomb3nhLblj6/ku6Xmj5Dlj5bmiJDkuLogbWl4aW4g77yM5L2G5piv6ICD6JmR5Yiw5Luj56CB55qE5Y+v6K+75oCn77yM6L+Y5piv5Y2V54us5a6e546w44CCXG4gKi9cbmltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBkZWVwTWl4LCBtaXgsIGVhY2gsIGlzTmlsLCBpc051bWJlciwgaXNBcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZ2V0TGFiZWxQb3NpdGlvbiwgZ2V0TG9vcENmZ3MgfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IHsgZGlzdGFuY2UsIGdldENpcmNsZUNlbnRlckJ5UG9pbnRzIH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCB7IGdldENvbnRyb2xQb2ludCwgZ2V0U3BsaW5lIH0gZnJvbSAnLi4vdXRpbC9wYXRoJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IHNoYXBlQmFzZSwgQ0xTX0xBQkVMX0JHX1NVRkZJWCB9IGZyb20gJy4vc2hhcGVCYXNlJztcbnZhciBDTFNfU0hBUEUgPSAnZWRnZS1zaGFwZSc7IC8vIHN0YXJ0LGVuZCDlgJLnva7vvIxjZW50ZXIg5LiN5Y+YXG5cbmZ1bmN0aW9uIHJldmVydEFsaWduKGxhYmVsUG9zaXRpb24pIHtcbiAgdmFyIHRleHRBbGlnbiA9IGxhYmVsUG9zaXRpb247XG5cbiAgaWYgKGxhYmVsUG9zaXRpb24gPT09ICdzdGFydCcpIHtcbiAgICB0ZXh0QWxpZ24gPSAnZW5kJztcbiAgfSBlbHNlIGlmIChsYWJlbFBvc2l0aW9uID09PSAnZW5kJykge1xuICAgIHRleHRBbGlnbiA9ICdzdGFydCc7XG4gIH1cblxuICByZXR1cm4gdGV4dEFsaWduO1xufVxuXG52YXIgc2luZ2xlRWRnZSA9IHtcbiAgaXRlbVR5cGU6ICdlZGdlJyxcblxuICAvKipcbiAgICog5paH5pys55qE5L2N572uXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcblxuICAvKipcbiAgICog5paH5pys55qEIHgg5YGP56e7XG4gICAqIEB0eXBlIHtOdW1iZXJ9XG4gICAqL1xuICByZWZYOiAwLFxuXG4gIC8qKlxuICAgKiDmlofmnKznmoQgeSDlgY/np7tcbiAgICogQHR5cGUge051bWJlcn1cbiAgICovXG4gIHJlZlk6IDAsXG5cbiAgLyoqXG4gICAqIOaWh+acrOaYr+WQpui3n+edgOe6v+iHquWKqOaXi+i9rO+8jOm7mOiupCBmYWxzZVxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cbiAgICovXG4gIGxhYmVsQXV0b1JvdGF0ZTogZmFsc2UsXG4gIC8vIOiHquWumuS5iei+ueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogR2xvYmFsLmRlZmF1bHRFZGdlLnNpemUsXG4gICAgc3R5bGU6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdEVkZ2Uuc3R5bGUuc3Ryb2tlLFxuICAgICAgbGluZUFwcGVuZFdpZHRoOiBHbG9iYWwuZGVmYXVsdEVkZ2Uuc3R5bGUubGluZUFwcGVuZFdpZHRoXG4gICAgfSxcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLmVkZ2VMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLmVkZ2VMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLmVkZ2VTdGF0ZVN0eWxlcylcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6L6555qEIHBhdGhcbiAgICogQGludGVybmFsIOS+m+aJqeWxleeahOi+ueimhuebllxuICAgKiBAcGFyYW0gIHtBcnJheX0gcG9pbnRzIOaehOaIkOi+ueeahOeCueeahOmbhuWQiFxuICAgKiBAcmV0dXJuIHtBcnJheX0g5p6E5oiQIHBhdGgg55qE5pWw57uEXG4gICAqL1xuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cykge1xuICAgIHZhciBwYXRoID0gW107XG4gICAgZWFjaChwb2ludHMsIGZ1bmN0aW9uIChwb2ludCwgaW5kZXgpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICBwYXRoLnB1c2goWydNJywgcG9pbnQueCwgcG9pbnQueV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0aC5wdXNoKFsnTCcsIHBvaW50LngsIHBvaW50LnldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5vcHRpb25zLnN0eWxlO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5aaC5p6c6K6+572u5LqGY29sb3LvvIzliJnopobnm5bpu5jorqTnmoRzdHJva2XlsZ7mgKdcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBzdHJva2VTdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IGNmZy5zaXplIHx8IEdsb2JhbC5kZWZhdWx0RWRnZS5zaXplO1xuICAgIGNmZyA9IHRoaXMuZ2V0UGF0aFBvaW50cyhjZmcpO1xuICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgIHZhciBjb250cm9sUG9pbnRzID0gdGhpcy5nZXRDb250cm9sUG9pbnRzKGNmZyk7XG4gICAgdmFyIHBvaW50cyA9IFtzdGFydFBvaW50XTsgLy8g5re75Yqg6LW35aeL54K5XG4gICAgLy8g5re75Yqg5o6n5Yi254K5XG5cbiAgICBpZiAoY29udHJvbFBvaW50cykge1xuICAgICAgcG9pbnRzID0gcG9pbnRzLmNvbmNhdChjb250cm9sUG9pbnRzKTtcbiAgICB9IC8vIOa3u+WKoOe7k+adn+eCuVxuXG5cbiAgICBwb2ludHMucHVzaChlbmRQb2ludCk7XG4gICAgdmFyIHBhdGggPSB0aGlzLmdldFBhdGgocG9pbnRzKTtcbiAgICB2YXIgc3R5bGVzID0gbWl4KHt9LCBHbG9iYWwuZGVmYXVsdEVkZ2Uuc3R5bGUsIHtcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHRFZGdlLmNvbG9yLFxuICAgICAgbGluZVdpZHRoOiBzaXplLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcbiAgICByZXR1cm4gc3R5bGVzO1xuICB9LFxuICB1cGRhdGVTaGFwZVN0eWxlOiBmdW5jdGlvbiB1cGRhdGVTaGFwZVN0eWxlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIGNvbnN0IHN0cm9rZVN0eWxlOiBTaGFwZVN0eWxlID0ge1xuICAgIC8vICAgc3Ryb2tlOiBjZmcuY29sb3IsXG4gICAgLy8gfTtcblxuICAgIHZhciBzaGFwZSA9ICgoX2EgPSBpdGVtLmdldEtleVNoYXBlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChpdGVtKSkgfHwgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VkZ2Utc2hhcGUnXTsgLy8gZ3JvdXAuZmluZCgoZWxlbWVudCkgPT4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnZWRnZS1zaGFwZScpO1xuXG4gICAgdmFyIHNpemUgPSBjZmcuc2l6ZTtcbiAgICBjZmcgPSB0aGlzLmdldFBhdGhQb2ludHMoY2ZnKTtcbiAgICB2YXIgc3RhcnRQb2ludCA9IGNmZy5zdGFydFBvaW50LFxuICAgICAgICBlbmRQb2ludCA9IGNmZy5lbmRQb2ludDtcbiAgICB2YXIgY29udHJvbFBvaW50cyA9IHRoaXMuZ2V0Q29udHJvbFBvaW50cyhjZmcpOyAvLyB8fCBjZmcuY29udHJvbFBvaW50cztcblxuICAgIHZhciBwb2ludHMgPSBbc3RhcnRQb2ludF07IC8vIOa3u+WKoOi1t+Wni+eCuVxuICAgIC8vIOa3u+WKoOaOp+WItueCuVxuXG4gICAgaWYgKGNvbnRyb2xQb2ludHMpIHtcbiAgICAgIHBvaW50cyA9IHBvaW50cy5jb25jYXQoY29udHJvbFBvaW50cyk7XG4gICAgfSAvLyDmt7vliqDnu5PmnZ/ngrlcblxuXG4gICAgcG9pbnRzLnB1c2goZW5kUG9pbnQpO1xuICAgIHZhciBjdXJyZW50QXR0ciA9IHNoYXBlLmF0dHIoKTsgLy8gY29uc3QgcHJldmlvdXNTdHlsZSA9IG1peCh7fSwgc3Ryb2tlU3R5bGUsIGN1cnJlbnRBdHRyLCBjZmcuc3R5bGUpO1xuXG4gICAgdmFyIHByZXZpb3VzU3R5bGUgPSBjZmcuc3R5bGUgfHwge307XG5cbiAgICBpZiAocHJldmlvdXNTdHlsZS5zdHJva2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJldmlvdXNTdHlsZS5zdHJva2UgPSBjZmcuY29sb3I7XG4gICAgfVxuXG4gICAgdmFyIHNvdXJjZSA9IGNmZy5zb3VyY2VOb2RlO1xuICAgIHZhciB0YXJnZXQgPSBjZmcudGFyZ2V0Tm9kZTtcbiAgICB2YXIgcm91dGVDZmcgPSB7XG4gICAgICByYWRpdXM6IHByZXZpb3VzU3R5bGUucmFkaXVzXG4gICAgfTtcblxuICAgIGlmICghY29udHJvbFBvaW50cykge1xuICAgICAgcm91dGVDZmcgPSB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldCxcbiAgICAgICAgb2Zmc2V0OiBwcmV2aW91c1N0eWxlLm9mZnNldCxcbiAgICAgICAgcmFkaXVzOiBwcmV2aW91c1N0eWxlLnJhZGl1c1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgcGF0aCA9IHRoaXMuZ2V0UGF0aChwb2ludHMsIHJvdXRlQ2ZnKTtcbiAgICB2YXIgc3R5bGUgPSB7fTtcblxuICAgIGlmICh1cGRhdGVUeXBlID09PSAnbW92ZScpIHtcbiAgICAgIHN0eWxlID0ge1xuICAgICAgICBwYXRoOiBwYXRoXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VycmVudEF0dHIuZW5kQXJyb3cgJiYgcHJldmlvdXNTdHlsZS5lbmRBcnJvdyA9PT0gZmFsc2UpIHtcbiAgICAgICAgY2ZnLnN0eWxlLmVuZEFycm93ID0ge1xuICAgICAgICAgIHBhdGg6ICcnXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50QXR0ci5zdGFydEFycm93ICYmIHByZXZpb3VzU3R5bGUuc3RhcnRBcnJvdyA9PT0gZmFsc2UpIHtcbiAgICAgICAgY2ZnLnN0eWxlLnN0YXJ0QXJyb3cgPSB7XG4gICAgICAgICAgcGF0aDogJydcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgc3R5bGUgPSBfX2Fzc2lnbih7fSwgY2ZnLnN0eWxlKTtcbiAgICAgIGlmIChzdHlsZS5saW5lV2lkdGggPT09IHVuZGVmaW5lZCkgc3R5bGUubGluZVdkaXRoID0gKGlzTnVtYmVyKHNpemUpID8gc2l6ZSA6IHNpemUgPT09IG51bGwgfHwgc2l6ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2l6ZVswXSkgfHwgY3VycmVudEF0dHIubGluZVdpZHRoO1xuICAgICAgaWYgKHN0eWxlLnBhdGggPT09IHVuZGVmaW5lZCkgc3R5bGUucGF0aCA9IHBhdGg7XG4gICAgICBpZiAoc3R5bGUuc3Ryb2tlID09PSB1bmRlZmluZWQpIHN0eWxlLnN0cm9rZSA9IGN1cnJlbnRBdHRyLnN0cm9rZSB8fCBjZmcuY29sb3I7XG4gICAgfVxuXG4gICAgaWYgKHNoYXBlKSB7XG4gICAgICBzaGFwZS5hdHRyKHN0eWxlKTtcbiAgICB9XG4gIH0sXG4gIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uOiBmdW5jdGlvbiBnZXRMYWJlbFN0eWxlQnlQb3NpdGlvbihjZmcsIGxhYmVsQ2ZnLCBncm91cCkge1xuICAgIHZhciBsYWJlbFBvc2l0aW9uID0gbGFiZWxDZmcucG9zaXRpb24gfHwgdGhpcy5sYWJlbFBvc2l0aW9uOyAvLyDmlofmnKznmoTkvY3nva7nlKjmiLflj6/ku6XkvKDlhaVcblxuICAgIHZhciBzdHlsZSA9IHt9O1xuICAgIHZhciBwYXRoU2hhcGUgPSBncm91cCA9PT0gbnVsbCB8fCBncm91cCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ3JvdXBbJ3NoYXBlTWFwJ11bQ0xTX1NIQVBFXTsgLy8gZ3JvdXA/LmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gQ0xTX1NIQVBFKTtcbiAgICAvLyDkuI3lr7kgcGF0aFNoYXBlIOi/m+ihjOWIpOepuu+8jOWmguaenOe6v+S4jeWtmOWcqO+8jOivtOaYjuaciemXrumimOS6hlxuXG4gICAgdmFyIHBvaW50UGVyY2VudDtcblxuICAgIGlmIChsYWJlbFBvc2l0aW9uID09PSAnc3RhcnQnKSB7XG4gICAgICBwb2ludFBlcmNlbnQgPSAwO1xuICAgIH0gZWxzZSBpZiAobGFiZWxQb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICAgIHBvaW50UGVyY2VudCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvaW50UGVyY2VudCA9IDAuNTtcbiAgICB9IC8vIOWBj+enu+mHj1xuXG5cbiAgICB2YXIgb2Zmc2V0WCA9IGxhYmVsQ2ZnLnJlZlggfHwgdGhpcy5yZWZYO1xuICAgIHZhciBvZmZzZXRZID0gbGFiZWxDZmcucmVmWSB8fCB0aGlzLnJlZlk7IC8vIOWmguaenOS4pOS4quiKgueCuemHjeWPoO+8jOe6v+WwseWPmOaIkOS6huS4gOS4queCue+8jOi/meaXtuWAmWxhYmVs55qE5L2N572u77yM5bCx5piv6L+Z5Liq54K5ICsg57ud5a+55YGP56e7XG5cbiAgICBpZiAoY2ZnLnN0YXJ0UG9pbnQueCA9PT0gY2ZnLmVuZFBvaW50LnggJiYgY2ZnLnN0YXJ0UG9pbnQueSA9PT0gY2ZnLmVuZFBvaW50LnkpIHtcbiAgICAgIHN0eWxlLnggPSBjZmcuc3RhcnRQb2ludC54ICsgb2Zmc2V0WDtcbiAgICAgIHN0eWxlLnkgPSBjZmcuc3RhcnRQb2ludC55ICsgb2Zmc2V0WTtcbiAgICAgIHN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgICByZXR1cm4gc3R5bGU7XG4gICAgfVxuXG4gICAgdmFyIGF1dG9Sb3RhdGU7XG4gICAgaWYgKGlzTmlsKGxhYmVsQ2ZnLmF1dG9Sb3RhdGUpKSBhdXRvUm90YXRlID0gdGhpcy5sYWJlbEF1dG9Sb3RhdGU7ZWxzZSBhdXRvUm90YXRlID0gbGFiZWxDZmcuYXV0b1JvdGF0ZTtcbiAgICB2YXIgb2Zmc2V0U3R5bGUgPSBnZXRMYWJlbFBvc2l0aW9uKHBhdGhTaGFwZSwgcG9pbnRQZXJjZW50LCBvZmZzZXRYLCBvZmZzZXRZLCBhdXRvUm90YXRlKTtcbiAgICBzdHlsZS54ID0gb2Zmc2V0U3R5bGUueDtcbiAgICBzdHlsZS55ID0gb2Zmc2V0U3R5bGUueTtcbiAgICBzdHlsZS5yb3RhdGUgPSBvZmZzZXRTdHlsZS5yb3RhdGU7XG4gICAgc3R5bGUudGV4dEFsaWduID0gdGhpcy5fZ2V0VGV4dEFsaWduKGxhYmVsUG9zaXRpb24sIG9mZnNldFN0eWxlLmFuZ2xlKTtcbiAgICBzdHlsZS50ZXh0ID0gY2ZnLmxhYmVsO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSxcbiAgZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbjogZnVuY3Rpb24gZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgbGFiZWxDZmcpIHtcbiAgICBpZiAoIWxhYmVsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgdmFyIGJib3ggPSBsYWJlbC5nZXRCQm94KCk7XG4gICAgdmFyIGJhY2tncm91bmRTdHlsZSA9IGxhYmVsQ2ZnLnN0eWxlICYmIGxhYmVsQ2ZnLnN0eWxlLmJhY2tncm91bmQ7XG5cbiAgICBpZiAoIWJhY2tncm91bmRTdHlsZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHZhciBwYWRkaW5nID0gYmFja2dyb3VuZFN0eWxlLnBhZGRpbmc7XG4gICAgdmFyIGJhY2tncm91bmRXaWR0aCA9IGJib3gud2lkdGggKyBwYWRkaW5nWzFdICsgcGFkZGluZ1szXTtcbiAgICB2YXIgYmFja2dyb3VuZEhlaWdodCA9IGJib3guaGVpZ2h0ICsgcGFkZGluZ1swXSArIHBhZGRpbmdbMl07XG5cbiAgICB2YXIgc3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYmFja2dyb3VuZFN0eWxlKSwge1xuICAgICAgd2lkdGg6IGJhY2tncm91bmRXaWR0aCxcbiAgICAgIGhlaWdodDogYmFja2dyb3VuZEhlaWdodCxcbiAgICAgIHg6IGJib3gubWluWCAtIHBhZGRpbmdbM10sXG4gICAgICB5OiBiYm94Lm1pblkgLSBwYWRkaW5nWzBdLFxuICAgICAgbWF0cml4OiBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV1cbiAgICB9KTtcblxuICAgIHZhciBhdXRvUm90YXRlO1xuICAgIGlmIChpc05pbChsYWJlbENmZy5hdXRvUm90YXRlKSkgYXV0b1JvdGF0ZSA9IHRoaXMubGFiZWxBdXRvUm90YXRlO2Vsc2UgYXV0b1JvdGF0ZSA9IGxhYmVsQ2ZnLmF1dG9Sb3RhdGU7XG5cbiAgICBpZiAoYXV0b1JvdGF0ZSkge1xuICAgICAgc3R5bGUubWF0cml4ID0gbGFiZWwuYXR0cignbWF0cml4JykgfHwgWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgIH1cblxuICAgIHJldHVybiBzdHlsZTtcbiAgfSxcbiAgLy8g6I635Y+W5paH5pys5a+56b2Q5pa55byPXG4gIF9nZXRUZXh0QWxpZ246IGZ1bmN0aW9uIF9nZXRUZXh0QWxpZ24obGFiZWxQb3NpdGlvbiwgYW5nbGUpIHtcbiAgICB2YXIgdGV4dEFsaWduID0gJ2NlbnRlcic7XG5cbiAgICBpZiAoIWFuZ2xlKSB7XG4gICAgICByZXR1cm4gbGFiZWxQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBhbmdsZSA9IGFuZ2xlICUgKE1hdGguUEkgKiAyKTsgLy8g5Y+W5qihXG5cbiAgICBpZiAobGFiZWxQb3NpdGlvbiAhPT0gJ2NlbnRlcicpIHtcbiAgICAgIGlmIChhbmdsZSA+PSAwICYmIGFuZ2xlIDw9IE1hdGguUEkgLyAyIHx8IGFuZ2xlID49IDMgLyAyICogTWF0aC5QSSAmJiBhbmdsZSA8IDIgKiBNYXRoLlBJKSB7XG4gICAgICAgIHRleHRBbGlnbiA9IGxhYmVsUG9zaXRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXh0QWxpZ24gPSByZXZlcnRBbGlnbihsYWJlbFBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dEFsaWduO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWwg6I635Y+W6L6555qE5o6n5Yi254K5XG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOi+ueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtBcnJheX0g5o6n5Yi254K555qE5pWw57uEXG4gICAqL1xuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHJldHVybiBjZmcuY29udHJvbFBvaW50cztcbiAgfSxcblxuICAvKipcbiAgICogQGludGVybmFsIOWkhOeQhumcgOimgemHjeiuoeeul+eCueWSjOi+ueeahOaDheWGtVxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOi+ueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOi+ueeahOmFjee9rumhuVxuICAgKi9cbiAgZ2V0UGF0aFBvaW50czogZnVuY3Rpb24gZ2V0UGF0aFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLbovrlcbiAgICogQG92ZXJyaWRlXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnICAg6L6555qE6YWN572u6aG5XG4gICAqIEBwYXJhbSAge0cuR3JvdXB9IGdyb3VwIOi+ueeahOWuueWZqFxuICAgKiBAcmV0dXJuIHtJU2hhcGV9IOWbvuW9olxuICAgKi9cbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIHNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBjbGFzc05hbWU6IENMU19TSEFQRSxcbiAgICAgIG5hbWU6IENMU19TSEFQRSxcbiAgICAgIGF0dHJzOiBzaGFwZVN0eWxlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bQ0xTX1NIQVBFXSA9IHNoYXBlO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcbiAgZHJhd0xhYmVsOiBmdW5jdGlvbiBkcmF3TGFiZWwoY2ZnLCBncm91cCkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSB0aGlzLm9wdGlvbnMubGFiZWxDZmc7XG4gICAgdmFyIGxhYmVsQ2ZnID0gZGVlcE1peCh7fSwgZGVmYXVsdExhYmVsQ2ZnLCBjZmcubGFiZWxDZmcpO1xuICAgIHZhciBsYWJlbFN0eWxlID0gdGhpcy5nZXRMYWJlbFN0eWxlKGNmZywgbGFiZWxDZmcsIGdyb3VwKTtcbiAgICB2YXIgcm90YXRlID0gbGFiZWxTdHlsZS5yb3RhdGU7XG4gICAgZGVsZXRlIGxhYmVsU3R5bGUucm90YXRlO1xuICAgIHZhciBsYWJlbCA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgYXR0cnM6IGxhYmVsU3R5bGUsXG4gICAgICBuYW1lOiAndGV4dC1zaGFwZScsXG4gICAgICBsYWJlbFJlbGF0ZWQ6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVsndGV4dC1zaGFwZSddID0gbGFiZWw7XG5cbiAgICBpZiAoIWlzTmFOKHJvdGF0ZSkgJiYgcm90YXRlICE9PSAnJykge1xuICAgICAgbGFiZWwucm90YXRlQXRTdGFydChyb3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChsYWJlbFN0eWxlLmJhY2tncm91bmQpIHtcbiAgICAgIHZhciByZWN0ID0gdGhpcy5kcmF3TGFiZWxCZyhjZmcsIGdyb3VwLCBsYWJlbCwgbGFiZWxTdHlsZSwgcm90YXRlKTtcbiAgICAgIHZhciBsYWJlbEJnQ2xhc3NuYW1lID0gdGhpcy5pdGVtVHlwZSArIENMU19MQUJFTF9CR19TVUZGSVg7XG4gICAgICByZWN0LnNldCgnY2xhc3NuYW1lJywgbGFiZWxCZ0NsYXNzbmFtZSk7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtsYWJlbEJnQ2xhc3NuYW1lXSA9IHJlY3Q7XG4gICAgICBsYWJlbC50b0Zyb250KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9LFxuICBkcmF3TGFiZWxCZzogZnVuY3Rpb24gZHJhd0xhYmVsQmcoY2ZnLCBncm91cCwgbGFiZWwsIGxhYmVsU3R5bGUsIHJvdGF0ZSkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSB0aGlzLm9wdGlvbnMubGFiZWxDZmc7XG4gICAgdmFyIGxhYmVsQ2ZnID0gZGVlcE1peCh7fSwgZGVmYXVsdExhYmVsQ2ZnLCBjZmcubGFiZWxDZmcpO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgbGFiZWxDZmcpO1xuICAgIHZhciByZWN0ID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBuYW1lOiAndGV4dC1iZy1zaGFwZScsXG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBsYWJlbFJlbGF0ZWQ6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVsndGV4dC1iZy1zaGFwZSddID0gcmVjdDtcbiAgICByZXR1cm4gcmVjdDtcbiAgfVxufTtcblxudmFyIHNpbmdsZUVkZ2VEZWYgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc2hhcGVCYXNlKSwgc2luZ2xlRWRnZSk7XG5cblNoYXBlLnJlZ2lzdGVyRWRnZSgnc2luZ2xlLWVkZ2UnLCBzaW5nbGVFZGdlRGVmKTsgLy8g55u057q/LCDkuI3mlK/mjIHmjqfliLbngrlcblxuU2hhcGUucmVnaXN0ZXJFZGdlKCdsaW5lJywge1xuICAvLyDmjqfliLbngrnkuI3nlJ/mlYhcbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cygpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTsgLy8g55u057q/XG5cblNoYXBlLnJlZ2lzdGVyRWRnZSgnc3BsaW5lJywge1xuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cykge1xuICAgIHZhciBwYXRoID0gZ2V0U3BsaW5lKHBvaW50cyk7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cbn0sICdzaW5nbGUtZWRnZScpO1xuU2hhcGUucmVnaXN0ZXJFZGdlKCdhcmMnLCB7XG4gIGN1cnZlT2Zmc2V0OiAyMCxcbiAgY2xvY2t3aXNlOiAxLFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgIHZhciBtaWRQb2ludCA9IHtcbiAgICAgIHg6IChzdGFydFBvaW50LnggKyBlbmRQb2ludC54KSAvIDIsXG4gICAgICB5OiAoc3RhcnRQb2ludC55ICsgZW5kUG9pbnQueSkgLyAyXG4gICAgfTtcbiAgICB2YXIgY2VudGVyO1xuICAgIHZhciBhcmNQb2ludDsgLy8g5qC55o2u57uZ5a6a54K56K6h566X5ZyG5bynXG5cbiAgICBpZiAoY2ZnLmNvbnRyb2xQb2ludHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXJjUG9pbnQgPSBjZmcuY29udHJvbFBvaW50c1swXTtcbiAgICAgIGNlbnRlciA9IGdldENpcmNsZUNlbnRlckJ5UG9pbnRzKHN0YXJ0UG9pbnQsIGFyY1BvaW50LCBlbmRQb2ludCk7IC8vIOagueaNruaOp+WItueCueWSjOebtOe6v+WFs+ezu+WGs+WumiBjbG9ja3dpc2XlgLxcblxuICAgICAgaWYgKHN0YXJ0UG9pbnQueCA8PSBlbmRQb2ludC54ICYmIHN0YXJ0UG9pbnQueSA+IGVuZFBvaW50LnkpIHtcbiAgICAgICAgdGhpcy5jbG9ja3dpc2UgPSBjZW50ZXIueCA+IGFyY1BvaW50LnggPyAwIDogMTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnRQb2ludC54IDw9IGVuZFBvaW50LnggJiYgc3RhcnRQb2ludC55IDwgZW5kUG9pbnQueSkge1xuICAgICAgICB0aGlzLmNsb2Nrd2lzZSA9IGNlbnRlci54ID4gYXJjUG9pbnQueCA/IDEgOiAwO1xuICAgICAgfSBlbHNlIGlmIChzdGFydFBvaW50LnggPiBlbmRQb2ludC54ICYmIHN0YXJ0UG9pbnQueSA8PSBlbmRQb2ludC55KSB7XG4gICAgICAgIHRoaXMuY2xvY2t3aXNlID0gY2VudGVyLnkgPCBhcmNQb2ludC55ID8gMCA6IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb2Nrd2lzZSA9IGNlbnRlci55IDwgYXJjUG9pbnQueSA/IDEgOiAwO1xuICAgICAgfSAvLyDoi6Xnu5nlrprngrnlkozkuKTnq6/ngrnlhbHnur/vvIzml6Dms5XnlJ/miJDlnIblvKfvvIznu5jliLbnm7Tnur9cblxuXG4gICAgICBpZiAoKGFyY1BvaW50LnggLSBzdGFydFBvaW50LngpIC8gKGFyY1BvaW50LnkgLSBzdGFydFBvaW50LnkpID09PSAoZW5kUG9pbnQueCAtIHN0YXJ0UG9pbnQueCkgLyAoZW5kUG9pbnQueSAtIHN0YXJ0UG9pbnQueSkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyDmoLnmja7nm7Tnur/ov57nur/kuK3ngrnnmoTnmoTlgY/np7vorqHnrpflnIblvKdcbiAgICAgIC8vIOiLpeeUqOaIt+e7meWumuWBj+enu+mHj+WImeagueaNruWFtuiuoeeul++8jOWQpuWImeaMieeFp+m7mOiupOWBj+enu+WAvOiuoeeul1xuICAgICAgaWYgKGNmZy5jdXJ2ZU9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNmZy5jdXJ2ZU9mZnNldCA9IHRoaXMuY3VydmVPZmZzZXQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0FycmF5KGNmZy5jdXJ2ZU9mZnNldCkpIHtcbiAgICAgICAgY2ZnLmN1cnZlT2Zmc2V0ID0gY2ZnLmN1cnZlT2Zmc2V0WzBdO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0IDwgMCkge1xuICAgICAgICB0aGlzLmNsb2Nrd2lzZSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb2Nrd2lzZSA9IDE7XG4gICAgICB9XG5cbiAgICAgIHZhciB2ZWMgPSB7XG4gICAgICAgIHg6IGVuZFBvaW50LnggLSBzdGFydFBvaW50LngsXG4gICAgICAgIHk6IGVuZFBvaW50LnkgLSBzdGFydFBvaW50LnlcbiAgICAgIH07XG4gICAgICB2YXIgZWRnZUFuZ2xlID0gTWF0aC5hdGFuMih2ZWMueSwgdmVjLngpO1xuICAgICAgYXJjUG9pbnQgPSB7XG4gICAgICAgIHg6IGNmZy5jdXJ2ZU9mZnNldCAqIE1hdGguY29zKC1NYXRoLlBJIC8gMiArIGVkZ2VBbmdsZSkgKyBtaWRQb2ludC54LFxuICAgICAgICB5OiBjZmcuY3VydmVPZmZzZXQgKiBNYXRoLnNpbigtTWF0aC5QSSAvIDIgKyBlZGdlQW5nbGUpICsgbWlkUG9pbnQueVxuICAgICAgfTtcbiAgICAgIGNlbnRlciA9IGdldENpcmNsZUNlbnRlckJ5UG9pbnRzKHN0YXJ0UG9pbnQsIGFyY1BvaW50LCBlbmRQb2ludCk7XG4gICAgfVxuXG4gICAgdmFyIHJhZGl1cyA9IGRpc3RhbmNlKHN0YXJ0UG9pbnQsIGNlbnRlcik7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSBbe1xuICAgICAgeDogcmFkaXVzLFxuICAgICAgeTogcmFkaXVzXG4gICAgfV07XG4gICAgcmV0dXJuIGNvbnRyb2xQb2ludHM7XG4gIH0sXG4gIGdldFBhdGg6IGZ1bmN0aW9uIGdldFBhdGgocG9pbnRzKSB7XG4gICAgdmFyIHBhdGggPSBbXTtcbiAgICBwYXRoLnB1c2goWydNJywgcG9pbnRzWzBdLngsIHBvaW50c1swXS55XSk7IC8vIOaOp+WItueCueS4juerr+eCueWFsee6v1xuXG4gICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHBhdGgucHVzaChbJ0wnLCBwb2ludHNbMV0ueCwgcG9pbnRzWzFdLnldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aC5wdXNoKFsnQScsIHBvaW50c1sxXS54LCBwb2ludHNbMV0ueSwgMCwgMCwgdGhpcy5jbG9ja3dpc2UsIHBvaW50c1syXS54LCBwb2ludHNbMl0ueV0pO1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTtcblNoYXBlLnJlZ2lzdGVyRWRnZSgncXVhZHJhdGljJywge1xuICBjdXJ2ZVBvc2l0aW9uOiAwLjUsXG4gIGN1cnZlT2Zmc2V0OiAtMjAsXG4gIGdldENvbnRyb2xQb2ludHM6IGZ1bmN0aW9uIGdldENvbnRyb2xQb2ludHMoY2ZnKSB7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSBjZmcuY29udHJvbFBvaW50czsgLy8g5oyH5a6aY29udHJvbFBvaW50c1xuXG4gICAgaWYgKCFjb250cm9sUG9pbnRzIHx8ICFjb250cm9sUG9pbnRzLmxlbmd0aCkge1xuICAgICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgICBlbmRQb2ludCA9IGNmZy5lbmRQb2ludDtcbiAgICAgIGlmIChjZmcuY3VydmVPZmZzZXQgPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlT2Zmc2V0ID0gdGhpcy5jdXJ2ZU9mZnNldDtcbiAgICAgIGlmIChjZmcuY3VydmVQb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSBjZmcuY3VydmVQb3NpdGlvbiA9IHRoaXMuY3VydmVQb3NpdGlvbjtcbiAgICAgIGlmIChpc0FycmF5KHRoaXMuY3VydmVPZmZzZXQpKSBjZmcuY3VydmVPZmZzZXQgPSBjZmcuY3VydmVPZmZzZXRbMF07XG4gICAgICBpZiAoaXNBcnJheSh0aGlzLmN1cnZlUG9zaXRpb24pKSBjZmcuY3VydmVQb3NpdGlvbiA9IGNmZy5jdXJ2ZU9mZnNldFswXTtcbiAgICAgIHZhciBpbm5lclBvaW50ID0gZ2V0Q29udHJvbFBvaW50KHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBjZmcuY3VydmVQb3NpdGlvbiwgY2ZnLmN1cnZlT2Zmc2V0KTtcbiAgICAgIGNvbnRyb2xQb2ludHMgPSBbaW5uZXJQb2ludF07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRyb2xQb2ludHM7XG4gIH0sXG4gIGdldFBhdGg6IGZ1bmN0aW9uIGdldFBhdGgocG9pbnRzKSB7XG4gICAgdmFyIHBhdGggPSBbXTtcbiAgICBwYXRoLnB1c2goWydNJywgcG9pbnRzWzBdLngsIHBvaW50c1swXS55XSk7XG4gICAgcGF0aC5wdXNoKFsnUScsIHBvaW50c1sxXS54LCBwb2ludHNbMV0ueSwgcG9pbnRzWzJdLngsIHBvaW50c1syXS55XSk7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cbn0sICdzaW5nbGUtZWRnZScpO1xuU2hhcGUucmVnaXN0ZXJFZGdlKCdjdWJpYycsIHtcbiAgY3VydmVQb3NpdGlvbjogWzEgLyAyLCAxIC8gMl0sXG4gIGN1cnZlT2Zmc2V0OiBbLTIwLCAyMF0sXG4gIGdldENvbnRyb2xQb2ludHM6IGZ1bmN0aW9uIGdldENvbnRyb2xQb2ludHMoY2ZnKSB7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSBjZmcuY29udHJvbFBvaW50czsgLy8g5oyH5a6aIGNvbnRyb2xQb2ludHNcblxuICAgIGlmIChjZmcuY3VydmVPZmZzZXQgPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlT2Zmc2V0ID0gdGhpcy5jdXJ2ZU9mZnNldDtcbiAgICBpZiAoY2ZnLmN1cnZlUG9zaXRpb24gPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlUG9zaXRpb24gPSB0aGlzLmN1cnZlUG9zaXRpb247XG4gICAgaWYgKGlzTnVtYmVyKGNmZy5jdXJ2ZU9mZnNldCkpIGNmZy5jdXJ2ZU9mZnNldCA9IFtjZmcuY3VydmVPZmZzZXQsIC1jZmcuY3VydmVPZmZzZXRdO1xuICAgIGlmIChpc051bWJlcihjZmcuY3VydmVQb3NpdGlvbikpIGNmZy5jdXJ2ZVBvc2l0aW9uID0gW2NmZy5jdXJ2ZVBvc2l0aW9uLCAxIC0gY2ZnLmN1cnZlUG9zaXRpb25dO1xuXG4gICAgaWYgKCFjb250cm9sUG9pbnRzIHx8ICFjb250cm9sUG9pbnRzLmxlbmd0aCB8fCBjb250cm9sUG9pbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgICB2YXIgaW5uZXJQb2ludDEgPSBnZXRDb250cm9sUG9pbnQoc3RhcnRQb2ludCwgZW5kUG9pbnQsIGNmZy5jdXJ2ZVBvc2l0aW9uWzBdLCBjZmcuY3VydmVPZmZzZXRbMF0pO1xuICAgICAgdmFyIGlubmVyUG9pbnQyID0gZ2V0Q29udHJvbFBvaW50KHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBjZmcuY3VydmVQb3NpdGlvblsxXSwgY2ZnLmN1cnZlT2Zmc2V0WzFdKTtcbiAgICAgIGNvbnRyb2xQb2ludHMgPSBbaW5uZXJQb2ludDEsIGlubmVyUG9pbnQyXTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udHJvbFBvaW50cztcbiAgfSxcbiAgZ2V0UGF0aDogZnVuY3Rpb24gZ2V0UGF0aChwb2ludHMpIHtcbiAgICB2YXIgcGF0aCA9IFtdO1xuICAgIHBhdGgucHVzaChbJ00nLCBwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnldKTtcbiAgICBwYXRoLnB1c2goWydDJywgcG9pbnRzWzFdLngsIHBvaW50c1sxXS55LCBwb2ludHNbMl0ueCwgcG9pbnRzWzJdLnksIHBvaW50c1szXS54LCBwb2ludHNbM10ueV0pO1xuICAgIHJldHVybiBwYXRoO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTsgLy8g5Z6C55u05pa55ZCR55qE5LiJ6Zi26LSd5aGe5bCU5puy57q/77yM5LiN5YaN6ICD6JmR55So5oi35aSW6YOo5Lyg5YWl55qE5o6n5Yi254K5XG5cblNoYXBlLnJlZ2lzdGVyRWRnZSgnY3ViaWMtdmVydGljYWwnLCB7XG4gIGN1cnZlUG9zaXRpb246IFsxIC8gMiwgMSAvIDJdLFxuICBtaW5DdXJ2ZU9mZnNldDogWzAsIDBdLFxuICBjdXJ2ZU9mZnNldDogdW5kZWZpbmVkLFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgIGlmIChjZmcuY3VydmVQb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSBjZmcuY3VydmVQb3NpdGlvbiA9IHRoaXMuY3VydmVQb3NpdGlvbjtcbiAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0ID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZU9mZnNldCA9IHRoaXMuY3VydmVPZmZzZXQ7XG4gICAgaWYgKGNmZy5taW5DdXJ2ZU9mZnNldCA9PT0gdW5kZWZpbmVkKSBjZmcubWluQ3VydmVPZmZzZXQgPSB0aGlzLm1pbkN1cnZlT2Zmc2V0O1xuICAgIGlmIChpc051bWJlcihjZmcuY3VydmVPZmZzZXQpKSBjZmcuY3VydmVPZmZzZXQgPSBbY2ZnLmN1cnZlT2Zmc2V0LCAtY2ZnLmN1cnZlT2Zmc2V0XTtcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLm1pbkN1cnZlT2Zmc2V0KSkgY2ZnLm1pbkN1cnZlT2Zmc2V0ID0gW2NmZy5taW5DdXJ2ZU9mZnNldCwgLWNmZy5taW5DdXJ2ZU9mZnNldF07XG4gICAgaWYgKGlzTnVtYmVyKGNmZy5jdXJ2ZVBvc2l0aW9uKSkgY2ZnLmN1cnZlUG9zaXRpb24gPSBbY2ZnLmN1cnZlUG9zaXRpb24sIDEgLSBjZmcuY3VydmVQb3NpdGlvbl07XG4gICAgdmFyIHlEaXN0ID0gZW5kUG9pbnQueSAtIHN0YXJ0UG9pbnQueTtcbiAgICB2YXIgY3VydmVPZmZzZXQgPSBbMCwgMF07XG5cbiAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0KSB7XG4gICAgICBjdXJ2ZU9mZnNldCA9IGNmZy5jdXJ2ZU9mZnNldDtcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKHlEaXN0KSA8IE1hdGguYWJzKGNmZy5taW5DdXJ2ZU9mZnNldFswXSkpIHtcbiAgICAgIGN1cnZlT2Zmc2V0ID0gY2ZnLm1pbkN1cnZlT2Zmc2V0O1xuICAgIH1cblxuICAgIHZhciBpbm5lclBvaW50MSA9IHtcbiAgICAgIHg6IHN0YXJ0UG9pbnQueCxcbiAgICAgIHk6IHN0YXJ0UG9pbnQueSArIHlEaXN0ICogdGhpcy5jdXJ2ZVBvc2l0aW9uWzBdICsgY3VydmVPZmZzZXRbMF1cbiAgICB9O1xuICAgIHZhciBpbm5lclBvaW50MiA9IHtcbiAgICAgIHg6IGVuZFBvaW50LngsXG4gICAgICB5OiBlbmRQb2ludC55IC0geURpc3QgKiB0aGlzLmN1cnZlUG9zaXRpb25bMV0gKyBjdXJ2ZU9mZnNldFsxXVxuICAgIH07XG4gICAgcmV0dXJuIFtpbm5lclBvaW50MSwgaW5uZXJQb2ludDJdO1xuICB9XG59LCAnY3ViaWMnKTsgLy8g5rC05bmz5pa55ZCR55qE5LiJ6Zi26LSd5aGe5bCU5puy57q/77yM5LiN5YaN6ICD6JmR55So5oi35aSW6YOo5Lyg5YWl55qE5o6n5Yi254K5XG5cblNoYXBlLnJlZ2lzdGVyRWRnZSgnY3ViaWMtaG9yaXpvbnRhbCcsIHtcbiAgY3VydmVQb3NpdGlvbjogWzEgLyAyLCAxIC8gMl0sXG4gIG1pbkN1cnZlT2Zmc2V0OiBbMCwgMF0sXG4gIGN1cnZlT2Zmc2V0OiB1bmRlZmluZWQsXG4gIGdldENvbnRyb2xQb2ludHM6IGZ1bmN0aW9uIGdldENvbnRyb2xQb2ludHMoY2ZnKSB7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgaWYgKGNmZy5jdXJ2ZVBvc2l0aW9uID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZVBvc2l0aW9uID0gdGhpcy5jdXJ2ZVBvc2l0aW9uO1xuICAgIGlmIChjZmcuY3VydmVPZmZzZXQgPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlT2Zmc2V0ID0gdGhpcy5jdXJ2ZU9mZnNldDtcbiAgICBpZiAoY2ZnLm1pbkN1cnZlT2Zmc2V0ID09PSB1bmRlZmluZWQpIGNmZy5taW5DdXJ2ZU9mZnNldCA9IHRoaXMubWluQ3VydmVPZmZzZXQ7XG4gICAgaWYgKGlzTnVtYmVyKGNmZy5jdXJ2ZU9mZnNldCkpIGNmZy5jdXJ2ZU9mZnNldCA9IFtjZmcuY3VydmVPZmZzZXQsIC1jZmcuY3VydmVPZmZzZXRdO1xuICAgIGlmIChpc051bWJlcihjZmcubWluQ3VydmVPZmZzZXQpKSBjZmcubWluQ3VydmVPZmZzZXQgPSBbY2ZnLm1pbkN1cnZlT2Zmc2V0LCAtY2ZnLm1pbkN1cnZlT2Zmc2V0XTtcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLmN1cnZlUG9zaXRpb24pKSBjZmcuY3VydmVQb3NpdGlvbiA9IFtjZmcuY3VydmVQb3NpdGlvbiwgMSAtIGNmZy5jdXJ2ZVBvc2l0aW9uXTtcbiAgICB2YXIgeERpc3QgPSBlbmRQb2ludC54IC0gc3RhcnRQb2ludC54O1xuICAgIHZhciBjdXJ2ZU9mZnNldCA9IFswLCAwXTtcblxuICAgIGlmIChjZmcuY3VydmVPZmZzZXQpIHtcbiAgICAgIGN1cnZlT2Zmc2V0ID0gY2ZnLmN1cnZlT2Zmc2V0O1xuICAgIH0gZWxzZSBpZiAoTWF0aC5hYnMoeERpc3QpIDwgTWF0aC5hYnMoY2ZnLm1pbkN1cnZlT2Zmc2V0WzBdKSkge1xuICAgICAgY3VydmVPZmZzZXQgPSBjZmcubWluQ3VydmVPZmZzZXQ7XG4gICAgfVxuXG4gICAgdmFyIGlubmVyUG9pbnQxID0ge1xuICAgICAgeDogc3RhcnRQb2ludC54ICsgeERpc3QgKiB0aGlzLmN1cnZlUG9zaXRpb25bMF0gKyBjdXJ2ZU9mZnNldFswXSxcbiAgICAgIHk6IHN0YXJ0UG9pbnQueVxuICAgIH07XG4gICAgdmFyIGlubmVyUG9pbnQyID0ge1xuICAgICAgeDogZW5kUG9pbnQueCAtIHhEaXN0ICogdGhpcy5jdXJ2ZVBvc2l0aW9uWzFdICsgY3VydmVPZmZzZXRbMV0sXG4gICAgICB5OiBlbmRQb2ludC55XG4gICAgfTtcbiAgICB2YXIgY29udHJvbFBvaW50cyA9IFtpbm5lclBvaW50MSwgaW5uZXJQb2ludDJdO1xuICAgIHJldHVybiBjb250cm9sUG9pbnRzO1xuICB9XG59LCAnY3ViaWMnKTtcblNoYXBlLnJlZ2lzdGVyRWRnZSgnbG9vcCcsIHtcbiAgZ2V0UGF0aFBvaW50czogZnVuY3Rpb24gZ2V0UGF0aFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gZ2V0TG9vcENmZ3MoY2ZnKTtcbiAgfSxcbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnLmNvbnRyb2xQb2ludHM7XG4gIH0sXG4gIGFmdGVyRHJhdzogZnVuY3Rpb24gYWZ0ZXJEcmF3KGNmZykge1xuICAgIGNmZy5jb250cm9sUG9pbnRzID0gdW5kZWZpbmVkO1xuICB9LFxuICBhZnRlclVwZGF0ZTogZnVuY3Rpb24gYWZ0ZXJVcGRhdGUoY2ZnKSB7XG4gICAgY2ZnLmNvbnRyb2xQb2ludHMgPSB1bmRlZmluZWQ7XG4gIH1cbn0sICdjdWJpYycpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/edge.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/hull/bubbleset.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/hull/bubbleset.js ***! \*****************************************************************/ /*! exports provided: genBubbleSet */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genBubbleSet\", function() { return genBubbleSet; });\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n\nvar defaultOps = {\n maxRoutingIterations: 100,\n maxMarchingIterations: 100,\n pixelGroupSize: 2,\n edgeR0: 10,\n edgeR1: 10,\n nodeR0: 5,\n nodeR1: 10,\n morphBuffer: 5,\n threshold: 0.001,\n skip: 16,\n nodeInfluenceFactor: 1,\n edgeInfluenceFactor: 1,\n negativeNodeInfluenceFactor: -0.5\n};\n/**\n * Marching square algorithm for traching the contour of a pixel group\n * https://www.emanueleferonato.com/2013/03/01/using-marching-squares-algorithm-to-trace-the-contour-of-an-image/\n * @param potentialArea\n * @param threshold\n */\n\nfunction MarchingSquares(contour, potentialArea, threshold) {\n var marched = false;\n\n var getVal = function getVal(x, y) {\n return potentialArea.cells[x + y * potentialArea.width];\n };\n\n var getState = function getState(x, y) {\n var squareVal = 0;\n\n if (getVal(x - 1, y - 1) >= threshold) {\n squareVal += 1;\n }\n\n if (getVal(x, y - 1) > threshold) {\n squareVal += 2;\n }\n\n if (getVal(x - 1, y) > threshold) {\n squareVal += 4;\n }\n\n if (getVal(x, y) > threshold) {\n squareVal += 8;\n }\n\n return squareVal;\n };\n\n var doMarch = function doMarch(xPos, yPos) {\n var x = xPos;\n var y = yPos;\n var prevX;\n var prevY;\n\n for (var i = 0; i < potentialArea.width * potentialArea.height; i++) {\n prevX = x;\n prevY = y;\n\n if (contour.findIndex(function (item) {\n return item.x === x && item.y === y;\n }) > -1) {\n if (contour[0].x !== x || contour[0].y !== y) {// encountered a loop but haven't returned to start: change direction using conditionals and continue back to start\n } else {\n return true;\n }\n } else {\n contour.push({\n x: x,\n y: y\n });\n }\n\n var state = getState(x, y); // assign the move direction according to state of the square\n\n switch (state) {\n case -1:\n console.warn('Marched out of bounds');\n return true;\n\n case 0:\n case 3:\n case 2:\n case 7:\n x++; // go right\n\n break;\n\n case 12:\n case 14:\n case 4:\n x--; // go left\n\n break;\n\n case 6:\n // go left if come from up else go right\n if (prevX === 0) {\n if (prevY === -1) {\n x -= 1;\n } else {\n x += 1;\n }\n }\n\n break;\n\n case 1:\n case 13:\n case 5:\n y--; // go up\n\n break;\n\n case 9:\n // go up if come from right else go down\n if (prevX === 1) {\n if (prevY === 0) {\n y -= 1;\n } else {\n y += 1;\n }\n }\n\n break;\n\n case 10:\n case 8:\n case 11:\n y++; // go down\n\n break;\n\n default:\n console.warn(\"Marching squares invalid state: \".concat(state));\n return true;\n }\n }\n };\n\n this.march = function () {\n for (var x = 0; x < potentialArea.width && !marched; x += 1) {\n for (var y = 0; y < potentialArea.height && !marched; y += 1) {\n if (getVal(x, y) > threshold && getState(x, y) !== 15) {\n marched = doMarch(x, y);\n }\n }\n }\n\n return marched;\n };\n}\n/**\n * Space partition & assign value to each cell\n * @param points\n */\n\n\nvar initGridCells = function initGridCells(width, height, pixelGroupSize) {\n var scaleWidth = Math.ceil(width / pixelGroupSize);\n var scaleHeight = Math.ceil(height / pixelGroupSize);\n var gridCells = new Float32Array(Math.max(0, scaleWidth * scaleHeight)).fill(0);\n return {\n cells: gridCells,\n width: scaleWidth,\n height: scaleHeight\n };\n};\n/**\n * Find the optimal already visited member to item;\n Optimal: minimize cost(j) = distance(i,j) ∗ countObstacles(i,j)\n * @param item\n * @param visited\n */\n\n\nvar pickBestNeighbor = function pickBestNeighbor(item, visited, nonMembers) {\n var closestNeighbour = null;\n var minCost = Number.POSITIVE_INFINITY;\n visited.forEach(function (neighbourItem) {\n var itemP = {\n x: item.getModel().x,\n y: item.getModel().y\n };\n var neighbourItemP = {\n x: neighbourItem.getModel().x,\n y: neighbourItem.getModel().y\n };\n var dist = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])(itemP, neighbourItemP);\n var directLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](itemP.x, itemP.y, neighbourItemP.x, neighbourItemP.y);\n var numberObstacles = nonMembers.reduce(function (count, _item) {\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"fractionToLine\"])(_item, directLine) > 0) {\n return count + 1;\n }\n\n return count;\n }, 0);\n\n if (dist * Math.pow(numberObstacles + 1, 2) < minCost) {\n closestNeighbour = neighbourItem;\n minCost = dist * Math.pow(numberObstacles + 1, 2);\n }\n });\n return closestNeighbour;\n};\n/**\n * 返回和线相交的item中,离边的起点最近的item\n * @param items\n * @param line\n */\n\n\nvar getIntersectItem = function getIntersectItem(items, line) {\n var minDistance = Number.POSITIVE_INFINITY;\n var closestItem = null;\n items.forEach(function (item) {\n var distance = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"fractionToLine\"])(item, line); // find closest intersection\n\n if (distance >= 0 && distance < minDistance) {\n closestItem = item;\n minDistance = distance;\n }\n });\n return closestItem;\n};\n/**\n * Modify the directLine and Route virtual edges around obstacles\n */\n\n\nvar computeRoute = function computeRoute(directLine, nonMembers, maxRoutingIterations, morphBuffer) {\n var checkedLines = [];\n var linesToCheck = [];\n linesToCheck.push(directLine);\n var hasIntersection = true;\n var iterations = 0;\n\n var pointExists = function pointExists(point, lines) {\n var flag = false;\n lines.forEach(function (line) {\n if (flag) return;\n\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointsOverlap\"])(point, {\n x: line.x1,\n y: line.y1\n }) || Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointsOverlap\"])(point, {\n x: line.x2,\n y: line.y2\n })) {\n flag = true;\n }\n });\n return flag;\n };\n\n var isPointInNonMembers = function isPointInNonMembers(point, _nonMembers) {\n for (var _i = 0, _nonMembers_1 = _nonMembers; _i < _nonMembers_1.length; _i++) {\n var item = _nonMembers_1[_i];\n var bbox = item.getBBox();\n var itemContour = [[bbox.x, bbox.y], [bbox.x + bbox.width, bbox.y], [bbox.x, bbox.y + bbox.height], [bbox.x + bbox.width, bbox.y + bbox.height]];\n\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointInPolygon\"])(itemContour, point.x, point.y)) {\n return true;\n }\n }\n\n return false;\n }; // outer loop end when no more intersections or out of iterations\n\n\n while (hasIntersection && iterations < maxRoutingIterations) {\n hasIntersection = false;\n\n var _loop_1 = function _loop_1() {\n var line = linesToCheck.pop();\n var closestItem = getIntersectItem(nonMembers, line);\n\n if (closestItem) {\n var _a = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"itemIntersectByLine\"])(closestItem, line),\n intersections_1 = _a[0],\n countIntersections = _a[1]; // if line passes through item\n\n\n if (countIntersections === 2) {\n var testReroute = function testReroute(isFirst) {\n var tempMorphBuffer = morphBuffer;\n var virtualNode = rerouteLine(closestItem, tempMorphBuffer, intersections_1, isFirst); // test the virtualNode already exists\n\n var exist = pointExists(virtualNode, linesToCheck) || pointExists(virtualNode, checkedLines);\n var pointInside = isPointInNonMembers(virtualNode, nonMembers);\n\n while (!exist && pointInside && tempMorphBuffer >= 1) {\n // try a smaller buffer\n tempMorphBuffer /= 1.5;\n virtualNode = rerouteLine(closestItem, tempMorphBuffer, intersections_1, isFirst);\n exist = pointExists(virtualNode, linesToCheck) || pointExists(virtualNode, checkedLines);\n pointInside = isPointInNonMembers(virtualNode, nonMembers);\n } // 第二次route时不要求pointInside\n\n\n if (virtualNode && !exist && (!isFirst || !pointInside)) {\n // add 2 rerouted lines to check\n linesToCheck.push(new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](line.x1, line.y1, virtualNode.x, virtualNode.y));\n linesToCheck.push(new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](virtualNode.x, virtualNode.y, line.x2, line.y2));\n hasIntersection = true;\n }\n };\n\n testReroute(true);\n\n if (!hasIntersection) {\n // if we didn't find a valid point around the first corner, try the second\n testReroute(false);\n }\n }\n } // no intersection found, mark this line as completed\n\n\n if (!hasIntersection) {\n checkedLines.push(line);\n }\n\n iterations += 1;\n }; // inner loop end when out of lines or found an intersection\n\n\n while (!hasIntersection && linesToCheck.length) {\n _loop_1();\n }\n } // 加入剩余的线\n\n\n while (linesToCheck.length) {\n checkedLines.push(linesToCheck.pop());\n }\n\n return checkedLines;\n};\n/**\n * Connect item with visited members using direct line or virtual edges\n */\n\n\nfunction getRoute(item, nonMembers, visited, maxRoutingIterations, morphBuffer) {\n var optimalNeighbor = pickBestNeighbor(item, visited, nonMembers);\n\n if (optimalNeighbor === null) {\n return [];\n } // merge the consecutive lines\n\n\n var mergeLines = function mergeLines(checkedLines) {\n var finalRoute = [];\n\n while (checkedLines.length > 0) {\n var line1 = checkedLines.pop();\n\n if (checkedLines.length === 0) {\n finalRoute.push(line1);\n break;\n }\n\n var line2 = checkedLines.pop();\n var mergeLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](line1.x1, line1.y1, line2.x2, line2.y2);\n var closestItem = getIntersectItem(nonMembers, mergeLine); // merge most recent line and previous line\n\n if (!closestItem) {\n checkedLines.push(mergeLine);\n } else {\n finalRoute.push(line1);\n checkedLines.push(line2);\n }\n }\n\n return finalRoute;\n };\n\n var directLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](item.getModel().x, item.getModel().y, optimalNeighbor.getModel().x, optimalNeighbor.getModel().y);\n var checkedLines = computeRoute(directLine, nonMembers, maxRoutingIterations, morphBuffer);\n var finalRoute = mergeLines(checkedLines);\n return finalRoute;\n}\n/**\n * Calculate the countor that includes the selected items and exclues the non-selected items\n * @param graph\n * @param members\n * @param nonMembers\n * @param options\n */\n\n\nvar genBubbleSet = function genBubbleSet(members, nonMembers, ops) {\n // eslint-disable-next-line no-redeclare\n var options = Object.assign(defaultOps, ops);\n var centroid = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"getPointsCenter\"])(members.map(function (item) {\n return {\n x: item.getModel().x,\n y: item.getModel().y\n };\n })); // 按照到中心距离远近排序\n\n members = members.sort(function (a, b) {\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])({\n x: a.getModel().x,\n y: a.getModel().y\n }, centroid) - Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])({\n x: b.getModel().x,\n y: b.getModel().y\n }, centroid);\n });\n var visited = [];\n var virtualEdges = [];\n members.forEach(function (item) {\n var lines = getRoute(item, nonMembers, visited, options.maxRoutingIterations, options.morphBuffer);\n lines.forEach(function (l) {\n virtualEdges.push(l);\n });\n visited.push(item);\n }); // 由于edge也可以作为member和nonMember传入,暂时不考虑把edges作为参数传入genBubbleSet\n // edges && edges.forEach(e => {\n // virtualEdges.push(new Line(e.getSource().getModel().x, e.getSource().getModel().y, e.getTarget().getModel().x, e.getTarget().getModel().y));\n // });\n\n var activeRegion = getActiveRregion(members, virtualEdges, options.nodeR0);\n var potentialArea = initGridCells(activeRegion.width, activeRegion.height, options.pixelGroupSize); // Use march squares to generate contour\n\n var contour = [];\n var hull = [];\n\n for (var iterations = 0; iterations < options.maxMarchingIterations; iterations++) {\n fillPotentialArea(members, nonMembers, virtualEdges, activeRegion, potentialArea, options);\n contour = [];\n hull = [];\n if (!new MarchingSquares(contour, potentialArea, options.threshold).march()) continue;\n var marchedPath = contour.map(function (point) {\n return {\n x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX),\n y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY)\n };\n }); // const marchedPath = marchingSquares(potentialArea, options.threshold).map(point => ({ x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX), y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY) }))\n\n if (marchedPath) {\n var size = marchedPath.length;\n\n if (options.skip > 1) {\n size = Math.floor(marchedPath.length / options.skip); // if we reduced too much (fewer than three points in reduced surface) reduce skip and try again\n\n while (size < 3 && options.skip > 1) {\n options.skip -= 1;\n size = Math.floor(marchedPath.length / options.skip);\n }\n } // copy hull values\n\n\n for (var i = 0, j = 0; j < size; j += 1, i += options.skip) {\n hull.push({\n x: marchedPath[i].x,\n y: marchedPath[i].y\n });\n }\n }\n\n var isContourValid = function isContourValid() {\n for (var _i = 0, members_1 = members; _i < members_1.length; _i++) {\n var item = members_1[_i];\n var hullPoints = hull.map(function (point) {\n return [point.x, point.y];\n });\n if (!Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointInPolygon\"])(hullPoints, item.getBBox().centerX, item.getBBox().centerY)) return false;\n } // 不强制要求所有nonMembers都没有包含在内\n // for (const item of nonMembers) {\n // if (isPointInPolygon({ x: item.getBBox().centerX, y: item.getBBox().centerY }, contour)) return false\n // }\n\n\n return true;\n };\n\n if (hull && isContourValid()) {\n return hull;\n } // update parameters for next iteraction\n\n\n options.threshold *= 0.9;\n\n if (iterations <= options.maxMarchingIterations * 0.5) {\n options.memberInfluenceFactor *= 1.2;\n options.edgeInfluenceFactor *= 1.2;\n } else if (options.nonMemberInfluenceFactor !== 0 && nonMembers.length > 0) {\n // after half the iterations, start increasing positive energy and lowering the threshold\n options.nonMemberInfluenceFactor *= 0.8;\n } else {\n break;\n }\n }\n\n return hull;\n};\n/**\n * unionboundingbox\n * @param members\n * @param edges\n */\n\nfunction getActiveRregion(members, edges, offset) {\n var activeRegion = {\n minX: Number.POSITIVE_INFINITY,\n minY: Number.POSITIVE_INFINITY,\n maxX: Number.NEGATIVE_INFINITY,\n maxY: Number.NEGATIVE_INFINITY,\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n var bboxes = [];\n members.forEach(function (item) {\n bboxes.push(item.getBBox());\n });\n edges.forEach(function (l) {\n bboxes.push(l.getBBox());\n });\n\n for (var _i = 0, bboxes_1 = bboxes; _i < bboxes_1.length; _i++) {\n var bbox = bboxes_1[_i];\n activeRegion.minX = (bbox.minX < activeRegion.minX ? bbox.minX : activeRegion.minX) - offset;\n activeRegion.minY = (bbox.minY < activeRegion.minY ? bbox.minY : activeRegion.minY) - offset;\n activeRegion.maxX = (bbox.maxX > activeRegion.maxX ? bbox.maxX : activeRegion.maxX) + offset;\n activeRegion.maxY = (bbox.maxY > activeRegion.maxY ? bbox.maxY : activeRegion.maxY) + offset;\n }\n\n activeRegion.width = activeRegion.maxX - activeRegion.minX;\n activeRegion.height = activeRegion.maxY - activeRegion.minY;\n activeRegion.x = activeRegion.minX;\n activeRegion.y = activeRegion.minY;\n return activeRegion;\n}\n\nfunction fillPotentialArea(members, nonMembers, edges, activeRegion, potentialArea, options) {\n function pos2GridIx(x, offset) {\n var gridIx = Math.floor((x - offset) / options.pixelGroupSize);\n return gridIx < 0 ? 0 : gridIx;\n }\n\n function gridIx2Pos(x, offset) {\n return x * options.pixelGroupSize + offset;\n } // using inverse a for numerical stability\n\n\n var nodeInfA = (options.nodeR0 - options.nodeR1) * (options.nodeR0 - options.nodeR1);\n var edgeInfA = (options.edgeR0 - options.edgeR1) * (options.edgeR0 - options.edgeR1);\n\n var getAffectedRegion = function getAffectedRegion(bbox, thresholdR) {\n var startX = Math.min(pos2GridIx(bbox.minX, thresholdR + activeRegion.minX), potentialArea.width);\n var startY = Math.min(pos2GridIx(bbox.minY, thresholdR + activeRegion.minY), potentialArea.height);\n var endX = Math.min(pos2GridIx(bbox.maxX, -thresholdR + activeRegion.minX), potentialArea.width);\n var endY = Math.min(pos2GridIx(bbox.maxY, -thresholdR + activeRegion.minY), potentialArea.height);\n return [startX, startY, endX, endY];\n };\n\n var addItemInfluence = function addItemInfluence(item, influenceFactor) {\n var bbox = item.getBBox();\n\n var _a = getAffectedRegion(bbox, options.nodeR1),\n startX = _a[0],\n startY = _a[1],\n endX = _a[2],\n endY = _a[3]; // calculate item influence for each cell\n\n\n for (var y = startY; y < endY; y += 1) {\n for (var x = startX; x < endX; x += 1) {\n if (influenceFactor < 0 && potentialArea[x + y * potentialArea.width] <= 0) {\n continue;\n }\n\n var tempX = gridIx2Pos(x, activeRegion.minX);\n var tempY = gridIx2Pos(y, activeRegion.minY);\n var distanceSq = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"pointRectSquareDist\"])({\n x: tempX,\n y: tempY\n }, {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.width,\n height: bbox.height\n });\n\n if (distanceSq < Math.pow(options.nodeR1, 2)) {\n var dr = Math.sqrt(distanceSq) - options.nodeR1;\n potentialArea.cells[x + y * potentialArea.width] += influenceFactor * dr * dr;\n }\n }\n }\n };\n\n var addEdgeInfluence = function addEdgeInfluence(line, influenceFactor) {\n var bbox = line.getBBox();\n\n var _a = getAffectedRegion(bbox, options.edgeR1),\n startX = _a[0],\n startY = _a[1],\n endX = _a[2],\n endY = _a[3]; // for every point in active part of potentialArea, calculate distance to nearest point on line and add influence\n\n\n for (var y = startY; y < endY; y += 1) {\n for (var x = startX; x < endX; x += 1) {\n if (influenceFactor < 0 && potentialArea.cells[x + y * potentialArea.width] <= 0) {\n continue;\n }\n\n var tempX = gridIx2Pos(x, activeRegion.minX);\n var tempY = gridIx2Pos(y, activeRegion.minY);\n var minDistanceSq = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"pointLineSquareDist\"])({\n x: tempX,\n y: tempY\n }, line); // only influence if less than r1\n\n if (minDistanceSq < Math.pow(options.edgeR1, 2)) {\n var mdr = Math.sqrt(minDistanceSq) - options.edgeR1;\n potentialArea.cells[x + y * potentialArea.width] += influenceFactor * mdr * mdr;\n }\n }\n }\n };\n\n if (options.nodeInfluenceFactor) {\n members.forEach(function (item) {\n addItemInfluence(item, options.nodeInfluenceFactor / nodeInfA);\n });\n }\n\n if (options.edgeInfluenceFactor) {\n edges.forEach(function (edge) {\n addEdgeInfluence(edge, options.edgeInfluenceFactor / edgeInfA);\n });\n }\n\n if (options.negativeNodeInfluenceFactor) {\n nonMembers.forEach(function (item) {\n addItemInfluence(item, options.negativeNodeInfluenceFactor / nodeInfA);\n });\n }\n}\n\nfunction rerouteLine(item, buffer, intersections, wrapNormal) {\n var bbox = item.getBBox();\n var topIntersect = intersections[0],\n leftIntersect = intersections[1],\n bottomIntersect = intersections[2],\n rightIntersect = intersections[3];\n var cornerPos = {\n topLeft: {\n x: bbox.minX - buffer,\n y: bbox.minY - buffer\n },\n topRight: {\n x: bbox.maxX + buffer,\n y: bbox.minY - buffer\n },\n bottomLeft: {\n x: bbox.minX - buffer,\n y: bbox.maxY + buffer\n },\n bottomRight: {\n x: bbox.maxX + buffer,\n y: bbox.maxY + buffer\n }\n };\n var totalArea = bbox.height * bbox.width;\n\n function calcHalfArea(intersect1, intersect2) {\n return bbox.width * ((intersect1.y - bbox.minY + (intersect2.y - bbox.minY)) * 0.5);\n } // 根据线和boundingbox相交的情况,确定control point的位置\n\n\n if (leftIntersect) {\n // 相交区域有三角形\n if (topIntersect) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n if (bottomIntersect) return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight; // 相交区域分成上下两个梯形,比较面积\n\n var topArea = calcHalfArea(leftIntersect, rightIntersect);\n\n if (topArea < totalArea * 0.5) {\n if (leftIntersect.y > rightIntersect.y) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n }\n\n if (leftIntersect.y < rightIntersect.y) return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight;\n return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n }\n\n if (rightIntersect) {\n if (topIntersect) return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n if (bottomIntersect) return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n } // 相交区域分成左右两个梯形\n\n\n var leftArea = calcHalfArea(topIntersect, bottomIntersect);\n\n if (leftArea < totalArea * 0.5) {\n if (topIntersect.x > bottomIntersect.x) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight;\n }\n\n if (topIntersect.x < bottomIntersect.x) return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2h1bGwvYnViYmxlc2V0LmpzP2UwMDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXNMO0FBQ3RMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdEQUFnRDtBQUNuRTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsdURBQXVEO0FBQ3ZELFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYzs7QUFFZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjOztBQUVkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7O0FBRWQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYzs7QUFFZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIscUNBQXFDO0FBQ3hELHFCQUFxQixzQ0FBc0M7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkRBQVU7QUFDekIseUJBQXlCLCtDQUFJO0FBQzdCO0FBQ0EsVUFBVSxpRUFBYztBQUN4QjtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUVBQWMsYUFBYTs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsa0VBQWU7QUFDekI7QUFDQTtBQUNBLE9BQU8sS0FBSyxrRUFBZTtBQUMzQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLGlEQUFpRCwyQkFBMkI7QUFDNUU7QUFDQTtBQUNBOztBQUVBLFVBQVUsbUVBQWdCO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLHNFQUFtQjtBQUNwQztBQUNBLHVDQUF1Qzs7O0FBR3ZDO0FBQ0E7QUFDQTtBQUNBLGtHQUFrRzs7QUFFbEc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhOzs7QUFHYjtBQUNBO0FBQ0Esb0NBQW9DLCtDQUFJO0FBQ3hDLG9DQUFvQywrQ0FBSTtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEIsK0NBQUk7QUFDOUIsZ0VBQWdFOztBQUVoRTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsdUJBQXVCLCtDQUFJO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBLGlCQUFpQixrRUFBZTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsR0FBRzs7QUFFTjtBQUNBLFdBQVcsNkRBQVU7QUFDckI7QUFDQTtBQUNBLEtBQUssY0FBYyw2REFBVTtBQUM3QjtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHLEVBQUU7QUFDTDtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLHFHQUFxRzs7QUFFckc7QUFDQTs7QUFFQSwwQkFBMEIsNENBQTRDO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRSx5RkFBeUYsMklBQTJJOztBQUUzTztBQUNBOztBQUVBO0FBQ0EsNkRBQTZEOztBQUU3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQLDRCQUE0QixVQUFVO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDLHVCQUF1QjtBQUNsRTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsYUFBYSxtRUFBZ0I7QUFDN0IsT0FBTztBQUNQO0FBQ0EsaUNBQWlDLHVEQUF1RDtBQUN4Rjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7O0FBRUgscUNBQXFDLHNCQUFzQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7O0FBR3JCLHdCQUF3QixVQUFVO0FBQ2xDLDBCQUEwQixVQUFVO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCLHNFQUFtQjtBQUM1QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOzs7QUFHckIsd0JBQXdCLFVBQVU7QUFDbEMsMEJBQTBCLFVBQVU7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEIsc0VBQW1CO0FBQy9DO0FBQ0E7QUFDQSxTQUFTLFFBQVE7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLHVGQUF1Rjs7QUFFdkY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvaHVsbC9idWJibGVzZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcXVhcmVEaXN0LCBwb2ludExpbmVTcXVhcmVEaXN0LCBpdGVtSW50ZXJzZWN0QnlMaW5lLCBnZXRQb2ludHNDZW50ZXIsIGZyYWN0aW9uVG9MaW5lLCBpc1BvaW50c092ZXJsYXAsIHBvaW50UmVjdFNxdWFyZURpc3QsIExpbmUsIGlzUG9pbnRJblBvbHlnb24gfSBmcm9tICcuLi8uLi91dGlsL21hdGgnO1xudmFyIGRlZmF1bHRPcHMgPSB7XG4gIG1heFJvdXRpbmdJdGVyYXRpb25zOiAxMDAsXG4gIG1heE1hcmNoaW5nSXRlcmF0aW9uczogMTAwLFxuICBwaXhlbEdyb3VwU2l6ZTogMixcbiAgZWRnZVIwOiAxMCxcbiAgZWRnZVIxOiAxMCxcbiAgbm9kZVIwOiA1LFxuICBub2RlUjE6IDEwLFxuICBtb3JwaEJ1ZmZlcjogNSxcbiAgdGhyZXNob2xkOiAwLjAwMSxcbiAgc2tpcDogMTYsXG4gIG5vZGVJbmZsdWVuY2VGYWN0b3I6IDEsXG4gIGVkZ2VJbmZsdWVuY2VGYWN0b3I6IDEsXG4gIG5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3RvcjogLTAuNVxufTtcbi8qKlxuICogTWFyY2hpbmcgc3F1YXJlIGFsZ29yaXRobSBmb3IgdHJhY2hpbmcgdGhlIGNvbnRvdXIgb2YgYSBwaXhlbCBncm91cFxuICogaHR0cHM6Ly93d3cuZW1hbnVlbGVmZXJvbmF0by5jb20vMjAxMy8wMy8wMS91c2luZy1tYXJjaGluZy1zcXVhcmVzLWFsZ29yaXRobS10by10cmFjZS10aGUtY29udG91ci1vZi1hbi1pbWFnZS9cbiAqIEBwYXJhbSBwb3RlbnRpYWxBcmVhXG4gKiBAcGFyYW0gdGhyZXNob2xkXG4gKi9cblxuZnVuY3Rpb24gTWFyY2hpbmdTcXVhcmVzKGNvbnRvdXIsIHBvdGVudGlhbEFyZWEsIHRocmVzaG9sZCkge1xuICB2YXIgbWFyY2hlZCA9IGZhbHNlO1xuXG4gIHZhciBnZXRWYWwgPSBmdW5jdGlvbiBnZXRWYWwoeCwgeSkge1xuICAgIHJldHVybiBwb3RlbnRpYWxBcmVhLmNlbGxzW3ggKyB5ICogcG90ZW50aWFsQXJlYS53aWR0aF07XG4gIH07XG5cbiAgdmFyIGdldFN0YXRlID0gZnVuY3Rpb24gZ2V0U3RhdGUoeCwgeSkge1xuICAgIHZhciBzcXVhcmVWYWwgPSAwO1xuXG4gICAgaWYgKGdldFZhbCh4IC0gMSwgeSAtIDEpID49IHRocmVzaG9sZCkge1xuICAgICAgc3F1YXJlVmFsICs9IDE7XG4gICAgfVxuXG4gICAgaWYgKGdldFZhbCh4LCB5IC0gMSkgPiB0aHJlc2hvbGQpIHtcbiAgICAgIHNxdWFyZVZhbCArPSAyO1xuICAgIH1cblxuICAgIGlmIChnZXRWYWwoeCAtIDEsIHkpID4gdGhyZXNob2xkKSB7XG4gICAgICBzcXVhcmVWYWwgKz0gNDtcbiAgICB9XG5cbiAgICBpZiAoZ2V0VmFsKHgsIHkpID4gdGhyZXNob2xkKSB7XG4gICAgICBzcXVhcmVWYWwgKz0gODtcbiAgICB9XG5cbiAgICByZXR1cm4gc3F1YXJlVmFsO1xuICB9O1xuXG4gIHZhciBkb01hcmNoID0gZnVuY3Rpb24gZG9NYXJjaCh4UG9zLCB5UG9zKSB7XG4gICAgdmFyIHggPSB4UG9zO1xuICAgIHZhciB5ID0geVBvcztcbiAgICB2YXIgcHJldlg7XG4gICAgdmFyIHByZXZZO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3RlbnRpYWxBcmVhLndpZHRoICogcG90ZW50aWFsQXJlYS5oZWlnaHQ7IGkrKykge1xuICAgICAgcHJldlggPSB4O1xuICAgICAgcHJldlkgPSB5O1xuXG4gICAgICBpZiAoY29udG91ci5maW5kSW5kZXgoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ueCA9PT0geCAmJiBpdGVtLnkgPT09IHk7XG4gICAgICB9KSA+IC0xKSB7XG4gICAgICAgIGlmIChjb250b3VyWzBdLnggIT09IHggfHwgY29udG91clswXS55ICE9PSB5KSB7Ly8gZW5jb3VudGVyZWQgYSBsb29wIGJ1dCBoYXZlbid0IHJldHVybmVkIHRvIHN0YXJ0OiBjaGFuZ2UgZGlyZWN0aW9uIHVzaW5nIGNvbmRpdGlvbmFscyBhbmQgY29udGludWUgYmFjayB0byBzdGFydFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250b3VyLnB1c2goe1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogeVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0YXRlID0gZ2V0U3RhdGUoeCwgeSk7IC8vIGFzc2lnbiB0aGUgbW92ZSBkaXJlY3Rpb24gYWNjb3JkaW5nIHRvIHN0YXRlIG9mIHRoZSBzcXVhcmVcblxuICAgICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgICBjYXNlIC0xOlxuICAgICAgICAgIGNvbnNvbGUud2FybignTWFyY2hlZCBvdXQgb2YgYm91bmRzJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDM6XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHgrKzsgLy8gZ28gcmlnaHRcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTI6XG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICB4LS07IC8vIGdvIGxlZnRcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAvLyBnbyBsZWZ0IGlmIGNvbWUgZnJvbSB1cCBlbHNlIGdvIHJpZ2h0XG4gICAgICAgICAgaWYgKHByZXZYID09PSAwKSB7XG4gICAgICAgICAgICBpZiAocHJldlkgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHggLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHggKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDE6XG4gICAgICAgIGNhc2UgMTM6XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICB5LS07IC8vIGdvIHVwXG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgLy8gZ28gdXAgaWYgY29tZSBmcm9tIHJpZ2h0IGVsc2UgZ28gZG93blxuICAgICAgICAgIGlmIChwcmV2WCA9PT0gMSkge1xuICAgICAgICAgICAgaWYgKHByZXZZID09PSAwKSB7XG4gICAgICAgICAgICAgIHkgLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHkgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDEwOlxuICAgICAgICBjYXNlIDg6XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgeSsrOyAvLyBnbyBkb3duXG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybihcIk1hcmNoaW5nIHNxdWFyZXMgaW52YWxpZCBzdGF0ZTogXCIuY29uY2F0KHN0YXRlKSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHRoaXMubWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgeCA9IDA7IHggPCBwb3RlbnRpYWxBcmVhLndpZHRoICYmICFtYXJjaGVkOyB4ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgcG90ZW50aWFsQXJlYS5oZWlnaHQgJiYgIW1hcmNoZWQ7IHkgKz0gMSkge1xuICAgICAgICBpZiAoZ2V0VmFsKHgsIHkpID4gdGhyZXNob2xkICYmIGdldFN0YXRlKHgsIHkpICE9PSAxNSkge1xuICAgICAgICAgIG1hcmNoZWQgPSBkb01hcmNoKHgsIHkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmNoZWQ7XG4gIH07XG59XG4vKipcbiAqIFNwYWNlIHBhcnRpdGlvbiAmIGFzc2lnbiB2YWx1ZSB0byBlYWNoIGNlbGxcbiAqIEBwYXJhbSBwb2ludHNcbiAqL1xuXG5cbnZhciBpbml0R3JpZENlbGxzID0gZnVuY3Rpb24gaW5pdEdyaWRDZWxscyh3aWR0aCwgaGVpZ2h0LCBwaXhlbEdyb3VwU2l6ZSkge1xuICB2YXIgc2NhbGVXaWR0aCA9IE1hdGguY2VpbCh3aWR0aCAvIHBpeGVsR3JvdXBTaXplKTtcbiAgdmFyIHNjYWxlSGVpZ2h0ID0gTWF0aC5jZWlsKGhlaWdodCAvIHBpeGVsR3JvdXBTaXplKTtcbiAgdmFyIGdyaWRDZWxscyA9IG5ldyBGbG9hdDMyQXJyYXkoTWF0aC5tYXgoMCwgc2NhbGVXaWR0aCAqIHNjYWxlSGVpZ2h0KSkuZmlsbCgwKTtcbiAgcmV0dXJuIHtcbiAgICBjZWxsczogZ3JpZENlbGxzLFxuICAgIHdpZHRoOiBzY2FsZVdpZHRoLFxuICAgIGhlaWdodDogc2NhbGVIZWlnaHRcbiAgfTtcbn07XG4vKipcbiAqIEZpbmQgdGhlIG9wdGltYWwgYWxyZWFkeSB2aXNpdGVkIG1lbWJlciB0byBpdGVtO1xuICAgT3B0aW1hbDogbWluaW1pemUgY29zdChqKSA9IGRpc3RhbmNlKGksaikg4oiXIGNvdW50T2JzdGFjbGVzKGksailcbiAqIEBwYXJhbSBpdGVtXG4gKiBAcGFyYW0gdmlzaXRlZFxuICovXG5cblxudmFyIHBpY2tCZXN0TmVpZ2hib3IgPSBmdW5jdGlvbiBwaWNrQmVzdE5laWdoYm9yKGl0ZW0sIHZpc2l0ZWQsIG5vbk1lbWJlcnMpIHtcbiAgdmFyIGNsb3Nlc3ROZWlnaGJvdXIgPSBudWxsO1xuICB2YXIgbWluQ29zdCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmlzaXRlZC5mb3JFYWNoKGZ1bmN0aW9uIChuZWlnaGJvdXJJdGVtKSB7XG4gICAgdmFyIGl0ZW1QID0ge1xuICAgICAgeDogaXRlbS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBpdGVtLmdldE1vZGVsKCkueVxuICAgIH07XG4gICAgdmFyIG5laWdoYm91ckl0ZW1QID0ge1xuICAgICAgeDogbmVpZ2hib3VySXRlbS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBuZWlnaGJvdXJJdGVtLmdldE1vZGVsKCkueVxuICAgIH07XG4gICAgdmFyIGRpc3QgPSBzcXVhcmVEaXN0KGl0ZW1QLCBuZWlnaGJvdXJJdGVtUCk7XG4gICAgdmFyIGRpcmVjdExpbmUgPSBuZXcgTGluZShpdGVtUC54LCBpdGVtUC55LCBuZWlnaGJvdXJJdGVtUC54LCBuZWlnaGJvdXJJdGVtUC55KTtcbiAgICB2YXIgbnVtYmVyT2JzdGFjbGVzID0gbm9uTWVtYmVycy5yZWR1Y2UoZnVuY3Rpb24gKGNvdW50LCBfaXRlbSkge1xuICAgICAgaWYgKGZyYWN0aW9uVG9MaW5lKF9pdGVtLCBkaXJlY3RMaW5lKSA+IDApIHtcbiAgICAgICAgcmV0dXJuIGNvdW50ICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH0sIDApO1xuXG4gICAgaWYgKGRpc3QgKiBNYXRoLnBvdyhudW1iZXJPYnN0YWNsZXMgKyAxLCAyKSA8IG1pbkNvc3QpIHtcbiAgICAgIGNsb3Nlc3ROZWlnaGJvdXIgPSBuZWlnaGJvdXJJdGVtO1xuICAgICAgbWluQ29zdCA9IGRpc3QgKiBNYXRoLnBvdyhudW1iZXJPYnN0YWNsZXMgKyAxLCAyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2xvc2VzdE5laWdoYm91cjtcbn07XG4vKipcbiAqIOi/lOWbnuWSjOe6v+ebuOS6pOeahGl0ZW3kuK3vvIznprvovrnnmoTotbfngrnmnIDov5HnmoRpdGVtXG4gKiBAcGFyYW0gaXRlbXNcbiAqIEBwYXJhbSBsaW5lXG4gKi9cblxuXG52YXIgZ2V0SW50ZXJzZWN0SXRlbSA9IGZ1bmN0aW9uIGdldEludGVyc2VjdEl0ZW0oaXRlbXMsIGxpbmUpIHtcbiAgdmFyIG1pbkRpc3RhbmNlID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICB2YXIgY2xvc2VzdEl0ZW0gPSBudWxsO1xuICBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGRpc3RhbmNlID0gZnJhY3Rpb25Ub0xpbmUoaXRlbSwgbGluZSk7IC8vIGZpbmQgY2xvc2VzdCBpbnRlcnNlY3Rpb25cblxuICAgIGlmIChkaXN0YW5jZSA+PSAwICYmIGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgIGNsb3Nlc3RJdGVtID0gaXRlbTtcbiAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNsb3Nlc3RJdGVtO1xufTtcbi8qKlxuICogTW9kaWZ5IHRoZSBkaXJlY3RMaW5lIGFuZCBSb3V0ZSB2aXJ0dWFsIGVkZ2VzIGFyb3VuZCBvYnN0YWNsZXNcbiAqL1xuXG5cbnZhciBjb21wdXRlUm91dGUgPSBmdW5jdGlvbiBjb21wdXRlUm91dGUoZGlyZWN0TGluZSwgbm9uTWVtYmVycywgbWF4Um91dGluZ0l0ZXJhdGlvbnMsIG1vcnBoQnVmZmVyKSB7XG4gIHZhciBjaGVja2VkTGluZXMgPSBbXTtcbiAgdmFyIGxpbmVzVG9DaGVjayA9IFtdO1xuICBsaW5lc1RvQ2hlY2sucHVzaChkaXJlY3RMaW5lKTtcbiAgdmFyIGhhc0ludGVyc2VjdGlvbiA9IHRydWU7XG4gIHZhciBpdGVyYXRpb25zID0gMDtcblxuICB2YXIgcG9pbnRFeGlzdHMgPSBmdW5jdGlvbiBwb2ludEV4aXN0cyhwb2ludCwgbGluZXMpIHtcbiAgICB2YXIgZmxhZyA9IGZhbHNlO1xuICAgIGxpbmVzLmZvckVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGlmIChmbGFnKSByZXR1cm47XG5cbiAgICAgIGlmIChpc1BvaW50c092ZXJsYXAocG9pbnQsIHtcbiAgICAgICAgeDogbGluZS54MSxcbiAgICAgICAgeTogbGluZS55MVxuICAgICAgfSkgfHwgaXNQb2ludHNPdmVybGFwKHBvaW50LCB7XG4gICAgICAgIHg6IGxpbmUueDIsXG4gICAgICAgIHk6IGxpbmUueTJcbiAgICAgIH0pKSB7XG4gICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmbGFnO1xuICB9O1xuXG4gIHZhciBpc1BvaW50SW5Ob25NZW1iZXJzID0gZnVuY3Rpb24gaXNQb2ludEluTm9uTWVtYmVycyhwb2ludCwgX25vbk1lbWJlcnMpIHtcbiAgICBmb3IgKHZhciBfaSA9IDAsIF9ub25NZW1iZXJzXzEgPSBfbm9uTWVtYmVyczsgX2kgPCBfbm9uTWVtYmVyc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGl0ZW0gPSBfbm9uTWVtYmVyc18xW19pXTtcbiAgICAgIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gICAgICB2YXIgaXRlbUNvbnRvdXIgPSBbW2Jib3gueCwgYmJveC55XSwgW2Jib3gueCArIGJib3gud2lkdGgsIGJib3gueV0sIFtiYm94LngsIGJib3gueSArIGJib3guaGVpZ2h0XSwgW2Jib3gueCArIGJib3gud2lkdGgsIGJib3gueSArIGJib3guaGVpZ2h0XV07XG5cbiAgICAgIGlmIChpc1BvaW50SW5Qb2x5Z29uKGl0ZW1Db250b3VyLCBwb2ludC54LCBwb2ludC55KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07IC8vIG91dGVyIGxvb3AgZW5kIHdoZW4gbm8gbW9yZSBpbnRlcnNlY3Rpb25zIG9yIG91dCBvZiBpdGVyYXRpb25zXG5cblxuICB3aGlsZSAoaGFzSW50ZXJzZWN0aW9uICYmIGl0ZXJhdGlvbnMgPCBtYXhSb3V0aW5nSXRlcmF0aW9ucykge1xuICAgIGhhc0ludGVyc2VjdGlvbiA9IGZhbHNlO1xuXG4gICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgICAgdmFyIGxpbmUgPSBsaW5lc1RvQ2hlY2sucG9wKCk7XG4gICAgICB2YXIgY2xvc2VzdEl0ZW0gPSBnZXRJbnRlcnNlY3RJdGVtKG5vbk1lbWJlcnMsIGxpbmUpO1xuXG4gICAgICBpZiAoY2xvc2VzdEl0ZW0pIHtcbiAgICAgICAgdmFyIF9hID0gaXRlbUludGVyc2VjdEJ5TGluZShjbG9zZXN0SXRlbSwgbGluZSksXG4gICAgICAgICAgICBpbnRlcnNlY3Rpb25zXzEgPSBfYVswXSxcbiAgICAgICAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyA9IF9hWzFdOyAvLyBpZiBsaW5lIHBhc3NlcyB0aHJvdWdoIGl0ZW1cblxuXG4gICAgICAgIGlmIChjb3VudEludGVyc2VjdGlvbnMgPT09IDIpIHtcbiAgICAgICAgICB2YXIgdGVzdFJlcm91dGUgPSBmdW5jdGlvbiB0ZXN0UmVyb3V0ZShpc0ZpcnN0KSB7XG4gICAgICAgICAgICB2YXIgdGVtcE1vcnBoQnVmZmVyID0gbW9ycGhCdWZmZXI7XG4gICAgICAgICAgICB2YXIgdmlydHVhbE5vZGUgPSByZXJvdXRlTGluZShjbG9zZXN0SXRlbSwgdGVtcE1vcnBoQnVmZmVyLCBpbnRlcnNlY3Rpb25zXzEsIGlzRmlyc3QpOyAvLyB0ZXN0IHRoZSB2aXJ0dWFsTm9kZSBhbHJlYWR5IGV4aXN0c1xuXG4gICAgICAgICAgICB2YXIgZXhpc3QgPSBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgbGluZXNUb0NoZWNrKSB8fCBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgY2hlY2tlZExpbmVzKTtcbiAgICAgICAgICAgIHZhciBwb2ludEluc2lkZSA9IGlzUG9pbnRJbk5vbk1lbWJlcnModmlydHVhbE5vZGUsIG5vbk1lbWJlcnMpO1xuXG4gICAgICAgICAgICB3aGlsZSAoIWV4aXN0ICYmIHBvaW50SW5zaWRlICYmIHRlbXBNb3JwaEJ1ZmZlciA+PSAxKSB7XG4gICAgICAgICAgICAgIC8vIHRyeSBhIHNtYWxsZXIgYnVmZmVyXG4gICAgICAgICAgICAgIHRlbXBNb3JwaEJ1ZmZlciAvPSAxLjU7XG4gICAgICAgICAgICAgIHZpcnR1YWxOb2RlID0gcmVyb3V0ZUxpbmUoY2xvc2VzdEl0ZW0sIHRlbXBNb3JwaEJ1ZmZlciwgaW50ZXJzZWN0aW9uc18xLCBpc0ZpcnN0KTtcbiAgICAgICAgICAgICAgZXhpc3QgPSBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgbGluZXNUb0NoZWNrKSB8fCBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgY2hlY2tlZExpbmVzKTtcbiAgICAgICAgICAgICAgcG9pbnRJbnNpZGUgPSBpc1BvaW50SW5Ob25NZW1iZXJzKHZpcnR1YWxOb2RlLCBub25NZW1iZXJzKTtcbiAgICAgICAgICAgIH0gLy8g56ys5LqM5qyhcm91dGXml7bkuI3opoHmsYJwb2ludEluc2lkZVxuXG5cbiAgICAgICAgICAgIGlmICh2aXJ0dWFsTm9kZSAmJiAhZXhpc3QgJiYgKCFpc0ZpcnN0IHx8ICFwb2ludEluc2lkZSkpIHtcbiAgICAgICAgICAgICAgLy8gYWRkIDIgcmVyb3V0ZWQgbGluZXMgdG8gY2hlY2tcbiAgICAgICAgICAgICAgbGluZXNUb0NoZWNrLnB1c2gobmV3IExpbmUobGluZS54MSwgbGluZS55MSwgdmlydHVhbE5vZGUueCwgdmlydHVhbE5vZGUueSkpO1xuICAgICAgICAgICAgICBsaW5lc1RvQ2hlY2sucHVzaChuZXcgTGluZSh2aXJ0dWFsTm9kZS54LCB2aXJ0dWFsTm9kZS55LCBsaW5lLngyLCBsaW5lLnkyKSk7XG4gICAgICAgICAgICAgIGhhc0ludGVyc2VjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHRlc3RSZXJvdXRlKHRydWUpO1xuXG4gICAgICAgICAgaWYgKCFoYXNJbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgdmFsaWQgcG9pbnQgYXJvdW5kIHRoZSBmaXJzdCBjb3JuZXIsIHRyeSB0aGUgc2Vjb25kXG4gICAgICAgICAgICB0ZXN0UmVyb3V0ZShmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIG5vIGludGVyc2VjdGlvbiBmb3VuZCwgbWFyayB0aGlzIGxpbmUgYXMgY29tcGxldGVkXG5cblxuICAgICAgaWYgKCFoYXNJbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgY2hlY2tlZExpbmVzLnB1c2gobGluZSk7XG4gICAgICB9XG5cbiAgICAgIGl0ZXJhdGlvbnMgKz0gMTtcbiAgICB9OyAvLyBpbm5lciBsb29wIGVuZCB3aGVuIG91dCBvZiBsaW5lcyBvciBmb3VuZCBhbiBpbnRlcnNlY3Rpb25cblxuXG4gICAgd2hpbGUgKCFoYXNJbnRlcnNlY3Rpb24gJiYgbGluZXNUb0NoZWNrLmxlbmd0aCkge1xuICAgICAgX2xvb3BfMSgpO1xuICAgIH1cbiAgfSAvLyDliqDlhaXliankvZnnmoTnur9cblxuXG4gIHdoaWxlIChsaW5lc1RvQ2hlY2subGVuZ3RoKSB7XG4gICAgY2hlY2tlZExpbmVzLnB1c2gobGluZXNUb0NoZWNrLnBvcCgpKTtcbiAgfVxuXG4gIHJldHVybiBjaGVja2VkTGluZXM7XG59O1xuLyoqXG4gKiAgQ29ubmVjdCBpdGVtIHdpdGggdmlzaXRlZCBtZW1iZXJzIHVzaW5nIGRpcmVjdCBsaW5lIG9yIHZpcnR1YWwgZWRnZXNcbiAqL1xuXG5cbmZ1bmN0aW9uIGdldFJvdXRlKGl0ZW0sIG5vbk1lbWJlcnMsIHZpc2l0ZWQsIG1heFJvdXRpbmdJdGVyYXRpb25zLCBtb3JwaEJ1ZmZlcikge1xuICB2YXIgb3B0aW1hbE5laWdoYm9yID0gcGlja0Jlc3ROZWlnaGJvcihpdGVtLCB2aXNpdGVkLCBub25NZW1iZXJzKTtcblxuICBpZiAob3B0aW1hbE5laWdoYm9yID09PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICBtZXJnZSB0aGUgY29uc2VjdXRpdmUgbGluZXNcblxuXG4gIHZhciBtZXJnZUxpbmVzID0gZnVuY3Rpb24gbWVyZ2VMaW5lcyhjaGVja2VkTGluZXMpIHtcbiAgICB2YXIgZmluYWxSb3V0ZSA9IFtdO1xuXG4gICAgd2hpbGUgKGNoZWNrZWRMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgbGluZTEgPSBjaGVja2VkTGluZXMucG9wKCk7XG5cbiAgICAgIGlmIChjaGVja2VkTGluZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGZpbmFsUm91dGUucHVzaChsaW5lMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGluZTIgPSBjaGVja2VkTGluZXMucG9wKCk7XG4gICAgICB2YXIgbWVyZ2VMaW5lID0gbmV3IExpbmUobGluZTEueDEsIGxpbmUxLnkxLCBsaW5lMi54MiwgbGluZTIueTIpO1xuICAgICAgdmFyIGNsb3Nlc3RJdGVtID0gZ2V0SW50ZXJzZWN0SXRlbShub25NZW1iZXJzLCBtZXJnZUxpbmUpOyAvLyBtZXJnZSBtb3N0IHJlY2VudCBsaW5lIGFuZCBwcmV2aW91cyBsaW5lXG5cbiAgICAgIGlmICghY2xvc2VzdEl0ZW0pIHtcbiAgICAgICAgY2hlY2tlZExpbmVzLnB1c2gobWVyZ2VMaW5lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsUm91dGUucHVzaChsaW5lMSk7XG4gICAgICAgIGNoZWNrZWRMaW5lcy5wdXNoKGxpbmUyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxSb3V0ZTtcbiAgfTtcblxuICB2YXIgZGlyZWN0TGluZSA9IG5ldyBMaW5lKGl0ZW0uZ2V0TW9kZWwoKS54LCBpdGVtLmdldE1vZGVsKCkueSwgb3B0aW1hbE5laWdoYm9yLmdldE1vZGVsKCkueCwgb3B0aW1hbE5laWdoYm9yLmdldE1vZGVsKCkueSk7XG4gIHZhciBjaGVja2VkTGluZXMgPSBjb21wdXRlUm91dGUoZGlyZWN0TGluZSwgbm9uTWVtYmVycywgbWF4Um91dGluZ0l0ZXJhdGlvbnMsIG1vcnBoQnVmZmVyKTtcbiAgdmFyIGZpbmFsUm91dGUgPSBtZXJnZUxpbmVzKGNoZWNrZWRMaW5lcyk7XG4gIHJldHVybiBmaW5hbFJvdXRlO1xufVxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvdW50b3IgdGhhdCBpbmNsdWRlcyB0aGUgIHNlbGVjdGVkIGl0ZW1zIGFuZCBleGNsdWVzIHRoZSBub24tc2VsZWN0ZWQgaXRlbXNcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIG1lbWJlcnNcbiAqIEBwYXJhbSBub25NZW1iZXJzXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5cblxuZXhwb3J0IHZhciBnZW5CdWJibGVTZXQgPSBmdW5jdGlvbiBnZW5CdWJibGVTZXQobWVtYmVycywgbm9uTWVtYmVycywgb3BzKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbiAgdmFyIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHMsIG9wcyk7XG4gIHZhciBjZW50cm9pZCA9IGdldFBvaW50c0NlbnRlcihtZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBpdGVtLmdldE1vZGVsKCkueCxcbiAgICAgIHk6IGl0ZW0uZ2V0TW9kZWwoKS55XG4gICAgfTtcbiAgfSkpOyAvLyDmjInnhafliLDkuK3lv4Pot53nprvov5zov5HmjpLluo9cblxuICBtZW1iZXJzID0gbWVtYmVycy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIHNxdWFyZURpc3Qoe1xuICAgICAgeDogYS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBhLmdldE1vZGVsKCkueVxuICAgIH0sIGNlbnRyb2lkKSAtIHNxdWFyZURpc3Qoe1xuICAgICAgeDogYi5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBiLmdldE1vZGVsKCkueVxuICAgIH0sIGNlbnRyb2lkKTtcbiAgfSk7XG4gIHZhciB2aXNpdGVkID0gW107XG4gIHZhciB2aXJ0dWFsRWRnZXMgPSBbXTtcbiAgbWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGxpbmVzID0gZ2V0Um91dGUoaXRlbSwgbm9uTWVtYmVycywgdmlzaXRlZCwgb3B0aW9ucy5tYXhSb3V0aW5nSXRlcmF0aW9ucywgb3B0aW9ucy5tb3JwaEJ1ZmZlcik7XG4gICAgbGluZXMuZm9yRWFjaChmdW5jdGlvbiAobCkge1xuICAgICAgdmlydHVhbEVkZ2VzLnB1c2gobCk7XG4gICAgfSk7XG4gICAgdmlzaXRlZC5wdXNoKGl0ZW0pO1xuICB9KTsgLy8g55Sx5LqOZWRnZeS5n+WPr+S7peS9nOS4um1lbWJlcuWSjG5vbk1lbWJlcuS8oOWFpe+8jOaaguaXtuS4jeiAg+iZkeaKimVkZ2Vz5L2c5Li65Y+C5pWw5Lyg5YWlZ2VuQnViYmxlU2V0XG4gIC8vIGVkZ2VzICYmIGVkZ2VzLmZvckVhY2goZSA9PiB7XG4gIC8vICAgdmlydHVhbEVkZ2VzLnB1c2gobmV3IExpbmUoZS5nZXRTb3VyY2UoKS5nZXRNb2RlbCgpLngsIGUuZ2V0U291cmNlKCkuZ2V0TW9kZWwoKS55LCBlLmdldFRhcmdldCgpLmdldE1vZGVsKCkueCwgZS5nZXRUYXJnZXQoKS5nZXRNb2RlbCgpLnkpKTtcbiAgLy8gfSk7XG5cbiAgdmFyIGFjdGl2ZVJlZ2lvbiA9IGdldEFjdGl2ZVJyZWdpb24obWVtYmVycywgdmlydHVhbEVkZ2VzLCBvcHRpb25zLm5vZGVSMCk7XG4gIHZhciBwb3RlbnRpYWxBcmVhID0gaW5pdEdyaWRDZWxscyhhY3RpdmVSZWdpb24ud2lkdGgsIGFjdGl2ZVJlZ2lvbi5oZWlnaHQsIG9wdGlvbnMucGl4ZWxHcm91cFNpemUpOyAvLyBVc2UgbWFyY2ggc3F1YXJlcyB0byBnZW5lcmF0ZSBjb250b3VyXG5cbiAgdmFyIGNvbnRvdXIgPSBbXTtcbiAgdmFyIGh1bGwgPSBbXTtcblxuICBmb3IgKHZhciBpdGVyYXRpb25zID0gMDsgaXRlcmF0aW9ucyA8IG9wdGlvbnMubWF4TWFyY2hpbmdJdGVyYXRpb25zOyBpdGVyYXRpb25zKyspIHtcbiAgICBmaWxsUG90ZW50aWFsQXJlYShtZW1iZXJzLCBub25NZW1iZXJzLCB2aXJ0dWFsRWRnZXMsIGFjdGl2ZVJlZ2lvbiwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucyk7XG4gICAgY29udG91ciA9IFtdO1xuICAgIGh1bGwgPSBbXTtcbiAgICBpZiAoIW5ldyBNYXJjaGluZ1NxdWFyZXMoY29udG91ciwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucy50aHJlc2hvbGQpLm1hcmNoKCkpIGNvbnRpbnVlO1xuICAgIHZhciBtYXJjaGVkUGF0aCA9IGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogTWF0aC5yb3VuZChwb2ludC54ICogb3B0aW9ucy5waXhlbEdyb3VwU2l6ZSArIGFjdGl2ZVJlZ2lvbi5taW5YKSxcbiAgICAgICAgeTogTWF0aC5yb3VuZChwb2ludC55ICogb3B0aW9ucy5waXhlbEdyb3VwU2l6ZSArIGFjdGl2ZVJlZ2lvbi5taW5ZKVxuICAgICAgfTtcbiAgICB9KTsgLy8gY29uc3QgbWFyY2hlZFBhdGggPSBtYXJjaGluZ1NxdWFyZXMocG90ZW50aWFsQXJlYSwgb3B0aW9ucy50aHJlc2hvbGQpLm1hcChwb2ludCA9PiAoeyB4OiBNYXRoLnJvdW5kKHBvaW50LnggKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgYWN0aXZlUmVnaW9uLm1pblgpLCB5OiBNYXRoLnJvdW5kKHBvaW50LnkgKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgYWN0aXZlUmVnaW9uLm1pblkpIH0pKVxuXG4gICAgaWYgKG1hcmNoZWRQYXRoKSB7XG4gICAgICB2YXIgc2l6ZSA9IG1hcmNoZWRQYXRoLmxlbmd0aDtcblxuICAgICAgaWYgKG9wdGlvbnMuc2tpcCA+IDEpIHtcbiAgICAgICAgc2l6ZSA9IE1hdGguZmxvb3IobWFyY2hlZFBhdGgubGVuZ3RoIC8gb3B0aW9ucy5za2lwKTsgLy8gaWYgd2UgcmVkdWNlZCB0b28gbXVjaCAoZmV3ZXIgdGhhbiB0aHJlZSBwb2ludHMgaW4gcmVkdWNlZCBzdXJmYWNlKSByZWR1Y2Ugc2tpcCBhbmQgdHJ5IGFnYWluXG5cbiAgICAgICAgd2hpbGUgKHNpemUgPCAzICYmIG9wdGlvbnMuc2tpcCA+IDEpIHtcbiAgICAgICAgICBvcHRpb25zLnNraXAgLT0gMTtcbiAgICAgICAgICBzaXplID0gTWF0aC5mbG9vcihtYXJjaGVkUGF0aC5sZW5ndGggLyBvcHRpb25zLnNraXApO1xuICAgICAgICB9XG4gICAgICB9IC8vIGNvcHkgaHVsbCB2YWx1ZXNcblxuXG4gICAgICBmb3IgKHZhciBpID0gMCwgaiA9IDA7IGogPCBzaXplOyBqICs9IDEsIGkgKz0gb3B0aW9ucy5za2lwKSB7XG4gICAgICAgIGh1bGwucHVzaCh7XG4gICAgICAgICAgeDogbWFyY2hlZFBhdGhbaV0ueCxcbiAgICAgICAgICB5OiBtYXJjaGVkUGF0aFtpXS55XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBpc0NvbnRvdXJWYWxpZCA9IGZ1bmN0aW9uIGlzQ29udG91clZhbGlkKCkge1xuICAgICAgZm9yICh2YXIgX2kgPSAwLCBtZW1iZXJzXzEgPSBtZW1iZXJzOyBfaSA8IG1lbWJlcnNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBtZW1iZXJzXzFbX2ldO1xuICAgICAgICB2YXIgaHVsbFBvaW50cyA9IGh1bGwubWFwKGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgICAgIHJldHVybiBbcG9pbnQueCwgcG9pbnQueV07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWlzUG9pbnRJblBvbHlnb24oaHVsbFBvaW50cywgaXRlbS5nZXRCQm94KCkuY2VudGVyWCwgaXRlbS5nZXRCQm94KCkuY2VudGVyWSkpIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8g5LiN5by65Yi26KaB5rGC5omA5pyJbm9uTWVtYmVyc+mDveayoeacieWMheWQq+WcqOWGhVxuICAgICAgLy8gZm9yIChjb25zdCBpdGVtIG9mIG5vbk1lbWJlcnMpIHtcbiAgICAgIC8vICAgaWYgKGlzUG9pbnRJblBvbHlnb24oeyB4OiBpdGVtLmdldEJCb3goKS5jZW50ZXJYLCB5OiBpdGVtLmdldEJCb3goKS5jZW50ZXJZIH0sIGNvbnRvdXIpKSByZXR1cm4gZmFsc2VcbiAgICAgIC8vIH1cblxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgaWYgKGh1bGwgJiYgaXNDb250b3VyVmFsaWQoKSkge1xuICAgICAgcmV0dXJuIGh1bGw7XG4gICAgfSAvLyB1cGRhdGUgcGFyYW1ldGVycyBmb3IgbmV4dCBpdGVyYWN0aW9uXG5cblxuICAgIG9wdGlvbnMudGhyZXNob2xkICo9IDAuOTtcblxuICAgIGlmIChpdGVyYXRpb25zIDw9IG9wdGlvbnMubWF4TWFyY2hpbmdJdGVyYXRpb25zICogMC41KSB7XG4gICAgICBvcHRpb25zLm1lbWJlckluZmx1ZW5jZUZhY3RvciAqPSAxLjI7XG4gICAgICBvcHRpb25zLmVkZ2VJbmZsdWVuY2VGYWN0b3IgKj0gMS4yO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5ub25NZW1iZXJJbmZsdWVuY2VGYWN0b3IgIT09IDAgJiYgbm9uTWVtYmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBhZnRlciBoYWxmIHRoZSBpdGVyYXRpb25zLCBzdGFydCBpbmNyZWFzaW5nIHBvc2l0aXZlIGVuZXJneSBhbmQgbG93ZXJpbmcgdGhlIHRocmVzaG9sZFxuICAgICAgb3B0aW9ucy5ub25NZW1iZXJJbmZsdWVuY2VGYWN0b3IgKj0gMC44O1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaHVsbDtcbn07XG4vKipcbiAqIHVuaW9uYm91bmRpbmdib3hcbiAqIEBwYXJhbSBtZW1iZXJzXG4gKiBAcGFyYW0gZWRnZXNcbiAqL1xuXG5mdW5jdGlvbiBnZXRBY3RpdmVScmVnaW9uKG1lbWJlcnMsIGVkZ2VzLCBvZmZzZXQpIHtcbiAgdmFyIGFjdGl2ZVJlZ2lvbiA9IHtcbiAgICBtaW5YOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgbWluWTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIG1heFg6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSxcbiAgICBtYXhZOiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuICB2YXIgYmJveGVzID0gW107XG4gIG1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIGJib3hlcy5wdXNoKGl0ZW0uZ2V0QkJveCgpKTtcbiAgfSk7XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcbiAgICBiYm94ZXMucHVzaChsLmdldEJCb3goKSk7XG4gIH0pO1xuXG4gIGZvciAodmFyIF9pID0gMCwgYmJveGVzXzEgPSBiYm94ZXM7IF9pIDwgYmJveGVzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIGJib3ggPSBiYm94ZXNfMVtfaV07XG4gICAgYWN0aXZlUmVnaW9uLm1pblggPSAoYmJveC5taW5YIDwgYWN0aXZlUmVnaW9uLm1pblggPyBiYm94Lm1pblggOiBhY3RpdmVSZWdpb24ubWluWCkgLSBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1pblkgPSAoYmJveC5taW5ZIDwgYWN0aXZlUmVnaW9uLm1pblkgPyBiYm94Lm1pblkgOiBhY3RpdmVSZWdpb24ubWluWSkgLSBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1heFggPSAoYmJveC5tYXhYID4gYWN0aXZlUmVnaW9uLm1heFggPyBiYm94Lm1heFggOiBhY3RpdmVSZWdpb24ubWF4WCkgKyBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1heFkgPSAoYmJveC5tYXhZID4gYWN0aXZlUmVnaW9uLm1heFkgPyBiYm94Lm1heFkgOiBhY3RpdmVSZWdpb24ubWF4WSkgKyBvZmZzZXQ7XG4gIH1cblxuICBhY3RpdmVSZWdpb24ud2lkdGggPSBhY3RpdmVSZWdpb24ubWF4WCAtIGFjdGl2ZVJlZ2lvbi5taW5YO1xuICBhY3RpdmVSZWdpb24uaGVpZ2h0ID0gYWN0aXZlUmVnaW9uLm1heFkgLSBhY3RpdmVSZWdpb24ubWluWTtcbiAgYWN0aXZlUmVnaW9uLnggPSBhY3RpdmVSZWdpb24ubWluWDtcbiAgYWN0aXZlUmVnaW9uLnkgPSBhY3RpdmVSZWdpb24ubWluWTtcbiAgcmV0dXJuIGFjdGl2ZVJlZ2lvbjtcbn1cblxuZnVuY3Rpb24gZmlsbFBvdGVudGlhbEFyZWEobWVtYmVycywgbm9uTWVtYmVycywgZWRnZXMsIGFjdGl2ZVJlZ2lvbiwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucykge1xuICBmdW5jdGlvbiBwb3MyR3JpZEl4KHgsIG9mZnNldCkge1xuICAgIHZhciBncmlkSXggPSBNYXRoLmZsb29yKCh4IC0gb2Zmc2V0KSAvIG9wdGlvbnMucGl4ZWxHcm91cFNpemUpO1xuICAgIHJldHVybiBncmlkSXggPCAwID8gMCA6IGdyaWRJeDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdyaWRJeDJQb3MoeCwgb2Zmc2V0KSB7XG4gICAgcmV0dXJuIHggKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgb2Zmc2V0O1xuICB9IC8vIHVzaW5nIGludmVyc2UgYSBmb3IgbnVtZXJpY2FsIHN0YWJpbGl0eVxuXG5cbiAgdmFyIG5vZGVJbmZBID0gKG9wdGlvbnMubm9kZVIwIC0gb3B0aW9ucy5ub2RlUjEpICogKG9wdGlvbnMubm9kZVIwIC0gb3B0aW9ucy5ub2RlUjEpO1xuICB2YXIgZWRnZUluZkEgPSAob3B0aW9ucy5lZGdlUjAgLSBvcHRpb25zLmVkZ2VSMSkgKiAob3B0aW9ucy5lZGdlUjAgLSBvcHRpb25zLmVkZ2VSMSk7XG5cbiAgdmFyIGdldEFmZmVjdGVkUmVnaW9uID0gZnVuY3Rpb24gZ2V0QWZmZWN0ZWRSZWdpb24oYmJveCwgdGhyZXNob2xkUikge1xuICAgIHZhciBzdGFydFggPSBNYXRoLm1pbihwb3MyR3JpZEl4KGJib3gubWluWCwgdGhyZXNob2xkUiArIGFjdGl2ZVJlZ2lvbi5taW5YKSwgcG90ZW50aWFsQXJlYS53aWR0aCk7XG4gICAgdmFyIHN0YXJ0WSA9IE1hdGgubWluKHBvczJHcmlkSXgoYmJveC5taW5ZLCB0aHJlc2hvbGRSICsgYWN0aXZlUmVnaW9uLm1pblkpLCBwb3RlbnRpYWxBcmVhLmhlaWdodCk7XG4gICAgdmFyIGVuZFggPSBNYXRoLm1pbihwb3MyR3JpZEl4KGJib3gubWF4WCwgLXRocmVzaG9sZFIgKyBhY3RpdmVSZWdpb24ubWluWCksIHBvdGVudGlhbEFyZWEud2lkdGgpO1xuICAgIHZhciBlbmRZID0gTWF0aC5taW4ocG9zMkdyaWRJeChiYm94Lm1heFksIC10aHJlc2hvbGRSICsgYWN0aXZlUmVnaW9uLm1pblkpLCBwb3RlbnRpYWxBcmVhLmhlaWdodCk7XG4gICAgcmV0dXJuIFtzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWV07XG4gIH07XG5cbiAgdmFyIGFkZEl0ZW1JbmZsdWVuY2UgPSBmdW5jdGlvbiBhZGRJdGVtSW5mbHVlbmNlKGl0ZW0sIGluZmx1ZW5jZUZhY3Rvcikge1xuICAgIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG5cbiAgICB2YXIgX2EgPSBnZXRBZmZlY3RlZFJlZ2lvbihiYm94LCBvcHRpb25zLm5vZGVSMSksXG4gICAgICAgIHN0YXJ0WCA9IF9hWzBdLFxuICAgICAgICBzdGFydFkgPSBfYVsxXSxcbiAgICAgICAgZW5kWCA9IF9hWzJdLFxuICAgICAgICBlbmRZID0gX2FbM107IC8vIGNhbGN1bGF0ZSBpdGVtIGluZmx1ZW5jZSBmb3IgZWFjaCBjZWxsXG5cblxuICAgIGZvciAodmFyIHkgPSBzdGFydFk7IHkgPCBlbmRZOyB5ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHggPSBzdGFydFg7IHggPCBlbmRYOyB4ICs9IDEpIHtcbiAgICAgICAgaWYgKGluZmx1ZW5jZUZhY3RvciA8IDAgJiYgcG90ZW50aWFsQXJlYVt4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdIDw9IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0ZW1wWCA9IGdyaWRJeDJQb3MoeCwgYWN0aXZlUmVnaW9uLm1pblgpO1xuICAgICAgICB2YXIgdGVtcFkgPSBncmlkSXgyUG9zKHksIGFjdGl2ZVJlZ2lvbi5taW5ZKTtcbiAgICAgICAgdmFyIGRpc3RhbmNlU3EgPSBwb2ludFJlY3RTcXVhcmVEaXN0KHtcbiAgICAgICAgICB4OiB0ZW1wWCxcbiAgICAgICAgICB5OiB0ZW1wWVxuICAgICAgICB9LCB7XG4gICAgICAgICAgeDogYmJveC5taW5YLFxuICAgICAgICAgIHk6IGJib3gubWluWSxcbiAgICAgICAgICB3aWR0aDogYmJveC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGJib3guaGVpZ2h0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChkaXN0YW5jZVNxIDwgTWF0aC5wb3cob3B0aW9ucy5ub2RlUjEsIDIpKSB7XG4gICAgICAgICAgdmFyIGRyID0gTWF0aC5zcXJ0KGRpc3RhbmNlU3EpIC0gb3B0aW9ucy5ub2RlUjE7XG4gICAgICAgICAgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdICs9IGluZmx1ZW5jZUZhY3RvciAqIGRyICogZHI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGFkZEVkZ2VJbmZsdWVuY2UgPSBmdW5jdGlvbiBhZGRFZGdlSW5mbHVlbmNlKGxpbmUsIGluZmx1ZW5jZUZhY3Rvcikge1xuICAgIHZhciBiYm94ID0gbGluZS5nZXRCQm94KCk7XG5cbiAgICB2YXIgX2EgPSBnZXRBZmZlY3RlZFJlZ2lvbihiYm94LCBvcHRpb25zLmVkZ2VSMSksXG4gICAgICAgIHN0YXJ0WCA9IF9hWzBdLFxuICAgICAgICBzdGFydFkgPSBfYVsxXSxcbiAgICAgICAgZW5kWCA9IF9hWzJdLFxuICAgICAgICBlbmRZID0gX2FbM107IC8vIGZvciBldmVyeSBwb2ludCBpbiBhY3RpdmUgcGFydCBvZiBwb3RlbnRpYWxBcmVhLCBjYWxjdWxhdGUgZGlzdGFuY2UgdG8gbmVhcmVzdCBwb2ludCBvbiBsaW5lIGFuZCBhZGQgaW5mbHVlbmNlXG5cblxuICAgIGZvciAodmFyIHkgPSBzdGFydFk7IHkgPCBlbmRZOyB5ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHggPSBzdGFydFg7IHggPCBlbmRYOyB4ICs9IDEpIHtcbiAgICAgICAgaWYgKGluZmx1ZW5jZUZhY3RvciA8IDAgJiYgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdIDw9IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0ZW1wWCA9IGdyaWRJeDJQb3MoeCwgYWN0aXZlUmVnaW9uLm1pblgpO1xuICAgICAgICB2YXIgdGVtcFkgPSBncmlkSXgyUG9zKHksIGFjdGl2ZVJlZ2lvbi5taW5ZKTtcbiAgICAgICAgdmFyIG1pbkRpc3RhbmNlU3EgPSBwb2ludExpbmVTcXVhcmVEaXN0KHtcbiAgICAgICAgICB4OiB0ZW1wWCxcbiAgICAgICAgICB5OiB0ZW1wWVxuICAgICAgICB9LCBsaW5lKTsgLy8gb25seSBpbmZsdWVuY2UgaWYgbGVzcyB0aGFuIHIxXG5cbiAgICAgICAgaWYgKG1pbkRpc3RhbmNlU3EgPCBNYXRoLnBvdyhvcHRpb25zLmVkZ2VSMSwgMikpIHtcbiAgICAgICAgICB2YXIgbWRyID0gTWF0aC5zcXJ0KG1pbkRpc3RhbmNlU3EpIC0gb3B0aW9ucy5lZGdlUjE7XG4gICAgICAgICAgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdICs9IGluZmx1ZW5jZUZhY3RvciAqIG1kciAqIG1kcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBpZiAob3B0aW9ucy5ub2RlSW5mbHVlbmNlRmFjdG9yKSB7XG4gICAgbWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICBhZGRJdGVtSW5mbHVlbmNlKGl0ZW0sIG9wdGlvbnMubm9kZUluZmx1ZW5jZUZhY3RvciAvIG5vZGVJbmZBKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmVkZ2VJbmZsdWVuY2VGYWN0b3IpIHtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBhZGRFZGdlSW5mbHVlbmNlKGVkZ2UsIG9wdGlvbnMuZWRnZUluZmx1ZW5jZUZhY3RvciAvIGVkZ2VJbmZBKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLm5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3Rvcikge1xuICAgIG5vbk1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgYWRkSXRlbUluZmx1ZW5jZShpdGVtLCBvcHRpb25zLm5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3RvciAvIG5vZGVJbmZBKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXJvdXRlTGluZShpdGVtLCBidWZmZXIsIGludGVyc2VjdGlvbnMsIHdyYXBOb3JtYWwpIHtcbiAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTtcbiAgdmFyIHRvcEludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbMF0sXG4gICAgICBsZWZ0SW50ZXJzZWN0ID0gaW50ZXJzZWN0aW9uc1sxXSxcbiAgICAgIGJvdHRvbUludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbMl0sXG4gICAgICByaWdodEludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbM107XG4gIHZhciBjb3JuZXJQb3MgPSB7XG4gICAgdG9wTGVmdDoge1xuICAgICAgeDogYmJveC5taW5YIC0gYnVmZmVyLFxuICAgICAgeTogYmJveC5taW5ZIC0gYnVmZmVyXG4gICAgfSxcbiAgICB0b3BSaWdodDoge1xuICAgICAgeDogYmJveC5tYXhYICsgYnVmZmVyLFxuICAgICAgeTogYmJveC5taW5ZIC0gYnVmZmVyXG4gICAgfSxcbiAgICBib3R0b21MZWZ0OiB7XG4gICAgICB4OiBiYm94Lm1pblggLSBidWZmZXIsXG4gICAgICB5OiBiYm94Lm1heFkgKyBidWZmZXJcbiAgICB9LFxuICAgIGJvdHRvbVJpZ2h0OiB7XG4gICAgICB4OiBiYm94Lm1heFggKyBidWZmZXIsXG4gICAgICB5OiBiYm94Lm1heFkgKyBidWZmZXJcbiAgICB9XG4gIH07XG4gIHZhciB0b3RhbEFyZWEgPSBiYm94LmhlaWdodCAqIGJib3gud2lkdGg7XG5cbiAgZnVuY3Rpb24gY2FsY0hhbGZBcmVhKGludGVyc2VjdDEsIGludGVyc2VjdDIpIHtcbiAgICByZXR1cm4gYmJveC53aWR0aCAqICgoaW50ZXJzZWN0MS55IC0gYmJveC5taW5ZICsgKGludGVyc2VjdDIueSAtIGJib3gubWluWSkpICogMC41KTtcbiAgfSAvLyDmoLnmja7nur/lkoxib3VuZGluZ2JveOebuOS6pOeahOaDheWGte+8jOehruWummNvbnRyb2wgcG9pbnTnmoTkvY3nva5cblxuXG4gIGlmIChsZWZ0SW50ZXJzZWN0KSB7XG4gICAgLy8g55u45Lqk5Yy65Z+f5pyJ5LiJ6KeS5b2iXG4gICAgaWYgKHRvcEludGVyc2VjdCkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MudG9wTGVmdCA6IGNvcm5lclBvcy5ib3R0b21SaWdodDtcbiAgICBpZiAoYm90dG9tSW50ZXJzZWN0KSByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy5ib3R0b21MZWZ0IDogY29ybmVyUG9zLnRvcFJpZ2h0OyAvLyDnm7jkuqTljLrln5/liIbmiJDkuIrkuIvkuKTkuKrmoq/lvaLvvIzmr5TovoPpnaLnp69cblxuICAgIHZhciB0b3BBcmVhID0gY2FsY0hhbGZBcmVhKGxlZnRJbnRlcnNlY3QsIHJpZ2h0SW50ZXJzZWN0KTtcblxuICAgIGlmICh0b3BBcmVhIDwgdG90YWxBcmVhICogMC41KSB7XG4gICAgICBpZiAobGVmdEludGVyc2VjdC55ID4gcmlnaHRJbnRlcnNlY3QueSkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MudG9wTGVmdCA6IGNvcm5lclBvcy5ib3R0b21SaWdodDtcbiAgICAgIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcFJpZ2h0IDogY29ybmVyUG9zLmJvdHRvbUxlZnQ7XG4gICAgfVxuXG4gICAgaWYgKGxlZnRJbnRlcnNlY3QueSA8IHJpZ2h0SW50ZXJzZWN0LnkpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLmJvdHRvbUxlZnQgOiBjb3JuZXJQb3MudG9wUmlnaHQ7XG4gICAgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tUmlnaHQgOiBjb3JuZXJQb3MudG9wTGVmdDtcbiAgfVxuXG4gIGlmIChyaWdodEludGVyc2VjdCkge1xuICAgIGlmICh0b3BJbnRlcnNlY3QpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcFJpZ2h0IDogY29ybmVyUG9zLmJvdHRvbUxlZnQ7XG4gICAgaWYgKGJvdHRvbUludGVyc2VjdCkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tUmlnaHQgOiBjb3JuZXJQb3MudG9wTGVmdDtcbiAgfSAvLyDnm7jkuqTljLrln5/liIbmiJDlt6blj7PkuKTkuKrmoq/lvaJcblxuXG4gIHZhciBsZWZ0QXJlYSA9IGNhbGNIYWxmQXJlYSh0b3BJbnRlcnNlY3QsIGJvdHRvbUludGVyc2VjdCk7XG5cbiAgaWYgKGxlZnRBcmVhIDwgdG90YWxBcmVhICogMC41KSB7XG4gICAgaWYgKHRvcEludGVyc2VjdC54ID4gYm90dG9tSW50ZXJzZWN0LngpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcExlZnQgOiBjb3JuZXJQb3MuYm90dG9tUmlnaHQ7XG4gICAgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tTGVmdCA6IGNvcm5lclBvcy50b3BSaWdodDtcbiAgfVxuXG4gIGlmICh0b3BJbnRlcnNlY3QueCA8IGJvdHRvbUludGVyc2VjdC54KSByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy50b3BSaWdodCA6IGNvcm5lclBvcy5ib3R0b21MZWZ0O1xuICByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy5ib3R0b21SaWdodCA6IGNvcm5lclBvcy50b3BMZWZ0O1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/hull/bubbleset.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/hull/convexHull.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/hull/convexHull.js ***! \******************************************************************/ /*! exports provided: cross, genConvexHull */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return cross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genConvexHull\", function() { return genConvexHull; });\n/**\n * Use cross product to judge the direction of the turn.\n * Returns a positive value, if OAB makes a clockwise turn,\n * negative for counter-clockwise turn, and zero if the points are collinear.\n */\nvar cross = function cross(a, b, o) {\n return (a.y - o.y) * (b.x - o.x) - (a.x - o.x) * (b.y - o.y);\n};\n/**\n * Generate a convex hull of given points. Andrew's monotone chain algorithm.\n * @param points An array of [x, y] representing the coordinates of points.\n * @return a list of vertices of the convex hull in counter-clockwise order,\n */\n\nvar genConvexHull = function genConvexHull(items) {\n var points = items.map(function (item) {\n return {\n x: item.getModel().x,\n y: item.getModel().y\n };\n });\n points.sort(function (a, b) {\n return a.x === b.x ? a.y - b.y : a.x - b.x;\n });\n\n if (points.length === 1) {\n return points;\n } // build the lower hull\n\n\n var lower = [];\n\n for (var i = 0; i < points.length; i++) {\n while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], points[i]) <= 0) {\n lower.pop();\n }\n\n lower.push(points[i]);\n } // build the upper hull\n\n\n var upper = [];\n\n for (var i = points.length - 1; i >= 0; i--) {\n while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], points[i]) <= 0) {\n upper.pop();\n }\n\n upper.push(points[i]);\n }\n\n upper.pop();\n lower.pop();\n var strictHull = lower.concat(upper);\n return strictHull;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2h1bGwvY29udmV4SHVsbC5qcz83MzdjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7O0FBRUEsaUJBQWlCLG1CQUFtQjtBQUNwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQSxpQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9odWxsL2NvbnZleEh1bGwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBjcm9zcyBwcm9kdWN0IHRvIGp1ZGdlIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHR1cm4uXG4gKiBSZXR1cm5zIGEgcG9zaXRpdmUgdmFsdWUsIGlmIE9BQiBtYWtlcyBhIGNsb2Nrd2lzZSB0dXJuLFxuICogbmVnYXRpdmUgZm9yIGNvdW50ZXItY2xvY2t3aXNlIHR1cm4sIGFuZCB6ZXJvIGlmIHRoZSBwb2ludHMgYXJlIGNvbGxpbmVhci5cbiAqL1xuZXhwb3J0IHZhciBjcm9zcyA9IGZ1bmN0aW9uIGNyb3NzKGEsIGIsIG8pIHtcbiAgcmV0dXJuIChhLnkgLSBvLnkpICogKGIueCAtIG8ueCkgLSAoYS54IC0gby54KSAqIChiLnkgLSBvLnkpO1xufTtcbi8qKlxuICogR2VuZXJhdGUgYSBjb252ZXggaHVsbCBvZiBnaXZlbiBwb2ludHMuIEFuZHJldydzIG1vbm90b25lIGNoYWluIGFsZ29yaXRobS5cbiAqIEBwYXJhbSBwb2ludHMgQW4gYXJyYXkgb2YgW3gsIHldIHJlcHJlc2VudGluZyB0aGUgY29vcmRpbmF0ZXMgb2YgcG9pbnRzLlxuICogQHJldHVybiBhIGxpc3Qgb2YgdmVydGljZXMgb2YgdGhlIGNvbnZleCBodWxsIGluIGNvdW50ZXItY2xvY2t3aXNlIG9yZGVyLFxuICovXG5cbmV4cG9ydCB2YXIgZ2VuQ29udmV4SHVsbCA9IGZ1bmN0aW9uIGdlbkNvbnZleEh1bGwoaXRlbXMpIHtcbiAgdmFyIHBvaW50cyA9IGl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBpdGVtLmdldE1vZGVsKCkueCxcbiAgICAgIHk6IGl0ZW0uZ2V0TW9kZWwoKS55XG4gICAgfTtcbiAgfSk7XG4gIHBvaW50cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGEueCA9PT0gYi54ID8gYS55IC0gYi55IDogYS54IC0gYi54O1xuICB9KTtcblxuICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBwb2ludHM7XG4gIH0gLy8gYnVpbGQgdGhlIGxvd2VyIGh1bGxcblxuXG4gIHZhciBsb3dlciA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgd2hpbGUgKGxvd2VyLmxlbmd0aCA+PSAyICYmIGNyb3NzKGxvd2VyW2xvd2VyLmxlbmd0aCAtIDJdLCBsb3dlcltsb3dlci5sZW5ndGggLSAxXSwgcG9pbnRzW2ldKSA8PSAwKSB7XG4gICAgICBsb3dlci5wb3AoKTtcbiAgICB9XG5cbiAgICBsb3dlci5wdXNoKHBvaW50c1tpXSk7XG4gIH0gLy8gYnVpbGQgdGhlIHVwcGVyIGh1bGxcblxuXG4gIHZhciB1cHBlciA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSBwb2ludHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB3aGlsZSAodXBwZXIubGVuZ3RoID49IDIgJiYgY3Jvc3ModXBwZXJbdXBwZXIubGVuZ3RoIC0gMl0sIHVwcGVyW3VwcGVyLmxlbmd0aCAtIDFdLCBwb2ludHNbaV0pIDw9IDApIHtcbiAgICAgIHVwcGVyLnBvcCgpO1xuICAgIH1cblxuICAgIHVwcGVyLnB1c2gocG9pbnRzW2ldKTtcbiAgfVxuXG4gIHVwcGVyLnBvcCgpO1xuICBsb3dlci5wb3AoKTtcbiAgdmFyIHN0cmljdEh1bGwgPSBsb3dlci5jb25jYXQodXBwZXIpO1xuICByZXR1cm4gc3RyaWN0SHVsbDtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/hull/convexHull.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/index.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/index.js ***! \********************************************************/ /*! exports provided: Arrow, Marker, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node */ \"./node_modules/@antv/g6-core/es/element/node.js\");\n/* harmony import */ var _edge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./edge */ \"./node_modules/@antv/g6-core/es/element/edge.js\");\n/* harmony import */ var _combo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./combo */ \"./node_modules/@antv/g6-core/es/element/combo.js\");\n/* harmony import */ var _combos__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./combos */ \"./node_modules/@antv/g6-core/es/element/combos/index.js\");\n/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./nodes */ \"./node_modules/@antv/g6-core/es/element/nodes/index.js\");\n/* harmony import */ var _arrow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./arrow */ \"./node_modules/@antv/g6-core/es/element/arrow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _arrow__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./marker */ \"./node_modules/@antv/g6-core/es/element/marker.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_shape__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2luZGV4LmpzP2VkYmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEI7QUFDWjtBQUNBO0FBQ0M7QUFDQztBQUNEO0FBQzBCO0FBQ0U7QUFDOUIsNkdBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0ICcuL25vZGUnO1xuaW1wb3J0ICcuL2VkZ2UnO1xuaW1wb3J0ICcuL2NvbWJvJztcbmltcG9ydCAnLi9jb21ib3MnO1xuaW1wb3J0ICcuL25vZGVzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXJyb3cgfSBmcm9tICcuL2Fycm93JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFya2VyIH0gZnJvbSAnLi9tYXJrZXInO1xuZXhwb3J0IGRlZmF1bHQgU2hhcGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/marker.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/marker.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n collapse: function collapse(x, y, r) {\n return [['M', x - r, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x - r + 4, y], ['L', x + r - 4, y]];\n },\n expand: function expand(x, y, r) {\n return [['M', x - r, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x - r + 4, y], ['L', x - r + 2 * r - 4, y], ['M', x - r + r, y - r + 4], ['L', x, y + r - 4]];\n },\n upTriangle: function upTriangle(x, y, r) {\n var l1 = r * Math.cos(Math.PI / 6);\n var l2 = r * Math.sin(Math.PI / 6);\n return [['M', x - l1, y + l2], ['L', x + l1, y + l2], ['L', x, y - r], ['Z']];\n },\n downTriangle: function downTriangle(x, y, r) {\n var l1 = r * Math.cos(Math.PI / 6);\n var l2 = r * Math.sin(Math.PI / 6);\n return [['M', x - l1, y - l2], ['L', x + l1, y - l2], ['L', x, y + r], ['Z']];\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L21hcmtlci5qcz84OWZkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L21hcmtlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgY29sbGFwc2U6IGZ1bmN0aW9uIGNvbGxhcHNlKHgsIHksIHIpIHtcbiAgICByZXR1cm4gW1snTScsIHggLSByLCB5XSwgWydhJywgciwgciwgMCwgMSwgMCwgciAqIDIsIDBdLCBbJ2EnLCByLCByLCAwLCAxLCAwLCAtciAqIDIsIDBdLCBbJ00nLCB4IC0gciArIDQsIHldLCBbJ0wnLCB4ICsgciAtIDQsIHldXTtcbiAgfSxcbiAgZXhwYW5kOiBmdW5jdGlvbiBleHBhbmQoeCwgeSwgcikge1xuICAgIHJldHVybiBbWydNJywgeCAtIHIsIHldLCBbJ2EnLCByLCByLCAwLCAxLCAwLCByICogMiwgMF0sIFsnYScsIHIsIHIsIDAsIDEsIDAsIC1yICogMiwgMF0sIFsnTScsIHggLSByICsgNCwgeV0sIFsnTCcsIHggLSByICsgMiAqIHIgLSA0LCB5XSwgWydNJywgeCAtIHIgKyByLCB5IC0gciArIDRdLCBbJ0wnLCB4LCB5ICsgciAtIDRdXTtcbiAgfSxcbiAgdXBUcmlhbmdsZTogZnVuY3Rpb24gdXBUcmlhbmdsZSh4LCB5LCByKSB7XG4gICAgdmFyIGwxID0gciAqIE1hdGguY29zKE1hdGguUEkgLyA2KTtcbiAgICB2YXIgbDIgPSByICogTWF0aC5zaW4oTWF0aC5QSSAvIDYpO1xuICAgIHJldHVybiBbWydNJywgeCAtIGwxLCB5ICsgbDJdLCBbJ0wnLCB4ICsgbDEsIHkgKyBsMl0sIFsnTCcsIHgsIHkgLSByXSwgWydaJ11dO1xuICB9LFxuICBkb3duVHJpYW5nbGU6IGZ1bmN0aW9uIGRvd25UcmlhbmdsZSh4LCB5LCByKSB7XG4gICAgdmFyIGwxID0gciAqIE1hdGguY29zKE1hdGguUEkgLyA2KTtcbiAgICB2YXIgbDIgPSByICogTWF0aC5zaW4oTWF0aC5QSSAvIDYpO1xuICAgIHJldHVybiBbWydNJywgeCAtIGwxLCB5IC0gbDJdLCBbJ0wnLCB4ICsgbDEsIHkgLSBsMl0sIFsnTCcsIHgsIHkgKyByXSwgWydaJ11dO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/marker.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/node.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/node.js ***! \*******************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/base */ \"./node_modules/@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/@antv/g6-core/es/element/shapeBase.js\");\n\n\n\n\n\n\nvar singleNode = {\n itemType: 'node',\n // 单个图形的类型\n shapeType: 'single-node',\n\n /**\n * 文本相对图形的位置,默认以中心点\n * 位置包括: top, bottom, left, right, center\n * @type {String}\n */\n labelPosition: 'center',\n\n /**\n * 文本相对偏移,当 labelPosition 不为 center 时有效\n * @type {Number}\n */\n offset: _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].nodeLabel.offset,\n\n /**\n * 获取节点宽高\n * @internal 返回节点的大小,以 [width, height] 的方式维护\n * @param {Object} cfg 节点的配置项\n * @return {Array} 宽高\n */\n getSize: function getSize(cfg) {\n var _a;\n\n var size = ((_a = this.mergeStyle) === null || _a === void 0 ? void 0 : _a.size) || cfg.size || this.getOptions({}).size || _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].defaultNode.size; // Global.defaultNode.size; // \n // size 是数组,但长度为1,则补长度为2\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size) && size.length === 1) {\n size = [size[0], size[0]];\n } // size 为数字,则转换为数组\n\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size)) {\n size = [size, size];\n }\n\n return size;\n },\n // 私有方法,不希望扩展的节点复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition; // 默认的位置(最可能的情形),所以放在最上面\n\n if (labelPosition === 'center') {\n return {\n x: 0,\n y: 0,\n text: cfg.label\n };\n }\n\n var offset = labelCfg.offset;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(offset)) {\n // 考虑 offset = 0 的场景,不用用 labelCfg.offset || Global.nodeLabel.offset\n offset = this.offset; // 不居中时的偏移量\n }\n\n var size = this.getSize(cfg);\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0,\n y: -size[1] / 2 - offset,\n textBaseline: 'bottom' // 文本在图形的上面\n\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: size[1] / 2 + offset,\n textBaseline: 'top'\n };\n break;\n\n case 'left':\n style = {\n x: -size[0] / 2 - offset,\n y: 0,\n textAlign: 'right'\n };\n break;\n\n default:\n style = {\n x: size[0] / 2 + offset,\n y: 0,\n textAlign: 'left'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, labelCfg) {\n var _a;\n\n if (!label) return {};\n var backgroundStyle = (_a = labelCfg.style) === null || _a === void 0 ? void 0 : _a.background;\n if (!backgroundStyle) return {};\n var bbox = label.getBBox();\n var padding = Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"formatPadding\"])(backgroundStyle.padding);\n var backgroundWidth = bbox.width + padding[1] + padding[3];\n var backgroundHeight = bbox.height + padding[0] + padding[2];\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: bbox.minX - padding[3],\n y: bbox.minY - padding[0]\n }, backgroundStyle), {\n width: backgroundWidth,\n height: backgroundHeight\n });\n },\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType; // || this.type,都已经加了 shapeType\n\n var style = this.getShapeStyle(cfg);\n var shape = group.addShape(shapeType, {\n attrs: style,\n draggable: true,\n name: 'node-shape'\n });\n group['shapeMap']['node-shape'] = shape;\n return shape;\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var defaultLinkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markBottom = group['shapeMap']['link-point-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-bottom';\n });\n var currentLinkPoints;\n\n if (markLeft) {\n currentLinkPoints = markLeft.attr();\n }\n\n if (markRight && !currentLinkPoints) {\n currentLinkPoints = markRight.attr();\n }\n\n if (markTop && !currentLinkPoints) {\n currentLinkPoints = markTop.attr();\n }\n\n if (markBottom && !currentLinkPoints) {\n currentLinkPoints = markBottom.attr();\n }\n\n if (!currentLinkPoints) currentLinkPoints = defaultLinkPoints;\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _a = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined\n },\n left = _a.left,\n right = _a.right,\n top = _a.top,\n bottom = _a.bottom;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: -width / 2,\n y: 0\n }));\n }\n } else if (left) {\n var name_1 = 'link-point-left';\n group['shapeMap'][name_1] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: -width / 2,\n y: 0\n }),\n className: name_1,\n name: name_1,\n isAnchorPoint: true\n });\n }\n\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n }\n\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: width / 2,\n y: 0\n }));\n } else if (right) {\n var name_2 = 'link-point-right';\n group['shapeMap'][name_2] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: width / 2,\n y: 0\n }),\n className: name_2,\n name: name_2,\n isAnchorPoint: true\n });\n }\n\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n }\n\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: -height / 2\n }));\n } else if (top) {\n var name_3 = 'link-point-top';\n group['shapeMap'][name_3] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: -height / 2\n }),\n className: name_3,\n name: name_3,\n isAnchorPoint: true\n });\n }\n\n if (markBottom) {\n if (!bottom && bottom !== undefined) {\n markBottom.remove();\n delete group['shapeMap']['link-point-bottom'];\n } else {\n markBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: height / 2\n }));\n }\n } else if (bottom) {\n var name_4 = 'link-point-bottom';\n group['shapeMap'][name_4] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: height / 2\n }),\n className: name_4,\n name: name_4,\n isAnchorPoint: true\n });\n }\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle, hasIcon, updateType) {\n var keyShape = item.get('keyShape');\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n\n if (!undefined || (updateType === null || updateType === void 0 ? void 0 : updateType.includes('label'))) {\n this.updateLabel(cfg, item, updateType);\n }\n\n if (hasIcon) {\n this.updateIcon(cfg, item);\n }\n },\n updateIcon: function updateIcon(cfg, item) {\n var _this = this;\n\n var group = item.getContainer();\n var icon = (this.mergeStyle || this.getOptions(cfg)).icon;\n\n var _a = cfg.icon ? cfg.icon : {\n show: undefined,\n text: undefined\n },\n show = _a.show,\n text = _a.text;\n\n var iconShape = group['shapeMap'][\"\".concat(this.type, \"-icon\")] || group.find(function (ele) {\n return ele.get('name') === \"\".concat(_this.type, \"-icon\");\n });\n\n if (iconShape) {\n // 若原先存在 icon\n if (show || show === undefined) {\n // 若传入 show: true, 或没有设置,则更新原有的 icon 样式\n var iconConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, iconShape.attr(), icon);\n var _b = iconConfig.width,\n w = _b === void 0 ? 20 : _b,\n _c = iconConfig.height,\n h = _c === void 0 ? 20 : _c;\n\n if (iconConfig.fontFamily === 'iconfont' || iconConfig.hasOwnProperty('text')) {\n w = 0;\n h = 0;\n }\n\n iconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, iconConfig), {\n x: -w / 2,\n y: -h / 2\n }));\n } else {\n // 若传入了 show: false 则删除原先的 icon\n iconShape.remove();\n }\n } else if (show) {\n // 如果原先不存在 icon,但传入了 show: true,则新增 icon\n var name_5 = \"\".concat(this.type, \"-icon\");\n\n if (text) {\n group['shapeMap'][name_5] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: name_5,\n name: name_5\n });\n } else {\n var w = icon.width,\n h = icon.height;\n group['shapeMap'][name_5] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, icon), {\n x: -w / 2,\n y: -h / 2\n }),\n className: name_5,\n name: name_5\n });\n } // to ensure the label is on the top of all the shapes\n\n\n var labelShape = group['shapeMap']['node-label'] || group.find(function (ele) {\n return ele.get('name') === 'node-label';\n });\n\n if (labelShape) {\n labelShape.toFront();\n }\n }\n }\n};\n\nvar singleNodeDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_5__[\"shapeBase\"]), singleNode);\n\n_shape__WEBPACK_IMPORTED_MODULE_4__[\"default\"].registerNode('single-node', singleNodeDef);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGUuanM/YWJkMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNnQjtBQUNKO0FBQ2Q7QUFDSDtBQUNZO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxVQUFVLCtDQUFNOztBQUVoQjtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQSxzSEFBc0gsVUFBVSwrQ0FBTSxrQkFBa0IsNEJBQTRCO0FBQ3BMOztBQUVBLFFBQVEsMERBQU87QUFDZjtBQUNBLEtBQUs7OztBQUdMLFNBQVMsMERBQU87QUFDaEI7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxRQUFRLHdEQUFLO0FBQ2I7QUFDQSwyQkFBMkI7QUFDM0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixnRUFBYTtBQUMvQjtBQUNBO0FBQ0EsV0FBVyxzREFBUSxDQUFDLHNEQUFRO0FBQzVCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHNCQUFzQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDMUM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3pDO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdkM7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHdCQUF3QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDNUM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGtCQUFrQixzREFBUSxHQUFHOztBQUU3QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixzREFBRyxHQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxFQUFFLG9EQUFTOztBQUVuRCw4Q0FBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvbm9kZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc0FycmF5LCBpc05pbCwgbWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBmb3JtYXRQYWRkaW5nIH0gZnJvbSAnLi4vdXRpbC9iYXNlJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IHNoYXBlQmFzZSB9IGZyb20gJy4vc2hhcGVCYXNlJztcbnZhciBzaW5nbGVOb2RlID0ge1xuICBpdGVtVHlwZTogJ25vZGUnLFxuICAvLyDljZXkuKrlm77lvaLnmoTnsbvlnotcbiAgc2hhcGVUeXBlOiAnc2luZ2xlLW5vZGUnLFxuXG4gIC8qKlxuICAgKiDmlofmnKznm7jlr7nlm77lvaLnmoTkvY3nva7vvIzpu5jorqTku6XkuK3lv4PngrlcbiAgICog5L2N572u5YyF5ous77yaIHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodCwgY2VudGVyXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcblxuICAvKipcbiAgICog5paH5pys55u45a+55YGP56e777yM5b2TIGxhYmVsUG9zaXRpb24g5LiN5Li6IGNlbnRlciDml7bmnInmlYhcbiAgICogQHR5cGUge051bWJlcn1cbiAgICovXG4gIG9mZnNldDogR2xvYmFsLm5vZGVMYWJlbC5vZmZzZXQsXG5cbiAgLyoqXG4gICAqIOiOt+WPluiKgueCueWuvemrmFxuICAgKiBAaW50ZXJuYWwg6L+U5Zue6IqC54K555qE5aSn5bCP77yM5LulIFt3aWR0aCwgaGVpZ2h0XSDnmoTmlrnlvI/nu7TmiqRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6IqC54K555qE6YWN572u6aG5XG4gICAqIEByZXR1cm4ge0FycmF5fSDlrr3pq5hcbiAgICovXG4gIGdldFNpemU6IGZ1bmN0aW9uIGdldFNpemUoY2ZnKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIHNpemUgPSAoKF9hID0gdGhpcy5tZXJnZVN0eWxlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2l6ZSkgfHwgY2ZnLnNpemUgfHwgdGhpcy5nZXRPcHRpb25zKHt9KS5zaXplIHx8IEdsb2JhbC5kZWZhdWx0Tm9kZS5zaXplOyAvLyBHbG9iYWwuZGVmYXVsdE5vZGUuc2l6ZTsgLy8gIFxuICAgIC8vIHNpemUg5piv5pWw57uE77yM5L2G6ZW/5bqm5Li6Me+8jOWImeihpemVv+W6puS4ujJcblxuICAgIGlmIChpc0FycmF5KHNpemUpICYmIHNpemUubGVuZ3RoID09PSAxKSB7XG4gICAgICBzaXplID0gW3NpemVbMF0sIHNpemVbMF1dO1xuICAgIH0gLy8gc2l6ZSDkuLrmlbDlrZfvvIzliJnovazmjaLkuLrmlbDnu4RcblxuXG4gICAgaWYgKCFpc0FycmF5KHNpemUpKSB7XG4gICAgICBzaXplID0gW3NpemUsIHNpemVdO1xuICAgIH1cblxuICAgIHJldHVybiBzaXplO1xuICB9LFxuICAvLyDnp4HmnInmlrnms5XvvIzkuI3luIzmnJvmianlsZXnmoToioLngrnlpI3lhpnov5nkuKrmlrnms5VcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcpIHtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjsgLy8g6buY6K6k55qE5L2N572u77yI5pyA5Y+v6IO955qE5oOF5b2i77yJ77yM5omA5Lul5pS+5Zyo5pyA5LiK6Z2iXG5cbiAgICBpZiAobGFiZWxQb3NpdGlvbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIHRleHQ6IGNmZy5sYWJlbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgb2Zmc2V0ID0gbGFiZWxDZmcub2Zmc2V0O1xuXG4gICAgaWYgKGlzTmlsKG9mZnNldCkpIHtcbiAgICAgIC8vIOiAg+iZkSBvZmZzZXQgPSAwIOeahOWcuuaZr++8jOS4jeeUqOeUqCBsYWJlbENmZy5vZmZzZXQgfHwgR2xvYmFsLm5vZGVMYWJlbC5vZmZzZXRcbiAgICAgIG9mZnNldCA9IHRoaXMub2Zmc2V0OyAvLyDkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cbiAgICB9XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBzdHlsZTtcblxuICAgIHN3aXRjaCAobGFiZWxQb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtc2l6ZVsxXSAvIDIgLSBvZmZzZXQsXG4gICAgICAgICAgdGV4dEJhc2VsaW5lOiAnYm90dG9tJyAvLyDmlofmnKzlnKjlm77lvaLnmoTkuIrpnaJcblxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiBzaXplWzFdIC8gMiArIG9mZnNldCxcbiAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICd0b3AnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogLXNpemVbMF0gLyAyIC0gb2Zmc2V0LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiBzaXplWzBdIC8gMiArIG9mZnNldCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9LFxuICBnZXRMYWJlbEJnU3R5bGVCeVBvc2l0aW9uOiBmdW5jdGlvbiBnZXRMYWJlbEJnU3R5bGVCeVBvc2l0aW9uKGxhYmVsLCBsYWJlbENmZykge1xuICAgIHZhciBfYTtcblxuICAgIGlmICghbGFiZWwpIHJldHVybiB7fTtcbiAgICB2YXIgYmFja2dyb3VuZFN0eWxlID0gKF9hID0gbGFiZWxDZmcuc3R5bGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5iYWNrZ3JvdW5kO1xuICAgIGlmICghYmFja2dyb3VuZFN0eWxlKSByZXR1cm4ge307XG4gICAgdmFyIGJib3ggPSBsYWJlbC5nZXRCQm94KCk7XG4gICAgdmFyIHBhZGRpbmcgPSBmb3JtYXRQYWRkaW5nKGJhY2tncm91bmRTdHlsZS5wYWRkaW5nKTtcbiAgICB2YXIgYmFja2dyb3VuZFdpZHRoID0gYmJveC53aWR0aCArIHBhZGRpbmdbMV0gKyBwYWRkaW5nWzNdO1xuICAgIHZhciBiYWNrZ3JvdW5kSGVpZ2h0ID0gYmJveC5oZWlnaHQgKyBwYWRkaW5nWzBdICsgcGFkZGluZ1syXTtcbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe1xuICAgICAgeDogYmJveC5taW5YIC0gcGFkZGluZ1szXSxcbiAgICAgIHk6IGJib3gubWluWSAtIHBhZGRpbmdbMF1cbiAgICB9LCBiYWNrZ3JvdW5kU3R5bGUpLCB7XG4gICAgICB3aWR0aDogYmFja2dyb3VuZFdpZHRoLFxuICAgICAgaGVpZ2h0OiBiYWNrZ3JvdW5kSGVpZ2h0XG4gICAgfSk7XG4gIH0sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc2hhcGVUeXBlID0gdGhpcy5zaGFwZVR5cGU7IC8vIHx8IHRoaXMudHlwZe+8jOmDveW3sue7j+WKoOS6hiBzaGFwZVR5cGVcblxuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHNoYXBlVHlwZSwge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgbmFtZTogJ25vZGUtc2hhcGUnXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ25vZGUtc2hhcGUnXSA9IHNoYXBlO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog5pu05pawbGlua1BvaW50c1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOiKgueCueaVsOaNrumFjee9rumhuVxuICAgKiBAcGFyYW0ge0dyb3VwfSBncm91cCBJdGVt5omA5Zyo55qEZ3JvdXBcbiAgICovXG4gIHVwZGF0ZUxpbmtQb2ludHM6IGZ1bmN0aW9uIHVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBkZWZhdWx0TGlua1BvaW50cyA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHM7XG4gICAgdmFyIG1hcmtMZWZ0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LWxlZnQnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrUmlnaHQgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXJpZ2h0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1RvcCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXRvcCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtCb3R0b20gPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1ib3R0b20nXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1ib3R0b20nO1xuICAgIH0pO1xuICAgIHZhciBjdXJyZW50TGlua1BvaW50cztcblxuICAgIGlmIChtYXJrTGVmdCkge1xuICAgICAgY3VycmVudExpbmtQb2ludHMgPSBtYXJrTGVmdC5hdHRyKCk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtSaWdodCAmJiAhY3VycmVudExpbmtQb2ludHMpIHtcbiAgICAgIGN1cnJlbnRMaW5rUG9pbnRzID0gbWFya1JpZ2h0LmF0dHIoKTtcbiAgICB9XG5cbiAgICBpZiAobWFya1RvcCAmJiAhY3VycmVudExpbmtQb2ludHMpIHtcbiAgICAgIGN1cnJlbnRMaW5rUG9pbnRzID0gbWFya1RvcC5hdHRyKCk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtCb3R0b20gJiYgIWN1cnJlbnRMaW5rUG9pbnRzKSB7XG4gICAgICBjdXJyZW50TGlua1BvaW50cyA9IG1hcmtCb3R0b20uYXR0cigpO1xuICAgIH1cblxuICAgIGlmICghY3VycmVudExpbmtQb2ludHMpIGN1cnJlbnRMaW5rUG9pbnRzID0gZGVmYXVsdExpbmtQb2ludHM7XG4gICAgdmFyIGxpbmtQb2ludHMgPSBtaXgoe30sIGN1cnJlbnRMaW5rUG9pbnRzLCBjZmcubGlua1BvaW50cyk7XG4gICAgdmFyIG1hcmtGaWxsID0gbGlua1BvaW50cy5maWxsLFxuICAgICAgICBtYXJrU3Ryb2tlID0gbGlua1BvaW50cy5zdHJva2UsXG4gICAgICAgIGJvcmRlcldpZHRoID0gbGlua1BvaW50cy5saW5lV2lkdGg7XG4gICAgdmFyIG1hcmtTaXplID0gbGlua1BvaW50cy5zaXplIC8gMjtcbiAgICBpZiAoIW1hcmtTaXplKSBtYXJrU2l6ZSA9IGxpbmtQb2ludHMucjtcblxuICAgIHZhciBfYSA9IGNmZy5saW5rUG9pbnRzID8gY2ZnLmxpbmtQb2ludHMgOiB7XG4gICAgICBsZWZ0OiB1bmRlZmluZWQsXG4gICAgICByaWdodDogdW5kZWZpbmVkLFxuICAgICAgdG9wOiB1bmRlZmluZWQsXG4gICAgICBib3R0b206IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgICAgIGxlZnQgPSBfYS5sZWZ0LFxuICAgICAgICByaWdodCA9IF9hLnJpZ2h0LFxuICAgICAgICB0b3AgPSBfYS50b3AsXG4gICAgICAgIGJvdHRvbSA9IF9hLmJvdHRvbTtcblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcbiAgICB2YXIgc3R5bGVzID0ge1xuICAgICAgcjogbWFya1NpemUsXG4gICAgICBmaWxsOiBtYXJrRmlsbCxcbiAgICAgIHN0cm9rZTogbWFya1N0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogYm9yZGVyV2lkdGhcbiAgICB9O1xuXG4gICAgaWYgKG1hcmtMZWZ0KSB7XG4gICAgICBpZiAoIWxlZnQgJiYgbGVmdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtMZWZ0LnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFya0xlZnQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsZWZ0KSB7XG4gICAgICB2YXIgbmFtZV8xID0gJ2xpbmstcG9pbnQtbGVmdCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzFdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgICAgICB5OiAwXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMSxcbiAgICAgICAgbmFtZTogbmFtZV8xLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobWFya1JpZ2h0KSB7XG4gICAgICBpZiAoIXJpZ2h0ICYmIHJpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya1JpZ2h0LnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXTtcbiAgICAgIH1cblxuICAgICAgbWFya1JpZ2h0LmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICB5OiAwXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIGlmIChyaWdodCkge1xuICAgICAgdmFyIG5hbWVfMiA9ICdsaW5rLXBvaW50LXJpZ2h0JztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfMl0gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB3aWR0aCAvIDIsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiBuYW1lXzIsXG4gICAgICAgIG5hbWU6IG5hbWVfMixcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtUb3ApIHtcbiAgICAgIGlmICghdG9wICYmIHRvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtUb3AucmVtb3ZlKCk7XG4gICAgICAgIGRlbGV0ZSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXTtcbiAgICAgIH1cblxuICAgICAgbWFya1RvcC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IC1oZWlnaHQgLyAyXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIGlmICh0b3ApIHtcbiAgICAgIHZhciBuYW1lXzMgPSAnbGluay1wb2ludC10b3AnO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV8zXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogLWhlaWdodCAvIDJcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV8zLFxuICAgICAgICBuYW1lOiBuYW1lXzMsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChtYXJrQm90dG9tKSB7XG4gICAgICBpZiAoIWJvdHRvbSAmJiBib3R0b20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtYXJrQm90dG9tLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXJrQm90dG9tLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDJcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYm90dG9tKSB7XG4gICAgICB2YXIgbmFtZV80ID0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfNF0gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDJcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV80LFxuICAgICAgICBuYW1lOiBuYW1lXzQsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlU2hhcGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlKGNmZywgaXRlbSwga2V5U2hhcGVTdHlsZSwgaGFzSWNvbiwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIGtleVNoYXBlLmF0dHIoX19hc3NpZ24oe30sIGtleVNoYXBlU3R5bGUpKTtcblxuICAgIGlmICghdW5kZWZpbmVkIHx8ICh1cGRhdGVUeXBlID09PSBudWxsIHx8IHVwZGF0ZVR5cGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVwZGF0ZVR5cGUuaW5jbHVkZXMoJ2xhYmVsJykpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxhYmVsKGNmZywgaXRlbSwgdXBkYXRlVHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKGhhc0ljb24pIHtcbiAgICAgIHRoaXMudXBkYXRlSWNvbihjZmcsIGl0ZW0pO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlSWNvbjogZnVuY3Rpb24gdXBkYXRlSWNvbihjZmcsIGl0ZW0pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgaWNvbiA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmljb247XG5cbiAgICB2YXIgX2EgPSBjZmcuaWNvbiA/IGNmZy5pY29uIDoge1xuICAgICAgc2hvdzogdW5kZWZpbmVkLFxuICAgICAgdGV4dDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAgICAgc2hvdyA9IF9hLnNob3csXG4gICAgICAgIHRleHQgPSBfYS50ZXh0O1xuXG4gICAgdmFyIGljb25TaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmdldCgnbmFtZScpID09PSBcIlwiLmNvbmNhdChfdGhpcy50eXBlLCBcIi1pY29uXCIpO1xuICAgIH0pO1xuXG4gICAgaWYgKGljb25TaGFwZSkge1xuICAgICAgLy8g6Iul5Y6f5YWI5a2Y5ZyoIGljb25cbiAgICAgIGlmIChzaG93IHx8IHNob3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyDoi6XkvKDlhaUgc2hvdzogdHJ1ZSwg5oiW5rKh5pyJ6K6+572u77yM5YiZ5pu05paw5Y6f5pyJ55qEIGljb24g5qC35byPXG4gICAgICAgIHZhciBpY29uQ29uZmlnID0gbWl4KHt9LCBpY29uU2hhcGUuYXR0cigpLCBpY29uKTtcbiAgICAgICAgdmFyIF9iID0gaWNvbkNvbmZpZy53aWR0aCxcbiAgICAgICAgICAgIHcgPSBfYiA9PT0gdm9pZCAwID8gMjAgOiBfYixcbiAgICAgICAgICAgIF9jID0gaWNvbkNvbmZpZy5oZWlnaHQsXG4gICAgICAgICAgICBoID0gX2MgPT09IHZvaWQgMCA/IDIwIDogX2M7XG5cbiAgICAgICAgaWYgKGljb25Db25maWcuZm9udEZhbWlseSA9PT0gJ2ljb25mb250JyB8fCBpY29uQ29uZmlnLmhhc093blByb3BlcnR5KCd0ZXh0JykpIHtcbiAgICAgICAgICB3ID0gMDtcbiAgICAgICAgICBoID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGljb25TaGFwZS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBpY29uQ29uZmlnKSwge1xuICAgICAgICAgIHg6IC13IC8gMixcbiAgICAgICAgICB5OiAtaCAvIDJcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g6Iul5Lyg5YWl5LqGIHNob3c6IGZhbHNlIOWImeWIoOmZpOWOn+WFiOeahCBpY29uXG4gICAgICAgIGljb25TaGFwZS5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNob3cpIHtcbiAgICAgIC8vIOWmguaenOWOn+WFiOS4jeWtmOWcqCBpY29u77yM5L2G5Lyg5YWl5LqGIHNob3c6IHRydWXvvIzliJnmlrDlop4gaWNvblxuICAgICAgdmFyIG5hbWVfNSA9IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKTtcblxuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV81XSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBpY29uKSxcbiAgICAgICAgICBjbGFzc05hbWU6IG5hbWVfNSxcbiAgICAgICAgICBuYW1lOiBuYW1lXzVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdyA9IGljb24ud2lkdGgsXG4gICAgICAgICAgICBoID0gaWNvbi5oZWlnaHQ7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfNV0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBpY29uKSwge1xuICAgICAgICAgICAgeDogLXcgLyAyLFxuICAgICAgICAgICAgeTogLWggLyAyXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiBuYW1lXzUsXG4gICAgICAgICAgbmFtZTogbmFtZV81XG4gICAgICAgIH0pO1xuICAgICAgfSAvLyB0byBlbnN1cmUgdGhlIGxhYmVsIGlzIG9uIHRoZSB0b3Agb2YgYWxsIHRoZSBzaGFwZXNcblxuXG4gICAgICB2YXIgbGFiZWxTaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddWydub2RlLWxhYmVsJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiBlbGUuZ2V0KCduYW1lJykgPT09ICdub2RlLWxhYmVsJztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobGFiZWxTaGFwZSkge1xuICAgICAgICBsYWJlbFNoYXBlLnRvRnJvbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbnZhciBzaW5nbGVOb2RlRGVmID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHNoYXBlQmFzZSksIHNpbmdsZU5vZGUpO1xuXG5TaGFwZS5yZWdpc3Rlck5vZGUoJ3NpbmdsZS1ub2RlJywgc2luZ2xlTm9kZURlZik7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/node.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/nodes/image.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/nodes/image.js ***! \**************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n\n\n\n/**\n * 基本的图片,可以添加文本,默认文本在图片的下面\n */\n\n_shape__WEBPACK_IMPORTED_MODULE_1__[\"default\"].registerNode('image', {\n options: {\n img: 'https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*eD7nT6tmYgAAAAAAAAAAAABkARQnAQ',\n size: 200,\n labelCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n clipCfg: {\n show: false,\n type: 'circle',\n // circle\n r: 50,\n // ellipse\n rx: 50,\n ry: 35,\n // rect\n width: 50,\n height: 35,\n // polygon\n points: [[30, 12], [12, 30], [30, 48], [48, 30]],\n // path\n path: [['M', 25, 25], ['L', 50, 25], ['A', 12.5, 12.5, 0, 1, 1, 50, 50], ['A', 12.5, 12.5, 0, 1, 0, 50, 50], ['L', 25, 75], ['Z']],\n // 坐标\n x: 0,\n y: 0 // clip 的属性样式\n // style: {\n // lineWidth: 1\n // },\n\n }\n },\n shapeType: 'image',\n labelPosition: 'bottom',\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType;\n var style = this.getShapeStyle(cfg);\n delete style.fill;\n var shape = group.addShape(shapeType, {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n this.drawClip(cfg, shape);\n return shape;\n },\n drawClip: function drawClip(cfg, shape) {\n var clip = (this.mergeStyle || this.getOptions(cfg)).clipCfg;\n\n if (!clip.show) {\n return;\n } // 支持 circle、rect、ellipse、Polygon 及自定义 path clip\n\n\n var type = clip.type,\n x = clip.x,\n y = clip.y,\n style = clip.style;\n\n if (type === 'circle') {\n var r = clip.r;\n shape.setClip({\n type: 'circle',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n r: r,\n x: x,\n y: y\n }, style)\n });\n } else if (type === 'rect') {\n var width = clip.width,\n height = clip.height;\n var rectX = x - width / 2;\n var rectY = y - height / 2;\n shape.setClip({\n type: 'rect',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: rectX,\n y: rectY,\n width: width,\n height: height\n }, style)\n });\n } else if (type === 'ellipse') {\n var rx = clip.rx,\n ry = clip.ry;\n shape.setClip({\n type: 'ellipse',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: x,\n y: y,\n rx: rx,\n ry: ry\n }, style)\n });\n } else if (type === 'polygon') {\n var points = clip.points;\n shape.setClip({\n type: 'polygon',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n points: points\n }, style)\n });\n } else if (type === 'path') {\n var path = clip.path;\n shape.setClip({\n type: 'path',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style)\n });\n }\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n defaultStyle = _a.style,\n img = _a.img;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (defaultStyle) {\n width = defaultStyle.width || size[0];\n height = defaultStyle.height || size[1];\n }\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height,\n img: img\n }, defaultStyle);\n\n return style;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item) {\n var group = item.getContainer();\n var shapeClassName = \"\".concat(this.itemType, \"-shape\");\n var shape = group['shapeMap'][shapeClassName] || group.find(function (element) {\n return element.get('className') === shapeClassName;\n }) || item.getKeyShape();\n var shapeStyle = this.getShapeStyle(cfg);\n\n if (shape && !shape.destroyed) {\n shape.attr(shapeStyle);\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2ltYWdlLmpzPzQyZjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSjtBQUNLO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2ltYWdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uLy4uL2dsb2JhbCc7XG4vKipcbiAqIOWfuuacrOeahOWbvueJh++8jOWPr+S7pea3u+WKoOaWh+acrO+8jOm7mOiupOaWh+acrOWcqOWbvueJh+eahOS4i+mdolxuICovXG5cblNoYXBlLnJlZ2lzdGVyTm9kZSgnaW1hZ2UnLCB7XG4gIG9wdGlvbnM6IHtcbiAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL21kbi9ybXNfZjhjNmEwL2FmdHMvaW1nL0EqZUQ3blQ2dG1ZZ0FBQUFBQUFBQUFBQUJrQVJRbkFRJyxcbiAgICBzaXplOiAyMDAsXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGlwQ2ZnOiB7XG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIHR5cGU6ICdjaXJjbGUnLFxuICAgICAgLy8gY2lyY2xlXG4gICAgICByOiA1MCxcbiAgICAgIC8vIGVsbGlwc2VcbiAgICAgIHJ4OiA1MCxcbiAgICAgIHJ5OiAzNSxcbiAgICAgIC8vIHJlY3RcbiAgICAgIHdpZHRoOiA1MCxcbiAgICAgIGhlaWdodDogMzUsXG4gICAgICAvLyBwb2x5Z29uXG4gICAgICBwb2ludHM6IFtbMzAsIDEyXSwgWzEyLCAzMF0sIFszMCwgNDhdLCBbNDgsIDMwXV0sXG4gICAgICAvLyBwYXRoXG4gICAgICBwYXRoOiBbWydNJywgMjUsIDI1XSwgWydMJywgNTAsIDI1XSwgWydBJywgMTIuNSwgMTIuNSwgMCwgMSwgMSwgNTAsIDUwXSwgWydBJywgMTIuNSwgMTIuNSwgMCwgMSwgMCwgNTAsIDUwXSwgWydMJywgMjUsIDc1XSwgWydaJ11dLFxuICAgICAgLy8g5Z2Q5qCHXG4gICAgICB4OiAwLFxuICAgICAgeTogMCAvLyBjbGlwIOeahOWxnuaAp+agt+W8j1xuICAgICAgLy8gc3R5bGU6IHtcbiAgICAgIC8vICAgbGluZVdpZHRoOiAxXG4gICAgICAvLyB9LFxuXG4gICAgfVxuICB9LFxuICBzaGFwZVR5cGU6ICdpbWFnZScsXG4gIGxhYmVsUG9zaXRpb246ICdib3R0b20nLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHNoYXBlVHlwZSA9IHRoaXMuc2hhcGVUeXBlO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIGRlbGV0ZSBzdHlsZS5maWxsO1xuICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHNoYXBlVHlwZSwge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHRoaXMuZHJhd0NsaXAoY2ZnLCBzaGFwZSk7XG4gICAgcmV0dXJuIHNoYXBlO1xuICB9LFxuICBkcmF3Q2xpcDogZnVuY3Rpb24gZHJhd0NsaXAoY2ZnLCBzaGFwZSkge1xuICAgIHZhciBjbGlwID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuY2xpcENmZztcblxuICAgIGlmICghY2xpcC5zaG93KSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDmlK/mjIEgY2lyY2xl44CBcmVjdOOAgWVsbGlwc2XjgIFQb2x5Z29uIOWPiuiHquWumuS5iSBwYXRoIGNsaXBcblxuXG4gICAgdmFyIHR5cGUgPSBjbGlwLnR5cGUsXG4gICAgICAgIHggPSBjbGlwLngsXG4gICAgICAgIHkgPSBjbGlwLnksXG4gICAgICAgIHN0eWxlID0gY2xpcC5zdHlsZTtcblxuICAgIGlmICh0eXBlID09PSAnY2lyY2xlJykge1xuICAgICAgdmFyIHIgPSBjbGlwLnI7XG4gICAgICBzaGFwZS5zZXRDbGlwKHtcbiAgICAgICAgdHlwZTogJ2NpcmNsZScsXG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgcjogcixcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IHlcbiAgICAgICAgfSwgc3R5bGUpXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZWN0Jykge1xuICAgICAgdmFyIHdpZHRoID0gY2xpcC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBjbGlwLmhlaWdodDtcbiAgICAgIHZhciByZWN0WCA9IHggLSB3aWR0aCAvIDI7XG4gICAgICB2YXIgcmVjdFkgPSB5IC0gaGVpZ2h0IC8gMjtcbiAgICAgIHNoYXBlLnNldENsaXAoe1xuICAgICAgICB0eXBlOiAncmVjdCcsXG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgeDogcmVjdFgsXG4gICAgICAgICAgeTogcmVjdFksXG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZWxsaXBzZScpIHtcbiAgICAgIHZhciByeCA9IGNsaXAucngsXG4gICAgICAgICAgcnkgPSBjbGlwLnJ5O1xuICAgICAgc2hhcGUuc2V0Q2xpcCh7XG4gICAgICAgIHR5cGU6ICdlbGxpcHNlJyxcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IHksXG4gICAgICAgICAgcng6IHJ4LFxuICAgICAgICAgIHJ5OiByeVxuICAgICAgICB9LCBzdHlsZSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3BvbHlnb24nKSB7XG4gICAgICB2YXIgcG9pbnRzID0gY2xpcC5wb2ludHM7XG4gICAgICBzaGFwZS5zZXRDbGlwKHtcbiAgICAgICAgdHlwZTogJ3BvbHlnb24nLFxuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHBvaW50czogcG9pbnRzXG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncGF0aCcpIHtcbiAgICAgIHZhciBwYXRoID0gY2xpcC5wYXRoO1xuICAgICAgc2hhcGUuc2V0Q2xpcCh7XG4gICAgICAgIHR5cGU6ICdwYXRoJyxcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICBwYXRoOiBwYXRoXG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgZGVmYXVsdFN0eWxlID0gX2Euc3R5bGUsXG4gICAgICAgIGltZyA9IF9hLmltZztcblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcblxuICAgIGlmIChkZWZhdWx0U3R5bGUpIHtcbiAgICAgIHdpZHRoID0gZGVmYXVsdFN0eWxlLndpZHRoIHx8IHNpemVbMF07XG4gICAgICBoZWlnaHQgPSBkZWZhdWx0U3R5bGUuaGVpZ2h0IHx8IHNpemVbMV07XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlID0gX19hc3NpZ24oe1xuICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICBpbWc6IGltZ1xuICAgIH0sIGRlZmF1bHRTdHlsZSk7XG5cbiAgICByZXR1cm4gc3R5bGU7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgc2hhcGVDbGFzc05hbWUgPSBcIlwiLmNvbmNhdCh0aGlzLml0ZW1UeXBlLCBcIi1zaGFwZVwiKTtcbiAgICB2YXIgc2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVtzaGFwZUNsYXNzTmFtZV0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gc2hhcGVDbGFzc05hbWU7XG4gICAgfSkgfHwgaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG5cbiAgICBpZiAoc2hhcGUgJiYgIXNoYXBlLmRlc3Ryb3llZCkge1xuICAgICAgc2hhcGUuYXR0cihzaGFwZVN0eWxlKTtcbiAgICB9XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/nodes/image.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/nodes/index.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/nodes/index.js ***! \**************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _simple_circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./simple-circle */ \"./node_modules/@antv/g6-core/es/element/nodes/simple-circle.js\");\n/* harmony import */ var _simple_rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./simple-rect */ \"./node_modules/@antv/g6-core/es/element/nodes/simple-rect.js\");\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./image */ \"./node_modules/@antv/g6-core/es/element/nodes/image.js\");\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2luZGV4LmpzPzJjNjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUI7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvbm9kZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vc2ltcGxlLWNpcmNsZSc7XG5pbXBvcnQgJy4vc2ltcGxlLXJlY3QnO1xuaW1wb3J0ICcuL2ltYWdlJzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/nodes/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/nodes/simple-circle.js": /*!**********************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/nodes/simple-circle.js ***! \**********************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n\n\n\n // 带有图标的圆,可用于拓扑图中\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerNode('simple-circle', {\n // 自定义节点时的配置\n options: {\n size: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeStateStyles)\n },\n shapeType: 'simple-circle',\n // 文本位置\n labelPosition: 'center',\n shapeMap: {},\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var name = \"\".concat(this.type, \"-keyShape\");\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: name,\n draggable: true\n });\n group['shapeMap'][name] = keyShape;\n return keyShape;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n r: r\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var size = this.getSize(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n r: size[0] / 2\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, keyShape.attr(), strokeStyle, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1jaXJjbGUuanM/MGQzZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0k7QUFDSDtBQUNMOztBQUU3Qiw4Q0FBSztBQUNMO0FBQ0E7QUFDQSxVQUFVLCtDQUFNO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsWUFBWSwrQ0FBTTtBQUNsQixpQkFBaUIsK0NBQU07QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSwrQ0FBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLDBEQUFPLEdBQUc7QUFDMUI7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQiwwREFBTyxHQUFHO0FBQzFCO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9ub2Rlcy9zaW1wbGUtY2lyY2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7IC8vIOW4puacieWbvuagh+eahOWchu+8jOWPr+eUqOS6juaLk+aJkeWbvuS4rVxuXG5TaGFwZS5yZWdpc3Rlck5vZGUoJ3NpbXBsZS1jaXJjbGUnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLnNpemUsXG4gICAgc3R5bGU6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzaW1wbGUtY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBzaGFwZU1hcDoge30sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgbmFtZSA9IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIik7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXSA9IGtleVNoYXBlO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciByID0gc2l6ZVswXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByOiByXG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTsgLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3IsXG4gICAgICByOiBzaXplWzBdIC8gMlxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/nodes/simple-circle.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/nodes/simple-rect.js": /*!********************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/nodes/simple-rect.js ***! \********************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n\n\n\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerNode('simple-rect', {\n // 自定义节点时的配置\n options: {\n size: [100, 30],\n style: {\n radius: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeStateStyles)\n },\n shapeType: 'simple-rect',\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n return keyShape;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var size = this.getSize(cfg);\n var keyShape = item.get('keyShape');\n\n if (!cfg.size) {\n size[0] = keyShape.attr('width') || defaultStyle.width;\n size[1] = keyShape.attr('height') || defaultStyle.height;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color,\n x: -size[0] / 2,\n y: -size[1] / 2,\n width: size[0],\n height: size[1]\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, false, updateType);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1yZWN0LmpzP2U0YjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNBO0FBQ0M7QUFDTDtBQUM3Qiw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLFlBQVksK0NBQU07QUFDbEIsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1QkFBdUIsZUFBZSxHQUFHLGVBQWU7QUFDeEQ7QUFDQSxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLCtDQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTixnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1yZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi8uLi9nbG9iYWwnO1xuaW1wb3J0IFNoYXBlIGZyb20gJy4uL3NoYXBlJztcblNoYXBlLnJlZ2lzdGVyTm9kZSgnc2ltcGxlLXJlY3QnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogWzEwMCwgMzBdLFxuICAgIHN0eWxlOiB7XG4gICAgICByYWRpdXM6IDAsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5zdHJva2UsXG4gICAgICBmaWxsOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuZmlsbCxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgLy8g5paH5pys5qC35byP6YWN572uXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5ub2RlTGFiZWwuc3R5bGUuZmlsbCxcbiAgICAgICAgZm9udFNpemU6IEdsb2JhbC5ub2RlTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDov57mjqXngrnvvIzpu5jorqTkuLrlt6blj7NcbiAgICAvLyBhbmNob3JQb2ludHM6IFt7IHg6IDAsIHk6IDAuNSB9LCB7IHg6IDEsIHk6IDAuNSB9XVxuICAgIGFuY2hvclBvaW50czogW1swLCAwLjVdLCBbMSwgMC41XV0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzaW1wbGUtcmVjdCcsXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIiksXG4gICAgICBuYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTmoLflvI/vvIzkvpvln7rkuo7or6XoioLngrnoh6rlrprkuYnml7bkvb/nlKhcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICogQHJldHVybiB7T2JqZWN0fSDoioLngrnnmoTmoLflvI9cbiAgICovXG4gIGdldFNoYXBlU3R5bGU6IGZ1bmN0aW9uIGdldFNoYXBlU3R5bGUoY2ZnKSB7XG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLnN0eWxlO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5aaC5p6c6K6+572u5LqGY29sb3LvvIzliJnopobnm5bpu5jorqTnmoRzdHJva2XlsZ7mgKdcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBzdHJva2VTdHlsZSk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzdHlsZS53aWR0aCB8fCBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzdHlsZS5oZWlnaHQgfHwgc2l6ZVsxXTtcblxuICAgIHZhciBzdHlsZXMgPSBfX2Fzc2lnbih7XG4gICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuXG4gICAgaWYgKCFjZmcuc2l6ZSkge1xuICAgICAgc2l6ZVswXSA9IGtleVNoYXBlLmF0dHIoJ3dpZHRoJykgfHwgZGVmYXVsdFN0eWxlLndpZHRoO1xuICAgICAgc2l6ZVsxXSA9IGtleVNoYXBlLmF0dHIoJ2hlaWdodCcpIHx8IGRlZmF1bHRTdHlsZS5oZWlnaHQ7XG4gICAgfSAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG5cblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgeDogLXNpemVbMF0gLyAyLFxuICAgICAgeTogLXNpemVbMV0gLyAyLFxuICAgICAgd2lkdGg6IHNpemVbMF0sXG4gICAgICBoZWlnaHQ6IHNpemVbMV1cbiAgICB9OyAvLyDkuI4gZ2V0U2hhcGVTdHlsZSDkuI3lkIzlnKjkuo7vvIx1cGRhdGUg5pe26ZyA6KaB6I635Y+W5Yiw5b2T5YmN55qEIHN0eWxlIOi/m+ihjOiejeWQiOOAguWNs+aWsOS8oOWFpeeahOmFjee9rumhueS4reayoeaciea2ieWPiueahOWxnuaAp++8jOS/neeVmeW9k+WJjeeahOmFjee9ruOAglxuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIGtleVNoYXBlLmF0dHIoKSwgc3Ryb2tlU3R5bGUpO1xuICAgIHN0eWxlID0gbWl4KHN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgZmFsc2UsIHVwZGF0ZVR5cGUpO1xuICB9XG59LCAnc2luZ2xlLW5vZGUnKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/nodes/simple-rect.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/shape.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/shape.js ***! \********************************************************/ /*! exports provided: ShapeFactoryBase, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ShapeFactoryBase\", function() { return ShapeFactoryBase; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _xml__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./xml */ \"./node_modules/@antv/g6-core/es/element/xml.js\");\n\n\n\nvar cache = {}; // ucfirst 开销过大,进行缓存\n// 首字母大写\n\nfunction ucfirst(str) {\n if (!cache[str]) {\n cache[str] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(str);\n }\n\n return cache[str];\n}\n/**\n * 工厂方法的基类\n * @type Shape.FactoryBase\n */\n\n\nvar ShapeFactoryBase = {\n /**\n * 默认的形状,当没有指定/匹配 shapeType 时,使用默认的\n * @type {String}\n */\n defaultShapeType: 'defaultType',\n\n /**\n * 形状的 className,用于搜索\n * @type {String}\n */\n className: null,\n\n /**\n * 获取绘制 Shape 的工具类,无状态\n * @param {String} type 类型\n * @return {Shape} 工具类\n */\n getShape: function getShape(type) {\n var self = this;\n var shape = self[type] || self[self.defaultShapeType] || self['simple-circle'];\n return shape;\n },\n\n /**\n * 绘制图形\n * @param {String} type 类型\n * @param {Object} cfg 配置项\n * @param {G.Group} group 图形的分组\n * @return {IShape} 图形对象\n */\n draw: function draw(type, cfg, group) {\n var shape = this.getShape(type);\n group['shapeMap'] = {};\n var rst = shape.draw(cfg, group);\n\n if (shape.afterDraw) {\n shape.afterDraw(cfg, group, rst);\n }\n\n return rst;\n },\n\n /**\n * 更新\n * @param {String} type 类型\n * @param {Object} cfg 配置项\n * @param {G6.Item} item 节点、边、分组等\n */\n baseUpdate: function baseUpdate(type, cfg, item, updateType) {\n var _a, _b;\n\n var shape = this.getShape(type); // 防止没定义 update 函数\n\n if (shape.update) {\n // shape.mergeStyle = updateType === 'move' || updateType === 'bbox' ? {} : shape.getOptions?.(cfg);\n shape.mergeStyle = (_a = shape.getOptions) === null || _a === void 0 ? void 0 : _a.call(shape, cfg, updateType);\n (_b = shape.update) === null || _b === void 0 ? void 0 : _b.call(shape, cfg, item, updateType);\n }\n\n if (shape.afterUpdate) {\n shape.afterUpdate(cfg, item);\n }\n },\n\n /**\n * 设置状态\n * @param {String} type 类型\n * @param {String} name 状态名\n * @param {String | Boolean} value 状态值\n * @param {G6.Item} item 节点、边、分组等\n */\n setState: function setState(type, name, value, item) {\n var shape = this.getShape(type); // 调用 shape/shapeBase.ts 中的 setState 方法\n\n shape.setState(name, value, item);\n },\n\n /**\n * 是否允许更新,不重新绘制图形\n * @param {String} type 类型\n * @return {Boolean} 是否允许使用更新\n */\n shouldUpdate: function shouldUpdate(type) {\n var shape = this.getShape(type);\n return !!shape.update;\n },\n getControlPoints: function getControlPoints(type, cfg) {\n var shape = this.getShape(type);\n return shape.getControlPoints(cfg);\n },\n\n /**\n * 获取控制点\n * @param {String} type 节点、边类型\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getAnchorPoints: function getAnchorPoints(type, cfg) {\n var shape = this.getShape(type);\n return shape.getAnchorPoints(cfg);\n }\n};\n/**\n * 元素的框架\n */\n\nvar ShapeFramework = {\n // 默认样式及配置\n options: {},\n\n /**\n * 绘制\n */\n draw: function draw(cfg, group) {\n return this.drawShape(cfg, group);\n },\n\n /**\n * 绘制\n */\n drawShape: function\n /* cfg, group */\n drawShape() {},\n\n /**\n * 绘制完成后的操作,便于用户继承现有的节点、边\n */\n afterDraw: function\n /* cfg, group */\n afterDraw() {},\n // update(cfg, item) // 默认不定义\n afterUpdate: function\n /* cfg, item */\n afterUpdate() {},\n\n /**\n * 设置节点、边状态\n */\n setState: function\n /* name, value, item */\n setState() {},\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getAnchorPoints: function getAnchorPoints(cfg) {\n var defaultAnchorPoints = this.options.anchorPoints;\n var anchorPoints = cfg.anchorPoints || defaultAnchorPoints;\n return anchorPoints;\n }\n /* 如果没定义 update 方法,每次都调用 draw 方法\n update(cfg, item) {\n }\n */\n\n};\n\nvar Shape =\n/** @class */\nfunction () {\n function Shape() {}\n\n Shape.registerFactory = function (factoryType, cfg) {\n var className = ucfirst(factoryType);\n var factoryBase = ShapeFactoryBase;\n\n var shapeFactory = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, factoryBase), cfg);\n\n Shape[className] = shapeFactory;\n shapeFactory.className = className;\n return shapeFactory;\n };\n\n Shape.getFactory = function (factoryType) {\n var className = ucfirst(factoryType);\n return Shape[className];\n };\n\n Shape.registerNode = function (shapeType, nodeDefinition, extendShapeType) {\n var shapeFactory = Shape.Node;\n var shapeObj;\n\n if (typeof nodeDefinition === 'string' || typeof nodeDefinition === 'function') {\n var autoNodeDefinition = Object(_xml__WEBPACK_IMPORTED_MODULE_2__[\"createNodeFromXML\"])(nodeDefinition);\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, shapeFactory.getShape('single-node')), autoNodeDefinition);\n } else if (nodeDefinition.jsx) {\n var jsx = nodeDefinition.jsx;\n var autoNodeDefinition = Object(_xml__WEBPACK_IMPORTED_MODULE_2__[\"createNodeFromXML\"])(jsx);\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, shapeFactory.getShape('single-node')), autoNodeDefinition), nodeDefinition);\n } else {\n shapeFactory.getShape(extendShapeType);\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), nodeDefinition);\n }\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'node';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n Shape.registerEdge = function (shapeType, edgeDefinition, extendShapeType) {\n var shapeFactory = Shape.Edge;\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n\n var shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), edgeDefinition);\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'edge';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n Shape.registerCombo = function (shapeType, comboDefinition, extendShapeType) {\n var shapeFactory = Shape.Combo;\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n\n var shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), comboDefinition);\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'combo';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n return Shape;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Shape); // 注册 Node 的工厂方法\n\nShape.registerFactory('node', {\n defaultShapeType: 'circle'\n}); // 注册 Edge 的工厂方法\n\nShape.registerFactory('edge', {\n defaultShapeType: 'line'\n}); // 注册 Combo 的工厂方法\n\nShape.registerFactory('combo', {\n defaultShapeType: 'circle'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3NoYXBlLmpzPzE5MjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNPO0FBQ0U7QUFDMUMsZUFBZTtBQUNmOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsNkRBQVU7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxvQ0FBb0M7O0FBRXBDO0FBQ0EsK0VBQStFO0FBQy9FO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsaUJBQWlCO0FBQzlCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsT0FBTztBQUNyQixjQUFjLFdBQVc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTs7QUFFZjtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsV0FBVztBQUN6QjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxXQUFXO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHOztBQUUzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0IsOERBQWlCO0FBQ2hELGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckMsS0FBSztBQUNMO0FBQ0EsK0JBQStCLDhEQUFpQjtBQUNoRCxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDOUMsS0FBSztBQUNMO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLG9FQUFLLEVBQUM7O0FBRXJCO0FBQ0E7QUFDQSxDQUFDLEVBQUU7O0FBRUg7QUFDQTtBQUNBLENBQUMsRUFBRTs7QUFFSDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvc2hhcGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgdXBwZXJGaXJzdCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlTm9kZUZyb21YTUwgfSBmcm9tICcuL3htbCc7XG52YXIgY2FjaGUgPSB7fTsgLy8gdWNmaXJzdCDlvIDplIDov4flpKfvvIzov5vooYznvJPlrZhcbi8vIOmmluWtl+avjeWkp+WGmVxuXG5mdW5jdGlvbiB1Y2ZpcnN0KHN0cikge1xuICBpZiAoIWNhY2hlW3N0cl0pIHtcbiAgICBjYWNoZVtzdHJdID0gdXBwZXJGaXJzdChzdHIpO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlW3N0cl07XG59XG4vKipcbiAqIOW3peWOguaWueazleeahOWfuuexu1xuICogQHR5cGUgU2hhcGUuRmFjdG9yeUJhc2VcbiAqL1xuXG5cbmV4cG9ydCB2YXIgU2hhcGVGYWN0b3J5QmFzZSA9IHtcbiAgLyoqXG4gICAqIOm7mOiupOeahOW9oueKtu+8jOW9k+ayoeacieaMh+Wumi/ljLnphY0gc2hhcGVUeXBlIOaXtu+8jOS9v+eUqOm7mOiupOeahFxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgZGVmYXVsdFNoYXBlVHlwZTogJ2RlZmF1bHRUeXBlJyxcblxuICAvKipcbiAgICog5b2i54q255qEIGNsYXNzTmFtZe+8jOeUqOS6juaQnOe0olxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgY2xhc3NOYW1lOiBudWxsLFxuXG4gIC8qKlxuICAgKiDojrflj5bnu5jliLYgU2hhcGUg55qE5bel5YW357G777yM5peg54q25oCBXG4gICAqIEBwYXJhbSAge1N0cmluZ30gdHlwZSDnsbvlnotcbiAgICogQHJldHVybiB7U2hhcGV9IOW3peWFt+exu1xuICAgKi9cbiAgZ2V0U2hhcGU6IGZ1bmN0aW9uIGdldFNoYXBlKHR5cGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHNoYXBlID0gc2VsZlt0eXBlXSB8fCBzZWxmW3NlbGYuZGVmYXVsdFNoYXBlVHlwZV0gfHwgc2VsZlsnc2ltcGxlLWNpcmNsZSddO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi25Zu+5b2iXG4gICAqIEBwYXJhbSAge1N0cmluZ30gdHlwZSAg57G75Z6LXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOmFjee9rumhuVxuICAgKiBAcGFyYW0gIHtHLkdyb3VwfSBncm91cCDlm77lvaLnmoTliIbnu4RcbiAgICogQHJldHVybiB7SVNoYXBlfSDlm77lvaLlr7nosaFcbiAgICovXG4gIGRyYXc6IGZ1bmN0aW9uIGRyYXcodHlwZSwgY2ZnLCBncm91cCkge1xuICAgIHZhciBzaGFwZSA9IHRoaXMuZ2V0U2hhcGUodHlwZSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ10gPSB7fTtcbiAgICB2YXIgcnN0ID0gc2hhcGUuZHJhdyhjZmcsIGdyb3VwKTtcblxuICAgIGlmIChzaGFwZS5hZnRlckRyYXcpIHtcbiAgICAgIHNoYXBlLmFmdGVyRHJhdyhjZmcsIGdyb3VwLCByc3QpO1xuICAgIH1cblxuICAgIHJldHVybiByc3Q7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsFxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHR5cGUgIOexu+Wei1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDphY3nva7poblcbiAgICogQHBhcmFtICB7RzYuSXRlbX0gaXRlbSDoioLngrnjgIHovrnjgIHliIbnu4TnrYlcbiAgICovXG4gIGJhc2VVcGRhdGU6IGZ1bmN0aW9uIGJhc2VVcGRhdGUodHlwZSwgY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIF9hLCBfYjtcblxuICAgIHZhciBzaGFwZSA9IHRoaXMuZ2V0U2hhcGUodHlwZSk7IC8vIOmYsuatouayoeWumuS5iSB1cGRhdGUg5Ye95pWwXG5cbiAgICBpZiAoc2hhcGUudXBkYXRlKSB7XG4gICAgICAvLyBzaGFwZS5tZXJnZVN0eWxlID0gdXBkYXRlVHlwZSA9PT0gJ21vdmUnIHx8IHVwZGF0ZVR5cGUgPT09ICdiYm94JyA/IHt9IDogc2hhcGUuZ2V0T3B0aW9ucz8uKGNmZyk7XG4gICAgICBzaGFwZS5tZXJnZVN0eWxlID0gKF9hID0gc2hhcGUuZ2V0T3B0aW9ucykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc2hhcGUsIGNmZywgdXBkYXRlVHlwZSk7XG4gICAgICAoX2IgPSBzaGFwZS51cGRhdGUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKHNoYXBlLCBjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpO1xuICAgIH1cblxuICAgIGlmIChzaGFwZS5hZnRlclVwZGF0ZSkge1xuICAgICAgc2hhcGUuYWZ0ZXJVcGRhdGUoY2ZnLCBpdGVtKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiuvue9rueKtuaAgVxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSAg57G75Z6LXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lICDnirbmgIHlkI1cbiAgICogQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSB2YWx1ZSDnirbmgIHlgLxcbiAgICogQHBhcmFtIHtHNi5JdGVtfSBpdGVtICDoioLngrnjgIHovrnjgIHliIbnu4TnrYlcbiAgICovXG4gIHNldFN0YXRlOiBmdW5jdGlvbiBzZXRTdGF0ZSh0eXBlLCBuYW1lLCB2YWx1ZSwgaXRlbSkge1xuICAgIHZhciBzaGFwZSA9IHRoaXMuZ2V0U2hhcGUodHlwZSk7IC8vIOiwg+eUqCBzaGFwZS9zaGFwZUJhc2UudHMg5Lit55qEIHNldFN0YXRlIOaWueazlVxuXG4gICAgc2hhcGUuc2V0U3RhdGUobmFtZSwgdmFsdWUsIGl0ZW0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiDmmK/lkKblhYHorrjmm7TmlrDvvIzkuI3ph43mlrDnu5jliLblm77lvaJcbiAgICogQHBhcmFtICB7U3RyaW5nfSB0eXBlIOexu+Wei1xuICAgKiBAcmV0dXJuIHtCb29sZWFufSDmmK/lkKblhYHorrjkvb/nlKjmm7TmlrBcbiAgICovXG4gIHNob3VsZFVwZGF0ZTogZnVuY3Rpb24gc2hvdWxkVXBkYXRlKHR5cGUpIHtcbiAgICB2YXIgc2hhcGUgPSB0aGlzLmdldFNoYXBlKHR5cGUpO1xuICAgIHJldHVybiAhIXNoYXBlLnVwZGF0ZTtcbiAgfSxcbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyh0eXBlLCBjZmcpIHtcbiAgICB2YXIgc2hhcGUgPSB0aGlzLmdldFNoYXBlKHR5cGUpO1xuICAgIHJldHVybiBzaGFwZS5nZXRDb250cm9sUG9pbnRzKGNmZyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaOp+WItueCuVxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSDoioLngrnjgIHovrnnsbvlnotcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6IqC54K544CB6L6555qE6YWN572u6aG5XG4gICAqIEByZXR1cm4ge0FycmF5fG51bGx9IOaOp+WItueCueeahOaVsOe7hCzlpoLmnpzkuLogbnVsbO+8jOWImeayoeacieaOp+WItueCuVxuICAgKi9cbiAgZ2V0QW5jaG9yUG9pbnRzOiBmdW5jdGlvbiBnZXRBbmNob3JQb2ludHModHlwZSwgY2ZnKSB7XG4gICAgdmFyIHNoYXBlID0gdGhpcy5nZXRTaGFwZSh0eXBlKTtcbiAgICByZXR1cm4gc2hhcGUuZ2V0QW5jaG9yUG9pbnRzKGNmZyk7XG4gIH1cbn07XG4vKipcbiAqIOWFg+e0oOeahOahhuaetlxuICovXG5cbnZhciBTaGFwZUZyYW1ld29yayA9IHtcbiAgLy8g6buY6K6k5qC35byP5Y+K6YWN572uXG4gIG9wdGlvbnM6IHt9LFxuXG4gIC8qKlxuICAgKiDnu5jliLZcbiAgICovXG4gIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY2ZnLCBncm91cCkge1xuICAgIHJldHVybiB0aGlzLmRyYXdTaGFwZShjZmcsIGdyb3VwKTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi2XG4gICAqL1xuICBkcmF3U2hhcGU6IGZ1bmN0aW9uXG4gICAgLyogY2ZnLCBncm91cCAqL1xuICBkcmF3U2hhcGUoKSB7fSxcblxuICAvKipcbiAgICog57uY5Yi25a6M5oiQ5ZCO55qE5pON5L2c77yM5L6/5LqO55So5oi357un5om/546w5pyJ55qE6IqC54K544CB6L65XG4gICAqL1xuICBhZnRlckRyYXc6IGZ1bmN0aW9uXG4gICAgLyogY2ZnLCBncm91cCAqL1xuICBhZnRlckRyYXcoKSB7fSxcbiAgLy8gdXBkYXRlKGNmZywgaXRlbSkgLy8g6buY6K6k5LiN5a6a5LmJXG4gIGFmdGVyVXBkYXRlOiBmdW5jdGlvblxuICAgIC8qIGNmZywgaXRlbSAqL1xuICBhZnRlclVwZGF0ZSgpIHt9LFxuXG4gIC8qKlxuICAgKiDorr7nva7oioLngrnjgIHovrnnirbmgIFcbiAgICovXG4gIHNldFN0YXRlOiBmdW5jdGlvblxuICAgIC8qIG5hbWUsIHZhbHVlLCBpdGVtICovXG4gIHNldFN0YXRlKCkge30sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaOp+WItueCuVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnjgIHovrnnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl8bnVsbH0g5o6n5Yi254K555qE5pWw57uELOWmguaenOS4uiBudWxs77yM5YiZ5rKh5pyJ5o6n5Yi254K5XG4gICAqL1xuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHJldHVybiBjZmcuY29udHJvbFBvaW50cztcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W5o6n5Yi254K5XG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOiKgueCueOAgei+ueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtBcnJheXxudWxsfSDmjqfliLbngrnnmoTmlbDnu4Qs5aaC5p6c5Li6IG51bGzvvIzliJnmsqHmnInmjqfliLbngrlcbiAgICovXG4gIGdldEFuY2hvclBvaW50czogZnVuY3Rpb24gZ2V0QW5jaG9yUG9pbnRzKGNmZykge1xuICAgIHZhciBkZWZhdWx0QW5jaG9yUG9pbnRzID0gdGhpcy5vcHRpb25zLmFuY2hvclBvaW50cztcbiAgICB2YXIgYW5jaG9yUG9pbnRzID0gY2ZnLmFuY2hvclBvaW50cyB8fCBkZWZhdWx0QW5jaG9yUG9pbnRzO1xuICAgIHJldHVybiBhbmNob3JQb2ludHM7XG4gIH1cbiAgLyog5aaC5p6c5rKh5a6a5LmJIHVwZGF0ZSDmlrnms5XvvIzmr4/mrKHpg73osIPnlKggZHJhdyDmlrnms5VcbiAgdXBkYXRlKGNmZywgaXRlbSkge1xuICAgICB9XG4gICovXG5cbn07XG5cbnZhciBTaGFwZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNoYXBlKCkge31cblxuICBTaGFwZS5yZWdpc3RlckZhY3RvcnkgPSBmdW5jdGlvbiAoZmFjdG9yeVR5cGUsIGNmZykge1xuICAgIHZhciBjbGFzc05hbWUgPSB1Y2ZpcnN0KGZhY3RvcnlUeXBlKTtcbiAgICB2YXIgZmFjdG9yeUJhc2UgPSBTaGFwZUZhY3RvcnlCYXNlO1xuXG4gICAgdmFyIHNoYXBlRmFjdG9yeSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBmYWN0b3J5QmFzZSksIGNmZyk7XG5cbiAgICBTaGFwZVtjbGFzc05hbWVdID0gc2hhcGVGYWN0b3J5O1xuICAgIHNoYXBlRmFjdG9yeS5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgcmV0dXJuIHNoYXBlRmFjdG9yeTtcbiAgfTtcblxuICBTaGFwZS5nZXRGYWN0b3J5ID0gZnVuY3Rpb24gKGZhY3RvcnlUeXBlKSB7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHVjZmlyc3QoZmFjdG9yeVR5cGUpO1xuICAgIHJldHVybiBTaGFwZVtjbGFzc05hbWVdO1xuICB9O1xuXG4gIFNoYXBlLnJlZ2lzdGVyTm9kZSA9IGZ1bmN0aW9uIChzaGFwZVR5cGUsIG5vZGVEZWZpbml0aW9uLCBleHRlbmRTaGFwZVR5cGUpIHtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gU2hhcGUuTm9kZTtcbiAgICB2YXIgc2hhcGVPYmo7XG5cbiAgICBpZiAodHlwZW9mIG5vZGVEZWZpbml0aW9uID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygbm9kZURlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciBhdXRvTm9kZURlZmluaXRpb24gPSBjcmVhdGVOb2RlRnJvbVhNTChub2RlRGVmaW5pdGlvbik7XG4gICAgICBzaGFwZU9iaiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzaGFwZUZhY3RvcnkuZ2V0U2hhcGUoJ3NpbmdsZS1ub2RlJykpLCBhdXRvTm9kZURlZmluaXRpb24pO1xuICAgIH0gZWxzZSBpZiAobm9kZURlZmluaXRpb24uanN4KSB7XG4gICAgICB2YXIganN4ID0gbm9kZURlZmluaXRpb24uanN4O1xuICAgICAgdmFyIGF1dG9Ob2RlRGVmaW5pdGlvbiA9IGNyZWF0ZU5vZGVGcm9tWE1MKGpzeCk7XG4gICAgICBzaGFwZU9iaiA9IF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzaGFwZUZhY3RvcnkuZ2V0U2hhcGUoJ3NpbmdsZS1ub2RlJykpLCBhdXRvTm9kZURlZmluaXRpb24pLCBub2RlRGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNoYXBlRmFjdG9yeS5nZXRTaGFwZShleHRlbmRTaGFwZVR5cGUpO1xuICAgICAgdmFyIGV4dGVuZFNoYXBlID0gZXh0ZW5kU2hhcGVUeXBlID8gc2hhcGVGYWN0b3J5LmdldFNoYXBlKGV4dGVuZFNoYXBlVHlwZSkgOiBTaGFwZUZyYW1ld29yaztcbiAgICAgIHNoYXBlT2JqID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dGVuZFNoYXBlKSwgbm9kZURlZmluaXRpb24pO1xuICAgIH1cblxuICAgIHNoYXBlT2JqLnR5cGUgPSBzaGFwZVR5cGU7XG4gICAgc2hhcGVPYmouaXRlbVR5cGUgPSAnbm9kZSc7XG4gICAgc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0gPSBzaGFwZU9iajtcbiAgICByZXR1cm4gc2hhcGVPYmo7XG4gIH07XG5cbiAgU2hhcGUucmVnaXN0ZXJFZGdlID0gZnVuY3Rpb24gKHNoYXBlVHlwZSwgZWRnZURlZmluaXRpb24sIGV4dGVuZFNoYXBlVHlwZSkge1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBTaGFwZS5FZGdlO1xuICAgIHZhciBleHRlbmRTaGFwZSA9IGV4dGVuZFNoYXBlVHlwZSA/IHNoYXBlRmFjdG9yeS5nZXRTaGFwZShleHRlbmRTaGFwZVR5cGUpIDogU2hhcGVGcmFtZXdvcms7XG5cbiAgICB2YXIgc2hhcGVPYmogPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0ZW5kU2hhcGUpLCBlZGdlRGVmaW5pdGlvbik7XG5cbiAgICBzaGFwZU9iai50eXBlID0gc2hhcGVUeXBlO1xuICAgIHNoYXBlT2JqLml0ZW1UeXBlID0gJ2VkZ2UnO1xuICAgIHNoYXBlRmFjdG9yeVtzaGFwZVR5cGVdID0gc2hhcGVPYmo7XG4gICAgcmV0dXJuIHNoYXBlT2JqO1xuICB9O1xuXG4gIFNoYXBlLnJlZ2lzdGVyQ29tYm8gPSBmdW5jdGlvbiAoc2hhcGVUeXBlLCBjb21ib0RlZmluaXRpb24sIGV4dGVuZFNoYXBlVHlwZSkge1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBTaGFwZS5Db21ibztcbiAgICB2YXIgZXh0ZW5kU2hhcGUgPSBleHRlbmRTaGFwZVR5cGUgPyBzaGFwZUZhY3RvcnkuZ2V0U2hhcGUoZXh0ZW5kU2hhcGVUeXBlKSA6IFNoYXBlRnJhbWV3b3JrO1xuXG4gICAgdmFyIHNoYXBlT2JqID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dGVuZFNoYXBlKSwgY29tYm9EZWZpbml0aW9uKTtcblxuICAgIHNoYXBlT2JqLnR5cGUgPSBzaGFwZVR5cGU7XG4gICAgc2hhcGVPYmouaXRlbVR5cGUgPSAnY29tYm8nO1xuICAgIHNoYXBlRmFjdG9yeVtzaGFwZVR5cGVdID0gc2hhcGVPYmo7XG4gICAgcmV0dXJuIHNoYXBlT2JqO1xuICB9O1xuXG4gIHJldHVybiBTaGFwZTtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgU2hhcGU7IC8vIOazqOWGjCBOb2RlIOeahOW3peWOguaWueazlVxuXG5TaGFwZS5yZWdpc3RlckZhY3RvcnkoJ25vZGUnLCB7XG4gIGRlZmF1bHRTaGFwZVR5cGU6ICdjaXJjbGUnXG59KTsgLy8g5rOo5YaMIEVkZ2Ug55qE5bel5Y6C5pa55rOVXG5cblNoYXBlLnJlZ2lzdGVyRmFjdG9yeSgnZWRnZScsIHtcbiAgZGVmYXVsdFNoYXBlVHlwZTogJ2xpbmUnXG59KTsgLy8g5rOo5YaMIENvbWJvIOeahOW3peWOguaWueazlVxuXG5TaGFwZS5yZWdpc3RlckZhY3RvcnkoJ2NvbWJvJywge1xuICBkZWZhdWx0U2hhcGVUeXBlOiAnY2lyY2xlJ1xufSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/shape.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/shapeBase.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/shapeBase.js ***! \************************************************************/ /*! exports provided: CLS_LABEL_BG_SUFFIX, shapeBase */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CLS_LABEL_BG_SUFFIX\", function() { return CLS_LABEL_BG_SUFFIX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shapeBase\", function() { return shapeBase; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar CLS_SHAPE_SUFFIX = '-shape';\nvar CLS_LABEL_SUFFIX = '-label';\nvar ARROWS = ['startArrow', 'endArrow'];\nvar SHAPE_DEFAULT_ATTRS = {\n lineWidth: 1,\n stroke: undefined,\n fill: undefined,\n lineAppendWidth: 1,\n opacity: undefined,\n strokeOpacity: undefined,\n fillOpacity: undefined,\n x: 0,\n y: 0,\n r: 10,\n width: 20,\n height: 20,\n shadowColor: undefined,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\nvar PATH_SHAPE_DEFAULT_ATTRS = {\n lineWidth: 1,\n stroke: '#000',\n lineDash: undefined,\n startArrow: false,\n endArrow: false,\n opacity: undefined,\n strokeOpacity: undefined,\n fillOpacity: undefined,\n shadowColor: undefined,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\nvar SHAPES_DEFAULT_ATTRS = {\n edge: PATH_SHAPE_DEFAULT_ATTRS,\n node: SHAPE_DEFAULT_ATTRS,\n combo: SHAPE_DEFAULT_ATTRS\n};\nvar CLS_LABEL_BG_SUFFIX = '-label-bg'; // 单个 shape 带有一个 label,共用这段代码\n\nvar shapeBase = {\n // 默认样式及配置\n options: {\n labelCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].windowFontFamily\n }\n },\n descriptionCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].windowFontFamily\n }\n }\n },\n itemType: '',\n\n /**\n * 形状的类型,例如 circle,ellipse,polyline...\n */\n type: '',\n getCustomConfig: function getCustomConfig(cfg) {\n return {};\n },\n getOptions: function getOptions(cfg, updateType) {\n if (updateType === 'move' || (updateType === null || updateType === void 0 ? void 0 : updateType.includes('bbox'))) {\n return {};\n }\n\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])({}, this.options, this.getCustomConfig(cfg) || {}, cfg);\n },\n\n /**\n * 绘制节点/边,包含文本\n * @override\n * @param {Object} cfg 节点的配置项\n * @param {G.Group} group 节点的容器\n * @return {IShape} 绘制的图形\n */\n draw: function draw(cfg, group) {\n group['shapeMap'] = {};\n this.mergeStyle = this.getOptions(cfg);\n var shape = this.drawShape(cfg, group);\n shape.set('className', this.itemType + CLS_SHAPE_SUFFIX);\n group['shapeMap'][this.itemType + CLS_SHAPE_SUFFIX] = shape;\n\n if (cfg.label) {\n var label = this.drawLabel(cfg, group);\n label.set('className', this.itemType + CLS_LABEL_SUFFIX);\n group['shapeMap'][this.itemType + CLS_LABEL_SUFFIX] = label;\n }\n\n return shape;\n },\n\n /**\n * 绘制完成后的操作,便于用户继承现有的节点、边\n * @param cfg\n * @param group\n * @param keyShape\n */\n afterDraw: function afterDraw(cfg, group, keyShape) {},\n drawShape: function drawShape(cfg, group) {\n return null;\n },\n drawLabel: function drawLabel(cfg, group) {\n var defaultLabelCfg = (this.mergeStyle || this.getOptions(cfg) || {}).labelCfg; // image的情况下有可能为null\n\n var labelCfg = defaultLabelCfg || {};\n var labelStyle = this.getLabelStyle(cfg, labelCfg, group);\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate;\n var label = group.addShape('text', {\n attrs: labelStyle,\n draggable: true,\n className: 'text-shape',\n name: 'text-shape',\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n\n if (!isNaN(rotate) && rotate !== '') {\n var labelBBox = label.getBBox();\n var labelMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n if (labelStyle.rotateCenter) {\n switch (labelStyle.rotateCenter) {\n case 'center':\n labelMatrix = transform(labelMatrix, [['t', -labelBBox.width / 2, -labelBBox.height / 2], ['r', rotate], ['t', labelBBox.width / 2, labelBBox.height / 2]]);\n break;\n\n case 'lefttop':\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y], ['r', rotate], ['t', labelStyle.x, labelStyle.y]]);\n break;\n\n case 'leftcenter':\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y - labelBBox.height / 2], ['r', rotate], ['t', labelStyle.x, labelStyle.y + labelBBox.height / 2]]);\n break;\n\n default:\n labelMatrix = transform(labelMatrix, [['t', -labelBBox.width / 2, -labelBBox.height / 2], ['r', rotate], ['t', labelBBox.width / 2, labelBBox.height / 2]]);\n break;\n }\n } else {\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y - labelBBox.height / 2], ['r', rotate], ['t', labelStyle.x, labelStyle.y + labelBBox.height / 2]]);\n }\n\n label.setMatrix(labelMatrix);\n }\n\n if (labelStyle.background) {\n var rect = this.drawLabelBg(cfg, group, label);\n var labelBgClassname = this.itemType + CLS_LABEL_BG_SUFFIX;\n rect.set('classname', labelBgClassname);\n group['shapeMap'][labelBgClassname] = rect;\n label.toFront();\n }\n\n return label;\n },\n drawLabelBg: function drawLabelBg(cfg, group, label) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var style = this.getLabelBgStyleByPosition(label, labelCfg);\n var rect = group.addShape('rect', {\n name: 'text-bg-shape',\n attrs: style,\n labelRelated: true\n });\n group['shapeMap']['text-bg-shape'] = rect;\n return rect;\n },\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group) {\n return {\n text: cfg.label\n };\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, labelCfg) {\n return {};\n },\n\n /**\n * 获取文本的配置项\n * @param cfg 节点的配置项\n * @param labelCfg 文本的配置项\n * @param group 父容器,label 的定位可能与图形相关\n */\n getLabelStyle: function getLabelStyle(cfg, labelCfg, group) {\n var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group);\n var attrName = \"\".concat(this.itemType, \"Label\"); // 取 nodeLabel,edgeLabel 的配置项\n\n var defaultStyle = _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"][attrName] ? _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"][attrName].style : null;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, defaultStyle), calculateStyle), labelCfg.style);\n },\n\n /**\n * 获取图形的配置项\n * @param cfg\n */\n getShapeStyle: function getShapeStyle(cfg) {\n return cfg.style;\n },\n\n /**\n * 更新节点,包含文本\n * @override\n * @param {Object} cfg 节点/边的配置项\n * @param {G6.Item} item 节点/边\n */\n update: function update(cfg, item, updateType) {\n this.updateShapeStyle(cfg, item, updateType);\n this.updateLabel(cfg, item, updateType);\n },\n updateShapeStyle: function updateShapeStyle(cfg, item, updateType) {\n var _a;\n\n var group = item.getContainer();\n var shape = item.getKeyShape();\n var shapeStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, shape.attr(), cfg.style);\n\n var _loop_1 = function _loop_1(key) {\n var _b;\n\n var style = shapeStyle[key];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style)) {\n // 更新图元素样式,支持更新子元素\n var subShape = ((_a = group['shapeMap']) === null || _a === void 0 ? void 0 : _a[key]) || group.find(function (element) {\n return element.get('name') === key;\n });\n subShape === null || subShape === void 0 ? void 0 : subShape.attr(style);\n } else {\n shape.attr((_b = {}, _b[key] = style, _b));\n }\n };\n\n for (var key in shapeStyle) {\n _loop_1(key);\n }\n },\n updateLabel: function updateLabel(cfg, item, updateType) {\n var _a, _b; // 防止 cfg.label = \"\" 的情况\n\n\n if (cfg.label || cfg.label === '') {\n var group = item.getContainer();\n var _c = (this.mergeStyle || this.getOptions({}, updateType) || {}).labelCfg,\n labelCfg = _c === void 0 ? {} : _c;\n var labelClassName_1 = this.itemType + CLS_LABEL_SUFFIX;\n var label = group['shapeMap'][labelClassName_1] || group.find(function (ele) {\n return ele.get('className') === labelClassName_1;\n });\n var labelBgClassname_1 = this.itemType + CLS_LABEL_BG_SUFFIX;\n var labelBg = group['shapeMap'][labelBgClassname_1] || group.find(function (ele) {\n return ele.get('className') === labelBgClassname_1;\n }); // 若传入的新配置中有 label,(用户没传入但原先有 label,label 也会有值)\n\n if (!label) {\n // 若原先不存在 label,则绘制一个新的 label\n var newLabel = this.drawLabel(cfg, group);\n newLabel.set('className', labelClassName_1);\n group['shapeMap'][labelClassName_1] = newLabel;\n } else {\n // 若原先存在 label,则更新样式。与 getLabelStyle 不同在于这里需要融合当前 label 的样式\n // 融合 style 以外的属性:position, offset, ...\n if (!updateType || updateType === 'bbox|label' || this.itemType === 'edge' && updateType !== 'style') {\n labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(labelCfg, cfg.labelCfg);\n } // 获取位置信息\n\n\n var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group); // 取 nodeLabel,edgeLabel 的配置项\n\n var cfgStyle = (_a = cfg.labelCfg) === null || _a === void 0 ? void 0 : _a.style; // const cfgBgStyle = labelCfg.style?.background;\n // 需要融合当前\b label 的样式 label.attr()。不再需要全局/默认样式,因为已经应用在当前的 label 上\n\n var labelStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, calculateStyle), cfgStyle);\n\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate; // 计算 label 的旋转矩阵\n\n if (!isNaN(rotate) && rotate !== '') {\n // if G 4.x define the rotateAtStart, use it directly instead of using the following codes\n var rotateMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n rotateMatrix = transform(rotateMatrix, [['t', -labelStyle.x, -labelStyle.y], ['r', rotate], ['t', labelStyle.x, labelStyle.y]]);\n labelStyle.matrix = rotateMatrix;\n label.attr(labelStyle);\n } else {\n if (((_b = label.getMatrix()) === null || _b === void 0 ? void 0 : _b[4]) !== 1) {\n label.resetMatrix();\n }\n\n label.attr(labelStyle);\n }\n\n if (!labelBg) {\n if (labelStyle.background) {\n labelBg = this.drawLabelBg(cfg, group, label);\n labelBg.set('classname', labelBgClassname_1);\n group['shapeMap'][labelBgClassname_1] = labelBg;\n label.toFront();\n }\n } else if (labelStyle.background) {\n var calculateBgStyle = this.getLabelBgStyleByPosition(label, labelCfg);\n labelBg.attr(calculateBgStyle);\n } else {\n group.removeChild(labelBg);\n }\n }\n }\n },\n // update(cfg, item) // 默认不定义\n afterUpdate: function afterUpdate(cfg, item) {},\n\n /**\n * 设置节点的状态,主要是交互状态,业务状态请在 draw 方法中实现\n * 单图形的节点仅考虑 selected、active 状态,有其他状态需求的用户自己复写这个方法\n * @override\n * @param {String} name 状态名称\n * @param {String | Boolean} value 状态值\n * @param {G6.Item} item 节点\n */\n setState: function setState(name, value, item) {\n var _a, _b;\n\n var _c;\n\n var shape = item.get('keyShape');\n if (!shape || shape.destroyed) return;\n var type = item.getType();\n var stateName = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isBoolean\"])(value) ? name : \"\".concat(name, \":\").concat(value);\n var shapeStateStyle = this.getStateStyle(stateName, item);\n var itemStateStyle = item.getStateStyle(stateName); // const originStyle = item.getOriginStyle();\n // 不允许设置一个不存在的状态\n\n if (!itemStateStyle && !shapeStateStyle) {\n return;\n } // 要设置或取消的状态的样式\n // 当没有 state 状态时,默认使用 model.stateStyles 中的样式\n\n\n var styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, itemStateStyle || shapeStateStyle);\n var group = item.getContainer(); // 从图元素现有的样式中删除本次要取消的 states 中存在的属性值。使用对象检索更快\n\n var keptAttrs = {\n x: 1,\n y: 1,\n cx: 1,\n cy: 1,\n matrix: 1\n };\n\n if (type === 'combo') {\n keptAttrs.r = 1;\n keptAttrs.width = 1;\n keptAttrs.height = 1;\n }\n\n if (value) {\n var _loop_2 = function _loop_2(key) {\n var _d;\n\n var style = styles[key];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(key)) {\n var subShape = ((_c = group['shapeMap']) === null || _c === void 0 ? void 0 : _c[key]) || group.find(function (element) {\n return element.get('name') === key;\n });\n subShape === null || subShape === void 0 ? void 0 : subShape.attr(style);\n } else {\n // 非纯对象,则认为是设置到 keyShape 上面的\n shape.attr((_d = {}, _d[key] = style, _d));\n }\n }; // style 为要设置的状态的样式\n\n\n for (var key in styles) {\n _loop_2(key);\n }\n } else {\n // 所有生效的 state 的样式\n var enableStatesStyle = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(item.getCurrentStatesStyle());\n var model = item.getModel(); // 原始样式\n\n var originStyle_1 = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, model.style, Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(item.getOriginStyle()));\n var keyShapeName_1 = shape.get('name'); // cloning shape.attr(), keys.forEach to avoid cloning the img attr, which leads to maximum clone heap #2383\n // const keyShapeStyles = clone(shape.attr())\n\n var shapeAttrs_1 = shape.attr();\n var keyShapeStyles_1 = {};\n Object.keys(shapeAttrs_1).forEach(function (key) {\n if (key === 'img') return;\n var attr = shapeAttrs_1[key];\n\n if (attr && _typeof(attr) === 'object') {\n keyShapeStyles_1[key] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(attr);\n } else {\n keyShapeStyles_1[key] = attr;\n }\n }); // 已有样式 - 要取消的状态的样式\n\n var filtetDisableStatesStyle = {};\n\n var _loop_3 = function _loop_3(p) {\n var style = styles[p];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(p)) {\n var subShape_1 = group['shapeMap'][p] || group.find(function (ele) {\n return ele.get('name') === p;\n });\n\n if (subShape_1) {\n var subShapeStyles_1 = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(subShape_1.attr());\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(style, function (v, key) {\n if (p === keyShapeName_1 && keyShapeStyles_1[key] && !keptAttrs[key]) {\n delete keyShapeStyles_1[key];\n var value_1 = originStyle_1[p][key] || SHAPES_DEFAULT_ATTRS[type][key];\n shape.attr(key, value_1);\n } else if (subShapeStyles_1[key] || subShapeStyles_1[key] === 0) {\n delete subShapeStyles_1[key];\n var value_2 = originStyle_1[p][key] || SHAPES_DEFAULT_ATTRS[type][key];\n subShape_1.attr(key, value_2);\n }\n });\n filtetDisableStatesStyle[p] = subShapeStyles_1;\n }\n } else {\n if (keyShapeStyles_1[p] && !keptAttrs[p]) {\n delete keyShapeStyles_1[p];\n var value_3 = originStyle_1[p] || (originStyle_1[keyShapeName_1] ? originStyle_1[keyShapeName_1][p] : undefined) || SHAPES_DEFAULT_ATTRS[type][p];\n shape.attr(p, value_3);\n }\n }\n }; // styles 为要取消的状态的样式\n\n\n for (var p in styles) {\n _loop_3(p);\n } // 从图元素现有的样式中删除本次要取消的 states 中存在的属性值后,\n // 如果 keyShape 有 name 属性,则 filtetDisableStatesStyle 的格式为 { keyShapeName: {} }\n // 否则为普通对象\n\n\n if (!keyShapeName_1) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(filtetDisableStatesStyle, keyShapeStyles_1);\n } else {\n filtetDisableStatesStyle[keyShapeName_1] = keyShapeStyles_1;\n }\n\n for (var key in enableStatesStyle) {\n if (keptAttrs[key]) continue;\n var enableStyle = enableStatesStyle[key];\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(enableStyle) || ARROWS.includes(key)) {\n // 把样式属性merge到keyShape中\n if (!keyShapeName_1) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(originStyle_1, (_a = {}, _a[key] = enableStyle, _a));\n } else {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(originStyle_1[keyShapeName_1], (_b = {}, _b[key] = enableStyle, _b));\n delete originStyle_1[key];\n }\n\n delete enableStatesStyle[key];\n }\n }\n\n var originstyles = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(originstyles, originStyle_1, filtetDisableStatesStyle, enableStatesStyle);\n var keyShapeSetted = false;\n\n var _loop_4 = function _loop_4(originKey) {\n var _e, _f;\n\n var style = originstyles[originKey];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(originKey)) {\n var subShape = group['shapeMap'][originKey] || group.find(function (ele) {\n return ele.get('name') === originKey;\n });\n\n if (subShape) {\n // The text's position and matrix is not allowed to be affected by states\n if (subShape.get('type') === 'text' || subShape.get('labelRelated')) {\n delete style.x;\n delete style.y;\n delete style.matrix;\n }\n\n if (originKey === keyShapeName_1) {\n if (type === 'combo') {\n delete style.r;\n delete style.width;\n delete style.height;\n }\n\n keyShapeSetted = true;\n }\n\n subShape.attr(style);\n }\n } else if (!keyShapeSetted) {\n var value_4 = style || SHAPES_DEFAULT_ATTRS[type][originKey]; // 当更新 combo 状态时,当不存在 keyShapeName 时候,则认为是设置到 keyShape 上面的\n\n if (type === 'combo') {\n if (!keyShapeName_1) {\n shape.attr((_e = {}, _e[originKey] = value_4, _e));\n }\n } else {\n shape.attr((_f = {}, _f[originKey] = value_4, _f));\n }\n }\n };\n\n for (var originKey in originstyles) {\n _loop_4(originKey);\n }\n }\n },\n\n /**\n * 获取不同状态下的样式\n *\n * @param {string} name 状态名称\n * @param {Item} item Node或Edge的实例\n * @return {object} 样式\n */\n getStateStyle: function getStateStyle(name, item) {\n var model = item.getModel();\n var type = item.getType();\n\n var _a = this.getOptions(model),\n stateStyles = _a.stateStyles,\n _b = _a.style,\n style = _b === void 0 ? {} : _b;\n\n var modelStateStyle = model.stateStyles ? model.stateStyles[name] : stateStyles && stateStyles[name];\n\n if (type === 'combo') {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(modelStateStyle);\n }\n\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, style, modelStateStyle);\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 锚点的数组,如果为 null,则没有锚点\n */\n getAnchorPoints: function getAnchorPoints(cfg) {\n var _a, _b;\n\n var anchorPoints = (cfg === null || cfg === void 0 ? void 0 : cfg.anchorPoints) || ((_a = this.getCustomConfig(cfg)) === null || _a === void 0 ? void 0 : _a.anchorPoints) || ((_b = this.options) === null || _b === void 0 ? void 0 : _b.anchorPoints);\n return anchorPoints;\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3NoYXBlQmFzZS5qcz82ODg0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBdUIsMkJBQTJCLHNHQUFzRyxtQkFBbUIsRUFBRSxtQkFBbUIsNkhBQTZILEVBQUUsZUFBZTs7QUFFN1M7QUFDRjtBQUNTO0FBQ3lDO0FBQy9CO0FBQ2xELGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLHNDQUFzQzs7QUFFdEM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwrQ0FBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0Esb0JBQW9CLCtDQUFNO0FBQzFCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVcsMERBQU8sR0FBRywrQ0FBK0M7QUFDcEUsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHdFQUF3RSxXQUFXOztBQUVuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLHNEQUFHLEdBQUc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJELHVCQUF1QiwrQ0FBTSxhQUFhLCtDQUFNO0FBQ2hELFdBQVcsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDeEMsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFHLEdBQUc7O0FBRTNCO0FBQ0E7O0FBRUE7O0FBRUEsVUFBVSxnRUFBYTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsMkJBQTJCO0FBQzNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZTs7O0FBR2Y7QUFDQTtBQUNBLHFEQUFxRCxtQkFBbUI7QUFDeEUsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsMERBQU87QUFDNUIsU0FBUzs7O0FBR1QsZ0ZBQWdGOztBQUVoRix5RkFBeUY7QUFDekY7O0FBRUEseUJBQXlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRzs7QUFFN0M7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsaURBQWlEOztBQUVqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLGlCQUFpQjtBQUMvQixjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw0REFBUztBQUM3QjtBQUNBLHVEQUF1RDtBQUN2RDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOzs7QUFHQSxpQkFBaUIsc0RBQUcsR0FBRztBQUN2QixvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLFlBQVksZ0VBQWE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFNBQVM7QUFDVDtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBLFFBQVE7OztBQUdSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLDhCQUE4QixxRUFBZTtBQUM3QyxrQ0FBa0M7O0FBRWxDLDBCQUEwQixzREFBRyxHQUFHLGVBQWUscUVBQWU7QUFDOUQsNkNBQTZDO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0Msd0RBQUs7QUFDdkMsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7O0FBRUE7QUFDQTs7QUFFQSxZQUFZLGdFQUFhO0FBQ3pCO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0EsbUNBQW1DLHFFQUFlO0FBQ2xELFlBQVksdURBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFROzs7QUFHUjtBQUNBO0FBQ0EsT0FBTztBQUNQLGdFQUFnRSxpQkFBaUI7QUFDakY7OztBQUdBO0FBQ0EsUUFBUSxzREFBRztBQUNYLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGdFQUFhO0FBQzFCO0FBQ0E7QUFDQSxZQUFZLHNEQUFHLHdCQUF3QjtBQUN2QyxXQUFXO0FBQ1gsWUFBWSxzREFBRyx3Q0FBd0M7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLDBEQUFPO0FBQ2I7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxZQUFZLGdFQUFhO0FBQ3pCO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsdUVBQXVFOztBQUV2RTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0EsV0FBVztBQUNYLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLEtBQUs7QUFDbEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7O0FBRUE7QUFDQSxhQUFhLHdEQUFLO0FBQ2xCOztBQUVBLFdBQVcsc0RBQUcsR0FBRztBQUNqQixHQUFHOztBQUVIO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxXQUFXO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFdBQVc7QUFDekI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9zaGFwZUJhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfSwgX3R5cGVvZihvYmopOyB9XG5cbmltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5pbXBvcnQgeyBleHQgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyBkZWVwTWl4LCBlYWNoLCBtaXgsIGlzQm9vbGVhbiwgaXNQbGFpbk9iamVjdCwgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNsb25lQmVzaWRlc0ltZyB9IGZyb20gJy4uL3V0aWwvZ3JhcGhpYyc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbnZhciBDTFNfU0hBUEVfU1VGRklYID0gJy1zaGFwZSc7XG52YXIgQ0xTX0xBQkVMX1NVRkZJWCA9ICctbGFiZWwnO1xudmFyIEFSUk9XUyA9IFsnc3RhcnRBcnJvdycsICdlbmRBcnJvdyddO1xudmFyIFNIQVBFX0RFRkFVTFRfQVRUUlMgPSB7XG4gIGxpbmVXaWR0aDogMSxcbiAgc3Ryb2tlOiB1bmRlZmluZWQsXG4gIGZpbGw6IHVuZGVmaW5lZCxcbiAgbGluZUFwcGVuZFdpZHRoOiAxLFxuICBvcGFjaXR5OiB1bmRlZmluZWQsXG4gIHN0cm9rZU9wYWNpdHk6IHVuZGVmaW5lZCxcbiAgZmlsbE9wYWNpdHk6IHVuZGVmaW5lZCxcbiAgeDogMCxcbiAgeTogMCxcbiAgcjogMTAsXG4gIHdpZHRoOiAyMCxcbiAgaGVpZ2h0OiAyMCxcbiAgc2hhZG93Q29sb3I6IHVuZGVmaW5lZCxcbiAgc2hhZG93Qmx1cjogMCxcbiAgc2hhZG93T2Zmc2V0WDogMCxcbiAgc2hhZG93T2Zmc2V0WTogMFxufTtcbnZhciBQQVRIX1NIQVBFX0RFRkFVTFRfQVRUUlMgPSB7XG4gIGxpbmVXaWR0aDogMSxcbiAgc3Ryb2tlOiAnIzAwMCcsXG4gIGxpbmVEYXNoOiB1bmRlZmluZWQsXG4gIHN0YXJ0QXJyb3c6IGZhbHNlLFxuICBlbmRBcnJvdzogZmFsc2UsXG4gIG9wYWNpdHk6IHVuZGVmaW5lZCxcbiAgc3Ryb2tlT3BhY2l0eTogdW5kZWZpbmVkLFxuICBmaWxsT3BhY2l0eTogdW5kZWZpbmVkLFxuICBzaGFkb3dDb2xvcjogdW5kZWZpbmVkLFxuICBzaGFkb3dCbHVyOiAwLFxuICBzaGFkb3dPZmZzZXRYOiAwLFxuICBzaGFkb3dPZmZzZXRZOiAwXG59O1xudmFyIFNIQVBFU19ERUZBVUxUX0FUVFJTID0ge1xuICBlZGdlOiBQQVRIX1NIQVBFX0RFRkFVTFRfQVRUUlMsXG4gIG5vZGU6IFNIQVBFX0RFRkFVTFRfQVRUUlMsXG4gIGNvbWJvOiBTSEFQRV9ERUZBVUxUX0FUVFJTXG59O1xuZXhwb3J0IHZhciBDTFNfTEFCRUxfQkdfU1VGRklYID0gJy1sYWJlbC1iZyc7IC8vIOWNleS4qiBzaGFwZSDluKbmnInkuIDkuKogbGFiZWzvvIzlhbHnlKjov5nmrrXku6PnoIFcblxuZXhwb3J0IHZhciBzaGFwZUJhc2UgPSB7XG4gIC8vIOm7mOiupOagt+W8j+WPiumFjee9rlxuICBvcHRpb25zOiB7XG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbkNmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGl0ZW1UeXBlOiAnJyxcblxuICAvKipcbiAgICog5b2i54q255qE57G75Z6L77yM5L6L5aaCIGNpcmNsZe+8jGVsbGlwc2XvvIxwb2x5bGluZS4uLlxuICAgKi9cbiAgdHlwZTogJycsXG4gIGdldEN1c3RvbUNvbmZpZzogZnVuY3Rpb24gZ2V0Q3VzdG9tQ29uZmlnKGNmZykge1xuICAgIHJldHVybiB7fTtcbiAgfSxcbiAgZ2V0T3B0aW9uczogZnVuY3Rpb24gZ2V0T3B0aW9ucyhjZmcsIHVwZGF0ZVR5cGUpIHtcbiAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ21vdmUnIHx8ICh1cGRhdGVUeXBlID09PSBudWxsIHx8IHVwZGF0ZVR5cGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVwZGF0ZVR5cGUuaW5jbHVkZXMoJ2Jib3gnKSkpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVlcE1peCh7fSwgdGhpcy5vcHRpb25zLCB0aGlzLmdldEN1c3RvbUNvbmZpZyhjZmcpIHx8IHt9LCBjZmcpO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLboioLngrkv6L6577yM5YyF5ZCr5paH5pysXG4gICAqIEBvdmVycmlkZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnnmoTphY3nva7poblcbiAgICogQHBhcmFtICB7Ry5Hcm91cH0gZ3JvdXAg6IqC54K555qE5a655ZmoXG4gICAqIEByZXR1cm4ge0lTaGFwZX0g57uY5Yi255qE5Zu+5b2iXG4gICAqL1xuICBkcmF3OiBmdW5jdGlvbiBkcmF3KGNmZywgZ3JvdXApIHtcbiAgICBncm91cFsnc2hhcGVNYXAnXSA9IHt9O1xuICAgIHRoaXMubWVyZ2VTdHlsZSA9IHRoaXMuZ2V0T3B0aW9ucyhjZmcpO1xuICAgIHZhciBzaGFwZSA9IHRoaXMuZHJhd1NoYXBlKGNmZywgZ3JvdXApO1xuICAgIHNoYXBlLnNldCgnY2xhc3NOYW1lJywgdGhpcy5pdGVtVHlwZSArIENMU19TSEFQRV9TVUZGSVgpO1xuICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMuaXRlbVR5cGUgKyBDTFNfU0hBUEVfU1VGRklYXSA9IHNoYXBlO1xuXG4gICAgaWYgKGNmZy5sYWJlbCkge1xuICAgICAgdmFyIGxhYmVsID0gdGhpcy5kcmF3TGFiZWwoY2ZnLCBncm91cCk7XG4gICAgICBsYWJlbC5zZXQoJ2NsYXNzTmFtZScsIHRoaXMuaXRlbVR5cGUgKyBDTFNfTEFCRUxfU1VGRklYKTtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMuaXRlbVR5cGUgKyBDTFNfTEFCRUxfU1VGRklYXSA9IGxhYmVsO1xuICAgIH1cblxuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi25a6M5oiQ5ZCO55qE5pON5L2c77yM5L6/5LqO55So5oi357un5om/546w5pyJ55qE6IqC54K544CB6L65XG4gICAqIEBwYXJhbSBjZmdcbiAgICogQHBhcmFtIGdyb3VwXG4gICAqIEBwYXJhbSBrZXlTaGFwZVxuICAgKi9cbiAgYWZ0ZXJEcmF3OiBmdW5jdGlvbiBhZnRlckRyYXcoY2ZnLCBncm91cCwga2V5U2hhcGUpIHt9LFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG4gIGRyYXdMYWJlbDogZnVuY3Rpb24gZHJhd0xhYmVsKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgZGVmYXVsdExhYmVsQ2ZnID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSB8fCB7fSkubGFiZWxDZmc7IC8vIGltYWdl55qE5oOF5Ya15LiL5pyJ5Y+v6IO95Li6bnVsbFxuXG4gICAgdmFyIGxhYmVsQ2ZnID0gZGVmYXVsdExhYmVsQ2ZnIHx8IHt9O1xuICAgIHZhciBsYWJlbFN0eWxlID0gdGhpcy5nZXRMYWJlbFN0eWxlKGNmZywgbGFiZWxDZmcsIGdyb3VwKTtcbiAgICB2YXIgcm90YXRlID0gbGFiZWxTdHlsZS5yb3RhdGU7XG4gICAgZGVsZXRlIGxhYmVsU3R5bGUucm90YXRlO1xuICAgIHZhciBsYWJlbCA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgYXR0cnM6IGxhYmVsU3R5bGUsXG4gICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICBjbGFzc05hbWU6ICd0ZXh0LXNoYXBlJyxcbiAgICAgIG5hbWU6ICd0ZXh0LXNoYXBlJyxcbiAgICAgIGxhYmVsUmVsYXRlZDogdHJ1ZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddWyd0ZXh0LXNoYXBlJ10gPSBsYWJlbDtcblxuICAgIGlmICghaXNOYU4ocm90YXRlKSAmJiByb3RhdGUgIT09ICcnKSB7XG4gICAgICB2YXIgbGFiZWxCQm94ID0gbGFiZWwuZ2V0QkJveCgpO1xuICAgICAgdmFyIGxhYmVsTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuXG4gICAgICBpZiAobGFiZWxTdHlsZS5yb3RhdGVDZW50ZXIpIHtcbiAgICAgICAgc3dpdGNoIChsYWJlbFN0eWxlLnJvdGF0ZUNlbnRlcikge1xuICAgICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgICBsYWJlbE1hdHJpeCA9IHRyYW5zZm9ybShsYWJlbE1hdHJpeCwgW1sndCcsIC1sYWJlbEJCb3gud2lkdGggLyAyLCAtbGFiZWxCQm94LmhlaWdodCAvIDJdLCBbJ3InLCByb3RhdGVdLCBbJ3QnLCBsYWJlbEJCb3gud2lkdGggLyAyLCBsYWJlbEJCb3guaGVpZ2h0IC8gMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnbGVmdHRvcCc6XG4gICAgICAgICAgICBsYWJlbE1hdHJpeCA9IHRyYW5zZm9ybShsYWJlbE1hdHJpeCwgW1sndCcsIC1sYWJlbFN0eWxlLngsIC1sYWJlbFN0eWxlLnldLCBbJ3InLCByb3RhdGVdLCBbJ3QnLCBsYWJlbFN0eWxlLngsIGxhYmVsU3R5bGUueV1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnbGVmdGNlbnRlcic6XG4gICAgICAgICAgICBsYWJlbE1hdHJpeCA9IHRyYW5zZm9ybShsYWJlbE1hdHJpeCwgW1sndCcsIC1sYWJlbFN0eWxlLngsIC1sYWJlbFN0eWxlLnkgLSBsYWJlbEJCb3guaGVpZ2h0IC8gMl0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsU3R5bGUueCwgbGFiZWxTdHlsZS55ICsgbGFiZWxCQm94LmhlaWdodCAvIDJdXSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBsYWJlbE1hdHJpeCA9IHRyYW5zZm9ybShsYWJlbE1hdHJpeCwgW1sndCcsIC1sYWJlbEJCb3gud2lkdGggLyAyLCAtbGFiZWxCQm94LmhlaWdodCAvIDJdLCBbJ3InLCByb3RhdGVdLCBbJ3QnLCBsYWJlbEJCb3gud2lkdGggLyAyLCBsYWJlbEJCb3guaGVpZ2h0IC8gMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYWJlbE1hdHJpeCA9IHRyYW5zZm9ybShsYWJlbE1hdHJpeCwgW1sndCcsIC1sYWJlbFN0eWxlLngsIC1sYWJlbFN0eWxlLnkgLSBsYWJlbEJCb3guaGVpZ2h0IC8gMl0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsU3R5bGUueCwgbGFiZWxTdHlsZS55ICsgbGFiZWxCQm94LmhlaWdodCAvIDJdXSk7XG4gICAgICB9XG5cbiAgICAgIGxhYmVsLnNldE1hdHJpeChsYWJlbE1hdHJpeCk7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsU3R5bGUuYmFja2dyb3VuZCkge1xuICAgICAgdmFyIHJlY3QgPSB0aGlzLmRyYXdMYWJlbEJnKGNmZywgZ3JvdXAsIGxhYmVsKTtcbiAgICAgIHZhciBsYWJlbEJnQ2xhc3NuYW1lID0gdGhpcy5pdGVtVHlwZSArIENMU19MQUJFTF9CR19TVUZGSVg7XG4gICAgICByZWN0LnNldCgnY2xhc3NuYW1lJywgbGFiZWxCZ0NsYXNzbmFtZSk7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtsYWJlbEJnQ2xhc3NuYW1lXSA9IHJlY3Q7XG4gICAgICBsYWJlbC50b0Zyb250KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9LFxuICBkcmF3TGFiZWxCZzogZnVuY3Rpb24gZHJhd0xhYmVsQmcoY2ZnLCBncm91cCwgbGFiZWwpIHtcbiAgICB2YXIgZGVmYXVsdExhYmVsQ2ZnID0gdGhpcy5vcHRpb25zLmxhYmVsQ2ZnO1xuICAgIHZhciBsYWJlbENmZyA9IG1peCh7fSwgZGVmYXVsdExhYmVsQ2ZnLCBjZmcubGFiZWxDZmcpO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgbGFiZWxDZmcpO1xuICAgIHZhciByZWN0ID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBuYW1lOiAndGV4dC1iZy1zaGFwZScsXG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBsYWJlbFJlbGF0ZWQ6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVsndGV4dC1iZy1zaGFwZSddID0gcmVjdDtcbiAgICByZXR1cm4gcmVjdDtcbiAgfSxcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcsIGdyb3VwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHQ6IGNmZy5sYWJlbFxuICAgIH07XG4gIH0sXG4gIGdldExhYmVsQmdTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsQmdTdHlsZUJ5UG9zaXRpb24obGFiZWwsIGxhYmVsQ2ZnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5bmlofmnKznmoTphY3nva7poblcbiAgICogQHBhcmFtIGNmZyDoioLngrnnmoTphY3nva7poblcbiAgICogQHBhcmFtIGxhYmVsQ2ZnIOaWh+acrOeahOmFjee9rumhuVxuICAgKiBAcGFyYW0gZ3JvdXAg54i25a655Zmo77yMbGFiZWwg55qE5a6a5L2N5Y+v6IO95LiO5Zu+5b2i55u45YWzXG4gICAqL1xuICBnZXRMYWJlbFN0eWxlOiBmdW5jdGlvbiBnZXRMYWJlbFN0eWxlKGNmZywgbGFiZWxDZmcsIGdyb3VwKSB7XG4gICAgdmFyIGNhbGN1bGF0ZVN0eWxlID0gdGhpcy5nZXRMYWJlbFN0eWxlQnlQb3NpdGlvbihjZmcsIGxhYmVsQ2ZnLCBncm91cCk7XG4gICAgdmFyIGF0dHJOYW1lID0gXCJcIi5jb25jYXQodGhpcy5pdGVtVHlwZSwgXCJMYWJlbFwiKTsgLy8g5Y+WIG5vZGVMYWJlbO+8jGVkZ2VMYWJlbCDnmoTphY3nva7poblcblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSBHbG9iYWxbYXR0ck5hbWVdID8gR2xvYmFsW2F0dHJOYW1lXS5zdHlsZSA6IG51bGw7XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCBkZWZhdWx0U3R5bGUpLCBjYWxjdWxhdGVTdHlsZSksIGxhYmVsQ2ZnLnN0eWxlKTtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W5Zu+5b2i55qE6YWN572u6aG5XG4gICAqIEBwYXJhbSBjZmdcbiAgICovXG4gIGdldFNoYXBlU3R5bGU6IGZ1bmN0aW9uIGdldFNoYXBlU3R5bGUoY2ZnKSB7XG4gICAgcmV0dXJuIGNmZy5zdHlsZTtcbiAgfSxcblxuICAvKipcbiAgICog5pu05paw6IqC54K577yM5YyF5ZCr5paH5pysXG4gICAqIEBvdmVycmlkZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrkv6L6555qE6YWN572u6aG5XG4gICAqIEBwYXJhbSAge0c2Lkl0ZW19IGl0ZW0g6IqC54K5L+i+uVxuICAgKi9cbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdGhpcy51cGRhdGVTaGFwZVN0eWxlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSk7XG4gICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpO1xuICB9LFxuICB1cGRhdGVTaGFwZVN0eWxlOiBmdW5jdGlvbiB1cGRhdGVTaGFwZVN0eWxlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7XG4gICAgdmFyIHNoYXBlID0gaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgIHZhciBzaGFwZVN0eWxlID0gbWl4KHt9LCBzaGFwZS5hdHRyKCksIGNmZy5zdHlsZSk7XG5cbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoa2V5KSB7XG4gICAgICB2YXIgX2I7XG5cbiAgICAgIHZhciBzdHlsZSA9IHNoYXBlU3R5bGVba2V5XTtcblxuICAgICAgaWYgKGlzUGxhaW5PYmplY3Qoc3R5bGUpKSB7XG4gICAgICAgIC8vIOabtOaWsOWbvuWFg+e0oOagt+W8j++8jOaUr+aMgeabtOaWsOWtkOWFg+e0oFxuICAgICAgICB2YXIgc3ViU2hhcGUgPSAoKF9hID0gZ3JvdXBbJ3NoYXBlTWFwJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVtrZXldKSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCduYW1lJykgPT09IGtleTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN1YlNoYXBlID09PSBudWxsIHx8IHN1YlNoYXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdWJTaGFwZS5hdHRyKHN0eWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNoYXBlLmF0dHIoKF9iID0ge30sIF9iW2tleV0gPSBzdHlsZSwgX2IpKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNoYXBlU3R5bGUpIHtcbiAgICAgIF9sb29wXzEoa2V5KTtcbiAgICB9XG4gIH0sXG4gIHVwZGF0ZUxhYmVsOiBmdW5jdGlvbiB1cGRhdGVMYWJlbChjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgX2EsIF9iOyAvLyDpmLLmraIgY2ZnLmxhYmVsID0gXCJcIiDnmoTmg4XlhrVcblxuXG4gICAgaWYgKGNmZy5sYWJlbCB8fCBjZmcubGFiZWwgPT09ICcnKSB7XG4gICAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpO1xuICAgICAgdmFyIF9jID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoe30sIHVwZGF0ZVR5cGUpIHx8IHt9KS5sYWJlbENmZyxcbiAgICAgICAgICBsYWJlbENmZyA9IF9jID09PSB2b2lkIDAgPyB7fSA6IF9jO1xuICAgICAgdmFyIGxhYmVsQ2xhc3NOYW1lXzEgPSB0aGlzLml0ZW1UeXBlICsgQ0xTX0xBQkVMX1NVRkZJWDtcbiAgICAgIHZhciBsYWJlbCA9IGdyb3VwWydzaGFwZU1hcCddW2xhYmVsQ2xhc3NOYW1lXzFdIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmdldCgnY2xhc3NOYW1lJykgPT09IGxhYmVsQ2xhc3NOYW1lXzE7XG4gICAgICB9KTtcbiAgICAgIHZhciBsYWJlbEJnQ2xhc3NuYW1lXzEgPSB0aGlzLml0ZW1UeXBlICsgQ0xTX0xBQkVMX0JHX1NVRkZJWDtcbiAgICAgIHZhciBsYWJlbEJnID0gZ3JvdXBbJ3NoYXBlTWFwJ11bbGFiZWxCZ0NsYXNzbmFtZV8xXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgcmV0dXJuIGVsZS5nZXQoJ2NsYXNzTmFtZScpID09PSBsYWJlbEJnQ2xhc3NuYW1lXzE7XG4gICAgICB9KTsgLy8g6Iul5Lyg5YWl55qE5paw6YWN572u5Lit5pyJIGxhYmVs77yM77yI55So5oi35rKh5Lyg5YWl5L2G5Y6f5YWI5pyJIGxhYmVs77yMbGFiZWwg5Lmf5Lya5pyJ5YC877yJXG5cbiAgICAgIGlmICghbGFiZWwpIHtcbiAgICAgICAgLy8g6Iul5Y6f5YWI5LiN5a2Y5ZyoIGxhYmVs77yM5YiZ57uY5Yi25LiA5Liq5paw55qEIGxhYmVsXG4gICAgICAgIHZhciBuZXdMYWJlbCA9IHRoaXMuZHJhd0xhYmVsKGNmZywgZ3JvdXApO1xuICAgICAgICBuZXdMYWJlbC5zZXQoJ2NsYXNzTmFtZScsIGxhYmVsQ2xhc3NOYW1lXzEpO1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtsYWJlbENsYXNzTmFtZV8xXSA9IG5ld0xhYmVsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g6Iul5Y6f5YWI5a2Y5ZyoIGxhYmVs77yM5YiZ5pu05paw5qC35byP44CC5LiOIGdldExhYmVsU3R5bGUg5LiN5ZCM5Zyo5LqO6L+Z6YeM6ZyA6KaB6J6N5ZCI5b2T5YmNIGxhYmVsIOeahOagt+W8j1xuICAgICAgICAvLyDono3lkIggc3R5bGUg5Lul5aSW55qE5bGe5oCn77yacG9zaXRpb24sIG9mZnNldCwgLi4uXG4gICAgICAgIGlmICghdXBkYXRlVHlwZSB8fCB1cGRhdGVUeXBlID09PSAnYmJveHxsYWJlbCcgfHwgdGhpcy5pdGVtVHlwZSA9PT0gJ2VkZ2UnICYmIHVwZGF0ZVR5cGUgIT09ICdzdHlsZScpIHtcbiAgICAgICAgICBsYWJlbENmZyA9IGRlZXBNaXgobGFiZWxDZmcsIGNmZy5sYWJlbENmZyk7XG4gICAgICAgIH0gLy8g6I635Y+W5L2N572u5L+h5oGvXG5cblxuICAgICAgICB2YXIgY2FsY3VsYXRlU3R5bGUgPSB0aGlzLmdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcsIGdyb3VwKTsgLy8g5Y+WIG5vZGVMYWJlbO+8jGVkZ2VMYWJlbCDnmoTphY3nva7poblcblxuICAgICAgICB2YXIgY2ZnU3R5bGUgPSAoX2EgPSBjZmcubGFiZWxDZmcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdHlsZTsgLy8gY29uc3QgY2ZnQmdTdHlsZSA9IGxhYmVsQ2ZnLnN0eWxlPy5iYWNrZ3JvdW5kO1xuICAgICAgICAvLyDpnIDopoHono3lkIjlvZPliY1cYiBsYWJlbCDnmoTmoLflvI8gbGFiZWwuYXR0cigp44CC5LiN5YaN6ZyA6KaB5YWo5bGAL+m7mOiupOagt+W8j++8jOWboOS4uuW3sue7j+W6lOeUqOWcqOW9k+WJjeeahCBsYWJlbCDkuIpcblxuICAgICAgICB2YXIgbGFiZWxTdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBjYWxjdWxhdGVTdHlsZSksIGNmZ1N0eWxlKTtcblxuICAgICAgICB2YXIgcm90YXRlID0gbGFiZWxTdHlsZS5yb3RhdGU7XG4gICAgICAgIGRlbGV0ZSBsYWJlbFN0eWxlLnJvdGF0ZTsgLy8g6K6h566XIGxhYmVsIOeahOaXi+i9rOefqemYtVxuXG4gICAgICAgIGlmICghaXNOYU4ocm90YXRlKSAmJiByb3RhdGUgIT09ICcnKSB7XG4gICAgICAgICAgLy8gaWYgRyA0LnggZGVmaW5lIHRoZSByb3RhdGVBdFN0YXJ0LCB1c2UgaXQgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZyB0aGUgZm9sbG93aW5nIGNvZGVzXG4gICAgICAgICAgdmFyIHJvdGF0ZU1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgICAgICByb3RhdGVNYXRyaXggPSB0cmFuc2Zvcm0ocm90YXRlTWF0cml4LCBbWyd0JywgLWxhYmVsU3R5bGUueCwgLWxhYmVsU3R5bGUueV0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsU3R5bGUueCwgbGFiZWxTdHlsZS55XV0pO1xuICAgICAgICAgIGxhYmVsU3R5bGUubWF0cml4ID0gcm90YXRlTWF0cml4O1xuICAgICAgICAgIGxhYmVsLmF0dHIobGFiZWxTdHlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCgoX2IgPSBsYWJlbC5nZXRNYXRyaXgoKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWzRdKSAhPT0gMSkge1xuICAgICAgICAgICAgbGFiZWwucmVzZXRNYXRyaXgoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsYWJlbC5hdHRyKGxhYmVsU3R5bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFsYWJlbEJnKSB7XG4gICAgICAgICAgaWYgKGxhYmVsU3R5bGUuYmFja2dyb3VuZCkge1xuICAgICAgICAgICAgbGFiZWxCZyA9IHRoaXMuZHJhd0xhYmVsQmcoY2ZnLCBncm91cCwgbGFiZWwpO1xuICAgICAgICAgICAgbGFiZWxCZy5zZXQoJ2NsYXNzbmFtZScsIGxhYmVsQmdDbGFzc25hbWVfMSk7XG4gICAgICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtsYWJlbEJnQ2xhc3NuYW1lXzFdID0gbGFiZWxCZztcbiAgICAgICAgICAgIGxhYmVsLnRvRnJvbnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobGFiZWxTdHlsZS5iYWNrZ3JvdW5kKSB7XG4gICAgICAgICAgdmFyIGNhbGN1bGF0ZUJnU3R5bGUgPSB0aGlzLmdldExhYmVsQmdTdHlsZUJ5UG9zaXRpb24obGFiZWwsIGxhYmVsQ2ZnKTtcbiAgICAgICAgICBsYWJlbEJnLmF0dHIoY2FsY3VsYXRlQmdTdHlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JvdXAucmVtb3ZlQ2hpbGQobGFiZWxCZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIC8vIHVwZGF0ZShjZmcsIGl0ZW0pIC8vIOm7mOiupOS4jeWumuS5iVxuICBhZnRlclVwZGF0ZTogZnVuY3Rpb24gYWZ0ZXJVcGRhdGUoY2ZnLCBpdGVtKSB7fSxcblxuICAvKipcbiAgICog6K6+572u6IqC54K555qE54q25oCB77yM5Li76KaB5piv5Lqk5LqS54q25oCB77yM5Lia5Yqh54q25oCB6K+35ZyoIGRyYXcg5pa55rOV5Lit5a6e546wXG4gICAqIOWNleWbvuW9oueahOiKgueCueS7heiAg+iZkSBzZWxlY3RlZOOAgWFjdGl2ZSDnirbmgIHvvIzmnInlhbbku5bnirbmgIHpnIDmsYLnmoTnlKjmiLfoh6rlt7HlpI3lhpnov5nkuKrmlrnms5VcbiAgICogQG92ZXJyaWRlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gbmFtZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtICB7U3RyaW5nIHwgQm9vbGVhbn0gdmFsdWUg54q25oCB5YC8XG4gICAqIEBwYXJhbSAge0c2Lkl0ZW19IGl0ZW0g6IqC54K5XG4gICAqL1xuICBzZXRTdGF0ZTogZnVuY3Rpb24gc2V0U3RhdGUobmFtZSwgdmFsdWUsIGl0ZW0pIHtcbiAgICB2YXIgX2EsIF9iO1xuXG4gICAgdmFyIF9jO1xuXG4gICAgdmFyIHNoYXBlID0gaXRlbS5nZXQoJ2tleVNoYXBlJyk7XG4gICAgaWYgKCFzaGFwZSB8fCBzaGFwZS5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB2YXIgdHlwZSA9IGl0ZW0uZ2V0VHlwZSgpO1xuICAgIHZhciBzdGF0ZU5hbWUgPSBpc0Jvb2xlYW4odmFsdWUpID8gbmFtZSA6IFwiXCIuY29uY2F0KG5hbWUsIFwiOlwiKS5jb25jYXQodmFsdWUpO1xuICAgIHZhciBzaGFwZVN0YXRlU3R5bGUgPSB0aGlzLmdldFN0YXRlU3R5bGUoc3RhdGVOYW1lLCBpdGVtKTtcbiAgICB2YXIgaXRlbVN0YXRlU3R5bGUgPSBpdGVtLmdldFN0YXRlU3R5bGUoc3RhdGVOYW1lKTsgLy8gY29uc3Qgb3JpZ2luU3R5bGUgPSBpdGVtLmdldE9yaWdpblN0eWxlKCk7XG4gICAgLy8g5LiN5YWB6K646K6+572u5LiA5Liq5LiN5a2Y5Zyo55qE54q25oCBXG5cbiAgICBpZiAoIWl0ZW1TdGF0ZVN0eWxlICYmICFzaGFwZVN0YXRlU3R5bGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIOimgeiuvue9ruaIluWPlua2iOeahOeKtuaAgeeahOagt+W8j1xuICAgIC8vIOW9k+ayoeaciSBzdGF0ZSDnirbmgIHml7bvvIzpu5jorqTkvb/nlKggbW9kZWwuc3RhdGVTdHlsZXMg5Lit55qE5qC35byPXG5cblxuICAgIHZhciBzdHlsZXMgPSBtaXgoe30sIGl0ZW1TdGF0ZVN0eWxlIHx8IHNoYXBlU3RhdGVTdHlsZSk7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTsgLy8g5LuO5Zu+5YWD57Sg546w5pyJ55qE5qC35byP5Lit5Yig6Zmk5pys5qyh6KaB5Y+W5raI55qEIHN0YXRlcyDkuK3lrZjlnKjnmoTlsZ7mgKflgLzjgILkvb/nlKjlr7nosaHmo4DntKLmm7Tlv6tcblxuICAgIHZhciBrZXB0QXR0cnMgPSB7XG4gICAgICB4OiAxLFxuICAgICAgeTogMSxcbiAgICAgIGN4OiAxLFxuICAgICAgY3k6IDEsXG4gICAgICBtYXRyaXg6IDFcbiAgICB9O1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIGtlcHRBdHRycy5yID0gMTtcbiAgICAgIGtlcHRBdHRycy53aWR0aCA9IDE7XG4gICAgICBrZXB0QXR0cnMuaGVpZ2h0ID0gMTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHZhciBfbG9vcF8yID0gZnVuY3Rpb24gX2xvb3BfMihrZXkpIHtcbiAgICAgICAgdmFyIF9kO1xuXG4gICAgICAgIHZhciBzdHlsZSA9IHN0eWxlc1trZXldO1xuXG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHN0eWxlKSAmJiAhQVJST1dTLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICB2YXIgc3ViU2hhcGUgPSAoKF9jID0gZ3JvdXBbJ3NoYXBlTWFwJ10pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1trZXldKSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ25hbWUnKSA9PT0ga2V5O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN1YlNoYXBlID09PSBudWxsIHx8IHN1YlNoYXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdWJTaGFwZS5hdHRyKHN0eWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyDpnZ7nuq/lr7nosaHvvIzliJnorqTkuLrmmK/orr7nva7liLAga2V5U2hhcGUg5LiK6Z2i55qEXG4gICAgICAgICAgc2hhcGUuYXR0cigoX2QgPSB7fSwgX2Rba2V5XSA9IHN0eWxlLCBfZCkpO1xuICAgICAgICB9XG4gICAgICB9OyAvLyBzdHlsZSDkuLropoHorr7nva7nmoTnirbmgIHnmoTmoLflvI9cblxuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gc3R5bGVzKSB7XG4gICAgICAgIF9sb29wXzIoa2V5KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8g5omA5pyJ55Sf5pWI55qEIHN0YXRlIOeahOagt+W8j1xuICAgICAgdmFyIGVuYWJsZVN0YXRlc1N0eWxlID0gY2xvbmVCZXNpZGVzSW1nKGl0ZW0uZ2V0Q3VycmVudFN0YXRlc1N0eWxlKCkpO1xuICAgICAgdmFyIG1vZGVsID0gaXRlbS5nZXRNb2RlbCgpOyAvLyDljp/lp4vmoLflvI9cblxuICAgICAgdmFyIG9yaWdpblN0eWxlXzEgPSBtaXgoe30sIG1vZGVsLnN0eWxlLCBjbG9uZUJlc2lkZXNJbWcoaXRlbS5nZXRPcmlnaW5TdHlsZSgpKSk7XG4gICAgICB2YXIga2V5U2hhcGVOYW1lXzEgPSBzaGFwZS5nZXQoJ25hbWUnKTsgLy8gY2xvbmluZyAgc2hhcGUuYXR0cigpLCBrZXlzLmZvckVhY2ggdG8gYXZvaWQgY2xvbmluZyB0aGUgaW1nIGF0dHIsIHdoaWNoIGxlYWRzIHRvIG1heGltdW0gY2xvbmUgaGVhcCAjMjM4M1xuICAgICAgLy8gY29uc3Qga2V5U2hhcGVTdHlsZXMgPSBjbG9uZShzaGFwZS5hdHRyKCkpXG5cbiAgICAgIHZhciBzaGFwZUF0dHJzXzEgPSBzaGFwZS5hdHRyKCk7XG4gICAgICB2YXIga2V5U2hhcGVTdHlsZXNfMSA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoc2hhcGVBdHRyc18xKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2ltZycpIHJldHVybjtcbiAgICAgICAgdmFyIGF0dHIgPSBzaGFwZUF0dHJzXzFba2V5XTtcblxuICAgICAgICBpZiAoYXR0ciAmJiBfdHlwZW9mKGF0dHIpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGtleVNoYXBlU3R5bGVzXzFba2V5XSA9IGNsb25lKGF0dHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGtleVNoYXBlU3R5bGVzXzFba2V5XSA9IGF0dHI7XG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyDlt7LmnInmoLflvI8gLSDopoHlj5bmtojnmoTnirbmgIHnmoTmoLflvI9cblxuICAgICAgdmFyIGZpbHRldERpc2FibGVTdGF0ZXNTdHlsZSA9IHt9O1xuXG4gICAgICB2YXIgX2xvb3BfMyA9IGZ1bmN0aW9uIF9sb29wXzMocCkge1xuICAgICAgICB2YXIgc3R5bGUgPSBzdHlsZXNbcF07XG5cbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3Qoc3R5bGUpICYmICFBUlJPV1MuaW5jbHVkZXMocCkpIHtcbiAgICAgICAgICB2YXIgc3ViU2hhcGVfMSA9IGdyb3VwWydzaGFwZU1hcCddW3BdIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZS5nZXQoJ25hbWUnKSA9PT0gcDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChzdWJTaGFwZV8xKSB7XG4gICAgICAgICAgICB2YXIgc3ViU2hhcGVTdHlsZXNfMSA9IGNsb25lQmVzaWRlc0ltZyhzdWJTaGFwZV8xLmF0dHIoKSk7XG4gICAgICAgICAgICBlYWNoKHN0eWxlLCBmdW5jdGlvbiAodiwga2V5KSB7XG4gICAgICAgICAgICAgIGlmIChwID09PSBrZXlTaGFwZU5hbWVfMSAmJiBrZXlTaGFwZVN0eWxlc18xW2tleV0gJiYgIWtlcHRBdHRyc1trZXldKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGtleVNoYXBlU3R5bGVzXzFba2V5XTtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVfMSA9IG9yaWdpblN0eWxlXzFbcF1ba2V5XSB8fCBTSEFQRVNfREVGQVVMVF9BVFRSU1t0eXBlXVtrZXldO1xuICAgICAgICAgICAgICAgIHNoYXBlLmF0dHIoa2V5LCB2YWx1ZV8xKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdWJTaGFwZVN0eWxlc18xW2tleV0gfHwgc3ViU2hhcGVTdHlsZXNfMVtrZXldID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN1YlNoYXBlU3R5bGVzXzFba2V5XTtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVfMiA9IG9yaWdpblN0eWxlXzFbcF1ba2V5XSB8fCBTSEFQRVNfREVGQVVMVF9BVFRSU1t0eXBlXVtrZXldO1xuICAgICAgICAgICAgICAgIHN1YlNoYXBlXzEuYXR0cihrZXksIHZhbHVlXzIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpbHRldERpc2FibGVTdGF0ZXNTdHlsZVtwXSA9IHN1YlNoYXBlU3R5bGVzXzE7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChrZXlTaGFwZVN0eWxlc18xW3BdICYmICFrZXB0QXR0cnNbcF0pIHtcbiAgICAgICAgICAgIGRlbGV0ZSBrZXlTaGFwZVN0eWxlc18xW3BdO1xuICAgICAgICAgICAgdmFyIHZhbHVlXzMgPSBvcmlnaW5TdHlsZV8xW3BdIHx8IChvcmlnaW5TdHlsZV8xW2tleVNoYXBlTmFtZV8xXSA/IG9yaWdpblN0eWxlXzFba2V5U2hhcGVOYW1lXzFdW3BdIDogdW5kZWZpbmVkKSB8fCBTSEFQRVNfREVGQVVMVF9BVFRSU1t0eXBlXVtwXTtcbiAgICAgICAgICAgIHNoYXBlLmF0dHIocCwgdmFsdWVfMyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9OyAvLyBzdHlsZXMg5Li66KaB5Y+W5raI55qE54q25oCB55qE5qC35byPXG5cblxuICAgICAgZm9yICh2YXIgcCBpbiBzdHlsZXMpIHtcbiAgICAgICAgX2xvb3BfMyhwKTtcbiAgICAgIH0gLy8g5LuO5Zu+5YWD57Sg546w5pyJ55qE5qC35byP5Lit5Yig6Zmk5pys5qyh6KaB5Y+W5raI55qEIHN0YXRlcyDkuK3lrZjlnKjnmoTlsZ7mgKflgLzlkI7vvIxcbiAgICAgIC8vIOWmguaenCBrZXlTaGFwZSDmnIkgbmFtZSDlsZ7mgKfvvIzliJkgZmlsdGV0RGlzYWJsZVN0YXRlc1N0eWxlIOeahOagvOW8j+S4uiB7IGtleVNoYXBlTmFtZToge30gfVxuICAgICAgLy8g5ZCm5YiZ5Li65pmu6YCa5a+56LGhXG5cblxuICAgICAgaWYgKCFrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICBtaXgoZmlsdGV0RGlzYWJsZVN0YXRlc1N0eWxlLCBrZXlTaGFwZVN0eWxlc18xKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbHRldERpc2FibGVTdGF0ZXNTdHlsZVtrZXlTaGFwZU5hbWVfMV0gPSBrZXlTaGFwZVN0eWxlc18xO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gZW5hYmxlU3RhdGVzU3R5bGUpIHtcbiAgICAgICAgaWYgKGtlcHRBdHRyc1trZXldKSBjb250aW51ZTtcbiAgICAgICAgdmFyIGVuYWJsZVN0eWxlID0gZW5hYmxlU3RhdGVzU3R5bGVba2V5XTtcblxuICAgICAgICBpZiAoIWlzUGxhaW5PYmplY3QoZW5hYmxlU3R5bGUpIHx8IEFSUk9XUy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgLy8g5oqK5qC35byP5bGe5oCnbWVyZ2XliLBrZXlTaGFwZeS4rVxuICAgICAgICAgIGlmICgha2V5U2hhcGVOYW1lXzEpIHtcbiAgICAgICAgICAgIG1peChvcmlnaW5TdHlsZV8xLCAoX2EgPSB7fSwgX2Fba2V5XSA9IGVuYWJsZVN0eWxlLCBfYSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtaXgob3JpZ2luU3R5bGVfMVtrZXlTaGFwZU5hbWVfMV0sIChfYiA9IHt9LCBfYltrZXldID0gZW5hYmxlU3R5bGUsIF9iKSk7XG4gICAgICAgICAgICBkZWxldGUgb3JpZ2luU3R5bGVfMVtrZXldO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRlbGV0ZSBlbmFibGVTdGF0ZXNTdHlsZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBvcmlnaW5zdHlsZXMgPSB7fTtcbiAgICAgIGRlZXBNaXgob3JpZ2luc3R5bGVzLCBvcmlnaW5TdHlsZV8xLCBmaWx0ZXREaXNhYmxlU3RhdGVzU3R5bGUsIGVuYWJsZVN0YXRlc1N0eWxlKTtcbiAgICAgIHZhciBrZXlTaGFwZVNldHRlZCA9IGZhbHNlO1xuXG4gICAgICB2YXIgX2xvb3BfNCA9IGZ1bmN0aW9uIF9sb29wXzQob3JpZ2luS2V5KSB7XG4gICAgICAgIHZhciBfZSwgX2Y7XG5cbiAgICAgICAgdmFyIHN0eWxlID0gb3JpZ2luc3R5bGVzW29yaWdpbktleV07XG5cbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3Qoc3R5bGUpICYmICFBUlJPV1MuaW5jbHVkZXMob3JpZ2luS2V5KSkge1xuICAgICAgICAgIHZhciBzdWJTaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddW29yaWdpbktleV0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlLmdldCgnbmFtZScpID09PSBvcmlnaW5LZXk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoc3ViU2hhcGUpIHtcbiAgICAgICAgICAgIC8vIFRoZSB0ZXh0J3MgcG9zaXRpb24gYW5kIG1hdHJpeCBpcyBub3QgYWxsb3dlZCB0byBiZSBhZmZlY3RlZCBieSBzdGF0ZXNcbiAgICAgICAgICAgIGlmIChzdWJTaGFwZS5nZXQoJ3R5cGUnKSA9PT0gJ3RleHQnIHx8IHN1YlNoYXBlLmdldCgnbGFiZWxSZWxhdGVkJykpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIHN0eWxlLng7XG4gICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS55O1xuICAgICAgICAgICAgICBkZWxldGUgc3R5bGUubWF0cml4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3JpZ2luS2V5ID09PSBrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS5yO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS53aWR0aDtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3R5bGUuaGVpZ2h0O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAga2V5U2hhcGVTZXR0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWJTaGFwZS5hdHRyKHN0eWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWtleVNoYXBlU2V0dGVkKSB7XG4gICAgICAgICAgdmFyIHZhbHVlXzQgPSBzdHlsZSB8fCBTSEFQRVNfREVGQVVMVF9BVFRSU1t0eXBlXVtvcmlnaW5LZXldOyAvLyDlvZPmm7TmlrAgY29tYm8g54q25oCB5pe277yM5b2T5LiN5a2Y5ZyoIGtleVNoYXBlTmFtZSDml7blgJnvvIzliJnorqTkuLrmmK/orr7nva7liLAga2V5U2hhcGUg5LiK6Z2i55qEXG5cbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgaWYgKCFrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICAgICAgICBzaGFwZS5hdHRyKChfZSA9IHt9LCBfZVtvcmlnaW5LZXldID0gdmFsdWVfNCwgX2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUuYXR0cigoX2YgPSB7fSwgX2Zbb3JpZ2luS2V5XSA9IHZhbHVlXzQsIF9mKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBvcmlnaW5LZXkgaW4gb3JpZ2luc3R5bGVzKSB7XG4gICAgICAgIF9sb29wXzQob3JpZ2luS2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluS4jeWQjOeKtuaAgeS4i+eahOagt+W8j1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIE5vZGXmiJZFZGdl55qE5a6e5L6LXG4gICAqIEByZXR1cm4ge29iamVjdH0g5qC35byPXG4gICAqL1xuICBnZXRTdGF0ZVN0eWxlOiBmdW5jdGlvbiBnZXRTdGF0ZVN0eWxlKG5hbWUsIGl0ZW0pIHtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdmFyIHR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHZhciBfYSA9IHRoaXMuZ2V0T3B0aW9ucyhtb2RlbCksXG4gICAgICAgIHN0YXRlU3R5bGVzID0gX2Euc3RhdGVTdHlsZXMsXG4gICAgICAgIF9iID0gX2Euc3R5bGUsXG4gICAgICAgIHN0eWxlID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2I7XG5cbiAgICB2YXIgbW9kZWxTdGF0ZVN0eWxlID0gbW9kZWwuc3RhdGVTdHlsZXMgPyBtb2RlbC5zdGF0ZVN0eWxlc1tuYW1lXSA6IHN0YXRlU3R5bGVzICYmIHN0YXRlU3R5bGVzW25hbWVdO1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIHJldHVybiBjbG9uZShtb2RlbFN0YXRlU3R5bGUpO1xuICAgIH1cblxuICAgIHJldHVybiBtaXgoe30sIHN0eWxlLCBtb2RlbFN0YXRlU3R5bGUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5bmjqfliLbngrlcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6IqC54K544CB6L6555qE6YWN572u6aG5XG4gICAqIEByZXR1cm4ge0FycmF5fG51bGx9IOaOp+WItueCueeahOaVsOe7hCzlpoLmnpzkuLogbnVsbO+8jOWImeayoeacieaOp+WItueCuVxuICAgKi9cbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnLmNvbnRyb2xQb2ludHM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaOp+WItueCuVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnjgIHovrnnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl8bnVsbH0g6ZSa54K555qE5pWw57uELOWmguaenOS4uiBudWxs77yM5YiZ5rKh5pyJ6ZSa54K5XG4gICAqL1xuICBnZXRBbmNob3JQb2ludHM6IGZ1bmN0aW9uIGdldEFuY2hvclBvaW50cyhjZmcpIHtcbiAgICB2YXIgX2EsIF9iO1xuXG4gICAgdmFyIGFuY2hvclBvaW50cyA9IChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuYW5jaG9yUG9pbnRzKSB8fCAoKF9hID0gdGhpcy5nZXRDdXN0b21Db25maWcoY2ZnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmFuY2hvclBvaW50cykgfHwgKChfYiA9IHRoaXMub3B0aW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmFuY2hvclBvaW50cyk7XG4gICAgcmV0dXJuIGFuY2hvclBvaW50cztcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/shapeBase.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/element/xml.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g6-core/es/element/xml.js ***! \******************************************************/ /*! exports provided: xmlDataRenderer, parseXML, getBBox, generateTarget, compareTwoTarget, createNodeFromXML */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"xmlDataRenderer\", function() { return xmlDataRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseXML\", function() { return parseXML; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBox\", function() { return getBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateTarget\", function() { return generateTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compareTwoTarget\", function() { return compareTwoTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createNodeFromXML\", function() { return createNodeFromXML; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/**\n * @fileOverview 从xml建立自定义Node,包含update\n * @author xuzhi.mxz@antfin.com\n */\n\n\n\n/**\n * 一种更宽松的JSON 解析,如果遇到不符合规范的字段会直接转为字符串\n * @param text json 内容\n */\n\nfunction looseJSONParse(text) {\n if (typeof text !== 'string') {\n return text;\n }\n\n var safeParse = function safeParse(str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n try {\n return JSON.parse(str.trim());\n } catch (e) {\n return str.trim();\n }\n };\n\n var firstAttempt = safeParse(text);\n\n if (typeof firstAttempt !== 'string') {\n return firstAttempt;\n }\n\n var tail = function tail(arr) {\n return arr[arr.length - 1];\n };\n\n var str = text.trim();\n var objectStack = [];\n var syntaxStack = [];\n\n var isLastPair = function isLastPair() {\n var syntaxes = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n syntaxes[_i] = arguments[_i];\n }\n\n return syntaxes.some(function (syntax) {\n return tail(syntaxStack) === syntax;\n });\n };\n\n var getValueStore = function getValueStore() {\n return tail(objectStack);\n };\n\n var rst = null;\n var i = 0;\n var temp = '';\n\n while (i < str.length) {\n var nowChar = str[i];\n var isInString = isLastPair('\"', \"'\");\n\n if (!isInString && !nowChar.trim()) {\n i += 1;\n continue;\n }\n\n var isLastTranslate = str[i - 1] === '\\\\';\n var isInObject = isLastPair('}');\n var isInArray = isLastPair(']');\n var isWaitingValue = isLastPair(',');\n var tempArr = getValueStore();\n\n if (isInString) {\n if (tail(syntaxStack) === nowChar && !isLastTranslate) {\n syntaxStack.pop();\n var value = safeParse(temp);\n tempArr.push(value);\n rst = value;\n temp = '';\n } else {\n temp += nowChar;\n }\n } else if (isInArray && nowChar === ',') {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n } else if (isInObject && nowChar === ':') {\n syntaxStack.push(',');\n\n if (temp) {\n tempArr.push(temp);\n temp = '';\n }\n } else if (isWaitingValue && nowChar === ',') {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n syntaxStack.pop();\n } else if (nowChar === '}' && (isInObject || isWaitingValue)) {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n if (isWaitingValue) {\n syntaxStack.pop();\n }\n\n var obj = {};\n\n for (var c = 1; c < tempArr.length; c += 2) {\n obj[tempArr[c - 1]] = tempArr[c];\n }\n\n objectStack.pop();\n\n if (objectStack.length) {\n tail(objectStack).push(obj);\n }\n\n syntaxStack.pop();\n rst = obj;\n } else if (nowChar === ']' && isInArray) {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n objectStack.pop();\n\n if (objectStack.length) {\n tail(objectStack).push(tempArr);\n }\n\n syntaxStack.pop();\n rst = tempArr;\n } else if (nowChar === '{') {\n objectStack.push([]);\n syntaxStack.push('}');\n } else if (nowChar === '[') {\n objectStack.push([]);\n syntaxStack.push(']');\n } else if (nowChar === '\"') {\n syntaxStack.push('\"');\n } else if (nowChar === \"'\") {\n syntaxStack.push(\"'\");\n } else {\n temp += nowChar;\n }\n\n i += 1;\n }\n\n return rst || temp;\n}\n\nvar keyConvert = function keyConvert(str) {\n return str.split('-').reduce(function (a, b) {\n return a + b.charAt(0).toUpperCase() + b.slice(1);\n });\n};\n/**\n * 简单的一个{{}}模板渲染,不包含任何复杂语法\n * @param xml\n */\n\n\nvar xmlDataRenderer = function xmlDataRenderer(xml) {\n return function (data) {\n var len = xml.length;\n var arr = [];\n var i = 0;\n var tmp = '';\n\n while (i < len) {\n if (xml[i] === '{' && xml[i + 1] === '{') {\n arr.push(tmp);\n tmp = '';\n i += 2;\n } else if (xml[i] === '}' && xml[i + 1] === '}') {\n if (arr.length) {\n var last = arr.pop();\n tmp = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"get\"])(data, tmp, last.endsWith('=') ? \"\\\"{\".concat(tmp, \"}\\\"\") : tmp);\n arr.push(last + tmp);\n }\n\n i += 2;\n tmp = '';\n } else {\n tmp += xml[i];\n i += 1;\n }\n }\n\n arr.push(tmp);\n return arr.map(function (e, index) {\n return arr[index - 1] && arr[index - 1].endsWith('=') ? \"\\\"{\".concat(e, \"}\\\"\") : e;\n }).join('');\n };\n};\n/**\n * 解析XML,并转化为相应的JSON结构\n * @param xml xml解析后的节点\n */\n\nfunction parseXML(xml, cfg) {\n var attrs = {};\n var keys = xml.getAttributeNames && xml.getAttributeNames() || [];\n var children = xml.children && Array.from(xml.children).map(function (e) {\n return parseXML(e, cfg);\n });\n var rst = {};\n var tagName = xml.tagName ? xml.tagName.toLowerCase() : 'group';\n\n if (tagName === 'text') {\n attrs.text = xml.innerText;\n }\n\n rst.type = tagName;\n\n if (tagName === 'img') {\n rst.type = 'image';\n }\n\n Array.from(keys).forEach(function (k) {\n var key = keyConvert(k);\n var val = xml.getAttribute(k);\n\n try {\n if (key === 'style' || key === 'attrs') {\n var style = looseJSONParse(val);\n attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), style);\n } else {\n rst[key] = looseJSONParse(val);\n }\n } catch (e) {\n if (key === 'style') {\n throw e;\n }\n\n rst[key] = val;\n }\n });\n rst.attrs = attrs;\n\n if (cfg && cfg.style && rst.name && _typeof(cfg.style[rst.name]) === 'object') {\n rst.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, rst.attrs), cfg.style[rst.name]);\n }\n\n if (cfg && cfg.style && rst.keyshape) {\n rst.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, rst.attrs), cfg.style);\n }\n\n if (children.length) {\n rst.children = children;\n }\n\n return rst;\n}\n/**\n * 根据偏移量和内部节点最终的bounding box来得出该shape最终的bbox\n */\n\nfunction getBBox(node, offset, chilrenBBox) {\n var _a = node.attrs,\n attrs = _a === void 0 ? {} : _a;\n var bbox = {\n x: offset.x || 0,\n y: offset.y || 0,\n width: chilrenBBox.width || 0,\n height: chilrenBBox.height || 0\n };\n var shapeHeight, shapeWidth;\n\n switch (node.type) {\n case 'maker':\n case 'circle':\n if (attrs.r) {\n shapeWidth = 2 * attrs.r;\n shapeHeight = 2 * attrs.r;\n }\n\n break;\n\n case 'text':\n if (attrs.text) {\n shapeWidth = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getTextSize\"])(attrs.text, attrs.fontSize || 12)[0];\n shapeHeight = 16;\n bbox.y += shapeHeight;\n bbox.height = shapeHeight;\n bbox.width = shapeWidth;\n node.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n fontSize: 12,\n fill: '#000'\n }, attrs);\n }\n\n break;\n\n default:\n if (attrs.width) {\n shapeWidth = attrs.width;\n }\n\n if (attrs.height) {\n shapeHeight = attrs.height;\n }\n\n }\n\n if (shapeHeight >= 0) {\n bbox.height = shapeHeight;\n }\n\n if (shapeWidth >= 0) {\n bbox.width = shapeWidth;\n }\n\n if (attrs.marginTop) {\n bbox.y += attrs.marginTop;\n }\n\n if (attrs.marginLeft) {\n bbox.x += attrs.marginLeft;\n }\n\n return bbox;\n}\n/**\n * 把从xml计算出的结构填上位置信息,补全attrs\n * @param target\n * @param lastOffset\n */\n\nfunction generateTarget(target, lastOffset) {\n var _a;\n\n if (lastOffset === void 0) {\n lastOffset = {\n x: 0,\n y: 0\n };\n }\n\n var defaultBbox = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }, lastOffset);\n\n if ((_a = target.children) === null || _a === void 0 ? void 0 : _a.length) {\n var _b = target.attrs,\n attrs = _b === void 0 ? {} : _b;\n var marginTop = attrs.marginTop;\n\n var offset = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, lastOffset);\n\n if (marginTop) {\n offset.y += marginTop;\n }\n\n for (var index = 0; index < target.children.length; index++) {\n target.children[index].attrs.key = \"\".concat(attrs.key || 'root', \" -\").concat(index, \" \");\n var node = generateTarget(target.children[index], offset);\n\n if (node.bbox) {\n var bbox = node.bbox;\n\n if (node.attrs.next === 'inline') {\n offset.x += node.bbox.width;\n } else {\n offset.y += node.bbox.height;\n }\n\n if (bbox.width + bbox.x > defaultBbox.width) {\n defaultBbox.width = bbox.width + bbox.x;\n }\n\n if (bbox.height + bbox.y > defaultBbox.height) {\n defaultBbox.height = bbox.height + bbox.y;\n }\n }\n }\n }\n\n target.bbox = getBBox(target, lastOffset, defaultBbox);\n target.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, target.attrs), target.bbox);\n return target;\n}\n/**\n * 对比前后两个最终计算出来的node,并对比出最小改动,\n * 动作: 'add' 添加节点 | ’delete‘ 删除节点 | ’change‘ 改变节点attrs | 'restructure' 重构节点\n * @param nowTarget\n * @param formerTarget\n */\n\nfunction compareTwoTarget(nowTarget, formerTarget) {\n var _a, _b, _c, _d;\n\n var type = (nowTarget || {}).type;\n var key = ((formerTarget === null || formerTarget === void 0 ? void 0 : formerTarget.attrs) || {}).key;\n\n if (key && nowTarget) {\n nowTarget.attrs.key = key;\n }\n\n if (!nowTarget && formerTarget) {\n return {\n action: 'delete',\n val: formerTarget,\n type: type,\n key: key\n };\n }\n\n if (nowTarget && !formerTarget) {\n return {\n action: 'add',\n val: nowTarget,\n type: type\n };\n }\n\n if (!nowTarget && !formerTarget) {\n return {\n action: 'same',\n type: type\n };\n }\n\n var children = [];\n\n if (((_a = nowTarget.children) === null || _a === void 0 ? void 0 : _a.length) > 0 || ((_b = formerTarget.children) === null || _b === void 0 ? void 0 : _b.length) > 0) {\n var length_1 = Math.max((_c = nowTarget.children) === null || _c === void 0 ? void 0 : _c.length, (_d = formerTarget.children) === null || _d === void 0 ? void 0 : _d.length);\n var formerChilren = formerTarget.children || [];\n var nowChilren = nowTarget.children || [];\n\n for (var index = 0; index < length_1; index += 1) {\n children.push(compareTwoTarget(nowChilren[index], formerChilren[index]));\n }\n }\n\n var formerKeys = Object.keys(formerTarget.attrs);\n var nowKeys = Object.keys(nowTarget.attrs);\n\n if (formerTarget.type !== nowTarget.type) {\n return {\n action: 'restructure',\n nowTarget: nowTarget,\n formerTarget: formerTarget,\n key: key,\n children: children\n };\n }\n\n if (formerKeys.filter(function (e) {\n return e !== 'children';\n }).some(function (e) {\n return nowTarget.attrs[e] !== formerTarget.attrs[e] || !nowKeys.includes(e);\n })) {\n return {\n action: 'change',\n val: nowTarget,\n children: children,\n type: type,\n key: key\n };\n }\n\n return {\n action: 'same',\n children: children,\n type: type,\n key: key\n };\n}\n/**\n * 根据xml或者返回xml的函数构建自定义节点的结构\n * @param gen\n */\n\nfunction createNodeFromXML(gen) {\n var structures = {};\n\n var compileXML = function compileXML(cfg) {\n var rawStr = typeof gen === 'function' ? gen(cfg) : gen;\n var target = xmlDataRenderer(rawStr)(cfg);\n var xmlParser = document.createElement('div');\n xmlParser.innerHTML = target;\n var xml = xmlParser.children[0];\n var result = generateTarget(parseXML(xml, cfg));\n xmlParser.remove();\n return result;\n };\n\n return {\n draw: function draw(cfg, group) {\n var resultTarget = compileXML(cfg);\n var keyshape = group;\n\n var renderTarget = function renderTarget(target) {\n var _a = target.attrs,\n attrs = _a === void 0 ? {} : _a,\n bbox = target.bbox,\n type = target.type,\n children = target.children,\n rest = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(target, [\"attrs\", \"bbox\", \"type\", \"children\"]);\n\n if (target.type !== 'group') {\n var shape = group.addShape(target.type, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n attrs: attrs,\n origin: {\n bbox: bbox,\n type: type,\n children: children\n }\n }, rest));\n\n if (target.keyshape) {\n keyshape = shape;\n }\n }\n\n if (target.children) {\n target.children.forEach(function (n) {\n return renderTarget(n);\n });\n }\n };\n\n renderTarget(resultTarget);\n structures[cfg.id] = [resultTarget];\n return keyshape;\n },\n update: function update(cfg, node) {\n if (!structures[cfg.id]) {\n structures[cfg.id] = [];\n }\n\n var container = node.getContainer();\n var children = container.get('children');\n var newTarget = compileXML(cfg);\n var lastTarget = structures[cfg.id].pop();\n var diffResult = compareTwoTarget(newTarget, lastTarget);\n\n var addShape = function addShape(shape) {\n var _a;\n\n if (shape.type !== 'group') {\n container.addShape(shape.type, {\n attrs: shape.attrs\n });\n }\n\n if ((_a = shape.children) === null || _a === void 0 ? void 0 : _a.length) {\n shape.children.map(function (e) {\n return addShape(e);\n });\n }\n };\n\n var delShape = function delShape(shape) {\n var _a;\n\n var targetShape = children.find(function (e) {\n return e.attrs.key === shape.attrs.key;\n });\n\n if (targetShape) {\n container.removeChild(targetShape);\n }\n\n if ((_a = shape.children) === null || _a === void 0 ? void 0 : _a.length) {\n shape.children.map(function (e) {\n return delShape(e);\n });\n }\n };\n\n var updateTarget = function updateTarget(target) {\n var key = target.key;\n\n if (target.type !== 'group') {\n var targetShape = children.find(function (e) {\n return e.attrs.key === key;\n });\n\n switch (target.action) {\n case 'change':\n if (targetShape) {\n var originAttr = target.val.keyshape ? node.getOriginStyle() : {};\n targetShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, originAttr), target.val.attrs));\n }\n\n break;\n\n case 'add':\n addShape(target.val);\n break;\n\n case 'delete':\n delShape(target.val);\n break;\n\n case 'restructure':\n delShape(target.formerTarget);\n addShape(target.nowTarget);\n break;\n\n default:\n break;\n }\n }\n\n if (target.children) {\n target.children.forEach(function (n) {\n return updateTarget(n);\n });\n }\n };\n\n updateTarget(diffResult);\n structures[cfg.id].push(newTarget);\n },\n getAnchorPoints: function getAnchorPoints() {\n return [[0, 0.5], [1, 0.5], [0.5, 1], [0.5, 0]];\n }\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3htbC5qcz85NGQ2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQXVCLDJCQUEyQixzR0FBc0csbUJBQW1CLEVBQUUsbUJBQW1CLDZIQUE2SCxFQUFFLGVBQWU7O0FBRTlVO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ1I7QUFDYTtBQUM5QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSyx3QkFBd0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLHFCQUFxQixvQkFBb0I7QUFDekM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUssd0JBQXdCO0FBQzdCO0FBQ0EseUJBQXlCO0FBQ3pCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsT0FBTyx1QkFBdUIsc0JBQXNCO0FBQ3BEO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQUcscUNBQXFDLGdCQUFnQjtBQUN4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtFQUFrRSxjQUFjO0FBQ2hGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDcEMsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxnQkFBZ0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3BDOztBQUVBO0FBQ0EsZ0JBQWdCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNwQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUIsaUVBQVc7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVE7QUFDN0I7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixzREFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGtDQUFrQztBQUNsQzs7QUFFQSxpQkFBaUIsc0RBQVEsR0FBRzs7QUFFNUI7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixnQ0FBZ0M7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUEsNkJBQTZCO0FBQzdCLG1HQUFtRzs7QUFFbkc7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixrQkFBa0I7QUFDekM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0RBQU07O0FBRXpCO0FBQ0Esa0RBQWtELHNEQUFRO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyRDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2VsZW1lbnQveG1sLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH0sIF90eXBlb2Yob2JqKTsgfVxuXG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcg5LuOeG1s5bu656uL6Ieq5a6a5LmJTm9kZe+8jOWMheWQq3VwZGF0ZVxuICogQGF1dGhvciB4dXpoaS5teHpAYW50ZmluLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGdldFRleHRTaXplIH0gZnJvbSAnLi4vdXRpbC9ncmFwaGljJztcbi8qKlxuICog5LiA56eN5pu05a695p2+55qESlNPTiDop6PmnpDvvIzlpoLmnpzpgYfliLDkuI3nrKblkIjop4TojIPnmoTlrZfmrrXkvJrnm7TmjqXovazkuLrlrZfnrKbkuLJcbiAqIEBwYXJhbSB0ZXh0IGpzb24g5YaF5a65XG4gKi9cblxuZnVuY3Rpb24gbG9vc2VKU09OUGFyc2UodGV4dCkge1xuICBpZiAodHlwZW9mIHRleHQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICB2YXIgc2FmZVBhcnNlID0gZnVuY3Rpb24gc2FmZVBhcnNlKHN0cikge1xuICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyLnRyaW0oKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHN0ci50cmltKCk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBmaXJzdEF0dGVtcHQgPSBzYWZlUGFyc2UodGV4dCk7XG5cbiAgaWYgKHR5cGVvZiBmaXJzdEF0dGVtcHQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZpcnN0QXR0ZW1wdDtcbiAgfVxuXG4gIHZhciB0YWlsID0gZnVuY3Rpb24gdGFpbChhcnIpIHtcbiAgICByZXR1cm4gYXJyW2Fyci5sZW5ndGggLSAxXTtcbiAgfTtcblxuICB2YXIgc3RyID0gdGV4dC50cmltKCk7XG4gIHZhciBvYmplY3RTdGFjayA9IFtdO1xuICB2YXIgc3ludGF4U3RhY2sgPSBbXTtcblxuICB2YXIgaXNMYXN0UGFpciA9IGZ1bmN0aW9uIGlzTGFzdFBhaXIoKSB7XG4gICAgdmFyIHN5bnRheGVzID0gW107XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgc3ludGF4ZXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ludGF4ZXMuc29tZShmdW5jdGlvbiAoc3ludGF4KSB7XG4gICAgICByZXR1cm4gdGFpbChzeW50YXhTdGFjaykgPT09IHN5bnRheDtcbiAgICB9KTtcbiAgfTtcblxuICB2YXIgZ2V0VmFsdWVTdG9yZSA9IGZ1bmN0aW9uIGdldFZhbHVlU3RvcmUoKSB7XG4gICAgcmV0dXJuIHRhaWwob2JqZWN0U3RhY2spO1xuICB9O1xuXG4gIHZhciByc3QgPSBudWxsO1xuICB2YXIgaSA9IDA7XG4gIHZhciB0ZW1wID0gJyc7XG5cbiAgd2hpbGUgKGkgPCBzdHIubGVuZ3RoKSB7XG4gICAgdmFyIG5vd0NoYXIgPSBzdHJbaV07XG4gICAgdmFyIGlzSW5TdHJpbmcgPSBpc0xhc3RQYWlyKCdcIicsIFwiJ1wiKTtcblxuICAgIGlmICghaXNJblN0cmluZyAmJiAhbm93Q2hhci50cmltKCkpIHtcbiAgICAgIGkgKz0gMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBpc0xhc3RUcmFuc2xhdGUgPSBzdHJbaSAtIDFdID09PSAnXFxcXCc7XG4gICAgdmFyIGlzSW5PYmplY3QgPSBpc0xhc3RQYWlyKCd9Jyk7XG4gICAgdmFyIGlzSW5BcnJheSA9IGlzTGFzdFBhaXIoJ10nKTtcbiAgICB2YXIgaXNXYWl0aW5nVmFsdWUgPSBpc0xhc3RQYWlyKCcsJyk7XG4gICAgdmFyIHRlbXBBcnIgPSBnZXRWYWx1ZVN0b3JlKCk7XG5cbiAgICBpZiAoaXNJblN0cmluZykge1xuICAgICAgaWYgKHRhaWwoc3ludGF4U3RhY2spID09PSBub3dDaGFyICYmICFpc0xhc3RUcmFuc2xhdGUpIHtcbiAgICAgICAgc3ludGF4U3RhY2sucG9wKCk7XG4gICAgICAgIHZhciB2YWx1ZSA9IHNhZmVQYXJzZSh0ZW1wKTtcbiAgICAgICAgdGVtcEFyci5wdXNoKHZhbHVlKTtcbiAgICAgICAgcnN0ID0gdmFsdWU7XG4gICAgICAgIHRlbXAgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRlbXAgKz0gbm93Q2hhcjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzSW5BcnJheSAmJiBub3dDaGFyID09PSAnLCcpIHtcbiAgICAgIGlmICh0ZW1wKSB7XG4gICAgICAgIHRlbXBBcnIucHVzaChzYWZlUGFyc2UodGVtcCkpO1xuICAgICAgICB0ZW1wID0gJyc7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0luT2JqZWN0ICYmIG5vd0NoYXIgPT09ICc6Jykge1xuICAgICAgc3ludGF4U3RhY2sucHVzaCgnLCcpO1xuXG4gICAgICBpZiAodGVtcCkge1xuICAgICAgICB0ZW1wQXJyLnB1c2godGVtcCk7XG4gICAgICAgIHRlbXAgPSAnJztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2FpdGluZ1ZhbHVlICYmIG5vd0NoYXIgPT09ICcsJykge1xuICAgICAgaWYgKHRlbXApIHtcbiAgICAgICAgdGVtcEFyci5wdXNoKHNhZmVQYXJzZSh0ZW1wKSk7XG4gICAgICAgIHRlbXAgPSAnJztcbiAgICAgIH1cblxuICAgICAgc3ludGF4U3RhY2sucG9wKCk7XG4gICAgfSBlbHNlIGlmIChub3dDaGFyID09PSAnfScgJiYgKGlzSW5PYmplY3QgfHwgaXNXYWl0aW5nVmFsdWUpKSB7XG4gICAgICBpZiAodGVtcCkge1xuICAgICAgICB0ZW1wQXJyLnB1c2goc2FmZVBhcnNlKHRlbXApKTtcbiAgICAgICAgdGVtcCA9ICcnO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNXYWl0aW5nVmFsdWUpIHtcbiAgICAgICAgc3ludGF4U3RhY2sucG9wKCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBvYmogPSB7fTtcblxuICAgICAgZm9yICh2YXIgYyA9IDE7IGMgPCB0ZW1wQXJyLmxlbmd0aDsgYyArPSAyKSB7XG4gICAgICAgIG9ialt0ZW1wQXJyW2MgLSAxXV0gPSB0ZW1wQXJyW2NdO1xuICAgICAgfVxuXG4gICAgICBvYmplY3RTdGFjay5wb3AoKTtcblxuICAgICAgaWYgKG9iamVjdFN0YWNrLmxlbmd0aCkge1xuICAgICAgICB0YWlsKG9iamVjdFN0YWNrKS5wdXNoKG9iaik7XG4gICAgICB9XG5cbiAgICAgIHN5bnRheFN0YWNrLnBvcCgpO1xuICAgICAgcnN0ID0gb2JqO1xuICAgIH0gZWxzZSBpZiAobm93Q2hhciA9PT0gJ10nICYmIGlzSW5BcnJheSkge1xuICAgICAgaWYgKHRlbXApIHtcbiAgICAgICAgdGVtcEFyci5wdXNoKHNhZmVQYXJzZSh0ZW1wKSk7XG4gICAgICAgIHRlbXAgPSAnJztcbiAgICAgIH1cblxuICAgICAgb2JqZWN0U3RhY2sucG9wKCk7XG5cbiAgICAgIGlmIChvYmplY3RTdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdGFpbChvYmplY3RTdGFjaykucHVzaCh0ZW1wQXJyKTtcbiAgICAgIH1cblxuICAgICAgc3ludGF4U3RhY2sucG9wKCk7XG4gICAgICByc3QgPSB0ZW1wQXJyO1xuICAgIH0gZWxzZSBpZiAobm93Q2hhciA9PT0gJ3snKSB7XG4gICAgICBvYmplY3RTdGFjay5wdXNoKFtdKTtcbiAgICAgIHN5bnRheFN0YWNrLnB1c2goJ30nKTtcbiAgICB9IGVsc2UgaWYgKG5vd0NoYXIgPT09ICdbJykge1xuICAgICAgb2JqZWN0U3RhY2sucHVzaChbXSk7XG4gICAgICBzeW50YXhTdGFjay5wdXNoKCddJyk7XG4gICAgfSBlbHNlIGlmIChub3dDaGFyID09PSAnXCInKSB7XG4gICAgICBzeW50YXhTdGFjay5wdXNoKCdcIicpO1xuICAgIH0gZWxzZSBpZiAobm93Q2hhciA9PT0gXCInXCIpIHtcbiAgICAgIHN5bnRheFN0YWNrLnB1c2goXCInXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZW1wICs9IG5vd0NoYXI7XG4gICAgfVxuXG4gICAgaSArPSAxO1xuICB9XG5cbiAgcmV0dXJuIHJzdCB8fCB0ZW1wO1xufVxuXG52YXIga2V5Q29udmVydCA9IGZ1bmN0aW9uIGtleUNvbnZlcnQoc3RyKSB7XG4gIHJldHVybiBzdHIuc3BsaXQoJy0nKS5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYSArIGIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBiLnNsaWNlKDEpO1xuICB9KTtcbn07XG4vKipcbiAqIOeugOWNleeahOS4gOS4qnt7fX3mqKHmnb/muLLmn5PvvIzkuI3ljIXlkKvku7vkvZXlpI3mnYLor63ms5VcbiAqIEBwYXJhbSB4bWxcbiAqL1xuXG5cbmV4cG9ydCB2YXIgeG1sRGF0YVJlbmRlcmVyID0gZnVuY3Rpb24geG1sRGF0YVJlbmRlcmVyKHhtbCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgbGVuID0geG1sLmxlbmd0aDtcbiAgICB2YXIgYXJyID0gW107XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciB0bXAgPSAnJztcblxuICAgIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgICBpZiAoeG1sW2ldID09PSAneycgJiYgeG1sW2kgKyAxXSA9PT0gJ3snKSB7XG4gICAgICAgIGFyci5wdXNoKHRtcCk7XG4gICAgICAgIHRtcCA9ICcnO1xuICAgICAgICBpICs9IDI7XG4gICAgICB9IGVsc2UgaWYgKHhtbFtpXSA9PT0gJ30nICYmIHhtbFtpICsgMV0gPT09ICd9Jykge1xuICAgICAgICBpZiAoYXJyLmxlbmd0aCkge1xuICAgICAgICAgIHZhciBsYXN0ID0gYXJyLnBvcCgpO1xuICAgICAgICAgIHRtcCA9IGdldChkYXRhLCB0bXAsIGxhc3QuZW5kc1dpdGgoJz0nKSA/IFwiXFxcIntcIi5jb25jYXQodG1wLCBcIn1cXFwiXCIpIDogdG1wKTtcbiAgICAgICAgICBhcnIucHVzaChsYXN0ICsgdG1wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgdG1wID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0bXAgKz0geG1sW2ldO1xuICAgICAgICBpICs9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXJyLnB1c2godG1wKTtcbiAgICByZXR1cm4gYXJyLm1hcChmdW5jdGlvbiAoZSwgaW5kZXgpIHtcbiAgICAgIHJldHVybiBhcnJbaW5kZXggLSAxXSAmJiBhcnJbaW5kZXggLSAxXS5lbmRzV2l0aCgnPScpID8gXCJcXFwie1wiLmNvbmNhdChlLCBcIn1cXFwiXCIpIDogZTtcbiAgICB9KS5qb2luKCcnKTtcbiAgfTtcbn07XG4vKipcbiAqIOino+aekFhNTO+8jOW5tui9rOWMluS4uuebuOW6lOeahEpTT07nu5PmnoRcbiAqIEBwYXJhbSB4bWwgeG1s6Kej5p6Q5ZCO55qE6IqC54K5XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWE1MKHhtbCwgY2ZnKSB7XG4gIHZhciBhdHRycyA9IHt9O1xuICB2YXIga2V5cyA9IHhtbC5nZXRBdHRyaWJ1dGVOYW1lcyAmJiB4bWwuZ2V0QXR0cmlidXRlTmFtZXMoKSB8fCBbXTtcbiAgdmFyIGNoaWxkcmVuID0geG1sLmNoaWxkcmVuICYmIEFycmF5LmZyb20oeG1sLmNoaWxkcmVuKS5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4gcGFyc2VYTUwoZSwgY2ZnKTtcbiAgfSk7XG4gIHZhciByc3QgPSB7fTtcbiAgdmFyIHRhZ05hbWUgPSB4bWwudGFnTmFtZSA/IHhtbC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgOiAnZ3JvdXAnO1xuXG4gIGlmICh0YWdOYW1lID09PSAndGV4dCcpIHtcbiAgICBhdHRycy50ZXh0ID0geG1sLmlubmVyVGV4dDtcbiAgfVxuXG4gIHJzdC50eXBlID0gdGFnTmFtZTtcblxuICBpZiAodGFnTmFtZSA9PT0gJ2ltZycpIHtcbiAgICByc3QudHlwZSA9ICdpbWFnZSc7XG4gIH1cblxuICBBcnJheS5mcm9tKGtleXMpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICB2YXIga2V5ID0ga2V5Q29udmVydChrKTtcbiAgICB2YXIgdmFsID0geG1sLmdldEF0dHJpYnV0ZShrKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoa2V5ID09PSAnc3R5bGUnIHx8IGtleSA9PT0gJ2F0dHJzJykge1xuICAgICAgICB2YXIgc3R5bGUgPSBsb29zZUpTT05QYXJzZSh2YWwpO1xuICAgICAgICBhdHRycyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHN0eWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzdFtrZXldID0gbG9vc2VKU09OUGFyc2UodmFsKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG5cbiAgICAgIHJzdFtrZXldID0gdmFsO1xuICAgIH1cbiAgfSk7XG4gIHJzdC5hdHRycyA9IGF0dHJzO1xuXG4gIGlmIChjZmcgJiYgY2ZnLnN0eWxlICYmIHJzdC5uYW1lICYmIF90eXBlb2YoY2ZnLnN0eWxlW3JzdC5uYW1lXSkgPT09ICdvYmplY3QnKSB7XG4gICAgcnN0LmF0dHJzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJzdC5hdHRycyksIGNmZy5zdHlsZVtyc3QubmFtZV0pO1xuICB9XG5cbiAgaWYgKGNmZyAmJiBjZmcuc3R5bGUgJiYgcnN0LmtleXNoYXBlKSB7XG4gICAgcnN0LmF0dHJzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJzdC5hdHRycyksIGNmZy5zdHlsZSk7XG4gIH1cblxuICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgcnN0LmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH1cblxuICByZXR1cm4gcnN0O1xufVxuLyoqXG4gKiDmoLnmja7lgY/np7vph4/lkozlhoXpg6joioLngrnmnIDnu4jnmoRib3VuZGluZyBib3jmnaXlvpflh7ror6VzaGFwZeacgOe7iOeahGJib3hcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QkJveChub2RlLCBvZmZzZXQsIGNoaWxyZW5CQm94KSB7XG4gIHZhciBfYSA9IG5vZGUuYXR0cnMsXG4gICAgICBhdHRycyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICB2YXIgYmJveCA9IHtcbiAgICB4OiBvZmZzZXQueCB8fCAwLFxuICAgIHk6IG9mZnNldC55IHx8IDAsXG4gICAgd2lkdGg6IGNoaWxyZW5CQm94LndpZHRoIHx8IDAsXG4gICAgaGVpZ2h0OiBjaGlscmVuQkJveC5oZWlnaHQgfHwgMFxuICB9O1xuICB2YXIgc2hhcGVIZWlnaHQsIHNoYXBlV2lkdGg7XG5cbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlICdtYWtlcic6XG4gICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgIGlmIChhdHRycy5yKSB7XG4gICAgICAgIHNoYXBlV2lkdGggPSAyICogYXR0cnMucjtcbiAgICAgICAgc2hhcGVIZWlnaHQgPSAyICogYXR0cnMucjtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICd0ZXh0JzpcbiAgICAgIGlmIChhdHRycy50ZXh0KSB7XG4gICAgICAgIHNoYXBlV2lkdGggPSBnZXRUZXh0U2l6ZShhdHRycy50ZXh0LCBhdHRycy5mb250U2l6ZSB8fCAxMilbMF07XG4gICAgICAgIHNoYXBlSGVpZ2h0ID0gMTY7XG4gICAgICAgIGJib3gueSArPSBzaGFwZUhlaWdodDtcbiAgICAgICAgYmJveC5oZWlnaHQgPSBzaGFwZUhlaWdodDtcbiAgICAgICAgYmJveC53aWR0aCA9IHNoYXBlV2lkdGg7XG4gICAgICAgIG5vZGUuYXR0cnMgPSBfX2Fzc2lnbih7XG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgIGZpbGw6ICcjMDAwJ1xuICAgICAgICB9LCBhdHRycyk7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChhdHRycy53aWR0aCkge1xuICAgICAgICBzaGFwZVdpZHRoID0gYXR0cnMud2lkdGg7XG4gICAgICB9XG5cbiAgICAgIGlmIChhdHRycy5oZWlnaHQpIHtcbiAgICAgICAgc2hhcGVIZWlnaHQgPSBhdHRycy5oZWlnaHQ7XG4gICAgICB9XG5cbiAgfVxuXG4gIGlmIChzaGFwZUhlaWdodCA+PSAwKSB7XG4gICAgYmJveC5oZWlnaHQgPSBzaGFwZUhlaWdodDtcbiAgfVxuXG4gIGlmIChzaGFwZVdpZHRoID49IDApIHtcbiAgICBiYm94LndpZHRoID0gc2hhcGVXaWR0aDtcbiAgfVxuXG4gIGlmIChhdHRycy5tYXJnaW5Ub3ApIHtcbiAgICBiYm94LnkgKz0gYXR0cnMubWFyZ2luVG9wO1xuICB9XG5cbiAgaWYgKGF0dHJzLm1hcmdpbkxlZnQpIHtcbiAgICBiYm94LnggKz0gYXR0cnMubWFyZ2luTGVmdDtcbiAgfVxuXG4gIHJldHVybiBiYm94O1xufVxuLyoqXG4gKiDmiorku454bWzorqHnrpflh7rnmoTnu5PmnoTloavkuIrkvY3nva7kv6Hmga/vvIzooaXlhahhdHRyc1xuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGxhc3RPZmZzZXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVUYXJnZXQodGFyZ2V0LCBsYXN0T2Zmc2V0KSB7XG4gIHZhciBfYTtcblxuICBpZiAobGFzdE9mZnNldCA9PT0gdm9pZCAwKSB7XG4gICAgbGFzdE9mZnNldCA9IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgfVxuXG4gIHZhciBkZWZhdWx0QmJveCA9IF9fYXNzaWduKHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH0sIGxhc3RPZmZzZXQpO1xuXG4gIGlmICgoX2EgPSB0YXJnZXQuY2hpbGRyZW4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHtcbiAgICB2YXIgX2IgPSB0YXJnZXQuYXR0cnMsXG4gICAgICAgIGF0dHJzID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2I7XG4gICAgdmFyIG1hcmdpblRvcCA9IGF0dHJzLm1hcmdpblRvcDtcblxuICAgIHZhciBvZmZzZXQgPSBfX2Fzc2lnbih7fSwgbGFzdE9mZnNldCk7XG5cbiAgICBpZiAobWFyZ2luVG9wKSB7XG4gICAgICBvZmZzZXQueSArPSBtYXJnaW5Ub3A7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRhcmdldC5jaGlsZHJlbi5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHRhcmdldC5jaGlsZHJlbltpbmRleF0uYXR0cnMua2V5ID0gXCJcIi5jb25jYXQoYXR0cnMua2V5IHx8ICdyb290JywgXCIgLVwiKS5jb25jYXQoaW5kZXgsIFwiIFwiKTtcbiAgICAgIHZhciBub2RlID0gZ2VuZXJhdGVUYXJnZXQodGFyZ2V0LmNoaWxkcmVuW2luZGV4XSwgb2Zmc2V0KTtcblxuICAgICAgaWYgKG5vZGUuYmJveCkge1xuICAgICAgICB2YXIgYmJveCA9IG5vZGUuYmJveDtcblxuICAgICAgICBpZiAobm9kZS5hdHRycy5uZXh0ID09PSAnaW5saW5lJykge1xuICAgICAgICAgIG9mZnNldC54ICs9IG5vZGUuYmJveC53aWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmZzZXQueSArPSBub2RlLmJib3guaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJib3gud2lkdGggKyBiYm94LnggPiBkZWZhdWx0QmJveC53aWR0aCkge1xuICAgICAgICAgIGRlZmF1bHRCYm94LndpZHRoID0gYmJveC53aWR0aCArIGJib3gueDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiYm94LmhlaWdodCArIGJib3gueSA+IGRlZmF1bHRCYm94LmhlaWdodCkge1xuICAgICAgICAgIGRlZmF1bHRCYm94LmhlaWdodCA9IGJib3guaGVpZ2h0ICsgYmJveC55O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGFyZ2V0LmJib3ggPSBnZXRCQm94KHRhcmdldCwgbGFzdE9mZnNldCwgZGVmYXVsdEJib3gpO1xuICB0YXJnZXQuYXR0cnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGFyZ2V0LmF0dHJzKSwgdGFyZ2V0LmJib3gpO1xuICByZXR1cm4gdGFyZ2V0O1xufVxuLyoqXG4gKiDlr7nmr5TliY3lkI7kuKTkuKrmnIDnu4jorqHnrpflh7rmnaXnmoRub2Rl77yM5bm25a+55q+U5Ye65pyA5bCP5pS55YqoLFxuICog5Yqo5L2c77yaICdhZGQnIOa3u+WKoOiKgueCuSDvvZwg4oCZZGVsZXRl4oCYIOWIoOmZpOiKgueCuSDvvZwg4oCZY2hhbmdl4oCYIOaUueWPmOiKgueCuWF0dHJzIO+9nCAncmVzdHJ1Y3R1cmUnIOmHjeaehOiKgueCuVxuICogQHBhcmFtIG5vd1RhcmdldFxuICogQHBhcmFtIGZvcm1lclRhcmdldFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlVHdvVGFyZ2V0KG5vd1RhcmdldCwgZm9ybWVyVGFyZ2V0KSB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZDtcblxuICB2YXIgdHlwZSA9IChub3dUYXJnZXQgfHwge30pLnR5cGU7XG4gIHZhciBrZXkgPSAoKGZvcm1lclRhcmdldCA9PT0gbnVsbCB8fCBmb3JtZXJUYXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZvcm1lclRhcmdldC5hdHRycykgfHwge30pLmtleTtcblxuICBpZiAoa2V5ICYmIG5vd1RhcmdldCkge1xuICAgIG5vd1RhcmdldC5hdHRycy5rZXkgPSBrZXk7XG4gIH1cblxuICBpZiAoIW5vd1RhcmdldCAmJiBmb3JtZXJUYXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnZGVsZXRlJyxcbiAgICAgIHZhbDogZm9ybWVyVGFyZ2V0LFxuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIGtleToga2V5XG4gICAgfTtcbiAgfVxuXG4gIGlmIChub3dUYXJnZXQgJiYgIWZvcm1lclRhcmdldCkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb246ICdhZGQnLFxuICAgICAgdmFsOiBub3dUYXJnZXQsXG4gICAgICB0eXBlOiB0eXBlXG4gICAgfTtcbiAgfVxuXG4gIGlmICghbm93VGFyZ2V0ICYmICFmb3JtZXJUYXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnc2FtZScsXG4gICAgICB0eXBlOiB0eXBlXG4gICAgfTtcbiAgfVxuXG4gIHZhciBjaGlsZHJlbiA9IFtdO1xuXG4gIGlmICgoKF9hID0gbm93VGFyZ2V0LmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDAgfHwgKChfYiA9IGZvcm1lclRhcmdldC5jaGlsZHJlbikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgPiAwKSB7XG4gICAgdmFyIGxlbmd0aF8xID0gTWF0aC5tYXgoKF9jID0gbm93VGFyZ2V0LmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubGVuZ3RoLCAoX2QgPSBmb3JtZXJUYXJnZXQuY2hpbGRyZW4pID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5sZW5ndGgpO1xuICAgIHZhciBmb3JtZXJDaGlscmVuID0gZm9ybWVyVGFyZ2V0LmNoaWxkcmVuIHx8IFtdO1xuICAgIHZhciBub3dDaGlscmVuID0gbm93VGFyZ2V0LmNoaWxkcmVuIHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aF8xOyBpbmRleCArPSAxKSB7XG4gICAgICBjaGlsZHJlbi5wdXNoKGNvbXBhcmVUd29UYXJnZXQobm93Q2hpbHJlbltpbmRleF0sIGZvcm1lckNoaWxyZW5baW5kZXhdKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGZvcm1lcktleXMgPSBPYmplY3Qua2V5cyhmb3JtZXJUYXJnZXQuYXR0cnMpO1xuICB2YXIgbm93S2V5cyA9IE9iamVjdC5rZXlzKG5vd1RhcmdldC5hdHRycyk7XG5cbiAgaWYgKGZvcm1lclRhcmdldC50eXBlICE9PSBub3dUYXJnZXQudHlwZSkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb246ICdyZXN0cnVjdHVyZScsXG4gICAgICBub3dUYXJnZXQ6IG5vd1RhcmdldCxcbiAgICAgIGZvcm1lclRhcmdldDogZm9ybWVyVGFyZ2V0LFxuICAgICAga2V5OiBrZXksXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9O1xuICB9XG5cbiAgaWYgKGZvcm1lcktleXMuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgcmV0dXJuIGUgIT09ICdjaGlsZHJlbic7XG4gIH0pLnNvbWUoZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4gbm93VGFyZ2V0LmF0dHJzW2VdICE9PSBmb3JtZXJUYXJnZXQuYXR0cnNbZV0gfHwgIW5vd0tleXMuaW5jbHVkZXMoZSk7XG4gIH0pKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2NoYW5nZScsXG4gICAgICB2YWw6IG5vd1RhcmdldCxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBrZXk6IGtleVxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbjogJ3NhbWUnLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5XG4gIH07XG59XG4vKipcbiAqIOagueaNrnhtbOaIluiAhei/lOWbnnhtbOeahOWHveaVsOaehOW7uuiHquWumuS5ieiKgueCueeahOe7k+aehFxuICogQHBhcmFtIGdlblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOb2RlRnJvbVhNTChnZW4pIHtcbiAgdmFyIHN0cnVjdHVyZXMgPSB7fTtcblxuICB2YXIgY29tcGlsZVhNTCA9IGZ1bmN0aW9uIGNvbXBpbGVYTUwoY2ZnKSB7XG4gICAgdmFyIHJhd1N0ciA9IHR5cGVvZiBnZW4gPT09ICdmdW5jdGlvbicgPyBnZW4oY2ZnKSA6IGdlbjtcbiAgICB2YXIgdGFyZ2V0ID0geG1sRGF0YVJlbmRlcmVyKHJhd1N0cikoY2ZnKTtcbiAgICB2YXIgeG1sUGFyc2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgeG1sUGFyc2VyLmlubmVySFRNTCA9IHRhcmdldDtcbiAgICB2YXIgeG1sID0geG1sUGFyc2VyLmNoaWxkcmVuWzBdO1xuICAgIHZhciByZXN1bHQgPSBnZW5lcmF0ZVRhcmdldChwYXJzZVhNTCh4bWwsIGNmZykpO1xuICAgIHhtbFBhcnNlci5yZW1vdmUoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjZmcsIGdyb3VwKSB7XG4gICAgICB2YXIgcmVzdWx0VGFyZ2V0ID0gY29tcGlsZVhNTChjZmcpO1xuICAgICAgdmFyIGtleXNoYXBlID0gZ3JvdXA7XG5cbiAgICAgIHZhciByZW5kZXJUYXJnZXQgPSBmdW5jdGlvbiByZW5kZXJUYXJnZXQodGFyZ2V0KSB7XG4gICAgICAgIHZhciBfYSA9IHRhcmdldC5hdHRycyxcbiAgICAgICAgICAgIGF0dHJzID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2EsXG4gICAgICAgICAgICBiYm94ID0gdGFyZ2V0LmJib3gsXG4gICAgICAgICAgICB0eXBlID0gdGFyZ2V0LnR5cGUsXG4gICAgICAgICAgICBjaGlsZHJlbiA9IHRhcmdldC5jaGlsZHJlbixcbiAgICAgICAgICAgIHJlc3QgPSBfX3Jlc3QodGFyZ2V0LCBbXCJhdHRyc1wiLCBcImJib3hcIiwgXCJ0eXBlXCIsIFwiY2hpbGRyZW5cIl0pO1xuXG4gICAgICAgIGlmICh0YXJnZXQudHlwZSAhPT0gJ2dyb3VwJykge1xuICAgICAgICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHRhcmdldC50eXBlLCBfX2Fzc2lnbih7XG4gICAgICAgICAgICBhdHRyczogYXR0cnMsXG4gICAgICAgICAgICBvcmlnaW46IHtcbiAgICAgICAgICAgICAgYmJveDogYmJveCxcbiAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgcmVzdCkpO1xuXG4gICAgICAgICAgaWYgKHRhcmdldC5rZXlzaGFwZSkge1xuICAgICAgICAgICAga2V5c2hhcGUgPSBzaGFwZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0LmNoaWxkcmVuKSB7XG4gICAgICAgICAgdGFyZ2V0LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJUYXJnZXQobik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJlbmRlclRhcmdldChyZXN1bHRUYXJnZXQpO1xuICAgICAgc3RydWN0dXJlc1tjZmcuaWRdID0gW3Jlc3VsdFRhcmdldF07XG4gICAgICByZXR1cm4ga2V5c2hhcGU7XG4gICAgfSxcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIG5vZGUpIHtcbiAgICAgIGlmICghc3RydWN0dXJlc1tjZmcuaWRdKSB7XG4gICAgICAgIHN0cnVjdHVyZXNbY2ZnLmlkXSA9IFtdO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGFpbmVyID0gbm9kZS5nZXRDb250YWluZXIoKTtcbiAgICAgIHZhciBjaGlsZHJlbiA9IGNvbnRhaW5lci5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICB2YXIgbmV3VGFyZ2V0ID0gY29tcGlsZVhNTChjZmcpO1xuICAgICAgdmFyIGxhc3RUYXJnZXQgPSBzdHJ1Y3R1cmVzW2NmZy5pZF0ucG9wKCk7XG4gICAgICB2YXIgZGlmZlJlc3VsdCA9IGNvbXBhcmVUd29UYXJnZXQobmV3VGFyZ2V0LCBsYXN0VGFyZ2V0KTtcblxuICAgICAgdmFyIGFkZFNoYXBlID0gZnVuY3Rpb24gYWRkU2hhcGUoc2hhcGUpIHtcbiAgICAgICAgdmFyIF9hO1xuXG4gICAgICAgIGlmIChzaGFwZS50eXBlICE9PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgY29udGFpbmVyLmFkZFNoYXBlKHNoYXBlLnR5cGUsIHtcbiAgICAgICAgICAgIGF0dHJzOiBzaGFwZS5hdHRyc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChfYSA9IHNoYXBlLmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB7XG4gICAgICAgICAgc2hhcGUuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWRkU2hhcGUoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZhciBkZWxTaGFwZSA9IGZ1bmN0aW9uIGRlbFNoYXBlKHNoYXBlKSB7XG4gICAgICAgIHZhciBfYTtcblxuICAgICAgICB2YXIgdGFyZ2V0U2hhcGUgPSBjaGlsZHJlbi5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgcmV0dXJuIGUuYXR0cnMua2V5ID09PSBzaGFwZS5hdHRycy5rZXk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXRTaGFwZSkge1xuICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZCh0YXJnZXRTaGFwZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKF9hID0gc2hhcGUuY2hpbGRyZW4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHtcbiAgICAgICAgICBzaGFwZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWxTaGFwZShlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgdmFyIHVwZGF0ZVRhcmdldCA9IGZ1bmN0aW9uIHVwZGF0ZVRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgdmFyIGtleSA9IHRhcmdldC5rZXk7XG5cbiAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgdmFyIHRhcmdldFNoYXBlID0gY2hpbGRyZW4uZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGUuYXR0cnMua2V5ID09PSBrZXk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBzd2l0Y2ggKHRhcmdldC5hY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ2NoYW5nZSc6XG4gICAgICAgICAgICAgIGlmICh0YXJnZXRTaGFwZSkge1xuICAgICAgICAgICAgICAgIHZhciBvcmlnaW5BdHRyID0gdGFyZ2V0LnZhbC5rZXlzaGFwZSA/IG5vZGUuZ2V0T3JpZ2luU3R5bGUoKSA6IHt9O1xuICAgICAgICAgICAgICAgIHRhcmdldFNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIG9yaWdpbkF0dHIpLCB0YXJnZXQudmFsLmF0dHJzKSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgICAgICAgYWRkU2hhcGUodGFyZ2V0LnZhbCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICBkZWxTaGFwZSh0YXJnZXQudmFsKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3Jlc3RydWN0dXJlJzpcbiAgICAgICAgICAgICAgZGVsU2hhcGUodGFyZ2V0LmZvcm1lclRhcmdldCk7XG4gICAgICAgICAgICAgIGFkZFNoYXBlKHRhcmdldC5ub3dUYXJnZXQpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhcmdldC5jaGlsZHJlbikge1xuICAgICAgICAgIHRhcmdldC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlVGFyZ2V0KG4pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB1cGRhdGVUYXJnZXQoZGlmZlJlc3VsdCk7XG4gICAgICBzdHJ1Y3R1cmVzW2NmZy5pZF0ucHVzaChuZXdUYXJnZXQpO1xuICAgIH0sXG4gICAgZ2V0QW5jaG9yUG9pbnRzOiBmdW5jdGlvbiBnZXRBbmNob3JQb2ludHMoKSB7XG4gICAgICByZXR1cm4gW1swLCAwLjVdLCBbMSwgMC41XSwgWzAuNSwgMV0sIFswLjUsIDBdXTtcbiAgICB9XG4gIH07XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/element/xml.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/global.js": /*!*************************************************!*\ !*** ./node_modules/@antv/g6-core/es/global.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar subjectColor = 'rgb(95, 149, 255)';\nvar backColor = 'rgb(255, 255, 255)';\nvar textColor = 'rgb(0, 0, 0)';\nvar activeFill = 'rgb(247, 250, 255)';\nvar nodeMainFill = 'rgb(239, 244, 255)';\nvar comboFill = 'rgb(253, 253, 253)';\nvar disabledFill = 'rgb(250, 250, 250)';\nvar edgeMainStroke = 'rgb(224, 224, 224)';\nvar edgeInactiveStroke = 'rgb(234, 234, 234)';\nvar edgeDisablesStroke = 'rgb(245, 245, 245)';\nvar inactiveStroke = 'rgb(191, 213, 255)';\nvar highlightStroke = '#4572d9';\nvar highlightFill = 'rgb(223, 234, 255)';\nvar colorSet = {\n // for nodes\n mainStroke: subjectColor,\n mainFill: nodeMainFill,\n activeStroke: subjectColor,\n activeFill: activeFill,\n inactiveStroke: inactiveStroke,\n inactiveFill: activeFill,\n selectedStroke: subjectColor,\n selectedFill: backColor,\n highlightStroke: highlightStroke,\n highlightFill: highlightFill,\n disableStroke: edgeMainStroke,\n disableFill: disabledFill,\n // for edges\n edgeMainStroke: edgeMainStroke,\n edgeActiveStroke: subjectColor,\n edgeInactiveStroke: edgeInactiveStroke,\n edgeSelectedStroke: subjectColor,\n edgeHighlightStroke: subjectColor,\n edgeDisableStroke: edgeDisablesStroke,\n // for combos\n comboMainStroke: edgeMainStroke,\n comboMainFill: comboFill,\n comboActiveStroke: subjectColor,\n comboActiveFill: activeFill,\n comboInactiveStroke: edgeMainStroke,\n comboInactiveFill: comboFill,\n comboSelectedStroke: subjectColor,\n comboSelectedFill: comboFill,\n comboHighlightStroke: highlightStroke,\n comboHighlightFill: comboFill,\n comboDisableStroke: edgeInactiveStroke,\n comboDisableFill: disabledFill\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: '0.5.3',\n rootContainerClassName: 'root-container',\n nodeContainerClassName: 'node-container',\n edgeContainerClassName: 'edge-container',\n comboContainerClassName: 'combo-container',\n delegateContainerClassName: 'delegate-container',\n defaultLoopPosition: 'top',\n nodeLabel: {\n style: {\n fill: '#000',\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle'\n },\n offset: 4 // 节点的默认文本不居中时的偏移量\n\n },\n defaultNode: {\n type: 'circle',\n style: {\n lineWidth: 1,\n stroke: colorSet.mainStroke,\n fill: nodeMainFill\n },\n size: 20,\n color: colorSet.mainStroke,\n linkPoints: {\n size: 8,\n lineWidth: 1,\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke\n }\n },\n // 节点应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n nodeStateStyles: {\n active: {\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke,\n lineWidth: 2,\n shadowColor: colorSet.mainStroke,\n shadowBlur: 10\n },\n selected: {\n fill: colorSet.selectedFill,\n stroke: colorSet.selectedStroke,\n lineWidth: 4,\n shadowColor: colorSet.selectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n fill: colorSet.highlightFill,\n stroke: colorSet.highlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n fill: colorSet.inactiveFill,\n stroke: colorSet.inactiveStroke,\n lineWidth: 1\n },\n disable: {\n fill: colorSet.disableFill,\n stroke: colorSet.disableStroke,\n lineWidth: 1\n }\n },\n edgeLabel: {\n style: {\n fill: textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n }\n },\n defaultEdge: {\n type: 'line',\n size: 1,\n style: {\n stroke: colorSet.edgeMainStroke,\n lineAppendWidth: 2\n },\n color: colorSet.edgeMainStroke\n },\n // 边应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n edgeStateStyles: {\n active: {\n stroke: colorSet.edgeActiveStroke,\n lineWidth: 1\n },\n selected: {\n stroke: colorSet.edgeSelectedStroke,\n lineWidth: 2,\n shadowColor: colorSet.edgeSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.edgeHighlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.edgeInactiveStroke,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.edgeDisableStroke,\n lineWidth: 1\n }\n },\n comboLabel: {\n style: {\n fill: textColor,\n // textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n },\n refY: 10,\n refX: 10 // Combo 的默认文本不居中时的偏移量\n\n },\n defaultCombo: {\n type: 'circle',\n style: {\n fill: colorSet.comboMainFill,\n lineWidth: 1,\n stroke: colorSet.comboMainStroke,\n r: 5,\n width: 20,\n height: 10\n },\n size: [20, 5],\n color: colorSet.comboMainStroke,\n padding: [25, 20, 15, 20]\n },\n // combo 应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n comboStateStyles: {\n active: {\n stroke: colorSet.comboActiveStroke,\n lineWidth: 1,\n fill: colorSet.comboActiveFill\n },\n selected: {\n stroke: colorSet.comboSelectedStroke,\n lineWidth: 2,\n fill: colorSet.comboSelectedFill,\n shadowColor: colorSet.comboSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.comboHighlightStroke,\n lineWidth: 2,\n fill: colorSet.comboHighlightFill,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.comboInactiveStroke,\n fill: colorSet.comboInactiveFill,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.comboDisableStroke,\n fill: colorSet.comboDisableFill,\n lineWidth: 1\n }\n },\n delegateStyle: {\n fill: '#F3F9FF',\n fillOpacity: 0.5,\n stroke: '#1890FF',\n strokeOpacity: 0.9,\n lineDash: [5, 5]\n },\n windowFontFamily: typeof window !== 'undefined' && window.getComputedStyle && document.body ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9nbG9iYWwuanM/MmUwYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZ2xvYmFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHN1YmplY3RDb2xvciA9ICdyZ2IoOTUsIDE0OSwgMjU1KSc7XG52YXIgYmFja0NvbG9yID0gJ3JnYigyNTUsIDI1NSwgMjU1KSc7XG52YXIgdGV4dENvbG9yID0gJ3JnYigwLCAwLCAwKSc7XG52YXIgYWN0aXZlRmlsbCA9ICdyZ2IoMjQ3LCAyNTAsIDI1NSknO1xudmFyIG5vZGVNYWluRmlsbCA9ICdyZ2IoMjM5LCAyNDQsIDI1NSknO1xudmFyIGNvbWJvRmlsbCA9ICdyZ2IoMjUzLCAyNTMsIDI1MyknO1xudmFyIGRpc2FibGVkRmlsbCA9ICdyZ2IoMjUwLCAyNTAsIDI1MCknO1xudmFyIGVkZ2VNYWluU3Ryb2tlID0gJ3JnYigyMjQsIDIyNCwgMjI0KSc7XG52YXIgZWRnZUluYWN0aXZlU3Ryb2tlID0gJ3JnYigyMzQsIDIzNCwgMjM0KSc7XG52YXIgZWRnZURpc2FibGVzU3Ryb2tlID0gJ3JnYigyNDUsIDI0NSwgMjQ1KSc7XG52YXIgaW5hY3RpdmVTdHJva2UgPSAncmdiKDE5MSwgMjEzLCAyNTUpJztcbnZhciBoaWdobGlnaHRTdHJva2UgPSAnIzQ1NzJkOSc7XG52YXIgaGlnaGxpZ2h0RmlsbCA9ICdyZ2IoMjIzLCAyMzQsIDI1NSknO1xudmFyIGNvbG9yU2V0ID0ge1xuICAvLyBmb3Igbm9kZXNcbiAgbWFpblN0cm9rZTogc3ViamVjdENvbG9yLFxuICBtYWluRmlsbDogbm9kZU1haW5GaWxsLFxuICBhY3RpdmVTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgYWN0aXZlRmlsbDogYWN0aXZlRmlsbCxcbiAgaW5hY3RpdmVTdHJva2U6IGluYWN0aXZlU3Ryb2tlLFxuICBpbmFjdGl2ZUZpbGw6IGFjdGl2ZUZpbGwsXG4gIHNlbGVjdGVkU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIHNlbGVjdGVkRmlsbDogYmFja0NvbG9yLFxuICBoaWdobGlnaHRTdHJva2U6IGhpZ2hsaWdodFN0cm9rZSxcbiAgaGlnaGxpZ2h0RmlsbDogaGlnaGxpZ2h0RmlsbCxcbiAgZGlzYWJsZVN0cm9rZTogZWRnZU1haW5TdHJva2UsXG4gIGRpc2FibGVGaWxsOiBkaXNhYmxlZEZpbGwsXG4gIC8vIGZvciBlZGdlc1xuICBlZGdlTWFpblN0cm9rZTogZWRnZU1haW5TdHJva2UsXG4gIGVkZ2VBY3RpdmVTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgZWRnZUluYWN0aXZlU3Ryb2tlOiBlZGdlSW5hY3RpdmVTdHJva2UsXG4gIGVkZ2VTZWxlY3RlZFN0cm9rZTogc3ViamVjdENvbG9yLFxuICBlZGdlSGlnaGxpZ2h0U3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIGVkZ2VEaXNhYmxlU3Ryb2tlOiBlZGdlRGlzYWJsZXNTdHJva2UsXG4gIC8vIGZvciBjb21ib3NcbiAgY29tYm9NYWluU3Ryb2tlOiBlZGdlTWFpblN0cm9rZSxcbiAgY29tYm9NYWluRmlsbDogY29tYm9GaWxsLFxuICBjb21ib0FjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yLFxuICBjb21ib0FjdGl2ZUZpbGw6IGFjdGl2ZUZpbGwsXG4gIGNvbWJvSW5hY3RpdmVTdHJva2U6IGVkZ2VNYWluU3Ryb2tlLFxuICBjb21ib0luYWN0aXZlRmlsbDogY29tYm9GaWxsLFxuICBjb21ib1NlbGVjdGVkU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIGNvbWJvU2VsZWN0ZWRGaWxsOiBjb21ib0ZpbGwsXG4gIGNvbWJvSGlnaGxpZ2h0U3Ryb2tlOiBoaWdobGlnaHRTdHJva2UsXG4gIGNvbWJvSGlnaGxpZ2h0RmlsbDogY29tYm9GaWxsLFxuICBjb21ib0Rpc2FibGVTdHJva2U6IGVkZ2VJbmFjdGl2ZVN0cm9rZSxcbiAgY29tYm9EaXNhYmxlRmlsbDogZGlzYWJsZWRGaWxsXG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2ZXJzaW9uOiAnMC41LjMnLFxuICByb290Q29udGFpbmVyQ2xhc3NOYW1lOiAncm9vdC1jb250YWluZXInLFxuICBub2RlQ29udGFpbmVyQ2xhc3NOYW1lOiAnbm9kZS1jb250YWluZXInLFxuICBlZGdlQ29udGFpbmVyQ2xhc3NOYW1lOiAnZWRnZS1jb250YWluZXInLFxuICBjb21ib0NvbnRhaW5lckNsYXNzTmFtZTogJ2NvbWJvLWNvbnRhaW5lcicsXG4gIGRlbGVnYXRlQ29udGFpbmVyQ2xhc3NOYW1lOiAnZGVsZWdhdGUtY29udGFpbmVyJyxcbiAgZGVmYXVsdExvb3BQb3NpdGlvbjogJ3RvcCcsXG4gIG5vZGVMYWJlbDoge1xuICAgIHN0eWxlOiB7XG4gICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICBmb250U2l6ZTogMTIsXG4gICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJ1xuICAgIH0sXG4gICAgb2Zmc2V0OiA0IC8vIOiKgueCueeahOm7mOiupOaWh+acrOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuXG4gIH0sXG4gIGRlZmF1bHROb2RlOiB7XG4gICAgdHlwZTogJ2NpcmNsZScsXG4gICAgc3R5bGU6IHtcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQubWFpblN0cm9rZSxcbiAgICAgIGZpbGw6IG5vZGVNYWluRmlsbFxuICAgIH0sXG4gICAgc2l6ZTogMjAsXG4gICAgY29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgbGlua1BvaW50czoge1xuICAgICAgc2l6ZTogOCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmFjdGl2ZUZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmFjdGl2ZVN0cm9rZVxuICAgIH1cbiAgfSxcbiAgLy8g6IqC54K55bqU55So54q25oCB5ZCO55qE5qC35byP77yM6buY6K6k5LuF5o+Q5L6bIGFjdGl2ZeOAgXNlbGVjdGVk44CBaGlnaGxpZ2h044CBaW5hY3RpdmXjgIFkaXNhYmxl77yM55So5oi35Y+v5Lul6Ieq5bex5omp5bGVXG4gIG5vZGVTdGF0ZVN0eWxlczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgc2hhZG93Q29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMFxuICAgIH0sXG4gICAgc2VsZWN0ZWQ6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LnNlbGVjdGVkRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDQsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgZmlsbDogY29sb3JTZXQuaGlnaGxpZ2h0RmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmluYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaW5hY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIGRpc2FibGU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmRpc2FibGVGaWxsLFxuICAgICAgc3Ryb2tlOiBjb2xvclNldC5kaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBlZGdlTGFiZWw6IHtcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogdGV4dENvbG9yLFxuICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICBmb250U2l6ZTogMTJcbiAgICB9XG4gIH0sXG4gIGRlZmF1bHRFZGdlOiB7XG4gICAgdHlwZTogJ2xpbmUnLFxuICAgIHNpemU6IDEsXG4gICAgc3R5bGU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZU1haW5TdHJva2UsXG4gICAgICBsaW5lQXBwZW5kV2lkdGg6IDJcbiAgICB9LFxuICAgIGNvbG9yOiBjb2xvclNldC5lZGdlTWFpblN0cm9rZVxuICB9LFxuICAvLyDovrnlupTnlKjnirbmgIHlkI7nmoTmoLflvI/vvIzpu5jorqTku4Xmj5DkvpsgYWN0aXZl44CBc2VsZWN0ZWTjgIFoaWdobGlnaHTjgIFpbmFjdGl2ZeOAgWRpc2FibGXvvIznlKjmiLflj6/ku6Xoh6rlt7HmianlsZVcbiAgZWRnZVN0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VBY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIHNlbGVjdGVkOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VTZWxlY3RlZFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIHNoYWRvd0NvbG9yOiBjb2xvclNldC5lZGdlU2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZUluYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VEaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBjb21ib0xhYmVsOiB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6IHRleHRDb2xvcixcbiAgICAgIC8vIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICAgICAgZm9udFNpemU6IDEyXG4gICAgfSxcbiAgICByZWZZOiAxMCxcbiAgICByZWZYOiAxMCAvLyBDb21ibyDnmoTpu5jorqTmlofmnKzkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cblxuICB9LFxuICBkZWZhdWx0Q29tYm86IHtcbiAgICB0eXBlOiAnY2lyY2xlJyxcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9NYWluRmlsbCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9NYWluU3Ryb2tlLFxuICAgICAgcjogNSxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMTBcbiAgICB9LFxuICAgIHNpemU6IFsyMCwgNV0sXG4gICAgY29sb3I6IGNvbG9yU2V0LmNvbWJvTWFpblN0cm9rZSxcbiAgICBwYWRkaW5nOiBbMjUsIDIwLCAxNSwgMjBdXG4gIH0sXG4gIC8vIGNvbWJvIOW6lOeUqOeKtuaAgeWQjueahOagt+W8j++8jOm7mOiupOS7heaPkOS+myBhY3RpdmXjgIFzZWxlY3RlZOOAgWhpZ2hsaWdodOOAgWluYWN0aXZl44CBZGlzYWJsZe+8jOeUqOaIt+WPr+S7peiHquW3seaJqeWxlVxuICBjb21ib1N0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvQWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9BY3RpdmVGaWxsXG4gICAgfSxcbiAgICBzZWxlY3RlZDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib1NlbGVjdGVkU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9TZWxlY3RlZEZpbGwsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuY29tYm9TZWxlY3RlZFN0cm9rZSxcbiAgICAgIHNoYWRvd0JsdXI6IDEwLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaGlnaGxpZ2h0OiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9IaWdobGlnaHRGaWxsLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9JbmFjdGl2ZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvSW5hY3RpdmVGaWxsLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZUZpbGwsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9XG4gIH0sXG4gIGRlbGVnYXRlU3R5bGU6IHtcbiAgICBmaWxsOiAnI0YzRjlGRicsXG4gICAgZmlsbE9wYWNpdHk6IDAuNSxcbiAgICBzdHJva2U6ICcjMTg5MEZGJyxcbiAgICBzdHJva2VPcGFjaXR5OiAwLjksXG4gICAgbGluZURhc2g6IFs1LCA1XVxuICB9LFxuICB3aW5kb3dGb250RmFtaWx5OiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSAmJiBkb2N1bWVudC5ib2R5ID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1mYW1pbHknKSB8fCAnQXJpYWwsIHNhbnMtc2VyaWYnIDogJ0FyaWFsLCBzYW5zLXNlcmlmJ1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/global.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/graph/controller/event.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/graph/controller/event.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar EventController =\n/** @class */\nfunction () {\n function EventController(graph) {\n this.graph = graph;\n this.destroyed = false;\n this.initEvents();\n }\n\n return EventController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2V2ZW50LmpzP2NiYjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyw4RUFBZSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2dyYXBoL2NvbnRyb2xsZXIvZXZlbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgRXZlbnRDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRXZlbnRDb250cm9sbGVyKGdyYXBoKSB7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5pbml0RXZlbnRzKCk7XG4gIH1cblxuICByZXR1cm4gRXZlbnRDb250cm9sbGVyO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBFdmVudENvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/event.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/graph/controller/index.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/graph/controller/index.js ***! \*****************************************************************/ /*! exports provided: ModeController, ViewController, ItemController, StateController */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mode */ \"./node_modules/@antv/g6-core/es/graph/controller/mode.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ModeController\", function() { return _mode__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./view */ \"./node_modules/@antv/g6-core/es/graph/controller/view.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ViewController\", function() { return _view__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/@antv/g6-core/es/graph/controller/item.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ItemController\", function() { return _item__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./state */ \"./node_modules/@antv/g6-core/es/graph/controller/state.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateController\", function() { return _state__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2luZGV4LmpzP2M4ZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUQ7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZ3JhcGgvY29udHJvbGxlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgTW9kZUNvbnRyb2xsZXIgfSBmcm9tICcuL21vZGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBWaWV3Q29udHJvbGxlciB9IGZyb20gJy4vdmlldyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEl0ZW1Db250cm9sbGVyIH0gZnJvbSAnLi9pdGVtJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU3RhdGVDb250cm9sbGVyIH0gZnJvbSAnLi9zdGF0ZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/graph/controller/item.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/graph/controller/item.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _item_edge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../item/edge */ \"./node_modules/@antv/g6-core/es/item/edge.js\");\n/* harmony import */ var _item_node__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../item/node */ \"./node_modules/@antv/g6-core/es/item/node.js\");\n/* harmony import */ var _item_combo__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../item/combo */ \"./node_modules/@antv/g6-core/es/item/combo.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n\n\n\n\n\n\nvar NODE = 'node';\nvar EDGE = 'edge';\nvar VEDGE = 'vedge';\nvar COMBO = 'combo';\nvar CFG_PREFIX = 'default';\nvar MAPPER_SUFFIX = 'Mapper';\nvar STATE_SUFFIX = 'stateStyles';\n\nvar ItemController =\n/** @class */\nfunction () {\n function ItemController(graph) {\n var _this = this;\n\n this.edgeToBeUpdateMap = {};\n /**\n * 更新边限流,同时可以防止相同的边频繁重复更新\n * */\n\n this.throttleRefresh = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"throttle\"])(function (_) {\n var _a;\n\n var graph = _this.graph;\n if (!graph || graph.get('destroyed')) return;\n var edgeToBeUpdateMap = _this.edgeToBeUpdateMap;\n if (!edgeToBeUpdateMap || !((_a = Object.keys(edgeToBeUpdateMap)) === null || _a === void 0 ? void 0 : _a.length)) return;\n Object.keys(edgeToBeUpdateMap).forEach(function (eid) {\n var edge = edgeToBeUpdateMap[eid].edge;\n if (!edge || edge.destroyed) return;\n edge.refresh(edgeToBeUpdateMap[eid].updateType);\n });\n _this.edgeToBeUpdateMap = {};\n }, 16, {\n trailing: true,\n leading: true\n });\n this.graph = graph;\n this.destroyed = false;\n }\n /**\n * 增加 Item 实例\n *\n * @param {ITEM_TYPE} type 实例类型,node 或 edge\n * @param {(NodeConfig & EdgeConfig)} model 数据模型\n * @returns {(Item)}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.addItem = function (type, model) {\n var graph = this.graph;\n var vType = type === VEDGE ? EDGE : type;\n var parent = graph.get(\"\".concat(vType, \"Group\")) || graph.get('group');\n var upperType = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(vType);\n var item = null; // 获取 this.get('styles') 中的值\n\n var styles = graph.get(vType + Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(STATE_SUFFIX)) || {};\n var defaultModel = graph.get(CFG_PREFIX + upperType);\n\n if (model[STATE_SUFFIX]) {\n // 设置 this.get('styles') 中的值\n styles = model[STATE_SUFFIX];\n }\n\n if (defaultModel) {\n // 很多布局会直接修改原数据模型,所以不能用 merge 的形式,逐个写入原 model 中\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(defaultModel, function (val, cfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, val, model[cfg]);\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = model[cfg] || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(defaultModel[cfg]);\n } else {\n model[cfg] = model[cfg] || defaultModel[cfg];\n }\n });\n }\n\n var mapper = graph.get(vType + MAPPER_SUFFIX);\n\n if (mapper) {\n var mappedModel_1 = mapper(model);\n\n if (mappedModel_1[STATE_SUFFIX]) {\n // 设置 this.get('styles') 中的值\n styles = mappedModel_1[STATE_SUFFIX];\n delete mappedModel_1[STATE_SUFFIX];\n } // 如果配置了 defaultEdge 或 defaultNode,则将默认配置的数据也合并进去\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(mappedModel_1, function (val, cfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model[cfg], val);\n } else {\n model[cfg] = mappedModel_1[cfg] || model[cfg];\n }\n });\n }\n\n graph.emit('beforeadditem', {\n type: type,\n model: model\n });\n\n if (type === EDGE || type === VEDGE) {\n var source = void 0;\n var target = void 0;\n source = model.source; // eslint-disable-line prefer-destructuring\n\n target = model.target; // eslint-disable-line prefer-destructuring\n\n if (source && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(source)) {\n source = graph.findById(source);\n }\n\n if (target && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(target)) {\n target = graph.findById(target);\n }\n\n if (!source || !target) {\n console.warn(\"The source or target node of edge \".concat(model.id, \" does not exist!\"));\n return;\n }\n\n if (source.getType && source.getType() === 'combo') {\n model.isComboEdge = true; // graph.updateCombo(source as ICombo);\n }\n\n if (target.getType && target.getType() === 'combo') {\n model.isComboEdge = true; // graph.updateCombo(target as ICombo);\n }\n\n item = new _item_edge__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n model: model,\n source: source,\n target: target,\n styles: styles,\n linkCenter: graph.get('linkCenter'),\n group: parent.addGroup()\n });\n } else if (type === NODE) {\n item = new _item_node__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\n model: model,\n styles: styles,\n group: parent.addGroup()\n });\n } else if (type === COMBO) {\n var children = model.children;\n var comboBBox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])(children, graph);\n if (!isNaN(comboBBox.x)) model.x = comboBBox.x;else if (isNaN(model.x)) model.x = Math.random() * 100;\n if (!isNaN(comboBBox.y)) model.y = comboBBox.y;else if (isNaN(model.y)) model.y = Math.random() * 100;\n var comboGroup = parent.addGroup();\n comboGroup.setZIndex(model.depth);\n item = new _item_combo__WEBPACK_IMPORTED_MODULE_4__[\"default\"]({\n model: model,\n styles: styles,\n bbox: model.collapsed ? Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])([], graph) : comboBBox,\n group: comboGroup\n });\n var comboModel_1 = item.getModel();\n (children || []).forEach(function (child) {\n var childItem = graph.findById(child.id);\n item.addChild(childItem);\n child.depth = comboModel_1.depth + 2;\n }); // collapse the combo if the collapsed is true in the model\n\n if (model.collapsed) {\n setTimeout(function () {\n if (!item.destroyed) {\n graph.collapseCombo(item);\n }\n }, 0);\n }\n }\n\n if (item) {\n graph.get(\"\".concat(type, \"s\")).push(item);\n graph.get('itemMap')[item.get('id')] = item;\n graph.emit('afteradditem', {\n item: item,\n model: model\n }); // eslint-disable-next-line consistent-return\n\n return item;\n }\n };\n /**\n * 更新节点或边\n *\n * @param {Item} item ID 或 实例\n * @param {(EdgeConfig | Partial)} cfg 数据模型\n * @returns\n * @memberof ItemController\n */\n\n\n ItemController.prototype.updateItem = function (item, cfg) {\n var _this = this;\n\n var _a, _b;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item || item.destroyed) {\n return;\n } // 更新的 item 的类型\n\n\n var type = '';\n if (item.getType) type = item.getType();\n var mapper = graph.get(type + MAPPER_SUFFIX);\n var model = item.getModel();\n var updateType = item.getUpdateType(cfg);\n\n if (mapper) {\n var result = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model, cfg);\n var mappedModel = mapper(result); // 将 update 时候用户传入的参数与mapperModel做deepMix,以便复用之前设置的参数值\n\n var newModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model, mappedModel, cfg);\n\n if (mappedModel[STATE_SUFFIX]) {\n item.set('styles', newModel[STATE_SUFFIX]);\n delete newModel[STATE_SUFFIX];\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(newModel, function (val, key) {\n cfg[key] = val;\n });\n } else {\n // merge update传进来的对象参数,model中没有的数据不做处理,对象和字符串值也不做处理,直接替换原来的\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(cfg, function (val, key) {\n if (model[key]) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n cfg[key] = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, model[key]), cfg[key]);\n }\n }\n });\n } // emit beforeupdateitem 事件\n\n\n graph.emit('beforeupdateitem', {\n item: item,\n cfg: cfg\n });\n\n if (type === EDGE) {\n // 若是边要更新source || target, 为了不影响示例内部model,并且重新计算startPoint和endPoint,手动设置\n if (cfg.source) {\n var source = cfg.source;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(source)) {\n source = graph.findById(source);\n }\n\n item.setSource(source);\n }\n\n if (cfg.target) {\n var target = cfg.target;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(target)) {\n target = graph.findById(target);\n }\n\n item.setTarget(target);\n }\n\n item.update(cfg);\n } // item.update(cfg);\n\n\n if (type === NODE || type === COMBO) {\n item.update(cfg, updateType);\n var edges_1 = item.getEdges();\n var refreshEdge = (updateType === null || updateType === void 0 ? void 0 : updateType.includes('bbox')) || updateType === 'move';\n\n if (type === NODE) {\n if (updateType === 'move') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n _this.edgeToBeUpdateMap[edge.getID()] = {\n edge: edge,\n updateType: updateType\n };\n\n _this.throttleRefresh();\n });\n } else if (refreshEdge) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n edge.refresh(updateType);\n });\n }\n } else if (refreshEdge && type === COMBO) {\n var shapeFactory = item.get('shapeFactory');\n var shapeType = model.type || 'circle';\n var comboAnimate = model.animate === undefined || cfg.animate === undefined ? (_b = (_a = shapeFactory[shapeType]) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate || cfg.animate;\n\n if (comboAnimate) {\n setTimeout(function () {\n if (!item || item.destroyed) return;\n var keyShape = item.getKeyShape();\n if (!keyShape || keyShape.destroyed) return;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n if (edge && !edge.destroyed) edge.refresh();\n });\n }, 201);\n } else {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n edge.refresh();\n });\n }\n }\n }\n\n graph.emit('afterupdateitem', {\n item: item,\n cfg: cfg\n });\n };\n /**\n * 根据 combo 的子元素更新 combo 的位置及大小\n *\n * @param {ICombo} combo ID 或 实例\n * @returns\n * @memberof ItemController\n */\n\n\n ItemController.prototype.updateCombo = function (combo, children) {\n var _this = this;\n\n var _a, _b;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n if (!combo || combo.destroyed) {\n return;\n }\n\n var model = combo.getModel();\n var comboBBox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])(children, graph, combo);\n var comboX = comboBBox.x,\n comboY = comboBBox.y;\n combo.set('bbox', comboBBox);\n combo.update({\n x: comboX || model.x,\n y: comboY || model.y\n });\n var shapeFactory = combo.get('shapeFactory');\n var shapeType = model.type || 'circle';\n var comboAnimate = model.animate === undefined ? (_b = (_a = shapeFactory[shapeType]) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate;\n\n if (comboAnimate) {\n setTimeout(function () {\n if (!combo || combo.destroyed) return;\n var keyShape = combo.getKeyShape();\n if (!keyShape || keyShape.destroyed) return;\n combo.getShapeCfg(model); // 更新 combo 缓存的 size\n\n _this.updateComboEdges(combo);\n }, 201);\n } else {\n this.updateComboEdges(combo);\n }\n };\n\n ItemController.prototype.updateComboEdges = function (combo) {\n var combEdges = combo.getEdges() || [];\n\n for (var i = 0; i < combEdges.length; i++) {\n var edge = combEdges[i];\n\n if (edge && !edge.destroyed) {\n var edgeSF = edge.get('shapeFactory');\n var edgeCfg = edge.getShapeCfg(edge.getModel());\n var edgeGroup = edge.getContainer();\n edgeGroup.clear();\n var keyShape = edgeSF.draw(edgeCfg.type, edgeCfg, edgeGroup);\n edge.set('keyShape', keyShape);\n keyShape.set('isKeyShape', true);\n keyShape.set('draggable', true);\n edge.setOriginStyle();\n }\n }\n };\n /**\n * 收起 combo,隐藏相关元素\n */\n\n\n ItemController.prototype.collapseCombo = function (combo) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n var children = combo.getChildren();\n children.nodes.forEach(function (node) {\n graph.hideItem(node);\n });\n children.combos.forEach(function (c) {\n graph.hideItem(c);\n });\n };\n /**\n * 展开 combo,相关元素出现\n * 若子 combo 原先是收起状态,则保持它的收起状态\n */\n\n\n ItemController.prototype.expandCombo = function (combo) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n var children = combo.getChildren();\n children.nodes.forEach(function (node) {\n graph.showItem(node);\n });\n children.combos.forEach(function (c) {\n if (c.getModel().collapsed) {\n c.show();\n } else {\n graph.showItem(c);\n }\n });\n };\n /**\n * 删除指定的节点或边\n *\n * @param {Item} item item ID 或实例\n * @returns {void}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.removeItem = function (item) {\n var _this = this;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item || item.destroyed) {\n return;\n }\n\n var itemModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(item.getModel());\n graph.emit('beforeremoveitem', {\n item: itemModel\n });\n var type = '';\n if (item.getType) type = item.getType();\n var items = graph.get(\"\".concat(type, \"s\"));\n var index = items.indexOf(item);\n if (index > -1) items.splice(index, 1);\n\n if (type === EDGE) {\n var vitems = graph.get(\"v\".concat(type, \"s\"));\n var vindex = vitems.indexOf(item);\n if (vindex > -1) vitems.splice(vindex, 1);\n }\n\n var itemId = item.get('id');\n var itemMap = graph.get('itemMap');\n delete itemMap[itemId];\n var comboTrees = graph.get('comboTrees');\n var id = item.get('id');\n\n if (type === NODE) {\n var comboId = item.getModel().comboId;\n\n if (comboTrees && comboId) {\n var brothers_1 = comboTrees;\n var found_1 = false; // the flag to terminate the forEach circulation\n // remove the node from the children array of its parent fromt he tree\n\n comboTrees.forEach(function (ctree) {\n if (found_1) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id && brothers_1) {\n var bidx = brothers_1.indexOf(combo);\n brothers_1.splice(bidx, 1);\n found_1 = true;\n return false; // terminate the traverse\n }\n\n brothers_1 = combo.children;\n return true;\n });\n });\n } // 若移除的是节点,需要将与之相连的边一同删除\n\n\n var edges = item.getEdges();\n\n for (var i = edges.length - 1; i >= 0; i--) {\n graph.removeItem(edges[i], false);\n }\n\n if (comboId) graph.updateCombo(comboId);\n } else if (type === COMBO) {\n var parentId = item.getModel().parentId;\n var comboInTree_1; // find the subtree rooted at the item to be removed\n\n var found_2 = false; // the flag to terminate the forEach circulation\n\n (comboTrees || []).forEach(function (ctree) {\n if (found_2) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id) {\n comboInTree_1 = combo;\n found_2 = true;\n return false; // terminate the traverse\n }\n\n return true;\n });\n });\n comboInTree_1.removed = true;\n\n if (comboInTree_1 && comboInTree_1.children) {\n comboInTree_1.children.forEach(function (child) {\n _this.removeItem(child.id);\n });\n } // 若移除的是 combo,需要将与之相连的边一同删除\n\n\n var edges = item.getEdges();\n\n for (var i = edges.length; i >= 0; i--) {\n graph.removeItem(edges[i], false);\n }\n\n if (parentId) graph.updateCombo(parentId);\n }\n\n item.destroy();\n graph.emit('afterremoveitem', {\n item: itemModel,\n type: type\n });\n };\n /**\n * 更新 item 状态\n *\n * @param {Item} item Item 实例\n * @param {string} state 状态名称\n * @param {boolean} value 是否启用状态或状态值\n * @returns {void}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.setItemState = function (item, state, value) {\n var graph = this.graph;\n var stateName = state;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n stateName = \"\".concat(state, \":\").concat(value);\n } // 已经存在要设置的 state,或不存在 state 的样式为 undefined\n\n\n if (item.hasState(stateName) === value && value || // 当该状态已经存在且现在需要设置为 true 时,不需要继续。当该状态不存在,且设置为 false 时,需要继续\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value) && item.hasState(stateName)) {\n // 当该状态 value 是字符串,且已经存在该状态,不需要继续\n return;\n }\n\n graph.emit('beforeitemstatechange', {\n item: item,\n state: stateName,\n enabled: value\n });\n item.setState(state, value);\n graph.autoPaint();\n graph.emit('afteritemstatechange', {\n item: item,\n state: stateName,\n enabled: value\n });\n };\n /**\n * 将指定状态的优先级提升为最高优先级\n * @param {Item} item 元素id或元素实例\n * @param state 状态名称\n */\n\n\n ItemController.prototype.priorityState = function (item, state) {\n var graph = this.graph;\n var currentItem = item;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n currentItem = graph.findById(item);\n } // 先取消已有的 state\n\n\n this.setItemState(currentItem, state, false); // 再设置state,则此时该优先级为最高\n\n this.setItemState(currentItem, state, true);\n };\n /**\n * 清除所有指定的状态\n *\n * @param {Item} item Item 实例\n * @param {string[]} states 状态名称集合\n * @memberof ItemController\n */\n\n\n ItemController.prototype.clearItemStates = function (item, states) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n graph.emit('beforeitemstatesclear', {\n item: item,\n states: states\n });\n item.clearStates(states);\n graph.emit('afteritemstatesclear', {\n item: item,\n states: states\n });\n };\n /**\n * 刷新指定的 Item\n *\n * @param {Item} item Item ID 或 实例\n * @memberof ItemController\n */\n\n\n ItemController.prototype.refreshItem = function (item) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n graph.emit('beforeitemrefresh', {\n item: item\n }); // 调用 Item 的 refresh 方法,实现刷新功能\n\n item.refresh();\n graph.emit('afteritemrefresh', {\n item: item\n });\n };\n /**\n * 根据 graph 上用 combos 数据生成的 comboTree 来增加所有 combos\n *\n * @param {ComboTree[]} comboTrees graph 上用 combos 数据生成的 comboTree\n * @param {ComboConfig[]} comboModels combos 数据\n * @memberof ItemController\n */\n\n\n ItemController.prototype.addCombos = function (comboTrees, comboModels) {\n var _this = this;\n\n var graph = this.graph;\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTreeUp\"])(ctree, function (child) {\n var comboModel;\n comboModels.forEach(function (model) {\n if (model.id === child.id) {\n model.children = child.children;\n model.depth = child.depth;\n comboModel = model;\n }\n });\n\n if (comboModel) {\n _this.addItem('combo', comboModel);\n }\n\n return true;\n });\n });\n var comboGroup = graph.get('comboGroup');\n if (comboGroup) comboGroup.sort();\n };\n /**\n * 改变Item的显示状态\n *\n * @param {Item} item Item ID 或 实例\n * @param {boolean} visible 是否显示\n * @memberof ItemController\n */\n\n\n ItemController.prototype.changeItemVisibility = function (item, visible) {\n var _this = this;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item) {\n console.warn('The item to be shown or hidden does not exist!');\n return;\n }\n\n graph.emit('beforeitemvisibilitychange', {\n item: item,\n visible: visible\n });\n item.changeVisibility(visible);\n\n if (item.getType && item.getType() === NODE) {\n var edges = item.getEdges();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges, function (edge) {\n // 若隐藏节点,则将与之关联的边也隐藏\n // 若显示节点,则将与之关联的边也显示,但是需要判断边两端的节点都是可见的\n if (visible && !(edge.get('source').isVisible() && edge.get('target').isVisible())) {\n return;\n }\n\n _this.changeItemVisibility(edge, visible);\n });\n } else if (item.getType && item.getType() === COMBO) {\n var comboTrees = graph.get('comboTrees');\n var id_1 = item.get('id');\n var children_1 = [];\n var found_3 = false; // flag the terminate the forEach\n\n (comboTrees || []).forEach(function (ctree) {\n if (found_3) return;\n if (!ctree.children || ctree.children.length === 0) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id_1) {\n children_1 = combo.children;\n found_3 = true;\n return false; // terminate the traverse\n }\n\n return true;\n });\n });\n\n if (children_1 && (!visible || visible && !item.getModel().collapsed)) {\n children_1.forEach(function (child) {\n var childItem = graph.findById(child.id);\n\n _this.changeItemVisibility(childItem, visible);\n });\n }\n\n var edges = item.getEdges();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges, function (edge) {\n // 若隐藏 combo,则将与 combo 本身关联的边也隐藏\n // 若显示 combo,则将与 combo 本身关联的边也显示,但是需要判断边两端的节点都是可见的\n if (visible && !(edge.get('source').isVisible() && edge.get('target').isVisible())) {\n return;\n }\n\n _this.changeItemVisibility(edge, visible);\n });\n }\n\n graph.emit('afteritemvisibilitychange', {\n item: item,\n visible: visible\n });\n return item;\n };\n\n ItemController.prototype.destroy = function () {\n this.graph = null;\n this.destroyed = true;\n };\n\n return ItemController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ItemController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2l0ZW0uanM/MTY3ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNvRTtBQUNsRTtBQUNBO0FBQ0U7QUFDMkM7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsMkRBQVE7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLDBCQUEwQjtBQUN2QyxlQUFlO0FBQ2Y7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNkRBQVU7QUFDOUIsb0JBQW9COztBQUVwQixtQ0FBbUMsNkRBQVU7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sdURBQUk7QUFDVixZQUFZLDJEQUFRLFVBQVUsMERBQU87QUFDckMsdUJBQXVCLDBEQUFPLEdBQUc7QUFDakMsU0FBUyxVQUFVLDBEQUFPO0FBQzFCLHFDQUFxQyx3REFBSztBQUMxQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsTUFBTSx1REFBSTtBQUNWLFlBQVksMkRBQVEsVUFBVSwwREFBTztBQUNyQyx1QkFBdUIsMERBQU8sR0FBRztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qjs7QUFFNUIsNEJBQTRCOztBQUU1QixvQkFBb0IsMkRBQVE7QUFDNUI7QUFDQTs7QUFFQSxvQkFBb0IsMkRBQVE7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlDQUFpQztBQUNqQzs7QUFFQTtBQUNBLGlDQUFpQztBQUNqQzs7QUFFQSxpQkFBaUIsa0RBQUk7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxpQkFBaUIsa0RBQUk7QUFDckI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLHNCQUFzQixrRUFBWTtBQUNsQyxxREFBcUQ7QUFDckQscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQSxpQkFBaUIsbURBQUs7QUFDdEI7QUFDQTtBQUNBLGdDQUFnQyxrRUFBWTtBQUM1QztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsbUNBQW1DO0FBQ2hEO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsMERBQU8sR0FBRztBQUM3Qix1Q0FBdUM7O0FBRXZDLHFCQUFxQiwwREFBTyxHQUFHOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsY0FBYywyREFBUSxVQUFVLDBEQUFPO0FBQ3ZDLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsWUFBWSwyREFBUTtBQUNwQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSx1REFBSTtBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxVQUFVLHVEQUFJO0FBQ2Q7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWCxTQUFTO0FBQ1QsVUFBVSx1REFBSTtBQUNkO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0Isa0VBQVk7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGVBQWU7QUFDZjtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLHdEQUFLO0FBQ3pCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCOztBQUVBO0FBQ0E7QUFDQSxVQUFVLGtFQUFZO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87OztBQUdQOztBQUVBLG9DQUFvQyxRQUFRO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQSx3QkFBd0I7O0FBRXhCLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBLFFBQVEsa0VBQVk7QUFDcEI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7O0FBR1A7O0FBRUEsZ0NBQWdDLFFBQVE7QUFDeEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckIsZUFBZTtBQUNmO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSxJQUFJLDJEQUFRO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxLQUFLOzs7QUFHTCxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQjtBQUNBOzs7QUFHQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsWUFBWTtBQUN6QixhQUFhLGNBQWM7QUFDM0I7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSxvRUFBYztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0EsUUFBUSxrRUFBWTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsNkVBQWMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2l0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgY2xvbmUsIGRlZXBNaXgsIGVhY2gsIGlzQXJyYXksIGlzT2JqZWN0LCBpc1N0cmluZywgdXBwZXJGaXJzdCwgdGhyb3R0bGUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBFZGdlIGZyb20gJy4uLy4uL2l0ZW0vZWRnZSc7XG5pbXBvcnQgTm9kZSBmcm9tICcuLi8uLi9pdGVtL25vZGUnO1xuaW1wb3J0IENvbWJvIGZyb20gJy4uLy4uL2l0ZW0vY29tYm8nO1xuaW1wb3J0IHsgdHJhdmVyc2VUcmVlVXAsIHRyYXZlcnNlVHJlZSwgZ2V0Q29tYm9CQm94IH0gZnJvbSAnLi4vLi4vdXRpbC9ncmFwaGljJztcbnZhciBOT0RFID0gJ25vZGUnO1xudmFyIEVER0UgPSAnZWRnZSc7XG52YXIgVkVER0UgPSAndmVkZ2UnO1xudmFyIENPTUJPID0gJ2NvbWJvJztcbnZhciBDRkdfUFJFRklYID0gJ2RlZmF1bHQnO1xudmFyIE1BUFBFUl9TVUZGSVggPSAnTWFwcGVyJztcbnZhciBTVEFURV9TVUZGSVggPSAnc3RhdGVTdHlsZXMnO1xuXG52YXIgSXRlbUNvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBJdGVtQ29udHJvbGxlcihncmFwaCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmVkZ2VUb0JlVXBkYXRlTWFwID0ge307XG4gICAgLyoqXG4gICAgICog5pu05paw6L656ZmQ5rWB77yM5ZCM5pe25Y+v5Lul6Ziy5q2i55u45ZCM55qE6L656aKR57mB6YeN5aSN5pu05pawXG4gICAgICogKi9cblxuICAgIHRoaXMudGhyb3R0bGVSZWZyZXNoID0gdGhyb3R0bGUoZnVuY3Rpb24gKF8pIHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGg7XG4gICAgICBpZiAoIWdyYXBoIHx8IGdyYXBoLmdldCgnZGVzdHJveWVkJykpIHJldHVybjtcbiAgICAgIHZhciBlZGdlVG9CZVVwZGF0ZU1hcCA9IF90aGlzLmVkZ2VUb0JlVXBkYXRlTWFwO1xuICAgICAgaWYgKCFlZGdlVG9CZVVwZGF0ZU1hcCB8fCAhKChfYSA9IE9iamVjdC5rZXlzKGVkZ2VUb0JlVXBkYXRlTWFwKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkpIHJldHVybjtcbiAgICAgIE9iamVjdC5rZXlzKGVkZ2VUb0JlVXBkYXRlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChlaWQpIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBlZGdlVG9CZVVwZGF0ZU1hcFtlaWRdLmVkZ2U7XG4gICAgICAgIGlmICghZWRnZSB8fCBlZGdlLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICBlZGdlLnJlZnJlc2goZWRnZVRvQmVVcGRhdGVNYXBbZWlkXS51cGRhdGVUeXBlKTtcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuZWRnZVRvQmVVcGRhdGVNYXAgPSB7fTtcbiAgICB9LCAxNiwge1xuICAgICAgdHJhaWxpbmc6IHRydWUsXG4gICAgICBsZWFkaW5nOiB0cnVlXG4gICAgfSk7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIOWinuWKoCBJdGVtIOWunuS+i1xuICAgKlxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlrp7kvovnsbvlnovvvIxub2RlIOaIliBlZGdlXG4gICAqIEBwYXJhbSB7KE5vZGVDb25maWcgJiBFZGdlQ29uZmlnKX0gbW9kZWwg5pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm5zIHsoSXRlbSl9XG4gICAqIEBtZW1iZXJvZiBJdGVtQ29udHJvbGxlclxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS5hZGRJdGVtID0gZnVuY3Rpb24gKHR5cGUsIG1vZGVsKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgdlR5cGUgPSB0eXBlID09PSBWRURHRSA/IEVER0UgOiB0eXBlO1xuICAgIHZhciBwYXJlbnQgPSBncmFwaC5nZXQoXCJcIi5jb25jYXQodlR5cGUsIFwiR3JvdXBcIikpIHx8IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICB2YXIgdXBwZXJUeXBlID0gdXBwZXJGaXJzdCh2VHlwZSk7XG4gICAgdmFyIGl0ZW0gPSBudWxsOyAvLyDojrflj5YgdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuXG4gICAgdmFyIHN0eWxlcyA9IGdyYXBoLmdldCh2VHlwZSArIHVwcGVyRmlyc3QoU1RBVEVfU1VGRklYKSkgfHwge307XG4gICAgdmFyIGRlZmF1bHRNb2RlbCA9IGdyYXBoLmdldChDRkdfUFJFRklYICsgdXBwZXJUeXBlKTtcblxuICAgIGlmIChtb2RlbFtTVEFURV9TVUZGSVhdKSB7XG4gICAgICAvLyDorr7nva4gdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuICAgICAgc3R5bGVzID0gbW9kZWxbU1RBVEVfU1VGRklYXTtcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdE1vZGVsKSB7XG4gICAgICAvLyDlvojlpJrluIPlsYDkvJrnm7TmjqXkv67mlLnljp/mlbDmja7mqKHlnovvvIzmiYDku6XkuI3og73nlKggbWVyZ2Ug55qE5b2i5byP77yM6YCQ5Liq5YaZ5YWl5Y6fIG1vZGVsIOS4rVxuICAgICAgZWFjaChkZWZhdWx0TW9kZWwsIGZ1bmN0aW9uICh2YWwsIGNmZykge1xuICAgICAgICBpZiAoaXNPYmplY3QodmFsKSAmJiAhaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgbW9kZWxbY2ZnXSA9IGRlZXBNaXgoe30sIHZhbCwgbW9kZWxbY2ZnXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgbW9kZWxbY2ZnXSA9IG1vZGVsW2NmZ10gfHwgY2xvbmUoZGVmYXVsdE1vZGVsW2NmZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBtb2RlbFtjZmddIHx8IGRlZmF1bHRNb2RlbFtjZmddO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGVyID0gZ3JhcGguZ2V0KHZUeXBlICsgTUFQUEVSX1NVRkZJWCk7XG5cbiAgICBpZiAobWFwcGVyKSB7XG4gICAgICB2YXIgbWFwcGVkTW9kZWxfMSA9IG1hcHBlcihtb2RlbCk7XG5cbiAgICAgIGlmIChtYXBwZWRNb2RlbF8xW1NUQVRFX1NVRkZJWF0pIHtcbiAgICAgICAgLy8g6K6+572uIHRoaXMuZ2V0KCdzdHlsZXMnKSDkuK3nmoTlgLxcbiAgICAgICAgc3R5bGVzID0gbWFwcGVkTW9kZWxfMVtTVEFURV9TVUZGSVhdO1xuICAgICAgICBkZWxldGUgbWFwcGVkTW9kZWxfMVtTVEFURV9TVUZGSVhdO1xuICAgICAgfSAvLyDlpoLmnpzphY3nva7kuoYgZGVmYXVsdEVkZ2Ug5oiWIGRlZmF1bHROb2Rl77yM5YiZ5bCG6buY6K6k6YWN572u55qE5pWw5o2u5Lmf5ZCI5bm26L+b5Y67XG5cblxuICAgICAgZWFjaChtYXBwZWRNb2RlbF8xLCBmdW5jdGlvbiAodmFsLCBjZmcpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHZhbCkgJiYgIWlzQXJyYXkodmFsKSkge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBkZWVwTWl4KHt9LCBtb2RlbFtjZmddLCB2YWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBtYXBwZWRNb2RlbF8xW2NmZ10gfHwgbW9kZWxbY2ZnXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYmVmb3JlYWRkaXRlbScsIHtcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBtb2RlbDogbW9kZWxcbiAgICB9KTtcblxuICAgIGlmICh0eXBlID09PSBFREdFIHx8IHR5cGUgPT09IFZFREdFKSB7XG4gICAgICB2YXIgc291cmNlID0gdm9pZCAwO1xuICAgICAgdmFyIHRhcmdldCA9IHZvaWQgMDtcbiAgICAgIHNvdXJjZSA9IG1vZGVsLnNvdXJjZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuXG4gICAgICB0YXJnZXQgPSBtb2RlbC50YXJnZXQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcblxuICAgICAgaWYgKHNvdXJjZSAmJiBpc1N0cmluZyhzb3VyY2UpKSB7XG4gICAgICAgIHNvdXJjZSA9IGdyYXBoLmZpbmRCeUlkKHNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXQgJiYgaXNTdHJpbmcodGFyZ2V0KSkge1xuICAgICAgICB0YXJnZXQgPSBncmFwaC5maW5kQnlJZCh0YXJnZXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNvdXJjZSB8fCAhdGFyZ2V0KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIlRoZSBzb3VyY2Ugb3IgdGFyZ2V0IG5vZGUgb2YgZWRnZSBcIi5jb25jYXQobW9kZWwuaWQsIFwiIGRvZXMgbm90IGV4aXN0IVwiKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHNvdXJjZS5nZXRUeXBlICYmIHNvdXJjZS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgbW9kZWwuaXNDb21ib0VkZ2UgPSB0cnVlOyAvLyBncmFwaC51cGRhdGVDb21ibyhzb3VyY2UgYXMgSUNvbWJvKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldC5nZXRUeXBlICYmIHRhcmdldC5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgbW9kZWwuaXNDb21ib0VkZ2UgPSB0cnVlOyAvLyBncmFwaC51cGRhdGVDb21ibyh0YXJnZXQgYXMgSUNvbWJvKTtcbiAgICAgIH1cblxuICAgICAgaXRlbSA9IG5ldyBFZGdlKHtcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICAgIHN0eWxlczogc3R5bGVzLFxuICAgICAgICBsaW5rQ2VudGVyOiBncmFwaC5nZXQoJ2xpbmtDZW50ZXInKSxcbiAgICAgICAgZ3JvdXA6IHBhcmVudC5hZGRHcm91cCgpXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IE5PREUpIHtcbiAgICAgIGl0ZW0gPSBuZXcgTm9kZSh7XG4gICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICAgc3R5bGVzOiBzdHlsZXMsXG4gICAgICAgIGdyb3VwOiBwYXJlbnQuYWRkR3JvdXAoKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBDT01CTykge1xuICAgICAgdmFyIGNoaWxkcmVuID0gbW9kZWwuY2hpbGRyZW47XG4gICAgICB2YXIgY29tYm9CQm94ID0gZ2V0Q29tYm9CQm94KGNoaWxkcmVuLCBncmFwaCk7XG4gICAgICBpZiAoIWlzTmFOKGNvbWJvQkJveC54KSkgbW9kZWwueCA9IGNvbWJvQkJveC54O2Vsc2UgaWYgKGlzTmFOKG1vZGVsLngpKSBtb2RlbC54ID0gTWF0aC5yYW5kb20oKSAqIDEwMDtcbiAgICAgIGlmICghaXNOYU4oY29tYm9CQm94LnkpKSBtb2RlbC55ID0gY29tYm9CQm94Lnk7ZWxzZSBpZiAoaXNOYU4obW9kZWwueSkpIG1vZGVsLnkgPSBNYXRoLnJhbmRvbSgpICogMTAwO1xuICAgICAgdmFyIGNvbWJvR3JvdXAgPSBwYXJlbnQuYWRkR3JvdXAoKTtcbiAgICAgIGNvbWJvR3JvdXAuc2V0WkluZGV4KG1vZGVsLmRlcHRoKTtcbiAgICAgIGl0ZW0gPSBuZXcgQ29tYm8oe1xuICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICAgIHN0eWxlczogc3R5bGVzLFxuICAgICAgICBiYm94OiBtb2RlbC5jb2xsYXBzZWQgPyBnZXRDb21ib0JCb3goW10sIGdyYXBoKSA6IGNvbWJvQkJveCxcbiAgICAgICAgZ3JvdXA6IGNvbWJvR3JvdXBcbiAgICAgIH0pO1xuICAgICAgdmFyIGNvbWJvTW9kZWxfMSA9IGl0ZW0uZ2V0TW9kZWwoKTtcbiAgICAgIChjaGlsZHJlbiB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgdmFyIGNoaWxkSXRlbSA9IGdyYXBoLmZpbmRCeUlkKGNoaWxkLmlkKTtcbiAgICAgICAgaXRlbS5hZGRDaGlsZChjaGlsZEl0ZW0pO1xuICAgICAgICBjaGlsZC5kZXB0aCA9IGNvbWJvTW9kZWxfMS5kZXB0aCArIDI7XG4gICAgICB9KTsgLy8gY29sbGFwc2UgdGhlIGNvbWJvIGlmIHRoZSBjb2xsYXBzZWQgaXMgdHJ1ZSBpbiB0aGUgbW9kZWxcblxuICAgICAgaWYgKG1vZGVsLmNvbGxhcHNlZCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoIWl0ZW0uZGVzdHJveWVkKSB7XG4gICAgICAgICAgICBncmFwaC5jb2xsYXBzZUNvbWJvKGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGdyYXBoLmdldChcIlwiLmNvbmNhdCh0eXBlLCBcInNcIikpLnB1c2goaXRlbSk7XG4gICAgICBncmFwaC5nZXQoJ2l0ZW1NYXAnKVtpdGVtLmdldCgnaWQnKV0gPSBpdGVtO1xuICAgICAgZ3JhcGguZW1pdCgnYWZ0ZXJhZGRpdGVtJywge1xuICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICBtb2RlbDogbW9kZWxcbiAgICAgIH0pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cblxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pu05paw6IqC54K55oiW6L65XG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJRCDmiJYg5a6e5L6LXG4gICAqIEBwYXJhbSB7KEVkZ2VDb25maWcgfCBQYXJ0aWFsPE5vZGVDb25maWc+KX0gY2ZnIOaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuc1xuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBjZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hLCBfYjtcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIOabtOaWsOeahCBpdGVtIOeahOexu+Wei1xuXG5cbiAgICB2YXIgdHlwZSA9ICcnO1xuICAgIGlmIChpdGVtLmdldFR5cGUpIHR5cGUgPSBpdGVtLmdldFR5cGUoKTtcbiAgICB2YXIgbWFwcGVyID0gZ3JhcGguZ2V0KHR5cGUgKyBNQVBQRVJfU1VGRklYKTtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdmFyIHVwZGF0ZVR5cGUgPSBpdGVtLmdldFVwZGF0ZVR5cGUoY2ZnKTtcblxuICAgIGlmIChtYXBwZXIpIHtcbiAgICAgIHZhciByZXN1bHQgPSBkZWVwTWl4KHt9LCBtb2RlbCwgY2ZnKTtcbiAgICAgIHZhciBtYXBwZWRNb2RlbCA9IG1hcHBlcihyZXN1bHQpOyAvLyDlsIYgdXBkYXRlIOaXtuWAmeeUqOaIt+S8oOWFpeeahOWPguaVsOS4jm1hcHBlck1vZGVs5YGaZGVlcE1peO+8jOS7peS+v+WkjeeUqOS5i+WJjeiuvue9rueahOWPguaVsOWAvFxuXG4gICAgICB2YXIgbmV3TW9kZWwgPSBkZWVwTWl4KHt9LCBtb2RlbCwgbWFwcGVkTW9kZWwsIGNmZyk7XG5cbiAgICAgIGlmIChtYXBwZWRNb2RlbFtTVEFURV9TVUZGSVhdKSB7XG4gICAgICAgIGl0ZW0uc2V0KCdzdHlsZXMnLCBuZXdNb2RlbFtTVEFURV9TVUZGSVhdKTtcbiAgICAgICAgZGVsZXRlIG5ld01vZGVsW1NUQVRFX1NVRkZJWF07XG4gICAgICB9XG5cbiAgICAgIGVhY2gobmV3TW9kZWwsIGZ1bmN0aW9uICh2YWwsIGtleSkge1xuICAgICAgICBjZmdba2V5XSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBtZXJnZSB1cGRhdGXkvKDov5vmnaXnmoTlr7nosaHlj4LmlbDvvIxtb2RlbOS4reayoeacieeahOaVsOaNruS4jeWBmuWkhOeQhu+8jOWvueixoeWSjOWtl+espuS4suWAvOS5n+S4jeWBmuWkhOeQhu+8jOebtOaOpeabv+aNouWOn+adpeeahFxuICAgICAgZWFjaChjZmcsIGZ1bmN0aW9uICh2YWwsIGtleSkge1xuICAgICAgICBpZiAobW9kZWxba2V5XSkge1xuICAgICAgICAgIGlmIChpc09iamVjdCh2YWwpICYmICFpc0FycmF5KHZhbCkpIHtcbiAgICAgICAgICAgIGNmZ1trZXldID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG1vZGVsW2tleV0pLCBjZmdba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IC8vIGVtaXQgYmVmb3JldXBkYXRlaXRlbSDkuovku7ZcblxuXG4gICAgZ3JhcGguZW1pdCgnYmVmb3JldXBkYXRlaXRlbScsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICBjZmc6IGNmZ1xuICAgIH0pO1xuXG4gICAgaWYgKHR5cGUgPT09IEVER0UpIHtcbiAgICAgIC8vIOiLpeaYr+i+ueimgeabtOaWsHNvdXJjZSB8fCB0YXJnZXQsIOS4uuS6huS4jeW9seWTjeekuuS+i+WGhemDqG1vZGVs77yM5bm25LiU6YeN5paw6K6h566Xc3RhcnRQb2ludOWSjGVuZFBvaW5077yM5omL5Yqo6K6+572uXG4gICAgICBpZiAoY2ZnLnNvdXJjZSkge1xuICAgICAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZTtcblxuICAgICAgICBpZiAoaXNTdHJpbmcoc291cmNlKSkge1xuICAgICAgICAgIHNvdXJjZSA9IGdyYXBoLmZpbmRCeUlkKHNvdXJjZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnNldFNvdXJjZShzb3VyY2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ZnLnRhcmdldCkge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gY2ZnLnRhcmdldDtcblxuICAgICAgICBpZiAoaXNTdHJpbmcodGFyZ2V0KSkge1xuICAgICAgICAgIHRhcmdldCA9IGdyYXBoLmZpbmRCeUlkKHRhcmdldCk7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnNldFRhcmdldCh0YXJnZXQpO1xuICAgICAgfVxuXG4gICAgICBpdGVtLnVwZGF0ZShjZmcpO1xuICAgIH0gLy8gaXRlbS51cGRhdGUoY2ZnKTtcblxuXG4gICAgaWYgKHR5cGUgPT09IE5PREUgfHwgdHlwZSA9PT0gQ09NQk8pIHtcbiAgICAgIGl0ZW0udXBkYXRlKGNmZywgdXBkYXRlVHlwZSk7XG4gICAgICB2YXIgZWRnZXNfMSA9IGl0ZW0uZ2V0RWRnZXMoKTtcbiAgICAgIHZhciByZWZyZXNoRWRnZSA9ICh1cGRhdGVUeXBlID09PSBudWxsIHx8IHVwZGF0ZVR5cGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVwZGF0ZVR5cGUuaW5jbHVkZXMoJ2Jib3gnKSkgfHwgdXBkYXRlVHlwZSA9PT0gJ21vdmUnO1xuXG4gICAgICBpZiAodHlwZSA9PT0gTk9ERSkge1xuICAgICAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ21vdmUnKSB7XG4gICAgICAgICAgZWFjaChlZGdlc18xLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgX3RoaXMuZWRnZVRvQmVVcGRhdGVNYXBbZWRnZS5nZXRJRCgpXSA9IHtcbiAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgdXBkYXRlVHlwZTogdXBkYXRlVHlwZVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgX3RoaXMudGhyb3R0bGVSZWZyZXNoKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVmcmVzaEVkZ2UpIHtcbiAgICAgICAgICBlYWNoKGVkZ2VzXzEsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICBlZGdlLnJlZnJlc2godXBkYXRlVHlwZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVmcmVzaEVkZ2UgJiYgdHlwZSA9PT0gQ09NQk8pIHtcbiAgICAgICAgdmFyIHNoYXBlRmFjdG9yeSA9IGl0ZW0uZ2V0KCdzaGFwZUZhY3RvcnknKTtcbiAgICAgICAgdmFyIHNoYXBlVHlwZSA9IG1vZGVsLnR5cGUgfHwgJ2NpcmNsZSc7XG4gICAgICAgIHZhciBjb21ib0FuaW1hdGUgPSBtb2RlbC5hbmltYXRlID09PSB1bmRlZmluZWQgfHwgY2ZnLmFuaW1hdGUgPT09IHVuZGVmaW5lZCA/IChfYiA9IChfYSA9IHNoYXBlRmFjdG9yeVtzaGFwZVR5cGVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub3B0aW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmFuaW1hdGUgOiBtb2RlbC5hbmltYXRlIHx8IGNmZy5hbmltYXRlO1xuXG4gICAgICAgIGlmIChjb21ib0FuaW1hdGUpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGtleVNoYXBlID0gaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgICAgICAgICAgaWYgKCFrZXlTaGFwZSB8fCBrZXlTaGFwZS5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgICAgIGVhY2goZWRnZXNfMSwgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgICAgaWYgKGVkZ2UgJiYgIWVkZ2UuZGVzdHJveWVkKSBlZGdlLnJlZnJlc2goKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sIDIwMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWFjaChlZGdlc18xLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgZWRnZS5yZWZyZXNoKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdhZnRlcnVwZGF0ZWl0ZW0nLCB7XG4gICAgICBpdGVtOiBpdGVtLFxuICAgICAgY2ZnOiBjZmdcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBjb21ibyDnmoTlrZDlhYPntKDmm7TmlrAgY29tYm8g55qE5L2N572u5Y+K5aSn5bCPXG4gICAqXG4gICAqIEBwYXJhbSB7SUNvbWJvfSBjb21ibyBJRCDmiJYg5a6e5L6LXG4gICAqIEByZXR1cm5zXG4gICAqIEBtZW1iZXJvZiBJdGVtQ29udHJvbGxlclxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVDb21ibyA9IGZ1bmN0aW9uIChjb21ibywgY2hpbGRyZW4pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hLCBfYjtcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbWJvIHx8IGNvbWJvLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBtb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7XG4gICAgdmFyIGNvbWJvQkJveCA9IGdldENvbWJvQkJveChjaGlsZHJlbiwgZ3JhcGgsIGNvbWJvKTtcbiAgICB2YXIgY29tYm9YID0gY29tYm9CQm94LngsXG4gICAgICAgIGNvbWJvWSA9IGNvbWJvQkJveC55O1xuICAgIGNvbWJvLnNldCgnYmJveCcsIGNvbWJvQkJveCk7XG4gICAgY29tYm8udXBkYXRlKHtcbiAgICAgIHg6IGNvbWJvWCB8fCBtb2RlbC54LFxuICAgICAgeTogY29tYm9ZIHx8IG1vZGVsLnlcbiAgICB9KTtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gY29tYm8uZ2V0KCdzaGFwZUZhY3RvcnknKTtcbiAgICB2YXIgc2hhcGVUeXBlID0gbW9kZWwudHlwZSB8fCAnY2lyY2xlJztcbiAgICB2YXIgY29tYm9BbmltYXRlID0gbW9kZWwuYW5pbWF0ZSA9PT0gdW5kZWZpbmVkID8gKF9iID0gKF9hID0gc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuYW5pbWF0ZSA6IG1vZGVsLmFuaW1hdGU7XG5cbiAgICBpZiAoY29tYm9BbmltYXRlKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFjb21ibyB8fCBjb21iby5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgdmFyIGtleVNoYXBlID0gY29tYm8uZ2V0S2V5U2hhcGUoKTtcbiAgICAgICAgaWYgKCFrZXlTaGFwZSB8fCBrZXlTaGFwZS5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgY29tYm8uZ2V0U2hhcGVDZmcobW9kZWwpOyAvLyDmm7TmlrAgY29tYm8g57yT5a2Y55qEIHNpemVcblxuICAgICAgICBfdGhpcy51cGRhdGVDb21ib0VkZ2VzKGNvbWJvKTtcbiAgICAgIH0sIDIwMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9FZGdlcyhjb21ibyk7XG4gICAgfVxuICB9O1xuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVDb21ib0VkZ2VzID0gZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgdmFyIGNvbWJFZGdlcyA9IGNvbWJvLmdldEVkZ2VzKCkgfHwgW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbWJFZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBjb21iRWRnZXNbaV07XG5cbiAgICAgIGlmIChlZGdlICYmICFlZGdlLmRlc3Ryb3llZCkge1xuICAgICAgICB2YXIgZWRnZVNGID0gZWRnZS5nZXQoJ3NoYXBlRmFjdG9yeScpO1xuICAgICAgICB2YXIgZWRnZUNmZyA9IGVkZ2UuZ2V0U2hhcGVDZmcoZWRnZS5nZXRNb2RlbCgpKTtcbiAgICAgICAgdmFyIGVkZ2VHcm91cCA9IGVkZ2UuZ2V0Q29udGFpbmVyKCk7XG4gICAgICAgIGVkZ2VHcm91cC5jbGVhcigpO1xuICAgICAgICB2YXIga2V5U2hhcGUgPSBlZGdlU0YuZHJhdyhlZGdlQ2ZnLnR5cGUsIGVkZ2VDZmcsIGVkZ2VHcm91cCk7XG4gICAgICAgIGVkZ2Uuc2V0KCdrZXlTaGFwZScsIGtleVNoYXBlKTtcbiAgICAgICAga2V5U2hhcGUuc2V0KCdpc0tleVNoYXBlJywgdHJ1ZSk7XG4gICAgICAgIGtleVNoYXBlLnNldCgnZHJhZ2dhYmxlJywgdHJ1ZSk7XG4gICAgICAgIGVkZ2Uuc2V0T3JpZ2luU3R5bGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmlLbotbcgY29tYm/vvIzpmpDol4/nm7jlhbPlhYPntKBcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuY29sbGFwc2VDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRyZW4gPSBjb21iby5nZXRDaGlsZHJlbigpO1xuICAgIGNoaWxkcmVuLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIGdyYXBoLmhpZGVJdGVtKG5vZGUpO1xuICAgIH0pO1xuICAgIGNoaWxkcmVuLmNvbWJvcy5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICBncmFwaC5oaWRlSXRlbShjKTtcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWxleW8gCBjb21ib++8jOebuOWFs+WFg+e0oOWHuueOsFxuICAgKiDoi6XlrZAgY29tYm8g5Y6f5YWI5piv5pS26LW354q25oCB77yM5YiZ5L+d5oyB5a6D55qE5pS26LW354q25oCBXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLmV4cGFuZENvbWJvID0gZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvID0gZ3JhcGguZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIHZhciBjaGlsZHJlbiA9IGNvbWJvLmdldENoaWxkcmVuKCk7XG4gICAgY2hpbGRyZW4ubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgZ3JhcGguc2hvd0l0ZW0obm9kZSk7XG4gICAgfSk7XG4gICAgY2hpbGRyZW4uY29tYm9zLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcbiAgICAgIGlmIChjLmdldE1vZGVsKCkuY29sbGFwc2VkKSB7XG4gICAgICAgIGMuc2hvdygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JhcGguc2hvd0l0ZW0oYyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTmjIflrprnmoToioLngrnmiJbovrlcbiAgICpcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIGl0ZW0gSUQg5oiW5a6e5L6LXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaXRlbU1vZGVsID0gY2xvbmUoaXRlbS5nZXRNb2RlbCgpKTtcbiAgICBncmFwaC5lbWl0KCdiZWZvcmVyZW1vdmVpdGVtJywge1xuICAgICAgaXRlbTogaXRlbU1vZGVsXG4gICAgfSk7XG4gICAgdmFyIHR5cGUgPSAnJztcbiAgICBpZiAoaXRlbS5nZXRUeXBlKSB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgdmFyIGl0ZW1zID0gZ3JhcGguZ2V0KFwiXCIuY29uY2F0KHR5cGUsIFwic1wiKSk7XG4gICAgdmFyIGluZGV4ID0gaXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPiAtMSkgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIGlmICh0eXBlID09PSBFREdFKSB7XG4gICAgICB2YXIgdml0ZW1zID0gZ3JhcGguZ2V0KFwidlwiLmNvbmNhdCh0eXBlLCBcInNcIikpO1xuICAgICAgdmFyIHZpbmRleCA9IHZpdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgaWYgKHZpbmRleCA+IC0xKSB2aXRlbXMuc3BsaWNlKHZpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1JZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuICAgIHZhciBpdGVtTWFwID0gZ3JhcGguZ2V0KCdpdGVtTWFwJyk7XG4gICAgZGVsZXRlIGl0ZW1NYXBbaXRlbUlkXTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IGdyYXBoLmdldCgnY29tYm9UcmVlcycpO1xuICAgIHZhciBpZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgaWYgKHR5cGUgPT09IE5PREUpIHtcbiAgICAgIHZhciBjb21ib0lkID0gaXRlbS5nZXRNb2RlbCgpLmNvbWJvSWQ7XG5cbiAgICAgIGlmIChjb21ib1RyZWVzICYmIGNvbWJvSWQpIHtcbiAgICAgICAgdmFyIGJyb3RoZXJzXzEgPSBjb21ib1RyZWVzO1xuICAgICAgICB2YXIgZm91bmRfMSA9IGZhbHNlOyAvLyB0aGUgZmxhZyB0byB0ZXJtaW5hdGUgdGhlIGZvckVhY2ggY2lyY3VsYXRpb25cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBub2RlIGZyb20gdGhlIGNoaWxkcmVuIGFycmF5IG9mIGl0cyBwYXJlbnQgZnJvbXQgaGUgdHJlZVxuXG4gICAgICAgIGNvbWJvVHJlZXMuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgICAgICBpZiAoZm91bmRfMSkgcmV0dXJuO1xuICAgICAgICAgIHRyYXZlcnNlVHJlZShjdHJlZSwgZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgICAgICBpZiAoY29tYm8uaWQgPT09IGlkICYmIGJyb3RoZXJzXzEpIHtcbiAgICAgICAgICAgICAgdmFyIGJpZHggPSBicm90aGVyc18xLmluZGV4T2YoY29tYm8pO1xuICAgICAgICAgICAgICBicm90aGVyc18xLnNwbGljZShiaWR4LCAxKTtcbiAgICAgICAgICAgICAgZm91bmRfMSA9IHRydWU7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdGVybWluYXRlIHRoZSB0cmF2ZXJzZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicm90aGVyc18xID0gY29tYm8uY2hpbGRyZW47XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IC8vIOiLpeenu+mZpOeahOaYr+iKgueCue+8jOmcgOimgeWwhuS4juS5i+ebuOi/nueahOi+ueS4gOWQjOWIoOmZpFxuXG5cbiAgICAgIHZhciBlZGdlcyA9IGl0ZW0uZ2V0RWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaSA9IGVkZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGdyYXBoLnJlbW92ZUl0ZW0oZWRnZXNbaV0sIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbWJvSWQpIGdyYXBoLnVwZGF0ZUNvbWJvKGNvbWJvSWQpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gQ09NQk8pIHtcbiAgICAgIHZhciBwYXJlbnRJZCA9IGl0ZW0uZ2V0TW9kZWwoKS5wYXJlbnRJZDtcbiAgICAgIHZhciBjb21ib0luVHJlZV8xOyAvLyBmaW5kIHRoZSBzdWJ0cmVlIHJvb3RlZCBhdCB0aGUgaXRlbSB0byBiZSByZW1vdmVkXG5cbiAgICAgIHZhciBmb3VuZF8yID0gZmFsc2U7IC8vIHRoZSBmbGFnIHRvIHRlcm1pbmF0ZSB0aGUgZm9yRWFjaCBjaXJjdWxhdGlvblxuXG4gICAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgICAgaWYgKGZvdW5kXzIpIHJldHVybjtcbiAgICAgICAgdHJhdmVyc2VUcmVlKGN0cmVlLCBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgICBpZiAoY29tYm8uaWQgPT09IGlkKSB7XG4gICAgICAgICAgICBjb21ib0luVHJlZV8xID0gY29tYm87XG4gICAgICAgICAgICBmb3VuZF8yID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdGVybWluYXRlIHRoZSB0cmF2ZXJzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgY29tYm9JblRyZWVfMS5yZW1vdmVkID0gdHJ1ZTtcblxuICAgICAgaWYgKGNvbWJvSW5UcmVlXzEgJiYgY29tYm9JblRyZWVfMS5jaGlsZHJlbikge1xuICAgICAgICBjb21ib0luVHJlZV8xLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlSXRlbShjaGlsZC5pZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSAvLyDoi6Xnp7vpmaTnmoTmmK8gY29tYm/vvIzpnIDopoHlsIbkuI7kuYvnm7jov57nmoTovrnkuIDlkIzliKDpmaRcblxuXG4gICAgICB2YXIgZWRnZXMgPSBpdGVtLmdldEVkZ2VzKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSBlZGdlcy5sZW5ndGg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGdyYXBoLnJlbW92ZUl0ZW0oZWRnZXNbaV0sIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmVudElkKSBncmFwaC51cGRhdGVDb21ibyhwYXJlbnRJZCk7XG4gICAgfVxuXG4gICAgaXRlbS5kZXN0cm95KCk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJyZW1vdmVpdGVtJywge1xuICAgICAgaXRlbTogaXRlbU1vZGVsLFxuICAgICAgdHlwZTogdHlwZVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5pu05pawIGl0ZW0g54q25oCBXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVtIOWunuS+i1xuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUg54q25oCB5ZCN56ewXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdmFsdWUg5piv5ZCm5ZCv55So54q25oCB5oiW54q25oCB5YC8XG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuc2V0SXRlbVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlLCB2YWx1ZSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHN0YXRlTmFtZSA9IHN0YXRlO1xuXG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgc3RhdGVOYW1lID0gXCJcIi5jb25jYXQoc3RhdGUsIFwiOlwiKS5jb25jYXQodmFsdWUpO1xuICAgIH0gLy8g5bey57uP5a2Y5Zyo6KaB6K6+572u55qEIHN0YXRl77yM5oiW5LiN5a2Y5ZyoIHN0YXRlIOeahOagt+W8j+S4uiB1bmRlZmluZWRcblxuXG4gICAgaWYgKGl0ZW0uaGFzU3RhdGUoc3RhdGVOYW1lKSA9PT0gdmFsdWUgJiYgdmFsdWUgfHwgLy8g5b2T6K+l54q25oCB5bey57uP5a2Y5Zyo5LiU546w5Zyo6ZyA6KaB6K6+572u5Li6IHRydWUg5pe277yM5LiN6ZyA6KaB57un57ut44CC5b2T6K+l54q25oCB5LiN5a2Y5Zyo77yM5LiU6K6+572u5Li6IGZhbHNlIOaXtu+8jOmcgOimgee7p+e7rVxuICAgIGlzU3RyaW5nKHZhbHVlKSAmJiBpdGVtLmhhc1N0YXRlKHN0YXRlTmFtZSkpIHtcbiAgICAgIC8vIOW9k+ivpeeKtuaAgSB2YWx1ZSDmmK/lrZfnrKbkuLLvvIzkuJTlt7Lnu4/lrZjlnKjor6XnirbmgIHvvIzkuI3pnIDopoHnu6fnu61cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVpdGVtc3RhdGVjaGFuZ2UnLCB7XG4gICAgICBpdGVtOiBpdGVtLFxuICAgICAgc3RhdGU6IHN0YXRlTmFtZSxcbiAgICAgIGVuYWJsZWQ6IHZhbHVlXG4gICAgfSk7XG4gICAgaXRlbS5zZXRTdGF0ZShzdGF0ZSwgdmFsdWUpO1xuICAgIGdyYXBoLmF1dG9QYWludCgpO1xuICAgIGdyYXBoLmVtaXQoJ2FmdGVyaXRlbXN0YXRlY2hhbmdlJywge1xuICAgICAgaXRlbTogaXRlbSxcbiAgICAgIHN0YXRlOiBzdGF0ZU5hbWUsXG4gICAgICBlbmFibGVkOiB2YWx1ZVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5bCG5oyH5a6a54q25oCB55qE5LyY5YWI57qn5o+Q5Y2H5Li65pyA6auY5LyY5YWI57qnXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSDlhYPntKBpZOaIluWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0gc3RhdGUg54q25oCB5ZCN56ewXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLnByaW9yaXR5U3RhdGUgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGUpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBjdXJyZW50SXRlbSA9IGl0ZW07XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGN1cnJlbnRJdGVtID0gZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfSAvLyDlhYjlj5bmtojlt7LmnInnmoQgc3RhdGVcblxuXG4gICAgdGhpcy5zZXRJdGVtU3RhdGUoY3VycmVudEl0ZW0sIHN0YXRlLCBmYWxzZSk7IC8vIOWGjeiuvue9rnN0YXRl77yM5YiZ5q2k5pe26K+l5LyY5YWI57qn5Li65pyA6auYXG5cbiAgICB0aGlzLnNldEl0ZW1TdGF0ZShjdXJyZW50SXRlbSwgc3RhdGUsIHRydWUpO1xuICB9O1xuICAvKipcbiAgICog5riF6Zmk5omA5pyJ5oyH5a6a55qE54q25oCBXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVtIOWunuS+i1xuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBzdGF0ZXMg54q25oCB5ZCN56ew6ZuG5ZCIXG4gICAqIEBtZW1iZXJvZiBJdGVtQ29udHJvbGxlclxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS5jbGVhckl0ZW1TdGF0ZXMgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGVzKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgaXRlbSA9IGdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWl0ZW1zdGF0ZXNjbGVhcicsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICBzdGF0ZXM6IHN0YXRlc1xuICAgIH0pO1xuICAgIGl0ZW0uY2xlYXJTdGF0ZXMoc3RhdGVzKTtcbiAgICBncmFwaC5lbWl0KCdhZnRlcml0ZW1zdGF0ZXNjbGVhcicsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICBzdGF0ZXM6IHN0YXRlc1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5Yi35paw5oyH5a6a55qEIEl0ZW1cbiAgICpcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIEl0ZW0gSUQg5oiWIOWunuS+i1xuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUucmVmcmVzaEl0ZW0gPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVpdGVtcmVmcmVzaCcsIHtcbiAgICAgIGl0ZW06IGl0ZW1cbiAgICB9KTsgLy8g6LCD55SoIEl0ZW0g55qEIHJlZnJlc2gg5pa55rOV77yM5a6e546w5Yi35paw5Yqf6IO9XG5cbiAgICBpdGVtLnJlZnJlc2goKTtcbiAgICBncmFwaC5lbWl0KCdhZnRlcml0ZW1yZWZyZXNoJywge1xuICAgICAgaXRlbTogaXRlbVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5qC55o2uIGdyYXBoIOS4iueUqCBjb21ib3Mg5pWw5o2u55Sf5oiQ55qEIGNvbWJvVHJlZSDmnaXlop7liqDmiYDmnIkgY29tYm9zXG4gICAqXG4gICAqIEBwYXJhbSB7Q29tYm9UcmVlW119IGNvbWJvVHJlZXMgZ3JhcGgg5LiK55SoIGNvbWJvcyDmlbDmja7nlJ/miJDnmoQgY29tYm9UcmVlXG4gICAqIEBwYXJhbSB7Q29tYm9Db25maWdbXX0gY29tYm9Nb2RlbHMgY29tYm9zIOaVsOaNrlxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuYWRkQ29tYm9zID0gZnVuY3Rpb24gKGNvbWJvVHJlZXMsIGNvbWJvTW9kZWxzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICB0cmF2ZXJzZVRyZWVVcChjdHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIHZhciBjb21ib01vZGVsO1xuICAgICAgICBjb21ib01vZGVscy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgIGlmIChtb2RlbC5pZCA9PT0gY2hpbGQuaWQpIHtcbiAgICAgICAgICAgIG1vZGVsLmNoaWxkcmVuID0gY2hpbGQuY2hpbGRyZW47XG4gICAgICAgICAgICBtb2RlbC5kZXB0aCA9IGNoaWxkLmRlcHRoO1xuICAgICAgICAgICAgY29tYm9Nb2RlbCA9IG1vZGVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGNvbWJvTW9kZWwpIHtcbiAgICAgICAgICBfdGhpcy5hZGRJdGVtKCdjb21ibycsIGNvbWJvTW9kZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgY29tYm9Hcm91cCA9IGdyYXBoLmdldCgnY29tYm9Hcm91cCcpO1xuICAgIGlmIChjb21ib0dyb3VwKSBjb21ib0dyb3VwLnNvcnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaUueWPmEl0ZW3nmoTmmL7npLrnirbmgIFcbiAgICpcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIEl0ZW0gSUQg5oiWIOWunuS+i1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZpc2libGUg5piv5ZCm5pi+56S6XG4gICAqIEBtZW1iZXJvZiBJdGVtQ29udHJvbGxlclxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS5jaGFuZ2VJdGVtVmlzaWJpbGl0eSA9IGZ1bmN0aW9uIChpdGVtLCB2aXNpYmxlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGl0ZW0gdG8gYmUgc2hvd24gb3IgaGlkZGVuIGRvZXMgbm90IGV4aXN0IScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWl0ZW12aXNpYmlsaXR5Y2hhbmdlJywge1xuICAgICAgaXRlbTogaXRlbSxcbiAgICAgIHZpc2libGU6IHZpc2libGVcbiAgICB9KTtcbiAgICBpdGVtLmNoYW5nZVZpc2liaWxpdHkodmlzaWJsZSk7XG5cbiAgICBpZiAoaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSBOT0RFKSB7XG4gICAgICB2YXIgZWRnZXMgPSBpdGVtLmdldEVkZ2VzKCk7XG4gICAgICBlYWNoKGVkZ2VzLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAvLyDoi6XpmpDol4/oioLngrnvvIzliJnlsIbkuI7kuYvlhbPogZTnmoTovrnkuZ/pmpDol49cbiAgICAgICAgLy8g6Iul5pi+56S66IqC54K577yM5YiZ5bCG5LiO5LmL5YWz6IGU55qE6L655Lmf5pi+56S677yM5L2G5piv6ZyA6KaB5Yik5pat6L655Lik56uv55qE6IqC54K56YO95piv5Y+v6KeB55qEXG4gICAgICAgIGlmICh2aXNpYmxlICYmICEoZWRnZS5nZXQoJ3NvdXJjZScpLmlzVmlzaWJsZSgpICYmIGVkZ2UuZ2V0KCd0YXJnZXQnKS5pc1Zpc2libGUoKSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5jaGFuZ2VJdGVtVmlzaWJpbGl0eShlZGdlLCB2aXNpYmxlKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSBDT01CTykge1xuICAgICAgdmFyIGNvbWJvVHJlZXMgPSBncmFwaC5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICAgIHZhciBpZF8xID0gaXRlbS5nZXQoJ2lkJyk7XG4gICAgICB2YXIgY2hpbGRyZW5fMSA9IFtdO1xuICAgICAgdmFyIGZvdW5kXzMgPSBmYWxzZTsgLy8gZmxhZyB0aGUgdGVybWluYXRlIHRoZSBmb3JFYWNoXG5cbiAgICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgICBpZiAoZm91bmRfMykgcmV0dXJuO1xuICAgICAgICBpZiAoIWN0cmVlLmNoaWxkcmVuIHx8IGN0cmVlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgICAgICB0cmF2ZXJzZVRyZWUoY3RyZWUsIGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICAgIGlmIChjb21iby5pZCA9PT0gaWRfMSkge1xuICAgICAgICAgICAgY2hpbGRyZW5fMSA9IGNvbWJvLmNoaWxkcmVuO1xuICAgICAgICAgICAgZm91bmRfMyA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGNoaWxkcmVuXzEgJiYgKCF2aXNpYmxlIHx8IHZpc2libGUgJiYgIWl0ZW0uZ2V0TW9kZWwoKS5jb2xsYXBzZWQpKSB7XG4gICAgICAgIGNoaWxkcmVuXzEuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICB2YXIgY2hpbGRJdGVtID0gZ3JhcGguZmluZEJ5SWQoY2hpbGQuaWQpO1xuXG4gICAgICAgICAgX3RoaXMuY2hhbmdlSXRlbVZpc2liaWxpdHkoY2hpbGRJdGVtLCB2aXNpYmxlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlZGdlcyA9IGl0ZW0uZ2V0RWRnZXMoKTtcbiAgICAgIGVhY2goZWRnZXMsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIC8vIOiLpemakOiXjyBjb21ib++8jOWImeWwhuS4jiBjb21ibyDmnKzouqvlhbPogZTnmoTovrnkuZ/pmpDol49cbiAgICAgICAgLy8g6Iul5pi+56S6IGNvbWJv77yM5YiZ5bCG5LiOIGNvbWJvIOacrOi6q+WFs+iBlOeahOi+ueS5n+aYvuekuu+8jOS9huaYr+mcgOimgeWIpOaWrei+ueS4pOerr+eahOiKgueCuemDveaYr+WPr+ingeeahFxuICAgICAgICBpZiAodmlzaWJsZSAmJiAhKGVkZ2UuZ2V0KCdzb3VyY2UnKS5pc1Zpc2libGUoKSAmJiBlZGdlLmdldCgndGFyZ2V0JykuaXNWaXNpYmxlKCkpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuY2hhbmdlSXRlbVZpc2liaWxpdHkoZWRnZSwgdmlzaWJsZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdhZnRlcml0ZW12aXNpYmlsaXR5Y2hhbmdlJywge1xuICAgICAgaXRlbTogaXRlbSxcbiAgICAgIHZpc2libGU6IHZpc2libGVcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyYXBoID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIEl0ZW1Db250cm9sbGVyO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBJdGVtQ29udHJvbGxlcjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/item.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/graph/controller/layout.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/graph/controller/layout.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/base */ \"./node_modules/@antv/g6-core/es/util/base.js\");\n\n\n\n\nvar LayoutController =\n/** @class */\nfunction () {\n function LayoutController(graph) {\n this.graph = graph;\n this.layoutCfg = graph.get('layout') || {};\n this.layoutType = this.getLayoutType();\n this.layoutMethods = [];\n this.initLayout();\n } // eslint-disable-next-line class-methods-use-this\n\n\n LayoutController.prototype.initLayout = function () {// no data before rendering\n };\n\n LayoutController.prototype.getLayoutType = function () {\n return this.getLayoutCfgType(this.layoutCfg);\n };\n\n LayoutController.prototype.getLayoutCfgType = function (layoutCfg) {\n var type = layoutCfg.type; // type should be top priority\n\n if (type) {\n return type;\n }\n\n var pipes = layoutCfg.pipes;\n\n if (Array.isArray(pipes)) {\n return pipes.map(function (pipe) {\n return (pipe === null || pipe === void 0 ? void 0 : pipe.type) || '';\n });\n }\n\n return null;\n };\n\n LayoutController.prototype.isLayoutTypeSame = function (cfg) {\n var current = this.getLayoutCfgType(cfg); // already has pipes\n\n if (Array.isArray(this.layoutType)) {\n return this.layoutType.every(function (type, index) {\n return type === current[index];\n });\n }\n\n return (cfg === null || cfg === void 0 ? void 0 : cfg.type) === this.layoutType;\n }; // 绘制\n\n\n LayoutController.prototype.refreshLayout = function () {\n var graph = this.graph;\n if (!graph) return;\n\n if (graph.get('animate')) {\n graph.positionsAnimate();\n } else {\n graph.refreshPositions();\n }\n }; // 更换布局\n\n\n LayoutController.prototype.changeLayout = function (cfg) {\n this.layoutCfg = cfg;\n this.destoryLayoutMethods();\n this.layout();\n }; // 更换数据\n\n\n LayoutController.prototype.changeData = function () {\n this.destoryLayoutMethods();\n this.layout();\n };\n\n LayoutController.prototype.destoryLayoutMethods = function () {\n var layoutMethods = this.layoutMethods;\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod) {\n layoutMethod.destroy();\n });\n this.layoutMethods = [];\n }; // 销毁布局,不能使用 this.destroy,因为 controller 还需要被使用,只是把布局算法销毁\n\n\n LayoutController.prototype.destroyLayout = function () {\n var graph = this.graph;\n this.destoryLayoutMethods();\n graph.set('layout', undefined);\n this.layoutCfg = undefined;\n this.layoutType = undefined;\n this.layoutMethods = undefined;\n }; // 从 this.graph 获取数据\n\n\n LayoutController.prototype.setDataFromGraph = function () {\n var nodes = [];\n var hiddenNodes = [];\n var edges = [];\n var hiddenEdges = [];\n var comboEdges = [];\n var combos = [];\n var hiddenCombos = [];\n var nodeItems = this.graph.getNodes();\n var edgeItems = this.graph.getEdges();\n var comboItems = this.graph.getCombos();\n var nodeLength = nodeItems.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var nodeItem = nodeItems[i];\n if (!nodeItem || nodeItem.destroyed) continue;\n var model = nodeItem.getModel();\n\n if (!nodeItem.isVisible()) {\n hiddenNodes.push(model);\n continue;\n }\n\n nodes.push(model);\n }\n\n var edgeLength = edgeItems.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edgeItem = edgeItems[i];\n if (!edgeItem || edgeItem.destroyed) continue;\n var model = edgeItem.getModel();\n\n if (!edgeItem.isVisible()) {\n hiddenEdges.push(model);\n continue;\n }\n\n if (!model.isComboEdge) edges.push(model);else comboEdges.push(model);\n }\n\n var comboLength = comboItems.length;\n\n for (var i = 0; i < comboLength; i++) {\n var comboItem = comboItems[i];\n if (comboItem.destroyed) continue;\n var model = comboItem.getModel();\n\n if (!comboItem.isVisible()) {\n hiddenEdges.push(model);\n continue;\n }\n\n combos.push(model);\n }\n\n return {\n nodes: nodes,\n hiddenNodes: hiddenNodes,\n edges: edges,\n hiddenEdges: hiddenEdges,\n combos: combos,\n hiddenCombos: hiddenCombos,\n comboEdges: comboEdges\n };\n };\n\n LayoutController.prototype.reLayoutMethod = function (layoutMethod, layoutCfg) {\n var _this = this;\n\n return new Promise(function (reslove, reject) {\n var graph = _this.graph;\n var layoutType = layoutCfg === null || layoutCfg === void 0 ? void 0 : layoutCfg.type; // 每个布局方法都需要注册\n\n layoutCfg.onLayoutEnd = function () {\n graph.emit('aftersublayout', {\n type: layoutType\n });\n reslove();\n };\n\n layoutMethod.init(_this.data);\n\n if (layoutType === 'force') {\n layoutMethod.ticking = false;\n layoutMethod.forceSimulation.stop();\n }\n\n graph.emit('beforesublayout', {\n type: layoutType\n });\n layoutMethod.execute();\n if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) layoutCfg.onLayoutEnd();\n });\n }; // 重新布局\n\n\n LayoutController.prototype.relayout = function (reloadData) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n layoutMethods = _a.layoutMethods,\n layoutCfg = _a.layoutCfg;\n\n if (reloadData) {\n this.data = this.setDataFromGraph();\n var nodes = this.data.nodes;\n\n if (!nodes) {\n return false;\n }\n\n this.initPositions(layoutCfg.center, nodes);\n }\n\n graph.emit('beforelayout');\n var start = Promise.resolve();\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod, index) {\n var currentCfg = layoutCfg[index];\n start = start.then(function () {\n return _this.reLayoutMethod(layoutMethod, currentCfg);\n });\n });\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd();\n }).catch(function (error) {\n console.warn('relayout failed', error);\n });\n }; // 筛选参与布局的nodes和edges\n\n\n LayoutController.prototype.filterLayoutData = function (data, cfg) {\n var nodes = data.nodes,\n edges = data.edges,\n rest = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(data, [\"nodes\", \"edges\"]);\n\n if (!nodes) {\n return data;\n }\n\n var nodesFilter;\n var edegsFilter;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(cfg === null || cfg === void 0 ? void 0 : cfg.nodesFilter)) {\n nodesFilter = cfg.nodesFilter;\n } else {\n nodesFilter = function nodesFilter() {\n return true;\n };\n }\n\n var fNodes = nodes.filter(nodesFilter);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(cfg === null || cfg === void 0 ? void 0 : cfg.edgesFilter)) {\n edegsFilter = cfg.edgesFilter;\n } else {\n var nodesMap_1 = fNodes.reduce(function (acc, cur) {\n acc[cur.id] = true;\n return acc;\n }, {});\n\n edegsFilter = function edegsFilter(edge) {\n return nodesMap_1[edge.source] && nodesMap_1[edge.target];\n };\n }\n\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n nodes: fNodes,\n edges: edges.filter(edegsFilter)\n }, rest);\n };\n\n LayoutController.prototype.getLayoutBBox = function (nodes) {\n var graph = this.graph;\n var graphGroupNodes = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"groupBy\"])(graph.getNodes(), function (n) {\n return n.getModel().layoutOrder;\n });\n var layoutNodes = Object.values(graphGroupNodes).map(function (value) {\n var bbox = Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"calculationItemsBBox\"])(value);\n bbox.size = [bbox.width, bbox.height];\n return bbox;\n });\n var groupNodes = Object.values(Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"groupBy\"])(nodes, 'layoutOrder'));\n return {\n groupNodes: groupNodes,\n layoutNodes: layoutNodes\n };\n }; // 控制布局动画\n // eslint-disable-next-line class-methods-use-this\n\n\n LayoutController.prototype.layoutAnimate = function () {}; // 将当前节点的平均中心移动到原点\n\n\n LayoutController.prototype.moveToZero = function () {\n var graph = this.graph;\n var data = graph.get('data');\n var nodes = data.nodes;\n\n if (nodes[0].x === undefined || nodes[0].x === null || Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(nodes[0].x)) {\n return;\n }\n\n var meanCenter = [0, 0];\n var nodeLength = nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n meanCenter[0] += node.x;\n meanCenter[1] += node.y;\n }\n\n meanCenter[0] /= nodes.length;\n meanCenter[1] /= nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n node.x -= meanCenter[0];\n node.y -= meanCenter[1];\n }\n }; // 初始化节点到 center 附近\n\n\n LayoutController.prototype.initPositions = function (center, nodes) {\n var graph = this.graph;\n\n if (!nodes) {\n return false;\n }\n\n var nodeLength = nodes ? nodes.length : 0;\n if (!nodeLength) return;\n var width = graph.get('width') * 0.85;\n var height = graph.get('height') * 0.85;\n var horiNum = Math.ceil(Math.sqrt(nodeLength) * (width / height));\n var vertiNum = Math.ceil(nodeLength / horiNum);\n var horiGap = width / (horiNum - 1);\n var vertiGap = height / (vertiNum - 1);\n if (!isFinite(horiGap) || !horiGap) horiGap = 0;\n if (!isFinite(vertiGap) || !horiGap) vertiGap = 0;\n var beginX = center[0] - width / 2;\n var beginY = center[1] - height / 2;\n var allHavePos = true;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n\n if (Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(+node.x)) {\n allHavePos = false;\n node.x = i % horiNum * horiGap + beginX;\n }\n\n if (Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(+node.y)) {\n allHavePos = false;\n node.y = Math.floor(i / horiNum) * vertiGap + beginY;\n }\n }\n\n return allHavePos;\n };\n\n LayoutController.prototype.destroy = function () {\n this.graph = null;\n this.destoryLayoutMethods();\n this.destroyed = true;\n };\n\n return LayoutController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LayoutController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2xheW91dC5qcz9hZTU3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ1E7QUFDYTs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsdURBQXVEO0FBQ3ZEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0RBQWdEO0FBQ2hEOztBQUVBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEZBQTRGOztBQUU1RjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBLGVBQWUsb0RBQU07O0FBRXJCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFFBQVEsNkRBQVU7QUFDbEI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSw2REFBVTtBQUNsQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQUk7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxzREFBUTtBQUNuQjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsMERBQU87QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxpQkFBaUIsdUVBQW9CO0FBQ3JDO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsbUNBQW1DLDBEQUFPO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOzs7QUFHQSw0REFBNEQ7OztBQUc1RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyREFBMkQsd0RBQUs7QUFDaEU7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQzs7QUFFQSxVQUFVLHdEQUFLO0FBQ2Y7QUFDQTtBQUNBOztBQUVBLFVBQVUsd0RBQUs7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLCtFQUFnQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2dyYXBoL2NvbnRyb2xsZXIvbGF5b3V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgZ3JvdXBCeSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgaXNOYU4sIGNhbGN1bGF0aW9uSXRlbXNCQm94IH0gZnJvbSAnLi4vLi4vdXRpbC9iYXNlJztcblxudmFyIExheW91dENvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMYXlvdXRDb250cm9sbGVyKGdyYXBoKSB7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMubGF5b3V0Q2ZnID0gZ3JhcGguZ2V0KCdsYXlvdXQnKSB8fCB7fTtcbiAgICB0aGlzLmxheW91dFR5cGUgPSB0aGlzLmdldExheW91dFR5cGUoKTtcbiAgICB0aGlzLmxheW91dE1ldGhvZHMgPSBbXTtcbiAgICB0aGlzLmluaXRMYXlvdXQoKTtcbiAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuaW5pdExheW91dCA9IGZ1bmN0aW9uICgpIHsvLyBubyBkYXRhIGJlZm9yZSByZW5kZXJpbmdcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5nZXRMYXlvdXRUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldExheW91dENmZ1R5cGUodGhpcy5sYXlvdXRDZmcpO1xuICB9O1xuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmdldExheW91dENmZ1R5cGUgPSBmdW5jdGlvbiAobGF5b3V0Q2ZnKSB7XG4gICAgdmFyIHR5cGUgPSBsYXlvdXRDZmcudHlwZTsgLy8gdHlwZSBzaG91bGQgYmUgdG9wIHByaW9yaXR5XG5cbiAgICBpZiAodHlwZSkge1xuICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuXG4gICAgdmFyIHBpcGVzID0gbGF5b3V0Q2ZnLnBpcGVzO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGlwZXMpKSB7XG4gICAgICByZXR1cm4gcGlwZXMubWFwKGZ1bmN0aW9uIChwaXBlKSB7XG4gICAgICAgIHJldHVybiAocGlwZSA9PT0gbnVsbCB8fCBwaXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwaXBlLnR5cGUpIHx8ICcnO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuaXNMYXlvdXRUeXBlU2FtZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZ2V0TGF5b3V0Q2ZnVHlwZShjZmcpOyAvLyBhbHJlYWR5IGhhcyBwaXBlc1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5sYXlvdXRUeXBlKSkge1xuICAgICAgcmV0dXJuIHRoaXMubGF5b3V0VHlwZS5ldmVyeShmdW5jdGlvbiAodHlwZSwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHR5cGUgPT09IGN1cnJlbnRbaW5kZXhdO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcudHlwZSkgPT09IHRoaXMubGF5b3V0VHlwZTtcbiAgfTsgLy8g57uY5Yi2XG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5yZWZyZXNoTGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgaWYgKCFncmFwaCkgcmV0dXJuO1xuXG4gICAgaWYgKGdyYXBoLmdldCgnYW5pbWF0ZScpKSB7XG4gICAgICBncmFwaC5wb3NpdGlvbnNBbmltYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyYXBoLnJlZnJlc2hQb3NpdGlvbnMoKTtcbiAgICB9XG4gIH07IC8vIOabtOaNouW4g+WxgFxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuY2hhbmdlTGF5b3V0ID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHRoaXMubGF5b3V0Q2ZnID0gY2ZnO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICB0aGlzLmxheW91dCgpO1xuICB9OyAvLyDmm7TmjaLmlbDmja5cblxuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmNoYW5nZURhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kZXN0b3J5TGF5b3V0TWV0aG9kcygpO1xuICAgIHRoaXMubGF5b3V0KCk7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdG9yeUxheW91dE1ldGhvZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxheW91dE1ldGhvZHMgPSB0aGlzLmxheW91dE1ldGhvZHM7XG4gICAgbGF5b3V0TWV0aG9kcyA9PT0gbnVsbCB8fCBsYXlvdXRNZXRob2RzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXlvdXRNZXRob2RzLmZvckVhY2goZnVuY3Rpb24gKGxheW91dE1ldGhvZCkge1xuICAgICAgbGF5b3V0TWV0aG9kLmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICB0aGlzLmxheW91dE1ldGhvZHMgPSBbXTtcbiAgfTsgLy8g6ZSA5q+B5biD5bGA77yM5LiN6IO95L2/55SoIHRoaXMuZGVzdHJvee+8jOWboOS4uiBjb250cm9sbGVyIOi/mOmcgOimgeiiq+S9v+eUqO+8jOWPquaYr+aKiuW4g+WxgOeul+azlemUgOavgVxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveUxheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICBncmFwaC5zZXQoJ2xheW91dCcsIHVuZGVmaW5lZCk7XG4gICAgdGhpcy5sYXlvdXRDZmcgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXlvdXRUeXBlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubGF5b3V0TWV0aG9kcyA9IHVuZGVmaW5lZDtcbiAgfTsgLy8g5LuOIHRoaXMuZ3JhcGgg6I635Y+W5pWw5o2uXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5zZXREYXRhRnJvbUdyYXBoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlcyA9IFtdO1xuICAgIHZhciBoaWRkZW5Ob2RlcyA9IFtdO1xuICAgIHZhciBlZGdlcyA9IFtdO1xuICAgIHZhciBoaWRkZW5FZGdlcyA9IFtdO1xuICAgIHZhciBjb21ib0VkZ2VzID0gW107XG4gICAgdmFyIGNvbWJvcyA9IFtdO1xuICAgIHZhciBoaWRkZW5Db21ib3MgPSBbXTtcbiAgICB2YXIgbm9kZUl0ZW1zID0gdGhpcy5ncmFwaC5nZXROb2RlcygpO1xuICAgIHZhciBlZGdlSXRlbXMgPSB0aGlzLmdyYXBoLmdldEVkZ2VzKCk7XG4gICAgdmFyIGNvbWJvSXRlbXMgPSB0aGlzLmdyYXBoLmdldENvbWJvcygpO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZUl0ZW1zLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZUl0ZW0gPSBub2RlSXRlbXNbaV07XG4gICAgICBpZiAoIW5vZGVJdGVtIHx8IG5vZGVJdGVtLmRlc3Ryb3llZCkgY29udGludWU7XG4gICAgICB2YXIgbW9kZWwgPSBub2RlSXRlbS5nZXRNb2RlbCgpO1xuXG4gICAgICBpZiAoIW5vZGVJdGVtLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgIGhpZGRlbk5vZGVzLnB1c2gobW9kZWwpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbm9kZXMucHVzaChtb2RlbCk7XG4gICAgfVxuXG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlSXRlbXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlSXRlbSA9IGVkZ2VJdGVtc1tpXTtcbiAgICAgIGlmICghZWRnZUl0ZW0gfHwgZWRnZUl0ZW0uZGVzdHJveWVkKSBjb250aW51ZTtcbiAgICAgIHZhciBtb2RlbCA9IGVkZ2VJdGVtLmdldE1vZGVsKCk7XG5cbiAgICAgIGlmICghZWRnZUl0ZW0uaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgaGlkZGVuRWRnZXMucHVzaChtb2RlbCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW1vZGVsLmlzQ29tYm9FZGdlKSBlZGdlcy5wdXNoKG1vZGVsKTtlbHNlIGNvbWJvRWRnZXMucHVzaChtb2RlbCk7XG4gICAgfVxuXG4gICAgdmFyIGNvbWJvTGVuZ3RoID0gY29tYm9JdGVtcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbWJvTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjb21ib0l0ZW0gPSBjb21ib0l0ZW1zW2ldO1xuICAgICAgaWYgKGNvbWJvSXRlbS5kZXN0cm95ZWQpIGNvbnRpbnVlO1xuICAgICAgdmFyIG1vZGVsID0gY29tYm9JdGVtLmdldE1vZGVsKCk7XG5cbiAgICAgIGlmICghY29tYm9JdGVtLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgIGhpZGRlbkVkZ2VzLnB1c2gobW9kZWwpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29tYm9zLnB1c2gobW9kZWwpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBub2Rlczogbm9kZXMsXG4gICAgICBoaWRkZW5Ob2RlczogaGlkZGVuTm9kZXMsXG4gICAgICBlZGdlczogZWRnZXMsXG4gICAgICBoaWRkZW5FZGdlczogaGlkZGVuRWRnZXMsXG4gICAgICBjb21ib3M6IGNvbWJvcyxcbiAgICAgIGhpZGRlbkNvbWJvczogaGlkZGVuQ29tYm9zLFxuICAgICAgY29tYm9FZGdlczogY29tYm9FZGdlc1xuICAgIH07XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUucmVMYXlvdXRNZXRob2QgPSBmdW5jdGlvbiAobGF5b3V0TWV0aG9kLCBsYXlvdXRDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNsb3ZlLCByZWplY3QpIHtcbiAgICAgIHZhciBncmFwaCA9IF90aGlzLmdyYXBoO1xuICAgICAgdmFyIGxheW91dFR5cGUgPSBsYXlvdXRDZmcgPT09IG51bGwgfHwgbGF5b3V0Q2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXlvdXRDZmcudHlwZTsgLy8g5q+P5Liq5biD5bGA5pa55rOV6YO96ZyA6KaB5rOo5YaMXG5cbiAgICAgIGxheW91dENmZy5vbkxheW91dEVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZ3JhcGguZW1pdCgnYWZ0ZXJzdWJsYXlvdXQnLCB7XG4gICAgICAgICAgdHlwZTogbGF5b3V0VHlwZVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzbG92ZSgpO1xuICAgICAgfTtcblxuICAgICAgbGF5b3V0TWV0aG9kLmluaXQoX3RoaXMuZGF0YSk7XG5cbiAgICAgIGlmIChsYXlvdXRUeXBlID09PSAnZm9yY2UnKSB7XG4gICAgICAgIGxheW91dE1ldGhvZC50aWNraW5nID0gZmFsc2U7XG4gICAgICAgIGxheW91dE1ldGhvZC5mb3JjZVNpbXVsYXRpb24uc3RvcCgpO1xuICAgICAgfVxuXG4gICAgICBncmFwaC5lbWl0KCdiZWZvcmVzdWJsYXlvdXQnLCB7XG4gICAgICAgIHR5cGU6IGxheW91dFR5cGVcbiAgICAgIH0pO1xuICAgICAgbGF5b3V0TWV0aG9kLmV4ZWN1dGUoKTtcbiAgICAgIGlmIChsYXlvdXRNZXRob2QuaXNDdXN0b21MYXlvdXQgJiYgbGF5b3V0Q2ZnLm9uTGF5b3V0RW5kKSBsYXlvdXRDZmcub25MYXlvdXRFbmQoKTtcbiAgICB9KTtcbiAgfTsgLy8g6YeN5paw5biD5bGAXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5yZWxheW91dCA9IGZ1bmN0aW9uIChyZWxvYWREYXRhKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIGxheW91dE1ldGhvZHMgPSBfYS5sYXlvdXRNZXRob2RzLFxuICAgICAgICBsYXlvdXRDZmcgPSBfYS5sYXlvdXRDZmc7XG5cbiAgICBpZiAocmVsb2FkRGF0YSkge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5zZXREYXRhRnJvbUdyYXBoKCk7XG4gICAgICB2YXIgbm9kZXMgPSB0aGlzLmRhdGEubm9kZXM7XG5cbiAgICAgIGlmICghbm9kZXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmluaXRQb3NpdGlvbnMobGF5b3V0Q2ZnLmNlbnRlciwgbm9kZXMpO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWxheW91dCcpO1xuICAgIHZhciBzdGFydCA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGxheW91dE1ldGhvZHMgPT09IG51bGwgfHwgbGF5b3V0TWV0aG9kcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5b3V0TWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uIChsYXlvdXRNZXRob2QsIGluZGV4KSB7XG4gICAgICB2YXIgY3VycmVudENmZyA9IGxheW91dENmZ1tpbmRleF07XG4gICAgICBzdGFydCA9IHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMucmVMYXlvdXRNZXRob2QobGF5b3V0TWV0aG9kLCBjdXJyZW50Q2ZnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGxheW91dENmZy5vbkFsbExheW91dEVuZCkgbGF5b3V0Q2ZnLm9uQWxsTGF5b3V0RW5kKCk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ3JlbGF5b3V0IGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfTsgLy8g562b6YCJ5Y+C5LiO5biD5bGA55qEbm9kZXPlkoxlZGdlc1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZmlsdGVyTGF5b3V0RGF0YSA9IGZ1bmN0aW9uIChkYXRhLCBjZmcpIHtcbiAgICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzLFxuICAgICAgICBlZGdlcyA9IGRhdGEuZWRnZXMsXG4gICAgICAgIHJlc3QgPSBfX3Jlc3QoZGF0YSwgW1wibm9kZXNcIiwgXCJlZGdlc1wiXSk7XG5cbiAgICBpZiAoIW5vZGVzKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZXNGaWx0ZXI7XG4gICAgdmFyIGVkZWdzRmlsdGVyO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24oY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLm5vZGVzRmlsdGVyKSkge1xuICAgICAgbm9kZXNGaWx0ZXIgPSBjZmcubm9kZXNGaWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVzRmlsdGVyID0gZnVuY3Rpb24gbm9kZXNGaWx0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZk5vZGVzID0gbm9kZXMuZmlsdGVyKG5vZGVzRmlsdGVyKTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKGNmZyA9PT0gbnVsbCB8fCBjZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNmZy5lZGdlc0ZpbHRlcikpIHtcbiAgICAgIGVkZWdzRmlsdGVyID0gY2ZnLmVkZ2VzRmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbm9kZXNNYXBfMSA9IGZOb2Rlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY3VyKSB7XG4gICAgICAgIGFjY1tjdXIuaWRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcblxuICAgICAgZWRlZ3NGaWx0ZXIgPSBmdW5jdGlvbiBlZGVnc0ZpbHRlcihlZGdlKSB7XG4gICAgICAgIHJldHVybiBub2Rlc01hcF8xW2VkZ2Uuc291cmNlXSAmJiBub2Rlc01hcF8xW2VkZ2UudGFyZ2V0XTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIF9fYXNzaWduKHtcbiAgICAgIG5vZGVzOiBmTm9kZXMsXG4gICAgICBlZGdlczogZWRnZXMuZmlsdGVyKGVkZWdzRmlsdGVyKVxuICAgIH0sIHJlc3QpO1xuICB9O1xuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmdldExheW91dEJCb3ggPSBmdW5jdGlvbiAobm9kZXMpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBncmFwaEdyb3VwTm9kZXMgPSBncm91cEJ5KGdyYXBoLmdldE5vZGVzKCksIGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbi5nZXRNb2RlbCgpLmxheW91dE9yZGVyO1xuICAgIH0pO1xuICAgIHZhciBsYXlvdXROb2RlcyA9IE9iamVjdC52YWx1ZXMoZ3JhcGhHcm91cE5vZGVzKS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICB2YXIgYmJveCA9IGNhbGN1bGF0aW9uSXRlbXNCQm94KHZhbHVlKTtcbiAgICAgIGJib3guc2l6ZSA9IFtiYm94LndpZHRoLCBiYm94LmhlaWdodF07XG4gICAgICByZXR1cm4gYmJveDtcbiAgICB9KTtcbiAgICB2YXIgZ3JvdXBOb2RlcyA9IE9iamVjdC52YWx1ZXMoZ3JvdXBCeShub2RlcywgJ2xheW91dE9yZGVyJykpO1xuICAgIHJldHVybiB7XG4gICAgICBncm91cE5vZGVzOiBncm91cE5vZGVzLFxuICAgICAgbGF5b3V0Tm9kZXM6IGxheW91dE5vZGVzXG4gICAgfTtcbiAgfTsgLy8g5o6n5Yi25biD5bGA5Yqo55S7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5sYXlvdXRBbmltYXRlID0gZnVuY3Rpb24gKCkge307IC8vIOWwhuW9k+WJjeiKgueCueeahOW5s+Wdh+S4reW/g+enu+WKqOWIsOWOn+eCuVxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUubW92ZVRvWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBkYXRhID0gZ3JhcGguZ2V0KCdkYXRhJyk7XG4gICAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcztcblxuICAgIGlmIChub2Rlc1swXS54ID09PSB1bmRlZmluZWQgfHwgbm9kZXNbMF0ueCA9PT0gbnVsbCB8fCBpc05hTihub2Rlc1swXS54KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBtZWFuQ2VudGVyID0gWzAsIDBdO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICBtZWFuQ2VudGVyWzBdICs9IG5vZGUueDtcbiAgICAgIG1lYW5DZW50ZXJbMV0gKz0gbm9kZS55O1xuICAgIH1cblxuICAgIG1lYW5DZW50ZXJbMF0gLz0gbm9kZXMubGVuZ3RoO1xuICAgIG1lYW5DZW50ZXJbMV0gLz0gbm9kZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICBub2RlLnggLT0gbWVhbkNlbnRlclswXTtcbiAgICAgIG5vZGUueSAtPSBtZWFuQ2VudGVyWzFdO1xuICAgIH1cbiAgfTsgLy8g5Yid5aeL5YyW6IqC54K55YiwIGNlbnRlciDpmYTov5FcblxuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmluaXRQb3NpdGlvbnMgPSBmdW5jdGlvbiAoY2VudGVyLCBub2Rlcykge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIW5vZGVzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIG5vZGVMZW5ndGggPSBub2RlcyA/IG5vZGVzLmxlbmd0aCA6IDA7XG4gICAgaWYgKCFub2RlTGVuZ3RoKSByZXR1cm47XG4gICAgdmFyIHdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpICogMC44NTtcbiAgICB2YXIgaGVpZ2h0ID0gZ3JhcGguZ2V0KCdoZWlnaHQnKSAqIDAuODU7XG4gICAgdmFyIGhvcmlOdW0gPSBNYXRoLmNlaWwoTWF0aC5zcXJ0KG5vZGVMZW5ndGgpICogKHdpZHRoIC8gaGVpZ2h0KSk7XG4gICAgdmFyIHZlcnRpTnVtID0gTWF0aC5jZWlsKG5vZGVMZW5ndGggLyBob3JpTnVtKTtcbiAgICB2YXIgaG9yaUdhcCA9IHdpZHRoIC8gKGhvcmlOdW0gLSAxKTtcbiAgICB2YXIgdmVydGlHYXAgPSBoZWlnaHQgLyAodmVydGlOdW0gLSAxKTtcbiAgICBpZiAoIWlzRmluaXRlKGhvcmlHYXApIHx8ICFob3JpR2FwKSBob3JpR2FwID0gMDtcbiAgICBpZiAoIWlzRmluaXRlKHZlcnRpR2FwKSB8fCAhaG9yaUdhcCkgdmVydGlHYXAgPSAwO1xuICAgIHZhciBiZWdpblggPSBjZW50ZXJbMF0gLSB3aWR0aCAvIDI7XG4gICAgdmFyIGJlZ2luWSA9IGNlbnRlclsxXSAtIGhlaWdodCAvIDI7XG4gICAgdmFyIGFsbEhhdmVQb3MgPSB0cnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG5cbiAgICAgIGlmIChpc05hTigrbm9kZS54KSkge1xuICAgICAgICBhbGxIYXZlUG9zID0gZmFsc2U7XG4gICAgICAgIG5vZGUueCA9IGkgJSBob3JpTnVtICogaG9yaUdhcCArIGJlZ2luWDtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTmFOKCtub2RlLnkpKSB7XG4gICAgICAgIGFsbEhhdmVQb3MgPSBmYWxzZTtcbiAgICAgICAgbm9kZS55ID0gTWF0aC5mbG9vcihpIC8gaG9yaU51bSkgKiB2ZXJ0aUdhcCArIGJlZ2luWTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWxsSGF2ZVBvcztcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JhcGggPSBudWxsO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIExheW91dENvbnRyb2xsZXI7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IExheW91dENvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/layout.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/graph/controller/mode.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/graph/controller/mode.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _behavior_behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../behavior/behavior */ \"./node_modules/@antv/g6-core/es/behavior/behavior.js\");\n\n\n\nvar ModeController =\n/** @class */\nfunction () {\n function ModeController(graph) {\n this.graph = graph;\n this.destroyed = false;\n this.modes = graph.get('modes') || {\n default: []\n };\n this.formatModes();\n this.mode = graph.get('defaultMode') || 'default';\n this.currentBehaves = [];\n this.setMode(this.mode);\n }\n\n ModeController.prototype.formatModes = function () {\n var modes = this.modes;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(modes, function (mode) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(mode, function (behavior, i) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n mode[i] = {\n type: behavior\n };\n }\n });\n });\n };\n\n ModeController.prototype.setBehaviors = function (mode) {\n var graph = this.graph;\n var behaviors = this.modes[mode];\n var behaves = [];\n var behave;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors || [], function (behavior) {\n var BehaviorInstance = _behavior_behavior__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getBehavior(behavior.type || behavior);\n\n if (!BehaviorInstance) {\n return;\n }\n\n behave = new BehaviorInstance(behavior);\n\n if (behave) {\n behave.bind(graph);\n behaves.push(behave);\n }\n });\n this.currentBehaves = behaves;\n };\n\n ModeController.mergeBehaviors = function (modeBehaviors, behaviors) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors, function (behavior) {\n if (modeBehaviors.indexOf(behavior) < 0) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n behavior = {\n type: behavior\n };\n }\n\n modeBehaviors.push(behavior);\n }\n });\n return modeBehaviors;\n };\n\n ModeController.filterBehaviors = function (modeBehaviors, behaviors) {\n var result = [];\n modeBehaviors.forEach(function (behavior) {\n var type = '';\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n type = behavior;\n } else {\n // eslint-disable-next-line prefer-destructuring\n type = behavior.type;\n }\n\n if (behaviors.indexOf(type) < 0) {\n result.push(behavior);\n }\n });\n return result;\n };\n\n ModeController.prototype.setMode = function (mode) {\n var _a = this,\n modes = _a.modes,\n graph = _a.graph;\n\n var current = mode;\n var behaviors = modes[current];\n\n if (!behaviors) {\n return;\n }\n\n graph.emit('beforemodechange', {\n mode: mode\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(this.currentBehaves, function (behave) {\n if (behave.delegate) behave.delegate.remove();\n behave.unbind(graph);\n });\n this.setBehaviors(current);\n graph.emit('aftermodechange', {\n mode: mode\n });\n this.mode = mode;\n };\n\n ModeController.prototype.getMode = function () {\n return this.mode;\n };\n /**\n * 动态增加或删除 Behavior\n *\n * @param {ModeType[]} behaviors\n * @param {(ModeType[] | ModeType)} modes\n * @param {boolean} isAdd\n * @returns {Mode}\n * @memberof Mode\n */\n\n\n ModeController.prototype.manipulateBehaviors = function (behaviors, modes, isAdd) {\n var _this = this;\n\n var behaves;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(behaviors)) {\n behaves = [behaviors];\n } else {\n behaves = behaviors;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(modes)) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(modes, function (mode) {\n if (!_this.modes[mode]) {\n if (isAdd) {\n _this.modes[mode] = behaves;\n }\n } else if (isAdd) {\n _this.modes[mode] = ModeController.mergeBehaviors(_this.modes[mode] || [], behaves);\n } else {\n _this.modes[mode] = ModeController.filterBehaviors(_this.modes[mode] || [], behaves);\n }\n });\n return this;\n }\n\n var currentMode = modes;\n\n if (!modes) {\n currentMode = this.mode; // isString(this.mode) ? this.mode : this.mode.type\n }\n\n if (!this.modes[currentMode]) {\n if (isAdd) {\n this.modes[currentMode] = behaves;\n }\n }\n\n if (isAdd) {\n this.modes[currentMode] = ModeController.mergeBehaviors(this.modes[currentMode] || [], behaves);\n } else {\n this.modes[currentMode] = ModeController.filterBehaviors(this.modes[currentMode] || [], behaves);\n }\n\n this.formatModes();\n this.setMode(this.mode);\n return this;\n };\n /**\n * 更新行为参数\n * @param {string | ModeOption | ModeType} behavior 需要更新的行为\n * @param {string | string[]} modes 指定的模式中的行为,不指定则为 default\n * @return {Graph} Graph\n */\n\n\n ModeController.prototype.updateBehavior = function (behavior, newCfg, mode) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n behavior = {\n type: behavior\n };\n }\n\n var behaviorSet = [];\n\n if (!mode || mode === this.mode || mode === 'default') {\n behaviorSet = this.currentBehaves;\n\n if (!behaviorSet || !behaviorSet.length) {\n console.warn('Update behavior failed! There is no behaviors in this mode on the graph.');\n return this;\n }\n\n var length_1 = behaviorSet.length;\n\n for (var i = 0; i < length_1; i++) {\n var behave = behaviorSet[i];\n\n if (behave.type === behavior.type) {\n behave.updateCfg(newCfg);\n return this;\n }\n\n if (i === length_1 - 1) console.warn('Update behavior failed! There is no such behavior in the mode');\n }\n } else {\n behaviorSet = this.modes[mode];\n\n if (!behaviorSet || !behaviorSet.length) {\n console.warn('Update behavior failed! There is no behaviors in this mode on the graph.');\n return this;\n }\n\n var length_2 = behaviorSet.length;\n\n for (var i = 0; i < length_2; i++) {\n var behave = behaviorSet[i];\n\n if (behave.type === behavior.type || behave === behavior.type) {\n if (behave === behavior.type) behave = {\n type: behave\n };\n Object.assign(behave, newCfg);\n behaviorSet[i] = behave;\n return this;\n }\n\n if (i === length_2 - 1) console.warn('Update behavior failed! There is no such behavior in the mode');\n }\n }\n\n return this;\n };\n\n ModeController.prototype.destroy = function () {\n this.graph = null;\n this.modes = null;\n this.currentBehaves = null;\n this.destroyed = true;\n };\n\n return ModeController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ModeController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL21vZGUuanM/MTFlYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBcUQ7QUFDTjs7QUFFL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSLE1BQU0sdURBQUk7QUFDVixZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSLDZCQUE2QiwwREFBUTs7QUFFckM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsV0FBVztBQUN4QixhQUFhLHdCQUF3QjtBQUNyQyxhQUFhLFFBQVE7QUFDckIsZUFBZTtBQUNmO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsU0FBUywwREFBTztBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLFFBQVEsMERBQU87QUFDZixNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0EsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsK0JBQStCO0FBQzVDLGFBQWEsa0JBQWtCO0FBQy9CLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEscUJBQXFCLGNBQWM7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxxQkFBcUIsY0FBYztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsNkVBQWMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL21vZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoLCBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEJlaGF2aW9yIGZyb20gJy4uLy4uL2JlaGF2aW9yL2JlaGF2aW9yJztcblxudmFyIE1vZGVDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTW9kZUNvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLm1vZGVzID0gZ3JhcGguZ2V0KCdtb2RlcycpIHx8IHtcbiAgICAgIGRlZmF1bHQ6IFtdXG4gICAgfTtcbiAgICB0aGlzLmZvcm1hdE1vZGVzKCk7XG4gICAgdGhpcy5tb2RlID0gZ3JhcGguZ2V0KCdkZWZhdWx0TW9kZScpIHx8ICdkZWZhdWx0JztcbiAgICB0aGlzLmN1cnJlbnRCZWhhdmVzID0gW107XG4gICAgdGhpcy5zZXRNb2RlKHRoaXMubW9kZSk7XG4gIH1cblxuICBNb2RlQ29udHJvbGxlci5wcm90b3R5cGUuZm9ybWF0TW9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1vZGVzID0gdGhpcy5tb2RlcztcbiAgICBlYWNoKG1vZGVzLCBmdW5jdGlvbiAobW9kZSkge1xuICAgICAgZWFjaChtb2RlLCBmdW5jdGlvbiAoYmVoYXZpb3IsIGkpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKGJlaGF2aW9yKSkge1xuICAgICAgICAgIG1vZGVbaV0gPSB7XG4gICAgICAgICAgICB0eXBlOiBiZWhhdmlvclxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5zZXRCZWhhdmlvcnMgPSBmdW5jdGlvbiAobW9kZSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIGJlaGF2aW9ycyA9IHRoaXMubW9kZXNbbW9kZV07XG4gICAgdmFyIGJlaGF2ZXMgPSBbXTtcbiAgICB2YXIgYmVoYXZlO1xuICAgIGVhY2goYmVoYXZpb3JzIHx8IFtdLCBmdW5jdGlvbiAoYmVoYXZpb3IpIHtcbiAgICAgIHZhciBCZWhhdmlvckluc3RhbmNlID0gQmVoYXZpb3IuZ2V0QmVoYXZpb3IoYmVoYXZpb3IudHlwZSB8fCBiZWhhdmlvcik7XG5cbiAgICAgIGlmICghQmVoYXZpb3JJbnN0YW5jZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGJlaGF2ZSA9IG5ldyBCZWhhdmlvckluc3RhbmNlKGJlaGF2aW9yKTtcblxuICAgICAgaWYgKGJlaGF2ZSkge1xuICAgICAgICBiZWhhdmUuYmluZChncmFwaCk7XG4gICAgICAgIGJlaGF2ZXMucHVzaChiZWhhdmUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY3VycmVudEJlaGF2ZXMgPSBiZWhhdmVzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLm1lcmdlQmVoYXZpb3JzID0gZnVuY3Rpb24gKG1vZGVCZWhhdmlvcnMsIGJlaGF2aW9ycykge1xuICAgIGVhY2goYmVoYXZpb3JzLCBmdW5jdGlvbiAoYmVoYXZpb3IpIHtcbiAgICAgIGlmIChtb2RlQmVoYXZpb3JzLmluZGV4T2YoYmVoYXZpb3IpIDwgMCkge1xuICAgICAgICBpZiAoaXNTdHJpbmcoYmVoYXZpb3IpKSB7XG4gICAgICAgICAgYmVoYXZpb3IgPSB7XG4gICAgICAgICAgICB0eXBlOiBiZWhhdmlvclxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBtb2RlQmVoYXZpb3JzLnB1c2goYmVoYXZpb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBtb2RlQmVoYXZpb3JzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyA9IGZ1bmN0aW9uIChtb2RlQmVoYXZpb3JzLCBiZWhhdmlvcnMpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgbW9kZUJlaGF2aW9ycy5mb3JFYWNoKGZ1bmN0aW9uIChiZWhhdmlvcikge1xuICAgICAgdmFyIHR5cGUgPSAnJztcblxuICAgICAgaWYgKGlzU3RyaW5nKGJlaGF2aW9yKSkge1xuICAgICAgICB0eXBlID0gYmVoYXZpb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgICAgdHlwZSA9IGJlaGF2aW9yLnR5cGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChiZWhhdmlvcnMuaW5kZXhPZih0eXBlKSA8IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYmVoYXZpb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLnNldE1vZGUgPSBmdW5jdGlvbiAobW9kZSkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIG1vZGVzID0gX2EubW9kZXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGg7XG5cbiAgICB2YXIgY3VycmVudCA9IG1vZGU7XG4gICAgdmFyIGJlaGF2aW9ycyA9IG1vZGVzW2N1cnJlbnRdO1xuXG4gICAgaWYgKCFiZWhhdmlvcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVtb2RlY2hhbmdlJywge1xuICAgICAgbW9kZTogbW9kZVxuICAgIH0pO1xuICAgIGVhY2godGhpcy5jdXJyZW50QmVoYXZlcywgZnVuY3Rpb24gKGJlaGF2ZSkge1xuICAgICAgaWYgKGJlaGF2ZS5kZWxlZ2F0ZSkgYmVoYXZlLmRlbGVnYXRlLnJlbW92ZSgpO1xuICAgICAgYmVoYXZlLnVuYmluZChncmFwaCk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXRCZWhhdmlvcnMoY3VycmVudCk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJtb2RlY2hhbmdlJywge1xuICAgICAgbW9kZTogbW9kZVxuICAgIH0pO1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gIH07XG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLmdldE1vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZTtcbiAgfTtcbiAgLyoqXG4gICAqIOWKqOaAgeWinuWKoOaIluWIoOmZpCBCZWhhdmlvclxuICAgKlxuICAgKiBAcGFyYW0ge01vZGVUeXBlW119IGJlaGF2aW9yc1xuICAgKiBAcGFyYW0geyhNb2RlVHlwZVtdIHwgTW9kZVR5cGUpfSBtb2Rlc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWRkXG4gICAqIEByZXR1cm5zIHtNb2RlfVxuICAgKiBAbWVtYmVyb2YgTW9kZVxuICAgKi9cblxuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5tYW5pcHVsYXRlQmVoYXZpb3JzID0gZnVuY3Rpb24gKGJlaGF2aW9ycywgbW9kZXMsIGlzQWRkKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBiZWhhdmVzO1xuXG4gICAgaWYgKCFpc0FycmF5KGJlaGF2aW9ycykpIHtcbiAgICAgIGJlaGF2ZXMgPSBbYmVoYXZpb3JzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmVoYXZlcyA9IGJlaGF2aW9ycztcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJheShtb2RlcykpIHtcbiAgICAgIGVhY2gobW9kZXMsIGZ1bmN0aW9uIChtb2RlKSB7XG4gICAgICAgIGlmICghX3RoaXMubW9kZXNbbW9kZV0pIHtcbiAgICAgICAgICBpZiAoaXNBZGQpIHtcbiAgICAgICAgICAgIF90aGlzLm1vZGVzW21vZGVdID0gYmVoYXZlcztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBZGQpIHtcbiAgICAgICAgICBfdGhpcy5tb2Rlc1ttb2RlXSA9IE1vZGVDb250cm9sbGVyLm1lcmdlQmVoYXZpb3JzKF90aGlzLm1vZGVzW21vZGVdIHx8IFtdLCBiZWhhdmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5tb2Rlc1ttb2RlXSA9IE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyhfdGhpcy5tb2Rlc1ttb2RlXSB8fCBbXSwgYmVoYXZlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnRNb2RlID0gbW9kZXM7XG5cbiAgICBpZiAoIW1vZGVzKSB7XG4gICAgICBjdXJyZW50TW9kZSA9IHRoaXMubW9kZTsgLy8gaXNTdHJpbmcodGhpcy5tb2RlKSA/IHRoaXMubW9kZSA6IHRoaXMubW9kZS50eXBlXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSkge1xuICAgICAgaWYgKGlzQWRkKSB7XG4gICAgICAgIHRoaXMubW9kZXNbY3VycmVudE1vZGVdID0gYmVoYXZlcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNBZGQpIHtcbiAgICAgIHRoaXMubW9kZXNbY3VycmVudE1vZGVdID0gTW9kZUNvbnRyb2xsZXIubWVyZ2VCZWhhdmlvcnModGhpcy5tb2Rlc1tjdXJyZW50TW9kZV0gfHwgW10sIGJlaGF2ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSA9IE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyh0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSB8fCBbXSwgYmVoYXZlcyk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtYXRNb2RlcygpO1xuICAgIHRoaXMuc2V0TW9kZSh0aGlzLm1vZGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5pu05paw6KGM5Li65Y+C5pWwXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgTW9kZU9wdGlvbiB8IE1vZGVUeXBlfSBiZWhhdmlvciDpnIDopoHmm7TmlrDnmoTooYzkuLpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gbW9kZXMg5oyH5a6a55qE5qih5byP5Lit55qE6KGM5Li677yM5LiN5oyH5a6a5YiZ5Li6IGRlZmF1bHRcbiAgICogQHJldHVybiB7R3JhcGh9IEdyYXBoXG4gICAqL1xuXG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUJlaGF2aW9yID0gZnVuY3Rpb24gKGJlaGF2aW9yLCBuZXdDZmcsIG1vZGUpIHtcbiAgICBpZiAoaXNTdHJpbmcoYmVoYXZpb3IpKSB7XG4gICAgICBiZWhhdmlvciA9IHtcbiAgICAgICAgdHlwZTogYmVoYXZpb3JcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGJlaGF2aW9yU2V0ID0gW107XG5cbiAgICBpZiAoIW1vZGUgfHwgbW9kZSA9PT0gdGhpcy5tb2RlIHx8IG1vZGUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgYmVoYXZpb3JTZXQgPSB0aGlzLmN1cnJlbnRCZWhhdmVzO1xuXG4gICAgICBpZiAoIWJlaGF2aW9yU2V0IHx8ICFiZWhhdmlvclNldC5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdVcGRhdGUgYmVoYXZpb3IgZmFpbGVkISBUaGVyZSBpcyBubyBiZWhhdmlvcnMgaW4gdGhpcyBtb2RlIG9uIHRoZSBncmFwaC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBsZW5ndGhfMSA9IGJlaGF2aW9yU2V0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGhfMTsgaSsrKSB7XG4gICAgICAgIHZhciBiZWhhdmUgPSBiZWhhdmlvclNldFtpXTtcblxuICAgICAgICBpZiAoYmVoYXZlLnR5cGUgPT09IGJlaGF2aW9yLnR5cGUpIHtcbiAgICAgICAgICBiZWhhdmUudXBkYXRlQ2ZnKG5ld0NmZyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA9PT0gbGVuZ3RoXzEgLSAxKSBjb25zb2xlLndhcm4oJ1VwZGF0ZSBiZWhhdmlvciBmYWlsZWQhIFRoZXJlIGlzIG5vIHN1Y2ggYmVoYXZpb3IgaW4gdGhlIG1vZGUnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYmVoYXZpb3JTZXQgPSB0aGlzLm1vZGVzW21vZGVdO1xuXG4gICAgICBpZiAoIWJlaGF2aW9yU2V0IHx8ICFiZWhhdmlvclNldC5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdVcGRhdGUgYmVoYXZpb3IgZmFpbGVkISBUaGVyZSBpcyBubyBiZWhhdmlvcnMgaW4gdGhpcyBtb2RlIG9uIHRoZSBncmFwaC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBsZW5ndGhfMiA9IGJlaGF2aW9yU2V0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGhfMjsgaSsrKSB7XG4gICAgICAgIHZhciBiZWhhdmUgPSBiZWhhdmlvclNldFtpXTtcblxuICAgICAgICBpZiAoYmVoYXZlLnR5cGUgPT09IGJlaGF2aW9yLnR5cGUgfHwgYmVoYXZlID09PSBiZWhhdmlvci50eXBlKSB7XG4gICAgICAgICAgaWYgKGJlaGF2ZSA9PT0gYmVoYXZpb3IudHlwZSkgYmVoYXZlID0ge1xuICAgICAgICAgICAgdHlwZTogYmVoYXZlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGJlaGF2ZSwgbmV3Q2ZnKTtcbiAgICAgICAgICBiZWhhdmlvclNldFtpXSA9IGJlaGF2ZTtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpID09PSBsZW5ndGhfMiAtIDEpIGNvbnNvbGUud2FybignVXBkYXRlIGJlaGF2aW9yIGZhaWxlZCEgVGhlcmUgaXMgbm8gc3VjaCBiZWhhdmlvciBpbiB0aGUgbW9kZScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JhcGggPSBudWxsO1xuICAgIHRoaXMubW9kZXMgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudEJlaGF2ZXMgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4gTW9kZUNvbnRyb2xsZXI7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vZGVDb250cm9sbGVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/mode.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/graph/controller/state.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/graph/controller/state.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar timer = null;\n\nvar StateController =\n/** @class */\nfunction () {\n function StateController(graph) {\n this.graph = graph;\n /**\n * this.cachedStates = {\n * enabled: {\n * hover: [Node]\n * },\n * disabled: {}\n * }\n */\n\n this.cachedStates = {\n enabled: {},\n disabled: {}\n };\n this.destroyed = false;\n }\n /**\n * 检查 cache 的可用性\n *\n * @private\n * @param {Item} item\n * @param {string} state\n * @param {object} cache\n * @returns\n * @memberof State\n */\n\n\n StateController.checkCache = function (item, state, cache) {\n if (!cache[state]) {\n return;\n }\n\n var index = cache[state].indexOf(item);\n\n if (index >= 0) {\n cache[state].splice(index, 1);\n }\n };\n /**\n * 缓存 state\n *\n * @private\n * @param {Item} item Item 实例\n * @param {string} state 状态名称\n * @param {object} states\n * @memberof State\n */\n\n\n StateController.cacheState = function (item, state, states) {\n if (!states[state]) {\n states[state] = [];\n }\n\n states[state].push(item);\n };\n /**\n * 更新 Item 的状态\n *\n * @param {Item} item Item实例\n * @param {string} state 状态名称\n * @param {boolean} enabled 状态是否可用\n * @memberof State\n */\n\n\n StateController.prototype.updateState = function (item, state, enabled) {\n var _this = this;\n\n var checkCache = StateController.checkCache,\n cacheState = StateController.cacheState;\n\n if (item.destroyed) {\n return;\n }\n\n var cachedStates = this.cachedStates;\n var enabledStates = cachedStates.enabled;\n var disabledStates = cachedStates.disabled;\n\n if (enabled) {\n checkCache(item, state, disabledStates);\n cacheState(item, state, enabledStates);\n } else {\n checkCache(item, state, enabledStates);\n cacheState(item, state, disabledStates);\n }\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(function () {\n timer = null;\n\n _this.updateGraphStates();\n }, 16);\n };\n /**\n * 批量更新 states,兼容 updateState,支持更新一个 state\n *\n * @param {Item} item\n * @param {(string | string[])} states\n * @param {boolean} enabled\n * @memberof State\n */\n\n\n StateController.prototype.updateStates = function (item, states, enabled) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(states)) {\n this.updateState(item, states, enabled);\n } else {\n states.forEach(function (state) {\n _this.updateState(item, state, enabled);\n });\n }\n };\n /**\n * 更新 states\n *\n * @memberof State\n */\n\n\n StateController.prototype.updateGraphStates = function () {\n var states = this.graph.get('states');\n var cachedStates = this.cachedStates;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(cachedStates.disabled, function (val, key) {\n if (states[key]) {\n states[key] = states[key].filter(function (item) {\n return val.indexOf(item) < 0 && !val.destroyed;\n });\n }\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(cachedStates.enabled, function (val, key) {\n if (!states[key]) {\n states[key] = val;\n } else {\n var map_1 = {};\n states[key].forEach(function (item) {\n if (!item.destroyed) {\n map_1[item.get('id')] = true;\n }\n });\n val.forEach(function (item) {\n if (!item.destroyed) {\n var id = item.get('id');\n\n if (!map_1[id]) {\n map_1[id] = true;\n states[key].push(item);\n }\n }\n });\n }\n });\n this.graph.emit('graphstatechange', {\n states: states\n });\n this.cachedStates = {\n enabled: {},\n disabled: {}\n };\n };\n\n StateController.prototype.destroy = function () {\n this.graph = null;\n this.cachedStates = null;\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = null;\n this.destroyed = true;\n };\n\n return StateController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (StateController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3N0YXRlLmpzPzc3N2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUE0QztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLG9CQUFvQjtBQUNqQyxhQUFhLFFBQVE7QUFDckI7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0wsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsOEVBQWUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3N0YXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbnZhciB0aW1lciA9IG51bGw7XG5cbnZhciBTdGF0ZUNvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdGF0ZUNvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG4gICAgLyoqXG4gICAgICogdGhpcy5jYWNoZWRTdGF0ZXMgPSB7XG4gICAgICogICAgZW5hYmxlZDoge1xuICAgICAqICAgICAgICBob3ZlcjogW05vZGVdXG4gICAgICogICAgfSxcbiAgICAgKiAgICAgZGlzYWJsZWQ6IHt9XG4gICAgICogIH1cbiAgICAgKi9cblxuICAgIHRoaXMuY2FjaGVkU3RhdGVzID0ge1xuICAgICAgZW5hYmxlZDoge30sXG4gICAgICBkaXNhYmxlZDoge31cbiAgICB9O1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIOajgOafpSBjYWNoZSDnmoTlj6/nlKjmgKdcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZVxuICAgKiBAcGFyYW0ge29iamVjdH0gY2FjaGVcbiAgICogQHJldHVybnNcbiAgICogQG1lbWJlcm9mIFN0YXRlXG4gICAqL1xuXG5cbiAgU3RhdGVDb250cm9sbGVyLmNoZWNrQ2FjaGUgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGUsIGNhY2hlKSB7XG4gICAgaWYgKCFjYWNoZVtzdGF0ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBjYWNoZVtzdGF0ZV0uaW5kZXhPZihpdGVtKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBjYWNoZVtzdGF0ZV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDnvJPlrZggc3RhdGVcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIEl0ZW0g5a6e5L6LXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlc1xuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIuY2FjaGVTdGF0ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGF0ZSwgc3RhdGVzKSB7XG4gICAgaWYgKCFzdGF0ZXNbc3RhdGVdKSB7XG4gICAgICBzdGF0ZXNbc3RhdGVdID0gW107XG4gICAgfVxuXG4gICAgc3RhdGVzW3N0YXRlXS5wdXNoKGl0ZW0pO1xuICB9O1xuICAvKipcbiAgICog5pu05pawIEl0ZW0g55qE54q25oCBXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVt5a6e5L6LXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIOeKtuaAgeaYr+WQpuWPr+eUqFxuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlLCBlbmFibGVkKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBjaGVja0NhY2hlID0gU3RhdGVDb250cm9sbGVyLmNoZWNrQ2FjaGUsXG4gICAgICAgIGNhY2hlU3RhdGUgPSBTdGF0ZUNvbnRyb2xsZXIuY2FjaGVTdGF0ZTtcblxuICAgIGlmIChpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjYWNoZWRTdGF0ZXMgPSB0aGlzLmNhY2hlZFN0YXRlcztcbiAgICB2YXIgZW5hYmxlZFN0YXRlcyA9IGNhY2hlZFN0YXRlcy5lbmFibGVkO1xuICAgIHZhciBkaXNhYmxlZFN0YXRlcyA9IGNhY2hlZFN0YXRlcy5kaXNhYmxlZDtcblxuICAgIGlmIChlbmFibGVkKSB7XG4gICAgICBjaGVja0NhY2hlKGl0ZW0sIHN0YXRlLCBkaXNhYmxlZFN0YXRlcyk7XG4gICAgICBjYWNoZVN0YXRlKGl0ZW0sIHN0YXRlLCBlbmFibGVkU3RhdGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hlY2tDYWNoZShpdGVtLCBzdGF0ZSwgZW5hYmxlZFN0YXRlcyk7XG4gICAgICBjYWNoZVN0YXRlKGl0ZW0sIHN0YXRlLCBkaXNhYmxlZFN0YXRlcyk7XG4gICAgfVxuXG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cblxuICAgIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICB0aW1lciA9IG51bGw7XG5cbiAgICAgIF90aGlzLnVwZGF0ZUdyYXBoU3RhdGVzKCk7XG4gICAgfSwgMTYpO1xuICB9O1xuICAvKipcbiAgICog5om56YeP5pu05pawIHN0YXRlc++8jOWFvOWuuSB1cGRhdGVTdGF0Ze+8jOaUr+aMgeabtOaWsOS4gOS4qiBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW1cbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgc3RyaW5nW10pfSBzdGF0ZXNcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkXG4gICAqIEBtZW1iZXJvZiBTdGF0ZVxuICAgKi9cblxuXG4gIFN0YXRlQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlU3RhdGVzID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlcywgZW5hYmxlZCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoaXNTdHJpbmcoc3RhdGVzKSkge1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZShpdGVtLCBzdGF0ZXMsIGVuYWJsZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgX3RoaXMudXBkYXRlU3RhdGUoaXRlbSwgc3RhdGUsIGVuYWJsZWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pu05pawIHN0YXRlc1xuICAgKlxuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUdyYXBoU3RhdGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdGF0ZXMgPSB0aGlzLmdyYXBoLmdldCgnc3RhdGVzJyk7XG4gICAgdmFyIGNhY2hlZFN0YXRlcyA9IHRoaXMuY2FjaGVkU3RhdGVzO1xuICAgIGVhY2goY2FjaGVkU3RhdGVzLmRpc2FibGVkLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcbiAgICAgIGlmIChzdGF0ZXNba2V5XSkge1xuICAgICAgICBzdGF0ZXNba2V5XSA9IHN0YXRlc1trZXldLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHJldHVybiB2YWwuaW5kZXhPZihpdGVtKSA8IDAgJiYgIXZhbC5kZXN0cm95ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVhY2goY2FjaGVkU3RhdGVzLmVuYWJsZWQsIGZ1bmN0aW9uICh2YWwsIGtleSkge1xuICAgICAgaWYgKCFzdGF0ZXNba2V5XSkge1xuICAgICAgICBzdGF0ZXNba2V5XSA9IHZhbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBtYXBfMSA9IHt9O1xuICAgICAgICBzdGF0ZXNba2V5XS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgaWYgKCFpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgbWFwXzFbaXRlbS5nZXQoJ2lkJyldID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YWwuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIGlmICghaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHZhciBpZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgICAgICAgICBpZiAoIW1hcF8xW2lkXSkge1xuICAgICAgICAgICAgICBtYXBfMVtpZF0gPSB0cnVlO1xuICAgICAgICAgICAgICBzdGF0ZXNba2V5XS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5ncmFwaC5lbWl0KCdncmFwaHN0YXRlY2hhbmdlJywge1xuICAgICAgc3RhdGVzOiBzdGF0ZXNcbiAgICB9KTtcbiAgICB0aGlzLmNhY2hlZFN0YXRlcyA9IHtcbiAgICAgIGVuYWJsZWQ6IHt9LFxuICAgICAgZGlzYWJsZWQ6IHt9XG4gICAgfTtcbiAgfTtcblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5ncmFwaCA9IG51bGw7XG4gICAgdGhpcy5jYWNoZWRTdGF0ZXMgPSBudWxsO1xuXG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cblxuICAgIHRpbWVyID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIFN0YXRlQ29udHJvbGxlcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdGVDb250cm9sbGVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/state.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/graph/controller/view.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/graph/controller/view.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/base */ \"./node_modules/@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n\n\n\n\n\nvar ViewController =\n/** @class */\nfunction () {\n function ViewController(graph) {\n this.destroyed = false;\n this.graph = graph;\n this.destroyed = false;\n } // get view center coordinate\n\n\n ViewController.prototype.getViewCenter = function () {\n var padding = this.getFormatPadding();\n var graph = this.graph;\n var width = this.graph.get('width');\n var height = graph.get('height');\n return {\n x: (width - padding[1] - padding[3]) / 2 + padding[3],\n y: (height - padding[0] - padding[2]) / 2 + padding[0]\n };\n };\n\n ViewController.prototype.fitCenter = function () {\n var graph = this.graph;\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n }; // fit view graph\n\n\n ViewController.prototype.fitView = function () {\n var graph = this.graph;\n var padding = this.getFormatPadding();\n var width = graph.get('width');\n var height = graph.get('height');\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n var w = (width - padding[1] - padding[3]) / bbox.width;\n var h = (height - padding[0] - padding[2]) / bbox.height;\n var ratio = w;\n\n if (w > h) {\n ratio = h;\n }\n\n if (!graph.zoom(ratio, viewCenter)) {\n console.warn('zoom failed, ratio out of range, ratio: %f', ratio);\n }\n }; // fit view graph by rule\n\n\n ViewController.prototype.fitViewByRules = function (rules) {\n var _a = rules.onlyOutOfViewPort,\n onlyOutOfViewPort = _a === void 0 ? false : _a,\n _b = rules.direction,\n direction = _b === void 0 ? 'both' : _b,\n _c = rules.ratioRule,\n ratioRule = _c === void 0 ? 'min' : _c;\n var graph = this.graph;\n var padding = this.getFormatPadding();\n var width = graph.get('width');\n var height = graph.get('height');\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n var wRatio = (width - padding[1] - padding[3]) / bbox.width;\n var hRatio = (height - padding[0] - padding[2]) / bbox.height;\n var ratio;\n\n if (direction === 'x') {\n ratio = wRatio;\n } else if (direction === 'y') {\n ratio = hRatio;\n } else {\n // ratioRule\n ratio = ratioRule === 'max' ? Math.max(wRatio, hRatio) : Math.min(wRatio, hRatio);\n } // 如果设置了仅对超出视口宽高的场景进行fitview,则没超出的场景zoom取1\n\n\n if (onlyOutOfViewPort) {\n ratio = ratio < 1 ? ratio : 1;\n }\n\n var initZoomRatio = graph.getZoom();\n var endZoom = initZoomRatio * ratio;\n var minZoom = graph.get('minZoom'); // 如果zoom小于最小zoom, 则以最小zoom为准\n\n if (endZoom < minZoom) {\n endZoom = minZoom;\n console.warn('fitview failed, ratio out of range, ratio: %f', ratio, 'graph minzoom has been used instead');\n }\n\n graph.zoomTo(endZoom, viewCenter);\n };\n\n ViewController.prototype.getFormatPadding = function () {\n var padding = this.graph.get('fitViewPadding');\n return Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"formatPadding\"])(padding);\n };\n\n ViewController.prototype.focusPoint = function (point, animate, animateCfg) {\n var _this = this;\n\n var viewCenter = this.getViewCenter();\n var modelCenter = this.getPointByCanvas(viewCenter.x, viewCenter.y);\n var viewportMatrix = this.graph.get('group').getMatrix();\n if (!viewportMatrix) viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n if (animate) {\n var dx_1 = (modelCenter.x - point.x) * viewportMatrix[0];\n var dy_1 = (modelCenter.y - point.y) * viewportMatrix[4];\n var lastX_1 = 0;\n var lastY_1 = 0;\n var newX_1 = 0;\n var newY_1 = 0; // 动画每次平移一点,直到目标位置\n\n this.graph.get('canvas').animate(function (ratio) {\n newX_1 = dx_1 * ratio;\n newY_1 = dy_1 * ratio;\n\n _this.graph.translate(newX_1 - lastX_1, newY_1 - lastY_1);\n\n lastX_1 = newX_1;\n lastY_1 = newY_1;\n }, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, animateCfg));\n } else {\n this.graph.translate((modelCenter.x - point.x) * viewportMatrix[0], (modelCenter.y - point.y) * viewportMatrix[4]);\n }\n };\n /**\n * 将 Canvas 坐标转成视口坐标\n * @param canvasX canvas x 坐标\n * @param canvasY canvas y 坐标\n */\n\n\n ViewController.prototype.getPointByCanvas = function (canvasX, canvasY) {\n var viewportMatrix = this.graph.get('group').getMatrix();\n\n if (!viewportMatrix) {\n viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var point = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"invertMatrix\"])({\n x: canvasX,\n y: canvasY\n }, viewportMatrix);\n return point;\n };\n /**\n * 将页面坐标转成视口坐标\n * @param clientX 页面 x 坐标\n * @param clientY 页面 y 坐标\n */\n\n\n ViewController.prototype.getPointByClient = function (clientX, clientY) {\n var canvas = this.graph.get('canvas');\n var canvasPoint = canvas.getPointByClient(clientX, clientY);\n return this.getPointByCanvas(canvasPoint.x, canvasPoint.y);\n };\n /**\n * 将视口坐标转成页面坐标\n * @param x 视口 x 坐标\n * @param y 视口 y 坐标\n */\n\n\n ViewController.prototype.getClientByPoint = function (x, y) {\n var canvas = this.graph.get('canvas');\n var canvasPoint = this.getCanvasByPoint(x, y);\n var point = canvas.getClientByPoint(canvasPoint.x, canvasPoint.y);\n return {\n x: point.x,\n y: point.y\n };\n };\n /**\n * 将视口坐标转成 Canvas 坐标\n * @param x 视口 x 坐标\n * @param y 视口 y 坐标\n */\n\n\n ViewController.prototype.getCanvasByPoint = function (x, y) {\n var viewportMatrix = this.graph.get('group').getMatrix();\n\n if (!viewportMatrix) {\n viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])({\n x: x,\n y: y\n }, viewportMatrix);\n };\n /**\n * 将元素移动到画布中心\n * @param item Item 实例或 id\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n ViewController.prototype.focus = function (item, animate, animateCfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = this.graph.findById(item);\n }\n\n if (item) {\n var x = 0,\n y = 0;\n\n if (item.getType && item.getType() === 'edge') {\n var sourceMatrix = item.getSource().get('group').getMatrix();\n var targetMatrix = item.getTarget().get('group').getMatrix();\n\n if (sourceMatrix && targetMatrix) {\n x = (sourceMatrix[6] + targetMatrix[6]) / 2;\n y = (sourceMatrix[7] + targetMatrix[7]) / 2;\n } else if (sourceMatrix || targetMatrix) {\n x = sourceMatrix ? sourceMatrix[6] : targetMatrix[6];\n y = sourceMatrix ? sourceMatrix[7] : targetMatrix[7];\n }\n } else {\n var group = item.get('group');\n var matrix = group.getMatrix();\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n x = matrix[6];\n y = matrix[7];\n } // 用实际位置而不是model中的x,y,防止由于拖拽等的交互导致model的x,y并不是当前的x,y\n\n\n this.focusPoint({\n x: x,\n y: y\n }, animate, animateCfg);\n }\n };\n /**\n * 改变 canvas 画布的宽度和高度\n * @param width canvas 宽度\n * @param height canvas 高度\n */\n\n\n ViewController.prototype.changeSize = function (width, height) {\n var graph = this.graph;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(width) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(height)) {\n throw Error('invalid canvas width & height, please make sure width & height type is number');\n }\n\n graph.set({\n width: width,\n height: height\n });\n var canvas = graph.get('canvas');\n canvas.changeSize(width, height); // change the size of grid plugin if it exists on graph\n\n var plugins = graph.get('plugins');\n plugins.forEach(function (plugin) {\n if (plugin.get('gridContainer')) {\n // 网格定位信息初始化\n plugin.positionInit();\n }\n });\n };\n\n ViewController.prototype.destroy = function () {\n this.graph = null;\n this.destroyed = false;\n };\n\n return ViewController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ViewController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3ZpZXcuanM/NjUzYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2U7QUFDQTtBQUNZOztBQUU1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLGdFQUFhO0FBQ3hCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU8sRUFBRSxzREFBUSxHQUFHO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsK0RBQVk7QUFDNUI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFdBQVcsOERBQVc7QUFDdEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLG1CQUFtQjtBQUNoQzs7O0FBR0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsU0FBUywyREFBUSxZQUFZLDJEQUFRO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLDZFQUFjIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvZ3JhcGgvY29udHJvbGxlci92aWV3LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZm9ybWF0UGFkZGluZyB9IGZyb20gJy4uLy4uL3V0aWwvYmFzZSc7XG5pbXBvcnQgeyBhcHBseU1hdHJpeCwgaW52ZXJ0TWF0cml4IH0gZnJvbSAnLi4vLi4vdXRpbC9tYXRoJztcblxudmFyIFZpZXdDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVmlld0NvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuZ3JhcGggPSBncmFwaDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICB9IC8vIGdldCB2aWV3IGNlbnRlciBjb29yZGluYXRlXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Vmlld0NlbnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFkZGluZyA9IHRoaXMuZ2V0Rm9ybWF0UGFkZGluZygpO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHdpZHRoID0gdGhpcy5ncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6ICh3aWR0aCAtIHBhZGRpbmdbMV0gLSBwYWRkaW5nWzNdKSAvIDIgKyBwYWRkaW5nWzNdLFxuICAgICAgeTogKGhlaWdodCAtIHBhZGRpbmdbMF0gLSBwYWRkaW5nWzJdKSAvIDIgKyBwYWRkaW5nWzBdXG4gICAgfTtcbiAgfTtcblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0Q2VudGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIGdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnJlc2V0TWF0cml4KCk7XG4gICAgdmFyIGJib3ggPSBncm91cC5nZXRDYW52YXNCQm94KCk7XG4gICAgaWYgKGJib3gud2lkdGggPT09IDAgfHwgYmJveC5oZWlnaHQgPT09IDApIHJldHVybjtcbiAgICB2YXIgdmlld0NlbnRlciA9IHRoaXMuZ2V0Vmlld0NlbnRlcigpO1xuICAgIHZhciBncm91cENlbnRlciA9IHtcbiAgICAgIHg6IGJib3gueCArIGJib3gud2lkdGggLyAyLFxuICAgICAgeTogYmJveC55ICsgYmJveC5oZWlnaHQgLyAyXG4gICAgfTtcbiAgICBncmFwaC50cmFuc2xhdGUodmlld0NlbnRlci54IC0gZ3JvdXBDZW50ZXIueCwgdmlld0NlbnRlci55IC0gZ3JvdXBDZW50ZXIueSk7XG4gIH07IC8vIGZpdCB2aWV3IGdyYXBoXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0VmlldyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBwYWRkaW5nID0gdGhpcy5nZXRGb3JtYXRQYWRkaW5nKCk7XG4gICAgdmFyIHdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBoZWlnaHQgPSBncmFwaC5nZXQoJ2hlaWdodCcpO1xuICAgIHZhciBncm91cCA9IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICBncm91cC5yZXNldE1hdHJpeCgpO1xuICAgIHZhciBiYm94ID0gZ3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIGlmIChiYm94LndpZHRoID09PSAwIHx8IGJib3guaGVpZ2h0ID09PSAwKSByZXR1cm47XG4gICAgdmFyIHZpZXdDZW50ZXIgPSB0aGlzLmdldFZpZXdDZW50ZXIoKTtcbiAgICB2YXIgZ3JvdXBDZW50ZXIgPSB7XG4gICAgICB4OiBiYm94LnggKyBiYm94LndpZHRoIC8gMixcbiAgICAgIHk6IGJib3gueSArIGJib3guaGVpZ2h0IC8gMlxuICAgIH07XG4gICAgZ3JhcGgudHJhbnNsYXRlKHZpZXdDZW50ZXIueCAtIGdyb3VwQ2VudGVyLngsIHZpZXdDZW50ZXIueSAtIGdyb3VwQ2VudGVyLnkpO1xuICAgIHZhciB3ID0gKHdpZHRoIC0gcGFkZGluZ1sxXSAtIHBhZGRpbmdbM10pIC8gYmJveC53aWR0aDtcbiAgICB2YXIgaCA9IChoZWlnaHQgLSBwYWRkaW5nWzBdIC0gcGFkZGluZ1syXSkgLyBiYm94LmhlaWdodDtcbiAgICB2YXIgcmF0aW8gPSB3O1xuXG4gICAgaWYgKHcgPiBoKSB7XG4gICAgICByYXRpbyA9IGg7XG4gICAgfVxuXG4gICAgaWYgKCFncmFwaC56b29tKHJhdGlvLCB2aWV3Q2VudGVyKSkge1xuICAgICAgY29uc29sZS53YXJuKCd6b29tIGZhaWxlZCwgcmF0aW8gb3V0IG9mIHJhbmdlLCByYXRpbzogJWYnLCByYXRpbyk7XG4gICAgfVxuICB9OyAvLyBmaXQgdmlldyBncmFwaCBieSBydWxlXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0Vmlld0J5UnVsZXMgPSBmdW5jdGlvbiAocnVsZXMpIHtcbiAgICB2YXIgX2EgPSBydWxlcy5vbmx5T3V0T2ZWaWV3UG9ydCxcbiAgICAgICAgb25seU91dE9mVmlld1BvcnQgPSBfYSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYSxcbiAgICAgICAgX2IgPSBydWxlcy5kaXJlY3Rpb24sXG4gICAgICAgIGRpcmVjdGlvbiA9IF9iID09PSB2b2lkIDAgPyAnYm90aCcgOiBfYixcbiAgICAgICAgX2MgPSBydWxlcy5yYXRpb1J1bGUsXG4gICAgICAgIHJhdGlvUnVsZSA9IF9jID09PSB2b2lkIDAgPyAnbWluJyA6IF9jO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHBhZGRpbmcgPSB0aGlzLmdldEZvcm1hdFBhZGRpbmcoKTtcbiAgICB2YXIgd2lkdGggPSBncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIGdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnJlc2V0TWF0cml4KCk7XG4gICAgdmFyIGJib3ggPSBncm91cC5nZXRDYW52YXNCQm94KCk7XG4gICAgaWYgKGJib3gud2lkdGggPT09IDAgfHwgYmJveC5oZWlnaHQgPT09IDApIHJldHVybjtcbiAgICB2YXIgdmlld0NlbnRlciA9IHRoaXMuZ2V0Vmlld0NlbnRlcigpO1xuICAgIHZhciBncm91cENlbnRlciA9IHtcbiAgICAgIHg6IGJib3gueCArIGJib3gud2lkdGggLyAyLFxuICAgICAgeTogYmJveC55ICsgYmJveC5oZWlnaHQgLyAyXG4gICAgfTtcbiAgICBncmFwaC50cmFuc2xhdGUodmlld0NlbnRlci54IC0gZ3JvdXBDZW50ZXIueCwgdmlld0NlbnRlci55IC0gZ3JvdXBDZW50ZXIueSk7XG4gICAgdmFyIHdSYXRpbyA9ICh3aWR0aCAtIHBhZGRpbmdbMV0gLSBwYWRkaW5nWzNdKSAvIGJib3gud2lkdGg7XG4gICAgdmFyIGhSYXRpbyA9IChoZWlnaHQgLSBwYWRkaW5nWzBdIC0gcGFkZGluZ1syXSkgLyBiYm94LmhlaWdodDtcbiAgICB2YXIgcmF0aW87XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAneCcpIHtcbiAgICAgIHJhdGlvID0gd1JhdGlvO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAneScpIHtcbiAgICAgIHJhdGlvID0gaFJhdGlvO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyByYXRpb1J1bGVcbiAgICAgIHJhdGlvID0gcmF0aW9SdWxlID09PSAnbWF4JyA/IE1hdGgubWF4KHdSYXRpbywgaFJhdGlvKSA6IE1hdGgubWluKHdSYXRpbywgaFJhdGlvKTtcbiAgICB9IC8vIOWmguaenOiuvue9ruS6huS7heWvuei2heWHuuinhuWPo+WuvemrmOeahOWcuuaZr+i/m+ihjGZpdHZpZXfvvIzliJnmsqHotoXlh7rnmoTlnLrmma96b29t5Y+WMVxuXG5cbiAgICBpZiAob25seU91dE9mVmlld1BvcnQpIHtcbiAgICAgIHJhdGlvID0gcmF0aW8gPCAxID8gcmF0aW8gOiAxO1xuICAgIH1cblxuICAgIHZhciBpbml0Wm9vbVJhdGlvID0gZ3JhcGguZ2V0Wm9vbSgpO1xuICAgIHZhciBlbmRab29tID0gaW5pdFpvb21SYXRpbyAqIHJhdGlvO1xuICAgIHZhciBtaW5ab29tID0gZ3JhcGguZ2V0KCdtaW5ab29tJyk7IC8vIOWmguaenHpvb23lsI/kuo7mnIDlsI96b29tLCDliJnku6XmnIDlsI96b29t5Li65YeGXG5cbiAgICBpZiAoZW5kWm9vbSA8IG1pblpvb20pIHtcbiAgICAgIGVuZFpvb20gPSBtaW5ab29tO1xuICAgICAgY29uc29sZS53YXJuKCdmaXR2aWV3IGZhaWxlZCwgcmF0aW8gb3V0IG9mIHJhbmdlLCByYXRpbzogJWYnLCByYXRpbywgJ2dyYXBoIG1pbnpvb20gaGFzIGJlZW4gdXNlZCBpbnN0ZWFkJyk7XG4gICAgfVxuXG4gICAgZ3JhcGguem9vbVRvKGVuZFpvb20sIHZpZXdDZW50ZXIpO1xuICB9O1xuXG4gIFZpZXdDb250cm9sbGVyLnByb3RvdHlwZS5nZXRGb3JtYXRQYWRkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYWRkaW5nID0gdGhpcy5ncmFwaC5nZXQoJ2ZpdFZpZXdQYWRkaW5nJyk7XG4gICAgcmV0dXJuIGZvcm1hdFBhZGRpbmcocGFkZGluZyk7XG4gIH07XG5cbiAgVmlld0NvbnRyb2xsZXIucHJvdG90eXBlLmZvY3VzUG9pbnQgPSBmdW5jdGlvbiAocG9pbnQsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHZpZXdDZW50ZXIgPSB0aGlzLmdldFZpZXdDZW50ZXIoKTtcbiAgICB2YXIgbW9kZWxDZW50ZXIgPSB0aGlzLmdldFBvaW50QnlDYW52YXModmlld0NlbnRlci54LCB2aWV3Q2VudGVyLnkpO1xuICAgIHZhciB2aWV3cG9ydE1hdHJpeCA9IHRoaXMuZ3JhcGguZ2V0KCdncm91cCcpLmdldE1hdHJpeCgpO1xuICAgIGlmICghdmlld3BvcnRNYXRyaXgpIHZpZXdwb3J0TWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuXG4gICAgaWYgKGFuaW1hdGUpIHtcbiAgICAgIHZhciBkeF8xID0gKG1vZGVsQ2VudGVyLnggLSBwb2ludC54KSAqIHZpZXdwb3J0TWF0cml4WzBdO1xuICAgICAgdmFyIGR5XzEgPSAobW9kZWxDZW50ZXIueSAtIHBvaW50LnkpICogdmlld3BvcnRNYXRyaXhbNF07XG4gICAgICB2YXIgbGFzdFhfMSA9IDA7XG4gICAgICB2YXIgbGFzdFlfMSA9IDA7XG4gICAgICB2YXIgbmV3WF8xID0gMDtcbiAgICAgIHZhciBuZXdZXzEgPSAwOyAvLyDliqjnlLvmr4/mrKHlubPnp7vkuIDngrnvvIznm7TliLDnm67moIfkvY3nva5cblxuICAgICAgdGhpcy5ncmFwaC5nZXQoJ2NhbnZhcycpLmFuaW1hdGUoZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIG5ld1hfMSA9IGR4XzEgKiByYXRpbztcbiAgICAgICAgbmV3WV8xID0gZHlfMSAqIHJhdGlvO1xuXG4gICAgICAgIF90aGlzLmdyYXBoLnRyYW5zbGF0ZShuZXdYXzEgLSBsYXN0WF8xLCBuZXdZXzEgLSBsYXN0WV8xKTtcblxuICAgICAgICBsYXN0WF8xID0gbmV3WF8xO1xuICAgICAgICBsYXN0WV8xID0gbmV3WV8xO1xuICAgICAgfSwgX19hc3NpZ24oe30sIGFuaW1hdGVDZmcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmFwaC50cmFuc2xhdGUoKG1vZGVsQ2VudGVyLnggLSBwb2ludC54KSAqIHZpZXdwb3J0TWF0cml4WzBdLCAobW9kZWxDZW50ZXIueSAtIHBvaW50LnkpICogdmlld3BvcnRNYXRyaXhbNF0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOWwhiBDYW52YXMg5Z2Q5qCH6L2s5oiQ6KeG5Y+j5Z2Q5qCHXG4gICAqIEBwYXJhbSBjYW52YXNYIGNhbnZhcyB4IOWdkOagh1xuICAgKiBAcGFyYW0gY2FudmFzWSBjYW52YXMgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0UG9pbnRCeUNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXNYLCBjYW52YXNZKSB7XG4gICAgdmFyIHZpZXdwb3J0TWF0cml4ID0gdGhpcy5ncmFwaC5nZXQoJ2dyb3VwJykuZ2V0TWF0cml4KCk7XG5cbiAgICBpZiAoIXZpZXdwb3J0TWF0cml4KSB7XG4gICAgICB2aWV3cG9ydE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICB2YXIgcG9pbnQgPSBpbnZlcnRNYXRyaXgoe1xuICAgICAgeDogY2FudmFzWCxcbiAgICAgIHk6IGNhbnZhc1lcbiAgICB9LCB2aWV3cG9ydE1hdHJpeCk7XG4gICAgcmV0dXJuIHBvaW50O1xuICB9O1xuICAvKipcbiAgICog5bCG6aG16Z2i5Z2Q5qCH6L2s5oiQ6KeG5Y+j5Z2Q5qCHXG4gICAqIEBwYXJhbSBjbGllbnRYIOmhtemdoiB4IOWdkOagh1xuICAgKiBAcGFyYW0gY2xpZW50WSDpobXpnaIgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0UG9pbnRCeUNsaWVudCA9IGZ1bmN0aW9uIChjbGllbnRYLCBjbGllbnRZKSB7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgY2FudmFzUG9pbnQgPSBjYW52YXMuZ2V0UG9pbnRCeUNsaWVudChjbGllbnRYLCBjbGllbnRZKTtcbiAgICByZXR1cm4gdGhpcy5nZXRQb2ludEJ5Q2FudmFzKGNhbnZhc1BvaW50LngsIGNhbnZhc1BvaW50LnkpO1xuICB9O1xuICAvKipcbiAgICog5bCG6KeG5Y+j5Z2Q5qCH6L2s5oiQ6aG16Z2i5Z2Q5qCHXG4gICAqIEBwYXJhbSB4IOinhuWPoyB4IOWdkOagh1xuICAgKiBAcGFyYW0geSDop4blj6MgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Q2xpZW50QnlQb2ludCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgY2FudmFzUG9pbnQgPSB0aGlzLmdldENhbnZhc0J5UG9pbnQoeCwgeSk7XG4gICAgdmFyIHBvaW50ID0gY2FudmFzLmdldENsaWVudEJ5UG9pbnQoY2FudmFzUG9pbnQueCwgY2FudmFzUG9pbnQueSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHBvaW50LngsXG4gICAgICB5OiBwb2ludC55XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuinhuWPo+WdkOagh+i9rOaIkCBDYW52YXMg5Z2Q5qCHXG4gICAqIEBwYXJhbSB4IOinhuWPoyB4IOWdkOagh1xuICAgKiBAcGFyYW0geSDop4blj6MgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Q2FudmFzQnlQb2ludCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgdmFyIHZpZXdwb3J0TWF0cml4ID0gdGhpcy5ncmFwaC5nZXQoJ2dyb3VwJykuZ2V0TWF0cml4KCk7XG5cbiAgICBpZiAoIXZpZXdwb3J0TWF0cml4KSB7XG4gICAgICB2aWV3cG9ydE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbHlNYXRyaXgoe1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LCB2aWV3cG9ydE1hdHJpeCk7XG4gIH07XG4gIC8qKlxuICAgKiDlsIblhYPntKDnp7vliqjliLDnlLvluIPkuK3lv4NcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSDlrp7kvovmiJYgaWRcbiAgICogQHBhcmFtIHtib29sZWFufSBhbmltYXRlIOaYr+WQpuW4puacieWKqOeUu+WcsOenu+WKqFxuICAgKiBAcGFyYW0ge0dyYXBoQW5pbWF0ZUNvbmZpZ30gYW5pbWF0ZUNmZyDoi6XluKbmnInliqjnlLvvvIzliqjnlLvnmoTphY3nva7poblcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoaXRlbSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZykge1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgaXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHZhciB4ID0gMCxcbiAgICAgICAgICB5ID0gMDtcblxuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2VkZ2UnKSB7XG4gICAgICAgIHZhciBzb3VyY2VNYXRyaXggPSBpdGVtLmdldFNvdXJjZSgpLmdldCgnZ3JvdXAnKS5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIHRhcmdldE1hdHJpeCA9IGl0ZW0uZ2V0VGFyZ2V0KCkuZ2V0KCdncm91cCcpLmdldE1hdHJpeCgpO1xuXG4gICAgICAgIGlmIChzb3VyY2VNYXRyaXggJiYgdGFyZ2V0TWF0cml4KSB7XG4gICAgICAgICAgeCA9IChzb3VyY2VNYXRyaXhbNl0gKyB0YXJnZXRNYXRyaXhbNl0pIC8gMjtcbiAgICAgICAgICB5ID0gKHNvdXJjZU1hdHJpeFs3XSArIHRhcmdldE1hdHJpeFs3XSkgLyAyO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZU1hdHJpeCB8fCB0YXJnZXRNYXRyaXgpIHtcbiAgICAgICAgICB4ID0gc291cmNlTWF0cml4ID8gc291cmNlTWF0cml4WzZdIDogdGFyZ2V0TWF0cml4WzZdO1xuICAgICAgICAgIHkgPSBzb3VyY2VNYXRyaXggPyBzb3VyY2VNYXRyaXhbN10gOiB0YXJnZXRNYXRyaXhbN107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0KCdncm91cCcpO1xuICAgICAgICB2YXIgbWF0cml4ID0gZ3JvdXAuZ2V0TWF0cml4KCk7XG4gICAgICAgIGlmICghbWF0cml4KSBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgICAgIHggPSBtYXRyaXhbNl07XG4gICAgICAgIHkgPSBtYXRyaXhbN107XG4gICAgICB9IC8vIOeUqOWunumZheS9jee9ruiAjOS4jeaYr21vZGVs5Lit55qEeCx5LOmYsuatoueUseS6juaLluaLveetieeahOS6pOS6kuWvvOiHtG1vZGVs55qEeCx55bm25LiN5piv5b2T5YmN55qEeCx5XG5cblxuICAgICAgdGhpcy5mb2N1c1BvaW50KHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeVxuICAgICAgfSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZyk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pS55Y+YIGNhbnZhcyDnlLvluIPnmoTlrr3luqblkozpq5jluqZcbiAgICogQHBhcmFtIHdpZHRoIGNhbnZhcyDlrr3luqZcbiAgICogQHBhcmFtIGhlaWdodCBjYW52YXMg6auY5bqmXG4gICAqL1xuXG5cbiAgVmlld0NvbnRyb2xsZXIucHJvdG90eXBlLmNoYW5nZVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIWlzTnVtYmVyKHdpZHRoKSB8fCAhaXNOdW1iZXIoaGVpZ2h0KSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ2ludmFsaWQgY2FudmFzIHdpZHRoICYgaGVpZ2h0LCBwbGVhc2UgbWFrZSBzdXJlIHdpZHRoICYgaGVpZ2h0IHR5cGUgaXMgbnVtYmVyJyk7XG4gICAgfVxuXG4gICAgZ3JhcGguc2V0KHtcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSk7XG4gICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgY2FudmFzLmNoYW5nZVNpemUod2lkdGgsIGhlaWdodCk7IC8vIGNoYW5nZSB0aGUgc2l6ZSBvZiBncmlkIHBsdWdpbiBpZiBpdCBleGlzdHMgb24gZ3JhcGhcblxuICAgIHZhciBwbHVnaW5zID0gZ3JhcGguZ2V0KCdwbHVnaW5zJyk7XG4gICAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIGlmIChwbHVnaW4uZ2V0KCdncmlkQ29udGFpbmVyJykpIHtcbiAgICAgICAgLy8g572R5qC85a6a5L2N5L+h5oGv5Yid5aeL5YyWXG4gICAgICAgIHBsdWdpbi5wb3NpdGlvbkluaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyYXBoID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICB9O1xuXG4gIHJldHVybiBWaWV3Q29udHJvbGxlcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgVmlld0NvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/controller/view.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/graph/graph.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g6-core/es/graph/graph.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/event-emitter */ \"./node_modules/@antv/event-emitter/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/algorithm */ \"./node_modules/@antv/algorithm/es/index.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_validation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/validation */ \"./node_modules/@antv/g6-core/es/util/validation.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller */ \"./node_modules/@antv/g6-core/es/graph/controller/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _item_hull__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../item/hull */ \"./node_modules/@antv/g6-core/es/item/hull.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar NODE = 'node';\n\nvar AbstractGraph =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractGraph, _super);\n\n function AbstractGraph(cfg) {\n var _this = _super.call(this) || this;\n\n _this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(_this.getDefaultCfg(), cfg);\n\n _this.init();\n\n _this.animating = false;\n _this.destroyed = false; // 启用 stack 后,实例化 undoStack 和 redoStack\n\n if (_this.cfg.enabledStack) {\n // 实例化 undo 和 redo 栈\n _this.undoStack = new _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"Stack\"](_this.cfg.maxStep);\n _this.redoStack = new _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"Stack\"](_this.cfg.maxStep);\n }\n\n return _this;\n }\n\n AbstractGraph.prototype.init = function () {\n this.initCanvas(); // instance controller\n\n var viewController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ViewController\"](this);\n var modeController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ModeController\"](this);\n var itemController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ItemController\"](this);\n var stateController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"StateController\"](this);\n this.set({\n viewController: viewController,\n modeController: modeController,\n itemController: itemController,\n stateController: stateController\n }); // 初始化布局机制\n\n this.initLayoutController(); // 初始化事件机制\n\n this.initEventController();\n this.initGroups();\n /** 初始化插件 */\n\n this.initPlugins();\n }; // 初始化所有 Group\n\n\n AbstractGraph.prototype.initGroups = function () {\n var canvas = this.get('canvas');\n if (!canvas) return;\n var el = canvas.get('el');\n var _a = (el || {}).id,\n id = _a === void 0 ? 'g6' : _a;\n var group = canvas.addGroup({\n id: \"\".concat(id, \"-root\"),\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].rootContainerClassName\n });\n\n if (this.get('groupByTypes')) {\n var edgeGroup = group.addGroup({\n id: \"\".concat(id, \"-edge\"),\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].edgeContainerClassName\n });\n var nodeGroup = group.addGroup({\n id: \"\".concat(id, \"-node\"),\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].nodeContainerClassName\n });\n var comboGroup = group.addGroup({\n id: \"\".concat(id, \"-combo\"),\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].comboContainerClassName\n }); // 用于存储自定义的群组\n\n comboGroup.toBack();\n this.set({\n nodeGroup: nodeGroup,\n edgeGroup: edgeGroup,\n comboGroup: comboGroup\n });\n }\n\n var delegateGroup = group.addGroup({\n id: \"\".concat(id, \"-delegate\"),\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].delegateContainerClassName\n });\n this.set({\n delegateGroup: delegateGroup\n });\n this.set('group', group);\n }; // eslint-disable-next-line class-methods-use-this\n\n\n AbstractGraph.prototype.getDefaultCfg = function () {\n return {\n /**\n * Container could be dom object or dom id\n */\n container: undefined,\n\n /**\n * Canvas width\n * unit pixel if undefined force fit width\n */\n width: undefined,\n\n /**\n * Canvas height\n * unit pixel if undefined force fit height\n */\n height: undefined,\n\n /**\n * renderer canvas or svg\n * @type {string}\n */\n renderer: 'canvas',\n\n /**\n * control graph behaviors\n */\n modes: {},\n\n /**\n * 注册插件\n */\n plugins: [],\n\n /**\n * source data\n */\n data: {},\n\n /**\n * Fit view padding (client scale)\n */\n fitViewPadding: 10,\n\n /**\n * Minimum scale size\n */\n minZoom: 0.2,\n\n /**\n * Maxmum scale size\n */\n maxZoom: 10,\n\n /**\n * capture events\n */\n event: true,\n\n /**\n * group node & edges into different graphic groups\n */\n groupByTypes: true,\n\n /**\n * determine if it's a directed graph\n */\n directed: false,\n\n /**\n * when data or shape changed, should canvas draw automatically\n */\n autoPaint: true,\n\n /**\n * store all the node instances\n */\n nodes: [],\n\n /**\n * store all the edge instances\n */\n edges: [],\n\n /**\n * store all the combo instances\n */\n combos: [],\n\n /**\n * store all the edge instances which are virtual edges related to collapsed combo\n */\n vedges: [],\n\n /**\n * all the instances indexed by id\n */\n itemMap: {},\n\n /**\n * 边直接连接到节点的中心,不再考虑锚点\n */\n linkCenter: false,\n\n /**\n * 默认的节点配置,data 上定义的配置会覆盖这些配置。例如:\n * defaultNode: {\n * type: 'rect',\n * size: [60, 40],\n * style: {\n * //... 样式配置项\n * }\n * }\n * 若数据项为 { id: 'node', x: 100, y: 100 }\n * 实际创建的节点模型是 { id: 'node', x: 100, y: 100, type: 'rect', size: [60, 40] }\n * 若数据项为 { id: 'node', x: 100, y: 100, type: 'circle' }\n * 实际创建的节点模型是 { id: 'node', x: 100, y: 100, type: 'circle', size: [60, 40] }\n */\n defaultNode: {},\n\n /**\n * 默认边配置,data 上定义的配置会覆盖这些配置。用法同 defaultNode\n */\n defaultEdge: {},\n\n /**\n * 节点默认样式,也可以添加状态样式\n * 例如:\n * const graph = new G6.Graph({\n * nodeStateStyles: {\n * selected: { fill: '#ccc', stroke: '#666' },\n * active: { lineWidth: 2 }\n * },\n * ...\n * });\n *\n */\n nodeStateStyles: {},\n\n /**\n * 边默认样式,用法同nodeStateStyle\n */\n edgeStateStyles: {},\n\n /**\n * graph 状态\n */\n states: {},\n\n /**\n * 是否启用全局动画\n */\n animate: false,\n\n /**\n * 动画设置,仅在 animate 为 true 时有效\n */\n animateCfg: {\n /**\n * 帧回调函数,用于自定义节点运动路径,为空时线性运动\n */\n onFrame: undefined,\n\n /**\n * 动画时长(ms)\n */\n duration: 500,\n\n /**\n * 指定动画动效\n */\n easing: 'easeLinear'\n },\n callback: undefined,\n // 默认不启用 undo & redo 功能\n enabledStack: false,\n // 只有当 enabledStack 为 true 时才起作用\n maxStep: 10,\n // 存储图上的 tooltip dom,方便销毁\n tooltips: []\n };\n };\n /**\n * 将值设置到 this.cfg 变量上面\n * @param key 键 或 对象值\n * @param val 值\n */\n\n\n AbstractGraph.prototype.set = function (key, val) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(key)) {\n this.cfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, this.cfg), key);\n } else {\n this.cfg[key] = val;\n }\n\n return this;\n };\n /**\n * 获取 this.cfg 中的值\n * @param key 键\n */\n\n\n AbstractGraph.prototype.get = function (key) {\n var _a;\n\n return (_a = this.cfg) === null || _a === void 0 ? void 0 : _a[key];\n };\n /**\n * 获取 graph 的根图形分组\n * @return 根 group\n */\n\n\n AbstractGraph.prototype.getGroup = function () {\n return this.get('group');\n };\n /**\n * 获取 graph 的 DOM 容器\n * @return DOM 容器\n */\n\n\n AbstractGraph.prototype.getContainer = function () {\n return this.get('container');\n };\n /**\n * 获取 graph 的最小缩放比例\n * @return minZoom\n */\n\n\n AbstractGraph.prototype.getMinZoom = function () {\n return this.get('minZoom');\n };\n /**\n * 设置 graph 的最小缩放比例\n * @return minZoom\n */\n\n\n AbstractGraph.prototype.setMinZoom = function (ratio) {\n return this.set('minZoom', ratio);\n };\n /**\n * 获取 graph 的最大缩放比例\n * @param maxZoom\n */\n\n\n AbstractGraph.prototype.getMaxZoom = function () {\n return this.get('maxZoom');\n };\n /**\n * 设置 graph 的最大缩放比例\n * @param maxZoom\n */\n\n\n AbstractGraph.prototype.setMaxZoom = function (ratio) {\n return this.set('maxZoom', ratio);\n };\n /**\n * 获取 graph 的宽度\n * @return width\n */\n\n\n AbstractGraph.prototype.getWidth = function () {\n return this.get('width');\n };\n /**\n * 获取 graph 的高度\n * @return width\n */\n\n\n AbstractGraph.prototype.getHeight = function () {\n return this.get('height');\n };\n /**\n * 清理元素多个状态\n * @param {string|Item} item 元素id或元素实例\n * @param {string[]} states 状态\n */\n\n\n AbstractGraph.prototype.clearItemStates = function (item, states) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n item = this.findById(item);\n }\n\n var itemController = this.get('itemController');\n\n if (!states) {\n states = item.get('states');\n }\n\n itemController.clearItemStates(item, states);\n var stateController = this.get('stateController');\n stateController.updateStates(item, states, false);\n };\n /**\n * 设置各个节点样式,以及在各种状态下节点 keyShape 的样式。\n * 若是自定义节点切在各种状态下\n * graph.node(node => {\n * return {\n * type: 'rect',\n * label: node.id,\n * style: { fill: '#666' },\n * stateStyles: {\n * selected: { fill: 'blue' },\n * custom: { fill: 'green' }\n * }\n * }\n * });\n * @param {function} nodeFn 指定每个节点样式\n */\n\n\n AbstractGraph.prototype.node = function (nodeFn) {\n if (typeof nodeFn === 'function') {\n this.set('nodeMapper', nodeFn);\n }\n };\n /**\n * 设置各个边样式\n * @param {function} edgeFn 指定每个边的样式,用法同 node\n */\n\n\n AbstractGraph.prototype.edge = function (edgeFn) {\n if (typeof edgeFn === 'function') {\n this.set('edgeMapper', edgeFn);\n }\n };\n /**\n * 设置各个 combo 的配置\n * @param comboFn\n */\n\n\n AbstractGraph.prototype.combo = function (comboFn) {\n if (typeof comboFn === 'function') {\n this.set('comboMapper', comboFn);\n }\n };\n /**\n * 根据 ID 查询图元素实例\n * @param id 图元素 ID\n */\n\n\n AbstractGraph.prototype.findById = function (id) {\n return this.get('itemMap')[id];\n };\n /**\n * 根据对应规则查找单个元素\n * @param {ITEM_TYPE} type 元素类型(node | edge | group)\n * @param {(item: T, index: number) => T} fn 指定规则\n * @return {T} 元素实例\n */\n\n\n AbstractGraph.prototype.find = function (type, fn) {\n var result;\n var items = this.get(\"\".concat(type, \"s\")); // eslint-disable-next-line consistent-return\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(items, function (item, i) {\n if (fn(item, i)) {\n result = item;\n return result;\n }\n });\n return result;\n };\n /**\n * 查找所有满足规则的元素\n * @param {string} type 元素类型(node|edge)\n * @param {string} fn 指定规则\n * @return {array} 元素实例\n */\n\n\n AbstractGraph.prototype.findAll = function (type, fn) {\n var result = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get(\"\".concat(type, \"s\")), function (item, i) {\n if (fn(item, i)) {\n result.push(item);\n }\n });\n return result;\n };\n /**\n * 查找所有处于指定状态的元素\n * @param {string} type 元素类型(node|edge)\n * @param {string} state 状态\n * @return {object} 元素实例\n */\n\n\n AbstractGraph.prototype.findAllByState = function (type, state) {\n return this.findAll(type, function (item) {\n return item.hasState(state);\n });\n };\n\n AbstractGraph.prototype.getAnimateCfgWithCallback = function (_a) {\n var animateCfg = _a.animateCfg,\n callback = _a.callback;\n var animateConfig;\n\n if (!animateCfg) {\n animateConfig = {\n duration: 500,\n callback: callback\n };\n } else {\n animateConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(animateCfg);\n\n if (animateCfg.callback) {\n var animateCfgCallback_1 = animateCfg.callback;\n\n animateConfig.callback = function () {\n callback();\n animateCfgCallback_1();\n };\n } else {\n animateConfig.callback = callback;\n }\n }\n\n return animateConfig;\n };\n /**\n * 平移画布\n * @param dx 水平方向位移\n * @param dy 垂直方向位移\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n AbstractGraph.prototype.translate = function (dx, dy, animate, animateCfg) {\n var _this = this;\n\n var group = this.get('group');\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n if (animate) {\n var animateConfig = this.getAnimateCfgWithCallback({\n animateCfg: animateCfg,\n callback: function callback() {\n return _this.emit('viewportchange', {\n action: 'translate',\n matrix: group.getMatrix()\n });\n }\n });\n Object(_util_math__WEBPACK_IMPORTED_MODULE_5__[\"move\"])(group, {\n x: group.getCanvasBBox().x + dx,\n y: group.getCanvasBBox().y + dy\n }, animate, animateConfig || {\n duration: 500,\n easing: 'easeCubic'\n });\n } else {\n matrix = transform(matrix, [['t', dx, dy]]);\n group.setMatrix(matrix);\n this.emit('viewportchange', {\n action: 'translate',\n matrix: matrix\n });\n this.autoPaint();\n }\n };\n /**\n * 平移画布到某点\n * @param {number} x 水平坐标\n * @param {number} y 垂直坐标\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n AbstractGraph.prototype.moveTo = function (x, y, animate, animateCfg) {\n var group = this.get('group');\n Object(_util_math__WEBPACK_IMPORTED_MODULE_5__[\"move\"])(group, {\n x: x,\n y: y\n }, animate, animateCfg || {\n duration: 500,\n easing: 'easeCubic'\n });\n this.emit('viewportchange', {\n action: 'move',\n matrix: group.getMatrix()\n });\n };\n /**\n * 调整视口适应视图\n * @param {object} padding 四周围边距\n * @param {FitViewRules} rules fitView的规则\n */\n\n\n AbstractGraph.prototype.fitView = function (padding, rules) {\n if (padding) {\n this.set('fitViewPadding', padding);\n }\n\n var viewController = this.get('viewController');\n\n if (rules) {\n viewController.fitViewByRules(rules);\n } else {\n viewController.fitView();\n }\n\n this.autoPaint();\n };\n /**\n * 调整视口适应视图,不缩放,仅将图 bbox 中心对齐到画布中心\n */\n\n\n AbstractGraph.prototype.fitCenter = function () {\n var viewController = this.get('viewController');\n viewController.fitCenter();\n this.autoPaint();\n };\n /**\n * 新增行为\n * @param {string | ModeOption | ModeType[]} behaviors 添加的行为\n * @param {string | string[]} modes 添加到对应的模式\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.addBehaviors = function (behaviors, modes) {\n var modeController = this.get('modeController');\n modeController.manipulateBehaviors(behaviors, modes, true);\n return this;\n };\n /**\n * 移除行为\n * @param {string | ModeOption | ModeType[]} behaviors 移除的行为\n * @param {string | string[]} modes 从指定的模式中移除\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.removeBehaviors = function (behaviors, modes) {\n var modeController = this.get('modeController');\n modeController.manipulateBehaviors(behaviors, modes, false);\n return this;\n };\n /**\n * 更新行为参数\n * @param {string | ModeOption | ModeType} behavior 需要更新的行为\n * @param {string | string[]} modes 指定的模式中的行为,不指定则为 default\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.updateBehavior = function (behavior, newCfg, mode) {\n var modeController = this.get('modeController');\n modeController.updateBehavior(behavior, newCfg, mode);\n return this;\n };\n /**\n * 伸缩窗口\n * @param ratio 伸缩比例\n * @param center 以center的x, y坐标为中心缩放\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n * @return {boolean} 缩放是否成功\n */\n\n\n AbstractGraph.prototype.zoom = function (ratio, center, animate, animateCfg) {\n var _this = this;\n\n var group = this.get('group');\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n var minZoom = this.get('minZoom');\n var maxZoom = this.get('maxZoom');\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n if (center) {\n matrix = transform(matrix, [['t', -center.x, -center.y], ['s', ratio, ratio], ['t', center.x, center.y]]);\n } else {\n matrix = transform(matrix, [['s', ratio, ratio]]);\n }\n\n if (minZoom && matrix[0] < minZoom || maxZoom && matrix[0] > maxZoom) {\n return false;\n } // matrix = [2, 0, 0, 0, 2, 0, -125, -125, 1];\n\n\n if (animate) {\n // Clone the original matrix to perform the animation\n var aniMatrix_1 = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n\n if (!aniMatrix_1) {\n aniMatrix_1 = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var initialRatio_1 = aniMatrix_1[0];\n var targetRatio_1 = initialRatio_1 * ratio;\n var animateConfig = this.getAnimateCfgWithCallback({\n animateCfg: animateCfg,\n callback: function callback() {\n return _this.emit('viewportchange', {\n action: 'zoom',\n matrix: group.getMatrix()\n });\n }\n });\n group.animate(function (ratio) {\n if (ratio === 1) {\n // Reuse the first transformation\n aniMatrix_1 = matrix;\n } else {\n var scale = Object(_util_math__WEBPACK_IMPORTED_MODULE_5__[\"lerp\"])(initialRatio_1, targetRatio_1, ratio) / aniMatrix_1[0];\n\n if (center) {\n aniMatrix_1 = transform(aniMatrix_1, [['t', -center.x, -center.y], ['s', scale, scale], ['t', center.x, center.y]]);\n } else {\n aniMatrix_1 = transform(aniMatrix_1, [['s', scale, scale]]);\n }\n }\n\n return {\n matrix: aniMatrix_1\n };\n }, animateConfig);\n } else {\n group.setMatrix(matrix);\n this.emit('viewportchange', {\n action: 'zoom',\n matrix: matrix\n });\n this.autoPaint();\n }\n\n return true;\n };\n /**\n * 伸缩视口到一固定比例\n * @param {number} toRatio 伸缩比例\n * @param {Point} center 以center的x, y坐标为中心缩放\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n * @return {boolean} 缩放是否成功\n */\n\n\n AbstractGraph.prototype.zoomTo = function (toRatio, center, animate, animateCfg) {\n var ratio = toRatio / this.getZoom();\n return this.zoom(ratio, center, animate, animateCfg);\n };\n /**\n * 将元素移动到视口中心\n * @param {Item} item 指定元素\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n AbstractGraph.prototype.focusItem = function (item, animate, animateCfg) {\n var viewController = this.get('viewController');\n var isAnimate = false;\n if (animate) isAnimate = true;else if (animate === undefined) isAnimate = this.get('animate');\n var curAniamteCfg = {};\n if (animateCfg) curAniamteCfg = animateCfg;else if (animateCfg === undefined) curAniamteCfg = this.get('animateCfg');\n viewController.focus(item, isAnimate, curAniamteCfg);\n this.autoPaint();\n };\n /**\n * 自动重绘\n * @internal 仅供内部更新机制调用,外部根据需求调用 render 或 paint 接口\n */\n\n\n AbstractGraph.prototype.autoPaint = function () {\n if (this.get('autoPaint')) {\n this.paint();\n }\n };\n /**\n * 仅画布重新绘制\n */\n\n\n AbstractGraph.prototype.paint = function () {\n this.emit('beforepaint');\n this.get('canvas').draw();\n this.emit('afterpaint');\n };\n /**\n * 将屏幕坐标转换为视口坐标\n * @param {number} clientX 屏幕x坐标\n * @param {number} clientY 屏幕y坐标\n * @return {Point} 视口坐标\n */\n\n\n AbstractGraph.prototype.getPointByClient = function (clientX, clientY) {\n var viewController = this.get('viewController');\n return viewController.getPointByClient(clientX, clientY);\n };\n /**\n * 将绘制坐标转换为屏幕坐标\n * @param {number} x 绘制坐标 x\n * @param {number} y 绘制坐标 y\n * @return {Point} 绘制坐标\n */\n\n\n AbstractGraph.prototype.getClientByPoint = function (x, y) {\n var viewController = this.get('viewController');\n return viewController.getClientByPoint(x, y);\n };\n /**\n * 将画布坐标转换为绘制坐标\n * @param {number} canvasX 画布 x 坐标\n * @param {number} canvasY 画布 y 坐标\n * @return {object} 绘制坐标\n */\n\n\n AbstractGraph.prototype.getPointByCanvas = function (canvasX, canvasY) {\n var viewController = this.get('viewController');\n return viewController.getPointByCanvas(canvasX, canvasY);\n };\n /**\n * 将绘制坐标转换为画布坐标\n * @param {number} x 绘制坐标 x\n * @param {number} y 绘制坐标 y\n * @return {object} 画布坐标\n */\n\n\n AbstractGraph.prototype.getCanvasByPoint = function (x, y) {\n var viewController = this.get('viewController');\n return viewController.getCanvasByPoint(x, y);\n };\n /**\n * 获取图内容的中心绘制坐标\n * @return {object} 中心绘制坐标\n */\n\n\n AbstractGraph.prototype.getGraphCenterPoint = function () {\n var bbox = this.get('group').getCanvasBBox();\n return {\n x: (bbox.minX + bbox.maxX) / 2,\n y: (bbox.minY + bbox.maxY) / 2\n };\n };\n /**\n * 获取视口中心绘制坐标\n * @return {object} 视口中心绘制坐标\n */\n\n\n AbstractGraph.prototype.getViewPortCenterPoint = function () {\n return this.getPointByCanvas(this.get('width') / 2, this.get('height') / 2);\n };\n /**\n * 显示元素\n * @param {Item} item 指定元素\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.showItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var object = itemController.changeItemVisibility(item, true);\n\n if (stack && this.get('enabledStack')) {\n var id = object.getID();\n var type = object.getType();\n var before = {};\n var after = {};\n\n switch (type) {\n case 'node':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.nodes = [{\n id: id,\n visible: true\n }];\n break;\n\n case 'edge':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.edges = [{\n id: id,\n visible: true\n }];\n break;\n\n case 'combo':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.combos = [{\n id: id,\n visible: true\n }];\n break;\n\n default:\n break;\n }\n\n this.pushStack('visible', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 隐藏元素\n * @param {Item} item 指定元素\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.hideItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var object = itemController.changeItemVisibility(item, false);\n\n if (stack && this.get('enabledStack')) {\n var id = object.getID();\n var type = object.getType();\n var before = {};\n var after = {};\n\n switch (type) {\n case 'node':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.nodes = [{\n id: id,\n visible: false\n }];\n break;\n\n case 'edge':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.edges = [{\n id: id,\n visible: false\n }];\n break;\n\n case 'combo':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.combos = [{\n id: id,\n visible: false\n }];\n break;\n\n default:\n break;\n }\n\n this.pushStack('visible', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 刷新元素\n * @param {string|object} item 元素id或元素实例\n */\n\n\n AbstractGraph.prototype.refreshItem = function (item) {\n var itemController = this.get('itemController');\n itemController.refreshItem(item);\n };\n /**\n * 设置是否在更新/刷新后自动重绘\n * @param {boolean} auto 自动重绘\n */\n\n\n AbstractGraph.prototype.setAutoPaint = function (auto) {\n var self = this;\n self.set('autoPaint', auto);\n var canvas = self.get('canvas');\n canvas.set('autoDraw', auto);\n };\n /**\n * 删除元素\n * @param {Item} item 元素id或元素实例\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.remove = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n this.removeItem(item, stack);\n };\n /**\n * 删除元素\n * @param {Item} item 元素id或元素实例\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.removeItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var nodeItem = item;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) nodeItem = this.findById(item);\n\n if (!nodeItem && Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n console.warn('The item to be removed does not exist!');\n } else if (nodeItem) {\n var type = '';\n if (nodeItem.getType) type = nodeItem.getType(); // 将删除的元素入栈\n\n if (stack && this.get('enabledStack')) {\n var deletedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, nodeItem.getModel()), {\n itemType: type\n });\n\n var before = {};\n\n switch (type) {\n case 'node':\n {\n before.nodes = [deletedModel];\n before.edges = [];\n var edges = nodeItem.getEdges();\n\n for (var i = edges.length - 1; i >= 0; i--) {\n before.edges.push(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, edges[i].getModel()), {\n itemType: 'edge'\n }));\n }\n\n break;\n }\n\n case 'edge':\n before.edges = [deletedModel];\n break;\n\n case 'combo':\n before.combos = [deletedModel];\n break;\n\n default:\n break;\n }\n\n this.pushStack('delete', {\n before: before,\n after: {}\n });\n }\n\n if (type === 'node') {\n var model = nodeItem.getModel(); // 如果删除的是节点,且该节点存在于某个 Combo 中,则需要先将 node 从 combo 中移除,否则删除节点后,操作 combo 会出错\n\n if (model.comboId) {\n this.updateComboTree(nodeItem, undefined, false);\n }\n }\n\n var itemController = this.get('itemController');\n itemController.removeItem(nodeItem);\n\n if (type === 'combo') {\n var newComboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"reconstructTree\"])(this.get('comboTrees'));\n this.set('comboTrees', newComboTrees);\n }\n }\n };\n /**\n * 新增元素\n * @param {ITEM_TYPE} type 元素类型(node | edge)\n * @param {ModelConfig} model 元素数据模型\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n * @param {boolean} sortCombo 本次操作是否需要更新 combo 层级顺序,内部参数,用户在外部使用 addItem 时始终时需要更新\n * @return {Item} 元素实例\n */\n\n\n AbstractGraph.prototype.addItem = function (type, model, stack, sortCombo) {\n if (stack === void 0) {\n stack = true;\n }\n\n if (sortCombo === void 0) {\n sortCombo = true;\n }\n\n var currentComboSorted = this.get('comboSorted');\n this.set('comboSorted', currentComboSorted && !sortCombo);\n var itemController = this.get('itemController'); // 添加节点、边或combo之前,先验证数据是否符合规范\n\n if (!Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"singleDataValidation\"])(type, model)) {\n return false;\n }\n\n if (model.id && this.findById(model.id)) {\n console.warn(\"This item exists already. Be sure the id %c\".concat(model.id, \"%c is unique.\"), 'font-size: 20px; color: red;', '');\n return;\n }\n\n var item;\n var comboTrees = this.get('comboTrees');\n if (!comboTrees) comboTrees = [];\n\n if (type === 'combo') {\n var itemMap_1 = this.get('itemMap');\n var foundParent_1 = false;\n comboTrees.forEach(function (ctree) {\n if (foundParent_1) return; // terminate the forEach after the tree containing the item is done\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n // find the parent\n if (model.parentId === child.id) {\n foundParent_1 = true;\n\n var newCombo = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: model.id,\n depth: child.depth + 2\n }, model);\n\n if (child.children) child.children.push(newCombo);else child.children = [newCombo];\n model.depth = newCombo.depth;\n item = itemController.addItem(type, model);\n }\n\n var childItem = itemMap_1[child.id]; // after the parent is found, update all the ancestors\n\n if (foundParent_1 && childItem && childItem.getType && childItem.getType() === 'combo') {\n itemController.updateCombo(childItem, child.children);\n }\n\n return true;\n });\n }); // if the parent is not found, add it to the root\n\n if (!foundParent_1) {\n var newCombo = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: model.id,\n depth: 0\n }, model);\n\n model.depth = newCombo.depth;\n comboTrees.push(newCombo);\n item = itemController.addItem(type, model);\n }\n\n this.set('comboTrees', comboTrees);\n } else if (type === 'node' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(model.comboId) && comboTrees) {\n var parentCombo = this.findById(model.comboId);\n\n if (parentCombo && parentCombo.getType && parentCombo.getType() !== 'combo') {\n console.warn(\"'\".concat(model.comboId, \"' is not a id of a combo in the graph, the node will be added without combo.\"));\n }\n\n item = itemController.addItem(type, model);\n var itemMap_2 = this.get('itemMap');\n var foundParent_2 = false,\n foundNode_1 = false;\n (comboTrees || []).forEach(function (ctree) {\n if (foundNode_1 || foundParent_2) return; // terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (child.id === model.id) {\n // if the item exists in the tree already, terminate\n foundNode_1 = true;\n return false;\n }\n\n if (model.comboId === child.id && !foundNode_1) {\n // found the parent, add the item to the children of its parent in the tree\n foundParent_2 = true;\n var cloneNode = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(model);\n cloneNode.itemType = 'node';\n if (child.children) child.children.push(cloneNode);else child.children = [cloneNode];\n cloneNode.depth = child.depth + 1;\n } // update the size of all the ancestors\n\n\n if (foundParent_2 && itemMap_2[child.id].getType && itemMap_2[child.id].getType() === 'combo') {\n itemController.updateCombo(itemMap_2[child.id], child.children);\n }\n\n return true;\n });\n });\n } else {\n item = itemController.addItem(type, model);\n }\n\n if (type === 'node' && model.comboId || type === 'combo' && model.parentId) {\n // add the combo to the parent's children array\n var parentCombo = this.findById(model.comboId || model.parentId);\n if (parentCombo && parentCombo.getType && parentCombo.getType() === 'combo') parentCombo.addChild(item);\n }\n\n var combos = this.get('combos');\n\n if (combos && combos.length > 0) {\n this.sortCombos();\n }\n\n this.autoPaint();\n\n if (stack && this.get('enabledStack')) {\n var addedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, item.getModel()), {\n itemType: type\n });\n\n var after = {};\n\n switch (type) {\n case 'node':\n after.nodes = [addedModel];\n break;\n\n case 'edge':\n after.edges = [addedModel];\n break;\n\n case 'combo':\n after.combos = [addedModel];\n break;\n\n default:\n break;\n }\n\n this.pushStack('add', {\n before: {},\n after: after\n });\n }\n\n return item;\n };\n /**\n * 新增元素\n * @param {ITEM_TYPE} type 元素类型(node | edge)\n * @param {ModelConfig} model 元素数据模型\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n * @return {Item} 元素实例\n */\n\n\n AbstractGraph.prototype.add = function (type, model, stack, sortCombo) {\n if (stack === void 0) {\n stack = true;\n }\n\n if (sortCombo === void 0) {\n sortCombo = true;\n }\n\n return this.addItem(type, model, stack, sortCombo);\n };\n /**\n * 更新元素\n * @param {Item} item 元素id或元素实例\n * @param {Partial | EdgeConfig} cfg 需要更新的数据\n */\n\n\n AbstractGraph.prototype.updateItem = function (item, cfg, stack) {\n var _this = this;\n\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var currentItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n currentItem = this.findById(item);\n } else {\n currentItem = item;\n }\n\n var UnupdateModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(currentItem.getModel());\n var type = '';\n if (currentItem.getType) type = currentItem.getType();\n\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], currentItem.getStates(), true);\n\n if (type === 'combo') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(currentItem, state, false);\n });\n }\n\n itemController.updateItem(currentItem, cfg);\n\n if (type === 'combo') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(currentItem, state, true);\n });\n }\n\n if (stack && this.get('enabledStack')) {\n var before = {\n nodes: [],\n edges: [],\n combos: []\n };\n var after = {\n nodes: [],\n edges: [],\n combos: []\n };\n\n var afterModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: UnupdateModel.id\n }, cfg);\n\n switch (type) {\n case 'node':\n before.nodes.push(UnupdateModel);\n after.nodes.push(afterModel);\n break;\n\n case 'edge':\n before.edges.push(UnupdateModel);\n after.edges.push(afterModel);\n break;\n\n case 'combo':\n before.combos.push(UnupdateModel);\n after.combos.push(afterModel);\n break;\n\n default:\n break;\n }\n\n if (type === 'node') {\n before.nodes.push(UnupdateModel);\n }\n\n this.pushStack('update', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 更新元素\n * @param {Item} item 元素id或元素实例\n * @param {Partial | EdgeConfig} cfg 需要更新的数据\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.update = function (item, cfg, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n this.updateItem(item, cfg, stack);\n };\n /**\n * 设置元素状态\n * @param {Item} item 元素id或元素实例\n * @param {string} state 状态名称\n * @param {string | boolean} value 是否启用状态 或 状态值\n */\n\n\n AbstractGraph.prototype.setItemState = function (item, state, value) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n item = this.findById(item);\n }\n\n var itemController = this.get('itemController');\n itemController.setItemState(item, state, value);\n var stateController = this.get('stateController');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(value)) {\n stateController.updateState(item, \"\".concat(state, \":\").concat(value), true);\n } else {\n stateController.updateState(item, state, value);\n }\n };\n /**\n * 将指定状态的优先级提升为最高优先级\n * @param {Item} item 元素id或元素实例\n * @param state 状态名称\n */\n\n\n AbstractGraph.prototype.priorityState = function (item, state) {\n var itemController = this.get('itemController');\n itemController.priorityState(item, state);\n };\n /**\n * 设置视图初始化数据\n * @param {GraphData} data 初始化数据\n */\n\n\n AbstractGraph.prototype.data = function (data) {\n Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"dataValidation\"])(data);\n this.set('data', data);\n };\n /**\n * 根据data接口的数据渲染视图\n */\n\n\n AbstractGraph.prototype.render = function () {\n var self = this;\n this.set('comboSorted', false);\n var data = this.get('data');\n\n if (this.get('enabledStack')) {\n // render 之前清空 redo 和 undo 栈\n this.clearStack();\n }\n\n if (!data) {\n throw new Error('data must be defined first');\n }\n\n var _a = data.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = data.edges,\n edges = _b === void 0 ? [] : _b,\n _c = data.combos,\n combos = _c === void 0 ? [] : _c;\n this.clear(true);\n this.emit('beforerender');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n self.add('node', node, false, false);\n }); // process the data to tree structure\n\n if (combos && combos.length !== 0) {\n var comboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"plainCombosToTrees\"])(combos, nodes);\n this.set('comboTrees', comboTrees); // add combos\n\n self.addCombos(combos);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n self.add('edge', edge, false, false);\n });\n var animate = self.get('animate');\n\n if (self.get('fitView') || self.get('fitCenter')) {\n self.set('animate', false);\n } // layout\n\n\n var layoutController = self.get('layoutController');\n\n if (layoutController) {\n layoutController.layout(success);\n if (this.destroyed) return;\n } else {\n if (self.get('fitView')) {\n self.fitView();\n }\n\n if (self.get('fitCenter')) {\n self.fitCenter();\n }\n\n self.emit('afterrender');\n self.set('animate', animate);\n } // 将在 onLayoutEnd 中被调用\n\n\n function success() {\n // fitView 与 fitCenter 共存时,fitView 优先,fitCenter 不再执行\n if (self.get('fitView')) {\n self.fitView();\n } else if (self.get('fitCenter')) {\n self.fitCenter();\n }\n\n self.autoPaint();\n self.emit('afterrender');\n\n if (self.get('fitView') || self.get('fitCenter')) {\n self.set('animate', animate);\n }\n }\n\n if (!this.get('groupByTypes')) {\n if (combos && combos.length !== 0) {\n this.sortCombos();\n } else {\n // 为提升性能,选择数量少的进行操作\n if (data.nodes && data.edges && data.nodes.length < data.edges.length) {\n var nodesArr = this.getNodes(); // 遍历节点实例,将所有节点提前。\n\n nodesArr.forEach(function (node) {\n node.toFront();\n });\n } else {\n var edgesArr = this.getEdges(); // 遍历节点实例,将所有节点提前。\n\n edgesArr.forEach(function (edge) {\n edge.toBack();\n });\n }\n }\n }\n\n if (this.get('enabledStack')) {\n this.pushStack('render');\n }\n };\n /**\n * 接收数据进行渲染\n * @Param {Object} data 初始化数据\n */\n\n\n AbstractGraph.prototype.read = function (data) {\n this.data(data);\n this.render();\n }; // 比较item\n\n\n AbstractGraph.prototype.diffItems = function (type, items, models) {\n var self = this;\n var item;\n var itemMap = this.get('itemMap');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(models, function (model) {\n item = itemMap[model.id];\n\n if (item) {\n if (self.get('animate') && type === NODE) {\n var containerMatrix = item.getContainer().getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n item.set('originAttrs', {\n x: containerMatrix[6],\n y: containerMatrix[7]\n });\n }\n\n self.updateItem(item, model, false);\n } else {\n item = self.addItem(type, model, false);\n }\n\n if (item) items[\"\".concat(type, \"s\")].push(item);\n });\n };\n /**\n * 更改源数据,根据新数据重新渲染视图\n * @param {GraphData | TreeGraphData} data 源数据\n * @param {boolean} 是否入栈,默认为true\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.changeData = function (data, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var self = this;\n\n if (!Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"dataValidation\"])(data)) {\n return this;\n }\n\n if (stack && this.get('enabledStack')) {\n this.pushStack('changedata', {\n before: self.save(),\n after: data\n });\n }\n\n this.set('comboSorted', false); // 删除 hulls\n\n this.removeHulls(); // 更改数据源后,取消所有状态\n\n this.getNodes().map(function (node) {\n return self.clearItemStates(node);\n });\n this.getEdges().map(function (edge) {\n return self.clearItemStates(edge);\n });\n var canvas = this.get('canvas');\n var localRefresh = canvas.get('localRefresh');\n canvas.set('localRefresh', false);\n\n if (!self.get('data')) {\n self.data(data);\n self.render();\n }\n\n var itemMap = this.get('itemMap');\n var items = {\n nodes: [],\n edges: []\n };\n var combosData = data.combos;\n\n if (combosData) {\n var comboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"plainCombosToTrees\"])(combosData, data.nodes);\n this.set('comboTrees', comboTrees);\n } else {\n this.set('comboTrees', []);\n }\n\n this.diffItems('node', items, data.nodes);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(itemMap, function (item, id) {\n itemMap[id].getModel().depth = 0;\n if (item.getType && item.getType() === 'edge') return;\n\n if (item.getType && item.getType() === 'combo') {\n delete itemMap[id];\n item.destroy();\n } else if (items.nodes.indexOf(item) < 0) {\n delete itemMap[id];\n self.remove(item, false);\n }\n }); // clear the destroyed combos here to avoid removing sub nodes before removing the parent combo\n\n var comboItems = this.getCombos();\n var combosLength = comboItems.length;\n\n for (var i = combosLength - 1; i >= 0; i--) {\n if (comboItems[i].destroyed) {\n comboItems.splice(i, 1);\n }\n } // process the data to tree structure\n\n\n if (combosData) {\n // add combos\n self.addCombos(combosData);\n\n if (!this.get('groupByTypes')) {\n this.sortCombos();\n }\n }\n\n this.diffItems('edge', items, data.edges);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(itemMap, function (item, id) {\n if (item.getType && (item.getType() === 'node' || item.getType() === 'combo')) return;\n\n if (items.edges.indexOf(item) < 0) {\n delete itemMap[id];\n self.remove(item, false);\n }\n });\n this.set({\n nodes: items.nodes,\n edges: items.edges\n });\n var layoutController = this.get('layoutController');\n\n if (layoutController) {\n layoutController.changeData();\n\n if (self.get('animate') && !layoutController.getLayoutType()) {\n // 如果没有指定布局\n self.positionsAnimate();\n } else {\n self.autoPaint();\n }\n }\n\n setTimeout(function () {\n canvas.set('localRefresh', localRefresh);\n }, 16);\n return this;\n };\n /**\n * 私有方法,在 render 和 changeData 的时候批量添加数据中所有平铺的 combos\n * @param {ComboConfig[]} combos 平铺的 combos 数据\n */\n\n\n AbstractGraph.prototype.addCombos = function (combos) {\n var self = this;\n var comboTrees = self.get('comboTrees');\n var itemController = this.get('itemController');\n itemController.addCombos(comboTrees, combos);\n };\n /**\n * 根据已经存在的节点或 combo 创建新的 combo\n * @param combo combo ID 或 Combo 配置\n * @param children 添加到 Combo 中的元素,包括节点和 combo\n */\n\n\n AbstractGraph.prototype.createCombo = function (combo, children) {\n var _this = this;\n\n this.set('comboSorted', false); // step 1: 创建新的 Combo\n\n var comboId = '';\n var comboConfig;\n if (!combo) return;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboId = combo;\n comboConfig = {\n id: combo\n };\n } else {\n comboId = combo.id;\n\n if (!comboId) {\n console.warn('Create combo failed. Please assign a unique string id for the adding combo.');\n return;\n }\n\n comboConfig = combo;\n } // step2: 更新 children,根据类型添加 comboId 或 parentId\n\n\n var trees = children.map(function (elementId) {\n var item = _this.findById(elementId);\n\n var model = item.getModel();\n var type = '';\n if (item.getType) type = item.getType();\n var cItem = {\n id: item.getID(),\n itemType: type\n };\n\n if (type === 'combo') {\n cItem.parentId = comboId;\n model.parentId = comboId;\n } else if (type === 'node') {\n cItem.comboId = comboId;\n model.comboId = comboId;\n }\n\n return cItem;\n });\n comboConfig.children = trees; // step 3: 添加 Combo,addItem 时会将子将元素添加到 Combo 中\n\n this.addItem('combo', comboConfig, false);\n this.set('comboSorted', false); // step4: 更新 comboTrees 结构\n\n var comboTrees = this.get('comboTrees');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (child.id === comboId) {\n child.itemType = 'combo';\n child.children = trees;\n return false;\n }\n\n return true;\n });\n });\n\n if (comboTrees) {\n this.sortCombos();\n }\n };\n /**\n * 解散 combo\n * @param {String | INode | ICombo} combo 需要被解散的 Combo item 或 id\n */\n\n\n AbstractGraph.prototype.uncombo = function (combo) {\n var _this = this;\n\n var _a;\n\n var self = this;\n var comboItem = combo;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboItem = this.findById(combo);\n }\n\n if (!comboItem || comboItem.getType && comboItem.getType() !== 'combo') {\n console.warn('The item is not a combo!');\n return;\n }\n\n var parentId = comboItem.getModel().parentId;\n var comboTrees = self.get('comboTrees');\n if (!comboTrees) comboTrees = [];\n var itemMap = this.get('itemMap');\n var comboId = comboItem.get('id');\n var treeToBeUncombo;\n var brothers = [];\n var comboItems = this.get('combos');\n var parentItem = this.findById(parentId);\n comboTrees.forEach(function (ctree) {\n if (treeToBeUncombo) return; // terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (subtree) {\n var _a; // find the combo to be uncomboed, delete the combo from map and cache\n\n\n if (subtree.id === comboId) {\n treeToBeUncombo = subtree; // delete the related edges\n\n var edges = comboItem.getEdges();\n edges.forEach(function (edge) {\n _this.removeItem(edge, false);\n });\n var index = comboItems.indexOf(comboItem);\n comboItems.splice(index, 1);\n delete itemMap[comboId];\n comboItem.destroy();\n\n _this.emit('afterremoveitem', {\n item: comboItem,\n type: 'combo'\n });\n } // find the parent to remove the combo from the combo's brothers array and add the combo's children to the combo's brothers array in the tree\n\n\n if (parentId && treeToBeUncombo && subtree.id === parentId) {\n parentItem.removeCombo(comboItem);\n brothers = subtree.children; // the combo's brothers\n // remove the combo from its brothers array\n\n var index = brothers.indexOf(treeToBeUncombo);\n\n if (index !== -1) {\n brothers.splice(index, 1);\n } // append the combo's children to the combo's brothers array\n\n\n (_a = treeToBeUncombo.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n var item = _this.findById(child.id);\n\n var childModel = item.getModel();\n\n if (item.getType && item.getType() === 'combo') {\n child.parentId = parentId;\n delete child.comboId;\n childModel.parentId = parentId; // update the parentId of the model\n\n delete childModel.comboId;\n } else if (item.getType && item.getType() === 'node') {\n child.comboId = parentId;\n childModel.comboId = parentId; // update the parentId of the model\n }\n\n parentItem.addChild(item);\n brothers.push(child);\n });\n return false;\n }\n\n return true;\n });\n }); // if the parentId is not found, remove the combo from the roots\n\n if (!parentId && treeToBeUncombo) {\n var index = comboTrees.indexOf(treeToBeUncombo);\n comboTrees.splice(index, 1); // modify the parentId of the children\n\n (_a = treeToBeUncombo.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child.parentId = undefined;\n\n var childModel = _this.findById(child.id).getModel();\n\n delete childModel.parentId; // update the parentId of the model\n\n delete childModel.comboId; // update the comboId of the model\n\n if (child.itemType !== 'node') comboTrees.push(child);\n });\n }\n };\n /**\n * 根据节点的 bbox 更新所有 combos 的绘制,包括 combos 的位置和范围\n */\n\n\n AbstractGraph.prototype.updateCombos = function () {\n var _this = this;\n\n var self = this;\n var comboTrees = this.get('comboTrees');\n var itemController = self.get('itemController');\n var itemMap = self.get('itemMap');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (!child) {\n return true;\n }\n\n var childItem = itemMap[child.id];\n\n if (childItem && childItem.getType && childItem.getType() === 'combo') {\n // 更新具体的 Combo 之前先清除所有的已有状态,以免将 state 中的样式更新为 Combo 的样式\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], childItem.getStates(), true);\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(childItem, state, false);\n }); // 更新具体的 Combo\n\n itemController.updateCombo(childItem, child.children); // 更新 Combo 后,还原已有的状态\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(childItem, state, true);\n });\n }\n\n return true;\n });\n });\n self.sortCombos();\n };\n /**\n * 根据节点的 bbox 更新 combo 及其祖先 combos 的绘制,包括 combos 的位置和范围\n * @param {String | ICombo} combo 需要被更新的 Combo 或 id,若指定,则该 Combo 及所有祖先 Combod 都会被更新\n */\n\n\n AbstractGraph.prototype.updateCombo = function (combo) {\n var _this = this;\n\n var self = this;\n var comboItem = combo;\n var comboId;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboItem = this.findById(combo);\n }\n\n if (!comboItem || comboItem.getType && comboItem.getType() !== 'combo') {\n console.warn('The item to be updated is not a combo!');\n return;\n }\n\n comboId = comboItem.get('id');\n var comboTrees = this.get('comboTrees');\n var itemController = self.get('itemController');\n var itemMap = self.get('itemMap');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (!child) {\n return true;\n }\n\n var childItem = itemMap[child.id];\n\n if (comboId === child.id && childItem && childItem.getType && childItem.getType() === 'combo') {\n // 更新具体的 Combo 之前先清除所有的已有状态,以免将 state 中的样式更新为 Combo 的样式\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], childItem.getStates(), true); // || !item.getStateStyle(stateName)\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n if (childItem.getStateStyle(state)) {\n _this.setItemState(childItem, state, false);\n }\n }); // 更新具体的 Combo\n\n itemController.updateCombo(childItem, child.children); // 更新 Combo 后,还原已有的状态\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n if (childItem.getStateStyle(state)) {\n _this.setItemState(childItem, state, true);\n }\n });\n if (comboId) comboId = child.parentId;\n }\n\n return true;\n });\n });\n };\n /**\n * 更新树结构,例如移动子树等\n * @param {String | INode | ICombo} item 需要被更新的 Combo 或 节点 id\n * @param {string | undefined} parentId 新的父 combo id,undefined 代表没有父 combo\n */\n\n\n AbstractGraph.prototype.updateComboTree = function (item, parentId, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var self = this;\n this.set('comboSorted', false);\n var uItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n uItem = self.findById(item);\n } else {\n uItem = item;\n }\n\n var model = uItem.getModel();\n var oldParentId = model.comboId || model.parentId;\n var type = '';\n if (uItem.getType) type = uItem.getType(); // 若 item 是 Combo,且 parentId 是其子孙 combo 的 id,则警告并终止\n\n if (parentId && type === 'combo') {\n var comboTrees = this.get('comboTrees');\n var valid_1 = true;\n var itemSubTree_1;\n (comboTrees || []).forEach(function (ctree) {\n if (itemSubTree_1) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n if (itemSubTree_1) return; // 找到从 item 开始的子树\n\n if (subTree.id === uItem.getID()) {\n itemSubTree_1 = subTree;\n }\n\n return true;\n });\n }); // 在以 item 为根的子树中寻找与 parentId 相同的后继元素\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(itemSubTree_1, function (subTree) {\n if (subTree.id === parentId) {\n valid_1 = false;\n return false;\n }\n\n return true;\n }); // parentId 是 item 的一个后继元素,不能进行更新\n\n if (!valid_1) {\n console.warn('Failed to update the combo tree! The parentId points to a descendant of the combo!');\n return;\n }\n }\n\n if (stack && this.get('enabledStack')) {\n var beforeData = {},\n afterData = {};\n\n if (type === 'combo') {\n beforeData.combos = [{\n id: model.id,\n parentId: model.parentId\n }];\n afterData.combos = [{\n id: model.id,\n parentId: parentId\n }];\n } else if (type === 'node') {\n beforeData.nodes = [{\n id: model.id,\n parentId: model.comboId\n }];\n afterData.nodes = [{\n id: model.id,\n parentId: parentId\n }];\n }\n\n this.pushStack('updateComboTree', {\n before: beforeData,\n after: afterData\n });\n } // 当 combo 存在 parentId 或 comboId 时,才将其移除\n\n\n if (model.parentId || model.comboId) {\n var combo = this.findById(model.parentId || model.comboId);\n\n if (combo) {\n combo.removeChild(uItem);\n }\n }\n\n if (type === 'combo') {\n model.parentId = parentId;\n } else if (type === 'node') {\n model.comboId = parentId;\n } // 只有当移入到指定 combo 时才添加\n\n\n if (parentId) {\n var parentCombo = this.findById(parentId);\n\n if (parentCombo) {\n // 将元素添加到 parentCombo 中\n parentCombo.addChild(uItem);\n }\n } // 如果原先有父亲 combo,则从原父 combo 的子元素数组中删除\n\n\n if (oldParentId) {\n var parentCombo = this.findById(oldParentId);\n\n if (parentCombo) {\n // 将元素从 parentCombo 中移除\n parentCombo.removeChild(uItem);\n }\n }\n\n var newComboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"reconstructTree\"])(this.get('comboTrees'), model.id, parentId);\n this.set('comboTrees', newComboTrees);\n this.updateCombos();\n };\n /**\n * 导出图数据\n * @return {object} data\n */\n\n\n AbstractGraph.prototype.save = function () {\n var nodes = [];\n var edges = [];\n var combos = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('nodes'), function (node) {\n nodes.push(node.getModel());\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('edges'), function (edge) {\n edges.push(edge.getModel());\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('combos'), function (combo) {\n combos.push(combo.getModel());\n });\n return {\n nodes: nodes,\n edges: edges,\n combos: combos\n };\n };\n /**\n * 改变画布大小\n * @param {number} width 画布宽度\n * @param {number} height 画布高度\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.changeSize = function (width, height) {\n var viewController = this.get('viewController');\n viewController.changeSize(width, height);\n return this;\n };\n /**\n * 当源数据在外部发生变更时,根据新数据刷新视图。但是不刷新节点位置\n */\n\n\n AbstractGraph.prototype.refresh = function () {\n var self = this;\n self.emit('beforegraphrefresh');\n\n if (self.get('animate')) {\n self.positionsAnimate();\n } else {\n var nodes = self.get('nodes');\n var edges = self.get('edges');\n var vedges = self.get('edges');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n node.refresh();\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n edge.refresh();\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(vedges, function (vedge) {\n vedge.refresh();\n });\n }\n\n self.emit('aftergraphrefresh');\n self.autoPaint();\n };\n /**\n * 获取当前图中所有节点的item实例\n * @return {INode} item数组\n */\n\n\n AbstractGraph.prototype.getNodes = function () {\n return this.get('nodes');\n };\n /**\n * 获取当前图中所有边的item实例\n * @return {IEdge} item数组\n */\n\n\n AbstractGraph.prototype.getEdges = function () {\n return this.get('edges');\n };\n /**\n * 获取图中所有的 combo 实例\n */\n\n\n AbstractGraph.prototype.getCombos = function () {\n return this.get('combos');\n };\n /**\n * 获取指定 Combo 中所有的节点\n * @param comboId combo ID\n */\n\n\n AbstractGraph.prototype.getComboChildren = function (combo) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') {\n console.warn('The combo does not exist!');\n return;\n }\n\n return combo.getChildren();\n };\n /**\n * 根据 graph 上的 animateCfg 进行视图中节点位置动画接口\n */\n\n\n AbstractGraph.prototype.positionsAnimate = function () {\n var self = this;\n self.emit('beforeanimate');\n var animateCfg = self.get('animateCfg');\n var onFrame = animateCfg.onFrame;\n var nodes = self.getNodes();\n var toNodes = nodes.map(function (node) {\n var model = node.getModel();\n return {\n id: model.id,\n x: model.x,\n y: model.y\n };\n });\n\n if (self.isAnimating()) {\n self.stopAnimate();\n }\n\n var canvas = self.get('canvas');\n canvas.animate(function (ratio) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(toNodes, function (data) {\n var node = self.findById(data.id);\n\n if (!node || node.destroyed) {\n return;\n }\n\n var originAttrs = node.get('originAttrs');\n var model = node.get('model');\n\n if (!originAttrs) {\n var containerMatrix = node.getContainer().getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n originAttrs = {\n x: containerMatrix[6],\n y: containerMatrix[7]\n };\n node.set('originAttrs', originAttrs);\n }\n\n if (onFrame) {\n var attrs = onFrame(node, ratio, data, originAttrs);\n node.set('model', Object.assign(model, attrs));\n } else {\n model.x = originAttrs.x + (data.x - originAttrs.x) * ratio;\n model.y = originAttrs.y + (data.y - originAttrs.y) * ratio;\n }\n });\n self.refreshPositions();\n }, {\n duration: animateCfg.duration,\n easing: animateCfg.easing,\n callback: function callback() {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n node.set('originAttrs', null);\n });\n\n if (animateCfg.callback) {\n animateCfg.callback();\n }\n\n self.emit('afteranimate');\n self.animating = false;\n }\n });\n };\n /**\n * 当节点位置在外部发生改变时,刷新所有节点位置,重计算边\n */\n\n\n AbstractGraph.prototype.refreshPositions = function () {\n var self = this;\n self.emit('beforegraphrefreshposition');\n var nodes = self.get('nodes');\n var edges = self.get('edges');\n var vedges = self.get('vedges');\n var combos = self.get('combos');\n var model;\n var updatedNodes = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n model = node.getModel();\n var originAttrs = node.get('originAttrs');\n\n if (originAttrs && model.x === originAttrs.x && model.y === originAttrs.y) {\n return;\n }\n\n var changed = node.updatePosition({\n x: model.x,\n y: model.y\n });\n updatedNodes[model.id] = changed;\n if (model.comboId) updatedNodes[model.comboId] = updatedNodes[model.comboId] || changed;\n });\n\n if (combos && combos.length !== 0) {\n self.updateCombos();\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n var sourceModel = edge.getSource().getModel();\n var target = edge.getTarget(); // 避免 target 是纯对象的情况下调用 getModel 方法\n // 拖动生成边的时候 target 会是纯对象\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(target)) {\n var targetModel = target.getModel();\n\n if (updatedNodes[sourceModel.id] || updatedNodes[targetModel.id] || edge.getModel().isComboEdge) {\n edge.refresh();\n }\n }\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(vedges, function (vedge) {\n vedge.refresh();\n });\n self.emit('aftergraphrefreshposition');\n self.autoPaint();\n };\n\n AbstractGraph.prototype.stopAnimate = function () {\n this.get('canvas').stopAnimate();\n };\n\n AbstractGraph.prototype.isAnimating = function () {\n return this.animating;\n };\n /**\n * 获取当前视口伸缩比例\n * @return {number} 比例\n */\n\n\n AbstractGraph.prototype.getZoom = function () {\n var matrix = this.get('group').getMatrix();\n return matrix ? matrix[0] : 1;\n };\n /**\n * 获取当前的行为模式\n * @return {string} 当前行为模式\n */\n\n\n AbstractGraph.prototype.getCurrentMode = function () {\n var modeController = this.get('modeController');\n return modeController.getMode();\n };\n /**\n * 切换行为模式\n * @param {string} mode 指定模式\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.setMode = function (mode) {\n var modeController = this.get('modeController');\n modeController.setMode(mode);\n return this;\n };\n /**\n * 清除画布元素\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.clear = function (avoidEmit) {\n var _a;\n\n if (avoidEmit === void 0) {\n avoidEmit = false;\n }\n\n (_a = this.get('canvas')) === null || _a === void 0 ? void 0 : _a.clear();\n this.initGroups(); // 清空画布时同时清除数据\n\n this.set({\n itemMap: {},\n nodes: [],\n edges: [],\n groups: [],\n combos: [],\n comboTrees: []\n });\n if (!avoidEmit) this.emit('afterrender');\n return this;\n };\n /**\n * 更换布局配置项\n * @param {object} cfg 新布局配置项\n * @param {'center' | 'begin'} align 对齐方式,可选中心(center)对齐到对齐点,或左上角(begin)对齐到对齐点\n * @param {IPoint} alignPoint 画布上的对齐点,为 Canvas 坐标系(Canvas DOM)\n * 若 cfg 含有 type 字段或为 String 类型,且与现有布局方法不同,则更换布局\n * 若 cfg 不包括 type ,则保持原有布局方法,仅更新布局配置项\n */\n\n\n AbstractGraph.prototype.updateLayout = function (cfg, align, alignPoint) {\n var _this = this;\n\n var layoutController = this.get('layoutController');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(cfg)) {\n cfg = {\n type: cfg\n };\n } // align the graph after layout\n\n\n if (align) {\n var toPoint_1 = alignPoint;\n\n if (!toPoint_1) {\n if (align === 'begin') toPoint_1 = {\n x: 0,\n y: 0\n };else toPoint_1 = {\n x: this.getWidth() / 2,\n y: this.getHeight() / 2\n };\n } // translate to point coordinate system\n\n\n toPoint_1 = this.getPointByCanvas(toPoint_1.x, toPoint_1.y);\n var forceTypes = ['force', 'gForce', 'fruchterman']; // if it is force layout, only center takes effect, and assign center force\n\n if (forceTypes.includes(cfg.type) || !cfg.type && forceTypes.includes(layoutController === null || layoutController === void 0 ? void 0 : layoutController.layoutType)) {\n cfg.center = [toPoint_1.x, toPoint_1.y];\n } else {\n this.once('afterlayout', function (e) {\n var matrix = _this.getGroup().getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n toPoint_1.x = toPoint_1.x * matrix[0] + matrix[6];\n toPoint_1.y = toPoint_1.y * matrix[0] + matrix[7];\n\n var _a = _this.getGroup().getCanvasBBox(),\n minX = _a.minX,\n maxX = _a.maxX,\n minY = _a.minY,\n maxY = _a.maxY;\n\n var bboxPoint = {\n x: (minX + maxX) / 2,\n y: (minY + maxY) / 2\n };\n\n if (align === 'begin') {\n bboxPoint.x = minX;\n bboxPoint.y = minY;\n }\n\n _this.translate(toPoint_1.x - bboxPoint.x, toPoint_1.y - bboxPoint.y);\n });\n }\n }\n\n var oriLayoutCfg = this.get('layout');\n var layoutCfg = {};\n Object.assign(layoutCfg, oriLayoutCfg, cfg);\n this.set('layout', layoutCfg);\n\n if (layoutController.isLayoutTypeSame(layoutCfg) && layoutCfg.gpuEnabled === oriLayoutCfg.gpuEnabled) {\n // no type or same type, or switch the gpu and cpu, update layout\n layoutController.updateLayoutCfg(layoutCfg);\n } else {\n // has different type, change layout\n layoutController.changeLayout(layoutCfg);\n }\n };\n /**\n * 销毁布局,changeData 时不会再使用原来的布局方法对新数据进行布局\n */\n\n\n AbstractGraph.prototype.destroyLayout = function () {\n var layoutController = this.get('layoutController');\n layoutController.destroyLayout();\n };\n /**\n * 重新以当前示例中配置的属性进行一次布局\n */\n\n\n AbstractGraph.prototype.layout = function () {\n var layoutController = this.get('layoutController');\n var layoutCfg = this.get('layout');\n if (!layoutCfg || !layoutController) return;\n\n if (layoutCfg.workerEnabled) {\n // 如果使用web worker布局\n layoutController.layout();\n return;\n }\n\n if (layoutController.layoutMethod) {\n layoutController.relayout(true);\n } else {\n layoutController.layout();\n }\n };\n /**\n * 收起指定的 combo\n * @param {string | ICombo} combo combo ID 或 combo item\n */\n\n\n AbstractGraph.prototype.collapseCombo = function (combo) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo) {\n console.warn('The combo to be collapsed does not exist!');\n return;\n }\n\n this.emit('beforecollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n var comboModel = combo.getModel();\n var itemController = this.get('itemController');\n itemController.collapseCombo(combo);\n comboModel.collapsed = true; // add virtual edges\n\n var edges = this.getEdges().concat(this.get('vedges')); // find all the descendant nodes and combos\n\n var cnodes = [];\n var ccombos = [];\n var comboTrees = this.get('comboTrees');\n var found = false;\n (comboTrees || []).forEach(function (ctree) {\n if (found) return; // if the combo is found, terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n // if the combo is found and it is traversing the other branches, terminate\n if (found && subTree.depth <= comboModel.depth) return false; // if the combo is found\n\n if (comboModel.id === subTree.id) found = true;\n\n if (found) {\n // if the combo is found, concat the descendant nodes and combos\n var item = _this.findById(subTree.id);\n\n if (item && item.getType && item.getType() === 'combo') {\n cnodes = cnodes.concat(item.getNodes());\n ccombos = ccombos.concat(item.getCombos());\n }\n }\n\n return true;\n });\n });\n var edgeWeightMap = {};\n var addedVEdges = [];\n edges.forEach(function (edge) {\n if (edge.isVisible() && !edge.getModel().isVEdge) return;\n var source = edge.getSource();\n var target = edge.getTarget();\n\n if ((cnodes.includes(source) || ccombos.includes(source)) && !cnodes.includes(target) && !ccombos.includes(target) || source.getModel().id === comboModel.id) {\n var edgeModel = edge.getModel();\n\n if (edgeModel.isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var targetModel = target.getModel();\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.parentId || targetModel.comboId);\n if (!target || !targetModel.parentId && !targetModel.comboId) return; // all the ancestors are hidden, then ignore the edge\n\n targetModel = target.getModel();\n }\n\n var targetId = targetModel.id;\n\n if (edgeWeightMap[\"\".concat(comboModel.id, \"-\").concat(targetId)]) {\n edgeWeightMap[\"\".concat(comboModel.id, \"-\").concat(targetId)] += edgeModel.size || 1;\n return;\n } // the source is in the combo, the target is not\n\n\n var vedge = _this.addItem('vedge', {\n source: comboModel.id,\n target: targetId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[\"\".concat(comboModel.id, \"-\").concat(targetId)] = edgeModel.size || 1;\n addedVEdges.push(vedge);\n } else if (!cnodes.includes(source) && !ccombos.includes(source) && (cnodes.includes(target) || ccombos.includes(target)) || target.getModel().id === comboModel.id) {\n var edgeModel = edge.getModel();\n\n if (edgeModel.isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var sourceModel = source.getModel();\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.parentId || sourceModel.comboId);\n if (!source || !sourceModel.parentId && !sourceModel.comboId) return; // all the ancestors are hidden, then ignore the edge\n\n sourceModel = source.getModel();\n }\n\n var sourceId = sourceModel.id;\n\n if (edgeWeightMap[\"\".concat(sourceId, \"-\").concat(comboModel.id)]) {\n edgeWeightMap[\"\".concat(sourceId, \"-\").concat(comboModel.id)] += edgeModel.size || 1;\n return;\n } // the target is in the combo, the source is not\n\n\n var vedge = _this.addItem('vedge', {\n target: comboModel.id,\n source: sourceId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[\"\".concat(sourceId, \"-\").concat(comboModel.id)] = edgeModel.size || 1;\n addedVEdges.push(vedge);\n }\n }); // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n addedVEdges.forEach(function (vedge) {\n var vedgeModel = vedge.getModel();\n\n _this.updateItem(vedge, {\n size: edgeWeightMap[\"\".concat(vedgeModel.source, \"-\").concat(vedgeModel.target)]\n }, false);\n });\n this.emit('aftercollapseexpandcombo', {\n action: 'collapse',\n item: combo\n });\n };\n /**\n * 展开指定的 combo\n * @param {string | ICombo} combo combo ID 或 combo item\n */\n\n\n AbstractGraph.prototype.expandCombo = function (combo) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') {\n console.warn('The combo to be collapsed does not exist!');\n return;\n }\n\n this.emit('beforecollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n var comboModel = combo.getModel();\n var itemController = this.get('itemController');\n itemController.expandCombo(combo);\n comboModel.collapsed = false; // add virtual edges\n\n var edges = this.getEdges().concat(this.get('vedges')); // find all the descendant nodes and combos\n\n var cnodes = [];\n var ccombos = [];\n var comboTrees = this.get('comboTrees');\n var found = false;\n (comboTrees || []).forEach(function (ctree) {\n if (found) return; // if the combo is found, terminate\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n // if the combo is found and it is traversing the other branches, terminate\n if (found && subTree.depth <= comboModel.depth) return false;\n if (comboModel.id === subTree.id) found = true;\n\n if (found) {\n var item = _this.findById(subTree.id);\n\n if (item && item.getType && item.getType() === 'combo') {\n cnodes = cnodes.concat(item.getNodes());\n ccombos = ccombos.concat(item.getCombos());\n }\n }\n\n return true;\n });\n });\n var edgeWeightMap = {};\n var addedVEdges = {};\n edges.forEach(function (edge) {\n if (edge.isVisible() && !edge.getModel().isVEdge) return;\n var source = edge.getSource();\n var target = edge.getTarget();\n var sourceId = source.get('id');\n var targetId = target.get('id');\n\n if ((cnodes.includes(source) || ccombos.includes(source)) && !cnodes.includes(target) && !ccombos.includes(target) || sourceId === comboModel.id) {\n // the source is in the combo, the target is not\n // ignore the virtual edges\n if (edge.getModel().isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var targetModel = target.getModel(); // find the nearest visible ancestor\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.comboId || targetModel.parentId);\n\n if (!target || !targetModel.parentId && !targetModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n targetModel = target.getModel();\n }\n\n targetId = targetModel.id;\n var sourceModel = source.getModel(); // find the nearest visible ancestor\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.comboId || sourceModel.parentId);\n\n if (!source || !sourceModel.parentId && !sourceModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n if (sourceModel.comboId === comboModel.id || sourceModel.parentId === comboModel.id) {\n break; // if the next ancestor is the combo, break the while\n }\n\n sourceModel = source.getModel();\n }\n\n sourceId = sourceModel.id;\n\n if (targetId) {\n var vedgeId = \"\".concat(sourceId, \"-\").concat(targetId); // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n if (edgeWeightMap[vedgeId]) {\n edgeWeightMap[vedgeId] += edge.getModel().size || 1;\n\n _this.updateItem(addedVEdges[vedgeId], {\n size: edgeWeightMap[vedgeId]\n }, false);\n\n return;\n }\n\n var vedge = _this.addItem('vedge', {\n source: sourceId,\n target: targetId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[vedgeId] = edge.getModel().size || 1;\n addedVEdges[vedgeId] = vedge;\n }\n } else if (!cnodes.includes(source) && !ccombos.includes(source) && (cnodes.includes(target) || ccombos.includes(target)) || targetId === comboModel.id) {\n // the target is in the combo, the source is not\n // ignore the virtual edges\n if (edge.getModel().isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var sourceModel = source.getModel(); // find the nearest visible ancestor\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.comboId || sourceModel.parentId);\n\n if (!source || !sourceModel.parentId && !sourceModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n sourceModel = source.getModel();\n }\n\n sourceId = sourceModel.id;\n var targetModel = target.getModel(); // find the nearest visible ancestor\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.comboId || targetModel.parentId);\n\n if (!target || !targetModel.parentId && !targetModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n if (targetModel.comboId === comboModel.id || targetModel.parentId === comboModel.id) {\n break; // if the next ancestor is the combo, break the while\n }\n\n targetModel = target.getModel();\n }\n\n targetId = targetModel.id;\n\n if (sourceId) {\n var vedgeId = \"\".concat(sourceId, \"-\").concat(targetId); // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n if (edgeWeightMap[vedgeId]) {\n edgeWeightMap[vedgeId] += edge.getModel().size || 1;\n\n _this.updateItem(addedVEdges[vedgeId], {\n size: edgeWeightMap[vedgeId]\n }, false);\n\n return;\n }\n\n var vedge = _this.addItem('vedge', {\n target: targetId,\n source: sourceId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[vedgeId] = edge.getModel().size || 1;\n addedVEdges[vedgeId] = vedge;\n }\n } else if ((cnodes.includes(source) || ccombos.includes(source)) && (cnodes.includes(target) || ccombos.includes(target))) {\n // both source and target are in the combo, if the target and source are both visible, show the edge\n if (source.isVisible() && target.isVisible()) {\n edge.show();\n }\n }\n });\n this.emit('aftercollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n };\n\n AbstractGraph.prototype.collapseExpandCombo = function (combo) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') return;\n var comboModel = combo.getModel(); // if one ancestor combo of the combo is collapsed, it should not be collapsed or expanded\n\n var parentItem = this.findById(comboModel.parentId);\n\n while (parentItem) {\n var parentModel = parentItem.getModel();\n\n if (parentModel.collapsed) {\n console.warn(\"Fail to expand the combo since it's ancestor combo is collapsed.\");\n parentItem = undefined;\n return;\n }\n\n parentItem = this.findById(parentModel.parentId);\n }\n\n var collapsed = comboModel.collapsed; // 该群组已经处于收起状态,需要展开\n\n if (collapsed) {\n this.expandCombo(combo);\n } else {\n this.collapseCombo(combo);\n }\n\n this.updateCombo(combo);\n };\n /**\n * 根据 comboTree 结构整理 Combo 相关的图形绘制层级,包括 Combo 本身、节点、边\n * @param {GraphData} data 数据\n */\n\n\n AbstractGraph.prototype.sortCombos = function () {\n var _this = this;\n\n var comboSorted = this.get('comboSorted');\n if (comboSorted) return;\n this.set('comboSorted', true);\n var depthMap = [];\n var dataDepthMap = {};\n var comboTrees = this.get('comboTrees');\n (comboTrees || []).forEach(function (cTree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(cTree, function (child) {\n if (depthMap[child.depth]) depthMap[child.depth].push(child.id);else depthMap[child.depth] = [child.id];\n dataDepthMap[child.id] = child.depth;\n return true;\n });\n });\n var edges = this.getEdges().concat(this.get('vedges'));\n (edges || []).forEach(function (edgeItem) {\n var edge = edgeItem.getModel();\n var sourceDepth = dataDepthMap[edge.source] || 0;\n var targetDepth = dataDepthMap[edge.target] || 0;\n var depth = Math.max(sourceDepth, targetDepth);\n if (depthMap[depth]) depthMap[depth].push(edge.id);else depthMap[depth] = [edge.id];\n });\n depthMap.forEach(function (array) {\n if (!array || !array.length) return;\n\n for (var i = array.length - 1; i >= 0; i--) {\n var item = _this.findById(array[i]);\n\n if (item) item.toFront();\n }\n });\n };\n /**\n * 获取节点所有的邻居节点\n *\n * @param {(string | INode)} node 节点 ID 或实例\n * @returns {INode[]}\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getNeighbors = function (node, type) {\n var item = node;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(node)) {\n item = this.findById(node);\n }\n\n return item.getNeighbors(type);\n };\n /**\n * 获取 node 的度数\n *\n * @param {(string | INode)} node 节点 ID 或实例\n * @param {('in' | 'out' | 'total' | 'all' | undefined)} 度数类型,in 入度,out 出度,total 总度数,all 返回三种类型度数的对象\n * @returns {Number | Object} 该节点的度数\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getNodeDegree = function (node, type, refresh) {\n if (type === void 0) {\n type = undefined;\n }\n\n if (refresh === void 0) {\n refresh = false;\n }\n\n var item = node;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(node)) {\n item = this.findById(node);\n }\n\n var degrees = this.get('degrees');\n\n if (!degrees || refresh) {\n degrees = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getDegree\"])(this.save());\n this.set('degrees', degrees);\n }\n\n var nodeDegrees = degrees[item.getID()];\n var res = 0; // 如果是通过 addItem 后面新增加的节点,此时它的所有度数都为 0\n\n if (!nodeDegrees) {\n return 0;\n }\n\n switch (type) {\n case 'in':\n res = nodeDegrees.inDegree;\n break;\n\n case 'out':\n res = nodeDegrees.outDegree;\n break;\n\n case 'all':\n res = nodeDegrees;\n break;\n\n default:\n res = nodeDegrees.degree;\n break;\n }\n\n return res;\n };\n\n AbstractGraph.prototype.getUndoStack = function () {\n return this.undoStack;\n };\n\n AbstractGraph.prototype.getRedoStack = function () {\n return this.redoStack;\n };\n /**\n * 获取 undo 和 redo 栈的数据\n */\n\n\n AbstractGraph.prototype.getStackData = function () {\n if (!this.get('enabledStack')) {\n return null;\n }\n\n return {\n undoStack: this.undoStack.toArray(),\n redoStack: this.redoStack.toArray()\n };\n };\n /**\n * 清空 undo stack & redo stack\n */\n\n\n AbstractGraph.prototype.clearStack = function () {\n if (this.get('enabledStack')) {\n this.undoStack.clear();\n this.redoStack.clear();\n }\n };\n /**\n * 将操作类型和操作数据入栈\n * @param action 操作类型\n * @param data 入栈的数据\n * @param stackType 栈的类型\n */\n\n\n AbstractGraph.prototype.pushStack = function (action, data, stackType) {\n if (action === void 0) {\n action = 'update';\n }\n\n if (stackType === void 0) {\n stackType = 'undo';\n }\n\n if (!this.get('enabledStack')) {\n console.warn('请先启用 undo & redo 功能,在实例化 Graph 时候配置 enabledStack: true !');\n return;\n }\n\n var stackData = data ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(data) : {\n before: {},\n after: Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(this.save())\n };\n\n if (stackType === 'redo') {\n this.redoStack.push({\n action: action,\n data: stackData\n });\n } else {\n this.undoStack.push({\n action: action,\n data: stackData\n });\n }\n\n this.emit('stackchange', {\n undoStack: this.undoStack,\n redoStack: this.redoStack\n });\n };\n /**\n * 获取邻接矩阵\n *\n * @param {boolean} cache 是否使用缓存的\n * @param {boolean} directed 是否是有向图,默认取 graph.directed\n * @returns {Matrix} 邻接矩阵\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getAdjMatrix = function (cache, directed) {\n if (cache === void 0) {\n cache = true;\n }\n\n if (directed === undefined) directed = this.get('directed');\n var currentAdjMatrix = this.get('adjMatrix');\n\n if (!currentAdjMatrix || !cache) {\n currentAdjMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getAdjMatrix\"])(this.save(), directed);\n this.set('adjMatrix', currentAdjMatrix);\n }\n\n return currentAdjMatrix;\n };\n /**\n * 获取最短路径矩阵\n *\n * @param {boolean} cache 是否使用缓存的\n * @param {boolean} directed 是否是有向图,默认取 graph.directed\n * @returns {Matrix} 最短路径矩阵\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getShortestPathMatrix = function (cache, directed) {\n if (cache === void 0) {\n cache = true;\n }\n\n if (directed === undefined) directed = this.get('directed');\n var currentAdjMatrix = this.get('adjMatrix');\n var currentShourtestPathMatrix = this.get('shortestPathMatrix');\n\n if (!currentAdjMatrix || !cache) {\n currentAdjMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getAdjMatrix\"])(this.save(), directed);\n this.set('adjMatrix', currentAdjMatrix);\n }\n\n if (!currentShourtestPathMatrix || !cache) {\n currentShourtestPathMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"floydWarshall\"])(this.save(), directed);\n this.set('shortestPathMatrix', currentShourtestPathMatrix);\n }\n\n return currentShourtestPathMatrix;\n };\n /**\n * 重新定义监听函数,复写参数类型\n */\n\n\n AbstractGraph.prototype.on = function (eventName, callback, once) {\n return _super.prototype.on.call(this, eventName, callback, once);\n };\n /**\n * 销毁画布\n */\n\n\n AbstractGraph.prototype.destroy = function () {\n var _a, _b, _c, _d, _e;\n\n this.clear(); // 清空栈数据\n\n this.clearStack();\n (_a = this.get('itemController')) === null || _a === void 0 ? void 0 : _a.destroy();\n (_b = this.get('modeController')) === null || _b === void 0 ? void 0 : _b.destroy();\n (_c = this.get('viewController')) === null || _c === void 0 ? void 0 : _c.destroy();\n (_d = this.get('stateController')) === null || _d === void 0 ? void 0 : _d.destroy();\n (_e = this.get('canvas')) === null || _e === void 0 ? void 0 : _e.destroy();\n this.cfg = null;\n this.destroyed = true;\n this.redoStack = null;\n this.undoStack = null;\n };\n /**\n * 创建凸包或凹包轮廓\n * @param cfg HullCfg 轮廓配置项\n */\n\n\n AbstractGraph.prototype.createHull = function (cfg) {\n if (!cfg.members || cfg.members.length < 1) {\n console.warn('Create hull failed! The members is empty.');\n return;\n }\n\n var parent = this.get('hullGroup');\n var hullMap = this.get('hullMap');\n\n if (!hullMap) {\n hullMap = {};\n this.set('hullMap', hullMap);\n }\n\n if (!parent || parent.get('destroyed')) {\n parent = this.get('group').addGroup({\n id: 'hullGroup'\n });\n parent.toBack();\n this.set('hullGroup', parent);\n }\n\n if (hullMap[cfg.id]) {\n console.warn('Existed hull id.');\n return hullMap[cfg.id];\n }\n\n var group = parent.addGroup({\n id: \"\".concat(cfg.id, \"-container\")\n });\n var hull = new _item_hull__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg), {\n group: group\n }));\n var hullId = hull.id;\n hullMap[hullId] = hull;\n return hull;\n };\n /**\n * 获取当前 graph 中存在的包裹轮廓\n * @return {[key: string]: Hull} Hull 的 map,hullId 对应的 hull 实例\n */\n\n\n AbstractGraph.prototype.getHulls = function () {\n return this.get('hullMap');\n };\n /**\n * 根据 hullId 获取对应的 hull\n * @return Hull\n */\n\n\n AbstractGraph.prototype.getHullById = function (hullId) {\n return this.get('hullMap')[hullId];\n };\n\n AbstractGraph.prototype.removeHull = function (hull) {\n var _a;\n\n var hullInstance;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(hull)) {\n hullInstance = this.getHullById(hull);\n } else {\n hullInstance = hull;\n }\n\n (_a = this.get('hullMap')) === null || _a === void 0 ? true : delete _a[hullInstance.id];\n hullInstance.destroy();\n };\n\n AbstractGraph.prototype.removeHulls = function () {\n var hulls = this.getHulls();\n if (!hulls || !Object.keys(hulls).length) return;\n Object.keys(hulls).forEach(function (key) {\n var hull = hulls[key];\n hull.destroy();\n });\n this.set('hullMap', {});\n };\n\n return AbstractGraph;\n}(_antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractGraph);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9ncmFwaC5qcz84NmY4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyRDtBQUNaO0FBQ1A7QUFDbUM7QUFDMEI7QUFDM0Q7QUFDZ0M7QUFDM0M7QUFDZ0U7QUFDSztBQUNwRTtBQUNoQyxnQkFBZ0IscURBQUc7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBOztBQUVBLGdCQUFnQiwwREFBTzs7QUFFdkI7O0FBRUE7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQSw0QkFBNEIscURBQUs7QUFDakMsNEJBQTRCLHFEQUFLO0FBQ2pDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7O0FBRXRCLDZCQUE2QiwwREFBYztBQUMzQyw2QkFBNkIsMERBQWM7QUFDM0MsNkJBQTZCLDBEQUFjO0FBQzNDLDhCQUE4QiwyREFBZTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU87QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU87QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsK0NBQU07QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7O0FBRWQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEIscUJBQXFCO0FBQ3JCLGdCQUFnQjtBQUNoQixxQkFBcUI7QUFDckI7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwrQkFBK0I7QUFDdEQscUJBQXFCO0FBQ3JCLFdBQVc7QUFDWDtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EseUJBQXlCOztBQUV6QjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLFFBQVEsZ0VBQWE7QUFDckIsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsWUFBWTtBQUN6QixhQUFhLFNBQVM7QUFDdEI7OztBQUdBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGVBQWU7QUFDL0I7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQyxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBLE1BQU07QUFDTixhQUFhLFNBQVM7QUFDdEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLDhCQUE4QjtBQUMzQyxjQUFjLEVBQUU7QUFDaEI7OztBQUdBO0FBQ0E7QUFDQSwrQ0FBK0M7O0FBRS9DLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxzQkFBc0Isd0RBQUs7O0FBRTNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLG1CQUFtQjtBQUNoQzs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQix3REFBSzs7QUFFdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQLE1BQU0sdURBQUk7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsbUJBQW1CO0FBQ2hDOzs7QUFHQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsYUFBYTtBQUMxQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpQ0FBaUM7QUFDOUMsYUFBYSxrQkFBa0I7QUFDL0IsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUNBQWlDO0FBQzlDLGFBQWEsa0JBQWtCO0FBQy9CLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLCtCQUErQjtBQUM1QyxhQUFhLGtCQUFrQjtBQUMvQixjQUFjLE1BQU07QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLG1CQUFtQjtBQUNoQyxjQUFjLFFBQVE7QUFDdEI7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0Esd0JBQXdCLHdEQUFLOztBQUU3QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxzQkFBc0IsdURBQUk7O0FBRTFCO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkIsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsbUJBQW1CO0FBQ2hDLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQixhQUFhLG1CQUFtQjtBQUNoQzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxjQUFjO0FBQzNCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSwyREFBUTs7QUFFaEIscUJBQXFCLDJEQUFRO0FBQzdCO0FBQ0EsS0FBSztBQUNMO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBLDJCQUEyQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDL0M7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0Q0FBNEMsUUFBUTtBQUNwRCxrQ0FBa0Msc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3REO0FBQ0EsaUJBQWlCO0FBQ2pCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLHFFQUFlO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLFlBQVk7QUFDekIsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQixjQUFjLEtBQUs7QUFDbkI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0RBQW9EOztBQUVwRCxTQUFTLDZFQUFvQjtBQUM3QjtBQUNBOztBQUVBO0FBQ0EscUhBQXFILFlBQVk7QUFDakk7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDLFFBQVEsb0VBQWM7QUFDdEI7QUFDQTtBQUNBOztBQUVBLDJCQUEyQixzREFBUTtBQUNuQztBQUNBO0FBQ0EsYUFBYTs7QUFFYiw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBOztBQUVBLDhDQUE4Qzs7QUFFOUM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRTs7QUFFVDtBQUNBLHVCQUF1QixzREFBUTtBQUMvQjtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUssNkJBQTZCLDJEQUFRO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlEOztBQUVqRCxRQUFRLG9FQUFjO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHdEQUFLO0FBQ2pDO0FBQ0EsK0RBQStEO0FBQy9EO0FBQ0EsV0FBVzs7O0FBR1g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQSxPQUFPOztBQUVQOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxVQUFVO0FBQ3ZCLGFBQWEsWUFBWTtBQUN6QixhQUFhLFFBQVE7QUFDckIsY0FBYyxLQUFLO0FBQ25COzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxpQ0FBaUM7QUFDOUM7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLHdCQUF3Qix3REFBSztBQUM3QjtBQUNBOztBQUVBLGlCQUFpQiwyREFBYTs7QUFFOUI7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7O0FBRUE7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0RBQVE7QUFDL0I7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxpQ0FBaUM7QUFDOUMsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLE9BQU87QUFDcEIsYUFBYSxpQkFBaUI7QUFDOUI7OztBQUdBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxVQUFVO0FBQ3ZCOzs7QUFHQTtBQUNBLElBQUksdUVBQWM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSx1QkFBdUIsd0VBQWtCO0FBQ3pDLHlDQUF5Qzs7QUFFekM7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMEJBQTBCO0FBQ3ZDLGFBQWEsUUFBUTtBQUNyQixjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLFNBQVMsdUVBQWM7QUFDdkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxtQ0FBbUM7O0FBRW5DLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsd0VBQWtCO0FBQ3pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7O0FBRUEsa0NBQWtDLFFBQVE7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSx1REFBSTtBQUNSOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLGlDQUFpQzs7QUFFakM7QUFDQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQSxNQUFNLG9FQUFjO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdCQUF3QjtBQUNyQzs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsTUFBTSxvRUFBYztBQUNwQixlQUFlOzs7QUFHZjtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTOzs7QUFHVDtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxXQUFXOzs7QUFHWDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQSxhQUFhO0FBQ2I7QUFDQSw0Q0FBNEM7QUFDNUM7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBOztBQUVBOztBQUVBLG1DQUFtQzs7QUFFbkMsa0NBQWtDOztBQUVsQztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLG9FQUFjO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCLDJEQUFhOztBQUVwQyxVQUFVLHVEQUFJO0FBQ2Q7QUFDQSxXQUFXLEVBQUU7O0FBRWIsZ0VBQWdFOztBQUVoRSxVQUFVLHVEQUFJO0FBQ2Q7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxnQkFBZ0I7QUFDN0I7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxvRUFBYztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QiwyREFBYSxrQ0FBa0M7OztBQUd0RSxVQUFVLHVEQUFJO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFOztBQUViLGdFQUFnRTs7QUFFaEUsVUFBVSx1REFBSTtBQUNkO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdCQUF3QjtBQUNyQyxhQUFhLG1CQUFtQjtBQUNoQzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsa0VBQVk7QUFDcEIsb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1QsT0FBTyxFQUFFOztBQUVULE1BQU0sa0VBQVk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLHFFQUFlO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTCxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1AsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxvQ0FBb0M7QUFDcEM7O0FBRUEsV0FBVyxnRUFBYTtBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQjs7QUFFdEI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsbUJBQW1CO0FBQ2hDLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0JBQWdCO0FBQzdCOzs7QUFHQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDOztBQUVoQywyREFBMkQ7O0FBRTNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCLE1BQU0sa0VBQVk7QUFDbEI7QUFDQSxxRUFBcUU7O0FBRXJFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLCtFQUErRTs7QUFFL0U7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLCtFQUErRTs7QUFFL0U7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBYSxnQkFBZ0I7QUFDN0I7OztBQUdBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDLDJEQUEyRDs7QUFFM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEIsTUFBTSxrRUFBWTtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQjtBQUNuQjs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0Esa0VBQWtFO0FBQ2xFOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNENBQTRDOztBQUU1QztBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGtFQUFrRTtBQUNsRTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQzs7QUFFdEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEseUNBQXlDOztBQUV6QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFVBQVU7QUFDdkI7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGtFQUFZO0FBQ2xCLHdFQUF3RTtBQUN4RTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQsS0FBSztBQUNMO0FBQ0E7O0FBRUEsb0NBQW9DLFFBQVE7QUFDNUM7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUJBQWlCO0FBQzlCLGVBQWU7QUFDZjtBQUNBOzs7QUFHQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpQkFBaUI7QUFDOUIsYUFBYSw2Q0FBNkM7QUFDMUQsZUFBZSxnQkFBZ0I7QUFDL0I7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGdCQUFnQixpRUFBUztBQUN6QjtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQix3REFBSztBQUNoQyxnQkFBZ0I7QUFDaEIsYUFBYSx3REFBSztBQUNsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsb0VBQWlCO0FBQzFDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QixvRUFBaUI7QUFDMUM7QUFDQTs7QUFFQTtBQUNBLG1DQUFtQyxxRUFBYTtBQUNoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxtQkFBbUIsbURBQUksT0FBTyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbEQ7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxvQkFBb0I7QUFDbEM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCwwQkFBMEI7QUFDMUI7O0FBRUE7QUFDQSxDQUFDLENBQUMsMkRBQVk7O0FBRUMsNEVBQWEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9ncmFwaC9ncmFwaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMsIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSAnQGFudHYvZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgeyBleHQgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyBjbG9uZSwgZGVlcE1peCwgZWFjaCwgaXNQbGFpbk9iamVjdCwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGdldERlZ3JlZSwgZ2V0QWRqTWF0cml4IGFzIGdldEFkamFjZW50TWF0cml4LCBTdGFjaywgZmxveWRXYXJzaGFsbCB9IGZyb20gJ0BhbnR2L2FsZ29yaXRobSc7XG5pbXBvcnQgeyBsZXJwLCBtb3ZlIH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCB7IGRhdGFWYWxpZGF0aW9uLCBzaW5nbGVEYXRhVmFsaWRhdGlvbiB9IGZyb20gJy4uL3V0aWwvdmFsaWRhdGlvbic7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5pbXBvcnQgeyBJdGVtQ29udHJvbGxlciwgTW9kZUNvbnRyb2xsZXIsIFN0YXRlQ29udHJvbGxlciwgVmlld0NvbnRyb2xsZXIgfSBmcm9tICcuL2NvbnRyb2xsZXInO1xuaW1wb3J0IHsgcGxhaW5Db21ib3NUb1RyZWVzLCB0cmF2ZXJzZVRyZWUsIHJlY29uc3RydWN0VHJlZSwgdHJhdmVyc2VUcmVlVXAgfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IEh1bGwgZnJvbSAnLi4vaXRlbS9odWxsJztcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xudmFyIE5PREUgPSAnbm9kZSc7XG5cbnZhciBBYnN0cmFjdEdyYXBoID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKEFic3RyYWN0R3JhcGgsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gQWJzdHJhY3RHcmFwaChjZmcpIHtcbiAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuXG4gICAgX3RoaXMuY2ZnID0gZGVlcE1peChfdGhpcy5nZXREZWZhdWx0Q2ZnKCksIGNmZyk7XG5cbiAgICBfdGhpcy5pbml0KCk7XG5cbiAgICBfdGhpcy5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICBfdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTsgLy8g5ZCv55SoIHN0YWNrIOWQju+8jOWunuS+i+WMliB1bmRvU3RhY2sg5ZKMIHJlZG9TdGFja1xuXG4gICAgaWYgKF90aGlzLmNmZy5lbmFibGVkU3RhY2spIHtcbiAgICAgIC8vIOWunuS+i+WMliB1bmRvIOWSjCByZWRvIOagiFxuICAgICAgX3RoaXMudW5kb1N0YWNrID0gbmV3IFN0YWNrKF90aGlzLmNmZy5tYXhTdGVwKTtcbiAgICAgIF90aGlzLnJlZG9TdGFjayA9IG5ldyBTdGFjayhfdGhpcy5jZmcubWF4U3RlcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmluaXRDYW52YXMoKTsgLy8gaW5zdGFuY2UgY29udHJvbGxlclxuXG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gbmV3IFZpZXdDb250cm9sbGVyKHRoaXMpO1xuICAgIHZhciBtb2RlQ29udHJvbGxlciA9IG5ldyBNb2RlQ29udHJvbGxlcih0aGlzKTtcbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSBuZXcgSXRlbUNvbnRyb2xsZXIodGhpcyk7XG4gICAgdmFyIHN0YXRlQ29udHJvbGxlciA9IG5ldyBTdGF0ZUNvbnRyb2xsZXIodGhpcyk7XG4gICAgdGhpcy5zZXQoe1xuICAgICAgdmlld0NvbnRyb2xsZXI6IHZpZXdDb250cm9sbGVyLFxuICAgICAgbW9kZUNvbnRyb2xsZXI6IG1vZGVDb250cm9sbGVyLFxuICAgICAgaXRlbUNvbnRyb2xsZXI6IGl0ZW1Db250cm9sbGVyLFxuICAgICAgc3RhdGVDb250cm9sbGVyOiBzdGF0ZUNvbnRyb2xsZXJcbiAgICB9KTsgLy8g5Yid5aeL5YyW5biD5bGA5py65Yi2XG5cbiAgICB0aGlzLmluaXRMYXlvdXRDb250cm9sbGVyKCk7IC8vIOWIneWni+WMluS6i+S7tuacuuWItlxuXG4gICAgdGhpcy5pbml0RXZlbnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5pbml0R3JvdXBzKCk7XG4gICAgLyoqIOWIneWni+WMluaPkuS7tiAqL1xuXG4gICAgdGhpcy5pbml0UGx1Z2lucygpO1xuICB9OyAvLyDliJ3lp4vljJbmiYDmnIkgR3JvdXBcblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmluaXRHcm91cHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICBpZiAoIWNhbnZhcykgcmV0dXJuO1xuICAgIHZhciBlbCA9IGNhbnZhcy5nZXQoJ2VsJyk7XG4gICAgdmFyIF9hID0gKGVsIHx8IHt9KS5pZCxcbiAgICAgICAgaWQgPSBfYSA9PT0gdm9pZCAwID8gJ2c2JyA6IF9hO1xuICAgIHZhciBncm91cCA9IGNhbnZhcy5hZGRHcm91cCh7XG4gICAgICBpZDogXCJcIi5jb25jYXQoaWQsIFwiLXJvb3RcIiksXG4gICAgICBjbGFzc05hbWU6IEdsb2JhbC5yb290Q29udGFpbmVyQ2xhc3NOYW1lXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5nZXQoJ2dyb3VwQnlUeXBlcycpKSB7XG4gICAgICB2YXIgZWRnZUdyb3VwID0gZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgICBpZDogXCJcIi5jb25jYXQoaWQsIFwiLWVkZ2VcIiksXG4gICAgICAgIGNsYXNzTmFtZTogR2xvYmFsLmVkZ2VDb250YWluZXJDbGFzc05hbWVcbiAgICAgIH0pO1xuICAgICAgdmFyIG5vZGVHcm91cCA9IGdyb3VwLmFkZEdyb3VwKHtcbiAgICAgICAgaWQ6IFwiXCIuY29uY2F0KGlkLCBcIi1ub2RlXCIpLFxuICAgICAgICBjbGFzc05hbWU6IEdsb2JhbC5ub2RlQ29udGFpbmVyQ2xhc3NOYW1lXG4gICAgICB9KTtcbiAgICAgIHZhciBjb21ib0dyb3VwID0gZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgICBpZDogXCJcIi5jb25jYXQoaWQsIFwiLWNvbWJvXCIpLFxuICAgICAgICBjbGFzc05hbWU6IEdsb2JhbC5jb21ib0NvbnRhaW5lckNsYXNzTmFtZVxuICAgICAgfSk7IC8vIOeUqOS6juWtmOWCqOiHquWumuS5ieeahOe+pOe7hFxuXG4gICAgICBjb21ib0dyb3VwLnRvQmFjaygpO1xuICAgICAgdGhpcy5zZXQoe1xuICAgICAgICBub2RlR3JvdXA6IG5vZGVHcm91cCxcbiAgICAgICAgZWRnZUdyb3VwOiBlZGdlR3JvdXAsXG4gICAgICAgIGNvbWJvR3JvdXA6IGNvbWJvR3JvdXBcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBkZWxlZ2F0ZUdyb3VwID0gZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgaWQ6IFwiXCIuY29uY2F0KGlkLCBcIi1kZWxlZ2F0ZVwiKSxcbiAgICAgIGNsYXNzTmFtZTogR2xvYmFsLmRlbGVnYXRlQ29udGFpbmVyQ2xhc3NOYW1lXG4gICAgfSk7XG4gICAgdGhpcy5zZXQoe1xuICAgICAgZGVsZWdhdGVHcm91cDogZGVsZWdhdGVHcm91cFxuICAgIH0pO1xuICAgIHRoaXMuc2V0KCdncm91cCcsIGdyb3VwKTtcbiAgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8qKlxuICAgICAgICogQ29udGFpbmVyIGNvdWxkIGJlIGRvbSBvYmplY3Qgb3IgZG9tIGlkXG4gICAgICAgKi9cbiAgICAgIGNvbnRhaW5lcjogdW5kZWZpbmVkLFxuXG4gICAgICAvKipcbiAgICAgICAqIENhbnZhcyB3aWR0aFxuICAgICAgICogdW5pdCBwaXhlbCBpZiB1bmRlZmluZWQgZm9yY2UgZml0IHdpZHRoXG4gICAgICAgKi9cbiAgICAgIHdpZHRoOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICogQ2FudmFzIGhlaWdodFxuICAgICAgICogdW5pdCBwaXhlbCBpZiB1bmRlZmluZWQgZm9yY2UgZml0IGhlaWdodFxuICAgICAgICovXG4gICAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcblxuICAgICAgLyoqXG4gICAgICAgKiByZW5kZXJlciBjYW52YXMgb3Igc3ZnXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICovXG4gICAgICByZW5kZXJlcjogJ2NhbnZhcycsXG5cbiAgICAgIC8qKlxuICAgICAgICogY29udHJvbCBncmFwaCBiZWhhdmlvcnNcbiAgICAgICAqL1xuICAgICAgbW9kZXM6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIOazqOWGjOaPkuS7tlxuICAgICAgICovXG4gICAgICBwbHVnaW5zOiBbXSxcblxuICAgICAgLyoqXG4gICAgICAgKiBzb3VyY2UgZGF0YVxuICAgICAgICovXG4gICAgICBkYXRhOiB7fSxcblxuICAgICAgLyoqXG4gICAgICAgKiBGaXQgdmlldyBwYWRkaW5nIChjbGllbnQgc2NhbGUpXG4gICAgICAgKi9cbiAgICAgIGZpdFZpZXdQYWRkaW5nOiAxMCxcblxuICAgICAgLyoqXG4gICAgICAgKiBNaW5pbXVtIHNjYWxlIHNpemVcbiAgICAgICAqL1xuICAgICAgbWluWm9vbTogMC4yLFxuXG4gICAgICAvKipcbiAgICAgICAqIE1heG11bSBzY2FsZSBzaXplXG4gICAgICAgKi9cbiAgICAgIG1heFpvb206IDEwLFxuXG4gICAgICAvKipcbiAgICAgICAqICBjYXB0dXJlIGV2ZW50c1xuICAgICAgICovXG4gICAgICBldmVudDogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBncm91cCBub2RlICYgZWRnZXMgaW50byBkaWZmZXJlbnQgZ3JhcGhpYyBncm91cHNcbiAgICAgICAqL1xuICAgICAgZ3JvdXBCeVR5cGVzOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIGRldGVybWluZSBpZiBpdCdzIGEgZGlyZWN0ZWQgZ3JhcGhcbiAgICAgICAqL1xuICAgICAgZGlyZWN0ZWQ6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIHdoZW4gZGF0YSBvciBzaGFwZSBjaGFuZ2VkLCBzaG91bGQgY2FudmFzIGRyYXcgYXV0b21hdGljYWxseVxuICAgICAgICovXG4gICAgICBhdXRvUGFpbnQ6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogc3RvcmUgYWxsIHRoZSBub2RlIGluc3RhbmNlc1xuICAgICAgICovXG4gICAgICBub2RlczogW10sXG5cbiAgICAgIC8qKlxuICAgICAgICogc3RvcmUgYWxsIHRoZSBlZGdlIGluc3RhbmNlc1xuICAgICAgICovXG4gICAgICBlZGdlczogW10sXG5cbiAgICAgIC8qKlxuICAgICAgICogc3RvcmUgYWxsIHRoZSBjb21ibyBpbnN0YW5jZXNcbiAgICAgICAqL1xuICAgICAgY29tYm9zOiBbXSxcblxuICAgICAgLyoqXG4gICAgICAgKiBzdG9yZSBhbGwgdGhlIGVkZ2UgaW5zdGFuY2VzIHdoaWNoIGFyZSB2aXJ0dWFsIGVkZ2VzIHJlbGF0ZWQgdG8gY29sbGFwc2VkIGNvbWJvXG4gICAgICAgKi9cbiAgICAgIHZlZGdlczogW10sXG5cbiAgICAgIC8qKlxuICAgICAgICogYWxsIHRoZSBpbnN0YW5jZXMgaW5kZXhlZCBieSBpZFxuICAgICAgICovXG4gICAgICBpdGVtTWFwOiB7fSxcblxuICAgICAgLyoqXG4gICAgICAgKiDovrnnm7TmjqXov57mjqXliLDoioLngrnnmoTkuK3lv4PvvIzkuI3lho3ogIPomZHplJrngrlcbiAgICAgICAqL1xuICAgICAgbGlua0NlbnRlcjogZmFsc2UsXG5cbiAgICAgIC8qKlxuICAgICAgICog6buY6K6k55qE6IqC54K56YWN572u77yMZGF0YSDkuIrlrprkuYnnmoTphY3nva7kvJropobnm5bov5nkupvphY3nva7jgILkvovlpoLvvJpcbiAgICAgICAqIGRlZmF1bHROb2RlOiB7XG4gICAgICAgKiAgdHlwZTogJ3JlY3QnLFxuICAgICAgICogIHNpemU6IFs2MCwgNDBdLFxuICAgICAgICogIHN0eWxlOiB7XG4gICAgICAgKiAgICAvLy4uLiDmoLflvI/phY3nva7poblcbiAgICAgICAqICB9XG4gICAgICAgKiB9XG4gICAgICAgKiDoi6XmlbDmja7pobnkuLogeyBpZDogJ25vZGUnLCB4OiAxMDAsIHk6IDEwMCB9XG4gICAgICAgKiDlrp7pmYXliJvlu7rnmoToioLngrnmqKHlnovmmK8geyBpZDogJ25vZGUnLCB4OiAxMDAsIHk6IDEwMO+8jCB0eXBlOiAncmVjdCcsIHNpemU6IFs2MCwgNDBdIH1cbiAgICAgICAqIOiLpeaVsOaNrumhueS4uiB7IGlkOiAnbm9kZScsIHg6IDEwMCwgeTogMTAwLCB0eXBlOiAnY2lyY2xlJyB9XG4gICAgICAgKiDlrp7pmYXliJvlu7rnmoToioLngrnmqKHlnovmmK8geyBpZDogJ25vZGUnLCB4OiAxMDAsIHk6IDEwMO+8jCB0eXBlOiAnY2lyY2xlJywgc2l6ZTogWzYwLCA0MF0gfVxuICAgICAgICovXG4gICAgICBkZWZhdWx0Tm9kZToge30sXG5cbiAgICAgIC8qKlxuICAgICAgICog6buY6K6k6L656YWN572u77yMZGF0YSDkuIrlrprkuYnnmoTphY3nva7kvJropobnm5bov5nkupvphY3nva7jgILnlKjms5XlkIwgZGVmYXVsdE5vZGVcbiAgICAgICAqL1xuICAgICAgZGVmYXVsdEVkZ2U6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIOiKgueCuem7mOiupOagt+W8j++8jOS5n+WPr+S7pea3u+WKoOeKtuaAgeagt+W8j1xuICAgICAgICog5L6L5aaC77yaXG4gICAgICAgKiBjb25zdCBncmFwaCA9IG5ldyBHNi5HcmFwaCh7XG4gICAgICAgKiAgbm9kZVN0YXRlU3R5bGVzOiB7XG4gICAgICAgKiAgICBzZWxlY3RlZDogeyBmaWxsOiAnI2NjYycsIHN0cm9rZTogJyM2NjYnIH0sXG4gICAgICAgKiAgICBhY3RpdmU6IHsgbGluZVdpZHRoOiAyIH1cbiAgICAgICAqICB9LFxuICAgICAgICogIC4uLlxuICAgICAgICogfSk7XG4gICAgICAgKlxuICAgICAgICovXG4gICAgICBub2RlU3RhdGVTdHlsZXM6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIOi+uem7mOiupOagt+W8j++8jOeUqOazleWQjG5vZGVTdGF0ZVN0eWxlXG4gICAgICAgKi9cbiAgICAgIGVkZ2VTdGF0ZVN0eWxlczoge30sXG5cbiAgICAgIC8qKlxuICAgICAgICogZ3JhcGgg54q25oCBXG4gICAgICAgKi9cbiAgICAgIHN0YXRlczoge30sXG5cbiAgICAgIC8qKlxuICAgICAgICog5piv5ZCm5ZCv55So5YWo5bGA5Yqo55S7XG4gICAgICAgKi9cbiAgICAgIGFuaW1hdGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIOWKqOeUu+iuvue9rizku4XlnKggYW5pbWF0ZSDkuLogdHJ1ZSDml7bmnInmlYhcbiAgICAgICAqL1xuICAgICAgYW5pbWF0ZUNmZzoge1xuICAgICAgICAvKipcbiAgICAgICAgICog5bin5Zue6LCD5Ye95pWw77yM55So5LqO6Ieq5a6a5LmJ6IqC54K56L+Q5Yqo6Lev5b6E77yM5Li656m65pe257q/5oCn6L+Q5YqoXG4gICAgICAgICAqL1xuICAgICAgICBvbkZyYW1lOiB1bmRlZmluZWQsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIOWKqOeUu+aXtumVvyhtcylcbiAgICAgICAgICovXG4gICAgICAgIGR1cmF0aW9uOiA1MDAsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaMh+WumuWKqOeUu+WKqOaViFxuICAgICAgICAgKi9cbiAgICAgICAgZWFzaW5nOiAnZWFzZUxpbmVhcidcbiAgICAgIH0sXG4gICAgICBjYWxsYmFjazogdW5kZWZpbmVkLFxuICAgICAgLy8g6buY6K6k5LiN5ZCv55SoIHVuZG8gJiByZWRvIOWKn+iDvVxuICAgICAgZW5hYmxlZFN0YWNrOiBmYWxzZSxcbiAgICAgIC8vIOWPquacieW9kyBlbmFibGVkU3RhY2sg5Li6IHRydWUg5pe25omN6LW35L2c55SoXG4gICAgICBtYXhTdGVwOiAxMCxcbiAgICAgIC8vIOWtmOWCqOWbvuS4iueahCB0b29sdGlwIGRvbe+8jOaWueS+v+mUgOavgVxuICAgICAgdG9vbHRpcHM6IFtdXG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWAvOiuvue9ruWIsCB0aGlzLmNmZyDlj5jph4/kuIrpnaJcbiAgICogQHBhcmFtIGtleSDplK4g5oiWIOWvueixoeWAvFxuICAgKiBAcGFyYW0gdmFsIOWAvFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbCkge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGtleSkpIHtcbiAgICAgIHRoaXMuY2ZnID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMuY2ZnKSwga2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jZmdba2V5XSA9IHZhbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliB0aGlzLmNmZyDkuK3nmoTlgLxcbiAgICogQHBhcmFtIGtleSDplK5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIF9hO1xuXG4gICAgcmV0dXJuIChfYSA9IHRoaXMuY2ZnKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Fba2V5XTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBncmFwaCDnmoTmoLnlm77lvaLliIbnu4RcbiAgICogQHJldHVybiDmoLkgZ3JvdXBcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRHcm91cCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgZ3JhcGgg55qEIERPTSDlrrnlmahcbiAgICogQHJldHVybiBET00g5a655ZmoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgZ3JhcGgg55qE5pyA5bCP57yp5pS+5q+U5L6LXG4gICAqIEByZXR1cm4gbWluWm9vbVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldE1pblpvb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdtaW5ab29tJyk7XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva4gZ3JhcGgg55qE5pyA5bCP57yp5pS+5q+U5L6LXG4gICAqIEByZXR1cm4gbWluWm9vbVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnNldE1pblpvb20gPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICByZXR1cm4gdGhpcy5zZXQoJ21pblpvb20nLCByYXRpbyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgZ3JhcGgg55qE5pyA5aSn57yp5pS+5q+U5L6LXG4gICAqIEBwYXJhbSBtYXhab29tXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0TWF4Wm9vbSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ21heFpvb20nKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9riBncmFwaCDnmoTmnIDlpKfnvKnmlL7mr5TkvotcbiAgICogQHBhcmFtIG1heFpvb21cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zZXRNYXhab29tID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0KCdtYXhab29tJywgcmF0aW8pO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGdyYXBoIOeahOWuveW6plxuICAgKiBAcmV0dXJuIHdpZHRoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCd3aWR0aCcpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGdyYXBoIOeahOmrmOW6plxuICAgKiBAcmV0dXJuIHdpZHRoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaGVpZ2h0Jyk7XG4gIH07XG4gIC8qKlxuICAgKiDmuIXnkIblhYPntKDlpJrkuKrnirbmgIFcbiAgICogQHBhcmFtIHtzdHJpbmd8SXRlbX0gaXRlbSDlhYPntKBpZOaIluWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBzdGF0ZXMg54q25oCBXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY2xlYXJJdGVtU3RhdGVzID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlcykge1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgaXRlbSA9IHRoaXMuZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG5cbiAgICBpZiAoIXN0YXRlcykge1xuICAgICAgc3RhdGVzID0gaXRlbS5nZXQoJ3N0YXRlcycpO1xuICAgIH1cblxuICAgIGl0ZW1Db250cm9sbGVyLmNsZWFySXRlbVN0YXRlcyhpdGVtLCBzdGF0ZXMpO1xuICAgIHZhciBzdGF0ZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnc3RhdGVDb250cm9sbGVyJyk7XG4gICAgc3RhdGVDb250cm9sbGVyLnVwZGF0ZVN0YXRlcyhpdGVtLCBzdGF0ZXMsIGZhbHNlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWQhOS4quiKgueCueagt+W8j++8jOS7peWPiuWcqOWQhOenjeeKtuaAgeS4i+iKgueCuSBrZXlTaGFwZSDnmoTmoLflvI/jgIJcbiAgICog6Iul5piv6Ieq5a6a5LmJ6IqC54K55YiH5Zyo5ZCE56eN54q25oCB5LiLXG4gICAqIGdyYXBoLm5vZGUobm9kZSA9PiB7XG4gICAqICByZXR1cm4ge1xuICAgKiAgICB0eXBlOiAncmVjdCcsXG4gICAqICAgIGxhYmVsOiBub2RlLmlkLFxuICAgKiAgICBzdHlsZTogeyBmaWxsOiAnIzY2NicgfSxcbiAgICogICAgc3RhdGVTdHlsZXM6IHtcbiAgICogICAgICAgc2VsZWN0ZWQ6IHsgZmlsbDogJ2JsdWUnIH0sXG4gICAqICAgICAgIGN1c3RvbTogeyBmaWxsOiAnZ3JlZW4nIH1cbiAgICogICAgIH1cbiAgICogICB9XG4gICAqIH0pO1xuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBub2RlRm4g5oyH5a6a5q+P5Liq6IqC54K55qC35byPXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUubm9kZSA9IGZ1bmN0aW9uIChub2RlRm4pIHtcbiAgICBpZiAodHlwZW9mIG5vZGVGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5zZXQoJ25vZGVNYXBwZXInLCBub2RlRm4pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWQhOS4qui+ueagt+W8j1xuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBlZGdlRm4g5oyH5a6a5q+P5Liq6L6555qE5qC35byPLOeUqOazleWQjCBub2RlXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZWRnZSA9IGZ1bmN0aW9uIChlZGdlRm4pIHtcbiAgICBpZiAodHlwZW9mIGVkZ2VGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5zZXQoJ2VkZ2VNYXBwZXInLCBlZGdlRm4pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWQhOS4qiBjb21ibyDnmoTphY3nva5cbiAgICogQHBhcmFtIGNvbWJvRm5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5jb21ibyA9IGZ1bmN0aW9uIChjb21ib0ZuKSB7XG4gICAgaWYgKHR5cGVvZiBjb21ib0ZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLnNldCgnY29tYm9NYXBwZXInLCBjb21ib0ZuKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4gSUQg5p+l6K+i5Zu+5YWD57Sg5a6e5L6LXG4gICAqIEBwYXJhbSBpZCDlm77lhYPntKAgSURcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5maW5kQnlJZCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaXRlbU1hcCcpW2lkXTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNruWvueW6lOinhOWImeafpeaJvuWNleS4quWFg+e0oFxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlhYPntKDnsbvlnosobm9kZSB8IGVkZ2UgfCBncm91cClcbiAgICogQHBhcmFtIHsoaXRlbTogVCwgaW5kZXg6IG51bWJlcikgPT4gVH0gZm4g5oyH5a6a6KeE5YiZXG4gICAqIEByZXR1cm4ge1R9IOWFg+e0oOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAodHlwZSwgZm4pIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIHZhciBpdGVtcyA9IHRoaXMuZ2V0KFwiXCIuY29uY2F0KHR5cGUsIFwic1wiKSk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuXG4gICAgZWFjaChpdGVtcywgZnVuY3Rpb24gKGl0ZW0sIGkpIHtcbiAgICAgIGlmIChmbihpdGVtLCBpKSkge1xuICAgICAgICByZXN1bHQgPSBpdGVtO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIC8qKlxuICAgKiDmn6Xmib7miYDmnInmu6HotrPop4TliJnnmoTlhYPntKBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUg5YWD57Sg57G75Z6LKG5vZGV8ZWRnZSlcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZuIOaMh+WumuinhOWImVxuICAgKiBAcmV0dXJuIHthcnJheX0g5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZmluZEFsbCA9IGZ1bmN0aW9uICh0eXBlLCBmbikge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBlYWNoKHRoaXMuZ2V0KFwiXCIuY29uY2F0KHR5cGUsIFwic1wiKSksIGZ1bmN0aW9uIChpdGVtLCBpKSB7XG4gICAgICBpZiAoZm4oaXRlbSwgaSkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgLyoqXG4gICAqIOafpeaJvuaJgOacieWkhOS6juaMh+WumueKtuaAgeeahOWFg+e0oFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSDlhYPntKDnsbvlnosobm9kZXxlZGdlKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUg54q25oCBXG4gICAqIEByZXR1cm4ge29iamVjdH0g5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZmluZEFsbEJ5U3RhdGUgPSBmdW5jdGlvbiAodHlwZSwgc3RhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kQWxsKHR5cGUsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS5oYXNTdGF0ZShzdGF0ZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0QW5pbWF0ZUNmZ1dpdGhDYWxsYmFjayA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBhbmltYXRlQ2ZnID0gX2EuYW5pbWF0ZUNmZyxcbiAgICAgICAgY2FsbGJhY2sgPSBfYS5jYWxsYmFjaztcbiAgICB2YXIgYW5pbWF0ZUNvbmZpZztcblxuICAgIGlmICghYW5pbWF0ZUNmZykge1xuICAgICAgYW5pbWF0ZUNvbmZpZyA9IHtcbiAgICAgICAgZHVyYXRpb246IDUwMCxcbiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBhbmltYXRlQ29uZmlnID0gY2xvbmUoYW5pbWF0ZUNmZyk7XG5cbiAgICAgIGlmIChhbmltYXRlQ2ZnLmNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBhbmltYXRlQ2ZnQ2FsbGJhY2tfMSA9IGFuaW1hdGVDZmcuY2FsbGJhY2s7XG5cbiAgICAgICAgYW5pbWF0ZUNvbmZpZy5jYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgIGFuaW1hdGVDZmdDYWxsYmFja18xKCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbmltYXRlQ29uZmlnLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuaW1hdGVDb25maWc7XG4gIH07XG4gIC8qKlxuICAgKiDlubPnp7vnlLvluINcbiAgICogQHBhcmFtIGR4IOawtOW5s+aWueWQkeS9jeenu1xuICAgKiBAcGFyYW0gZHkg5Z6C55u05pa55ZCR5L2N56e7XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYW5pbWF0ZSDmmK/lkKbluKbmnInliqjnlLvlnLDnp7vliqhcbiAgICogQHBhcmFtIHtHcmFwaEFuaW1hdGVDb25maWd9IGFuaW1hdGVDZmcg6Iul5bim5pyJ5Yqo55S777yM5Yqo55S755qE6YWN572u6aG5XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKGR4LCBkeSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcbiAgICB2YXIgbWF0cml4ID0gY2xvbmUoZ3JvdXAuZ2V0TWF0cml4KCkpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBpZiAoYW5pbWF0ZSkge1xuICAgICAgdmFyIGFuaW1hdGVDb25maWcgPSB0aGlzLmdldEFuaW1hdGVDZmdXaXRoQ2FsbGJhY2soe1xuICAgICAgICBhbmltYXRlQ2ZnOiBhbmltYXRlQ2ZnLFxuICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gY2FsbGJhY2soKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLmVtaXQoJ3ZpZXdwb3J0Y2hhbmdlJywge1xuICAgICAgICAgICAgYWN0aW9uOiAndHJhbnNsYXRlJyxcbiAgICAgICAgICAgIG1hdHJpeDogZ3JvdXAuZ2V0TWF0cml4KClcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBtb3ZlKGdyb3VwLCB7XG4gICAgICAgIHg6IGdyb3VwLmdldENhbnZhc0JCb3goKS54ICsgZHgsXG4gICAgICAgIHk6IGdyb3VwLmdldENhbnZhc0JCb3goKS55ICsgZHlcbiAgICAgIH0sIGFuaW1hdGUsIGFuaW1hdGVDb25maWcgfHwge1xuICAgICAgICBkdXJhdGlvbjogNTAwLFxuICAgICAgICBlYXNpbmc6ICdlYXNlQ3ViaWMnXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sndCcsIGR4LCBkeV1dKTtcbiAgICAgIGdyb3VwLnNldE1hdHJpeChtYXRyaXgpO1xuICAgICAgdGhpcy5lbWl0KCd2aWV3cG9ydGNoYW5nZScsIHtcbiAgICAgICAgYWN0aW9uOiAndHJhbnNsYXRlJyxcbiAgICAgICAgbWF0cml4OiBtYXRyaXhcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdXRvUGFpbnQoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDlubPnp7vnlLvluIPliLDmn5DngrlcbiAgICogQHBhcmFtIHtudW1iZXJ9IHgg5rC05bmz5Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IOWeguebtOWdkOagh1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLm1vdmVUbyA9IGZ1bmN0aW9uICh4LCB5LCBhbmltYXRlLCBhbmltYXRlQ2ZnKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgbW92ZShncm91cCwge1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LCBhbmltYXRlLCBhbmltYXRlQ2ZnIHx8IHtcbiAgICAgIGR1cmF0aW9uOiA1MDAsXG4gICAgICBlYXNpbmc6ICdlYXNlQ3ViaWMnXG4gICAgfSk7XG4gICAgdGhpcy5lbWl0KCd2aWV3cG9ydGNoYW5nZScsIHtcbiAgICAgIGFjdGlvbjogJ21vdmUnLFxuICAgICAgbWF0cml4OiBncm91cC5nZXRNYXRyaXgoKVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog6LCD5pW06KeG5Y+j6YCC5bqU6KeG5Zu+XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYWRkaW5nIOWbm+WRqOWbtOi+uei3nVxuICAgKiBAcGFyYW0ge0ZpdFZpZXdSdWxlc30gcnVsZXMgZml0Vmlld+eahOinhOWImVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZpdFZpZXcgPSBmdW5jdGlvbiAocGFkZGluZywgcnVsZXMpIHtcbiAgICBpZiAocGFkZGluZykge1xuICAgICAgdGhpcy5zZXQoJ2ZpdFZpZXdQYWRkaW5nJywgcGFkZGluZyk7XG4gICAgfVxuXG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG5cbiAgICBpZiAocnVsZXMpIHtcbiAgICAgIHZpZXdDb250cm9sbGVyLmZpdFZpZXdCeVJ1bGVzKHJ1bGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmlld0NvbnRyb2xsZXIuZml0VmlldygpO1xuICAgIH1cblxuICAgIHRoaXMuYXV0b1BhaW50KCk7XG4gIH07XG4gIC8qKlxuICAgKiDosIPmlbTop4blj6PpgILlupTop4blm77vvIzkuI3nvKnmlL7vvIzku4XlsIblm74gYmJveCDkuK3lv4Plr7npvZDliLDnlLvluIPkuK3lv4NcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5maXRDZW50ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgdmlld0NvbnRyb2xsZXIuZml0Q2VudGVyKCk7XG4gICAgdGhpcy5hdXRvUGFpbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaWsOWinuihjOS4ulxuICAgKiBAcGFyYW0ge3N0cmluZyB8IE1vZGVPcHRpb24gfCBNb2RlVHlwZVtdfSBiZWhhdmlvcnMg5re75Yqg55qE6KGM5Li6XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IG1vZGVzIOa3u+WKoOWIsOWvueW6lOeahOaooeW8j1xuICAgKiBAcmV0dXJuIHtHcmFwaH0gR3JhcGhcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5hZGRCZWhhdmlvcnMgPSBmdW5jdGlvbiAoYmVoYXZpb3JzLCBtb2Rlcykge1xuICAgIHZhciBtb2RlQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdtb2RlQ29udHJvbGxlcicpO1xuICAgIG1vZGVDb250cm9sbGVyLm1hbmlwdWxhdGVCZWhhdmlvcnMoYmVoYXZpb3JzLCBtb2RlcywgdHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDnp7vpmaTooYzkuLpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBNb2RlT3B0aW9uIHwgTW9kZVR5cGVbXX0gYmVoYXZpb3JzIOenu+mZpOeahOihjOS4ulxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBtb2RlcyDku47mjIflrprnmoTmqKHlvI/kuK3np7vpmaRcbiAgICogQHJldHVybiB7R3JhcGh9IEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVtb3ZlQmVoYXZpb3JzID0gZnVuY3Rpb24gKGJlaGF2aW9ycywgbW9kZXMpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICBtb2RlQ29udHJvbGxlci5tYW5pcHVsYXRlQmVoYXZpb3JzKGJlaGF2aW9ycywgbW9kZXMsIGZhbHNlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOihjOS4uuWPguaVsFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IE1vZGVPcHRpb24gfCBNb2RlVHlwZX0gYmVoYXZpb3Ig6ZyA6KaB5pu05paw55qE6KGM5Li6XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IG1vZGVzIOaMh+WumueahOaooeW8j+S4reeahOihjOS4uu+8jOS4jeaMh+WumuWImeS4uiBkZWZhdWx0XG4gICAqIEByZXR1cm4ge0dyYXBofSBHcmFwaFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVwZGF0ZUJlaGF2aW9yID0gZnVuY3Rpb24gKGJlaGF2aW9yLCBuZXdDZmcsIG1vZGUpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICBtb2RlQ29udHJvbGxlci51cGRhdGVCZWhhdmlvcihiZWhhdmlvciwgbmV3Q2ZnLCBtb2RlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOS8uOe8qeeql+WPo1xuICAgKiBAcGFyYW0gcmF0aW8g5Ly457yp5q+U5L6LXG4gICAqIEBwYXJhbSBjZW50ZXIg5LulY2VudGVy55qEeCwgeeWdkOagh+S4uuS4reW/g+e8qeaUvlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtib29sZWFufSDnvKnmlL7mmK/lkKbmiJDlip9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS56b29tID0gZnVuY3Rpb24gKHJhdGlvLCBjZW50ZXIsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIG1hdHJpeCA9IGNsb25lKGdyb3VwLmdldE1hdHJpeCgpKTtcbiAgICB2YXIgbWluWm9vbSA9IHRoaXMuZ2V0KCdtaW5ab29tJyk7XG4gICAgdmFyIG1heFpvb20gPSB0aGlzLmdldCgnbWF4Wm9vbScpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBpZiAoY2VudGVyKSB7XG4gICAgICBtYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgLWNlbnRlci54LCAtY2VudGVyLnldLCBbJ3MnLCByYXRpbywgcmF0aW9dLCBbJ3QnLCBjZW50ZXIueCwgY2VudGVyLnldXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3MnLCByYXRpbywgcmF0aW9dXSk7XG4gICAgfVxuXG4gICAgaWYgKG1pblpvb20gJiYgbWF0cml4WzBdIDwgbWluWm9vbSB8fCBtYXhab29tICYmIG1hdHJpeFswXSA+IG1heFpvb20pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIG1hdHJpeCA9IFsyLCAwLCAwLCAwLCAyLCAwLCAtMTI1LCAtMTI1LCAxXTtcblxuXG4gICAgaWYgKGFuaW1hdGUpIHtcbiAgICAgIC8vIENsb25lIHRoZSBvcmlnaW5hbCBtYXRyaXggdG8gcGVyZm9ybSB0aGUgYW5pbWF0aW9uXG4gICAgICB2YXIgYW5pTWF0cml4XzEgPSBjbG9uZShncm91cC5nZXRNYXRyaXgoKSk7XG5cbiAgICAgIGlmICghYW5pTWF0cml4XzEpIHtcbiAgICAgICAgYW5pTWF0cml4XzEgPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgICB9XG5cbiAgICAgIHZhciBpbml0aWFsUmF0aW9fMSA9IGFuaU1hdHJpeF8xWzBdO1xuICAgICAgdmFyIHRhcmdldFJhdGlvXzEgPSBpbml0aWFsUmF0aW9fMSAqIHJhdGlvO1xuICAgICAgdmFyIGFuaW1hdGVDb25maWcgPSB0aGlzLmdldEFuaW1hdGVDZmdXaXRoQ2FsbGJhY2soe1xuICAgICAgICBhbmltYXRlQ2ZnOiBhbmltYXRlQ2ZnLFxuICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gY2FsbGJhY2soKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLmVtaXQoJ3ZpZXdwb3J0Y2hhbmdlJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnem9vbScsXG4gICAgICAgICAgICBtYXRyaXg6IGdyb3VwLmdldE1hdHJpeCgpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZ3JvdXAuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgaWYgKHJhdGlvID09PSAxKSB7XG4gICAgICAgICAgLy8gUmV1c2UgdGhlIGZpcnN0IHRyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgYW5pTWF0cml4XzEgPSBtYXRyaXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHNjYWxlID0gbGVycChpbml0aWFsUmF0aW9fMSwgdGFyZ2V0UmF0aW9fMSwgcmF0aW8pIC8gYW5pTWF0cml4XzFbMF07XG5cbiAgICAgICAgICBpZiAoY2VudGVyKSB7XG4gICAgICAgICAgICBhbmlNYXRyaXhfMSA9IHRyYW5zZm9ybShhbmlNYXRyaXhfMSwgW1sndCcsIC1jZW50ZXIueCwgLWNlbnRlci55XSwgWydzJywgc2NhbGUsIHNjYWxlXSwgWyd0JywgY2VudGVyLngsIGNlbnRlci55XV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmlNYXRyaXhfMSA9IHRyYW5zZm9ybShhbmlNYXRyaXhfMSwgW1sncycsIHNjYWxlLCBzY2FsZV1dKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hdHJpeDogYW5pTWF0cml4XzFcbiAgICAgICAgfTtcbiAgICAgIH0sIGFuaW1hdGVDb25maWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cC5zZXRNYXRyaXgobWF0cml4KTtcbiAgICAgIHRoaXMuZW1pdCgndmlld3BvcnRjaGFuZ2UnLCB7XG4gICAgICAgIGFjdGlvbjogJ3pvb20nLFxuICAgICAgICBtYXRyaXg6IG1hdHJpeFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF1dG9QYWludCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5Ly457yp6KeG5Y+j5Yiw5LiA5Zu65a6a5q+U5L6LXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0b1JhdGlvIOS8uOe8qeavlOS+i1xuICAgKiBAcGFyYW0ge1BvaW50fSBjZW50ZXIg5LulY2VudGVy55qEeCwgeeWdkOagh+S4uuS4reW/g+e8qeaUvlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtib29sZWFufSDnvKnmlL7mmK/lkKbmiJDlip9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS56b29tVG8gPSBmdW5jdGlvbiAodG9SYXRpbywgY2VudGVyLCBhbmltYXRlLCBhbmltYXRlQ2ZnKSB7XG4gICAgdmFyIHJhdGlvID0gdG9SYXRpbyAvIHRoaXMuZ2V0Wm9vbSgpO1xuICAgIHJldHVybiB0aGlzLnpvb20ocmF0aW8sIGNlbnRlciwgYW5pbWF0ZSwgYW5pbWF0ZUNmZyk7XG4gIH07XG4gIC8qKlxuICAgKiDlsIblhYPntKDnp7vliqjliLDop4blj6PkuK3lv4NcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIOaMh+WumuWFg+e0oFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZvY3VzSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBhbmltYXRlLCBhbmltYXRlQ2ZnKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgdmFyIGlzQW5pbWF0ZSA9IGZhbHNlO1xuICAgIGlmIChhbmltYXRlKSBpc0FuaW1hdGUgPSB0cnVlO2Vsc2UgaWYgKGFuaW1hdGUgPT09IHVuZGVmaW5lZCkgaXNBbmltYXRlID0gdGhpcy5nZXQoJ2FuaW1hdGUnKTtcbiAgICB2YXIgY3VyQW5pYW10ZUNmZyA9IHt9O1xuICAgIGlmIChhbmltYXRlQ2ZnKSBjdXJBbmlhbXRlQ2ZnID0gYW5pbWF0ZUNmZztlbHNlIGlmIChhbmltYXRlQ2ZnID09PSB1bmRlZmluZWQpIGN1ckFuaWFtdGVDZmcgPSB0aGlzLmdldCgnYW5pbWF0ZUNmZycpO1xuICAgIHZpZXdDb250cm9sbGVyLmZvY3VzKGl0ZW0sIGlzQW5pbWF0ZSwgY3VyQW5pYW10ZUNmZyk7XG4gICAgdGhpcy5hdXRvUGFpbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiHquWKqOmHjee7mFxuICAgKiBAaW50ZXJuYWwg5LuF5L6b5YaF6YOo5pu05paw5py65Yi26LCD55So77yM5aSW6YOo5qC55o2u6ZyA5rGC6LCD55SoIHJlbmRlciDmiJYgcGFpbnQg5o6l5Y+jXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuYXV0b1BhaW50ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmdldCgnYXV0b1BhaW50JykpIHtcbiAgICAgIHRoaXMucGFpbnQoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDku4XnlLvluIPph43mlrDnu5jliLZcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5wYWludCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmVtaXQoJ2JlZm9yZXBhaW50Jyk7XG4gICAgdGhpcy5nZXQoJ2NhbnZhcycpLmRyYXcoKTtcbiAgICB0aGlzLmVtaXQoJ2FmdGVycGFpbnQnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWxj+W5leWdkOagh+i9rOaNouS4uuinhuWPo+WdkOagh1xuICAgKiBAcGFyYW0ge251bWJlcn0gY2xpZW50WCDlsY/luZV45Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjbGllbnRZIOWxj+W5lXnlnZDmoIdcbiAgICogQHJldHVybiB7UG9pbnR9IOinhuWPo+WdkOagh1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFBvaW50QnlDbGllbnQgPSBmdW5jdGlvbiAoY2xpZW50WCwgY2xpZW50WSkge1xuICAgIHZhciB2aWV3Q29udHJvbGxlciA9IHRoaXMuZ2V0KCd2aWV3Q29udHJvbGxlcicpO1xuICAgIHJldHVybiB2aWV3Q29udHJvbGxlci5nZXRQb2ludEJ5Q2xpZW50KGNsaWVudFgsIGNsaWVudFkpO1xuICB9O1xuICAvKipcbiAgICog5bCG57uY5Yi25Z2Q5qCH6L2s5o2i5Li65bGP5bmV5Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IOe7mOWItuWdkOaghyB4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IOe7mOWItuWdkOaghyB5XG4gICAqIEByZXR1cm4ge1BvaW50fSDnu5jliLblnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDbGllbnRCeVBvaW50ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICB2YXIgdmlld0NvbnRyb2xsZXIgPSB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKTtcbiAgICByZXR1cm4gdmlld0NvbnRyb2xsZXIuZ2V0Q2xpZW50QnlQb2ludCh4LCB5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhueUu+W4g+WdkOagh+i9rOaNouS4uue7mOWItuWdkOagh1xuICAgKiBAcGFyYW0ge251bWJlcn0gY2FudmFzWCDnlLvluIMgeCDlnZDmoIdcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhbnZhc1kg55S75biDIHkg5Z2Q5qCHXG4gICAqIEByZXR1cm4ge29iamVjdH0g57uY5Yi25Z2Q5qCHXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0UG9pbnRCeUNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXNYLCBjYW52YXNZKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgcmV0dXJuIHZpZXdDb250cm9sbGVyLmdldFBvaW50QnlDYW52YXMoY2FudmFzWCwgY2FudmFzWSk7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbnu5jliLblnZDmoIfovazmjaLkuLrnlLvluIPlnZDmoIdcbiAgICogQHBhcmFtIHtudW1iZXJ9IHgg57uY5Yi25Z2Q5qCHIHhcbiAgICogQHBhcmFtIHtudW1iZXJ9IHkg57uY5Yi25Z2Q5qCHIHlcbiAgICogQHJldHVybiB7b2JqZWN0fSDnlLvluIPlnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDYW52YXNCeVBvaW50ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICB2YXIgdmlld0NvbnRyb2xsZXIgPSB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKTtcbiAgICByZXR1cm4gdmlld0NvbnRyb2xsZXIuZ2V0Q2FudmFzQnlQb2ludCh4LCB5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluWbvuWGheWuueeahOS4reW/g+e7mOWItuWdkOagh1xuICAgKiBAcmV0dXJuIHtvYmplY3R9IOS4reW/g+e7mOWItuWdkOagh1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEdyYXBoQ2VudGVyUG9pbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGJib3ggPSB0aGlzLmdldCgnZ3JvdXAnKS5nZXRDYW52YXNCQm94KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IChiYm94Lm1pblggKyBiYm94Lm1heFgpIC8gMixcbiAgICAgIHk6IChiYm94Lm1pblkgKyBiYm94Lm1heFkpIC8gMlxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bop4blj6PkuK3lv4Pnu5jliLblnZDmoIdcbiAgICogQHJldHVybiB7b2JqZWN0fSDop4blj6PkuK3lv4Pnu5jliLblnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRWaWV3UG9ydENlbnRlclBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldFBvaW50QnlDYW52YXModGhpcy5nZXQoJ3dpZHRoJykgLyAyLCB0aGlzLmdldCgnaGVpZ2h0JykgLyAyKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYvuekuuWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zaG93SXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIG9iamVjdCA9IGl0ZW1Db250cm9sbGVyLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGl0ZW0sIHRydWUpO1xuXG4gICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdmFyIGlkID0gb2JqZWN0LmdldElEKCk7XG4gICAgICB2YXIgdHlwZSA9IG9iamVjdC5nZXRUeXBlKCk7XG4gICAgICB2YXIgYmVmb3JlID0ge307XG4gICAgICB2YXIgYWZ0ZXIgPSB7fTtcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgIGJlZm9yZS5ub2RlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZGdlJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBhZnRlci5lZGdlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY29tYm8nOlxuICAgICAgICAgIGJlZm9yZS5ub2RlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLmNvbWJvcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgdGhpcy5wdXNoU3RhY2soJ3Zpc2libGUnLCB7XG4gICAgICAgIGJlZm9yZTogYmVmb3JlLFxuICAgICAgICBhZnRlcjogYWZ0ZXJcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOmakOiXj+WFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5oaWRlSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIG9iamVjdCA9IGl0ZW1Db250cm9sbGVyLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGl0ZW0sIGZhbHNlKTtcblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHZhciBpZCA9IG9iamVjdC5nZXRJRCgpO1xuICAgICAgdmFyIHR5cGUgPSBvYmplY3QuZ2V0VHlwZSgpO1xuICAgICAgdmFyIGJlZm9yZSA9IHt9O1xuICAgICAgdmFyIGFmdGVyID0ge307XG5cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IGZhbHNlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZWRnZSc6XG4gICAgICAgICAgYmVmb3JlLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBhZnRlci5lZGdlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NvbWJvJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLmNvbWJvcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHVzaFN0YWNrKCd2aXNpYmxlJywge1xuICAgICAgICBiZWZvcmU6IGJlZm9yZSxcbiAgICAgICAgYWZ0ZXI6IGFmdGVyXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDliLfmlrDlhYPntKBcbiAgICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSBpdGVtIOWFg+e0oGlk5oiW5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVmcmVzaEl0ZW0gPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIGl0ZW1Db250cm9sbGVyLnJlZnJlc2hJdGVtKGl0ZW0pO1xuICB9O1xuICAvKipcbiAgICog6K6+572u5piv5ZCm5Zyo5pu05pawL+WIt+aWsOWQjuiHquWKqOmHjee7mFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dG8g6Ieq5Yqo6YeN57uYXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc2V0QXV0b1BhaW50ID0gZnVuY3Rpb24gKGF1dG8pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5zZXQoJ2F1dG9QYWludCcsIGF1dG8pO1xuICAgIHZhciBjYW52YXMgPSBzZWxmLmdldCgnY2FudmFzJyk7XG4gICAgY2FudmFzLnNldCgnYXV0b0RyYXcnLCBhdXRvKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGFjayDmnKzmrKHmk43kvZzmmK/lkKblhaXmoIjvvIzpu5jorqTkuLogdHJ1ZVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0sIHN0YWNrKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGFjayDmnKzmrKHmk43kvZzmmK/lkKblhaXmoIjvvIzpu5jorqTkuLogdHJ1ZVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaXRlbSwgc3RhY2spIHtcbiAgICBpZiAoc3RhY2sgPT09IHZvaWQgMCkge1xuICAgICAgc3RhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBub2RlSXRlbSA9IGl0ZW07XG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSBub2RlSXRlbSA9IHRoaXMuZmluZEJ5SWQoaXRlbSk7XG5cbiAgICBpZiAoIW5vZGVJdGVtICYmIGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBpdGVtIHRvIGJlIHJlbW92ZWQgZG9lcyBub3QgZXhpc3QhJyk7XG4gICAgfSBlbHNlIGlmIChub2RlSXRlbSkge1xuICAgICAgdmFyIHR5cGUgPSAnJztcbiAgICAgIGlmIChub2RlSXRlbS5nZXRUeXBlKSB0eXBlID0gbm9kZUl0ZW0uZ2V0VHlwZSgpOyAvLyDlsIbliKDpmaTnmoTlhYPntKDlhaXmoIhcblxuICAgICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgICB2YXIgZGVsZXRlZE1vZGVsID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG5vZGVJdGVtLmdldE1vZGVsKCkpLCB7XG4gICAgICAgICAgaXRlbVR5cGU6IHR5cGVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIGJlZm9yZSA9IHt9O1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbZGVsZXRlZE1vZGVsXTtcbiAgICAgICAgICAgICAgYmVmb3JlLmVkZ2VzID0gW107XG4gICAgICAgICAgICAgIHZhciBlZGdlcyA9IG5vZGVJdGVtLmdldEVkZ2VzKCk7XG5cbiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGVkZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlLmVkZ2VzLnB1c2goX19hc3NpZ24oX19hc3NpZ24oe30sIGVkZ2VzW2ldLmdldE1vZGVsKCkpLCB7XG4gICAgICAgICAgICAgICAgICBpdGVtVHlwZTogJ2VkZ2UnXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdlZGdlJzpcbiAgICAgICAgICAgIGJlZm9yZS5lZGdlcyA9IFtkZWxldGVkTW9kZWxdO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgICAgICBiZWZvcmUuY29tYm9zID0gW2RlbGV0ZWRNb2RlbF07XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHVzaFN0YWNrKCdkZWxldGUnLCB7XG4gICAgICAgICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgICAgICAgYWZ0ZXI6IHt9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ25vZGUnKSB7XG4gICAgICAgIHZhciBtb2RlbCA9IG5vZGVJdGVtLmdldE1vZGVsKCk7IC8vIOWmguaenOWIoOmZpOeahOaYr+iKgueCue+8jOS4lOivpeiKgueCueWtmOWcqOS6juafkOS4qiBDb21ibyDkuK3vvIzliJnpnIDopoHlhYjlsIYgbm9kZSDku44gY29tYm8g5Lit56e76Zmk77yM5ZCm5YiZ5Yig6Zmk6IqC54K55ZCO77yM5pON5L2cIGNvbWJvIOS8muWHuumUmVxuXG4gICAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDb21ib1RyZWUobm9kZUl0ZW0sIHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgICAgaXRlbUNvbnRyb2xsZXIucmVtb3ZlSXRlbShub2RlSXRlbSk7XG5cbiAgICAgIGlmICh0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICAgIHZhciBuZXdDb21ib1RyZWVzID0gcmVjb25zdHJ1Y3RUcmVlKHRoaXMuZ2V0KCdjb21ib1RyZWVzJykpO1xuICAgICAgICB0aGlzLnNldCgnY29tYm9UcmVlcycsIG5ld0NvbWJvVHJlZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOaWsOWinuWFg+e0oFxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlhYPntKDnsbvlnosobm9kZSB8IGVkZ2UpXG4gICAqIEBwYXJhbSB7TW9kZWxDb25maWd9IG1vZGVsIOWFg+e0oOaVsOaNruaooeWei1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YWNrIOacrOasoeaTjeS9nOaYr+WQpuWFpeagiO+8jOm7mOiupOS4uiB0cnVlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc29ydENvbWJvIOacrOasoeaTjeS9nOaYr+WQpumcgOimgeabtOaWsCBjb21ibyDlsYLnuqfpobrluo/vvIzlhoXpg6jlj4LmlbDvvIznlKjmiLflnKjlpJbpg6jkvb/nlKggYWRkSXRlbSDml7blp4vnu4jml7bpnIDopoHmm7TmlrBcbiAgICogQHJldHVybiB7SXRlbX0g5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uICh0eXBlLCBtb2RlbCwgc3RhY2ssIHNvcnRDb21ibykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHNvcnRDb21ibyA9PT0gdm9pZCAwKSB7XG4gICAgICBzb3J0Q29tYm8gPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Q29tYm9Tb3J0ZWQgPSB0aGlzLmdldCgnY29tYm9Tb3J0ZWQnKTtcbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBjdXJyZW50Q29tYm9Tb3J0ZWQgJiYgIXNvcnRDb21ibyk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7IC8vIOa3u+WKoOiKgueCueOAgei+ueaIlmNvbWJv5LmL5YmN77yM5YWI6aqM6K+B5pWw5o2u5piv5ZCm56ym5ZCI6KeE6IyDXG5cbiAgICBpZiAoIXNpbmdsZURhdGFWYWxpZGF0aW9uKHR5cGUsIG1vZGVsKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChtb2RlbC5pZCAmJiB0aGlzLmZpbmRCeUlkKG1vZGVsLmlkKSkge1xuICAgICAgY29uc29sZS53YXJuKFwiVGhpcyBpdGVtIGV4aXN0cyBhbHJlYWR5LiBCZSBzdXJlIHRoZSBpZCAlY1wiLmNvbmNhdChtb2RlbC5pZCwgXCIlYyBpcyB1bmlxdWUuXCIpLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaXRlbTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgaWYgKCFjb21ib1RyZWVzKSBjb21ib1RyZWVzID0gW107XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgdmFyIGl0ZW1NYXBfMSA9IHRoaXMuZ2V0KCdpdGVtTWFwJyk7XG4gICAgICB2YXIgZm91bmRQYXJlbnRfMSA9IGZhbHNlO1xuICAgICAgY29tYm9UcmVlcy5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgICBpZiAoZm91bmRQYXJlbnRfMSkgcmV0dXJuOyAvLyB0ZXJtaW5hdGUgdGhlIGZvckVhY2ggYWZ0ZXIgdGhlIHRyZWUgY29udGFpbmluZyB0aGUgaXRlbSBpcyBkb25lXG5cbiAgICAgICAgdHJhdmVyc2VUcmVlVXAoY3RyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgIC8vIGZpbmQgdGhlIHBhcmVudFxuICAgICAgICAgIGlmIChtb2RlbC5wYXJlbnRJZCA9PT0gY2hpbGQuaWQpIHtcbiAgICAgICAgICAgIGZvdW5kUGFyZW50XzEgPSB0cnVlO1xuXG4gICAgICAgICAgICB2YXIgbmV3Q29tYm8gPSBfX2Fzc2lnbih7XG4gICAgICAgICAgICAgIGlkOiBtb2RlbC5pZCxcbiAgICAgICAgICAgICAgZGVwdGg6IGNoaWxkLmRlcHRoICsgMlxuICAgICAgICAgICAgfSwgbW9kZWwpO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIGNoaWxkLmNoaWxkcmVuLnB1c2gobmV3Q29tYm8pO2Vsc2UgY2hpbGQuY2hpbGRyZW4gPSBbbmV3Q29tYm9dO1xuICAgICAgICAgICAgbW9kZWwuZGVwdGggPSBuZXdDb21iby5kZXB0aDtcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtQ29udHJvbGxlci5hZGRJdGVtKHR5cGUsIG1vZGVsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgY2hpbGRJdGVtID0gaXRlbU1hcF8xW2NoaWxkLmlkXTsgLy8gYWZ0ZXIgdGhlIHBhcmVudCBpcyBmb3VuZCwgdXBkYXRlIGFsbCB0aGUgYW5jZXN0b3JzXG5cbiAgICAgICAgICBpZiAoZm91bmRQYXJlbnRfMSAmJiBjaGlsZEl0ZW0gJiYgY2hpbGRJdGVtLmdldFR5cGUgJiYgY2hpbGRJdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgaXRlbUNvbnRyb2xsZXIudXBkYXRlQ29tYm8oY2hpbGRJdGVtLCBjaGlsZC5jaGlsZHJlbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7IC8vIGlmIHRoZSBwYXJlbnQgaXMgbm90IGZvdW5kLCBhZGQgaXQgdG8gdGhlIHJvb3RcblxuICAgICAgaWYgKCFmb3VuZFBhcmVudF8xKSB7XG4gICAgICAgIHZhciBuZXdDb21ibyA9IF9fYXNzaWduKHtcbiAgICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgICAgZGVwdGg6IDBcbiAgICAgICAgfSwgbW9kZWwpO1xuXG4gICAgICAgIG1vZGVsLmRlcHRoID0gbmV3Q29tYm8uZGVwdGg7XG4gICAgICAgIGNvbWJvVHJlZXMucHVzaChuZXdDb21ibyk7XG4gICAgICAgIGl0ZW0gPSBpdGVtQ29udHJvbGxlci5hZGRJdGVtKHR5cGUsIG1vZGVsKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXQoJ2NvbWJvVHJlZXMnLCBjb21ib1RyZWVzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdub2RlJyAmJiBpc1N0cmluZyhtb2RlbC5jb21ib0lkKSAmJiBjb21ib1RyZWVzKSB7XG4gICAgICB2YXIgcGFyZW50Q29tYm8gPSB0aGlzLmZpbmRCeUlkKG1vZGVsLmNvbWJvSWQpO1xuXG4gICAgICBpZiAocGFyZW50Q29tYm8gJiYgcGFyZW50Q29tYm8uZ2V0VHlwZSAmJiBwYXJlbnRDb21iby5nZXRUeXBlKCkgIT09ICdjb21ibycpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiJ1wiLmNvbmNhdChtb2RlbC5jb21ib0lkLCBcIicgaXMgbm90IGEgaWQgb2YgYSBjb21ibyBpbiB0aGUgZ3JhcGgsIHRoZSBub2RlIHdpbGwgYmUgYWRkZWQgd2l0aG91dCBjb21iby5cIikpO1xuICAgICAgfVxuXG4gICAgICBpdGVtID0gaXRlbUNvbnRyb2xsZXIuYWRkSXRlbSh0eXBlLCBtb2RlbCk7XG4gICAgICB2YXIgaXRlbU1hcF8yID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKTtcbiAgICAgIHZhciBmb3VuZFBhcmVudF8yID0gZmFsc2UsXG4gICAgICAgICAgZm91bmROb2RlXzEgPSBmYWxzZTtcbiAgICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgICBpZiAoZm91bmROb2RlXzEgfHwgZm91bmRQYXJlbnRfMikgcmV0dXJuOyAvLyB0ZXJtaW5hdGUgdGhlIGZvckVhY2hcblxuICAgICAgICB0cmF2ZXJzZVRyZWVVcChjdHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgaWYgKGNoaWxkLmlkID09PSBtb2RlbC5pZCkge1xuICAgICAgICAgICAgLy8gaWYgdGhlIGl0ZW0gZXhpc3RzIGluIHRoZSB0cmVlIGFscmVhZHksIHRlcm1pbmF0ZVxuICAgICAgICAgICAgZm91bmROb2RlXzEgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChtb2RlbC5jb21ib0lkID09PSBjaGlsZC5pZCAmJiAhZm91bmROb2RlXzEpIHtcbiAgICAgICAgICAgIC8vIGZvdW5kIHRoZSBwYXJlbnQsIGFkZCB0aGUgaXRlbSB0byB0aGUgY2hpbGRyZW4gb2YgaXRzIHBhcmVudCBpbiB0aGUgdHJlZVxuICAgICAgICAgICAgZm91bmRQYXJlbnRfMiA9IHRydWU7XG4gICAgICAgICAgICB2YXIgY2xvbmVOb2RlID0gY2xvbmUobW9kZWwpO1xuICAgICAgICAgICAgY2xvbmVOb2RlLml0ZW1UeXBlID0gJ25vZGUnO1xuICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuKSBjaGlsZC5jaGlsZHJlbi5wdXNoKGNsb25lTm9kZSk7ZWxzZSBjaGlsZC5jaGlsZHJlbiA9IFtjbG9uZU5vZGVdO1xuICAgICAgICAgICAgY2xvbmVOb2RlLmRlcHRoID0gY2hpbGQuZGVwdGggKyAxO1xuICAgICAgICAgIH0gLy8gdXBkYXRlIHRoZSBzaXplIG9mIGFsbCB0aGUgYW5jZXN0b3JzXG5cblxuICAgICAgICAgIGlmIChmb3VuZFBhcmVudF8yICYmIGl0ZW1NYXBfMltjaGlsZC5pZF0uZ2V0VHlwZSAmJiBpdGVtTWFwXzJbY2hpbGQuaWRdLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgaXRlbUNvbnRyb2xsZXIudXBkYXRlQ29tYm8oaXRlbU1hcF8yW2NoaWxkLmlkXSwgY2hpbGQuY2hpbGRyZW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtID0gaXRlbUNvbnRyb2xsZXIuYWRkSXRlbSh0eXBlLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdub2RlJyAmJiBtb2RlbC5jb21ib0lkIHx8IHR5cGUgPT09ICdjb21ibycgJiYgbW9kZWwucGFyZW50SWQpIHtcbiAgICAgIC8vIGFkZCB0aGUgY29tYm8gdG8gdGhlIHBhcmVudCdzIGNoaWxkcmVuIGFycmF5XG4gICAgICB2YXIgcGFyZW50Q29tYm8gPSB0aGlzLmZpbmRCeUlkKG1vZGVsLmNvbWJvSWQgfHwgbW9kZWwucGFyZW50SWQpO1xuICAgICAgaWYgKHBhcmVudENvbWJvICYmIHBhcmVudENvbWJvLmdldFR5cGUgJiYgcGFyZW50Q29tYm8uZ2V0VHlwZSgpID09PSAnY29tYm8nKSBwYXJlbnRDb21iby5hZGRDaGlsZChpdGVtKTtcbiAgICB9XG5cbiAgICB2YXIgY29tYm9zID0gdGhpcy5nZXQoJ2NvbWJvcycpO1xuXG4gICAgaWYgKGNvbWJvcyAmJiBjb21ib3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zb3J0Q29tYm9zKCk7XG4gICAgfVxuXG4gICAgdGhpcy5hdXRvUGFpbnQoKTtcblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHZhciBhZGRlZE1vZGVsID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGl0ZW0uZ2V0TW9kZWwoKSksIHtcbiAgICAgICAgaXRlbVR5cGU6IHR5cGVcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgYWZ0ZXIgPSB7fTtcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgIGFmdGVyLm5vZGVzID0gW2FkZGVkTW9kZWxdO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VkZ2UnOlxuICAgICAgICAgIGFmdGVyLmVkZ2VzID0gW2FkZGVkTW9kZWxdO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NvbWJvJzpcbiAgICAgICAgICBhZnRlci5jb21ib3MgPSBbYWRkZWRNb2RlbF07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgdGhpcy5wdXNoU3RhY2soJ2FkZCcsIHtcbiAgICAgICAgYmVmb3JlOiB7fSxcbiAgICAgICAgYWZ0ZXI6IGFmdGVyXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcbiAgLyoqXG4gICAqIOaWsOWinuWFg+e0oFxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlhYPntKDnsbvlnosobm9kZSB8IGVkZ2UpXG4gICAqIEBwYXJhbSB7TW9kZWxDb25maWd9IG1vZGVsIOWFg+e0oOaVsOaNruaooeWei1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YWNrIOacrOasoeaTjeS9nOaYr+WQpuWFpeagiO+8jOm7mOiupOS4uiB0cnVlXG4gICAqIEByZXR1cm4ge0l0ZW19IOWFg+e0oOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh0eXBlLCBtb2RlbCwgc3RhY2ssIHNvcnRDb21ibykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHNvcnRDb21ibyA9PT0gdm9pZCAwKSB7XG4gICAgICBzb3J0Q29tYm8gPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkZEl0ZW0odHlwZSwgbW9kZWwsIHN0YWNrLCBzb3J0Q29tYm8pO1xuICB9O1xuICAvKipcbiAgICog5pu05paw5YWD57SgXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSDlhYPntKBpZOaIluWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0ge1BhcnRpYWw8Tm9kZUNvbmZpZz4gfCBFZGdlQ29uZmlnfSBjZmcg6ZyA6KaB5pu05paw55qE5pWw5o2uXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudXBkYXRlSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBjZmcsIHN0YWNrKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIGN1cnJlbnRJdGVtO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBjdXJyZW50SXRlbSA9IHRoaXMuZmluZEJ5SWQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICB2YXIgVW51cGRhdGVNb2RlbCA9IGNsb25lKGN1cnJlbnRJdGVtLmdldE1vZGVsKCkpO1xuICAgIHZhciB0eXBlID0gJyc7XG4gICAgaWYgKGN1cnJlbnRJdGVtLmdldFR5cGUpIHR5cGUgPSBjdXJyZW50SXRlbS5nZXRUeXBlKCk7XG5cbiAgICB2YXIgc3RhdGVzID0gX19zcHJlYWRBcnJheShbXSwgY3VycmVudEl0ZW0uZ2V0U3RhdGVzKCksIHRydWUpO1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnNldEl0ZW1TdGF0ZShjdXJyZW50SXRlbSwgc3RhdGUsIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGl0ZW1Db250cm9sbGVyLnVwZGF0ZUl0ZW0oY3VycmVudEl0ZW0sIGNmZyk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgZWFjaChzdGF0ZXMsIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMuc2V0SXRlbVN0YXRlKGN1cnJlbnRJdGVtLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoc3RhY2sgJiYgdGhpcy5nZXQoJ2VuYWJsZWRTdGFjaycpKSB7XG4gICAgICB2YXIgYmVmb3JlID0ge1xuICAgICAgICBub2RlczogW10sXG4gICAgICAgIGVkZ2VzOiBbXSxcbiAgICAgICAgY29tYm9zOiBbXVxuICAgICAgfTtcbiAgICAgIHZhciBhZnRlciA9IHtcbiAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICBlZGdlczogW10sXG4gICAgICAgIGNvbWJvczogW11cbiAgICAgIH07XG5cbiAgICAgIHZhciBhZnRlck1vZGVsID0gX19hc3NpZ24oe1xuICAgICAgICBpZDogVW51cGRhdGVNb2RlbC5pZFxuICAgICAgfSwgY2ZnKTtcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgIGJlZm9yZS5ub2Rlcy5wdXNoKFVudXBkYXRlTW9kZWwpO1xuICAgICAgICAgIGFmdGVyLm5vZGVzLnB1c2goYWZ0ZXJNb2RlbCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZWRnZSc6XG4gICAgICAgICAgYmVmb3JlLmVkZ2VzLnB1c2goVW51cGRhdGVNb2RlbCk7XG4gICAgICAgICAgYWZ0ZXIuZWRnZXMucHVzaChhZnRlck1vZGVsKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgICAgYmVmb3JlLmNvbWJvcy5wdXNoKFVudXBkYXRlTW9kZWwpO1xuICAgICAgICAgIGFmdGVyLmNvbWJvcy5wdXNoKGFmdGVyTW9kZWwpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnbm9kZScpIHtcbiAgICAgICAgYmVmb3JlLm5vZGVzLnB1c2goVW51cGRhdGVNb2RlbCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHVzaFN0YWNrKCd1cGRhdGUnLCB7XG4gICAgICAgIGJlZm9yZTogYmVmb3JlLFxuICAgICAgICBhZnRlcjogYWZ0ZXJcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtQYXJ0aWFsPE5vZGVDb25maWc+IHwgRWRnZUNvbmZpZ30gY2ZnIOmcgOimgeabtOaWsOeahOaVsOaNrlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YWNrIOacrOasoeaTjeS9nOaYr+WQpuWFpeagiO+8jOm7mOiupOS4uiB0cnVlXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGl0ZW0sIGNmZywgc3RhY2spIHtcbiAgICBpZiAoc3RhY2sgPT09IHZvaWQgMCkge1xuICAgICAgc3RhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlSXRlbShpdGVtLCBjZmcsIHN0YWNrKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWFg+e0oOeKtuaAgVxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIOeKtuaAgeWQjeensFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IGJvb2xlYW59IHZhbHVlIOaYr+WQpuWQr+eUqOeKtuaAgSDmiJYg54q25oCB5YC8XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc2V0SXRlbVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlLCB2YWx1ZSkge1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgaXRlbSA9IHRoaXMuZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgaXRlbUNvbnRyb2xsZXIuc2V0SXRlbVN0YXRlKGl0ZW0sIHN0YXRlLCB2YWx1ZSk7XG4gICAgdmFyIHN0YXRlQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdzdGF0ZUNvbnRyb2xsZXInKTtcblxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHN0YXRlQ29udHJvbGxlci51cGRhdGVTdGF0ZShpdGVtLCBcIlwiLmNvbmNhdChzdGF0ZSwgXCI6XCIpLmNvbmNhdCh2YWx1ZSksIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZUNvbnRyb2xsZXIudXBkYXRlU3RhdGUoaXRlbSwgc3RhdGUsIHZhbHVlKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDlsIbmjIflrprnirbmgIHnmoTkvJjlhYjnuqfmj5DljYfkuLrmnIDpq5jkvJjlhYjnuqdcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIOWFg+e0oGlk5oiW5YWD57Sg5a6e5L6LXG4gICAqIEBwYXJhbSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5wcmlvcml0eVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlKSB7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgaXRlbUNvbnRyb2xsZXIucHJpb3JpdHlTdGF0ZShpdGVtLCBzdGF0ZSk7XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva7op4blm77liJ3lp4vljJbmlbDmja5cbiAgICogQHBhcmFtIHtHcmFwaERhdGF9IGRhdGEg5Yid5aeL5YyW5pWw5o2uXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZGF0YSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGF0YVZhbGlkYXRpb24oZGF0YSk7XG4gICAgdGhpcy5zZXQoJ2RhdGEnLCBkYXRhKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNrmRhdGHmjqXlj6PnmoTmlbDmja7muLLmn5Pop4blm75cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuc2V0KCdjb21ib1NvcnRlZCcsIGZhbHNlKTtcbiAgICB2YXIgZGF0YSA9IHRoaXMuZ2V0KCdkYXRhJyk7XG5cbiAgICBpZiAodGhpcy5nZXQoJ2VuYWJsZWRTdGFjaycpKSB7XG4gICAgICAvLyByZW5kZXIg5LmL5YmN5riF56m6IHJlZG8g5ZKMIHVuZG8g5qCIXG4gICAgICB0aGlzLmNsZWFyU3RhY2soKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGF0YSBtdXN0IGJlIGRlZmluZWQgZmlyc3QnKTtcbiAgICB9XG5cbiAgICB2YXIgX2EgPSBkYXRhLm5vZGVzLFxuICAgICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgICBfYiA9IGRhdGEuZWRnZXMsXG4gICAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2IsXG4gICAgICAgIF9jID0gZGF0YS5jb21ib3MsXG4gICAgICAgIGNvbWJvcyA9IF9jID09PSB2b2lkIDAgPyBbXSA6IF9jO1xuICAgIHRoaXMuY2xlYXIodHJ1ZSk7XG4gICAgdGhpcy5lbWl0KCdiZWZvcmVyZW5kZXInKTtcbiAgICBlYWNoKG5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgc2VsZi5hZGQoJ25vZGUnLCBub2RlLCBmYWxzZSwgZmFsc2UpO1xuICAgIH0pOyAvLyBwcm9jZXNzIHRoZSBkYXRhIHRvIHRyZWUgc3RydWN0dXJlXG5cbiAgICBpZiAoY29tYm9zICYmIGNvbWJvcy5sZW5ndGggIT09IDApIHtcbiAgICAgIHZhciBjb21ib1RyZWVzID0gcGxhaW5Db21ib3NUb1RyZWVzKGNvbWJvcywgbm9kZXMpO1xuICAgICAgdGhpcy5zZXQoJ2NvbWJvVHJlZXMnLCBjb21ib1RyZWVzKTsgLy8gYWRkIGNvbWJvc1xuXG4gICAgICBzZWxmLmFkZENvbWJvcyhjb21ib3MpO1xuICAgIH1cblxuICAgIGVhY2goZWRnZXMsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBzZWxmLmFkZCgnZWRnZScsIGVkZ2UsIGZhbHNlLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgdmFyIGFuaW1hdGUgPSBzZWxmLmdldCgnYW5pbWF0ZScpO1xuXG4gICAgaWYgKHNlbGYuZ2V0KCdmaXRWaWV3JykgfHwgc2VsZi5nZXQoJ2ZpdENlbnRlcicpKSB7XG4gICAgICBzZWxmLnNldCgnYW5pbWF0ZScsIGZhbHNlKTtcbiAgICB9IC8vIGxheW91dFxuXG5cbiAgICB2YXIgbGF5b3V0Q29udHJvbGxlciA9IHNlbGYuZ2V0KCdsYXlvdXRDb250cm9sbGVyJyk7XG5cbiAgICBpZiAobGF5b3V0Q29udHJvbGxlcikge1xuICAgICAgbGF5b3V0Q29udHJvbGxlci5sYXlvdXQoc3VjY2Vzcyk7XG4gICAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNlbGYuZ2V0KCdmaXRWaWV3JykpIHtcbiAgICAgICAgc2VsZi5maXRWaWV3KCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLmdldCgnZml0Q2VudGVyJykpIHtcbiAgICAgICAgc2VsZi5maXRDZW50ZXIoKTtcbiAgICAgIH1cblxuICAgICAgc2VsZi5lbWl0KCdhZnRlcnJlbmRlcicpO1xuICAgICAgc2VsZi5zZXQoJ2FuaW1hdGUnLCBhbmltYXRlKTtcbiAgICB9IC8vIOWwhuWcqCBvbkxheW91dEVuZCDkuK3ooqvosIPnlKhcblxuXG4gICAgZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIC8vIGZpdFZpZXcg5LiOIGZpdENlbnRlciDlhbHlrZjml7bvvIxmaXRWaWV3IOS8mOWFiO+8jGZpdENlbnRlciDkuI3lho3miafooYxcbiAgICAgIGlmIChzZWxmLmdldCgnZml0VmlldycpKSB7XG4gICAgICAgIHNlbGYuZml0VmlldygpO1xuICAgICAgfSBlbHNlIGlmIChzZWxmLmdldCgnZml0Q2VudGVyJykpIHtcbiAgICAgICAgc2VsZi5maXRDZW50ZXIoKTtcbiAgICAgIH1cblxuICAgICAgc2VsZi5hdXRvUGFpbnQoKTtcbiAgICAgIHNlbGYuZW1pdCgnYWZ0ZXJyZW5kZXInKTtcblxuICAgICAgaWYgKHNlbGYuZ2V0KCdmaXRWaWV3JykgfHwgc2VsZi5nZXQoJ2ZpdENlbnRlcicpKSB7XG4gICAgICAgIHNlbGYuc2V0KCdhbmltYXRlJywgYW5pbWF0ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdldCgnZ3JvdXBCeVR5cGVzJykpIHtcbiAgICAgIGlmIChjb21ib3MgJiYgY29tYm9zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICB0aGlzLnNvcnRDb21ib3MoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOS4uuaPkOWNh+aAp+iDve+8jOmAieaLqeaVsOmHj+WwkeeahOi/m+ihjOaTjeS9nFxuICAgICAgICBpZiAoZGF0YS5ub2RlcyAmJiBkYXRhLmVkZ2VzICYmIGRhdGEubm9kZXMubGVuZ3RoIDwgZGF0YS5lZGdlcy5sZW5ndGgpIHtcbiAgICAgICAgICB2YXIgbm9kZXNBcnIgPSB0aGlzLmdldE5vZGVzKCk7IC8vIOmBjeWOhuiKgueCueWunuS+i++8jOWwhuaJgOacieiKgueCueaPkOWJjeOAglxuXG4gICAgICAgICAgbm9kZXNBcnIuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgbm9kZS50b0Zyb250KCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGVkZ2VzQXJyID0gdGhpcy5nZXRFZGdlcygpOyAvLyDpgY3ljoboioLngrnlrp7kvovvvIzlsIbmiYDmnInoioLngrnmj5DliY3jgIJcblxuICAgICAgICAgIGVkZ2VzQXJyLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIGVkZ2UudG9CYWNrKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXQoJ2VuYWJsZWRTdGFjaycpKSB7XG4gICAgICB0aGlzLnB1c2hTdGFjaygncmVuZGVyJyk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5o6l5pS25pWw5o2u6L+b6KGM5riy5p+TXG4gICAqIEBQYXJhbSB7T2JqZWN0fSBkYXRhIOWIneWni+WMluaVsOaNrlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoaXMuZGF0YShkYXRhKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9OyAvLyDmr5TovoNpdGVtXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5kaWZmSXRlbXMgPSBmdW5jdGlvbiAodHlwZSwgaXRlbXMsIG1vZGVscykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbTtcbiAgICB2YXIgaXRlbU1hcCA9IHRoaXMuZ2V0KCdpdGVtTWFwJyk7XG4gICAgZWFjaChtb2RlbHMsIGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgaXRlbSA9IGl0ZW1NYXBbbW9kZWwuaWRdO1xuXG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBpZiAoc2VsZi5nZXQoJ2FuaW1hdGUnKSAmJiB0eXBlID09PSBOT0RFKSB7XG4gICAgICAgICAgdmFyIGNvbnRhaW5lck1hdHJpeCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCkuZ2V0TWF0cml4KCk7XG4gICAgICAgICAgaWYgKCFjb250YWluZXJNYXRyaXgpIGNvbnRhaW5lck1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgICAgICBpdGVtLnNldCgnb3JpZ2luQXR0cnMnLCB7XG4gICAgICAgICAgICB4OiBjb250YWluZXJNYXRyaXhbNl0sXG4gICAgICAgICAgICB5OiBjb250YWluZXJNYXRyaXhbN11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYudXBkYXRlSXRlbShpdGVtLCBtb2RlbCwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbSA9IHNlbGYuYWRkSXRlbSh0eXBlLCBtb2RlbCwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbSkgaXRlbXNbXCJcIi5jb25jYXQodHlwZSwgXCJzXCIpXS5wdXNoKGl0ZW0pO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5pu05pS55rqQ5pWw5o2u77yM5qC55o2u5paw5pWw5o2u6YeN5paw5riy5p+T6KeG5Zu+XG4gICAqIEBwYXJhbSB7R3JhcGhEYXRhIHwgVHJlZUdyYXBoRGF0YX0gZGF0YSDmupDmlbDmja5cbiAgICogQHBhcmFtIHtib29sZWFufSDmmK/lkKblhaXmoIjvvIzpu5jorqTkuLp0cnVlXG4gICAqIEByZXR1cm4ge29iamVjdH0gdGhpc1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNoYW5nZURhdGEgPSBmdW5jdGlvbiAoZGF0YSwgc3RhY2spIHtcbiAgICBpZiAoc3RhY2sgPT09IHZvaWQgMCkge1xuICAgICAgc3RhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmICghZGF0YVZhbGlkYXRpb24oZGF0YSkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrKCdjaGFuZ2VkYXRhJywge1xuICAgICAgICBiZWZvcmU6IHNlbGYuc2F2ZSgpLFxuICAgICAgICBhZnRlcjogZGF0YVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgZmFsc2UpOyAvLyDliKDpmaQgaHVsbHNcblxuICAgIHRoaXMucmVtb3ZlSHVsbHMoKTsgLy8g5pu05pS55pWw5o2u5rqQ5ZCO77yM5Y+W5raI5omA5pyJ54q25oCBXG5cbiAgICB0aGlzLmdldE5vZGVzKCkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gc2VsZi5jbGVhckl0ZW1TdGF0ZXMobm9kZSk7XG4gICAgfSk7XG4gICAgdGhpcy5nZXRFZGdlcygpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIHNlbGYuY2xlYXJJdGVtU3RhdGVzKGVkZ2UpO1xuICAgIH0pO1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIGxvY2FsUmVmcmVzaCA9IGNhbnZhcy5nZXQoJ2xvY2FsUmVmcmVzaCcpO1xuICAgIGNhbnZhcy5zZXQoJ2xvY2FsUmVmcmVzaCcsIGZhbHNlKTtcblxuICAgIGlmICghc2VsZi5nZXQoJ2RhdGEnKSkge1xuICAgICAgc2VsZi5kYXRhKGRhdGEpO1xuICAgICAgc2VsZi5yZW5kZXIoKTtcbiAgICB9XG5cbiAgICB2YXIgaXRlbU1hcCA9IHRoaXMuZ2V0KCdpdGVtTWFwJyk7XG4gICAgdmFyIGl0ZW1zID0ge1xuICAgICAgbm9kZXM6IFtdLFxuICAgICAgZWRnZXM6IFtdXG4gICAgfTtcbiAgICB2YXIgY29tYm9zRGF0YSA9IGRhdGEuY29tYm9zO1xuXG4gICAgaWYgKGNvbWJvc0RhdGEpIHtcbiAgICAgIHZhciBjb21ib1RyZWVzID0gcGxhaW5Db21ib3NUb1RyZWVzKGNvbWJvc0RhdGEsIGRhdGEubm9kZXMpO1xuICAgICAgdGhpcy5zZXQoJ2NvbWJvVHJlZXMnLCBjb21ib1RyZWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXQoJ2NvbWJvVHJlZXMnLCBbXSk7XG4gICAgfVxuXG4gICAgdGhpcy5kaWZmSXRlbXMoJ25vZGUnLCBpdGVtcywgZGF0YS5ub2Rlcyk7XG4gICAgZWFjaChpdGVtTWFwLCBmdW5jdGlvbiAoaXRlbSwgaWQpIHtcbiAgICAgIGl0ZW1NYXBbaWRdLmdldE1vZGVsKCkuZGVwdGggPSAwO1xuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2VkZ2UnKSByZXR1cm47XG5cbiAgICAgIGlmIChpdGVtLmdldFR5cGUgJiYgaXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgZGVsZXRlIGl0ZW1NYXBbaWRdO1xuICAgICAgICBpdGVtLmRlc3Ryb3koKTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbXMubm9kZXMuaW5kZXhPZihpdGVtKSA8IDApIHtcbiAgICAgICAgZGVsZXRlIGl0ZW1NYXBbaWRdO1xuICAgICAgICBzZWxmLnJlbW92ZShpdGVtLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIGNsZWFyIHRoZSBkZXN0cm95ZWQgY29tYm9zIGhlcmUgdG8gYXZvaWQgcmVtb3Zpbmcgc3ViIG5vZGVzIGJlZm9yZSByZW1vdmluZyB0aGUgcGFyZW50IGNvbWJvXG5cbiAgICB2YXIgY29tYm9JdGVtcyA9IHRoaXMuZ2V0Q29tYm9zKCk7XG4gICAgdmFyIGNvbWJvc0xlbmd0aCA9IGNvbWJvSXRlbXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IGNvbWJvc0xlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoY29tYm9JdGVtc1tpXS5kZXN0cm95ZWQpIHtcbiAgICAgICAgY29tYm9JdGVtcy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfSAvLyBwcm9jZXNzIHRoZSBkYXRhIHRvIHRyZWUgc3RydWN0dXJlXG5cblxuICAgIGlmIChjb21ib3NEYXRhKSB7XG4gICAgICAvLyBhZGQgY29tYm9zXG4gICAgICBzZWxmLmFkZENvbWJvcyhjb21ib3NEYXRhKTtcblxuICAgICAgaWYgKCF0aGlzLmdldCgnZ3JvdXBCeVR5cGVzJykpIHtcbiAgICAgICAgdGhpcy5zb3J0Q29tYm9zKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kaWZmSXRlbXMoJ2VkZ2UnLCBpdGVtcywgZGF0YS5lZGdlcyk7XG4gICAgZWFjaChpdGVtTWFwLCBmdW5jdGlvbiAoaXRlbSwgaWQpIHtcbiAgICAgIGlmIChpdGVtLmdldFR5cGUgJiYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnbm9kZScgfHwgaXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpKSByZXR1cm47XG5cbiAgICAgIGlmIChpdGVtcy5lZGdlcy5pbmRleE9mKGl0ZW0pIDwgMCkge1xuICAgICAgICBkZWxldGUgaXRlbU1hcFtpZF07XG4gICAgICAgIHNlbGYucmVtb3ZlKGl0ZW0sIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNldCh7XG4gICAgICBub2RlczogaXRlbXMubm9kZXMsXG4gICAgICBlZGdlczogaXRlbXMuZWRnZXNcbiAgICB9KTtcbiAgICB2YXIgbGF5b3V0Q29udHJvbGxlciA9IHRoaXMuZ2V0KCdsYXlvdXRDb250cm9sbGVyJyk7XG5cbiAgICBpZiAobGF5b3V0Q29udHJvbGxlcikge1xuICAgICAgbGF5b3V0Q29udHJvbGxlci5jaGFuZ2VEYXRhKCk7XG5cbiAgICAgIGlmIChzZWxmLmdldCgnYW5pbWF0ZScpICYmICFsYXlvdXRDb250cm9sbGVyLmdldExheW91dFR5cGUoKSkge1xuICAgICAgICAvLyDlpoLmnpzmsqHmnInmjIflrprluIPlsYBcbiAgICAgICAgc2VsZi5wb3NpdGlvbnNBbmltYXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLmF1dG9QYWludCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgY2FudmFzLnNldCgnbG9jYWxSZWZyZXNoJywgbG9jYWxSZWZyZXNoKTtcbiAgICB9LCAxNik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDnp4HmnInmlrnms5XvvIzlnKggcmVuZGVyIOWSjCBjaGFuZ2VEYXRhIOeahOaXtuWAmeaJuemHj+a3u+WKoOaVsOaNruS4reaJgOacieW5s+mTuueahCBjb21ib3NcbiAgICogQHBhcmFtIHtDb21ib0NvbmZpZ1tdfSBjb21ib3Mg5bmz6ZO655qEIGNvbWJvcyDmlbDmja5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5hZGRDb21ib3MgPSBmdW5jdGlvbiAoY29tYm9zKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjb21ib1RyZWVzID0gc2VsZi5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICBpdGVtQ29udHJvbGxlci5hZGRDb21ib3MoY29tYm9UcmVlcywgY29tYm9zKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNruW3sue7j+WtmOWcqOeahOiKgueCueaIliBjb21ibyDliJvlu7rmlrDnmoQgY29tYm9cbiAgICogQHBhcmFtIGNvbWJvIGNvbWJvIElEIOaIliBDb21ibyDphY3nva5cbiAgICogQHBhcmFtIGNoaWxkcmVuIOa3u+WKoOWIsCBDb21ibyDkuK3nmoTlhYPntKDvvIzljIXmi6zoioLngrnlkowgY29tYm9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5jcmVhdGVDb21ibyA9IGZ1bmN0aW9uIChjb21ibywgY2hpbGRyZW4pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgZmFsc2UpOyAvLyBzdGVwIDE6IOWIm+W7uuaWsOeahCBDb21ib1xuXG4gICAgdmFyIGNvbWJvSWQgPSAnJztcbiAgICB2YXIgY29tYm9Db25maWc7XG4gICAgaWYgKCFjb21ibykgcmV0dXJuO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm9JZCA9IGNvbWJvO1xuICAgICAgY29tYm9Db25maWcgPSB7XG4gICAgICAgIGlkOiBjb21ib1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tYm9JZCA9IGNvbWJvLmlkO1xuXG4gICAgICBpZiAoIWNvbWJvSWQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdDcmVhdGUgY29tYm8gZmFpbGVkLiBQbGVhc2UgYXNzaWduIGEgdW5pcXVlIHN0cmluZyBpZCBmb3IgdGhlIGFkZGluZyBjb21iby4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb21ib0NvbmZpZyA9IGNvbWJvO1xuICAgIH0gLy8gc3RlcDI6IOabtOaWsCBjaGlsZHJlbu+8jOagueaNruexu+Wei+a3u+WKoCBjb21ib0lkIOaIliBwYXJlbnRJZFxuXG5cbiAgICB2YXIgdHJlZXMgPSBjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICAgICAgdmFyIGl0ZW0gPSBfdGhpcy5maW5kQnlJZChlbGVtZW50SWQpO1xuXG4gICAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgICB2YXIgdHlwZSA9ICcnO1xuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSkgdHlwZSA9IGl0ZW0uZ2V0VHlwZSgpO1xuICAgICAgdmFyIGNJdGVtID0ge1xuICAgICAgICBpZDogaXRlbS5nZXRJRCgpLFxuICAgICAgICBpdGVtVHlwZTogdHlwZVxuICAgICAgfTtcblxuICAgICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgICAgY0l0ZW0ucGFyZW50SWQgPSBjb21ib0lkO1xuICAgICAgICBtb2RlbC5wYXJlbnRJZCA9IGNvbWJvSWQ7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdub2RlJykge1xuICAgICAgICBjSXRlbS5jb21ib0lkID0gY29tYm9JZDtcbiAgICAgICAgbW9kZWwuY29tYm9JZCA9IGNvbWJvSWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjSXRlbTtcbiAgICB9KTtcbiAgICBjb21ib0NvbmZpZy5jaGlsZHJlbiA9IHRyZWVzOyAvLyBzdGVwIDM6IOa3u+WKoCBDb21ib++8jGFkZEl0ZW0g5pe25Lya5bCG5a2Q5bCG5YWD57Sg5re75Yqg5YiwIENvbWJvIOS4rVxuXG4gICAgdGhpcy5hZGRJdGVtKCdjb21ibycsIGNvbWJvQ29uZmlnLCBmYWxzZSk7XG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgZmFsc2UpOyAvLyBzdGVwNDog5pu05pawIGNvbWJvVHJlZXMg57uT5p6EXG5cbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICB0cmF2ZXJzZVRyZWVVcChjdHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmIChjaGlsZC5pZCA9PT0gY29tYm9JZCkge1xuICAgICAgICAgIGNoaWxkLml0ZW1UeXBlID0gJ2NvbWJvJztcbiAgICAgICAgICBjaGlsZC5jaGlsZHJlbiA9IHRyZWVzO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoY29tYm9UcmVlcykge1xuICAgICAgdGhpcy5zb3J0Q29tYm9zKCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog6Kej5pWjIGNvbWJvXG4gICAqIEBwYXJhbSB7U3RyaW5nIHwgSU5vZGUgfCBJQ29tYm99IGNvbWJvIOmcgOimgeiiq+ino+aVo+eahCBDb21ibyBpdGVtIOaIliBpZFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVuY29tYm8gPSBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjb21ib0l0ZW0gPSBjb21ibztcblxuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvSXRlbSA9IHRoaXMuZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIGlmICghY29tYm9JdGVtIHx8IGNvbWJvSXRlbS5nZXRUeXBlICYmIGNvbWJvSXRlbS5nZXRUeXBlKCkgIT09ICdjb21ibycpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGl0ZW0gaXMgbm90IGEgY29tYm8hJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudElkID0gY29tYm9JdGVtLmdldE1vZGVsKCkucGFyZW50SWQ7XG4gICAgdmFyIGNvbWJvVHJlZXMgPSBzZWxmLmdldCgnY29tYm9UcmVlcycpO1xuICAgIGlmICghY29tYm9UcmVlcykgY29tYm9UcmVlcyA9IFtdO1xuICAgIHZhciBpdGVtTWFwID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKTtcbiAgICB2YXIgY29tYm9JZCA9IGNvbWJvSXRlbS5nZXQoJ2lkJyk7XG4gICAgdmFyIHRyZWVUb0JlVW5jb21ibztcbiAgICB2YXIgYnJvdGhlcnMgPSBbXTtcbiAgICB2YXIgY29tYm9JdGVtcyA9IHRoaXMuZ2V0KCdjb21ib3MnKTtcbiAgICB2YXIgcGFyZW50SXRlbSA9IHRoaXMuZmluZEJ5SWQocGFyZW50SWQpO1xuICAgIGNvbWJvVHJlZXMuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgIGlmICh0cmVlVG9CZVVuY29tYm8pIHJldHVybjsgLy8gdGVybWluYXRlIHRoZSBmb3JFYWNoXG5cbiAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCBmdW5jdGlvbiAoc3VidHJlZSkge1xuICAgICAgICB2YXIgX2E7IC8vIGZpbmQgdGhlIGNvbWJvIHRvIGJlIHVuY29tYm9lZCwgZGVsZXRlIHRoZSBjb21ibyBmcm9tIG1hcCBhbmQgY2FjaGVcblxuXG4gICAgICAgIGlmIChzdWJ0cmVlLmlkID09PSBjb21ib0lkKSB7XG4gICAgICAgICAgdHJlZVRvQmVVbmNvbWJvID0gc3VidHJlZTsgLy8gZGVsZXRlIHRoZSByZWxhdGVkIGVkZ2VzXG5cbiAgICAgICAgICB2YXIgZWRnZXMgPSBjb21ib0l0ZW0uZ2V0RWRnZXMoKTtcbiAgICAgICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICBfdGhpcy5yZW1vdmVJdGVtKGVkZ2UsIGZhbHNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YXIgaW5kZXggPSBjb21ib0l0ZW1zLmluZGV4T2YoY29tYm9JdGVtKTtcbiAgICAgICAgICBjb21ib0l0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgZGVsZXRlIGl0ZW1NYXBbY29tYm9JZF07XG4gICAgICAgICAgY29tYm9JdGVtLmRlc3Ryb3koKTtcblxuICAgICAgICAgIF90aGlzLmVtaXQoJ2FmdGVycmVtb3ZlaXRlbScsIHtcbiAgICAgICAgICAgIGl0ZW06IGNvbWJvSXRlbSxcbiAgICAgICAgICAgIHR5cGU6ICdjb21ibydcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSAvLyBmaW5kIHRoZSBwYXJlbnQgdG8gcmVtb3ZlIHRoZSBjb21ibyBmcm9tIHRoZSBjb21ibydzIGJyb3RoZXJzIGFycmF5IGFuZCBhZGQgdGhlIGNvbWJvJ3MgY2hpbGRyZW4gdG8gdGhlIGNvbWJvJ3MgYnJvdGhlcnMgYXJyYXkgaW4gdGhlIHRyZWVcblxuXG4gICAgICAgIGlmIChwYXJlbnRJZCAmJiB0cmVlVG9CZVVuY29tYm8gJiYgc3VidHJlZS5pZCA9PT0gcGFyZW50SWQpIHtcbiAgICAgICAgICBwYXJlbnRJdGVtLnJlbW92ZUNvbWJvKGNvbWJvSXRlbSk7XG4gICAgICAgICAgYnJvdGhlcnMgPSBzdWJ0cmVlLmNoaWxkcmVuOyAvLyB0aGUgY29tYm8ncyBicm90aGVyc1xuICAgICAgICAgIC8vIHJlbW92ZSB0aGUgY29tYm8gZnJvbSBpdHMgYnJvdGhlcnMgYXJyYXlcblxuICAgICAgICAgIHZhciBpbmRleCA9IGJyb3RoZXJzLmluZGV4T2YodHJlZVRvQmVVbmNvbWJvKTtcblxuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGJyb3RoZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfSAvLyBhcHBlbmQgdGhlIGNvbWJvJ3MgY2hpbGRyZW4gdG8gdGhlIGNvbWJvJ3MgYnJvdGhlcnMgYXJyYXlcblxuXG4gICAgICAgICAgKF9hID0gdHJlZVRvQmVVbmNvbWJvLmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgIHZhciBpdGVtID0gX3RoaXMuZmluZEJ5SWQoY2hpbGQuaWQpO1xuXG4gICAgICAgICAgICB2YXIgY2hpbGRNb2RlbCA9IGl0ZW0uZ2V0TW9kZWwoKTtcblxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgICBjaGlsZC5wYXJlbnRJZCA9IHBhcmVudElkO1xuICAgICAgICAgICAgICBkZWxldGUgY2hpbGQuY29tYm9JZDtcbiAgICAgICAgICAgICAgY2hpbGRNb2RlbC5wYXJlbnRJZCA9IHBhcmVudElkOyAvLyB1cGRhdGUgdGhlIHBhcmVudElkIG9mIHRoZSBtb2RlbFxuXG4gICAgICAgICAgICAgIGRlbGV0ZSBjaGlsZE1vZGVsLmNvbWJvSWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ25vZGUnKSB7XG4gICAgICAgICAgICAgIGNoaWxkLmNvbWJvSWQgPSBwYXJlbnRJZDtcbiAgICAgICAgICAgICAgY2hpbGRNb2RlbC5jb21ib0lkID0gcGFyZW50SWQ7IC8vIHVwZGF0ZSB0aGUgcGFyZW50SWQgb2YgdGhlIG1vZGVsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcmVudEl0ZW0uYWRkQ2hpbGQoaXRlbSk7XG4gICAgICAgICAgICBicm90aGVycy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pOyAvLyBpZiB0aGUgcGFyZW50SWQgaXMgbm90IGZvdW5kLCByZW1vdmUgdGhlIGNvbWJvIGZyb20gdGhlIHJvb3RzXG5cbiAgICBpZiAoIXBhcmVudElkICYmIHRyZWVUb0JlVW5jb21ibykge1xuICAgICAgdmFyIGluZGV4ID0gY29tYm9UcmVlcy5pbmRleE9mKHRyZWVUb0JlVW5jb21ibyk7XG4gICAgICBjb21ib1RyZWVzLnNwbGljZShpbmRleCwgMSk7IC8vIG1vZGlmeSB0aGUgcGFyZW50SWQgb2YgdGhlIGNoaWxkcmVuXG5cbiAgICAgIChfYSA9IHRyZWVUb0JlVW5jb21iby5jaGlsZHJlbikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGNoaWxkLnBhcmVudElkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHZhciBjaGlsZE1vZGVsID0gX3RoaXMuZmluZEJ5SWQoY2hpbGQuaWQpLmdldE1vZGVsKCk7XG5cbiAgICAgICAgZGVsZXRlIGNoaWxkTW9kZWwucGFyZW50SWQ7IC8vIHVwZGF0ZSB0aGUgcGFyZW50SWQgb2YgdGhlIG1vZGVsXG5cbiAgICAgICAgZGVsZXRlIGNoaWxkTW9kZWwuY29tYm9JZDsgLy8gdXBkYXRlIHRoZSBjb21ib0lkIG9mIHRoZSBtb2RlbFxuXG4gICAgICAgIGlmIChjaGlsZC5pdGVtVHlwZSAhPT0gJ25vZGUnKSBjb21ib1RyZWVzLnB1c2goY2hpbGQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5qC55o2u6IqC54K555qEIGJib3gg5pu05paw5omA5pyJIGNvbWJvcyDnmoTnu5jliLbvvIzljIXmi6wgY29tYm9zIOeahOS9jee9ruWSjOiMg+WbtFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVwZGF0ZUNvbWJvcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjb21ib1RyZWVzID0gdGhpcy5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSBzZWxmLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICB2YXIgaXRlbU1hcCA9IHNlbGYuZ2V0KCdpdGVtTWFwJyk7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICB0cmF2ZXJzZVRyZWVVcChjdHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmICghY2hpbGQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjaGlsZEl0ZW0gPSBpdGVtTWFwW2NoaWxkLmlkXTtcblxuICAgICAgICBpZiAoY2hpbGRJdGVtICYmIGNoaWxkSXRlbS5nZXRUeXBlICYmIGNoaWxkSXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgICAvLyDmm7TmlrDlhbfkvZPnmoQgQ29tYm8g5LmL5YmN5YWI5riF6Zmk5omA5pyJ55qE5bey5pyJ54q25oCB77yM5Lul5YWN5bCGIHN0YXRlIOS4reeahOagt+W8j+abtOaWsOS4uiBDb21ibyDnmoTmoLflvI9cbiAgICAgICAgICB2YXIgc3RhdGVzID0gX19zcHJlYWRBcnJheShbXSwgY2hpbGRJdGVtLmdldFN0YXRlcygpLCB0cnVlKTtcblxuICAgICAgICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5zZXRJdGVtU3RhdGUoY2hpbGRJdGVtLCBzdGF0ZSwgZmFsc2UpO1xuICAgICAgICAgIH0pOyAvLyDmm7TmlrDlhbfkvZPnmoQgQ29tYm9cblxuICAgICAgICAgIGl0ZW1Db250cm9sbGVyLnVwZGF0ZUNvbWJvKGNoaWxkSXRlbSwgY2hpbGQuY2hpbGRyZW4pOyAvLyDmm7TmlrAgQ29tYm8g5ZCO77yM6L+Y5Y6f5bey5pyJ55qE54q25oCBXG5cbiAgICAgICAgICBlYWNoKHN0YXRlcywgZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0SXRlbVN0YXRlKGNoaWxkSXRlbSwgc3RhdGUsIHRydWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBzZWxmLnNvcnRDb21ib3MoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNruiKgueCueeahCBiYm94IOabtOaWsCBjb21ibyDlj4rlhbbnpZblhYggY29tYm9zIOeahOe7mOWItu+8jOWMheaLrCBjb21ib3Mg55qE5L2N572u5ZKM6IyD5Zu0XG4gICAqIEBwYXJhbSB7U3RyaW5nIHwgSUNvbWJvfSBjb21ibyDpnIDopoHooqvmm7TmlrDnmoQgQ29tYm8g5oiWIGlk77yM6Iul5oyH5a6a77yM5YiZ6K+lIENvbWJvIOWPiuaJgOacieelluWFiCBDb21ib2Qg6YO95Lya6KKr5pu05pawXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudXBkYXRlQ29tYm8gPSBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjb21ib0l0ZW0gPSBjb21ibztcbiAgICB2YXIgY29tYm9JZDtcblxuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvSXRlbSA9IHRoaXMuZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIGlmICghY29tYm9JdGVtIHx8IGNvbWJvSXRlbS5nZXRUeXBlICYmIGNvbWJvSXRlbS5nZXRUeXBlKCkgIT09ICdjb21ibycpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGl0ZW0gdG8gYmUgdXBkYXRlZCBpcyBub3QgYSBjb21ibyEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb21ib0lkID0gY29tYm9JdGVtLmdldCgnaWQnKTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gc2VsZi5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIGl0ZW1NYXAgPSBzZWxmLmdldCgnaXRlbU1hcCcpO1xuICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgdHJhdmVyc2VUcmVlVXAoY3RyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBpZiAoIWNoaWxkKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY2hpbGRJdGVtID0gaXRlbU1hcFtjaGlsZC5pZF07XG5cbiAgICAgICAgaWYgKGNvbWJvSWQgPT09IGNoaWxkLmlkICYmIGNoaWxkSXRlbSAmJiBjaGlsZEl0ZW0uZ2V0VHlwZSAmJiBjaGlsZEl0ZW0uZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgICAgLy8g5pu05paw5YW35L2T55qEIENvbWJvIOS5i+WJjeWFiOa4hemZpOaJgOacieeahOW3suacieeKtuaAge+8jOS7peWFjeWwhiBzdGF0ZSDkuK3nmoTmoLflvI/mm7TmlrDkuLogQ29tYm8g55qE5qC35byPXG4gICAgICAgICAgdmFyIHN0YXRlcyA9IF9fc3ByZWFkQXJyYXkoW10sIGNoaWxkSXRlbS5nZXRTdGF0ZXMoKSwgdHJ1ZSk7IC8vIHx8ICFpdGVtLmdldFN0YXRlU3R5bGUoc3RhdGVOYW1lKVxuXG5cbiAgICAgICAgICBlYWNoKHN0YXRlcywgZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRJdGVtLmdldFN0YXRlU3R5bGUoc3RhdGUpKSB7XG4gICAgICAgICAgICAgIF90aGlzLnNldEl0ZW1TdGF0ZShjaGlsZEl0ZW0sIHN0YXRlLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7IC8vIOabtOaWsOWFt+S9k+eahCBDb21ib1xuXG4gICAgICAgICAgaXRlbUNvbnRyb2xsZXIudXBkYXRlQ29tYm8oY2hpbGRJdGVtLCBjaGlsZC5jaGlsZHJlbik7IC8vIOabtOaWsCBDb21ibyDlkI7vvIzov5jljp/lt7LmnInnmoTnirbmgIFcblxuICAgICAgICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZEl0ZW0uZ2V0U3RhdGVTdHlsZShzdGF0ZSkpIHtcbiAgICAgICAgICAgICAgX3RoaXMuc2V0SXRlbVN0YXRlKGNoaWxkSXRlbSwgc3RhdGUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChjb21ib0lkKSBjb21ib0lkID0gY2hpbGQucGFyZW50SWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5pu05paw5qCR57uT5p6E77yM5L6L5aaC56e75Yqo5a2Q5qCR562JXG4gICAqIEBwYXJhbSB7U3RyaW5nIHwgSU5vZGUgfCBJQ29tYm99IGl0ZW0g6ZyA6KaB6KKr5pu05paw55qEIENvbWJvIOaIliDoioLngrkgaWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHBhcmVudElkIOaWsOeahOeItiBjb21ibyBpZO+8jHVuZGVmaW5lZCDku6PooajmsqHmnInniLYgY29tYm9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS51cGRhdGVDb21ib1RyZWUgPSBmdW5jdGlvbiAoaXRlbSwgcGFyZW50SWQsIHN0YWNrKSB7XG4gICAgaWYgKHN0YWNrID09PSB2b2lkIDApIHtcbiAgICAgIHN0YWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgZmFsc2UpO1xuICAgIHZhciB1SXRlbTtcblxuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgdUl0ZW0gPSBzZWxmLmZpbmRCeUlkKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1SXRlbSA9IGl0ZW07XG4gICAgfVxuXG4gICAgdmFyIG1vZGVsID0gdUl0ZW0uZ2V0TW9kZWwoKTtcbiAgICB2YXIgb2xkUGFyZW50SWQgPSBtb2RlbC5jb21ib0lkIHx8IG1vZGVsLnBhcmVudElkO1xuICAgIHZhciB0eXBlID0gJyc7XG4gICAgaWYgKHVJdGVtLmdldFR5cGUpIHR5cGUgPSB1SXRlbS5nZXRUeXBlKCk7IC8vIOiLpSBpdGVtIOaYryBDb21ib++8jOS4lCBwYXJlbnRJZCDmmK/lhbblrZDlrZkgY29tYm8g55qEIGlk77yM5YiZ6K2m5ZGK5bm257uI5q2iXG5cbiAgICBpZiAocGFyZW50SWQgJiYgdHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgdmFyIGNvbWJvVHJlZXMgPSB0aGlzLmdldCgnY29tYm9UcmVlcycpO1xuICAgICAgdmFyIHZhbGlkXzEgPSB0cnVlO1xuICAgICAgdmFyIGl0ZW1TdWJUcmVlXzE7XG4gICAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgICAgaWYgKGl0ZW1TdWJUcmVlXzEpIHJldHVybjtcbiAgICAgICAgdHJhdmVyc2VUcmVlKGN0cmVlLCBmdW5jdGlvbiAoc3ViVHJlZSkge1xuICAgICAgICAgIGlmIChpdGVtU3ViVHJlZV8xKSByZXR1cm47IC8vIOaJvuWIsOS7jiBpdGVtIOW8gOWni+eahOWtkOagkVxuXG4gICAgICAgICAgaWYgKHN1YlRyZWUuaWQgPT09IHVJdGVtLmdldElEKCkpIHtcbiAgICAgICAgICAgIGl0ZW1TdWJUcmVlXzEgPSBzdWJUcmVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pOyAvLyDlnKjku6UgaXRlbSDkuLrmoLnnmoTlrZDmoJHkuK3lr7vmib7kuI4gcGFyZW50SWQg55u45ZCM55qE5ZCO57un5YWD57SgXG5cbiAgICAgIHRyYXZlcnNlVHJlZShpdGVtU3ViVHJlZV8xLCBmdW5jdGlvbiAoc3ViVHJlZSkge1xuICAgICAgICBpZiAoc3ViVHJlZS5pZCA9PT0gcGFyZW50SWQpIHtcbiAgICAgICAgICB2YWxpZF8xID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTsgLy8gcGFyZW50SWQg5pivIGl0ZW0g55qE5LiA5Liq5ZCO57un5YWD57Sg77yM5LiN6IO96L+b6KGM5pu05pawXG5cbiAgICAgIGlmICghdmFsaWRfMSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byB1cGRhdGUgdGhlIGNvbWJvIHRyZWUhIFRoZSBwYXJlbnRJZCBwb2ludHMgdG8gYSBkZXNjZW5kYW50IG9mIHRoZSBjb21ibyEnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHZhciBiZWZvcmVEYXRhID0ge30sXG4gICAgICAgICAgYWZ0ZXJEYXRhID0ge307XG5cbiAgICAgIGlmICh0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICAgIGJlZm9yZURhdGEuY29tYm9zID0gW3tcbiAgICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgICAgcGFyZW50SWQ6IG1vZGVsLnBhcmVudElkXG4gICAgICAgIH1dO1xuICAgICAgICBhZnRlckRhdGEuY29tYm9zID0gW3tcbiAgICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgICAgcGFyZW50SWQ6IHBhcmVudElkXG4gICAgICAgIH1dO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbm9kZScpIHtcbiAgICAgICAgYmVmb3JlRGF0YS5ub2RlcyA9IFt7XG4gICAgICAgICAgaWQ6IG1vZGVsLmlkLFxuICAgICAgICAgIHBhcmVudElkOiBtb2RlbC5jb21ib0lkXG4gICAgICAgIH1dO1xuICAgICAgICBhZnRlckRhdGEubm9kZXMgPSBbe1xuICAgICAgICAgIGlkOiBtb2RlbC5pZCxcbiAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWRcbiAgICAgICAgfV07XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHVzaFN0YWNrKCd1cGRhdGVDb21ib1RyZWUnLCB7XG4gICAgICAgIGJlZm9yZTogYmVmb3JlRGF0YSxcbiAgICAgICAgYWZ0ZXI6IGFmdGVyRGF0YVxuICAgICAgfSk7XG4gICAgfSAvLyDlvZMgY29tYm8g5a2Y5ZyoIHBhcmVudElkIOaIliBjb21ib0lkIOaXtu+8jOaJjeWwhuWFtuenu+mZpFxuXG5cbiAgICBpZiAobW9kZWwucGFyZW50SWQgfHwgbW9kZWwuY29tYm9JZCkge1xuICAgICAgdmFyIGNvbWJvID0gdGhpcy5maW5kQnlJZChtb2RlbC5wYXJlbnRJZCB8fCBtb2RlbC5jb21ib0lkKTtcblxuICAgICAgaWYgKGNvbWJvKSB7XG4gICAgICAgIGNvbWJvLnJlbW92ZUNoaWxkKHVJdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgbW9kZWwucGFyZW50SWQgPSBwYXJlbnRJZDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdub2RlJykge1xuICAgICAgbW9kZWwuY29tYm9JZCA9IHBhcmVudElkO1xuICAgIH0gLy8g5Y+q5pyJ5b2T56e75YWl5Yiw5oyH5a6aIGNvbWJvIOaXtuaJjea3u+WKoFxuXG5cbiAgICBpZiAocGFyZW50SWQpIHtcbiAgICAgIHZhciBwYXJlbnRDb21ibyA9IHRoaXMuZmluZEJ5SWQocGFyZW50SWQpO1xuXG4gICAgICBpZiAocGFyZW50Q29tYm8pIHtcbiAgICAgICAgLy8g5bCG5YWD57Sg5re75Yqg5YiwIHBhcmVudENvbWJvIOS4rVxuICAgICAgICBwYXJlbnRDb21iby5hZGRDaGlsZCh1SXRlbSk7XG4gICAgICB9XG4gICAgfSAvLyDlpoLmnpzljp/lhYjmnInniLbkurIgY29tYm/vvIzliJnku47ljp/niLYgY29tYm8g55qE5a2Q5YWD57Sg5pWw57uE5Lit5Yig6ZmkXG5cblxuICAgIGlmIChvbGRQYXJlbnRJZCkge1xuICAgICAgdmFyIHBhcmVudENvbWJvID0gdGhpcy5maW5kQnlJZChvbGRQYXJlbnRJZCk7XG5cbiAgICAgIGlmIChwYXJlbnRDb21ibykge1xuICAgICAgICAvLyDlsIblhYPntKDku44gcGFyZW50Q29tYm8g5Lit56e76ZmkXG4gICAgICAgIHBhcmVudENvbWJvLnJlbW92ZUNoaWxkKHVJdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbmV3Q29tYm9UcmVlcyA9IHJlY29uc3RydWN0VHJlZSh0aGlzLmdldCgnY29tYm9UcmVlcycpLCBtb2RlbC5pZCwgcGFyZW50SWQpO1xuICAgIHRoaXMuc2V0KCdjb21ib1RyZWVzJywgbmV3Q29tYm9UcmVlcyk7XG4gICAgdGhpcy51cGRhdGVDb21ib3MoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWvvOWHuuWbvuaVsOaNrlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IGRhdGFcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlcyA9IFtdO1xuICAgIHZhciBlZGdlcyA9IFtdO1xuICAgIHZhciBjb21ib3MgPSBbXTtcbiAgICBlYWNoKHRoaXMuZ2V0KCdub2RlcycpLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgbm9kZXMucHVzaChub2RlLmdldE1vZGVsKCkpO1xuICAgIH0pO1xuICAgIGVhY2godGhpcy5nZXQoJ2VkZ2VzJyksIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBlZGdlcy5wdXNoKGVkZ2UuZ2V0TW9kZWwoKSk7XG4gICAgfSk7XG4gICAgZWFjaCh0aGlzLmdldCgnY29tYm9zJyksIGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgY29tYm9zLnB1c2goY29tYm8uZ2V0TW9kZWwoKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGVzOiBub2RlcyxcbiAgICAgIGVkZ2VzOiBlZGdlcyxcbiAgICAgIGNvbWJvczogY29tYm9zXG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOaUueWPmOeUu+W4g+Wkp+Wwj1xuICAgKiBAcGFyYW0gIHtudW1iZXJ9IHdpZHRoICDnlLvluIPlrr3luqZcbiAgICogQHBhcmFtICB7bnVtYmVyfSBoZWlnaHQg55S75biD6auY5bqmXG4gICAqIEByZXR1cm4ge29iamVjdH0gdGhpc1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNoYW5nZVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgIHZhciB2aWV3Q29udHJvbGxlciA9IHRoaXMuZ2V0KCd2aWV3Q29udHJvbGxlcicpO1xuICAgIHZpZXdDb250cm9sbGVyLmNoYW5nZVNpemUod2lkdGgsIGhlaWdodCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDlvZPmupDmlbDmja7lnKjlpJbpg6jlj5HnlJ/lj5jmm7Tml7bvvIzmoLnmja7mlrDmlbDmja7liLfmlrDop4blm77jgILkvYbmmK/kuI3liLfmlrDoioLngrnkvY3nva5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmVtaXQoJ2JlZm9yZWdyYXBocmVmcmVzaCcpO1xuXG4gICAgaWYgKHNlbGYuZ2V0KCdhbmltYXRlJykpIHtcbiAgICAgIHNlbGYucG9zaXRpb25zQW5pbWF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbm9kZXMgPSBzZWxmLmdldCgnbm9kZXMnKTtcbiAgICAgIHZhciBlZGdlcyA9IHNlbGYuZ2V0KCdlZGdlcycpO1xuICAgICAgdmFyIHZlZGdlcyA9IHNlbGYuZ2V0KCdlZGdlcycpO1xuICAgICAgZWFjaChub2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgbm9kZS5yZWZyZXNoKCk7XG4gICAgICB9KTtcbiAgICAgIGVhY2goZWRnZXMsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIGVkZ2UucmVmcmVzaCgpO1xuICAgICAgfSk7XG4gICAgICBlYWNoKHZlZGdlcywgZnVuY3Rpb24gKHZlZGdlKSB7XG4gICAgICAgIHZlZGdlLnJlZnJlc2goKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbGYuZW1pdCgnYWZ0ZXJncmFwaHJlZnJlc2gnKTtcbiAgICBzZWxmLmF1dG9QYWludCgpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5b2T5YmN5Zu+5Lit5omA5pyJ6IqC54K555qEaXRlbeWunuS+i1xuICAgKiBAcmV0dXJuIHtJTm9kZX0gaXRlbeaVsOe7hFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldE5vZGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnbm9kZXMnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluW9k+WJjeWbvuS4reaJgOaciei+ueeahGl0ZW3lrp7kvotcbiAgICogQHJldHVybiB7SUVkZ2V9IGl0ZW3mlbDnu4RcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRFZGdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2VkZ2VzJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blm77kuK3miYDmnInnmoQgY29tYm8g5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Q29tYm9zID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnY29tYm9zJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bmjIflrpogQ29tYm8g5Lit5omA5pyJ55qE6IqC54K5XG4gICAqIEBwYXJhbSBjb21ib0lkIGNvbWJvIElEXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Q29tYm9DaGlsZHJlbiA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvID0gdGhpcy5maW5kQnlJZChjb21ibyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21ibyB8fCBjb21iby5nZXRUeXBlICYmIGNvbWJvLmdldFR5cGUoKSAhPT0gJ2NvbWJvJykge1xuICAgICAgY29uc29sZS53YXJuKCdUaGUgY29tYm8gZG9lcyBub3QgZXhpc3QhJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbWJvLmdldENoaWxkcmVuKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4gZ3JhcGgg5LiK55qEIGFuaW1hdGVDZmcg6L+b6KGM6KeG5Zu+5Lit6IqC54K55L2N572u5Yqo55S75o6l5Y+jXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucG9zaXRpb25zQW5pbWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5lbWl0KCdiZWZvcmVhbmltYXRlJyk7XG4gICAgdmFyIGFuaW1hdGVDZmcgPSBzZWxmLmdldCgnYW5pbWF0ZUNmZycpO1xuICAgIHZhciBvbkZyYW1lID0gYW5pbWF0ZUNmZy5vbkZyYW1lO1xuICAgIHZhciBub2RlcyA9IHNlbGYuZ2V0Tm9kZXMoKTtcbiAgICB2YXIgdG9Ob2RlcyA9IG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IG1vZGVsLmlkLFxuICAgICAgICB4OiBtb2RlbC54LFxuICAgICAgICB5OiBtb2RlbC55XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgaWYgKHNlbGYuaXNBbmltYXRpbmcoKSkge1xuICAgICAgc2VsZi5zdG9wQW5pbWF0ZSgpO1xuICAgIH1cblxuICAgIHZhciBjYW52YXMgPSBzZWxmLmdldCgnY2FudmFzJyk7XG4gICAgY2FudmFzLmFuaW1hdGUoZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICBlYWNoKHRvTm9kZXMsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHZhciBub2RlID0gc2VsZi5maW5kQnlJZChkYXRhLmlkKTtcblxuICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgb3JpZ2luQXR0cnMgPSBub2RlLmdldCgnb3JpZ2luQXR0cnMnKTtcbiAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXQoJ21vZGVsJyk7XG5cbiAgICAgICAgaWYgKCFvcmlnaW5BdHRycykge1xuICAgICAgICAgIHZhciBjb250YWluZXJNYXRyaXggPSBub2RlLmdldENvbnRhaW5lcigpLmdldE1hdHJpeCgpO1xuICAgICAgICAgIGlmICghY29udGFpbmVyTWF0cml4KSBjb250YWluZXJNYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgICAgICAgb3JpZ2luQXR0cnMgPSB7XG4gICAgICAgICAgICB4OiBjb250YWluZXJNYXRyaXhbNl0sXG4gICAgICAgICAgICB5OiBjb250YWluZXJNYXRyaXhbN11cbiAgICAgICAgICB9O1xuICAgICAgICAgIG5vZGUuc2V0KCdvcmlnaW5BdHRycycsIG9yaWdpbkF0dHJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvbkZyYW1lKSB7XG4gICAgICAgICAgdmFyIGF0dHJzID0gb25GcmFtZShub2RlLCByYXRpbywgZGF0YSwgb3JpZ2luQXR0cnMpO1xuICAgICAgICAgIG5vZGUuc2V0KCdtb2RlbCcsIE9iamVjdC5hc3NpZ24obW9kZWwsIGF0dHJzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW9kZWwueCA9IG9yaWdpbkF0dHJzLnggKyAoZGF0YS54IC0gb3JpZ2luQXR0cnMueCkgKiByYXRpbztcbiAgICAgICAgICBtb2RlbC55ID0gb3JpZ2luQXR0cnMueSArIChkYXRhLnkgLSBvcmlnaW5BdHRycy55KSAqIHJhdGlvO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHNlbGYucmVmcmVzaFBvc2l0aW9ucygpO1xuICAgIH0sIHtcbiAgICAgIGR1cmF0aW9uOiBhbmltYXRlQ2ZnLmR1cmF0aW9uLFxuICAgICAgZWFzaW5nOiBhbmltYXRlQ2ZnLmVhc2luZyxcbiAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiBjYWxsYmFjaygpIHtcbiAgICAgICAgZWFjaChub2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICBub2RlLnNldCgnb3JpZ2luQXR0cnMnLCBudWxsKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGFuaW1hdGVDZmcuY2FsbGJhY2spIHtcbiAgICAgICAgICBhbmltYXRlQ2ZnLmNhbGxiYWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmVtaXQoJ2FmdGVyYW5pbWF0ZScpO1xuICAgICAgICBzZWxmLmFuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5b2T6IqC54K55L2N572u5Zyo5aSW6YOo5Y+R55Sf5pS55Y+Y5pe277yM5Yi35paw5omA5pyJ6IqC54K55L2N572u77yM6YeN6K6h566X6L65XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVmcmVzaFBvc2l0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5lbWl0KCdiZWZvcmVncmFwaHJlZnJlc2hwb3NpdGlvbicpO1xuICAgIHZhciBub2RlcyA9IHNlbGYuZ2V0KCdub2RlcycpO1xuICAgIHZhciBlZGdlcyA9IHNlbGYuZ2V0KCdlZGdlcycpO1xuICAgIHZhciB2ZWRnZXMgPSBzZWxmLmdldCgndmVkZ2VzJyk7XG4gICAgdmFyIGNvbWJvcyA9IHNlbGYuZ2V0KCdjb21ib3MnKTtcbiAgICB2YXIgbW9kZWw7XG4gICAgdmFyIHVwZGF0ZWROb2RlcyA9IHt9O1xuICAgIGVhY2gobm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBtb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcbiAgICAgIHZhciBvcmlnaW5BdHRycyA9IG5vZGUuZ2V0KCdvcmlnaW5BdHRycycpO1xuXG4gICAgICBpZiAob3JpZ2luQXR0cnMgJiYgbW9kZWwueCA9PT0gb3JpZ2luQXR0cnMueCAmJiBtb2RlbC55ID09PSBvcmlnaW5BdHRycy55KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNoYW5nZWQgPSBub2RlLnVwZGF0ZVBvc2l0aW9uKHtcbiAgICAgICAgeDogbW9kZWwueCxcbiAgICAgICAgeTogbW9kZWwueVxuICAgICAgfSk7XG4gICAgICB1cGRhdGVkTm9kZXNbbW9kZWwuaWRdID0gY2hhbmdlZDtcbiAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB1cGRhdGVkTm9kZXNbbW9kZWwuY29tYm9JZF0gPSB1cGRhdGVkTm9kZXNbbW9kZWwuY29tYm9JZF0gfHwgY2hhbmdlZDtcbiAgICB9KTtcblxuICAgIGlmIChjb21ib3MgJiYgY29tYm9zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgc2VsZi51cGRhdGVDb21ib3MoKTtcbiAgICB9XG5cbiAgICBlYWNoKGVkZ2VzLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIHNvdXJjZU1vZGVsID0gZWRnZS5nZXRTb3VyY2UoKS5nZXRNb2RlbCgpO1xuICAgICAgdmFyIHRhcmdldCA9IGVkZ2UuZ2V0VGFyZ2V0KCk7IC8vIOmBv+WFjSB0YXJnZXQg5piv57qv5a+56LGh55qE5oOF5Ya15LiL6LCD55SoIGdldE1vZGVsIOaWueazlVxuICAgICAgLy8g5ouW5Yqo55Sf5oiQ6L6555qE5pe25YCZIHRhcmdldCDkvJrmmK/nuq/lr7nosaFcblxuICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KHRhcmdldCkpIHtcbiAgICAgICAgdmFyIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG5cbiAgICAgICAgaWYgKHVwZGF0ZWROb2Rlc1tzb3VyY2VNb2RlbC5pZF0gfHwgdXBkYXRlZE5vZGVzW3RhcmdldE1vZGVsLmlkXSB8fCBlZGdlLmdldE1vZGVsKCkuaXNDb21ib0VkZ2UpIHtcbiAgICAgICAgICBlZGdlLnJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGVhY2godmVkZ2VzLCBmdW5jdGlvbiAodmVkZ2UpIHtcbiAgICAgIHZlZGdlLnJlZnJlc2goKTtcbiAgICB9KTtcbiAgICBzZWxmLmVtaXQoJ2FmdGVyZ3JhcGhyZWZyZXNocG9zaXRpb24nKTtcbiAgICBzZWxmLmF1dG9QYWludCgpO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnN0b3BBbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ2V0KCdjYW52YXMnKS5zdG9wQW5pbWF0ZSgpO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmlzQW5pbWF0aW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmFuaW1hdGluZztcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluW9k+WJjeinhuWPo+S8uOe8qeavlOS+i1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9IOavlOS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFpvb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1hdHJpeCA9IHRoaXMuZ2V0KCdncm91cCcpLmdldE1hdHJpeCgpO1xuICAgIHJldHVybiBtYXRyaXggPyBtYXRyaXhbMF0gOiAxO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5b2T5YmN55qE6KGM5Li65qih5byPXG4gICAqIEByZXR1cm4ge3N0cmluZ30g5b2T5YmN6KGM5Li65qih5byPXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Q3VycmVudE1vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1vZGVDb250cm9sbGVyID0gdGhpcy5nZXQoJ21vZGVDb250cm9sbGVyJyk7XG4gICAgcmV0dXJuIG1vZGVDb250cm9sbGVyLmdldE1vZGUoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIh+aNouihjOS4uuaooeW8j1xuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZSDmjIflrprmqKHlvI9cbiAgICogQHJldHVybiB7b2JqZWN0fSB0aGlzXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc2V0TW9kZSA9IGZ1bmN0aW9uIChtb2RlKSB7XG4gICAgdmFyIG1vZGVDb250cm9sbGVyID0gdGhpcy5nZXQoJ21vZGVDb250cm9sbGVyJyk7XG4gICAgbW9kZUNvbnRyb2xsZXIuc2V0TW9kZShtb2RlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOa4hemZpOeUu+W4g+WFg+e0oFxuICAgKiBAcmV0dXJuIHtvYmplY3R9IHRoaXNcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIChhdm9pZEVtaXQpIHtcbiAgICB2YXIgX2E7XG5cbiAgICBpZiAoYXZvaWRFbWl0ID09PSB2b2lkIDApIHtcbiAgICAgIGF2b2lkRW1pdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIChfYSA9IHRoaXMuZ2V0KCdjYW52YXMnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsZWFyKCk7XG4gICAgdGhpcy5pbml0R3JvdXBzKCk7IC8vIOa4heepuueUu+W4g+aXtuWQjOaXtua4hemZpOaVsOaNrlxuXG4gICAgdGhpcy5zZXQoe1xuICAgICAgaXRlbU1hcDoge30sXG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW10sXG4gICAgICBncm91cHM6IFtdLFxuICAgICAgY29tYm9zOiBbXSxcbiAgICAgIGNvbWJvVHJlZXM6IFtdXG4gICAgfSk7XG4gICAgaWYgKCFhdm9pZEVtaXQpIHRoaXMuZW1pdCgnYWZ0ZXJyZW5kZXInKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaNouW4g+WxgOmFjee9rumhuVxuICAgKiBAcGFyYW0ge29iamVjdH0gY2ZnIOaWsOW4g+WxgOmFjee9rumhuVxuICAgKiBAcGFyYW0geydjZW50ZXInIHwgJ2JlZ2luJ30gYWxpZ24g5a+56b2Q5pa55byP77yM5Y+v6YCJ5Lit5b+D77yIY2VudGVy77yJ5a+56b2Q5Yiw5a+56b2Q54K577yM5oiW5bem5LiK6KeS77yIYmVnaW7vvInlr7npvZDliLDlr7npvZDngrlcbiAgICogQHBhcmFtIHtJUG9pbnR9IGFsaWduUG9pbnQg55S75biD5LiK55qE5a+56b2Q54K577yM5Li6IENhbnZhcyDlnZDmoIfns7vvvIhDYW52YXMgRE9N77yJXG4gICAqIOiLpSBjZmcg5ZCr5pyJIHR5cGUg5a2X5q615oiW5Li6IFN0cmluZyDnsbvlnovvvIzkuJTkuI7njrDmnInluIPlsYDmlrnms5XkuI3lkIzvvIzliJnmm7TmjaLluIPlsYBcbiAgICog6IulIGNmZyDkuI3ljIXmi6wgdHlwZSDvvIzliJnkv53mjIHljp/mnInluIPlsYDmlrnms5XvvIzku4Xmm7TmlrDluIPlsYDphY3nva7poblcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS51cGRhdGVMYXlvdXQgPSBmdW5jdGlvbiAoY2ZnLCBhbGlnbiwgYWxpZ25Qb2ludCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgbGF5b3V0Q29udHJvbGxlciA9IHRoaXMuZ2V0KCdsYXlvdXRDb250cm9sbGVyJyk7XG5cbiAgICBpZiAoaXNTdHJpbmcoY2ZnKSkge1xuICAgICAgY2ZnID0ge1xuICAgICAgICB0eXBlOiBjZmdcbiAgICAgIH07XG4gICAgfSAvLyBhbGlnbiB0aGUgZ3JhcGggYWZ0ZXIgbGF5b3V0XG5cblxuICAgIGlmIChhbGlnbikge1xuICAgICAgdmFyIHRvUG9pbnRfMSA9IGFsaWduUG9pbnQ7XG5cbiAgICAgIGlmICghdG9Qb2ludF8xKSB7XG4gICAgICAgIGlmIChhbGlnbiA9PT0gJ2JlZ2luJykgdG9Qb2ludF8xID0ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9O2Vsc2UgdG9Qb2ludF8xID0ge1xuICAgICAgICAgIHg6IHRoaXMuZ2V0V2lkdGgoKSAvIDIsXG4gICAgICAgICAgeTogdGhpcy5nZXRIZWlnaHQoKSAvIDJcbiAgICAgICAgfTtcbiAgICAgIH0gLy8gdHJhbnNsYXRlIHRvIHBvaW50IGNvb3JkaW5hdGUgc3lzdGVtXG5cblxuICAgICAgdG9Qb2ludF8xID0gdGhpcy5nZXRQb2ludEJ5Q2FudmFzKHRvUG9pbnRfMS54LCB0b1BvaW50XzEueSk7XG4gICAgICB2YXIgZm9yY2VUeXBlcyA9IFsnZm9yY2UnLCAnZ0ZvcmNlJywgJ2ZydWNodGVybWFuJ107IC8vIGlmIGl0IGlzIGZvcmNlIGxheW91dCwgb25seSBjZW50ZXIgdGFrZXMgZWZmZWN0LCBhbmQgYXNzaWduIGNlbnRlciBmb3JjZVxuXG4gICAgICBpZiAoZm9yY2VUeXBlcy5pbmNsdWRlcyhjZmcudHlwZSkgfHwgIWNmZy50eXBlICYmIGZvcmNlVHlwZXMuaW5jbHVkZXMobGF5b3V0Q29udHJvbGxlciA9PT0gbnVsbCB8fCBsYXlvdXRDb250cm9sbGVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXlvdXRDb250cm9sbGVyLmxheW91dFR5cGUpKSB7XG4gICAgICAgIGNmZy5jZW50ZXIgPSBbdG9Qb2ludF8xLngsIHRvUG9pbnRfMS55XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25jZSgnYWZ0ZXJsYXlvdXQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIHZhciBtYXRyaXggPSBfdGhpcy5nZXRHcm91cCgpLmdldE1hdHJpeCgpIHx8IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgICAgICB0b1BvaW50XzEueCA9IHRvUG9pbnRfMS54ICogbWF0cml4WzBdICsgbWF0cml4WzZdO1xuICAgICAgICAgIHRvUG9pbnRfMS55ID0gdG9Qb2ludF8xLnkgKiBtYXRyaXhbMF0gKyBtYXRyaXhbN107XG5cbiAgICAgICAgICB2YXIgX2EgPSBfdGhpcy5nZXRHcm91cCgpLmdldENhbnZhc0JCb3goKSxcbiAgICAgICAgICAgICAgbWluWCA9IF9hLm1pblgsXG4gICAgICAgICAgICAgIG1heFggPSBfYS5tYXhYLFxuICAgICAgICAgICAgICBtaW5ZID0gX2EubWluWSxcbiAgICAgICAgICAgICAgbWF4WSA9IF9hLm1heFk7XG5cbiAgICAgICAgICB2YXIgYmJveFBvaW50ID0ge1xuICAgICAgICAgICAgeDogKG1pblggKyBtYXhYKSAvIDIsXG4gICAgICAgICAgICB5OiAobWluWSArIG1heFkpIC8gMlxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAoYWxpZ24gPT09ICdiZWdpbicpIHtcbiAgICAgICAgICAgIGJib3hQb2ludC54ID0gbWluWDtcbiAgICAgICAgICAgIGJib3hQb2ludC55ID0gbWluWTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBfdGhpcy50cmFuc2xhdGUodG9Qb2ludF8xLnggLSBiYm94UG9pbnQueCwgdG9Qb2ludF8xLnkgLSBiYm94UG9pbnQueSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBvcmlMYXlvdXRDZmcgPSB0aGlzLmdldCgnbGF5b3V0Jyk7XG4gICAgdmFyIGxheW91dENmZyA9IHt9O1xuICAgIE9iamVjdC5hc3NpZ24obGF5b3V0Q2ZnLCBvcmlMYXlvdXRDZmcsIGNmZyk7XG4gICAgdGhpcy5zZXQoJ2xheW91dCcsIGxheW91dENmZyk7XG5cbiAgICBpZiAobGF5b3V0Q29udHJvbGxlci5pc0xheW91dFR5cGVTYW1lKGxheW91dENmZykgJiYgbGF5b3V0Q2ZnLmdwdUVuYWJsZWQgPT09IG9yaUxheW91dENmZy5ncHVFbmFibGVkKSB7XG4gICAgICAvLyBubyB0eXBlIG9yIHNhbWUgdHlwZSwgb3Igc3dpdGNoIHRoZSBncHUgYW5kIGNwdSwgdXBkYXRlIGxheW91dFxuICAgICAgbGF5b3V0Q29udHJvbGxlci51cGRhdGVMYXlvdXRDZmcobGF5b3V0Q2ZnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaGFzIGRpZmZlcmVudCB0eXBlLCBjaGFuZ2UgbGF5b3V0XG4gICAgICBsYXlvdXRDb250cm9sbGVyLmNoYW5nZUxheW91dChsYXlvdXRDZmcpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOmUgOavgeW4g+WxgO+8jGNoYW5nZURhdGEg5pe25LiN5Lya5YaN5L2/55So5Y6f5p2l55qE5biD5bGA5pa55rOV5a+55paw5pWw5o2u6L+b6KGM5biD5bGAXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZGVzdHJveUxheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGF5b3V0Q29udHJvbGxlciA9IHRoaXMuZ2V0KCdsYXlvdXRDb250cm9sbGVyJyk7XG4gICAgbGF5b3V0Q29udHJvbGxlci5kZXN0cm95TGF5b3V0KCk7XG4gIH07XG4gIC8qKlxuICAgKiDph43mlrDku6XlvZPliY3npLrkvovkuK3phY3nva7nmoTlsZ7mgKfov5vooYzkuIDmrKHluIPlsYBcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxheW91dENvbnRyb2xsZXIgPSB0aGlzLmdldCgnbGF5b3V0Q29udHJvbGxlcicpO1xuICAgIHZhciBsYXlvdXRDZmcgPSB0aGlzLmdldCgnbGF5b3V0Jyk7XG4gICAgaWYgKCFsYXlvdXRDZmcgfHwgIWxheW91dENvbnRyb2xsZXIpIHJldHVybjtcblxuICAgIGlmIChsYXlvdXRDZmcud29ya2VyRW5hYmxlZCkge1xuICAgICAgLy8g5aaC5p6c5L2/55Sod2ViIHdvcmtlcuW4g+WxgFxuICAgICAgbGF5b3V0Q29udHJvbGxlci5sYXlvdXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0Q29udHJvbGxlci5sYXlvdXRNZXRob2QpIHtcbiAgICAgIGxheW91dENvbnRyb2xsZXIucmVsYXlvdXQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxheW91dENvbnRyb2xsZXIubGF5b3V0KCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pS26LW35oyH5a6a55qEIGNvbWJvXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgSUNvbWJvfSBjb21ibyBjb21ibyBJRCDmiJYgY29tYm8gaXRlbVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNvbGxhcHNlQ29tYm8gPSBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm8gPSB0aGlzLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbWJvKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBjb21ibyB0byBiZSBjb2xsYXBzZWQgZG9lcyBub3QgZXhpc3QhJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0KCdiZWZvcmVjb2xsYXBzZWV4cGFuZGNvbWJvJywge1xuICAgICAgYWN0aW9uOiAnZXhwYW5kJyxcbiAgICAgIGl0ZW06IGNvbWJvXG4gICAgfSk7XG4gICAgdmFyIGNvbWJvTW9kZWwgPSBjb21iby5nZXRNb2RlbCgpO1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIGl0ZW1Db250cm9sbGVyLmNvbGxhcHNlQ29tYm8oY29tYm8pO1xuICAgIGNvbWJvTW9kZWwuY29sbGFwc2VkID0gdHJ1ZTsgLy8gYWRkIHZpcnR1YWwgZWRnZXNcblxuICAgIHZhciBlZGdlcyA9IHRoaXMuZ2V0RWRnZXMoKS5jb25jYXQodGhpcy5nZXQoJ3ZlZGdlcycpKTsgLy8gZmluZCBhbGwgdGhlIGRlc2NlbmRhbnQgbm9kZXMgYW5kIGNvbWJvc1xuXG4gICAgdmFyIGNub2RlcyA9IFtdO1xuICAgIHZhciBjY29tYm9zID0gW107XG4gICAgdmFyIGNvbWJvVHJlZXMgPSB0aGlzLmdldCgnY29tYm9UcmVlcycpO1xuICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgaWYgKGZvdW5kKSByZXR1cm47IC8vIGlmIHRoZSBjb21ibyBpcyBmb3VuZCwgdGVybWluYXRlIHRoZSBmb3JFYWNoXG5cbiAgICAgIHRyYXZlcnNlVHJlZShjdHJlZSwgZnVuY3Rpb24gKHN1YlRyZWUpIHtcbiAgICAgICAgLy8gaWYgdGhlIGNvbWJvIGlzIGZvdW5kIGFuZCBpdCBpcyB0cmF2ZXJzaW5nIHRoZSBvdGhlciBicmFuY2hlcywgdGVybWluYXRlXG4gICAgICAgIGlmIChmb3VuZCAmJiBzdWJUcmVlLmRlcHRoIDw9IGNvbWJvTW9kZWwuZGVwdGgpIHJldHVybiBmYWxzZTsgLy8gaWYgdGhlIGNvbWJvIGlzIGZvdW5kXG5cbiAgICAgICAgaWYgKGNvbWJvTW9kZWwuaWQgPT09IHN1YlRyZWUuaWQpIGZvdW5kID0gdHJ1ZTtcblxuICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAvLyBpZiB0aGUgY29tYm8gaXMgZm91bmQsIGNvbmNhdCB0aGUgZGVzY2VuZGFudCBub2RlcyBhbmQgY29tYm9zXG4gICAgICAgICAgdmFyIGl0ZW0gPSBfdGhpcy5maW5kQnlJZChzdWJUcmVlLmlkKTtcblxuICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgY25vZGVzID0gY25vZGVzLmNvbmNhdChpdGVtLmdldE5vZGVzKCkpO1xuICAgICAgICAgICAgY2NvbWJvcyA9IGNjb21ib3MuY29uY2F0KGl0ZW0uZ2V0Q29tYm9zKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdmFyIGVkZ2VXZWlnaHRNYXAgPSB7fTtcbiAgICB2YXIgYWRkZWRWRWRnZXMgPSBbXTtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBpZiAoZWRnZS5pc1Zpc2libGUoKSAmJiAhZWRnZS5nZXRNb2RlbCgpLmlzVkVkZ2UpIHJldHVybjtcbiAgICAgIHZhciBzb3VyY2UgPSBlZGdlLmdldFNvdXJjZSgpO1xuICAgICAgdmFyIHRhcmdldCA9IGVkZ2UuZ2V0VGFyZ2V0KCk7XG5cbiAgICAgIGlmICgoY25vZGVzLmluY2x1ZGVzKHNvdXJjZSkgfHwgY2NvbWJvcy5pbmNsdWRlcyhzb3VyY2UpKSAmJiAhY25vZGVzLmluY2x1ZGVzKHRhcmdldCkgJiYgIWNjb21ib3MuaW5jbHVkZXModGFyZ2V0KSB8fCBzb3VyY2UuZ2V0TW9kZWwoKS5pZCA9PT0gY29tYm9Nb2RlbC5pZCkge1xuICAgICAgICB2YXIgZWRnZU1vZGVsID0gZWRnZS5nZXRNb2RlbCgpO1xuXG4gICAgICAgIGlmIChlZGdlTW9kZWwuaXNWRWRnZSkge1xuICAgICAgICAgIF90aGlzLnJlbW92ZUl0ZW0oZWRnZSwgZmFsc2UpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG5cbiAgICAgICAgd2hpbGUgKCF0YXJnZXQuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICB0YXJnZXQgPSBfdGhpcy5maW5kQnlJZCh0YXJnZXRNb2RlbC5wYXJlbnRJZCB8fCB0YXJnZXRNb2RlbC5jb21ib0lkKTtcbiAgICAgICAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0TW9kZWwucGFyZW50SWQgJiYgIXRhcmdldE1vZGVsLmNvbWJvSWQpIHJldHVybjsgLy8gYWxsIHRoZSBhbmNlc3RvcnMgYXJlIGhpZGRlbiwgdGhlbiBpZ25vcmUgdGhlIGVkZ2VcblxuICAgICAgICAgIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdGFyZ2V0SWQgPSB0YXJnZXRNb2RlbC5pZDtcblxuICAgICAgICBpZiAoZWRnZVdlaWdodE1hcFtcIlwiLmNvbmNhdChjb21ib01vZGVsLmlkLCBcIi1cIikuY29uY2F0KHRhcmdldElkKV0pIHtcbiAgICAgICAgICBlZGdlV2VpZ2h0TWFwW1wiXCIuY29uY2F0KGNvbWJvTW9kZWwuaWQsIFwiLVwiKS5jb25jYXQodGFyZ2V0SWQpXSArPSBlZGdlTW9kZWwuc2l6ZSB8fCAxO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyB0aGUgc291cmNlIGlzIGluIHRoZSBjb21ibywgdGhlIHRhcmdldCBpcyBub3RcblxuXG4gICAgICAgIHZhciB2ZWRnZSA9IF90aGlzLmFkZEl0ZW0oJ3ZlZGdlJywge1xuICAgICAgICAgIHNvdXJjZTogY29tYm9Nb2RlbC5pZCxcbiAgICAgICAgICB0YXJnZXQ6IHRhcmdldElkLFxuICAgICAgICAgIGlzVkVkZ2U6IHRydWVcbiAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgIGVkZ2VXZWlnaHRNYXBbXCJcIi5jb25jYXQoY29tYm9Nb2RlbC5pZCwgXCItXCIpLmNvbmNhdCh0YXJnZXRJZCldID0gZWRnZU1vZGVsLnNpemUgfHwgMTtcbiAgICAgICAgYWRkZWRWRWRnZXMucHVzaCh2ZWRnZSk7XG4gICAgICB9IGVsc2UgaWYgKCFjbm9kZXMuaW5jbHVkZXMoc291cmNlKSAmJiAhY2NvbWJvcy5pbmNsdWRlcyhzb3VyY2UpICYmIChjbm9kZXMuaW5jbHVkZXModGFyZ2V0KSB8fCBjY29tYm9zLmluY2x1ZGVzKHRhcmdldCkpIHx8IHRhcmdldC5nZXRNb2RlbCgpLmlkID09PSBjb21ib01vZGVsLmlkKSB7XG4gICAgICAgIHZhciBlZGdlTW9kZWwgPSBlZGdlLmdldE1vZGVsKCk7XG5cbiAgICAgICAgaWYgKGVkZ2VNb2RlbC5pc1ZFZGdlKSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlSXRlbShlZGdlLCBmYWxzZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTtcblxuICAgICAgICB3aGlsZSAoIXNvdXJjZS5pc1Zpc2libGUoKSkge1xuICAgICAgICAgIHNvdXJjZSA9IF90aGlzLmZpbmRCeUlkKHNvdXJjZU1vZGVsLnBhcmVudElkIHx8IHNvdXJjZU1vZGVsLmNvbWJvSWQpO1xuICAgICAgICAgIGlmICghc291cmNlIHx8ICFzb3VyY2VNb2RlbC5wYXJlbnRJZCAmJiAhc291cmNlTW9kZWwuY29tYm9JZCkgcmV0dXJuOyAvLyBhbGwgdGhlIGFuY2VzdG9ycyBhcmUgaGlkZGVuLCB0aGVuIGlnbm9yZSB0aGUgZWRnZVxuXG4gICAgICAgICAgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzb3VyY2VJZCA9IHNvdXJjZU1vZGVsLmlkO1xuXG4gICAgICAgIGlmIChlZGdlV2VpZ2h0TWFwW1wiXCIuY29uY2F0KHNvdXJjZUlkLCBcIi1cIikuY29uY2F0KGNvbWJvTW9kZWwuaWQpXSkge1xuICAgICAgICAgIGVkZ2VXZWlnaHRNYXBbXCJcIi5jb25jYXQoc291cmNlSWQsIFwiLVwiKS5jb25jYXQoY29tYm9Nb2RlbC5pZCldICs9IGVkZ2VNb2RlbC5zaXplIHx8IDE7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIHRoZSB0YXJnZXQgaXMgaW4gdGhlIGNvbWJvLCB0aGUgc291cmNlIGlzIG5vdFxuXG5cbiAgICAgICAgdmFyIHZlZGdlID0gX3RoaXMuYWRkSXRlbSgndmVkZ2UnLCB7XG4gICAgICAgICAgdGFyZ2V0OiBjb21ib01vZGVsLmlkLFxuICAgICAgICAgIHNvdXJjZTogc291cmNlSWQsXG4gICAgICAgICAgaXNWRWRnZTogdHJ1ZVxuICAgICAgICB9LCBmYWxzZSk7XG5cbiAgICAgICAgZWRnZVdlaWdodE1hcFtcIlwiLmNvbmNhdChzb3VyY2VJZCwgXCItXCIpLmNvbmNhdChjb21ib01vZGVsLmlkKV0gPSBlZGdlTW9kZWwuc2l6ZSB8fCAxO1xuICAgICAgICBhZGRlZFZFZGdlcy5wdXNoKHZlZGdlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gdXBkYXRlIHRoZSB3aWR0aCBvZiB0aGUgdmlydHVhbCBlZGdlcywgd2hpY2ggaXMgdGhlIHN1bSBvZiBtZXJnZWQgYWN0dWFsIGVkZ2VzXG4gICAgLy8gYmUgYXR0ZW50aW9uIHRoYXQgdGhlIGFjdHVhbCBlZGdlcyB3aXRoIHNhbWUgZW5kcG9pbnRzIGJ1dCBkaWZmZXJlbnQgZGlyZWN0aW9ucyB3aWxsIGJlIHJlcHJlc2VudGVkIGJ5IHR3byBkaWZmZXJlbnQgdmlydHVhbCBlZGdlc1xuXG4gICAgYWRkZWRWRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAodmVkZ2UpIHtcbiAgICAgIHZhciB2ZWRnZU1vZGVsID0gdmVkZ2UuZ2V0TW9kZWwoKTtcblxuICAgICAgX3RoaXMudXBkYXRlSXRlbSh2ZWRnZSwge1xuICAgICAgICBzaXplOiBlZGdlV2VpZ2h0TWFwW1wiXCIuY29uY2F0KHZlZGdlTW9kZWwuc291cmNlLCBcIi1cIikuY29uY2F0KHZlZGdlTW9kZWwudGFyZ2V0KV1cbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9KTtcbiAgICB0aGlzLmVtaXQoJ2FmdGVyY29sbGFwc2VleHBhbmRjb21ibycsIHtcbiAgICAgIGFjdGlvbjogJ2NvbGxhcHNlJyxcbiAgICAgIGl0ZW06IGNvbWJvXG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDlsZXlvIDmjIflrprnmoQgY29tYm9cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBJQ29tYm99IGNvbWJvIGNvbWJvIElEIOaIliBjb21ibyBpdGVtXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZXhwYW5kQ29tYm8gPSBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm8gPSB0aGlzLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbWJvIHx8IGNvbWJvLmdldFR5cGUgJiYgY29tYm8uZ2V0VHlwZSgpICE9PSAnY29tYm8nKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBjb21ibyB0byBiZSBjb2xsYXBzZWQgZG9lcyBub3QgZXhpc3QhJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0KCdiZWZvcmVjb2xsYXBzZWV4cGFuZGNvbWJvJywge1xuICAgICAgYWN0aW9uOiAnZXhwYW5kJyxcbiAgICAgIGl0ZW06IGNvbWJvXG4gICAgfSk7XG4gICAgdmFyIGNvbWJvTW9kZWwgPSBjb21iby5nZXRNb2RlbCgpO1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIGl0ZW1Db250cm9sbGVyLmV4cGFuZENvbWJvKGNvbWJvKTtcbiAgICBjb21ib01vZGVsLmNvbGxhcHNlZCA9IGZhbHNlOyAvLyBhZGQgdmlydHVhbCBlZGdlc1xuXG4gICAgdmFyIGVkZ2VzID0gdGhpcy5nZXRFZGdlcygpLmNvbmNhdCh0aGlzLmdldCgndmVkZ2VzJykpOyAvLyBmaW5kIGFsbCB0aGUgZGVzY2VuZGFudCBub2RlcyBhbmQgY29tYm9zXG5cbiAgICB2YXIgY25vZGVzID0gW107XG4gICAgdmFyIGNjb21ib3MgPSBbXTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICBpZiAoZm91bmQpIHJldHVybjsgLy8gaWYgdGhlIGNvbWJvIGlzIGZvdW5kLCB0ZXJtaW5hdGVcblxuICAgICAgdHJhdmVyc2VUcmVlKGN0cmVlLCBmdW5jdGlvbiAoc3ViVHJlZSkge1xuICAgICAgICAvLyBpZiB0aGUgY29tYm8gaXMgZm91bmQgYW5kIGl0IGlzIHRyYXZlcnNpbmcgdGhlIG90aGVyIGJyYW5jaGVzLCB0ZXJtaW5hdGVcbiAgICAgICAgaWYgKGZvdW5kICYmIHN1YlRyZWUuZGVwdGggPD0gY29tYm9Nb2RlbC5kZXB0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoY29tYm9Nb2RlbC5pZCA9PT0gc3ViVHJlZS5pZCkgZm91bmQgPSB0cnVlO1xuXG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgIHZhciBpdGVtID0gX3RoaXMuZmluZEJ5SWQoc3ViVHJlZS5pZCk7XG5cbiAgICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLmdldFR5cGUgJiYgaXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgICAgIGNub2RlcyA9IGNub2Rlcy5jb25jYXQoaXRlbS5nZXROb2RlcygpKTtcbiAgICAgICAgICAgIGNjb21ib3MgPSBjY29tYm9zLmNvbmNhdChpdGVtLmdldENvbWJvcygpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHZhciBlZGdlV2VpZ2h0TWFwID0ge307XG4gICAgdmFyIGFkZGVkVkVkZ2VzID0ge307XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKGVkZ2UuaXNWaXNpYmxlKCkgJiYgIWVkZ2UuZ2V0TW9kZWwoKS5pc1ZFZGdlKSByZXR1cm47XG4gICAgICB2YXIgc291cmNlID0gZWRnZS5nZXRTb3VyY2UoKTtcbiAgICAgIHZhciB0YXJnZXQgPSBlZGdlLmdldFRhcmdldCgpO1xuICAgICAgdmFyIHNvdXJjZUlkID0gc291cmNlLmdldCgnaWQnKTtcbiAgICAgIHZhciB0YXJnZXRJZCA9IHRhcmdldC5nZXQoJ2lkJyk7XG5cbiAgICAgIGlmICgoY25vZGVzLmluY2x1ZGVzKHNvdXJjZSkgfHwgY2NvbWJvcy5pbmNsdWRlcyhzb3VyY2UpKSAmJiAhY25vZGVzLmluY2x1ZGVzKHRhcmdldCkgJiYgIWNjb21ib3MuaW5jbHVkZXModGFyZ2V0KSB8fCBzb3VyY2VJZCA9PT0gY29tYm9Nb2RlbC5pZCkge1xuICAgICAgICAvLyB0aGUgc291cmNlIGlzIGluIHRoZSBjb21ibywgdGhlIHRhcmdldCBpcyBub3RcbiAgICAgICAgLy8gaWdub3JlIHRoZSB2aXJ0dWFsIGVkZ2VzXG4gICAgICAgIGlmIChlZGdlLmdldE1vZGVsKCkuaXNWRWRnZSkge1xuICAgICAgICAgIF90aGlzLnJlbW92ZUl0ZW0oZWRnZSwgZmFsc2UpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7IC8vIGZpbmQgdGhlIG5lYXJlc3QgdmlzaWJsZSBhbmNlc3RvclxuXG4gICAgICAgIHdoaWxlICghdGFyZ2V0LmlzVmlzaWJsZSgpKSB7XG4gICAgICAgICAgdGFyZ2V0ID0gX3RoaXMuZmluZEJ5SWQodGFyZ2V0TW9kZWwuY29tYm9JZCB8fCB0YXJnZXRNb2RlbC5wYXJlbnRJZCk7XG5cbiAgICAgICAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0TW9kZWwucGFyZW50SWQgJiYgIXRhcmdldE1vZGVsLmNvbWJvSWQpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gaWYgYWxsIHRoZSBhbmNlc3RvcnMgb2YgdGhlIG9wcHNpdGUgYXJlIGFsbCBoaWRkZW4sIGlnbm9yZSB0aGUgZWRnZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXRJZCA9IHRhcmdldE1vZGVsLmlkO1xuICAgICAgICB2YXIgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTsgLy8gZmluZCB0aGUgbmVhcmVzdCB2aXNpYmxlIGFuY2VzdG9yXG5cbiAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICBzb3VyY2UgPSBfdGhpcy5maW5kQnlJZChzb3VyY2VNb2RlbC5jb21ib0lkIHx8IHNvdXJjZU1vZGVsLnBhcmVudElkKTtcblxuICAgICAgICAgIGlmICghc291cmNlIHx8ICFzb3VyY2VNb2RlbC5wYXJlbnRJZCAmJiAhc291cmNlTW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBpZiBhbGwgdGhlIGFuY2VzdG9ycyBvZiB0aGUgb3Bwc2l0ZSBhcmUgYWxsIGhpZGRlbiwgaWdub3JlIHRoZSBlZGdlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNvdXJjZU1vZGVsLmNvbWJvSWQgPT09IGNvbWJvTW9kZWwuaWQgfHwgc291cmNlTW9kZWwucGFyZW50SWQgPT09IGNvbWJvTW9kZWwuaWQpIHtcbiAgICAgICAgICAgIGJyZWFrOyAvLyBpZiB0aGUgbmV4dCBhbmNlc3RvciBpcyB0aGUgY29tYm8sIGJyZWFrIHRoZSB3aGlsZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHNvdXJjZU1vZGVsID0gc291cmNlLmdldE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzb3VyY2VJZCA9IHNvdXJjZU1vZGVsLmlkO1xuXG4gICAgICAgIGlmICh0YXJnZXRJZCkge1xuICAgICAgICAgIHZhciB2ZWRnZUlkID0gXCJcIi5jb25jYXQoc291cmNlSWQsIFwiLVwiKS5jb25jYXQodGFyZ2V0SWQpOyAvLyB1cGRhdGUgdGhlIHdpZHRoIG9mIHRoZSB2aXJ0dWFsIGVkZ2VzLCB3aGljaCBpcyB0aGUgc3VtIG9mIG1lcmdlZCBhY3R1YWwgZWRnZXNcbiAgICAgICAgICAvLyBiZSBhdHRlbnRpb24gdGhhdCB0aGUgYWN0dWFsIGVkZ2VzIHdpdGggc2FtZSBlbmRwb2ludHMgYnV0IGRpZmZlcmVudCBkaXJlY3Rpb25zIHdpbGwgYmUgcmVwcmVzZW50ZWQgYnkgdHdvIGRpZmZlcmVudCB2aXJ0dWFsIGVkZ2VzXG5cbiAgICAgICAgICBpZiAoZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSkge1xuICAgICAgICAgICAgZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSArPSBlZGdlLmdldE1vZGVsKCkuc2l6ZSB8fCAxO1xuXG4gICAgICAgICAgICBfdGhpcy51cGRhdGVJdGVtKGFkZGVkVkVkZ2VzW3ZlZGdlSWRdLCB7XG4gICAgICAgICAgICAgIHNpemU6IGVkZ2VXZWlnaHRNYXBbdmVkZ2VJZF1cbiAgICAgICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB2ZWRnZSA9IF90aGlzLmFkZEl0ZW0oJ3ZlZGdlJywge1xuICAgICAgICAgICAgc291cmNlOiBzb3VyY2VJZCxcbiAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0SWQsXG4gICAgICAgICAgICBpc1ZFZGdlOiB0cnVlXG4gICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSA9IGVkZ2UuZ2V0TW9kZWwoKS5zaXplIHx8IDE7XG4gICAgICAgICAgYWRkZWRWRWRnZXNbdmVkZ2VJZF0gPSB2ZWRnZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghY25vZGVzLmluY2x1ZGVzKHNvdXJjZSkgJiYgIWNjb21ib3MuaW5jbHVkZXMoc291cmNlKSAmJiAoY25vZGVzLmluY2x1ZGVzKHRhcmdldCkgfHwgY2NvbWJvcy5pbmNsdWRlcyh0YXJnZXQpKSB8fCB0YXJnZXRJZCA9PT0gY29tYm9Nb2RlbC5pZCkge1xuICAgICAgICAvLyB0aGUgdGFyZ2V0IGlzIGluIHRoZSBjb21ibywgdGhlIHNvdXJjZSBpcyBub3RcbiAgICAgICAgLy8gaWdub3JlIHRoZSB2aXJ0dWFsIGVkZ2VzXG4gICAgICAgIGlmIChlZGdlLmdldE1vZGVsKCkuaXNWRWRnZSkge1xuICAgICAgICAgIF90aGlzLnJlbW92ZUl0ZW0oZWRnZSwgZmFsc2UpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNvdXJjZU1vZGVsID0gc291cmNlLmdldE1vZGVsKCk7IC8vIGZpbmQgdGhlIG5lYXJlc3QgdmlzaWJsZSBhbmNlc3RvclxuXG4gICAgICAgIHdoaWxlICghc291cmNlLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgICAgc291cmNlID0gX3RoaXMuZmluZEJ5SWQoc291cmNlTW9kZWwuY29tYm9JZCB8fCBzb3VyY2VNb2RlbC5wYXJlbnRJZCk7XG5cbiAgICAgICAgICBpZiAoIXNvdXJjZSB8fCAhc291cmNlTW9kZWwucGFyZW50SWQgJiYgIXNvdXJjZU1vZGVsLmNvbWJvSWQpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gaWYgYWxsIHRoZSBhbmNlc3RvcnMgb2YgdGhlIG9wcHNpdGUgYXJlIGFsbCBoaWRkZW4sIGlnbm9yZSB0aGUgZWRnZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHNvdXJjZU1vZGVsID0gc291cmNlLmdldE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzb3VyY2VJZCA9IHNvdXJjZU1vZGVsLmlkO1xuICAgICAgICB2YXIgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTsgLy8gZmluZCB0aGUgbmVhcmVzdCB2aXNpYmxlIGFuY2VzdG9yXG5cbiAgICAgICAgd2hpbGUgKCF0YXJnZXQuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICB0YXJnZXQgPSBfdGhpcy5maW5kQnlJZCh0YXJnZXRNb2RlbC5jb21ib0lkIHx8IHRhcmdldE1vZGVsLnBhcmVudElkKTtcblxuICAgICAgICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXRNb2RlbC5wYXJlbnRJZCAmJiAhdGFyZ2V0TW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBpZiBhbGwgdGhlIGFuY2VzdG9ycyBvZiB0aGUgb3Bwc2l0ZSBhcmUgYWxsIGhpZGRlbiwgaWdub3JlIHRoZSBlZGdlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRhcmdldE1vZGVsLmNvbWJvSWQgPT09IGNvbWJvTW9kZWwuaWQgfHwgdGFyZ2V0TW9kZWwucGFyZW50SWQgPT09IGNvbWJvTW9kZWwuaWQpIHtcbiAgICAgICAgICAgIGJyZWFrOyAvLyBpZiB0aGUgbmV4dCBhbmNlc3RvciBpcyB0aGUgY29tYm8sIGJyZWFrIHRoZSB3aGlsZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXRJZCA9IHRhcmdldE1vZGVsLmlkO1xuXG4gICAgICAgIGlmIChzb3VyY2VJZCkge1xuICAgICAgICAgIHZhciB2ZWRnZUlkID0gXCJcIi5jb25jYXQoc291cmNlSWQsIFwiLVwiKS5jb25jYXQodGFyZ2V0SWQpOyAvLyB1cGRhdGUgdGhlIHdpZHRoIG9mIHRoZSB2aXJ0dWFsIGVkZ2VzLCB3aGljaCBpcyB0aGUgc3VtIG9mIG1lcmdlZCBhY3R1YWwgZWRnZXNcbiAgICAgICAgICAvLyBiZSBhdHRlbnRpb24gdGhhdCB0aGUgYWN0dWFsIGVkZ2VzIHdpdGggc2FtZSBlbmRwb2ludHMgYnV0IGRpZmZlcmVudCBkaXJlY3Rpb25zIHdpbGwgYmUgcmVwcmVzZW50ZWQgYnkgdHdvIGRpZmZlcmVudCB2aXJ0dWFsIGVkZ2VzXG5cbiAgICAgICAgICBpZiAoZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSkge1xuICAgICAgICAgICAgZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSArPSBlZGdlLmdldE1vZGVsKCkuc2l6ZSB8fCAxO1xuXG4gICAgICAgICAgICBfdGhpcy51cGRhdGVJdGVtKGFkZGVkVkVkZ2VzW3ZlZGdlSWRdLCB7XG4gICAgICAgICAgICAgIHNpemU6IGVkZ2VXZWlnaHRNYXBbdmVkZ2VJZF1cbiAgICAgICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciB2ZWRnZSA9IF90aGlzLmFkZEl0ZW0oJ3ZlZGdlJywge1xuICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXRJZCxcbiAgICAgICAgICAgIHNvdXJjZTogc291cmNlSWQsXG4gICAgICAgICAgICBpc1ZFZGdlOiB0cnVlXG4gICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgZWRnZVdlaWdodE1hcFt2ZWRnZUlkXSA9IGVkZ2UuZ2V0TW9kZWwoKS5zaXplIHx8IDE7XG4gICAgICAgICAgYWRkZWRWRWRnZXNbdmVkZ2VJZF0gPSB2ZWRnZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICgoY25vZGVzLmluY2x1ZGVzKHNvdXJjZSkgfHwgY2NvbWJvcy5pbmNsdWRlcyhzb3VyY2UpKSAmJiAoY25vZGVzLmluY2x1ZGVzKHRhcmdldCkgfHwgY2NvbWJvcy5pbmNsdWRlcyh0YXJnZXQpKSkge1xuICAgICAgICAvLyBib3RoIHNvdXJjZSBhbmQgdGFyZ2V0IGFyZSBpbiB0aGUgY29tYm8sIGlmIHRoZSB0YXJnZXQgYW5kIHNvdXJjZSBhcmUgYm90aCB2aXNpYmxlLCBzaG93IHRoZSBlZGdlXG4gICAgICAgIGlmIChzb3VyY2UuaXNWaXNpYmxlKCkgJiYgdGFyZ2V0LmlzVmlzaWJsZSgpKSB7XG4gICAgICAgICAgZWRnZS5zaG93KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmVtaXQoJ2FmdGVyY29sbGFwc2VleHBhbmRjb21ibycsIHtcbiAgICAgIGFjdGlvbjogJ2V4cGFuZCcsXG4gICAgICBpdGVtOiBjb21ib1xuICAgIH0pO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNvbGxhcHNlRXhwYW5kQ29tYm8gPSBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IHRoaXMuZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIGlmICghY29tYm8gfHwgY29tYm8uZ2V0VHlwZSAmJiBjb21iby5nZXRUeXBlKCkgIT09ICdjb21ibycpIHJldHVybjtcbiAgICB2YXIgY29tYm9Nb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7IC8vIGlmIG9uZSBhbmNlc3RvciBjb21ibyBvZiB0aGUgY29tYm8gaXMgY29sbGFwc2VkLCBpdCBzaG91bGQgbm90IGJlIGNvbGxhcHNlZCBvciBleHBhbmRlZFxuXG4gICAgdmFyIHBhcmVudEl0ZW0gPSB0aGlzLmZpbmRCeUlkKGNvbWJvTW9kZWwucGFyZW50SWQpO1xuXG4gICAgd2hpbGUgKHBhcmVudEl0ZW0pIHtcbiAgICAgIHZhciBwYXJlbnRNb2RlbCA9IHBhcmVudEl0ZW0uZ2V0TW9kZWwoKTtcblxuICAgICAgaWYgKHBhcmVudE1vZGVsLmNvbGxhcHNlZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJGYWlsIHRvIGV4cGFuZCB0aGUgY29tYm8gc2luY2UgaXQncyBhbmNlc3RvciBjb21ibyBpcyBjb2xsYXBzZWQuXCIpO1xuICAgICAgICBwYXJlbnRJdGVtID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHBhcmVudEl0ZW0gPSB0aGlzLmZpbmRCeUlkKHBhcmVudE1vZGVsLnBhcmVudElkKTtcbiAgICB9XG5cbiAgICB2YXIgY29sbGFwc2VkID0gY29tYm9Nb2RlbC5jb2xsYXBzZWQ7IC8vIOivpee+pOe7hOW3sue7j+WkhOS6juaUtui1t+eKtuaAge+8jOmcgOimgeWxleW8gFxuXG4gICAgaWYgKGNvbGxhcHNlZCkge1xuICAgICAgdGhpcy5leHBhbmRDb21ibyhjb21ibyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29sbGFwc2VDb21ibyhjb21ibyk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDb21ibyhjb21ibyk7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4gY29tYm9UcmVlIOe7k+aehOaVtOeQhiBDb21ibyDnm7jlhbPnmoTlm77lvaLnu5jliLblsYLnuqfvvIzljIXmi6wgQ29tYm8g5pys6Lqr44CB6IqC54K544CB6L65XG4gICAqIEBwYXJhbSB7R3JhcGhEYXRhfSBkYXRhIOaVsOaNrlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnNvcnRDb21ib3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBjb21ib1NvcnRlZCA9IHRoaXMuZ2V0KCdjb21ib1NvcnRlZCcpO1xuICAgIGlmIChjb21ib1NvcnRlZCkgcmV0dXJuO1xuICAgIHRoaXMuc2V0KCdjb21ib1NvcnRlZCcsIHRydWUpO1xuICAgIHZhciBkZXB0aE1hcCA9IFtdO1xuICAgIHZhciBkYXRhRGVwdGhNYXAgPSB7fTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGNUcmVlKSB7XG4gICAgICB0cmF2ZXJzZVRyZWUoY1RyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBpZiAoZGVwdGhNYXBbY2hpbGQuZGVwdGhdKSBkZXB0aE1hcFtjaGlsZC5kZXB0aF0ucHVzaChjaGlsZC5pZCk7ZWxzZSBkZXB0aE1hcFtjaGlsZC5kZXB0aF0gPSBbY2hpbGQuaWRdO1xuICAgICAgICBkYXRhRGVwdGhNYXBbY2hpbGQuaWRdID0gY2hpbGQuZGVwdGg7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdmFyIGVkZ2VzID0gdGhpcy5nZXRFZGdlcygpLmNvbmNhdCh0aGlzLmdldCgndmVkZ2VzJykpO1xuICAgIChlZGdlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZUl0ZW0pIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZUl0ZW0uZ2V0TW9kZWwoKTtcbiAgICAgIHZhciBzb3VyY2VEZXB0aCA9IGRhdGFEZXB0aE1hcFtlZGdlLnNvdXJjZV0gfHwgMDtcbiAgICAgIHZhciB0YXJnZXREZXB0aCA9IGRhdGFEZXB0aE1hcFtlZGdlLnRhcmdldF0gfHwgMDtcbiAgICAgIHZhciBkZXB0aCA9IE1hdGgubWF4KHNvdXJjZURlcHRoLCB0YXJnZXREZXB0aCk7XG4gICAgICBpZiAoZGVwdGhNYXBbZGVwdGhdKSBkZXB0aE1hcFtkZXB0aF0ucHVzaChlZGdlLmlkKTtlbHNlIGRlcHRoTWFwW2RlcHRoXSA9IFtlZGdlLmlkXTtcbiAgICB9KTtcbiAgICBkZXB0aE1hcC5mb3JFYWNoKGZ1bmN0aW9uIChhcnJheSkge1xuICAgICAgaWYgKCFhcnJheSB8fCAhYXJyYXkubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgIGZvciAodmFyIGkgPSBhcnJheS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgaXRlbSA9IF90aGlzLmZpbmRCeUlkKGFycmF5W2ldKTtcblxuICAgICAgICBpZiAoaXRlbSkgaXRlbS50b0Zyb250KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5boioLngrnmiYDmnInnmoTpgrvlsYXoioLngrlcbiAgICpcbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgSU5vZGUpfSBub2RlIOiKgueCuSBJRCDmiJblrp7kvotcbiAgICogQHJldHVybnMge0lOb2RlW119XG4gICAqIEBtZW1iZXJvZiBJQWJzdHJhY3RHcmFwaFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldE5laWdoYm9ycyA9IGZ1bmN0aW9uIChub2RlLCB0eXBlKSB7XG4gICAgdmFyIGl0ZW0gPSBub2RlO1xuXG4gICAgaWYgKGlzU3RyaW5nKG5vZGUpKSB7XG4gICAgICBpdGVtID0gdGhpcy5maW5kQnlJZChub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbS5nZXROZWlnaGJvcnModHlwZSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5Ygbm9kZSDnmoTluqbmlbBcbiAgICpcbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgSU5vZGUpfSBub2RlIOiKgueCuSBJRCDmiJblrp7kvotcbiAgICogQHBhcmFtIHsoJ2luJyB8ICdvdXQnIHwgJ3RvdGFsJyB8ICdhbGwnIHwgdW5kZWZpbmVkKX0g5bqm5pWw57G75Z6L77yMaW4g5YWl5bqm77yMb3V0IOWHuuW6pu+8jHRvdGFsIOaAu+W6puaVsO+8jGFsbCDov5Tlm57kuInnp43nsbvlnovluqbmlbDnmoTlr7nosaFcbiAgICogQHJldHVybnMge051bWJlciB8IE9iamVjdH0g6K+l6IqC54K555qE5bqm5pWwXG4gICAqIEBtZW1iZXJvZiBJQWJzdHJhY3RHcmFwaFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldE5vZGVEZWdyZWUgPSBmdW5jdGlvbiAobm9kZSwgdHlwZSwgcmVmcmVzaCkge1xuICAgIGlmICh0eXBlID09PSB2b2lkIDApIHtcbiAgICAgIHR5cGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHJlZnJlc2ggPT09IHZvaWQgMCkge1xuICAgICAgcmVmcmVzaCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBpdGVtID0gbm9kZTtcblxuICAgIGlmIChpc1N0cmluZyhub2RlKSkge1xuICAgICAgaXRlbSA9IHRoaXMuZmluZEJ5SWQobm9kZSk7XG4gICAgfVxuXG4gICAgdmFyIGRlZ3JlZXMgPSB0aGlzLmdldCgnZGVncmVlcycpO1xuXG4gICAgaWYgKCFkZWdyZWVzIHx8IHJlZnJlc2gpIHtcbiAgICAgIGRlZ3JlZXMgPSBnZXREZWdyZWUodGhpcy5zYXZlKCkpO1xuICAgICAgdGhpcy5zZXQoJ2RlZ3JlZXMnLCBkZWdyZWVzKTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZURlZ3JlZXMgPSBkZWdyZWVzW2l0ZW0uZ2V0SUQoKV07XG4gICAgdmFyIHJlcyA9IDA7IC8vIOWmguaenOaYr+mAmui/hyBhZGRJdGVtIOWQjumdouaWsOWinuWKoOeahOiKgueCue+8jOatpOaXtuWug+eahOaJgOacieW6puaVsOmDveS4uiAwXG5cbiAgICBpZiAoIW5vZGVEZWdyZWVzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2luJzpcbiAgICAgICAgcmVzID0gbm9kZURlZ3JlZXMuaW5EZWdyZWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdvdXQnOlxuICAgICAgICByZXMgPSBub2RlRGVncmVlcy5vdXREZWdyZWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhbGwnOlxuICAgICAgICByZXMgPSBub2RlRGVncmVlcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyA9IG5vZGVEZWdyZWVzLmRlZ3JlZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRVbmRvU3RhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudW5kb1N0YWNrO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFJlZG9TdGFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWRvU3RhY2s7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgdW5kbyDlkowgcmVkbyDmoIjnmoTmlbDmja5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRTdGFja0RhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1bmRvU3RhY2s6IHRoaXMudW5kb1N0YWNrLnRvQXJyYXkoKSxcbiAgICAgIHJlZG9TdGFjazogdGhpcy5yZWRvU3RhY2sudG9BcnJheSgpXG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOa4heepuiB1bmRvIHN0YWNrICYgcmVkbyBzdGFja1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNsZWFyU3RhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdGhpcy51bmRvU3RhY2suY2xlYXIoKTtcbiAgICAgIHRoaXMucmVkb1N0YWNrLmNsZWFyKCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5bCG5pON5L2c57G75Z6L5ZKM5pON5L2c5pWw5o2u5YWl5qCIXG4gICAqIEBwYXJhbSBhY3Rpb24g5pON5L2c57G75Z6LXG4gICAqIEBwYXJhbSBkYXRhIOWFpeagiOeahOaVsOaNrlxuICAgKiBAcGFyYW0gc3RhY2tUeXBlIOagiOeahOexu+Wei1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnB1c2hTdGFjayA9IGZ1bmN0aW9uIChhY3Rpb24sIGRhdGEsIHN0YWNrVHlwZSkge1xuICAgIGlmIChhY3Rpb24gPT09IHZvaWQgMCkge1xuICAgICAgYWN0aW9uID0gJ3VwZGF0ZSc7XG4gICAgfVxuXG4gICAgaWYgKHN0YWNrVHlwZSA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFja1R5cGUgPSAndW5kbyc7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIGNvbnNvbGUud2Fybign6K+35YWI5ZCv55SoIHVuZG8gJiByZWRvIOWKn+iDve+8jOWcqOWunuS+i+WMliBHcmFwaCDml7blgJnphY3nva4gZW5hYmxlZFN0YWNrOiB0cnVlICEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc3RhY2tEYXRhID0gZGF0YSA/IGNsb25lKGRhdGEpIDoge1xuICAgICAgYmVmb3JlOiB7fSxcbiAgICAgIGFmdGVyOiBjbG9uZSh0aGlzLnNhdmUoKSlcbiAgICB9O1xuXG4gICAgaWYgKHN0YWNrVHlwZSA9PT0gJ3JlZG8nKSB7XG4gICAgICB0aGlzLnJlZG9TdGFjay5wdXNoKHtcbiAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgIGRhdGE6IHN0YWNrRGF0YVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5kb1N0YWNrLnB1c2goe1xuICAgICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgICAgZGF0YTogc3RhY2tEYXRhXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXQoJ3N0YWNrY2hhbmdlJywge1xuICAgICAgdW5kb1N0YWNrOiB0aGlzLnVuZG9TdGFjayxcbiAgICAgIHJlZG9TdGFjazogdGhpcy5yZWRvU3RhY2tcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPlumCu+aOpeefqemYtVxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhY2hlIOaYr+WQpuS9v+eUqOe8k+WtmOeahFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpcmVjdGVkIOaYr+WQpuaYr+acieWQkeWbvu+8jOm7mOiupOWPliBncmFwaC5kaXJlY3RlZFxuICAgKiBAcmV0dXJucyB7TWF0cml4fSDpgrvmjqXnn6npmLVcbiAgICogQG1lbWJlcm9mIElBYnN0cmFjdEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0QWRqTWF0cml4ID0gZnVuY3Rpb24gKGNhY2hlLCBkaXJlY3RlZCkge1xuICAgIGlmIChjYWNoZSA9PT0gdm9pZCAwKSB7XG4gICAgICBjYWNoZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGVkID09PSB1bmRlZmluZWQpIGRpcmVjdGVkID0gdGhpcy5nZXQoJ2RpcmVjdGVkJyk7XG4gICAgdmFyIGN1cnJlbnRBZGpNYXRyaXggPSB0aGlzLmdldCgnYWRqTWF0cml4Jyk7XG5cbiAgICBpZiAoIWN1cnJlbnRBZGpNYXRyaXggfHwgIWNhY2hlKSB7XG4gICAgICBjdXJyZW50QWRqTWF0cml4ID0gZ2V0QWRqYWNlbnRNYXRyaXgodGhpcy5zYXZlKCksIGRpcmVjdGVkKTtcbiAgICAgIHRoaXMuc2V0KCdhZGpNYXRyaXgnLCBjdXJyZW50QWRqTWF0cml4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudEFkak1hdHJpeDtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluacgOefrei3r+W+hOefqemYtVxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhY2hlIOaYr+WQpuS9v+eUqOe8k+WtmOeahFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpcmVjdGVkIOaYr+WQpuaYr+acieWQkeWbvu+8jOm7mOiupOWPliBncmFwaC5kaXJlY3RlZFxuICAgKiBAcmV0dXJucyB7TWF0cml4fSDmnIDnn63ot6/lvoTnn6npmLVcbiAgICogQG1lbWJlcm9mIElBYnN0cmFjdEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0U2hvcnRlc3RQYXRoTWF0cml4ID0gZnVuY3Rpb24gKGNhY2hlLCBkaXJlY3RlZCkge1xuICAgIGlmIChjYWNoZSA9PT0gdm9pZCAwKSB7XG4gICAgICBjYWNoZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGVkID09PSB1bmRlZmluZWQpIGRpcmVjdGVkID0gdGhpcy5nZXQoJ2RpcmVjdGVkJyk7XG4gICAgdmFyIGN1cnJlbnRBZGpNYXRyaXggPSB0aGlzLmdldCgnYWRqTWF0cml4Jyk7XG4gICAgdmFyIGN1cnJlbnRTaG91cnRlc3RQYXRoTWF0cml4ID0gdGhpcy5nZXQoJ3Nob3J0ZXN0UGF0aE1hdHJpeCcpO1xuXG4gICAgaWYgKCFjdXJyZW50QWRqTWF0cml4IHx8ICFjYWNoZSkge1xuICAgICAgY3VycmVudEFkak1hdHJpeCA9IGdldEFkamFjZW50TWF0cml4KHRoaXMuc2F2ZSgpLCBkaXJlY3RlZCk7XG4gICAgICB0aGlzLnNldCgnYWRqTWF0cml4JywgY3VycmVudEFkak1hdHJpeCk7XG4gICAgfVxuXG4gICAgaWYgKCFjdXJyZW50U2hvdXJ0ZXN0UGF0aE1hdHJpeCB8fCAhY2FjaGUpIHtcbiAgICAgIGN1cnJlbnRTaG91cnRlc3RQYXRoTWF0cml4ID0gZmxveWRXYXJzaGFsbCh0aGlzLnNhdmUoKSwgZGlyZWN0ZWQpO1xuICAgICAgdGhpcy5zZXQoJ3Nob3J0ZXN0UGF0aE1hdHJpeCcsIGN1cnJlbnRTaG91cnRlc3RQYXRoTWF0cml4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFNob3VydGVzdFBhdGhNYXRyaXg7XG4gIH07XG4gIC8qKlxuICAgKiDph43mlrDlrprkuYnnm5HlkKzlh73mlbDvvIzlpI3lhpnlj4LmlbDnsbvlnotcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldmVudE5hbWUsIGNhbGxiYWNrLCBvbmNlKSB7XG4gICAgcmV0dXJuIF9zdXBlci5wcm90b3R5cGUub24uY2FsbCh0aGlzLCBldmVudE5hbWUsIGNhbGxiYWNrLCBvbmNlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOmUgOavgeeUu+W4g1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcblxuICAgIHRoaXMuY2xlYXIoKTsgLy8g5riF56m65qCI5pWw5o2uXG5cbiAgICB0aGlzLmNsZWFyU3RhY2soKTtcbiAgICAoX2EgPSB0aGlzLmdldCgnaXRlbUNvbnRyb2xsZXInKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlc3Ryb3koKTtcbiAgICAoX2IgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmRlc3Ryb3koKTtcbiAgICAoX2MgPSB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmRlc3Ryb3koKTtcbiAgICAoX2QgPSB0aGlzLmdldCgnc3RhdGVDb250cm9sbGVyJykpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5kZXN0cm95KCk7XG4gICAgKF9lID0gdGhpcy5nZXQoJ2NhbnZhcycpKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UuZGVzdHJveSgpO1xuICAgIHRoaXMuY2ZnID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy5yZWRvU3RhY2sgPSBudWxsO1xuICAgIHRoaXMudW5kb1N0YWNrID0gbnVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIm+W7uuWHuOWMheaIluWHueWMhei9ruW7k1xuICAgKiBAcGFyYW0gY2ZnIEh1bGxDZmcg6L2u5buT6YWN572u6aG5XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY3JlYXRlSHVsbCA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICBpZiAoIWNmZy5tZW1iZXJzIHx8IGNmZy5tZW1iZXJzLmxlbmd0aCA8IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybignQ3JlYXRlIGh1bGwgZmFpbGVkISBUaGUgbWVtYmVycyBpcyBlbXB0eS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50ID0gdGhpcy5nZXQoJ2h1bGxHcm91cCcpO1xuICAgIHZhciBodWxsTWFwID0gdGhpcy5nZXQoJ2h1bGxNYXAnKTtcblxuICAgIGlmICghaHVsbE1hcCkge1xuICAgICAgaHVsbE1hcCA9IHt9O1xuICAgICAgdGhpcy5zZXQoJ2h1bGxNYXAnLCBodWxsTWFwKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgcGFyZW50ID0gdGhpcy5nZXQoJ2dyb3VwJykuYWRkR3JvdXAoe1xuICAgICAgICBpZDogJ2h1bGxHcm91cCdcbiAgICAgIH0pO1xuICAgICAgcGFyZW50LnRvQmFjaygpO1xuICAgICAgdGhpcy5zZXQoJ2h1bGxHcm91cCcsIHBhcmVudCk7XG4gICAgfVxuXG4gICAgaWYgKGh1bGxNYXBbY2ZnLmlkXSkge1xuICAgICAgY29uc29sZS53YXJuKCdFeGlzdGVkIGh1bGwgaWQuJyk7XG4gICAgICByZXR1cm4gaHVsbE1hcFtjZmcuaWRdO1xuICAgIH1cblxuICAgIHZhciBncm91cCA9IHBhcmVudC5hZGRHcm91cCh7XG4gICAgICBpZDogXCJcIi5jb25jYXQoY2ZnLmlkLCBcIi1jb250YWluZXJcIilcbiAgICB9KTtcbiAgICB2YXIgaHVsbCA9IG5ldyBIdWxsKHRoaXMsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjZmcpLCB7XG4gICAgICBncm91cDogZ3JvdXBcbiAgICB9KSk7XG4gICAgdmFyIGh1bGxJZCA9IGh1bGwuaWQ7XG4gICAgaHVsbE1hcFtodWxsSWRdID0gaHVsbDtcbiAgICByZXR1cm4gaHVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluW9k+WJjSBncmFwaCDkuK3lrZjlnKjnmoTljIXoo7nova7lu5NcbiAgICogQHJldHVybiB7W2tleTogc3RyaW5nXTogSHVsbH0gSHVsbCDnmoQgbWFw77yMaHVsbElkIOWvueW6lOeahCBodWxsIOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEh1bGxzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaHVsbE1hcCcpO1xuICB9O1xuICAvKipcbiAgICog5qC55o2uIGh1bGxJZCDojrflj5blr7nlupTnmoQgaHVsbFxuICAgKiBAcmV0dXJuIEh1bGxcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRIdWxsQnlJZCA9IGZ1bmN0aW9uIChodWxsSWQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2h1bGxNYXAnKVtodWxsSWRdO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUh1bGwgPSBmdW5jdGlvbiAoaHVsbCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBodWxsSW5zdGFuY2U7XG5cbiAgICBpZiAoaXNTdHJpbmcoaHVsbCkpIHtcbiAgICAgIGh1bGxJbnN0YW5jZSA9IHRoaXMuZ2V0SHVsbEJ5SWQoaHVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGh1bGxJbnN0YW5jZSA9IGh1bGw7XG4gICAgfVxuXG4gICAgKF9hID0gdGhpcy5nZXQoJ2h1bGxNYXAnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHRydWUgOiBkZWxldGUgX2FbaHVsbEluc3RhbmNlLmlkXTtcbiAgICBodWxsSW5zdGFuY2UuZGVzdHJveSgpO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUh1bGxzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBodWxscyA9IHRoaXMuZ2V0SHVsbHMoKTtcbiAgICBpZiAoIWh1bGxzIHx8ICFPYmplY3Qua2V5cyhodWxscykubGVuZ3RoKSByZXR1cm47XG4gICAgT2JqZWN0LmtleXMoaHVsbHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGh1bGwgPSBodWxsc1trZXldO1xuICAgICAgaHVsbC5kZXN0cm95KCk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXQoJ2h1bGxNYXAnLCB7fSk7XG4gIH07XG5cbiAgcmV0dXJuIEFic3RyYWN0R3JhcGg7XG59KEV2ZW50RW1pdHRlcik7XG5cbmV4cG9ydCBkZWZhdWx0IEFic3RyYWN0R3JhcGg7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/graph/graph.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/index.js": /*!************************************************!*\ !*** ./node_modules/@antv/g6-core/es/index.js ***! \************************************************/ /*! exports provided: G6GraphEvent, G6Event, Arrow, Shape, Node, Edge, Combo, Hull, Marker, registerNode, registerCombo, AbstractGraph, Util, registerEdge, registerBehavior, AbstractLayout, AbstractEvent, BaseGlobal, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerNode\", function() { return registerNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerCombo\", function() { return registerCombo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerEdge\", function() { return registerEdge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerBehavior\", function() { return registerBehavior; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseGlobal\", function() { return BaseGlobal; });\n/* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./behavior */ \"./node_modules/@antv/g6-core/es/behavior/index.js\");\n/* harmony import */ var _graph_graph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./graph/graph */ \"./node_modules/@antv/g6-core/es/graph/graph.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGraph\", function() { return _graph_graph__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ \"./node_modules/@antv/g6-core/es/element/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"Arrow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"Marker\"]; });\n\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g6-core/es/util/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _util__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./graph/controller/layout */ \"./node_modules/@antv/g6-core/es/graph/controller/layout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractLayout\", function() { return _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./graph/controller/event */ \"./node_modules/@antv/g6-core/es/graph/controller/event.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractEvent\", function() { return _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _item_node__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./item/node */ \"./node_modules/@antv/g6-core/es/item/node.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return _item_node__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _item_edge__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./item/edge */ \"./node_modules/@antv/g6-core/es/item/edge.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return _item_edge__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _item_hull__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./item/hull */ \"./node_modules/@antv/g6-core/es/item/hull.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Hull\", function() { return _item_hull__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _item_combo__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./item/combo */ \"./node_modules/@antv/g6-core/es/item/combo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Combo\", function() { return _item_combo__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./types */ \"./node_modules/@antv/g6-core/es/types/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _types__WEBPACK_IMPORTED_MODULE_11__[\"G6GraphEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return _types__WEBPACK_IMPORTED_MODULE_11__[\"G6Event\"]; });\n\n\n\n\n\n // 用于 PC 和 Mobile 端分别实现 layout 和 updateLayoutCfg 方法\n\n\n\n\n\n\n\nvar registerNode = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerNode;\nvar registerEdge = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerEdge;\nvar registerCombo = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo;\nvar registerBehavior = _behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"].registerBehavior;\nvar BaseGlobal = _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].version,\n AbstractGraph: _graph_graph__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n BaseGlobal: BaseGlobal,\n Util: _util__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n Shape: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Node: _item_node__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n Edge: _item_edge__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n Combo: _item_combo__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Hull: _item_hull__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n registerNode: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerNode,\n registerEdge: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerEdge,\n registerCombo: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo,\n registerBehavior: _behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"].registerBehavior,\n Arrow: _element__WEBPACK_IMPORTED_MODULE_2__[\"Arrow\"],\n Marker: _element__WEBPACK_IMPORTED_MODULE_2__[\"Marker\"],\n AbstractLayout: _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n AbstractEvent: _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbmRleC5qcz8zODIyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDUTtBQUNPO0FBQ25CO0FBQ0o7O0FBRTZCO0FBQ0Y7QUFDdEI7QUFDQTtBQUNBO0FBQ0U7QUFDakMsbUJBQW1CLGdEQUFLO0FBQ3hCLG1CQUFtQixnREFBSztBQUN4QixvQkFBb0IsZ0RBQUs7QUFDekIsdUJBQXVCLGlEQUFRO0FBQy9CLGlCQUFpQiwrQ0FBTTtBQUNDO0FBQzhKO0FBQ3ZLO0FBQ2YsV0FBVywrQ0FBTTtBQUNqQixpQkFBaUIsb0RBQWE7QUFDOUI7QUFDQSxRQUFRLDZDQUFJO0FBQ1osU0FBUyxnREFBSztBQUNkLFFBQVEsa0RBQUk7QUFDWixRQUFRLGtEQUFJO0FBQ1osU0FBUyxvREFBSztBQUNkLFFBQVEsa0RBQUk7QUFDWixnQkFBZ0IsZ0RBQUs7QUFDckIsZ0JBQWdCLGdEQUFLO0FBQ3JCLGlCQUFpQixnREFBSztBQUN0QixvQkFBb0IsaURBQVE7QUFDNUIsU0FBUyw4Q0FBSztBQUNkLFVBQVUsK0NBQU07QUFDaEIsa0JBQWtCLGdFQUFjO0FBQ2hDLGlCQUFpQiwrREFBYTtBQUM5QixDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmVoYXZpb3IgZnJvbSAnLi9iZWhhdmlvcic7XG5pbXBvcnQgQWJzdHJhY3RHcmFwaCBmcm9tICcuL2dyYXBoL2dyYXBoJztcbmltcG9ydCBTaGFwZSwgeyBBcnJvdywgTWFya2VyIH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi9nbG9iYWwnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi91dGlsJzsgLy8g55So5LqOIFBDIOWSjCBNb2JpbGUg56uv5YiG5Yir5a6e546wIGxheW91dCDlkowgdXBkYXRlTGF5b3V0Q2ZnIOaWueazlVxuXG5pbXBvcnQgQWJzdHJhY3RMYXlvdXQgZnJvbSAnLi9ncmFwaC9jb250cm9sbGVyL2xheW91dCc7XG5pbXBvcnQgQWJzdHJhY3RFdmVudCBmcm9tICcuL2dyYXBoL2NvbnRyb2xsZXIvZXZlbnQnO1xuaW1wb3J0IE5vZGUgZnJvbSAnLi9pdGVtL25vZGUnO1xuaW1wb3J0IEVkZ2UgZnJvbSAnLi9pdGVtL2VkZ2UnO1xuaW1wb3J0IEh1bGwgZnJvbSAnLi9pdGVtL2h1bGwnO1xuaW1wb3J0IENvbWJvIGZyb20gJy4vaXRlbS9jb21ibyc7XG52YXIgcmVnaXN0ZXJOb2RlID0gU2hhcGUucmVnaXN0ZXJOb2RlO1xudmFyIHJlZ2lzdGVyRWRnZSA9IFNoYXBlLnJlZ2lzdGVyRWRnZTtcbnZhciByZWdpc3RlckNvbWJvID0gU2hhcGUucmVnaXN0ZXJDb21ibztcbnZhciByZWdpc3RlckJlaGF2aW9yID0gQmVoYXZpb3IucmVnaXN0ZXJCZWhhdmlvcjtcbnZhciBCYXNlR2xvYmFsID0gR2xvYmFsO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgeyBBcnJvdywgU2hhcGUsIE5vZGUsIEVkZ2UsIENvbWJvLCBIdWxsLCBNYXJrZXIsIHJlZ2lzdGVyTm9kZSwgcmVnaXN0ZXJDb21ibywgQWJzdHJhY3RHcmFwaCwgVXRpbCwgcmVnaXN0ZXJFZGdlLCByZWdpc3RlckJlaGF2aW9yLCBBYnN0cmFjdExheW91dCwgQWJzdHJhY3RFdmVudCwgQmFzZUdsb2JhbCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2ZXJzaW9uOiBHbG9iYWwudmVyc2lvbixcbiAgQWJzdHJhY3RHcmFwaDogQWJzdHJhY3RHcmFwaCxcbiAgQmFzZUdsb2JhbDogQmFzZUdsb2JhbCxcbiAgVXRpbDogVXRpbCxcbiAgU2hhcGU6IFNoYXBlLFxuICBOb2RlOiBOb2RlLFxuICBFZGdlOiBFZGdlLFxuICBDb21ibzogQ29tYm8sXG4gIEh1bGw6IEh1bGwsXG4gIHJlZ2lzdGVyTm9kZTogU2hhcGUucmVnaXN0ZXJOb2RlLFxuICByZWdpc3RlckVkZ2U6IFNoYXBlLnJlZ2lzdGVyRWRnZSxcbiAgcmVnaXN0ZXJDb21ibzogU2hhcGUucmVnaXN0ZXJDb21ibyxcbiAgcmVnaXN0ZXJCZWhhdmlvcjogQmVoYXZpb3IucmVnaXN0ZXJCZWhhdmlvcixcbiAgQXJyb3c6IEFycm93LFxuICBNYXJrZXI6IE1hcmtlcixcbiAgQWJzdHJhY3RMYXlvdXQ6IEFic3RyYWN0TGF5b3V0LFxuICBBYnN0cmFjdEV2ZW50OiBBYnN0cmFjdEV2ZW50XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/interface/behavior.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/interface/behavior.js ***! \*************************************************************/ /*! exports provided: G6GraphEvent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return G6GraphEvent; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/@antv/g-base/esm/index.js\");\n\n\n\nvar G6GraphEvent =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(G6GraphEvent, _super);\n\n function G6GraphEvent(type, event) {\n var _this = _super.call(this, type, event) || this;\n\n _this.item = event.item;\n _this.canvasX = event.canvasX;\n _this.canvasY = event.canvasY;\n _this.wheelDelta = event.wheelDelta;\n _this.detail = event.detail;\n return _this;\n }\n\n return G6GraphEvent;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"Event\"]);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvYmVoYXZpb3IuanM/MDEyMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNpQjs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLGtEQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaW50ZXJmYWNlL2JlaGF2aW9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBFdmVudCBhcyBHcmFwaEV2ZW50IH0gZnJvbSAnQGFudHYvZy1iYXNlJztcblxudmFyIEc2R3JhcGhFdmVudCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhHNkdyYXBoRXZlbnQsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gRzZHcmFwaEV2ZW50KHR5cGUsIGV2ZW50KSB7XG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgdHlwZSwgZXZlbnQpIHx8IHRoaXM7XG5cbiAgICBfdGhpcy5pdGVtID0gZXZlbnQuaXRlbTtcbiAgICBfdGhpcy5jYW52YXNYID0gZXZlbnQuY2FudmFzWDtcbiAgICBfdGhpcy5jYW52YXNZID0gZXZlbnQuY2FudmFzWTtcbiAgICBfdGhpcy53aGVlbERlbHRhID0gZXZlbnQud2hlZWxEZWx0YTtcbiAgICBfdGhpcy5kZXRhaWwgPSBldmVudC5kZXRhaWw7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIEc2R3JhcGhFdmVudDtcbn0oR3JhcGhFdmVudCk7XG5cbmV4cG9ydCB7IEc2R3JhcGhFdmVudCB9OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/interface/behavior.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/interface/graph.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-core/es/interface/graph.js ***! \**********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvZ3JhcGguanM/OWYxNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2ludGVyZmFjZS9ncmFwaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/interface/graph.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/interface/index.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-core/es/interface/index.js ***! \**********************************************************/ /*! exports provided: G6GraphEvent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _graph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graph */ \"./node_modules/@antv/g6-core/es/interface/graph.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./behavior */ \"./node_modules/@antv/g6-core/es/interface/behavior.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _behavior__WEBPACK_IMPORTED_MODULE_1__[\"G6GraphEvent\"]; });\n\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/@antv/g6-core/es/interface/item.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/@antv/g6-core/es/interface/shape.js\");\n/* empty/unused harmony star reexport */\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaW5kZXguanM/NGIwMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdDQUF3QjtBQUNHO0FBQ0oiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2dyYXBoJztcbmV4cG9ydCAqIGZyb20gJy4vYmVoYXZpb3InO1xuZXhwb3J0ICogZnJvbSAnLi9pdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhcGUnOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/interface/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/interface/item.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g6-core/es/interface/item.js ***! \*********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaXRlbS5qcz9kZTJkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaW50ZXJmYWNlL2l0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/interface/item.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/interface/shape.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-core/es/interface/shape.js ***! \**********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2Uvc2hhcGUuanM/ZTIyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2ludGVyZmFjZS9zaGFwZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/interface/shape.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/item/combo.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g6-core/es/item/combo.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node */ \"./node_modules/@antv/g6-core/es/item/node.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n\n\n\nvar CACHE_BBOX = 'bboxCache';\nvar CACHE_CANVAS_BBOX = 'bboxCanvasCache';\nvar CACHE_SIZE = 'sizeCache';\nvar CACHE_ANCHOR_POINTS = 'anchorPointsCache';\n\nvar Combo =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Combo, _super);\n\n function Combo() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Combo.prototype.getDefaultCfg = function () {\n return {\n type: 'combo',\n nodes: [],\n edges: [],\n combos: []\n };\n };\n\n Combo.prototype.getShapeCfg = function (model) {\n var styles = this.get('styles');\n var bbox = this.get('bbox');\n\n if (styles && bbox) {\n // merge graph的item样式与数据模型中的样式\n var newModel = model;\n var size = {\n r: Math.hypot(bbox.height, bbox.width) / 2 || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[0] / 2,\n width: bbox.width || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[0],\n height: bbox.height || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[1]\n };\n newModel.style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), model.style), size);\n var padding = model.padding || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.padding;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isNumber\"])(padding)) {\n size.r += padding;\n size.width += padding * 2;\n size.height += padding * 2;\n } else {\n size.r += padding[0];\n size.width += padding[1] + padding[3] || padding[1] * 2;\n size.height += padding[0] + padding[2] || padding[0] * 2;\n }\n\n this.set(CACHE_SIZE, size);\n return newModel;\n }\n\n return model;\n };\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n Combo.prototype.calculateCanvasBBox = function () {\n if (this.destroyed) return;\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n var cacheSize = this.get(CACHE_SIZE);\n var cacheBBox = this.get(CACHE_BBOX) || {};\n var oriX = cacheBBox.x;\n var oriY = cacheBBox.x;\n\n if (cacheSize) {\n cacheSize.width = Math.max(cacheSize.width, bbox.width);\n cacheSize.height = Math.max(cacheSize.height, bbox.height);\n var type = keyShape.get('type');\n\n if (type === 'circle') {\n bbox.width = cacheSize.r * 2;\n bbox.height = cacheSize.r * 2;\n } else {\n bbox.width = cacheSize.width;\n bbox.height = cacheSize.height;\n }\n\n bbox.minX = bbox.centerX - bbox.width / 2;\n bbox.minY = bbox.centerY - bbox.height / 2;\n bbox.maxX = bbox.centerX + bbox.width / 2;\n bbox.maxY = bbox.centerY + bbox.height / 2;\n } else {\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n }\n\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n if (bbox.x !== oriX || bbox.y !== oriY) this.set(CACHE_ANCHOR_POINTS, null);\n return bbox;\n };\n /**\n * 获取 Combo 中所有的子元素,包括 Combo、Node 及 Edge\n */\n\n\n Combo.prototype.getChildren = function () {\n var self = this;\n return {\n nodes: self.getNodes(),\n combos: self.getCombos()\n };\n };\n /**\n * 获取 Combo 中所有子节点\n */\n\n\n Combo.prototype.getNodes = function () {\n var self = this;\n return self.get('nodes');\n };\n /**\n * 获取 Combo 中所有子 combo\n */\n\n\n Combo.prototype.getCombos = function () {\n var self = this;\n return self.get('combos');\n };\n /**\n * 向 Combo 中增加子 combo 或 node\n * @param item Combo 或节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addChild = function (item) {\n var self = this;\n var itemType = item.getType();\n\n switch (itemType) {\n case 'node':\n self.addNode(item);\n break;\n\n case 'combo':\n self.addCombo(item);\n break;\n\n default:\n console.warn('Only node or combo items are allowed to be added into a combo');\n return false;\n }\n\n return true;\n };\n /**\n * 向 Combo 中增加 combo\n * @param combo Combo 实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addCombo = function (combo) {\n var self = this;\n self.get('combos').push(combo);\n return true;\n };\n /**\n * 向 Combo 中添加节点\n * @param node 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addNode = function (node) {\n var self = this;\n self.get('nodes').push(node);\n return true;\n };\n /**\n * 向 Combo 中增加子 combo 或 node\n * @param item Combo 或节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeChild = function (item) {\n var self = this;\n var itemType = item.getType();\n\n switch (itemType) {\n case 'node':\n self.removeNode(item);\n break;\n\n case 'combo':\n self.removeCombo(item);\n break;\n\n default:\n console.warn('Only node or combo items are allowed to be added into a combo');\n return false;\n }\n\n return true;\n };\n /**\n * 从 Combo 中移除指定的 combo\n * @param combo Combo 实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeCombo = function (combo) {\n if (!combo) return;\n var combos = this.getCombos();\n var index = combos.indexOf(combo);\n\n if (index > -1) {\n combos.splice(index, 1);\n return true;\n }\n\n return false;\n };\n /**\n * 向 Combo 中移除指定的节点\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeNode = function (node) {\n if (!node) return;\n var nodes = this.getNodes();\n var index = nodes.indexOf(node);\n\n if (index > -1) {\n nodes.splice(index, 1);\n return true;\n }\n\n return false;\n };\n\n Combo.prototype.getUpdateType = function (cfg) {\n return undefined;\n };\n /**\n * 获取 item 的包围盒,这个包围盒是相对于 item 自己,不会将 matrix 计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n Combo.prototype.getBBox = function () {\n this.set(CACHE_CANVAS_BBOX, null);\n var bbox = this.calculateCanvasBBox();\n return bbox;\n };\n\n Combo.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null); // 清理缓存的 bbox\n\n this.set(CACHE_CANVAS_BBOX, null);\n this.set(CACHE_ANCHOR_POINTS, null);\n };\n\n Combo.prototype.destroy = function () {\n if (!this.destroyed) {\n var animate = this.get('animate');\n var group = this.get('group');\n\n if (animate) {\n group.stopAnimate();\n }\n\n group['shapeMap'] = {};\n this.clearCache();\n this.set(CACHE_SIZE, null);\n this.set('bbox', null);\n group.remove();\n this._cfg = null;\n this.destroyed = true;\n }\n };\n\n return Combo;\n}(_node__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Combo);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL2NvbWJvLmpzPzBjYzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ2xCO0FBQ0s7QUFDVztBQUNKO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQVM7O0FBRVg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELCtDQUFNO0FBQzVELDZCQUE2QiwrQ0FBTTtBQUNuQywrQkFBK0IsK0NBQU07QUFDckM7QUFDQSx1QkFBdUIsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDcEQscUNBQXFDLCtDQUFNOztBQUUzQyxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQyxlQUFlLDZEQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsNkNBQUk7O0FBRVMsb0VBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL2NvbWJvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbmltcG9ydCB7IGdldEJCb3ggfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBDQUNIRV9CQk9YID0gJ2Jib3hDYWNoZSc7XG52YXIgQ0FDSEVfQ0FOVkFTX0JCT1ggPSAnYmJveENhbnZhc0NhY2hlJztcbnZhciBDQUNIRV9TSVpFID0gJ3NpemVDYWNoZSc7XG52YXIgQ0FDSEVfQU5DSE9SX1BPSU5UUyA9ICdhbmNob3JQb2ludHNDYWNoZSc7XG5cbnZhciBDb21ibyA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhDb21ibywgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBDb21ibygpIHtcbiAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gIH1cblxuICBDb21iby5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2NvbWJvJyxcbiAgICAgIG5vZGVzOiBbXSxcbiAgICAgIGVkZ2VzOiBbXSxcbiAgICAgIGNvbWJvczogW11cbiAgICB9O1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRTaGFwZUNmZyA9IGZ1bmN0aW9uIChtb2RlbCkge1xuICAgIHZhciBzdHlsZXMgPSB0aGlzLmdldCgnc3R5bGVzJyk7XG4gICAgdmFyIGJib3ggPSB0aGlzLmdldCgnYmJveCcpO1xuXG4gICAgaWYgKHN0eWxlcyAmJiBiYm94KSB7XG4gICAgICAvLyBtZXJnZSBncmFwaOeahGl0ZW3moLflvI/kuI7mlbDmja7mqKHlnovkuK3nmoTmoLflvI9cbiAgICAgIHZhciBuZXdNb2RlbCA9IG1vZGVsO1xuICAgICAgdmFyIHNpemUgPSB7XG4gICAgICAgIHI6IE1hdGguaHlwb3QoYmJveC5oZWlnaHQsIGJib3gud2lkdGgpIC8gMiB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF0gLyAyLFxuICAgICAgICB3aWR0aDogYmJveC53aWR0aCB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF0sXG4gICAgICAgIGhlaWdodDogYmJveC5oZWlnaHQgfHwgR2xvYmFsLmRlZmF1bHRDb21iby5zaXplWzFdXG4gICAgICB9O1xuICAgICAgbmV3TW9kZWwuc3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwgbW9kZWwuc3R5bGUpLCBzaXplKTtcbiAgICAgIHZhciBwYWRkaW5nID0gbW9kZWwucGFkZGluZyB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnBhZGRpbmc7XG5cbiAgICAgIGlmIChpc051bWJlcihwYWRkaW5nKSkge1xuICAgICAgICBzaXplLnIgKz0gcGFkZGluZztcbiAgICAgICAgc2l6ZS53aWR0aCArPSBwYWRkaW5nICogMjtcbiAgICAgICAgc2l6ZS5oZWlnaHQgKz0gcGFkZGluZyAqIDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplLnIgKz0gcGFkZGluZ1swXTtcbiAgICAgICAgc2l6ZS53aWR0aCArPSBwYWRkaW5nWzFdICsgcGFkZGluZ1szXSB8fCBwYWRkaW5nWzFdICogMjtcbiAgICAgICAgc2l6ZS5oZWlnaHQgKz0gcGFkZGluZ1swXSArIHBhZGRpbmdbMl0gfHwgcGFkZGluZ1swXSAqIDI7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0KENBQ0hFX1NJWkUsIHNpemUpO1xuICAgICAgcmV0dXJuIG5ld01vZGVsO1xuICAgIH1cblxuICAgIHJldHVybiBtb2RlbDtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBrZXlzaGFwZSDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuY2FsY3VsYXRlQ2FudmFzQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB2YXIga2V5U2hhcGUgPSB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTsgLy8g5Zug5Li6IGdyb3VwIOWPr+iDveS8muenu+WKqO+8jOaJgOS7peW/hemhu+mAmui/h+eItuWFg+e0oOiuoeeul+aJjeiDveiuoeeul+WHuuato+ehrueahOWMheWbtOebklxuXG4gICAgdmFyIGJib3ggPSBnZXRCQm94KGtleVNoYXBlLCBncm91cCk7XG4gICAgYmJveC5jZW50ZXJYID0gKGJib3gubWluWCArIGJib3gubWF4WCkgLyAyO1xuICAgIGJib3guY2VudGVyWSA9IChiYm94Lm1pblkgKyBiYm94Lm1heFkpIC8gMjtcbiAgICB2YXIgY2FjaGVTaXplID0gdGhpcy5nZXQoQ0FDSEVfU0laRSk7XG4gICAgdmFyIGNhY2hlQkJveCA9IHRoaXMuZ2V0KENBQ0hFX0JCT1gpIHx8IHt9O1xuICAgIHZhciBvcmlYID0gY2FjaGVCQm94Lng7XG4gICAgdmFyIG9yaVkgPSBjYWNoZUJCb3gueDtcblxuICAgIGlmIChjYWNoZVNpemUpIHtcbiAgICAgIGNhY2hlU2l6ZS53aWR0aCA9IE1hdGgubWF4KGNhY2hlU2l6ZS53aWR0aCwgYmJveC53aWR0aCk7XG4gICAgICBjYWNoZVNpemUuaGVpZ2h0ID0gTWF0aC5tYXgoY2FjaGVTaXplLmhlaWdodCwgYmJveC5oZWlnaHQpO1xuICAgICAgdmFyIHR5cGUgPSBrZXlTaGFwZS5nZXQoJ3R5cGUnKTtcblxuICAgICAgaWYgKHR5cGUgPT09ICdjaXJjbGUnKSB7XG4gICAgICAgIGJib3gud2lkdGggPSBjYWNoZVNpemUuciAqIDI7XG4gICAgICAgIGJib3guaGVpZ2h0ID0gY2FjaGVTaXplLnIgKiAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmJveC53aWR0aCA9IGNhY2hlU2l6ZS53aWR0aDtcbiAgICAgICAgYmJveC5oZWlnaHQgPSBjYWNoZVNpemUuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBiYm94Lm1pblggPSBiYm94LmNlbnRlclggLSBiYm94LndpZHRoIC8gMjtcbiAgICAgIGJib3gubWluWSA9IGJib3guY2VudGVyWSAtIGJib3guaGVpZ2h0IC8gMjtcbiAgICAgIGJib3gubWF4WCA9IGJib3guY2VudGVyWCArIGJib3gud2lkdGggLyAyO1xuICAgICAgYmJveC5tYXhZID0gYmJveC5jZW50ZXJZICsgYmJveC5oZWlnaHQgLyAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYm94LndpZHRoID0gYmJveC5tYXhYIC0gYmJveC5taW5YO1xuICAgICAgYmJveC5oZWlnaHQgPSBiYm94Lm1heFkgLSBiYm94Lm1pblk7XG4gICAgICBiYm94LmNlbnRlclggPSAoYmJveC5taW5YICsgYmJveC5tYXhYKSAvIDI7XG4gICAgICBiYm94LmNlbnRlclkgPSAoYmJveC5taW5ZICsgYmJveC5tYXhZKSAvIDI7XG4gICAgfVxuXG4gICAgYmJveC54ID0gYmJveC5taW5YO1xuICAgIGJib3gueSA9IGJib3gubWluWTtcbiAgICBpZiAoYmJveC54ICE9PSBvcmlYIHx8IGJib3gueSAhPT0gb3JpWSkgdGhpcy5zZXQoQ0FDSEVfQU5DSE9SX1BPSU5UUywgbnVsbCk7XG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgQ29tYm8g5Lit5omA5pyJ55qE5a2Q5YWD57Sg77yM5YyF5ousIENvbWJv44CBTm9kZSDlj4ogRWRnZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRDaGlsZHJlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGVzOiBzZWxmLmdldE5vZGVzKCksXG4gICAgICBjb21ib3M6IHNlbGYuZ2V0Q29tYm9zKClcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIENvbWJvIOS4reaJgOacieWtkOiKgueCuVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXROb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHNlbGYuZ2V0KCdub2RlcycpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIENvbWJvIOS4reaJgOacieWtkCBjb21ib1xuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRDb21ib3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBzZWxmLmdldCgnY29tYm9zJyk7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5aKe5Yqg5a2QIGNvbWJvIOaIliBub2RlXG4gICAqIEBwYXJhbSBpdGVtIENvbWJvIOaIluiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuYWRkQ2hpbGQgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbVR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHN3aXRjaCAoaXRlbVR5cGUpIHtcbiAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICBzZWxmLmFkZE5vZGUoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgIHNlbGYuYWRkQ29tYm8oaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ09ubHkgbm9kZSBvciBjb21ibyBpdGVtcyBhcmUgYWxsb3dlZCB0byBiZSBhZGRlZCBpbnRvIGEgY29tYm8nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5ZCRIENvbWJvIOS4reWinuWKoCBjb21ib1xuICAgKiBAcGFyYW0gY29tYm8gQ29tYm8g5a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDmt7vliqDmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5hZGRDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmdldCgnY29tYm9zJykucHVzaChjb21ibyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5re75Yqg6IqC54K5XG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuYWRkTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuZ2V0KCdub2RlcycpLnB1c2gobm9kZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5aKe5Yqg5a2QIGNvbWJvIOaIliBub2RlXG4gICAqIEBwYXJhbSBpdGVtIENvbWJvIOaIluiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbVR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHN3aXRjaCAoaXRlbVR5cGUpIHtcbiAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICBzZWxmLnJlbW92ZU5vZGUoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgIHNlbGYucmVtb3ZlQ29tYm8oaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ09ubHkgbm9kZSBvciBjb21ibyBpdGVtcyBhcmUgYWxsb3dlZCB0byBiZSBhZGRlZCBpbnRvIGEgY29tYm8nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5LuOIENvbWJvIOS4reenu+mZpOaMh+WumueahCBjb21ib1xuICAgKiBAcGFyYW0gY29tYm8gQ29tYm8g5a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDnp7vpmaTmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5yZW1vdmVDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIGlmICghY29tYm8pIHJldHVybjtcbiAgICB2YXIgY29tYm9zID0gdGhpcy5nZXRDb21ib3MoKTtcbiAgICB2YXIgaW5kZXggPSBjb21ib3MuaW5kZXhPZihjb21ibyk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgY29tYm9zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit56e76Zmk5oyH5a6a55qE6IqC54K5XG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g56e76Zmk5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUucmVtb3ZlTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKCFub2RlKSByZXR1cm47XG4gICAgdmFyIG5vZGVzID0gdGhpcy5nZXROb2RlcygpO1xuICAgIHZhciBpbmRleCA9IG5vZGVzLmluZGV4T2Yobm9kZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgbm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBDb21iby5wcm90b3R5cGUuZ2V0VXBkYXRlVHlwZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGl0ZW0g55qE5YyF5Zu055uS77yM6L+Z5Liq5YyF5Zu055uS5piv55u45a+55LqOIGl0ZW0g6Ieq5bex77yM5LiN5Lya5bCGIG1hdHJpeCDorqHnrpflnKjlhoVcbiAgICogQHJldHVybiB7T2JqZWN0fSDljIXlkKsgeCx5LHdpZHRoLGhlaWdodCwgY2VudGVyWCwgY2VudGVyWVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBudWxsKTtcbiAgICB2YXIgYmJveCA9IHRoaXMuY2FsY3VsYXRlQ2FudmFzQkJveCgpO1xuICAgIHJldHVybiBiYm94O1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5jbGVhckNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0JCT1gsIG51bGwpOyAvLyDmuIXnkIbnvJPlrZjnmoQgYmJveFxuXG4gICAgdGhpcy5zZXQoQ0FDSEVfQ0FOVkFTX0JCT1gsIG51bGwpO1xuICAgIHRoaXMuc2V0KENBQ0hFX0FOQ0hPUl9QT0lOVFMsIG51bGwpO1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIHZhciBhbmltYXRlID0gdGhpcy5nZXQoJ2FuaW1hdGUnKTtcbiAgICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuXG4gICAgICBpZiAoYW5pbWF0ZSkge1xuICAgICAgICBncm91cC5zdG9wQW5pbWF0ZSgpO1xuICAgICAgfVxuXG4gICAgICBncm91cFsnc2hhcGVNYXAnXSA9IHt9O1xuICAgICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gICAgICB0aGlzLnNldChDQUNIRV9TSVpFLCBudWxsKTtcbiAgICAgIHRoaXMuc2V0KCdiYm94JywgbnVsbCk7XG4gICAgICBncm91cC5yZW1vdmUoKTtcbiAgICAgIHRoaXMuX2NmZyA9IG51bGw7XG4gICAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBDb21ibztcbn0oTm9kZSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvbWJvOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/item/combo.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/item/edge.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g6-core/es/item/edge.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/@antv/g6-core/es/item/item.js\");\n\n\n\nvar END_MAP = {\n source: 'start',\n target: 'end'\n};\nvar ITEM_NAME_SUFFIX = 'Node'; // 端点的后缀,如 sourceNode, targetNode\n\nvar POINT_NAME_SUFFIX = 'Point'; // 起点或者结束点的后缀,如 startPoint, endPoint\n\nvar ANCHOR_NAME_SUFFIX = 'Anchor';\n\nvar Edge =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Edge, _super);\n\n function Edge() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Edge.prototype.getDefaultCfg = function () {\n return {\n type: 'edge',\n sourceNode: null,\n targetNode: null,\n startPoint: null,\n endPoint: null,\n linkCenter: false\n };\n };\n\n Edge.prototype.setEnd = function (name, value) {\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var itemName = name + ITEM_NAME_SUFFIX;\n var preItem = this.get(itemName);\n\n if (preItem && !preItem.destroyed) {\n // 如果之前存在节点,则移除掉边\n preItem.removeEdge(this);\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(value)) {\n // 如果设置成具体的点,则清理节点\n this.set(pointName, value);\n this.set(itemName, null);\n } else if (value) {\n value.addEdge(this);\n this.set(itemName, value);\n this.set(pointName, null);\n }\n };\n /**\n * 获取连接点的坐标\n * @param name source | target\n * @param model 边的数据模型\n * @param controlPoints 控制点\n */\n\n\n Edge.prototype.getLinkPoint = function (name, model, controlPoints) {\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var itemName = name + ITEM_NAME_SUFFIX;\n var point = this.get(pointName);\n\n if (!point) {\n var item = this.get(itemName);\n var anchorName = name + ANCHOR_NAME_SUFFIX;\n var prePoint = this.getPrePoint(name, controlPoints);\n var anchorIndex = model[anchorName];\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(anchorIndex)) {\n // 如果有锚点,则使用锚点索引获取连接点\n point = item.getLinkPointByAnchor(anchorIndex);\n } // 如果锚点没有对应的点或者没有锚点,则直接计算连接点\n\n\n point = point || item.getLinkPoint(prePoint);\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(point.index)) {\n this.set(\"\".concat(name, \"AnchorIndex\"), point.index);\n }\n }\n\n return point;\n };\n /**\n * 获取同端点进行连接的点,计算交汇点\n * @param name\n * @param controlPoints\n */\n\n\n Edge.prototype.getPrePoint = function (name, controlPoints) {\n if (controlPoints && controlPoints.length) {\n var index = name === 'source' ? 0 : controlPoints.length - 1;\n return controlPoints[index];\n }\n\n var oppositeName = name === 'source' ? 'target' : 'source'; // 取另一个节点的位置\n\n return this.getEndPoint(oppositeName);\n };\n /**\n * 获取端点的位置\n * @param name\n */\n\n\n Edge.prototype.getEndPoint = function (name) {\n var itemName = name + ITEM_NAME_SUFFIX;\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var item = this.get(itemName); // 如果有端点,直接使用 model\n\n if (item) {\n return item.get('model');\n } // 否则直接使用点\n\n\n return this.get(pointName);\n };\n /**\n * 通过端点的中心获取控制点\n * @param model\n */\n\n\n Edge.prototype.getControlPointsByCenter = function (model) {\n var sourcePoint = this.getEndPoint('source');\n var targetPoint = this.getEndPoint('target');\n var shapeFactory = this.get('shapeFactory');\n var type = model.type;\n return shapeFactory.getControlPoints(type, {\n startPoint: sourcePoint,\n endPoint: targetPoint\n });\n };\n\n Edge.prototype.getEndCenter = function (name) {\n var itemName = name + ITEM_NAME_SUFFIX;\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var item = this.get(itemName); // 如果有端点,直接使用 model\n\n if (item) {\n var bbox = item.getBBox();\n return {\n x: bbox.centerX,\n y: bbox.centerY\n };\n } // 否则直接使用点\n\n\n return this.get(pointName);\n };\n\n Edge.prototype.init = function () {\n _super.prototype.init.call(this); // 初始化两个端点\n\n\n this.setSource(this.get('source'));\n this.setTarget(this.get('target'));\n };\n\n Edge.prototype.getShapeCfg = function (model, updateType) {\n var self = this;\n var linkCenter = self.get('linkCenter'); // 如果连接到中心,忽视锚点、忽视控制点\n\n var cfg = (updateType === null || updateType === void 0 ? void 0 : updateType.includes('move')) ? model : _super.prototype.getShapeCfg.call(this, model);\n\n if (linkCenter) {\n cfg.startPoint = self.getEndCenter('source');\n cfg.endPoint = self.getEndCenter('target');\n } else {\n var controlPoints = cfg.controlPoints || self.getControlPointsByCenter(cfg);\n cfg.startPoint = self.getLinkPoint('source', model, controlPoints);\n cfg.endPoint = self.getLinkPoint('target', model, controlPoints);\n }\n\n cfg.sourceNode = self.get('sourceNode');\n cfg.targetNode = self.get('targetNode');\n return cfg;\n };\n /**\n * 获取边的数据模型\n */\n\n\n Edge.prototype.getModel = function () {\n var out = this.get('model');\n var sourceItem = this.get(\"source\".concat(ITEM_NAME_SUFFIX));\n var targetItem = this.get(\"target\".concat(ITEM_NAME_SUFFIX));\n\n if (sourceItem) {\n delete out[\"source\".concat(ITEM_NAME_SUFFIX)];\n } else {\n out.source = this.get(\"start\".concat(POINT_NAME_SUFFIX));\n }\n\n if (targetItem) {\n delete out[\"target\".concat(ITEM_NAME_SUFFIX)];\n } else {\n out.target = this.get(\"end\".concat(POINT_NAME_SUFFIX));\n }\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(out.source) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(out.source)) {\n out.source = out.source.getID();\n }\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(out.target) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(out.target)) {\n out.target = out.target.getID();\n }\n\n return out;\n };\n\n Edge.prototype.setSource = function (source) {\n this.setEnd('source', source);\n this.set('source', source);\n };\n\n Edge.prototype.setTarget = function (target) {\n this.setEnd('target', target);\n this.set('target', target);\n };\n\n Edge.prototype.getSource = function () {\n return this.get('source');\n };\n\n Edge.prototype.getTarget = function () {\n return this.get('target');\n };\n\n Edge.prototype.updatePosition = function () {\n return false;\n };\n /**\n * 边不需要重计算容器位置,直接重新计算 path 位置\n * @param {object} cfg 待更新数据\n */\n\n\n Edge.prototype.update = function (cfg, updateType) {\n if (updateType === void 0) {\n updateType = undefined;\n }\n\n var model = this.get('model');\n var oriVisible = model.visible;\n var cfgVisible = cfg.visible;\n if (oriVisible !== cfgVisible && cfgVisible !== undefined) this.changeVisibility(cfgVisible);\n var styles = this.get('styles');\n\n if (cfg.stateStyles) {\n // 更新 item 时更新 this.get('styles') 中的值\n var stateStyles = cfg.stateStyles;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(styles, stateStyles);\n delete cfg.stateStyles;\n }\n\n Object.assign(model, cfg);\n this.updateShape(updateType);\n this.afterUpdate();\n this.clearCache();\n };\n\n Edge.prototype.destroy = function () {\n var sourceItem = this.get(\"source\".concat(ITEM_NAME_SUFFIX));\n var targetItem = this.get(\"target\".concat(ITEM_NAME_SUFFIX));\n\n if (sourceItem && !sourceItem.destroyed) {\n sourceItem.removeEdge(this);\n }\n\n if (targetItem && !targetItem.destroyed) {\n targetItem.removeEdge(this);\n }\n\n _super.prototype.destroy.call(this);\n };\n\n return Edge;\n}(_item__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Edge);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL2VkZ2UuanM/MzAwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUMrQjtBQUN2QztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qjs7QUFFOUIsZ0NBQWdDOztBQUVoQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFTOztBQUVYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLGdFQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVcsd0RBQUs7QUFDaEI7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBLFdBQVcsd0RBQUs7QUFDaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtEQUErRDs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0EscUNBQXFDOzs7QUFHckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxTQUFTLDJEQUFRLGlCQUFpQixnRUFBYTtBQUMvQztBQUNBOztBQUVBLFNBQVMsMkRBQVEsaUJBQWlCLGdFQUFhO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzREFBRztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLG1FQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaXRlbS9lZGdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc1N0cmluZywgaXNQbGFpbk9iamVjdCwgaXNOaWwsIG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEl0ZW0gZnJvbSAnLi9pdGVtJztcbnZhciBFTkRfTUFQID0ge1xuICBzb3VyY2U6ICdzdGFydCcsXG4gIHRhcmdldDogJ2VuZCdcbn07XG52YXIgSVRFTV9OQU1FX1NVRkZJWCA9ICdOb2RlJzsgLy8g56uv54K555qE5ZCO57yA77yM5aaCIHNvdXJjZU5vZGUsIHRhcmdldE5vZGVcblxudmFyIFBPSU5UX05BTUVfU1VGRklYID0gJ1BvaW50JzsgLy8g6LW354K55oiW6ICF57uT5p2f54K555qE5ZCO57yA77yM5aaCIHN0YXJ0UG9pbnQsIGVuZFBvaW50XG5cbnZhciBBTkNIT1JfTkFNRV9TVUZGSVggPSAnQW5jaG9yJztcblxudmFyIEVkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoRWRnZSwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBFZGdlKCkge1xuICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgfVxuXG4gIEVkZ2UucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdlZGdlJyxcbiAgICAgIHNvdXJjZU5vZGU6IG51bGwsXG4gICAgICB0YXJnZXROb2RlOiBudWxsLFxuICAgICAgc3RhcnRQb2ludDogbnVsbCxcbiAgICAgIGVuZFBvaW50OiBudWxsLFxuICAgICAgbGlua0NlbnRlcjogZmFsc2VcbiAgICB9O1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLnNldEVuZCA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBwb2ludE5hbWUgPSBFTkRfTUFQW25hbWVdICsgUE9JTlRfTkFNRV9TVUZGSVg7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHByZUl0ZW0gPSB0aGlzLmdldChpdGVtTmFtZSk7XG5cbiAgICBpZiAocHJlSXRlbSAmJiAhcHJlSXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIC8vIOWmguaenOS5i+WJjeWtmOWcqOiKgueCue+8jOWImeenu+mZpOaOiei+uVxuICAgICAgcHJlSXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgLy8g5aaC5p6c6K6+572u5oiQ5YW35L2T55qE54K577yM5YiZ5riF55CG6IqC54K5XG4gICAgICB0aGlzLnNldChwb2ludE5hbWUsIHZhbHVlKTtcbiAgICAgIHRoaXMuc2V0KGl0ZW1OYW1lLCBudWxsKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZS5hZGRFZGdlKHRoaXMpO1xuICAgICAgdGhpcy5zZXQoaXRlbU5hbWUsIHZhbHVlKTtcbiAgICAgIHRoaXMuc2V0KHBvaW50TmFtZSwgbnVsbCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog6I635Y+W6L+e5o6l54K555qE5Z2Q5qCHXG4gICAqIEBwYXJhbSBuYW1lIHNvdXJjZSB8IHRhcmdldFxuICAgKiBAcGFyYW0gbW9kZWwg6L6555qE5pWw5o2u5qih5Z6LXG4gICAqIEBwYXJhbSBjb250cm9sUG9pbnRzIOaOp+WItueCuVxuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldExpbmtQb2ludCA9IGZ1bmN0aW9uIChuYW1lLCBtb2RlbCwgY29udHJvbFBvaW50cykge1xuICAgIHZhciBwb2ludE5hbWUgPSBFTkRfTUFQW25hbWVdICsgUE9JTlRfTkFNRV9TVUZGSVg7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50ID0gdGhpcy5nZXQocG9pbnROYW1lKTtcblxuICAgIGlmICghcG9pbnQpIHtcbiAgICAgIHZhciBpdGVtID0gdGhpcy5nZXQoaXRlbU5hbWUpO1xuICAgICAgdmFyIGFuY2hvck5hbWUgPSBuYW1lICsgQU5DSE9SX05BTUVfU1VGRklYO1xuICAgICAgdmFyIHByZVBvaW50ID0gdGhpcy5nZXRQcmVQb2ludChuYW1lLCBjb250cm9sUG9pbnRzKTtcbiAgICAgIHZhciBhbmNob3JJbmRleCA9IG1vZGVsW2FuY2hvck5hbWVdO1xuXG4gICAgICBpZiAoIWlzTmlsKGFuY2hvckluZGV4KSkge1xuICAgICAgICAvLyDlpoLmnpzmnInplJrngrnvvIzliJnkvb/nlKjplJrngrnntKLlvJXojrflj5bov57mjqXngrlcbiAgICAgICAgcG9pbnQgPSBpdGVtLmdldExpbmtQb2ludEJ5QW5jaG9yKGFuY2hvckluZGV4KTtcbiAgICAgIH0gLy8g5aaC5p6c6ZSa54K55rKh5pyJ5a+55bqU55qE54K55oiW6ICF5rKh5pyJ6ZSa54K577yM5YiZ55u05o6l6K6h566X6L+e5o6l54K5XG5cblxuICAgICAgcG9pbnQgPSBwb2ludCB8fCBpdGVtLmdldExpbmtQb2ludChwcmVQb2ludCk7XG5cbiAgICAgIGlmICghaXNOaWwocG9pbnQuaW5kZXgpKSB7XG4gICAgICAgIHRoaXMuc2V0KFwiXCIuY29uY2F0KG5hbWUsIFwiQW5jaG9ySW5kZXhcIiksIHBvaW50LmluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9pbnQ7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blkIznq6/ngrnov5vooYzov57mjqXnmoTngrnvvIzorqHnrpfkuqTmsYfngrlcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIGNvbnRyb2xQb2ludHNcbiAgICovXG5cblxuICBFZGdlLnByb3RvdHlwZS5nZXRQcmVQb2ludCA9IGZ1bmN0aW9uIChuYW1lLCBjb250cm9sUG9pbnRzKSB7XG4gICAgaWYgKGNvbnRyb2xQb2ludHMgJiYgY29udHJvbFBvaW50cy5sZW5ndGgpIHtcbiAgICAgIHZhciBpbmRleCA9IG5hbWUgPT09ICdzb3VyY2UnID8gMCA6IGNvbnRyb2xQb2ludHMubGVuZ3RoIC0gMTtcbiAgICAgIHJldHVybiBjb250cm9sUG9pbnRzW2luZGV4XTtcbiAgICB9XG5cbiAgICB2YXIgb3Bwb3NpdGVOYW1lID0gbmFtZSA9PT0gJ3NvdXJjZScgPyAndGFyZ2V0JyA6ICdzb3VyY2UnOyAvLyDlj5blj6bkuIDkuKroioLngrnnmoTkvY3nva5cblxuICAgIHJldHVybiB0aGlzLmdldEVuZFBvaW50KG9wcG9zaXRlTmFtZSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bnq6/ngrnnmoTkvY3nva5cbiAgICogQHBhcmFtIG5hbWVcbiAgICovXG5cblxuICBFZGdlLnByb3RvdHlwZS5nZXRFbmRQb2ludCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50TmFtZSA9IEVORF9NQVBbbmFtZV0gKyBQT0lOVF9OQU1FX1NVRkZJWDtcbiAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0KGl0ZW1OYW1lKTsgLy8g5aaC5p6c5pyJ56uv54K577yM55u05o6l5L2/55SoIG1vZGVsXG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uZ2V0KCdtb2RlbCcpO1xuICAgIH0gLy8g5ZCm5YiZ55u05o6l5L2/55So54K5XG5cblxuICAgIHJldHVybiB0aGlzLmdldChwb2ludE5hbWUpO1xuICB9O1xuICAvKipcbiAgICog6YCa6L+H56uv54K555qE5Lit5b+D6I635Y+W5o6n5Yi254K5XG4gICAqIEBwYXJhbSBtb2RlbFxuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldENvbnRyb2xQb2ludHNCeUNlbnRlciA9IGZ1bmN0aW9uIChtb2RlbCkge1xuICAgIHZhciBzb3VyY2VQb2ludCA9IHRoaXMuZ2V0RW5kUG9pbnQoJ3NvdXJjZScpO1xuICAgIHZhciB0YXJnZXRQb2ludCA9IHRoaXMuZ2V0RW5kUG9pbnQoJ3RhcmdldCcpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIHR5cGUgPSBtb2RlbC50eXBlO1xuICAgIHJldHVybiBzaGFwZUZhY3RvcnkuZ2V0Q29udHJvbFBvaW50cyh0eXBlLCB7XG4gICAgICBzdGFydFBvaW50OiBzb3VyY2VQb2ludCxcbiAgICAgIGVuZFBvaW50OiB0YXJnZXRQb2ludFxuICAgIH0pO1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLmdldEVuZENlbnRlciA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50TmFtZSA9IEVORF9NQVBbbmFtZV0gKyBQT0lOVF9OQU1FX1NVRkZJWDtcbiAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0KGl0ZW1OYW1lKTsgLy8g5aaC5p6c5pyJ56uv54K577yM55u05o6l5L2/55SoIG1vZGVsXG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGJib3guY2VudGVyWCxcbiAgICAgICAgeTogYmJveC5jZW50ZXJZXG4gICAgICB9O1xuICAgIH0gLy8g5ZCm5YiZ55u05o6l5L2/55So54K5XG5cblxuICAgIHJldHVybiB0aGlzLmdldChwb2ludE5hbWUpO1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgX3N1cGVyLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyk7IC8vIOWIneWni+WMluS4pOS4querr+eCuVxuXG5cbiAgICB0aGlzLnNldFNvdXJjZSh0aGlzLmdldCgnc291cmNlJykpO1xuICAgIHRoaXMuc2V0VGFyZ2V0KHRoaXMuZ2V0KCd0YXJnZXQnKSk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0U2hhcGVDZmcgPSBmdW5jdGlvbiAobW9kZWwsIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGxpbmtDZW50ZXIgPSBzZWxmLmdldCgnbGlua0NlbnRlcicpOyAvLyDlpoLmnpzov57mjqXliLDkuK3lv4PvvIzlv73op4bplJrngrnjgIHlv73op4bmjqfliLbngrlcblxuICAgIHZhciBjZmcgPSAodXBkYXRlVHlwZSA9PT0gbnVsbCB8fCB1cGRhdGVUeXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1cGRhdGVUeXBlLmluY2x1ZGVzKCdtb3ZlJykpID8gbW9kZWwgOiBfc3VwZXIucHJvdG90eXBlLmdldFNoYXBlQ2ZnLmNhbGwodGhpcywgbW9kZWwpO1xuXG4gICAgaWYgKGxpbmtDZW50ZXIpIHtcbiAgICAgIGNmZy5zdGFydFBvaW50ID0gc2VsZi5nZXRFbmRDZW50ZXIoJ3NvdXJjZScpO1xuICAgICAgY2ZnLmVuZFBvaW50ID0gc2VsZi5nZXRFbmRDZW50ZXIoJ3RhcmdldCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY29udHJvbFBvaW50cyA9IGNmZy5jb250cm9sUG9pbnRzIHx8IHNlbGYuZ2V0Q29udHJvbFBvaW50c0J5Q2VudGVyKGNmZyk7XG4gICAgICBjZmcuc3RhcnRQb2ludCA9IHNlbGYuZ2V0TGlua1BvaW50KCdzb3VyY2UnLCBtb2RlbCwgY29udHJvbFBvaW50cyk7XG4gICAgICBjZmcuZW5kUG9pbnQgPSBzZWxmLmdldExpbmtQb2ludCgndGFyZ2V0JywgbW9kZWwsIGNvbnRyb2xQb2ludHMpO1xuICAgIH1cblxuICAgIGNmZy5zb3VyY2VOb2RlID0gc2VsZi5nZXQoJ3NvdXJjZU5vZGUnKTtcbiAgICBjZmcudGFyZ2V0Tm9kZSA9IHNlbGYuZ2V0KCd0YXJnZXROb2RlJyk7XG4gICAgcmV0dXJuIGNmZztcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPlui+ueeahOaVsOaNruaooeWei1xuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldE1vZGVsID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvdXQgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICB2YXIgc291cmNlSXRlbSA9IHRoaXMuZ2V0KFwic291cmNlXCIuY29uY2F0KElURU1fTkFNRV9TVUZGSVgpKTtcbiAgICB2YXIgdGFyZ2V0SXRlbSA9IHRoaXMuZ2V0KFwidGFyZ2V0XCIuY29uY2F0KElURU1fTkFNRV9TVUZGSVgpKTtcblxuICAgIGlmIChzb3VyY2VJdGVtKSB7XG4gICAgICBkZWxldGUgb3V0W1wic291cmNlXCIuY29uY2F0KElURU1fTkFNRV9TVUZGSVgpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0LnNvdXJjZSA9IHRoaXMuZ2V0KFwic3RhcnRcIi5jb25jYXQoUE9JTlRfTkFNRV9TVUZGSVgpKTtcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0SXRlbSkge1xuICAgICAgZGVsZXRlIG91dFtcInRhcmdldFwiLmNvbmNhdChJVEVNX05BTUVfU1VGRklYKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC50YXJnZXQgPSB0aGlzLmdldChcImVuZFwiLmNvbmNhdChQT0lOVF9OQU1FX1NVRkZJWCkpO1xuICAgIH1cblxuICAgIGlmICghaXNTdHJpbmcob3V0LnNvdXJjZSkgJiYgIWlzUGxhaW5PYmplY3Qob3V0LnNvdXJjZSkpIHtcbiAgICAgIG91dC5zb3VyY2UgPSBvdXQuc291cmNlLmdldElEKCk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1N0cmluZyhvdXQudGFyZ2V0KSAmJiAhaXNQbGFpbk9iamVjdChvdXQudGFyZ2V0KSkge1xuICAgICAgb3V0LnRhcmdldCA9IG91dC50YXJnZXQuZ2V0SUQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLnNldFNvdXJjZSA9IGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICB0aGlzLnNldEVuZCgnc291cmNlJywgc291cmNlKTtcbiAgICB0aGlzLnNldCgnc291cmNlJywgc291cmNlKTtcbiAgfTtcblxuICBFZGdlLnByb3RvdHlwZS5zZXRUYXJnZXQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgdGhpcy5zZXRFbmQoJ3RhcmdldCcsIHRhcmdldCk7XG4gICAgdGhpcy5zZXQoJ3RhcmdldCcsIHRhcmdldCk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0U291cmNlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnc291cmNlJyk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgndGFyZ2V0Jyk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUudXBkYXRlUG9zaXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuICAvKipcbiAgICog6L655LiN6ZyA6KaB6YeN6K6h566X5a655Zmo5L2N572u77yM55u05o6l6YeN5paw6K6h566XIHBhdGgg5L2N572uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjZmcg5b6F5pu05paw5pWw5o2uXG4gICAqL1xuXG5cbiAgRWRnZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGNmZywgdXBkYXRlVHlwZSkge1xuICAgIGlmICh1cGRhdGVUeXBlID09PSB2b2lkIDApIHtcbiAgICAgIHVwZGF0ZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIG9yaVZpc2libGUgPSBtb2RlbC52aXNpYmxlO1xuICAgIHZhciBjZmdWaXNpYmxlID0gY2ZnLnZpc2libGU7XG4gICAgaWYgKG9yaVZpc2libGUgIT09IGNmZ1Zpc2libGUgJiYgY2ZnVmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB0aGlzLmNoYW5nZVZpc2liaWxpdHkoY2ZnVmlzaWJsZSk7XG4gICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgIGlmIChjZmcuc3RhdGVTdHlsZXMpIHtcbiAgICAgIC8vIOabtOaWsCBpdGVtIOaXtuabtOaWsCB0aGlzLmdldCgnc3R5bGVzJykg5Lit55qE5YC8XG4gICAgICB2YXIgc3RhdGVTdHlsZXMgPSBjZmcuc3RhdGVTdHlsZXM7XG4gICAgICBtaXgoc3R5bGVzLCBzdGF0ZVN0eWxlcyk7XG4gICAgICBkZWxldGUgY2ZnLnN0YXRlU3R5bGVzO1xuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24obW9kZWwsIGNmZyk7XG4gICAgdGhpcy51cGRhdGVTaGFwZSh1cGRhdGVUeXBlKTtcbiAgICB0aGlzLmFmdGVyVXBkYXRlKCk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlSXRlbSA9IHRoaXMuZ2V0KFwic291cmNlXCIuY29uY2F0KElURU1fTkFNRV9TVUZGSVgpKTtcbiAgICB2YXIgdGFyZ2V0SXRlbSA9IHRoaXMuZ2V0KFwidGFyZ2V0XCIuY29uY2F0KElURU1fTkFNRV9TVUZGSVgpKTtcblxuICAgIGlmIChzb3VyY2VJdGVtICYmICFzb3VyY2VJdGVtLmRlc3Ryb3llZCkge1xuICAgICAgc291cmNlSXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0YXJnZXRJdGVtICYmICF0YXJnZXRJdGVtLmRlc3Ryb3llZCkge1xuICAgICAgdGFyZ2V0SXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIHJldHVybiBFZGdlO1xufShJdGVtKTtcblxuZXhwb3J0IGRlZmF1bHQgRWRnZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/item/edge.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/item/hull.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g6-core/es/item/hull.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/@antv/path-util/esm/index.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/path */ \"./node_modules/@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/hull/convexHull */ \"./node_modules/@antv/g6-core/es/element/hull/convexHull.js\");\n/* harmony import */ var _element_hull_bubbleset__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/hull/bubbleset */ \"./node_modules/@antv/g6-core/es/element/hull/bubbleset.js\");\n\n\n\n\n\n\n\n/**\n * 用于包裹内部的成员的轮廓。\n * convex hull(凸包):http://geomalgorithms.com/a10-_hull-1.html#Monotone%20Chain\n * bubble: 使用 bubbleset算法,refer: http://vialab.science.uoit.ca/wp-content/papercite-data/pdf/col2009c.pdf\n * 通过配置 padding 可以调节包裹轮廓对节点的松紧程度\n */\n\nvar Hull =\n/** @class */\nfunction () {\n function Hull(graph, cfg) {\n this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(this.getDefaultCfg(), cfg);\n this.graph = graph;\n this.id = this.cfg.id;\n this.group = this.cfg.group;\n this.members = this.cfg.members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? graph.findById(item) : item;\n });\n this.nonMembers = this.cfg.nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? graph.findById(item) : item;\n });\n this.setPadding();\n this.setType();\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n }\n\n Hull.prototype.getDefaultCfg = function () {\n return {\n id: 'g6-hull',\n type: 'round-convex',\n members: [],\n nonMembers: [],\n style: {\n fill: 'lightblue',\n stroke: 'blue',\n opacity: 0.2\n },\n padding: 10\n };\n };\n\n Hull.prototype.setPadding = function () {\n var nodeSize = this.members.length && this.members[0].getKeyShape().getCanvasBBox().width / 2;\n this.padding = this.cfg.padding > 0 ? this.cfg.padding + nodeSize : 10 + nodeSize;\n this.cfg.bubbleCfg = {\n nodeR0: this.padding - nodeSize,\n nodeR1: this.padding - nodeSize,\n morphBuffer: this.padding - nodeSize\n };\n };\n\n Hull.prototype.setType = function () {\n this.type = this.cfg.type;\n\n if (this.members.length < 3) {\n this.type = 'round-convex';\n }\n\n if (this.type !== 'round-convex' && this.type !== 'smooth-convex' && this.type !== 'bubble') {\n console.warn('The hull type should be either round-convex, smooth-convex or bubble, round-convex is used by default.');\n this.type = 'round-convex';\n }\n };\n\n Hull.prototype.calcPath = function (members, nonMembers) {\n var contour, path, hull;\n\n switch (this.type) {\n case 'round-convex':\n contour = Object(_element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__[\"genConvexHull\"])(members);\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"roundedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"parsePathString\"])(hull);\n break;\n\n case 'smooth-convex':\n contour = Object(_element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__[\"genConvexHull\"])(members);\n\n if (contour.length === 2) {\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"roundedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"parsePathString\"])(hull);\n } else if (contour.length > 2) {\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"paddedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"getClosedSpline\"])(hull);\n }\n\n break;\n\n case 'bubble':\n contour = Object(_element_hull_bubbleset__WEBPACK_IMPORTED_MODULE_6__[\"genBubbleSet\"])(members, nonMembers, this.cfg.bubbleCfg);\n path = contour.length >= 2 && Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"getClosedSpline\"])(contour);\n break;\n\n default:\n }\n\n return path;\n };\n\n Hull.prototype.render = function () {\n this.group.addShape('path', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: this.path\n }, this.cfg.style),\n id: this.id,\n name: this.cfg.id,\n capture: false\n });\n this.group.toBack();\n };\n /**\n * 增加hull的成员,同时如果该成员原先在nonMembers中,则从nonMembers中去掉\n * @param item 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.addMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n this.members.push(item);\n var index = this.nonMembers.indexOf(item);\n\n if (index > -1) {\n this.nonMembers.splice(index, 1);\n }\n\n this.updateData(this.members, this.nonMembers);\n return true;\n };\n /**\n * 增加hull需要排除的节点,同时如果该成员原先在members中,则从members中去掉\n * @param item 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.addNonMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n this.nonMembers.push(item);\n var index = this.members.indexOf(item);\n\n if (index > -1) {\n this.members.splice(index, 1);\n }\n\n this.updateData(this.members, this.nonMembers);\n return true;\n };\n /**\n * 移除hull中的成员\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.removeMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n var index = this.members.indexOf(item);\n\n if (index > -1) {\n this.members.splice(index, 1);\n this.updateData(this.members, this.nonMembers);\n return true;\n }\n\n return false;\n };\n /**\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.removeNonMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n var index = this.nonMembers.indexOf(item);\n\n if (index > -1) {\n this.nonMembers.splice(index, 1);\n this.updateData(this.members, this.nonMembers);\n return true;\n }\n\n return false;\n };\n\n Hull.prototype.updateData = function (members, nonMembers) {\n var _this = this;\n\n this.group.findById(this.id).remove();\n if (members) this.members = members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n if (nonMembers) this.nonMembers = nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n };\n\n Hull.prototype.updateStyle = function (cfg) {\n var path = this.group.findById(this.id);\n path.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg));\n };\n /**\n * 更新 hull\n * @param cfg hull 配置项\n */\n\n\n Hull.prototype.updateCfg = function (cfg) {\n var _this = this;\n\n this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(this.cfg, cfg);\n this.id = this.cfg.id;\n this.group = this.cfg.group;\n\n if (cfg.members) {\n this.members = this.cfg.members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n }\n\n if (cfg.nonMembers) {\n this.nonMembers = this.cfg.nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n } // TODO padding 设置太大,会影响到 contain 结果\n\n\n this.setPadding();\n this.setType();\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n };\n /**\n * 判断是否在hull内部\n * @param item\n */\n\n\n Hull.prototype.contain = function (item) {\n var _this = this;\n\n var nodeItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n nodeItem = this.graph.findById(item);\n } else {\n nodeItem = item;\n }\n\n var shapePoints;\n var shape = nodeItem.getKeyShape();\n\n if (nodeItem.get('type') === 'path') {\n shapePoints = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"pathToPoints\"])(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = [[shapeBBox.minX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.maxY], [shapeBBox.minX, shapeBBox.maxY]];\n }\n\n shapePoints = shapePoints.map(function (canvasPoint) {\n var point = _this.graph.getPointByCanvas(canvasPoint[0], canvasPoint[1]);\n\n return [point.x, point.y];\n });\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_4__[\"isPolygonsIntersect\"])(shapePoints, Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"pathToPoints\"])(this.path));\n };\n\n Hull.prototype.destroy = function () {\n this.group.remove();\n this.cfg = null;\n };\n\n return Hull;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Hull);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL2h1bGwuanM/YTU3OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2M7QUFDRztBQUNvQztBQUNuQztBQUNRO0FBQ0Y7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwwREFBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckIsS0FBSztBQUNMO0FBQ0EsYUFBYSwyREFBUTtBQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFhO0FBQy9CLGVBQWUsOERBQVc7QUFDMUI7QUFDQSxTQUFTO0FBQ1QsZUFBZSx1RUFBZTtBQUM5Qjs7QUFFQTtBQUNBLGtCQUFrQiw4RUFBYTs7QUFFL0I7QUFDQSxpQkFBaUIsOERBQVc7QUFDNUI7QUFDQSxXQUFXO0FBQ1gsaUJBQWlCLHVFQUFlO0FBQ2hDLFNBQVM7QUFDVCxpQkFBaUIsNkRBQVU7QUFDM0I7QUFDQSxXQUFXO0FBQ1gsaUJBQWlCLGtFQUFlO0FBQ2hDOztBQUVBOztBQUVBO0FBQ0Esa0JBQWtCLDRFQUFZO0FBQzlCLHNDQUFzQyxrRUFBZTtBQUNyRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsc0RBQVE7QUFDckI7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckIsS0FBSztBQUNMO0FBQ0EsYUFBYSwyREFBUTtBQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLHNEQUFRLEdBQUc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxlQUFlLDBEQUFPO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWUsMkRBQVE7QUFDdkIsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxlQUFlLDJEQUFRO0FBQ3ZCLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsK0RBQVk7QUFDaEMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLFdBQVcsc0VBQW1CLGNBQWMsK0RBQVk7QUFDeEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLG1FQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaXRlbS9odWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXgsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBwYXJzZVBhdGhTdHJpbmcgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuaW1wb3J0IHsgcGF0aFRvUG9pbnRzLCBnZXRDbG9zZWRTcGxpbmUsIHJvdW5kZWRIdWxsLCBwYWRkZWRIdWxsIH0gZnJvbSAnLi4vdXRpbC9wYXRoJztcbmltcG9ydCB7IGlzUG9seWdvbnNJbnRlcnNlY3QgfSBmcm9tICcuLi91dGlsL21hdGgnO1xuaW1wb3J0IHsgZ2VuQ29udmV4SHVsbCB9IGZyb20gJy4uL2VsZW1lbnQvaHVsbC9jb252ZXhIdWxsJztcbmltcG9ydCB7IGdlbkJ1YmJsZVNldCB9IGZyb20gJy4uL2VsZW1lbnQvaHVsbC9idWJibGVzZXQnO1xuLyoqXG4gKiDnlKjkuo7ljIXoo7nlhoXpg6jnmoTmiJDlkZjnmoTova7lu5PjgIJcbiAqIGNvbnZleCBodWxsKOWHuOWMhSnvvJpodHRwOi8vZ2VvbWFsZ29yaXRobXMuY29tL2ExMC1faHVsbC0xLmh0bWwjTW9ub3RvbmUlMjBDaGFpblxuICogYnViYmxlOiDkvb/nlKggYnViYmxlc2V0566X5rOV77yMcmVmZXI6IGh0dHA6Ly92aWFsYWIuc2NpZW5jZS51b2l0LmNhL3dwLWNvbnRlbnQvcGFwZXJjaXRlLWRhdGEvcGRmL2NvbDIwMDljLnBkZlxuICog6YCa6L+H6YWN572uIHBhZGRpbmcg5Y+v5Lul6LCD6IqC5YyF6KO56L2u5buT5a+56IqC54K555qE5p2+57Sn56iL5bqmXG4gKi9cblxudmFyIEh1bGwgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBIdWxsKGdyYXBoLCBjZmcpIHtcbiAgICB0aGlzLmNmZyA9IGRlZXBNaXgodGhpcy5nZXREZWZhdWx0Q2ZnKCksIGNmZyk7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuaWQgPSB0aGlzLmNmZy5pZDtcbiAgICB0aGlzLmdyb3VwID0gdGhpcy5jZmcuZ3JvdXA7XG4gICAgdGhpcy5tZW1iZXJzID0gdGhpcy5jZmcubWVtYmVycy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpc1N0cmluZyhpdGVtKSA/IGdyYXBoLmZpbmRCeUlkKGl0ZW0pIDogaXRlbTtcbiAgICB9KTtcbiAgICB0aGlzLm5vbk1lbWJlcnMgPSB0aGlzLmNmZy5ub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0UGFkZGluZygpO1xuICAgIHRoaXMuc2V0VHlwZSgpO1xuICAgIHRoaXMucGF0aCA9IHRoaXMuY2FsY1BhdGgodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBIdWxsLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogJ2c2LWh1bGwnLFxuICAgICAgdHlwZTogJ3JvdW5kLWNvbnZleCcsXG4gICAgICBtZW1iZXJzOiBbXSxcbiAgICAgIG5vbk1lbWJlcnM6IFtdLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogJ2xpZ2h0Ymx1ZScsXG4gICAgICAgIHN0cm9rZTogJ2JsdWUnLFxuICAgICAgICBvcGFjaXR5OiAwLjJcbiAgICAgIH0sXG4gICAgICBwYWRkaW5nOiAxMFxuICAgIH07XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuc2V0UGFkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZVNpemUgPSB0aGlzLm1lbWJlcnMubGVuZ3RoICYmIHRoaXMubWVtYmVyc1swXS5nZXRLZXlTaGFwZSgpLmdldENhbnZhc0JCb3goKS53aWR0aCAvIDI7XG4gICAgdGhpcy5wYWRkaW5nID0gdGhpcy5jZmcucGFkZGluZyA+IDAgPyB0aGlzLmNmZy5wYWRkaW5nICsgbm9kZVNpemUgOiAxMCArIG5vZGVTaXplO1xuICAgIHRoaXMuY2ZnLmJ1YmJsZUNmZyA9IHtcbiAgICAgIG5vZGVSMDogdGhpcy5wYWRkaW5nIC0gbm9kZVNpemUsXG4gICAgICBub2RlUjE6IHRoaXMucGFkZGluZyAtIG5vZGVTaXplLFxuICAgICAgbW9ycGhCdWZmZXI6IHRoaXMucGFkZGluZyAtIG5vZGVTaXplXG4gICAgfTtcbiAgfTtcblxuICBIdWxsLnByb3RvdHlwZS5zZXRUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMudHlwZSA9IHRoaXMuY2ZnLnR5cGU7XG5cbiAgICBpZiAodGhpcy5tZW1iZXJzLmxlbmd0aCA8IDMpIHtcbiAgICAgIHRoaXMudHlwZSA9ICdyb3VuZC1jb252ZXgnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdyb3VuZC1jb252ZXgnICYmIHRoaXMudHlwZSAhPT0gJ3Ntb290aC1jb252ZXgnICYmIHRoaXMudHlwZSAhPT0gJ2J1YmJsZScpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGh1bGwgdHlwZSBzaG91bGQgYmUgZWl0aGVyIHJvdW5kLWNvbnZleCwgc21vb3RoLWNvbnZleCBvciBidWJibGUsIHJvdW5kLWNvbnZleCBpcyB1c2VkIGJ5IGRlZmF1bHQuJyk7XG4gICAgICB0aGlzLnR5cGUgPSAncm91bmQtY29udmV4JztcbiAgICB9XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuY2FsY1BhdGggPSBmdW5jdGlvbiAobWVtYmVycywgbm9uTWVtYmVycykge1xuICAgIHZhciBjb250b3VyLCBwYXRoLCBodWxsO1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3JvdW5kLWNvbnZleCc6XG4gICAgICAgIGNvbnRvdXIgPSBnZW5Db252ZXhIdWxsKG1lbWJlcnMpO1xuICAgICAgICBodWxsID0gcm91bmRlZEh1bGwoY29udG91ci5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgfSksIHRoaXMucGFkZGluZyk7XG4gICAgICAgIHBhdGggPSBwYXJzZVBhdGhTdHJpbmcoaHVsbCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzbW9vdGgtY29udmV4JzpcbiAgICAgICAgY29udG91ciA9IGdlbkNvbnZleEh1bGwobWVtYmVycyk7XG5cbiAgICAgICAgaWYgKGNvbnRvdXIubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgaHVsbCA9IHJvdW5kZWRIdWxsKGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgICB9KSwgdGhpcy5wYWRkaW5nKTtcbiAgICAgICAgICBwYXRoID0gcGFyc2VQYXRoU3RyaW5nKGh1bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnRvdXIubGVuZ3RoID4gMikge1xuICAgICAgICAgIGh1bGwgPSBwYWRkZWRIdWxsKGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgICB9KSwgdGhpcy5wYWRkaW5nKTtcbiAgICAgICAgICBwYXRoID0gZ2V0Q2xvc2VkU3BsaW5lKGh1bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2J1YmJsZSc6XG4gICAgICAgIGNvbnRvdXIgPSBnZW5CdWJibGVTZXQobWVtYmVycywgbm9uTWVtYmVycywgdGhpcy5jZmcuYnViYmxlQ2ZnKTtcbiAgICAgICAgcGF0aCA9IGNvbnRvdXIubGVuZ3RoID49IDIgJiYgZ2V0Q2xvc2VkU3BsaW5lKGNvbnRvdXIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfTtcblxuICBIdWxsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5ncm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aFxuICAgICAgfSwgdGhpcy5jZmcuc3R5bGUpLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBuYW1lOiB0aGlzLmNmZy5pZCxcbiAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5ncm91cC50b0JhY2soKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWinuWKoGh1bGznmoTmiJDlkZjvvIzlkIzml7blpoLmnpzor6XmiJDlkZjljp/lhYjlnKhub25NZW1iZXJz5Lit77yM5YiZ5LuObm9uTWVtYmVyc+S4reWOu+aOiVxuICAgKiBAcGFyYW0gaXRlbSDoioLngrnlrp7kvotcbiAgICogQHJldHVybiBib29sZWFuIOa3u+WKoOaIkOWKn+i/lOWbniB0cnVl77yM5ZCm5YiZ6L+U5ZueIGZhbHNlXG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUuYWRkTWVtYmVyID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIGl0ZW0gPSB0aGlzLmdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIHRoaXMubWVtYmVycy5wdXNoKGl0ZW0pO1xuICAgIHZhciBpbmRleCA9IHRoaXMubm9uTWVtYmVycy5pbmRleE9mKGl0ZW0pO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMubm9uTWVtYmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRGF0YSh0aGlzLm1lbWJlcnMsIHRoaXMubm9uTWVtYmVycyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlop7liqBodWxs6ZyA6KaB5o6S6Zmk55qE6IqC54K577yM5ZCM5pe25aaC5p6c6K+l5oiQ5ZGY5Y6f5YWI5ZyobWVtYmVyc+S4re+8jOWImeS7jm1lbWJlcnPkuK3ljrvmjolcbiAgICogQHBhcmFtIGl0ZW0g6IqC54K55a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDmt7vliqDmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIEh1bGwucHJvdG90eXBlLmFkZE5vbk1lbWJlciA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm47XG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSBpdGVtID0gdGhpcy5ncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB0aGlzLm5vbk1lbWJlcnMucHVzaChpdGVtKTtcbiAgICB2YXIgaW5kZXggPSB0aGlzLm1lbWJlcnMuaW5kZXhPZihpdGVtKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLm1lbWJlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURhdGEodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog56e76ZmkaHVsbOS4reeahOaIkOWRmFxuICAgKiBAcGFyYW0gbm9kZSDoioLngrnlrp7kvotcbiAgICogQHJldHVybiBib29sZWFuIOenu+mZpOaIkOWKn+i/lOWbniB0cnVl77yM5ZCm5YiZ6L+U5ZueIGZhbHNlXG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUucmVtb3ZlTWVtYmVyID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIGl0ZW0gPSB0aGlzLmdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIHZhciBpbmRleCA9IHRoaXMubWVtYmVycy5pbmRleE9mKGl0ZW0pO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMubWVtYmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy51cGRhdGVEYXRhKHRoaXMubWVtYmVycywgdGhpcy5ub25NZW1iZXJzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcbiAgLyoqXG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g56e76Zmk5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBIdWxsLnByb3RvdHlwZS5yZW1vdmVOb25NZW1iZXIgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIGlmICghaXRlbSkgcmV0dXJuO1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkgaXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgdmFyIGluZGV4ID0gdGhpcy5ub25NZW1iZXJzLmluZGV4T2YoaXRlbSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5ub25NZW1iZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwZGF0ZURhdGEodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIEh1bGwucHJvdG90eXBlLnVwZGF0ZURhdGEgPSBmdW5jdGlvbiAobWVtYmVycywgbm9uTWVtYmVycykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmdyb3VwLmZpbmRCeUlkKHRoaXMuaWQpLnJlbW92ZSgpO1xuICAgIGlmIChtZW1iZXJzKSB0aGlzLm1lbWJlcnMgPSBtZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIGlmIChub25NZW1iZXJzKSB0aGlzLm5vbk1lbWJlcnMgPSBub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIHRoaXMucGF0aCA9IHRoaXMuY2FsY1BhdGgodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUudXBkYXRlU3R5bGUgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgdmFyIHBhdGggPSB0aGlzLmdyb3VwLmZpbmRCeUlkKHRoaXMuaWQpO1xuICAgIHBhdGguYXR0cihfX2Fzc2lnbih7fSwgY2ZnKSk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrAgaHVsbFxuICAgKiBAcGFyYW0gY2ZnIGh1bGwg6YWN572u6aG5XG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUudXBkYXRlQ2ZnID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmNmZyA9IGRlZXBNaXgodGhpcy5jZmcsIGNmZyk7XG4gICAgdGhpcy5pZCA9IHRoaXMuY2ZnLmlkO1xuICAgIHRoaXMuZ3JvdXAgPSB0aGlzLmNmZy5ncm91cDtcblxuICAgIGlmIChjZmcubWVtYmVycykge1xuICAgICAgdGhpcy5tZW1iZXJzID0gdGhpcy5jZmcubWVtYmVycy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNmZy5ub25NZW1iZXJzKSB7XG4gICAgICB0aGlzLm5vbk1lbWJlcnMgPSB0aGlzLmNmZy5ub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcoaXRlbSkgPyBfdGhpcy5ncmFwaC5maW5kQnlJZChpdGVtKSA6IGl0ZW07XG4gICAgICB9KTtcbiAgICB9IC8vIFRPRE8gcGFkZGluZyDorr7nva7lpKrlpKfvvIzkvJrlvbHlk43liLAgY29udGFpbiDnu5PmnpxcblxuXG4gICAgdGhpcy5zZXRQYWRkaW5nKCk7XG4gICAgdGhpcy5zZXRUeXBlKCk7XG4gICAgdGhpcy5wYXRoID0gdGhpcy5jYWxjUGF0aCh0aGlzLm1lbWJlcnMsIHRoaXMubm9uTWVtYmVycyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIpOaWreaYr+WQpuWcqGh1bGzlhoXpg6hcbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG5cblxuICBIdWxsLnByb3RvdHlwZS5jb250YWluID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIG5vZGVJdGVtO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBub2RlSXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICB2YXIgc2hhcGVQb2ludHM7XG4gICAgdmFyIHNoYXBlID0gbm9kZUl0ZW0uZ2V0S2V5U2hhcGUoKTtcblxuICAgIGlmIChub2RlSXRlbS5nZXQoJ3R5cGUnKSA9PT0gJ3BhdGgnKSB7XG4gICAgICBzaGFwZVBvaW50cyA9IHBhdGhUb1BvaW50cyhzaGFwZS5hdHRyKCdwYXRoJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc2hhcGVCQm94ID0gc2hhcGUuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgc2hhcGVQb2ludHMgPSBbW3NoYXBlQkJveC5taW5YLCBzaGFwZUJCb3gubWluWV0sIFtzaGFwZUJCb3gubWF4WCwgc2hhcGVCQm94Lm1pblldLCBbc2hhcGVCQm94Lm1heFgsIHNoYXBlQkJveC5tYXhZXSwgW3NoYXBlQkJveC5taW5YLCBzaGFwZUJCb3gubWF4WV1dO1xuICAgIH1cblxuICAgIHNoYXBlUG9pbnRzID0gc2hhcGVQb2ludHMubWFwKGZ1bmN0aW9uIChjYW52YXNQb2ludCkge1xuICAgICAgdmFyIHBvaW50ID0gX3RoaXMuZ3JhcGguZ2V0UG9pbnRCeUNhbnZhcyhjYW52YXNQb2ludFswXSwgY2FudmFzUG9pbnRbMV0pO1xuXG4gICAgICByZXR1cm4gW3BvaW50LngsIHBvaW50LnldO1xuICAgIH0pO1xuICAgIHJldHVybiBpc1BvbHlnb25zSW50ZXJzZWN0KHNoYXBlUG9pbnRzLCBwYXRoVG9Qb2ludHModGhpcy5wYXRoKSk7XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyb3VwLnJlbW92ZSgpO1xuICAgIHRoaXMuY2ZnID0gbnVsbDtcbiAgfTtcblxuICByZXR1cm4gSHVsbDtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgSHVsbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/item/hull.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/item/item.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g6-core/es/item/item.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _element_shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/shape */ \"./node_modules/@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/base */ \"./node_modules/@antv/g6-core/es/util/base.js\");\n\n\n\n\n\n\nvar CACHE_BBOX = 'bboxCache';\nvar CACHE_CANVAS_BBOX = 'bboxCanvasCache';\nvar ARROWS = ['startArrow', 'endArrow'];\n\nvar ItemBase =\n/** @class */\nfunction () {\n function ItemBase(cfg) {\n this._cfg = {};\n this.destroyed = false;\n var defaultCfg = {\n /**\n * id\n * @type {string}\n */\n id: undefined,\n\n /**\n * 类型\n * @type {string}\n */\n type: 'item',\n\n /**\n * data model\n * @type {object}\n */\n model: {},\n\n /**\n * g group\n * @type {G.Group}\n */\n group: undefined,\n\n /**\n * is open animate\n * @type {boolean}\n */\n animate: false,\n\n /**\n * visible - not group visible\n * @type {boolean}\n */\n visible: true,\n\n /**\n * locked - lock node\n * @type {boolean}\n */\n locked: false,\n\n /**\n * capture event\n * @type {boolean}\n */\n event: true,\n\n /**\n * key shape to calculate item's bbox\n * @type object\n */\n keyShape: undefined,\n\n /**\n * item's states, such as selected or active\n * @type Array\n */\n states: []\n };\n this._cfg = Object.assign(defaultCfg, this.getDefaultCfg(), cfg);\n var model = this.get('model');\n var id = model.id;\n var itemType = this.get('type');\n\n if (!id) {\n id = Object(_util_base__WEBPACK_IMPORTED_MODULE_5__[\"uniqueId\"])(itemType);\n this.get('model').id = id;\n }\n\n this.set('id', id);\n var group = cfg.group;\n\n if (group) {\n group.set('item', this);\n group.set('id', id);\n }\n\n this.init();\n this.draw();\n var shapeType = model.shape || model.type || (itemType === 'edge' ? 'line' : 'circle');\n var shapeFactory = this.get('shapeFactory');\n\n if (shapeFactory && shapeFactory[shapeType]) {\n var options = shapeFactory[shapeType].options; // merge the stateStyles from item and shape\n\n if (options && options.stateStyles) {\n var styles = this.get('styles') || model.stateStyles;\n styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, options.stateStyles, styles);\n this.set('styles', styles);\n }\n }\n }\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n ItemBase.prototype.calculateBBox = function () {\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n return bbox;\n };\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n ItemBase.prototype.calculateCanvasBBox = function () {\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n return bbox;\n };\n /**\n * draw shape\n */\n\n\n ItemBase.prototype.drawInner = function () {\n var self = this;\n var shapeFactory = self.get('shapeFactory');\n var group = self.get('group');\n var model = self.get('model');\n group.clear();\n var visible = model.visible;\n if (visible !== undefined && !visible) self.changeVisibility(visible);\n\n if (!shapeFactory) {\n return;\n }\n\n self.updatePosition(model);\n var cfg = self.getShapeCfg(model); // 可能会附加额外信息\n\n var shapeType = cfg.type;\n var keyShape = shapeFactory.draw(shapeType, cfg, group);\n\n if (keyShape) {\n self.set('keyShape', keyShape);\n keyShape.set('isKeyShape', true);\n keyShape.set('draggable', true);\n }\n\n this.setOriginStyle(); // 防止由于用户外部修改 model 中的 shape 导致 shape 不更新\n\n this.set('currentShape', shapeType);\n this.restoreStates(shapeFactory, shapeType);\n };\n /**\n * 设置图元素原始样式\n * @param keyShape 图元素 keyShape\n * @param group Group 容器\n */\n\n\n ItemBase.prototype.setOriginStyle = function () {\n var group = this.get('group');\n var children = group.get('children');\n var keyShape = this.getKeyShape();\n var self = this;\n var keyShapeName = keyShape.get('name');\n\n if (!this.get('originStyle')) {\n // 第一次 set originStyle,直接拿首次渲染所有图形的 attrs\n var originStyles = {};\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n var shapeType = child.get('type');\n var name_1 = child.get('name');\n\n if (name_1 && name_1 !== keyShapeName) {\n originStyles[name_1] = shapeType !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(child.attr()) : self.getShapeStyleByName(name_1); // The text's position and matrix is not allowed to be affected by states\n\n if (shapeType === 'text' && originStyles[name_1]) {\n delete originStyles[name_1].x;\n delete originStyles[name_1].y;\n delete originStyles[name_1].matrix;\n }\n } else {\n var keyShapeStyle = self.getShapeStyleByName(); // 可优化,需要去除 child.attr 中其他 shape 名的对象\n\n delete keyShapeStyle.path;\n delete keyShapeStyle.matrix;\n\n if (!keyShapeName) {\n Object.assign(originStyles, keyShapeStyle);\n } else {\n // 若 keyShape 有 name 且 !name,这个图形不是 keyShape,给这个图形一个 name\n if (!name_1) {\n var shapeName = Object(_util_base__WEBPACK_IMPORTED_MODULE_5__[\"uniqueId\"])('shape');\n child.set('name', shapeName);\n group['shapeMap'][shapeName] = child;\n originStyles[shapeName] = shapeType !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(child.attr()) : self.getShapeStyleByName(name_1);\n } else {\n originStyles[keyShapeName] = keyShapeStyle;\n }\n }\n }\n }\n\n self.set('originStyle', originStyles);\n } else {\n // 第二次 set originStyles,需要找到不是 stateStyles 的样式,更新到 originStyles 中\n // 上一次设置的 originStyle,是初始的 shape attrs\n var styles_1 = this.get('originStyle'); // let styles: ShapeStyle = {};\n\n if (keyShapeName && !styles_1[keyShapeName]) styles_1[keyShapeName] = {}; // 获取当前状态样式\n\n var currentStatesStyle_1 = this.getCurrentStatesStyle();\n\n var _loop_1 = function _loop_1(i) {\n var child = children[i];\n var name_2 = child.get('name');\n var shapeAttrs = child.attr();\n\n if (name_2 && name_2 !== keyShapeName) {\n // 有 name 的非 keyShape 图形\n var shapeStateStyle_1 = currentStatesStyle_1[name_2];\n if (!styles_1[name_2]) styles_1[name_2] = {};\n\n if (shapeStateStyle_1) {\n Object.keys(shapeAttrs).forEach(function (key) {\n var value = shapeAttrs[key];\n if (value !== shapeStateStyle_1[key]) styles_1[name_2][key] = value;\n });\n } else {\n styles_1[name_2] = child.get('type') !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(shapeAttrs) : self.getShapeStyleByName(name_2);\n }\n } else {\n var shapeAttrs_1 = child.attr();\n var keyShapeStateStyles_1 = {};\n Object.keys(currentStatesStyle_1).forEach(function (styleKey) {\n var subStyle = currentStatesStyle_1[styleKey];\n\n if (styleKey === keyShapeName || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(subStyle)) {\n keyShapeStateStyles_1[styleKey] = subStyle;\n }\n });\n Object.keys(shapeAttrs_1).forEach(function (key) {\n var value = shapeAttrs_1[key]; // 如果是对象且不是 arrow,则是其他 shape 的样式\n // if (isPlainObject(value) && ARROWS.indexOf(name) === -1) return;\n\n if (keyShapeStateStyles_1[key] !== value) {\n if (keyShapeName) styles_1[keyShapeName][key] = value;else styles_1[key] = value;\n }\n });\n }\n }; // 遍历当前所有图形的 attrs,找到不是 stateStyles 的样式更新到 originStyles 中\n\n\n for (var i = 0; i < children.length; i++) {\n _loop_1(i);\n }\n\n delete styles_1.path;\n delete styles_1.matrix;\n delete styles_1.x;\n delete styles_1.y;\n\n if (styles_1[keyShapeName]) {\n delete styles_1[keyShapeName].x;\n delete styles_1[keyShapeName].y;\n delete styles_1[keyShapeName].matrix;\n delete styles_1[keyShapeName].path;\n }\n\n self.set('originStyle', styles_1);\n }\n };\n /**\n * restore shape states\n * @param shapeFactory\n * @param shapeType\n */\n\n\n ItemBase.prototype.restoreStates = function (shapeFactory, shapeType) {\n var self = this;\n var states = self.get('states');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(states, function (state) {\n shapeFactory.setState(shapeType, state, true, self);\n });\n };\n\n ItemBase.prototype.init = function () {\n var shapeFactory = _element_shape__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getFactory(this.get('type'));\n this.set('shapeFactory', shapeFactory);\n };\n /**\n * 获取属性\n * @internal 仅内部类使用\n * @param {String} key 属性名\n * @return {object | string | number} 属性值\n */\n\n\n ItemBase.prototype.get = function (key) {\n return this._cfg[key];\n };\n /**\n * 设置属性\n * @internal 仅内部类使用\n * @param {String|Object} key 属性名,也可以是对象\n * @param {object | string | number} val 属性值\n */\n\n\n ItemBase.prototype.set = function (key, val) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(key)) {\n this._cfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, this._cfg), key);\n } else {\n this._cfg[key] = val;\n }\n };\n\n ItemBase.prototype.getDefaultCfg = function () {\n return {};\n };\n /**\n * 更新/刷新等操作后,清除 cache\n */\n\n\n ItemBase.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null);\n this.set(CACHE_CANVAS_BBOX, null);\n };\n /**\n * 渲染前的逻辑,提供给子类复写\n */\n\n\n ItemBase.prototype.beforeDraw = function () {};\n /**\n * 渲染后的逻辑,提供给子类复写\n */\n\n\n ItemBase.prototype.afterDraw = function () {};\n /**\n * 更新后做一些工作\n */\n\n\n ItemBase.prototype.afterUpdate = function () {};\n /**\n * draw shape\n */\n\n\n ItemBase.prototype.draw = function () {\n this.beforeDraw();\n this.drawInner();\n this.afterDraw();\n };\n\n ItemBase.prototype.getShapeStyleByName = function (name) {\n var group = this.get('group');\n var currentShape;\n\n if (name) {\n currentShape = group['shapeMap'][name]; // group.find((element) => element.get('name') === name) as IShapeBase;\n } else {\n currentShape = this.getKeyShape();\n }\n\n if (currentShape) {\n var styles_2 = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(currentShape.attr(), function (val, key) {\n // 修改 img 通过 updateItem 实现\n if (key !== 'img' || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(val)) {\n styles_2[key] = val;\n }\n });\n return styles_2;\n }\n\n return {};\n };\n\n ItemBase.prototype.getShapeCfg = function (model, updateType) {\n var styles = this.get('styles');\n\n if (styles) {\n // merge graph的item样式与数据模型中的样式\n var newModel = model;\n newModel.style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), model.style);\n return newModel;\n }\n\n return model;\n };\n /**\n * 获取指定状态的样式,去除了全局样式\n * @param state 状态名称\n */\n\n\n ItemBase.prototype.getStateStyle = function (state) {\n var styles = this.get('styles');\n var stateStyle = styles && styles[state];\n return stateStyle;\n };\n /**\n * get keyshape style\n */\n\n\n ItemBase.prototype.getOriginStyle = function () {\n return this.get('originStyle');\n };\n\n ItemBase.prototype.getCurrentStatesStyle = function () {\n var self = this;\n var styles = {};\n var states = self.getStates();\n\n if (!states || !states.length) {\n return this.get('originStyle');\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(self.getStates(), function (state) {\n styles = Object.assign(styles, self.getStateStyle(state));\n });\n return styles;\n };\n /**\n * 更改元素状态, visible 不属于这个范畴\n * @internal 仅提供内部类 graph 使用\n * @param {String} state 状态名\n * @param {Boolean} value 节点状态值\n */\n\n\n ItemBase.prototype.setState = function (state, value) {\n var states = this.get('states');\n var shapeFactory = this.get('shapeFactory');\n var stateName = state;\n var filterStateName = state;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n stateName = \"\".concat(state, \":\").concat(value);\n filterStateName = \"\".concat(state, \":\");\n }\n\n var newStates = states;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isBoolean\"])(value)) {\n var index = states.indexOf(filterStateName);\n\n if (value) {\n if (index > -1) {\n return;\n }\n\n states.push(stateName);\n } else if (index > -1) {\n states.splice(index, 1);\n }\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n // 过滤掉 states 中 filterStateName 相关的状态\n var filterStates = states.filter(function (name) {\n return name.includes(filterStateName);\n });\n\n if (filterStates.length > 0) {\n this.clearStates(filterStates);\n }\n\n newStates = newStates.filter(function (name) {\n return !name.includes(filterStateName);\n });\n newStates.push(stateName);\n this.set('states', newStates);\n }\n\n if (shapeFactory) {\n var model = this.get('model');\n var type = model.type; // 调用 shape/shape.ts 中的 setState\n\n shapeFactory.setState(type, state, value, this);\n }\n };\n /**\n * 清除指定的状态,如果参数为空,则不做任务处理\n * @param states 状态名称\n */\n\n\n ItemBase.prototype.clearStates = function (states) {\n var self = this;\n var originStates = self.getStates();\n var shapeFactory = self.get('shapeFactory');\n var model = self.get('model');\n var shape = model.type;\n\n if (!states) {\n states = originStates;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(states)) {\n states = [states];\n }\n\n var newStates = originStates.filter(function (state) {\n return states.indexOf(state) === -1;\n });\n self.set('states', newStates);\n states.forEach(function (state) {\n shapeFactory.setState(shape, state, false, self);\n });\n };\n /**\n * 节点的图形容器\n * @return {G.Group} 图形容器\n */\n\n\n ItemBase.prototype.getContainer = function () {\n return this.get('group');\n };\n /**\n * 节点的关键形状,用于计算节点大小,连线截距等\n * @return {IShapeBase} 关键形状\n */\n\n\n ItemBase.prototype.getKeyShape = function () {\n return this.get('keyShape');\n };\n /**\n * 节点数据模型\n * @return {Object} 数据模型\n */\n\n\n ItemBase.prototype.getModel = function () {\n return this.get('model');\n };\n /**\n * 节点类型\n * @return {string} 节点的类型\n */\n\n\n ItemBase.prototype.getType = function () {\n return this.get('type');\n };\n /**\n * 获取 Item 的ID\n */\n\n\n ItemBase.prototype.getID = function () {\n return this.get('id');\n };\n /**\n * 是否是 Item 对象,悬空边情况下进行判定\n */\n\n\n ItemBase.prototype.isItem = function () {\n return true;\n };\n /**\n * 获取当前元素的所有状态\n * @return {Array} 元素的所有状态\n */\n\n\n ItemBase.prototype.getStates = function () {\n return this.get('states');\n };\n /**\n * 当前元素是否处于某状态\n * @param {String} state 状态名\n * @return {Boolean} 是否处于某状态\n */\n\n\n ItemBase.prototype.hasState = function (state) {\n var states = this.getStates();\n return states.indexOf(state) >= 0;\n };\n /**\n * 刷新一般用于处理几种情况\n * 1. item model 在外部被改变\n * 2. 边的节点位置发生改变,需要重新计算边\n *\n * 因为数据从外部被修改无法判断一些属性是否被修改,直接走位置和 shape 的更新\n */\n\n\n ItemBase.prototype.refresh = function (updateType) {\n var model = this.get('model'); // 更新元素位置\n\n this.updatePosition(model); // 更新元素内容,样式\n\n this.updateShape(updateType); // 做一些更新之后的操作\n\n this.afterUpdate(); // 清除缓存\n\n this.clearCache();\n };\n\n ItemBase.prototype.getUpdateType = function (cfg) {\n return undefined;\n };\n /**\n * 将更新应用到 model 上,刷新属性\n * @internal 仅提供给 Graph 使用,外部直接调用 graph.update 接口\n * @param {Object} cfg 配置项,可以是增量信息\n */\n\n\n ItemBase.prototype.update = function (cfg, updateType) {\n if (updateType === void 0) {\n updateType = undefined;\n }\n\n var model = this.get('model'); // 仅仅移动位置时,既不更新,也不重绘\n\n if (updateType === 'move') {\n this.updatePosition(cfg);\n } else {\n var oriVisible = model.visible;\n var cfgVisible = cfg.visible;\n if (oriVisible !== cfgVisible && cfgVisible !== undefined) this.changeVisibility(cfgVisible);\n var originPosition = {\n x: model.x,\n y: model.y\n };\n cfg.x = isNaN(+cfg.x) ? model.x : +cfg.x;\n cfg.y = isNaN(+cfg.y) ? model.y : +cfg.y;\n var styles = this.get('styles');\n\n if (cfg.stateStyles) {\n // 更新 item 时更新 this.get('styles') 中的值\n var stateStyles = cfg.stateStyles;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(styles, stateStyles);\n delete cfg.stateStyles;\n } // 直接将更新合到原数据模型上,可以保证用户在外部修改源数据然后刷新时的样式符合期待。\n\n\n Object.assign(model, cfg); // 如果 x,y 有变化,先重置位置\n\n if (originPosition.x !== cfg.x || originPosition.y !== cfg.y) {\n this.updatePosition(cfg);\n }\n\n this.updateShape(updateType);\n }\n\n this.afterUpdate();\n this.clearCache();\n };\n /**\n * 更新元素内容,样式\n */\n\n\n ItemBase.prototype.updateShape = function (updateType) {\n var shapeFactory = this.get('shapeFactory');\n var model = this.get('model');\n var shape = model.type; // 判定是否允许更新\n // 1. 注册的节点允许更新\n // 2. 更新后的 shape 等于原先的 shape\n\n if (shapeFactory.shouldUpdate(shape) && shape === this.get('currentShape')) {\n var updateCfg = this.getShapeCfg(model, updateType);\n shapeFactory.baseUpdate(shape, updateCfg, this, updateType); // 更新完以后重新设置原始样式\n\n if (updateType !== 'move') this.setOriginStyle();\n } else {\n // 如果不满足上面两种状态,重新绘制\n this.draw();\n } // 更新后重置节点状态\n\n\n this.restoreStates(shapeFactory, shape);\n };\n /**\n * 更新位置,避免整体重绘\n * @param {object} cfg 待更新数据\n */\n\n\n ItemBase.prototype.updatePosition = function (cfg) {\n var model = this.get('model');\n var x = isNaN(+cfg.x) ? +model.x : +cfg.x;\n var y = isNaN(+cfg.y) ? +model.y : +cfg.y;\n var group = this.get('group');\n\n if (isNaN(x) || isNaN(y)) {\n return false;\n }\n\n model.x = x;\n model.y = y;\n var matrix = group.getMatrix();\n if (matrix && matrix[6] === x && matrix[7] === y) return false;\n group.resetMatrix(); // G 4.0 element 中移除了矩阵相关方法,详见https://www.yuque.com/antv/blog/kxzk9g#4rMMV\n\n Object(_util_math__WEBPACK_IMPORTED_MODULE_4__[\"translate\"])(group, {\n x: x,\n y: y\n });\n this.clearCache(); // 位置更新后需要清除缓存\n\n return true;\n };\n /**\n * 获取 item 的包围盒,这个包围盒是相对于 item 自己,不会将 matrix 计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n ItemBase.prototype.getBBox = function () {\n // 计算 bbox 开销有些大,缓存\n var bbox = this.get(CACHE_BBOX);\n\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set(CACHE_BBOX, bbox);\n }\n\n return bbox;\n };\n /**\n * 获取 item 相对于画布的包围盒,会将从顶层到当前元素的 matrix 都计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n ItemBase.prototype.getCanvasBBox = function () {\n // 计算 bbox 开销有些大,缓存\n var bbox = this.get(CACHE_CANVAS_BBOX);\n\n if (!bbox) {\n bbox = this.calculateCanvasBBox();\n this.set(CACHE_CANVAS_BBOX, bbox);\n }\n\n return bbox;\n };\n /**\n * 将元素放到最前面\n */\n\n\n ItemBase.prototype.toFront = function () {\n var group = this.get('group');\n group.toFront();\n };\n /**\n * 将元素放到最后面\n */\n\n\n ItemBase.prototype.toBack = function () {\n var group = this.get('group');\n group.toBack();\n };\n /**\n * 显示元素\n */\n\n\n ItemBase.prototype.show = function () {\n this.changeVisibility(true);\n };\n /**\n * 隐藏元素\n */\n\n\n ItemBase.prototype.hide = function () {\n this.changeVisibility(false);\n };\n /**\n * 更改是否显示\n * @param {Boolean} visible 是否显示\n */\n\n\n ItemBase.prototype.changeVisibility = function (visible) {\n var group = this.get('group');\n\n if (visible) {\n group.show();\n } else {\n group.hide();\n }\n\n this.set('visible', visible);\n };\n /**\n * 元素是否可见\n * @return {Boolean} 返回该元素是否可见\n */\n\n\n ItemBase.prototype.isVisible = function () {\n return this.get('visible');\n };\n /**\n * 是否拾取及出发该元素的交互事件\n * @param {Boolean} enable 标识位\n */\n\n\n ItemBase.prototype.enableCapture = function (enable) {\n var group = this.get('group');\n\n if (group) {\n group.set('capture', enable);\n }\n };\n\n ItemBase.prototype.destroy = function () {\n if (!this.destroyed) {\n var animate = this.get('animate');\n var group = this.get('group');\n\n if (animate) {\n group.stopAnimate();\n }\n\n group['shapeMap'] = {};\n this.clearCache();\n group.remove();\n this._cfg = null;\n this.destroyed = true;\n }\n };\n\n return ItemBase;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ItemBase);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL2l0ZW0uanM/NDI1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUMwRDtBQUN0RDtBQUNLO0FBQ0Q7QUFDRDtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsMkRBQVE7QUFDbkI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0RBQW9EOztBQUVwRDtBQUNBO0FBQ0EsaUJBQWlCLDBEQUFPLEdBQUc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDLGVBQWUsNkRBQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsZUFBZSw2REFBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIscUJBQXFCO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlEQUF5RCx3REFBSyxrREFBa0Q7O0FBRWhIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QseURBQXlEOztBQUV6RDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLDhCQUE4QiwyREFBUTtBQUN0QztBQUNBO0FBQ0EsZ0VBQWdFLHdEQUFLO0FBQ3JFLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDLCtFQUErRTs7QUFFL0U7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYLCtEQUErRCx3REFBSztBQUNwRTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEMsZ0VBQWE7QUFDM0Q7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLDBDQUEwQztBQUMxQzs7QUFFQTtBQUNBLG9FQUFvRTtBQUNwRTtBQUNBLFdBQVc7QUFDWDtBQUNBLFFBQVE7OztBQUdSLHFCQUFxQixxQkFBcUI7QUFDMUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsdUJBQXVCLHNEQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyx5QkFBeUI7QUFDdkM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQixhQUFhLHlCQUF5QjtBQUN0Qzs7O0FBR0E7QUFDQSxRQUFRLGdFQUFhO0FBQ3JCLGtCQUFrQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdEMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2QztBQUM3QyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsNkJBQTZCLDJEQUFRO0FBQ3JDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUMzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSw0REFBUztBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSyxVQUFVLDJEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFdBQVc7QUFDekI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxrQ0FBa0M7O0FBRWxDLCtCQUErQjs7QUFFL0IsaUNBQWlDOztBQUVqQyx1QkFBdUI7O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxzREFBRztBQUNYO0FBQ0EsT0FBTzs7O0FBR1AsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrRUFBa0U7O0FBRWxFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCLElBQUksNERBQVM7QUFDYjtBQUNBO0FBQ0EsS0FBSztBQUNMLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHVFQUFRIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvaXRlbS9pdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzUGxhaW5PYmplY3QsIGlzU3RyaW5nLCBpc0Jvb2xlYW4sIG1peCwgZGVlcE1peCwgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9lbGVtZW50L3NoYXBlJztcbmltcG9ydCB7IGdldEJCb3ggfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCB7IHVuaXF1ZUlkIH0gZnJvbSAnLi4vdXRpbC9iYXNlJztcbnZhciBDQUNIRV9CQk9YID0gJ2Jib3hDYWNoZSc7XG52YXIgQ0FDSEVfQ0FOVkFTX0JCT1ggPSAnYmJveENhbnZhc0NhY2hlJztcbnZhciBBUlJPV1MgPSBbJ3N0YXJ0QXJyb3cnLCAnZW5kQXJyb3cnXTtcblxudmFyIEl0ZW1CYXNlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSXRlbUJhc2UoY2ZnKSB7XG4gICAgdGhpcy5fY2ZnID0ge307XG4gICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB2YXIgZGVmYXVsdENmZyA9IHtcbiAgICAgIC8qKlxuICAgICAgICogaWRcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKi9cbiAgICAgIGlkOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICog57G75Z6LXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICovXG4gICAgICB0eXBlOiAnaXRlbScsXG5cbiAgICAgIC8qKlxuICAgICAgICogZGF0YSBtb2RlbFxuICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAqL1xuICAgICAgbW9kZWw6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIGcgZ3JvdXBcbiAgICAgICAqIEB0eXBlIHtHLkdyb3VwfVxuICAgICAgICovXG4gICAgICBncm91cDogdW5kZWZpbmVkLFxuXG4gICAgICAvKipcbiAgICAgICAqIGlzIG9wZW4gYW5pbWF0ZVxuICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIGFuaW1hdGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIHZpc2libGUgLSBub3QgZ3JvdXAgdmlzaWJsZVxuICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIHZpc2libGU6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogbG9ja2VkIC0gbG9jayBub2RlXG4gICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAqL1xuICAgICAgbG9ja2VkOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBjYXB0dXJlIGV2ZW50XG4gICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAqL1xuICAgICAgZXZlbnQ6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICoga2V5IHNoYXBlIHRvIGNhbGN1bGF0ZSBpdGVtJ3MgYmJveFxuICAgICAgICogQHR5cGUgb2JqZWN0XG4gICAgICAgKi9cbiAgICAgIGtleVNoYXBlOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICogaXRlbSdzIHN0YXRlcywgc3VjaCBhcyBzZWxlY3RlZCBvciBhY3RpdmVcbiAgICAgICAqIEB0eXBlIEFycmF5XG4gICAgICAgKi9cbiAgICAgIHN0YXRlczogW11cbiAgICB9O1xuICAgIHRoaXMuX2NmZyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdENmZywgdGhpcy5nZXREZWZhdWx0Q2ZnKCksIGNmZyk7XG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIGlkID0gbW9kZWwuaWQ7XG4gICAgdmFyIGl0ZW1UeXBlID0gdGhpcy5nZXQoJ3R5cGUnKTtcblxuICAgIGlmICghaWQpIHtcbiAgICAgIGlkID0gdW5pcXVlSWQoaXRlbVR5cGUpO1xuICAgICAgdGhpcy5nZXQoJ21vZGVsJykuaWQgPSBpZDtcbiAgICB9XG5cbiAgICB0aGlzLnNldCgnaWQnLCBpZCk7XG4gICAgdmFyIGdyb3VwID0gY2ZnLmdyb3VwO1xuXG4gICAgaWYgKGdyb3VwKSB7XG4gICAgICBncm91cC5zZXQoJ2l0ZW0nLCB0aGlzKTtcbiAgICAgIGdyb3VwLnNldCgnaWQnLCBpZCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5kcmF3KCk7XG4gICAgdmFyIHNoYXBlVHlwZSA9IG1vZGVsLnNoYXBlIHx8IG1vZGVsLnR5cGUgfHwgKGl0ZW1UeXBlID09PSAnZWRnZScgPyAnbGluZScgOiAnY2lyY2xlJyk7XG4gICAgdmFyIHNoYXBlRmFjdG9yeSA9IHRoaXMuZ2V0KCdzaGFwZUZhY3RvcnknKTtcblxuICAgIGlmIChzaGFwZUZhY3RvcnkgJiYgc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0pIHtcbiAgICAgIHZhciBvcHRpb25zID0gc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0ub3B0aW9uczsgLy8gbWVyZ2UgdGhlIHN0YXRlU3R5bGVzIGZyb20gaXRlbSBhbmQgc2hhcGVcblxuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zdGF0ZVN0eWxlcykge1xuICAgICAgICB2YXIgc3R5bGVzID0gdGhpcy5nZXQoJ3N0eWxlcycpIHx8IG1vZGVsLnN0YXRlU3R5bGVzO1xuICAgICAgICBzdHlsZXMgPSBkZWVwTWl4KHt9LCBvcHRpb25zLnN0YXRlU3R5bGVzLCBzdHlsZXMpO1xuICAgICAgICB0aGlzLnNldCgnc3R5bGVzJywgc3R5bGVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIOagueaNriBrZXlzaGFwZSDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuY2FsY3VsYXRlQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIga2V5U2hhcGUgPSB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTsgLy8g5Zug5Li6IGdyb3VwIOWPr+iDveS8muenu+WKqO+8jOaJgOS7peW/hemhu+mAmui/h+eItuWFg+e0oOiuoeeul+aJjeiDveiuoeeul+WHuuato+ehrueahOWMheWbtOebklxuXG4gICAgdmFyIGJib3ggPSBnZXRCQm94KGtleVNoYXBlLCBncm91cCk7XG4gICAgYmJveC54ID0gYmJveC5taW5YO1xuICAgIGJib3gueSA9IGJib3gubWluWTtcbiAgICBiYm94LndpZHRoID0gYmJveC5tYXhYIC0gYmJveC5taW5YO1xuICAgIGJib3guaGVpZ2h0ID0gYmJveC5tYXhZIC0gYmJveC5taW5ZO1xuICAgIGJib3guY2VudGVyWCA9IChiYm94Lm1pblggKyBiYm94Lm1heFgpIC8gMjtcbiAgICBiYm94LmNlbnRlclkgPSAoYmJveC5taW5ZICsgYmJveC5tYXhZKSAvIDI7XG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4ga2V5c2hhcGUg6K6h566X5YyF5Zu055uSXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmNhbGN1bGF0ZUNhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleVNoYXBlID0gdGhpcy5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7IC8vIOWboOS4uiBncm91cCDlj6/og73kvJrnp7vliqjvvIzmiYDku6Xlv4XpobvpgJrov4fniLblhYPntKDorqHnrpfmiY3og73orqHnrpflh7rmraPnoa7nmoTljIXlm7Tnm5JcblxuICAgIHZhciBiYm94ID0gZ2V0QkJveChrZXlTaGFwZSwgZ3JvdXApO1xuICAgIGJib3gueCA9IGJib3gubWluWDtcbiAgICBiYm94LnkgPSBiYm94Lm1pblk7XG4gICAgYmJveC53aWR0aCA9IGJib3gubWF4WCAtIGJib3gubWluWDtcbiAgICBiYm94LmhlaWdodCA9IGJib3gubWF4WSAtIGJib3gubWluWTtcbiAgICBiYm94LmNlbnRlclggPSAoYmJveC5taW5YICsgYmJveC5tYXhYKSAvIDI7XG4gICAgYmJveC5jZW50ZXJZID0gKGJib3gubWluWSArIGJib3gubWF4WSkgLyAyO1xuICAgIHJldHVybiBiYm94O1xuICB9O1xuICAvKipcbiAgICogZHJhdyBzaGFwZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5kcmF3SW5uZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBzZWxmLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIGdyb3VwID0gc2VsZi5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIG1vZGVsID0gc2VsZi5nZXQoJ21vZGVsJyk7XG4gICAgZ3JvdXAuY2xlYXIoKTtcbiAgICB2YXIgdmlzaWJsZSA9IG1vZGVsLnZpc2libGU7XG4gICAgaWYgKHZpc2libGUgIT09IHVuZGVmaW5lZCAmJiAhdmlzaWJsZSkgc2VsZi5jaGFuZ2VWaXNpYmlsaXR5KHZpc2libGUpO1xuXG4gICAgaWYgKCFzaGFwZUZhY3RvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLnVwZGF0ZVBvc2l0aW9uKG1vZGVsKTtcbiAgICB2YXIgY2ZnID0gc2VsZi5nZXRTaGFwZUNmZyhtb2RlbCk7IC8vIOWPr+iDveS8mumZhOWKoOmineWkluS/oeaBr1xuXG4gICAgdmFyIHNoYXBlVHlwZSA9IGNmZy50eXBlO1xuICAgIHZhciBrZXlTaGFwZSA9IHNoYXBlRmFjdG9yeS5kcmF3KHNoYXBlVHlwZSwgY2ZnLCBncm91cCk7XG5cbiAgICBpZiAoa2V5U2hhcGUpIHtcbiAgICAgIHNlbGYuc2V0KCdrZXlTaGFwZScsIGtleVNoYXBlKTtcbiAgICAgIGtleVNoYXBlLnNldCgnaXNLZXlTaGFwZScsIHRydWUpO1xuICAgICAga2V5U2hhcGUuc2V0KCdkcmFnZ2FibGUnLCB0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldE9yaWdpblN0eWxlKCk7IC8vIOmYsuatoueUseS6jueUqOaIt+WklumDqOS/ruaUuSBtb2RlbCDkuK3nmoQgc2hhcGUg5a+86Ie0IHNoYXBlIOS4jeabtOaWsFxuXG4gICAgdGhpcy5zZXQoJ2N1cnJlbnRTaGFwZScsIHNoYXBlVHlwZSk7XG4gICAgdGhpcy5yZXN0b3JlU3RhdGVzKHNoYXBlRmFjdG9yeSwgc2hhcGVUeXBlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWbvuWFg+e0oOWOn+Wni+agt+W8j1xuICAgKiBAcGFyYW0ga2V5U2hhcGUg5Zu+5YWD57SgIGtleVNoYXBlXG4gICAqIEBwYXJhbSBncm91cCBHcm91cCDlrrnlmahcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuc2V0T3JpZ2luU3R5bGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIGNoaWxkcmVuID0gZ3JvdXAuZ2V0KCdjaGlsZHJlbicpO1xuICAgIHZhciBrZXlTaGFwZSA9IHRoaXMuZ2V0S2V5U2hhcGUoKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGtleVNoYXBlTmFtZSA9IGtleVNoYXBlLmdldCgnbmFtZScpO1xuXG4gICAgaWYgKCF0aGlzLmdldCgnb3JpZ2luU3R5bGUnKSkge1xuICAgICAgLy8g56ys5LiA5qyhIHNldCBvcmlnaW5TdHlsZe+8jOebtOaOpeaLv+mmluasoea4suafk+aJgOacieWbvuW9oueahCBhdHRyc1xuICAgICAgdmFyIG9yaWdpblN0eWxlcyA9IHt9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB2YXIgc2hhcGVUeXBlID0gY2hpbGQuZ2V0KCd0eXBlJyk7XG4gICAgICAgIHZhciBuYW1lXzEgPSBjaGlsZC5nZXQoJ25hbWUnKTtcblxuICAgICAgICBpZiAobmFtZV8xICYmIG5hbWVfMSAhPT0ga2V5U2hhcGVOYW1lKSB7XG4gICAgICAgICAgb3JpZ2luU3R5bGVzW25hbWVfMV0gPSBzaGFwZVR5cGUgIT09ICdpbWFnZScgPyBjbG9uZShjaGlsZC5hdHRyKCkpIDogc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKG5hbWVfMSk7IC8vIFRoZSB0ZXh0J3MgcG9zaXRpb24gYW5kIG1hdHJpeCBpcyBub3QgYWxsb3dlZCB0byBiZSBhZmZlY3RlZCBieSBzdGF0ZXNcblxuICAgICAgICAgIGlmIChzaGFwZVR5cGUgPT09ICd0ZXh0JyAmJiBvcmlnaW5TdHlsZXNbbmFtZV8xXSkge1xuICAgICAgICAgICAgZGVsZXRlIG9yaWdpblN0eWxlc1tuYW1lXzFdLng7XG4gICAgICAgICAgICBkZWxldGUgb3JpZ2luU3R5bGVzW25hbWVfMV0ueTtcbiAgICAgICAgICAgIGRlbGV0ZSBvcmlnaW5TdHlsZXNbbmFtZV8xXS5tYXRyaXg7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBrZXlTaGFwZVN0eWxlID0gc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKCk7IC8vIOWPr+S8mOWMlu+8jOmcgOimgeWOu+mZpCBjaGlsZC5hdHRyIOS4reWFtuS7liBzaGFwZSDlkI3nmoTlr7nosaFcblxuICAgICAgICAgIGRlbGV0ZSBrZXlTaGFwZVN0eWxlLnBhdGg7XG4gICAgICAgICAgZGVsZXRlIGtleVNoYXBlU3R5bGUubWF0cml4O1xuXG4gICAgICAgICAgaWYgKCFrZXlTaGFwZU5hbWUpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3JpZ2luU3R5bGVzLCBrZXlTaGFwZVN0eWxlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g6IulIGtleVNoYXBlIOaciSBuYW1lIOS4lCAhbmFtZe+8jOi/meS4quWbvuW9ouS4jeaYryBrZXlTaGFwZe+8jOe7mei/meS4quWbvuW9ouS4gOS4qiBuYW1lXG4gICAgICAgICAgICBpZiAoIW5hbWVfMSkge1xuICAgICAgICAgICAgICB2YXIgc2hhcGVOYW1lID0gdW5pcXVlSWQoJ3NoYXBlJyk7XG4gICAgICAgICAgICAgIGNoaWxkLnNldCgnbmFtZScsIHNoYXBlTmFtZSk7XG4gICAgICAgICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3NoYXBlTmFtZV0gPSBjaGlsZDtcbiAgICAgICAgICAgICAgb3JpZ2luU3R5bGVzW3NoYXBlTmFtZV0gPSBzaGFwZVR5cGUgIT09ICdpbWFnZScgPyBjbG9uZShjaGlsZC5hdHRyKCkpIDogc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKG5hbWVfMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvcmlnaW5TdHlsZXNba2V5U2hhcGVOYW1lXSA9IGtleVNoYXBlU3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0KCdvcmlnaW5TdHlsZScsIG9yaWdpblN0eWxlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOesrOS6jOasoSBzZXQgb3JpZ2luU3R5bGVz77yM6ZyA6KaB5om+5Yiw5LiN5pivIHN0YXRlU3R5bGVzIOeahOagt+W8j++8jOabtOaWsOWIsCBvcmlnaW5TdHlsZXMg5LitXG4gICAgICAvLyDkuIrkuIDmrKHorr7nva7nmoQgb3JpZ2luU3R5bGXvvIzmmK/liJ3lp4vnmoQgc2hhcGUgYXR0cnNcbiAgICAgIHZhciBzdHlsZXNfMSA9IHRoaXMuZ2V0KCdvcmlnaW5TdHlsZScpOyAvLyBsZXQgc3R5bGVzOiBTaGFwZVN0eWxlID0ge307XG5cbiAgICAgIGlmIChrZXlTaGFwZU5hbWUgJiYgIXN0eWxlc18xW2tleVNoYXBlTmFtZV0pIHN0eWxlc18xW2tleVNoYXBlTmFtZV0gPSB7fTsgLy8g6I635Y+W5b2T5YmN54q25oCB5qC35byPXG5cbiAgICAgIHZhciBjdXJyZW50U3RhdGVzU3R5bGVfMSA9IHRoaXMuZ2V0Q3VycmVudFN0YXRlc1N0eWxlKCk7XG5cbiAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB2YXIgbmFtZV8yID0gY2hpbGQuZ2V0KCduYW1lJyk7XG4gICAgICAgIHZhciBzaGFwZUF0dHJzID0gY2hpbGQuYXR0cigpO1xuXG4gICAgICAgIGlmIChuYW1lXzIgJiYgbmFtZV8yICE9PSBrZXlTaGFwZU5hbWUpIHtcbiAgICAgICAgICAvLyDmnIkgbmFtZSDnmoTpnZ4ga2V5U2hhcGUg5Zu+5b2iXG4gICAgICAgICAgdmFyIHNoYXBlU3RhdGVTdHlsZV8xID0gY3VycmVudFN0YXRlc1N0eWxlXzFbbmFtZV8yXTtcbiAgICAgICAgICBpZiAoIXN0eWxlc18xW25hbWVfMl0pIHN0eWxlc18xW25hbWVfMl0gPSB7fTtcblxuICAgICAgICAgIGlmIChzaGFwZVN0YXRlU3R5bGVfMSkge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoc2hhcGVBdHRycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHNoYXBlQXR0cnNba2V5XTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBzaGFwZVN0YXRlU3R5bGVfMVtrZXldKSBzdHlsZXNfMVtuYW1lXzJdW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZXNfMVtuYW1lXzJdID0gY2hpbGQuZ2V0KCd0eXBlJykgIT09ICdpbWFnZScgPyBjbG9uZShzaGFwZUF0dHJzKSA6IHNlbGYuZ2V0U2hhcGVTdHlsZUJ5TmFtZShuYW1lXzIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgc2hhcGVBdHRyc18xID0gY2hpbGQuYXR0cigpO1xuICAgICAgICAgIHZhciBrZXlTaGFwZVN0YXRlU3R5bGVzXzEgPSB7fTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50U3RhdGVzU3R5bGVfMSkuZm9yRWFjaChmdW5jdGlvbiAoc3R5bGVLZXkpIHtcbiAgICAgICAgICAgIHZhciBzdWJTdHlsZSA9IGN1cnJlbnRTdGF0ZXNTdHlsZV8xW3N0eWxlS2V5XTtcblxuICAgICAgICAgICAgaWYgKHN0eWxlS2V5ID09PSBrZXlTaGFwZU5hbWUgfHwgIWlzUGxhaW5PYmplY3Qoc3ViU3R5bGUpKSB7XG4gICAgICAgICAgICAgIGtleVNoYXBlU3RhdGVTdHlsZXNfMVtzdHlsZUtleV0gPSBzdWJTdHlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhzaGFwZUF0dHJzXzEpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gc2hhcGVBdHRyc18xW2tleV07IC8vIOWmguaenOaYr+WvueixoeS4lOS4jeaYryBhcnJvd++8jOWImeaYr+WFtuS7liBzaGFwZSDnmoTmoLflvI9cbiAgICAgICAgICAgIC8vIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSAmJiBBUlJPV1MuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHJldHVybjtcblxuICAgICAgICAgICAgaWYgKGtleVNoYXBlU3RhdGVTdHlsZXNfMVtrZXldICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICBpZiAoa2V5U2hhcGVOYW1lKSBzdHlsZXNfMVtrZXlTaGFwZU5hbWVdW2tleV0gPSB2YWx1ZTtlbHNlIHN0eWxlc18xW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTsgLy8g6YGN5Y6G5b2T5YmN5omA5pyJ5Zu+5b2i55qEIGF0dHJz77yM5om+5Yiw5LiN5pivIHN0YXRlU3R5bGVzIOeahOagt+W8j+abtOaWsOWIsCBvcmlnaW5TdHlsZXMg5LitXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgc3R5bGVzXzEucGF0aDtcbiAgICAgIGRlbGV0ZSBzdHlsZXNfMS5tYXRyaXg7XG4gICAgICBkZWxldGUgc3R5bGVzXzEueDtcbiAgICAgIGRlbGV0ZSBzdHlsZXNfMS55O1xuXG4gICAgICBpZiAoc3R5bGVzXzFba2V5U2hhcGVOYW1lXSkge1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS54O1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS55O1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS5tYXRyaXg7XG4gICAgICAgIGRlbGV0ZSBzdHlsZXNfMVtrZXlTaGFwZU5hbWVdLnBhdGg7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0KCdvcmlnaW5TdHlsZScsIHN0eWxlc18xKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiByZXN0b3JlIHNoYXBlIHN0YXRlc1xuICAgKiBAcGFyYW0gc2hhcGVGYWN0b3J5XG4gICAqIEBwYXJhbSBzaGFwZVR5cGVcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUucmVzdG9yZVN0YXRlcyA9IGZ1bmN0aW9uIChzaGFwZUZhY3RvcnksIHNoYXBlVHlwZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc3RhdGVzID0gc2VsZi5nZXQoJ3N0YXRlcycpO1xuICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIHNoYXBlRmFjdG9yeS5zZXRTdGF0ZShzaGFwZVR5cGUsIHN0YXRlLCB0cnVlLCBzZWxmKTtcbiAgICB9KTtcbiAgfTtcblxuICBJdGVtQmFzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gU2hhcGUuZ2V0RmFjdG9yeSh0aGlzLmdldCgndHlwZScpKTtcbiAgICB0aGlzLnNldCgnc2hhcGVGYWN0b3J5Jywgc2hhcGVGYWN0b3J5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluWxnuaAp1xuICAgKiBAaW50ZXJuYWwg5LuF5YaF6YOo57G75L2/55SoXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5IOWxnuaAp+WQjVxuICAgKiBAcmV0dXJuIHtvYmplY3QgfCBzdHJpbmcgfCBudW1iZXJ9IOWxnuaAp+WAvFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX2NmZ1trZXldO1xuICB9O1xuICAvKipcbiAgICog6K6+572u5bGe5oCnXG4gICAqIEBpbnRlcm5hbCDku4XlhoXpg6jnsbvkvb/nlKhcbiAgICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBrZXkg5bGe5oCn5ZCN77yM5Lmf5Y+v5Lul5piv5a+56LGhXG4gICAqIEBwYXJhbSB7b2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyfSB2YWwg5bGe5oCn5YC8XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbCkge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGtleSkpIHtcbiAgICAgIHRoaXMuX2NmZyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLl9jZmcpLCBrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jZmdba2V5XSA9IHZhbDtcbiAgICB9XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9O1xuICAvKipcbiAgICog5pu05pawL+WIt+aWsOetieaTjeS9nOWQju+8jOa4hemZpCBjYWNoZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5jbGVhckNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0JCT1gsIG51bGwpO1xuICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBudWxsKTtcbiAgfTtcbiAgLyoqXG4gICAqIOa4suafk+WJjeeahOmAu+i+ke+8jOaPkOS+m+e7meWtkOexu+WkjeWGmVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5iZWZvcmVEcmF3ID0gZnVuY3Rpb24gKCkge307XG4gIC8qKlxuICAgKiDmuLLmn5PlkI7nmoTpgLvovpHvvIzmj5Dkvpvnu5nlrZDnsbvlpI3lhplcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuYWZ0ZXJEcmF3ID0gZnVuY3Rpb24gKCkge307XG4gIC8qKlxuICAgKiDmm7TmlrDlkI7lgZrkuIDkupvlt6XkvZxcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuYWZ0ZXJVcGRhdGUgPSBmdW5jdGlvbiAoKSB7fTtcbiAgLyoqXG4gICAqIGRyYXcgc2hhcGVcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmJlZm9yZURyYXcoKTtcbiAgICB0aGlzLmRyYXdJbm5lcigpO1xuICAgIHRoaXMuYWZ0ZXJEcmF3KCk7XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldFNoYXBlU3R5bGVCeU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuICAgIHZhciBjdXJyZW50U2hhcGU7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgY3VycmVudFNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV07IC8vIGdyb3VwLmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQuZ2V0KCduYW1lJykgPT09IG5hbWUpIGFzIElTaGFwZUJhc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRTaGFwZSA9IHRoaXMuZ2V0S2V5U2hhcGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFNoYXBlKSB7XG4gICAgICB2YXIgc3R5bGVzXzIgPSB7fTtcbiAgICAgIGVhY2goY3VycmVudFNoYXBlLmF0dHIoKSwgZnVuY3Rpb24gKHZhbCwga2V5KSB7XG4gICAgICAgIC8vIOS/ruaUuSBpbWcg6YCa6L+HIHVwZGF0ZUl0ZW0g5a6e546wXG4gICAgICAgIGlmIChrZXkgIT09ICdpbWcnIHx8IGlzU3RyaW5nKHZhbCkpIHtcbiAgICAgICAgICBzdHlsZXNfMltrZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdHlsZXNfMjtcbiAgICB9XG5cbiAgICByZXR1cm4ge307XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldFNoYXBlQ2ZnID0gZnVuY3Rpb24gKG1vZGVsLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgIC8vIG1lcmdlIGdyYXBo55qEaXRlbeagt+W8j+S4juaVsOaNruaooeWei+S4reeahOagt+W8j1xuICAgICAgdmFyIG5ld01vZGVsID0gbW9kZWw7XG4gICAgICBuZXdNb2RlbC5zdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCBtb2RlbC5zdHlsZSk7XG4gICAgICByZXR1cm4gbmV3TW9kZWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5oyH5a6a54q25oCB55qE5qC35byP77yM5Y676Zmk5LqG5YWo5bGA5qC35byPXG4gICAqIEBwYXJhbSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0U3RhdGVTdHlsZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHZhciBzdHlsZXMgPSB0aGlzLmdldCgnc3R5bGVzJyk7XG4gICAgdmFyIHN0YXRlU3R5bGUgPSBzdHlsZXMgJiYgc3R5bGVzW3N0YXRlXTtcbiAgICByZXR1cm4gc3RhdGVTdHlsZTtcbiAgfTtcbiAgLyoqXG4gICAqIGdldCBrZXlzaGFwZSBzdHlsZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRPcmlnaW5TdHlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ29yaWdpblN0eWxlJyk7XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEN1cnJlbnRTdGF0ZXNTdHlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHN0eWxlcyA9IHt9O1xuICAgIHZhciBzdGF0ZXMgPSBzZWxmLmdldFN0YXRlcygpO1xuXG4gICAgaWYgKCFzdGF0ZXMgfHwgIXN0YXRlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnb3JpZ2luU3R5bGUnKTtcbiAgICB9XG5cbiAgICBlYWNoKHNlbGYuZ2V0U3RhdGVzKCksIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgc3R5bGVzID0gT2JqZWN0LmFzc2lnbihzdHlsZXMsIHNlbGYuZ2V0U3RhdGVTdHlsZShzdGF0ZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHlsZXM7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlLnlhYPntKDnirbmgIHvvIwgdmlzaWJsZSDkuI3lsZ7kuo7ov5nkuKrojIPnlbRcbiAgICogQGludGVybmFsIOS7heaPkOS+m+WGhemDqOexuyBncmFwaCDkvb/nlKhcbiAgICogQHBhcmFtIHtTdHJpbmd9IHN0YXRlIOeKtuaAgeWQjVxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IHZhbHVlIOiKgueCueeKtuaAgeWAvFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUpIHtcbiAgICB2YXIgc3RhdGVzID0gdGhpcy5nZXQoJ3N0YXRlcycpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIHN0YXRlTmFtZSA9IHN0YXRlO1xuICAgIHZhciBmaWx0ZXJTdGF0ZU5hbWUgPSBzdGF0ZTtcblxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHN0YXRlTmFtZSA9IFwiXCIuY29uY2F0KHN0YXRlLCBcIjpcIikuY29uY2F0KHZhbHVlKTtcbiAgICAgIGZpbHRlclN0YXRlTmFtZSA9IFwiXCIuY29uY2F0KHN0YXRlLCBcIjpcIik7XG4gICAgfVxuXG4gICAgdmFyIG5ld1N0YXRlcyA9IHN0YXRlcztcblxuICAgIGlmIChpc0Jvb2xlYW4odmFsdWUpKSB7XG4gICAgICB2YXIgaW5kZXggPSBzdGF0ZXMuaW5kZXhPZihmaWx0ZXJTdGF0ZU5hbWUpO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZXMucHVzaChzdGF0ZU5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHN0YXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAvLyDov4fmu6Tmjokgc3RhdGVzIOS4rSBmaWx0ZXJTdGF0ZU5hbWUg55u45YWz55qE54q25oCBXG4gICAgICB2YXIgZmlsdGVyU3RhdGVzID0gc3RhdGVzLmZpbHRlcihmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gbmFtZS5pbmNsdWRlcyhmaWx0ZXJTdGF0ZU5hbWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChmaWx0ZXJTdGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNsZWFyU3RhdGVzKGZpbHRlclN0YXRlcyk7XG4gICAgICB9XG5cbiAgICAgIG5ld1N0YXRlcyA9IG5ld1N0YXRlcy5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICFuYW1lLmluY2x1ZGVzKGZpbHRlclN0YXRlTmFtZSk7XG4gICAgICB9KTtcbiAgICAgIG5ld1N0YXRlcy5wdXNoKHN0YXRlTmFtZSk7XG4gICAgICB0aGlzLnNldCgnc3RhdGVzJywgbmV3U3RhdGVzKTtcbiAgICB9XG5cbiAgICBpZiAoc2hhcGVGYWN0b3J5KSB7XG4gICAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICAgIHZhciB0eXBlID0gbW9kZWwudHlwZTsgLy8g6LCD55SoIHNoYXBlL3NoYXBlLnRzIOS4reeahCBzZXRTdGF0ZVxuXG4gICAgICBzaGFwZUZhY3Rvcnkuc2V0U3RhdGUodHlwZSwgc3RhdGUsIHZhbHVlLCB0aGlzKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmuIXpmaTmjIflrprnmoTnirbmgIHvvIzlpoLmnpzlj4LmlbDkuLrnqbrvvIzliJnkuI3lgZrku7vliqHlpITnkIZcbiAgICogQHBhcmFtIHN0YXRlcyDnirbmgIHlkI3np7BcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuY2xlYXJTdGF0ZXMgPSBmdW5jdGlvbiAoc3RhdGVzKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBvcmlnaW5TdGF0ZXMgPSBzZWxmLmdldFN0YXRlcygpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBzZWxmLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIG1vZGVsID0gc2VsZi5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIHNoYXBlID0gbW9kZWwudHlwZTtcblxuICAgIGlmICghc3RhdGVzKSB7XG4gICAgICBzdGF0ZXMgPSBvcmlnaW5TdGF0ZXM7XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKHN0YXRlcykpIHtcbiAgICAgIHN0YXRlcyA9IFtzdGF0ZXNdO1xuICAgIH1cblxuICAgIHZhciBuZXdTdGF0ZXMgPSBvcmlnaW5TdGF0ZXMuZmlsdGVyKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgcmV0dXJuIHN0YXRlcy5pbmRleE9mKHN0YXRlKSA9PT0gLTE7XG4gICAgfSk7XG4gICAgc2VsZi5zZXQoJ3N0YXRlcycsIG5ld1N0YXRlcyk7XG4gICAgc3RhdGVzLmZvckVhY2goZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICBzaGFwZUZhY3Rvcnkuc2V0U3RhdGUoc2hhcGUsIHN0YXRlLCBmYWxzZSwgc2VsZik7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnmoTlm77lvaLlrrnlmahcbiAgICogQHJldHVybiB7Ry5Hcm91cH0g5Zu+5b2i5a655ZmoXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldENvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnmoTlhbPplK7lvaLnirbvvIznlKjkuo7orqHnrpfoioLngrnlpKflsI/vvIzov57nur/miKrot53nrYlcbiAgICogQHJldHVybiB7SVNoYXBlQmFzZX0g5YWz6ZSu5b2i54q2XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEtleVNoYXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiKgueCueaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IOaVsOaNruaooeWei1xuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRNb2RlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ21vZGVsJyk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnsbvlnotcbiAgICogQHJldHVybiB7c3RyaW5nfSDoioLngrnnmoTnsbvlnotcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0VHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3R5cGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBJdGVtIOeahElEXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldElEID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaWQnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuaYryBJdGVtIOWvueixoe+8jOaCrOepuui+ueaDheWGteS4i+i/m+ihjOWIpOWumlxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5pc0l0ZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blvZPliY3lhYPntKDnmoTmiYDmnInnirbmgIFcbiAgICogQHJldHVybiB7QXJyYXl9IOWFg+e0oOeahOaJgOacieeKtuaAgVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRTdGF0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdzdGF0ZXMnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOW9k+WJjeWFg+e0oOaYr+WQpuWkhOS6juafkOeKtuaAgVxuICAgKiBAcGFyYW0ge1N0cmluZ30gc3RhdGUg54q25oCB5ZCNXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IOaYr+WQpuWkhOS6juafkOeKtuaAgVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5oYXNTdGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHZhciBzdGF0ZXMgPSB0aGlzLmdldFN0YXRlcygpO1xuICAgIHJldHVybiBzdGF0ZXMuaW5kZXhPZihzdGF0ZSkgPj0gMDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIt+aWsOS4gOiIrOeUqOS6juWkhOeQhuWHoOenjeaDheWGtVxuICAgKiAxLiBpdGVtIG1vZGVsIOWcqOWklumDqOiiq+aUueWPmFxuICAgKiAyLiDovrnnmoToioLngrnkvY3nva7lj5HnlJ/mlLnlj5jvvIzpnIDopoHph43mlrDorqHnrpfovrlcbiAgICpcbiAgICog5Zug5Li65pWw5o2u5LuO5aSW6YOo6KKr5L+u5pS55peg5rOV5Yik5pat5LiA5Lqb5bGe5oCn5piv5ZCm6KKr5L+u5pS577yM55u05o6l6LWw5L2N572u5ZKMIHNoYXBlIOeahOabtOaWsFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24gKHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTsgLy8g5pu05paw5YWD57Sg5L2N572uXG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKG1vZGVsKTsgLy8g5pu05paw5YWD57Sg5YaF5a6577yM5qC35byPXG5cbiAgICB0aGlzLnVwZGF0ZVNoYXBlKHVwZGF0ZVR5cGUpOyAvLyDlgZrkuIDkupvmm7TmlrDkuYvlkI7nmoTmk43kvZxcblxuICAgIHRoaXMuYWZ0ZXJVcGRhdGUoKTsgLy8g5riF6Zmk57yT5a2YXG5cbiAgICB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgfTtcblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0VXBkYXRlVHlwZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xuICAvKipcbiAgICog5bCG5pu05paw5bqU55So5YiwIG1vZGVsIOS4iu+8jOWIt+aWsOWxnuaAp1xuICAgKiBAaW50ZXJuYWwg5LuF5o+Q5L6b57uZIEdyYXBoIOS9v+eUqO+8jOWklumDqOebtOaOpeiwg+eUqCBncmFwaC51cGRhdGUg5o6l5Y+jXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnICAgICAgIOmFjee9rumhue+8jOWPr+S7peaYr+WinumHj+S/oeaBr1xuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoY2ZnLCB1cGRhdGVUeXBlKSB7XG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09IHZvaWQgMCkge1xuICAgICAgdXBkYXRlVHlwZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTsgLy8g5LuF5LuF56e75Yqo5L2N572u5pe277yM5pei5LiN5pu05paw77yM5Lmf5LiN6YeN57uYXG5cbiAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ21vdmUnKSB7XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKGNmZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBvcmlWaXNpYmxlID0gbW9kZWwudmlzaWJsZTtcbiAgICAgIHZhciBjZmdWaXNpYmxlID0gY2ZnLnZpc2libGU7XG4gICAgICBpZiAob3JpVmlzaWJsZSAhPT0gY2ZnVmlzaWJsZSAmJiBjZmdWaXNpYmxlICE9PSB1bmRlZmluZWQpIHRoaXMuY2hhbmdlVmlzaWJpbGl0eShjZmdWaXNpYmxlKTtcbiAgICAgIHZhciBvcmlnaW5Qb3NpdGlvbiA9IHtcbiAgICAgICAgeDogbW9kZWwueCxcbiAgICAgICAgeTogbW9kZWwueVxuICAgICAgfTtcbiAgICAgIGNmZy54ID0gaXNOYU4oK2NmZy54KSA/IG1vZGVsLnggOiArY2ZnLng7XG4gICAgICBjZmcueSA9IGlzTmFOKCtjZmcueSkgPyBtb2RlbC55IDogK2NmZy55O1xuICAgICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgICAgaWYgKGNmZy5zdGF0ZVN0eWxlcykge1xuICAgICAgICAvLyDmm7TmlrAgaXRlbSDml7bmm7TmlrAgdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuICAgICAgICB2YXIgc3RhdGVTdHlsZXMgPSBjZmcuc3RhdGVTdHlsZXM7XG4gICAgICAgIG1peChzdHlsZXMsIHN0YXRlU3R5bGVzKTtcbiAgICAgICAgZGVsZXRlIGNmZy5zdGF0ZVN0eWxlcztcbiAgICAgIH0gLy8g55u05o6l5bCG5pu05paw5ZCI5Yiw5Y6f5pWw5o2u5qih5Z6L5LiK77yM5Y+v5Lul5L+d6K+B55So5oi35Zyo5aSW6YOo5L+u5pS55rqQ5pWw5o2u54S25ZCO5Yi35paw5pe255qE5qC35byP56ym5ZCI5pyf5b6F44CCXG5cblxuICAgICAgT2JqZWN0LmFzc2lnbihtb2RlbCwgY2ZnKTsgLy8g5aaC5p6cIHgseSDmnInlj5jljJbvvIzlhYjph43nva7kvY3nva5cblxuICAgICAgaWYgKG9yaWdpblBvc2l0aW9uLnggIT09IGNmZy54IHx8IG9yaWdpblBvc2l0aW9uLnkgIT09IGNmZy55KSB7XG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oY2ZnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVTaGFwZSh1cGRhdGVUeXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLmFmdGVyVXBkYXRlKCk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrDlhYPntKDlhoXlrrnvvIzmoLflvI9cbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUudXBkYXRlU2hhcGUgPSBmdW5jdGlvbiAodXBkYXRlVHlwZSkge1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIHNoYXBlID0gbW9kZWwudHlwZTsgLy8g5Yik5a6a5piv5ZCm5YWB6K645pu05pawXG4gICAgLy8gMS4g5rOo5YaM55qE6IqC54K55YWB6K645pu05pawXG4gICAgLy8gMi4g5pu05paw5ZCO55qEIHNoYXBlIOetieS6juWOn+WFiOeahCBzaGFwZVxuXG4gICAgaWYgKHNoYXBlRmFjdG9yeS5zaG91bGRVcGRhdGUoc2hhcGUpICYmIHNoYXBlID09PSB0aGlzLmdldCgnY3VycmVudFNoYXBlJykpIHtcbiAgICAgIHZhciB1cGRhdGVDZmcgPSB0aGlzLmdldFNoYXBlQ2ZnKG1vZGVsLCB1cGRhdGVUeXBlKTtcbiAgICAgIHNoYXBlRmFjdG9yeS5iYXNlVXBkYXRlKHNoYXBlLCB1cGRhdGVDZmcsIHRoaXMsIHVwZGF0ZVR5cGUpOyAvLyDmm7TmlrDlrozku6XlkI7ph43mlrDorr7nva7ljp/lp4vmoLflvI9cblxuICAgICAgaWYgKHVwZGF0ZVR5cGUgIT09ICdtb3ZlJykgdGhpcy5zZXRPcmlnaW5TdHlsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlpoLmnpzkuI3mu6HotrPkuIrpnaLkuKTnp43nirbmgIHvvIzph43mlrDnu5jliLZcbiAgICAgIHRoaXMuZHJhdygpO1xuICAgIH0gLy8g5pu05paw5ZCO6YeN572u6IqC54K554q25oCBXG5cblxuICAgIHRoaXMucmVzdG9yZVN0YXRlcyhzaGFwZUZhY3RvcnksIHNoYXBlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOS9jee9ru+8jOmBv+WFjeaVtOS9k+mHjee7mFxuICAgKiBAcGFyYW0ge29iamVjdH0gY2ZnIOW+heabtOaWsOaVsOaNrlxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS51cGRhdGVQb3NpdGlvbiA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICB2YXIgeCA9IGlzTmFOKCtjZmcueCkgPyArbW9kZWwueCA6ICtjZmcueDtcbiAgICB2YXIgeSA9IGlzTmFOKCtjZmcueSkgPyArbW9kZWwueSA6ICtjZmcueTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcblxuICAgIGlmIChpc05hTih4KSB8fCBpc05hTih5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG1vZGVsLnggPSB4O1xuICAgIG1vZGVsLnkgPSB5O1xuICAgIHZhciBtYXRyaXggPSBncm91cC5nZXRNYXRyaXgoKTtcbiAgICBpZiAobWF0cml4ICYmIG1hdHJpeFs2XSA9PT0geCAmJiBtYXRyaXhbN10gPT09IHkpIHJldHVybiBmYWxzZTtcbiAgICBncm91cC5yZXNldE1hdHJpeCgpOyAvLyBHIDQuMCBlbGVtZW50IOS4reenu+mZpOS6huefqemYteebuOWFs+aWueazle+8jOivpuingWh0dHBzOi8vd3d3Lnl1cXVlLmNvbS9hbnR2L2Jsb2cva3h6azlnIzRyTU1WXG5cbiAgICB0cmFuc2xhdGUoZ3JvdXAsIHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7IC8vIOS9jee9ruabtOaWsOWQjumcgOimgea4hemZpOe8k+WtmFxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgaXRlbSDnmoTljIXlm7Tnm5LvvIzov5nkuKrljIXlm7Tnm5LmmK/nm7jlr7nkuo4gaXRlbSDoh6rlt7HvvIzkuI3kvJrlsIYgbWF0cml4IOiuoeeul+WcqOWGhVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOWMheWQqyB4LHksd2lkdGgsaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8g6K6h566XIGJib3gg5byA6ZSA5pyJ5Lqb5aSn77yM57yT5a2YXG4gICAgdmFyIGJib3ggPSB0aGlzLmdldChDQUNIRV9CQk9YKTtcblxuICAgIGlmICghYmJveCkge1xuICAgICAgYmJveCA9IHRoaXMuY2FsY3VsYXRlQkJveCgpO1xuICAgICAgdGhpcy5zZXQoQ0FDSEVfQkJPWCwgYmJveCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgaXRlbSDnm7jlr7nkuo7nlLvluIPnmoTljIXlm7Tnm5LvvIzkvJrlsIbku47pobblsYLliLDlvZPliY3lhYPntKDnmoQgbWF0cml4IOmDveiuoeeul+WcqOWGhVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOWMheWQqyB4LHksd2lkdGgsaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldENhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8g6K6h566XIGJib3gg5byA6ZSA5pyJ5Lqb5aSn77yM57yT5a2YXG4gICAgdmFyIGJib3ggPSB0aGlzLmdldChDQUNIRV9DQU5WQVNfQkJPWCk7XG5cbiAgICBpZiAoIWJib3gpIHtcbiAgICAgIGJib3ggPSB0aGlzLmNhbGN1bGF0ZUNhbnZhc0JCb3goKTtcbiAgICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBiYm94KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmJveDtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWFg+e0oOaUvuWIsOacgOWJjemdolxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS50b0Zyb250ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnRvRnJvbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWFg+e0oOaUvuWIsOacgOWQjumdolxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS50b0JhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgZ3JvdXAudG9CYWNrKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmmL7npLrlhYPntKBcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkodHJ1ZSk7XG4gIH07XG4gIC8qKlxuICAgKiDpmpDol4/lhYPntKBcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkoZmFsc2UpO1xuICB9O1xuICAvKipcbiAgICog5pu05pS55piv5ZCm5pi+56S6XG4gICAqIEBwYXJhbSAge0Jvb2xlYW59IHZpc2libGUg5piv5ZCm5pi+56S6XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmNoYW5nZVZpc2liaWxpdHkgPSBmdW5jdGlvbiAodmlzaWJsZSkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuXG4gICAgaWYgKHZpc2libGUpIHtcbiAgICAgIGdyb3VwLnNob3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXAuaGlkZSgpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0KCd2aXNpYmxlJywgdmlzaWJsZSk7XG4gIH07XG4gIC8qKlxuICAgKiDlhYPntKDmmK/lkKblj6/op4FcbiAgICogQHJldHVybiB7Qm9vbGVhbn0g6L+U5Zue6K+l5YWD57Sg5piv5ZCm5Y+v6KeBXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmlzVmlzaWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3Zpc2libGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuaLvuWPluWPiuWHuuWPkeivpeWFg+e0oOeahOS6pOS6kuS6i+S7tlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IGVuYWJsZSDmoIfor4bkvY1cbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZW5hYmxlQ2FwdHVyZSA9IGZ1bmN0aW9uIChlbmFibGUpIHtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcblxuICAgIGlmIChncm91cCkge1xuICAgICAgZ3JvdXAuc2V0KCdjYXB0dXJlJywgZW5hYmxlKTtcbiAgICB9XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgdmFyIGFuaW1hdGUgPSB0aGlzLmdldCgnYW5pbWF0ZScpO1xuICAgICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG5cbiAgICAgIGlmIChhbmltYXRlKSB7XG4gICAgICAgIGdyb3VwLnN0b3BBbmltYXRlKCk7XG4gICAgICB9XG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddID0ge307XG4gICAgICB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgICAgIGdyb3VwLnJlbW92ZSgpO1xuICAgICAgdGhpcy5fY2ZnID0gbnVsbDtcbiAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIEl0ZW1CYXNlO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBJdGVtQmFzZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/item/item.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/item/node.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g6-core/es/item/node.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./item */ \"./node_modules/@antv/g6-core/es/item/item.js\");\n\n\n\n\nvar CACHE_ANCHOR_POINTS = 'anchorPointsCache';\nvar CACHE_BBOX = 'bboxCache';\n\nvar Node =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Node, _super);\n\n function Node() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Node.prototype.getNearestPoint = function (points, curPoint) {\n var index = 0;\n var nearestPoint = points[0];\n var minDistance = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(points[0], curPoint);\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n var dis = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(point, curPoint);\n\n if (dis < minDistance) {\n nearestPoint = point;\n minDistance = dis;\n index = i;\n }\n }\n\n nearestPoint.anchorIndex = index;\n return nearestPoint;\n };\n\n Node.prototype.getDefaultCfg = function () {\n return {\n type: 'node',\n edges: []\n };\n };\n /**\n * 获取从节点关联的所有边\n */\n\n\n Node.prototype.getEdges = function () {\n return this.get('edges');\n };\n /**\n * 获取所有的入边\n */\n\n\n Node.prototype.getInEdges = function () {\n var self = this;\n return this.get('edges').filter(function (edge) {\n return edge.get('target') === self;\n });\n };\n /**\n * 获取所有的出边\n */\n\n\n Node.prototype.getOutEdges = function () {\n var self = this;\n return this.get('edges').filter(function (edge) {\n return edge.get('source') === self;\n });\n };\n /**\n * 获取节点的邻居节点\n *\n * @returns {INode[]}\n * @memberof Node\n */\n\n\n Node.prototype.getNeighbors = function (type) {\n var _this = this;\n\n var edges = this.get('edges');\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.getSource() === _this;\n };\n\n return edges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.getTarget();\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.getTarget() === _this;\n };\n\n return edges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.getSource();\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.getSource() === _this ? edge.getTarget() : edge.getSource();\n };\n\n return edges.map(neighhborsConverter);\n };\n /**\n * 根据锚点的索引获取连接点\n * @param {Number} index 索引\n */\n\n\n Node.prototype.getLinkPointByAnchor = function (index) {\n var anchorPoints = this.getAnchorPoints();\n return anchorPoints[index];\n };\n /**\n * 获取连接点\n * @param point\n */\n\n\n Node.prototype.getLinkPoint = function (point) {\n var keyShape = this.get('keyShape');\n var type = keyShape.get('type');\n var itemType = this.get('type');\n var centerX;\n var centerY;\n var bbox = this.getBBox();\n\n if (itemType === 'combo') {\n centerX = bbox.centerX || (bbox.maxX + bbox.minX) / 2;\n centerY = bbox.centerY || (bbox.maxY + bbox.minY) / 2;\n } else {\n centerX = bbox.centerX;\n centerY = bbox.centerY;\n }\n\n var anchorPoints = this.getAnchorPoints();\n var intersectPoint;\n\n switch (type) {\n case 'circle':\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getCircleIntersectByPoint\"])({\n x: centerX,\n y: centerY,\n r: bbox.width / 2\n }, point);\n break;\n\n case 'ellipse':\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getEllipseIntersectByPoint\"])({\n x: centerX,\n y: centerY,\n rx: bbox.width / 2,\n ry: bbox.height / 2\n }, point);\n break;\n\n default:\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getRectIntersectByPoint\"])(bbox, point);\n }\n\n var linkPoint = intersectPoint; // 如果存在锚点,则使用交点计算最近的锚点\n\n if (anchorPoints.length) {\n if (!linkPoint) {\n // 如果计算不出交点\n linkPoint = point;\n }\n\n linkPoint = this.getNearestPoint(anchorPoints, linkPoint);\n }\n\n if (!linkPoint) {\n // 如果最终依然没法找到锚点和连接点,直接返回中心点\n linkPoint = {\n x: centerX,\n y: centerY\n };\n }\n\n return linkPoint;\n };\n /**\n * 获取锚点的定义\n * @return {array} anchorPoints\n */\n\n\n Node.prototype.getAnchorPoints = function () {\n var anchorPoints = this.get(CACHE_ANCHOR_POINTS);\n\n if (!anchorPoints) {\n anchorPoints = [];\n var shapeFactory = this.get('shapeFactory');\n var bbox_1 = this.getBBox();\n var model = this.get('model');\n var shapeCfg = this.getShapeCfg(model);\n var type = model.type;\n var points = shapeFactory.getAnchorPoints(type, shapeCfg) || [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (pointArr, index) {\n var point = {\n x: bbox_1.minX + pointArr[0] * bbox_1.width,\n y: bbox_1.minY + pointArr[1] * bbox_1.height,\n anchorIndex: index\n };\n anchorPoints.push(point);\n });\n this.set(CACHE_ANCHOR_POINTS, anchorPoints);\n }\n\n return anchorPoints;\n };\n /**\n * add edge\n * @param edge Edge instance\n */\n\n\n Node.prototype.addEdge = function (edge) {\n this.get('edges').push(edge);\n };\n /**\n * 锁定节点\n */\n\n\n Node.prototype.lock = function () {\n this.set('locked', true);\n };\n /**\n * 解锁锁定的节点\n */\n\n\n Node.prototype.unlock = function () {\n this.set('locked', false);\n };\n\n Node.prototype.hasLocked = function () {\n return this.get('locked');\n };\n /**\n * 移除边\n * @param {Edge} edge 边\n */\n\n\n Node.prototype.removeEdge = function (edge) {\n var edges = this.getEdges();\n var index = edges.indexOf(edge);\n if (index > -1) edges.splice(index, 1);\n };\n\n Node.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null); // 清理缓存的 bbox\n\n this.set(CACHE_ANCHOR_POINTS, null);\n };\n /**\n * 判断更新的种类,move 表示仅移动,bbox 表示大小有变化,style 表示仅与大小无关的参数变化\n * @param cfg 节点数据模型\n */\n\n\n Node.prototype.getUpdateType = function (cfg) {\n var _a, _b, _c, _d, _e;\n\n if (!cfg) return undefined;\n var existX = !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(cfg.x);\n var existY = !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(cfg.y);\n var keys = Object.keys(cfg); // 仅有一个字段,包含 x 或者 包含 y\n // 两个字段,同时有 x,同时有 y\n\n if (keys.length === 1 && (existX || existY) || keys.length === 2 && existX && existY) return 'move';\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.x) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size || (cfg === null || cfg === void 0 ? void 0 : cfg.style) && (((_a = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _a === void 0 ? void 0 : _a.r) || ((_b = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _b === void 0 ? void 0 : _b.width) || ((_c = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _c === void 0 ? void 0 : _c.height) || ((_d = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _d === void 0 ? void 0 : _d.rx) || ((_e = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _e === void 0 ? void 0 : _e.ry))) return 'bbox|label';\n var updateLabel = keys.includes('label') || keys.includes('labelCfg');\n return updateLabel ? 'style|label' : 'style';\n };\n\n return Node;\n}(_item__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Node);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy9pdGVtL25vZGUuanM/ZjU0MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2lCO0FBQ3FFO0FBQzlGO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDJEQUFROztBQUU5QixtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0EsZ0JBQWdCLDJEQUFROztBQUV4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5QkFBeUIsNEVBQXlCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBLHlCQUF5Qiw2RUFBMEI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSx5QkFBeUIsMEVBQXVCO0FBQ2hEOztBQUVBLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQix3REFBSztBQUN2QixrQkFBa0Isd0RBQUs7QUFDdkIsZ0NBQWdDO0FBQ2hDOztBQUVBO0FBQ0EsUUFBUSwyREFBUSxXQUFXLDJEQUFRO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyxtRUFBSSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL2l0ZW0vbm9kZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCwgaXNOaWwsIGlzTnVtYmVyIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBkaXN0YW5jZSwgZ2V0Q2lyY2xlSW50ZXJzZWN0QnlQb2ludCwgZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQsIGdldFJlY3RJbnRlcnNlY3RCeVBvaW50IH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCBJdGVtIGZyb20gJy4vaXRlbSc7XG52YXIgQ0FDSEVfQU5DSE9SX1BPSU5UUyA9ICdhbmNob3JQb2ludHNDYWNoZSc7XG52YXIgQ0FDSEVfQkJPWCA9ICdiYm94Q2FjaGUnO1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhOb2RlLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIE5vZGUoKSB7XG4gICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICB9XG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TmVhcmVzdFBvaW50ID0gZnVuY3Rpb24gKHBvaW50cywgY3VyUG9pbnQpIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBuZWFyZXN0UG9pbnQgPSBwb2ludHNbMF07XG4gICAgdmFyIG1pbkRpc3RhbmNlID0gZGlzdGFuY2UocG9pbnRzWzBdLCBjdXJQb2ludCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgdmFyIGRpcyA9IGRpc3RhbmNlKHBvaW50LCBjdXJQb2ludCk7XG5cbiAgICAgIGlmIChkaXMgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgICBuZWFyZXN0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgbWluRGlzdGFuY2UgPSBkaXM7XG4gICAgICAgIGluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZWFyZXN0UG9pbnQuYW5jaG9ySW5kZXggPSBpbmRleDtcbiAgICByZXR1cm4gbmVhcmVzdFBvaW50O1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdub2RlJyxcbiAgICAgIGVkZ2VzOiBbXVxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bku47oioLngrnlhbPogZTnmoTmiYDmnInovrlcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRFZGdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2VkZ2VzJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bmiYDmnInnmoTlhaXovrlcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRJbkVkZ2VzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2VkZ2VzJykuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5nZXQoJ3RhcmdldCcpID09PSBzZWxmO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5omA5pyJ55qE5Ye66L65XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0T3V0RWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiB0aGlzLmdldCgnZWRnZXMnKS5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLmdldCgnc291cmNlJykgPT09IHNlbGY7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTpgrvlsYXoioLngrlcbiAgICpcbiAgICogQHJldHVybnMge0lOb2RlW119XG4gICAqIEBtZW1iZXJvZiBOb2RlXG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TmVpZ2hib3JzID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGVkZ2VzID0gdGhpcy5nZXQoJ2VkZ2VzJyk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAgIC8vIOW9k+WJjeiKgueCueS4uiBzb3VyY2XvvIzlroPmiYDmjIflkJHnmoTnm67moIfoioLngrlcbiAgICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyXzEgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyXzEoZWRnZSkge1xuICAgICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKSA9PT0gX3RoaXM7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZWRnZXMuZmlsdGVyKG5laWdoaGJvcnNDb252ZXJ0ZXJfMSkubWFwKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHJldHVybiBlZGdlLmdldFRhcmdldCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgICAvLyDlvZPliY3oioLngrnkuLogdGFyZ2V077yM5a6D5omA5oyH5ZCR55qE5rqQ6IqC54K5XG4gICAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8yID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8yKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIGVkZ2UuZ2V0VGFyZ2V0KCkgPT09IF90aGlzO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzIpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKTtcbiAgICAgIH0pO1xuICAgIH0gLy8g6Iul5pyq5oyH5a6aIHR5cGUg77yM5YiZ6L+U5Zue5omA5pyJ6YK75bGFXG5cblxuICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcihlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKSA9PT0gX3RoaXMgPyBlZGdlLmdldFRhcmdldCgpIDogZWRnZS5nZXRTb3VyY2UoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkZ2VzLm1hcChuZWlnaGhib3JzQ29udmVydGVyKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNrumUmueCueeahOe0ouW8leiOt+WPlui/nuaOpeeCuVxuICAgKiBAcGFyYW0gIHtOdW1iZXJ9IGluZGV4IOe0ouW8lVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLmdldExpbmtQb2ludEJ5QW5jaG9yID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIGFuY2hvclBvaW50cyA9IHRoaXMuZ2V0QW5jaG9yUG9pbnRzKCk7XG4gICAgcmV0dXJuIGFuY2hvclBvaW50c1tpbmRleF07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bov57mjqXngrlcbiAgICogQHBhcmFtIHBvaW50XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TGlua1BvaW50ID0gZnVuY3Rpb24gKHBvaW50KSB7XG4gICAgdmFyIGtleVNoYXBlID0gdGhpcy5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIHR5cGUgPSBrZXlTaGFwZS5nZXQoJ3R5cGUnKTtcbiAgICB2YXIgaXRlbVR5cGUgPSB0aGlzLmdldCgndHlwZScpO1xuICAgIHZhciBjZW50ZXJYO1xuICAgIHZhciBjZW50ZXJZO1xuICAgIHZhciBiYm94ID0gdGhpcy5nZXRCQm94KCk7XG5cbiAgICBpZiAoaXRlbVR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIGNlbnRlclggPSBiYm94LmNlbnRlclggfHwgKGJib3gubWF4WCArIGJib3gubWluWCkgLyAyO1xuICAgICAgY2VudGVyWSA9IGJib3guY2VudGVyWSB8fCAoYmJveC5tYXhZICsgYmJveC5taW5ZKSAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNlbnRlclggPSBiYm94LmNlbnRlclg7XG4gICAgICBjZW50ZXJZID0gYmJveC5jZW50ZXJZO1xuICAgIH1cblxuICAgIHZhciBhbmNob3JQb2ludHMgPSB0aGlzLmdldEFuY2hvclBvaW50cygpO1xuICAgIHZhciBpbnRlcnNlY3RQb2ludDtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgICAgaW50ZXJzZWN0UG9pbnQgPSBnZXRDaXJjbGVJbnRlcnNlY3RCeVBvaW50KHtcbiAgICAgICAgICB4OiBjZW50ZXJYLFxuICAgICAgICAgIHk6IGNlbnRlclksXG4gICAgICAgICAgcjogYmJveC53aWR0aCAvIDJcbiAgICAgICAgfSwgcG9pbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZWxsaXBzZSc6XG4gICAgICAgIGludGVyc2VjdFBvaW50ID0gZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQoe1xuICAgICAgICAgIHg6IGNlbnRlclgsXG4gICAgICAgICAgeTogY2VudGVyWSxcbiAgICAgICAgICByeDogYmJveC53aWR0aCAvIDIsXG4gICAgICAgICAgcnk6IGJib3guaGVpZ2h0IC8gMlxuICAgICAgICB9LCBwb2ludCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpbnRlcnNlY3RQb2ludCA9IGdldFJlY3RJbnRlcnNlY3RCeVBvaW50KGJib3gsIHBvaW50KTtcbiAgICB9XG5cbiAgICB2YXIgbGlua1BvaW50ID0gaW50ZXJzZWN0UG9pbnQ7IC8vIOWmguaenOWtmOWcqOmUmueCue+8jOWImeS9v+eUqOS6pOeCueiuoeeul+acgOi/keeahOmUmueCuVxuXG4gICAgaWYgKGFuY2hvclBvaW50cy5sZW5ndGgpIHtcbiAgICAgIGlmICghbGlua1BvaW50KSB7XG4gICAgICAgIC8vIOWmguaenOiuoeeul+S4jeWHuuS6pOeCuVxuICAgICAgICBsaW5rUG9pbnQgPSBwb2ludDtcbiAgICAgIH1cblxuICAgICAgbGlua1BvaW50ID0gdGhpcy5nZXROZWFyZXN0UG9pbnQoYW5jaG9yUG9pbnRzLCBsaW5rUG9pbnQpO1xuICAgIH1cblxuICAgIGlmICghbGlua1BvaW50KSB7XG4gICAgICAvLyDlpoLmnpzmnIDnu4jkvp3nhLbmsqHms5Xmib7liLDplJrngrnlkozov57mjqXngrnvvIznm7TmjqXov5Tlm57kuK3lv4PngrlcbiAgICAgIGxpbmtQb2ludCA9IHtcbiAgICAgICAgeDogY2VudGVyWCxcbiAgICAgICAgeTogY2VudGVyWVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlua1BvaW50O1xuICB9O1xuICAvKipcbiAgICog6I635Y+W6ZSa54K555qE5a6a5LmJXG4gICAqIEByZXR1cm4ge2FycmF5fSBhbmNob3JQb2ludHNcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRBbmNob3JQb2ludHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFuY2hvclBvaW50cyA9IHRoaXMuZ2V0KENBQ0hFX0FOQ0hPUl9QT0lOVFMpO1xuXG4gICAgaWYgKCFhbmNob3JQb2ludHMpIHtcbiAgICAgIGFuY2hvclBvaW50cyA9IFtdO1xuICAgICAgdmFyIHNoYXBlRmFjdG9yeSA9IHRoaXMuZ2V0KCdzaGFwZUZhY3RvcnknKTtcbiAgICAgIHZhciBiYm94XzEgPSB0aGlzLmdldEJCb3goKTtcbiAgICAgIHZhciBtb2RlbCA9IHRoaXMuZ2V0KCdtb2RlbCcpO1xuICAgICAgdmFyIHNoYXBlQ2ZnID0gdGhpcy5nZXRTaGFwZUNmZyhtb2RlbCk7XG4gICAgICB2YXIgdHlwZSA9IG1vZGVsLnR5cGU7XG4gICAgICB2YXIgcG9pbnRzID0gc2hhcGVGYWN0b3J5LmdldEFuY2hvclBvaW50cyh0eXBlLCBzaGFwZUNmZykgfHwgW107XG4gICAgICBlYWNoKHBvaW50cywgZnVuY3Rpb24gKHBvaW50QXJyLCBpbmRleCkge1xuICAgICAgICB2YXIgcG9pbnQgPSB7XG4gICAgICAgICAgeDogYmJveF8xLm1pblggKyBwb2ludEFyclswXSAqIGJib3hfMS53aWR0aCxcbiAgICAgICAgICB5OiBiYm94XzEubWluWSArIHBvaW50QXJyWzFdICogYmJveF8xLmhlaWdodCxcbiAgICAgICAgICBhbmNob3JJbmRleDogaW5kZXhcbiAgICAgICAgfTtcbiAgICAgICAgYW5jaG9yUG9pbnRzLnB1c2gocG9pbnQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNldChDQUNIRV9BTkNIT1JfUE9JTlRTLCBhbmNob3JQb2ludHMpO1xuICAgIH1cblxuICAgIHJldHVybiBhbmNob3JQb2ludHM7XG4gIH07XG4gIC8qKlxuICAgKiBhZGQgZWRnZVxuICAgKiBAcGFyYW0gZWRnZSBFZGdlIGluc3RhbmNlXG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuYWRkRWRnZSA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdGhpcy5nZXQoJ2VkZ2VzJykucHVzaChlZGdlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOmUgeWumuiKgueCuVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLmxvY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoJ2xvY2tlZCcsIHRydWUpO1xuICB9O1xuICAvKipcbiAgICog6Kej6ZSB6ZSB5a6a55qE6IqC54K5XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUudW5sb2NrID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KCdsb2NrZWQnLCBmYWxzZSk7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuaGFzTG9ja2VkID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnbG9ja2VkJyk7XG4gIH07XG4gIC8qKlxuICAgKiDnp7vpmaTovrlcbiAgICogQHBhcmFtIHtFZGdlfSBlZGdlIOi+uVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLnJlbW92ZUVkZ2UgPSBmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBlZGdlcyA9IHRoaXMuZ2V0RWRnZXMoKTtcbiAgICB2YXIgaW5kZXggPSBlZGdlcy5pbmRleE9mKGVkZ2UpO1xuICAgIGlmIChpbmRleCA+IC0xKSBlZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmNsZWFyQ2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoQ0FDSEVfQkJPWCwgbnVsbCk7IC8vIOa4heeQhue8k+WtmOeahCBiYm94XG5cbiAgICB0aGlzLnNldChDQUNIRV9BTkNIT1JfUE9JTlRTLCBudWxsKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIpOaWreabtOaWsOeahOenjeexu++8jG1vdmUg6KGo56S65LuF56e75Yqo77yMYmJveCDooajnpLrlpKflsI/mnInlj5jljJbvvIxzdHlsZSDooajnpLrku4XkuI7lpKflsI/ml6DlhbPnmoTlj4LmlbDlj5jljJZcbiAgICogQHBhcmFtIGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRVcGRhdGVUeXBlID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG5cbiAgICBpZiAoIWNmZykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB2YXIgZXhpc3RYID0gIWlzTmlsKGNmZy54KTtcbiAgICB2YXIgZXhpc3RZID0gIWlzTmlsKGNmZy55KTtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGNmZyk7IC8vIOS7heacieS4gOS4quWtl+aute+8jOWMheWQqyB4IOaIluiAhSDljIXlkKsgeVxuICAgIC8vIOS4pOS4quWtl+aute+8jOWQjOaXtuaciSB477yM5ZCM5pe25pyJIHlcblxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSAmJiAoZXhpc3RYIHx8IGV4aXN0WSkgfHwga2V5cy5sZW5ndGggPT09IDIgJiYgZXhpc3RYICYmIGV4aXN0WSkgcmV0dXJuICdtb3ZlJztcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLngpIHx8IGlzTnVtYmVyKGNmZy55KSB8fCBjZmcudHlwZSB8fCBjZmcuYW5jaG9yUG9pbnRzIHx8IGNmZy5zaXplIHx8IChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuc3R5bGUpICYmICgoKF9hID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucikgfHwgKChfYiA9IGNmZyA9PT0gbnVsbCB8fCBjZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNmZy5zdHlsZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLndpZHRoKSB8fCAoKF9jID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuaGVpZ2h0KSB8fCAoKF9kID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QucngpIHx8ICgoX2UgPSBjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuc3R5bGUpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5yeSkpKSByZXR1cm4gJ2Jib3h8bGFiZWwnO1xuICAgIHZhciB1cGRhdGVMYWJlbCA9IGtleXMuaW5jbHVkZXMoJ2xhYmVsJykgfHwga2V5cy5pbmNsdWRlcygnbGFiZWxDZmcnKTtcbiAgICByZXR1cm4gdXBkYXRlTGFiZWwgPyAnc3R5bGV8bGFiZWwnIDogJ3N0eWxlJztcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oSXRlbSk7XG5cbmV4cG9ydCBkZWZhdWx0IE5vZGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/item/node.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/types/index.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g6-core/es/types/index.js ***! \******************************************************/ /*! exports provided: G6GraphEvent, G6Event */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return G6Event; });\n/* harmony import */ var _interface__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../interface */ \"./node_modules/@antv/g6-core/es/interface/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _interface__WEBPACK_IMPORTED_MODULE_0__[\"G6GraphEvent\"]; });\n\n // Behavior type file\n\nvar G6Event;\n\n(function (G6Event) {\n // common events\n G6Event[\"CLICK\"] = \"click\";\n G6Event[\"DBLCLICK\"] = \"dblclick\";\n G6Event[\"MOUSEDOWN\"] = \"mousedown\";\n G6Event[\"MOUDEUP\"] = \"mouseup\";\n G6Event[\"CONTEXTMENU\"] = \"contextmenu\";\n G6Event[\"MOUSEENTER\"] = \"mouseenter\";\n G6Event[\"MOUSEOUT\"] = \"mouseout\";\n G6Event[\"MOUSEOVER\"] = \"mouseover\";\n G6Event[\"MOUSEMOVE\"] = \"mousemove\";\n G6Event[\"MOUSELEAVE\"] = \"mouseleave\";\n G6Event[\"DRAGSTART\"] = \"dragstart\";\n G6Event[\"DRAGEND\"] = \"dragend\";\n G6Event[\"DRAG\"] = \"drag\";\n G6Event[\"DRAGENTER\"] = \"dragenter\";\n G6Event[\"DRAGLEAVE\"] = \"dragleave\";\n G6Event[\"DRAGOVER\"] = \"dragover\";\n G6Event[\"DRAGOUT\"] = \"dragout\";\n G6Event[\"DDROP\"] = \"drop\";\n G6Event[\"KEYUP\"] = \"keyup\";\n G6Event[\"KEYDOWN\"] = \"keydown\";\n G6Event[\"WHEEL\"] = \"wheel\";\n G6Event[\"FOCUS\"] = \"focus\";\n G6Event[\"BLUR\"] = \"blur\"; // touch events\n\n G6Event[\"TOUCHSTART\"] = \"touchstart\";\n G6Event[\"TOUCHMOVE\"] = \"touchmove\";\n G6Event[\"TOUCHEND\"] = \"touchend\";\n G6Event[\"CANVAS_TOUCHSTART\"] = \"canvas:touchstart\";\n G6Event[\"CANVAS_TOUCHMOVE\"] = \"canvas:touchmove\";\n G6Event[\"CANVAS_TOUCHEND\"] = \"canvas:touchend\";\n G6Event[\"NODE_TOUCHSTART\"] = \"node:touchstart\";\n G6Event[\"NODE_TOUCHMOVE\"] = \"node:touchmove\";\n G6Event[\"NODE_TOUCHEND\"] = \"node:touchend\";\n G6Event[\"COMBO_TOUCHSTART\"] = \"combo:touchstart\";\n G6Event[\"COMBO_TOUCHMOVE\"] = \"combo:touchmove\";\n G6Event[\"COMBO_TOUCHEND\"] = \"combo:touchend\";\n G6Event[\"EDGE_TOUCHSTART\"] = \"edge:touchstart\";\n G6Event[\"EDGE_TOUCHMOVE\"] = \"edge:touchmove\";\n G6Event[\"EDGE_TOUCHEND\"] = \"edge:touchend\"; // node events\n\n G6Event[\"NODE_CONTEXTMENU\"] = \"node:contextmenu\";\n G6Event[\"NODE_CLICK\"] = \"node:click\";\n G6Event[\"NODE_DBLCLICK\"] = \"node:dblclick\";\n G6Event[\"NODE_MOUSEDOWN\"] = \"node:mousedown\";\n G6Event[\"NODE_MOUSEUP\"] = \"node:mouseup\";\n G6Event[\"NODE_MOUSEENTER\"] = \"node:mouseenter\";\n G6Event[\"NODE_MOUSELEAVE\"] = \"node:mouseleave\";\n G6Event[\"NODE_MOUSEMOVE\"] = \"node:mousemove\";\n G6Event[\"NODE_MOUSEOUT\"] = \"node:mouseout\";\n G6Event[\"NODE_MOUSEOVER\"] = \"node:mouseover\";\n G6Event[\"NODE_DROP\"] = \"node:drop\";\n G6Event[\"NODE_DRAGOVER\"] = \"node:dragover\";\n G6Event[\"NODE_DRAGENTER\"] = \"node:dragenter\";\n G6Event[\"NODE_DRAGLEAVE\"] = \"node:dragleave\";\n G6Event[\"NODE_DRAGSTART\"] = \"node:dragstart\";\n G6Event[\"NODE_DRAG\"] = \"node:drag\";\n G6Event[\"NODE_DRAGEND\"] = \"node:dragend\";\n G6Event[\"NODE_TAP\"] = \"node:tap\";\n G6Event[\"NODE_PANSTART\"] = \"node:panstart\";\n G6Event[\"NODE_PANMOVE\"] = \"node:panmove\";\n G6Event[\"NODE_PANEND\"] = \"node:panend\"; // combo, extends from nodes\n\n G6Event[\"COMBO_CONTEXTMENU\"] = \"combo:contextmenu\";\n G6Event[\"COMBO_CLICK\"] = \"combo:click\";\n G6Event[\"COMBO_DBLCLICK\"] = \"combo:dblclick\";\n G6Event[\"COMBO_MOUSEDOWN\"] = \"combo:mousedown\";\n G6Event[\"COMBO_MOUSEUP\"] = \"combo:mouseup\";\n G6Event[\"COMBO_MOUSEENTER\"] = \"combo:mouseenter\";\n G6Event[\"COMBO_MOUSELEAVE\"] = \"combo:mouseleave\";\n G6Event[\"COMBO_MOUSEMOVE\"] = \"combo:mousemove\";\n G6Event[\"COMBO_MOUSEOUT\"] = \"combo:mouseout\";\n G6Event[\"COMBO_MOUSEOVER\"] = \"combo:mouseover\";\n G6Event[\"COMBO_DROP\"] = \"combo:drop\";\n G6Event[\"COMBO_DRAGOVER\"] = \"combo:dragover\";\n G6Event[\"COMBO_DRAGENTER\"] = \"combo:dragenter\";\n G6Event[\"COMBO_DRAGLEAVE\"] = \"combo:dragleave\";\n G6Event[\"COMBO_DRAGSTART\"] = \"combo:dragstart\";\n G6Event[\"COMBO_DRAG\"] = \"combo:drag\";\n G6Event[\"COMBO_DRAGEND\"] = \"combo:dragend\";\n G6Event[\"COMBO_TAP\"] = \"combo:tap\";\n G6Event[\"COMBO_PANSTART\"] = \"combo:panstart\";\n G6Event[\"COMBO_PANMOVE\"] = \"combo:panmove\";\n G6Event[\"COMBO_PANEND\"] = \"combo:panend\"; // edge events\n\n G6Event[\"EDGE_CONTEXTMENU\"] = \"edge:contextmenu\";\n G6Event[\"EDGE_CLICK\"] = \"edge:click\";\n G6Event[\"EDGE_DBLCLICK\"] = \"edge:dblclick\";\n G6Event[\"EDGE_MOUSEDOWN\"] = \"edge:mousedown\";\n G6Event[\"EDGE_MOUSEUP\"] = \"edge:mouseup\";\n G6Event[\"EDGE_MOUSEENTER\"] = \"edge:mouseenter\";\n G6Event[\"EDGE_MOUSELEAVE\"] = \"edge:mouseleave\";\n G6Event[\"EDGE_MOUSEMOVE\"] = \"edge:mousemove\";\n G6Event[\"EDGE_MOUSEOUT\"] = \"edge:mouseout\";\n G6Event[\"EDGE_MOUSEOVER\"] = \"edge:mouseover\";\n G6Event[\"EDGE_DROP\"] = \"edge:drop\";\n G6Event[\"EDGE_DRAGOVER\"] = \"edge:dragover\";\n G6Event[\"EDGE_DRAGENTER\"] = \"edge:dragenter\";\n G6Event[\"EDGE_DRAGLEAVE\"] = \"edge:dragleave\"; // canvas events\n\n G6Event[\"CANVAS_CONTEXTMENU\"] = \"canvas:contextmenu\";\n G6Event[\"CANVAS_CLICK\"] = \"canvas:click\";\n G6Event[\"CANVAS_DBLCLICK\"] = \"canvas:dblclick\";\n G6Event[\"CANVAS_MOUSEDOWN\"] = \"canvas:mousedown\";\n G6Event[\"CANVAS_MOUSEUP\"] = \"canvas:mouseup\";\n G6Event[\"CANVAS_MOUSEENTER\"] = \"canvas:mouseenter\";\n G6Event[\"CANVAS_MOUSELEAVE\"] = \"canvas:mouseleave\";\n G6Event[\"CANVAS_MOUSEMOVE\"] = \"canvas:mousemove\";\n G6Event[\"CANVAS_MOUSEOUT\"] = \"canvas:mouseout\";\n G6Event[\"CANVAS_MOUSEOVER\"] = \"canvas:mouseover\";\n G6Event[\"CANVAS_DROP\"] = \"canvas:drop\";\n G6Event[\"CANVAS_DRAGENTER\"] = \"canvas:dragenter\";\n G6Event[\"CANVAS_DRAGLEAVE\"] = \"canvas:dragleave\";\n G6Event[\"CANVAS_DRAGSTART\"] = \"canvas:dragstart\";\n G6Event[\"CANVAS_DRAG\"] = \"canvas:drag\";\n G6Event[\"CANVAS_DRAGEND\"] = \"canvas:dragend\";\n G6Event[\"CANVAS_TAP\"] = \"canvas:tap\";\n G6Event[\"CANVAS_PANSTART\"] = \"canvas:panstart\";\n G6Event[\"CANVAS_PANMOVE\"] = \"canvas:panmove\";\n G6Event[\"CANVAS_PANEND\"] = \"canvas:panend\"; // timing events\n\n G6Event[\"BEFORERENDER\"] = \"beforerender\";\n G6Event[\"AFTERRENDER\"] = \"afterrender\";\n G6Event[\"BEFOREADDITEM\"] = \"beforeadditem\";\n G6Event[\"AFTERADDITEM\"] = \"afteradditem\";\n G6Event[\"BEFOREREMOVEITEM\"] = \"beforeremoveitem\";\n G6Event[\"AFTERREMOVEITEM\"] = \"afterremoveitem\";\n G6Event[\"BEFOREUPDATEITEM\"] = \"beforeupdateitem\";\n G6Event[\"AFTERUPDATEITEM\"] = \"afterupdateitem\";\n G6Event[\"BEFOREITEMVISIBILITYCHANGE\"] = \"beforeitemvisibilitychange\";\n G6Event[\"AFTERITEMVISIBILITYCHANGE\"] = \"afteritemvisibilitychange\";\n G6Event[\"BEFOREITEMSTATECHANGE\"] = \"beforeitemstatechange\";\n G6Event[\"AFTERITEMSTATECHANGE\"] = \"afteritemstatechange\";\n G6Event[\"BEFOREITEMREFRESH\"] = \"beforeitemrefresh\";\n G6Event[\"AFTERITEMREFRESH\"] = \"afteritemrefresh\";\n G6Event[\"BEFOREITEMSTATESCLEAR\"] = \"beforeitemstatesclear\";\n G6Event[\"AFTERITEMSTATESCLEAR\"] = \"afteritemstatesclear\";\n G6Event[\"BEFOREMODECHANGE\"] = \"beforemodechange\";\n G6Event[\"AFTERMODECHANGE\"] = \"aftermodechange\";\n G6Event[\"BEFORELAYOUT\"] = \"beforelayout\";\n G6Event[\"AFTERLAYOUT\"] = \"afterlayout\";\n G6Event[\"BEFORECREATEEDGE\"] = \"beforecreateedge\";\n G6Event[\"AFTERCREATEEDGE\"] = \"aftercreateedge\";\n G6Event[\"BEFOREGRAPHREFRESHPOSITION\"] = \"beforegraphrefreshposition\";\n G6Event[\"AFTERGRAPHREFRESHPOSITION\"] = \"aftergraphrefreshposition\";\n G6Event[\"BEFOREGRAPHREFRESH\"] = \"beforegraphrefresh\";\n G6Event[\"AFTERGRAPHREFRESH\"] = \"aftergraphrefresh\";\n G6Event[\"BEFOREANIMATE\"] = \"beforeanimate\";\n G6Event[\"AFTERANIMATE\"] = \"afteranimate\";\n G6Event[\"BEFOREPAINT\"] = \"beforepaint\";\n G6Event[\"AFTERPAINT\"] = \"afterpaint\";\n G6Event[\"BEFORECOLLAPSEEXPANDCOMBO\"] = \"beforecollapseexpandcombo\";\n G6Event[\"AFTERCOLLAPSEEXPANDCOMBO\"] = \"aftercollapseexpandcombo\";\n G6Event[\"GRAPHSTATECHANGE\"] = \"graphstatechange\";\n G6Event[\"AFTERACTIVATERELATIONS\"] = \"afteractivaterelations\";\n G6Event[\"NODESELECTCHANGE\"] = \"nodeselectchange\";\n G6Event[\"TOOLTIPCHANGE\"] = \"tooltipchange\";\n G6Event[\"WHEELZOOM\"] = \"wheelzoom\";\n G6Event[\"VIEWPORTCHANGE\"] = \"viewportchange\";\n G6Event[\"DRAGNODEEND\"] = \"dragnodeend\";\n G6Event[\"STACKCHANGE\"] = \"stackchange\"; // Mobile event support\n\n G6Event[\"TAP\"] = \"tap\";\n G6Event[\"PINCHSTART\"] = \"pinchstart\";\n G6Event[\"PINCHMOVE\"] = \"pinchmove\";\n G6Event[\"PANSTART\"] = \"panstart\";\n G6Event[\"PANMOVE\"] = \"panmove\";\n G6Event[\"PANEND\"] = \"panend\";\n})(G6Event || (G6Event = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy90eXBlcy9pbmRleC5qcz8xZGU0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkI7O0FBRXRCOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsMEJBQTBCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvdHlwZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuLi9pbnRlcmZhY2UnOyAvLyBCZWhhdmlvciB0eXBlIGZpbGVcblxuZXhwb3J0IHZhciBHNkV2ZW50O1xuXG4oZnVuY3Rpb24gKEc2RXZlbnQpIHtcbiAgLy8gY29tbW9uIGV2ZW50c1xuICBHNkV2ZW50W1wiQ0xJQ0tcIl0gPSBcImNsaWNrXCI7XG4gIEc2RXZlbnRbXCJEQkxDTElDS1wiXSA9IFwiZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIk1PVVNFRE9XTlwiXSA9IFwibW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJNT1VERVVQXCJdID0gXCJtb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJDT05URVhUTUVOVVwiXSA9IFwiY29udGV4dG1lbnVcIjtcbiAgRzZFdmVudFtcIk1PVVNFRU5URVJcIl0gPSBcIm1vdXNlZW50ZXJcIjtcbiAgRzZFdmVudFtcIk1PVVNFT1VUXCJdID0gXCJtb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiTU9VU0VPVkVSXCJdID0gXCJtb3VzZW92ZXJcIjtcbiAgRzZFdmVudFtcIk1PVVNFTU9WRVwiXSA9IFwibW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJNT1VTRUxFQVZFXCJdID0gXCJtb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJEUkFHU1RBUlRcIl0gPSBcImRyYWdzdGFydFwiO1xuICBHNkV2ZW50W1wiRFJBR0VORFwiXSA9IFwiZHJhZ2VuZFwiO1xuICBHNkV2ZW50W1wiRFJBR1wiXSA9IFwiZHJhZ1wiO1xuICBHNkV2ZW50W1wiRFJBR0VOVEVSXCJdID0gXCJkcmFnZW50ZXJcIjtcbiAgRzZFdmVudFtcIkRSQUdMRUFWRVwiXSA9IFwiZHJhZ2xlYXZlXCI7XG4gIEc2RXZlbnRbXCJEUkFHT1ZFUlwiXSA9IFwiZHJhZ292ZXJcIjtcbiAgRzZFdmVudFtcIkRSQUdPVVRcIl0gPSBcImRyYWdvdXRcIjtcbiAgRzZFdmVudFtcIkREUk9QXCJdID0gXCJkcm9wXCI7XG4gIEc2RXZlbnRbXCJLRVlVUFwiXSA9IFwia2V5dXBcIjtcbiAgRzZFdmVudFtcIktFWURPV05cIl0gPSBcImtleWRvd25cIjtcbiAgRzZFdmVudFtcIldIRUVMXCJdID0gXCJ3aGVlbFwiO1xuICBHNkV2ZW50W1wiRk9DVVNcIl0gPSBcImZvY3VzXCI7XG4gIEc2RXZlbnRbXCJCTFVSXCJdID0gXCJibHVyXCI7IC8vIHRvdWNoIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJUT1VDSFNUQVJUXCJdID0gXCJ0b3VjaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJUT1VDSE1PVkVcIl0gPSBcInRvdWNobW92ZVwiO1xuICBHNkV2ZW50W1wiVE9VQ0hFTkRcIl0gPSBcInRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfVE9VQ0hTVEFSVFwiXSA9IFwiY2FudmFzOnRvdWNoc3RhcnRcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19UT1VDSE1PVkVcIl0gPSBcImNhbnZhczp0b3VjaG1vdmVcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19UT1VDSEVORFwiXSA9IFwiY2FudmFzOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJOT0RFX1RPVUNIU1RBUlRcIl0gPSBcIm5vZGU6dG91Y2hzdGFydFwiO1xuICBHNkV2ZW50W1wiTk9ERV9UT1VDSE1PVkVcIl0gPSBcIm5vZGU6dG91Y2htb3ZlXCI7XG4gIEc2RXZlbnRbXCJOT0RFX1RPVUNIRU5EXCJdID0gXCJub2RlOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJDT01CT19UT1VDSFNUQVJUXCJdID0gXCJjb21ibzp0b3VjaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19UT1VDSE1PVkVcIl0gPSBcImNvbWJvOnRvdWNobW92ZVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fVE9VQ0hFTkRcIl0gPSBcImNvbWJvOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJFREdFX1RPVUNIU1RBUlRcIl0gPSBcImVkZ2U6dG91Y2hzdGFydFwiO1xuICBHNkV2ZW50W1wiRURHRV9UT1VDSE1PVkVcIl0gPSBcImVkZ2U6dG91Y2htb3ZlXCI7XG4gIEc2RXZlbnRbXCJFREdFX1RPVUNIRU5EXCJdID0gXCJlZGdlOnRvdWNoZW5kXCI7IC8vIG5vZGUgZXZlbnRzXG5cbiAgRzZFdmVudFtcIk5PREVfQ09OVEVYVE1FTlVcIl0gPSBcIm5vZGU6Y29udGV4dG1lbnVcIjtcbiAgRzZFdmVudFtcIk5PREVfQ0xJQ0tcIl0gPSBcIm5vZGU6Y2xpY2tcIjtcbiAgRzZFdmVudFtcIk5PREVfREJMQ0xJQ0tcIl0gPSBcIm5vZGU6ZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIk5PREVfTU9VU0VET1dOXCJdID0gXCJub2RlOm1vdXNlZG93blwiO1xuICBHNkV2ZW50W1wiTk9ERV9NT1VTRVVQXCJdID0gXCJub2RlOm1vdXNldXBcIjtcbiAgRzZFdmVudFtcIk5PREVfTU9VU0VFTlRFUlwiXSA9IFwibm9kZTptb3VzZWVudGVyXCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFTEVBVkVcIl0gPSBcIm5vZGU6bW91c2VsZWF2ZVwiO1xuICBHNkV2ZW50W1wiTk9ERV9NT1VTRU1PVkVcIl0gPSBcIm5vZGU6bW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFT1VUXCJdID0gXCJub2RlOm1vdXNlb3V0XCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFT1ZFUlwiXSA9IFwibm9kZTptb3VzZW92ZXJcIjtcbiAgRzZFdmVudFtcIk5PREVfRFJPUFwiXSA9IFwibm9kZTpkcm9wXCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdPVkVSXCJdID0gXCJub2RlOmRyYWdvdmVyXCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdFTlRFUlwiXSA9IFwibm9kZTpkcmFnZW50ZXJcIjtcbiAgRzZFdmVudFtcIk5PREVfRFJBR0xFQVZFXCJdID0gXCJub2RlOmRyYWdsZWF2ZVwiO1xuICBHNkV2ZW50W1wiTk9ERV9EUkFHU1RBUlRcIl0gPSBcIm5vZGU6ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdcIl0gPSBcIm5vZGU6ZHJhZ1wiO1xuICBHNkV2ZW50W1wiTk9ERV9EUkFHRU5EXCJdID0gXCJub2RlOmRyYWdlbmRcIjtcbiAgRzZFdmVudFtcIk5PREVfVEFQXCJdID0gXCJub2RlOnRhcFwiO1xuICBHNkV2ZW50W1wiTk9ERV9QQU5TVEFSVFwiXSA9IFwibm9kZTpwYW5zdGFydFwiO1xuICBHNkV2ZW50W1wiTk9ERV9QQU5NT1ZFXCJdID0gXCJub2RlOnBhbm1vdmVcIjtcbiAgRzZFdmVudFtcIk5PREVfUEFORU5EXCJdID0gXCJub2RlOnBhbmVuZFwiOyAvLyBjb21ibywgZXh0ZW5kcyBmcm9tIG5vZGVzXG5cbiAgRzZFdmVudFtcIkNPTUJPX0NPTlRFWFRNRU5VXCJdID0gXCJjb21ibzpjb250ZXh0bWVudVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fQ0xJQ0tcIl0gPSBcImNvbWJvOmNsaWNrXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EQkxDTElDS1wiXSA9IFwiY29tYm86ZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIkNPTUJPX01PVVNFRE9XTlwiXSA9IFwiY29tYm86bW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRVVQXCJdID0gXCJjb21ibzptb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRUVOVEVSXCJdID0gXCJjb21ibzptb3VzZWVudGVyXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRUxFQVZFXCJdID0gXCJjb21ibzptb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRU1PVkVcIl0gPSBcImNvbWJvOm1vdXNlbW92ZVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fTU9VU0VPVVRcIl0gPSBcImNvbWJvOm1vdXNlb3V0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRU9WRVJcIl0gPSBcImNvbWJvOm1vdXNlb3ZlclwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJPUFwiXSA9IFwiY29tYm86ZHJvcFwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJBR09WRVJcIl0gPSBcImNvbWJvOmRyYWdvdmVyXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHRU5URVJcIl0gPSBcImNvbWJvOmRyYWdlbnRlclwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJBR0xFQVZFXCJdID0gXCJjb21ibzpkcmFnbGVhdmVcIjtcbiAgRzZFdmVudFtcIkNPTUJPX0RSQUdTVEFSVFwiXSA9IFwiY29tYm86ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHXCJdID0gXCJjb21ibzpkcmFnXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHRU5EXCJdID0gXCJjb21ibzpkcmFnZW5kXCI7XG4gIEc2RXZlbnRbXCJDT01CT19UQVBcIl0gPSBcImNvbWJvOnRhcFwiO1xuICBHNkV2ZW50W1wiQ09NQk9fUEFOU1RBUlRcIl0gPSBcImNvbWJvOnBhbnN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19QQU5NT1ZFXCJdID0gXCJjb21ibzpwYW5tb3ZlXCI7XG4gIEc2RXZlbnRbXCJDT01CT19QQU5FTkRcIl0gPSBcImNvbWJvOnBhbmVuZFwiOyAvLyBlZGdlIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJFREdFX0NPTlRFWFRNRU5VXCJdID0gXCJlZGdlOmNvbnRleHRtZW51XCI7XG4gIEc2RXZlbnRbXCJFREdFX0NMSUNLXCJdID0gXCJlZGdlOmNsaWNrXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RCTENMSUNLXCJdID0gXCJlZGdlOmRibGNsaWNrXCI7XG4gIEc2RXZlbnRbXCJFREdFX01PVVNFRE9XTlwiXSA9IFwiZWRnZTptb3VzZWRvd25cIjtcbiAgRzZFdmVudFtcIkVER0VfTU9VU0VVUFwiXSA9IFwiZWRnZTptb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJFREdFX01PVVNFRU5URVJcIl0gPSBcImVkZ2U6bW91c2VlbnRlclwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRUxFQVZFXCJdID0gXCJlZGdlOm1vdXNlbGVhdmVcIjtcbiAgRzZFdmVudFtcIkVER0VfTU9VU0VNT1ZFXCJdID0gXCJlZGdlOm1vdXNlbW92ZVwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRU9VVFwiXSA9IFwiZWRnZTptb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRU9WRVJcIl0gPSBcImVkZ2U6bW91c2VvdmVyXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RST1BcIl0gPSBcImVkZ2U6ZHJvcFwiO1xuICBHNkV2ZW50W1wiRURHRV9EUkFHT1ZFUlwiXSA9IFwiZWRnZTpkcmFnb3ZlclwiO1xuICBHNkV2ZW50W1wiRURHRV9EUkFHRU5URVJcIl0gPSBcImVkZ2U6ZHJhZ2VudGVyXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RSQUdMRUFWRVwiXSA9IFwiZWRnZTpkcmFnbGVhdmVcIjsgLy8gY2FudmFzIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJDQU5WQVNfQ09OVEVYVE1FTlVcIl0gPSBcImNhbnZhczpjb250ZXh0bWVudVwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX0NMSUNLXCJdID0gXCJjYW52YXM6Y2xpY2tcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19EQkxDTElDS1wiXSA9IFwiY2FudmFzOmRibGNsaWNrXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VET1dOXCJdID0gXCJjYW52YXM6bW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VVUFwiXSA9IFwiY2FudmFzOm1vdXNldXBcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19NT1VTRUVOVEVSXCJdID0gXCJjYW52YXM6bW91c2VlbnRlclwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX01PVVNFTEVBVkVcIl0gPSBcImNhbnZhczptb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VNT1ZFXCJdID0gXCJjYW52YXM6bW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VPVVRcIl0gPSBcImNhbnZhczptb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX01PVVNFT1ZFUlwiXSA9IFwiY2FudmFzOm1vdXNlb3ZlclwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX0RST1BcIl0gPSBcImNhbnZhczpkcm9wXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR0VOVEVSXCJdID0gXCJjYW52YXM6ZHJhZ2VudGVyXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR0xFQVZFXCJdID0gXCJjYW52YXM6ZHJhZ2xlYXZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR1NUQVJUXCJdID0gXCJjYW52YXM6ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR1wiXSA9IFwiY2FudmFzOmRyYWdcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19EUkFHRU5EXCJdID0gXCJjYW52YXM6ZHJhZ2VuZFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1RBUFwiXSA9IFwiY2FudmFzOnRhcFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1BBTlNUQVJUXCJdID0gXCJjYW52YXM6cGFuc3RhcnRcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19QQU5NT1ZFXCJdID0gXCJjYW52YXM6cGFubW92ZVwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1BBTkVORFwiXSA9IFwiY2FudmFzOnBhbmVuZFwiOyAvLyB0aW1pbmcgZXZlbnRzXG5cbiAgRzZFdmVudFtcIkJFRk9SRVJFTkRFUlwiXSA9IFwiYmVmb3JlcmVuZGVyXCI7XG4gIEc2RXZlbnRbXCJBRlRFUlJFTkRFUlwiXSA9IFwiYWZ0ZXJyZW5kZXJcIjtcbiAgRzZFdmVudFtcIkJFRk9SRUFERElURU1cIl0gPSBcImJlZm9yZWFkZGl0ZW1cIjtcbiAgRzZFdmVudFtcIkFGVEVSQURESVRFTVwiXSA9IFwiYWZ0ZXJhZGRpdGVtXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVSRU1PVkVJVEVNXCJdID0gXCJiZWZvcmVyZW1vdmVpdGVtXCI7XG4gIEc2RXZlbnRbXCJBRlRFUlJFTU9WRUlURU1cIl0gPSBcImFmdGVycmVtb3ZlaXRlbVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFVVBEQVRFSVRFTVwiXSA9IFwiYmVmb3JldXBkYXRlaXRlbVwiO1xuICBHNkV2ZW50W1wiQUZURVJVUERBVEVJVEVNXCJdID0gXCJhZnRlcnVwZGF0ZWl0ZW1cIjtcbiAgRzZFdmVudFtcIkJFRk9SRUlURU1WSVNJQklMSVRZQ0hBTkdFXCJdID0gXCJiZWZvcmVpdGVtdmlzaWJpbGl0eWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQUZURVJJVEVNVklTSUJJTElUWUNIQU5HRVwiXSA9IFwiYWZ0ZXJpdGVtdmlzaWJpbGl0eWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFSVRFTVNUQVRFQ0hBTkdFXCJdID0gXCJiZWZvcmVpdGVtc3RhdGVjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkFGVEVSSVRFTVNUQVRFQ0hBTkdFXCJdID0gXCJhZnRlcml0ZW1zdGF0ZWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFSVRFTVJFRlJFU0hcIl0gPSBcImJlZm9yZWl0ZW1yZWZyZXNoXCI7XG4gIEc2RXZlbnRbXCJBRlRFUklURU1SRUZSRVNIXCJdID0gXCJhZnRlcml0ZW1yZWZyZXNoXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVJVEVNU1RBVEVTQ0xFQVJcIl0gPSBcImJlZm9yZWl0ZW1zdGF0ZXNjbGVhclwiO1xuICBHNkV2ZW50W1wiQUZURVJJVEVNU1RBVEVTQ0xFQVJcIl0gPSBcImFmdGVyaXRlbXN0YXRlc2NsZWFyXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVNT0RFQ0hBTkdFXCJdID0gXCJiZWZvcmVtb2RlY2hhbmdlXCI7XG4gIEc2RXZlbnRbXCJBRlRFUk1PREVDSEFOR0VcIl0gPSBcImFmdGVybW9kZWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFTEFZT1VUXCJdID0gXCJiZWZvcmVsYXlvdXRcIjtcbiAgRzZFdmVudFtcIkFGVEVSTEFZT1VUXCJdID0gXCJhZnRlcmxheW91dFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQ1JFQVRFRURHRVwiXSA9IFwiYmVmb3JlY3JlYXRlZWRnZVwiO1xuICBHNkV2ZW50W1wiQUZURVJDUkVBVEVFREdFXCJdID0gXCJhZnRlcmNyZWF0ZWVkZ2VcIjtcbiAgRzZFdmVudFtcIkJFRk9SRUdSQVBIUkVGUkVTSFBPU0lUSU9OXCJdID0gXCJiZWZvcmVncmFwaHJlZnJlc2hwb3NpdGlvblwiO1xuICBHNkV2ZW50W1wiQUZURVJHUkFQSFJFRlJFU0hQT1NJVElPTlwiXSA9IFwiYWZ0ZXJncmFwaHJlZnJlc2hwb3NpdGlvblwiO1xuICBHNkV2ZW50W1wiQkVGT1JFR1JBUEhSRUZSRVNIXCJdID0gXCJiZWZvcmVncmFwaHJlZnJlc2hcIjtcbiAgRzZFdmVudFtcIkFGVEVSR1JBUEhSRUZSRVNIXCJdID0gXCJhZnRlcmdyYXBocmVmcmVzaFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQU5JTUFURVwiXSA9IFwiYmVmb3JlYW5pbWF0ZVwiO1xuICBHNkV2ZW50W1wiQUZURVJBTklNQVRFXCJdID0gXCJhZnRlcmFuaW1hdGVcIjtcbiAgRzZFdmVudFtcIkJFRk9SRVBBSU5UXCJdID0gXCJiZWZvcmVwYWludFwiO1xuICBHNkV2ZW50W1wiQUZURVJQQUlOVFwiXSA9IFwiYWZ0ZXJwYWludFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQ09MTEFQU0VFWFBBTkRDT01CT1wiXSA9IFwiYmVmb3JlY29sbGFwc2VleHBhbmRjb21ib1wiO1xuICBHNkV2ZW50W1wiQUZURVJDT0xMQVBTRUVYUEFORENPTUJPXCJdID0gXCJhZnRlcmNvbGxhcHNlZXhwYW5kY29tYm9cIjtcbiAgRzZFdmVudFtcIkdSQVBIU1RBVEVDSEFOR0VcIl0gPSBcImdyYXBoc3RhdGVjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkFGVEVSQUNUSVZBVEVSRUxBVElPTlNcIl0gPSBcImFmdGVyYWN0aXZhdGVyZWxhdGlvbnNcIjtcbiAgRzZFdmVudFtcIk5PREVTRUxFQ1RDSEFOR0VcIl0gPSBcIm5vZGVzZWxlY3RjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIlRPT0xUSVBDSEFOR0VcIl0gPSBcInRvb2x0aXBjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIldIRUVMWk9PTVwiXSA9IFwid2hlZWx6b29tXCI7XG4gIEc2RXZlbnRbXCJWSUVXUE9SVENIQU5HRVwiXSA9IFwidmlld3BvcnRjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkRSQUdOT0RFRU5EXCJdID0gXCJkcmFnbm9kZWVuZFwiO1xuICBHNkV2ZW50W1wiU1RBQ0tDSEFOR0VcIl0gPSBcInN0YWNrY2hhbmdlXCI7IC8vIE1vYmlsZSBldmVudCBzdXBwb3J0XG5cbiAgRzZFdmVudFtcIlRBUFwiXSA9IFwidGFwXCI7XG4gIEc2RXZlbnRbXCJQSU5DSFNUQVJUXCJdID0gXCJwaW5jaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJQSU5DSE1PVkVcIl0gPSBcInBpbmNobW92ZVwiO1xuICBHNkV2ZW50W1wiUEFOU1RBUlRcIl0gPSBcInBhbnN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJQQU5NT1ZFXCJdID0gXCJwYW5tb3ZlXCI7XG4gIEc2RXZlbnRbXCJQQU5FTkRcIl0gPSBcInBhbmVuZFwiO1xufSkoRzZFdmVudCB8fCAoRzZFdmVudCA9IHt9KSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/types/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/util/base.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g6-core/es/util/base.js ***! \****************************************************/ /*! exports provided: uniqueId, formatPadding, cloneEvent, isViewportChanged, isNaN, calculationItemsBBox, processParallelEdges */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return uniqueId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPadding\", function() { return formatPadding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneEvent\", function() { return cloneEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isViewportChanged\", function() { return isViewportChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return isNaN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculationItemsBBox\", function() { return calculationItemsBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"processParallelEdges\", function() { return processParallelEdges; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _interface_behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../interface/behavior */ \"./node_modules/@antv/g6-core/es/interface/behavior.js\");\n\n\nvar uniqueId = function uniqueId(type) {\n return \"\".concat(type, \"-\").concat(Math.random()).concat(Date.now());\n};\n/**\n * turn padding into [top, right, bottom, right]\n * @param {Number|Array} padding input padding\n * @return {array} output\n */\n\nvar formatPadding = function formatPadding(padding) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(padding)) {\n switch (padding.length) {\n case 4:\n return padding;\n\n case 3:\n padding.push(padding[1]);\n return padding;\n\n case 2:\n return padding.concat(padding);\n\n case 1:\n return [padding[0], padding[0], padding[0], padding[0]];\n\n default:\n return [0, 0, 0, 0];\n }\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(padding)) {\n return [padding, padding, padding, padding];\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(padding)) {\n var intPadding = parseInt(padding, 10);\n return [intPadding, intPadding, intPadding, intPadding];\n }\n\n return [0, 0, 0, 0];\n};\n/**\n * clone event\n * @param e\n */\n\nvar cloneEvent = function cloneEvent(e) {\n var event = new _interface_behavior__WEBPACK_IMPORTED_MODULE_1__[\"G6GraphEvent\"](e.type, e);\n event.clientX = e.clientX;\n event.clientY = e.clientY;\n event.x = e.x;\n event.y = e.y;\n event.target = e.target;\n event.currentTarget = e.currentTarget;\n event.bubbles = true;\n event.item = e.item;\n return event;\n};\n/**\n * 判断 viewport 是否改变,通过和单位矩阵对比\n * @param matrix Viewport 的 Matrix\n */\n\nvar isViewportChanged = function isViewportChanged(matrix) {\n // matrix 为 null, 则说明没有变化\n if (!matrix) {\n return false;\n }\n\n var MATRIX_LEN = 9;\n var ORIGIN_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n for (var i = 0; i < MATRIX_LEN; i++) {\n if (matrix[i] !== ORIGIN_MATRIX[i]) {\n return true;\n }\n }\n\n return false;\n};\nvar isNaN = function isNaN(input) {\n return Number.isNaN(Number(input));\n};\n/**\n * 计算一组 Item 的 BBox\n * @param items 选中的一组Item,可以是 node 或 combo\n */\n\nvar calculationItemsBBox = function calculationItemsBBox(items) {\n var minx = Infinity;\n var maxx = -Infinity;\n var miny = Infinity;\n var maxy = -Infinity; // 获取已节点的所有最大最小x y值\n\n for (var i = 0; i < items.length; i++) {\n var element = items[i];\n var bbox = element.getBBox();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n\n if (minX < minx) {\n minx = minX;\n }\n\n if (minY < miny) {\n miny = minY;\n }\n\n if (maxX > maxx) {\n maxx = maxX;\n }\n\n if (maxY > maxy) {\n maxy = maxY;\n }\n }\n\n var x = Math.floor(minx);\n var y = Math.floor(miny);\n var width = Math.ceil(maxx) - Math.floor(minx);\n var height = Math.ceil(maxy) - Math.floor(miny);\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minx,\n minY: miny,\n maxX: maxx,\n maxY: maxy\n };\n};\n/**\n * 若 edges 中存在两端点相同的边,使用 quadratic 边并自动计算 curveOffset 使它们不相互重叠\n * 文档: https://g6.antv.vision/en/docs/api/Util\n * @param edges 边数据集合\n * @param offsetDiff 相邻两边的 offset 之差\n * @param multiEdgeType\n * @param singleEdgeType\n * @param loopEdgeType\n */\n\nvar processParallelEdges = function processParallelEdges(edges, offsetDiff, multiEdgeType, singleEdgeType, loopEdgeType) {\n if (offsetDiff === void 0) {\n offsetDiff = 15;\n }\n\n if (multiEdgeType === void 0) {\n multiEdgeType = 'quadratic';\n }\n\n if (singleEdgeType === void 0) {\n singleEdgeType = undefined;\n }\n\n if (loopEdgeType === void 0) {\n loopEdgeType = undefined;\n }\n\n var len = edges.length;\n var cod = offsetDiff * 2;\n var loopPosition = ['top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left'];\n var edgeMap = {};\n var tags = [];\n var reverses = {};\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i];\n var source = edge.source,\n target = edge.target;\n var sourceTarget = \"\".concat(source, \"-\").concat(target);\n if (tags[i]) continue;\n\n if (!edgeMap[sourceTarget]) {\n edgeMap[sourceTarget] = [];\n }\n\n tags[i] = true;\n edgeMap[sourceTarget].push(edge);\n\n for (var j = 0; j < len; j++) {\n if (i === j) continue;\n var sedge = edges[j];\n var src = sedge.source;\n var dst = sedge.target; // 两个节点之间共同的边\n // 第一条的source = 第二条的target\n // 第一条的target = 第二条的source\n\n if (!tags[j]) {\n if (source === dst && target === src) {\n edgeMap[sourceTarget].push(sedge);\n tags[j] = true;\n reverses[\"\".concat(src, \"|\").concat(dst, \"|\").concat(edgeMap[sourceTarget].length - 1)] = true;\n } else if (source === src && target === dst) {\n edgeMap[sourceTarget].push(sedge);\n tags[j] = true;\n }\n }\n }\n }\n\n for (var key in edgeMap) {\n var arcEdges = edgeMap[key];\n var length_1 = arcEdges.length;\n\n for (var k = 0; k < length_1; k++) {\n var current = arcEdges[k];\n\n if (current.source === current.target) {\n if (loopEdgeType) current.type = loopEdgeType; // 超过8条自环边,则需要重新处理\n\n current.loopCfg = {\n position: loopPosition[k % 8],\n dist: Math.floor(k / 8) * 20 + 50\n };\n continue;\n }\n\n if (length_1 === 1 && singleEdgeType && current.source !== current.target) {\n current.type = singleEdgeType;\n continue;\n }\n\n current.type = multiEdgeType;\n var sign = (k % 2 === 0 ? 1 : -1) * (reverses[\"\".concat(current.source, \"|\").concat(current.target, \"|\").concat(k)] ? -1 : 1);\n\n if (length_1 % 2 === 1) {\n current.curveOffset = sign * Math.ceil(k / 2) * cod;\n } else {\n current.curveOffset = sign * (Math.floor(k / 2) * cod + offsetDiff);\n }\n }\n }\n\n return edges;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2Jhc2UuanM/NjYxOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5RDtBQUNKO0FBQzlDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGFBQWE7QUFDekIsWUFBWSxNQUFNO0FBQ2xCOztBQUVPO0FBQ1AsTUFBTSwwREFBTztBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU0sMkRBQVE7QUFDZDtBQUNBLEdBQUcsVUFBVSwyREFBUTtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1Asa0JBQWtCLGdFQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QixpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixjQUFjO0FBQ2pDOztBQUVBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZywgaXNOdW1iZXIsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IEc2R3JhcGhFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZS9iZWhhdmlvcic7XG5leHBvcnQgdmFyIHVuaXF1ZUlkID0gZnVuY3Rpb24gdW5pcXVlSWQodHlwZSkge1xuICByZXR1cm4gXCJcIi5jb25jYXQodHlwZSwgXCItXCIpLmNvbmNhdChNYXRoLnJhbmRvbSgpKS5jb25jYXQoRGF0ZS5ub3coKSk7XG59O1xuLyoqXG4gKiB0dXJuIHBhZGRpbmcgaW50byBbdG9wLCByaWdodCwgYm90dG9tLCByaWdodF1cbiAqIEBwYXJhbSAge051bWJlcnxBcnJheX0gcGFkZGluZyBpbnB1dCBwYWRkaW5nXG4gKiBAcmV0dXJuIHthcnJheX0gb3V0cHV0XG4gKi9cblxuZXhwb3J0IHZhciBmb3JtYXRQYWRkaW5nID0gZnVuY3Rpb24gZm9ybWF0UGFkZGluZyhwYWRkaW5nKSB7XG4gIGlmIChpc0FycmF5KHBhZGRpbmcpKSB7XG4gICAgc3dpdGNoIChwYWRkaW5nLmxlbmd0aCkge1xuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gcGFkZGluZztcblxuICAgICAgY2FzZSAzOlxuICAgICAgICBwYWRkaW5nLnB1c2gocGFkZGluZ1sxXSk7XG4gICAgICAgIHJldHVybiBwYWRkaW5nO1xuXG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBwYWRkaW5nLmNvbmNhdChwYWRkaW5nKTtcblxuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gW3BhZGRpbmdbMF0sIHBhZGRpbmdbMF0sIHBhZGRpbmdbMF0sIHBhZGRpbmdbMF1dO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWzAsIDAsIDAsIDBdO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc051bWJlcihwYWRkaW5nKSkge1xuICAgIHJldHVybiBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gIH0gZWxzZSBpZiAoaXNTdHJpbmcocGFkZGluZykpIHtcbiAgICB2YXIgaW50UGFkZGluZyA9IHBhcnNlSW50KHBhZGRpbmcsIDEwKTtcbiAgICByZXR1cm4gW2ludFBhZGRpbmcsIGludFBhZGRpbmcsIGludFBhZGRpbmcsIGludFBhZGRpbmddO1xuICB9XG5cbiAgcmV0dXJuIFswLCAwLCAwLCAwXTtcbn07XG4vKipcbiAqIGNsb25lIGV2ZW50XG4gKiBAcGFyYW0gZVxuICovXG5cbmV4cG9ydCB2YXIgY2xvbmVFdmVudCA9IGZ1bmN0aW9uIGNsb25lRXZlbnQoZSkge1xuICB2YXIgZXZlbnQgPSBuZXcgRzZHcmFwaEV2ZW50KGUudHlwZSwgZSk7XG4gIGV2ZW50LmNsaWVudFggPSBlLmNsaWVudFg7XG4gIGV2ZW50LmNsaWVudFkgPSBlLmNsaWVudFk7XG4gIGV2ZW50LnggPSBlLng7XG4gIGV2ZW50LnkgPSBlLnk7XG4gIGV2ZW50LnRhcmdldCA9IGUudGFyZ2V0O1xuICBldmVudC5jdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICBldmVudC5idWJibGVzID0gdHJ1ZTtcbiAgZXZlbnQuaXRlbSA9IGUuaXRlbTtcbiAgcmV0dXJuIGV2ZW50O1xufTtcbi8qKlxuICog5Yik5patIHZpZXdwb3J0IOaYr+WQpuaUueWPmO+8jOmAmui/h+WSjOWNleS9jeefqemYteWvueavlFxuICogQHBhcmFtIG1hdHJpeCBWaWV3cG9ydCDnmoQgTWF0cml4XG4gKi9cblxuZXhwb3J0IHZhciBpc1ZpZXdwb3J0Q2hhbmdlZCA9IGZ1bmN0aW9uIGlzVmlld3BvcnRDaGFuZ2VkKG1hdHJpeCkge1xuICAvLyBtYXRyaXgg5Li6IG51bGzvvIwg5YiZ6K+05piO5rKh5pyJ5Y+Y5YyWXG4gIGlmICghbWF0cml4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIE1BVFJJWF9MRU4gPSA5O1xuICB2YXIgT1JJR0lOX01BVFJJWCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IE1BVFJJWF9MRU47IGkrKykge1xuICAgIGlmIChtYXRyaXhbaV0gIT09IE9SSUdJTl9NQVRSSVhbaV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnQgdmFyIGlzTmFOID0gZnVuY3Rpb24gaXNOYU4oaW5wdXQpIHtcbiAgcmV0dXJuIE51bWJlci5pc05hTihOdW1iZXIoaW5wdXQpKTtcbn07XG4vKipcbiAqIOiuoeeul+S4gOe7hCBJdGVtIOeahCBCQm94XG4gKiBAcGFyYW0gaXRlbXMg6YCJ5Lit55qE5LiA57uESXRlbe+8jOWPr+S7peaYryBub2RlIOaIliBjb21ib1xuICovXG5cbmV4cG9ydCB2YXIgY2FsY3VsYXRpb25JdGVtc0JCb3ggPSBmdW5jdGlvbiBjYWxjdWxhdGlvbkl0ZW1zQkJveChpdGVtcykge1xuICB2YXIgbWlueCA9IEluZmluaXR5O1xuICB2YXIgbWF4eCA9IC1JbmZpbml0eTtcbiAgdmFyIG1pbnkgPSBJbmZpbml0eTtcbiAgdmFyIG1heHkgPSAtSW5maW5pdHk7IC8vIOiOt+WPluW3suiKgueCueeahOaJgOacieacgOWkp+acgOWwj3ggeeWAvFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlbWVudCA9IGl0ZW1zW2ldO1xuICAgIHZhciBiYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gICAgdmFyIG1pblggPSBiYm94Lm1pblgsXG4gICAgICAgIG1pblkgPSBiYm94Lm1pblksXG4gICAgICAgIG1heFggPSBiYm94Lm1heFgsXG4gICAgICAgIG1heFkgPSBiYm94Lm1heFk7XG5cbiAgICBpZiAobWluWCA8IG1pbngpIHtcbiAgICAgIG1pbnggPSBtaW5YO1xuICAgIH1cblxuICAgIGlmIChtaW5ZIDwgbWlueSkge1xuICAgICAgbWlueSA9IG1pblk7XG4gICAgfVxuXG4gICAgaWYgKG1heFggPiBtYXh4KSB7XG4gICAgICBtYXh4ID0gbWF4WDtcbiAgICB9XG5cbiAgICBpZiAobWF4WSA+IG1heHkpIHtcbiAgICAgIG1heHkgPSBtYXhZO1xuICAgIH1cbiAgfVxuXG4gIHZhciB4ID0gTWF0aC5mbG9vcihtaW54KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKG1pbnkpO1xuICB2YXIgd2lkdGggPSBNYXRoLmNlaWwobWF4eCkgLSBNYXRoLmZsb29yKG1pbngpO1xuICB2YXIgaGVpZ2h0ID0gTWF0aC5jZWlsKG1heHkpIC0gTWF0aC5mbG9vcihtaW55KTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4LFxuICAgIHk6IHksXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIG1pblg6IG1pbngsXG4gICAgbWluWTogbWlueSxcbiAgICBtYXhYOiBtYXh4LFxuICAgIG1heFk6IG1heHlcbiAgfTtcbn07XG4vKipcbiAqIOiLpSBlZGdlcyDkuK3lrZjlnKjkuKTnq6/ngrnnm7jlkIznmoTovrnvvIzkvb/nlKggcXVhZHJhdGljIOi+ueW5tuiHquWKqOiuoeeulyBjdXJ2ZU9mZnNldCDkvb/lroPku6zkuI3nm7jkupLph43lj6BcbiAqIOaWh+ahozogaHR0cHM6Ly9nNi5hbnR2LnZpc2lvbi9lbi9kb2NzL2FwaS9VdGlsXG4gKiBAcGFyYW0gZWRnZXMg6L655pWw5o2u6ZuG5ZCIXG4gKiBAcGFyYW0gb2Zmc2V0RGlmZiDnm7jpgrvkuKTovrnnmoQgb2Zmc2V0IOS5i+W3rlxuICogQHBhcmFtIG11bHRpRWRnZVR5cGVcbiAqIEBwYXJhbSBzaW5nbGVFZGdlVHlwZVxuICogQHBhcmFtIGxvb3BFZGdlVHlwZVxuICovXG5cbmV4cG9ydCB2YXIgcHJvY2Vzc1BhcmFsbGVsRWRnZXMgPSBmdW5jdGlvbiBwcm9jZXNzUGFyYWxsZWxFZGdlcyhlZGdlcywgb2Zmc2V0RGlmZiwgbXVsdGlFZGdlVHlwZSwgc2luZ2xlRWRnZVR5cGUsIGxvb3BFZGdlVHlwZSkge1xuICBpZiAob2Zmc2V0RGlmZiA9PT0gdm9pZCAwKSB7XG4gICAgb2Zmc2V0RGlmZiA9IDE1O1xuICB9XG5cbiAgaWYgKG11bHRpRWRnZVR5cGUgPT09IHZvaWQgMCkge1xuICAgIG11bHRpRWRnZVR5cGUgPSAncXVhZHJhdGljJztcbiAgfVxuXG4gIGlmIChzaW5nbGVFZGdlVHlwZSA9PT0gdm9pZCAwKSB7XG4gICAgc2luZ2xlRWRnZVR5cGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAobG9vcEVkZ2VUeXBlID09PSB2b2lkIDApIHtcbiAgICBsb29wRWRnZVR5cGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB2YXIgbGVuID0gZWRnZXMubGVuZ3RoO1xuICB2YXIgY29kID0gb2Zmc2V0RGlmZiAqIDI7XG4gIHZhciBsb29wUG9zaXRpb24gPSBbJ3RvcCcsICd0b3AtcmlnaHQnLCAncmlnaHQnLCAnYm90dG9tLXJpZ2h0JywgJ2JvdHRvbScsICdib3R0b20tbGVmdCcsICdsZWZ0JywgJ3RvcC1sZWZ0J107XG4gIHZhciBlZGdlTWFwID0ge307XG4gIHZhciB0YWdzID0gW107XG4gIHZhciByZXZlcnNlcyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHNvdXJjZVRhcmdldCA9IFwiXCIuY29uY2F0KHNvdXJjZSwgXCItXCIpLmNvbmNhdCh0YXJnZXQpO1xuICAgIGlmICh0YWdzW2ldKSBjb250aW51ZTtcblxuICAgIGlmICghZWRnZU1hcFtzb3VyY2VUYXJnZXRdKSB7XG4gICAgICBlZGdlTWFwW3NvdXJjZVRhcmdldF0gPSBbXTtcbiAgICB9XG5cbiAgICB0YWdzW2ldID0gdHJ1ZTtcbiAgICBlZGdlTWFwW3NvdXJjZVRhcmdldF0ucHVzaChlZGdlKTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSBjb250aW51ZTtcbiAgICAgIHZhciBzZWRnZSA9IGVkZ2VzW2pdO1xuICAgICAgdmFyIHNyYyA9IHNlZGdlLnNvdXJjZTtcbiAgICAgIHZhciBkc3QgPSBzZWRnZS50YXJnZXQ7IC8vIOS4pOS4quiKgueCueS5i+mXtOWFseWQjOeahOi+uVxuICAgICAgLy8g56ys5LiA5p2h55qEc291cmNlID0g56ys5LqM5p2h55qEdGFyZ2V0XG4gICAgICAvLyDnrKzkuIDmnaHnmoR0YXJnZXQgPSDnrKzkuozmnaHnmoRzb3VyY2VcblxuICAgICAgaWYgKCF0YWdzW2pdKSB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09IGRzdCAmJiB0YXJnZXQgPT09IHNyYykge1xuICAgICAgICAgIGVkZ2VNYXBbc291cmNlVGFyZ2V0XS5wdXNoKHNlZGdlKTtcbiAgICAgICAgICB0YWdzW2pdID0gdHJ1ZTtcbiAgICAgICAgICByZXZlcnNlc1tcIlwiLmNvbmNhdChzcmMsIFwifFwiKS5jb25jYXQoZHN0LCBcInxcIikuY29uY2F0KGVkZ2VNYXBbc291cmNlVGFyZ2V0XS5sZW5ndGggLSAxKV0gPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZSA9PT0gc3JjICYmIHRhcmdldCA9PT0gZHN0KSB7XG4gICAgICAgICAgZWRnZU1hcFtzb3VyY2VUYXJnZXRdLnB1c2goc2VkZ2UpO1xuICAgICAgICAgIHRhZ3Nbal0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIga2V5IGluIGVkZ2VNYXApIHtcbiAgICB2YXIgYXJjRWRnZXMgPSBlZGdlTWFwW2tleV07XG4gICAgdmFyIGxlbmd0aF8xID0gYXJjRWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGhfMTsgaysrKSB7XG4gICAgICB2YXIgY3VycmVudCA9IGFyY0VkZ2VzW2tdO1xuXG4gICAgICBpZiAoY3VycmVudC5zb3VyY2UgPT09IGN1cnJlbnQudGFyZ2V0KSB7XG4gICAgICAgIGlmIChsb29wRWRnZVR5cGUpIGN1cnJlbnQudHlwZSA9IGxvb3BFZGdlVHlwZTsgLy8g6LaF6L+HOOadoeiHqueOr+i+ue+8jOWImemcgOimgemHjeaWsOWkhOeQhlxuXG4gICAgICAgIGN1cnJlbnQubG9vcENmZyA9IHtcbiAgICAgICAgICBwb3NpdGlvbjogbG9vcFBvc2l0aW9uW2sgJSA4XSxcbiAgICAgICAgICBkaXN0OiBNYXRoLmZsb29yKGsgLyA4KSAqIDIwICsgNTBcbiAgICAgICAgfTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChsZW5ndGhfMSA9PT0gMSAmJiBzaW5nbGVFZGdlVHlwZSAmJiBjdXJyZW50LnNvdXJjZSAhPT0gY3VycmVudC50YXJnZXQpIHtcbiAgICAgICAgY3VycmVudC50eXBlID0gc2luZ2xlRWRnZVR5cGU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50LnR5cGUgPSBtdWx0aUVkZ2VUeXBlO1xuICAgICAgdmFyIHNpZ24gPSAoayAlIDIgPT09IDAgPyAxIDogLTEpICogKHJldmVyc2VzW1wiXCIuY29uY2F0KGN1cnJlbnQuc291cmNlLCBcInxcIikuY29uY2F0KGN1cnJlbnQudGFyZ2V0LCBcInxcIikuY29uY2F0KGspXSA/IC0xIDogMSk7XG5cbiAgICAgIGlmIChsZW5ndGhfMSAlIDIgPT09IDEpIHtcbiAgICAgICAgY3VycmVudC5jdXJ2ZU9mZnNldCA9IHNpZ24gKiBNYXRoLmNlaWwoayAvIDIpICogY29kO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudC5jdXJ2ZU9mZnNldCA9IHNpZ24gKiAoTWF0aC5mbG9vcihrIC8gMikgKiBjb2QgKyBvZmZzZXREaWZmKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZWRnZXM7XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/base.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/util/color.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g6-core/es/util/color.js ***! \*****************************************************/ /*! exports provided: defaultSubjectColors */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultSubjectColors\", function() { return defaultSubjectColors; });\nvar defaultSubjectColors = ['#5F95FF', '#61DDAA', '#65789B', '#F6BD16', '#7262FD', '#78D3F8', '#9661BC', '#F6903D', '#008685', '#F08BB4'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2NvbG9yLmpzPzc1ODkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWNvcmUvZXMvdXRpbC9jb2xvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgZGVmYXVsdFN1YmplY3RDb2xvcnMgPSBbJyM1Rjk1RkYnLCAnIzYxRERBQScsICcjNjU3ODlCJywgJyNGNkJEMTYnLCAnIzcyNjJGRCcsICcjNzhEM0Y4JywgJyM5NjYxQkMnLCAnI0Y2OTAzRCcsICcjMDA4Njg1JywgJyNGMDhCQjQnXTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/color.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/util/graphic.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g6-core/es/util/graphic.js ***! \*******************************************************/ /*! exports provided: getBBox, getLoopCfgs, getLabelPosition, traverseTree, traverseTreeUp, getLetterWidth, getTextSize, plainCombosToTrees, reconstructTree, getComboBBox, shouldRefreshEdge, cloneBesidesImg */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBox\", function() { return getBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLoopCfgs\", function() { return getLoopCfgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLabelPosition\", function() { return getLabelPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverseTree\", function() { return traverseTree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverseTreeUp\", function() { return traverseTreeUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLetterWidth\", function() { return getLetterWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextSize\", function() { return getTextSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"plainCombosToTrees\", function() { return plainCombosToTrees; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reconstructTree\", function() { return reconstructTree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getComboBBox\", function() { return getComboBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shouldRefreshEdge\", function() { return shouldRefreshEdge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneBesidesImg\", function() { return cloneBesidesImg; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-core/es/global.js\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _letterAspectRatio__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./letterAspectRatio */ \"./node_modules/@antv/g6-core/es/util/letterAspectRatio.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n\n\n\n\nvar PI = Math.PI,\n sin = Math.sin,\n cos = Math.cos; // 一共支持8个方向的自环,每个环占的角度是45度,在计算时再二分,为22.5度\n\nvar SELF_LINK_SIN = sin(PI / 8);\nvar SELF_LINK_COS = cos(PI / 8);\nvar getBBox = function getBBox(element, group) {\n var bbox = element.getBBox();\n var leftTop = {\n x: bbox.minX,\n y: bbox.minY\n };\n var rightBottom = {\n x: bbox.maxX,\n y: bbox.maxY\n }; // 根据父元素变换矩阵\n\n if (group) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n leftTop = Object(_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])(leftTop, matrix);\n rightBottom = Object(_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])(rightBottom, matrix);\n }\n\n var lx = leftTop.x,\n ly = leftTop.y;\n var rx = rightBottom.x,\n ry = rightBottom.y;\n return {\n x: lx,\n y: ly,\n minX: lx,\n minY: ly,\n maxX: rx,\n maxY: ry,\n width: rx - lx,\n height: ry - ly\n };\n};\n/**\n * get loop edge config\n * @param cfg edge config\n */\n\nvar getLoopCfgs = function getLoopCfgs(cfg) {\n var item = cfg.sourceNode || cfg.targetNode;\n var container = item.get('group');\n var containerMatrix = container.getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var keyShape = item.getKeyShape();\n var bbox = keyShape.getBBox();\n var loopCfg = cfg.loopCfg || {}; // 距离keyShape边的最高距离\n\n var dist = loopCfg.dist || Math.max(bbox.width, bbox.height) * 2; // 自环边与keyShape的相对位置关系\n\n var position = loopCfg.position || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultLoopPosition; // 中心取group上真实位置\n\n var center = [containerMatrix[6], containerMatrix[7]];\n var startPoint = [cfg.startPoint.x, cfg.startPoint.y];\n var endPoint = [cfg.endPoint.x, cfg.endPoint.y];\n var rstart = bbox.height / 2;\n var rend = bbox.height / 2;\n var sinDeltaStart = rstart * SELF_LINK_SIN;\n var cosDeltaStart = rstart * SELF_LINK_COS;\n var sinDeltaEnd = rend * SELF_LINK_SIN;\n var cosDeltaEnd = rend * SELF_LINK_COS; // 如果定义了锚点的,直接用锚点坐标,否则,根据自环的 cfg 计算\n\n if (startPoint[0] === endPoint[0] && startPoint[1] === endPoint[1]) {\n switch (position) {\n case 'top':\n startPoint = [center[0] - sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] - cosDeltaEnd];\n break;\n\n case 'top-right':\n rstart = bbox.height / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + cosDeltaEnd, center[1] - sinDeltaEnd];\n break;\n\n case 'right':\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + cosDeltaStart, center[1] - sinDeltaStart];\n endPoint = [center[0] + cosDeltaEnd, center[1] + sinDeltaEnd];\n break;\n\n case 'bottom-right':\n rstart = bbox.width / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + cosDeltaStart, center[1] + sinDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] + cosDeltaEnd];\n break;\n\n case 'bottom':\n rstart = bbox.height / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + sinDeltaStart, center[1] + cosDeltaStart];\n endPoint = [center[0] - sinDeltaEnd, center[1] + cosDeltaEnd];\n break;\n\n case 'bottom-left':\n rstart = bbox.height / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - sinDeltaStart, center[1] + cosDeltaStart];\n endPoint = [center[0] - cosDeltaEnd, center[1] + sinDeltaEnd];\n break;\n\n case 'left':\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - cosDeltaStart, center[1] + sinDeltaStart];\n endPoint = [center[0] - cosDeltaEnd, center[1] - sinDeltaEnd];\n break;\n\n case 'top-left':\n rstart = bbox.width / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - cosDeltaStart, center[1] - sinDeltaStart];\n endPoint = [center[0] - sinDeltaEnd, center[1] - cosDeltaEnd];\n break;\n\n default:\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] - cosDeltaEnd];\n } // 如果逆时针画,交换起点和终点\n\n\n if (loopCfg.clockwise === false) {\n var swap = [startPoint[0], startPoint[1]];\n startPoint = [endPoint[0], endPoint[1]];\n endPoint = [swap[0], swap[1]];\n }\n }\n\n var startVec = [startPoint[0] - center[0], startPoint[1] - center[1]];\n var scaleRateStart = (rstart + dist) / rstart;\n var scaleRateEnd = (rend + dist) / rend;\n\n if (loopCfg.clockwise === false) {\n scaleRateStart = (rend + dist) / rend;\n scaleRateEnd = (rstart + dist) / rstart;\n }\n\n var startExtendVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__[\"vec2\"].scale([0, 0], startVec, scaleRateStart);\n var controlPoint1 = [center[0] + startExtendVec[0], center[1] + startExtendVec[1]];\n var endVec = [endPoint[0] - center[0], endPoint[1] - center[1]];\n var endExtendVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__[\"vec2\"].scale([0, 0], endVec, scaleRateEnd);\n var controlPoint2 = [center[0] + endExtendVec[0], center[1] + endExtendVec[1]];\n cfg.startPoint = {\n x: startPoint[0],\n y: startPoint[1]\n };\n cfg.endPoint = {\n x: endPoint[0],\n y: endPoint[1]\n };\n cfg.controlPoints = [{\n x: controlPoint1[0],\n y: controlPoint1[1]\n }, {\n x: controlPoint2[0],\n y: controlPoint2[1]\n }];\n return cfg;\n};\n/**\n * 根据 label 所在线条的位置百分比,计算 label 坐标\n * @param {object} pathShape G 的 path 实例,一般是 Edge 实例的 keyShape\n * @param {number} percent 范围 0 - 1 的线条百分比\n * @param {number} refX x 轴正方向为基准的 label 偏移\n * @param {number} refY y 轴正方向为基准的 label 偏移\n * @param {boolean} rotate 是否根据线条斜率旋转文本\n * @return {object} 文本的 x, y, 文本的旋转角度\n */\n\nvar getLabelPosition = function getLabelPosition(pathShape, percent, refX, refY, rotate) {\n var TAN_OFFSET = 0.0001;\n var vector = [];\n var point = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent);\n\n if (!point) {\n return {\n x: 0,\n y: 0,\n angle: 0\n };\n } // 头尾最可能,放在最前面,使用 g path 上封装的方法\n\n\n if (percent < TAN_OFFSET) {\n vector = pathShape.getStartTangent().reverse();\n } else if (percent > 1 - TAN_OFFSET) {\n vector = pathShape.getEndTangent();\n } else {\n // 否则取指定位置的点,与少量偏移的点,做微分向量\n var offsetPoint = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent + TAN_OFFSET);\n vector.push([point.x, point.y]);\n vector.push([offsetPoint.x, offsetPoint.y]);\n }\n\n var rad = Math.atan2(vector[1][1] - vector[0][1], vector[1][0] - vector[0][0]);\n\n if (rad < 0) {\n rad += PI * 2;\n }\n\n if (refX) {\n point.x += cos(rad) * refX;\n point.y += sin(rad) * refX;\n }\n\n if (refY) {\n // 默认方向是 x 轴正方向,法线是 求出角度 - 90°\n var normal = rad - PI / 2; // 若法线角度在 y 轴负方向,切到正方向,保证 refY 相对于 y 轴正方向\n\n if (rad > 1 / 2 * PI && rad < 3 * 1 / 2 * PI) {\n normal -= PI;\n }\n\n point.x += cos(normal) * refY;\n point.y += sin(normal) * refY;\n }\n\n var result = {\n x: point.x,\n y: point.y,\n angle: rad\n };\n\n if (rotate) {\n if (rad > 0.5 * PI && rad < 1.5 * PI) {\n rad -= PI;\n }\n\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n rotate: rad\n }, result);\n }\n\n return result;\n};\n/**\n * depth first traverse, from root to leaves, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\nvar traverse = function traverse(data, fn) {\n if (fn(data) === false) {\n return false;\n }\n\n if (data && data.children) {\n for (var i = data.children.length - 1; i >= 0; i--) {\n if (!traverse(data.children[i], fn)) return false;\n }\n }\n\n return true;\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\n\nvar traverseUp = function traverseUp(data, fn) {\n if (data && data.children) {\n for (var i = data.children.length - 1; i >= 0; i--) {\n if (!traverseUp(data.children[i], fn)) return;\n }\n }\n\n if (fn(data) === false) {\n return false;\n }\n\n return true;\n};\n/**\n * depth first traverse, from root to leaves, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\n\nvar traverseTree = function traverseTree(data, fn) {\n if (typeof fn !== 'function') {\n return;\n }\n\n traverse(data, fn);\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\nvar traverseTreeUp = function traverseTreeUp(data, fn) {\n if (typeof fn !== 'function') {\n return;\n }\n\n traverseUp(data, fn);\n};\n/**\n *\n * @param letter the letter\n * @param fontSize\n * @return the letter's width\n */\n\nvar getLetterWidth = function getLetterWidth(letter, fontSize) {\n return fontSize * (_letterAspectRatio__WEBPACK_IMPORTED_MODULE_4__[\"default\"][letter] || 1);\n};\n/**\n *\n * @param text the text\n * @param fontSize\n * @return the text's size\n */\n\nvar getTextSize = function getTextSize(text, fontSize) {\n var width = 0;\n var pattern = new RegExp(\"[\\u4E00-\\u9FA5]+\");\n text.split('').forEach(function (letter) {\n if (pattern.test(letter)) {\n // 中文字符\n width += fontSize;\n } else {\n width += getLetterWidth(letter, fontSize);\n }\n });\n return [width, fontSize];\n};\n/**\n * construct the trees from combos data\n * @param array the combos array\n * @param nodes the nodes array\n * @return the tree\n */\n\nvar plainCombosToTrees = function plainCombosToTrees(array, nodes) {\n var result = [];\n var addedMap = {};\n var modelMap = {};\n array.forEach(function (d) {\n modelMap[d.id] = d;\n });\n array.forEach(function (d, i) {\n var cd = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(d);\n cd.itemType = 'combo';\n cd.children = undefined;\n\n if (cd.parentId === cd.id) {\n console.warn(\"The parentId for combo \".concat(cd.id, \" can not be the same as the combo's id\"));\n delete cd.parentId;\n } else if (cd.parentId && !modelMap[cd.parentId]) {\n console.warn(\"The parent combo for combo \".concat(cd.id, \" does not exist!\"));\n delete cd.parentId;\n }\n\n var mappedObj = addedMap[cd.id];\n\n if (mappedObj) {\n cd.children = mappedObj.children;\n addedMap[cd.id] = cd;\n mappedObj = cd;\n\n if (!mappedObj.parentId) {\n result.push(mappedObj);\n return;\n }\n\n var mappedParent = addedMap[mappedObj.parentId];\n\n if (mappedParent) {\n if (mappedParent.children) mappedParent.children.push(cd);else mappedParent.children = [cd];\n } else {\n var parent_1 = {\n id: mappedObj.parentId,\n children: [mappedObj]\n };\n addedMap[mappedObj.parentId] = parent_1;\n addedMap[cd.id] = cd;\n }\n\n return;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isString\"])(d.parentId)) {\n var parent_2 = addedMap[d.parentId];\n\n if (parent_2) {\n if (parent_2.children) parent_2.children.push(cd);else parent_2.children = [cd];\n addedMap[cd.id] = cd;\n } else {\n var pa = {\n id: d.parentId,\n children: [cd]\n };\n addedMap[pa.id] = pa;\n addedMap[cd.id] = cd;\n }\n } else {\n result.push(cd);\n addedMap[cd.id] = cd;\n }\n }); // proccess the nodes\n\n var nodeMap = {};\n (nodes || []).forEach(function (node) {\n nodeMap[node.id] = node;\n var combo = addedMap[node.comboId];\n\n if (combo) {\n var cnode = {\n id: node.id,\n comboId: node.comboId\n };\n if (combo.children) combo.children.push(cnode);else combo.children = [cnode];\n cnode.itemType = 'node';\n addedMap[node.id] = cnode;\n }\n }); // assign the depth for each element\n\n var maxDepth = 0;\n result.forEach(function (tree) {\n tree.depth = maxDepth + 10;\n traverse(tree, function (child) {\n var parent;\n var itemType = addedMap[child.id].itemType;\n\n if (itemType === 'node') {\n parent = addedMap[child.comboId];\n } else {\n parent = addedMap[child.parentId];\n }\n\n if (parent) {\n if (itemType === 'node') child.depth = maxDepth + 1;else child.depth = maxDepth + 10;\n } else {\n child.depth = maxDepth + 10;\n }\n\n if (maxDepth < child.depth) maxDepth = child.depth;\n var oriNodeModel = nodeMap[child.id];\n\n if (oriNodeModel) {\n oriNodeModel.depth = child.depth;\n }\n\n return true;\n });\n });\n return result;\n};\nvar reconstructTree = function reconstructTree(trees, subtreeId, newParentId) {\n var brothers = trees;\n var subtree;\n var comboChildsMap = {\n root: {\n children: trees\n }\n };\n var foundSubTree = false;\n var oldParentId = 'root';\n (trees || []).forEach(function (tree) {\n if (foundSubTree) return;\n\n if (tree.id === subtreeId) {\n subtree = tree;\n\n if (tree.itemType === 'combo') {\n subtree.parentId = newParentId;\n } else {\n subtree.comboId = newParentId;\n }\n\n foundSubTree = true;\n return;\n }\n\n traverseTree(tree, function (child) {\n comboChildsMap[child.id] = {\n children: child.children\n }; // store the old parent id to delete the subtree from the old parent's children in next recursion\n\n brothers = comboChildsMap[child.parentId || child.comboId || 'root'].children;\n\n if (child && (child.removed || subtreeId === child.id) && brothers) {\n oldParentId = child.parentId || child.comboId || 'root';\n subtree = child; // re-assign the parentId or comboId for the moved subtree\n\n if (child.itemType === 'combo') {\n subtree.parentId = newParentId;\n } else {\n subtree.comboId = newParentId;\n }\n\n foundSubTree = true;\n return false;\n }\n\n return true;\n });\n });\n brothers = comboChildsMap[oldParentId].children;\n var index = brothers ? brothers.indexOf(subtree) : -1;\n if (index > -1) brothers.splice(index, 1); // 如果遍历完整棵树还没有找到,说明之前就不在树中\n\n if (!foundSubTree) {\n subtree = {\n id: subtreeId,\n itemType: 'node',\n comboId: newParentId\n };\n comboChildsMap[subtreeId] = {\n children: undefined\n };\n } // append to new parent\n\n\n if (subtreeId) {\n var found_1 = false; // newParentId is undefined means the subtree will have no parent\n\n if (newParentId) {\n var newParentDepth_1 = 0;\n (trees || []).forEach(function (tree) {\n if (found_1) return; // terminate\n\n traverseTree(tree, function (child) {\n // append subtree to the new parent ans assign the depth to the subtree\n if (newParentId === child.id) {\n found_1 = true;\n if (child.children) child.children.push(subtree);else child.children = [subtree];\n newParentDepth_1 = child.depth;\n if (subtree.itemType === 'node') subtree.depth = newParentDepth_1 + 2;else subtree.depth = newParentDepth_1 + 1;\n return false; // terminate\n }\n\n return true;\n });\n });\n } else if ((!newParentId || !found_1) && subtree.itemType !== 'node') {\n // if the newParentId is undefined or it is not found in the tree, add the subTree to the root\n trees.push(subtree);\n } // update the depth of the subtree and its children from the subtree\n\n\n var currentDepth_1 = subtree.depth;\n traverseTree(subtree, function (child) {\n if (child.itemType === 'node') currentDepth_1 += 2;else currentDepth_1 += 1;\n child.depth = currentDepth_1;\n return true;\n });\n }\n\n return trees;\n};\nvar getComboBBox = function getComboBBox(children, graph, combo) {\n var comboBBox = {\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity,\n x: undefined,\n y: undefined,\n width: undefined,\n height: undefined,\n centerX: undefined,\n centerY: undefined\n };\n\n if (!children || children.length === 0) {\n var comboModel = combo === null || combo === void 0 ? void 0 : combo.getModel();\n\n var _a = comboModel || {},\n x = _a.x,\n y = _a.y;\n\n return {\n minX: x,\n minY: y,\n maxX: x,\n maxY: y,\n x: x,\n y: y,\n width: undefined,\n height: undefined\n };\n }\n\n children.forEach(function (child) {\n var childItem = graph.findById(child.id);\n if (!childItem || !childItem.isVisible()) return; // ignore hidden children\n\n childItem.set('bboxCanvasCache', undefined);\n var childBBox = childItem.getCanvasBBox();\n if (childBBox.x && comboBBox.minX > childBBox.minX) comboBBox.minX = childBBox.minX;\n if (childBBox.y && comboBBox.minY > childBBox.minY) comboBBox.minY = childBBox.minY;\n if (childBBox.x && comboBBox.maxX < childBBox.maxX) comboBBox.maxX = childBBox.maxX;\n if (childBBox.y && comboBBox.maxY < childBBox.maxY) comboBBox.maxY = childBBox.maxY;\n });\n comboBBox.x = (comboBBox.minX + comboBBox.maxX) / 2;\n comboBBox.y = (comboBBox.minY + comboBBox.maxY) / 2;\n comboBBox.width = comboBBox.maxX - comboBBox.minX;\n comboBBox.height = comboBBox.maxY - comboBBox.minY;\n comboBBox.centerX = (comboBBox.minX + comboBBox.maxX) / 2;\n comboBBox.centerY = (comboBBox.minY + comboBBox.maxY) / 2;\n Object.keys(comboBBox).forEach(function (key) {\n if (comboBBox[key] === Infinity || comboBBox[key] === -Infinity) {\n comboBBox[key] = undefined;\n }\n });\n return comboBBox;\n};\nvar shouldRefreshEdge = function shouldRefreshEdge(cfg) {\n var refreshEdge = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.x) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size;\n if (cfg.style) refreshEdge = refreshEdge || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.r) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.width) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.height) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.rx) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.ry);\n return refreshEdge;\n};\nvar cloneBesidesImg = function cloneBesidesImg(obj) {\n var clonedObj = {};\n Object.keys(obj).forEach(function (key1) {\n var obj2 = obj[key1];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isObject\"])(obj2) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isArray\"])(obj2)) {\n var clonedObj2_1 = {};\n Object.keys(obj2).forEach(function (key2) {\n var v = obj2[key2];\n if (key2 === 'img' && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isString\"])(v)) return;\n clonedObj2_1[key2] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(v);\n });\n clonedObj[key1] = clonedObj2_1;\n } else {\n clonedObj[key1] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(obj2);\n }\n });\n return clonedObj;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2dyYXBoaWMuanM/Mjk3NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNRO0FBQ1Y7QUFDTTtBQUNlO0FBQ3NCO0FBQzFFO0FBQ0E7QUFDQSxtQkFBbUI7O0FBRW5CO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGNBQWMseURBQVc7QUFDekIsa0JBQWtCLHlEQUFXO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQyxtRUFBbUU7O0FBRW5FLHFDQUFxQywrQ0FBTSxxQkFBcUI7O0FBRWhFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixzREFBSTtBQUMzQjtBQUNBO0FBQ0EscUJBQXFCLHNEQUFJO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxzREFBUTtBQUNuQjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsUUFBUTtBQUNsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsMENBQTBDLFFBQVE7QUFDbEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AscUJBQXFCLDBEQUFpQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsYUFBYSx3REFBSztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrRUFBa0U7QUFDbEUsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjs7QUFFQTtBQUNBLDBEQUEwRDtBQUMxRDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLDREQUE0RDtBQUM1RCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTs7QUFFUjs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBLGtGQUFrRjtBQUNsRix5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDZCQUE2QjtBQUM3QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDTztBQUNQLG9CQUFvQiwyREFBUSxXQUFXLDJEQUFRO0FBQy9DLDhDQUE4QywyREFBUSxpQkFBaUIsMkRBQVEscUJBQXFCLDJEQUFRLHNCQUFzQiwyREFBUSxrQkFBa0IsMkRBQVE7QUFDcEs7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVEsV0FBVywwREFBTztBQUNsQztBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkRBQVE7QUFDdkMsNkJBQTZCLHdEQUFLO0FBQ2xDLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCx3QkFBd0Isd0RBQUs7QUFDN0I7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1jb3JlL2VzL3V0aWwvZ3JhcGhpYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyB2ZWMyIH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xuaW1wb3J0IHsgYXBwbHlNYXRyaXggfSBmcm9tICcuL21hdGgnO1xuaW1wb3J0IGxldHRlckFzcGVjdFJhdGlvIGZyb20gJy4vbGV0dGVyQXNwZWN0UmF0aW8nO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGNsb25lLCBpc051bWJlciwgaXNPYmplY3QsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBQSSA9IE1hdGguUEksXG4gICAgc2luID0gTWF0aC5zaW4sXG4gICAgY29zID0gTWF0aC5jb3M7IC8vIOS4gOWFseaUr+aMgTjkuKrmlrnlkJHnmoToh6rnjq/vvIzmr4/kuKrnjq/ljaDnmoTop5LluqbmmK80NeW6pu+8jOWcqOiuoeeul+aXtuWGjeS6jOWIhu+8jOS4ujIyLjXluqZcblxudmFyIFNFTEZfTElOS19TSU4gPSBzaW4oUEkgLyA4KTtcbnZhciBTRUxGX0xJTktfQ09TID0gY29zKFBJIC8gOCk7XG5leHBvcnQgdmFyIGdldEJCb3ggPSBmdW5jdGlvbiBnZXRCQm94KGVsZW1lbnQsIGdyb3VwKSB7XG4gIHZhciBiYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gIHZhciBsZWZ0VG9wID0ge1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfTtcbiAgdmFyIHJpZ2h0Qm90dG9tID0ge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfTsgLy8g5qC55o2u54i25YWD57Sg5Y+Y5o2i55+p6Zi1XG5cbiAgaWYgKGdyb3VwKSB7XG4gICAgdmFyIG1hdHJpeCA9IGdyb3VwLmdldE1hdHJpeCgpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBsZWZ0VG9wID0gYXBwbHlNYXRyaXgobGVmdFRvcCwgbWF0cml4KTtcbiAgICByaWdodEJvdHRvbSA9IGFwcGx5TWF0cml4KHJpZ2h0Qm90dG9tLCBtYXRyaXgpO1xuICB9XG5cbiAgdmFyIGx4ID0gbGVmdFRvcC54LFxuICAgICAgbHkgPSBsZWZ0VG9wLnk7XG4gIHZhciByeCA9IHJpZ2h0Qm90dG9tLngsXG4gICAgICByeSA9IHJpZ2h0Qm90dG9tLnk7XG4gIHJldHVybiB7XG4gICAgeDogbHgsXG4gICAgeTogbHksXG4gICAgbWluWDogbHgsXG4gICAgbWluWTogbHksXG4gICAgbWF4WDogcngsXG4gICAgbWF4WTogcnksXG4gICAgd2lkdGg6IHJ4IC0gbHgsXG4gICAgaGVpZ2h0OiByeSAtIGx5XG4gIH07XG59O1xuLyoqXG4gKiBnZXQgbG9vcCBlZGdlIGNvbmZpZ1xuICogQHBhcmFtIGNmZyBlZGdlIGNvbmZpZ1xuICovXG5cbmV4cG9ydCB2YXIgZ2V0TG9vcENmZ3MgPSBmdW5jdGlvbiBnZXRMb29wQ2ZncyhjZmcpIHtcbiAgdmFyIGl0ZW0gPSBjZmcuc291cmNlTm9kZSB8fCBjZmcudGFyZ2V0Tm9kZTtcbiAgdmFyIGNvbnRhaW5lciA9IGl0ZW0uZ2V0KCdncm91cCcpO1xuICB2YXIgY29udGFpbmVyTWF0cml4ID0gY29udGFpbmVyLmdldE1hdHJpeCgpO1xuICBpZiAoIWNvbnRhaW5lck1hdHJpeCkgY29udGFpbmVyTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldEtleVNoYXBlKCk7XG4gIHZhciBiYm94ID0ga2V5U2hhcGUuZ2V0QkJveCgpO1xuICB2YXIgbG9vcENmZyA9IGNmZy5sb29wQ2ZnIHx8IHt9OyAvLyDot53nprtrZXlTaGFwZei+ueeahOacgOmrmOi3neemu1xuXG4gIHZhciBkaXN0ID0gbG9vcENmZy5kaXN0IHx8IE1hdGgubWF4KGJib3gud2lkdGgsIGJib3guaGVpZ2h0KSAqIDI7IC8vIOiHqueOr+i+ueS4jmtleVNoYXBl55qE55u45a+55L2N572u5YWz57O7XG5cbiAgdmFyIHBvc2l0aW9uID0gbG9vcENmZy5wb3NpdGlvbiB8fCBHbG9iYWwuZGVmYXVsdExvb3BQb3NpdGlvbjsgLy8g5Lit5b+D5Y+WZ3JvdXDkuIrnnJ/lrp7kvY3nva5cblxuICB2YXIgY2VudGVyID0gW2NvbnRhaW5lck1hdHJpeFs2XSwgY29udGFpbmVyTWF0cml4WzddXTtcbiAgdmFyIHN0YXJ0UG9pbnQgPSBbY2ZnLnN0YXJ0UG9pbnQueCwgY2ZnLnN0YXJ0UG9pbnQueV07XG4gIHZhciBlbmRQb2ludCA9IFtjZmcuZW5kUG9pbnQueCwgY2ZnLmVuZFBvaW50LnldO1xuICB2YXIgcnN0YXJ0ID0gYmJveC5oZWlnaHQgLyAyO1xuICB2YXIgcmVuZCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgdmFyIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICB2YXIgY29zRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19DT1M7XG4gIHZhciBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICB2YXIgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUzsgLy8g5aaC5p6c5a6a5LmJ5LqG6ZSa54K555qE77yM55u05o6l55So6ZSa54K55Z2Q5qCH77yM5ZCm5YiZ77yM5qC55o2u6Ieq546v55qEIGNmZyDorqHnrpdcblxuICBpZiAoc3RhcnRQb2ludFswXSA9PT0gZW5kUG9pbnRbMF0gJiYgc3RhcnRQb2ludFsxXSA9PT0gZW5kUG9pbnRbMV0pIHtcbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSAtIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSAtIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gKyBzaW5EZWx0YUVuZCwgY2VudGVyWzFdIC0gY29zRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndG9wLXJpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC5oZWlnaHQgLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gKyBzaW5EZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBjb3NEZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgY29zRGVsdGFFbmQsIGNlbnRlclsxXSAtIHNpbkRlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LndpZHRoIC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSArIGNvc0RlbHRhU3RhcnQsIGNlbnRlclsxXSAtIHNpbkRlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gKyBjb3NEZWx0YUVuZCwgY2VudGVyWzFdICsgc2luRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gKyBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gKyBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgc2luRGVsdGFFbmQsIGNlbnRlclsxXSArIGNvc0RlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHJzdGFydCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgICAgICAgcmVuZCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSArIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSArIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gLSBzaW5EZWx0YUVuZCwgY2VudGVyWzFdICsgY29zRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tLWxlZnQnOlxuICAgICAgICByc3RhcnQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LndpZHRoIC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSAtIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSArIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YUVuZCwgY2VudGVyWzFdICsgc2luRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHJzdGFydCA9IGJib3gud2lkdGggLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gKyBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdIC0gY29zRGVsdGFFbmQsIGNlbnRlclsxXSAtIHNpbkRlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RvcC1sZWZ0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdIC0gc2luRGVsdGFFbmQsIGNlbnRlclsxXSAtIGNvc0RlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJzdGFydCA9IGJib3gud2lkdGggLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBzaW5EZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBjb3NEZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgc2luRGVsdGFFbmQsIGNlbnRlclsxXSAtIGNvc0RlbHRhRW5kXTtcbiAgICB9IC8vIOWmguaenOmAhuaXtumSiOeUu++8jOS6pOaNoui1t+eCueWSjOe7iOeCuVxuXG5cbiAgICBpZiAobG9vcENmZy5jbG9ja3dpc2UgPT09IGZhbHNlKSB7XG4gICAgICB2YXIgc3dhcCA9IFtzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdXTtcbiAgICAgIHN0YXJ0UG9pbnQgPSBbZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdXTtcbiAgICAgIGVuZFBvaW50ID0gW3N3YXBbMF0sIHN3YXBbMV1dO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzdGFydFZlYyA9IFtzdGFydFBvaW50WzBdIC0gY2VudGVyWzBdLCBzdGFydFBvaW50WzFdIC0gY2VudGVyWzFdXTtcbiAgdmFyIHNjYWxlUmF0ZVN0YXJ0ID0gKHJzdGFydCArIGRpc3QpIC8gcnN0YXJ0O1xuICB2YXIgc2NhbGVSYXRlRW5kID0gKHJlbmQgKyBkaXN0KSAvIHJlbmQ7XG5cbiAgaWYgKGxvb3BDZmcuY2xvY2t3aXNlID09PSBmYWxzZSkge1xuICAgIHNjYWxlUmF0ZVN0YXJ0ID0gKHJlbmQgKyBkaXN0KSAvIHJlbmQ7XG4gICAgc2NhbGVSYXRlRW5kID0gKHJzdGFydCArIGRpc3QpIC8gcnN0YXJ0O1xuICB9XG5cbiAgdmFyIHN0YXJ0RXh0ZW5kVmVjID0gdmVjMi5zY2FsZShbMCwgMF0sIHN0YXJ0VmVjLCBzY2FsZVJhdGVTdGFydCk7XG4gIHZhciBjb250cm9sUG9pbnQxID0gW2NlbnRlclswXSArIHN0YXJ0RXh0ZW5kVmVjWzBdLCBjZW50ZXJbMV0gKyBzdGFydEV4dGVuZFZlY1sxXV07XG4gIHZhciBlbmRWZWMgPSBbZW5kUG9pbnRbMF0gLSBjZW50ZXJbMF0sIGVuZFBvaW50WzFdIC0gY2VudGVyWzFdXTtcbiAgdmFyIGVuZEV4dGVuZFZlYyA9IHZlYzIuc2NhbGUoWzAsIDBdLCBlbmRWZWMsIHNjYWxlUmF0ZUVuZCk7XG4gIHZhciBjb250cm9sUG9pbnQyID0gW2NlbnRlclswXSArIGVuZEV4dGVuZFZlY1swXSwgY2VudGVyWzFdICsgZW5kRXh0ZW5kVmVjWzFdXTtcbiAgY2ZnLnN0YXJ0UG9pbnQgPSB7XG4gICAgeDogc3RhcnRQb2ludFswXSxcbiAgICB5OiBzdGFydFBvaW50WzFdXG4gIH07XG4gIGNmZy5lbmRQb2ludCA9IHtcbiAgICB4OiBlbmRQb2ludFswXSxcbiAgICB5OiBlbmRQb2ludFsxXVxuICB9O1xuICBjZmcuY29udHJvbFBvaW50cyA9IFt7XG4gICAgeDogY29udHJvbFBvaW50MVswXSxcbiAgICB5OiBjb250cm9sUG9pbnQxWzFdXG4gIH0sIHtcbiAgICB4OiBjb250cm9sUG9pbnQyWzBdLFxuICAgIHk6IGNvbnRyb2xQb2ludDJbMV1cbiAgfV07XG4gIHJldHVybiBjZmc7XG59O1xuLyoqXG4gKiDmoLnmja4gbGFiZWwg5omA5Zyo57q/5p2h55qE5L2N572u55m+5YiG5q+U77yM6K6h566XIGxhYmVsIOWdkOagh1xuICogQHBhcmFtIHtvYmplY3R9ICBwYXRoU2hhcGUgIEcg55qEIHBhdGgg5a6e5L6L77yM5LiA6Iis5pivIEVkZ2Ug5a6e5L6L55qEIGtleVNoYXBlXG4gKiBAcGFyYW0ge251bWJlcn0gIHBlcmNlbnQgICAg6IyD5Zu0IDAgLSAxIOeahOe6v+adoeeZvuWIhuavlFxuICogQHBhcmFtIHtudW1iZXJ9ICByZWZYICAgICB4IOi9tOato+aWueWQkeS4uuWfuuWHhueahCBsYWJlbCDlgY/np7tcbiAqIEBwYXJhbSB7bnVtYmVyfSAgcmVmWSAgICAgeSDovbTmraPmlrnlkJHkuLrln7rlh4bnmoQgbGFiZWwg5YGP56e7XG4gKiBAcGFyYW0ge2Jvb2xlYW59IHJvdGF0ZSAgICAg5piv5ZCm5qC55o2u57q/5p2h5pac546H5peL6L2s5paH5pysXG4gKiBAcmV0dXJuIHtvYmplY3R9IOaWh+acrOeahCB4LCB5LCDmlofmnKznmoTml4vovazop5LluqZcbiAqL1xuXG5leHBvcnQgdmFyIGdldExhYmVsUG9zaXRpb24gPSBmdW5jdGlvbiBnZXRMYWJlbFBvc2l0aW9uKHBhdGhTaGFwZSwgcGVyY2VudCwgcmVmWCwgcmVmWSwgcm90YXRlKSB7XG4gIHZhciBUQU5fT0ZGU0VUID0gMC4wMDAxO1xuICB2YXIgdmVjdG9yID0gW107XG4gIHZhciBwb2ludCA9IHBhdGhTaGFwZSA9PT0gbnVsbCB8fCBwYXRoU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhdGhTaGFwZS5nZXRQb2ludChwZXJjZW50KTtcblxuICBpZiAoIXBvaW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgYW5nbGU6IDBcbiAgICB9O1xuICB9IC8vIOWktOWwvuacgOWPr+iDve+8jOaUvuWcqOacgOWJjemdou+8jOS9v+eUqCBnIHBhdGgg5LiK5bCB6KOF55qE5pa55rOVXG5cblxuICBpZiAocGVyY2VudCA8IFRBTl9PRkZTRVQpIHtcbiAgICB2ZWN0b3IgPSBwYXRoU2hhcGUuZ2V0U3RhcnRUYW5nZW50KCkucmV2ZXJzZSgpO1xuICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxIC0gVEFOX09GRlNFVCkge1xuICAgIHZlY3RvciA9IHBhdGhTaGFwZS5nZXRFbmRUYW5nZW50KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8g5ZCm5YiZ5Y+W5oyH5a6a5L2N572u55qE54K5LOS4juWwkemHj+WBj+enu+eahOeCue+8jOWBmuW+ruWIhuWQkemHj1xuICAgIHZhciBvZmZzZXRQb2ludCA9IHBhdGhTaGFwZSA9PT0gbnVsbCB8fCBwYXRoU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhdGhTaGFwZS5nZXRQb2ludChwZXJjZW50ICsgVEFOX09GRlNFVCk7XG4gICAgdmVjdG9yLnB1c2goW3BvaW50LngsIHBvaW50LnldKTtcbiAgICB2ZWN0b3IucHVzaChbb2Zmc2V0UG9pbnQueCwgb2Zmc2V0UG9pbnQueV0pO1xuICB9XG5cbiAgdmFyIHJhZCA9IE1hdGguYXRhbjIodmVjdG9yWzFdWzFdIC0gdmVjdG9yWzBdWzFdLCB2ZWN0b3JbMV1bMF0gLSB2ZWN0b3JbMF1bMF0pO1xuXG4gIGlmIChyYWQgPCAwKSB7XG4gICAgcmFkICs9IFBJICogMjtcbiAgfVxuXG4gIGlmIChyZWZYKSB7XG4gICAgcG9pbnQueCArPSBjb3MocmFkKSAqIHJlZlg7XG4gICAgcG9pbnQueSArPSBzaW4ocmFkKSAqIHJlZlg7XG4gIH1cblxuICBpZiAocmVmWSkge1xuICAgIC8vIOm7mOiupOaWueWQkeaYryB4IOi9tOato+aWueWQke+8jOazlee6v+aYryDmsYLlh7rop5LluqYgLSA5MMKwXG4gICAgdmFyIG5vcm1hbCA9IHJhZCAtIFBJIC8gMjsgLy8g6Iul5rOV57q/6KeS5bqm5ZyoIHkg6L206LSf5pa55ZCR77yM5YiH5Yiw5q2j5pa55ZCR77yM5L+d6K+BIHJlZlkg55u45a+55LqOIHkg6L205q2j5pa55ZCRXG5cbiAgICBpZiAocmFkID4gMSAvIDIgKiBQSSAmJiByYWQgPCAzICogMSAvIDIgKiBQSSkge1xuICAgICAgbm9ybWFsIC09IFBJO1xuICAgIH1cblxuICAgIHBvaW50LnggKz0gY29zKG5vcm1hbCkgKiByZWZZO1xuICAgIHBvaW50LnkgKz0gc2luKG5vcm1hbCkgKiByZWZZO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IHtcbiAgICB4OiBwb2ludC54LFxuICAgIHk6IHBvaW50LnksXG4gICAgYW5nbGU6IHJhZFxuICB9O1xuXG4gIGlmIChyb3RhdGUpIHtcbiAgICBpZiAocmFkID4gMC41ICogUEkgJiYgcmFkIDwgMS41ICogUEkpIHtcbiAgICAgIHJhZCAtPSBQSTtcbiAgICB9XG5cbiAgICByZXR1cm4gX19hc3NpZ24oe1xuICAgICAgcm90YXRlOiByYWRcbiAgICB9LCByZXN1bHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4vKipcbiAqIGRlcHRoIGZpcnN0IHRyYXZlcnNlLCBmcm9tIHJvb3QgdG8gbGVhdmVzLCBjaGlsZHJlbiBpbiBpbnZlcnNlIG9yZGVyXG4gKiAgaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG52YXIgdHJhdmVyc2UgPSBmdW5jdGlvbiB0cmF2ZXJzZShkYXRhLCBmbikge1xuICBpZiAoZm4oZGF0YSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGRhdGEgJiYgZGF0YS5jaGlsZHJlbikge1xuICAgIGZvciAodmFyIGkgPSBkYXRhLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoIXRyYXZlcnNlKGRhdGEuY2hpbGRyZW5baV0sIGZuKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbi8qKlxuICogZGVwdGggZmlyc3QgdHJhdmVyc2UsIGZyb20gbGVhdmVzIHRvIHJvb3QsIGNoaWxkcmVuIGluIGludmVyc2Ugb3JkZXJcbiAqICBpZiB0aGUgZm4gcmV0dXJucyBmYWxzZSwgdGVybWluYXRlIHRoZSB0cmF2ZXJzZVxuICovXG5cblxudmFyIHRyYXZlcnNlVXAgPSBmdW5jdGlvbiB0cmF2ZXJzZVVwKGRhdGEsIGZuKSB7XG4gIGlmIChkYXRhICYmIGRhdGEuY2hpbGRyZW4pIHtcbiAgICBmb3IgKHZhciBpID0gZGF0YS5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKCF0cmF2ZXJzZVVwKGRhdGEuY2hpbGRyZW5baV0sIGZuKSkgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmbihkYXRhKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIGRlcHRoIGZpcnN0IHRyYXZlcnNlLCBmcm9tIHJvb3QgdG8gbGVhdmVzLCBjaGlsZHJlbiBpbiBpbnZlcnNlIG9yZGVyXG4gKiAgaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG5cbmV4cG9ydCB2YXIgdHJhdmVyc2VUcmVlID0gZnVuY3Rpb24gdHJhdmVyc2VUcmVlKGRhdGEsIGZuKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cmF2ZXJzZShkYXRhLCBmbik7XG59O1xuLyoqXG4gKiBkZXB0aCBmaXJzdCB0cmF2ZXJzZSwgZnJvbSBsZWF2ZXMgdG8gcm9vdCwgY2hpbGRyZW4gaW4gaW52ZXJzZSBvcmRlclxuICogaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG5leHBvcnQgdmFyIHRyYXZlcnNlVHJlZVVwID0gZnVuY3Rpb24gdHJhdmVyc2VUcmVlVXAoZGF0YSwgZm4pIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyYXZlcnNlVXAoZGF0YSwgZm4pO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBsZXR0ZXIgdGhlIGxldHRlclxuICogQHBhcmFtIGZvbnRTaXplXG4gKiBAcmV0dXJuIHRoZSBsZXR0ZXIncyB3aWR0aFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0TGV0dGVyV2lkdGggPSBmdW5jdGlvbiBnZXRMZXR0ZXJXaWR0aChsZXR0ZXIsIGZvbnRTaXplKSB7XG4gIHJldHVybiBmb250U2l6ZSAqIChsZXR0ZXJBc3BlY3RSYXRpb1tsZXR0ZXJdIHx8IDEpO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0XG4gKiBAcGFyYW0gZm9udFNpemVcbiAqIEByZXR1cm4gdGhlIHRleHQncyBzaXplXG4gKi9cblxuZXhwb3J0IHZhciBnZXRUZXh0U2l6ZSA9IGZ1bmN0aW9uIGdldFRleHRTaXplKHRleHQsIGZvbnRTaXplKSB7XG4gIHZhciB3aWR0aCA9IDA7XG4gIHZhciBwYXR0ZXJuID0gbmV3IFJlZ0V4cChcIltcXHU0RTAwLVxcdTlGQTVdK1wiKTtcbiAgdGV4dC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG4gICAgaWYgKHBhdHRlcm4udGVzdChsZXR0ZXIpKSB7XG4gICAgICAvLyDkuK3mloflrZfnrKZcbiAgICAgIHdpZHRoICs9IGZvbnRTaXplO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aWR0aCArPSBnZXRMZXR0ZXJXaWR0aChsZXR0ZXIsIGZvbnRTaXplKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gW3dpZHRoLCBmb250U2l6ZV07XG59O1xuLyoqXG4gKiBjb25zdHJ1Y3QgdGhlIHRyZWVzIGZyb20gY29tYm9zIGRhdGFcbiAqIEBwYXJhbSBhcnJheSB0aGUgY29tYm9zIGFycmF5XG4gKiBAcGFyYW0gbm9kZXMgdGhlIG5vZGVzIGFycmF5XG4gKiBAcmV0dXJuIHRoZSB0cmVlXG4gKi9cblxuZXhwb3J0IHZhciBwbGFpbkNvbWJvc1RvVHJlZXMgPSBmdW5jdGlvbiBwbGFpbkNvbWJvc1RvVHJlZXMoYXJyYXksIG5vZGVzKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGFkZGVkTWFwID0ge307XG4gIHZhciBtb2RlbE1hcCA9IHt9O1xuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgbW9kZWxNYXBbZC5pZF0gPSBkO1xuICB9KTtcbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoZCwgaSkge1xuICAgIHZhciBjZCA9IGNsb25lKGQpO1xuICAgIGNkLml0ZW1UeXBlID0gJ2NvbWJvJztcbiAgICBjZC5jaGlsZHJlbiA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChjZC5wYXJlbnRJZCA9PT0gY2QuaWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIlRoZSBwYXJlbnRJZCBmb3IgY29tYm8gXCIuY29uY2F0KGNkLmlkLCBcIiBjYW4gbm90IGJlIHRoZSBzYW1lIGFzIHRoZSBjb21ibydzIGlkXCIpKTtcbiAgICAgIGRlbGV0ZSBjZC5wYXJlbnRJZDtcbiAgICB9IGVsc2UgaWYgKGNkLnBhcmVudElkICYmICFtb2RlbE1hcFtjZC5wYXJlbnRJZF0pIHtcbiAgICAgIGNvbnNvbGUud2FybihcIlRoZSBwYXJlbnQgY29tYm8gZm9yIGNvbWJvIFwiLmNvbmNhdChjZC5pZCwgXCIgZG9lcyBub3QgZXhpc3QhXCIpKTtcbiAgICAgIGRlbGV0ZSBjZC5wYXJlbnRJZDtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGVkT2JqID0gYWRkZWRNYXBbY2QuaWRdO1xuXG4gICAgaWYgKG1hcHBlZE9iaikge1xuICAgICAgY2QuY2hpbGRyZW4gPSBtYXBwZWRPYmouY2hpbGRyZW47XG4gICAgICBhZGRlZE1hcFtjZC5pZF0gPSBjZDtcbiAgICAgIG1hcHBlZE9iaiA9IGNkO1xuXG4gICAgICBpZiAoIW1hcHBlZE9iai5wYXJlbnRJZCkge1xuICAgICAgICByZXN1bHQucHVzaChtYXBwZWRPYmopO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBtYXBwZWRQYXJlbnQgPSBhZGRlZE1hcFttYXBwZWRPYmoucGFyZW50SWRdO1xuXG4gICAgICBpZiAobWFwcGVkUGFyZW50KSB7XG4gICAgICAgIGlmIChtYXBwZWRQYXJlbnQuY2hpbGRyZW4pIG1hcHBlZFBhcmVudC5jaGlsZHJlbi5wdXNoKGNkKTtlbHNlIG1hcHBlZFBhcmVudC5jaGlsZHJlbiA9IFtjZF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcGFyZW50XzEgPSB7XG4gICAgICAgICAgaWQ6IG1hcHBlZE9iai5wYXJlbnRJZCxcbiAgICAgICAgICBjaGlsZHJlbjogW21hcHBlZE9ial1cbiAgICAgICAgfTtcbiAgICAgICAgYWRkZWRNYXBbbWFwcGVkT2JqLnBhcmVudElkXSA9IHBhcmVudF8xO1xuICAgICAgICBhZGRlZE1hcFtjZC5pZF0gPSBjZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc1N0cmluZyhkLnBhcmVudElkKSkge1xuICAgICAgdmFyIHBhcmVudF8yID0gYWRkZWRNYXBbZC5wYXJlbnRJZF07XG5cbiAgICAgIGlmIChwYXJlbnRfMikge1xuICAgICAgICBpZiAocGFyZW50XzIuY2hpbGRyZW4pIHBhcmVudF8yLmNoaWxkcmVuLnB1c2goY2QpO2Vsc2UgcGFyZW50XzIuY2hpbGRyZW4gPSBbY2RdO1xuICAgICAgICBhZGRlZE1hcFtjZC5pZF0gPSBjZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwYSA9IHtcbiAgICAgICAgICBpZDogZC5wYXJlbnRJZCxcbiAgICAgICAgICBjaGlsZHJlbjogW2NkXVxuICAgICAgICB9O1xuICAgICAgICBhZGRlZE1hcFtwYS5pZF0gPSBwYTtcbiAgICAgICAgYWRkZWRNYXBbY2QuaWRdID0gY2Q7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wdXNoKGNkKTtcbiAgICAgIGFkZGVkTWFwW2NkLmlkXSA9IGNkO1xuICAgIH1cbiAgfSk7IC8vIHByb2NjZXNzIHRoZSBub2Rlc1xuXG4gIHZhciBub2RlTWFwID0ge307XG4gIChub2RlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICAgIHZhciBjb21ibyA9IGFkZGVkTWFwW25vZGUuY29tYm9JZF07XG5cbiAgICBpZiAoY29tYm8pIHtcbiAgICAgIHZhciBjbm9kZSA9IHtcbiAgICAgICAgaWQ6IG5vZGUuaWQsXG4gICAgICAgIGNvbWJvSWQ6IG5vZGUuY29tYm9JZFxuICAgICAgfTtcbiAgICAgIGlmIChjb21iby5jaGlsZHJlbikgY29tYm8uY2hpbGRyZW4ucHVzaChjbm9kZSk7ZWxzZSBjb21iby5jaGlsZHJlbiA9IFtjbm9kZV07XG4gICAgICBjbm9kZS5pdGVtVHlwZSA9ICdub2RlJztcbiAgICAgIGFkZGVkTWFwW25vZGUuaWRdID0gY25vZGU7XG4gICAgfVxuICB9KTsgLy8gYXNzaWduIHRoZSBkZXB0aCBmb3IgZWFjaCBlbGVtZW50XG5cbiAgdmFyIG1heERlcHRoID0gMDtcbiAgcmVzdWx0LmZvckVhY2goZnVuY3Rpb24gKHRyZWUpIHtcbiAgICB0cmVlLmRlcHRoID0gbWF4RGVwdGggKyAxMDtcbiAgICB0cmF2ZXJzZSh0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIHZhciBwYXJlbnQ7XG4gICAgICB2YXIgaXRlbVR5cGUgPSBhZGRlZE1hcFtjaGlsZC5pZF0uaXRlbVR5cGU7XG5cbiAgICAgIGlmIChpdGVtVHlwZSA9PT0gJ25vZGUnKSB7XG4gICAgICAgIHBhcmVudCA9IGFkZGVkTWFwW2NoaWxkLmNvbWJvSWRdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50ID0gYWRkZWRNYXBbY2hpbGQucGFyZW50SWRdO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIGlmIChpdGVtVHlwZSA9PT0gJ25vZGUnKSBjaGlsZC5kZXB0aCA9IG1heERlcHRoICsgMTtlbHNlIGNoaWxkLmRlcHRoID0gbWF4RGVwdGggKyAxMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoaWxkLmRlcHRoID0gbWF4RGVwdGggKyAxMDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1heERlcHRoIDwgY2hpbGQuZGVwdGgpIG1heERlcHRoID0gY2hpbGQuZGVwdGg7XG4gICAgICB2YXIgb3JpTm9kZU1vZGVsID0gbm9kZU1hcFtjaGlsZC5pZF07XG5cbiAgICAgIGlmIChvcmlOb2RlTW9kZWwpIHtcbiAgICAgICAgb3JpTm9kZU1vZGVsLmRlcHRoID0gY2hpbGQuZGVwdGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgdmFyIHJlY29uc3RydWN0VHJlZSA9IGZ1bmN0aW9uIHJlY29uc3RydWN0VHJlZSh0cmVlcywgc3VidHJlZUlkLCBuZXdQYXJlbnRJZCkge1xuICB2YXIgYnJvdGhlcnMgPSB0cmVlcztcbiAgdmFyIHN1YnRyZWU7XG4gIHZhciBjb21ib0NoaWxkc01hcCA9IHtcbiAgICByb290OiB7XG4gICAgICBjaGlsZHJlbjogdHJlZXNcbiAgICB9XG4gIH07XG4gIHZhciBmb3VuZFN1YlRyZWUgPSBmYWxzZTtcbiAgdmFyIG9sZFBhcmVudElkID0gJ3Jvb3QnO1xuICAodHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKHRyZWUpIHtcbiAgICBpZiAoZm91bmRTdWJUcmVlKSByZXR1cm47XG5cbiAgICBpZiAodHJlZS5pZCA9PT0gc3VidHJlZUlkKSB7XG4gICAgICBzdWJ0cmVlID0gdHJlZTtcblxuICAgICAgaWYgKHRyZWUuaXRlbVR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgICAgc3VidHJlZS5wYXJlbnRJZCA9IG5ld1BhcmVudElkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VidHJlZS5jb21ib0lkID0gbmV3UGFyZW50SWQ7XG4gICAgICB9XG5cbiAgICAgIGZvdW5kU3ViVHJlZSA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJhdmVyc2VUcmVlKHRyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgY29tYm9DaGlsZHNNYXBbY2hpbGQuaWRdID0ge1xuICAgICAgICBjaGlsZHJlbjogY2hpbGQuY2hpbGRyZW5cbiAgICAgIH07IC8vIHN0b3JlIHRoZSBvbGQgcGFyZW50IGlkIHRvIGRlbGV0ZSB0aGUgc3VidHJlZSBmcm9tIHRoZSBvbGQgcGFyZW50J3MgY2hpbGRyZW4gaW4gbmV4dCByZWN1cnNpb25cblxuICAgICAgYnJvdGhlcnMgPSBjb21ib0NoaWxkc01hcFtjaGlsZC5wYXJlbnRJZCB8fCBjaGlsZC5jb21ib0lkIHx8ICdyb290J10uY2hpbGRyZW47XG5cbiAgICAgIGlmIChjaGlsZCAmJiAoY2hpbGQucmVtb3ZlZCB8fCBzdWJ0cmVlSWQgPT09IGNoaWxkLmlkKSAmJiBicm90aGVycykge1xuICAgICAgICBvbGRQYXJlbnRJZCA9IGNoaWxkLnBhcmVudElkIHx8IGNoaWxkLmNvbWJvSWQgfHwgJ3Jvb3QnO1xuICAgICAgICBzdWJ0cmVlID0gY2hpbGQ7IC8vIHJlLWFzc2lnbiB0aGUgcGFyZW50SWQgb3IgY29tYm9JZCBmb3IgdGhlIG1vdmVkIHN1YnRyZWVcblxuICAgICAgICBpZiAoY2hpbGQuaXRlbVR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgICAgICBzdWJ0cmVlLnBhcmVudElkID0gbmV3UGFyZW50SWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3VidHJlZS5jb21ib0lkID0gbmV3UGFyZW50SWQ7XG4gICAgICAgIH1cblxuICAgICAgICBmb3VuZFN1YlRyZWUgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9KTtcbiAgYnJvdGhlcnMgPSBjb21ib0NoaWxkc01hcFtvbGRQYXJlbnRJZF0uY2hpbGRyZW47XG4gIHZhciBpbmRleCA9IGJyb3RoZXJzID8gYnJvdGhlcnMuaW5kZXhPZihzdWJ0cmVlKSA6IC0xO1xuICBpZiAoaW5kZXggPiAtMSkgYnJvdGhlcnMuc3BsaWNlKGluZGV4LCAxKTsgLy8g5aaC5p6c6YGN5Y6G5a6M5pW05qO15qCR6L+Y5rKh5pyJ5om+5Yiw77yM6K+05piO5LmL5YmN5bCx5LiN5Zyo5qCR5LitXG5cbiAgaWYgKCFmb3VuZFN1YlRyZWUpIHtcbiAgICBzdWJ0cmVlID0ge1xuICAgICAgaWQ6IHN1YnRyZWVJZCxcbiAgICAgIGl0ZW1UeXBlOiAnbm9kZScsXG4gICAgICBjb21ib0lkOiBuZXdQYXJlbnRJZFxuICAgIH07XG4gICAgY29tYm9DaGlsZHNNYXBbc3VidHJlZUlkXSA9IHtcbiAgICAgIGNoaWxkcmVuOiB1bmRlZmluZWRcbiAgICB9O1xuICB9IC8vIGFwcGVuZCB0byBuZXcgcGFyZW50XG5cblxuICBpZiAoc3VidHJlZUlkKSB7XG4gICAgdmFyIGZvdW5kXzEgPSBmYWxzZTsgLy8gbmV3UGFyZW50SWQgaXMgdW5kZWZpbmVkIG1lYW5zIHRoZSBzdWJ0cmVlIHdpbGwgaGF2ZSBubyBwYXJlbnRcblxuICAgIGlmIChuZXdQYXJlbnRJZCkge1xuICAgICAgdmFyIG5ld1BhcmVudERlcHRoXzEgPSAwO1xuICAgICAgKHRyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uICh0cmVlKSB7XG4gICAgICAgIGlmIChmb3VuZF8xKSByZXR1cm47IC8vIHRlcm1pbmF0ZVxuXG4gICAgICAgIHRyYXZlcnNlVHJlZSh0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAvLyBhcHBlbmQgc3VidHJlZSB0byB0aGUgbmV3IHBhcmVudCBhbnMgYXNzaWduIHRoZSBkZXB0aCB0byB0aGUgc3VidHJlZVxuICAgICAgICAgIGlmIChuZXdQYXJlbnRJZCA9PT0gY2hpbGQuaWQpIHtcbiAgICAgICAgICAgIGZvdW5kXzEgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuKSBjaGlsZC5jaGlsZHJlbi5wdXNoKHN1YnRyZWUpO2Vsc2UgY2hpbGQuY2hpbGRyZW4gPSBbc3VidHJlZV07XG4gICAgICAgICAgICBuZXdQYXJlbnREZXB0aF8xID0gY2hpbGQuZGVwdGg7XG4gICAgICAgICAgICBpZiAoc3VidHJlZS5pdGVtVHlwZSA9PT0gJ25vZGUnKSBzdWJ0cmVlLmRlcHRoID0gbmV3UGFyZW50RGVwdGhfMSArIDI7ZWxzZSBzdWJ0cmVlLmRlcHRoID0gbmV3UGFyZW50RGVwdGhfMSArIDE7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHRlcm1pbmF0ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoKCFuZXdQYXJlbnRJZCB8fCAhZm91bmRfMSkgJiYgc3VidHJlZS5pdGVtVHlwZSAhPT0gJ25vZGUnKSB7XG4gICAgICAvLyBpZiB0aGUgbmV3UGFyZW50SWQgaXMgdW5kZWZpbmVkIG9yIGl0IGlzIG5vdCBmb3VuZCBpbiB0aGUgdHJlZSwgYWRkIHRoZSBzdWJUcmVlIHRvIHRoZSByb290XG4gICAgICB0cmVlcy5wdXNoKHN1YnRyZWUpO1xuICAgIH0gLy8gdXBkYXRlIHRoZSBkZXB0aCBvZiB0aGUgc3VidHJlZSBhbmQgaXRzIGNoaWxkcmVuIGZyb20gdGhlIHN1YnRyZWVcblxuXG4gICAgdmFyIGN1cnJlbnREZXB0aF8xID0gc3VidHJlZS5kZXB0aDtcbiAgICB0cmF2ZXJzZVRyZWUoc3VidHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQuaXRlbVR5cGUgPT09ICdub2RlJykgY3VycmVudERlcHRoXzEgKz0gMjtlbHNlIGN1cnJlbnREZXB0aF8xICs9IDE7XG4gICAgICBjaGlsZC5kZXB0aCA9IGN1cnJlbnREZXB0aF8xO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdHJlZXM7XG59O1xuZXhwb3J0IHZhciBnZXRDb21ib0JCb3ggPSBmdW5jdGlvbiBnZXRDb21ib0JCb3goY2hpbGRyZW4sIGdyYXBoLCBjb21ibykge1xuICB2YXIgY29tYm9CQm94ID0ge1xuICAgIG1pblg6IEluZmluaXR5LFxuICAgIG1pblk6IEluZmluaXR5LFxuICAgIG1heFg6IC1JbmZpbml0eSxcbiAgICBtYXhZOiAtSW5maW5pdHksXG4gICAgeDogdW5kZWZpbmVkLFxuICAgIHk6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICAgIGhlaWdodDogdW5kZWZpbmVkLFxuICAgIGNlbnRlclg6IHVuZGVmaW5lZCxcbiAgICBjZW50ZXJZOiB1bmRlZmluZWRcbiAgfTtcblxuICBpZiAoIWNoaWxkcmVuIHx8IGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgIHZhciBjb21ib01vZGVsID0gY29tYm8gPT09IG51bGwgfHwgY29tYm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbWJvLmdldE1vZGVsKCk7XG5cbiAgICB2YXIgX2EgPSBjb21ib01vZGVsIHx8IHt9LFxuICAgICAgICB4ID0gX2EueCxcbiAgICAgICAgeSA9IF9hLnk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbWluWDogeCxcbiAgICAgIG1pblk6IHksXG4gICAgICBtYXhYOiB4LFxuICAgICAgbWF4WTogeSxcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5LFxuICAgICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgICAgIGhlaWdodDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgdmFyIGNoaWxkSXRlbSA9IGdyYXBoLmZpbmRCeUlkKGNoaWxkLmlkKTtcbiAgICBpZiAoIWNoaWxkSXRlbSB8fCAhY2hpbGRJdGVtLmlzVmlzaWJsZSgpKSByZXR1cm47IC8vIGlnbm9yZSBoaWRkZW4gY2hpbGRyZW5cblxuICAgIGNoaWxkSXRlbS5zZXQoJ2Jib3hDYW52YXNDYWNoZScsIHVuZGVmaW5lZCk7XG4gICAgdmFyIGNoaWxkQkJveCA9IGNoaWxkSXRlbS5nZXRDYW52YXNCQm94KCk7XG4gICAgaWYgKGNoaWxkQkJveC54ICYmIGNvbWJvQkJveC5taW5YID4gY2hpbGRCQm94Lm1pblgpIGNvbWJvQkJveC5taW5YID0gY2hpbGRCQm94Lm1pblg7XG4gICAgaWYgKGNoaWxkQkJveC55ICYmIGNvbWJvQkJveC5taW5ZID4gY2hpbGRCQm94Lm1pblkpIGNvbWJvQkJveC5taW5ZID0gY2hpbGRCQm94Lm1pblk7XG4gICAgaWYgKGNoaWxkQkJveC54ICYmIGNvbWJvQkJveC5tYXhYIDwgY2hpbGRCQm94Lm1heFgpIGNvbWJvQkJveC5tYXhYID0gY2hpbGRCQm94Lm1heFg7XG4gICAgaWYgKGNoaWxkQkJveC55ICYmIGNvbWJvQkJveC5tYXhZIDwgY2hpbGRCQm94Lm1heFkpIGNvbWJvQkJveC5tYXhZID0gY2hpbGRCQm94Lm1heFk7XG4gIH0pO1xuICBjb21ib0JCb3gueCA9IChjb21ib0JCb3gubWluWCArIGNvbWJvQkJveC5tYXhYKSAvIDI7XG4gIGNvbWJvQkJveC55ID0gKGNvbWJvQkJveC5taW5ZICsgY29tYm9CQm94Lm1heFkpIC8gMjtcbiAgY29tYm9CQm94LndpZHRoID0gY29tYm9CQm94Lm1heFggLSBjb21ib0JCb3gubWluWDtcbiAgY29tYm9CQm94LmhlaWdodCA9IGNvbWJvQkJveC5tYXhZIC0gY29tYm9CQm94Lm1pblk7XG4gIGNvbWJvQkJveC5jZW50ZXJYID0gKGNvbWJvQkJveC5taW5YICsgY29tYm9CQm94Lm1heFgpIC8gMjtcbiAgY29tYm9CQm94LmNlbnRlclkgPSAoY29tYm9CQm94Lm1pblkgKyBjb21ib0JCb3gubWF4WSkgLyAyO1xuICBPYmplY3Qua2V5cyhjb21ib0JCb3gpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChjb21ib0JCb3hba2V5XSA9PT0gSW5maW5pdHkgfHwgY29tYm9CQm94W2tleV0gPT09IC1JbmZpbml0eSkge1xuICAgICAgY29tYm9CQm94W2tleV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvbWJvQkJveDtcbn07XG5leHBvcnQgdmFyIHNob3VsZFJlZnJlc2hFZGdlID0gZnVuY3Rpb24gc2hvdWxkUmVmcmVzaEVkZ2UoY2ZnKSB7XG4gIHZhciByZWZyZXNoRWRnZSA9IGlzTnVtYmVyKGNmZy54KSB8fCBpc051bWJlcihjZmcueSkgfHwgY2ZnLnR5cGUgfHwgY2ZnLmFuY2hvclBvaW50cyB8fCBjZmcuc2l6ZTtcbiAgaWYgKGNmZy5zdHlsZSkgcmVmcmVzaEVkZ2UgPSByZWZyZXNoRWRnZSB8fCBpc051bWJlcihjZmcuc3R5bGUucikgfHwgaXNOdW1iZXIoY2ZnLnN0eWxlLndpZHRoKSB8fCBpc051bWJlcihjZmcuc3R5bGUuaGVpZ2h0KSB8fCBpc051bWJlcihjZmcuc3R5bGUucngpIHx8IGlzTnVtYmVyKGNmZy5zdHlsZS5yeSk7XG4gIHJldHVybiByZWZyZXNoRWRnZTtcbn07XG5leHBvcnQgdmFyIGNsb25lQmVzaWRlc0ltZyA9IGZ1bmN0aW9uIGNsb25lQmVzaWRlc0ltZyhvYmopIHtcbiAgdmFyIGNsb25lZE9iaiA9IHt9O1xuICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleTEpIHtcbiAgICB2YXIgb2JqMiA9IG9ialtrZXkxXTtcblxuICAgIGlmIChpc09iamVjdChvYmoyKSAmJiAhaXNBcnJheShvYmoyKSkge1xuICAgICAgdmFyIGNsb25lZE9iajJfMSA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMob2JqMikuZm9yRWFjaChmdW5jdGlvbiAoa2V5Mikge1xuICAgICAgICB2YXIgdiA9IG9iajJba2V5Ml07XG4gICAgICAgIGlmIChrZXkyID09PSAnaW1nJyAmJiAhaXNTdHJpbmcodikpIHJldHVybjtcbiAgICAgICAgY2xvbmVkT2JqMl8xW2tleTJdID0gY2xvbmUodik7XG4gICAgICB9KTtcbiAgICAgIGNsb25lZE9ialtrZXkxXSA9IGNsb25lZE9iajJfMTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xvbmVkT2JqW2tleTFdID0gY2xvbmUob2JqMik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNsb25lZE9iajtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/graphic.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/util/index.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g6-core/es/util/index.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math */ \"./node_modules/@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./path */ \"./node_modules/@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./color */ \"./node_modules/@antv/g6-core/es/util/color.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__[\"ext\"].transform;\n\nvar Util = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _base__WEBPACK_IMPORTED_MODULE_4__), _graphic__WEBPACK_IMPORTED_MODULE_2__), _path__WEBPACK_IMPORTED_MODULE_3__), _math__WEBPACK_IMPORTED_MODULE_1__), _color__WEBPACK_IMPORTED_MODULE_5__), {\n transform: transform,\n mat3: _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"]\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Util);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2luZGV4LmpzPzQ5MmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNFO0FBQ007QUFDTjtBQUNBO0FBQ0U7QUFDUztBQUM5QyxnQkFBZ0IscURBQUc7O0FBRW5CLFdBQVcsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLENBQUMsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSxrQ0FBUSxHQUFHLHFDQUFXLEdBQUcsa0NBQVEsR0FBRyxrQ0FBUSxHQUFHLG1DQUFTO0FBQzdIO0FBQ0EsUUFBUSxzREFBSTtBQUNaLENBQUM7O0FBRWMsbUVBQUkiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIE1hdGhVdGlsIGZyb20gJy4vbWF0aCc7XG5pbXBvcnQgKiBhcyBHcmFwaGljVXRpbCBmcm9tICcuL2dyYXBoaWMnO1xuaW1wb3J0ICogYXMgUGF0aFV0aWwgZnJvbSAnLi9wYXRoJztcbmltcG9ydCAqIGFzIEJhc2VVdGlsIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBDb2xvclV0aWwgZnJvbSAnLi9jb2xvcic7XG5pbXBvcnQgeyBleHQsIG1hdDMgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcblxudmFyIFV0aWwgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgQmFzZVV0aWwpLCBHcmFwaGljVXRpbCksIFBhdGhVdGlsKSwgTWF0aFV0aWwpLCBDb2xvclV0aWwpLCB7XG4gIHRyYW5zZm9ybTogdHJhbnNmb3JtLFxuICBtYXQzOiBtYXQzXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgVXRpbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/util/letterAspectRatio.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g6-core/es/util/letterAspectRatio.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n ' ': 0.3329986572265625,\n a: 0.5589996337890625,\n A: 0.6569992065429687,\n b: 0.58599853515625,\n B: 0.6769989013671875,\n c: 0.5469985961914062,\n C: 0.7279998779296875,\n d: 0.58599853515625,\n D: 0.705999755859375,\n e: 0.554998779296875,\n E: 0.63699951171875,\n f: 0.37299957275390627,\n F: 0.5769989013671875,\n g: 0.5909988403320312,\n G: 0.7479995727539063,\n h: 0.555999755859375,\n H: 0.7199996948242188,\n i: 0.255999755859375,\n I: 0.23699951171875,\n j: 0.26699981689453123,\n J: 0.5169998168945312,\n k: 0.5289993286132812,\n K: 0.6899993896484375,\n l: 0.23499908447265624,\n L: 0.5879989624023437,\n m: 0.854998779296875,\n M: 0.8819992065429687,\n n: 0.5589996337890625,\n N: 0.7189987182617188,\n o: 0.58599853515625,\n O: 0.7669998168945312,\n p: 0.58599853515625,\n P: 0.6419998168945312,\n q: 0.58599853515625,\n Q: 0.7669998168945312,\n r: 0.3649993896484375,\n R: 0.6759994506835938,\n s: 0.504998779296875,\n S: 0.6319992065429687,\n t: 0.354998779296875,\n T: 0.6189987182617187,\n u: 0.5599990844726562,\n U: 0.7139999389648437,\n v: 0.48199920654296874,\n V: 0.6389999389648438,\n w: 0.754998779296875,\n W: 0.929998779296875,\n x: 0.5089996337890625,\n X: 0.63699951171875,\n y: 0.4959991455078125,\n Y: 0.66199951171875,\n z: 0.48699951171875,\n Z: 0.6239990234375,\n '0': 0.6,\n '1': 0.40099945068359377,\n '2': 0.6,\n '3': 0.6,\n '4': 0.6,\n '5': 0.6,\n '6': 0.6,\n '7': 0.5469985961914062,\n '8': 0.6,\n '9': 0.6,\n '[': 0.3329986572265625,\n ']': 0.3329986572265625,\n ',': 0.26399993896484375,\n '.': 0.26399993896484375,\n ';': 0.26399993896484375,\n ':': 0.26399993896484375,\n '{': 0.3329986572265625,\n '}': 0.3329986572265625,\n '\\\\': 0.5,\n '|': 0.19499969482421875,\n '=': 0.604998779296875,\n '+': 0.604998779296875,\n '-': 0.604998779296875,\n _: 0.5,\n '`': 0.3329986572265625,\n ' ~': 0.8329986572265625,\n '!': 0.3329986572265625,\n '@': 0.8579986572265625,\n '#': 0.6,\n $: 0.6,\n '%': 0.9699996948242188,\n '^': 0.517999267578125,\n '&': 0.7259994506835937,\n '*': 0.505999755859375,\n '(': 0.3329986572265625,\n ')': 0.3329986572265625,\n '<': 0.604998779296875,\n '>': 0.604998779296875,\n '/': 0.5,\n '?': 0.53699951171875\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2xldHRlckFzcGVjdFJhdGlvLmpzPzkxNWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL2xldHRlckFzcGVjdFJhdGlvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICAnICc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgYTogMC41NTg5OTk2MzM3ODkwNjI1LFxuICBBOiAwLjY1Njk5OTIwNjU0Mjk2ODcsXG4gIGI6IDAuNTg1OTk4NTM1MTU2MjUsXG4gIEI6IDAuNjc2OTk4OTAxMzY3MTg3NSxcbiAgYzogMC41NDY5OTg1OTYxOTE0MDYyLFxuICBDOiAwLjcyNzk5OTg3NzkyOTY4NzUsXG4gIGQ6IDAuNTg1OTk4NTM1MTU2MjUsXG4gIEQ6IDAuNzA1OTk5NzU1ODU5Mzc1LFxuICBlOiAwLjU1NDk5ODc3OTI5Njg3NSxcbiAgRTogMC42MzY5OTk1MTE3MTg3NSxcbiAgZjogMC4zNzI5OTk1NzI3NTM5MDYyNyxcbiAgRjogMC41NzY5OTg5MDEzNjcxODc1LFxuICBnOiAwLjU5MDk5ODg0MDMzMjAzMTIsXG4gIEc6IDAuNzQ3OTk5NTcyNzUzOTA2MyxcbiAgaDogMC41NTU5OTk3NTU4NTkzNzUsXG4gIEg6IDAuNzE5OTk5Njk0ODI0MjE4OCxcbiAgaTogMC4yNTU5OTk3NTU4NTkzNzUsXG4gIEk6IDAuMjM2OTk5NTExNzE4NzUsXG4gIGo6IDAuMjY2OTk5ODE2ODk0NTMxMjMsXG4gIEo6IDAuNTE2OTk5ODE2ODk0NTMxMixcbiAgazogMC41Mjg5OTkzMjg2MTMyODEyLFxuICBLOiAwLjY4OTk5OTM4OTY0ODQzNzUsXG4gIGw6IDAuMjM0OTk5MDg0NDcyNjU2MjQsXG4gIEw6IDAuNTg3OTk4OTYyNDAyMzQzNyxcbiAgbTogMC44NTQ5OTg3NzkyOTY4NzUsXG4gIE06IDAuODgxOTk5MjA2NTQyOTY4NyxcbiAgbjogMC41NTg5OTk2MzM3ODkwNjI1LFxuICBOOiAwLjcxODk5ODcxODI2MTcxODgsXG4gIG86IDAuNTg1OTk4NTM1MTU2MjUsXG4gIE86IDAuNzY2OTk5ODE2ODk0NTMxMixcbiAgcDogMC41ODU5OTg1MzUxNTYyNSxcbiAgUDogMC42NDE5OTk4MTY4OTQ1MzEyLFxuICBxOiAwLjU4NTk5ODUzNTE1NjI1LFxuICBROiAwLjc2Njk5OTgxNjg5NDUzMTIsXG4gIHI6IDAuMzY0OTk5Mzg5NjQ4NDM3NSxcbiAgUjogMC42NzU5OTk0NTA2ODM1OTM4LFxuICBzOiAwLjUwNDk5ODc3OTI5Njg3NSxcbiAgUzogMC42MzE5OTkyMDY1NDI5Njg3LFxuICB0OiAwLjM1NDk5ODc3OTI5Njg3NSxcbiAgVDogMC42MTg5OTg3MTgyNjE3MTg3LFxuICB1OiAwLjU1OTk5OTA4NDQ3MjY1NjIsXG4gIFU6IDAuNzEzOTk5OTM4OTY0ODQzNyxcbiAgdjogMC40ODE5OTkyMDY1NDI5Njg3NCxcbiAgVjogMC42Mzg5OTk5Mzg5NjQ4NDM4LFxuICB3OiAwLjc1NDk5ODc3OTI5Njg3NSxcbiAgVzogMC45Mjk5OTg3NzkyOTY4NzUsXG4gIHg6IDAuNTA4OTk5NjMzNzg5MDYyNSxcbiAgWDogMC42MzY5OTk1MTE3MTg3NSxcbiAgeTogMC40OTU5OTkxNDU1MDc4MTI1LFxuICBZOiAwLjY2MTk5OTUxMTcxODc1LFxuICB6OiAwLjQ4Njk5OTUxMTcxODc1LFxuICBaOiAwLjYyMzk5OTAyMzQzNzUsXG4gICcwJzogMC42LFxuICAnMSc6IDAuNDAwOTk5NDUwNjgzNTkzNzcsXG4gICcyJzogMC42LFxuICAnMyc6IDAuNixcbiAgJzQnOiAwLjYsXG4gICc1JzogMC42LFxuICAnNic6IDAuNixcbiAgJzcnOiAwLjU0Njk5ODU5NjE5MTQwNjIsXG4gICc4JzogMC42LFxuICAnOSc6IDAuNixcbiAgJ1snOiAwLjMzMjk5ODY1NzIyNjU2MjUsXG4gICddJzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnLCc6IDAuMjYzOTk5OTM4OTY0ODQzNzUsXG4gICcuJzogMC4yNjM5OTk5Mzg5NjQ4NDM3NSxcbiAgJzsnOiAwLjI2Mzk5OTkzODk2NDg0Mzc1LFxuICAnOic6IDAuMjYzOTk5OTM4OTY0ODQzNzUsXG4gICd7JzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnfSc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJ1xcXFwnOiAwLjUsXG4gICd8JzogMC4xOTQ5OTk2OTQ4MjQyMTg3NSxcbiAgJz0nOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgJysnOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgJy0nOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgXzogMC41LFxuICAnYCc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJyB+JzogMC44MzI5OTg2NTcyMjY1NjI1LFxuICAnISc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJ0AnOiAwLjg1Nzk5ODY1NzIyNjU2MjUsXG4gICcjJzogMC42LFxuICAkOiAwLjYsXG4gICclJzogMC45Njk5OTk2OTQ4MjQyMTg4LFxuICAnXic6IDAuNTE3OTk5MjY3NTc4MTI1LFxuICAnJic6IDAuNzI1OTk5NDUwNjgzNTkzNyxcbiAgJyonOiAwLjUwNTk5OTc1NTg1OTM3NSxcbiAgJygnOiAwLjMzMjk5ODY1NzIyNjU2MjUsXG4gICcpJzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnPCc6IDAuNjA0OTk4Nzc5Mjk2ODc1LFxuICAnPic6IDAuNjA0OTk4Nzc5Mjk2ODc1LFxuICAnLyc6IDAuNSxcbiAgJz8nOiAwLjUzNjk5OTUxMTcxODc1XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/letterAspectRatio.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/util/math.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g6-core/es/util/math.js ***! \****************************************************/ /*! exports provided: compare, getLineIntersect, getRectIntersectByPoint, getCircleIntersectByPoint, getEllipseIntersectByPoint, applyMatrix, invertMatrix, getCircleCenterByPoints, distance, scaleMatrix, floydWarshall, getAdjMatrix, translate, move, scale, rotate, getDegree, isPointInPolygon, intersectBBox, isPolygonsIntersect, Line, getBBoxBoundLine, itemIntersectByLine, fractionToLine, getPointsCenter, squareDist, pointLineSquareDist, isPointsOverlap, pointRectSquareDist, pointLineDistance, lerp */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLineIntersect\", function() { return getLineIntersect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRectIntersectByPoint\", function() { return getRectIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCircleIntersectByPoint\", function() { return getCircleIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEllipseIntersectByPoint\", function() { return getEllipseIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyMatrix\", function() { return applyMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invertMatrix\", function() { return invertMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCircleCenterByPoints\", function() { return getCircleCenterByPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleMatrix\", function() { return scaleMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return floydWarshall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return getAdjMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"move\", function() { return move; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return getDegree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointInPolygon\", function() { return isPointInPolygon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectBBox\", function() { return intersectBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPolygonsIntersect\", function() { return isPolygonsIntersect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return Line; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxBoundLine\", function() { return getBBoxBoundLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"itemIntersectByLine\", function() { return itemIntersectByLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fractionToLine\", function() { return fractionToLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPointsCenter\", function() { return getPointsCenter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squareDist\", function() { return squareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointLineSquareDist\", function() { return pointLineSquareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointsOverlap\", function() { return isPointsOverlap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointRectSquareDist\", function() { return pointRectSquareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointLineDistance\", function() { return pointLineDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"ext\"].transform;\n/**\n * 对比对象,用于对象数组排序\n * @param {string} attributeName 排序依据的字段名称\n * @param {number} min 最小值\n * @param {number} max 最大值\n * @return {boolean} bool 布尔\n */\n\nvar compare = function compare(attributeName) {\n return function (m, n) {\n return m[attributeName] - n[attributeName];\n };\n};\n/**\n * 是否在区间内\n * @param {number} value 值\n * @param {number} min 最小值\n * @param {number} max 最大值\n * @return {boolean} bool 布尔\n */\n\nvar isBetween = function isBetween(value, min, max) {\n return value >= min && value <= max;\n};\n/**\n * 获取两条线段的交点\n * @param {Point} p0 第一条线段起点\n * @param {Point} p1 第一条线段终点\n * @param {Point} p2 第二条线段起点\n * @param {Point} p3 第二条线段终点\n * @return {Point} 交点\n */\n\n\nvar getLineIntersect = function getLineIntersect(p0, p1, p2, p3) {\n var tolerance = 0.0001;\n var E = {\n x: p2.x - p0.x,\n y: p2.y - p0.y\n };\n var D0 = {\n x: p1.x - p0.x,\n y: p1.y - p0.y\n };\n var D1 = {\n x: p3.x - p2.x,\n y: p3.y - p2.y\n };\n var kross = D0.x * D1.y - D0.y * D1.x;\n var sqrKross = kross * kross;\n var invertKross = 1 / kross;\n var sqrLen0 = D0.x * D0.x + D0.y * D0.y;\n var sqrLen1 = D1.x * D1.x + D1.y * D1.y;\n\n if (sqrKross > tolerance * sqrLen0 * sqrLen1) {\n var s = (E.x * D1.y - E.y * D1.x) * invertKross;\n var t = (E.x * D0.y - E.y * D0.x) * invertKross;\n if (!isBetween(s, 0, 1) || !isBetween(t, 0, 1)) return null;\n return {\n x: p0.x + s * D0.x,\n y: p0.y + s * D0.y\n };\n }\n\n return null;\n};\n/**\n * point and rectangular intersection point\n * @param {IRect} rect rect\n * @param {Point} point point\n * @return {PointPoint} rst;\n */\n\nvar getRectIntersectByPoint = function getRectIntersectByPoint(rect, point) {\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n var cx = x + width / 2;\n var cy = y + height / 2;\n var points = [];\n var center = {\n x: cx,\n y: cy\n };\n points.push({\n x: x,\n y: y\n });\n points.push({\n x: x + width,\n y: y\n });\n points.push({\n x: x + width,\n y: y + height\n });\n points.push({\n x: x,\n y: y + height\n });\n points.push({\n x: x,\n y: y\n });\n var rst = null;\n\n for (var i = 1; i < points.length; i++) {\n rst = getLineIntersect(points[i - 1], points[i], center, point);\n\n if (rst) {\n break;\n }\n }\n\n return rst;\n};\n/**\n * get point and circle inIntersect\n * @param {ICircle} circle 圆点,x,y,r\n * @param {Point} point 点 x,y\n * @return {Point} applied point\n */\n\nvar getCircleIntersectByPoint = function getCircleIntersectByPoint(circle, point) {\n var cx = circle.x,\n cy = circle.y,\n r = circle.r;\n var x = point.x,\n y = point.y;\n var dx = x - cx;\n var dy = y - cy;\n\n if (dx * dx + dy * dy < r * r) {\n return null;\n }\n\n var angle = Math.atan(dy / dx);\n return {\n x: cx + Math.abs(r * Math.cos(angle)) * Math.sign(dx),\n y: cy + Math.abs(r * Math.sin(angle)) * Math.sign(dy)\n };\n};\n/**\n * get point and ellipse inIntersect\n * @param {Object} ellipse 椭圆 x,y,rx,ry\n * @param {Object} point 点 x,y\n * @return {object} applied point\n */\n\nvar getEllipseIntersectByPoint = function getEllipseIntersectByPoint(ellipse, point) {\n var a = ellipse.rx;\n var b = ellipse.ry;\n var cx = ellipse.x;\n var cy = ellipse.y;\n var dx = point.x - cx;\n var dy = point.y - cy; // 直接通过 x,y 求夹角,求出来的范围是 -PI, PI\n\n var angle = Math.atan2(dy / b, dx / a);\n\n if (angle < 0) {\n angle += 2 * Math.PI; // 转换到 0,2PI\n }\n\n return {\n x: cx + a * Math.cos(angle),\n y: cy + b * Math.sin(angle)\n };\n};\n/**\n * coordinate matrix transformation\n * @param {number} point coordinate\n * @param {Matrix} matrix matrix\n * @param {number} tag could be 0 or 1\n * @return {Point} transformed point\n */\n\nvar applyMatrix = function applyMatrix(point, matrix, tag) {\n if (tag === void 0) {\n tag = 1;\n }\n\n var vector = [point.x, point.y, tag];\n\n if (!matrix || isNaN(matrix[0])) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].transformMat3(vector, vector, matrix);\n return {\n x: vector[0],\n y: vector[1]\n };\n};\n/**\n * coordinate matrix invert transformation\n * @param {number} point coordinate\n * @param {number} matrix matrix\n * @param {number} tag could be 0 or 1\n * @return {object} transformed point\n */\n\nvar invertMatrix = function invertMatrix(point, matrix, tag) {\n if (tag === void 0) {\n tag = 1;\n }\n\n if (!matrix || isNaN(matrix[0])) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var inversedMatrix = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].invert([1, 0, 0, 0, 1, 0, 0, 0, 1], matrix);\n\n if (!inversedMatrix) {\n inversedMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var vector = [point.x, point.y, tag];\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].transformMat3(vector, vector, inversedMatrix);\n return {\n x: vector[0],\n y: vector[1]\n };\n};\n/**\n *\n * @param p1 First coordinate\n * @param p2 second coordinate\n * @param p3 three coordinate\n */\n\nvar getCircleCenterByPoints = function getCircleCenterByPoints(p1, p2, p3) {\n var a = p1.x - p2.x;\n var b = p1.y - p2.y;\n var c = p1.x - p3.x;\n var d = p1.y - p3.y;\n var e = (p1.x * p1.x - p2.x * p2.x - p2.y * p2.y + p1.y * p1.y) / 2;\n var f = (p1.x * p1.x - p3.x * p3.x - p3.y * p3.y + p1.y * p1.y) / 2;\n var denominator = b * c - a * d;\n return {\n x: -(d * e - b * f) / denominator,\n y: -(a * f - c * e) / denominator\n };\n};\n/**\n * get distance by two points\n * @param p1 first point\n * @param p2 second point\n */\n\nvar distance = function distance(p1, p2) {\n var vx = p1.x - p2.x;\n var vy = p1.y - p2.y;\n return Math.sqrt(vx * vx + vy * vy);\n};\n/**\n * scale matrix\n * @param matrix [ [], [], [] ]\n * @param ratio\n */\n\nvar scaleMatrix = function scaleMatrix(matrix, ratio) {\n var result = [];\n matrix.forEach(function (row) {\n var newRow = [];\n row.forEach(function (v) {\n newRow.push(v * ratio);\n });\n result.push(newRow);\n });\n return result;\n};\n/**\n * Floyd Warshall algorithm for shortest path distances matrix\n * @param {array} adjMatrix adjacency matrix\n * @return {array} distances shortest path distances matrix\n */\n\nvar floydWarshall = function floydWarshall(adjMatrix) {\n // initialize\n var dist = [];\n var size = adjMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjMatrix[i][j] === 0 || !adjMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n/**\n * get adjacency matrix\n * @param data graph data\n * @param directed whether it's a directed graph\n */\n\nvar getAdjMatrix = function getAdjMatrix(data, directed) {\n var nodes = data.nodes,\n edges = data.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error('invalid nodes data!');\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (e) {\n var source = e.source,\n target = e.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n/**\n * 平移group\n * @param group Group 实例\n * @param vec 移动向量\n */\n\nvar translate = function translate(group, vec) {\n group.translate(vec.x, vec.y);\n};\n/**\n * 移动到指定坐标点\n * @param group Group 实例\n * @param point 移动到的坐标点\n */\n\nvar move = function move(group, point, animate, animateCfg) {\n if (animateCfg === void 0) {\n animateCfg = {\n duration: 500\n };\n }\n\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var bbox = group.getCanvasBBox();\n var vx = point.x - bbox.minX;\n var vy = point.y - bbox.minY;\n\n if (animate) {\n var dx_1 = vx * matrix[0];\n var dy_1 = vy * matrix[4];\n var lastX_1 = 0;\n var lastY_1 = 0;\n var newX_1 = 0;\n var newY_1 = 0;\n group.animate(function (ratio) {\n newX_1 = dx_1 * ratio;\n newY_1 = dy_1 * ratio;\n matrix = transform(matrix, [['t', newX_1 - lastX_1, newY_1 - lastY_1]]);\n lastX_1 = newX_1;\n lastY_1 = newY_1;\n return {\n matrix: matrix\n };\n }, animateCfg);\n } else {\n var movedMatrix = transform(matrix, [['t', vx, vy]]);\n group.setMatrix(movedMatrix);\n }\n};\n/**\n * 缩放 group\n * @param group Group 实例\n * @param point 在x 和 y 方向上的缩放比例\n */\n\nvar scale = function scale(group, ratio) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var scaleXY = ratio;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(ratio)) {\n scaleXY = [ratio, ratio];\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(ratio) && ratio.length === 1) {\n scaleXY = [ratio[0], ratio[0]];\n }\n\n matrix = transform(matrix, [['s', scaleXY[0], scaleXY[1]]]);\n group.setMatrix(matrix);\n};\n/**\n *\n * @param group Group 实例\n * @param ratio 选择角度\n */\n\nvar rotate = function rotate(group, angle) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n matrix = transform(matrix, [['r', angle]]);\n group.setMatrix(matrix);\n};\nvar getDegree = function getDegree(n, nodeIdxMap, edges) {\n var degrees = [];\n\n for (var i = 0; i < n; i++) {\n degrees[i] = 0;\n }\n\n edges.forEach(function (e) {\n if (e.source) {\n degrees[nodeIdxMap[e.source]] += 1;\n }\n\n if (e.target) {\n degrees[nodeIdxMap[e.target]] += 1;\n }\n });\n return degrees;\n}; // 判断点Q是否在p1和p2的线段上\n\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) && Math.min(p1[0], p2[0]) <= q[0] && q[0] <= Math.max(p1[0], p2[0]) && Math.min(p1[1], p2[1]) <= q[1] && q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n\n return false;\n}\n/**\n * 判断点P在多边形内-射线法. Borrow from https://github.com/antvis/util/blob/master/packages/path-util/src/point-in-polygon.ts\n * @param points\n * @param x\n * @param y\n */\n\n\nvar isPointInPolygon = function isPointInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length; // 判断两个double在eps精度下的大小关系\n\n var tolerance = 1e-6;\n\n function dcmp(xValue) {\n if (Math.abs(xValue) < tolerance) {\n return 0;\n }\n\n return xValue < 0 ? -1 : 1;\n }\n\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n } // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 && dcmp(x - (y - p1[1]) * (p1[0] - p2[0]) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n\n return isHit;\n}; // 判断两个BBox是否相交\n\nvar intersectBBox = function intersectBBox(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n};\n\nvar lineIntersectPolygon = function lineIntersectPolygon(lines, line) {\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(lines, function (l) {\n if (getLineIntersect(l.from, l.to, line.from, line.to)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n};\n/**\n * 判断两个polygon是否相交。\n * borrow from @antv/path-util\n * @param points1 polygon1的顶点数组\n * @param points2 polygon2的顶点数组\n */\n\n\nvar isPolygonsIntersect = function isPolygonsIntersect(points1, points2) {\n var getBBox = function getBBox(points) {\n var xArr = points.map(function (p) {\n return p[0];\n });\n var yArr = points.map(function (p) {\n return p[1];\n });\n return {\n minX: Math.min.apply(null, xArr),\n maxX: Math.max.apply(null, xArr),\n minY: Math.min.apply(null, yArr),\n maxY: Math.max.apply(null, yArr)\n };\n };\n\n var parseToLines = function parseToLines(points) {\n var lines = [];\n var count = points.length;\n\n for (var i = 0; i < count - 1; i++) {\n var point = points[i];\n var next = points[i + 1];\n lines.push({\n from: {\n x: point[0],\n y: point[1]\n },\n to: {\n x: next[0],\n y: next[1]\n }\n });\n }\n\n if (lines.length > 1) {\n var first = points[0];\n var last = points[count - 1];\n lines.push({\n from: {\n x: last[0],\n y: last[1]\n },\n to: {\n x: first[0],\n y: first[1]\n }\n });\n }\n\n return lines;\n }; // 空数组,或者一个点返回 false\n\n\n if (points1.length < 2 || points2.length < 2) {\n return false;\n }\n\n var bbox1 = getBBox(points1);\n var bbox2 = getBBox(points2); // 判定包围盒是否相交,比判定点是否在多边形内要快的多,可以筛选掉大多数情况\n\n if (!intersectBBox(bbox1, bbox2)) {\n return false;\n }\n\n var isIn = false; // 判定点是否在多边形内部,一旦有一个点在另一个多边形内,则返回\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points2, function (point) {\n if (isPointInPolygon(points1, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n\n if (isIn) {\n return true;\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points1, function (point) {\n if (isPointInPolygon(points2, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n\n if (isIn) {\n return true;\n }\n\n var lines1 = parseToLines(points1);\n var lines2 = parseToLines(points2);\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(lines2, function (line) {\n if (lineIntersectPolygon(lines1, line)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n};\n\nvar Line =\n/** @class */\nfunction () {\n function Line(x1, y1, x2, y2) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n }\n\n Line.prototype.getBBox = function () {\n var minX = Math.min(this.x1, this.x2);\n var minY = Math.min(this.y1, this.y2);\n var maxX = Math.max(this.x1, this.x2);\n var maxY = Math.max(this.y1, this.y2);\n var res = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n return res;\n };\n\n return Line;\n}();\n\n\nvar getBBoxBoundLine = function getBBoxBoundLine(bbox, direction) {\n var bounds = {\n top: [bbox.minX, bbox.minY, bbox.maxX, bbox.minY],\n left: [bbox.minX, bbox.minY, bbox.minX, bbox.maxY],\n bottom: [bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY],\n right: [bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY]\n };\n return bounds[direction];\n};\n/**\n * 计算两条线段相交时,相交点对第一条线段上的分割比例\n */\n\nvar fractionAlongLineA = function fractionAlongLineA(la, lb) {\n var uaT = (lb.x2 - lb.x1) * (la.y1 - lb.y1) - (lb.y2 - lb.y1) * (la.x1 - lb.x1);\n var ubT = (la.x2 - la.x1) * (la.y1 - lb.y1) - (la.y2 - la.y1) * (la.x1 - lb.x1);\n var uB = (lb.y2 - lb.y1) * (la.x2 - la.x1) - (lb.x2 - lb.x1) * (la.y2 - la.y1);\n\n if (uB) {\n var ua = uaT / uB;\n var ub = ubT / uB;\n\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return ua;\n }\n }\n\n return Number.POSITIVE_INFINITY;\n};\n\nvar itemIntersectByLine = function itemIntersectByLine(item, line) {\n var directions = ['top', 'left', 'bottom', 'right'];\n var bbox = item.getBBox();\n var countIntersections = 0;\n var intersections = [];\n\n for (var i = 0; i < 4; i++) {\n var _a = getBBoxBoundLine(bbox, directions[i]),\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n\n intersections[i] = getLineIntersect({\n x: line.x1,\n y: line.y1\n }, {\n x: line.x2,\n y: line.y2\n }, {\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n\n if (intersections[i]) {\n countIntersections += 1;\n }\n }\n\n return [intersections, countIntersections];\n};\nvar fractionToLine = function fractionToLine(item, line) {\n var directions = ['top', 'left', 'bottom', 'right'];\n var bbox = item.getBBox();\n var minDistance = Number.POSITIVE_INFINITY;\n var countIntersections = 0;\n\n for (var i = 0; i < 4; i++) {\n var _a = getBBoxBoundLine(bbox, directions[i]),\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n\n var testDistance = fractionAlongLineA(line, new Line(x1, y1, x2, y2));\n testDistance = Math.abs(testDistance - 0.5);\n\n if (testDistance >= 0 && testDistance <= 1) {\n countIntersections += 1;\n minDistance = testDistance < minDistance ? testDistance : minDistance;\n }\n }\n\n if (countIntersections === 0) return -1;\n return minDistance;\n};\nvar getPointsCenter = function getPointsCenter(points) {\n var centerX = 0;\n var centerY = 0;\n\n if (points.length > 0) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n centerX += point.x;\n centerY += point.y;\n }\n\n centerX /= points.length;\n centerY /= points.length;\n }\n\n return {\n x: centerX,\n y: centerY\n };\n};\nvar squareDist = function squareDist(a, b) {\n return Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2);\n};\nvar pointLineSquareDist = function pointLineSquareDist(point, line) {\n var x1 = line.x1;\n var y1 = line.y1;\n var x2 = line.x2 - x1;\n var y2 = line.y2 - y1;\n var px = point.x - x1;\n var py = point.y - y1;\n var dotprod = px * x2 + py * y2;\n var projlenSq;\n\n if (dotprod <= 0) {\n projlenSq = 0;\n } else {\n px = x2 - px;\n py = y2 - py;\n dotprod = px * x2 + py * y2;\n\n if (dotprod <= 0) {\n projlenSq = 0;\n } else {\n projlenSq = dotprod * dotprod / (x2 * x2 + y2 * y2);\n }\n }\n\n var lenSq = px * px + py * py - projlenSq;\n\n if (lenSq < 0) {\n lenSq = 0;\n }\n\n return lenSq;\n};\nvar isPointsOverlap = function isPointsOverlap(p1, p2, e) {\n if (e === void 0) {\n e = 1e-3;\n }\n\n return Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2) < Math.pow(e, 2);\n};\n/**\n * 点到矩形的距离的平方:矩形内部点视作距离为0,外部的点若投影落在矩形边上则为点到矩形边的最近的垂直距离,否则为点到矩形顶点的距离,\n * @param point IPoint\n * @param rect IRect\n */\n\nvar pointRectSquareDist = function pointRectSquareDist(point, rect) {\n var isLeft = point.x < rect.x;\n var isRight = point.x > rect.x + rect.width;\n var isTop = point.y > rect.y + rect.height;\n var isBottom = point.y < rect.y;\n var isPointOutside = isLeft || isRight || isTop || isBottom;\n\n if (!isPointOutside) {\n return 0;\n }\n\n if (isTop && !isLeft && !isRight) {\n return Math.pow(rect.y + rect.height - point.y, 2);\n }\n\n if (isBottom && !isLeft && !isRight) {\n return Math.pow(point.y - rect.y, 2);\n }\n\n if (isLeft && !isTop && !isBottom) {\n return Math.pow(rect.x - point.x, 2);\n }\n\n if (isRight && !isTop && !isBottom) {\n return Math.pow(rect.x + rect.width - point.x, 2);\n }\n\n var dx = Math.min(Math.abs(rect.x - point.x), Math.abs(rect.x + rect.width - point.x));\n var dy = Math.min(Math.abs(rect.y - point.y), Math.abs(rect.y + rect.height - point.y));\n return dx * dx + dy * dy;\n};\n/**\n * point to line distance\n * @param {array} line 线的四个顶点 [x1, y1, x2, y2]\n * @param {object} point 坐标点 {x, y}\n * @return {Number|NaN} distance\n */\n\nvar pointLineDistance = function pointLineDistance(line, point) {\n var x1 = line[0],\n y1 = line[1],\n x2 = line[2],\n y2 = line[3];\n var x = point.x,\n y = point.y;\n var d = [x2 - x1, y2 - y1];\n\n if (_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].exactEquals(d, [0, 0])) {\n return NaN;\n }\n\n var u = [-d[1], d[0]]; // @ts-ignore\n\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize(u, u);\n var a = [x - x1, y - y1]; // @ts-ignore\n\n return Math.abs(_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].dot(a, u));\n};\n/**\n * Linearly interpolate between start and end, where alpha is the percent distance along the line.\n * alpha = 0 will be start, and alpha = 1 will be end.\n * @param {Number} start\n * @param {Number} end\n * @param {Number} alpha interpolation factor, typically in the closed interval [0, 1]\n * @returns\n */\n\nvar lerp = function lerp(start, end, alpha) {\n return start + (end - start) * alpha;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL21hdGguanM/YWRjNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRDtBQUNmO0FBQzNDLGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCLFlBQVksTUFBTTtBQUNsQixZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCOzs7QUFHTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCLFlBQVksV0FBVztBQUN2Qjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBLGlCQUFpQixtQkFBbUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxNQUFNO0FBQ2pCLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4Qjs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25CLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSxzREFBSTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0RBQUk7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUUsc0RBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixVQUFVO0FBQzNCOztBQUVBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPLDBEQUFPO0FBQ2Q7QUFDQTs7QUFFQSxNQUFNLDBEQUFPO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQSx3QkFBd0I7O0FBRXhCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUI7O0FBRW5CLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFZTtBQUNUO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixPQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUMsc0JBQXNCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxNQUFNO0FBQ2xCLFlBQVksT0FBTyxZQUFZO0FBQy9CLFlBQVksV0FBVztBQUN2Qjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU0sc0RBQUk7QUFDVjtBQUNBOztBQUVBLHdCQUF3Qjs7QUFFeEIsRUFBRSxzREFBSTtBQUNOLDJCQUEyQjs7QUFFM0Isa0JBQWtCLHNEQUFJO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL21hdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXQzLCB2ZWMzLCBleHQsIHZlYzIgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyBpc0FycmF5LCBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbi8qKlxuICog5a+55q+U5a+56LGh77yM55So5LqO5a+56LGh5pWw57uE5o6S5bqPXG4gKiBAcGFyYW0gICB7c3RyaW5nfSAgICAgICBhdHRyaWJ1dGVOYW1lICDmjpLluo/kvp3mja7nmoTlrZfmrrXlkI3np7BcbiAqIEBwYXJhbSAgIHtudW1iZXJ9ICAgICAgIG1pbiAgICDmnIDlsI/lgLxcbiAqIEBwYXJhbSAgIHtudW1iZXJ9ICAgICAgIG1heCAgICDmnIDlpKflgLxcbiAqIEByZXR1cm4gIHtib29sZWFufSAgICAgIGJvb2wgICDluIPlsJRcbiAqL1xuXG5leHBvcnQgdmFyIGNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChtLCBuKSB7XG4gICAgcmV0dXJuIG1bYXR0cmlidXRlTmFtZV0gLSBuW2F0dHJpYnV0ZU5hbWVdO1xuICB9O1xufTtcbi8qKlxuICog5piv5ZCm5Zyo5Yy66Ze05YaFXG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICB2YWx1ZSAg5YC8XG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICBtaW4gICAg5pyA5bCP5YC8XG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICBtYXggICAg5pyA5aSn5YC8XG4gKiBAcmV0dXJuICB7Ym9vbGVhbn0gICAgICBib29sICAg5biD5bCUXG4gKi9cblxudmFyIGlzQmV0d2VlbiA9IGZ1bmN0aW9uIGlzQmV0d2Vlbih2YWx1ZSwgbWluLCBtYXgpIHtcbiAgcmV0dXJuIHZhbHVlID49IG1pbiAmJiB2YWx1ZSA8PSBtYXg7XG59O1xuLyoqXG4gKiDojrflj5bkuKTmnaHnur/mrrXnmoTkuqTngrlcbiAqIEBwYXJhbSAge1BvaW50fSAgcDAg56ys5LiA5p2h57q/5q616LW354K5XG4gKiBAcGFyYW0gIHtQb2ludH0gIHAxIOesrOS4gOadoee6v+autee7iOeCuVxuICogQHBhcmFtICB7UG9pbnR9ICBwMiDnrKzkuozmnaHnur/mrrXotbfngrlcbiAqIEBwYXJhbSAge1BvaW50fSAgcDMg56ys5LqM5p2h57q/5q6157uI54K5XG4gKiBAcmV0dXJuIHtQb2ludH0gIOS6pOeCuVxuICovXG5cblxuZXhwb3J0IHZhciBnZXRMaW5lSW50ZXJzZWN0ID0gZnVuY3Rpb24gZ2V0TGluZUludGVyc2VjdChwMCwgcDEsIHAyLCBwMykge1xuICB2YXIgdG9sZXJhbmNlID0gMC4wMDAxO1xuICB2YXIgRSA9IHtcbiAgICB4OiBwMi54IC0gcDAueCxcbiAgICB5OiBwMi55IC0gcDAueVxuICB9O1xuICB2YXIgRDAgPSB7XG4gICAgeDogcDEueCAtIHAwLngsXG4gICAgeTogcDEueSAtIHAwLnlcbiAgfTtcbiAgdmFyIEQxID0ge1xuICAgIHg6IHAzLnggLSBwMi54LFxuICAgIHk6IHAzLnkgLSBwMi55XG4gIH07XG4gIHZhciBrcm9zcyA9IEQwLnggKiBEMS55IC0gRDAueSAqIEQxLng7XG4gIHZhciBzcXJLcm9zcyA9IGtyb3NzICoga3Jvc3M7XG4gIHZhciBpbnZlcnRLcm9zcyA9IDEgLyBrcm9zcztcbiAgdmFyIHNxckxlbjAgPSBEMC54ICogRDAueCArIEQwLnkgKiBEMC55O1xuICB2YXIgc3FyTGVuMSA9IEQxLnggKiBEMS54ICsgRDEueSAqIEQxLnk7XG5cbiAgaWYgKHNxcktyb3NzID4gdG9sZXJhbmNlICogc3FyTGVuMCAqIHNxckxlbjEpIHtcbiAgICB2YXIgcyA9IChFLnggKiBEMS55IC0gRS55ICogRDEueCkgKiBpbnZlcnRLcm9zcztcbiAgICB2YXIgdCA9IChFLnggKiBEMC55IC0gRS55ICogRDAueCkgKiBpbnZlcnRLcm9zcztcbiAgICBpZiAoIWlzQmV0d2VlbihzLCAwLCAxKSB8fCAhaXNCZXR3ZWVuKHQsIDAsIDEpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgeDogcDAueCArIHMgKiBEMC54LFxuICAgICAgeTogcDAueSArIHMgKiBEMC55XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcbi8qKlxuICogcG9pbnQgYW5kIHJlY3Rhbmd1bGFyIGludGVyc2VjdGlvbiBwb2ludFxuICogQHBhcmFtICB7SVJlY3R9IHJlY3QgIHJlY3RcbiAqIEBwYXJhbSAge1BvaW50fSBwb2ludCBwb2ludFxuICogQHJldHVybiB7UG9pbnRQb2ludH0gcnN0O1xuICovXG5cbmV4cG9ydCB2YXIgZ2V0UmVjdEludGVyc2VjdEJ5UG9pbnQgPSBmdW5jdGlvbiBnZXRSZWN0SW50ZXJzZWN0QnlQb2ludChyZWN0LCBwb2ludCkge1xuICB2YXIgeCA9IHJlY3QueCxcbiAgICAgIHkgPSByZWN0LnksXG4gICAgICB3aWR0aCA9IHJlY3Qud2lkdGgsXG4gICAgICBoZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgdmFyIGN4ID0geCArIHdpZHRoIC8gMjtcbiAgdmFyIGN5ID0geSArIGhlaWdodCAvIDI7XG4gIHZhciBwb2ludHMgPSBbXTtcbiAgdmFyIGNlbnRlciA9IHtcbiAgICB4OiBjeCxcbiAgICB5OiBjeVxuICB9O1xuICBwb2ludHMucHVzaCh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pO1xuICBwb2ludHMucHVzaCh7XG4gICAgeDogeCArIHdpZHRoLFxuICAgIHk6IHlcbiAgfSk7XG4gIHBvaW50cy5wdXNoKHtcbiAgICB4OiB4ICsgd2lkdGgsXG4gICAgeTogeSArIGhlaWdodFxuICB9KTtcbiAgcG9pbnRzLnB1c2goe1xuICAgIHg6IHgsXG4gICAgeTogeSArIGhlaWdodFxuICB9KTtcbiAgcG9pbnRzLnB1c2goe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KTtcbiAgdmFyIHJzdCA9IG51bGw7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICByc3QgPSBnZXRMaW5lSW50ZXJzZWN0KHBvaW50c1tpIC0gMV0sIHBvaW50c1tpXSwgY2VudGVyLCBwb2ludCk7XG5cbiAgICBpZiAocnN0KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcnN0O1xufTtcbi8qKlxuICogZ2V0IHBvaW50IGFuZCBjaXJjbGUgaW5JbnRlcnNlY3RcbiAqIEBwYXJhbSB7SUNpcmNsZX0gY2lyY2xlIOWchueCue+8jHgseSxyXG4gKiBAcGFyYW0ge1BvaW50fSBwb2ludCDngrkgeCx5XG4gKiBAcmV0dXJuIHtQb2ludH0gYXBwbGllZCBwb2ludFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0Q2lyY2xlSW50ZXJzZWN0QnlQb2ludCA9IGZ1bmN0aW9uIGdldENpcmNsZUludGVyc2VjdEJ5UG9pbnQoY2lyY2xlLCBwb2ludCkge1xuICB2YXIgY3ggPSBjaXJjbGUueCxcbiAgICAgIGN5ID0gY2lyY2xlLnksXG4gICAgICByID0gY2lyY2xlLnI7XG4gIHZhciB4ID0gcG9pbnQueCxcbiAgICAgIHkgPSBwb2ludC55O1xuICB2YXIgZHggPSB4IC0gY3g7XG4gIHZhciBkeSA9IHkgLSBjeTtcblxuICBpZiAoZHggKiBkeCArIGR5ICogZHkgPCByICogcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuKGR5IC8gZHgpO1xuICByZXR1cm4ge1xuICAgIHg6IGN4ICsgTWF0aC5hYnMociAqIE1hdGguY29zKGFuZ2xlKSkgKiBNYXRoLnNpZ24oZHgpLFxuICAgIHk6IGN5ICsgTWF0aC5hYnMociAqIE1hdGguc2luKGFuZ2xlKSkgKiBNYXRoLnNpZ24oZHkpXG4gIH07XG59O1xuLyoqXG4gKiBnZXQgcG9pbnQgYW5kIGVsbGlwc2UgaW5JbnRlcnNlY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBlbGxpcHNlIOakreWchiB4LHkscngscnlcbiAqIEBwYXJhbSB7T2JqZWN0fSBwb2ludCDngrkgeCx5XG4gKiBAcmV0dXJuIHtvYmplY3R9IGFwcGxpZWQgcG9pbnRcbiAqL1xuXG5leHBvcnQgdmFyIGdldEVsbGlwc2VJbnRlcnNlY3RCeVBvaW50ID0gZnVuY3Rpb24gZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQoZWxsaXBzZSwgcG9pbnQpIHtcbiAgdmFyIGEgPSBlbGxpcHNlLnJ4O1xuICB2YXIgYiA9IGVsbGlwc2Uucnk7XG4gIHZhciBjeCA9IGVsbGlwc2UueDtcbiAgdmFyIGN5ID0gZWxsaXBzZS55O1xuICB2YXIgZHggPSBwb2ludC54IC0gY3g7XG4gIHZhciBkeSA9IHBvaW50LnkgLSBjeTsgLy8g55u05o6l6YCa6L+HIHgseSDmsYLlpLnop5LvvIzmsYLlh7rmnaXnmoTojIPlm7TmmK8gLVBJLCBQSVxuXG4gIHZhciBhbmdsZSA9IE1hdGguYXRhbjIoZHkgLyBiLCBkeCAvIGEpO1xuXG4gIGlmIChhbmdsZSA8IDApIHtcbiAgICBhbmdsZSArPSAyICogTWF0aC5QSTsgLy8g6L2s5o2i5YiwIDDvvIwyUElcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogY3ggKyBhICogTWF0aC5jb3MoYW5nbGUpLFxuICAgIHk6IGN5ICsgYiAqIE1hdGguc2luKGFuZ2xlKVxuICB9O1xufTtcbi8qKlxuICogY29vcmRpbmF0ZSBtYXRyaXggdHJhbnNmb3JtYXRpb25cbiAqIEBwYXJhbSAge251bWJlcn0gcG9pbnQgICBjb29yZGluYXRlXG4gKiBAcGFyYW0gIHtNYXRyaXh9IG1hdHJpeCAgbWF0cml4XG4gKiBAcGFyYW0gIHtudW1iZXJ9IHRhZyAgICAgY291bGQgYmUgMCBvciAxXG4gKiBAcmV0dXJuIHtQb2ludH0gdHJhbnNmb3JtZWQgcG9pbnRcbiAqL1xuXG5leHBvcnQgdmFyIGFwcGx5TWF0cml4ID0gZnVuY3Rpb24gYXBwbHlNYXRyaXgocG9pbnQsIG1hdHJpeCwgdGFnKSB7XG4gIGlmICh0YWcgPT09IHZvaWQgMCkge1xuICAgIHRhZyA9IDE7XG4gIH1cblxuICB2YXIgdmVjdG9yID0gW3BvaW50LngsIHBvaW50LnksIHRhZ107XG5cbiAgaWYgKCFtYXRyaXggfHwgaXNOYU4obWF0cml4WzBdKSkge1xuICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZlYzMudHJhbnNmb3JtTWF0Myh2ZWN0b3IsIHZlY3RvciwgbWF0cml4KTtcbiAgcmV0dXJuIHtcbiAgICB4OiB2ZWN0b3JbMF0sXG4gICAgeTogdmVjdG9yWzFdXG4gIH07XG59O1xuLyoqXG4gKiBjb29yZGluYXRlIG1hdHJpeCBpbnZlcnQgdHJhbnNmb3JtYXRpb25cbiAqIEBwYXJhbSAge251bWJlcn0gcG9pbnQgICBjb29yZGluYXRlXG4gKiBAcGFyYW0gIHtudW1iZXJ9IG1hdHJpeCAgbWF0cml4XG4gKiBAcGFyYW0gIHtudW1iZXJ9IHRhZyAgICAgY291bGQgYmUgMCBvciAxXG4gKiBAcmV0dXJuIHtvYmplY3R9IHRyYW5zZm9ybWVkIHBvaW50XG4gKi9cblxuZXhwb3J0IHZhciBpbnZlcnRNYXRyaXggPSBmdW5jdGlvbiBpbnZlcnRNYXRyaXgocG9pbnQsIG1hdHJpeCwgdGFnKSB7XG4gIGlmICh0YWcgPT09IHZvaWQgMCkge1xuICAgIHRhZyA9IDE7XG4gIH1cblxuICBpZiAoIW1hdHJpeCB8fCBpc05hTihtYXRyaXhbMF0pKSB7XG4gICAgbWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB9XG5cbiAgdmFyIGludmVyc2VkTWF0cml4ID0gbWF0My5pbnZlcnQoWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdLCBtYXRyaXgpO1xuXG4gIGlmICghaW52ZXJzZWRNYXRyaXgpIHtcbiAgICBpbnZlcnNlZE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZhciB2ZWN0b3IgPSBbcG9pbnQueCwgcG9pbnQueSwgdGFnXTtcbiAgdmVjMy50cmFuc2Zvcm1NYXQzKHZlY3RvciwgdmVjdG9yLCBpbnZlcnNlZE1hdHJpeCk7XG4gIHJldHVybiB7XG4gICAgeDogdmVjdG9yWzBdLFxuICAgIHk6IHZlY3RvclsxXVxuICB9O1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBwMSBGaXJzdCBjb29yZGluYXRlXG4gKiBAcGFyYW0gcDIgc2Vjb25kIGNvb3JkaW5hdGVcbiAqIEBwYXJhbSBwMyB0aHJlZSBjb29yZGluYXRlXG4gKi9cblxuZXhwb3J0IHZhciBnZXRDaXJjbGVDZW50ZXJCeVBvaW50cyA9IGZ1bmN0aW9uIGdldENpcmNsZUNlbnRlckJ5UG9pbnRzKHAxLCBwMiwgcDMpIHtcbiAgdmFyIGEgPSBwMS54IC0gcDIueDtcbiAgdmFyIGIgPSBwMS55IC0gcDIueTtcbiAgdmFyIGMgPSBwMS54IC0gcDMueDtcbiAgdmFyIGQgPSBwMS55IC0gcDMueTtcbiAgdmFyIGUgPSAocDEueCAqIHAxLnggLSBwMi54ICogcDIueCAtIHAyLnkgKiBwMi55ICsgcDEueSAqIHAxLnkpIC8gMjtcbiAgdmFyIGYgPSAocDEueCAqIHAxLnggLSBwMy54ICogcDMueCAtIHAzLnkgKiBwMy55ICsgcDEueSAqIHAxLnkpIC8gMjtcbiAgdmFyIGRlbm9taW5hdG9yID0gYiAqIGMgLSBhICogZDtcbiAgcmV0dXJuIHtcbiAgICB4OiAtKGQgKiBlIC0gYiAqIGYpIC8gZGVub21pbmF0b3IsXG4gICAgeTogLShhICogZiAtIGMgKiBlKSAvIGRlbm9taW5hdG9yXG4gIH07XG59O1xuLyoqXG4gKiBnZXQgZGlzdGFuY2UgYnkgdHdvIHBvaW50c1xuICogQHBhcmFtIHAxIGZpcnN0IHBvaW50XG4gKiBAcGFyYW0gcDIgc2Vjb25kIHBvaW50XG4gKi9cblxuZXhwb3J0IHZhciBkaXN0YW5jZSA9IGZ1bmN0aW9uIGRpc3RhbmNlKHAxLCBwMikge1xuICB2YXIgdnggPSBwMS54IC0gcDIueDtcbiAgdmFyIHZ5ID0gcDEueSAtIHAyLnk7XG4gIHJldHVybiBNYXRoLnNxcnQodnggKiB2eCArIHZ5ICogdnkpO1xufTtcbi8qKlxuICogc2NhbGUgbWF0cml4XG4gKiBAcGFyYW0gbWF0cml4IFsgW10sIFtdLCBbXSBdXG4gKiBAcGFyYW0gcmF0aW9cbiAqL1xuXG5leHBvcnQgdmFyIHNjYWxlTWF0cml4ID0gZnVuY3Rpb24gc2NhbGVNYXRyaXgobWF0cml4LCByYXRpbykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIG1hdHJpeC5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHtcbiAgICB2YXIgbmV3Um93ID0gW107XG4gICAgcm93LmZvckVhY2goZnVuY3Rpb24gKHYpIHtcbiAgICAgIG5ld1Jvdy5wdXNoKHYgKiByYXRpbyk7XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2gobmV3Um93KTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyoqXG4gKiBGbG95ZCBXYXJzaGFsbCBhbGdvcml0aG0gZm9yIHNob3J0ZXN0IHBhdGggZGlzdGFuY2VzIG1hdHJpeFxuICogQHBhcmFtICB7YXJyYXl9IGFkak1hdHJpeCAgIGFkamFjZW5jeSBtYXRyaXhcbiAqIEByZXR1cm4ge2FycmF5fSBkaXN0YW5jZXMgICBzaG9ydGVzdCBwYXRoIGRpc3RhbmNlcyBtYXRyaXhcbiAqL1xuXG5leHBvcnQgdmFyIGZsb3lkV2Fyc2hhbGwgPSBmdW5jdGlvbiBmbG95ZFdhcnNoYWxsKGFkak1hdHJpeCkge1xuICAvLyBpbml0aWFsaXplXG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqTWF0cml4Lmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgIGRpc3RbaV0gPSBbXTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaiArPSAxKSB7XG4gICAgICBpZiAoaSA9PT0gaikge1xuICAgICAgICBkaXN0W2ldW2pdID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoYWRqTWF0cml4W2ldW2pdID09PSAwIHx8ICFhZGpNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkak1hdHJpeFtpXVtqXTtcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gZmxveWRcblxuXG4gIGZvciAodmFyIGsgPSAwOyBrIDwgc2l6ZTsgayArPSAxKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpICs9IDEpIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaiArPSAxKSB7XG4gICAgICAgIGlmIChkaXN0W2ldW2pdID4gZGlzdFtpXVtrXSArIGRpc3Rba11bal0pIHtcbiAgICAgICAgICBkaXN0W2ldW2pdID0gZGlzdFtpXVtrXSArIGRpc3Rba11bal07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlzdDtcbn07XG4vKipcbiAqIGdldCBhZGphY2VuY3kgbWF0cml4XG4gKiBAcGFyYW0gZGF0YSBncmFwaCBkYXRhXG4gKiBAcGFyYW0gZGlyZWN0ZWQgd2hldGhlciBpdCdzIGEgZGlyZWN0ZWQgZ3JhcGhcbiAqL1xuXG5leHBvcnQgdmFyIGdldEFkak1hdHJpeCA9IGZ1bmN0aW9uIGdldEFkak1hdHJpeChkYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzLFxuICAgICAgZWRnZXMgPSBkYXRhLmVkZ2VzO1xuICB2YXIgbWF0cml4ID0gW107IC8vIG1hcCBub2RlIHdpdGggaW5kZXggaW4gZGF0YS5ub2Rlc1xuXG4gIHZhciBub2RlTWFwID0ge307XG5cbiAgaWYgKCFub2Rlcykge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBub2RlcyBkYXRhIScpO1xuICB9XG5cbiAgaWYgKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IGk7XG4gICAgICB2YXIgcm93ID0gW107XG4gICAgICBtYXRyaXgucHVzaChyb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGVkZ2VzKSB7XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIHNvdXJjZSA9IGUuc291cmNlLFxuICAgICAgICAgIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgdmFyIHNJbmRleCA9IG5vZGVNYXBbc291cmNlXTtcbiAgICAgIHZhciB0SW5kZXggPSBub2RlTWFwW3RhcmdldF07XG4gICAgICBtYXRyaXhbc0luZGV4XVt0SW5kZXhdID0gMTtcblxuICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICBtYXRyaXhbdEluZGV4XVtzSW5kZXhdID0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtYXRyaXg7XG59O1xuLyoqXG4gKiDlubPnp7tncm91cFxuICogQHBhcmFtIGdyb3VwIEdyb3VwIOWunuS+i1xuICogQHBhcmFtIHZlYyDnp7vliqjlkJHph49cbiAqL1xuXG5leHBvcnQgdmFyIHRyYW5zbGF0ZSA9IGZ1bmN0aW9uIHRyYW5zbGF0ZShncm91cCwgdmVjKSB7XG4gIGdyb3VwLnRyYW5zbGF0ZSh2ZWMueCwgdmVjLnkpO1xufTtcbi8qKlxuICog56e75Yqo5Yiw5oyH5a6a5Z2Q5qCH54K5XG4gKiBAcGFyYW0gZ3JvdXAgR3JvdXAg5a6e5L6LXG4gKiBAcGFyYW0gcG9pbnQg56e75Yqo5Yiw55qE5Z2Q5qCH54K5XG4gKi9cblxuZXhwb3J0IHZhciBtb3ZlID0gZnVuY3Rpb24gbW92ZShncm91cCwgcG9pbnQsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgaWYgKGFuaW1hdGVDZmcgPT09IHZvaWQgMCkge1xuICAgIGFuaW1hdGVDZmcgPSB7XG4gICAgICBkdXJhdGlvbjogNTAwXG4gICAgfTtcbiAgfVxuXG4gIHZhciBtYXRyaXggPSBncm91cC5nZXRNYXRyaXgoKTtcblxuICBpZiAoIW1hdHJpeCkge1xuICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZhciBiYm94ID0gZ3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICB2YXIgdnggPSBwb2ludC54IC0gYmJveC5taW5YO1xuICB2YXIgdnkgPSBwb2ludC55IC0gYmJveC5taW5ZO1xuXG4gIGlmIChhbmltYXRlKSB7XG4gICAgdmFyIGR4XzEgPSB2eCAqIG1hdHJpeFswXTtcbiAgICB2YXIgZHlfMSA9IHZ5ICogbWF0cml4WzRdO1xuICAgIHZhciBsYXN0WF8xID0gMDtcbiAgICB2YXIgbGFzdFlfMSA9IDA7XG4gICAgdmFyIG5ld1hfMSA9IDA7XG4gICAgdmFyIG5ld1lfMSA9IDA7XG4gICAgZ3JvdXAuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgIG5ld1hfMSA9IGR4XzEgKiByYXRpbztcbiAgICAgIG5ld1lfMSA9IGR5XzEgKiByYXRpbztcbiAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3QnLCBuZXdYXzEgLSBsYXN0WF8xLCBuZXdZXzEgLSBsYXN0WV8xXV0pO1xuICAgICAgbGFzdFhfMSA9IG5ld1hfMTtcbiAgICAgIGxhc3RZXzEgPSBuZXdZXzE7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRyaXg6IG1hdHJpeFxuICAgICAgfTtcbiAgICB9LCBhbmltYXRlQ2ZnKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbW92ZWRNYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgdngsIHZ5XV0pO1xuICAgIGdyb3VwLnNldE1hdHJpeChtb3ZlZE1hdHJpeCk7XG4gIH1cbn07XG4vKipcbiAqIOe8qeaUviBncm91cFxuICogQHBhcmFtIGdyb3VwIEdyb3VwIOWunuS+i1xuICogQHBhcmFtIHBvaW50IOWcqHgg5ZKMIHkg5pa55ZCR5LiK55qE57yp5pS+5q+U5L6LXG4gKi9cblxuZXhwb3J0IHZhciBzY2FsZSA9IGZ1bmN0aW9uIHNjYWxlKGdyb3VwLCByYXRpbykge1xuICB2YXIgbWF0cml4ID0gZ3JvdXAuZ2V0TWF0cml4KCk7XG5cbiAgaWYgKCFtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gIH1cblxuICB2YXIgc2NhbGVYWSA9IHJhdGlvO1xuXG4gIGlmICghaXNBcnJheShyYXRpbykpIHtcbiAgICBzY2FsZVhZID0gW3JhdGlvLCByYXRpb107XG4gIH1cblxuICBpZiAoaXNBcnJheShyYXRpbykgJiYgcmF0aW8ubGVuZ3RoID09PSAxKSB7XG4gICAgc2NhbGVYWSA9IFtyYXRpb1swXSwgcmF0aW9bMF1dO1xuICB9XG5cbiAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sncycsIHNjYWxlWFlbMF0sIHNjYWxlWFlbMV1dXSk7XG4gIGdyb3VwLnNldE1hdHJpeChtYXRyaXgpO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBncm91cCBHcm91cCDlrp7kvotcbiAqIEBwYXJhbSByYXRpbyDpgInmi6nop5LluqZcbiAqL1xuXG5leHBvcnQgdmFyIHJvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZShncm91cCwgYW5nbGUpIHtcbiAgdmFyIG1hdHJpeCA9IGdyb3VwLmdldE1hdHJpeCgpO1xuXG4gIGlmICghbWF0cml4KSB7XG4gICAgbWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB9XG5cbiAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sncicsIGFuZ2xlXV0pO1xuICBncm91cC5zZXRNYXRyaXgobWF0cml4KTtcbn07XG5leHBvcnQgdmFyIGdldERlZ3JlZSA9IGZ1bmN0aW9uIGdldERlZ3JlZShuLCBub2RlSWR4TWFwLCBlZGdlcykge1xuICB2YXIgZGVncmVlcyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgZGVncmVlc1tpXSA9IDA7XG4gIH1cblxuICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUuc291cmNlKSB7XG4gICAgICBkZWdyZWVzW25vZGVJZHhNYXBbZS5zb3VyY2VdXSArPSAxO1xuICAgIH1cblxuICAgIGlmIChlLnRhcmdldCkge1xuICAgICAgZGVncmVlc1tub2RlSWR4TWFwW2UudGFyZ2V0XV0gKz0gMTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07IC8vIOWIpOaWreeCuVHmmK/lkKblnKhwMeWSjHAy55qE57q/5q615LiKXG5cbmZ1bmN0aW9uIG9uU2VnbWVudChwMSwgcDIsIHEpIHtcbiAgaWYgKChxWzBdIC0gcDFbMF0pICogKHAyWzFdIC0gcDFbMV0pID09PSAocDJbMF0gLSBwMVswXSkgKiAocVsxXSAtIHAxWzFdKSAmJiBNYXRoLm1pbihwMVswXSwgcDJbMF0pIDw9IHFbMF0gJiYgcVswXSA8PSBNYXRoLm1heChwMVswXSwgcDJbMF0pICYmIE1hdGgubWluKHAxWzFdLCBwMlsxXSkgPD0gcVsxXSAmJiBxWzFdIDw9IE1hdGgubWF4KHAxWzFdLCBwMlsxXSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbi8qKlxuICog5Yik5pat54K5UOWcqOWkmui+ueW9ouWGhS3lsITnur/ms5UuIEJvcnJvdyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvdXRpbC9ibG9iL21hc3Rlci9wYWNrYWdlcy9wYXRoLXV0aWwvc3JjL3BvaW50LWluLXBvbHlnb24udHNcbiAqIEBwYXJhbSBwb2ludHNcbiAqIEBwYXJhbSB4XG4gKiBAcGFyYW0geVxuICovXG5cblxuZXhwb3J0IHZhciBpc1BvaW50SW5Qb2x5Z29uID0gZnVuY3Rpb24gaXNQb2ludEluUG9seWdvbihwb2ludHMsIHgsIHkpIHtcbiAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gIHZhciBuID0gcG9pbnRzLmxlbmd0aDsgLy8g5Yik5pat5Lik5LiqZG91Ymxl5ZyoZXBz57K+5bqm5LiL55qE5aSn5bCP5YWz57O7XG5cbiAgdmFyIHRvbGVyYW5jZSA9IDFlLTY7XG5cbiAgZnVuY3Rpb24gZGNtcCh4VmFsdWUpIHtcbiAgICBpZiAoTWF0aC5hYnMoeFZhbHVlKSA8IHRvbGVyYW5jZSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHhWYWx1ZSA8IDAgPyAtMSA6IDE7XG4gIH1cblxuICBpZiAobiA8PSAyKSB7XG4gICAgLy8gc3ZnIOS4reeCueWwj+S6jiAzIOS4quaXtu+8jOS4jeaYvuekuu+8jOS5n+aXoOazleiiq+aLvuWPllxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgdmFyIHAxID0gcG9pbnRzW2ldO1xuICAgIHZhciBwMiA9IHBvaW50c1soaSArIDEpICUgbl07XG5cbiAgICBpZiAob25TZWdtZW50KHAxLCBwMiwgW3gsIHldKSkge1xuICAgICAgLy8g54K55Zyo5aSa6L655b2i5LiA5p2h6L655LiKXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IC8vIOWJjeS4gOS4quWIpOaWrW1pbihwMVsxXSxwMlsxXSk8UC55PD1tYXgocDFbMV0scDJbMV0pXG4gICAgLy8g5ZCO5LiA5Liq5Yik5pat6KKr5rWL54K5IOWcqCDlsITnur/kuI7ovrnkuqTngrkg55qE5bem6L65XG5cblxuICAgIGlmIChkY21wKHAxWzFdIC0geSkgPiAwICE9PSBkY21wKHAyWzFdIC0geSkgPiAwICYmIGRjbXAoeCAtICh5IC0gcDFbMV0pICogKHAxWzBdIC0gcDJbMF0pIC8gKHAxWzFdIC0gcDJbMV0pIC0gcDFbMF0pIDwgMCkge1xuICAgICAgaXNIaXQgPSAhaXNIaXQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGlzSGl0O1xufTsgLy8g5Yik5pat5Lik5LiqQkJveOaYr+WQpuebuOS6pFxuXG5leHBvcnQgdmFyIGludGVyc2VjdEJCb3ggPSBmdW5jdGlvbiBpbnRlcnNlY3RCQm94KGJveDEsIGJveDIpIHtcbiAgcmV0dXJuICEoYm94Mi5taW5YID4gYm94MS5tYXhYIHx8IGJveDIubWF4WCA8IGJveDEubWluWCB8fCBib3gyLm1pblkgPiBib3gxLm1heFkgfHwgYm94Mi5tYXhZIDwgYm94MS5taW5ZKTtcbn07XG5cbnZhciBsaW5lSW50ZXJzZWN0UG9seWdvbiA9IGZ1bmN0aW9uIGxpbmVJbnRlcnNlY3RQb2x5Z29uKGxpbmVzLCBsaW5lKSB7XG4gIHZhciBpc0ludGVyc2VjdCA9IGZhbHNlO1xuICBlYWNoKGxpbmVzLCBmdW5jdGlvbiAobCkge1xuICAgIGlmIChnZXRMaW5lSW50ZXJzZWN0KGwuZnJvbSwgbC50bywgbGluZS5mcm9tLCBsaW5lLnRvKSkge1xuICAgICAgaXNJbnRlcnNlY3QgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBpc0ludGVyc2VjdDtcbn07XG4vKipcbiAqIOWIpOaWreS4pOS4qnBvbHlnb27mmK/lkKbnm7jkuqTjgIJcbiAqIGJvcnJvdyBmcm9tIEBhbnR2L3BhdGgtdXRpbFxuICogQHBhcmFtIHBvaW50czEgcG9seWdvbjHnmoTpobbngrnmlbDnu4RcbiAqIEBwYXJhbSBwb2ludHMyIHBvbHlnb24y55qE6aG254K55pWw57uEXG4gKi9cblxuXG5leHBvcnQgdmFyIGlzUG9seWdvbnNJbnRlcnNlY3QgPSBmdW5jdGlvbiBpc1BvbHlnb25zSW50ZXJzZWN0KHBvaW50czEsIHBvaW50czIpIHtcbiAgdmFyIGdldEJCb3ggPSBmdW5jdGlvbiBnZXRCQm94KHBvaW50cykge1xuICAgIHZhciB4QXJyID0gcG9pbnRzLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIHBbMF07XG4gICAgfSk7XG4gICAgdmFyIHlBcnIgPSBwb2ludHMubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICByZXR1cm4gcFsxXTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbWluWDogTWF0aC5taW4uYXBwbHkobnVsbCwgeEFyciksXG4gICAgICBtYXhYOiBNYXRoLm1heC5hcHBseShudWxsLCB4QXJyKSxcbiAgICAgIG1pblk6IE1hdGgubWluLmFwcGx5KG51bGwsIHlBcnIpLFxuICAgICAgbWF4WTogTWF0aC5tYXguYXBwbHkobnVsbCwgeUFycilcbiAgICB9O1xuICB9O1xuXG4gIHZhciBwYXJzZVRvTGluZXMgPSBmdW5jdGlvbiBwYXJzZVRvTGluZXMocG9pbnRzKSB7XG4gICAgdmFyIGxpbmVzID0gW107XG4gICAgdmFyIGNvdW50ID0gcG9pbnRzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICAgIHZhciBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgIHZhciBuZXh0ID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgIGxpbmVzLnB1c2goe1xuICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgeDogcG9pbnRbMF0sXG4gICAgICAgICAgeTogcG9pbnRbMV1cbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB4OiBuZXh0WzBdLFxuICAgICAgICAgIHk6IG5leHRbMV1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHZhciBmaXJzdCA9IHBvaW50c1swXTtcbiAgICAgIHZhciBsYXN0ID0gcG9pbnRzW2NvdW50IC0gMV07XG4gICAgICBsaW5lcy5wdXNoKHtcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHg6IGxhc3RbMF0sXG4gICAgICAgICAgeTogbGFzdFsxXVxuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHg6IGZpcnN0WzBdLFxuICAgICAgICAgIHk6IGZpcnN0WzFdXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfTsgLy8g56m65pWw57uE77yM5oiW6ICF5LiA5Liq54K56L+U5ZueIGZhbHNlXG5cblxuICBpZiAocG9pbnRzMS5sZW5ndGggPCAyIHx8IHBvaW50czIubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBiYm94MSA9IGdldEJCb3gocG9pbnRzMSk7XG4gIHZhciBiYm94MiA9IGdldEJCb3gocG9pbnRzMik7IC8vIOWIpOWumuWMheWbtOebkuaYr+WQpuebuOS6pO+8jOavlOWIpOWumueCueaYr+WQpuWcqOWkmui+ueW9ouWGheimgeW/q+eahOWkmu+8jOWPr+S7peetm+mAieaOieWkp+WkmuaVsOaDheWGtVxuXG4gIGlmICghaW50ZXJzZWN0QkJveChiYm94MSwgYmJveDIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGlzSW4gPSBmYWxzZTsgLy8g5Yik5a6a54K55piv5ZCm5Zyo5aSa6L655b2i5YaF6YOo77yM5LiA5pem5pyJ5LiA5Liq54K55Zyo5Y+m5LiA5Liq5aSa6L655b2i5YaF77yM5YiZ6L+U5ZueXG5cbiAgZWFjaChwb2ludHMyLCBmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBpZiAoaXNQb2ludEluUG9seWdvbihwb2ludHMxLCBwb2ludFswXSwgcG9pbnRbMV0pKSB7XG4gICAgICBpc0luID0gdHJ1ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChpc0luKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBlYWNoKHBvaW50czEsIGZ1bmN0aW9uIChwb2ludCkge1xuICAgIGlmIChpc1BvaW50SW5Qb2x5Z29uKHBvaW50czIsIHBvaW50WzBdLCBwb2ludFsxXSkpIHtcbiAgICAgIGlzSW4gPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGlzSW4pIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhciBsaW5lczEgPSBwYXJzZVRvTGluZXMocG9pbnRzMSk7XG4gIHZhciBsaW5lczIgPSBwYXJzZVRvTGluZXMocG9pbnRzMik7XG4gIHZhciBpc0ludGVyc2VjdCA9IGZhbHNlO1xuICBlYWNoKGxpbmVzMiwgZnVuY3Rpb24gKGxpbmUpIHtcbiAgICBpZiAobGluZUludGVyc2VjdFBvbHlnb24obGluZXMxLCBsaW5lKSkge1xuICAgICAgaXNJbnRlcnNlY3QgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBpc0ludGVyc2VjdDtcbn07XG5cbnZhciBMaW5lID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGluZSh4MSwgeTEsIHgyLCB5Mikge1xuICAgIHRoaXMueDEgPSB4MTtcbiAgICB0aGlzLnkxID0geTE7XG4gICAgdGhpcy54MiA9IHgyO1xuICAgIHRoaXMueTIgPSB5MjtcbiAgfVxuXG4gIExpbmUucHJvdG90eXBlLmdldEJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1pblggPSBNYXRoLm1pbih0aGlzLngxLCB0aGlzLngyKTtcbiAgICB2YXIgbWluWSA9IE1hdGgubWluKHRoaXMueTEsIHRoaXMueTIpO1xuICAgIHZhciBtYXhYID0gTWF0aC5tYXgodGhpcy54MSwgdGhpcy54Mik7XG4gICAgdmFyIG1heFkgPSBNYXRoLm1heCh0aGlzLnkxLCB0aGlzLnkyKTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgeDogbWluWCxcbiAgICAgIHk6IG1pblksXG4gICAgICBtaW5YOiBtaW5YLFxuICAgICAgbWluWTogbWluWSxcbiAgICAgIG1heFg6IG1heFgsXG4gICAgICBtYXhZOiBtYXhZLFxuICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICAgIH07XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICByZXR1cm4gTGluZTtcbn0oKTtcblxuZXhwb3J0IHsgTGluZSB9O1xuZXhwb3J0IHZhciBnZXRCQm94Qm91bmRMaW5lID0gZnVuY3Rpb24gZ2V0QkJveEJvdW5kTGluZShiYm94LCBkaXJlY3Rpb24pIHtcbiAgdmFyIGJvdW5kcyA9IHtcbiAgICB0b3A6IFtiYm94Lm1pblgsIGJib3gubWluWSwgYmJveC5tYXhYLCBiYm94Lm1pblldLFxuICAgIGxlZnQ6IFtiYm94Lm1pblgsIGJib3gubWluWSwgYmJveC5taW5YLCBiYm94Lm1heFldLFxuICAgIGJvdHRvbTogW2Jib3gubWluWCwgYmJveC5tYXhZLCBiYm94Lm1heFgsIGJib3gubWF4WV0sXG4gICAgcmlnaHQ6IFtiYm94Lm1heFgsIGJib3gubWluWSwgYmJveC5tYXhYLCBiYm94Lm1heFldXG4gIH07XG4gIHJldHVybiBib3VuZHNbZGlyZWN0aW9uXTtcbn07XG4vKipcbiAqIOiuoeeul+S4pOadoee6v+auteebuOS6pOaXtu+8jOebuOS6pOeCueWvueesrOS4gOadoee6v+auteS4iueahOWIhuWJsuavlOS+i1xuICovXG5cbnZhciBmcmFjdGlvbkFsb25nTGluZUEgPSBmdW5jdGlvbiBmcmFjdGlvbkFsb25nTGluZUEobGEsIGxiKSB7XG4gIHZhciB1YVQgPSAobGIueDIgLSBsYi54MSkgKiAobGEueTEgLSBsYi55MSkgLSAobGIueTIgLSBsYi55MSkgKiAobGEueDEgLSBsYi54MSk7XG4gIHZhciB1YlQgPSAobGEueDIgLSBsYS54MSkgKiAobGEueTEgLSBsYi55MSkgLSAobGEueTIgLSBsYS55MSkgKiAobGEueDEgLSBsYi54MSk7XG4gIHZhciB1QiA9IChsYi55MiAtIGxiLnkxKSAqIChsYS54MiAtIGxhLngxKSAtIChsYi54MiAtIGxiLngxKSAqIChsYS55MiAtIGxhLnkxKTtcblxuICBpZiAodUIpIHtcbiAgICB2YXIgdWEgPSB1YVQgLyB1QjtcbiAgICB2YXIgdWIgPSB1YlQgLyB1QjtcblxuICAgIGlmICh1YSA+PSAwICYmIHVhIDw9IDEgJiYgdWIgPj0gMCAmJiB1YiA8PSAxKSB7XG4gICAgICByZXR1cm4gdWE7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbn07XG5cbmV4cG9ydCB2YXIgaXRlbUludGVyc2VjdEJ5TGluZSA9IGZ1bmN0aW9uIGl0ZW1JbnRlcnNlY3RCeUxpbmUoaXRlbSwgbGluZSkge1xuICB2YXIgZGlyZWN0aW9ucyA9IFsndG9wJywgJ2xlZnQnLCAnYm90dG9tJywgJ3JpZ2h0J107XG4gIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gIHZhciBjb3VudEludGVyc2VjdGlvbnMgPSAwO1xuICB2YXIgaW50ZXJzZWN0aW9ucyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIF9hID0gZ2V0QkJveEJvdW5kTGluZShiYm94LCBkaXJlY3Rpb25zW2ldKSxcbiAgICAgICAgeDEgPSBfYVswXSxcbiAgICAgICAgeTEgPSBfYVsxXSxcbiAgICAgICAgeDIgPSBfYVsyXSxcbiAgICAgICAgeTIgPSBfYVszXTtcblxuICAgIGludGVyc2VjdGlvbnNbaV0gPSBnZXRMaW5lSW50ZXJzZWN0KHtcbiAgICAgIHg6IGxpbmUueDEsXG4gICAgICB5OiBsaW5lLnkxXG4gICAgfSwge1xuICAgICAgeDogbGluZS54MixcbiAgICAgIHk6IGxpbmUueTJcbiAgICB9LCB7XG4gICAgICB4OiB4MSxcbiAgICAgIHk6IHkxXG4gICAgfSwge1xuICAgICAgeDogeDIsXG4gICAgICB5OiB5MlxuICAgIH0pO1xuXG4gICAgaWYgKGludGVyc2VjdGlvbnNbaV0pIHtcbiAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyArPSAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbaW50ZXJzZWN0aW9ucywgY291bnRJbnRlcnNlY3Rpb25zXTtcbn07XG5leHBvcnQgdmFyIGZyYWN0aW9uVG9MaW5lID0gZnVuY3Rpb24gZnJhY3Rpb25Ub0xpbmUoaXRlbSwgbGluZSkge1xuICB2YXIgZGlyZWN0aW9ucyA9IFsndG9wJywgJ2xlZnQnLCAnYm90dG9tJywgJ3JpZ2h0J107XG4gIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gIHZhciBtaW5EaXN0YW5jZSA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmFyIGNvdW50SW50ZXJzZWN0aW9ucyA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgX2EgPSBnZXRCQm94Qm91bmRMaW5lKGJib3gsIGRpcmVjdGlvbnNbaV0pLFxuICAgICAgICB4MSA9IF9hWzBdLFxuICAgICAgICB5MSA9IF9hWzFdLFxuICAgICAgICB4MiA9IF9hWzJdLFxuICAgICAgICB5MiA9IF9hWzNdO1xuXG4gICAgdmFyIHRlc3REaXN0YW5jZSA9IGZyYWN0aW9uQWxvbmdMaW5lQShsaW5lLCBuZXcgTGluZSh4MSwgeTEsIHgyLCB5MikpO1xuICAgIHRlc3REaXN0YW5jZSA9IE1hdGguYWJzKHRlc3REaXN0YW5jZSAtIDAuNSk7XG5cbiAgICBpZiAodGVzdERpc3RhbmNlID49IDAgJiYgdGVzdERpc3RhbmNlIDw9IDEpIHtcbiAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyArPSAxO1xuICAgICAgbWluRGlzdGFuY2UgPSB0ZXN0RGlzdGFuY2UgPCBtaW5EaXN0YW5jZSA/IHRlc3REaXN0YW5jZSA6IG1pbkRpc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb3VudEludGVyc2VjdGlvbnMgPT09IDApIHJldHVybiAtMTtcbiAgcmV0dXJuIG1pbkRpc3RhbmNlO1xufTtcbmV4cG9ydCB2YXIgZ2V0UG9pbnRzQ2VudGVyID0gZnVuY3Rpb24gZ2V0UG9pbnRzQ2VudGVyKHBvaW50cykge1xuICB2YXIgY2VudGVyWCA9IDA7XG4gIHZhciBjZW50ZXJZID0gMDtcblxuICBpZiAocG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKHZhciBfaSA9IDAsIHBvaW50c18xID0gcG9pbnRzOyBfaSA8IHBvaW50c18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIHBvaW50ID0gcG9pbnRzXzFbX2ldO1xuICAgICAgY2VudGVyWCArPSBwb2ludC54O1xuICAgICAgY2VudGVyWSArPSBwb2ludC55O1xuICAgIH1cblxuICAgIGNlbnRlclggLz0gcG9pbnRzLmxlbmd0aDtcbiAgICBjZW50ZXJZIC89IHBvaW50cy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGNlbnRlclgsXG4gICAgeTogY2VudGVyWVxuICB9O1xufTtcbmV4cG9ydCB2YXIgc3F1YXJlRGlzdCA9IGZ1bmN0aW9uIHNxdWFyZURpc3QoYSwgYikge1xuICByZXR1cm4gTWF0aC5wb3coYS54IC0gYi54LCAyKSArIE1hdGgucG93KGEueSAtIGIueSwgMik7XG59O1xuZXhwb3J0IHZhciBwb2ludExpbmVTcXVhcmVEaXN0ID0gZnVuY3Rpb24gcG9pbnRMaW5lU3F1YXJlRGlzdChwb2ludCwgbGluZSkge1xuICB2YXIgeDEgPSBsaW5lLngxO1xuICB2YXIgeTEgPSBsaW5lLnkxO1xuICB2YXIgeDIgPSBsaW5lLngyIC0geDE7XG4gIHZhciB5MiA9IGxpbmUueTIgLSB5MTtcbiAgdmFyIHB4ID0gcG9pbnQueCAtIHgxO1xuICB2YXIgcHkgPSBwb2ludC55IC0geTE7XG4gIHZhciBkb3Rwcm9kID0gcHggKiB4MiArIHB5ICogeTI7XG4gIHZhciBwcm9qbGVuU3E7XG5cbiAgaWYgKGRvdHByb2QgPD0gMCkge1xuICAgIHByb2psZW5TcSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgcHggPSB4MiAtIHB4O1xuICAgIHB5ID0geTIgLSBweTtcbiAgICBkb3Rwcm9kID0gcHggKiB4MiArIHB5ICogeTI7XG5cbiAgICBpZiAoZG90cHJvZCA8PSAwKSB7XG4gICAgICBwcm9qbGVuU3EgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9qbGVuU3EgPSBkb3Rwcm9kICogZG90cHJvZCAvICh4MiAqIHgyICsgeTIgKiB5Mik7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxlblNxID0gcHggKiBweCArIHB5ICogcHkgLSBwcm9qbGVuU3E7XG5cbiAgaWYgKGxlblNxIDwgMCkge1xuICAgIGxlblNxID0gMDtcbiAgfVxuXG4gIHJldHVybiBsZW5TcTtcbn07XG5leHBvcnQgdmFyIGlzUG9pbnRzT3ZlcmxhcCA9IGZ1bmN0aW9uIGlzUG9pbnRzT3ZlcmxhcChwMSwgcDIsIGUpIHtcbiAgaWYgKGUgPT09IHZvaWQgMCkge1xuICAgIGUgPSAxZS0zO1xuICB9XG5cbiAgcmV0dXJuIE1hdGgucG93KHAxLnggLSBwMi54LCAyKSArIE1hdGgucG93KHAxLnkgLSBwMi55LCAyKSA8IE1hdGgucG93KGUsIDIpO1xufTtcbi8qKlxuICog54K55Yiw55+p5b2i55qE6Led56a755qE5bmz5pa577ya55+p5b2i5YaF6YOo54K56KeG5L2c6Led56a75Li6MO+8jOWklumDqOeahOeCueiLpeaKleW9seiQveWcqOefqeW9oui+ueS4iuWImeS4uueCueWIsOefqeW9oui+ueeahOacgOi/keeahOWeguebtOi3neemu++8jOWQpuWImeS4uueCueWIsOefqeW9oumhtueCueeahOi3neemu++8jFxuICogQHBhcmFtIHBvaW50IElQb2ludFxuICogQHBhcmFtIHJlY3QgSVJlY3RcbiAqL1xuXG5leHBvcnQgdmFyIHBvaW50UmVjdFNxdWFyZURpc3QgPSBmdW5jdGlvbiBwb2ludFJlY3RTcXVhcmVEaXN0KHBvaW50LCByZWN0KSB7XG4gIHZhciBpc0xlZnQgPSBwb2ludC54IDwgcmVjdC54O1xuICB2YXIgaXNSaWdodCA9IHBvaW50LnggPiByZWN0LnggKyByZWN0LndpZHRoO1xuICB2YXIgaXNUb3AgPSBwb2ludC55ID4gcmVjdC55ICsgcmVjdC5oZWlnaHQ7XG4gIHZhciBpc0JvdHRvbSA9IHBvaW50LnkgPCByZWN0Lnk7XG4gIHZhciBpc1BvaW50T3V0c2lkZSA9IGlzTGVmdCB8fCBpc1JpZ2h0IHx8IGlzVG9wIHx8IGlzQm90dG9tO1xuXG4gIGlmICghaXNQb2ludE91dHNpZGUpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChpc1RvcCAmJiAhaXNMZWZ0ICYmICFpc1JpZ2h0KSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHJlY3QueSArIHJlY3QuaGVpZ2h0IC0gcG9pbnQueSwgMik7XG4gIH1cblxuICBpZiAoaXNCb3R0b20gJiYgIWlzTGVmdCAmJiAhaXNSaWdodCkge1xuICAgIHJldHVybiBNYXRoLnBvdyhwb2ludC55IC0gcmVjdC55LCAyKTtcbiAgfVxuXG4gIGlmIChpc0xlZnQgJiYgIWlzVG9wICYmICFpc0JvdHRvbSkge1xuICAgIHJldHVybiBNYXRoLnBvdyhyZWN0LnggLSBwb2ludC54LCAyKTtcbiAgfVxuXG4gIGlmIChpc1JpZ2h0ICYmICFpc1RvcCAmJiAhaXNCb3R0b20pIHtcbiAgICByZXR1cm4gTWF0aC5wb3cocmVjdC54ICsgcmVjdC53aWR0aCAtIHBvaW50LngsIDIpO1xuICB9XG5cbiAgdmFyIGR4ID0gTWF0aC5taW4oTWF0aC5hYnMocmVjdC54IC0gcG9pbnQueCksIE1hdGguYWJzKHJlY3QueCArIHJlY3Qud2lkdGggLSBwb2ludC54KSk7XG4gIHZhciBkeSA9IE1hdGgubWluKE1hdGguYWJzKHJlY3QueSAtIHBvaW50LnkpLCBNYXRoLmFicyhyZWN0LnkgKyByZWN0LmhlaWdodCAtIHBvaW50LnkpKTtcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5O1xufTtcbi8qKlxuICogcG9pbnQgdG8gbGluZSBkaXN0YW5jZVxuICogQHBhcmFtICB7YXJyYXl9IGxpbmUg57q/55qE5Zub5Liq6aG254K5IFt4MSwgeTEsIHgyLCB5Ml1cbiAqIEBwYXJhbSAge29iamVjdH0gcG9pbnQg5Z2Q5qCH54K5IHt4LCB5fVxuICogQHJldHVybiB7TnVtYmVyfE5hTn0gZGlzdGFuY2VcbiAqL1xuXG5leHBvcnQgdmFyIHBvaW50TGluZURpc3RhbmNlID0gZnVuY3Rpb24gcG9pbnRMaW5lRGlzdGFuY2UobGluZSwgcG9pbnQpIHtcbiAgdmFyIHgxID0gbGluZVswXSxcbiAgICAgIHkxID0gbGluZVsxXSxcbiAgICAgIHgyID0gbGluZVsyXSxcbiAgICAgIHkyID0gbGluZVszXTtcbiAgdmFyIHggPSBwb2ludC54LFxuICAgICAgeSA9IHBvaW50Lnk7XG4gIHZhciBkID0gW3gyIC0geDEsIHkyIC0geTFdO1xuXG4gIGlmICh2ZWMyLmV4YWN0RXF1YWxzKGQsIFswLCAwXSkpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG5cbiAgdmFyIHUgPSBbLWRbMV0sIGRbMF1dOyAvLyBAdHMtaWdub3JlXG5cbiAgdmVjMi5ub3JtYWxpemUodSwgdSk7XG4gIHZhciBhID0gW3ggLSB4MSwgeSAtIHkxXTsgLy8gQHRzLWlnbm9yZVxuXG4gIHJldHVybiBNYXRoLmFicyh2ZWMyLmRvdChhLCB1KSk7XG59O1xuLyoqXG4gKiBMaW5lYXJseSBpbnRlcnBvbGF0ZSBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQsIHdoZXJlIGFscGhhIGlzIHRoZSBwZXJjZW50IGRpc3RhbmNlIGFsb25nIHRoZSBsaW5lLlxuICogYWxwaGEgPSAwIHdpbGwgYmUgc3RhcnQsIGFuZCBhbHBoYSA9IDEgd2lsbCBiZSBlbmQuXG4gKiBAcGFyYW0ge051bWJlcn0gc3RhcnRcbiAqIEBwYXJhbSB7TnVtYmVyfSBlbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbHBoYSBpbnRlcnBvbGF0aW9uIGZhY3RvciwgdHlwaWNhbGx5IGluIHRoZSBjbG9zZWQgaW50ZXJ2YWwgWzAsIDFdXG4gKiBAcmV0dXJuc1xuICovXG5cbmV4cG9ydCB2YXIgbGVycCA9IGZ1bmN0aW9uIGxlcnAoc3RhcnQsIGVuZCwgYWxwaGEpIHtcbiAgcmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIGFscGhhO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/math.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/util/path.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g6-core/es/util/path.js ***! \****************************************************/ /*! exports provided: getSpline, getControlPoint, pointsToPolygon, pathToPoints, getClosedSpline, roundedHull, paddedHull */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSpline\", function() { return getSpline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getControlPoint\", function() { return getControlPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointsToPolygon\", function() { return pointsToPolygon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToPoints\", function() { return pathToPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClosedSpline\", function() { return getClosedSpline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"roundedHull\", function() { return roundedHull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"paddedHull\", function() { return paddedHull; });\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/@antv/path-util/esm/index.js\");\n\n\n/**\n * 替换字符串中的字段\n * @param {String} str 模版字符串\n * @param {Object} o json data\n */\n\nvar substitute = function substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n\n var res = o[name];\n if (res === 0) res = '0';\n return res || '';\n });\n};\n/**\n * 给定坐标获取三次贝塞尔曲线的 M 及 C 值\n * @param points coordinate set\n */\n\n\nvar getSpline = function getSpline(points) {\n var data = [];\n\n if (points.length < 2) {\n throw new Error(\"point length must largn than 2, now it's \".concat(points.length));\n }\n\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n var x = point.x,\n y = point.y;\n data.push(x);\n data.push(y);\n }\n\n var spliePath = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_1__[\"catmullRom2Bezier\"])(data);\n spliePath.unshift(['M', points[0].x, points[0].y]);\n return spliePath;\n};\n/**\n * 根据起始点、相对位置、偏移量计算控制点\n * @param {IPoint} startPoint 起始点,包含 x,y\n * @param {IPoint} endPoint 结束点, 包含 x,y\n * @param {Number} percent 相对位置,范围 0-1\n * @param {Number} offset 偏移量\n * @return {IPoint} 控制点,包含 x,y\n */\n\nvar getControlPoint = function getControlPoint(startPoint, endPoint, percent, offset) {\n if (percent === void 0) {\n percent = 0;\n }\n\n if (offset === void 0) {\n offset = 0;\n }\n\n var point = {\n x: (1 - percent) * startPoint.x + percent * endPoint.x,\n y: (1 - percent) * startPoint.y + percent * endPoint.y\n };\n var tangent = [0, 0];\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize(tangent, [endPoint.x - startPoint.x, endPoint.y - startPoint.y]);\n\n if (!tangent || !tangent[0] && !tangent[1]) {\n tangent = [0, 0];\n }\n\n var perpendicular = [-tangent[1] * offset, tangent[0] * offset]; // 垂直向量\n\n point.x += perpendicular[0];\n point.y += perpendicular[1];\n return point;\n};\n/**\n * 点集转化为Path多边形\n * @param {Array} points 点集\n * @param {Boolen} z 是否封闭\n * @return {Array} Path\n */\n\nvar pointsToPolygon = function pointsToPolygon(points, z) {\n var length = points.length;\n\n if (!length) {\n return '';\n }\n\n var path = '';\n var str = '';\n\n for (var i = 0; i < length; i++) {\n var item = points[i];\n\n if (i === 0) {\n str = 'M{x} {y}';\n } else {\n str = 'L{x} {y}';\n }\n\n path += substitute(str, item);\n }\n\n if (z) {\n path += 'Z';\n }\n\n return path;\n};\nvar pathToPoints = function pathToPoints(path) {\n var points = [];\n path.forEach(function (seg) {\n var command = seg[0];\n\n if (command !== 'A') {\n for (var i = 1; i < seg.length; i = i + 2) {\n points.push([seg[i], seg[i + 1]]);\n }\n } else {\n var length_1 = seg.length;\n points.push([seg[length_1 - 2], seg[length_1 - 1]]);\n }\n });\n return points;\n};\n/**\n * 生成平滑的闭合曲线\n * @param points\n */\n\nvar getClosedSpline = function getClosedSpline(points) {\n if (points.length < 2) {\n throw new Error(\"point length must largn than 2, now it's \".concat(points.length));\n }\n\n var first = points[0];\n var second = points[1];\n var last = points[points.length - 1];\n var lastSecond = points[points.length - 2];\n points.unshift(last);\n points.unshift(lastSecond);\n points.push(first);\n points.push(second);\n var closedPath = [];\n\n for (var i = 1; i < points.length - 2; i += 1) {\n var x0 = points[i - 1].x;\n var y0 = points[i - 1].y;\n var x1 = points[i].x;\n var y1 = points[i].y;\n var x2 = points[i + 1].x;\n var y2 = points[i + 1].y;\n var x3 = i !== points.length - 2 ? points[i + 2].x : x2;\n var y3 = i !== points.length - 2 ? points[i + 2].y : y2;\n var cp1x = x1 + (x2 - x0) / 6;\n var cp1y = y1 + (y2 - y0) / 6;\n var cp2x = x2 - (x3 - x1) / 6;\n var cp2y = y2 - (y3 - y1) / 6;\n closedPath.push(['C', cp1x, cp1y, cp2x, cp2y, x2, y2]);\n }\n\n closedPath.unshift(['M', last.x, last.y]);\n return closedPath;\n};\n\nvar vecScaleTo = function vecScaleTo(v, length) {\n // Vector with direction of v with specified length\n return _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], v), length);\n};\n\nvar unitNormal = function unitNormal(p0, p1) {\n // Returns the unit normal to the line segment from p0 to p1.\n var n = [p0[1] - p1[1], p1[0] - p0[0]];\n var nLength = Math.sqrt(n[0] * n[0] + n[1] * n[1]);\n\n if (nLength === 0) {\n throw new Error('p0 should not be equal to p1');\n }\n\n return [n[0] / nLength, n[1] / nLength];\n};\n\nvar vecFrom = function vecFrom(p0, p1) {\n // Vector from p0 to p1\n return [p1[0] - p0[0], p1[1] - p0[1]];\n};\n/**\n * 传入的节点作为多边形顶点,生成有圆角的多边形\n * @param polyPoints 多边形顶点\n * @param padding 在原多边形基础上增加最终轮廓和原多边形的空白间隔\n */\n\n\nfunction roundedHull(polyPoints, padding) {\n // The rounded hull path around a single point\n var roundedHull1 = function roundedHull1(points) {\n var p1 = [points[0][0], points[0][1] - padding];\n var p2 = [points[0][0], points[0][1] + padding];\n return \"M \".concat(p1, \" A \").concat(padding, \",\").concat(padding, \",0,0,0,\").concat(p2, \" A \").concat(padding, \",\").concat(padding, \",0,0,0,\").concat(p1);\n }; // The rounded hull path around two points\n\n\n var roundedHull2 = function roundedHull2(points) {\n var offsetVector = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], unitNormal(points[0], points[1]), padding);\n var invOffsetVector = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], offsetVector, -1);\n var p0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], offsetVector);\n var p1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], offsetVector);\n var p2 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], invOffsetVector);\n var p3 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], invOffsetVector);\n return \"M \".concat(p0, \" L \").concat(p1, \" A \").concat([padding, padding, '0,0,0', p2].join(','), \" L \").concat(p3, \" A \").concat([padding, padding, '0,0,0', p0].join(','));\n }; // 特殊情况处理:节点数小于等于2\n\n\n if (!polyPoints || polyPoints.length < 1) return '';\n if (polyPoints.length === 1) return roundedHull1(polyPoints);\n if (polyPoints.length === 2) return roundedHull2(polyPoints);\n var segments = new Array(polyPoints.length); // Calculate each offset (outwards) segment of the convex hull.\n\n for (var segmentIndex = 0; segmentIndex < segments.length; ++segmentIndex) {\n var p0 = segmentIndex === 0 ? polyPoints[polyPoints.length - 1] : polyPoints[segmentIndex - 1];\n var p1 = polyPoints[segmentIndex]; // Compute the offset vector for the line segment, with length = padding.\n\n var offset = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], unitNormal(p0, p1), padding);\n segments[segmentIndex] = [_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], p0, offset), _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], p1, offset)];\n }\n\n var arcData = \"A \".concat([padding, padding, '0,0,0,'].join(','));\n segments = segments.map(function (segment, index) {\n var pathFragment = '';\n\n if (index === 0) {\n pathFragment = \"M \".concat(segments[segments.length - 1][1], \" \");\n }\n\n pathFragment += \"\".concat(arcData + segment[0], \" L \").concat(segment[1]);\n return pathFragment;\n });\n return segments.join(' ');\n}\n/**\n * 传入的节点作为多边形顶点,生成平滑的闭合多边形\n * @param polyPoints\n * @param padding\n */\n\nfunction paddedHull(polyPoints, padding) {\n var pointCount = polyPoints.length;\n\n var smoothHull1 = function smoothHull1(points) {\n // Returns the path for a circular hull around a single point.\n var p1 = [points[0][0], points[0][1] - padding];\n var p2 = [points[0][0], points[0][1] + padding];\n return \"M \".concat(p1, \" A \").concat([padding, padding, '0,0,0', p2].join(','), \" A \").concat([padding, padding, '0,0,0', p1].join(','));\n }; // Returns the path for a rounded hull around two points.\n\n\n var smoothHull2 = function smoothHull2(points) {\n var v = vecFrom(points[0], points[1]);\n var extensionVec = vecScaleTo(v, padding);\n var extension0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], extensionVec, -1));\n var extension1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], extensionVec);\n var tangentHalfLength = 1.2 * padding;\n var controlDelta = vecScaleTo(_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], v), tangentHalfLength);\n var invControlDelta = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], controlDelta, -1);\n var control0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension0, invControlDelta);\n var control1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension1, invControlDelta);\n var control3 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension0, controlDelta); // return [\n // ['M', extension0[0], extension0[1]],\n // ['C', control0, control1, extension1],\n // ['S', control3, extension0],\n // 'Z',\n // ];\n\n return \"M \".concat(extension0, \" C \").concat([control0, control1, extension1].join(','), \" S \").concat([control3, extension0].join(','), \" Z\");\n }; // Handle special cases\n\n\n if (!polyPoints || pointCount < 1) return '';\n if (pointCount === 1) return smoothHull1(polyPoints);\n if (pointCount === 2) return smoothHull2(polyPoints);\n var hullPoints = polyPoints.map(function (point, index) {\n var pNext = polyPoints[(index + 1) % pointCount];\n return {\n p: point,\n v: _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], vecFrom(point, pNext))\n };\n }); // Compute the expanded hull points, and the nearest prior control point for each.\n\n for (var i = 0; i < hullPoints.length; ++i) {\n var priorIndex = i > 0 ? i - 1 : pointCount - 1;\n var extensionVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], hullPoints[priorIndex].v, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], hullPoints[i].v, -1)));\n hullPoints[i].p = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], hullPoints[i].p, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], extensionVec, padding));\n }\n\n return hullPoints.map(function (obj) {\n var point = obj.p;\n return {\n x: point[0],\n y: point[1]\n };\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL3BhdGguanM/YWU2MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNXO0FBQ3BEO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQixLQUFLLEtBQUs7QUFDckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMsc0JBQXNCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IseUVBQWlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxzREFBSTs7QUFFTjtBQUNBO0FBQ0E7O0FBRUEsa0VBQWtFOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCOztBQUVBO0FBQ0EsZUFBZSxFQUFFLEVBQUUsRUFBRTtBQUNyQixLQUFLO0FBQ0wsZUFBZSxFQUFFLEVBQUUsRUFBRTtBQUNyQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsZ0JBQWdCO0FBQ3JDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHVCQUF1QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyxzREFBSSxlQUFlLHNEQUFJO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQSx1QkFBdUIsc0RBQUk7QUFDM0IsMEJBQTBCLHNEQUFJO0FBQzlCLGFBQWEsc0RBQUk7QUFDakIsYUFBYSxzREFBSTtBQUNqQixhQUFhLHNEQUFJO0FBQ2pCLGFBQWEsc0RBQUk7QUFDakI7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7O0FBRTlDLDRCQUE0QixnQ0FBZ0M7QUFDNUQ7QUFDQSxzQ0FBc0M7O0FBRXRDLGlCQUFpQixzREFBSTtBQUNyQiw4QkFBOEIsc0RBQUksMEJBQTBCLHNEQUFJO0FBQ2hFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQUksd0JBQXdCLHNEQUFJO0FBQ3JELHFCQUFxQixzREFBSTtBQUN6QjtBQUNBLGtDQUFrQyxzREFBSTtBQUN0QywwQkFBMEIsc0RBQUk7QUFDOUIsbUJBQW1CLHNEQUFJO0FBQ3ZCLG1CQUFtQixzREFBSTtBQUN2QixtQkFBbUIsc0RBQUksdUNBQXVDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsc0RBQUk7QUFDYjtBQUNBLEdBQUcsRUFBRTs7QUFFTCxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0EsdUJBQXVCLHNEQUFJLG1CQUFtQixzREFBSSx1Q0FBdUMsc0RBQUk7QUFDN0Ysc0JBQXNCLHNEQUFJLDhCQUE4QixzREFBSTtBQUM1RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL3BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2ZWMyIH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IHsgY2F0bXVsbFJvbTJCZXppZXIgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuLyoqXG4gKiDmm7/mjaLlrZfnrKbkuLLkuK3nmoTlrZfmrrVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIg5qih54mI5a2X56ym5LiyXG4gKiBAcGFyYW0ge09iamVjdH0gbyBqc29uIGRhdGFcbiAqL1xuXG52YXIgc3Vic3RpdHV0ZSA9IGZ1bmN0aW9uIHN1YnN0aXR1dGUoc3RyLCBvKSB7XG4gIGlmICghc3RyIHx8ICFvKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxcXD9cXHsoW157fV0rKVxcfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG5hbWUpIHtcbiAgICBpZiAobWF0Y2guY2hhckF0KDApID09PSAnXFxcXCcpIHtcbiAgICAgIHJldHVybiBtYXRjaC5zbGljZSgxKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gb1tuYW1lXTtcbiAgICBpZiAocmVzID09PSAwKSByZXMgPSAnMCc7XG4gICAgcmV0dXJuIHJlcyB8fCAnJztcbiAgfSk7XG59O1xuLyoqXG4gKiDnu5nlrprlnZDmoIfojrflj5bkuInmrKHotJ3loZ7lsJTmm7Lnur/nmoQgTSDlj4ogQyDlgLxcbiAqIEBwYXJhbSBwb2ludHMgY29vcmRpbmF0ZSBzZXRcbiAqL1xuXG5cbmV4cG9ydCB2YXIgZ2V0U3BsaW5lID0gZnVuY3Rpb24gZ2V0U3BsaW5lKHBvaW50cykge1xuICB2YXIgZGF0YSA9IFtdO1xuXG4gIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFcnJvcihcInBvaW50IGxlbmd0aCBtdXN0IGxhcmduIHRoYW4gMiwgbm93IGl0J3MgXCIuY29uY2F0KHBvaW50cy5sZW5ndGgpKTtcbiAgfVxuXG4gIGZvciAodmFyIF9pID0gMCwgcG9pbnRzXzEgPSBwb2ludHM7IF9pIDwgcG9pbnRzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIHBvaW50ID0gcG9pbnRzXzFbX2ldO1xuICAgIHZhciB4ID0gcG9pbnQueCxcbiAgICAgICAgeSA9IHBvaW50Lnk7XG4gICAgZGF0YS5wdXNoKHgpO1xuICAgIGRhdGEucHVzaCh5KTtcbiAgfVxuXG4gIHZhciBzcGxpZVBhdGggPSBjYXRtdWxsUm9tMkJlemllcihkYXRhKTtcbiAgc3BsaWVQYXRoLnVuc2hpZnQoWydNJywgcG9pbnRzWzBdLngsIHBvaW50c1swXS55XSk7XG4gIHJldHVybiBzcGxpZVBhdGg7XG59O1xuLyoqXG4gKiDmoLnmja7otbflp4vngrnjgIHnm7jlr7nkvY3nva7jgIHlgY/np7vph4/orqHnrpfmjqfliLbngrlcbiAqIEBwYXJhbSAge0lQb2ludH0gc3RhcnRQb2ludCDotbflp4vngrnvvIzljIXlkKsgeCx5XG4gKiBAcGFyYW0gIHtJUG9pbnR9IGVuZFBvaW50ICDnu5PmnZ/ngrksIOWMheWQqyB4LHlcbiAqIEBwYXJhbSAge051bWJlcn0gcGVyY2VudCAgIOebuOWvueS9jee9rizojIPlm7QgMC0xXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IG9mZnNldCAgICDlgY/np7vph49cbiAqIEByZXR1cm4ge0lQb2ludH0g5o6n5Yi254K577yM5YyF5ZCrIHgseVxuICovXG5cbmV4cG9ydCB2YXIgZ2V0Q29udHJvbFBvaW50ID0gZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50KHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBwZXJjZW50LCBvZmZzZXQpIHtcbiAgaWYgKHBlcmNlbnQgPT09IHZvaWQgMCkge1xuICAgIHBlcmNlbnQgPSAwO1xuICB9XG5cbiAgaWYgKG9mZnNldCA9PT0gdm9pZCAwKSB7XG4gICAgb2Zmc2V0ID0gMDtcbiAgfVxuXG4gIHZhciBwb2ludCA9IHtcbiAgICB4OiAoMSAtIHBlcmNlbnQpICogc3RhcnRQb2ludC54ICsgcGVyY2VudCAqIGVuZFBvaW50LngsXG4gICAgeTogKDEgLSBwZXJjZW50KSAqIHN0YXJ0UG9pbnQueSArIHBlcmNlbnQgKiBlbmRQb2ludC55XG4gIH07XG4gIHZhciB0YW5nZW50ID0gWzAsIDBdO1xuICB2ZWMyLm5vcm1hbGl6ZSh0YW5nZW50LCBbZW5kUG9pbnQueCAtIHN0YXJ0UG9pbnQueCwgZW5kUG9pbnQueSAtIHN0YXJ0UG9pbnQueV0pO1xuXG4gIGlmICghdGFuZ2VudCB8fCAhdGFuZ2VudFswXSAmJiAhdGFuZ2VudFsxXSkge1xuICAgIHRhbmdlbnQgPSBbMCwgMF07XG4gIH1cblxuICB2YXIgcGVycGVuZGljdWxhciA9IFstdGFuZ2VudFsxXSAqIG9mZnNldCwgdGFuZ2VudFswXSAqIG9mZnNldF07IC8vIOWeguebtOWQkemHj1xuXG4gIHBvaW50LnggKz0gcGVycGVuZGljdWxhclswXTtcbiAgcG9pbnQueSArPSBwZXJwZW5kaWN1bGFyWzFdO1xuICByZXR1cm4gcG9pbnQ7XG59O1xuLyoqXG4gKiDngrnpm4bovazljJbkuLpQYXRo5aSa6L655b2iXG4gKiBAcGFyYW0ge0FycmF5fSBwb2ludHMg54K56ZuGXG4gKiBAcGFyYW0ge0Jvb2xlbn0geiDmmK/lkKblsIHpl61cbiAqIEByZXR1cm4ge0FycmF5fSBQYXRoXG4gKi9cblxuZXhwb3J0IHZhciBwb2ludHNUb1BvbHlnb24gPSBmdW5jdGlvbiBwb2ludHNUb1BvbHlnb24ocG9pbnRzLCB6KSB7XG4gIHZhciBsZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuXG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIHBhdGggPSAnJztcbiAgdmFyIHN0ciA9ICcnO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IHBvaW50c1tpXTtcblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBzdHIgPSAnTXt4fSB7eX0nO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSAnTHt4fSB7eX0nO1xuICAgIH1cblxuICAgIHBhdGggKz0gc3Vic3RpdHV0ZShzdHIsIGl0ZW0pO1xuICB9XG5cbiAgaWYgKHopIHtcbiAgICBwYXRoICs9ICdaJztcbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufTtcbmV4cG9ydCB2YXIgcGF0aFRvUG9pbnRzID0gZnVuY3Rpb24gcGF0aFRvUG9pbnRzKHBhdGgpIHtcbiAgdmFyIHBvaW50cyA9IFtdO1xuICBwYXRoLmZvckVhY2goZnVuY3Rpb24gKHNlZykge1xuICAgIHZhciBjb21tYW5kID0gc2VnWzBdO1xuXG4gICAgaWYgKGNvbW1hbmQgIT09ICdBJykge1xuICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzZWcubGVuZ3RoOyBpID0gaSArIDIpIHtcbiAgICAgICAgcG9pbnRzLnB1c2goW3NlZ1tpXSwgc2VnW2kgKyAxXV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbGVuZ3RoXzEgPSBzZWcubGVuZ3RoO1xuICAgICAgcG9pbnRzLnB1c2goW3NlZ1tsZW5ndGhfMSAtIDJdLCBzZWdbbGVuZ3RoXzEgLSAxXV0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwb2ludHM7XG59O1xuLyoqXG4gKiDnlJ/miJDlubPmu5HnmoTpl63lkIjmm7Lnur9cbiAqIEBwYXJhbSBwb2ludHNcbiAqL1xuXG5leHBvcnQgdmFyIGdldENsb3NlZFNwbGluZSA9IGZ1bmN0aW9uIGdldENsb3NlZFNwbGluZShwb2ludHMpIHtcbiAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwicG9pbnQgbGVuZ3RoIG11c3QgbGFyZ24gdGhhbiAyLCBub3cgaXQncyBcIi5jb25jYXQocG9pbnRzLmxlbmd0aCkpO1xuICB9XG5cbiAgdmFyIGZpcnN0ID0gcG9pbnRzWzBdO1xuICB2YXIgc2Vjb25kID0gcG9pbnRzWzFdO1xuICB2YXIgbGFzdCA9IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XG4gIHZhciBsYXN0U2Vjb25kID0gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAyXTtcbiAgcG9pbnRzLnVuc2hpZnQobGFzdCk7XG4gIHBvaW50cy51bnNoaWZ0KGxhc3RTZWNvbmQpO1xuICBwb2ludHMucHVzaChmaXJzdCk7XG4gIHBvaW50cy5wdXNoKHNlY29uZCk7XG4gIHZhciBjbG9zZWRQYXRoID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBwb2ludHMubGVuZ3RoIC0gMjsgaSArPSAxKSB7XG4gICAgdmFyIHgwID0gcG9pbnRzW2kgLSAxXS54O1xuICAgIHZhciB5MCA9IHBvaW50c1tpIC0gMV0ueTtcbiAgICB2YXIgeDEgPSBwb2ludHNbaV0ueDtcbiAgICB2YXIgeTEgPSBwb2ludHNbaV0ueTtcbiAgICB2YXIgeDIgPSBwb2ludHNbaSArIDFdLng7XG4gICAgdmFyIHkyID0gcG9pbnRzW2kgKyAxXS55O1xuICAgIHZhciB4MyA9IGkgIT09IHBvaW50cy5sZW5ndGggLSAyID8gcG9pbnRzW2kgKyAyXS54IDogeDI7XG4gICAgdmFyIHkzID0gaSAhPT0gcG9pbnRzLmxlbmd0aCAtIDIgPyBwb2ludHNbaSArIDJdLnkgOiB5MjtcbiAgICB2YXIgY3AxeCA9IHgxICsgKHgyIC0geDApIC8gNjtcbiAgICB2YXIgY3AxeSA9IHkxICsgKHkyIC0geTApIC8gNjtcbiAgICB2YXIgY3AyeCA9IHgyIC0gKHgzIC0geDEpIC8gNjtcbiAgICB2YXIgY3AyeSA9IHkyIC0gKHkzIC0geTEpIC8gNjtcbiAgICBjbG9zZWRQYXRoLnB1c2goWydDJywgY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgeDIsIHkyXSk7XG4gIH1cblxuICBjbG9zZWRQYXRoLnVuc2hpZnQoWydNJywgbGFzdC54LCBsYXN0LnldKTtcbiAgcmV0dXJuIGNsb3NlZFBhdGg7XG59O1xuXG52YXIgdmVjU2NhbGVUbyA9IGZ1bmN0aW9uIHZlY1NjYWxlVG8odiwgbGVuZ3RoKSB7XG4gIC8vIFZlY3RvciB3aXRoIGRpcmVjdGlvbiBvZiB2IHdpdGggc3BlY2lmaWVkIGxlbmd0aFxuICByZXR1cm4gdmVjMi5zY2FsZShbMCwgMF0sIHZlYzIubm9ybWFsaXplKFswLCAwXSwgdiksIGxlbmd0aCk7XG59O1xuXG52YXIgdW5pdE5vcm1hbCA9IGZ1bmN0aW9uIHVuaXROb3JtYWwocDAsIHAxKSB7XG4gIC8vIFJldHVybnMgdGhlIHVuaXQgbm9ybWFsIHRvIHRoZSBsaW5lIHNlZ21lbnQgZnJvbSBwMCB0byBwMS5cbiAgdmFyIG4gPSBbcDBbMV0gLSBwMVsxXSwgcDFbMF0gLSBwMFswXV07XG4gIHZhciBuTGVuZ3RoID0gTWF0aC5zcXJ0KG5bMF0gKiBuWzBdICsgblsxXSAqIG5bMV0pO1xuXG4gIGlmIChuTGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwMCBzaG91bGQgbm90IGJlIGVxdWFsIHRvIHAxJyk7XG4gIH1cblxuICByZXR1cm4gW25bMF0gLyBuTGVuZ3RoLCBuWzFdIC8gbkxlbmd0aF07XG59O1xuXG52YXIgdmVjRnJvbSA9IGZ1bmN0aW9uIHZlY0Zyb20ocDAsIHAxKSB7XG4gIC8vIFZlY3RvciBmcm9tIHAwIHRvIHAxXG4gIHJldHVybiBbcDFbMF0gLSBwMFswXSwgcDFbMV0gLSBwMFsxXV07XG59O1xuLyoqXG4gKiDkvKDlhaXnmoToioLngrnkvZzkuLrlpJrovrnlvaLpobbngrnvvIznlJ/miJDmnInlnIbop5LnmoTlpJrovrnlvaJcbiAqIEBwYXJhbSBwb2x5UG9pbnRzIOWkmui+ueW9oumhtueCuVxuICogQHBhcmFtIHBhZGRpbmcg5Zyo5Y6f5aSa6L655b2i5Z+656GA5LiK5aKe5Yqg5pyA57uI6L2u5buT5ZKM5Y6f5aSa6L655b2i55qE56m655m96Ze06ZqUXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gcm91bmRlZEh1bGwocG9seVBvaW50cywgcGFkZGluZykge1xuICAvLyBUaGUgcm91bmRlZCBodWxsIHBhdGggYXJvdW5kIGEgc2luZ2xlIHBvaW50XG4gIHZhciByb3VuZGVkSHVsbDEgPSBmdW5jdGlvbiByb3VuZGVkSHVsbDEocG9pbnRzKSB7XG4gICAgdmFyIHAxID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdIC0gcGFkZGluZ107XG4gICAgdmFyIHAyID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdICsgcGFkZGluZ107XG4gICAgcmV0dXJuIFwiTSBcIi5jb25jYXQocDEsIFwiIEEgXCIpLmNvbmNhdChwYWRkaW5nLCBcIixcIikuY29uY2F0KHBhZGRpbmcsIFwiLDAsMCwwLFwiKS5jb25jYXQocDIsIFwiIEEgXCIpLmNvbmNhdChwYWRkaW5nLCBcIixcIikuY29uY2F0KHBhZGRpbmcsIFwiLDAsMCwwLFwiKS5jb25jYXQocDEpO1xuICB9OyAvLyBUaGUgcm91bmRlZCBodWxsIHBhdGggYXJvdW5kIHR3byBwb2ludHNcblxuXG4gIHZhciByb3VuZGVkSHVsbDIgPSBmdW5jdGlvbiByb3VuZGVkSHVsbDIocG9pbnRzKSB7XG4gICAgdmFyIG9mZnNldFZlY3RvciA9IHZlYzIuc2NhbGUoWzAsIDBdLCB1bml0Tm9ybWFsKHBvaW50c1swXSwgcG9pbnRzWzFdKSwgcGFkZGluZyk7XG4gICAgdmFyIGludk9mZnNldFZlY3RvciA9IHZlYzIuc2NhbGUoWzAsIDBdLCBvZmZzZXRWZWN0b3IsIC0xKTtcbiAgICB2YXIgcDAgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1swXSwgb2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDEgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1sxXSwgb2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDIgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1sxXSwgaW52T2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDMgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1swXSwgaW52T2Zmc2V0VmVjdG9yKTtcbiAgICByZXR1cm4gXCJNIFwiLmNvbmNhdChwMCwgXCIgTCBcIikuY29uY2F0KHAxLCBcIiBBIFwiKS5jb25jYXQoW3BhZGRpbmcsIHBhZGRpbmcsICcwLDAsMCcsIHAyXS5qb2luKCcsJyksIFwiIEwgXCIpLmNvbmNhdChwMywgXCIgQSBcIikuY29uY2F0KFtwYWRkaW5nLCBwYWRkaW5nLCAnMCwwLDAnLCBwMF0uam9pbignLCcpKTtcbiAgfTsgLy8g54m55q6K5oOF5Ya15aSE55CG77ya6IqC54K55pWw5bCP5LqO562J5LqOMlxuXG5cbiAgaWYgKCFwb2x5UG9pbnRzIHx8IHBvbHlQb2ludHMubGVuZ3RoIDwgMSkgcmV0dXJuICcnO1xuICBpZiAocG9seVBvaW50cy5sZW5ndGggPT09IDEpIHJldHVybiByb3VuZGVkSHVsbDEocG9seVBvaW50cyk7XG4gIGlmIChwb2x5UG9pbnRzLmxlbmd0aCA9PT0gMikgcmV0dXJuIHJvdW5kZWRIdWxsMihwb2x5UG9pbnRzKTtcbiAgdmFyIHNlZ21lbnRzID0gbmV3IEFycmF5KHBvbHlQb2ludHMubGVuZ3RoKTsgLy8gQ2FsY3VsYXRlIGVhY2ggb2Zmc2V0IChvdXR3YXJkcykgc2VnbWVudCBvZiB0aGUgY29udmV4IGh1bGwuXG5cbiAgZm9yICh2YXIgc2VnbWVudEluZGV4ID0gMDsgc2VnbWVudEluZGV4IDwgc2VnbWVudHMubGVuZ3RoOyArK3NlZ21lbnRJbmRleCkge1xuICAgIHZhciBwMCA9IHNlZ21lbnRJbmRleCA9PT0gMCA/IHBvbHlQb2ludHNbcG9seVBvaW50cy5sZW5ndGggLSAxXSA6IHBvbHlQb2ludHNbc2VnbWVudEluZGV4IC0gMV07XG4gICAgdmFyIHAxID0gcG9seVBvaW50c1tzZWdtZW50SW5kZXhdOyAvLyBDb21wdXRlIHRoZSBvZmZzZXQgdmVjdG9yIGZvciB0aGUgbGluZSBzZWdtZW50LCB3aXRoIGxlbmd0aCA9IHBhZGRpbmcuXG5cbiAgICB2YXIgb2Zmc2V0ID0gdmVjMi5zY2FsZShbMCwgMF0sIHVuaXROb3JtYWwocDAsIHAxKSwgcGFkZGluZyk7XG4gICAgc2VnbWVudHNbc2VnbWVudEluZGV4XSA9IFt2ZWMyLmFkZChbMCwgMF0sIHAwLCBvZmZzZXQpLCB2ZWMyLmFkZChbMCwgMF0sIHAxLCBvZmZzZXQpXTtcbiAgfVxuXG4gIHZhciBhcmNEYXRhID0gXCJBIFwiLmNvbmNhdChbcGFkZGluZywgcGFkZGluZywgJzAsMCwwLCddLmpvaW4oJywnKSk7XG4gIHNlZ21lbnRzID0gc2VnbWVudHMubWFwKGZ1bmN0aW9uIChzZWdtZW50LCBpbmRleCkge1xuICAgIHZhciBwYXRoRnJhZ21lbnQgPSAnJztcblxuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcGF0aEZyYWdtZW50ID0gXCJNIFwiLmNvbmNhdChzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXVsxXSwgXCIgXCIpO1xuICAgIH1cblxuICAgIHBhdGhGcmFnbWVudCArPSBcIlwiLmNvbmNhdChhcmNEYXRhICsgc2VnbWVudFswXSwgXCIgTCBcIikuY29uY2F0KHNlZ21lbnRbMV0pO1xuICAgIHJldHVybiBwYXRoRnJhZ21lbnQ7XG4gIH0pO1xuICByZXR1cm4gc2VnbWVudHMuam9pbignICcpO1xufVxuLyoqXG4gKiDkvKDlhaXnmoToioLngrnkvZzkuLrlpJrovrnlvaLpobbngrnvvIznlJ/miJDlubPmu5HnmoTpl63lkIjlpJrovrnlvaJcbiAqIEBwYXJhbSBwb2x5UG9pbnRzXG4gKiBAcGFyYW0gcGFkZGluZ1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwYWRkZWRIdWxsKHBvbHlQb2ludHMsIHBhZGRpbmcpIHtcbiAgdmFyIHBvaW50Q291bnQgPSBwb2x5UG9pbnRzLmxlbmd0aDtcblxuICB2YXIgc21vb3RoSHVsbDEgPSBmdW5jdGlvbiBzbW9vdGhIdWxsMShwb2ludHMpIHtcbiAgICAvLyBSZXR1cm5zIHRoZSBwYXRoIGZvciBhIGNpcmN1bGFyIGh1bGwgYXJvdW5kIGEgc2luZ2xlIHBvaW50LlxuICAgIHZhciBwMSA9IFtwb2ludHNbMF1bMF0sIHBvaW50c1swXVsxXSAtIHBhZGRpbmddO1xuICAgIHZhciBwMiA9IFtwb2ludHNbMF1bMF0sIHBvaW50c1swXVsxXSArIHBhZGRpbmddO1xuICAgIHJldHVybiBcIk0gXCIuY29uY2F0KHAxLCBcIiBBIFwiKS5jb25jYXQoW3BhZGRpbmcsIHBhZGRpbmcsICcwLDAsMCcsIHAyXS5qb2luKCcsJyksIFwiIEEgXCIpLmNvbmNhdChbcGFkZGluZywgcGFkZGluZywgJzAsMCwwJywgcDFdLmpvaW4oJywnKSk7XG4gIH07IC8vIFJldHVybnMgdGhlIHBhdGggZm9yIGEgcm91bmRlZCBodWxsIGFyb3VuZCB0d28gcG9pbnRzLlxuXG5cbiAgdmFyIHNtb290aEh1bGwyID0gZnVuY3Rpb24gc21vb3RoSHVsbDIocG9pbnRzKSB7XG4gICAgdmFyIHYgPSB2ZWNGcm9tKHBvaW50c1swXSwgcG9pbnRzWzFdKTtcbiAgICB2YXIgZXh0ZW5zaW9uVmVjID0gdmVjU2NhbGVUbyh2LCBwYWRkaW5nKTtcbiAgICB2YXIgZXh0ZW5zaW9uMCA9IHZlYzIuYWRkKFswLCAwXSwgcG9pbnRzWzBdLCB2ZWMyLnNjYWxlKFswLCAwXSwgZXh0ZW5zaW9uVmVjLCAtMSkpO1xuICAgIHZhciBleHRlbnNpb24xID0gdmVjMi5hZGQoWzAsIDBdLCBwb2ludHNbMV0sIGV4dGVuc2lvblZlYyk7XG4gICAgdmFyIHRhbmdlbnRIYWxmTGVuZ3RoID0gMS4yICogcGFkZGluZztcbiAgICB2YXIgY29udHJvbERlbHRhID0gdmVjU2NhbGVUbyh2ZWMyLm5vcm1hbGl6ZShbMCwgMF0sIHYpLCB0YW5nZW50SGFsZkxlbmd0aCk7XG4gICAgdmFyIGludkNvbnRyb2xEZWx0YSA9IHZlYzIuc2NhbGUoWzAsIDBdLCBjb250cm9sRGVsdGEsIC0xKTtcbiAgICB2YXIgY29udHJvbDAgPSB2ZWMyLmFkZChbMCwgMF0sIGV4dGVuc2lvbjAsIGludkNvbnRyb2xEZWx0YSk7XG4gICAgdmFyIGNvbnRyb2wxID0gdmVjMi5hZGQoWzAsIDBdLCBleHRlbnNpb24xLCBpbnZDb250cm9sRGVsdGEpO1xuICAgIHZhciBjb250cm9sMyA9IHZlYzIuYWRkKFswLCAwXSwgZXh0ZW5zaW9uMCwgY29udHJvbERlbHRhKTsgLy8gcmV0dXJuIFtcbiAgICAvLyAgIFsnTScsIGV4dGVuc2lvbjBbMF0sIGV4dGVuc2lvbjBbMV1dLFxuICAgIC8vICAgWydDJywgY29udHJvbDAsIGNvbnRyb2wxLCBleHRlbnNpb24xXSxcbiAgICAvLyAgIFsnUycsIGNvbnRyb2wzLCBleHRlbnNpb24wXSxcbiAgICAvLyAgICdaJyxcbiAgICAvLyBdO1xuXG4gICAgcmV0dXJuIFwiTSBcIi5jb25jYXQoZXh0ZW5zaW9uMCwgXCIgQyBcIikuY29uY2F0KFtjb250cm9sMCwgY29udHJvbDEsIGV4dGVuc2lvbjFdLmpvaW4oJywnKSwgXCIgUyBcIikuY29uY2F0KFtjb250cm9sMywgZXh0ZW5zaW9uMF0uam9pbignLCcpLCBcIiBaXCIpO1xuICB9OyAvLyBIYW5kbGUgc3BlY2lhbCBjYXNlc1xuXG5cbiAgaWYgKCFwb2x5UG9pbnRzIHx8IHBvaW50Q291bnQgPCAxKSByZXR1cm4gJyc7XG4gIGlmIChwb2ludENvdW50ID09PSAxKSByZXR1cm4gc21vb3RoSHVsbDEocG9seVBvaW50cyk7XG4gIGlmIChwb2ludENvdW50ID09PSAyKSByZXR1cm4gc21vb3RoSHVsbDIocG9seVBvaW50cyk7XG4gIHZhciBodWxsUG9pbnRzID0gcG9seVBvaW50cy5tYXAoZnVuY3Rpb24gKHBvaW50LCBpbmRleCkge1xuICAgIHZhciBwTmV4dCA9IHBvbHlQb2ludHNbKGluZGV4ICsgMSkgJSBwb2ludENvdW50XTtcbiAgICByZXR1cm4ge1xuICAgICAgcDogcG9pbnQsXG4gICAgICB2OiB2ZWMyLm5vcm1hbGl6ZShbMCwgMF0sIHZlY0Zyb20ocG9pbnQsIHBOZXh0KSlcbiAgICB9O1xuICB9KTsgLy8gQ29tcHV0ZSB0aGUgZXhwYW5kZWQgaHVsbCBwb2ludHMsIGFuZCB0aGUgbmVhcmVzdCBwcmlvciBjb250cm9sIHBvaW50IGZvciBlYWNoLlxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaHVsbFBvaW50cy5sZW5ndGg7ICsraSkge1xuICAgIHZhciBwcmlvckluZGV4ID0gaSA+IDAgPyBpIC0gMSA6IHBvaW50Q291bnQgLSAxO1xuICAgIHZhciBleHRlbnNpb25WZWMgPSB2ZWMyLm5vcm1hbGl6ZShbMCwgMF0sIHZlYzIuYWRkKFswLCAwXSwgaHVsbFBvaW50c1twcmlvckluZGV4XS52LCB2ZWMyLnNjYWxlKFswLCAwXSwgaHVsbFBvaW50c1tpXS52LCAtMSkpKTtcbiAgICBodWxsUG9pbnRzW2ldLnAgPSB2ZWMyLmFkZChbMCwgMF0sIGh1bGxQb2ludHNbaV0ucCwgdmVjMi5zY2FsZShbMCwgMF0sIGV4dGVuc2lvblZlYywgcGFkZGluZykpO1xuICB9XG5cbiAgcmV0dXJuIGh1bGxQb2ludHMubWFwKGZ1bmN0aW9uIChvYmopIHtcbiAgICB2YXIgcG9pbnQgPSBvYmoucDtcbiAgICByZXR1cm4ge1xuICAgICAgeDogcG9pbnRbMF0sXG4gICAgICB5OiBwb2ludFsxXVxuICAgIH07XG4gIH0pO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/path.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-core/es/util/validation.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-core/es/util/validation.js ***! \**********************************************************/ /*! exports provided: dataValidation, singleDataValidation */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataValidation\", function() { return dataValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"singleDataValidation\", function() { return singleDataValidation; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./graphic */ \"./node_modules/@antv/g6-core/es/util/graphic.js\");\n\n\n\n/**\n * 验证关系图或树图数据的合法性,必须符合以下规则才会渲染图:\n * 1. 必须传入数据\n * 2. 节点的 ID 必须为字符串,暂不支持数字类型,如果支持数字类型,会出现类似 123 与 '123' 是否相等的问题\n * 3. 边的 source 和 target 值必须在节点 ID 中存在\n * @param data 关系图或树图数据\n * @return boolean 全部验证通过返回 true,否则返回 false\n */\n\nvar dataValidation = function dataValidation(data) {\n var _a; // 1. 必须传入数据\n\n\n if (!data) {\n console.error('G6 Error Tips: the data must be defined');\n return false;\n } // 2. 节点的 ID 必须为字符串或数字类型\n\n\n var nodes = data.nodes,\n edges = data.edges,\n _b = data.combos,\n combos = _b === void 0 ? [] : _b;\n\n if (!nodes && !edges) {\n var validated_1 = true; // 不存在 nodes 和 edges,则说明是 TreeGraphData,按 TreeGraphData 规则验证\n\n Object(_graphic__WEBPACK_IMPORTED_MODULE_2__[\"traverseTree\"])(data, function (param) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(param.id)) {\n validated_1 = false;\n return false;\n }\n\n return true;\n });\n return validated_1;\n }\n\n var nonNode = (nodes || []).find(function (node) {\n return !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(node.id);\n });\n\n if (nonNode) {\n console.warn(\"G6 Warning Tips: missing 'id' property, or %c\".concat(nonNode.id, \"%c is not a string.\"), 'font-size: 20px; color: red;', '');\n return false;\n } // 3. 边的 source 和 target 必须存在于节点 或 Combo中\n\n\n var nodeIds = (nodes || []).map(function (node) {\n return node.id;\n });\n var comboIds = (_a = combos) === null || _a === void 0 ? void 0 : _a.map(function (combo) {\n return combo.id;\n });\n\n var ids = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], nodeIds, true), comboIds, true);\n\n var nonEdges = (edges || []).find(function (edge) {\n return !ids.includes(edge.source) || !ids.includes(edge.target);\n });\n\n if (nonEdges) {\n console.warn(\"G6 Warning Tips: The source %c\".concat(nonEdges.source, \"%c or the target %c\").concat(nonEdges.target, \"%c of the edge do not exist in the nodes or combos.\"), 'font-size: 20px; color: red;', '', 'font-size: 20px; color: red;', '');\n return false;\n }\n\n return true;\n};\n/**\n * 验证添加节点、边或从combo时的数据\n * @param type 节点、边或从combo\n * @param data 添加的单条数据\n * @return boolean 全部验证通过返回 true,否则返回 false\n */\n\nvar singleDataValidation = function singleDataValidation(type, data) {\n if (type === 'node' || type === 'combo') {\n // 必须有 id 字段,且id必须为字符串类型\n if (data.id && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(data.id)) {\n console.warn(\"G6 Warning Tips: missing 'id' property, or the 'id' %c\".concat(data.id, \"%c is not a string.\"), 'font-size: 20px; color: red;', '');\n return false;\n }\n } else if (type === 'edge') {\n // 必须有 source 和 target 字段\n if (!data.source || !data.target) {\n console.warn(\"G6 Warning Tips: missing 'source' or 'target' for the edge.\");\n return false;\n }\n }\n\n return true;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL3ZhbGlkYXRpb24uanM/ZGY2NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDQTtBQUNHO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjs7QUFFM0IsSUFBSSw2REFBWTtBQUNoQixXQUFXLDJEQUFRO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsWUFBWSwyREFBUTtBQUNwQixHQUFHOztBQUVIO0FBQ0EsNkhBQTZILFlBQVk7QUFDekk7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHOztBQUVILFlBQVksMkRBQWEsQ0FBQywyREFBYTs7QUFFdkM7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxrTUFBa00sWUFBWSx3QkFBd0IsWUFBWTtBQUNsUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFRO0FBQzVCLHFJQUFxSSxZQUFZO0FBQ2pKO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtY29yZS9lcy91dGlsL3ZhbGlkYXRpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgdHJhdmVyc2VUcmVlIH0gZnJvbSAnLi9ncmFwaGljJztcbi8qKlxuICog6aqM6K+B5YWz57O75Zu+5oiW5qCR5Zu+5pWw5o2u55qE5ZCI5rOV5oCn77yM5b+F6aG756ym5ZCI5Lul5LiL6KeE5YiZ5omN5Lya5riy5p+T5Zu+77yaXG4gKiAxLiDlv4XpobvkvKDlhaXmlbDmja5cbiAqIDIuIOiKgueCueeahCBJRCDlv4XpobvkuLrlrZfnrKbkuLLvvIzmmoLkuI3mlK/mjIHmlbDlrZfnsbvlnovvvIzlpoLmnpzmlK/mjIHmlbDlrZfnsbvlnovvvIzkvJrlh7rnjrDnsbvkvLwgMTIzIOS4jiAnMTIzJyDmmK/lkKbnm7jnrYnnmoTpl67pophcbiAqIDMuIOi+ueeahCBzb3VyY2Ug5ZKMIHRhcmdldCDlgLzlv4XpobvlnKjoioLngrkgSUQg5Lit5a2Y5ZyoXG4gKiBAcGFyYW0gZGF0YSDlhbPns7vlm77miJbmoJHlm77mlbDmja5cbiAqIEByZXR1cm4gYm9vbGVhbiDlhajpg6jpqozor4HpgJrov4fov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICovXG5cbmV4cG9ydCB2YXIgZGF0YVZhbGlkYXRpb24gPSBmdW5jdGlvbiBkYXRhVmFsaWRhdGlvbihkYXRhKSB7XG4gIHZhciBfYTsgLy8gMS4g5b+F6aG75Lyg5YWl5pWw5o2uXG5cblxuICBpZiAoIWRhdGEpIHtcbiAgICBjb25zb2xlLmVycm9yKCdHNiBFcnJvciBUaXBzOiB0aGUgZGF0YSBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gMi4g6IqC54K555qEIElEIOW/hemhu+S4uuWtl+espuS4suaIluaVsOWtl+exu+Wei1xuXG5cbiAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcyxcbiAgICAgIGVkZ2VzID0gZGF0YS5lZGdlcyxcbiAgICAgIF9iID0gZGF0YS5jb21ib3MsXG4gICAgICBjb21ib3MgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcblxuICBpZiAoIW5vZGVzICYmICFlZGdlcykge1xuICAgIHZhciB2YWxpZGF0ZWRfMSA9IHRydWU7IC8vIOS4jeWtmOWcqCBub2RlcyDlkowgZWRnZXPvvIzliJnor7TmmI7mmK8gVHJlZUdyYXBoRGF0Ye+8jOaMiSBUcmVlR3JhcGhEYXRhIOinhOWImemqjOivgVxuXG4gICAgdHJhdmVyc2VUcmVlKGRhdGEsIGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgaWYgKCFpc1N0cmluZyhwYXJhbS5pZCkpIHtcbiAgICAgICAgdmFsaWRhdGVkXzEgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gdmFsaWRhdGVkXzE7XG4gIH1cblxuICB2YXIgbm9uTm9kZSA9IChub2RlcyB8fCBbXSkuZmluZChmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiAhaXNTdHJpbmcobm9kZS5pZCk7XG4gIH0pO1xuXG4gIGlmIChub25Ob2RlKSB7XG4gICAgY29uc29sZS53YXJuKFwiRzYgV2FybmluZyBUaXBzOiBtaXNzaW5nICdpZCcgcHJvcGVydHksIG9yICVjXCIuY29uY2F0KG5vbk5vZGUuaWQsIFwiJWMgaXMgbm90IGEgc3RyaW5nLlwiKSwgJ2ZvbnQtc2l6ZTogMjBweDsgY29sb3I6IHJlZDsnLCAnJyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIDMuIOi+ueeahCBzb3VyY2Ug5ZKMIHRhcmdldCDlv4XpobvlrZjlnKjkuo7oioLngrkg5oiWIENvbWJv5LitXG5cblxuICB2YXIgbm9kZUlkcyA9IChub2RlcyB8fCBbXSkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUuaWQ7XG4gIH0pO1xuICB2YXIgY29tYm9JZHMgPSAoX2EgPSBjb21ib3MpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5tYXAoZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgcmV0dXJuIGNvbWJvLmlkO1xuICB9KTtcblxuICB2YXIgaWRzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBub2RlSWRzLCB0cnVlKSwgY29tYm9JZHMsIHRydWUpO1xuXG4gIHZhciBub25FZGdlcyA9IChlZGdlcyB8fCBbXSkuZmluZChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiAhaWRzLmluY2x1ZGVzKGVkZ2Uuc291cmNlKSB8fCAhaWRzLmluY2x1ZGVzKGVkZ2UudGFyZ2V0KTtcbiAgfSk7XG5cbiAgaWYgKG5vbkVkZ2VzKSB7XG4gICAgY29uc29sZS53YXJuKFwiRzYgV2FybmluZyBUaXBzOiBUaGUgc291cmNlICVjXCIuY29uY2F0KG5vbkVkZ2VzLnNvdXJjZSwgXCIlYyBvciB0aGUgdGFyZ2V0ICVjXCIpLmNvbmNhdChub25FZGdlcy50YXJnZXQsIFwiJWMgb2YgdGhlIGVkZ2UgZG8gbm90IGV4aXN0IGluIHRoZSBub2RlcyBvciBjb21ib3MuXCIpLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIOmqjOivgea3u+WKoOiKgueCueOAgei+ueaIluS7jmNvbWJv5pe255qE5pWw5o2uXG4gKiBAcGFyYW0gdHlwZSDoioLngrnjgIHovrnmiJbku45jb21ib1xuICogQHBhcmFtIGRhdGEg5re75Yqg55qE5Y2V5p2h5pWw5o2uXG4gKiBAcmV0dXJuIGJvb2xlYW4g5YWo6YOo6aqM6K+B6YCa6L+H6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAqL1xuXG5leHBvcnQgdmFyIHNpbmdsZURhdGFWYWxpZGF0aW9uID0gZnVuY3Rpb24gc2luZ2xlRGF0YVZhbGlkYXRpb24odHlwZSwgZGF0YSkge1xuICBpZiAodHlwZSA9PT0gJ25vZGUnIHx8IHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAvLyDlv4XpobvmnIkgaWQg5a2X5q6177yM5LiUaWTlv4XpobvkuLrlrZfnrKbkuLLnsbvlnotcbiAgICBpZiAoZGF0YS5pZCAmJiAhaXNTdHJpbmcoZGF0YS5pZCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIkc2IFdhcm5pbmcgVGlwczogbWlzc2luZyAnaWQnIHByb3BlcnR5LCBvciB0aGUgJ2lkJyAlY1wiLmNvbmNhdChkYXRhLmlkLCBcIiVjIGlzIG5vdCBhIHN0cmluZy5cIiksICdmb250LXNpemU6IDIwcHg7IGNvbG9yOiByZWQ7JywgJycpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSAnZWRnZScpIHtcbiAgICAvLyDlv4XpobvmnIkgc291cmNlIOWSjCB0YXJnZXQg5a2X5q61XG4gICAgaWYgKCFkYXRhLnNvdXJjZSB8fCAhZGF0YS50YXJnZXQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIkc2IFdhcm5pbmcgVGlwczogbWlzc2luZyAnc291cmNlJyBvciAndGFyZ2V0JyBmb3IgdGhlIGVkZ2UuXCIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-core/es/util/validation.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/edges/index.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g6-element/es/edges/index.js ***! \*********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polyline */ \"./node_modules/@antv/g6-element/es/edges/polyline.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9pbmRleC5qcz9lNTNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi9wb2x5bGluZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/edges/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/edges/polyline-util.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g6-element/es/edges/polyline-util.js ***! \*****************************************************************/ /*! exports provided: getBBoxFromPoint, getBBoxFromPoints, isBBoxesOverlapping, filterConnectPoints, simplifyPolyline, getSimplePolyline, getExpandedBBox, isHorizontalPort, getExpandedBBoxPoint, mergeBBox, getPointsFromBBox, isPointOutsideBBox, getBBoxXCrossPoints, getBBoxYCrossPoints, getBBoxCrossPointsByPoint, distance, _costByPoints, heuristicCostEstimate, reconstructPath, removeFrom, isSegmentsIntersected, isSegmentCrossingBBox, getNeighborPoints, pathFinder, isBending, getBorderRadiusPoints, getPathWithBorderRadiusByPolyline, getPolylinePoints */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxFromPoint\", function() { return getBBoxFromPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxFromPoints\", function() { return getBBoxFromPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBBoxesOverlapping\", function() { return isBBoxesOverlapping; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterConnectPoints\", function() { return filterConnectPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"simplifyPolyline\", function() { return simplifyPolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSimplePolyline\", function() { return getSimplePolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getExpandedBBox\", function() { return getExpandedBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHorizontalPort\", function() { return isHorizontalPort; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getExpandedBBoxPoint\", function() { return getExpandedBBoxPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeBBox\", function() { return mergeBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPointsFromBBox\", function() { return getPointsFromBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointOutsideBBox\", function() { return isPointOutsideBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxXCrossPoints\", function() { return getBBoxXCrossPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxYCrossPoints\", function() { return getBBoxYCrossPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxCrossPointsByPoint\", function() { return getBBoxCrossPointsByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"_costByPoints\", function() { return _costByPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"heuristicCostEstimate\", function() { return heuristicCostEstimate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reconstructPath\", function() { return reconstructPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFrom\", function() { return removeFrom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSegmentsIntersected\", function() { return isSegmentsIntersected; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSegmentCrossingBBox\", function() { return isSegmentCrossingBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNeighborPoints\", function() { return getNeighborPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathFinder\", function() { return pathFinder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBending\", function() { return isBending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBorderRadiusPoints\", function() { return getBorderRadiusPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPathWithBorderRadiusByPolyline\", function() { return getPathWithBorderRadiusByPolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPolylinePoints\", function() { return getPolylinePoints; });\nvar getBBoxFromPoint = function getBBoxFromPoint(point) {\n var x = point.x,\n y = point.y;\n return {\n x: x,\n y: y,\n centerX: x,\n centerY: y,\n minX: x,\n minY: y,\n maxX: x,\n maxY: y,\n height: 0,\n width: 0\n };\n};\nvar getBBoxFromPoints = function getBBoxFromPoints(points) {\n if (points === void 0) {\n points = [];\n }\n\n var xs = [];\n var ys = [];\n points.forEach(function (p) {\n xs.push(p.x);\n ys.push(p.y);\n });\n var minX = Math.min.apply(Math, xs);\n var maxX = Math.max.apply(Math, xs);\n var minY = Math.min.apply(Math, ys);\n var maxY = Math.max.apply(Math, ys);\n return {\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2,\n maxX: maxX,\n maxY: maxY,\n minX: minX,\n minY: minY,\n height: maxY - minY,\n width: maxX - minX\n };\n};\nvar isBBoxesOverlapping = function isBBoxesOverlapping(b1, b2) {\n return Math.abs(b1.centerX - b2.centerX) * 2 < b1.width + b2.width && Math.abs(b1.centerY - b2.centerY) * 2 < b1.height + b2.height;\n};\nvar filterConnectPoints = function filterConnectPoints(points) {\n // pre-process: remove duplicated points\n var result = [];\n var pointsMap = {};\n var pointsLength = points.length;\n\n for (var i = pointsLength - 1; i >= 0; i--) {\n var p = points[i];\n p.id = \"\".concat(p.x, \"|||\").concat(p.y);\n pointsMap[p.id] = p;\n result.push(p);\n }\n\n return result;\n};\nvar simplifyPolyline = function simplifyPolyline(points) {\n return filterConnectPoints(points);\n};\nvar getSimplePolyline = function getSimplePolyline(sPoint, tPoint) {\n return [sPoint, {\n x: sPoint.x,\n y: tPoint.y\n }, tPoint];\n};\nvar getExpandedBBox = function getExpandedBBox(bbox, offset) {\n if (bbox.width || bbox.height) {\n return {\n centerX: bbox.centerX,\n centerY: bbox.centerY,\n minX: bbox.minX - offset,\n minY: bbox.minY - offset,\n maxX: bbox.maxX + offset,\n maxY: bbox.maxY + offset,\n height: bbox.height + 2 * offset,\n width: bbox.width + 2 * offset\n };\n } // when it is a point\n\n\n return bbox;\n};\nvar isHorizontalPort = function isHorizontalPort(port, bbox) {\n var dx = Math.abs(port.x - bbox.centerX);\n var dy = Math.abs(port.y - bbox.centerY);\n if (dx === 0 && dy === 0) return 0;\n return dx / bbox.width > dy / bbox.height;\n};\nvar getExpandedBBoxPoint = function getExpandedBBoxPoint(bbox, // 将原来节点 bbox 扩展了 offset 后的 bbox,且被 gridSize 格式化\npoint, // 被 gridSize 格式化后的位置(anchorPoint)\nanotherPoint) {\n var isHorizontal = isHorizontalPort(point, bbox);\n\n if (isHorizontal === 0) {\n // 说明锚点是节点中心,linkCenter: true。需要根据两个节点的相对关系决定方向\n var x = bbox.centerX;\n var y = bbox.centerY;\n\n if (anotherPoint.y < point.y) {\n // 另一端在左上/右上方时,总是从上方走\n y = bbox.minY;\n } else if (anotherPoint.x > point.x) {\n // 另一端在右下方,往右边走\n x = bbox.maxX;\n } else if (anotherPoint.x < point.x) {\n // 另一端在左下方,往左边走\n x = bbox.minX;\n } else if (anotherPoint.x === point.x) {\n // 另一段在正下方,往下走\n y = bbox.maxY;\n }\n\n return {\n x: x,\n y: y\n };\n }\n\n if (isHorizontal) {\n return {\n x: point.x > bbox.centerX ? bbox.maxX : bbox.minX,\n y: point.y\n };\n }\n\n return {\n x: point.x,\n y: point.y > bbox.centerY ? bbox.maxY : bbox.minY\n };\n};\n/**\n *\n * @param b1\n * @param b2\n */\n\nvar mergeBBox = function mergeBBox(b1, b2) {\n var minX = Math.min(b1.minX, b2.minX);\n var minY = Math.min(b1.minY, b2.minY);\n var maxX = Math.max(b1.maxX, b2.maxX);\n var maxY = Math.max(b1.maxY, b2.maxY);\n return {\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n height: maxY - minY,\n width: maxX - minX\n };\n};\nvar getPointsFromBBox = function getPointsFromBBox(bbox) {\n // anticlockwise\n // const { minX, minY, maxX, maxY } = bbox;\n return [{\n x: bbox.minX,\n y: bbox.minY\n }, {\n x: bbox.maxX,\n y: bbox.minY\n }, {\n x: bbox.maxX,\n y: bbox.maxY\n }, {\n x: bbox.minX,\n y: bbox.maxY\n }];\n};\nvar isPointOutsideBBox = function isPointOutsideBBox(point, bbox) {\n var x = point.x,\n y = point.y;\n return x < bbox.minX || x > bbox.maxX || y < bbox.minY || y > bbox.maxY;\n};\nvar getBBoxXCrossPoints = function getBBoxXCrossPoints(bbox, x) {\n if (x < bbox.minX || x > bbox.maxX) {\n return [];\n }\n\n return [{\n x: x,\n y: bbox.minY\n }, {\n x: x,\n y: bbox.maxY\n }];\n};\nvar getBBoxYCrossPoints = function getBBoxYCrossPoints(bbox, y) {\n if (y < bbox.minY || y > bbox.maxY) {\n return [];\n }\n\n return [{\n x: bbox.minX,\n y: y\n }, {\n x: bbox.maxX,\n y: y\n }];\n};\nvar getBBoxCrossPointsByPoint = function getBBoxCrossPointsByPoint(bbox, point) {\n return getBBoxXCrossPoints(bbox, point.x).concat(getBBoxYCrossPoints(bbox, point.y));\n};\n/**\n * 曼哈顿距离\n */\n\nvar distance = function distance(p1, p2) {\n return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);\n};\n/**\n * 如果 points 中的一个节点 x 与 p 相等,则消耗 -2。y 同\n * 即优先选择和 points 在同一水平线 / 垂直线上的点\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\n\nvar _costByPoints = function _costByPoints(p, points) {\n var offset = -2;\n var result = 0;\n points.forEach(function (point) {\n if (point) {\n if (p.x === point.x) {\n result += offset;\n }\n\n if (p.y === point.y) {\n result += offset;\n }\n }\n });\n return result;\n};\n/**\n * ps 经过 p 到 pt 的距离,减去其他路过节点造成的消耗\n */\n\nvar heuristicCostEstimate = function heuristicCostEstimate(p, ps, pt, source, target) {\n return distance(p, ps) + distance(p, pt) + _costByPoints(p, [ps, pt, source, target]);\n};\nvar reconstructPath = function reconstructPath(pathPoints, pointById, cameFrom, currentId, iterator) {\n if (iterator === void 0) {\n iterator = 0;\n }\n\n pathPoints.unshift(pointById[currentId]);\n\n if (cameFrom[currentId] && cameFrom[currentId] !== currentId && iterator <= 100) {\n reconstructPath(pathPoints, pointById, cameFrom, cameFrom[currentId], iterator + 1);\n }\n};\n/**\n * 从 arr 中删去 item\n */\n\nvar removeFrom = function removeFrom(arr, item) {\n var index = arr.indexOf(item);\n\n if (index > -1) {\n arr.splice(index, 1);\n }\n};\nvar isSegmentsIntersected = function isSegmentsIntersected(p0, p1, p2, p3) {\n var v1x = p2.x - p0.x;\n var v1y = p2.y - p0.y;\n var v2x = p3.x - p0.x;\n var v2y = p3.y - p0.y;\n var v3x = p2.x - p1.x;\n var v3y = p2.y - p1.y;\n var v4x = p3.x - p1.x;\n var v4y = p3.y - p1.y;\n var pd1 = v1x * v2y - v1y * v2x;\n var pd2 = v3x * v4y - v3y * v4x;\n var pd3 = v1x * v3y - v1y * v3x;\n var pd4 = v2x * v4y - v2y * v4x;\n return pd1 * pd2 <= 0 && pd3 * pd4 <= 0;\n};\nvar isSegmentCrossingBBox = function isSegmentCrossingBBox(p1, p2, bbox) {\n if (bbox.width || bbox.height) {\n var _a = getPointsFromBBox(bbox),\n pa = _a[0],\n pb = _a[1],\n pc = _a[2],\n pd = _a[3];\n\n return isSegmentsIntersected(p1, p2, pa, pb) || isSegmentsIntersected(p1, p2, pa, pd) || isSegmentsIntersected(p1, p2, pb, pc) || isSegmentsIntersected(p1, p2, pc, pd);\n }\n\n return false;\n};\n/**\n * 在 points 中找到满足 x 或 y 和 point 的 x 或 y 相等,且与 point 连线不经过 bbox1 与 bbox2 的点\n */\n\nvar getNeighborPoints = function getNeighborPoints(points, point, bbox1, bbox2) {\n var neighbors = [];\n points.forEach(function (p) {\n if (p === point) return;\n\n if (p.x === point.x || p.y === point.y) {\n if (isSegmentCrossingBBox(p, point, bbox1) || isSegmentCrossingBBox(p, point, bbox2)) return;\n neighbors.push(p);\n }\n });\n return filterConnectPoints(neighbors);\n};\nvar pathFinder = function pathFinder(points, start, goal, sBBox, tBBox, os, ot) {\n // A-Star Algorithm\n var closedSet = [];\n var openSet = [start];\n var cameFrom = {};\n var gScore = {}; // all default values are Infinity\n\n var fScore = {}; // all default values are Infinity\n\n gScore[start.id] = 0;\n fScore[start.id] = heuristicCostEstimate(start, goal, start);\n var pointById = {};\n points.forEach(function (p) {\n pointById[p.id] = p;\n });\n var current, lowestFScore;\n\n while (openSet.length) {\n current = undefined;\n lowestFScore = Infinity; // 找到 openSet 中 fScore 最小的点\n\n openSet.forEach(function (p) {\n if (fScore[p.id] <= lowestFScore) {\n lowestFScore = fScore[p.id];\n current = p;\n }\n }); // 若 openSet 中 fScore 最小的点就是终点\n\n if (current === goal) {\n // ending condition\n var pathPoints = [];\n reconstructPath(pathPoints, pointById, cameFrom, goal.id);\n return pathPoints;\n }\n\n removeFrom(openSet, current);\n closedSet.push(current);\n getNeighborPoints(points, current, sBBox, tBBox).forEach(function (neighbor) {\n if (closedSet.indexOf(neighbor) !== -1) {\n return;\n }\n\n if (openSet.indexOf(neighbor) === -1) {\n openSet.push(neighbor);\n }\n\n var tentativeGScore = fScore[current.id] + distance(current, neighbor); // + distance(neighbor, goal);\n\n if (gScore[neighbor.id] && tentativeGScore >= gScore[neighbor.id]) {\n return;\n }\n\n cameFrom[neighbor.id] = current.id;\n gScore[neighbor.id] = tentativeGScore;\n fScore[neighbor.id] = gScore[neighbor.id] + heuristicCostEstimate(neighbor, goal, start, os, ot);\n });\n } // throw new Error('Cannot find path');\n\n\n return [start, goal];\n};\nvar isBending = function isBending(p0, p1, p2) {\n return !(p0.x === p1.x && p1.x === p2.x || p0.y === p1.y && p1.y === p2.y);\n};\nvar getBorderRadiusPoints = function getBorderRadiusPoints(p0, p1, p2, r) {\n var d0 = distance(p0, p1);\n var d1 = distance(p2, p1);\n\n if (d0 < r) {\n r = d0;\n }\n\n if (d1 < r) {\n r = d1;\n }\n\n var ps = {\n x: p1.x - r / d0 * (p1.x - p0.x),\n y: p1.y - r / d0 * (p1.y - p0.y)\n };\n var pt = {\n x: p1.x - r / d1 * (p1.x - p2.x),\n y: p1.y - r / d1 * (p1.y - p2.y)\n };\n return [ps, pt];\n};\nvar getPathWithBorderRadiusByPolyline = function getPathWithBorderRadiusByPolyline(points, borderRadius) {\n var pathSegments = [];\n var startPoint = points[0];\n pathSegments.push(\"M\".concat(startPoint.x, \" \").concat(startPoint.y));\n points.forEach(function (p, i) {\n var p1 = points[i + 1];\n var p2 = points[i + 2];\n\n if (p1 && p2) {\n if (isBending(p, p1, p2)) {\n var _a = getBorderRadiusPoints(p, p1, p2, borderRadius),\n ps = _a[0],\n pt = _a[1];\n\n pathSegments.push(\"L\".concat(ps.x, \" \").concat(ps.y));\n pathSegments.push(\"Q\".concat(p1.x, \" \").concat(p1.y, \" \").concat(pt.x, \" \").concat(pt.y));\n pathSegments.push(\"L\".concat(pt.x, \" \").concat(pt.y));\n } else {\n pathSegments.push(\"L\".concat(p1.x, \" \").concat(p1.y));\n }\n } else if (p1) {\n pathSegments.push(\"L\".concat(p1.x, \" \").concat(p1.y));\n }\n });\n return pathSegments.join('');\n};\nvar getPolylinePoints = function getPolylinePoints(start, end, sNode, tNode, offset) {\n var sBBox, tBBox;\n\n if (!sNode || !sNode.getType()) {\n sBBox = getBBoxFromPoint(start);\n } else if (sNode.getType() === 'combo') {\n var sNodeKeyShape = sNode.getKeyShape();\n sBBox = sNodeKeyShape.getCanvasBBox() || getBBoxFromPoint(start);\n sBBox.centerX = (sBBox.minX + sBBox.maxX) / 2;\n sBBox.centerY = (sBBox.minY + sBBox.maxY) / 2;\n } else {\n sBBox = sNode.getBBox();\n }\n\n if (!tNode || !tNode.getType()) {\n tBBox = getBBoxFromPoint(end);\n } else if (tNode.getType() === 'combo') {\n var tKeyShapeBBox = tNode.getKeyShape().getBBox();\n\n if (tKeyShapeBBox) {\n var _a = tNode.getModel(),\n tx = _a.x,\n ty = _a.y;\n\n tBBox = {\n x: tx,\n y: ty,\n width: tKeyShapeBBox.width,\n height: tKeyShapeBBox.height,\n minX: tKeyShapeBBox.minX + tx,\n maxX: tKeyShapeBBox.maxX + tx,\n minY: tKeyShapeBBox.minY + ty,\n maxY: tKeyShapeBBox.maxY + ty\n };\n tBBox.centerX = (tBBox.minX + tBBox.maxX) / 2;\n tBBox.centerY = (tBBox.minY + tBBox.maxY) / 2;\n } else {\n tBBox = getBBoxFromPoint(end);\n }\n } else {\n tBBox = tNode && tNode.getBBox();\n } // if (isBBoxesOverlapping(sBBox, tBBox)) {\n // // source and target nodes are overlapping\n // return simplifyPolyline(getSimplePolyline(start, end));\n // }\n\n\n var sxBBox = getExpandedBBox(sBBox, offset);\n var txBBox = getExpandedBBox(tBBox, offset); // if (isBBoxesOverlapping(sxBBox, txBBox)) {\n // // the expanded bounding boxes of source and target nodes are overlapping\n // return simplifyPolyline(getSimplePolyline(start, end));\n // }\n\n var sPoint = getExpandedBBoxPoint(sxBBox, start, end);\n var tPoint = getExpandedBBoxPoint(txBBox, end, start);\n var lineBBox = getBBoxFromPoints([sPoint, tPoint]);\n var sMixBBox = mergeBBox(sxBBox, lineBBox);\n var tMixBBox = mergeBBox(txBBox, lineBBox);\n var connectPoints = [];\n connectPoints = connectPoints.concat(getPointsFromBBox(sMixBBox)).concat(getPointsFromBBox(tMixBBox));\n var centerPoint = {\n x: (start.x + end.x) / 2,\n y: (start.y + end.y) / 2\n };\n [lineBBox, sMixBBox, tMixBBox].forEach(function (bbox) {\n connectPoints = connectPoints.concat(getBBoxCrossPointsByPoint(bbox, centerPoint).filter(function (p) {\n return isPointOutsideBBox(p, sxBBox) && isPointOutsideBBox(p, txBBox);\n }));\n });\n [{\n x: sPoint.x,\n y: tPoint.y\n }, {\n x: tPoint.x,\n y: sPoint.y\n }].forEach(function (p) {\n // impossible!!\n if (isPointOutsideBBox(p, sxBBox) && isPointOutsideBBox(p, txBBox) // &&\n // isPointInsideBBox(p, sMixBBox) && isPointInsideBBox(p, tMixBBox)\n ) {\n connectPoints.push(p);\n }\n });\n connectPoints.unshift(sPoint);\n connectPoints.push(tPoint); // filter out dulplicated points in connectPoints\n\n connectPoints = filterConnectPoints(connectPoints); // , sxBBox, txBBox, outerBBox\n\n var pathPoints = pathFinder(connectPoints, sPoint, tPoint, sBBox, tBBox, start, end);\n pathPoints.unshift(start);\n pathPoints.push(end);\n return simplifyPolyline(pathPoints);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS11dGlsLmpzPzIxMzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQyxRQUFRO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLFlBQVkseUJBQXlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZFQUE2RTs7QUFFN0U7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsNkJBQTZCOztBQUU3QixxREFBcUQ7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS11dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBnZXRCQm94RnJvbVBvaW50ID0gZnVuY3Rpb24gZ2V0QkJveEZyb21Qb2ludChwb2ludCkge1xuICB2YXIgeCA9IHBvaW50LngsXG4gICAgICB5ID0gcG9pbnQueTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4LFxuICAgIHk6IHksXG4gICAgY2VudGVyWDogeCxcbiAgICBjZW50ZXJZOiB5LFxuICAgIG1pblg6IHgsXG4gICAgbWluWTogeSxcbiAgICBtYXhYOiB4LFxuICAgIG1heFk6IHksXG4gICAgaGVpZ2h0OiAwLFxuICAgIHdpZHRoOiAwXG4gIH07XG59O1xuZXhwb3J0IHZhciBnZXRCQm94RnJvbVBvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hGcm9tUG9pbnRzKHBvaW50cykge1xuICBpZiAocG9pbnRzID09PSB2b2lkIDApIHtcbiAgICBwb2ludHMgPSBbXTtcbiAgfVxuXG4gIHZhciB4cyA9IFtdO1xuICB2YXIgeXMgPSBbXTtcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICB4cy5wdXNoKHAueCk7XG4gICAgeXMucHVzaChwLnkpO1xuICB9KTtcbiAgdmFyIG1pblggPSBNYXRoLm1pbi5hcHBseShNYXRoLCB4cyk7XG4gIHZhciBtYXhYID0gTWF0aC5tYXguYXBwbHkoTWF0aCwgeHMpO1xuICB2YXIgbWluWSA9IE1hdGgubWluLmFwcGx5KE1hdGgsIHlzKTtcbiAgdmFyIG1heFkgPSBNYXRoLm1heC5hcHBseShNYXRoLCB5cyk7XG4gIHJldHVybiB7XG4gICAgY2VudGVyWDogKG1pblggKyBtYXhYKSAvIDIsXG4gICAgY2VudGVyWTogKG1pblkgKyBtYXhZKSAvIDIsXG4gICAgbWF4WDogbWF4WCxcbiAgICBtYXhZOiBtYXhZLFxuICAgIG1pblg6IG1pblgsXG4gICAgbWluWTogbWluWSxcbiAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgIHdpZHRoOiBtYXhYIC0gbWluWFxuICB9O1xufTtcbmV4cG9ydCB2YXIgaXNCQm94ZXNPdmVybGFwcGluZyA9IGZ1bmN0aW9uIGlzQkJveGVzT3ZlcmxhcHBpbmcoYjEsIGIyKSB7XG4gIHJldHVybiBNYXRoLmFicyhiMS5jZW50ZXJYIC0gYjIuY2VudGVyWCkgKiAyIDwgYjEud2lkdGggKyBiMi53aWR0aCAmJiBNYXRoLmFicyhiMS5jZW50ZXJZIC0gYjIuY2VudGVyWSkgKiAyIDwgYjEuaGVpZ2h0ICsgYjIuaGVpZ2h0O1xufTtcbmV4cG9ydCB2YXIgZmlsdGVyQ29ubmVjdFBvaW50cyA9IGZ1bmN0aW9uIGZpbHRlckNvbm5lY3RQb2ludHMocG9pbnRzKSB7XG4gIC8vIHByZS1wcm9jZXNzOiByZW1vdmUgZHVwbGljYXRlZCBwb2ludHNcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgcG9pbnRzTWFwID0ge307XG4gIHZhciBwb2ludHNMZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSBwb2ludHNMZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgIHAuaWQgPSBcIlwiLmNvbmNhdChwLngsIFwifHx8XCIpLmNvbmNhdChwLnkpO1xuICAgIHBvaW50c01hcFtwLmlkXSA9IHA7XG4gICAgcmVzdWx0LnB1c2gocCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCB2YXIgc2ltcGxpZnlQb2x5bGluZSA9IGZ1bmN0aW9uIHNpbXBsaWZ5UG9seWxpbmUocG9pbnRzKSB7XG4gIHJldHVybiBmaWx0ZXJDb25uZWN0UG9pbnRzKHBvaW50cyk7XG59O1xuZXhwb3J0IHZhciBnZXRTaW1wbGVQb2x5bGluZSA9IGZ1bmN0aW9uIGdldFNpbXBsZVBvbHlsaW5lKHNQb2ludCwgdFBvaW50KSB7XG4gIHJldHVybiBbc1BvaW50LCB7XG4gICAgeDogc1BvaW50LngsXG4gICAgeTogdFBvaW50LnlcbiAgfSwgdFBvaW50XTtcbn07XG5leHBvcnQgdmFyIGdldEV4cGFuZGVkQkJveCA9IGZ1bmN0aW9uIGdldEV4cGFuZGVkQkJveChiYm94LCBvZmZzZXQpIHtcbiAgaWYgKGJib3gud2lkdGggfHwgYmJveC5oZWlnaHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2VudGVyWDogYmJveC5jZW50ZXJYLFxuICAgICAgY2VudGVyWTogYmJveC5jZW50ZXJZLFxuICAgICAgbWluWDogYmJveC5taW5YIC0gb2Zmc2V0LFxuICAgICAgbWluWTogYmJveC5taW5ZIC0gb2Zmc2V0LFxuICAgICAgbWF4WDogYmJveC5tYXhYICsgb2Zmc2V0LFxuICAgICAgbWF4WTogYmJveC5tYXhZICsgb2Zmc2V0LFxuICAgICAgaGVpZ2h0OiBiYm94LmhlaWdodCArIDIgKiBvZmZzZXQsXG4gICAgICB3aWR0aDogYmJveC53aWR0aCArIDIgKiBvZmZzZXRcbiAgICB9O1xuICB9IC8vIHdoZW4gaXQgaXMgYSBwb2ludFxuXG5cbiAgcmV0dXJuIGJib3g7XG59O1xuZXhwb3J0IHZhciBpc0hvcml6b250YWxQb3J0ID0gZnVuY3Rpb24gaXNIb3Jpem9udGFsUG9ydChwb3J0LCBiYm94KSB7XG4gIHZhciBkeCA9IE1hdGguYWJzKHBvcnQueCAtIGJib3guY2VudGVyWCk7XG4gIHZhciBkeSA9IE1hdGguYWJzKHBvcnQueSAtIGJib3guY2VudGVyWSk7XG4gIGlmIChkeCA9PT0gMCAmJiBkeSA9PT0gMCkgcmV0dXJuIDA7XG4gIHJldHVybiBkeCAvIGJib3gud2lkdGggPiBkeSAvIGJib3guaGVpZ2h0O1xufTtcbmV4cG9ydCB2YXIgZ2V0RXhwYW5kZWRCQm94UG9pbnQgPSBmdW5jdGlvbiBnZXRFeHBhbmRlZEJCb3hQb2ludChiYm94LCAvLyDlsIbljp/mnaXoioLngrkgYmJveCDmianlsZXkuoYgb2Zmc2V0IOWQjueahCBiYm9477yM5LiU6KKrIGdyaWRTaXplIOagvOW8j+WMllxucG9pbnQsIC8vIOiiqyBncmlkU2l6ZSDmoLzlvI/ljJblkI7nmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxuYW5vdGhlclBvaW50KSB7XG4gIHZhciBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxQb3J0KHBvaW50LCBiYm94KTtcblxuICBpZiAoaXNIb3Jpem9udGFsID09PSAwKSB7XG4gICAgLy8g6K+05piO6ZSa54K55piv6IqC54K55Lit5b+D77yMbGlua0NlbnRlcjogdHJ1ZeOAgumcgOimgeagueaNruS4pOS4quiKgueCueeahOebuOWvueWFs+ezu+WGs+WumuaWueWQkVxuICAgIHZhciB4ID0gYmJveC5jZW50ZXJYO1xuICAgIHZhciB5ID0gYmJveC5jZW50ZXJZO1xuXG4gICAgaWYgKGFub3RoZXJQb2ludC55IDwgcG9pbnQueSkge1xuICAgICAgLy8g5Y+m5LiA56uv5Zyo5bem5LiKL+WPs+S4iuaWueaXtu+8jOaAu+aYr+S7juS4iuaWuei1sFxuICAgICAgeSA9IGJib3gubWluWTtcbiAgICB9IGVsc2UgaWYgKGFub3RoZXJQb2ludC54ID4gcG9pbnQueCkge1xuICAgICAgLy8g5Y+m5LiA56uv5Zyo5Y+z5LiL5pa577yM5b6A5Y+z6L656LWwXG4gICAgICB4ID0gYmJveC5tYXhYO1xuICAgIH0gZWxzZSBpZiAoYW5vdGhlclBvaW50LnggPCBwb2ludC54KSB7XG4gICAgICAvLyDlj6bkuIDnq6/lnKjlt6bkuIvmlrnvvIzlvoDlt6bovrnotbBcbiAgICAgIHggPSBiYm94Lm1pblg7XG4gICAgfSBlbHNlIGlmIChhbm90aGVyUG9pbnQueCA9PT0gcG9pbnQueCkge1xuICAgICAgLy8g5Y+m5LiA5q615Zyo5q2j5LiL5pa577yM5b6A5LiL6LWwXG4gICAgICB5ID0gYmJveC5tYXhZO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH07XG4gIH1cblxuICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHBvaW50LnggPiBiYm94LmNlbnRlclggPyBiYm94Lm1heFggOiBiYm94Lm1pblgsXG4gICAgICB5OiBwb2ludC55XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcG9pbnQueCxcbiAgICB5OiBwb2ludC55ID4gYmJveC5jZW50ZXJZID8gYmJveC5tYXhZIDogYmJveC5taW5ZXG4gIH07XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGIxXG4gKiBAcGFyYW0gYjJcbiAqL1xuXG5leHBvcnQgdmFyIG1lcmdlQkJveCA9IGZ1bmN0aW9uIG1lcmdlQkJveChiMSwgYjIpIHtcbiAgdmFyIG1pblggPSBNYXRoLm1pbihiMS5taW5YLCBiMi5taW5YKTtcbiAgdmFyIG1pblkgPSBNYXRoLm1pbihiMS5taW5ZLCBiMi5taW5ZKTtcbiAgdmFyIG1heFggPSBNYXRoLm1heChiMS5tYXhYLCBiMi5tYXhYKTtcbiAgdmFyIG1heFkgPSBNYXRoLm1heChiMS5tYXhZLCBiMi5tYXhZKTtcbiAgcmV0dXJuIHtcbiAgICBjZW50ZXJYOiAobWluWCArIG1heFgpIC8gMixcbiAgICBjZW50ZXJZOiAobWluWSArIG1heFkpIC8gMixcbiAgICBtaW5YOiBtaW5YLFxuICAgIG1pblk6IG1pblksXG4gICAgbWF4WDogbWF4WCxcbiAgICBtYXhZOiBtYXhZLFxuICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YXG4gIH07XG59O1xuZXhwb3J0IHZhciBnZXRQb2ludHNGcm9tQkJveCA9IGZ1bmN0aW9uIGdldFBvaW50c0Zyb21CQm94KGJib3gpIHtcbiAgLy8gYW50aWNsb2Nrd2lzZVxuICAvLyBjb25zdCB7IG1pblgsIG1pblksIG1heFgsIG1heFkgfSA9IGJib3g7XG4gIHJldHVybiBbe1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfSwge1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfV07XG59O1xuZXhwb3J0IHZhciBpc1BvaW50T3V0c2lkZUJCb3ggPSBmdW5jdGlvbiBpc1BvaW50T3V0c2lkZUJCb3gocG9pbnQsIGJib3gpIHtcbiAgdmFyIHggPSBwb2ludC54LFxuICAgICAgeSA9IHBvaW50Lnk7XG4gIHJldHVybiB4IDwgYmJveC5taW5YIHx8IHggPiBiYm94Lm1heFggfHwgeSA8IGJib3gubWluWSB8fCB5ID4gYmJveC5tYXhZO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveFhDcm9zc1BvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hYQ3Jvc3NQb2ludHMoYmJveCwgeCkge1xuICBpZiAoeCA8IGJib3gubWluWCB8fCB4ID4gYmJveC5tYXhYKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIFt7XG4gICAgeDogeCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IHgsXG4gICAgeTogYmJveC5tYXhZXG4gIH1dO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveFlDcm9zc1BvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hZQ3Jvc3NQb2ludHMoYmJveCwgeSkge1xuICBpZiAoeSA8IGJib3gubWluWSB8fCB5ID4gYmJveC5tYXhZKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIFt7XG4gICAgeDogYmJveC5taW5YLFxuICAgIHk6IHlcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiB5XG4gIH1dO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveENyb3NzUG9pbnRzQnlQb2ludCA9IGZ1bmN0aW9uIGdldEJCb3hDcm9zc1BvaW50c0J5UG9pbnQoYmJveCwgcG9pbnQpIHtcbiAgcmV0dXJuIGdldEJCb3hYQ3Jvc3NQb2ludHMoYmJveCwgcG9pbnQueCkuY29uY2F0KGdldEJCb3hZQ3Jvc3NQb2ludHMoYmJveCwgcG9pbnQueSkpO1xufTtcbi8qKlxuICog5pu85ZOI6aG/6Led56a7XG4gKi9cblxuZXhwb3J0IHZhciBkaXN0YW5jZSA9IGZ1bmN0aW9uIGRpc3RhbmNlKHAxLCBwMikge1xuICByZXR1cm4gTWF0aC5hYnMocDEueCAtIHAyLngpICsgTWF0aC5hYnMocDEueSAtIHAyLnkpO1xufTtcbi8qKlxuICog5aaC5p6cIHBvaW50cyDkuK3nmoTkuIDkuKroioLngrkgeCDkuI4gcCDnm7jnrYnvvIzliJnmtojogJcgLTLjgIJ5IOWQjFxuICog5Y2z5LyY5YWI6YCJ5oup5ZKMIHBvaW50cyDlnKjlkIzkuIDmsLTlubPnur8gLyDlnoLnm7Tnur/kuIrnmoTngrlcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuXG5leHBvcnQgdmFyIF9jb3N0QnlQb2ludHMgPSBmdW5jdGlvbiBfY29zdEJ5UG9pbnRzKHAsIHBvaW50cykge1xuICB2YXIgb2Zmc2V0ID0gLTI7XG4gIHZhciByZXN1bHQgPSAwO1xuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBpZiAocG9pbnQpIHtcbiAgICAgIGlmIChwLnggPT09IHBvaW50LngpIHtcbiAgICAgICAgcmVzdWx0ICs9IG9mZnNldDtcbiAgICAgIH1cblxuICAgICAgaWYgKHAueSA9PT0gcG9pbnQueSkge1xuICAgICAgICByZXN1bHQgKz0gb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyoqXG4gKiBwcyDnu4/ov4cgcCDliLAgcHQg55qE6Led56a777yM5YeP5Y675YW25LuW6Lev6L+H6IqC54K56YCg5oiQ55qE5raI6ICXXG4gKi9cblxuZXhwb3J0IHZhciBoZXVyaXN0aWNDb3N0RXN0aW1hdGUgPSBmdW5jdGlvbiBoZXVyaXN0aWNDb3N0RXN0aW1hdGUocCwgcHMsIHB0LCBzb3VyY2UsIHRhcmdldCkge1xuICByZXR1cm4gZGlzdGFuY2UocCwgcHMpICsgZGlzdGFuY2UocCwgcHQpICsgX2Nvc3RCeVBvaW50cyhwLCBbcHMsIHB0LCBzb3VyY2UsIHRhcmdldF0pO1xufTtcbmV4cG9ydCB2YXIgcmVjb25zdHJ1Y3RQYXRoID0gZnVuY3Rpb24gcmVjb25zdHJ1Y3RQYXRoKHBhdGhQb2ludHMsIHBvaW50QnlJZCwgY2FtZUZyb20sIGN1cnJlbnRJZCwgaXRlcmF0b3IpIHtcbiAgaWYgKGl0ZXJhdG9yID09PSB2b2lkIDApIHtcbiAgICBpdGVyYXRvciA9IDA7XG4gIH1cblxuICBwYXRoUG9pbnRzLnVuc2hpZnQocG9pbnRCeUlkW2N1cnJlbnRJZF0pO1xuXG4gIGlmIChjYW1lRnJvbVtjdXJyZW50SWRdICYmIGNhbWVGcm9tW2N1cnJlbnRJZF0gIT09IGN1cnJlbnRJZCAmJiBpdGVyYXRvciA8PSAxMDApIHtcbiAgICByZWNvbnN0cnVjdFBhdGgocGF0aFBvaW50cywgcG9pbnRCeUlkLCBjYW1lRnJvbSwgY2FtZUZyb21bY3VycmVudElkXSwgaXRlcmF0b3IgKyAxKTtcbiAgfVxufTtcbi8qKlxuICog5LuOIGFyciDkuK3liKDljrsgaXRlbVxuICovXG5cbmV4cG9ydCB2YXIgcmVtb3ZlRnJvbSA9IGZ1bmN0aW9uIHJlbW92ZUZyb20oYXJyLCBpdGVtKSB7XG4gIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuXG4gIGlmIChpbmRleCA+IC0xKSB7XG4gICAgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGlzU2VnbWVudHNJbnRlcnNlY3RlZCA9IGZ1bmN0aW9uIGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMCwgcDEsIHAyLCBwMykge1xuICB2YXIgdjF4ID0gcDIueCAtIHAwLng7XG4gIHZhciB2MXkgPSBwMi55IC0gcDAueTtcbiAgdmFyIHYyeCA9IHAzLnggLSBwMC54O1xuICB2YXIgdjJ5ID0gcDMueSAtIHAwLnk7XG4gIHZhciB2M3ggPSBwMi54IC0gcDEueDtcbiAgdmFyIHYzeSA9IHAyLnkgLSBwMS55O1xuICB2YXIgdjR4ID0gcDMueCAtIHAxLng7XG4gIHZhciB2NHkgPSBwMy55IC0gcDEueTtcbiAgdmFyIHBkMSA9IHYxeCAqIHYyeSAtIHYxeSAqIHYyeDtcbiAgdmFyIHBkMiA9IHYzeCAqIHY0eSAtIHYzeSAqIHY0eDtcbiAgdmFyIHBkMyA9IHYxeCAqIHYzeSAtIHYxeSAqIHYzeDtcbiAgdmFyIHBkNCA9IHYyeCAqIHY0eSAtIHYyeSAqIHY0eDtcbiAgcmV0dXJuIHBkMSAqIHBkMiA8PSAwICYmIHBkMyAqIHBkNCA8PSAwO1xufTtcbmV4cG9ydCB2YXIgaXNTZWdtZW50Q3Jvc3NpbmdCQm94ID0gZnVuY3Rpb24gaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAxLCBwMiwgYmJveCkge1xuICBpZiAoYmJveC53aWR0aCB8fCBiYm94LmhlaWdodCkge1xuICAgIHZhciBfYSA9IGdldFBvaW50c0Zyb21CQm94KGJib3gpLFxuICAgICAgICBwYSA9IF9hWzBdLFxuICAgICAgICBwYiA9IF9hWzFdLFxuICAgICAgICBwYyA9IF9hWzJdLFxuICAgICAgICBwZCA9IF9hWzNdO1xuXG4gICAgcmV0dXJuIGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMSwgcDIsIHBhLCBwYikgfHwgaXNTZWdtZW50c0ludGVyc2VjdGVkKHAxLCBwMiwgcGEsIHBkKSB8fCBpc1NlZ21lbnRzSW50ZXJzZWN0ZWQocDEsIHAyLCBwYiwgcGMpIHx8IGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMSwgcDIsIHBjLCBwZCk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuLyoqXG4gKiDlnKggcG9pbnRzIOS4reaJvuWIsOa7oei2syB4IOaIliB5IOWSjCBwb2ludCDnmoQgeCDmiJYgeSDnm7jnrYnvvIzkuJTkuI4gcG9pbnQg6L+e57q/5LiN57uP6L+HIGJib3gxIOS4jiBiYm94MiDnmoTngrlcbiAqL1xuXG5leHBvcnQgdmFyIGdldE5laWdoYm9yUG9pbnRzID0gZnVuY3Rpb24gZ2V0TmVpZ2hib3JQb2ludHMocG9pbnRzLCBwb2ludCwgYmJveDEsIGJib3gyKSB7XG4gIHZhciBuZWlnaGJvcnMgPSBbXTtcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICBpZiAocCA9PT0gcG9pbnQpIHJldHVybjtcblxuICAgIGlmIChwLnggPT09IHBvaW50LnggfHwgcC55ID09PSBwb2ludC55KSB7XG4gICAgICBpZiAoaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAsIHBvaW50LCBiYm94MSkgfHwgaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAsIHBvaW50LCBiYm94MikpIHJldHVybjtcbiAgICAgIG5laWdoYm9ycy5wdXNoKHApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmaWx0ZXJDb25uZWN0UG9pbnRzKG5laWdoYm9ycyk7XG59O1xuZXhwb3J0IHZhciBwYXRoRmluZGVyID0gZnVuY3Rpb24gcGF0aEZpbmRlcihwb2ludHMsIHN0YXJ0LCBnb2FsLCBzQkJveCwgdEJCb3gsIG9zLCBvdCkge1xuICAvLyBBLVN0YXIgQWxnb3JpdGhtXG4gIHZhciBjbG9zZWRTZXQgPSBbXTtcbiAgdmFyIG9wZW5TZXQgPSBbc3RhcnRdO1xuICB2YXIgY2FtZUZyb20gPSB7fTtcbiAgdmFyIGdTY29yZSA9IHt9OyAvLyBhbGwgZGVmYXVsdCB2YWx1ZXMgYXJlIEluZmluaXR5XG5cbiAgdmFyIGZTY29yZSA9IHt9OyAvLyBhbGwgZGVmYXVsdCB2YWx1ZXMgYXJlIEluZmluaXR5XG5cbiAgZ1Njb3JlW3N0YXJ0LmlkXSA9IDA7XG4gIGZTY29yZVtzdGFydC5pZF0gPSBoZXVyaXN0aWNDb3N0RXN0aW1hdGUoc3RhcnQsIGdvYWwsIHN0YXJ0KTtcbiAgdmFyIHBvaW50QnlJZCA9IHt9O1xuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgIHBvaW50QnlJZFtwLmlkXSA9IHA7XG4gIH0pO1xuICB2YXIgY3VycmVudCwgbG93ZXN0RlNjb3JlO1xuXG4gIHdoaWxlIChvcGVuU2V0Lmxlbmd0aCkge1xuICAgIGN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgbG93ZXN0RlNjb3JlID0gSW5maW5pdHk7IC8vIOaJvuWIsCBvcGVuU2V0IOS4rSBmU2NvcmUg5pyA5bCP55qE54K5XG5cbiAgICBvcGVuU2V0LmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgIGlmIChmU2NvcmVbcC5pZF0gPD0gbG93ZXN0RlNjb3JlKSB7XG4gICAgICAgIGxvd2VzdEZTY29yZSA9IGZTY29yZVtwLmlkXTtcbiAgICAgICAgY3VycmVudCA9IHA7XG4gICAgICB9XG4gICAgfSk7IC8vIOiLpSBvcGVuU2V0IOS4rSBmU2NvcmUg5pyA5bCP55qE54K55bCx5piv57uI54K5XG5cbiAgICBpZiAoY3VycmVudCA9PT0gZ29hbCkge1xuICAgICAgLy8gZW5kaW5nIGNvbmRpdGlvblxuICAgICAgdmFyIHBhdGhQb2ludHMgPSBbXTtcbiAgICAgIHJlY29uc3RydWN0UGF0aChwYXRoUG9pbnRzLCBwb2ludEJ5SWQsIGNhbWVGcm9tLCBnb2FsLmlkKTtcbiAgICAgIHJldHVybiBwYXRoUG9pbnRzO1xuICAgIH1cblxuICAgIHJlbW92ZUZyb20ob3BlblNldCwgY3VycmVudCk7XG4gICAgY2xvc2VkU2V0LnB1c2goY3VycmVudCk7XG4gICAgZ2V0TmVpZ2hib3JQb2ludHMocG9pbnRzLCBjdXJyZW50LCBzQkJveCwgdEJCb3gpLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9yKSB7XG4gICAgICBpZiAoY2xvc2VkU2V0LmluZGV4T2YobmVpZ2hib3IpICE9PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVuU2V0LmluZGV4T2YobmVpZ2hib3IpID09PSAtMSkge1xuICAgICAgICBvcGVuU2V0LnB1c2gobmVpZ2hib3IpO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGVudGF0aXZlR1Njb3JlID0gZlNjb3JlW2N1cnJlbnQuaWRdICsgZGlzdGFuY2UoY3VycmVudCwgbmVpZ2hib3IpOyAvLyArIGRpc3RhbmNlKG5laWdoYm9yLCBnb2FsKTtcblxuICAgICAgaWYgKGdTY29yZVtuZWlnaGJvci5pZF0gJiYgdGVudGF0aXZlR1Njb3JlID49IGdTY29yZVtuZWlnaGJvci5pZF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjYW1lRnJvbVtuZWlnaGJvci5pZF0gPSBjdXJyZW50LmlkO1xuICAgICAgZ1Njb3JlW25laWdoYm9yLmlkXSA9IHRlbnRhdGl2ZUdTY29yZTtcbiAgICAgIGZTY29yZVtuZWlnaGJvci5pZF0gPSBnU2NvcmVbbmVpZ2hib3IuaWRdICsgaGV1cmlzdGljQ29zdEVzdGltYXRlKG5laWdoYm9yLCBnb2FsLCBzdGFydCwgb3MsIG90KTtcbiAgICB9KTtcbiAgfSAvLyB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIHBhdGgnKTtcblxuXG4gIHJldHVybiBbc3RhcnQsIGdvYWxdO1xufTtcbmV4cG9ydCB2YXIgaXNCZW5kaW5nID0gZnVuY3Rpb24gaXNCZW5kaW5nKHAwLCBwMSwgcDIpIHtcbiAgcmV0dXJuICEocDAueCA9PT0gcDEueCAmJiBwMS54ID09PSBwMi54IHx8IHAwLnkgPT09IHAxLnkgJiYgcDEueSA9PT0gcDIueSk7XG59O1xuZXhwb3J0IHZhciBnZXRCb3JkZXJSYWRpdXNQb2ludHMgPSBmdW5jdGlvbiBnZXRCb3JkZXJSYWRpdXNQb2ludHMocDAsIHAxLCBwMiwgcikge1xuICB2YXIgZDAgPSBkaXN0YW5jZShwMCwgcDEpO1xuICB2YXIgZDEgPSBkaXN0YW5jZShwMiwgcDEpO1xuXG4gIGlmIChkMCA8IHIpIHtcbiAgICByID0gZDA7XG4gIH1cblxuICBpZiAoZDEgPCByKSB7XG4gICAgciA9IGQxO1xuICB9XG5cbiAgdmFyIHBzID0ge1xuICAgIHg6IHAxLnggLSByIC8gZDAgKiAocDEueCAtIHAwLngpLFxuICAgIHk6IHAxLnkgLSByIC8gZDAgKiAocDEueSAtIHAwLnkpXG4gIH07XG4gIHZhciBwdCA9IHtcbiAgICB4OiBwMS54IC0gciAvIGQxICogKHAxLnggLSBwMi54KSxcbiAgICB5OiBwMS55IC0gciAvIGQxICogKHAxLnkgLSBwMi55KVxuICB9O1xuICByZXR1cm4gW3BzLCBwdF07XG59O1xuZXhwb3J0IHZhciBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUgPSBmdW5jdGlvbiBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUocG9pbnRzLCBib3JkZXJSYWRpdXMpIHtcbiAgdmFyIHBhdGhTZWdtZW50cyA9IFtdO1xuICB2YXIgc3RhcnRQb2ludCA9IHBvaW50c1swXTtcbiAgcGF0aFNlZ21lbnRzLnB1c2goXCJNXCIuY29uY2F0KHN0YXJ0UG9pbnQueCwgXCIgXCIpLmNvbmNhdChzdGFydFBvaW50LnkpKTtcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHAsIGkpIHtcbiAgICB2YXIgcDEgPSBwb2ludHNbaSArIDFdO1xuICAgIHZhciBwMiA9IHBvaW50c1tpICsgMl07XG5cbiAgICBpZiAocDEgJiYgcDIpIHtcbiAgICAgIGlmIChpc0JlbmRpbmcocCwgcDEsIHAyKSkge1xuICAgICAgICB2YXIgX2EgPSBnZXRCb3JkZXJSYWRpdXNQb2ludHMocCwgcDEsIHAyLCBib3JkZXJSYWRpdXMpLFxuICAgICAgICAgICAgcHMgPSBfYVswXSxcbiAgICAgICAgICAgIHB0ID0gX2FbMV07XG5cbiAgICAgICAgcGF0aFNlZ21lbnRzLnB1c2goXCJMXCIuY29uY2F0KHBzLngsIFwiIFwiKS5jb25jYXQocHMueSkpO1xuICAgICAgICBwYXRoU2VnbWVudHMucHVzaChcIlFcIi5jb25jYXQocDEueCwgXCIgXCIpLmNvbmNhdChwMS55LCBcIiBcIikuY29uY2F0KHB0LngsIFwiIFwiKS5jb25jYXQocHQueSkpO1xuICAgICAgICBwYXRoU2VnbWVudHMucHVzaChcIkxcIi5jb25jYXQocHQueCwgXCIgXCIpLmNvbmNhdChwdC55KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoU2VnbWVudHMucHVzaChcIkxcIi5jb25jYXQocDEueCwgXCIgXCIpLmNvbmNhdChwMS55KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwMSkge1xuICAgICAgcGF0aFNlZ21lbnRzLnB1c2goXCJMXCIuY29uY2F0KHAxLngsIFwiIFwiKS5jb25jYXQocDEueSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwYXRoU2VnbWVudHMuam9pbignJyk7XG59O1xuZXhwb3J0IHZhciBnZXRQb2x5bGluZVBvaW50cyA9IGZ1bmN0aW9uIGdldFBvbHlsaW5lUG9pbnRzKHN0YXJ0LCBlbmQsIHNOb2RlLCB0Tm9kZSwgb2Zmc2V0KSB7XG4gIHZhciBzQkJveCwgdEJCb3g7XG5cbiAgaWYgKCFzTm9kZSB8fCAhc05vZGUuZ2V0VHlwZSgpKSB7XG4gICAgc0JCb3ggPSBnZXRCQm94RnJvbVBvaW50KHN0YXJ0KTtcbiAgfSBlbHNlIGlmIChzTm9kZS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICB2YXIgc05vZGVLZXlTaGFwZSA9IHNOb2RlLmdldEtleVNoYXBlKCk7XG4gICAgc0JCb3ggPSBzTm9kZUtleVNoYXBlLmdldENhbnZhc0JCb3goKSB8fCBnZXRCQm94RnJvbVBvaW50KHN0YXJ0KTtcbiAgICBzQkJveC5jZW50ZXJYID0gKHNCQm94Lm1pblggKyBzQkJveC5tYXhYKSAvIDI7XG4gICAgc0JCb3guY2VudGVyWSA9IChzQkJveC5taW5ZICsgc0JCb3gubWF4WSkgLyAyO1xuICB9IGVsc2Uge1xuICAgIHNCQm94ID0gc05vZGUuZ2V0QkJveCgpO1xuICB9XG5cbiAgaWYgKCF0Tm9kZSB8fCAhdE5vZGUuZ2V0VHlwZSgpKSB7XG4gICAgdEJCb3ggPSBnZXRCQm94RnJvbVBvaW50KGVuZCk7XG4gIH0gZWxzZSBpZiAodE5vZGUuZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgdmFyIHRLZXlTaGFwZUJCb3ggPSB0Tm9kZS5nZXRLZXlTaGFwZSgpLmdldEJCb3goKTtcblxuICAgIGlmICh0S2V5U2hhcGVCQm94KSB7XG4gICAgICB2YXIgX2EgPSB0Tm9kZS5nZXRNb2RlbCgpLFxuICAgICAgICAgIHR4ID0gX2EueCxcbiAgICAgICAgICB0eSA9IF9hLnk7XG5cbiAgICAgIHRCQm94ID0ge1xuICAgICAgICB4OiB0eCxcbiAgICAgICAgeTogdHksXG4gICAgICAgIHdpZHRoOiB0S2V5U2hhcGVCQm94LndpZHRoLFxuICAgICAgICBoZWlnaHQ6IHRLZXlTaGFwZUJCb3guaGVpZ2h0LFxuICAgICAgICBtaW5YOiB0S2V5U2hhcGVCQm94Lm1pblggKyB0eCxcbiAgICAgICAgbWF4WDogdEtleVNoYXBlQkJveC5tYXhYICsgdHgsXG4gICAgICAgIG1pblk6IHRLZXlTaGFwZUJCb3gubWluWSArIHR5LFxuICAgICAgICBtYXhZOiB0S2V5U2hhcGVCQm94Lm1heFkgKyB0eVxuICAgICAgfTtcbiAgICAgIHRCQm94LmNlbnRlclggPSAodEJCb3gubWluWCArIHRCQm94Lm1heFgpIC8gMjtcbiAgICAgIHRCQm94LmNlbnRlclkgPSAodEJCb3gubWluWSArIHRCQm94Lm1heFkpIC8gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgdEJCb3ggPSBnZXRCQm94RnJvbVBvaW50KGVuZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRCQm94ID0gdE5vZGUgJiYgdE5vZGUuZ2V0QkJveCgpO1xuICB9IC8vIGlmIChpc0JCb3hlc092ZXJsYXBwaW5nKHNCQm94LCB0QkJveCkpIHtcbiAgLy8gICAvLyBzb3VyY2UgYW5kIHRhcmdldCBub2RlcyBhcmUgb3ZlcmxhcHBpbmdcbiAgLy8gICByZXR1cm4gc2ltcGxpZnlQb2x5bGluZShnZXRTaW1wbGVQb2x5bGluZShzdGFydCwgZW5kKSk7XG4gIC8vIH1cblxuXG4gIHZhciBzeEJCb3ggPSBnZXRFeHBhbmRlZEJCb3goc0JCb3gsIG9mZnNldCk7XG4gIHZhciB0eEJCb3ggPSBnZXRFeHBhbmRlZEJCb3godEJCb3gsIG9mZnNldCk7IC8vIGlmIChpc0JCb3hlc092ZXJsYXBwaW5nKHN4QkJveCwgdHhCQm94KSkge1xuICAvLyAgIC8vIHRoZSBleHBhbmRlZCBib3VuZGluZyBib3hlcyBvZiBzb3VyY2UgYW5kIHRhcmdldCBub2RlcyBhcmUgb3ZlcmxhcHBpbmdcbiAgLy8gICByZXR1cm4gc2ltcGxpZnlQb2x5bGluZShnZXRTaW1wbGVQb2x5bGluZShzdGFydCwgZW5kKSk7XG4gIC8vIH1cblxuICB2YXIgc1BvaW50ID0gZ2V0RXhwYW5kZWRCQm94UG9pbnQoc3hCQm94LCBzdGFydCwgZW5kKTtcbiAgdmFyIHRQb2ludCA9IGdldEV4cGFuZGVkQkJveFBvaW50KHR4QkJveCwgZW5kLCBzdGFydCk7XG4gIHZhciBsaW5lQkJveCA9IGdldEJCb3hGcm9tUG9pbnRzKFtzUG9pbnQsIHRQb2ludF0pO1xuICB2YXIgc01peEJCb3ggPSBtZXJnZUJCb3goc3hCQm94LCBsaW5lQkJveCk7XG4gIHZhciB0TWl4QkJveCA9IG1lcmdlQkJveCh0eEJCb3gsIGxpbmVCQm94KTtcbiAgdmFyIGNvbm5lY3RQb2ludHMgPSBbXTtcbiAgY29ubmVjdFBvaW50cyA9IGNvbm5lY3RQb2ludHMuY29uY2F0KGdldFBvaW50c0Zyb21CQm94KHNNaXhCQm94KSkuY29uY2F0KGdldFBvaW50c0Zyb21CQm94KHRNaXhCQm94KSk7XG4gIHZhciBjZW50ZXJQb2ludCA9IHtcbiAgICB4OiAoc3RhcnQueCArIGVuZC54KSAvIDIsXG4gICAgeTogKHN0YXJ0LnkgKyBlbmQueSkgLyAyXG4gIH07XG4gIFtsaW5lQkJveCwgc01peEJCb3gsIHRNaXhCQm94XS5mb3JFYWNoKGZ1bmN0aW9uIChiYm94KSB7XG4gICAgY29ubmVjdFBvaW50cyA9IGNvbm5lY3RQb2ludHMuY29uY2F0KGdldEJCb3hDcm9zc1BvaW50c0J5UG9pbnQoYmJveCwgY2VudGVyUG9pbnQpLmZpbHRlcihmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIGlzUG9pbnRPdXRzaWRlQkJveChwLCBzeEJCb3gpICYmIGlzUG9pbnRPdXRzaWRlQkJveChwLCB0eEJCb3gpO1xuICAgIH0pKTtcbiAgfSk7XG4gIFt7XG4gICAgeDogc1BvaW50LngsXG4gICAgeTogdFBvaW50LnlcbiAgfSwge1xuICAgIHg6IHRQb2ludC54LFxuICAgIHk6IHNQb2ludC55XG4gIH1dLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAvLyBpbXBvc3NpYmxlISFcbiAgICBpZiAoaXNQb2ludE91dHNpZGVCQm94KHAsIHN4QkJveCkgJiYgaXNQb2ludE91dHNpZGVCQm94KHAsIHR4QkJveCkgLy8gJiZcbiAgICAvLyBpc1BvaW50SW5zaWRlQkJveChwLCBzTWl4QkJveCkgJiYgaXNQb2ludEluc2lkZUJCb3gocCwgdE1peEJCb3gpXG4gICAgKSB7XG4gICAgICBjb25uZWN0UG9pbnRzLnB1c2gocCk7XG4gICAgfVxuICB9KTtcbiAgY29ubmVjdFBvaW50cy51bnNoaWZ0KHNQb2ludCk7XG4gIGNvbm5lY3RQb2ludHMucHVzaCh0UG9pbnQpOyAvLyBmaWx0ZXIgb3V0IGR1bHBsaWNhdGVkIHBvaW50cyBpbiBjb25uZWN0UG9pbnRzXG5cbiAgY29ubmVjdFBvaW50cyA9IGZpbHRlckNvbm5lY3RQb2ludHMoY29ubmVjdFBvaW50cyk7IC8vICwgc3hCQm94LCB0eEJCb3gsIG91dGVyQkJveFxuXG4gIHZhciBwYXRoUG9pbnRzID0gcGF0aEZpbmRlcihjb25uZWN0UG9pbnRzLCBzUG9pbnQsIHRQb2ludCwgc0JCb3gsIHRCQm94LCBzdGFydCwgZW5kKTtcbiAgcGF0aFBvaW50cy51bnNoaWZ0KHN0YXJ0KTtcbiAgcGF0aFBvaW50cy5wdXNoKGVuZCk7XG4gIHJldHVybiBzaW1wbGlmeVBvbHlsaW5lKHBhdGhQb2ludHMpO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/edges/polyline-util.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/edges/polyline.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g6-element/es/edges/polyline.js ***! \************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _polyline_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./polyline-util */ \"./node_modules/@antv/g6-element/es/edges/polyline-util.js\");\n/* harmony import */ var _router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./router */ \"./node_modules/@antv/g6-element/es/edges/router.js\");\n\n\n\n\n // 折线\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerEdge\"])('polyline', {\n options: {\n color: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.color,\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.size,\n style: {\n radius: 0,\n offset: 15,\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style.stroke,\n lineAppendWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style.lineAppendWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n }\n },\n routeCfg: {\n obstacles: [],\n maxAllowedDirectionChange: Math.PI,\n maximumLoops: 500,\n gridSize: 10 // 指定精度\n\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeStateStyles)\n },\n shapeType: 'polyline',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var shapeStyle = this.getShapeStyle(cfg);\n if (shapeStyle.radius === 0) delete shapeStyle.radius;\n var keyShape = group.addShape('path', {\n className: 'edge-shape',\n name: 'edge-shape',\n attrs: shapeStyle\n });\n group['shapeMap']['edge-shape'] = keyShape;\n return keyShape;\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var strokeStyle = {\n stroke: cfg.color\n };\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n cfg = this.getPathPoints(cfg);\n this.radius = style.radius;\n this.offset = style.offset;\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg);\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var radius = style.radius;\n var defaultRouteCfg = this.options.routeCfg;\n var routeCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultRouteCfg, cfg.routeCfg);\n routeCfg.offset = style.offset;\n var path = this.getPath(points, source, target, radius, routeCfg);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(path) && path.length <= 1 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(path) && path.indexOf('L') === -1) {\n path = 'M0 0, L0 0';\n }\n\n if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) {\n path = 'M0 0, L0 0';\n }\n\n var attrs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style, style, {\n lineWidth: cfg.size,\n path: path\n });\n return attrs;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item) {\n var group = item.getContainer();\n if (!item.isVisible()) return;\n var strokeStyle = {\n stroke: cfg.color\n };\n var shape = group['shapeMap']['edge-shape'] || group.find(function (element) {\n return element.get('className') === 'edge-shape';\n }) || item.getKeyShape();\n var size = cfg.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg); // || cfg.controlPoints;\n\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var currentAttr = shape.attr();\n var previousStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, strokeStyle, currentAttr, cfg.style);\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var radius = previousStyle.radius;\n var defaultRouteCfg = this.options.routeCfg;\n var routeCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultRouteCfg, cfg.routeCfg);\n routeCfg.offset = previousStyle.offset;\n var path = this.getPath(points, source, target, radius, routeCfg);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(path) && path.length <= 1 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(path) && path.indexOf('L') === -1) {\n path = 'M0 0, L0 0';\n }\n\n if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) {\n path = 'M0 0, L0 0';\n }\n\n if (currentAttr.endArrow && previousStyle.endArrow === false) {\n cfg.style.endArrow = {\n path: ''\n };\n }\n\n if (currentAttr.startArrow && previousStyle.startArrow === false) {\n cfg.style.startArrow = {\n path: ''\n };\n }\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(strokeStyle, shape.attr(), {\n lineWidth: size,\n path: path\n }, cfg.style);\n\n if (shape) {\n shape.attr(style);\n }\n },\n getPath: function getPath(points, source, target, radius, routeCfg) {\n var offset = routeCfg.offset,\n simple = routeCfg.simple; // 指定了控制点\n\n if (!offset || points.length > 2) {\n if (radius) {\n return Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPathWithBorderRadiusByPolyline\"])(points, radius);\n }\n\n var pathArray_1 = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (point, index) {\n if (index === 0) {\n pathArray_1.push(['M', point.x, point.y]);\n } else {\n pathArray_1.push(['L', point.x, point.y]);\n }\n });\n return pathArray_1;\n } // 未指定控制点\n\n\n var polylinePoints = simple ? Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPolylinePoints\"])(points[points.length - 1], points[0], target, source, offset) : Object(_router__WEBPACK_IMPORTED_MODULE_4__[\"pathFinder\"])(points[0], points[points.length - 1], source, target, routeCfg);\n if (!polylinePoints || !polylinePoints.length) return 'M0 0, L0 0';\n\n if (radius) {\n var res_1 = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPathWithBorderRadiusByPolyline\"])(polylinePoints, radius);\n return res_1;\n }\n\n var res = _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"Util\"].pointsToPolygon(polylinePoints);\n return res;\n }\n}, 'single-edge');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS5qcz9mYTJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUN5QjtBQUNlO0FBQ2M7QUFDakQ7O0FBRXRDLGtFQUFZO0FBQ1o7QUFDQSxXQUFXLHdEQUFNO0FBQ2pCLFVBQVUsd0RBQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsd0RBQU07QUFDcEIsdUJBQXVCLHdEQUFNO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNEQUFHLEdBQUc7QUFDekI7QUFDQTs7QUFFQSxRQUFRLDBEQUFPLDhCQUE4QiwyREFBUTtBQUNyRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQUcsR0FBRyxFQUFFLHdEQUFNO0FBQzlCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDs7QUFFbkQsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0Esd0JBQXdCLHNEQUFHLEdBQUc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQUcsR0FBRztBQUN6QjtBQUNBOztBQUVBLFFBQVEsMERBQU8sOEJBQThCLDJEQUFRO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQUc7QUFDbkI7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQSxlQUFlLHdGQUFpQztBQUNoRDs7QUFFQTtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLOzs7QUFHTCxrQ0FBa0Msd0VBQWlCLGlFQUFpRSwwREFBVTtBQUM5SDs7QUFFQTtBQUNBLGtCQUFrQix3RkFBaUM7QUFDbkQ7QUFDQTs7QUFFQSxjQUFjLGtEQUFJO0FBQ2xCO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvZWRnZXMvcG9seWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgbWl4LCBlYWNoLCBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJFZGdlLCBVdGlsLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgZ2V0UGF0aFdpdGhCb3JkZXJSYWRpdXNCeVBvbHlsaW5lLCBnZXRQb2x5bGluZVBvaW50cyB9IGZyb20gJy4vcG9seWxpbmUtdXRpbCc7XG5pbXBvcnQgeyBwYXRoRmluZGVyIH0gZnJvbSAnLi9yb3V0ZXInOyAvLyDmipjnur9cblxucmVnaXN0ZXJFZGdlKCdwb2x5bGluZScsIHtcbiAgb3B0aW9uczoge1xuICAgIGNvbG9yOiBHbG9iYWwuZGVmYXVsdEVkZ2UuY29sb3IsXG4gICAgc2l6ZTogR2xvYmFsLmRlZmF1bHRFZGdlLnNpemUsXG4gICAgc3R5bGU6IHtcbiAgICAgIHJhZGl1czogMCxcbiAgICAgIG9mZnNldDogMTUsXG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGxpbmVBcHBlbmRXaWR0aDogR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLmxpbmVBcHBlbmRXaWR0aFxuICAgIH0sXG4gICAgLy8g5paH5pys5qC35byP6YWN572uXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5lZGdlTGFiZWwuc3R5bGUuZmlsbCxcbiAgICAgICAgZm9udFNpemU6IEdsb2JhbC5lZGdlTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICByb3V0ZUNmZzoge1xuICAgICAgb2JzdGFjbGVzOiBbXSxcbiAgICAgIG1heEFsbG93ZWREaXJlY3Rpb25DaGFuZ2U6IE1hdGguUEksXG4gICAgICBtYXhpbXVtTG9vcHM6IDUwMCxcbiAgICAgIGdyaWRTaXplOiAxMCAvLyDmjIflrprnsr7luqZcblxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwuZWRnZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdwb2x5bGluZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgaWYgKHNoYXBlU3R5bGUucmFkaXVzID09PSAwKSBkZWxldGUgc2hhcGVTdHlsZS5yYWRpdXM7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBjbGFzc05hbWU6ICdlZGdlLXNoYXBlJyxcbiAgICAgIG5hbWU6ICdlZGdlLXNoYXBlJyxcbiAgICAgIGF0dHJzOiBzaGFwZVN0eWxlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VkZ2Utc2hhcGUnXSA9IGtleVNoYXBlO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5vcHRpb25zLnN0eWxlO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgY2ZnID0gdGhpcy5nZXRQYXRoUG9pbnRzKGNmZyk7XG4gICAgdGhpcy5yYWRpdXMgPSBzdHlsZS5yYWRpdXM7XG4gICAgdGhpcy5vZmZzZXQgPSBzdHlsZS5vZmZzZXQ7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSB0aGlzLmdldENvbnRyb2xQb2ludHMoY2ZnKTtcbiAgICB2YXIgcG9pbnRzID0gW3N0YXJ0UG9pbnRdOyAvLyDmt7vliqDotbflp4vngrlcbiAgICAvLyDmt7vliqDmjqfliLbngrlcblxuICAgIGlmIChjb250cm9sUG9pbnRzKSB7XG4gICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KGNvbnRyb2xQb2ludHMpO1xuICAgIH0gLy8g5re75Yqg57uT5p2f54K5XG5cblxuICAgIHBvaW50cy5wdXNoKGVuZFBvaW50KTtcbiAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZU5vZGU7XG4gICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXROb2RlO1xuICAgIHZhciByYWRpdXMgPSBzdHlsZS5yYWRpdXM7XG4gICAgdmFyIGRlZmF1bHRSb3V0ZUNmZyA9IHRoaXMub3B0aW9ucy5yb3V0ZUNmZztcbiAgICB2YXIgcm91dGVDZmcgPSBtaXgoe30sIGRlZmF1bHRSb3V0ZUNmZywgY2ZnLnJvdXRlQ2ZnKTtcbiAgICByb3V0ZUNmZy5vZmZzZXQgPSBzdHlsZS5vZmZzZXQ7XG4gICAgdmFyIHBhdGggPSB0aGlzLmdldFBhdGgocG9pbnRzLCBzb3VyY2UsIHRhcmdldCwgcmFkaXVzLCByb3V0ZUNmZyk7XG5cbiAgICBpZiAoaXNBcnJheShwYXRoKSAmJiBwYXRoLmxlbmd0aCA8PSAxIHx8IGlzU3RyaW5nKHBhdGgpICYmIHBhdGguaW5kZXhPZignTCcpID09PSAtMSkge1xuICAgICAgcGF0aCA9ICdNMCAwLCBMMCAwJztcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4oc3RhcnRQb2ludC54KSB8fCBpc05hTihzdGFydFBvaW50LnkpIHx8IGlzTmFOKGVuZFBvaW50LngpIHx8IGlzTmFOKGVuZFBvaW50LnkpKSB7XG4gICAgICBwYXRoID0gJ00wIDAsIEwwIDAnO1xuICAgIH1cblxuICAgIHZhciBhdHRycyA9IG1peCh7fSwgR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLCBzdHlsZSwge1xuICAgICAgbGluZVdpZHRoOiBjZmcuc2l6ZSxcbiAgICAgIHBhdGg6IHBhdGhcbiAgICB9KTtcbiAgICByZXR1cm4gYXR0cnM7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICBpZiAoIWl0ZW0uaXNWaXNpYmxlKCkpIHJldHVybjtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07XG4gICAgdmFyIHNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VkZ2Utc2hhcGUnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnZWRnZS1zaGFwZSc7XG4gICAgfSkgfHwgaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgIHZhciBzaXplID0gY2ZnLnNpemU7XG4gICAgY2ZnID0gdGhpcy5nZXRQYXRoUG9pbnRzKGNmZyk7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSB0aGlzLmdldENvbnRyb2xQb2ludHMoY2ZnKTsgLy8gfHwgY2ZnLmNvbnRyb2xQb2ludHM7XG5cbiAgICB2YXIgcG9pbnRzID0gW3N0YXJ0UG9pbnRdOyAvLyDmt7vliqDotbflp4vngrlcbiAgICAvLyDmt7vliqDmjqfliLbngrlcblxuICAgIGlmIChjb250cm9sUG9pbnRzKSB7XG4gICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KGNvbnRyb2xQb2ludHMpO1xuICAgIH0gLy8g5re75Yqg57uT5p2f54K5XG5cblxuICAgIHBvaW50cy5wdXNoKGVuZFBvaW50KTtcbiAgICB2YXIgY3VycmVudEF0dHIgPSBzaGFwZS5hdHRyKCk7XG4gICAgdmFyIHByZXZpb3VzU3R5bGUgPSBtaXgoe30sIHN0cm9rZVN0eWxlLCBjdXJyZW50QXR0ciwgY2ZnLnN0eWxlKTtcbiAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZU5vZGU7XG4gICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXROb2RlO1xuICAgIHZhciByYWRpdXMgPSBwcmV2aW91c1N0eWxlLnJhZGl1cztcbiAgICB2YXIgZGVmYXVsdFJvdXRlQ2ZnID0gdGhpcy5vcHRpb25zLnJvdXRlQ2ZnO1xuICAgIHZhciByb3V0ZUNmZyA9IG1peCh7fSwgZGVmYXVsdFJvdXRlQ2ZnLCBjZmcucm91dGVDZmcpO1xuICAgIHJvdXRlQ2ZnLm9mZnNldCA9IHByZXZpb3VzU3R5bGUub2Zmc2V0O1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKHBvaW50cywgc291cmNlLCB0YXJnZXQsIHJhZGl1cywgcm91dGVDZmcpO1xuXG4gICAgaWYgKGlzQXJyYXkocGF0aCkgJiYgcGF0aC5sZW5ndGggPD0gMSB8fCBpc1N0cmluZyhwYXRoKSAmJiBwYXRoLmluZGV4T2YoJ0wnKSA9PT0gLTEpIHtcbiAgICAgIHBhdGggPSAnTTAgMCwgTDAgMCc7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHN0YXJ0UG9pbnQueCkgfHwgaXNOYU4oc3RhcnRQb2ludC55KSB8fCBpc05hTihlbmRQb2ludC54KSB8fCBpc05hTihlbmRQb2ludC55KSkge1xuICAgICAgcGF0aCA9ICdNMCAwLCBMMCAwJztcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudEF0dHIuZW5kQXJyb3cgJiYgcHJldmlvdXNTdHlsZS5lbmRBcnJvdyA9PT0gZmFsc2UpIHtcbiAgICAgIGNmZy5zdHlsZS5lbmRBcnJvdyA9IHtcbiAgICAgICAgcGF0aDogJydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRBdHRyLnN0YXJ0QXJyb3cgJiYgcHJldmlvdXNTdHlsZS5zdGFydEFycm93ID09PSBmYWxzZSkge1xuICAgICAgY2ZnLnN0eWxlLnN0YXJ0QXJyb3cgPSB7XG4gICAgICAgIHBhdGg6ICcnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBzdHlsZSA9IG1peChzdHJva2VTdHlsZSwgc2hhcGUuYXR0cigpLCB7XG4gICAgICBsaW5lV2lkdGg6IHNpemUsXG4gICAgICBwYXRoOiBwYXRoXG4gICAgfSwgY2ZnLnN0eWxlKTtcblxuICAgIGlmIChzaGFwZSkge1xuICAgICAgc2hhcGUuYXR0cihzdHlsZSk7XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cywgc291cmNlLCB0YXJnZXQsIHJhZGl1cywgcm91dGVDZmcpIHtcbiAgICB2YXIgb2Zmc2V0ID0gcm91dGVDZmcub2Zmc2V0LFxuICAgICAgICBzaW1wbGUgPSByb3V0ZUNmZy5zaW1wbGU7IC8vIOaMh+WumuS6huaOp+WItueCuVxuXG4gICAgaWYgKCFvZmZzZXQgfHwgcG9pbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmIChyYWRpdXMpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhdGhXaXRoQm9yZGVyUmFkaXVzQnlQb2x5bGluZShwb2ludHMsIHJhZGl1cyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXRoQXJyYXlfMSA9IFtdO1xuICAgICAgZWFjaChwb2ludHMsIGZ1bmN0aW9uIChwb2ludCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgcGF0aEFycmF5XzEucHVzaChbJ00nLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aEFycmF5XzEucHVzaChbJ0wnLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHBhdGhBcnJheV8xO1xuICAgIH0gLy8g5pyq5oyH5a6a5o6n5Yi254K5XG5cblxuICAgIHZhciBwb2x5bGluZVBvaW50cyA9IHNpbXBsZSA/IGdldFBvbHlsaW5lUG9pbnRzKHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0sIHBvaW50c1swXSwgdGFyZ2V0LCBzb3VyY2UsIG9mZnNldCkgOiBwYXRoRmluZGVyKHBvaW50c1swXSwgcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSwgc291cmNlLCB0YXJnZXQsIHJvdXRlQ2ZnKTtcbiAgICBpZiAoIXBvbHlsaW5lUG9pbnRzIHx8ICFwb2x5bGluZVBvaW50cy5sZW5ndGgpIHJldHVybiAnTTAgMCwgTDAgMCc7XG5cbiAgICBpZiAocmFkaXVzKSB7XG4gICAgICB2YXIgcmVzXzEgPSBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUocG9seWxpbmVQb2ludHMsIHJhZGl1cyk7XG4gICAgICByZXR1cm4gcmVzXzE7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IFV0aWwucG9pbnRzVG9Qb2x5Z29uKHBvbHlsaW5lUG9pbnRzKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/edges/polyline.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/edges/router.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-element/es/edges/router.js ***! \**********************************************************/ /*! exports provided: octolinearCfg, pathFinder */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"octolinearCfg\", function() { return octolinearCfg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathFinder\", function() { return pathFinder; });\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _polyline_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./polyline-util */ \"./node_modules/@antv/g6-element/es/edges/polyline-util.js\");\n/**\n * 通过配置不同的 costFunc, distFunc, constraints 可以得到不同效果的 router\n * generalRouter: 不限制搜索时的移动方向,避开障碍即可\n * orthogonal: 线必须沿着竖直或水平方向(4个方向)\n * octolinearRouter: 线沿着竖直、水平、对角线方向(8个方向)\n */\n\n\n\n\nvar manhattanDist = function manhattanDist(p1, p2) {\n return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);\n};\n\nvar eucliDist = function eucliDist(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n};\n\nvar straightPath = function straightPath(start, end) {\n // console.warn('fallbackRoute: straight path');\n return [start, end];\n};\n\nvar simplePolyline = function simplePolyline(start, end, startNode, endNode, cfg) {\n return Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"simplifyPolyline\"])(Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getPolylinePoints\"])(start, end, startNode, endNode, cfg.offset));\n}; // getPolylinePoints\n\n\nvar defaultCfg = {\n offset: 20,\n maxAllowedDirectionChange: Math.PI / 2,\n maximumLoops: 2000,\n gridSize: 10,\n directions: [{\n stepX: 1,\n stepY: 0\n }, {\n stepX: -1,\n stepY: 0\n }, {\n stepX: 0,\n stepY: 1\n }, {\n stepX: 0,\n stepY: -1\n } // top\n ],\n\n get penalties() {\n return {\n 0: 0,\n 45: this.gridSize / 2,\n 90: this.gridSize / 2\n };\n },\n\n distFunc: manhattanDist,\n fallbackRoute: simplePolyline\n};\nvar octolinearCfg = {\n maxAllowedDirectionChange: Math.PI / 4,\n // 8 个方向: 上下左右 + 45度斜线方向\n directions: [{\n stepX: 1,\n stepY: 0\n }, {\n stepX: 1,\n stepY: 1\n }, {\n stepX: 0,\n stepY: 1\n }, {\n stepX: -1,\n stepY: 1\n }, {\n stepX: -1,\n stepY: 0\n }, {\n stepX: -1,\n stepY: -1\n }, {\n stepX: 0,\n stepY: -1\n }, {\n stepX: 1,\n stepY: -1\n }],\n distFunc: eucliDist,\n fallbackRoute: straightPath\n};\n\nvar pos2GridIx = function pos2GridIx(pos, gridSize) {\n var gridIx = Math.round(Math.abs(pos / gridSize));\n var sign = pos < 0 ? -1 : 1;\n return gridIx < 0 ? 0 : sign * gridIx;\n};\n\nvar getObstacleMap = function getObstacleMap(items, gridSize, offset) {\n var map = {};\n items.forEach(function (item) {\n // create-edge 时,当边类型为 polyline 时 endNode 为 null\n if (!item) return;\n var bbox = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBox\"])(item.getBBox(), offset);\n\n for (var x = pos2GridIx(bbox.minX, gridSize); x <= pos2GridIx(bbox.maxX, gridSize); x += 1) {\n for (var y = pos2GridIx(bbox.minY, gridSize); y <= pos2GridIx(bbox.maxY, gridSize); y += 1) {\n map[\"\".concat(x, \"|||\").concat(y)] = true;\n }\n }\n });\n return map;\n};\n/**\n * 方向角:计算从 p1 到 p2 的射线与水平线形成的夹角度数(顺时针从右侧0°转到该射线的角度)\n * @param p1 PolyPoint\n * @param p2 PolyPoint\n */\n\n\nvar getDirectionAngle = function getDirectionAngle(p1, p2) {\n var deltaX = p2.x - p1.x;\n var deltaY = p2.y - p1.y;\n\n if (deltaX || deltaY) {\n return Math.atan2(deltaY, deltaX);\n }\n\n return 0;\n};\n/**\n * 方向角的改变,取小于180度角\n * @param angle1\n * @param angle2\n */\n\n\nvar getAngleDiff = function getAngleDiff(angle1, angle2) {\n var directionChange = Math.abs(angle1 - angle2);\n return directionChange > Math.PI ? 2 * Math.PI - directionChange : directionChange; // return directionChange > 180 ? 360 - directionChange : directionChange;\n}; // Path finder //\n\n\nvar estimateCost = function estimateCost(from, endPoints, distFunc) {\n var min = Infinity;\n\n for (var i = 0, len = endPoints.length; i < len; i++) {\n var cost = distFunc(from, endPoints[i]);\n\n if (cost < min) {\n min = cost;\n }\n }\n\n return min;\n}; // 计算考虑 offset 后的 BBox 上的连接点\n\n\nvar getBoxPoints = function getBoxPoints(point, // 被 gridSize 格式化后的位置(anchorPoint)\noriPoint, // 未被 gridSize 格式化的位置(anchorPoint)\nnode, // 原始节点,用于获取 bbox\nanotherPoint, // 另一端被 gridSize 格式化后的位置\ncfg) {\n var points = []; // create-edge 生成边的过程中,endNode 为 null\n\n if (!node) {\n return [point];\n }\n\n var directions = cfg.directions,\n offset = cfg.offset;\n var bbox = node.getBBox();\n var isInside = oriPoint.x > bbox.minX && oriPoint.x < bbox.maxX && oriPoint.y > bbox.minY && oriPoint.y < bbox.maxY;\n var expandBBox = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBox\"])(bbox, offset);\n\n for (var i in expandBBox) {\n expandBBox[i] = pos2GridIx(expandBBox[i], cfg.gridSize);\n }\n\n if (isInside) {\n // 如果 anchorPoint 在节点内部,允许第一段线穿过节点\n for (var _i = 0, directions_1 = directions; _i < directions_1.length; _i++) {\n var dir = directions_1[_i];\n var bounds = [[{\n x: expandBBox.minX,\n y: expandBBox.minY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.minY\n }], [{\n x: expandBBox.minX,\n y: expandBBox.minY\n }, {\n x: expandBBox.minX,\n y: expandBBox.maxY\n }], [{\n x: expandBBox.maxX,\n y: expandBBox.minY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.maxY\n }], [{\n x: expandBBox.minX,\n y: expandBBox.maxY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.maxY\n }]];\n\n for (var i = 0; i < 4; i++) {\n var boundLine = bounds[i];\n var insterctP_1 = _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getLineIntersect(point, {\n x: point.x + dir.stepX * expandBBox.width,\n y: point.y + dir.stepY * expandBBox.height\n }, boundLine[0], boundLine[1]);\n\n if (insterctP_1 && !Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"isSegmentCrossingBBox\"])(point, insterctP_1, bbox)) {\n insterctP_1.id = \"\".concat(insterctP_1.x, \"|||\").concat(insterctP_1.y);\n points.push(insterctP_1);\n }\n }\n }\n\n return points;\n } // 如果 anchorPoint 在节点上,只有一个可选方向\n\n\n var insterctP = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBoxPoint\"])(expandBBox, point, anotherPoint);\n insterctP.id = \"\".concat(insterctP.x, \"|||\").concat(insterctP.y);\n return [insterctP];\n};\n\nvar getDirectionChange = function getDirectionChange(current, neighbor, cameFrom, scaleStartPoint) {\n var directionAngle = getDirectionAngle(current, neighbor);\n\n if (!cameFrom[current.id]) {\n var startAngle = getDirectionAngle(scaleStartPoint, current);\n return getAngleDiff(startAngle, directionAngle);\n }\n\n var prevDirectionAngle = getDirectionAngle({\n x: cameFrom[current.id].x,\n y: cameFrom[current.id].y\n }, current);\n return getAngleDiff(prevDirectionAngle, directionAngle);\n};\n\nvar getControlPoints = function getControlPoints(current, cameFrom, scaleStartPoint, endPoint, startPoint, scaleEndPoint, gridSize) {\n var controlPoints = [endPoint];\n var currentId = current.id;\n var currentX = current.x;\n var currentY = current.y;\n var lastPoint = {\n x: currentX,\n y: currentY,\n id: currentId\n };\n\n if (getDirectionChange(lastPoint, scaleEndPoint, cameFrom, scaleStartPoint)) {\n // if (scaleEndPoint.x === endPoint.x && scaleEndPoint.y === endPoint.y)\n // controlPoints.unshift({\n // x: endPoint.x,\n // y: endPoint.y\n // })\n // else\n // controlPoints.unshift({\n // x: lastPoint.x * gridSize,\n // y: lastPoint.y * gridSize,\n // });\n controlPoints.unshift({\n x: scaleEndPoint.x === endPoint.x ? endPoint.x : lastPoint.x * gridSize,\n y: scaleEndPoint.y === endPoint.y ? endPoint.y : lastPoint.y * gridSize\n });\n }\n\n while (cameFrom[currentId] && cameFrom[currentId].id !== currentId) {\n var point = {\n x: currentX,\n y: currentY,\n id: currentId\n };\n var preId = cameFrom[currentId].id;\n var preX = cameFrom[currentId].x;\n var preY = cameFrom[currentId].y;\n var prePoint = {\n x: preX,\n y: preY,\n id: preId\n };\n var directionChange = getDirectionChange(prePoint, point, cameFrom, scaleStartPoint);\n\n if (directionChange) {\n // if (prePoint.x === point.x && prePoint.y === point.y)\n // controlPoints.unshift({\n // x: controlPoints[0].x,\n // y: controlPoints[0].y\n // })\n // else\n // controlPoints.unshift({\n // x: prePoint.x * gridSize,\n // y: prePoint.y * gridSize,\n // });\n controlPoints.unshift({\n x: prePoint.x === point.x ? controlPoints[0].x : prePoint.x * gridSize,\n y: prePoint.y === point.y ? controlPoints[0].y : prePoint.y * gridSize\n });\n }\n\n currentId = preId;\n currentX = preX;\n currentY = preY;\n } // 和startNode对齐\n\n\n var firstPoint = {\n x: currentX,\n y: currentY,\n id: currentId\n }; // if (firstPoint.x === scaleStartPoint.x && firstPoint.y === scaleStartPoint.y) {\n // controlPoints[0].x = startPoint.x;\n // controlPoints[0].y = startPoint.y;\n // }\n\n controlPoints[0].x = firstPoint.x === scaleStartPoint.x ? startPoint.x : controlPoints[0].x;\n controlPoints[0].y = firstPoint.y === scaleStartPoint.y ? startPoint.y : controlPoints[0].y;\n controlPoints.unshift(startPoint);\n return controlPoints;\n};\n\nvar pathFinder = function pathFinder(startPoint, endPoint, startNode, endNode, routerCfg) {\n if (isNaN(startPoint.x) || isNaN(endPoint.x)) return [];\n var cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(defaultCfg, routerCfg);\n cfg.obstacles = cfg.obstacles || [];\n var gridSize = cfg.gridSize;\n var map = getObstacleMap(cfg.obstacles.concat([startNode, endNode]), gridSize, cfg.offset);\n var scaleStartPoint = {\n x: pos2GridIx(startPoint.x, gridSize),\n y: pos2GridIx(startPoint.y, gridSize)\n };\n var scaleEndPoint = {\n x: pos2GridIx(endPoint.x, gridSize),\n y: pos2GridIx(endPoint.y, gridSize)\n };\n startPoint.id = \"\".concat(scaleStartPoint.x, \"|||\").concat(scaleStartPoint.y);\n endPoint.id = \"\".concat(scaleEndPoint.x, \"|||\").concat(scaleEndPoint.y);\n var startPoints = getBoxPoints(scaleStartPoint, startPoint, startNode, scaleEndPoint, cfg);\n var endPoints = getBoxPoints(scaleEndPoint, endPoint, endNode, scaleStartPoint, cfg);\n startPoints.forEach(function (point) {\n delete map[point.id];\n });\n endPoints.forEach(function (point) {\n delete map[point.id];\n });\n var openSet = {};\n var closedSet = {};\n var cameFrom = {}; // 从起点到当前点已产生的 cost, default: Infinity\n\n var gScore = {}; // 起点经过当前点到达终点预估的 cost, default: Infinity\n\n var fScore = {}; // initialize\n\n for (var i = 0; i < startPoints.length; i++) {\n var firstStep = startPoints[i];\n openSet[firstStep.id] = firstStep; // cameFrom[firstStep.id] = startPoint.id;\n\n gScore[firstStep.id] = 0;\n fScore[firstStep.id] = estimateCost(firstStep, endPoints, cfg.distFunc);\n }\n\n var remainLoops = cfg.maximumLoops;\n var penalties = cfg.penalties;\n var current, curCost, direction, neighbor, neighborCost, costFromStart, directionChange;\n\n while (Object.keys(openSet).length > 0 && remainLoops > 0) {\n current = undefined;\n curCost = Infinity; // 找到 openSet 中 fScore 最小的点\n\n Object.keys(openSet).forEach(function (key) {\n var id = openSet[key].id;\n\n if (fScore[id] <= curCost) {\n curCost = fScore[id];\n current = openSet[id];\n }\n });\n if (!current) break; // 如果 fScore 最小的点就是终点\n\n if (endPoints.findIndex(function (point) {\n return point.x === current.x && point.y === current.y;\n }) > -1) {\n return getControlPoints(current, cameFrom, scaleStartPoint, endPoint, startPoint, scaleEndPoint, gridSize);\n }\n\n delete openSet[current.id];\n closedSet[current.id] = true; // 获取符合条件的下一步的候选连接点\n // 沿候选方向走一步\n\n for (var i = 0; i < cfg.directions.length; i++) {\n direction = cfg.directions[i];\n neighbor = {\n x: current.x + direction.stepX,\n y: current.y + direction.stepY,\n id: \"\".concat(Math.round(current.x) + direction.stepX, \"|||\").concat(Math.round(current.y) + direction.stepY)\n };\n if (closedSet[neighbor.id]) continue;\n directionChange = getDirectionChange(current, neighbor, cameFrom, scaleStartPoint);\n if (directionChange > cfg.maxAllowedDirectionChange) continue;\n if (map[neighbor.id]) continue; // 如果交叉则跳过\n // 将候选点加入 openSet, 并计算每个候选点的 cost\n\n if (!openSet[neighbor.id]) {\n openSet[neighbor.id] = neighbor;\n }\n\n neighborCost = cfg.distFunc(current, neighbor) + (isNaN(penalties[directionChange]) ? gridSize : penalties[directionChange]);\n costFromStart = gScore[current.id] + neighborCost;\n\n if (gScore[neighbor.id] && costFromStart >= gScore[neighbor.id]) {\n continue;\n }\n\n cameFrom[neighbor.id] = current;\n gScore[neighbor.id] = costFromStart;\n fScore[neighbor.id] = costFromStart + estimateCost(neighbor, endPoints, cfg.distFunc);\n }\n\n remainLoops -= 1;\n }\n\n return cfg.fallbackRoute(startPoint, endPoint, startNode, endNode, cfg);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9yb3V0ZXIuanM/YTUzZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDcUM7QUFDQTtBQUMrRjs7QUFFcEk7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsdUVBQWdCLENBQUMsd0VBQWlCO0FBQzNDLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzRUFBZTs7QUFFOUIsaURBQWlELHNDQUFzQztBQUN2RixtREFBbUQsc0NBQXNDO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLHFGQUFxRjtBQUNyRixFQUFFOzs7QUFHRjtBQUNBOztBQUVBLHlDQUF5QyxTQUFTO0FBQ2xEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNFQUFlOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLCtDQUErQywwQkFBMEI7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87O0FBRVAscUJBQXFCLE9BQU87QUFDNUI7QUFDQSwwQkFBMEIsa0RBQUk7QUFDOUI7QUFDQTtBQUNBLFNBQVM7O0FBRVQsNEJBQTRCLDRFQUFxQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0gsa0JBQWtCLDJFQUFvQjtBQUN0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxvQkFBb0I7O0FBRXBCLGtCQUFrQjs7QUFFbEIsa0JBQWtCOztBQUVsQixpQkFBaUIsd0JBQXdCO0FBQ3pDO0FBQ0Esc0NBQXNDOztBQUV0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUM7QUFDakM7O0FBRUEsbUJBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1lbGVtZW50L2VzL2VkZ2VzL3JvdXRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6YCa6L+H6YWN572u5LiN5ZCM55qEIGNvc3RGdW5jLCBkaXN0RnVuYywgY29uc3RyYWludHMg5Y+v5Lul5b6X5Yiw5LiN5ZCM5pWI5p6c55qEIHJvdXRlclxuICogZ2VuZXJhbFJvdXRlcjog5LiN6ZmQ5Yi25pCc57Si5pe255qE56e75Yqo5pa55ZCR77yM6YG/5byA6Zqc56KN5Y2z5Y+vXG4gKiBvcnRob2dvbmFsOiDnur/lv4Xpobvmsr/nnYDnq5bnm7TmiJbmsLTlubPmlrnlkJHvvIg05Liq5pa55ZCR77yJXG4gKiBvY3RvbGluZWFyUm91dGVyOiDnur/msr/nnYDnq5bnm7TjgIHmsLTlubPjgIHlr7nop5Lnur/mlrnlkJHvvIg45Liq5pa55ZCR77yJXG4gKi9cbmltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGdldEV4cGFuZGVkQkJveCwgZ2V0RXhwYW5kZWRCQm94UG9pbnQsIGdldFBvbHlsaW5lUG9pbnRzLCBzaW1wbGlmeVBvbHlsaW5lLCBpc1NlZ21lbnRDcm9zc2luZ0JCb3ggfSBmcm9tICcuL3BvbHlsaW5lLXV0aWwnO1xuXG52YXIgbWFuaGF0dGFuRGlzdCA9IGZ1bmN0aW9uIG1hbmhhdHRhbkRpc3QocDEsIHAyKSB7XG4gIHJldHVybiBNYXRoLmFicyhwMS54IC0gcDIueCkgKyBNYXRoLmFicyhwMS55IC0gcDIueSk7XG59O1xuXG52YXIgZXVjbGlEaXN0ID0gZnVuY3Rpb24gZXVjbGlEaXN0KHAxLCBwMikge1xuICByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHAxLnggLSBwMi54LCAyKSArIE1hdGgucG93KHAxLnkgLSBwMi55LCAyKSk7XG59O1xuXG52YXIgc3RyYWlnaHRQYXRoID0gZnVuY3Rpb24gc3RyYWlnaHRQYXRoKHN0YXJ0LCBlbmQpIHtcbiAgLy8gY29uc29sZS53YXJuKCdmYWxsYmFja1JvdXRlOiBzdHJhaWdodCBwYXRoJyk7XG4gIHJldHVybiBbc3RhcnQsIGVuZF07XG59O1xuXG52YXIgc2ltcGxlUG9seWxpbmUgPSBmdW5jdGlvbiBzaW1wbGVQb2x5bGluZShzdGFydCwgZW5kLCBzdGFydE5vZGUsIGVuZE5vZGUsIGNmZykge1xuICByZXR1cm4gc2ltcGxpZnlQb2x5bGluZShnZXRQb2x5bGluZVBvaW50cyhzdGFydCwgZW5kLCBzdGFydE5vZGUsIGVuZE5vZGUsIGNmZy5vZmZzZXQpKTtcbn07IC8vIGdldFBvbHlsaW5lUG9pbnRzXG5cblxudmFyIGRlZmF1bHRDZmcgPSB7XG4gIG9mZnNldDogMjAsXG4gIG1heEFsbG93ZWREaXJlY3Rpb25DaGFuZ2U6IE1hdGguUEkgLyAyLFxuICBtYXhpbXVtTG9vcHM6IDIwMDAsXG4gIGdyaWRTaXplOiAxMCxcbiAgZGlyZWN0aW9uczogW3tcbiAgICBzdGVwWDogMSxcbiAgICBzdGVwWTogMFxuICB9LCB7XG4gICAgc3RlcFg6IC0xLFxuICAgIHN0ZXBZOiAwXG4gIH0sIHtcbiAgICBzdGVwWDogMCxcbiAgICBzdGVwWTogMVxuICB9LCB7XG4gICAgc3RlcFg6IDAsXG4gICAgc3RlcFk6IC0xXG4gIH0gLy8gdG9wXG4gIF0sXG5cbiAgZ2V0IHBlbmFsdGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgMDogMCxcbiAgICAgIDQ1OiB0aGlzLmdyaWRTaXplIC8gMixcbiAgICAgIDkwOiB0aGlzLmdyaWRTaXplIC8gMlxuICAgIH07XG4gIH0sXG5cbiAgZGlzdEZ1bmM6IG1hbmhhdHRhbkRpc3QsXG4gIGZhbGxiYWNrUm91dGU6IHNpbXBsZVBvbHlsaW5lXG59O1xuZXhwb3J0IHZhciBvY3RvbGluZWFyQ2ZnID0ge1xuICBtYXhBbGxvd2VkRGlyZWN0aW9uQ2hhbmdlOiBNYXRoLlBJIC8gNCxcbiAgLy8gOCDkuKrmlrnlkJE6IOS4iuS4i+W3puWPsyArIDQ15bqm5pac57q/5pa55ZCRXG4gIGRpcmVjdGlvbnM6IFt7XG4gICAgc3RlcFg6IDEsXG4gICAgc3RlcFk6IDBcbiAgfSwge1xuICAgIHN0ZXBYOiAxLFxuICAgIHN0ZXBZOiAxXG4gIH0sIHtcbiAgICBzdGVwWDogMCxcbiAgICBzdGVwWTogMVxuICB9LCB7XG4gICAgc3RlcFg6IC0xLFxuICAgIHN0ZXBZOiAxXG4gIH0sIHtcbiAgICBzdGVwWDogLTEsXG4gICAgc3RlcFk6IDBcbiAgfSwge1xuICAgIHN0ZXBYOiAtMSxcbiAgICBzdGVwWTogLTFcbiAgfSwge1xuICAgIHN0ZXBYOiAwLFxuICAgIHN0ZXBZOiAtMVxuICB9LCB7XG4gICAgc3RlcFg6IDEsXG4gICAgc3RlcFk6IC0xXG4gIH1dLFxuICBkaXN0RnVuYzogZXVjbGlEaXN0LFxuICBmYWxsYmFja1JvdXRlOiBzdHJhaWdodFBhdGhcbn07XG5cbnZhciBwb3MyR3JpZEl4ID0gZnVuY3Rpb24gcG9zMkdyaWRJeChwb3MsIGdyaWRTaXplKSB7XG4gIHZhciBncmlkSXggPSBNYXRoLnJvdW5kKE1hdGguYWJzKHBvcyAvIGdyaWRTaXplKSk7XG4gIHZhciBzaWduID0gcG9zIDwgMCA/IC0xIDogMTtcbiAgcmV0dXJuIGdyaWRJeCA8IDAgPyAwIDogc2lnbiAqIGdyaWRJeDtcbn07XG5cbnZhciBnZXRPYnN0YWNsZU1hcCA9IGZ1bmN0aW9uIGdldE9ic3RhY2xlTWFwKGl0ZW1zLCBncmlkU2l6ZSwgb2Zmc2V0KSB7XG4gIHZhciBtYXAgPSB7fTtcbiAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIC8vIGNyZWF0ZS1lZGdlIOaXtu+8jOW9k+i+ueexu+Wei+S4uiBwb2x5bGluZSDml7YgZW5kTm9kZSDkuLogbnVsbFxuICAgIGlmICghaXRlbSkgcmV0dXJuO1xuICAgIHZhciBiYm94ID0gZ2V0RXhwYW5kZWRCQm94KGl0ZW0uZ2V0QkJveCgpLCBvZmZzZXQpO1xuXG4gICAgZm9yICh2YXIgeCA9IHBvczJHcmlkSXgoYmJveC5taW5YLCBncmlkU2l6ZSk7IHggPD0gcG9zMkdyaWRJeChiYm94Lm1heFgsIGdyaWRTaXplKTsgeCArPSAxKSB7XG4gICAgICBmb3IgKHZhciB5ID0gcG9zMkdyaWRJeChiYm94Lm1pblksIGdyaWRTaXplKTsgeSA8PSBwb3MyR3JpZEl4KGJib3gubWF4WSwgZ3JpZFNpemUpOyB5ICs9IDEpIHtcbiAgICAgICAgbWFwW1wiXCIuY29uY2F0KHgsIFwifHx8XCIpLmNvbmNhdCh5KV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBtYXA7XG59O1xuLyoqXG4gKiDmlrnlkJHop5LvvJrorqHnrpfku44gcDEg5YiwIHAyIOeahOWwhOe6v+S4juawtOW5s+e6v+W9ouaIkOeahOWkueinkuW6puaVsO+8iOmhuuaXtumSiOS7juWPs+S+pzDCsOi9rOWIsOivpeWwhOe6v+eahOinkuW6pu+8iVxuICogQHBhcmFtIHAxIFBvbHlQb2ludFxuICogQHBhcmFtIHAyIFBvbHlQb2ludFxuICovXG5cblxudmFyIGdldERpcmVjdGlvbkFuZ2xlID0gZnVuY3Rpb24gZ2V0RGlyZWN0aW9uQW5nbGUocDEsIHAyKSB7XG4gIHZhciBkZWx0YVggPSBwMi54IC0gcDEueDtcbiAgdmFyIGRlbHRhWSA9IHAyLnkgLSBwMS55O1xuXG4gIGlmIChkZWx0YVggfHwgZGVsdGFZKSB7XG4gICAgcmV0dXJuIE1hdGguYXRhbjIoZGVsdGFZLCBkZWx0YVgpO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59O1xuLyoqXG4gKiDmlrnlkJHop5LnmoTmlLnlj5jvvIzlj5blsI/kuo4xODDluqbop5JcbiAqIEBwYXJhbSBhbmdsZTFcbiAqIEBwYXJhbSBhbmdsZTJcbiAqL1xuXG5cbnZhciBnZXRBbmdsZURpZmYgPSBmdW5jdGlvbiBnZXRBbmdsZURpZmYoYW5nbGUxLCBhbmdsZTIpIHtcbiAgdmFyIGRpcmVjdGlvbkNoYW5nZSA9IE1hdGguYWJzKGFuZ2xlMSAtIGFuZ2xlMik7XG4gIHJldHVybiBkaXJlY3Rpb25DaGFuZ2UgPiBNYXRoLlBJID8gMiAqIE1hdGguUEkgLSBkaXJlY3Rpb25DaGFuZ2UgOiBkaXJlY3Rpb25DaGFuZ2U7IC8vIHJldHVybiBkaXJlY3Rpb25DaGFuZ2UgPiAxODAgPyAzNjAgLSBkaXJlY3Rpb25DaGFuZ2UgOiBkaXJlY3Rpb25DaGFuZ2U7XG59OyAvLyBQYXRoIGZpbmRlciAvL1xuXG5cbnZhciBlc3RpbWF0ZUNvc3QgPSBmdW5jdGlvbiBlc3RpbWF0ZUNvc3QoZnJvbSwgZW5kUG9pbnRzLCBkaXN0RnVuYykge1xuICB2YXIgbWluID0gSW5maW5pdHk7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGVuZFBvaW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjb3N0ID0gZGlzdEZ1bmMoZnJvbSwgZW5kUG9pbnRzW2ldKTtcblxuICAgIGlmIChjb3N0IDwgbWluKSB7XG4gICAgICBtaW4gPSBjb3N0O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtaW47XG59OyAvLyDorqHnrpfogIPomZEgb2Zmc2V0IOWQjueahCBCQm94IOS4iueahOi/nuaOpeeCuVxuXG5cbnZhciBnZXRCb3hQb2ludHMgPSBmdW5jdGlvbiBnZXRCb3hQb2ludHMocG9pbnQsIC8vIOiiqyBncmlkU2l6ZSDmoLzlvI/ljJblkI7nmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxub3JpUG9pbnQsIC8vIOacquiiqyBncmlkU2l6ZSDmoLzlvI/ljJbnmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxubm9kZSwgLy8g5Y6f5aeL6IqC54K577yM55So5LqO6I635Y+WIGJib3hcbmFub3RoZXJQb2ludCwgLy8g5Y+m5LiA56uv6KKrIGdyaWRTaXplIOagvOW8j+WMluWQjueahOS9jee9rlxuY2ZnKSB7XG4gIHZhciBwb2ludHMgPSBbXTsgLy8gY3JlYXRlLWVkZ2Ug55Sf5oiQ6L6555qE6L+H56iL5Lit77yMZW5kTm9kZSDkuLogbnVsbFxuXG4gIGlmICghbm9kZSkge1xuICAgIHJldHVybiBbcG9pbnRdO1xuICB9XG5cbiAgdmFyIGRpcmVjdGlvbnMgPSBjZmcuZGlyZWN0aW9ucyxcbiAgICAgIG9mZnNldCA9IGNmZy5vZmZzZXQ7XG4gIHZhciBiYm94ID0gbm9kZS5nZXRCQm94KCk7XG4gIHZhciBpc0luc2lkZSA9IG9yaVBvaW50LnggPiBiYm94Lm1pblggJiYgb3JpUG9pbnQueCA8IGJib3gubWF4WCAmJiBvcmlQb2ludC55ID4gYmJveC5taW5ZICYmIG9yaVBvaW50LnkgPCBiYm94Lm1heFk7XG4gIHZhciBleHBhbmRCQm94ID0gZ2V0RXhwYW5kZWRCQm94KGJib3gsIG9mZnNldCk7XG5cbiAgZm9yICh2YXIgaSBpbiBleHBhbmRCQm94KSB7XG4gICAgZXhwYW5kQkJveFtpXSA9IHBvczJHcmlkSXgoZXhwYW5kQkJveFtpXSwgY2ZnLmdyaWRTaXplKTtcbiAgfVxuXG4gIGlmIChpc0luc2lkZSkge1xuICAgIC8vIOWmguaenCBhbmNob3JQb2ludCDlnKjoioLngrnlhoXpg6jvvIzlhYHorrjnrKzkuIDmrrXnur/nqb/ov4foioLngrlcbiAgICBmb3IgKHZhciBfaSA9IDAsIGRpcmVjdGlvbnNfMSA9IGRpcmVjdGlvbnM7IF9pIDwgZGlyZWN0aW9uc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGRpciA9IGRpcmVjdGlvbnNfMVtfaV07XG4gICAgICB2YXIgYm91bmRzID0gW1t7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWluWCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5taW5ZXG4gICAgICB9LCB7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWF4WCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5taW5ZXG4gICAgICB9XSwgW3tcbiAgICAgICAgeDogZXhwYW5kQkJveC5taW5YLFxuICAgICAgICB5OiBleHBhbmRCQm94Lm1pbllcbiAgICAgIH0sIHtcbiAgICAgICAgeDogZXhwYW5kQkJveC5taW5YLFxuICAgICAgICB5OiBleHBhbmRCQm94Lm1heFlcbiAgICAgIH1dLCBbe1xuICAgICAgICB4OiBleHBhbmRCQm94Lm1heFgsXG4gICAgICAgIHk6IGV4cGFuZEJCb3gubWluWVxuICAgICAgfSwge1xuICAgICAgICB4OiBleHBhbmRCQm94Lm1heFgsXG4gICAgICAgIHk6IGV4cGFuZEJCb3gubWF4WVxuICAgICAgfV0sIFt7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWluWCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5tYXhZXG4gICAgICB9LCB7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWF4WCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5tYXhZXG4gICAgICB9XV07XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIHZhciBib3VuZExpbmUgPSBib3VuZHNbaV07XG4gICAgICAgIHZhciBpbnN0ZXJjdFBfMSA9IFV0aWwuZ2V0TGluZUludGVyc2VjdChwb2ludCwge1xuICAgICAgICAgIHg6IHBvaW50LnggKyBkaXIuc3RlcFggKiBleHBhbmRCQm94LndpZHRoLFxuICAgICAgICAgIHk6IHBvaW50LnkgKyBkaXIuc3RlcFkgKiBleHBhbmRCQm94LmhlaWdodFxuICAgICAgICB9LCBib3VuZExpbmVbMF0sIGJvdW5kTGluZVsxXSk7XG5cbiAgICAgICAgaWYgKGluc3RlcmN0UF8xICYmICFpc1NlZ21lbnRDcm9zc2luZ0JCb3gocG9pbnQsIGluc3RlcmN0UF8xLCBiYm94KSkge1xuICAgICAgICAgIGluc3RlcmN0UF8xLmlkID0gXCJcIi5jb25jYXQoaW5zdGVyY3RQXzEueCwgXCJ8fHxcIikuY29uY2F0KGluc3RlcmN0UF8xLnkpO1xuICAgICAgICAgIHBvaW50cy5wdXNoKGluc3RlcmN0UF8xKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwb2ludHM7XG4gIH0gLy8g5aaC5p6cIGFuY2hvclBvaW50IOWcqOiKgueCueS4iu+8jOWPquacieS4gOS4quWPr+mAieaWueWQkVxuXG5cbiAgdmFyIGluc3RlcmN0UCA9IGdldEV4cGFuZGVkQkJveFBvaW50KGV4cGFuZEJCb3gsIHBvaW50LCBhbm90aGVyUG9pbnQpO1xuICBpbnN0ZXJjdFAuaWQgPSBcIlwiLmNvbmNhdChpbnN0ZXJjdFAueCwgXCJ8fHxcIikuY29uY2F0KGluc3RlcmN0UC55KTtcbiAgcmV0dXJuIFtpbnN0ZXJjdFBdO1xufTtcblxudmFyIGdldERpcmVjdGlvbkNoYW5nZSA9IGZ1bmN0aW9uIGdldERpcmVjdGlvbkNoYW5nZShjdXJyZW50LCBuZWlnaGJvciwgY2FtZUZyb20sIHNjYWxlU3RhcnRQb2ludCkge1xuICB2YXIgZGlyZWN0aW9uQW5nbGUgPSBnZXREaXJlY3Rpb25BbmdsZShjdXJyZW50LCBuZWlnaGJvcik7XG5cbiAgaWYgKCFjYW1lRnJvbVtjdXJyZW50LmlkXSkge1xuICAgIHZhciBzdGFydEFuZ2xlID0gZ2V0RGlyZWN0aW9uQW5nbGUoc2NhbGVTdGFydFBvaW50LCBjdXJyZW50KTtcbiAgICByZXR1cm4gZ2V0QW5nbGVEaWZmKHN0YXJ0QW5nbGUsIGRpcmVjdGlvbkFuZ2xlKTtcbiAgfVxuXG4gIHZhciBwcmV2RGlyZWN0aW9uQW5nbGUgPSBnZXREaXJlY3Rpb25BbmdsZSh7XG4gICAgeDogY2FtZUZyb21bY3VycmVudC5pZF0ueCxcbiAgICB5OiBjYW1lRnJvbVtjdXJyZW50LmlkXS55XG4gIH0sIGN1cnJlbnQpO1xuICByZXR1cm4gZ2V0QW5nbGVEaWZmKHByZXZEaXJlY3Rpb25BbmdsZSwgZGlyZWN0aW9uQW5nbGUpO1xufTtcblxudmFyIGdldENvbnRyb2xQb2ludHMgPSBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGN1cnJlbnQsIGNhbWVGcm9tLCBzY2FsZVN0YXJ0UG9pbnQsIGVuZFBvaW50LCBzdGFydFBvaW50LCBzY2FsZUVuZFBvaW50LCBncmlkU2l6ZSkge1xuICB2YXIgY29udHJvbFBvaW50cyA9IFtlbmRQb2ludF07XG4gIHZhciBjdXJyZW50SWQgPSBjdXJyZW50LmlkO1xuICB2YXIgY3VycmVudFggPSBjdXJyZW50Lng7XG4gIHZhciBjdXJyZW50WSA9IGN1cnJlbnQueTtcbiAgdmFyIGxhc3RQb2ludCA9IHtcbiAgICB4OiBjdXJyZW50WCxcbiAgICB5OiBjdXJyZW50WSxcbiAgICBpZDogY3VycmVudElkXG4gIH07XG5cbiAgaWYgKGdldERpcmVjdGlvbkNoYW5nZShsYXN0UG9pbnQsIHNjYWxlRW5kUG9pbnQsIGNhbWVGcm9tLCBzY2FsZVN0YXJ0UG9pbnQpKSB7XG4gICAgLy8gaWYgKHNjYWxlRW5kUG9pbnQueCA9PT0gZW5kUG9pbnQueCAmJiBzY2FsZUVuZFBvaW50LnkgPT09IGVuZFBvaW50LnkpXG4gICAgLy8gICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgIC8vICAgICB4OiBlbmRQb2ludC54LFxuICAgIC8vICAgICB5OiBlbmRQb2ludC55XG4gICAgLy8gICB9KVxuICAgIC8vIGVsc2VcbiAgICAvLyAgIGNvbnRyb2xQb2ludHMudW5zaGlmdCh7XG4gICAgLy8gICAgIHg6IGxhc3RQb2ludC54ICogZ3JpZFNpemUsXG4gICAgLy8gICAgIHk6IGxhc3RQb2ludC55ICogZ3JpZFNpemUsXG4gICAgLy8gICB9KTtcbiAgICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgICAgeDogc2NhbGVFbmRQb2ludC54ID09PSBlbmRQb2ludC54ID8gZW5kUG9pbnQueCA6IGxhc3RQb2ludC54ICogZ3JpZFNpemUsXG4gICAgICB5OiBzY2FsZUVuZFBvaW50LnkgPT09IGVuZFBvaW50LnkgPyBlbmRQb2ludC55IDogbGFzdFBvaW50LnkgKiBncmlkU2l6ZVxuICAgIH0pO1xuICB9XG5cbiAgd2hpbGUgKGNhbWVGcm9tW2N1cnJlbnRJZF0gJiYgY2FtZUZyb21bY3VycmVudElkXS5pZCAhPT0gY3VycmVudElkKSB7XG4gICAgdmFyIHBvaW50ID0ge1xuICAgICAgeDogY3VycmVudFgsXG4gICAgICB5OiBjdXJyZW50WSxcbiAgICAgIGlkOiBjdXJyZW50SWRcbiAgICB9O1xuICAgIHZhciBwcmVJZCA9IGNhbWVGcm9tW2N1cnJlbnRJZF0uaWQ7XG4gICAgdmFyIHByZVggPSBjYW1lRnJvbVtjdXJyZW50SWRdLng7XG4gICAgdmFyIHByZVkgPSBjYW1lRnJvbVtjdXJyZW50SWRdLnk7XG4gICAgdmFyIHByZVBvaW50ID0ge1xuICAgICAgeDogcHJlWCxcbiAgICAgIHk6IHByZVksXG4gICAgICBpZDogcHJlSWRcbiAgICB9O1xuICAgIHZhciBkaXJlY3Rpb25DaGFuZ2UgPSBnZXREaXJlY3Rpb25DaGFuZ2UocHJlUG9pbnQsIHBvaW50LCBjYW1lRnJvbSwgc2NhbGVTdGFydFBvaW50KTtcblxuICAgIGlmIChkaXJlY3Rpb25DaGFuZ2UpIHtcbiAgICAgIC8vIGlmIChwcmVQb2ludC54ID09PSBwb2ludC54ICYmIHByZVBvaW50LnkgPT09IHBvaW50LnkpXG4gICAgICAvLyAgIGNvbnRyb2xQb2ludHMudW5zaGlmdCh7XG4gICAgICAvLyAgICAgeDogY29udHJvbFBvaW50c1swXS54LFxuICAgICAgLy8gICAgIHk6IGNvbnRyb2xQb2ludHNbMF0ueVxuICAgICAgLy8gICB9KVxuICAgICAgLy8gZWxzZVxuICAgICAgLy8gICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgICAgLy8gICAgIHg6IHByZVBvaW50LnggKiBncmlkU2l6ZSxcbiAgICAgIC8vICAgICB5OiBwcmVQb2ludC55ICogZ3JpZFNpemUsXG4gICAgICAvLyAgIH0pO1xuICAgICAgY29udHJvbFBvaW50cy51bnNoaWZ0KHtcbiAgICAgICAgeDogcHJlUG9pbnQueCA9PT0gcG9pbnQueCA/IGNvbnRyb2xQb2ludHNbMF0ueCA6IHByZVBvaW50LnggKiBncmlkU2l6ZSxcbiAgICAgICAgeTogcHJlUG9pbnQueSA9PT0gcG9pbnQueSA/IGNvbnRyb2xQb2ludHNbMF0ueSA6IHByZVBvaW50LnkgKiBncmlkU2l6ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3VycmVudElkID0gcHJlSWQ7XG4gICAgY3VycmVudFggPSBwcmVYO1xuICAgIGN1cnJlbnRZID0gcHJlWTtcbiAgfSAvLyDlkoxzdGFydE5vZGXlr7npvZBcblxuXG4gIHZhciBmaXJzdFBvaW50ID0ge1xuICAgIHg6IGN1cnJlbnRYLFxuICAgIHk6IGN1cnJlbnRZLFxuICAgIGlkOiBjdXJyZW50SWRcbiAgfTsgLy8gaWYgKGZpcnN0UG9pbnQueCA9PT0gc2NhbGVTdGFydFBvaW50LnggJiYgZmlyc3RQb2ludC55ID09PSBzY2FsZVN0YXJ0UG9pbnQueSkge1xuICAvLyAgIGNvbnRyb2xQb2ludHNbMF0ueCA9IHN0YXJ0UG9pbnQueDtcbiAgLy8gICBjb250cm9sUG9pbnRzWzBdLnkgPSBzdGFydFBvaW50Lnk7XG4gIC8vIH1cblxuICBjb250cm9sUG9pbnRzWzBdLnggPSBmaXJzdFBvaW50LnggPT09IHNjYWxlU3RhcnRQb2ludC54ID8gc3RhcnRQb2ludC54IDogY29udHJvbFBvaW50c1swXS54O1xuICBjb250cm9sUG9pbnRzWzBdLnkgPSBmaXJzdFBvaW50LnkgPT09IHNjYWxlU3RhcnRQb2ludC55ID8gc3RhcnRQb2ludC55IDogY29udHJvbFBvaW50c1swXS55O1xuICBjb250cm9sUG9pbnRzLnVuc2hpZnQoc3RhcnRQb2ludCk7XG4gIHJldHVybiBjb250cm9sUG9pbnRzO1xufTtcblxuZXhwb3J0IHZhciBwYXRoRmluZGVyID0gZnVuY3Rpb24gcGF0aEZpbmRlcihzdGFydFBvaW50LCBlbmRQb2ludCwgc3RhcnROb2RlLCBlbmROb2RlLCByb3V0ZXJDZmcpIHtcbiAgaWYgKGlzTmFOKHN0YXJ0UG9pbnQueCkgfHwgaXNOYU4oZW5kUG9pbnQueCkpIHJldHVybiBbXTtcbiAgdmFyIGNmZyA9IGRlZXBNaXgoZGVmYXVsdENmZywgcm91dGVyQ2ZnKTtcbiAgY2ZnLm9ic3RhY2xlcyA9IGNmZy5vYnN0YWNsZXMgfHwgW107XG4gIHZhciBncmlkU2l6ZSA9IGNmZy5ncmlkU2l6ZTtcbiAgdmFyIG1hcCA9IGdldE9ic3RhY2xlTWFwKGNmZy5vYnN0YWNsZXMuY29uY2F0KFtzdGFydE5vZGUsIGVuZE5vZGVdKSwgZ3JpZFNpemUsIGNmZy5vZmZzZXQpO1xuICB2YXIgc2NhbGVTdGFydFBvaW50ID0ge1xuICAgIHg6IHBvczJHcmlkSXgoc3RhcnRQb2ludC54LCBncmlkU2l6ZSksXG4gICAgeTogcG9zMkdyaWRJeChzdGFydFBvaW50LnksIGdyaWRTaXplKVxuICB9O1xuICB2YXIgc2NhbGVFbmRQb2ludCA9IHtcbiAgICB4OiBwb3MyR3JpZEl4KGVuZFBvaW50LngsIGdyaWRTaXplKSxcbiAgICB5OiBwb3MyR3JpZEl4KGVuZFBvaW50LnksIGdyaWRTaXplKVxuICB9O1xuICBzdGFydFBvaW50LmlkID0gXCJcIi5jb25jYXQoc2NhbGVTdGFydFBvaW50LngsIFwifHx8XCIpLmNvbmNhdChzY2FsZVN0YXJ0UG9pbnQueSk7XG4gIGVuZFBvaW50LmlkID0gXCJcIi5jb25jYXQoc2NhbGVFbmRQb2ludC54LCBcInx8fFwiKS5jb25jYXQoc2NhbGVFbmRQb2ludC55KTtcbiAgdmFyIHN0YXJ0UG9pbnRzID0gZ2V0Qm94UG9pbnRzKHNjYWxlU3RhcnRQb2ludCwgc3RhcnRQb2ludCwgc3RhcnROb2RlLCBzY2FsZUVuZFBvaW50LCBjZmcpO1xuICB2YXIgZW5kUG9pbnRzID0gZ2V0Qm94UG9pbnRzKHNjYWxlRW5kUG9pbnQsIGVuZFBvaW50LCBlbmROb2RlLCBzY2FsZVN0YXJ0UG9pbnQsIGNmZyk7XG4gIHN0YXJ0UG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHBvaW50KSB7XG4gICAgZGVsZXRlIG1hcFtwb2ludC5pZF07XG4gIH0pO1xuICBlbmRQb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBkZWxldGUgbWFwW3BvaW50LmlkXTtcbiAgfSk7XG4gIHZhciBvcGVuU2V0ID0ge307XG4gIHZhciBjbG9zZWRTZXQgPSB7fTtcbiAgdmFyIGNhbWVGcm9tID0ge307IC8vIOS7jui1t+eCueWIsOW9k+WJjeeCueW3suS6p+eUn+eahCBjb3N0LCBkZWZhdWx0OiBJbmZpbml0eVxuXG4gIHZhciBnU2NvcmUgPSB7fTsgLy8g6LW354K557uP6L+H5b2T5YmN54K55Yiw6L6+57uI54K56aKE5Lyw55qEIGNvc3QsIGRlZmF1bHQ6IEluZmluaXR5XG5cbiAgdmFyIGZTY29yZSA9IHt9OyAvLyBpbml0aWFsaXplXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFydFBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBmaXJzdFN0ZXAgPSBzdGFydFBvaW50c1tpXTtcbiAgICBvcGVuU2V0W2ZpcnN0U3RlcC5pZF0gPSBmaXJzdFN0ZXA7IC8vIGNhbWVGcm9tW2ZpcnN0U3RlcC5pZF0gPSBzdGFydFBvaW50LmlkO1xuXG4gICAgZ1Njb3JlW2ZpcnN0U3RlcC5pZF0gPSAwO1xuICAgIGZTY29yZVtmaXJzdFN0ZXAuaWRdID0gZXN0aW1hdGVDb3N0KGZpcnN0U3RlcCwgZW5kUG9pbnRzLCBjZmcuZGlzdEZ1bmMpO1xuICB9XG5cbiAgdmFyIHJlbWFpbkxvb3BzID0gY2ZnLm1heGltdW1Mb29wcztcbiAgdmFyIHBlbmFsdGllcyA9IGNmZy5wZW5hbHRpZXM7XG4gIHZhciBjdXJyZW50LCBjdXJDb3N0LCBkaXJlY3Rpb24sIG5laWdoYm9yLCBuZWlnaGJvckNvc3QsIGNvc3RGcm9tU3RhcnQsIGRpcmVjdGlvbkNoYW5nZTtcblxuICB3aGlsZSAoT2JqZWN0LmtleXMob3BlblNldCkubGVuZ3RoID4gMCAmJiByZW1haW5Mb29wcyA+IDApIHtcbiAgICBjdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIGN1ckNvc3QgPSBJbmZpbml0eTsgLy8g5om+5YiwIG9wZW5TZXQg5LitIGZTY29yZSDmnIDlsI/nmoTngrlcblxuICAgIE9iamVjdC5rZXlzKG9wZW5TZXQpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGlkID0gb3BlblNldFtrZXldLmlkO1xuXG4gICAgICBpZiAoZlNjb3JlW2lkXSA8PSBjdXJDb3N0KSB7XG4gICAgICAgIGN1ckNvc3QgPSBmU2NvcmVbaWRdO1xuICAgICAgICBjdXJyZW50ID0gb3BlblNldFtpZF07XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFjdXJyZW50KSBicmVhazsgLy8g5aaC5p6cIGZTY29yZSDmnIDlsI/nmoTngrnlsLHmmK/nu4jngrlcblxuICAgIGlmIChlbmRQb2ludHMuZmluZEluZGV4KGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgcmV0dXJuIHBvaW50LnggPT09IGN1cnJlbnQueCAmJiBwb2ludC55ID09PSBjdXJyZW50Lnk7XG4gICAgfSkgPiAtMSkge1xuICAgICAgcmV0dXJuIGdldENvbnRyb2xQb2ludHMoY3VycmVudCwgY2FtZUZyb20sIHNjYWxlU3RhcnRQb2ludCwgZW5kUG9pbnQsIHN0YXJ0UG9pbnQsIHNjYWxlRW5kUG9pbnQsIGdyaWRTaXplKTtcbiAgICB9XG5cbiAgICBkZWxldGUgb3BlblNldFtjdXJyZW50LmlkXTtcbiAgICBjbG9zZWRTZXRbY3VycmVudC5pZF0gPSB0cnVlOyAvLyDojrflj5bnrKblkIjmnaHku7bnmoTkuIvkuIDmraXnmoTlgJnpgInov57mjqXngrlcbiAgICAvLyDmsr/lgJnpgInmlrnlkJHotbDkuIDmraVcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2ZnLmRpcmVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRpcmVjdGlvbiA9IGNmZy5kaXJlY3Rpb25zW2ldO1xuICAgICAgbmVpZ2hib3IgPSB7XG4gICAgICAgIHg6IGN1cnJlbnQueCArIGRpcmVjdGlvbi5zdGVwWCxcbiAgICAgICAgeTogY3VycmVudC55ICsgZGlyZWN0aW9uLnN0ZXBZLFxuICAgICAgICBpZDogXCJcIi5jb25jYXQoTWF0aC5yb3VuZChjdXJyZW50LngpICsgZGlyZWN0aW9uLnN0ZXBYLCBcInx8fFwiKS5jb25jYXQoTWF0aC5yb3VuZChjdXJyZW50LnkpICsgZGlyZWN0aW9uLnN0ZXBZKVxuICAgICAgfTtcbiAgICAgIGlmIChjbG9zZWRTZXRbbmVpZ2hib3IuaWRdKSBjb250aW51ZTtcbiAgICAgIGRpcmVjdGlvbkNoYW5nZSA9IGdldERpcmVjdGlvbkNoYW5nZShjdXJyZW50LCBuZWlnaGJvciwgY2FtZUZyb20sIHNjYWxlU3RhcnRQb2ludCk7XG4gICAgICBpZiAoZGlyZWN0aW9uQ2hhbmdlID4gY2ZnLm1heEFsbG93ZWREaXJlY3Rpb25DaGFuZ2UpIGNvbnRpbnVlO1xuICAgICAgaWYgKG1hcFtuZWlnaGJvci5pZF0pIGNvbnRpbnVlOyAvLyDlpoLmnpzkuqTlj4nliJnot7Pov4dcbiAgICAgIC8vIOWwhuWAmemAieeCueWKoOWFpSBvcGVuU2V0LCDlubborqHnrpfmr4/kuKrlgJnpgInngrnnmoQgY29zdFxuXG4gICAgICBpZiAoIW9wZW5TZXRbbmVpZ2hib3IuaWRdKSB7XG4gICAgICAgIG9wZW5TZXRbbmVpZ2hib3IuaWRdID0gbmVpZ2hib3I7XG4gICAgICB9XG5cbiAgICAgIG5laWdoYm9yQ29zdCA9IGNmZy5kaXN0RnVuYyhjdXJyZW50LCBuZWlnaGJvcikgKyAoaXNOYU4ocGVuYWx0aWVzW2RpcmVjdGlvbkNoYW5nZV0pID8gZ3JpZFNpemUgOiBwZW5hbHRpZXNbZGlyZWN0aW9uQ2hhbmdlXSk7XG4gICAgICBjb3N0RnJvbVN0YXJ0ID0gZ1Njb3JlW2N1cnJlbnQuaWRdICsgbmVpZ2hib3JDb3N0O1xuXG4gICAgICBpZiAoZ1Njb3JlW25laWdoYm9yLmlkXSAmJiBjb3N0RnJvbVN0YXJ0ID49IGdTY29yZVtuZWlnaGJvci5pZF0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNhbWVGcm9tW25laWdoYm9yLmlkXSA9IGN1cnJlbnQ7XG4gICAgICBnU2NvcmVbbmVpZ2hib3IuaWRdID0gY29zdEZyb21TdGFydDtcbiAgICAgIGZTY29yZVtuZWlnaGJvci5pZF0gPSBjb3N0RnJvbVN0YXJ0ICsgZXN0aW1hdGVDb3N0KG5laWdoYm9yLCBlbmRQb2ludHMsIGNmZy5kaXN0RnVuYyk7XG4gICAgfVxuXG4gICAgcmVtYWluTG9vcHMgLT0gMTtcbiAgfVxuXG4gIHJldHVybiBjZmcuZmFsbGJhY2tSb3V0ZShzdGFydFBvaW50LCBlbmRQb2ludCwgc3RhcnROb2RlLCBlbmROb2RlLCBjZmcpO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/edges/router.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/index.js": /*!***************************************************!*\ !*** ./node_modules/@antv/g6-element/es/index.js ***! \***************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nodes */ \"./node_modules/@antv/g6-element/es/nodes/index.js\");\n/* harmony import */ var _edges__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edges */ \"./node_modules/@antv/g6-element/es/edges/index.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9pbmRleC5qcz8xNjQ5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1lbGVtZW50L2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL25vZGVzJztcbmltcG9ydCAnLi9lZGdlcyc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/nodes/circle.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-element/es/nodes/circle.js ***! \**********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n // 带有图标的圆,可用于拓扑图中\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('circle', {\n // 自定义节点时的配置\n options: {\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n defaultIcon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var icon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultIcon, cfg.icon);\n var name = \"\".concat(this.type, \"-keyShape\");\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: name,\n name: name,\n draggable: true\n });\n group['shapeMap'][name] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n var iconName = \"\".concat(this.type, \"-icon\");\n\n if (text) {\n group['shapeMap'][iconName] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: iconName,\n name: iconName,\n draggable: true\n });\n } else {\n group['shapeMap'][iconName] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: iconName,\n name: iconName,\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var linkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints;\n if (!linkPoints) return;\n\n var _a = linkPoints || {},\n top = _a.top,\n left = _a.left,\n right = _a.right,\n bottom = _a.bottom,\n markSize = _a.size,\n markR = _a.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(_a, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n if (left) {\n // left circle\n var name_1 = 'link-point-left';\n group['shapeMap'][name_1] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -r,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: name_1,\n name: name_1,\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n var name_2 = 'link-point-right';\n group['shapeMap'][name_2] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: r,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: name_2,\n name: name_2,\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n var name_3 = 'link-point-top';\n group['shapeMap'][name_3] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -r,\n r: markSize / 2 || markR || 5\n }),\n className: name_3,\n name: name_3,\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n var name_4 = 'link-point-bottom';\n group['shapeMap'][name_4] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: r,\n r: markSize / 2 || markR || 5\n }),\n className: name_4,\n name: name_4,\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n r: r\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer();\n var size = this.getSize(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n // const strokeStyle = {\n // stroke: cfg.color,\n // r: size[0] / 2,\n // };\n // // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n // const keyShape = item.get('keyShape');\n // TODO: performance\n // const style = deepMix({}, keyShape.attr(), strokeStyle, cfg.style);\n // const style = deepMix({}, keyShape.attr(), cfg.style);\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg.style);\n\n if (cfg.style.stroke === undefined && cfg.color) {\n style.stroke = cfg.color;\n }\n\n if (cfg.style.r === undefined && !isNaN(size[0])) {\n style.r = size[0] / 2;\n }\n\n this.updateShape(cfg, item, style, true, updateType); // (this as any).updateShape(cfg, item, style, true, updateType);\n\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9jaXJjbGUuanM/Zjc3ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUMwQjtBQUM5Qjs7QUFFckMsa0VBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVSx3REFBTTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQSxlQUFlLDBEQUFPLEdBQUc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLDBEQUFPLEdBQUc7QUFDMUI7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLCtCQUErQjs7QUFFL0IsZ0JBQWdCLHNEQUFRLEdBQUc7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEseURBQXlEOztBQUV6RDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1lbGVtZW50L2VzL25vZGVzL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTm9kZSwgQmFzZUdsb2JhbCBhcyBHbG9iYWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJzsgLy8g5bim5pyJ5Zu+5qCH55qE5ZyG77yM5Y+v55So5LqO5ouT5omR5Zu+5LitXG5cbnJlZ2lzdGVyTm9kZSgnY2lyY2xlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zaXplLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgZGVmYXVsdEljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgaWNvbiA9IGRlZXBNaXgoe30sIGRlZmF1bHRJY29uLCBjZmcuaWNvbik7XG4gICAgdmFyIG5hbWUgPSBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IG5hbWUsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV0gPSBrZXlTaGFwZTtcbiAgICB2YXIgd2lkdGggPSBpY29uLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBpY29uLmhlaWdodCxcbiAgICAgICAgc2hvdyA9IGljb24uc2hvdyxcbiAgICAgICAgdGV4dCA9IGljb24udGV4dDtcblxuICAgIGlmIChzaG93KSB7XG4gICAgICB2YXIgaWNvbk5hbWUgPSBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIik7XG5cbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2ljb25OYW1lXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBpY29uKSxcbiAgICAgICAgICBjbGFzc05hbWU6IGljb25OYW1lLFxuICAgICAgICAgIG5hbWU6IGljb25OYW1lLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2ljb25OYW1lXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgICAgICAgIHk6IC1oZWlnaHQgLyAyXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICBuYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBsaW5rUG9pbnRzID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cztcbiAgICBpZiAoIWxpbmtQb2ludHMpIHJldHVybjtcblxuICAgIHZhciBfYSA9IGxpbmtQb2ludHMgfHwge30sXG4gICAgICAgIHRvcCA9IF9hLnRvcCxcbiAgICAgICAgbGVmdCA9IF9hLmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gX2EucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IF9hLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBfYS5zaXplLFxuICAgICAgICBtYXJrUiA9IF9hLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChfYSwgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgciA9IHNpemVbMF0gLyAyO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIGxlZnQgY2lyY2xlXG4gICAgICB2YXIgbmFtZV8xID0gJ2xpbmstcG9pbnQtbGVmdCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzFdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogLXIsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiBuYW1lXzEsXG4gICAgICAgIG5hbWU6IG5hbWVfMSxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICAvLyByaWdodCBjaXJjbGVcbiAgICAgIHZhciBuYW1lXzIgPSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzJdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogcixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMixcbiAgICAgICAgbmFtZTogbmFtZV8yLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB0b3AgY2lyY2xlXG4gICAgICB2YXIgbmFtZV8zID0gJ2xpbmstcG9pbnQtdG9wJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfM10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IC1yLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMyxcbiAgICAgICAgbmFtZTogbmFtZV8zLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tKSB7XG4gICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICB2YXIgbmFtZV80ID0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfNF0gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV80LFxuICAgICAgICBuYW1lOiBuYW1lXzQsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciByID0gc2l6ZVswXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByOiByXG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpOyAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG4gICAgLy8gY29uc3Qgc3Ryb2tlU3R5bGUgPSB7XG4gICAgLy8gICBzdHJva2U6IGNmZy5jb2xvcixcbiAgICAvLyAgIHI6IHNpemVbMF0gLyAyLFxuICAgIC8vIH07XG4gICAgLy8gLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcbiAgICAvLyBjb25zdCBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIC8vIFRPRE86IHBlcmZvcm1hbmNlXG4gICAgLy8gY29uc3Qgc3R5bGUgPSBkZWVwTWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIC8vIGNvbnN0IHN0eWxlID0gZGVlcE1peCh7fSwga2V5U2hhcGUuYXR0cigpLCBjZmcuc3R5bGUpO1xuXG4gICAgdmFyIHN0eWxlID0gX19hc3NpZ24oe30sIGNmZy5zdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlLnN0cm9rZSA9PT0gdW5kZWZpbmVkICYmIGNmZy5jb2xvcikge1xuICAgICAgc3R5bGUuc3Ryb2tlID0gY2ZnLmNvbG9yO1xuICAgIH1cblxuICAgIGlmIChjZmcuc3R5bGUuciA9PT0gdW5kZWZpbmVkICYmICFpc05hTihzaXplWzBdKSkge1xuICAgICAgc3R5bGUuciA9IHNpemVbMF0gLyAyO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7IC8vICh0aGlzIGFzIGFueSkudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7XG5cbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/circle.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/nodes/diamond.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g6-element/es/nodes/diamond.js ***! \***********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n // 菱形shape\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('diamond', {\n // 自定义节点时的配置\n options: {\n size: [80, 80],\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'diamond',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('path', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -w / 2,\n y: -h / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n getPath: function getPath(cfg) {\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var path = [['M', 0, -height / 2], ['L', width / 2, 0], ['L', 0, height / 2], ['L', -width / 2, 0], ['Z'] // 封闭\n ];\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9kaWFtb25kLmpzPzI4NTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7O0FBRWpDLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixZQUFZLHdEQUFNO0FBQ2xCLGNBQWMsd0RBQU07QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUEsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLG9DQUFvQzs7QUFFcEMseUNBQXlDO0FBQ3pDLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvZGlhbW9uZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTm9kZSwgQmFzZUdsb2JhbCBhcyBHbG9iYWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnOyAvLyDoj7HlvaJzaGFwZVxuXG5yZWdpc3Rlck5vZGUoJ2RpYW1vbmQnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogWzgwLCA4MF0sXG4gICAgc3R5bGU6IHtcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICAvLyDmlofmnKzmoLflvI/phY3nva5cbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnZGlhbW9uZCcsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmljb24sXG4gICAgICAgIGljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIiksXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVtcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpXSA9IGtleVNoYXBlO1xuICAgIHZhciB3ID0gaWNvbi53aWR0aCxcbiAgICAgICAgaCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13IC8gMixcbiAgICAgICAgICAgIHk6IC1oIC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHMsXG4gICAgICAgIGxpbmtQb2ludHMgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcblxuICAgIHZhciB0b3AgPSBsaW5rUG9pbnRzLnRvcCxcbiAgICAgICAgbGVmdCA9IGxpbmtQb2ludHMubGVmdCxcbiAgICAgICAgcmlnaHQgPSBsaW5rUG9pbnRzLnJpZ2h0LFxuICAgICAgICBib3R0b20gPSBsaW5rUG9pbnRzLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzaXplWzFdO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIGxlZnQgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIC8vIHJpZ2h0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IHdpZHRoIC8gMixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB0b3AgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSkge1xuICAgICAgLy8gYm90dG9tIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKGNmZykge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcbiAgICB2YXIgcGF0aCA9IFtbJ00nLCAwLCAtaGVpZ2h0IC8gMl0sIFsnTCcsIHdpZHRoIC8gMiwgMF0sIFsnTCcsIDAsIGhlaWdodCAvIDJdLCBbJ0wnLCAtd2lkdGggLyAyLCAwXSwgWydaJ10gLy8g5bCB6ZetXG4gICAgXTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/diamond.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/nodes/donut.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g6-element/es/nodes/donut.js ***! \*********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n\nvar defaultSubjectColors = _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Util\"].defaultSubjectColors; // 饼图节点\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('donut', {\n // 自定义节点时的配置\n options: {\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n defaultIcon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var icon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultIcon, cfg.icon);\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n draggable: true,\n name: \"\".concat(this.type, \"-keyShape\")\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n\n var donutR = keyShape.attr('r');\n var innerR = 0.6 * donutR; // 甜甜圈的内环半径\n\n var arcR = (donutR + innerR) / 2; // 内环半径与外环半径的平均值\n\n var _b = cfg,\n _c = _b.donutAttrs,\n donutAttrs = _c === void 0 ? {} : _c,\n _d = _b.donutColorMap,\n donutColorMap = _d === void 0 ? {} : _d;\n var attrNum = Object.keys(donutAttrs).length;\n\n if (donutAttrs && attrNum > 1) {\n var attrs_1 = [];\n var totalValue_1 = 0;\n Object.keys(donutAttrs).forEach(function (name) {\n var value = donutAttrs[name] || 0;\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(value)) return;\n attrs_1.push({\n key: name,\n value: value,\n color: donutColorMap[name]\n });\n totalValue_1 += value;\n });\n\n if (totalValue_1) {\n var lineWidth_1 = donutR - innerR;\n\n if (attrNum === 1) {\n group['shapeMap']['fan-shape-0'] = group.addShape('circle', {\n attrs: {\n r: arcR,\n x: 0,\n y: 0,\n stroke: attrs_1[0].color || defaultSubjectColors[0],\n lineWidth: lineWidth_1\n },\n name: \"fan-shape-0\"\n });\n return;\n }\n\n var arcBegin_1 = [arcR, 0];\n var beginAngle_1 = 0;\n attrs_1.forEach(function (attr, i) {\n var percent = attr.value / totalValue_1;\n if (percent < 0.001) return;\n if (percent > 0.999) percent = 1;\n\n if (percent === 1) {\n group['shapeMap'][\"fan-shape-\".concat(i)] = group.addShape('circle', {\n attrs: {\n r: arcR,\n x: 0,\n y: 0,\n stroke: attr.color || defaultSubjectColors[i % defaultSubjectColors.length],\n lineWidth: lineWidth_1\n },\n name: \"fan-shape-\".concat(i)\n });\n return;\n }\n\n attr.percent = percent;\n attr.angle = percent * Math.PI * 2;\n attr.beginAgnle = beginAngle_1;\n beginAngle_1 += attr.angle;\n attr.endAngle = beginAngle_1;\n attr.arcBegin = arcBegin_1;\n attr.arcEnd = [arcR * Math.cos(attr.endAngle), -arcR * Math.sin(attr.endAngle)];\n var isBig = attr.angle > Math.PI ? 1 : 0;\n var path = [['M', attr.arcBegin[0], attr.arcBegin[1]], ['A', arcR, arcR, 0, isBig, 0, attr.arcEnd[0], attr.arcEnd[1]], ['L', attr.arcEnd[0], attr.arcEnd[1]]];\n group['shapeMap'][\"fan-shape-\".concat(i)] = group.addShape('path', {\n attrs: {\n path: path,\n lineWidth: lineWidth_1,\n stroke: attr.color || defaultSubjectColors[i % defaultSubjectColors.length]\n },\n name: \"fan-shape-\".concat(i)\n });\n arcBegin_1 = attr.arcEnd;\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n update: undefined\n}, 'circle');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9kb251dC5qcz82ZTI3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ3dDO0FBQzFCO0FBQy9DLDJCQUEyQixrREFBSSxzQkFBc0I7O0FBRXJELGtFQUFZO0FBQ1o7QUFDQTtBQUNBLFVBQVUsd0RBQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsd0RBQU07QUFDcEIsa0JBQWtCLHdEQUFNO0FBQ3hCLG9CQUFvQix3REFBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLFlBQVksd0RBQU07QUFDbEIsY0FBYyx3REFBTTtBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLHdEQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0EsZUFBZSwwREFBTyxHQUFHO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0EsOEJBQThCOztBQUU5QixxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSwwQ0FBMEM7QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFdBQVc7QUFDWDtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvZG9udXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCwgVXRpbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgZGVlcE1peCwgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBkZWZhdWx0U3ViamVjdENvbG9ycyA9IFV0aWwuZGVmYXVsdFN1YmplY3RDb2xvcnM7IC8vIOmlvOWbvuiKgueCuVxuXG5yZWdpc3Rlck5vZGUoJ2RvbnV0Jywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zaXplLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgZGVmYXVsdEljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgaWNvbiA9IGRlZXBNaXgoe30sIGRlZmF1bHRJY29uLCBjZmcuaWNvbik7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIilcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVtcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpXSA9IGtleVNoYXBlO1xuICAgIHZhciB3aWR0aCA9IGljb24ud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgICB5OiAtaGVpZ2h0IC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRvbnV0UiA9IGtleVNoYXBlLmF0dHIoJ3InKTtcbiAgICB2YXIgaW5uZXJSID0gMC42ICogZG9udXRSOyAvLyDnlJznlJzlnIjnmoTlhoXnjq/ljYrlvoRcblxuICAgIHZhciBhcmNSID0gKGRvbnV0UiArIGlubmVyUikgLyAyOyAvLyDlhoXnjq/ljYrlvoTkuI7lpJbnjq/ljYrlvoTnmoTlubPlnYflgLxcblxuICAgIHZhciBfYiA9IGNmZyxcbiAgICAgICAgX2MgPSBfYi5kb251dEF0dHJzLFxuICAgICAgICBkb251dEF0dHJzID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsXG4gICAgICAgIF9kID0gX2IuZG9udXRDb2xvck1hcCxcbiAgICAgICAgZG9udXRDb2xvck1hcCA9IF9kID09PSB2b2lkIDAgPyB7fSA6IF9kO1xuICAgIHZhciBhdHRyTnVtID0gT2JqZWN0LmtleXMoZG9udXRBdHRycykubGVuZ3RoO1xuXG4gICAgaWYgKGRvbnV0QXR0cnMgJiYgYXR0ck51bSA+IDEpIHtcbiAgICAgIHZhciBhdHRyc18xID0gW107XG4gICAgICB2YXIgdG90YWxWYWx1ZV8xID0gMDtcbiAgICAgIE9iamVjdC5rZXlzKGRvbnV0QXR0cnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gZG9udXRBdHRyc1tuYW1lXSB8fCAwO1xuICAgICAgICBpZiAoIWlzTnVtYmVyKHZhbHVlKSkgcmV0dXJuO1xuICAgICAgICBhdHRyc18xLnB1c2goe1xuICAgICAgICAgIGtleTogbmFtZSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgY29sb3I6IGRvbnV0Q29sb3JNYXBbbmFtZV1cbiAgICAgICAgfSk7XG4gICAgICAgIHRvdGFsVmFsdWVfMSArPSB2YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodG90YWxWYWx1ZV8xKSB7XG4gICAgICAgIHZhciBsaW5lV2lkdGhfMSA9IGRvbnV0UiAtIGlubmVyUjtcblxuICAgICAgICBpZiAoYXR0ck51bSA9PT0gMSkge1xuICAgICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydmYW4tc2hhcGUtMCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHI6IGFyY1IsXG4gICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgIHN0cm9rZTogYXR0cnNfMVswXS5jb2xvciB8fCBkZWZhdWx0U3ViamVjdENvbG9yc1swXSxcbiAgICAgICAgICAgICAgbGluZVdpZHRoOiBsaW5lV2lkdGhfMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IFwiZmFuLXNoYXBlLTBcIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhcmNCZWdpbl8xID0gW2FyY1IsIDBdO1xuICAgICAgICB2YXIgYmVnaW5BbmdsZV8xID0gMDtcbiAgICAgICAgYXR0cnNfMS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyLCBpKSB7XG4gICAgICAgICAgdmFyIHBlcmNlbnQgPSBhdHRyLnZhbHVlIC8gdG90YWxWYWx1ZV8xO1xuICAgICAgICAgIGlmIChwZXJjZW50IDwgMC4wMDEpIHJldHVybjtcbiAgICAgICAgICBpZiAocGVyY2VudCA+IDAuOTk5KSBwZXJjZW50ID0gMTtcblxuICAgICAgICAgIGlmIChwZXJjZW50ID09PSAxKSB7XG4gICAgICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtcImZhbi1zaGFwZS1cIi5jb25jYXQoaSldID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICByOiBhcmNSLFxuICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICBzdHJva2U6IGF0dHIuY29sb3IgfHwgZGVmYXVsdFN1YmplY3RDb2xvcnNbaSAlIGRlZmF1bHRTdWJqZWN0Q29sb3JzLmxlbmd0aF0sXG4gICAgICAgICAgICAgICAgbGluZVdpZHRoOiBsaW5lV2lkdGhfMVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuYW1lOiBcImZhbi1zaGFwZS1cIi5jb25jYXQoaSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGF0dHIucGVyY2VudCA9IHBlcmNlbnQ7XG4gICAgICAgICAgYXR0ci5hbmdsZSA9IHBlcmNlbnQgKiBNYXRoLlBJICogMjtcbiAgICAgICAgICBhdHRyLmJlZ2luQWdubGUgPSBiZWdpbkFuZ2xlXzE7XG4gICAgICAgICAgYmVnaW5BbmdsZV8xICs9IGF0dHIuYW5nbGU7XG4gICAgICAgICAgYXR0ci5lbmRBbmdsZSA9IGJlZ2luQW5nbGVfMTtcbiAgICAgICAgICBhdHRyLmFyY0JlZ2luID0gYXJjQmVnaW5fMTtcbiAgICAgICAgICBhdHRyLmFyY0VuZCA9IFthcmNSICogTWF0aC5jb3MoYXR0ci5lbmRBbmdsZSksIC1hcmNSICogTWF0aC5zaW4oYXR0ci5lbmRBbmdsZSldO1xuICAgICAgICAgIHZhciBpc0JpZyA9IGF0dHIuYW5nbGUgPiBNYXRoLlBJID8gMSA6IDA7XG4gICAgICAgICAgdmFyIHBhdGggPSBbWydNJywgYXR0ci5hcmNCZWdpblswXSwgYXR0ci5hcmNCZWdpblsxXV0sIFsnQScsIGFyY1IsIGFyY1IsIDAsIGlzQmlnLCAwLCBhdHRyLmFyY0VuZFswXSwgYXR0ci5hcmNFbmRbMV1dLCBbJ0wnLCBhdHRyLmFyY0VuZFswXSwgYXR0ci5hcmNFbmRbMV1dXTtcbiAgICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtcImZhbi1zaGFwZS1cIi5jb25jYXQoaSldID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgICBsaW5lV2lkdGg6IGxpbmVXaWR0aF8xLFxuICAgICAgICAgICAgICBzdHJva2U6IGF0dHIuY29sb3IgfHwgZGVmYXVsdFN1YmplY3RDb2xvcnNbaSAlIGRlZmF1bHRTdWJqZWN0Q29sb3JzLmxlbmd0aF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBcImZhbi1zaGFwZS1cIi5jb25jYXQoaSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhcmNCZWdpbl8xID0gYXR0ci5hcmNFbmQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuICB1cGRhdGU6IHVuZGVmaW5lZFxufSwgJ2NpcmNsZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/donut.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/nodes/ellipse.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g6-element/es/nodes/ellipse.js ***! \***********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n\n/**\n * 基本的椭圆,可以添加文本,默认文本居中\n */\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('ellipse', {\n // 自定义节点时的配置\n options: {\n size: [80, 40],\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'ellipse',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('ellipse', {\n attrs: style,\n className: 'ellipse-keyShape',\n name: 'ellipse-keyShape',\n draggable: true\n });\n group['shapeMap']['ellipse-keyShape'] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var rx = size[0] / 2;\n var ry = size[1] / 2;\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -rx,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: rx,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -ry,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: ry,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var rx = size[0] / 2;\n var ry = size[1] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n rx: rx,\n ry: ry\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var size = this.getSize(cfg);\n var strokeStyle = {\n stroke: cfg.color,\n rx: size[0] / 2,\n ry: size[1] / 2\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9lbGxpcHNlLmpzP2I2NGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7QUFDakM7QUFDQTtBQUNBOztBQUVBLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvREFBTTs7QUFFMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQyx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1lbGVtZW50L2VzL25vZGVzL2VsbGlwc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyByZWdpc3Rlck5vZGUsIEJhc2VHbG9iYWwgYXMgR2xvYmFsIH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5pbXBvcnQgeyBtaXggfSBmcm9tICdAYW50di91dGlsJztcbi8qKlxuICog5Z+65pys55qE5qSt5ZyG77yM5Y+v5Lul5re75Yqg5paH5pys77yM6buY6K6k5paH5pys5bGF5LitXG4gKi9cblxucmVnaXN0ZXJOb2RlKCdlbGxpcHNlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IFs4MCwgNDBdLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICAvLyDmlofmnKzmoLflvI/phY3nva5cbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnZWxsaXBzZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmljb24sXG4gICAgICAgIGljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgnZWxsaXBzZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogJ2VsbGlwc2Uta2V5U2hhcGUnLFxuICAgICAgbmFtZTogJ2VsbGlwc2Uta2V5U2hhcGUnLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VsbGlwc2Uta2V5U2hhcGUnXSA9IGtleVNoYXBlO1xuICAgIHZhciB3aWR0aCA9IGljb24ud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgICB5OiAtaGVpZ2h0IC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHMsXG4gICAgICAgIGxpbmtQb2ludHMgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcblxuICAgIHZhciB0b3AgPSBsaW5rUG9pbnRzLnRvcCxcbiAgICAgICAgbGVmdCA9IGxpbmtQb2ludHMubGVmdCxcbiAgICAgICAgcmlnaHQgPSBsaW5rUG9pbnRzLnJpZ2h0LFxuICAgICAgICBib3R0b20gPSBsaW5rUG9pbnRzLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgcnggPSBzaXplWzBdIC8gMjtcbiAgICB2YXIgcnkgPSBzaXplWzFdIC8gMjtcblxuICAgIGlmIChsZWZ0KSB7XG4gICAgICAvLyBsZWZ0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogLXJ4LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIC8vIHJpZ2h0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IHJ4LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0b3ApIHtcbiAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtcnksXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSkge1xuICAgICAgLy8gYm90dG9tIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHJ5LFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHJ4ID0gc2l6ZVswXSAvIDI7XG4gICAgdmFyIHJ5ID0gc2l6ZVsxXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByeDogcngsXG4gICAgICByeTogcnlcbiAgICB9LCBzdHlsZSk7XG5cbiAgICByZXR1cm4gc3R5bGVzO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpOyAvLyDov5nph4zkuI3kvKAgY2ZnIOWPguaVsOaYr+WboOS4uiBjZmcuc3R5bGUg6ZyA6KaB5pyA5ZCO6KaG55uW5qC35byPXG5cbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5nZXRPcHRpb25zKHt9KS5zdHlsZTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcng6IHNpemVbMF0gLyAyLFxuICAgICAgcnk6IHNpemVbMV0gLyAyXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlKTtcbiAgICBzdHlsZSA9IG1peChzdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIHRydWUsIHVwZGF0ZVR5cGUpO1xuICAgIHRoaXMudXBkYXRlTGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/ellipse.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/nodes/index.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g6-element/es/nodes/index.js ***! \*********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./circle */ \"./node_modules/@antv/g6-element/es/nodes/circle.js\");\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/@antv/g6-element/es/nodes/rect.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/@antv/g6-element/es/nodes/ellipse.js\");\n/* harmony import */ var _diamond__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./diamond */ \"./node_modules/@antv/g6-element/es/nodes/diamond.js\");\n/* harmony import */ var _triangle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./triangle */ \"./node_modules/@antv/g6-element/es/nodes/triangle.js\");\n/* harmony import */ var _modelRect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modelRect */ \"./node_modules/@antv/g6-element/es/nodes/modelRect.js\");\n/* harmony import */ var _star__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./star */ \"./node_modules/@antv/g6-element/es/nodes/star.js\");\n/* harmony import */ var _donut__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./donut */ \"./node_modules/@antv/g6-element/es/nodes/donut.js\");\n\n\n\n\n\n\n\n // import './image';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9pbmRleC5qcz84NjI1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQjtBQUNGO0FBQ0c7QUFDQTtBQUNDO0FBQ0M7QUFDTDtBQUNDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vY2lyY2xlJztcbmltcG9ydCAnLi9yZWN0JztcbmltcG9ydCAnLi9lbGxpcHNlJztcbmltcG9ydCAnLi9kaWFtb25kJztcbmltcG9ydCAnLi90cmlhbmdsZSc7XG5pbXBvcnQgJy4vbW9kZWxSZWN0JztcbmltcG9ydCAnLi9zdGFyJztcbmltcG9ydCAnLi9kb251dCc7IC8vIGltcG9ydCAnLi9pbWFnZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/nodes/modelRect.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/g6-element/es/nodes/modelRect.js ***! \*************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n\n\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerNode\"])('modelRect', {\n // 自定义节点时的配置\n options: {\n size: [185, 70],\n style: {\n radius: 5,\n stroke: '#69c0ff',\n fill: '#ffffff',\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.lineWidth,\n fillOpacity: 1\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: '#595959',\n fontSize: 14,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n },\n offset: 30 // 距离左侧的 offset,没有设置 y 轴上移动的配置\n\n },\n descriptionCfg: {\n style: {\n fontSize: 12,\n fill: '#bfbfbf',\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n },\n paddingTop: 0\n },\n preRect: {\n show: true,\n width: 4,\n fill: '#40a9ff',\n radius: 2\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: 10,\n lineWidth: 1,\n fill: '#72CC4A',\n stroke: '#72CC4A'\n },\n // 节点中icon配置\n logoIcon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: true,\n x: 0,\n y: 0,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/basement_prod/4f81893c-1806-4de4-aff3-9a6b266bc8a2.svg',\n width: 16,\n height: 16,\n // 用于调整图标的左右位置\n offset: 0\n },\n // 节点中表示状态的icon配置\n stateIcon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: true,\n x: 0,\n y: 0,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/basement_prod/300a2523-67e0-4cbf-9d4a-67c077b40395.svg',\n width: 16,\n height: 16,\n // 用于调整图标的左右位置\n offset: -5\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]]\n },\n shapeType: 'modelRect',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).preRect,\n preRect = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n\n var preRectShow = preRect.show,\n preRectStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(preRect, [\"show\"]);\n\n if (preRectShow) {\n group['shapeMap']['pre-rect'] = group.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n height: height\n }, preRectStyle),\n className: 'pre-rect',\n name: 'pre-rect',\n draggable: true\n });\n }\n\n this.drawLogoIcon(cfg, group);\n this.drawStateIcon(cfg, group);\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制模型矩形左边的logo图标\n * @param {Object} cfg 数据配置项\n * @param {Group} group Group实例\n */\n drawLogoIcon: function drawLogoIcon(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).logoIcon,\n logoIcon = _a === void 0 ? {} : _a;\n var size = this.getSize(cfg);\n var width = size[0];\n\n if (logoIcon.show) {\n var w = logoIcon.width,\n h = logoIcon.height,\n x = logoIcon.x,\n y = logoIcon.y,\n offset = logoIcon.offset,\n text = logoIcon.text,\n logoIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(logoIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\", \"text\"]);\n\n if (text) {\n group['shapeMap']['rect-logo-icon'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, logoIconStyle),\n className: 'rect-logo-icon',\n name: 'rect-logo-icon',\n draggable: true\n });\n } else {\n group['shapeMap']['rect-logo-icon'] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, logoIconStyle), {\n x: x || -width / 2 + w + offset,\n y: y || -h / 2,\n width: w,\n height: h\n }),\n className: 'rect-logo-icon',\n name: 'rect-logo-icon',\n draggable: true\n });\n }\n }\n },\n\n /**\n * 绘制模型矩形右边的状态图标\n * @param {Object} cfg 数据配置项\n * @param {Group} group Group实例\n */\n drawStateIcon: function drawStateIcon(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).stateIcon,\n stateIcon = _a === void 0 ? {} : _a;\n var size = this.getSize(cfg);\n var width = size[0];\n\n if (stateIcon.show) {\n var w = stateIcon.width,\n h = stateIcon.height,\n x = stateIcon.x,\n y = stateIcon.y,\n offset = stateIcon.offset,\n text = stateIcon.text,\n iconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(stateIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\", \"text\"]);\n\n if (text) {\n group['shapeMap']['rect-state-icon'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, iconStyle),\n className: 'rect-state-icon',\n name: 'rect-state-icon',\n draggable: true\n });\n } else {\n group['shapeMap']['rect-state-icon'] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, iconStyle), {\n x: x || width / 2 - w + offset,\n y: y || -h / 2,\n width: w,\n height: h\n }),\n className: 'rect-state-icon',\n name: 'rect-state-icon',\n draggable: true\n });\n }\n }\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n drawLabel: function drawLabel(cfg, group) {\n var _a = this.getOptions(cfg),\n _b = _a.labelCfg,\n labelCfg = _b === void 0 ? {} : _b,\n _c = _a.logoIcon,\n logoIcon = _c === void 0 ? {} : _c,\n _d = _a.descriptionCfg,\n descriptionCfg = _d === void 0 ? {} : _d;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var label = null;\n var show = logoIcon.show,\n w = logoIcon.width;\n var offsetX = -width / 2 + labelCfg.offset;\n\n if (show) {\n offsetX = -width / 2 + w + labelCfg.offset;\n }\n\n var fontStyle = labelCfg.style;\n var descriptionStyle = descriptionCfg.style,\n descriptionPaddingTop = descriptionCfg.paddingTop;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) {\n label = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, fontStyle), {\n x: offsetX,\n y: -5,\n text: cfg.label\n }),\n className: 'text-shape',\n name: 'text-shape',\n draggable: true,\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n group['shapeMap']['rect-description'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionStyle), {\n x: offsetX,\n y: 17 + (descriptionPaddingTop || 0),\n text: cfg.description\n }),\n className: 'rect-description',\n name: 'rect-description',\n draggable: true,\n labelRelated: true\n });\n } else {\n label = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, fontStyle), {\n x: offsetX,\n y: 7,\n text: cfg.label\n }),\n className: 'text-shape',\n name: 'text-shape',\n draggable: true,\n labelRelated: true\n });\n group['shapeMap']['text-shape'] = label;\n }\n\n return label;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.style,\n style = _b === void 0 ? {} : _b,\n _c = _a.labelCfg,\n labelCfg = _c === void 0 ? {} : _c,\n _d = _a.descriptionCfg,\n descriptionCfg = _d === void 0 ? {} : _d;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var keyShape = item.get('keyShape');\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, style), {\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }));\n var group = item.getContainer();\n var logoIconShape = group['shapeMap']['rect-logo-icon'] || group.find(function (element) {\n return element.get('className') === 'rect-logo-icon';\n });\n var currentLogoIconAttr = logoIconShape ? logoIconShape.attr() : {};\n var logoIcon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentLogoIconAttr, cfg.logoIcon);\n var w = logoIcon.width;\n\n if (w === undefined) {\n w = this.options.logoIcon.width;\n }\n\n var show = cfg.logoIcon ? cfg.logoIcon.show : undefined;\n var offset = labelCfg.offset;\n var offsetX = -width / 2 + w + offset;\n\n if (!show && show !== undefined) {\n offsetX = -width / 2 + offset;\n }\n\n var label = group['shapeMap']['node-label'] || group.find(function (element) {\n return element.get('className') === 'node-label';\n });\n var description = group['shapeMap']['rect-description'] || group.find(function (element) {\n return element.get('className') === 'rect-description';\n });\n\n if (cfg.label) {\n if (!label) {\n group['shapeMap']['node-label'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, labelCfg.style), {\n x: offsetX,\n y: cfg.description ? -5 : 7,\n text: cfg.label\n }),\n className: 'node-label',\n name: 'node-label',\n draggable: true,\n labelRelated: true\n });\n } else {\n var cfgStyle = cfg.labelCfg ? cfg.labelCfg.style : {};\n var labelStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, label.attr(), cfgStyle);\n if (cfg.label) labelStyle.text = cfg.label;\n labelStyle.x = offsetX;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) labelStyle.y = -5;\n\n if (description) {\n description.resetMatrix();\n description.attr({\n x: offsetX\n });\n }\n\n label.resetMatrix();\n label.attr(labelStyle);\n }\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) {\n var paddingTop = descriptionCfg.paddingTop;\n\n if (!description) {\n group['shapeMap']['rect-description'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionCfg.style), {\n x: offsetX,\n y: 17 + (paddingTop || 0),\n text: cfg.description\n }),\n className: 'rect-description',\n name: 'rect-description',\n draggable: true,\n labelRelated: true\n });\n } else {\n var cfgStyle = cfg.descriptionCfg ? cfg.descriptionCfg.style : {};\n var descriptionStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, description.attr(), cfgStyle);\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) descriptionStyle.text = cfg.description;\n descriptionStyle.x = offsetX;\n description.resetMatrix();\n description.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionStyle), {\n y: 17 + (paddingTop || 0)\n }));\n }\n }\n\n var preRectShape = group['shapeMap']['pre-rect'] || group.find(function (element) {\n return element.get('className') === 'pre-rect';\n });\n\n if (preRectShape && !preRectShape.destroyed) {\n var preRect = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, preRectShape.attr(), cfg.preRect);\n preRectShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, preRect), {\n x: -width / 2,\n y: -height / 2,\n height: height\n }));\n }\n\n if (logoIconShape && !logoIconShape.destroyed) {\n if (!show && show !== undefined) {\n logoIconShape.remove();\n delete group['shapeMap']['pre-rect'];\n } else {\n var logoW = logoIcon.width,\n h = logoIcon.height,\n x = logoIcon.x,\n y = logoIcon.y,\n logoOffset = logoIcon.offset,\n logoIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(logoIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\"]);\n\n logoIconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, logoIconStyle), {\n x: x || -width / 2 + logoW + logoOffset,\n y: y || -h / 2,\n width: logoW,\n height: h\n }));\n }\n } else if (show) {\n this.drawLogoIcon(cfg, group);\n }\n\n var stateIconShape = group['shapeMap']['rect-state-icon'] || group.find(function (element) {\n return element.get('className') === 'rect-state-icon';\n });\n var currentStateIconAttr = stateIconShape ? stateIconShape.attr() : {};\n var stateIcon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentStateIconAttr, cfg.stateIcon);\n\n if (stateIconShape) {\n if (!stateIcon.show && stateIcon.show !== undefined) {\n stateIconShape.remove();\n delete group['shapeMap']['rect-state-icon'];\n }\n\n var stateW = stateIcon.width,\n h = stateIcon.height,\n x = stateIcon.x,\n y = stateIcon.y,\n stateOffset = stateIcon.offset,\n stateIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(stateIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\"]);\n\n stateIconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, stateIconStyle), {\n x: x || width / 2 - stateW + stateOffset,\n y: y || -h / 2,\n width: stateW,\n height: h\n }));\n } else if (stateIcon.show) {\n this.drawStateIcon(cfg, group);\n }\n\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9tb2RlbFJlY3QuanM/NjFmOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNFO0FBQ3dCO0FBQ25FLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQU07QUFDdkI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix3REFBTTtBQUMxQixPQUFPO0FBQ1A7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHdEQUFNO0FBQzFCLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHVCQUF1QixlQUFlLEdBQUcsZUFBZTtBQUN4RDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsdUJBQXVCLG9EQUFNOztBQUU3QjtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvREFBTTs7QUFFaEM7QUFDQTtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isb0RBQU07O0FBRTVCO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUJBQW1CLHNEQUFHLEdBQUc7QUFDekI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSx5QkFBeUIsc0RBQUcsR0FBRztBQUMvQjtBQUNBO0FBQ0EsWUFBWSwyREFBUTs7QUFFcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsK0JBQStCLHNEQUFHLEdBQUc7QUFDckMsWUFBWSwyREFBUTtBQUNwQjtBQUNBO0FBQ0EseUJBQXlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUM3QztBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0Esb0JBQW9CLHNEQUFHLEdBQUc7QUFDMUIsd0JBQXdCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUM1QztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixvREFBTTs7QUFFbEMsMkJBQTJCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxvQkFBb0Isc0RBQUcsR0FBRzs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG9EQUFNOztBQUVqQywwQkFBMEIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvbW9kZWxSZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgbWl4LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xucmVnaXN0ZXJOb2RlKCdtb2RlbFJlY3QnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogWzE4NSwgNzBdLFxuICAgIHN0eWxlOiB7XG4gICAgICByYWRpdXM6IDUsXG4gICAgICBzdHJva2U6ICcjNjljMGZmJyxcbiAgICAgIGZpbGw6ICcjZmZmZmZmJyxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmxpbmVXaWR0aCxcbiAgICAgIGZpbGxPcGFjaXR5OiAxXG4gICAgfSxcbiAgICAvLyDmlofmnKzmoLflvI/phY3nva5cbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogJyM1OTU5NTknLFxuICAgICAgICBmb250U2l6ZTogMTQsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9LFxuICAgICAgb2Zmc2V0OiAzMCAvLyDot53nprvlt6bkvqfnmoQgb2Zmc2V077yM5rKh5pyJ6K6+572uIHkg6L205LiK56e75Yqo55qE6YWN572uXG5cbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgIGZpbGw6ICcjYmZiZmJmJyxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH0sXG4gICAgICBwYWRkaW5nVG9wOiAwXG4gICAgfSxcbiAgICBwcmVSZWN0OiB7XG4gICAgICBzaG93OiB0cnVlLFxuICAgICAgd2lkdGg6IDQsXG4gICAgICBmaWxsOiAnIzQwYTlmZicsXG4gICAgICByYWRpdXM6IDJcbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IDEwLFxuICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgZmlsbDogJyM3MkNDNEEnLFxuICAgICAgc3Ryb2tlOiAnIzcyQ0M0QSdcbiAgICB9LFxuICAgIC8vIOiKgueCueS4rWljb27phY3nva5cbiAgICBsb2dvSWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiB0cnVlLFxuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9iYXNlbWVudF9wcm9kLzRmODE4OTNjLTE4MDYtNGRlNC1hZmYzLTlhNmIyNjZiYzhhMi5zdmcnLFxuICAgICAgd2lkdGg6IDE2LFxuICAgICAgaGVpZ2h0OiAxNixcbiAgICAgIC8vIOeUqOS6juiwg+aVtOWbvuagh+eahOW3puWPs+S9jee9rlxuICAgICAgb2Zmc2V0OiAwXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK3ooajnpLrnirbmgIHnmoRpY29u6YWN572uXG4gICAgc3RhdGVJY29uOiB7XG4gICAgICAvLyDmmK/lkKbmmL7npLppY29u77yM5YC85Li6IGZhbHNlIOWImeS4jea4suafk2ljb25cbiAgICAgIHNob3c6IHRydWUsXG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jhc2VtZW50X3Byb2QvMzAwYTI1MjMtNjdlMC00Y2JmLTlkNGEtNjdjMDc3YjQwMzk1LnN2ZycsXG4gICAgICB3aWR0aDogMTYsXG4gICAgICBoZWlnaHQ6IDE2LFxuICAgICAgLy8g55So5LqO6LCD5pW05Zu+5qCH55qE5bem5Y+z5L2N572uXG4gICAgICBvZmZzZXQ6IC01XG4gICAgfSxcbiAgICAvLyDov57mjqXngrnvvIzpu5jorqTkuLrlt6blj7NcbiAgICAvLyBhbmNob3JQb2ludHM6IFt7IHg6IDAsIHk6IDAuNSB9LCB7IHg6IDEsIHk6IDAuNSB9XVxuICAgIGFuY2hvclBvaW50czogW1swLCAwLjVdLCBbMSwgMC41XV1cbiAgfSxcbiAgc2hhcGVUeXBlOiAnbW9kZWxSZWN0JyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLnByZVJlY3QsXG4gICAgICAgIHByZVJlY3QgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHNpemVbMV07XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIiksXG4gICAgICBuYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKV0gPSBrZXlTaGFwZTtcblxuICAgIHZhciBwcmVSZWN0U2hvdyA9IHByZVJlY3Quc2hvdyxcbiAgICAgICAgcHJlUmVjdFN0eWxlID0gX19yZXN0KHByZVJlY3QsIFtcInNob3dcIl0pO1xuXG4gICAgaWYgKHByZVJlY3RTaG93KSB7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsncHJlLXJlY3QnXSA9IGdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgfSwgcHJlUmVjdFN0eWxlKSxcbiAgICAgICAgY2xhc3NOYW1lOiAncHJlLXJlY3QnLFxuICAgICAgICBuYW1lOiAncHJlLXJlY3QnLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZHJhd0xvZ29JY29uKGNmZywgZ3JvdXApO1xuICAgIHRoaXMuZHJhd1N0YXRlSWNvbihjZmcsIGdyb3VwKTtcbiAgICB0aGlzLmRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi25qih5Z6L55+p5b2i5bem6L6555qEbG9nb+Wbvuagh1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOaVsOaNrumFjee9rumhuVxuICAgKiBAcGFyYW0ge0dyb3VwfSBncm91cCBHcm91cOWunuS+i1xuICAgKi9cbiAgZHJhd0xvZ29JY29uOiBmdW5jdGlvbiBkcmF3TG9nb0ljb24oY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxvZ29JY29uLFxuICAgICAgICBsb2dvSWNvbiA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcblxuICAgIGlmIChsb2dvSWNvbi5zaG93KSB7XG4gICAgICB2YXIgdyA9IGxvZ29JY29uLndpZHRoLFxuICAgICAgICAgIGggPSBsb2dvSWNvbi5oZWlnaHQsXG4gICAgICAgICAgeCA9IGxvZ29JY29uLngsXG4gICAgICAgICAgeSA9IGxvZ29JY29uLnksXG4gICAgICAgICAgb2Zmc2V0ID0gbG9nb0ljb24ub2Zmc2V0LFxuICAgICAgICAgIHRleHQgPSBsb2dvSWNvbi50ZXh0LFxuICAgICAgICAgIGxvZ29JY29uU3R5bGUgPSBfX3Jlc3QobG9nb0ljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIiwgXCJ0ZXh0XCJdKTtcblxuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3QtbG9nby1pY29uJ10gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgbG9nb0ljb25TdHlsZSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVjdC1sb2dvLWljb24nLFxuICAgICAgICAgIG5hbWU6ICdyZWN0LWxvZ28taWNvbicsXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3QtbG9nby1pY29uJ10gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBsb2dvSWNvblN0eWxlKSwge1xuICAgICAgICAgICAgeDogeCB8fCAtd2lkdGggLyAyICsgdyArIG9mZnNldCxcbiAgICAgICAgICAgIHk6IHkgfHwgLWggLyAyLFxuICAgICAgICAgICAgd2lkdGg6IHcsXG4gICAgICAgICAgICBoZWlnaHQ6IGhcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWN0LWxvZ28taWNvbicsXG4gICAgICAgICAgbmFtZTogJ3JlY3QtbG9nby1pY29uJyxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLbmqKHlnovnn6nlvaLlj7PovrnnmoTnirbmgIHlm77moIdcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgR3JvdXDlrp7kvotcbiAgICovXG4gIGRyYXdTdGF0ZUljb246IGZ1bmN0aW9uIGRyYXdTdGF0ZUljb24oY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLnN0YXRlSWNvbixcbiAgICAgICAgc3RhdGVJY29uID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2E7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuXG4gICAgaWYgKHN0YXRlSWNvbi5zaG93KSB7XG4gICAgICB2YXIgdyA9IHN0YXRlSWNvbi53aWR0aCxcbiAgICAgICAgICBoID0gc3RhdGVJY29uLmhlaWdodCxcbiAgICAgICAgICB4ID0gc3RhdGVJY29uLngsXG4gICAgICAgICAgeSA9IHN0YXRlSWNvbi55LFxuICAgICAgICAgIG9mZnNldCA9IHN0YXRlSWNvbi5vZmZzZXQsXG4gICAgICAgICAgdGV4dCA9IHN0YXRlSWNvbi50ZXh0LFxuICAgICAgICAgIGljb25TdHlsZSA9IF9fcmVzdChzdGF0ZUljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIiwgXCJ0ZXh0XCJdKTtcblxuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3Qtc3RhdGUtaWNvbiddID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgICAgZmlsbDogJyMwMDAnLFxuICAgICAgICAgICAgc3Ryb2tlOiAnIzAwMCcsXG4gICAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICAgICAgICAgIH0sIGljb25TdHlsZSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVjdC1zdGF0ZS1pY29uJyxcbiAgICAgICAgICBuYW1lOiAncmVjdC1zdGF0ZS1pY29uJyxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1zdGF0ZS1pY29uJ10gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBpY29uU3R5bGUpLCB7XG4gICAgICAgICAgICB4OiB4IHx8IHdpZHRoIC8gMiAtIHcgKyBvZmZzZXQsXG4gICAgICAgICAgICB5OiB5IHx8IC1oIC8gMixcbiAgICAgICAgICAgIHdpZHRoOiB3LFxuICAgICAgICAgICAgaGVpZ2h0OiBoXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVjdC1zdGF0ZS1pY29uJyxcbiAgICAgICAgICBuYW1lOiAncmVjdC1zdGF0ZS1pY29uJyxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLboioLngrnkuIrnmoRMaW5rUG9pbnRzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgZGF0YeaVsOaNrumFjee9rumhuVxuICAgKiBAcGFyYW0ge0dyb3VwfSBncm91cCBHcm91cOWunuS+i1xuICAgKi9cbiAgZHJhd0xpbmtQb2ludHM6IGZ1bmN0aW9uIGRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgX2EgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5saW5rUG9pbnRzLFxuICAgICAgICBsaW5rUG9pbnRzID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2E7XG5cbiAgICB2YXIgdG9wID0gbGlua1BvaW50cy50b3AsXG4gICAgICAgIGxlZnQgPSBsaW5rUG9pbnRzLmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gbGlua1BvaW50cy5yaWdodCxcbiAgICAgICAgYm90dG9tID0gbGlua1BvaW50cy5ib3R0b20sXG4gICAgICAgIG1hcmtTaXplID0gbGlua1BvaW50cy5zaXplLFxuICAgICAgICBtYXJrUiA9IGxpbmtQb2ludHMucixcbiAgICAgICAgbWFya1N0eWxlID0gX19yZXN0KGxpbmtQb2ludHMsIFtcInRvcFwiLCBcImxlZnRcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLCBcInNpemVcIiwgXCJyXCJdKTtcblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcblxuICAgIGlmIChsZWZ0KSB7XG4gICAgICAvLyBsZWZ0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1sZWZ0JyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICAvLyByaWdodCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiB3aWR0aCAvIDIsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRvcCkge1xuICAgICAgLy8gdG9wIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXRvcCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXRvcCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChib3R0b20pIHtcbiAgICAgIC8vIGJvdHRvbSBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiBoZWlnaHQgLyAyLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgZHJhd0xhYmVsOiBmdW5jdGlvbiBkcmF3TGFiZWwoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9IHRoaXMuZ2V0T3B0aW9ucyhjZmcpLFxuICAgICAgICBfYiA9IF9hLmxhYmVsQ2ZnLFxuICAgICAgICBsYWJlbENmZyA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iLFxuICAgICAgICBfYyA9IF9hLmxvZ29JY29uLFxuICAgICAgICBsb2dvSWNvbiA9IF9jID09PSB2b2lkIDAgPyB7fSA6IF9jLFxuICAgICAgICBfZCA9IF9hLmRlc2NyaXB0aW9uQ2ZnLFxuICAgICAgICBkZXNjcmlwdGlvbkNmZyA9IF9kID09PSB2b2lkIDAgPyB7fSA6IF9kO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuICAgIHZhciBsYWJlbCA9IG51bGw7XG4gICAgdmFyIHNob3cgPSBsb2dvSWNvbi5zaG93LFxuICAgICAgICB3ID0gbG9nb0ljb24ud2lkdGg7XG4gICAgdmFyIG9mZnNldFggPSAtd2lkdGggLyAyICsgbGFiZWxDZmcub2Zmc2V0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIG9mZnNldFggPSAtd2lkdGggLyAyICsgdyArIGxhYmVsQ2ZnLm9mZnNldDtcbiAgICB9XG5cbiAgICB2YXIgZm9udFN0eWxlID0gbGFiZWxDZmcuc3R5bGU7XG4gICAgdmFyIGRlc2NyaXB0aW9uU3R5bGUgPSBkZXNjcmlwdGlvbkNmZy5zdHlsZSxcbiAgICAgICAgZGVzY3JpcHRpb25QYWRkaW5nVG9wID0gZGVzY3JpcHRpb25DZmcucGFkZGluZ1RvcDtcblxuICAgIGlmIChpc1N0cmluZyhjZmcuZGVzY3JpcHRpb24pKSB7XG4gICAgICBsYWJlbCA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGZvbnRTdHlsZSksIHtcbiAgICAgICAgICB4OiBvZmZzZXRYLFxuICAgICAgICAgIHk6IC01LFxuICAgICAgICAgIHRleHQ6IGNmZy5sYWJlbFxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAndGV4dC1zaGFwZScsXG4gICAgICAgIG5hbWU6ICd0ZXh0LXNoYXBlJyxcbiAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICBsYWJlbFJlbGF0ZWQ6IHRydWVcbiAgICAgIH0pO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3RleHQtc2hhcGUnXSA9IGxhYmVsO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3QtZGVzY3JpcHRpb24nXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGRlc2NyaXB0aW9uU3R5bGUpLCB7XG4gICAgICAgICAgeDogb2Zmc2V0WCxcbiAgICAgICAgICB5OiAxNyArIChkZXNjcmlwdGlvblBhZGRpbmdUb3AgfHwgMCksXG4gICAgICAgICAgdGV4dDogY2ZnLmRlc2NyaXB0aW9uXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdyZWN0LWRlc2NyaXB0aW9uJyxcbiAgICAgICAgbmFtZTogJ3JlY3QtZGVzY3JpcHRpb24nLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgIGxhYmVsUmVsYXRlZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhYmVsID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9udFN0eWxlKSwge1xuICAgICAgICAgIHg6IG9mZnNldFgsXG4gICAgICAgICAgeTogNyxcbiAgICAgICAgICB0ZXh0OiBjZmcubGFiZWxcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ3RleHQtc2hhcGUnLFxuICAgICAgICBuYW1lOiAndGV4dC1zaGFwZScsXG4gICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgbGFiZWxSZWxhdGVkOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWyd0ZXh0LXNoYXBlJ10gPSBsYWJlbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluiKgueCueeahOagt+W8j++8jOS+m+WfuuS6juivpeiKgueCueiHquWumuS5ieaXtuS9v+eUqFxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOiKgueCueaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IOiKgueCueeahOagt+W8j1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuc3R5bGU7XG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDlpoLmnpzorr7nva7kuoZjb2xvcu+8jOWImeimhueblum7mOiupOeahHN0cm9rZeWxnuaAp1xuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHN0eWxlLndpZHRoIHx8IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHN0eWxlLmhlaWdodCB8fCBzaXplWzFdO1xuXG4gICAgdmFyIHN0eWxlcyA9IF9fYXNzaWduKHtcbiAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtKSB7XG4gICAgdmFyIF9hID0gdGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpLFxuICAgICAgICBfYiA9IF9hLnN0eWxlLFxuICAgICAgICBzdHlsZSA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iLFxuICAgICAgICBfYyA9IF9hLmxhYmVsQ2ZnLFxuICAgICAgICBsYWJlbENmZyA9IF9jID09PSB2b2lkIDAgPyB7fSA6IF9jLFxuICAgICAgICBfZCA9IF9hLmRlc2NyaXB0aW9uQ2ZnLFxuICAgICAgICBkZXNjcmlwdGlvbkNmZyA9IF9kID09PSB2b2lkIDAgPyB7fSA6IF9kO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzaXplWzFdO1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIGtleVNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlKSwge1xuICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICB9KSk7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgbG9nb0ljb25TaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddWydyZWN0LWxvZ28taWNvbiddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdyZWN0LWxvZ28taWNvbic7XG4gICAgfSk7XG4gICAgdmFyIGN1cnJlbnRMb2dvSWNvbkF0dHIgPSBsb2dvSWNvblNoYXBlID8gbG9nb0ljb25TaGFwZS5hdHRyKCkgOiB7fTtcbiAgICB2YXIgbG9nb0ljb24gPSBtaXgoe30sIGN1cnJlbnRMb2dvSWNvbkF0dHIsIGNmZy5sb2dvSWNvbik7XG4gICAgdmFyIHcgPSBsb2dvSWNvbi53aWR0aDtcblxuICAgIGlmICh3ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHcgPSB0aGlzLm9wdGlvbnMubG9nb0ljb24ud2lkdGg7XG4gICAgfVxuXG4gICAgdmFyIHNob3cgPSBjZmcubG9nb0ljb24gPyBjZmcubG9nb0ljb24uc2hvdyA6IHVuZGVmaW5lZDtcbiAgICB2YXIgb2Zmc2V0ID0gbGFiZWxDZmcub2Zmc2V0O1xuICAgIHZhciBvZmZzZXRYID0gLXdpZHRoIC8gMiArIHcgKyBvZmZzZXQ7XG5cbiAgICBpZiAoIXNob3cgJiYgc2hvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvZmZzZXRYID0gLXdpZHRoIC8gMiArIG9mZnNldDtcbiAgICB9XG5cbiAgICB2YXIgbGFiZWwgPSBncm91cFsnc2hhcGVNYXAnXVsnbm9kZS1sYWJlbCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdub2RlLWxhYmVsJztcbiAgICB9KTtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1kZXNjcmlwdGlvbiddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdyZWN0LWRlc2NyaXB0aW9uJztcbiAgICB9KTtcblxuICAgIGlmIChjZmcubGFiZWwpIHtcbiAgICAgIGlmICghbGFiZWwpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ25vZGUtbGFiZWwnXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbGFiZWxDZmcuc3R5bGUpLCB7XG4gICAgICAgICAgICB4OiBvZmZzZXRYLFxuICAgICAgICAgICAgeTogY2ZnLmRlc2NyaXB0aW9uID8gLTUgOiA3LFxuICAgICAgICAgICAgdGV4dDogY2ZnLmxhYmVsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnbm9kZS1sYWJlbCcsXG4gICAgICAgICAgbmFtZTogJ25vZGUtbGFiZWwnLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICBsYWJlbFJlbGF0ZWQ6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgY2ZnU3R5bGUgPSBjZmcubGFiZWxDZmcgPyBjZmcubGFiZWxDZmcuc3R5bGUgOiB7fTtcbiAgICAgICAgdmFyIGxhYmVsU3R5bGUgPSBtaXgoe30sIGxhYmVsLmF0dHIoKSwgY2ZnU3R5bGUpO1xuICAgICAgICBpZiAoY2ZnLmxhYmVsKSBsYWJlbFN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgICAgIGxhYmVsU3R5bGUueCA9IG9mZnNldFg7XG4gICAgICAgIGlmIChpc1N0cmluZyhjZmcuZGVzY3JpcHRpb24pKSBsYWJlbFN0eWxlLnkgPSAtNTtcblxuICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbi5yZXNldE1hdHJpeCgpO1xuICAgICAgICAgIGRlc2NyaXB0aW9uLmF0dHIoe1xuICAgICAgICAgICAgeDogb2Zmc2V0WFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGFiZWwucmVzZXRNYXRyaXgoKTtcbiAgICAgICAgbGFiZWwuYXR0cihsYWJlbFN0eWxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNTdHJpbmcoY2ZnLmRlc2NyaXB0aW9uKSkge1xuICAgICAgdmFyIHBhZGRpbmdUb3AgPSBkZXNjcmlwdGlvbkNmZy5wYWRkaW5nVG9wO1xuXG4gICAgICBpZiAoIWRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydyZWN0LWRlc2NyaXB0aW9uJ10gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGRlc2NyaXB0aW9uQ2ZnLnN0eWxlKSwge1xuICAgICAgICAgICAgeDogb2Zmc2V0WCxcbiAgICAgICAgICAgIHk6IDE3ICsgKHBhZGRpbmdUb3AgfHwgMCksXG4gICAgICAgICAgICB0ZXh0OiBjZmcuZGVzY3JpcHRpb25cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWN0LWRlc2NyaXB0aW9uJyxcbiAgICAgICAgICBuYW1lOiAncmVjdC1kZXNjcmlwdGlvbicsXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgIGxhYmVsUmVsYXRlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjZmdTdHlsZSA9IGNmZy5kZXNjcmlwdGlvbkNmZyA/IGNmZy5kZXNjcmlwdGlvbkNmZy5zdHlsZSA6IHt9O1xuICAgICAgICB2YXIgZGVzY3JpcHRpb25TdHlsZSA9IG1peCh7fSwgZGVzY3JpcHRpb24uYXR0cigpLCBjZmdTdHlsZSk7XG4gICAgICAgIGlmIChpc1N0cmluZyhjZmcuZGVzY3JpcHRpb24pKSBkZXNjcmlwdGlvblN0eWxlLnRleHQgPSBjZmcuZGVzY3JpcHRpb247XG4gICAgICAgIGRlc2NyaXB0aW9uU3R5bGUueCA9IG9mZnNldFg7XG4gICAgICAgIGRlc2NyaXB0aW9uLnJlc2V0TWF0cml4KCk7XG4gICAgICAgIGRlc2NyaXB0aW9uLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIGRlc2NyaXB0aW9uU3R5bGUpLCB7XG4gICAgICAgICAgeTogMTcgKyAocGFkZGluZ1RvcCB8fCAwKVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByZVJlY3RTaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddWydwcmUtcmVjdCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdwcmUtcmVjdCc7XG4gICAgfSk7XG5cbiAgICBpZiAocHJlUmVjdFNoYXBlICYmICFwcmVSZWN0U2hhcGUuZGVzdHJveWVkKSB7XG4gICAgICB2YXIgcHJlUmVjdCA9IG1peCh7fSwgcHJlUmVjdFNoYXBlLmF0dHIoKSwgY2ZnLnByZVJlY3QpO1xuICAgICAgcHJlUmVjdFNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHByZVJlY3QpLCB7XG4gICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChsb2dvSWNvblNoYXBlICYmICFsb2dvSWNvblNoYXBlLmRlc3Ryb3llZCkge1xuICAgICAgaWYgKCFzaG93ICYmIHNob3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb2dvSWNvblNoYXBlLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3ByZS1yZWN0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbG9nb1cgPSBsb2dvSWNvbi53aWR0aCxcbiAgICAgICAgICAgIGggPSBsb2dvSWNvbi5oZWlnaHQsXG4gICAgICAgICAgICB4ID0gbG9nb0ljb24ueCxcbiAgICAgICAgICAgIHkgPSBsb2dvSWNvbi55LFxuICAgICAgICAgICAgbG9nb09mZnNldCA9IGxvZ29JY29uLm9mZnNldCxcbiAgICAgICAgICAgIGxvZ29JY29uU3R5bGUgPSBfX3Jlc3QobG9nb0ljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIl0pO1xuXG4gICAgICAgIGxvZ29JY29uU2hhcGUuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbG9nb0ljb25TdHlsZSksIHtcbiAgICAgICAgICB4OiB4IHx8IC13aWR0aCAvIDIgKyBsb2dvVyArIGxvZ29PZmZzZXQsXG4gICAgICAgICAgeTogeSB8fCAtaCAvIDIsXG4gICAgICAgICAgd2lkdGg6IGxvZ29XLFxuICAgICAgICAgIGhlaWdodDogaFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzaG93KSB7XG4gICAgICB0aGlzLmRyYXdMb2dvSWNvbihjZmcsIGdyb3VwKTtcbiAgICB9XG5cbiAgICB2YXIgc3RhdGVJY29uU2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1zdGF0ZS1pY29uJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ3JlY3Qtc3RhdGUtaWNvbic7XG4gICAgfSk7XG4gICAgdmFyIGN1cnJlbnRTdGF0ZUljb25BdHRyID0gc3RhdGVJY29uU2hhcGUgPyBzdGF0ZUljb25TaGFwZS5hdHRyKCkgOiB7fTtcbiAgICB2YXIgc3RhdGVJY29uID0gbWl4KHt9LCBjdXJyZW50U3RhdGVJY29uQXR0ciwgY2ZnLnN0YXRlSWNvbik7XG5cbiAgICBpZiAoc3RhdGVJY29uU2hhcGUpIHtcbiAgICAgIGlmICghc3RhdGVJY29uLnNob3cgJiYgc3RhdGVJY29uLnNob3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzdGF0ZUljb25TaGFwZS5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydyZWN0LXN0YXRlLWljb24nXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0YXRlVyA9IHN0YXRlSWNvbi53aWR0aCxcbiAgICAgICAgICBoID0gc3RhdGVJY29uLmhlaWdodCxcbiAgICAgICAgICB4ID0gc3RhdGVJY29uLngsXG4gICAgICAgICAgeSA9IHN0YXRlSWNvbi55LFxuICAgICAgICAgIHN0YXRlT2Zmc2V0ID0gc3RhdGVJY29uLm9mZnNldCxcbiAgICAgICAgICBzdGF0ZUljb25TdHlsZSA9IF9fcmVzdChzdGF0ZUljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIl0pO1xuXG4gICAgICBzdGF0ZUljb25TaGFwZS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZUljb25TdHlsZSksIHtcbiAgICAgICAgeDogeCB8fCB3aWR0aCAvIDIgLSBzdGF0ZVcgKyBzdGF0ZU9mZnNldCxcbiAgICAgICAgeTogeSB8fCAtaCAvIDIsXG4gICAgICAgIHdpZHRoOiBzdGF0ZVcsXG4gICAgICAgIGhlaWdodDogaFxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGVJY29uLnNob3cpIHtcbiAgICAgIHRoaXMuZHJhd1N0YXRlSWNvbihjZmcsIGdyb3VwKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/modelRect.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/nodes/rect.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g6-element/es/nodes/rect.js ***! \********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n\n\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerNode\"])('rect', {\n // 自定义节点时的配置\n options: {\n size: [100, 30],\n style: {\n radius: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'rect',\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var size = this.getSize(cfg);\n var keyShape = item.get('keyShape');\n\n if (!cfg.size) {\n size[0] = keyShape.attr('width') || defaultStyle.width;\n size[1] = keyShape.attr('height') || defaultStyle.height;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color,\n x: -size[0] / 2,\n y: -size[1] / 2,\n width: size[0],\n height: size[1]\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, false, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9yZWN0LmpzPzZkNTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDUjtBQUNrQztBQUNuRSxrRUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixZQUFZLHdEQUFNO0FBQ2xCLGNBQWMsd0RBQU07QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1QkFBdUIsZUFBZSxHQUFHLGVBQWU7QUFDeEQ7QUFDQSxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLHdEQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvREFBTTs7QUFFMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQyx5Q0FBeUM7QUFDekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xucmVnaXN0ZXJOb2RlKCdyZWN0Jywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IFsxMDAsIDMwXSxcbiAgICBzdHlsZToge1xuICAgICAgcmFkaXVzOiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIC8vIOaWh+acrOagt+W8j+mFjee9rlxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMFxuICAgIH0sXG4gICAgLy8g6L+e5o6l54K577yM6buY6K6k5Li65bem5Y+zXG4gICAgLy8gYW5jaG9yUG9pbnRzOiBbeyB4OiAwLCB5OiAwLjUgfSwgeyB4OiAxLCB5OiAwLjUgfV1cbiAgICBhbmNob3JQb2ludHM6IFtbMCwgMC41XSwgWzEsIDAuNV1dLFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAncmVjdCcsXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIiksXG4gICAgICBuYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKV0gPSBrZXlTaGFwZTtcbiAgICB0aGlzLmRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi26IqC54K55LiK55qETGlua1BvaW50c1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIGRhdGHmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgR3JvdXDlrp7kvotcbiAgICovXG4gIGRyYXdMaW5rUG9pbnRzOiBmdW5jdGlvbiBkcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cyxcbiAgICAgICAgbGlua1BvaW50cyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IGxpbmtQb2ludHMuYm90dG9tLFxuICAgICAgICBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSxcbiAgICAgICAgbWFya1IgPSBsaW5rUG9pbnRzLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChsaW5rUG9pbnRzLCBbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJzaXplXCIsIFwiclwiXSk7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHNpemVbMV07XG5cbiAgICBpZiAobGVmdCkge1xuICAgICAgLy8gbGVmdCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1sZWZ0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyaWdodCkge1xuICAgICAgLy8gcmlnaHQgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0b3ApIHtcbiAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tKSB7XG4gICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1ib3R0b20nXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogaGVpZ2h0IC8gMixcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluiKgueCueeahOagt+W8j++8jOS+m+WfuuS6juivpeiKgueCueiHquWumuS5ieaXtuS9v+eUqFxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOiKgueCueaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IOiKgueCueeahOagt+W8j1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuc3R5bGU7XG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDlpoLmnpzorr7nva7kuoZjb2xvcu+8jOWImeimhueblum7mOiupOeahHN0cm9rZeWxnuaAp1xuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHN0eWxlLndpZHRoIHx8IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHN0eWxlLmhlaWdodCB8fCBzaXplWzFdO1xuXG4gICAgdmFyIHN0eWxlcyA9IF9fYXNzaWduKHtcbiAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTsgLy8g6L+Z6YeM5LiN5LygIGNmZyDlj4LmlbDmmK/lm6DkuLogY2ZnLnN0eWxlIOmcgOimgeacgOWQjuimhuebluagt+W8j1xuXG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IHRoaXMuZ2V0T3B0aW9ucyh7fSkuc3R5bGU7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcblxuICAgIGlmICghY2ZnLnNpemUpIHtcbiAgICAgIHNpemVbMF0gPSBrZXlTaGFwZS5hdHRyKCd3aWR0aCcpIHx8IGRlZmF1bHRTdHlsZS53aWR0aDtcbiAgICAgIHNpemVbMV0gPSBrZXlTaGFwZS5hdHRyKCdoZWlnaHQnKSB8fCBkZWZhdWx0U3R5bGUuaGVpZ2h0O1xuICAgIH0gLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG5cbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvcixcbiAgICAgIHg6IC1zaXplWzBdIC8gMixcbiAgICAgIHk6IC1zaXplWzFdIC8gMixcbiAgICAgIHdpZHRoOiBzaXplWzBdLFxuICAgICAgaGVpZ2h0OiBzaXplWzFdXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlKTtcbiAgICBzdHlsZSA9IG1peChzdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIGZhbHNlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/rect.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/nodes/star.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g6-element/es/nodes/star.js ***! \********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n // 五角星shape\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('star', {\n // 自定义节点时的配置\n options: {\n size: 60,\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'star',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('path', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -w / 2,\n y: -h / 2\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n leftBottom = linkPoints.leftBottom,\n rightBottom = linkPoints.rightBottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"leftBottom\", \"rightBottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var outerR = size[0];\n\n if (right) {\n // right circle\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 0) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 0) / 180 * Math.PI) * outerR;\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right'\n });\n }\n\n if (top) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 1) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 1) / 180 * Math.PI) * outerR; // top circle\n\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top'\n });\n }\n\n if (left) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 2) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 2) / 180 * Math.PI) * outerR; // left circle\n\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left'\n });\n }\n\n if (leftBottom) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 3) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 3) / 180 * Math.PI) * outerR; // left bottom circle\n\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left-bottom',\n name: 'link-point-left-bottom'\n });\n }\n\n if (rightBottom) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 4) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 4) / 180 * Math.PI) * outerR; // left bottom circle\n\n group['shapeMap']['link-point-right-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right-bottom',\n name: 'link-point-right-bottom'\n });\n }\n },\n getPath: function getPath(cfg) {\n var size = this.getSize(cfg);\n var outerR = size[0];\n var defaultInnerR = outerR * 3 / 8;\n var innerR = cfg.innerR || defaultInnerR;\n var path = [];\n\n for (var i = 0; i < 5; i++) {\n var x1 = Math.cos((18 + 72 * i) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * i) / 180 * Math.PI) * outerR;\n var x2 = Math.cos((54 + 72 * i) / 180 * Math.PI) * innerR;\n var y2 = Math.sin((54 + 72 * i) / 180 * Math.PI) * innerR;\n\n if (i === 0) {\n path.push(['M', x1, -y1]);\n } else {\n path.push(['L', x1, -y1]);\n }\n\n path.push(['L', x2, -y2]);\n }\n\n path.push(['Z']);\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖原来默认的 stroke 属性。但 cfg 中但 stroke 属性优先级更高\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var defaultLinkPoints = this.getOptions({}).linkPoints;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markLeftBottom = group['shapeMap']['link-point-left-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-left-bottom';\n });\n var markRightBottom = group['shapeMap']['link-point-left-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-right-bottom';\n });\n var currentLinkPoints = defaultLinkPoints;\n var existLinkPoint = markLeft || markRight || markTop || markLeftBottom || markRightBottom;\n\n if (existLinkPoint) {\n currentLinkPoints = existLinkPoint.attr();\n }\n\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _a = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n leftBottom: undefined,\n rightBottom: undefined\n },\n left = _a.left,\n right = _a.right,\n top = _a.top,\n leftBottom = _a.leftBottom,\n rightBottom = _a.rightBottom;\n\n var size = this.getSize(cfg);\n var outerR = size[0];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n var x = Math.cos((18 + 72 * 0) / 180 * Math.PI) * outerR;\n var y = Math.sin((18 + 72 * 0) / 180 * Math.PI) * outerR;\n\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n } else {\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (right) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 1) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 1) / 180 * Math.PI) * outerR;\n\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n } else {\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (top) {\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 2) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 2) / 180 * Math.PI) * outerR;\n\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (left) {\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 3) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 3) / 180 * Math.PI) * outerR;\n\n if (markLeftBottom) {\n if (!leftBottom && leftBottom !== undefined) {\n markLeftBottom.remove();\n delete group['shapeMap']['link-point-left-bottom'];\n } else {\n markLeftBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (leftBottom) {\n group['shapeMap']['link-point-left-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-left-bottom',\n name: 'link-point-left-bottom',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 4) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 4) / 180 * Math.PI) * outerR;\n\n if (markRightBottom) {\n if (!rightBottom && rightBottom !== undefined) {\n markLeftBottom.remove();\n delete group['shapeMap']['link-point-right-bottom'];\n } else {\n markRightBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (rightBottom) {\n group['shapeMap']['link-point-right-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-right-bottom',\n name: 'link-point-right-bottom',\n isAnchorPoint: true\n });\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9zdGFyLmpzP2M1ZDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7O0FBRWpDLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTs7QUFFaEU7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0U7O0FBRWhFO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTs7QUFFaEU7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUEsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLG9DQUFvQzs7QUFFcEMseUNBQXlDO0FBQ3pDLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AscUJBQXFCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUN6QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxzQkFBc0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzFDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDRCQUE0QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDaEQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNkJBQTZCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNqRDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9zdGFyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgbWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7IC8vIOS6lOinkuaYn3NoYXBlXG5cbnJlZ2lzdGVyTm9kZSgnc3RhcicsIHtcbiAgLy8g6Ieq5a6a5LmJ6IqC54K55pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiA2MCxcbiAgICBzdHlsZToge1xuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMFxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzdGFyJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgaWNvbiA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIildID0ga2V5U2hhcGU7XG4gICAgdmFyIHcgPSBpY29uLndpZHRoLFxuICAgICAgICBoID0gaWNvbi5oZWlnaHQsXG4gICAgICAgIHNob3cgPSBpY29uLnNob3csXG4gICAgICAgIHRleHQgPSBpY29uLnRleHQ7XG5cbiAgICBpZiAoc2hvdykge1xuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBpY29uKSxcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKSxcbiAgICAgICAgICBuYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogLXcgLyAyLFxuICAgICAgICAgICAgeTogLWggLyAyXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi26IqC54K55LiK55qETGlua1BvaW50c1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIGRhdGHmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgR3JvdXDlrp7kvotcbiAgICovXG4gIGRyYXdMaW5rUG9pbnRzOiBmdW5jdGlvbiBkcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cyxcbiAgICAgICAgbGlua1BvaW50cyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGxlZnRCb3R0b20gPSBsaW5rUG9pbnRzLmxlZnRCb3R0b20sXG4gICAgICAgIHJpZ2h0Qm90dG9tID0gbGlua1BvaW50cy5yaWdodEJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwibGVmdEJvdHRvbVwiLCBcInJpZ2h0Qm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgb3V0ZXJSID0gc2l6ZVswXTtcblxuICAgIGlmIChyaWdodCkge1xuICAgICAgLy8gcmlnaHQgY2lyY2xlXG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgeDEgPSBNYXRoLmNvcygoMTggKyA3MiAqIDApIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICB2YXIgeTEgPSBNYXRoLnNpbigoMTggKyA3MiAqIDApIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgeDEgPSBNYXRoLmNvcygoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICB2YXIgeTEgPSBNYXRoLnNpbigoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7IC8vIHRvcCBjaXJjbGVcblxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiB4MSxcbiAgICAgICAgICB5OiAteTEsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogMikgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogMikgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBjaXJjbGVcblxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1sZWZ0J1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxlZnRCb3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBib3R0b20gY2lyY2xlXG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHRCb3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogNCkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogNCkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBib3R0b20gY2lyY2xlXG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbSdcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgZ2V0UGF0aDogZnVuY3Rpb24gZ2V0UGF0aChjZmcpIHtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBvdXRlclIgPSBzaXplWzBdO1xuICAgIHZhciBkZWZhdWx0SW5uZXJSID0gb3V0ZXJSICogMyAvIDg7XG4gICAgdmFyIGlubmVyUiA9IGNmZy5pbm5lclIgfHwgZGVmYXVsdElubmVyUjtcbiAgICB2YXIgcGF0aCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB4MiA9IE1hdGguY29zKCg1NCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIGlubmVyUjtcbiAgICAgIHZhciB5MiA9IE1hdGguc2luKCg1NCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIGlubmVyUjtcblxuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgcGF0aC5wdXNoKFsnTScsIHgxLCAteTFdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhdGgucHVzaChbJ0wnLCB4MSwgLXkxXSk7XG4gICAgICB9XG5cbiAgICAgIHBhdGgucHVzaChbJ0wnLCB4MiwgLXkyXSk7XG4gICAgfVxuXG4gICAgcGF0aC5wdXNoKFsnWiddKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW5Y6f5p2l6buY6K6k55qEIHN0cm9rZSDlsZ7mgKfjgILkvYYgY2ZnIOS4reS9hiBzdHJva2Ug5bGe5oCn5LyY5YWI57qn5pu06auYXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsGxpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgSXRlbeaJgOWcqOeahGdyb3VwXG4gICAqL1xuICB1cGRhdGVMaW5rUG9pbnRzOiBmdW5jdGlvbiB1cGRhdGVMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgZGVmYXVsdExpbmtQb2ludHMgPSB0aGlzLmdldE9wdGlvbnMoe30pLmxpbmtQb2ludHM7XG4gICAgdmFyIG1hcmtMZWZ0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LWxlZnQnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrUmlnaHQgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXJpZ2h0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1RvcCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXRvcCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtMZWZ0Qm90dG9tID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1sZWZ0LWJvdHRvbSc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtSaWdodEJvdHRvbSA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQtYm90dG9tJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ2xpbmstcG9pbnQtcmlnaHQtYm90dG9tJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExpbmtQb2ludHMgPSBkZWZhdWx0TGlua1BvaW50cztcbiAgICB2YXIgZXhpc3RMaW5rUG9pbnQgPSBtYXJrTGVmdCB8fCBtYXJrUmlnaHQgfHwgbWFya1RvcCB8fCBtYXJrTGVmdEJvdHRvbSB8fCBtYXJrUmlnaHRCb3R0b207XG5cbiAgICBpZiAoZXhpc3RMaW5rUG9pbnQpIHtcbiAgICAgIGN1cnJlbnRMaW5rUG9pbnRzID0gZXhpc3RMaW5rUG9pbnQuYXR0cigpO1xuICAgIH1cblxuICAgIHZhciBsaW5rUG9pbnRzID0gbWl4KHt9LCBjdXJyZW50TGlua1BvaW50cywgY2ZnLmxpbmtQb2ludHMpO1xuICAgIHZhciBtYXJrRmlsbCA9IGxpbmtQb2ludHMuZmlsbCxcbiAgICAgICAgbWFya1N0cm9rZSA9IGxpbmtQb2ludHMuc3Ryb2tlLFxuICAgICAgICBib3JkZXJXaWR0aCA9IGxpbmtQb2ludHMubGluZVdpZHRoO1xuICAgIHZhciBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSAvIDI7XG4gICAgaWYgKCFtYXJrU2l6ZSkgbWFya1NpemUgPSBsaW5rUG9pbnRzLnI7XG5cbiAgICB2YXIgX2EgPSBjZmcubGlua1BvaW50cyA/IGNmZy5saW5rUG9pbnRzIDoge1xuICAgICAgbGVmdDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIHRvcDogdW5kZWZpbmVkLFxuICAgICAgbGVmdEJvdHRvbTogdW5kZWZpbmVkLFxuICAgICAgcmlnaHRCb3R0b206IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgICAgIGxlZnQgPSBfYS5sZWZ0LFxuICAgICAgICByaWdodCA9IF9hLnJpZ2h0LFxuICAgICAgICB0b3AgPSBfYS50b3AsXG4gICAgICAgIGxlZnRCb3R0b20gPSBfYS5sZWZ0Qm90dG9tLFxuICAgICAgICByaWdodEJvdHRvbSA9IF9hLnJpZ2h0Qm90dG9tO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgb3V0ZXJSID0gc2l6ZVswXTtcbiAgICB2YXIgc3R5bGVzID0ge1xuICAgICAgcjogbWFya1NpemUsXG4gICAgICBmaWxsOiBtYXJrRmlsbCxcbiAgICAgIHN0cm9rZTogbWFya1N0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogYm9yZGVyV2lkdGhcbiAgICB9O1xuICAgIHZhciB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAwKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHZhciB5ID0gTWF0aC5zaW4oKDE4ICsgNzIgKiAwKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuXG4gICAgaWYgKG1hcmtSaWdodCkge1xuICAgICAgaWYgKCFyaWdodCAmJiByaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtSaWdodC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXJrUmlnaHQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogLXlcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAxKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya1RvcCkge1xuICAgICAgaWYgKCF0b3AgJiYgdG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya1RvcC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFya1RvcC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0b3ApIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAyKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDIpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya0xlZnQpIHtcbiAgICAgIGlmICghbGVmdCAmJiBsZWZ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya0xlZnQucmVtb3ZlKCk7XG4gICAgICAgIGRlbGV0ZSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXJrTGVmdC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsZWZ0KSB7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1sZWZ0JyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgeCA9IE1hdGguY29zKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICB5ID0gTWF0aC5zaW4oKDE4ICsgNzIgKiAzKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuXG4gICAgaWYgKG1hcmtMZWZ0Qm90dG9tKSB7XG4gICAgICBpZiAoIWxlZnRCb3R0b20gJiYgbGVmdEJvdHRvbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtMZWZ0Qm90dG9tLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcmtMZWZ0Qm90dG9tLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxlZnRCb3R0b20pIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiA0KSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDQpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya1JpZ2h0Qm90dG9tKSB7XG4gICAgICBpZiAoIXJpZ2h0Qm90dG9tICYmIHJpZ2h0Qm90dG9tICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya0xlZnRCb3R0b20ucmVtb3ZlKCk7XG4gICAgICAgIGRlbGV0ZSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodC1ib3R0b20nXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcmtSaWdodEJvdHRvbS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyaWdodEJvdHRvbSkge1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/star.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-element/es/nodes/triangle.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g6-element/es/nodes/triangle.js ***! \************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n // 三角形\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('triangle', {\n // 自定义节点时的配置\n options: {\n size: 40,\n direction: 'up',\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize\n },\n offset: 15\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20,\n offset: 6\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'triangle',\n // 文本位置\n labelPosition: 'bottom',\n drawShape: function drawShape(cfg, group) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.icon,\n icon = _b === void 0 ? {} : _b,\n defaultDirection = _a.direction;\n\n var style = this.getShapeStyle(cfg);\n var direction = cfg.direction || defaultDirection;\n var keyShape = group.addShape('path', {\n attrs: style,\n className: \"\".concat(this.type, \"-keyShape\"),\n name: \"\".concat(this.type, \"-keyShape\"),\n draggable: true\n });\n group['shapeMap'][\"\".concat(this.type, \"-keyShape\")] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n offset = icon.offset,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n } else {\n var iconW = -w / 2;\n var iconH = -h / 2;\n\n if (direction === 'up' || direction === 'down') {\n iconH += offset;\n }\n\n if (direction === 'left' || direction === 'right') {\n iconW += offset;\n }\n\n group['shapeMap'][\"\".concat(this.type, \"-icon\")] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: iconW,\n y: iconH\n }, icon),\n className: \"\".concat(this.type, \"-icon\"),\n name: \"\".concat(this.type, \"-icon\"),\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.linkPoints,\n linkPoints = _b === void 0 ? {} : _b,\n defaultDirection = _a.direction;\n\n var direction = cfg.direction || defaultDirection;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var len = size[0];\n\n if (left) {\n // up down left right 四个方向的坐标均不相同\n var leftPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n leftPos = [-r, diffY];\n } else if (direction === 'down') {\n leftPos = [-r, -diffY];\n } else if (direction === 'left') {\n leftPos = [-r, r - diffY];\n }\n\n if (leftPos) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: leftPos[0],\n y: leftPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left'\n });\n }\n }\n\n if (right) {\n // right circle\n // up down left right 四个方向的坐标均不相同\n var rightPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n rightPos = [r, diffY];\n } else if (direction === 'down') {\n rightPos = [r, -diffY];\n } else if (direction === 'right') {\n rightPos = [r, r - diffY];\n }\n\n if (rightPos) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: rightPos[0],\n y: rightPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right'\n });\n }\n }\n\n if (top) {\n // up down left right 四个方向的坐标均不相同\n var topPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n topPos = [r - diffY, -diffY];\n } else if (direction === 'left') {\n topPos = [r, -diffY];\n } else if (direction === 'right') {\n topPos = [-r, -diffY];\n }\n\n if (topPos) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: topPos[0],\n y: topPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top'\n });\n }\n }\n\n if (bottom) {\n // up down left right 四个方向的坐标均不相同\n var bottomPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'down') {\n bottomPos = [-r + diffY, diffY];\n } else if (direction === 'left') {\n bottomPos = [r, diffY];\n } else if (direction === 'right') {\n bottomPos = [-r, diffY];\n }\n\n if (bottomPos) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: bottomPos[0],\n y: bottomPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom'\n });\n }\n }\n },\n getPath: function getPath(cfg) {\n var defaultDirection = (this.mergeStyle || this.getOptions(cfg)).direction;\n var direction = cfg.direction || defaultDirection;\n var size = this.getSize(cfg);\n var len = size[0];\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n var path = [['M', -r, diffY], ['L', 0, -diffY], ['L', r, diffY], ['Z'] // 封闭\n ];\n\n if (direction === 'down') {\n path = [['M', -r, -diffY], ['L', r, -diffY], ['L', 0, diffY], ['Z'] // 封闭\n ];\n } else if (direction === 'left') {\n path = [['M', -r, r - diffY], ['L', r, -r], ['L', r, r], ['Z'] // 封闭\n ];\n } else if (direction === 'right') {\n path = [['M', r, r - diffY], ['L', -r, r], ['L', -r, -r], ['Z'] // 封闭\n ];\n }\n\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var _a = this.getOptions({}),\n defaultLinkPoints = _a.linkPoints,\n defaultDirection = _a.direction;\n\n var direction = cfg.direction || defaultDirection;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markBottom = group['shapeMap']['link-point-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-bottom';\n });\n var currentLinkPoints = defaultLinkPoints;\n var existLinkPoint = markLeft || markRight || markTop || markBottom;\n\n if (existLinkPoint) {\n currentLinkPoints = existLinkPoint.attr();\n }\n\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _b = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined\n },\n left = _b.left,\n right = _b.right,\n top = _b.top,\n bottom = _b.bottom;\n\n var size = this.getSize(cfg);\n var len = size[0];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n var leftPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n leftPos = [-r, diffY];\n } else if (direction === 'down') {\n leftPos = [-r, -diffY];\n } else if (direction === 'left') {\n leftPos = [-r, r - diffY];\n }\n\n if (leftPos) {\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: leftPos[0],\n y: leftPos[1]\n }));\n }\n } else if (left) {\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: leftPos[0],\n y: leftPos[1]\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n }\n\n var rightPos = null;\n\n if (direction === 'up') {\n rightPos = [r, diffY];\n } else if (direction === 'down') {\n rightPos = [r, -diffY];\n } else if (direction === 'right') {\n rightPos = [r, r - diffY];\n }\n\n if (rightPos) {\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n } else {\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: rightPos[0],\n y: rightPos[1]\n }));\n }\n } else if (right) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: rightPos[0],\n y: rightPos[1]\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n }\n\n var topPos = null;\n\n if (direction === 'up') {\n topPos = [r - diffY, -diffY];\n } else if (direction === 'left') {\n topPos = [r, -diffY];\n } else if (direction === 'right') {\n topPos = [-r, -diffY];\n }\n\n if (topPos) {\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n } else {\n // top circle\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: topPos[0],\n y: topPos[1]\n }));\n }\n } else if (top) {\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: topPos[0],\n y: topPos[1]\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n }\n\n var bottomPos = null;\n\n if (direction === 'down') {\n bottomPos = [-r + diffY, diffY];\n } else if (direction === 'left') {\n bottomPos = [r, diffY];\n } else if (direction === 'right') {\n bottomPos = [-r, diffY];\n }\n\n if (bottomPos) {\n if (markBottom) {\n if (!bottom && bottom !== undefined) {\n markBottom.remove();\n delete group['shapeMap']['link-point-bottom'];\n } else {\n markBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: bottomPos[0],\n y: bottomPos[1]\n }));\n }\n } else if (bottom) {\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: bottomPos[0],\n y: bottomPos[1]\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy90cmlhbmdsZS5qcz8zNzdlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQzBCO0FBQ2xDOztBQUVqQyxrRUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0RBQU07O0FBRTFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQSxvQ0FBb0M7O0FBRXBDLHlDQUF5QztBQUN6QyxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCx3QkFBd0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzVDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QseUJBQXlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUM3QztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsdUJBQXVCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUMzQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULDBCQUEwQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDOUM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1lbGVtZW50L2VzL25vZGVzL3RyaWFuZ2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgbWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7IC8vIOS4ieinkuW9olxuXG5yZWdpc3Rlck5vZGUoJ3RyaWFuZ2xlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IDQwLFxuICAgIGRpcmVjdGlvbjogJ3VwJyxcbiAgICBzdHlsZToge1xuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplXG4gICAgICB9LFxuICAgICAgb2Zmc2V0OiAxNVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMCxcbiAgICAgIG9mZnNldDogNlxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICd0cmlhbmdsZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnYm90dG9tJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgX2IgPSBfYS5pY29uLFxuICAgICAgICBpY29uID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWtleVNoYXBlXCIpLFxuICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1rZXlTaGFwZVwiKSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCIta2V5U2hhcGVcIildID0ga2V5U2hhcGU7XG4gICAgdmFyIHcgPSBpY29uLndpZHRoLFxuICAgICAgICBoID0gaWNvbi5oZWlnaHQsXG4gICAgICAgIHNob3cgPSBpY29uLnNob3csXG4gICAgICAgIG9mZnNldCA9IGljb24ub2Zmc2V0LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW1wiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKV0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh0aGlzLnR5cGUsIFwiLWljb25cIiksXG4gICAgICAgICAgbmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBpY29uVyA9IC13IC8gMjtcbiAgICAgICAgdmFyIGljb25IID0gLWggLyAyO1xuXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcgfHwgZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgICBpY29uSCArPSBvZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcgfHwgZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgaWNvblcgKz0gb2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogaWNvblcsXG4gICAgICAgICAgICB5OiBpY29uSFxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQodGhpcy50eXBlLCBcIi1pY29uXCIpLFxuICAgICAgICAgIG5hbWU6IFwiXCIuY29uY2F0KHRoaXMudHlwZSwgXCItaWNvblwiKSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgX2IgPSBfYS5saW5rUG9pbnRzLFxuICAgICAgICBsaW5rUG9pbnRzID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IGxpbmtQb2ludHMuYm90dG9tLFxuICAgICAgICBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSxcbiAgICAgICAgbWFya1IgPSBsaW5rUG9pbnRzLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChsaW5rUG9pbnRzLCBbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJzaXplXCIsIFwiclwiXSk7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBsZW4gPSBzaXplWzBdO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciBsZWZ0UG9zID0gbnVsbDtcbiAgICAgIHZhciBkaWZmWSA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG4gICAgICB2YXIgciA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG5cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgbGVmdFBvcyA9IFstciwgZGlmZlldO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICBsZWZ0UG9zID0gWy1yLCAtZGlmZlldO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xuICAgICAgICBsZWZ0UG9zID0gWy1yLCByIC0gZGlmZlldO1xuICAgICAgfVxuXG4gICAgICBpZiAobGVmdFBvcykge1xuICAgICAgICAvLyBsZWZ0IGNpcmNsZVxuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgICAgeDogbGVmdFBvc1swXSxcbiAgICAgICAgICAgIHk6IGxlZnRQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCdcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICAvLyByaWdodCBjaXJjbGVcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciByaWdodFBvcyA9IG51bGw7XG4gICAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgICAgdmFyIHIgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgIHJpZ2h0UG9zID0gW3IsIGRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgcmlnaHRQb3MgPSBbciwgLWRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgIHJpZ2h0UG9zID0gW3IsIHIgLSBkaWZmWV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodFBvcykge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICAgIHg6IHJpZ2h0UG9zWzBdLFxuICAgICAgICAgICAgeTogcmlnaHRQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0J1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgdG9wUG9zID0gbnVsbDtcbiAgICAgIHZhciBkaWZmWSA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG4gICAgICB2YXIgciA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG5cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgdG9wUG9zID0gW3IgLSBkaWZmWSwgLWRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgdG9wUG9zID0gW3IsIC1kaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICB0b3BQb3MgPSBbLXIsIC1kaWZmWV07XG4gICAgICB9XG5cbiAgICAgIGlmICh0b3BQb3MpIHtcbiAgICAgICAgLy8gdG9wIGNpcmNsZVxuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgICB4OiB0b3BQb3NbMF0sXG4gICAgICAgICAgICB5OiB0b3BQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChib3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciBib3R0b21Qb3MgPSBudWxsO1xuICAgICAgdmFyIGRpZmZZID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcbiAgICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICAgIGJvdHRvbVBvcyA9IFstciArIGRpZmZZLCBkaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIGJvdHRvbVBvcyA9IFtyLCBkaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICBib3R0b21Qb3MgPSBbLXIsIGRpZmZZXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJvdHRvbVBvcykge1xuICAgICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICAgIHg6IGJvdHRvbVBvc1swXSxcbiAgICAgICAgICAgIHk6IGJvdHRvbVBvc1sxXSxcbiAgICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWJvdHRvbSdcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKGNmZykge1xuICAgIHZhciBkZWZhdWx0RGlyZWN0aW9uID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuZGlyZWN0aW9uO1xuICAgIHZhciBkaXJlY3Rpb24gPSBjZmcuZGlyZWN0aW9uIHx8IGRlZmF1bHREaXJlY3Rpb247XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgbGVuID0gc2l6ZVswXTtcbiAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcbiAgICB2YXIgcGF0aCA9IFtbJ00nLCAtciwgZGlmZlldLCBbJ0wnLCAwLCAtZGlmZlldLCBbJ0wnLCByLCBkaWZmWV0sIFsnWiddIC8vIOWwgemXrVxuICAgIF07XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgIHBhdGggPSBbWydNJywgLXIsIC1kaWZmWV0sIFsnTCcsIHIsIC1kaWZmWV0sIFsnTCcsIDAsIGRpZmZZXSwgWydaJ10gLy8g5bCB6ZetXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgIHBhdGggPSBbWydNJywgLXIsIHIgLSBkaWZmWV0sIFsnTCcsIHIsIC1yXSwgWydMJywgciwgcl0sIFsnWiddIC8vIOWwgemXrVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgcGF0aCA9IFtbJ00nLCByLCByIC0gZGlmZlldLCBbJ0wnLCAtciwgcl0sIFsnTCcsIC1yLCAtcl0sIFsnWiddIC8vIOWwgemXrVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsGxpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgSXRlbeaJgOWcqOeahGdyb3VwXG4gICAqL1xuICB1cGRhdGVMaW5rUG9pbnRzOiBmdW5jdGlvbiB1cGRhdGVMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgX2EgPSB0aGlzLmdldE9wdGlvbnMoe30pLFxuICAgICAgICBkZWZhdWx0TGlua1BvaW50cyA9IF9hLmxpbmtQb2ludHMsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuICAgIHZhciBtYXJrTGVmdCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1sZWZ0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1JpZ2h0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtUb3AgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC10b3AnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrQm90dG9tID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExpbmtQb2ludHMgPSBkZWZhdWx0TGlua1BvaW50cztcbiAgICB2YXIgZXhpc3RMaW5rUG9pbnQgPSBtYXJrTGVmdCB8fCBtYXJrUmlnaHQgfHwgbWFya1RvcCB8fCBtYXJrQm90dG9tO1xuXG4gICAgaWYgKGV4aXN0TGlua1BvaW50KSB7XG4gICAgICBjdXJyZW50TGlua1BvaW50cyA9IGV4aXN0TGlua1BvaW50LmF0dHIoKTtcbiAgICB9XG5cbiAgICB2YXIgbGlua1BvaW50cyA9IG1peCh7fSwgY3VycmVudExpbmtQb2ludHMsIGNmZy5saW5rUG9pbnRzKTtcbiAgICB2YXIgbWFya0ZpbGwgPSBsaW5rUG9pbnRzLmZpbGwsXG4gICAgICAgIG1hcmtTdHJva2UgPSBsaW5rUG9pbnRzLnN0cm9rZSxcbiAgICAgICAgYm9yZGVyV2lkdGggPSBsaW5rUG9pbnRzLmxpbmVXaWR0aDtcbiAgICB2YXIgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUgLyAyO1xuICAgIGlmICghbWFya1NpemUpIG1hcmtTaXplID0gbGlua1BvaW50cy5yO1xuXG4gICAgdmFyIF9iID0gY2ZnLmxpbmtQb2ludHMgPyBjZmcubGlua1BvaW50cyA6IHtcbiAgICAgIGxlZnQ6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiB1bmRlZmluZWQsXG4gICAgICB0b3A6IHVuZGVmaW5lZCxcbiAgICAgIGJvdHRvbTogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAgICAgbGVmdCA9IF9iLmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gX2IucmlnaHQsXG4gICAgICAgIHRvcCA9IF9iLnRvcCxcbiAgICAgICAgYm90dG9tID0gX2IuYm90dG9tO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgbGVuID0gc2l6ZVswXTtcbiAgICB2YXIgc3R5bGVzID0ge1xuICAgICAgcjogbWFya1NpemUsXG4gICAgICBmaWxsOiBtYXJrRmlsbCxcbiAgICAgIHN0cm9rZTogbWFya1N0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogYm9yZGVyV2lkdGhcbiAgICB9O1xuICAgIHZhciBsZWZ0UG9zID0gbnVsbDtcbiAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgIGxlZnRQb3MgPSBbLXIsIGRpZmZZXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICBsZWZ0UG9zID0gWy1yLCAtZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgIGxlZnRQb3MgPSBbLXIsIHIgLSBkaWZmWV07XG4gICAgfVxuXG4gICAgaWYgKGxlZnRQb3MpIHtcbiAgICAgIGlmIChtYXJrTGVmdCkge1xuICAgICAgICBpZiAoIWxlZnQgJiYgbGVmdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbWFya0xlZnQucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrTGVmdC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBsZWZ0UG9zWzBdLFxuICAgICAgICAgICAgeTogbGVmdFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsZWZ0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBsZWZ0UG9zWzBdLFxuICAgICAgICAgICAgeTogbGVmdFBvc1sxXVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmlnaHRQb3MgPSBudWxsO1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJykge1xuICAgICAgcmlnaHRQb3MgPSBbciwgZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgIHJpZ2h0UG9zID0gW3IsIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIHJpZ2h0UG9zID0gW3IsIHIgLSBkaWZmWV07XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0UG9zKSB7XG4gICAgICBpZiAobWFya1JpZ2h0KSB7XG4gICAgICAgIGlmICghcmlnaHQgJiYgcmlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtSaWdodC5yZW1vdmUoKTtcbiAgICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrUmlnaHQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogcmlnaHRQb3NbMF0sXG4gICAgICAgICAgICB5OiByaWdodFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyaWdodCkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICAgIHg6IHJpZ2h0UG9zWzBdLFxuICAgICAgICAgICAgeTogcmlnaHRQb3NbMV1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdG9wUG9zID0gbnVsbDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgIHRvcFBvcyA9IFtyIC0gZGlmZlksIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xuICAgICAgdG9wUG9zID0gW3IsIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIHRvcFBvcyA9IFstciwgLWRpZmZZXTtcbiAgICB9XG5cbiAgICBpZiAodG9wUG9zKSB7XG4gICAgICBpZiAobWFya1RvcCkge1xuICAgICAgICBpZiAoIXRvcCAmJiB0b3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtUb3AucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgICAgICBtYXJrVG9wLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICAgIHg6IHRvcFBvc1swXSxcbiAgICAgICAgICAgIHk6IHRvcFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0b3ApIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogdG9wUG9zWzBdLFxuICAgICAgICAgICAgeTogdG9wUG9zWzFdXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXRvcCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYm90dG9tUG9zID0gbnVsbDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgYm90dG9tUG9zID0gWy1yICsgZGlmZlksIGRpZmZZXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICBib3R0b21Qb3MgPSBbciwgZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICBib3R0b21Qb3MgPSBbLXIsIGRpZmZZXTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tUG9zKSB7XG4gICAgICBpZiAobWFya0JvdHRvbSkge1xuICAgICAgICBpZiAoIWJvdHRvbSAmJiBib3R0b20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtCb3R0b20ucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hcmtCb3R0b20uYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogYm90dG9tUG9zWzBdLFxuICAgICAgICAgICAgeTogYm90dG9tUG9zWzFdXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGJvdHRvbSkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1ib3R0b20nXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBib3R0b21Qb3NbMF0sXG4gICAgICAgICAgICB5OiBib3R0b21Qb3NbMV1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-element/es/nodes/triangle.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/activate-relations.js": /*!********************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/activate-relations.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n // 可选 mouseenter || click\n // 选择 click 会监听 touch,mouseenter 不会监听\n trigger: 'mouseenter',\n activeState: 'active',\n inactiveState: 'inactive',\n resetSelected: false,\n shouldUpdate: function shouldUpdate() {\n return true;\n }\n };\n },\n getEvents: function getEvents() {\n if (this.get('trigger') === 'mouseenter') {\n return {\n 'node:mouseenter': 'setAllItemStates',\n 'combo:mouseenter': 'setAllItemStates',\n 'node:mouseleave': 'clearActiveState',\n 'combo:mouseleave': 'clearActiveState'\n };\n }\n\n return {\n 'node:click': 'setAllItemStates',\n 'combo:click': 'setAllItemStates',\n 'canvas:click': 'clearActiveState',\n 'node:touchstart': 'setOnTouchStart',\n 'combo:touchstart': 'setOnTouchStart',\n 'canvas:touchstart': 'clearOnTouchStart'\n };\n },\n setOnTouchStart: function setOnTouchStart(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.setAllItemStates(e);\n },\n clearOnTouchStart: function clearOnTouchStart(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.clearActiveState(e);\n },\n setAllItemStates: function setAllItemStates(e) {\n var item = e.item;\n var graph = this.graph;\n this.item = item;\n\n if (!this.shouldUpdate(e.item, {\n event: e,\n action: 'activate'\n })) {\n return;\n }\n\n var self = this;\n var activeState = this.activeState;\n var inactiveState = this.inactiveState;\n var nodes = graph.getNodes();\n var combos = graph.getCombos();\n var edges = graph.getEdges();\n var vEdges = graph.get('vedges');\n var nodeLength = nodes.length;\n var comboLength = combos.length;\n var edgeLength = edges.length;\n var vEdgeLength = vEdges.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n var hasSelected = node.hasState('selected');\n\n if (self.resetSelected) {\n if (hasSelected) {\n graph.setItemState(node, 'selected', false);\n }\n }\n\n graph.setItemState(node, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(node, inactiveState, true);\n }\n }\n\n for (var i = 0; i < comboLength; i++) {\n var combo = combos[i];\n var hasSelected = combo.hasState('selected');\n\n if (self.resetSelected) {\n if (hasSelected) {\n graph.setItemState(combo, 'selected', false);\n }\n }\n\n graph.setItemState(combo, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(combo, inactiveState, true);\n }\n }\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n graph.setItemState(edge, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(edge, inactiveState, true);\n }\n }\n\n for (var i = 0; i < vEdgeLength; i++) {\n var vEdge = vEdges[i];\n graph.setItemState(vEdge, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(vEdge, inactiveState, true);\n }\n }\n\n if (inactiveState) {\n graph.setItemState(item, inactiveState, false);\n }\n\n graph.setItemState(item, activeState, true);\n var rEdges = item.getEdges();\n var rEdgeLegnth = rEdges.length;\n\n for (var i = 0; i < rEdgeLegnth; i++) {\n var edge = rEdges[i];\n var otherEnd = void 0;\n\n if (edge.getSource() === item) {\n otherEnd = edge.getTarget();\n } else {\n otherEnd = edge.getSource();\n }\n\n if (inactiveState) {\n graph.setItemState(otherEnd, inactiveState, false);\n }\n\n graph.setItemState(otherEnd, activeState, true);\n graph.setItemState(edge, inactiveState, false);\n graph.setItemState(edge, activeState, true);\n edge.toFront();\n }\n\n graph.emit('afteractivaterelations', {\n item: e.item,\n action: 'activate'\n });\n },\n clearActiveState: function clearActiveState(e) {\n var self = this;\n var graph = self.get('graph');\n\n if (!self.shouldUpdate(e.item, {\n event: e,\n action: 'deactivate'\n })) {\n return;\n }\n\n var activeState = this.activeState;\n var inactiveState = this.inactiveState;\n var autoPaint = graph.get('autoPaint');\n graph.setAutoPaint(false);\n var nodes = graph.getNodes() || [];\n var combos = graph.getCombos() || [];\n var edges = graph.getEdges() || [];\n var vEdges = graph.get('vedges') || [];\n var nodeLength = nodes.length;\n var comboLength = combos.length;\n var edgeLength = edges.length;\n var vEdgeLength = vEdges.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n graph.clearItemStates(node, [activeState, inactiveState]);\n }\n\n for (var i = 0; i < comboLength; i++) {\n var combo = combos[i];\n graph.clearItemStates(combo, [activeState, inactiveState]);\n }\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n graph.clearItemStates(edge, [activeState, inactiveState, 'deactivate']);\n }\n\n for (var i = 0; i < vEdgeLength; i++) {\n var vEdge = vEdges[i];\n graph.clearItemStates(vEdge, [activeState, inactiveState, 'deactivate']);\n }\n\n graph.paint();\n graph.setAutoPaint(autoPaint);\n graph.emit('afteractivaterelations', {\n item: e.item || self.get('item'),\n action: 'deactivate'\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvYWN0aXZhdGUtcmVsYXRpb25zLmpzPzU2NGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvYWN0aXZhdGUtcmVsYXRpb25zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyDlj6/pgIkgbW91c2VlbnRlciB8fCBjbGlja1xuICAgICAgLy8g6YCJ5oupIGNsaWNrIOS8muebkeWQrCB0b3VjaO+8jG1vdXNlZW50ZXIg5LiN5Lya55uR5ZCsXG4gICAgICB0cmlnZ2VyOiAnbW91c2VlbnRlcicsXG4gICAgICBhY3RpdmVTdGF0ZTogJ2FjdGl2ZScsXG4gICAgICBpbmFjdGl2ZVN0YXRlOiAnaW5hY3RpdmUnLFxuICAgICAgcmVzZXRTZWxlY3RlZDogZmFsc2UsXG4gICAgICBzaG91bGRVcGRhdGU6IGZ1bmN0aW9uIHNob3VsZFVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgaWYgKHRoaXMuZ2V0KCd0cmlnZ2VyJykgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ25vZGU6bW91c2VlbnRlcic6ICdzZXRBbGxJdGVtU3RhdGVzJyxcbiAgICAgICAgJ2NvbWJvOm1vdXNlZW50ZXInOiAnc2V0QWxsSXRlbVN0YXRlcycsXG4gICAgICAgICdub2RlOm1vdXNlbGVhdmUnOiAnY2xlYXJBY3RpdmVTdGF0ZScsXG4gICAgICAgICdjb21ibzptb3VzZWxlYXZlJzogJ2NsZWFyQWN0aXZlU3RhdGUnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAnbm9kZTpjbGljayc6ICdzZXRBbGxJdGVtU3RhdGVzJyxcbiAgICAgICdjb21ibzpjbGljayc6ICdzZXRBbGxJdGVtU3RhdGVzJyxcbiAgICAgICdjYW52YXM6Y2xpY2snOiAnY2xlYXJBY3RpdmVTdGF0ZScsXG4gICAgICAnbm9kZTp0b3VjaHN0YXJ0JzogJ3NldE9uVG91Y2hTdGFydCcsXG4gICAgICAnY29tYm86dG91Y2hzdGFydCc6ICdzZXRPblRvdWNoU3RhcnQnLFxuICAgICAgJ2NhbnZhczp0b3VjaHN0YXJ0JzogJ2NsZWFyT25Ub3VjaFN0YXJ0J1xuICAgIH07XG4gIH0sXG4gIHNldE9uVG91Y2hTdGFydDogZnVuY3Rpb24gc2V0T25Ub3VjaFN0YXJ0KGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIHRvdWNoZXMgPSBlLm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgICAgdmFyIGV2ZW50MiA9IHRvdWNoZXNbMV07XG5cbiAgICAgIGlmIChldmVudDEgJiYgZXZlbnQyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignVG91Y2ggb3JpZ2luYWwgZXZlbnQgbm90IGV4aXN0IScpO1xuICAgIH1cblxuICAgIHNlbGYuc2V0QWxsSXRlbVN0YXRlcyhlKTtcbiAgfSxcbiAgY2xlYXJPblRvdWNoU3RhcnQ6IGZ1bmN0aW9uIGNsZWFyT25Ub3VjaFN0YXJ0KGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIHRvdWNoZXMgPSBlLm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgICAgdmFyIGV2ZW50MiA9IHRvdWNoZXNbMV07XG5cbiAgICAgIGlmIChldmVudDEgJiYgZXZlbnQyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignVG91Y2ggb3JpZ2luYWwgZXZlbnQgbm90IGV4aXN0IScpO1xuICAgIH1cblxuICAgIHNlbGYuY2xlYXJBY3RpdmVTdGF0ZShlKTtcbiAgfSxcbiAgc2V0QWxsSXRlbVN0YXRlczogZnVuY3Rpb24gc2V0QWxsSXRlbVN0YXRlcyhlKSB7XG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB0aGlzLml0ZW0gPSBpdGVtO1xuXG4gICAgaWYgKCF0aGlzLnNob3VsZFVwZGF0ZShlLml0ZW0sIHtcbiAgICAgIGV2ZW50OiBlLFxuICAgICAgYWN0aW9uOiAnYWN0aXZhdGUnXG4gICAgfSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGFjdGl2ZVN0YXRlID0gdGhpcy5hY3RpdmVTdGF0ZTtcbiAgICB2YXIgaW5hY3RpdmVTdGF0ZSA9IHRoaXMuaW5hY3RpdmVTdGF0ZTtcbiAgICB2YXIgbm9kZXMgPSBncmFwaC5nZXROb2RlcygpO1xuICAgIHZhciBjb21ib3MgPSBncmFwaC5nZXRDb21ib3MoKTtcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5nZXRFZGdlcygpO1xuICAgIHZhciB2RWRnZXMgPSBncmFwaC5nZXQoJ3ZlZGdlcycpO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuICAgIHZhciBjb21ib0xlbmd0aCA9IGNvbWJvcy5sZW5ndGg7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlcy5sZW5ndGg7XG4gICAgdmFyIHZFZGdlTGVuZ3RoID0gdkVkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgdmFyIGhhc1NlbGVjdGVkID0gbm9kZS5oYXNTdGF0ZSgnc2VsZWN0ZWQnKTtcblxuICAgICAgaWYgKHNlbGYucmVzZXRTZWxlY3RlZCkge1xuICAgICAgICBpZiAoaGFzU2VsZWN0ZWQpIHtcbiAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUobm9kZSwgJ3NlbGVjdGVkJywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCBhY3RpdmVTdGF0ZSwgZmFsc2UpO1xuXG4gICAgICBpZiAoaW5hY3RpdmVTdGF0ZSkge1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUobm9kZSwgaW5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21ib0xlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY29tYm8gPSBjb21ib3NbaV07XG4gICAgICB2YXIgaGFzU2VsZWN0ZWQgPSBjb21iby5oYXNTdGF0ZSgnc2VsZWN0ZWQnKTtcblxuICAgICAgaWYgKHNlbGYucmVzZXRTZWxlY3RlZCkge1xuICAgICAgICBpZiAoaGFzU2VsZWN0ZWQpIHtcbiAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoY29tYm8sICdzZWxlY3RlZCcsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoY29tYm8sIGFjdGl2ZVN0YXRlLCBmYWxzZSk7XG5cbiAgICAgIGlmIChpbmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgaW5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgYWN0aXZlU3RhdGUsIGZhbHNlKTtcblxuICAgICAgaWYgKGluYWN0aXZlU3RhdGUpIHtcbiAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGVkZ2UsIGluYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdkVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZFZGdlID0gdkVkZ2VzW2ldO1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKHZFZGdlLCBhY3RpdmVTdGF0ZSwgZmFsc2UpO1xuXG4gICAgICBpZiAoaW5hY3RpdmVTdGF0ZSkge1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUodkVkZ2UsIGluYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbmFjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgaW5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCBhY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgdmFyIHJFZGdlcyA9IGl0ZW0uZ2V0RWRnZXMoKTtcbiAgICB2YXIgckVkZ2VMZWdudGggPSByRWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByRWRnZUxlZ250aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IHJFZGdlc1tpXTtcbiAgICAgIHZhciBvdGhlckVuZCA9IHZvaWQgMDtcblxuICAgICAgaWYgKGVkZ2UuZ2V0U291cmNlKCkgPT09IGl0ZW0pIHtcbiAgICAgICAgb3RoZXJFbmQgPSBlZGdlLmdldFRhcmdldCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3RoZXJFbmQgPSBlZGdlLmdldFNvdXJjZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5hY3RpdmVTdGF0ZSkge1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUob3RoZXJFbmQsIGluYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKG90aGVyRW5kLCBhY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgaW5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGVkZ2UsIGFjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICAgIGVkZ2UudG9Gcm9udCgpO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ2FmdGVyYWN0aXZhdGVyZWxhdGlvbnMnLCB7XG4gICAgICBpdGVtOiBlLml0ZW0sXG4gICAgICBhY3Rpb246ICdhY3RpdmF0ZSdcbiAgICB9KTtcbiAgfSxcbiAgY2xlYXJBY3RpdmVTdGF0ZTogZnVuY3Rpb24gY2xlYXJBY3RpdmVTdGF0ZShlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ2V0KCdncmFwaCcpO1xuXG4gICAgaWYgKCFzZWxmLnNob3VsZFVwZGF0ZShlLml0ZW0sIHtcbiAgICAgIGV2ZW50OiBlLFxuICAgICAgYWN0aW9uOiAnZGVhY3RpdmF0ZSdcbiAgICB9KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBhY3RpdmVTdGF0ZSA9IHRoaXMuYWN0aXZlU3RhdGU7XG4gICAgdmFyIGluYWN0aXZlU3RhdGUgPSB0aGlzLmluYWN0aXZlU3RhdGU7XG4gICAgdmFyIGF1dG9QYWludCA9IGdyYXBoLmdldCgnYXV0b1BhaW50Jyk7XG4gICAgZ3JhcGguc2V0QXV0b1BhaW50KGZhbHNlKTtcbiAgICB2YXIgbm9kZXMgPSBncmFwaC5nZXROb2RlcygpIHx8IFtdO1xuICAgIHZhciBjb21ib3MgPSBncmFwaC5nZXRDb21ib3MoKSB8fCBbXTtcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5nZXRFZGdlcygpIHx8IFtdO1xuICAgIHZhciB2RWRnZXMgPSBncmFwaC5nZXQoJ3ZlZGdlcycpIHx8IFtdO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuICAgIHZhciBjb21ib0xlbmd0aCA9IGNvbWJvcy5sZW5ndGg7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlcy5sZW5ndGg7XG4gICAgdmFyIHZFZGdlTGVuZ3RoID0gdkVkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgZ3JhcGguY2xlYXJJdGVtU3RhdGVzKG5vZGUsIFthY3RpdmVTdGF0ZSwgaW5hY3RpdmVTdGF0ZV0pO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tYm9MZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNvbWJvID0gY29tYm9zW2ldO1xuICAgICAgZ3JhcGguY2xlYXJJdGVtU3RhdGVzKGNvbWJvLCBbYWN0aXZlU3RhdGUsIGluYWN0aXZlU3RhdGVdKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tpXTtcbiAgICAgIGdyYXBoLmNsZWFySXRlbVN0YXRlcyhlZGdlLCBbYWN0aXZlU3RhdGUsIGluYWN0aXZlU3RhdGUsICdkZWFjdGl2YXRlJ10pO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdkVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZFZGdlID0gdkVkZ2VzW2ldO1xuICAgICAgZ3JhcGguY2xlYXJJdGVtU3RhdGVzKHZFZGdlLCBbYWN0aXZlU3RhdGUsIGluYWN0aXZlU3RhdGUsICdkZWFjdGl2YXRlJ10pO1xuICAgIH1cblxuICAgIGdyYXBoLnBhaW50KCk7XG4gICAgZ3JhcGguc2V0QXV0b1BhaW50KGF1dG9QYWludCk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJhY3RpdmF0ZXJlbGF0aW9ucycsIHtcbiAgICAgIGl0ZW06IGUuaXRlbSB8fCBzZWxmLmdldCgnaXRlbScpLFxuICAgICAgYWN0aW9uOiAnZGVhY3RpdmF0ZSdcbiAgICB9KTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/activate-relations.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/brush-select.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/brush-select.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar min = Math.min,\n max = Math.max,\n abs = Math.abs;\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['drag', 'shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n brushStyle: {\n fill: '#EEF6FF',\n fillOpacity: 0.4,\n stroke: '#DDEEFE',\n lineWidth: 1\n },\n onSelect: function onSelect() {},\n onDeselect: function onDeselect() {},\n selectedState: 'selected',\n trigger: DEFAULT_TRIGGER,\n includeEdges: true,\n selectedEdges: [],\n selectedNodes: []\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior brush-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (this.trigger === 'drag') {\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'clearStates'\n };\n }\n\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'clearStates',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onMouseDown: function onMouseDown(e) {\n // 按在node上面拖动时候不应该是框选\n var item = e.item;\n var brush = this.brush;\n\n if (item) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n if (this.selectedNodes && this.selectedNodes.length !== 0) {\n this.clearStates();\n }\n\n if (!brush) {\n brush = this.createBrush();\n }\n\n this.originPoint = {\n x: e.canvasX,\n y: e.canvasY\n };\n brush.attr({\n width: 0,\n height: 0\n });\n brush.show();\n this.dragging = true;\n },\n onMouseMove: function onMouseMove(e) {\n if (!this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.updateBrush(e);\n },\n onMouseUp: function onMouseUp(e) {\n var graph = this.graph; // TODO: 触发了 canvas:click 导致 clearStates\n\n if (!this.brush && !this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.brush.remove(true); // remove and destroy\n\n this.brush = null;\n this.getSelectedNodes(e);\n this.dragging = false;\n },\n clearStates: function clearStates() {\n var _a = this,\n graph = _a.graph,\n selectedState = _a.selectedState;\n\n var nodes = graph.findAllByState('node', selectedState);\n var edges = graph.findAllByState('edge', selectedState);\n nodes.forEach(function (node) {\n return graph.setItemState(node, selectedState, false);\n });\n edges.forEach(function (edge) {\n return graph.setItemState(edge, selectedState, false);\n });\n this.selectedNodes = [];\n this.selectedEdges = [];\n\n if (this.onDeselect) {\n this.onDeselect(this.selectedNodes, this.selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: []\n },\n select: false\n });\n },\n getSelectedNodes: function getSelectedNodes(e) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n originPoint = _a.originPoint,\n shouldUpdate = _a.shouldUpdate;\n\n var state = this.selectedState;\n var p1 = {\n x: e.x,\n y: e.y\n };\n var p2 = graph.getPointByCanvas(originPoint.x, originPoint.y);\n var left = min(p1.x, p2.x);\n var right = max(p1.x, p2.x);\n var top = min(p1.y, p2.y);\n var bottom = max(p1.y, p2.y);\n var selectedNodes = [];\n var selectedIds = [];\n graph.getNodes().forEach(function (node) {\n if (!node.isVisible()) return; // 隐藏节点不能被选中\n\n var bbox = node.getBBox();\n\n if (bbox.centerX >= left && bbox.centerX <= right && bbox.centerY >= top && bbox.centerY <= bottom) {\n if (shouldUpdate(node, 'select')) {\n selectedNodes.push(node);\n var model = node.getModel();\n selectedIds.push(model.id);\n graph.setItemState(node, state, true);\n }\n }\n });\n var selectedEdges = [];\n\n if (this.includeEdges) {\n // 选中边,边的source和target都在选中的节点中时才选中\n selectedNodes.forEach(function (node) {\n var edges = node.getOutEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return; // 隐藏边不能够被选中\n\n var model = edge.getModel();\n var source = model.source,\n target = model.target;\n\n if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate(edge, 'select')) {\n selectedEdges.push(edge);\n graph.setItemState(edge, _this.selectedState, true);\n }\n });\n });\n }\n\n this.selectedEdges = selectedEdges;\n this.selectedNodes = selectedNodes;\n\n if (this.onSelect) {\n this.onSelect(selectedNodes, selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges\n },\n select: true\n });\n },\n createBrush: function createBrush() {\n var self = this;\n var brush = self.graph.get('canvas').addShape('rect', {\n attrs: self.brushStyle,\n capture: false,\n name: 'brush-shape'\n });\n this.brush = brush;\n this.delegate = brush;\n return brush;\n },\n updateBrush: function updateBrush(e) {\n var originPoint = this.originPoint;\n this.brush.attr({\n width: abs(e.canvasX - originPoint.x),\n height: abs(e.canvasY - originPoint.y),\n x: min(e.canvasX, originPoint.x),\n y: min(e.canvasY, originPoint.y)\n });\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n var triggerLowerCase = this.trigger.toLowerCase();\n var codeLowerCase = code.toLowerCase(); // 按住 control 键时,允许用户设置 trigger 为 ctrl\n\n if (codeLowerCase === triggerLowerCase || codeLowerCase === 'control' && triggerLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && triggerLowerCase === 'control') {\n this.keydown = true;\n } else {\n this.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.brush) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的brush\n this.brush.remove(true);\n this.brush = null;\n this.dragging = false;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvYnJ1c2gtc2VsZWN0LmpzPzc2MzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxzQ0FBc0M7QUFDdEMsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvYnJ1c2gtc2VsZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG1pbiA9IE1hdGgubWluLFxuICAgIG1heCA9IE1hdGgubWF4LFxuICAgIGFicyA9IE1hdGguYWJzO1xudmFyIERFRkFVTFRfVFJJR0dFUiA9ICdzaGlmdCc7XG52YXIgQUxMT1dfRVZFTlRTID0gWydkcmFnJywgJ3NoaWZ0JywgJ2N0cmwnLCAnYWx0JywgJ2NvbnRyb2wnXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnJ1c2hTdHlsZToge1xuICAgICAgICBmaWxsOiAnI0VFRjZGRicsXG4gICAgICAgIGZpbGxPcGFjaXR5OiAwLjQsXG4gICAgICAgIHN0cm9rZTogJyNEREVFRkUnLFxuICAgICAgICBsaW5lV2lkdGg6IDFcbiAgICAgIH0sXG4gICAgICBvblNlbGVjdDogZnVuY3Rpb24gb25TZWxlY3QoKSB7fSxcbiAgICAgIG9uRGVzZWxlY3Q6IGZ1bmN0aW9uIG9uRGVzZWxlY3QoKSB7fSxcbiAgICAgIHNlbGVjdGVkU3RhdGU6ICdzZWxlY3RlZCcsXG4gICAgICB0cmlnZ2VyOiBERUZBVUxUX1RSSUdHRVIsXG4gICAgICBpbmNsdWRlRWRnZXM6IHRydWUsXG4gICAgICBzZWxlY3RlZEVkZ2VzOiBbXSxcbiAgICAgIHNlbGVjdGVkTm9kZXM6IFtdXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgLy8g5qOA5rWL6L6T5YWl5piv5ZCm5ZCI5rOVXG4gICAgaWYgKCEoQUxMT1dfRVZFTlRTLmluZGV4T2YodGhpcy50cmlnZ2VyLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB7XG4gICAgICB0aGlzLnRyaWdnZXIgPSBERUZBVUxUX1RSSUdHRVI7XG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBicnVzaC1zZWxlY3Qg55qEIHRyaWdnZXIg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdkcmFnJ+OAgSdzaGlmdCfjgIEnY3RybCcg5oiWICdhbHQnXCIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIgPT09ICdkcmFnJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZHJhZ3N0YXJ0OiAnb25Nb3VzZURvd24nLFxuICAgICAgICBkcmFnOiAnb25Nb3VzZU1vdmUnLFxuICAgICAgICBkcmFnZW5kOiAnb25Nb3VzZVVwJyxcbiAgICAgICAgJ2NhbnZhczpjbGljayc6ICdjbGVhclN0YXRlcydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRyYWdzdGFydDogJ29uTW91c2VEb3duJyxcbiAgICAgIGRyYWc6ICdvbk1vdXNlTW92ZScsXG4gICAgICBkcmFnZW5kOiAnb25Nb3VzZVVwJyxcbiAgICAgICdjYW52YXM6Y2xpY2snOiAnY2xlYXJTdGF0ZXMnLFxuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGtleWRvd246ICdvbktleURvd24nXG4gICAgfTtcbiAgfSxcbiAgb25Nb3VzZURvd246IGZ1bmN0aW9uIG9uTW91c2VEb3duKGUpIHtcbiAgICAvLyDmjInlnKhub2Rl5LiK6Z2i5ouW5Yqo5pe25YCZ5LiN5bqU6K+l5piv5qGG6YCJXG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07XG4gICAgdmFyIGJydXNoID0gdGhpcy5icnVzaDtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciAhPT0gJ2RyYWcnICYmICF0aGlzLmtleWRvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzICYmIHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGggIT09IDApIHtcbiAgICAgIHRoaXMuY2xlYXJTdGF0ZXMoKTtcbiAgICB9XG5cbiAgICBpZiAoIWJydXNoKSB7XG4gICAgICBicnVzaCA9IHRoaXMuY3JlYXRlQnJ1c2goKTtcbiAgICB9XG5cbiAgICB0aGlzLm9yaWdpblBvaW50ID0ge1xuICAgICAgeDogZS5jYW52YXNYLFxuICAgICAgeTogZS5jYW52YXNZXG4gICAgfTtcbiAgICBicnVzaC5hdHRyKHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfSk7XG4gICAgYnJ1c2guc2hvdygpO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICB9LFxuICBvbk1vdXNlTW92ZTogZnVuY3Rpb24gb25Nb3VzZU1vdmUoZSkge1xuICAgIGlmICghdGhpcy5kcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIgIT09ICdkcmFnJyAmJiAhdGhpcy5rZXlkb3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVCcnVzaChlKTtcbiAgfSxcbiAgb25Nb3VzZVVwOiBmdW5jdGlvbiBvbk1vdXNlVXAoZSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7IC8vIFRPRE86IOinpuWPkeS6hiBjYW52YXM6Y2xpY2sg5a+86Ie0IGNsZWFyU3RhdGVzXG5cbiAgICBpZiAoIXRoaXMuYnJ1c2ggJiYgIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyICE9PSAnZHJhZycgJiYgIXRoaXMua2V5ZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnJ1c2gucmVtb3ZlKHRydWUpOyAvLyByZW1vdmUgYW5kIGRlc3Ryb3lcblxuICAgIHRoaXMuYnJ1c2ggPSBudWxsO1xuICAgIHRoaXMuZ2V0U2VsZWN0ZWROb2RlcyhlKTtcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gIH0sXG4gIGNsZWFyU3RhdGVzOiBmdW5jdGlvbiBjbGVhclN0YXRlcygpIHtcbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICBzZWxlY3RlZFN0YXRlID0gX2Euc2VsZWN0ZWRTdGF0ZTtcblxuICAgIHZhciBub2RlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdub2RlJywgc2VsZWN0ZWRTdGF0ZSk7XG4gICAgdmFyIGVkZ2VzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ2VkZ2UnLCBzZWxlY3RlZFN0YXRlKTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gZ3JhcGguc2V0SXRlbVN0YXRlKG5vZGUsIHNlbGVjdGVkU3RhdGUsIGZhbHNlKTtcbiAgICB9KTtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZ3JhcGguc2V0SXRlbVN0YXRlKGVkZ2UsIHNlbGVjdGVkU3RhdGUsIGZhbHNlKTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRWRnZXMgPSBbXTtcblxuICAgIGlmICh0aGlzLm9uRGVzZWxlY3QpIHtcbiAgICAgIHRoaXMub25EZXNlbGVjdCh0aGlzLnNlbGVjdGVkTm9kZXMsIHRoaXMuc2VsZWN0ZWRFZGdlcyk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnbm9kZXNlbGVjdGNoYW5nZScsIHtcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICBlZGdlczogW11cbiAgICAgIH0sXG4gICAgICBzZWxlY3Q6IGZhbHNlXG4gICAgfSk7XG4gIH0sXG4gIGdldFNlbGVjdGVkTm9kZXM6IGZ1bmN0aW9uIGdldFNlbGVjdGVkTm9kZXMoZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICBvcmlnaW5Qb2ludCA9IF9hLm9yaWdpblBvaW50LFxuICAgICAgICBzaG91bGRVcGRhdGUgPSBfYS5zaG91bGRVcGRhdGU7XG5cbiAgICB2YXIgc3RhdGUgPSB0aGlzLnNlbGVjdGVkU3RhdGU7XG4gICAgdmFyIHAxID0ge1xuICAgICAgeDogZS54LFxuICAgICAgeTogZS55XG4gICAgfTtcbiAgICB2YXIgcDIgPSBncmFwaC5nZXRQb2ludEJ5Q2FudmFzKG9yaWdpblBvaW50LngsIG9yaWdpblBvaW50LnkpO1xuICAgIHZhciBsZWZ0ID0gbWluKHAxLngsIHAyLngpO1xuICAgIHZhciByaWdodCA9IG1heChwMS54LCBwMi54KTtcbiAgICB2YXIgdG9wID0gbWluKHAxLnksIHAyLnkpO1xuICAgIHZhciBib3R0b20gPSBtYXgocDEueSwgcDIueSk7XG4gICAgdmFyIHNlbGVjdGVkTm9kZXMgPSBbXTtcbiAgICB2YXIgc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICBncmFwaC5nZXROb2RlcygpLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIGlmICghbm9kZS5pc1Zpc2libGUoKSkgcmV0dXJuOyAvLyDpmpDol4/oioLngrnkuI3og73ooqvpgInkuK1cblxuICAgICAgdmFyIGJib3ggPSBub2RlLmdldEJCb3goKTtcblxuICAgICAgaWYgKGJib3guY2VudGVyWCA+PSBsZWZ0ICYmIGJib3guY2VudGVyWCA8PSByaWdodCAmJiBiYm94LmNlbnRlclkgPj0gdG9wICYmIGJib3guY2VudGVyWSA8PSBib3R0b20pIHtcbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZShub2RlLCAnc2VsZWN0JykpIHtcbiAgICAgICAgICBzZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgICAgICAgIHNlbGVjdGVkSWRzLnB1c2gobW9kZWwuaWQpO1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMuaW5jbHVkZUVkZ2VzKSB7XG4gICAgICAvLyDpgInkuK3ovrnvvIzovrnnmoRzb3VyY2Xlkox0YXJnZXTpg73lnKjpgInkuK3nmoToioLngrnkuK3ml7bmiY3pgInkuK1cbiAgICAgIHNlbGVjdGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgZWRnZXMgPSBub2RlLmdldE91dEVkZ2VzKCk7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICBpZiAoIWVkZ2UuaXNWaXNpYmxlKCkpIHJldHVybjsgLy8g6ZqQ6JeP6L655LiN6IO95aSf6KKr6YCJ5LitXG5cbiAgICAgICAgICB2YXIgbW9kZWwgPSBlZGdlLmdldE1vZGVsKCk7XG4gICAgICAgICAgdmFyIHNvdXJjZSA9IG1vZGVsLnNvdXJjZSxcbiAgICAgICAgICAgICAgdGFyZ2V0ID0gbW9kZWwudGFyZ2V0O1xuXG4gICAgICAgICAgaWYgKHNlbGVjdGVkSWRzLmluY2x1ZGVzKHNvdXJjZSkgJiYgc2VsZWN0ZWRJZHMuaW5jbHVkZXModGFyZ2V0KSAmJiBzaG91bGRVcGRhdGUoZWRnZSwgJ3NlbGVjdCcpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEVkZ2VzLnB1c2goZWRnZSk7XG4gICAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgX3RoaXMuc2VsZWN0ZWRTdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRFZGdlcyA9IHNlbGVjdGVkRWRnZXM7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gc2VsZWN0ZWROb2RlcztcblxuICAgIGlmICh0aGlzLm9uU2VsZWN0KSB7XG4gICAgICB0aGlzLm9uU2VsZWN0KHNlbGVjdGVkTm9kZXMsIHNlbGVjdGVkRWRnZXMpO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ25vZGVzZWxlY3RjaGFuZ2UnLCB7XG4gICAgICBzZWxlY3RlZEl0ZW1zOiB7XG4gICAgICAgIG5vZGVzOiBzZWxlY3RlZE5vZGVzLFxuICAgICAgICBlZGdlczogc2VsZWN0ZWRFZGdlc1xuICAgICAgfSxcbiAgICAgIHNlbGVjdDogdHJ1ZVxuICAgIH0pO1xuICB9LFxuICBjcmVhdGVCcnVzaDogZnVuY3Rpb24gY3JlYXRlQnJ1c2goKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBicnVzaCA9IHNlbGYuZ3JhcGguZ2V0KCdjYW52YXMnKS5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIGF0dHJzOiBzZWxmLmJydXNoU3R5bGUsXG4gICAgICBjYXB0dXJlOiBmYWxzZSxcbiAgICAgIG5hbWU6ICdicnVzaC1zaGFwZSdcbiAgICB9KTtcbiAgICB0aGlzLmJydXNoID0gYnJ1c2g7XG4gICAgdGhpcy5kZWxlZ2F0ZSA9IGJydXNoO1xuICAgIHJldHVybiBicnVzaDtcbiAgfSxcbiAgdXBkYXRlQnJ1c2g6IGZ1bmN0aW9uIHVwZGF0ZUJydXNoKGUpIHtcbiAgICB2YXIgb3JpZ2luUG9pbnQgPSB0aGlzLm9yaWdpblBvaW50O1xuICAgIHRoaXMuYnJ1c2guYXR0cih7XG4gICAgICB3aWR0aDogYWJzKGUuY2FudmFzWCAtIG9yaWdpblBvaW50LngpLFxuICAgICAgaGVpZ2h0OiBhYnMoZS5jYW52YXNZIC0gb3JpZ2luUG9pbnQueSksXG4gICAgICB4OiBtaW4oZS5jYW52YXNYLCBvcmlnaW5Qb2ludC54KSxcbiAgICAgIHk6IG1pbihlLmNhbnZhc1ksIG9yaWdpblBvaW50LnkpXG4gICAgfSk7XG4gIH0sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKGUpIHtcbiAgICB2YXIgY29kZSA9IGUua2V5O1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHRyaWdnZXJMb3dlckNhc2UgPSB0aGlzLnRyaWdnZXIudG9Mb3dlckNhc2UoKTtcbiAgICB2YXIgY29kZUxvd2VyQ2FzZSA9IGNvZGUudG9Mb3dlckNhc2UoKTsgLy8g5oyJ5L2PIGNvbnRyb2wg6ZSu5pe277yM5YWB6K6455So5oi36K6+572uIHRyaWdnZXIg5Li6IGN0cmxcblxuICAgIGlmIChjb2RlTG93ZXJDYXNlID09PSB0cmlnZ2VyTG93ZXJDYXNlIHx8IGNvZGVMb3dlckNhc2UgPT09ICdjb250cm9sJyAmJiB0cmlnZ2VyTG93ZXJDYXNlID09PSAnY3RybCcgfHwgY29kZUxvd2VyQ2FzZSA9PT0gJ2N0cmwnICYmIHRyaWdnZXJMb3dlckNhc2UgPT09ICdjb250cm9sJykge1xuICAgICAgdGhpcy5rZXlkb3duID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlkb3duID0gZmFsc2U7XG4gICAgfVxuICB9LFxuICBvbktleVVwOiBmdW5jdGlvbiBvbktleVVwKCkge1xuICAgIGlmICh0aGlzLmJydXNoKSB7XG4gICAgICAvLyDmuIXpmaTmiYDmnInpgInkuK3nirbmgIHlkI7vvIzorr7nva7mi5blvpfliqjnirbmgIHkuLpmYWxzZe+8jOW5tua4hemZpOahhumAieeahGJydXNoXG4gICAgICB0aGlzLmJydXNoLnJlbW92ZSh0cnVlKTtcbiAgICAgIHRoaXMuYnJ1c2ggPSBudWxsO1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMua2V5ZG93biA9IGZhbHNlO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/brush-select.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/click-select.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/click-select.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n multiple: true,\n trigger: DEFAULT_TRIGGER,\n selectedState: 'selected'\n };\n },\n getEvents: function getEvents() {\n var self = this; // 检测输入是否合法\n\n if (!(ALLOW_EVENTS.indexOf(self.trigger.toLowerCase()) > -1)) {\n self.trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior brush-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (!self.multiple) {\n return {\n 'node:click': 'onClick',\n 'combo:click': 'onClick',\n 'canvas:click': 'onCanvasClick'\n };\n }\n\n return {\n 'node:click': 'onClick',\n 'combo:click': 'onClick',\n 'canvas:click': 'onCanvasClick',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onClick: function onClick(evt) {\n var self = this;\n var item = evt.item;\n\n if (!item || item.destroyed) {\n return;\n }\n\n var type = item.getType();\n var graph = self.graph,\n keydown = self.keydown,\n multiple = self.multiple,\n shouldUpdate = self.shouldUpdate,\n shouldBegin = self.shouldBegin;\n\n if (!shouldBegin.call(self, evt)) {\n return;\n } // allow to select multiple nodes but did not press a key || do not allow the select multiple nodes\n\n\n if (!keydown || !multiple) {\n var selected = graph.findAllByState('node', self.selectedState).concat(graph.findAllByState('combo', self.selectedState));\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selected, function (combo) {\n if (combo !== item) {\n graph.setItemState(combo, self.selectedState, false);\n }\n });\n }\n\n if (item.hasState(self.selectedState)) {\n if (shouldUpdate.call(self, evt)) {\n graph.setItemState(item, self.selectedState, false);\n }\n\n var selectedNodes = graph.findAllByState('node', self.selectedState);\n var selectedCombos = graph.findAllByState('combo', self.selectedState);\n graph.emit('nodeselectchange', {\n target: item,\n selectedItems: {\n nodes: selectedNodes,\n combos: selectedCombos\n },\n select: false\n });\n } else {\n if (shouldUpdate.call(self, evt)) {\n graph.setItemState(item, self.selectedState, true);\n }\n\n var selectedNodes = graph.findAllByState('node', self.selectedState);\n var selectedCombos = graph.findAllByState('combo', self.selectedState);\n graph.emit('nodeselectchange', {\n target: item,\n selectedItems: {\n nodes: selectedNodes,\n combos: selectedCombos\n },\n select: true\n });\n }\n },\n onCanvasClick: function onCanvasClick() {\n var _this = this;\n\n var graph = this.graph;\n var selected = graph.findAllByState('node', this.selectedState);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selected, function (node) {\n graph.setItemState(node, _this.selectedState, false);\n });\n var selectedCombos = graph.findAllByState('combo', this.selectedState);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selectedCombos, function (combo) {\n graph.setItemState(combo, _this.selectedState, false);\n });\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: [],\n combos: []\n },\n select: false\n });\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (code.toLowerCase() === this.trigger.toLowerCase() || code.toLowerCase() === 'control') {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n var self = this;\n self.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY2xpY2stc2VsZWN0LmpzPzIxOTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFrQztBQUNsQztBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxvQkFBb0I7O0FBRXBCO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY2xpY2stc2VsZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xudmFyIERFRkFVTFRfVFJJR0dFUiA9ICdzaGlmdCc7XG52YXIgQUxMT1dfRVZFTlRTID0gWydzaGlmdCcsICdjdHJsJywgJ2FsdCcsICdjb250cm9sJ107XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgdHJpZ2dlcjogREVGQVVMVF9UUklHR0VSLFxuICAgICAgc2VsZWN0ZWRTdGF0ZTogJ3NlbGVjdGVkJ1xuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHZhciBzZWxmID0gdGhpczsgLy8g5qOA5rWL6L6T5YWl5piv5ZCm5ZCI5rOVXG5cbiAgICBpZiAoIShBTExPV19FVkVOVFMuaW5kZXhPZihzZWxmLnRyaWdnZXIudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHtcbiAgICAgIHNlbGYudHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcblxuICAgICAgY29uc29sZS53YXJuKFwiQmVoYXZpb3IgYnJ1c2gtc2VsZWN0IOeahCB0cmlnZ2VyIOWPguaVsOS4jeWQiOazle+8jOivt+i+k+WFpSAnZHJhZyfjgIEnc2hpZnQn44CBJ2N0cmwnIOaIliAnYWx0J1wiKTtcbiAgICB9XG5cbiAgICBpZiAoIXNlbGYubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICdub2RlOmNsaWNrJzogJ29uQ2xpY2snLFxuICAgICAgICAnY29tYm86Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAgICdjYW52YXM6Y2xpY2snOiAnb25DYW52YXNDbGljaydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdub2RlOmNsaWNrJzogJ29uQ2xpY2snLFxuICAgICAgJ2NvbWJvOmNsaWNrJzogJ29uQ2xpY2snLFxuICAgICAgJ2NhbnZhczpjbGljayc6ICdvbkNhbnZhc0NsaWNrJyxcbiAgICAgIGtleXVwOiAnb25LZXlVcCcsXG4gICAgICBrZXlkb3duOiAnb25LZXlEb3duJ1xuICAgIH07XG4gIH0sXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soZXZ0KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdHlwZSA9IGl0ZW0uZ2V0VHlwZSgpO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ3JhcGgsXG4gICAgICAgIGtleWRvd24gPSBzZWxmLmtleWRvd24sXG4gICAgICAgIG11bHRpcGxlID0gc2VsZi5tdWx0aXBsZSxcbiAgICAgICAgc2hvdWxkVXBkYXRlID0gc2VsZi5zaG91bGRVcGRhdGUsXG4gICAgICAgIHNob3VsZEJlZ2luID0gc2VsZi5zaG91bGRCZWdpbjtcblxuICAgIGlmICghc2hvdWxkQmVnaW4uY2FsbChzZWxmLCBldnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBhbGxvdyB0byBzZWxlY3QgbXVsdGlwbGUgbm9kZXMgYnV0IGRpZCBub3QgcHJlc3MgYSBrZXkgfHwgZG8gbm90IGFsbG93IHRoZSBzZWxlY3QgbXVsdGlwbGUgbm9kZXNcblxuXG4gICAgaWYgKCFrZXlkb3duIHx8ICFtdWx0aXBsZSkge1xuICAgICAgdmFyIHNlbGVjdGVkID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCBzZWxmLnNlbGVjdGVkU3RhdGUpLmNvbmNhdChncmFwaC5maW5kQWxsQnlTdGF0ZSgnY29tYm8nLCBzZWxmLnNlbGVjdGVkU3RhdGUpKTtcbiAgICAgIGVhY2goc2VsZWN0ZWQsIGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICBpZiAoY29tYm8gIT09IGl0ZW0pIHtcbiAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoY29tYm8sIHNlbGYuc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS5oYXNTdGF0ZShzZWxmLnNlbGVjdGVkU3RhdGUpKSB7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlLmNhbGwoc2VsZiwgZXZ0KSkge1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgc2VsZi5zZWxlY3RlZFN0YXRlLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBzZWxlY3RlZE5vZGVzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCBzZWxmLnNlbGVjdGVkU3RhdGUpO1xuICAgICAgdmFyIHNlbGVjdGVkQ29tYm9zID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ2NvbWJvJywgc2VsZi5zZWxlY3RlZFN0YXRlKTtcbiAgICAgIGdyYXBoLmVtaXQoJ25vZGVzZWxlY3RjaGFuZ2UnLCB7XG4gICAgICAgIHRhcmdldDogaXRlbSxcbiAgICAgICAgc2VsZWN0ZWRJdGVtczoge1xuICAgICAgICAgIG5vZGVzOiBzZWxlY3RlZE5vZGVzLFxuICAgICAgICAgIGNvbWJvczogc2VsZWN0ZWRDb21ib3NcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0OiBmYWxzZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzaG91bGRVcGRhdGUuY2FsbChzZWxmLCBldnQpKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCBzZWxmLnNlbGVjdGVkU3RhdGUsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VsZWN0ZWROb2RlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdub2RlJywgc2VsZi5zZWxlY3RlZFN0YXRlKTtcbiAgICAgIHZhciBzZWxlY3RlZENvbWJvcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdjb21ibycsIHNlbGYuc2VsZWN0ZWRTdGF0ZSk7XG4gICAgICBncmFwaC5lbWl0KCdub2Rlc2VsZWN0Y2hhbmdlJywge1xuICAgICAgICB0YXJnZXQ6IGl0ZW0sXG4gICAgICAgIHNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgICBub2Rlczogc2VsZWN0ZWROb2RlcyxcbiAgICAgICAgICBjb21ib3M6IHNlbGVjdGVkQ29tYm9zXG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBvbkNhbnZhc0NsaWNrOiBmdW5jdGlvbiBvbkNhbnZhc0NsaWNrKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBzZWxlY3RlZCA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdub2RlJywgdGhpcy5zZWxlY3RlZFN0YXRlKTtcbiAgICBlYWNoKHNlbGVjdGVkLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKG5vZGUsIF90aGlzLnNlbGVjdGVkU3RhdGUsIGZhbHNlKTtcbiAgICB9KTtcbiAgICB2YXIgc2VsZWN0ZWRDb21ib3MgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnY29tYm8nLCB0aGlzLnNlbGVjdGVkU3RhdGUpO1xuICAgIGVhY2goc2VsZWN0ZWRDb21ib3MsIGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGNvbWJvLCBfdGhpcy5zZWxlY3RlZFN0YXRlLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgZ3JhcGguZW1pdCgnbm9kZXNlbGVjdGNoYW5nZScsIHtcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICBlZGdlczogW10sXG4gICAgICAgIGNvbWJvczogW11cbiAgICAgIH0sXG4gICAgICBzZWxlY3Q6IGZhbHNlXG4gICAgfSk7XG4gIH0sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvZGUgPSBlLmtleTtcblxuICAgIGlmICghY29kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjb2RlLnRvTG93ZXJDYXNlKCkgPT09IHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpIHx8IGNvZGUudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbnRyb2wnKSB7XG4gICAgICBzZWxmLmtleWRvd24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLmtleWRvd24gPSBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIG9uS2V5VXA6IGZ1bmN0aW9uIG9uS2V5VXAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYua2V5ZG93biA9IGZhbHNlO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/click-select.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/collapse-expand-combo.js": /*!***********************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/collapse-expand-combo.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/*\n * @Author: Shiwu\n * @Description: 收起和展开 Combo\n */\nvar DEFAULT_TRIGGER = 'dblclick';\nvar ALLOW_EVENTS = ['click', 'dblclick'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n relayout: true\n };\n },\n getEvents: function getEvents() {\n var _a;\n\n var trigger; // 检测输入是否合法\n\n if (ALLOW_EVENTS.includes(this.trigger)) {\n trigger = this.trigger;\n } else {\n trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior collapse-expand-group 的 trigger 参数不合法,请输入 'click' 或 'dblclick'\");\n }\n\n return _a = {}, _a[\"combo:\".concat(trigger)] = 'onComboClick', _a;\n },\n onComboClick: function onComboClick(evt) {\n var item = evt.item;\n\n var _a = this,\n graph = _a.graph,\n relayout = _a.relayout;\n\n if (!item || item.destroyed || item.getType() !== 'combo') return;\n var model = item.getModel();\n var comboId = model.id;\n\n if (!comboId) {\n return;\n }\n\n graph.collapseExpandCombo(comboId);\n if (relayout && graph.get('layout')) graph.layout();else graph.refreshPositions();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY29sbGFwc2UtZXhwYW5kLWNvbWJvLmpzPzRiNzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsZ0NBQWdDOztBQUVoQztBQUNBOztBQUVBLGtCQUFrQjtBQUNsQixHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdEQUF3RDtBQUN4RDtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY29sbGFwc2UtZXhwYW5kLWNvbWJvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEBBdXRob3I6IFNoaXd1XG4gKiBARGVzY3JpcHRpb246IOaUtui1t+WSjOWxleW8gCBDb21ib1xuICovXG52YXIgREVGQVVMVF9UUklHR0VSID0gJ2RibGNsaWNrJztcbnZhciBBTExPV19FVkVOVFMgPSBbJ2NsaWNrJywgJ2RibGNsaWNrJ107XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyaWdnZXI6IERFRkFVTFRfVFJJR0dFUixcbiAgICAgIHJlbGF5b3V0OiB0cnVlXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIHRyaWdnZXI7IC8vIOajgOa1i+i+k+WFpeaYr+WQpuWQiOazlVxuXG4gICAgaWYgKEFMTE9XX0VWRU5UUy5pbmNsdWRlcyh0aGlzLnRyaWdnZXIpKSB7XG4gICAgICB0cmlnZ2VyID0gdGhpcy50cmlnZ2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmlnZ2VyID0gREVGQVVMVF9UUklHR0VSOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuXG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBjb2xsYXBzZS1leHBhbmQtZ3JvdXAg55qEIHRyaWdnZXIg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdjbGljaycg5oiWICdkYmxjbGljaydcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9hID0ge30sIF9hW1wiY29tYm86XCIuY29uY2F0KHRyaWdnZXIpXSA9ICdvbkNvbWJvQ2xpY2snLCBfYTtcbiAgfSxcbiAgb25Db21ib0NsaWNrOiBmdW5jdGlvbiBvbkNvbWJvQ2xpY2soZXZ0KSB7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIHJlbGF5b3V0ID0gX2EucmVsYXlvdXQ7XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQgfHwgaXRlbS5nZXRUeXBlKCkgIT09ICdjb21ibycpIHJldHVybjtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdmFyIGNvbWJvSWQgPSBtb2RlbC5pZDtcblxuICAgIGlmICghY29tYm9JZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdyYXBoLmNvbGxhcHNlRXhwYW5kQ29tYm8oY29tYm9JZCk7XG4gICAgaWYgKHJlbGF5b3V0ICYmIGdyYXBoLmdldCgnbGF5b3V0JykpIGdyYXBoLmxheW91dCgpO2Vsc2UgZ3JhcGgucmVmcmVzaFBvc2l0aW9ucygpO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/collapse-expand-combo.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/collapse-expand.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/collapse-expand.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar DEFAULT_TRIGGER = 'click';\nvar ALLOW_EVENTS = ['click', 'dblclick'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n /**\n * 发生收缩/扩展变化时的回调\n */\n trigger: DEFAULT_TRIGGER,\n onChange: function onChange() {}\n };\n },\n getEvents: function getEvents() {\n var _a;\n\n var trigger; // 检测输入是否合法\n\n if (ALLOW_EVENTS.includes(this.trigger)) {\n trigger = this.trigger;\n } else {\n trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior collapse-expand 的 trigger 参数不合法,请输入 'click' 或 'dblclick'\");\n }\n\n return _a = {}, _a[\"node:\".concat(trigger)] = 'onNodeClick', // 支持移动端事件\n _a.touchstart = 'onNodeClick', _a;\n },\n onNodeClick: function onNodeClick(e) {\n var item = e.item;\n if (!item) return; // 如果节点进行过更新,model 会进行 merge,直接改 model 就不能改布局,所以需要去改源数据\n\n var sourceData = this.graph.findDataById(item.get('id'));\n\n if (!sourceData) {\n return;\n }\n\n var children = sourceData.children; // 叶子节点的收缩和展开没有意义\n\n if (!children || children.length === 0) {\n return;\n }\n\n var collapsed = !sourceData.collapsed;\n\n if (!this.shouldBegin(e, collapsed)) {\n return;\n }\n\n sourceData.collapsed = collapsed;\n item.getModel().collapsed = collapsed;\n this.graph.emit('itemcollapsed', {\n item: e.item,\n collapsed: collapsed\n });\n\n if (!this.shouldUpdate(e, collapsed)) {\n return;\n }\n\n this.onChange(item, collapsed);\n this.graph.layout();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY29sbGFwc2UtZXhwYW5kLmpzPzFhNDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0EsS0FBSztBQUNMLGdDQUFnQzs7QUFFaEM7QUFDQTs7QUFFQSxrQkFBa0I7QUFDbEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNCQUFzQjs7QUFFdEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci9jb2xsYXBzZS1leHBhbmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgREVGQVVMVF9UUklHR0VSID0gJ2NsaWNrJztcbnZhciBBTExPV19FVkVOVFMgPSBbJ2NsaWNrJywgJ2RibGNsaWNrJ107XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8qKlxuICAgICAgICog5Y+R55Sf5pS257ypL+aJqeWxleWPmOWMluaXtueahOWbnuiwg1xuICAgICAgICovXG4gICAgICB0cmlnZ2VyOiBERUZBVUxUX1RSSUdHRVIsXG4gICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoKSB7fVxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciB0cmlnZ2VyOyAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcblxuICAgIGlmIChBTExPV19FVkVOVFMuaW5jbHVkZXModGhpcy50cmlnZ2VyKSkge1xuICAgICAgdHJpZ2dlciA9IHRoaXMudHJpZ2dlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcblxuICAgICAgY29uc29sZS53YXJuKFwiQmVoYXZpb3IgY29sbGFwc2UtZXhwYW5kIOeahCB0cmlnZ2VyIOWPguaVsOS4jeWQiOazle+8jOivt+i+k+WFpSAnY2xpY2snIOaIliAnZGJsY2xpY2snXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBfYSA9IHt9LCBfYVtcIm5vZGU6XCIuY29uY2F0KHRyaWdnZXIpXSA9ICdvbk5vZGVDbGljaycsIC8vIOaUr+aMgeenu+WKqOerr+S6i+S7tlxuICAgIF9hLnRvdWNoc3RhcnQgPSAnb25Ob2RlQ2xpY2snLCBfYTtcbiAgfSxcbiAgb25Ob2RlQ2xpY2s6IGZ1bmN0aW9uIG9uTm9kZUNsaWNrKGUpIHtcbiAgICB2YXIgaXRlbSA9IGUuaXRlbTtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjsgLy8g5aaC5p6c6IqC54K56L+b6KGM6L+H5pu05paw77yMbW9kZWwg5Lya6L+b6KGMIG1lcmdl77yM55u05o6l5pS5IG1vZGVsIOWwseS4jeiDveaUueW4g+WxgO+8jOaJgOS7pemcgOimgeWOu+aUuea6kOaVsOaNrlxuXG4gICAgdmFyIHNvdXJjZURhdGEgPSB0aGlzLmdyYXBoLmZpbmREYXRhQnlJZChpdGVtLmdldCgnaWQnKSk7XG5cbiAgICBpZiAoIXNvdXJjZURhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRyZW4gPSBzb3VyY2VEYXRhLmNoaWxkcmVuOyAvLyDlj7blrZDoioLngrnnmoTmlLbnvKnlkozlsZXlvIDmsqHmnInmhI/kuYlcblxuICAgIGlmICghY2hpbGRyZW4gfHwgY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNvbGxhcHNlZCA9ICFzb3VyY2VEYXRhLmNvbGxhcHNlZDtcblxuICAgIGlmICghdGhpcy5zaG91bGRCZWdpbihlLCBjb2xsYXBzZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc291cmNlRGF0YS5jb2xsYXBzZWQgPSBjb2xsYXBzZWQ7XG4gICAgaXRlbS5nZXRNb2RlbCgpLmNvbGxhcHNlZCA9IGNvbGxhcHNlZDtcbiAgICB0aGlzLmdyYXBoLmVtaXQoJ2l0ZW1jb2xsYXBzZWQnLCB7XG4gICAgICBpdGVtOiBlLml0ZW0sXG4gICAgICBjb2xsYXBzZWQ6IGNvbGxhcHNlZFxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLnNob3VsZFVwZGF0ZShlLCBjb2xsYXBzZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbkNoYW5nZShpdGVtLCBjb2xsYXBzZWQpO1xuICAgIHRoaXMuZ3JhcGgubGF5b3V0KCk7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/collapse-expand.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/create-edge.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/create-edge.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\nvar DEFAULT_TRIGGER = 'click';\nvar ALLOW_EVENTS = ['click', 'drag'];\nvar DEFAULT_KEY = undefined;\nvar ALLOW_KEYS = ['shift', 'ctrl', 'control', 'alt', 'meta', undefined];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n key: DEFAULT_KEY,\n edgeConfig: {},\n getEdgeConfig: undefined\n };\n },\n getEvents: function getEvents() {\n var self = this; // 检测输入是否合法\n\n if (!(ALLOW_EVENTS.indexOf(self.trigger.toLowerCase()) > -1)) {\n self.trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior create-edge 的 trigger 参数不合法,请输入 'click','drag'\");\n }\n\n if (self.key && ALLOW_KEYS.indexOf(self.key.toLowerCase()) === -1) {\n self.trigger = DEFAULT_KEY; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior create-edge 的 key 参数不合法,请输入 'shift','ctrl','alt','control',或 undefined\");\n }\n\n var events;\n\n if (self.trigger === 'drag') {\n events = {\n 'node:dragstart': 'onClick',\n 'combo:dragstart': 'onClick',\n drag: 'updateEndPoint',\n 'node:drop': 'onClick',\n 'combo:drop': 'onClick',\n dragend: 'onDragEnd'\n };\n } else if (self.trigger === 'click') {\n events = {\n 'node:click': 'onClick',\n mousemove: 'updateEndPoint',\n 'edge:click': 'cancelCreating',\n 'canvas:click': 'cancelCreating',\n 'combo:click': 'onClick'\n };\n }\n\n if (self.key) {\n events.keydown = 'onKeyDown';\n events.keyup = 'onKeyUp';\n }\n\n return events;\n },\n onDragEnd: function onDragEnd(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var item = ev.item;\n if (!item || item.getID() === self.source || item.getType() !== 'node') self.cancelCreating({\n item: self.edge,\n x: ev.x,\n y: ev.y\n });\n },\n // 如果边的起点没有指定,则根据起点创建新边;如果起点已经指定而终点未指定,则指定终点\n onClick: function onClick(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var node = ev.item;\n var graph = self.graph;\n var model = node.getModel();\n var getEdgeConfig = self.getEdgeConfig; // 如果起点已经指定而终点未指定,则指定终点\n\n if (self.addingEdge && self.edge) {\n if (!self.shouldEnd.call(self, ev)) return;\n var edgeConfig = void 0;\n\n if (getEdgeConfig && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(getEdgeConfig)) {\n edgeConfig = getEdgeConfig({\n source: self.source,\n target: model.id\n });\n } else {\n edgeConfig = self.edgeConfig;\n }\n\n var updateCfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n target: model.id\n }, edgeConfig);\n\n if (self.source === model.id) {\n updateCfg.type = 'loop';\n }\n\n graph.emit('beforecreateedge', {});\n graph.updateItem(self.edge, updateCfg, false);\n\n if (graph.get('enabledStack')) {\n var addedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, self.edge.getModel()), {\n itemType: 'edge'\n });\n\n var after = {};\n after.edges = [addedModel];\n graph.pushStack('add', {\n before: {},\n after: after\n });\n }\n\n graph.emit('aftercreateedge', {\n edge: self.edge\n }); // 暂时将该边的 capture 恢复为 true\n\n self.edge.getKeyShape().set('capture', true);\n self.edge = null;\n self.addingEdge = false;\n } else {\n // 如果边的起点没有指定,则根据起点创建新边\n if (!self.shouldBegin.call(self, ev)) return; // 获取自定义 edge 配置\n\n var edgeConfig = void 0;\n\n if (getEdgeConfig && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(getEdgeConfig)) {\n edgeConfig = getEdgeConfig({\n source: model.id,\n target: model.id\n });\n } else {\n edgeConfig = self.edgeConfig;\n }\n\n self.edge = graph.addItem('edge', Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n source: model.id,\n target: model.id\n }, edgeConfig), false);\n self.source = model.id;\n self.addingEdge = true; // 暂时将该边的 capture 设置为 false,这样可以拾取到后面的元素\n\n self.edge.getKeyShape().set('capture', false);\n }\n },\n // 边的起点已经确定,边的末端跟随鼠标移动\n updateEndPoint: function updateEndPoint(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n if (self.edge && self.edge.destroyed) self.cancelCreating({\n item: self.edge\n });\n var point = {\n x: ev.x,\n y: ev.y\n }; // 若此时 source 节点已经被移除,结束添加边\n\n if (!self.graph.findById(self.source)) {\n self.addingEdge = false;\n return;\n }\n\n if (self.addingEdge && self.edge) {\n // 更新边的终点为鼠标位置\n self.graph.updateItem(self.edge, {\n target: point\n }, false);\n }\n },\n // 取消增加边,删除该边;或指定终点\n cancelCreating: function cancelCreating(ev) {\n var _a, _b;\n\n var self = this;\n if (self.key && !self.keydown) return;\n var graph = self.graph;\n var currentEdge = ev.item;\n\n if (self.addingEdge && (self.edge === currentEdge || ((_b = (_a = ev.target) === null || _a === void 0 ? void 0 : _a.isCanvas) === null || _b === void 0 ? void 0 : _b.call(_a)))) {\n if (self.edge && !self.edge.destroyed) graph.removeItem(self.edge, false);\n self.edge = null;\n self.addingEdge = false;\n return;\n }\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (code.toLowerCase() === self.key.toLowerCase()) {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n var self = this;\n\n if (self.addingEdge && self.edge) {\n // 清除正在增加的边\n self.graph.removeItem(self.edge, false);\n self.addingEdge = false;\n self.edge = null;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY3JlYXRlLWVkZ2UuanM/YzMxMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDTztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsNkRBQVU7QUFDckM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBLHNCQUFzQixzREFBUTtBQUM5QjtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBLHVDQUF1QztBQUN2Qzs7QUFFQTtBQUNBLHlCQUF5QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDN0M7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLG1EQUFtRDs7QUFFbkQ7O0FBRUEsMkJBQTJCLDZEQUFVO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTs7QUFFQSx3Q0FBd0Msc0RBQVE7QUFDaEQ7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLDZCQUE2Qjs7QUFFN0I7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NyZWF0ZS1lZGdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICdAYW50di91dGlsJztcbnZhciBERUZBVUxUX1RSSUdHRVIgPSAnY2xpY2snO1xudmFyIEFMTE9XX0VWRU5UUyA9IFsnY2xpY2snLCAnZHJhZyddO1xudmFyIERFRkFVTFRfS0VZID0gdW5kZWZpbmVkO1xudmFyIEFMTE9XX0tFWVMgPSBbJ3NoaWZ0JywgJ2N0cmwnLCAnY29udHJvbCcsICdhbHQnLCAnbWV0YScsIHVuZGVmaW5lZF07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyaWdnZXI6IERFRkFVTFRfVFJJR0dFUixcbiAgICAgIGtleTogREVGQVVMVF9LRVksXG4gICAgICBlZGdlQ29uZmlnOiB7fSxcbiAgICAgIGdldEVkZ2VDb25maWc6IHVuZGVmaW5lZFxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHZhciBzZWxmID0gdGhpczsgLy8g5qOA5rWL6L6T5YWl5piv5ZCm5ZCI5rOVXG5cbiAgICBpZiAoIShBTExPV19FVkVOVFMuaW5kZXhPZihzZWxmLnRyaWdnZXIudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHtcbiAgICAgIHNlbGYudHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcblxuICAgICAgY29uc29sZS53YXJuKFwiQmVoYXZpb3IgY3JlYXRlLWVkZ2Ug55qEIHRyaWdnZXIg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdjbGljayfvvIwnZHJhZydcIik7XG4gICAgfVxuXG4gICAgaWYgKHNlbGYua2V5ICYmIEFMTE9XX0tFWVMuaW5kZXhPZihzZWxmLmtleS50b0xvd2VyQ2FzZSgpKSA9PT0gLTEpIHtcbiAgICAgIHNlbGYudHJpZ2dlciA9IERFRkFVTFRfS0VZOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuXG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBjcmVhdGUtZWRnZSDnmoQga2V5IOWPguaVsOS4jeWQiOazle+8jOivt+i+k+WFpSAnc2hpZnQn77yMJ2N0cmwn77yMJ2FsdCfvvIwnY29udHJvbCfvvIzmiJYgdW5kZWZpbmVkXCIpO1xuICAgIH1cblxuICAgIHZhciBldmVudHM7XG5cbiAgICBpZiAoc2VsZi50cmlnZ2VyID09PSAnZHJhZycpIHtcbiAgICAgIGV2ZW50cyA9IHtcbiAgICAgICAgJ25vZGU6ZHJhZ3N0YXJ0JzogJ29uQ2xpY2snLFxuICAgICAgICAnY29tYm86ZHJhZ3N0YXJ0JzogJ29uQ2xpY2snLFxuICAgICAgICBkcmFnOiAndXBkYXRlRW5kUG9pbnQnLFxuICAgICAgICAnbm9kZTpkcm9wJzogJ29uQ2xpY2snLFxuICAgICAgICAnY29tYm86ZHJvcCc6ICdvbkNsaWNrJyxcbiAgICAgICAgZHJhZ2VuZDogJ29uRHJhZ0VuZCdcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChzZWxmLnRyaWdnZXIgPT09ICdjbGljaycpIHtcbiAgICAgIGV2ZW50cyA9IHtcbiAgICAgICAgJ25vZGU6Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAgIG1vdXNlbW92ZTogJ3VwZGF0ZUVuZFBvaW50JyxcbiAgICAgICAgJ2VkZ2U6Y2xpY2snOiAnY2FuY2VsQ3JlYXRpbmcnLFxuICAgICAgICAnY2FudmFzOmNsaWNrJzogJ2NhbmNlbENyZWF0aW5nJyxcbiAgICAgICAgJ2NvbWJvOmNsaWNrJzogJ29uQ2xpY2snXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChzZWxmLmtleSkge1xuICAgICAgZXZlbnRzLmtleWRvd24gPSAnb25LZXlEb3duJztcbiAgICAgIGV2ZW50cy5rZXl1cCA9ICdvbktleVVwJztcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9LFxuICBvbkRyYWdFbmQ6IGZ1bmN0aW9uIG9uRHJhZ0VuZChldikge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBpZiAoc2VsZi5rZXkgJiYgIXNlbGYua2V5ZG93bikgcmV0dXJuO1xuICAgIHZhciBpdGVtID0gZXYuaXRlbTtcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5nZXRJRCgpID09PSBzZWxmLnNvdXJjZSB8fCBpdGVtLmdldFR5cGUoKSAhPT0gJ25vZGUnKSBzZWxmLmNhbmNlbENyZWF0aW5nKHtcbiAgICAgIGl0ZW06IHNlbGYuZWRnZSxcbiAgICAgIHg6IGV2LngsXG4gICAgICB5OiBldi55XG4gICAgfSk7XG4gIH0sXG4gIC8vIOWmguaenOi+ueeahOi1t+eCueayoeacieaMh+Wumu+8jOWImeagueaNrui1t+eCueWIm+W7uuaWsOi+ue+8m+WmguaenOi1t+eCueW3sue7j+aMh+WumuiAjOe7iOeCueacquaMh+Wumu+8jOWImeaMh+Wumue7iOeCuVxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGV2KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGlmIChzZWxmLmtleSAmJiAhc2VsZi5rZXlkb3duKSByZXR1cm47XG4gICAgdmFyIG5vZGUgPSBldi5pdGVtO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ3JhcGg7XG4gICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgIHZhciBnZXRFZGdlQ29uZmlnID0gc2VsZi5nZXRFZGdlQ29uZmlnOyAvLyDlpoLmnpzotbfngrnlt7Lnu4/mjIflrprogIznu4jngrnmnKrmjIflrprvvIzliJnmjIflrprnu4jngrlcblxuICAgIGlmIChzZWxmLmFkZGluZ0VkZ2UgJiYgc2VsZi5lZGdlKSB7XG4gICAgICBpZiAoIXNlbGYuc2hvdWxkRW5kLmNhbGwoc2VsZiwgZXYpKSByZXR1cm47XG4gICAgICB2YXIgZWRnZUNvbmZpZyA9IHZvaWQgMDtcblxuICAgICAgaWYgKGdldEVkZ2VDb25maWcgJiYgaXNGdW5jdGlvbihnZXRFZGdlQ29uZmlnKSkge1xuICAgICAgICBlZGdlQ29uZmlnID0gZ2V0RWRnZUNvbmZpZyh7XG4gICAgICAgICAgc291cmNlOiBzZWxmLnNvdXJjZSxcbiAgICAgICAgICB0YXJnZXQ6IG1vZGVsLmlkXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWRnZUNvbmZpZyA9IHNlbGYuZWRnZUNvbmZpZztcbiAgICAgIH1cblxuICAgICAgdmFyIHVwZGF0ZUNmZyA9IF9fYXNzaWduKHtcbiAgICAgICAgdGFyZ2V0OiBtb2RlbC5pZFxuICAgICAgfSwgZWRnZUNvbmZpZyk7XG5cbiAgICAgIGlmIChzZWxmLnNvdXJjZSA9PT0gbW9kZWwuaWQpIHtcbiAgICAgICAgdXBkYXRlQ2ZnLnR5cGUgPSAnbG9vcCc7XG4gICAgICB9XG5cbiAgICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWNyZWF0ZWVkZ2UnLCB7fSk7XG4gICAgICBncmFwaC51cGRhdGVJdGVtKHNlbGYuZWRnZSwgdXBkYXRlQ2ZnLCBmYWxzZSk7XG5cbiAgICAgIGlmIChncmFwaC5nZXQoJ2VuYWJsZWRTdGFjaycpKSB7XG4gICAgICAgIHZhciBhZGRlZE1vZGVsID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHNlbGYuZWRnZS5nZXRNb2RlbCgpKSwge1xuICAgICAgICAgIGl0ZW1UeXBlOiAnZWRnZSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIGFmdGVyID0ge307XG4gICAgICAgIGFmdGVyLmVkZ2VzID0gW2FkZGVkTW9kZWxdO1xuICAgICAgICBncmFwaC5wdXNoU3RhY2soJ2FkZCcsIHtcbiAgICAgICAgICBiZWZvcmU6IHt9LFxuICAgICAgICAgIGFmdGVyOiBhZnRlclxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZ3JhcGguZW1pdCgnYWZ0ZXJjcmVhdGVlZGdlJywge1xuICAgICAgICBlZGdlOiBzZWxmLmVkZ2VcbiAgICAgIH0pOyAvLyDmmoLml7blsIbor6XovrnnmoQgY2FwdHVyZSDmgaLlpI3kuLogdHJ1ZVxuXG4gICAgICBzZWxmLmVkZ2UuZ2V0S2V5U2hhcGUoKS5zZXQoJ2NhcHR1cmUnLCB0cnVlKTtcbiAgICAgIHNlbGYuZWRnZSA9IG51bGw7XG4gICAgICBzZWxmLmFkZGluZ0VkZ2UgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g5aaC5p6c6L6555qE6LW354K55rKh5pyJ5oyH5a6a77yM5YiZ5qC55o2u6LW354K55Yib5bu65paw6L65XG4gICAgICBpZiAoIXNlbGYuc2hvdWxkQmVnaW4uY2FsbChzZWxmLCBldikpIHJldHVybjsgLy8g6I635Y+W6Ieq5a6a5LmJIGVkZ2Ug6YWN572uXG5cbiAgICAgIHZhciBlZGdlQ29uZmlnID0gdm9pZCAwO1xuXG4gICAgICBpZiAoZ2V0RWRnZUNvbmZpZyAmJiBpc0Z1bmN0aW9uKGdldEVkZ2VDb25maWcpKSB7XG4gICAgICAgIGVkZ2VDb25maWcgPSBnZXRFZGdlQ29uZmlnKHtcbiAgICAgICAgICBzb3VyY2U6IG1vZGVsLmlkLFxuICAgICAgICAgIHRhcmdldDogbW9kZWwuaWRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlQ29uZmlnID0gc2VsZi5lZGdlQ29uZmlnO1xuICAgICAgfVxuXG4gICAgICBzZWxmLmVkZ2UgPSBncmFwaC5hZGRJdGVtKCdlZGdlJywgX19hc3NpZ24oe1xuICAgICAgICBzb3VyY2U6IG1vZGVsLmlkLFxuICAgICAgICB0YXJnZXQ6IG1vZGVsLmlkXG4gICAgICB9LCBlZGdlQ29uZmlnKSwgZmFsc2UpO1xuICAgICAgc2VsZi5zb3VyY2UgPSBtb2RlbC5pZDtcbiAgICAgIHNlbGYuYWRkaW5nRWRnZSA9IHRydWU7IC8vIOaaguaXtuWwhuivpei+ueeahCBjYXB0dXJlIOiuvue9ruS4uiBmYWxzZe+8jOi/meagt+WPr+S7peaLvuWPluWIsOWQjumdoueahOWFg+e0oFxuXG4gICAgICBzZWxmLmVkZ2UuZ2V0S2V5U2hhcGUoKS5zZXQoJ2NhcHR1cmUnLCBmYWxzZSk7XG4gICAgfVxuICB9LFxuICAvLyDovrnnmoTotbfngrnlt7Lnu4/noa7lrprvvIzovrnnmoTmnKvnq6/ot5/pmo/pvKDmoIfnp7vliqhcbiAgdXBkYXRlRW5kUG9pbnQ6IGZ1bmN0aW9uIHVwZGF0ZUVuZFBvaW50KGV2KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGlmIChzZWxmLmtleSAmJiAhc2VsZi5rZXlkb3duKSByZXR1cm47XG4gICAgaWYgKHNlbGYuZWRnZSAmJiBzZWxmLmVkZ2UuZGVzdHJveWVkKSBzZWxmLmNhbmNlbENyZWF0aW5nKHtcbiAgICAgIGl0ZW06IHNlbGYuZWRnZVxuICAgIH0pO1xuICAgIHZhciBwb2ludCA9IHtcbiAgICAgIHg6IGV2LngsXG4gICAgICB5OiBldi55XG4gICAgfTsgLy8g6Iul5q2k5pe2IHNvdXJjZSDoioLngrnlt7Lnu4/ooqvnp7vpmaTvvIznu5PmnZ/mt7vliqDovrlcblxuICAgIGlmICghc2VsZi5ncmFwaC5maW5kQnlJZChzZWxmLnNvdXJjZSkpIHtcbiAgICAgIHNlbGYuYWRkaW5nRWRnZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzZWxmLmFkZGluZ0VkZ2UgJiYgc2VsZi5lZGdlKSB7XG4gICAgICAvLyDmm7TmlrDovrnnmoTnu4jngrnkuLrpvKDmoIfkvY3nva5cbiAgICAgIHNlbGYuZ3JhcGgudXBkYXRlSXRlbShzZWxmLmVkZ2UsIHtcbiAgICAgICAgdGFyZ2V0OiBwb2ludFxuICAgICAgfSwgZmFsc2UpO1xuICAgIH1cbiAgfSxcbiAgLy8g5Y+W5raI5aKe5Yqg6L6577yM5Yig6Zmk6K+l6L6577yb5oiW5oyH5a6a57uI54K5XG4gIGNhbmNlbENyZWF0aW5nOiBmdW5jdGlvbiBjYW5jZWxDcmVhdGluZyhldikge1xuICAgIHZhciBfYSwgX2I7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHNlbGYua2V5ICYmICFzZWxmLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdyYXBoO1xuICAgIHZhciBjdXJyZW50RWRnZSA9IGV2Lml0ZW07XG5cbiAgICBpZiAoc2VsZi5hZGRpbmdFZGdlICYmIChzZWxmLmVkZ2UgPT09IGN1cnJlbnRFZGdlIHx8ICgoX2IgPSAoX2EgPSBldi50YXJnZXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pc0NhbnZhcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpKSkpIHtcbiAgICAgIGlmIChzZWxmLmVkZ2UgJiYgIXNlbGYuZWRnZS5kZXN0cm95ZWQpIGdyYXBoLnJlbW92ZUl0ZW0oc2VsZi5lZGdlLCBmYWxzZSk7XG4gICAgICBzZWxmLmVkZ2UgPSBudWxsO1xuICAgICAgc2VsZi5hZGRpbmdFZGdlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bihlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjb2RlID0gZS5rZXk7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY29kZS50b0xvd2VyQ2FzZSgpID09PSBzZWxmLmtleS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBzZWxmLmtleWRvd24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLmtleWRvd24gPSBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIG9uS2V5VXA6IGZ1bmN0aW9uIG9uS2V5VXAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKHNlbGYuYWRkaW5nRWRnZSAmJiBzZWxmLmVkZ2UpIHtcbiAgICAgIC8vIOa4hemZpOato+WcqOWinuWKoOeahOi+uVxuICAgICAgc2VsZi5ncmFwaC5yZW1vdmVJdGVtKHNlbGYuZWRnZSwgZmFsc2UpO1xuICAgICAgc2VsZi5hZGRpbmdFZGdlID0gZmFsc2U7XG4gICAgICBzZWxmLmVkZ2UgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMua2V5ZG93biA9IGZhbHNlO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/create-edge.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/drag-canvas.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/drag-canvas.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g6-pc/es/util/index.js\");\n\n\nvar cloneEvent = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].cloneEvent,\n isNaN = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isNaN;\nvar abs = Math.abs;\nvar DRAG_OFFSET = 10;\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n direction: 'both',\n enableOptimize: false,\n // drag-canvas 可拖动的扩展范围,默认为 0,即最多可以拖动一屏的位置\n // 当设置的值大于 0 时,即拖动可以超过一屏\n // 当设置的值小于 0 时,相当于缩小了可拖动范围\n // 具体实例可参考:https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*IFfoS67_HssAAAAAAAAAAAAAARQnAQ\n scalableRange: 0,\n allowDragOnItem: false\n };\n },\n getEvents: function getEvents() {\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'onMouseUp',\n keyup: 'onKeyUp',\n focus: 'onKeyUp',\n keydown: 'onKeyDown',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onMouseUp'\n };\n },\n updateViewport: function updateViewport(e) {\n var origin = this.origin;\n var clientX = +e.clientX;\n var clientY = +e.clientY;\n\n if (isNaN(clientX) || isNaN(clientY)) {\n return;\n }\n\n var dx = clientX - origin.x;\n var dy = clientY - origin.y;\n\n if (this.get('direction') === 'x') {\n dy = 0;\n } else if (this.get('direction') === 'y') {\n dx = 0;\n }\n\n this.origin = {\n x: clientX,\n y: clientY\n };\n var width = this.graph.get('width');\n var height = this.graph.get('height');\n var graphCanvasBBox = this.graph.get('canvas').getCanvasBBox();\n var expandWidth = this.scalableRange;\n var expandHeight = this.scalableRange; // 若 scalableRange 是 0~1 的小数,则作为比例考虑\n\n if (expandWidth < 1 && expandWidth > -1) {\n expandWidth = width * expandWidth;\n expandHeight = height * expandHeight;\n }\n\n if (graphCanvasBBox.minX <= width + expandWidth && graphCanvasBBox.minX + dx > width + expandWidth || graphCanvasBBox.maxX + expandWidth >= 0 && graphCanvasBBox.maxX + expandWidth + dx < 0) {\n dx = 0;\n }\n\n if (graphCanvasBBox.minY <= height + expandHeight && graphCanvasBBox.minY + dy > height + expandHeight || graphCanvasBBox.maxY + expandHeight >= 0 && graphCanvasBBox.maxY + expandHeight + dy < 0) {\n dy = 0;\n }\n\n this.graph.translate(dx, dy);\n },\n onTouchStart: function onTouchStart(e) {\n var self = this;\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1]; // 如果是双指操作,不允许拖拽画布\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n self.onMouseDown(e);\n },\n onMouseDown: function onMouseDown(e) {\n var self = this;\n var event = e.originalEvent;\n\n if (event && e.name !== _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"G6Event\"].TOUCHSTART && event.button !== 0) {\n return;\n }\n\n if (e.name !== _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"G6Event\"].TOUCHSTART && typeof window !== 'undefined' && window.event && !window.event.buttons && !window.event.button) {\n return;\n }\n\n if (!this.shouldBegin.call(this, e)) {\n return;\n }\n\n if (self.keydown) return;\n var target = e.target;\n var targetIsCanvas = target && target.isCanvas && target.isCanvas();\n if (!this.allowDragOnItem && !targetIsCanvas) return;\n self.origin = {\n x: e.clientX,\n y: e.clientY\n };\n self.dragging = false;\n\n if (this.enableOptimize) {\n // 拖动 canvas 过程中隐藏所有的边及label\n var graph = this.graph;\n var edges = graph.getEdges();\n\n for (var i = 0, len = edges.length; i < len; i++) {\n var shapes = edges[i].get('group').get('children');\n if (!shapes) continue;\n shapes.forEach(function (shape) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n });\n }\n\n var nodes = graph.getNodes();\n\n for (var j = 0, nodeLen = nodes.length; j < nodeLen; j++) {\n var container = nodes[j].getContainer();\n var children = container.get('children');\n\n for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {\n var child = children_1[_i];\n var isKeyShape = child.get('isKeyShape');\n\n if (!isKeyShape) {\n child.set('ori-visibility', child.get('ori-visibility') || child.get('visible'));\n child.hide();\n }\n }\n }\n }\n },\n onTouchMove: function onTouchMove(e) {\n var self = this;\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1]; // 如果是双指操作,不允许拖拽画布,结束拖拽\n\n if (event1 && event2) {\n this.onMouseUp(e);\n return;\n }\n\n e.preventDefault();\n self.onMouseMove(e);\n },\n onMouseMove: function onMouseMove(e) {\n var graph = this.graph;\n if (this.keydown) return;\n var target = e.target;\n var targetIsCanvas = target && target.isCanvas && target.isCanvas();\n if (!this.allowDragOnItem && !targetIsCanvas) return;\n e = cloneEvent(e);\n\n if (!this.origin) {\n return;\n }\n\n if (!this.dragging) {\n if (abs(this.origin.x - e.clientX) + abs(this.origin.y - e.clientY) < DRAG_OFFSET) {\n return;\n }\n\n if (this.shouldBegin.call(this, e)) {\n e.type = 'dragstart';\n graph.emit('canvas:dragstart', e);\n this.originPosition = {\n x: e.clientX,\n y: e.clientY\n };\n this.dragging = true;\n }\n } else {\n e.type = 'drag';\n graph.emit('canvas:drag', e);\n }\n\n if (this.shouldUpdate.call(this, e)) {\n this.updateViewport(e);\n }\n },\n onMouseUp: function onMouseUp(e) {\n var _a, _b;\n\n var graph = this.graph;\n if (this.keydown) return;\n var currentZoom = graph.getZoom();\n var modeController = graph.get('modeController');\n var zoomCanvas = (_b = (_a = modeController === null || modeController === void 0 ? void 0 : modeController.modes[modeController.mode]) === null || _a === void 0 ? void 0 : _a.filter(function (behavior) {\n return behavior.type === 'zoom-canvas';\n })) === null || _b === void 0 ? void 0 : _b[0];\n var optimizeZoom = zoomCanvas ? zoomCanvas.optimizeZoom || 0.1 : 0;\n\n if (this.enableOptimize) {\n // 拖动结束后显示所有的边\n var edges = graph.getEdges();\n\n for (var i = 0, len = edges.length; i < len; i++) {\n var shapes = edges[i].get('group').get('children');\n if (!shapes) continue;\n shapes.forEach(function (shape) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n });\n }\n\n if (currentZoom > optimizeZoom) {\n var nodes = graph.getNodes();\n\n for (var j = 0, nodeLen = nodes.length; j < nodeLen; j++) {\n var container = nodes[j].getContainer();\n var children = container.get('children');\n\n for (var _i = 0, children_2 = children; _i < children_2.length; _i++) {\n var child = children_2[_i];\n var isKeyShape = child.get('isKeyShape');\n\n if (!isKeyShape) {\n var oriVis = child.get('ori-visibility');\n if (oriVis) child.show();\n }\n }\n }\n }\n }\n\n if (!this.dragging) {\n this.origin = null;\n return;\n }\n\n e = cloneEvent(e);\n\n if (this.shouldEnd.call(this, e)) {\n this.updateViewport(e);\n }\n\n e.type = 'dragend';\n e.dx = e.clientX - this.originPosition.x;\n e.dy = e.clientY - this.originPosition.y;\n graph.emit('canvas:dragend', e);\n this.endDrag();\n },\n endDrag: function endDrag() {\n this.origin = null;\n this.dragging = false;\n this.dragbegin = false;\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (ALLOW_EVENTS.indexOf(code.toLowerCase()) > -1) {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n this.keydown = false;\n this.origin = null;\n this.dragging = false;\n this.dragbegin = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZHJhZy1jYW52YXMuanM/NmFmMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBd0M7QUFDYjtBQUMzQixpQkFBaUIsNkNBQUk7QUFDckIsWUFBWSw2Q0FBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEIscURBQU87QUFDbkM7QUFDQTs7QUFFQSxtQkFBbUIscURBQU87QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlDQUF5QyxTQUFTO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7O0FBRUEsNkNBQTZDLGFBQWE7QUFDMUQ7QUFDQTs7QUFFQSwrQ0FBK0Msd0JBQXdCO0FBQ3ZFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5Q0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUEsK0NBQStDLGFBQWE7QUFDNUQ7QUFDQTs7QUFFQSxpREFBaUQsd0JBQXdCO0FBQ3pFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2RyYWctY2FudmFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRzZFdmVudCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi4vdXRpbCc7XG52YXIgY2xvbmVFdmVudCA9IFV0aWwuY2xvbmVFdmVudCxcbiAgICBpc05hTiA9IFV0aWwuaXNOYU47XG52YXIgYWJzID0gTWF0aC5hYnM7XG52YXIgRFJBR19PRkZTRVQgPSAxMDtcbnZhciBBTExPV19FVkVOVFMgPSBbJ3NoaWZ0JywgJ2N0cmwnLCAnYWx0JywgJ2NvbnRyb2wnXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlyZWN0aW9uOiAnYm90aCcsXG4gICAgICBlbmFibGVPcHRpbWl6ZTogZmFsc2UsXG4gICAgICAvLyBkcmFnLWNhbnZhcyDlj6/mi5bliqjnmoTmianlsZXojIPlm7TvvIzpu5jorqTkuLogMO+8jOWNs+acgOWkmuWPr+S7peaLluWKqOS4gOWxj+eahOS9jee9rlxuICAgICAgLy8g5b2T6K6+572u55qE5YC85aSn5LqOIDAg5pe277yM5Y2z5ouW5Yqo5Y+v5Lul6LaF6L+H5LiA5bGPXG4gICAgICAvLyDlvZPorr7nva7nmoTlgLzlsI/kuo4gMCDml7bvvIznm7jlvZPkuo7nvKnlsI/kuoblj6/mi5bliqjojIPlm7RcbiAgICAgIC8vIOWFt+S9k+WunuS+i+WPr+WPguiAg++8mmh0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vbWRuL3Jtc19mOGM2YTAvYWZ0cy9pbWcvQSpJRmZvUzY3X0hzc0FBQUFBQUFBQUFBQUFBUlFuQVFcbiAgICAgIHNjYWxhYmxlUmFuZ2U6IDAsXG4gICAgICBhbGxvd0RyYWdPbkl0ZW06IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRyYWdzdGFydDogJ29uTW91c2VEb3duJyxcbiAgICAgIGRyYWc6ICdvbk1vdXNlTW92ZScsXG4gICAgICBkcmFnZW5kOiAnb25Nb3VzZVVwJyxcbiAgICAgICdjYW52YXM6Y2xpY2snOiAnb25Nb3VzZVVwJyxcbiAgICAgIGtleXVwOiAnb25LZXlVcCcsXG4gICAgICBmb2N1czogJ29uS2V5VXAnLFxuICAgICAga2V5ZG93bjogJ29uS2V5RG93bicsXG4gICAgICB0b3VjaHN0YXJ0OiAnb25Ub3VjaFN0YXJ0JyxcbiAgICAgIHRvdWNobW92ZTogJ29uVG91Y2hNb3ZlJyxcbiAgICAgIHRvdWNoZW5kOiAnb25Nb3VzZVVwJ1xuICAgIH07XG4gIH0sXG4gIHVwZGF0ZVZpZXdwb3J0OiBmdW5jdGlvbiB1cGRhdGVWaWV3cG9ydChlKSB7XG4gICAgdmFyIG9yaWdpbiA9IHRoaXMub3JpZ2luO1xuICAgIHZhciBjbGllbnRYID0gK2UuY2xpZW50WDtcbiAgICB2YXIgY2xpZW50WSA9ICtlLmNsaWVudFk7XG5cbiAgICBpZiAoaXNOYU4oY2xpZW50WCkgfHwgaXNOYU4oY2xpZW50WSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZHggPSBjbGllbnRYIC0gb3JpZ2luLng7XG4gICAgdmFyIGR5ID0gY2xpZW50WSAtIG9yaWdpbi55O1xuXG4gICAgaWYgKHRoaXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ3gnKSB7XG4gICAgICBkeSA9IDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmdldCgnZGlyZWN0aW9uJykgPT09ICd5Jykge1xuICAgICAgZHggPSAwO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luID0ge1xuICAgICAgeDogY2xpZW50WCxcbiAgICAgIHk6IGNsaWVudFlcbiAgICB9O1xuICAgIHZhciB3aWR0aCA9IHRoaXMuZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBoZWlnaHQgPSB0aGlzLmdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIGdyYXBoQ2FudmFzQkJveCA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKS5nZXRDYW52YXNCQm94KCk7XG4gICAgdmFyIGV4cGFuZFdpZHRoID0gdGhpcy5zY2FsYWJsZVJhbmdlO1xuICAgIHZhciBleHBhbmRIZWlnaHQgPSB0aGlzLnNjYWxhYmxlUmFuZ2U7IC8vIOiLpSBzY2FsYWJsZVJhbmdlIOaYryAwfjEg55qE5bCP5pWw77yM5YiZ5L2c5Li65q+U5L6L6ICD6JmRXG5cbiAgICBpZiAoZXhwYW5kV2lkdGggPCAxICYmIGV4cGFuZFdpZHRoID4gLTEpIHtcbiAgICAgIGV4cGFuZFdpZHRoID0gd2lkdGggKiBleHBhbmRXaWR0aDtcbiAgICAgIGV4cGFuZEhlaWdodCA9IGhlaWdodCAqIGV4cGFuZEhlaWdodDtcbiAgICB9XG5cbiAgICBpZiAoZ3JhcGhDYW52YXNCQm94Lm1pblggPD0gd2lkdGggKyBleHBhbmRXaWR0aCAmJiBncmFwaENhbnZhc0JCb3gubWluWCArIGR4ID4gd2lkdGggKyBleHBhbmRXaWR0aCB8fCBncmFwaENhbnZhc0JCb3gubWF4WCArIGV4cGFuZFdpZHRoID49IDAgJiYgZ3JhcGhDYW52YXNCQm94Lm1heFggKyBleHBhbmRXaWR0aCArIGR4IDwgMCkge1xuICAgICAgZHggPSAwO1xuICAgIH1cblxuICAgIGlmIChncmFwaENhbnZhc0JCb3gubWluWSA8PSBoZWlnaHQgKyBleHBhbmRIZWlnaHQgJiYgZ3JhcGhDYW52YXNCQm94Lm1pblkgKyBkeSA+IGhlaWdodCArIGV4cGFuZEhlaWdodCB8fCBncmFwaENhbnZhc0JCb3gubWF4WSArIGV4cGFuZEhlaWdodCA+PSAwICYmIGdyYXBoQ2FudmFzQkJveC5tYXhZICsgZXhwYW5kSGVpZ2h0ICsgZHkgPCAwKSB7XG4gICAgICBkeSA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5ncmFwaC50cmFuc2xhdGUoZHgsIGR5KTtcbiAgfSxcbiAgb25Ub3VjaFN0YXJ0OiBmdW5jdGlvbiBvblRvdWNoU3RhcnQoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgdG91Y2hlcyA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdOyAvLyDlpoLmnpzmmK/lj4zmjIfmk43kvZzvvIzkuI3lhYHorrjmi5bmi73nlLvluINcblxuICAgIGlmIChldmVudDEgJiYgZXZlbnQyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNlbGYub25Nb3VzZURvd24oZSk7XG4gIH0sXG4gIG9uTW91c2VEb3duOiBmdW5jdGlvbiBvbk1vdXNlRG93bihlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBldmVudCA9IGUub3JpZ2luYWxFdmVudDtcblxuICAgIGlmIChldmVudCAmJiBlLm5hbWUgIT09IEc2RXZlbnQuVE9VQ0hTVEFSVCAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZS5uYW1lICE9PSBHNkV2ZW50LlRPVUNIU1RBUlQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmV2ZW50ICYmICF3aW5kb3cuZXZlbnQuYnV0dG9ucyAmJiAhd2luZG93LmV2ZW50LmJ1dHRvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zaG91bGRCZWdpbi5jYWxsKHRoaXMsIGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlbGYua2V5ZG93bikgcmV0dXJuO1xuICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICB2YXIgdGFyZ2V0SXNDYW52YXMgPSB0YXJnZXQgJiYgdGFyZ2V0LmlzQ2FudmFzICYmIHRhcmdldC5pc0NhbnZhcygpO1xuICAgIGlmICghdGhpcy5hbGxvd0RyYWdPbkl0ZW0gJiYgIXRhcmdldElzQ2FudmFzKSByZXR1cm47XG4gICAgc2VsZi5vcmlnaW4gPSB7XG4gICAgICB4OiBlLmNsaWVudFgsXG4gICAgICB5OiBlLmNsaWVudFlcbiAgICB9O1xuICAgIHNlbGYuZHJhZ2dpbmcgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmVuYWJsZU9wdGltaXplKSB7XG4gICAgICAvLyDmi5bliqggY2FudmFzIOi/h+eoi+S4remakOiXj+aJgOacieeahOi+ueWPimxhYmVsXG4gICAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgICAgdmFyIGVkZ2VzID0gZ3JhcGguZ2V0RWRnZXMoKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGVkZ2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBzaGFwZXMgPSBlZGdlc1tpXS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICBpZiAoIXNoYXBlcykgY29udGludWU7XG4gICAgICAgIHNoYXBlcy5mb3JFYWNoKGZ1bmN0aW9uIChzaGFwZSkge1xuICAgICAgICAgIHNoYXBlLnNldCgnb3JpLXZpc2liaWxpdHknLCBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5JykgfHwgc2hhcGUuZ2V0KCd2aXNpYmxlJykpO1xuICAgICAgICAgIHNoYXBlLmhpZGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCk7XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBub2RlTGVuID0gbm9kZXMubGVuZ3RoOyBqIDwgbm9kZUxlbjsgaisrKSB7XG4gICAgICAgIHZhciBjb250YWluZXIgPSBub2Rlc1tqXS5nZXRDb250YWluZXIoKTtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gY29udGFpbmVyLmdldCgnY2hpbGRyZW4nKTtcblxuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGNoaWxkcmVuXzEgPSBjaGlsZHJlbjsgX2kgPCBjaGlsZHJlbl8xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuXzFbX2ldO1xuICAgICAgICAgIHZhciBpc0tleVNoYXBlID0gY2hpbGQuZ2V0KCdpc0tleVNoYXBlJyk7XG5cbiAgICAgICAgICBpZiAoIWlzS2V5U2hhcGUpIHtcbiAgICAgICAgICAgIGNoaWxkLnNldCgnb3JpLXZpc2liaWxpdHknLCBjaGlsZC5nZXQoJ29yaS12aXNpYmlsaXR5JykgfHwgY2hpbGQuZ2V0KCd2aXNpYmxlJykpO1xuICAgICAgICAgICAgY2hpbGQuaGlkZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgb25Ub3VjaE1vdmU6IGZ1bmN0aW9uIG9uVG91Y2hNb3ZlKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHRvdWNoZXMgPSBlLm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICB2YXIgZXZlbnQxID0gdG91Y2hlc1swXTtcbiAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTsgLy8g5aaC5p6c5piv5Y+M5oyH5pON5L2c77yM5LiN5YWB6K645ouW5ou955S75biD77yM57uT5p2f5ouW5ou9XG5cbiAgICBpZiAoZXZlbnQxICYmIGV2ZW50Mikge1xuICAgICAgdGhpcy5vbk1vdXNlVXAoZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNlbGYub25Nb3VzZU1vdmUoZSk7XG4gIH0sXG4gIG9uTW91c2VNb3ZlOiBmdW5jdGlvbiBvbk1vdXNlTW92ZShlKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICBpZiAodGhpcy5rZXlkb3duKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgIHZhciB0YXJnZXRJc0NhbnZhcyA9IHRhcmdldCAmJiB0YXJnZXQuaXNDYW52YXMgJiYgdGFyZ2V0LmlzQ2FudmFzKCk7XG4gICAgaWYgKCF0aGlzLmFsbG93RHJhZ09uSXRlbSAmJiAhdGFyZ2V0SXNDYW52YXMpIHJldHVybjtcbiAgICBlID0gY2xvbmVFdmVudChlKTtcblxuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIGlmIChhYnModGhpcy5vcmlnaW4ueCAtIGUuY2xpZW50WCkgKyBhYnModGhpcy5vcmlnaW4ueSAtIGUuY2xpZW50WSkgPCBEUkFHX09GRlNFVCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNob3VsZEJlZ2luLmNhbGwodGhpcywgZSkpIHtcbiAgICAgICAgZS50eXBlID0gJ2RyYWdzdGFydCc7XG4gICAgICAgIGdyYXBoLmVtaXQoJ2NhbnZhczpkcmFnc3RhcnQnLCBlKTtcbiAgICAgICAgdGhpcy5vcmlnaW5Qb3NpdGlvbiA9IHtcbiAgICAgICAgICB4OiBlLmNsaWVudFgsXG4gICAgICAgICAgeTogZS5jbGllbnRZXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlLnR5cGUgPSAnZHJhZyc7XG4gICAgICBncmFwaC5lbWl0KCdjYW52YXM6ZHJhZycsIGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3VsZFVwZGF0ZS5jYWxsKHRoaXMsIGUpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0KGUpO1xuICAgIH1cbiAgfSxcbiAgb25Nb3VzZVVwOiBmdW5jdGlvbiBvbk1vdXNlVXAoZSkge1xuICAgIHZhciBfYSwgX2I7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIGlmICh0aGlzLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgY3VycmVudFpvb20gPSBncmFwaC5nZXRab29tKCk7XG4gICAgdmFyIG1vZGVDb250cm9sbGVyID0gZ3JhcGguZ2V0KCdtb2RlQ29udHJvbGxlcicpO1xuICAgIHZhciB6b29tQ2FudmFzID0gKF9iID0gKF9hID0gbW9kZUNvbnRyb2xsZXIgPT09IG51bGwgfHwgbW9kZUNvbnRyb2xsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vZGVDb250cm9sbGVyLm1vZGVzW21vZGVDb250cm9sbGVyLm1vZGVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZmlsdGVyKGZ1bmN0aW9uIChiZWhhdmlvcikge1xuICAgICAgcmV0dXJuIGJlaGF2aW9yLnR5cGUgPT09ICd6b29tLWNhbnZhcyc7XG4gICAgfSkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlswXTtcbiAgICB2YXIgb3B0aW1pemVab29tID0gem9vbUNhbnZhcyA/IHpvb21DYW52YXMub3B0aW1pemVab29tIHx8IDAuMSA6IDA7XG5cbiAgICBpZiAodGhpcy5lbmFibGVPcHRpbWl6ZSkge1xuICAgICAgLy8g5ouW5Yqo57uT5p2f5ZCO5pi+56S65omA5pyJ55qE6L65XG4gICAgICB2YXIgZWRnZXMgPSBncmFwaC5nZXRFZGdlcygpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZWRnZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIHNoYXBlcyA9IGVkZ2VzW2ldLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgIGlmICghc2hhcGVzKSBjb250aW51ZTtcbiAgICAgICAgc2hhcGVzLmZvckVhY2goZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgICAgICAgdmFyIG9yaVZpcyA9IHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKTtcbiAgICAgICAgICBpZiAob3JpVmlzKSBzaGFwZS5zaG93KCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoY3VycmVudFpvb20gPiBvcHRpbWl6ZVpvb20pIHtcbiAgICAgICAgdmFyIG5vZGVzID0gZ3JhcGguZ2V0Tm9kZXMoKTtcblxuICAgICAgICBmb3IgKHZhciBqID0gMCwgbm9kZUxlbiA9IG5vZGVzLmxlbmd0aDsgaiA8IG5vZGVMZW47IGorKykge1xuICAgICAgICAgIHZhciBjb250YWluZXIgPSBub2Rlc1tqXS5nZXRDb250YWluZXIoKTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBjb250YWluZXIuZ2V0KCdjaGlsZHJlbicpO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBjaGlsZHJlbl8yID0gY2hpbGRyZW47IF9pIDwgY2hpbGRyZW5fMi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuXzJbX2ldO1xuICAgICAgICAgICAgdmFyIGlzS2V5U2hhcGUgPSBjaGlsZC5nZXQoJ2lzS2V5U2hhcGUnKTtcblxuICAgICAgICAgICAgaWYgKCFpc0tleVNoYXBlKSB7XG4gICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBjaGlsZC5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgIGlmIChvcmlWaXMpIGNoaWxkLnNob3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIHRoaXMub3JpZ2luID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlID0gY2xvbmVFdmVudChlKTtcblxuICAgIGlmICh0aGlzLnNob3VsZEVuZC5jYWxsKHRoaXMsIGUpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0KGUpO1xuICAgIH1cblxuICAgIGUudHlwZSA9ICdkcmFnZW5kJztcbiAgICBlLmR4ID0gZS5jbGllbnRYIC0gdGhpcy5vcmlnaW5Qb3NpdGlvbi54O1xuICAgIGUuZHkgPSBlLmNsaWVudFkgLSB0aGlzLm9yaWdpblBvc2l0aW9uLnk7XG4gICAgZ3JhcGguZW1pdCgnY2FudmFzOmRyYWdlbmQnLCBlKTtcbiAgICB0aGlzLmVuZERyYWcoKTtcbiAgfSxcbiAgZW5kRHJhZzogZnVuY3Rpb24gZW5kRHJhZygpIHtcbiAgICB0aGlzLm9yaWdpbiA9IG51bGw7XG4gICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZHJhZ2JlZ2luID0gZmFsc2U7XG4gIH0sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvZGUgPSBlLmtleTtcblxuICAgIGlmICghY29kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChBTExPV19FVkVOVFMuaW5kZXhPZihjb2RlLnRvTG93ZXJDYXNlKCkpID4gLTEpIHtcbiAgICAgIHNlbGYua2V5ZG93biA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYua2V5ZG93biA9IGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgb25LZXlVcDogZnVuY3Rpb24gb25LZXlVcCgpIHtcbiAgICB0aGlzLmtleWRvd24gPSBmYWxzZTtcbiAgICB0aGlzLm9yaWdpbiA9IG51bGw7XG4gICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZHJhZ2JlZ2luID0gZmFsc2U7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/drag-canvas.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/drag-combo.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/drag-combo.js ***! \************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g6-pc/es/util/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-pc/es/global.js\");\n\n/*\n * @Author: moyee\n * @LastEditors: moyee\n * @Description: 拖动 Combo\n */\n\n\n\n\nvar calculationItemsBBox = _util__WEBPACK_IMPORTED_MODULE_2__[\"default\"].calculationItemsBBox;\n/**\n * 遍历拖动的 Combo 下的所有 Combo\n * @param data 拖动的 Combo\n * @param fn\n */\n\nvar traverseCombo = function traverseCombo(data, fn) {\n if (fn(data) === false) {\n return;\n }\n\n if (data) {\n var combos = data.get('combos');\n\n if (combos.length === 0) {\n return false;\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(combos, function (child) {\n traverseCombo(child, fn);\n });\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n enableDelegate: false,\n delegateStyle: {},\n // 拖动节点过程中是否只改变 Combo 的大小,而不改变其结构\n onlyChangeComboSize: false,\n // 拖动过程中目标 combo 状态样式\n activeState: '',\n selectedState: 'selected'\n };\n },\n getEvents: function getEvents() {\n return {\n 'combo:dragstart': 'onDragStart',\n 'combo:drag': 'onDrag',\n 'combo:dragend': 'onDragEnd',\n 'combo:drop': 'onDrop',\n 'node:drop': 'onNodeDrop',\n 'combo:dragenter': 'onDragEnter',\n 'combo:dragleave': 'onDragLeave'\n };\n },\n validationCombo: function validationCombo(evt) {\n var item = evt.item;\n\n if (!item || item.destroyed) {\n return false;\n }\n\n if (!this.shouldUpdate.call(this, evt)) {\n return false;\n }\n\n var type = item.getType();\n\n if (type !== 'combo') {\n return false;\n }\n\n return true;\n },\n onDragStart: function onDragStart(evt) {\n var _this = this;\n\n var graph = this.graph;\n var item = evt.item;\n this.currentShouldEnd = true;\n if (!this.validationCombo(evt)) return;\n this.targets = []; // 获取所有选中的 Combo\n\n var combos = graph.findAllByState('combo', this.selectedState);\n var currentCombo = item.get('id');\n var dragCombos = combos.filter(function (combo) {\n var comboId = combo.get('id');\n return currentCombo === comboId;\n });\n\n if (dragCombos.length === 0) {\n this.targets.push(item);\n } else {\n this.targets = combos;\n }\n\n if (this.activeState) {\n this.targets.map(function (combo) {\n var model = combo.getModel();\n\n if (model.parentId) {\n var parentCombo = graph.findById(model.parentId);\n\n if (parentCombo) {\n graph.setItemState(parentCombo, _this.activeState, true);\n }\n }\n });\n }\n\n this.point = {};\n this.originPoint = {};\n this.origin = {\n x: evt.x,\n y: evt.y\n };\n this.currentItemChildCombos = [];\n traverseCombo(item, function (param) {\n if (param.destroyed) {\n return false;\n }\n\n var model = param.getModel();\n\n _this.currentItemChildCombos.push(model.id);\n\n return true;\n });\n },\n onDrag: function onDrag(evt) {\n var _this = this;\n\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n\n if (this.enableDelegate) {\n this.updateDelegate(evt);\n } else {\n if (this.activeState) {\n var graph_1 = this.graph;\n var item = evt.item;\n var model_1 = item.getModel(); // 拖动过程中实时计算距离\n\n var combos = graph_1.getCombos();\n var sourceBBox = item.getBBox();\n var centerX_1 = sourceBBox.centerX,\n centerY_1 = sourceBBox.centerY,\n width_1 = sourceBBox.width; // 参与计算的 Combo,需要排除掉:\n // 1、拖动 combo 自己\n // 2、拖动 combo 的 parent\n // 3、拖动 Combo 的 children\n\n var calcCombos = combos.filter(function (combo) {\n var cmodel = combo.getModel(); // 被拖动的是最外层的 Combo,无 parent,排除自身和子元素\n\n if (!model_1.parentId) {\n return cmodel.id !== model_1.id && !_this.currentItemChildCombos.includes(cmodel.id);\n }\n\n return cmodel.id !== model_1.id && !_this.currentItemChildCombos.includes(cmodel.id);\n });\n calcCombos.map(function (combo) {\n var _a = combo.getBBox(),\n cx = _a.centerX,\n cy = _a.centerY,\n w = _a.width; // 拖动的 combo 和要进入的 combo 之间的距离\n\n\n var disX = centerX_1 - cx;\n var disY = centerY_1 - cy; // 圆心距离\n\n var distance = 2 * Math.sqrt(disX * disX + disY * disY);\n\n if (width_1 + w - distance > 0.8 * width_1) {\n graph_1.setItemState(combo, _this.activeState, true);\n } else {\n graph_1.setItemState(combo, _this.activeState, false);\n }\n });\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(this.targets, function (item) {\n _this.updateCombo(item, evt);\n });\n }\n },\n updatePositions: function updatePositions(evt, restore) {\n var _this = this; // 当启用 delegate 时,拖动结束时需要更新 combo\n\n\n if (this.enableDelegate || restore) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(this.targets, function (item) {\n _this.updateCombo(item, evt, restore);\n });\n }\n },\n onDrop: function onDrop(evt) {\n var _this = this; // 被放下的目标 combo\n\n\n var item = evt.item;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, item);\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd || !item || !this.targets || item.destroyed) return;\n var graph = this.graph;\n var targetModel = item.getModel();\n this.targets.map(function (combo) {\n var model = combo.getModel();\n\n if (model.parentId !== targetModel.id) {\n if (_this.activeState) {\n graph.setItemState(item, _this.activeState, false);\n } // 将 Combo 放置到某个 Combo 上面时,只有当 onlyChangeComboSize 为 false 时候才更新 Combo 结构\n\n\n if (!_this.onlyChangeComboSize) {\n graph.updateComboTree(combo, targetModel.id);\n } else {\n graph.updateCombo(combo);\n }\n } else {\n graph.updateCombo(item);\n }\n });\n this.end(item, evt); // 如果已经拖放下了,则不需要再通过距离判断了\n\n this.endComparison = true;\n },\n onNodeDrop: function onNodeDrop(evt) {\n var _this = this;\n\n if (!this.targets || this.targets.length === 0) return;\n var graph = this.graph;\n var item = evt.item;\n var comboId = item.getModel().comboId;\n var newParentCombo = comboId ? graph.findById(comboId) : undefined;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, newParentCombo);\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd) return;\n var droppedCombo; // 如果被放置的的节点有 comboId,且这个 comboId 与正在被拖拽的 combo 的父 id 不相同,则更新父亲为 comboId\n\n if (comboId) {\n if (this.activeState) {\n var combo = graph.findById(comboId);\n graph.setItemState(combo, this.activeState, false);\n }\n\n this.targets.map(function (combo) {\n if (!_this.onlyChangeComboSize) {\n if (comboId !== combo.getID()) {\n droppedCombo = graph.findById(comboId);\n if (comboId !== combo.getModel().parentId) graph.updateComboTree(combo, comboId);\n }\n } else {\n graph.updateCombo(combo);\n }\n });\n } else {\n // 如果被放置的节点没有 comboId,且正在被拖拽的 combo 有父 id,则更新父亲为 undefined\n this.targets.map(function (combo) {\n if (!_this.onlyChangeComboSize) {\n var model = combo.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(combo);\n }\n } else {\n graph.updateCombo(combo);\n }\n });\n } // 如果已经拖放下了,则不需要再通过距离判断了\n\n\n this.endComparison = true;\n this.end(droppedCombo, evt);\n },\n onDragEnter: function onDragEnter(evt) {\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n var item = evt.item;\n var graph = this.graph;\n\n if (this.activeState) {\n graph.setItemState(item, this.activeState, true);\n }\n },\n onDragLeave: function onDragLeave(evt) {\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n var item = evt.item;\n var graph = this.graph;\n\n if (this.activeState) {\n graph.setItemState(item, this.activeState, false);\n }\n },\n onDragEnd: function onDragEnd(evt) {\n if (!this.targets || this.targets.length === 0) return;\n var item = evt.item;\n\n if (this.currentShouldEnd) {\n this.updatePositions(evt);\n }\n\n var parentCombo = this.getParentCombo(item.getModel().parentId);\n var graph = this.graph;\n\n if (parentCombo && this.activeState) {\n graph.setItemState(parentCombo, this.activeState, false);\n }\n\n this.end(undefined, evt);\n },\n end: function end(comboDropedOn, evt) {\n var _this = this;\n\n if (!this.origin) return;\n var graph = this.graph; // 删除delegate shape\n\n if (this.delegateShape) {\n var delegateGroup = graph.get('delegateGroup');\n delegateGroup.clear();\n this.delegateShape = null;\n }\n\n if (comboDropedOn && this.activeState) {\n graph.setItemState(comboDropedOn, this.activeState, false);\n } // 若没有被放置的 combo,则是被放置在画布上\n\n\n if (!comboDropedOn) {\n this.targets.map(function (combo) {\n // 将 Combo 放置到某个 Combo 上面时,只有当 onlyChangeComboSize 为 false 时候才更新 Combo 结构\n if (!_this.onlyChangeComboSize) {\n graph.updateComboTree(combo);\n } else {\n graph.updateCombo(combo);\n }\n });\n }\n\n this.point = [];\n this.origin = null;\n this.originPoint = null;\n this.targets.length = 0;\n },\n\n /**\n * 遍历 comboTree,分别更新 node 和 combo\n * @param data\n * @param fn\n */\n traverse: function traverse(data, fn) {\n var _this = this;\n\n if (fn(data) === false) {\n return;\n }\n\n if (data) {\n var combos = data.get('combos');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(combos, function (child) {\n _this.traverse(child, fn);\n });\n var nodes = data.get('nodes');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(nodes, function (child) {\n _this.traverse(child, fn);\n });\n }\n },\n updateCombo: function updateCombo(item, evt, restore) {\n var _this = this;\n\n this.traverse(item, function (param) {\n if (param.destroyed) {\n return false;\n }\n\n _this.updateSignleItem(param, evt, restore);\n\n return true;\n });\n },\n\n /**\n *\n * @param item 当前正在拖动的元素\n * @param evt\n */\n updateSignleItem: function updateSignleItem(item, evt, restore) {\n var origin = this.origin;\n var graph = this.graph;\n var model = item.getModel();\n var itemId = item.get('id');\n\n if (!this.point[itemId]) {\n this.point[itemId] = {\n x: model.x,\n y: model.y\n };\n }\n\n var x = evt.x - origin.x + this.point[itemId].x;\n var y = evt.y - origin.y + this.point[itemId].y;\n\n if (restore) {\n x += origin.x - evt.x;\n y += origin.y - evt.y;\n }\n\n graph.updateItem(item, {\n x: x,\n y: y\n });\n },\n\n /**\n * 根据 ID 获取父 Combo\n * @param parentId 父 Combo ID\n */\n getParentCombo: function getParentCombo(parentId) {\n var graph = this.graph;\n\n if (!parentId) {\n return undefined;\n }\n\n var parentCombo = graph.findById(parentId);\n\n if (!parentCombo) {\n return undefined;\n }\n\n return parentCombo;\n },\n updateDelegate: function updateDelegate(evt) {\n var graph = this.graph; // 当没有 delegate shape 时创建\n\n if (!this.delegateShape) {\n var delegateGroup = graph.get('delegateGroup');\n var bbox = null;\n\n if (this.targets.length > 1) {\n bbox = calculationItemsBBox(this.targets);\n } else {\n bbox = this.targets[0].getBBox();\n }\n\n var x = bbox.x,\n y = bbox.y,\n width = bbox.width,\n height = bbox.height,\n minX = bbox.minX,\n minY = bbox.minY;\n this.originPoint = {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minX,\n minY: minY\n };\n\n var attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].delegateStyle), this.delegateStyle);\n\n this.delegateShape = delegateGroup.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n width: bbox.width,\n height: bbox.height,\n x: bbox.x,\n y: bbox.y\n }, attrs),\n name: 'combo-delegate-shape'\n });\n this.delegateShape.set('capture', false);\n this.delegate = this.delegateShape;\n } else {\n var clientX = evt.x - this.origin.x + this.originPoint.minX;\n var clientY = evt.y - this.origin.y + this.originPoint.minY;\n this.delegateShape.attr({\n x: clientX,\n y: clientY\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZHJhZy1jb21iby5qcz9lZWRjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFa0M7QUFDUDtBQUNJO0FBQy9CLDJCQUEyQiw2Q0FBSTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7OztBQUczQjtBQUNBLG9DQUFvQzs7QUFFcEM7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBLHFCQUFxQjs7O0FBR3JCO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0EscUJBQXFCOzs7QUFHckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCx3QkFBd0I7O0FBRXhCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSwrQ0FBTTs7QUFFOUM7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci9kcmFnLWNvbWJvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbi8qXG4gKiBAQXV0aG9yOiBtb3llZVxuICogQExhc3RFZGl0b3JzOiBtb3llZVxuICogQERlc2NyaXB0aW9uOiDmi5bliqggQ29tYm9cbiAqL1xuXG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgVXRpbCBmcm9tICcuLi91dGlsJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbnZhciBjYWxjdWxhdGlvbkl0ZW1zQkJveCA9IFV0aWwuY2FsY3VsYXRpb25JdGVtc0JCb3g7XG4vKipcbiAqIOmBjeWOhuaLluWKqOeahCBDb21ibyDkuIvnmoTmiYDmnIkgQ29tYm9cbiAqIEBwYXJhbSBkYXRhIOaLluWKqOeahCBDb21ib1xuICogQHBhcmFtIGZuXG4gKi9cblxudmFyIHRyYXZlcnNlQ29tYm8gPSBmdW5jdGlvbiB0cmF2ZXJzZUNvbWJvKGRhdGEsIGZuKSB7XG4gIGlmIChmbihkYXRhKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoZGF0YSkge1xuICAgIHZhciBjb21ib3MgPSBkYXRhLmdldCgnY29tYm9zJyk7XG5cbiAgICBpZiAoY29tYm9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGVhY2goY29tYm9zLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIHRyYXZlcnNlQ29tYm8oY2hpbGQsIGZuKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVEZWxlZ2F0ZTogZmFsc2UsXG4gICAgICBkZWxlZ2F0ZVN0eWxlOiB7fSxcbiAgICAgIC8vIOaLluWKqOiKgueCuei/h+eoi+S4reaYr+WQpuWPquaUueWPmCBDb21ibyDnmoTlpKflsI/vvIzogIzkuI3mlLnlj5jlhbbnu5PmnoRcbiAgICAgIG9ubHlDaGFuZ2VDb21ib1NpemU6IGZhbHNlLFxuICAgICAgLy8g5ouW5Yqo6L+H56iL5Lit55uu5qCHIGNvbWJvIOeKtuaAgeagt+W8j1xuICAgICAgYWN0aXZlU3RhdGU6ICcnLFxuICAgICAgc2VsZWN0ZWRTdGF0ZTogJ3NlbGVjdGVkJ1xuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnY29tYm86ZHJhZ3N0YXJ0JzogJ29uRHJhZ1N0YXJ0JyxcbiAgICAgICdjb21ibzpkcmFnJzogJ29uRHJhZycsXG4gICAgICAnY29tYm86ZHJhZ2VuZCc6ICdvbkRyYWdFbmQnLFxuICAgICAgJ2NvbWJvOmRyb3AnOiAnb25Ecm9wJyxcbiAgICAgICdub2RlOmRyb3AnOiAnb25Ob2RlRHJvcCcsXG4gICAgICAnY29tYm86ZHJhZ2VudGVyJzogJ29uRHJhZ0VudGVyJyxcbiAgICAgICdjb21ibzpkcmFnbGVhdmUnOiAnb25EcmFnTGVhdmUnXG4gICAgfTtcbiAgfSxcbiAgdmFsaWRhdGlvbkNvbWJvOiBmdW5jdGlvbiB2YWxpZGF0aW9uQ29tYm8oZXZ0KSB7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcblxuICAgIGlmICghaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zaG91bGRVcGRhdGUuY2FsbCh0aGlzLCBldnQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIHR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIGlmICh0eXBlICE9PSAnY29tYm8nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIG9uRHJhZ1N0YXJ0OiBmdW5jdGlvbiBvbkRyYWdTdGFydChldnQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHRoaXMuY3VycmVudFNob3VsZEVuZCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRpb25Db21ibyhldnQpKSByZXR1cm47XG4gICAgdGhpcy50YXJnZXRzID0gW107IC8vIOiOt+WPluaJgOaciemAieS4reeahCBDb21ib1xuXG4gICAgdmFyIGNvbWJvcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdjb21ibycsIHRoaXMuc2VsZWN0ZWRTdGF0ZSk7XG4gICAgdmFyIGN1cnJlbnRDb21ibyA9IGl0ZW0uZ2V0KCdpZCcpO1xuICAgIHZhciBkcmFnQ29tYm9zID0gY29tYm9zLmZpbHRlcihmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgIHZhciBjb21ib0lkID0gY29tYm8uZ2V0KCdpZCcpO1xuICAgICAgcmV0dXJuIGN1cnJlbnRDb21ibyA9PT0gY29tYm9JZDtcbiAgICB9KTtcblxuICAgIGlmIChkcmFnQ29tYm9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50YXJnZXRzLnB1c2goaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFyZ2V0cyA9IGNvbWJvcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgdmFyIG1vZGVsID0gY29tYm8uZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAobW9kZWwucGFyZW50SWQpIHtcbiAgICAgICAgICB2YXIgcGFyZW50Q29tYm8gPSBncmFwaC5maW5kQnlJZChtb2RlbC5wYXJlbnRJZCk7XG5cbiAgICAgICAgICBpZiAocGFyZW50Q29tYm8pIHtcbiAgICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShwYXJlbnRDb21ibywgX3RoaXMuYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5wb2ludCA9IHt9O1xuICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7fTtcbiAgICB0aGlzLm9yaWdpbiA9IHtcbiAgICAgIHg6IGV2dC54LFxuICAgICAgeTogZXZ0LnlcbiAgICB9O1xuICAgIHRoaXMuY3VycmVudEl0ZW1DaGlsZENvbWJvcyA9IFtdO1xuICAgIHRyYXZlcnNlQ29tYm8oaXRlbSwgZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgICBpZiAocGFyYW0uZGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIG1vZGVsID0gcGFyYW0uZ2V0TW9kZWwoKTtcblxuICAgICAgX3RoaXMuY3VycmVudEl0ZW1DaGlsZENvbWJvcy5wdXNoKG1vZGVsLmlkKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH0sXG4gIG9uRHJhZzogZnVuY3Rpb24gb25EcmFnKGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXRoaXMub3JpZ2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRpb25Db21ibyhldnQpKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5lbmFibGVEZWxlZ2F0ZSkge1xuICAgICAgdGhpcy51cGRhdGVEZWxlZ2F0ZShldnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgICB2YXIgZ3JhcGhfMSA9IHRoaXMuZ3JhcGg7XG4gICAgICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgICAgIHZhciBtb2RlbF8xID0gaXRlbS5nZXRNb2RlbCgpOyAvLyDmi5bliqjov4fnqIvkuK3lrp7ml7borqHnrpfot53nprtcblxuICAgICAgICB2YXIgY29tYm9zID0gZ3JhcGhfMS5nZXRDb21ib3MoKTtcbiAgICAgICAgdmFyIHNvdXJjZUJCb3ggPSBpdGVtLmdldEJCb3goKTtcbiAgICAgICAgdmFyIGNlbnRlclhfMSA9IHNvdXJjZUJCb3guY2VudGVyWCxcbiAgICAgICAgICAgIGNlbnRlcllfMSA9IHNvdXJjZUJCb3guY2VudGVyWSxcbiAgICAgICAgICAgIHdpZHRoXzEgPSBzb3VyY2VCQm94LndpZHRoOyAvLyDlj4LkuI7orqHnrpfnmoQgQ29tYm/vvIzpnIDopoHmjpLpmaTmjonvvJpcbiAgICAgICAgLy8gMeOAgeaLluWKqCBjb21ibyDoh6rlt7FcbiAgICAgICAgLy8gMuOAgeaLluWKqCBjb21ibyDnmoQgcGFyZW50XG4gICAgICAgIC8vIDPjgIHmi5bliqggQ29tYm8g55qEIGNoaWxkcmVuXG5cbiAgICAgICAgdmFyIGNhbGNDb21ib3MgPSBjb21ib3MuZmlsdGVyKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICAgIHZhciBjbW9kZWwgPSBjb21iby5nZXRNb2RlbCgpOyAvLyDooqvmi5bliqjnmoTmmK/mnIDlpJblsYLnmoQgQ29tYm/vvIzml6AgcGFyZW5077yM5o6S6Zmk6Ieq6Lqr5ZKM5a2Q5YWD57SgXG5cbiAgICAgICAgICBpZiAoIW1vZGVsXzEucGFyZW50SWQpIHtcbiAgICAgICAgICAgIHJldHVybiBjbW9kZWwuaWQgIT09IG1vZGVsXzEuaWQgJiYgIV90aGlzLmN1cnJlbnRJdGVtQ2hpbGRDb21ib3MuaW5jbHVkZXMoY21vZGVsLmlkKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY21vZGVsLmlkICE9PSBtb2RlbF8xLmlkICYmICFfdGhpcy5jdXJyZW50SXRlbUNoaWxkQ29tYm9zLmluY2x1ZGVzKGNtb2RlbC5pZCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjYWxjQ29tYm9zLm1hcChmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgICB2YXIgX2EgPSBjb21iby5nZXRCQm94KCksXG4gICAgICAgICAgICAgIGN4ID0gX2EuY2VudGVyWCxcbiAgICAgICAgICAgICAgY3kgPSBfYS5jZW50ZXJZLFxuICAgICAgICAgICAgICB3ID0gX2Eud2lkdGg7IC8vIOaLluWKqOeahCBjb21ibyDlkozopoHov5vlhaXnmoQgY29tYm8g5LmL6Ze055qE6Led56a7XG5cblxuICAgICAgICAgIHZhciBkaXNYID0gY2VudGVyWF8xIC0gY3g7XG4gICAgICAgICAgdmFyIGRpc1kgPSBjZW50ZXJZXzEgLSBjeTsgLy8g5ZyG5b+D6Led56a7XG5cbiAgICAgICAgICB2YXIgZGlzdGFuY2UgPSAyICogTWF0aC5zcXJ0KGRpc1ggKiBkaXNYICsgZGlzWSAqIGRpc1kpO1xuXG4gICAgICAgICAgaWYgKHdpZHRoXzEgKyB3IC0gZGlzdGFuY2UgPiAwLjggKiB3aWR0aF8xKSB7XG4gICAgICAgICAgICBncmFwaF8xLnNldEl0ZW1TdGF0ZShjb21ibywgX3RoaXMuYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBncmFwaF8xLnNldEl0ZW1TdGF0ZShjb21ibywgX3RoaXMuYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBlYWNoKHRoaXMudGFyZ2V0cywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgX3RoaXMudXBkYXRlQ29tYm8oaXRlbSwgZXZ0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlUG9zaXRpb25zOiBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbnMoZXZ0LCByZXN0b3JlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpczsgLy8g5b2T5ZCv55SoIGRlbGVnYXRlIOaXtu+8jOaLluWKqOe7k+adn+aXtumcgOimgeabtOaWsCBjb21ib1xuXG5cbiAgICBpZiAodGhpcy5lbmFibGVEZWxlZ2F0ZSB8fCByZXN0b3JlKSB7XG4gICAgICBlYWNoKHRoaXMudGFyZ2V0cywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgX3RoaXMudXBkYXRlQ29tYm8oaXRlbSwgZXZ0LCByZXN0b3JlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgb25Ecm9wOiBmdW5jdGlvbiBvbkRyb3AoZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpczsgLy8g6KKr5pS+5LiL55qE55uu5qCHIGNvbWJvXG5cblxuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdGhpcy5jdXJyZW50U2hvdWxkRW5kID0gdGhpcy5zaG91bGRFbmQuY2FsbCh0aGlzLCBldnQsIGl0ZW0pO1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKGV2dCwgIXRoaXMuY3VycmVudFNob3VsZEVuZCk7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTaG91bGRFbmQgfHwgIWl0ZW0gfHwgIXRoaXMudGFyZ2V0cyB8fCBpdGVtLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHRhcmdldE1vZGVsID0gaXRlbS5nZXRNb2RlbCgpO1xuICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICB2YXIgbW9kZWwgPSBjb21iby5nZXRNb2RlbCgpO1xuXG4gICAgICBpZiAobW9kZWwucGFyZW50SWQgIT09IHRhcmdldE1vZGVsLmlkKSB7XG4gICAgICAgIGlmIChfdGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCBfdGhpcy5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgICAgICB9IC8vIOWwhiBDb21ibyDmlL7nva7liLDmn5DkuKogQ29tYm8g5LiK6Z2i5pe277yM5Y+q5pyJ5b2TIG9ubHlDaGFuZ2VDb21ib1NpemUg5Li6IGZhbHNlIOaXtuWAmeaJjeabtOaWsCBDb21ibyDnu5PmnoRcblxuXG4gICAgICAgIGlmICghX3RoaXMub25seUNoYW5nZUNvbWJvU2l6ZSkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShjb21ibywgdGFyZ2V0TW9kZWwuaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvKGNvbWJvKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oaXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5lbmQoaXRlbSwgZXZ0KTsgLy8g5aaC5p6c5bey57uP5ouW5pS+5LiL5LqG77yM5YiZ5LiN6ZyA6KaB5YaN6YCa6L+H6Led56a75Yik5pat5LqGXG5cbiAgICB0aGlzLmVuZENvbXBhcmlzb24gPSB0cnVlO1xuICB9LFxuICBvbk5vZGVEcm9wOiBmdW5jdGlvbiBvbk5vZGVEcm9wKGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXRoaXMudGFyZ2V0cyB8fCB0aGlzLnRhcmdldHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHZhciBjb21ib0lkID0gaXRlbS5nZXRNb2RlbCgpLmNvbWJvSWQ7XG4gICAgdmFyIG5ld1BhcmVudENvbWJvID0gY29tYm9JZCA/IGdyYXBoLmZpbmRCeUlkKGNvbWJvSWQpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFNob3VsZEVuZCA9IHRoaXMuc2hvdWxkRW5kLmNhbGwodGhpcywgZXZ0LCBuZXdQYXJlbnRDb21ibyk7XG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoZXZ0LCAhdGhpcy5jdXJyZW50U2hvdWxkRW5kKTtcbiAgICBpZiAoIXRoaXMuY3VycmVudFNob3VsZEVuZCkgcmV0dXJuO1xuICAgIHZhciBkcm9wcGVkQ29tYm87IC8vIOWmguaenOiiq+aUvue9rueahOeahOiKgueCueaciSBjb21ib0lk77yM5LiU6L+Z5LiqIGNvbWJvSWQg5LiO5q2j5Zyo6KKr5ouW5ou955qEIGNvbWJvIOeahOeItiBpZCDkuI3nm7jlkIzvvIzliJnmm7TmlrDniLbkurLkuLogY29tYm9JZFxuXG4gICAgaWYgKGNvbWJvSWQpIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIHZhciBjb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvSWQpO1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoY29tYm8sIHRoaXMuYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgaWYgKCFfdGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAgICAgaWYgKGNvbWJvSWQgIT09IGNvbWJvLmdldElEKCkpIHtcbiAgICAgICAgICAgIGRyb3BwZWRDb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvSWQpO1xuICAgICAgICAgICAgaWYgKGNvbWJvSWQgIT09IGNvbWJvLmdldE1vZGVsKCkucGFyZW50SWQpIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShjb21ibywgY29tYm9JZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvKGNvbWJvKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOWmguaenOiiq+aUvue9rueahOiKgueCueayoeaciSBjb21ib0lk77yM5LiU5q2j5Zyo6KKr5ouW5ou955qEIGNvbWJvIOacieeItiBpZO+8jOWImeabtOaWsOeItuS6suS4uiB1bmRlZmluZWRcbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgIGlmICghX3RoaXMub25seUNoYW5nZUNvbWJvU2l6ZSkge1xuICAgICAgICAgIHZhciBtb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7XG5cbiAgICAgICAgICBpZiAobW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKGNvbWJvKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oY29tYm8pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IC8vIOWmguaenOW3sue7j+aLluaUvuS4i+S6hu+8jOWImeS4jemcgOimgeWGjemAmui/h+i3neemu+WIpOaWreS6hlxuXG5cbiAgICB0aGlzLmVuZENvbXBhcmlzb24gPSB0cnVlO1xuICAgIHRoaXMuZW5kKGRyb3BwZWRDb21ibywgZXZ0KTtcbiAgfSxcbiAgb25EcmFnRW50ZXI6IGZ1bmN0aW9uIG9uRHJhZ0VudGVyKGV2dCkge1xuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGV2dCkpIHJldHVybjtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAodGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIHRoaXMuYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgIH1cbiAgfSxcbiAgb25EcmFnTGVhdmU6IGZ1bmN0aW9uIG9uRHJhZ0xlYXZlKGV2dCkge1xuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGV2dCkpIHJldHVybjtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAodGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIHRoaXMuYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICB9XG4gIH0sXG4gIG9uRHJhZ0VuZDogZnVuY3Rpb24gb25EcmFnRW5kKGV2dCkge1xuICAgIGlmICghdGhpcy50YXJnZXRzIHx8IHRoaXMudGFyZ2V0cy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudFNob3VsZEVuZCkge1xuICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoZXZ0KTtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50Q29tYm8gPSB0aGlzLmdldFBhcmVudENvbWJvKGl0ZW0uZ2V0TW9kZWwoKS5wYXJlbnRJZCk7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmIChwYXJlbnRDb21ibyAmJiB0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUocGFyZW50Q29tYm8sIHRoaXMuYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmVuZCh1bmRlZmluZWQsIGV2dCk7XG4gIH0sXG4gIGVuZDogZnVuY3Rpb24gZW5kKGNvbWJvRHJvcGVkT24sIGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXRoaXMub3JpZ2luKSByZXR1cm47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDsgLy8g5Yig6ZmkZGVsZWdhdGUgc2hhcGVcblxuICAgIGlmICh0aGlzLmRlbGVnYXRlU2hhcGUpIHtcbiAgICAgIHZhciBkZWxlZ2F0ZUdyb3VwID0gZ3JhcGguZ2V0KCdkZWxlZ2F0ZUdyb3VwJyk7XG4gICAgICBkZWxlZ2F0ZUdyb3VwLmNsZWFyKCk7XG4gICAgICB0aGlzLmRlbGVnYXRlU2hhcGUgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChjb21ib0Ryb3BlZE9uICYmIHRoaXMuYWN0aXZlU3RhdGUpIHtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ib0Ryb3BlZE9uLCB0aGlzLmFjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgfSAvLyDoi6XmsqHmnInooqvmlL7nva7nmoQgY29tYm/vvIzliJnmmK/ooqvmlL7nva7lnKjnlLvluIPkuIpcblxuXG4gICAgaWYgKCFjb21ib0Ryb3BlZE9uKSB7XG4gICAgICB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICAvLyDlsIYgQ29tYm8g5pS+572u5Yiw5p+Q5LiqIENvbWJvIOS4iumdouaXtu+8jOWPquacieW9kyBvbmx5Q2hhbmdlQ29tYm9TaXplIOS4uiBmYWxzZSDml7blgJnmiY3mm7TmlrAgQ29tYm8g57uT5p6EXG4gICAgICAgIGlmICghX3RoaXMub25seUNoYW5nZUNvbWJvU2l6ZSkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShjb21ibyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oY29tYm8pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnBvaW50ID0gW107XG4gICAgdGhpcy5vcmlnaW4gPSBudWxsO1xuICAgIHRoaXMub3JpZ2luUG9pbnQgPSBudWxsO1xuICAgIHRoaXMudGFyZ2V0cy5sZW5ndGggPSAwO1xuICB9LFxuXG4gIC8qKlxuICAgKiDpgY3ljoYgY29tYm9UcmVl77yM5YiG5Yir5pu05pawIG5vZGUg5ZKMIGNvbWJvXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwYXJhbSBmblxuICAgKi9cbiAgdHJhdmVyc2U6IGZ1bmN0aW9uIHRyYXZlcnNlKGRhdGEsIGZuKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmIChmbihkYXRhKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgdmFyIGNvbWJvcyA9IGRhdGEuZ2V0KCdjb21ib3MnKTtcbiAgICAgIGVhY2goY29tYm9zLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgX3RoaXMudHJhdmVyc2UoY2hpbGQsIGZuKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIG5vZGVzID0gZGF0YS5nZXQoJ25vZGVzJyk7XG4gICAgICBlYWNoKG5vZGVzLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgX3RoaXMudHJhdmVyc2UoY2hpbGQsIGZuKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlQ29tYm86IGZ1bmN0aW9uIHVwZGF0ZUNvbWJvKGl0ZW0sIGV2dCwgcmVzdG9yZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLnRyYXZlcnNlKGl0ZW0sIGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgaWYgKHBhcmFtLmRlc3Ryb3llZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLnVwZGF0ZVNpZ25sZUl0ZW0ocGFyYW0sIGV2dCwgcmVzdG9yZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSDlvZPliY3mraPlnKjmi5bliqjnmoTlhYPntKBcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgdXBkYXRlU2lnbmxlSXRlbTogZnVuY3Rpb24gdXBkYXRlU2lnbmxlSXRlbShpdGVtLCBldnQsIHJlc3RvcmUpIHtcbiAgICB2YXIgb3JpZ2luID0gdGhpcy5vcmlnaW47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdmFyIGl0ZW1JZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgaWYgKCF0aGlzLnBvaW50W2l0ZW1JZF0pIHtcbiAgICAgIHRoaXMucG9pbnRbaXRlbUlkXSA9IHtcbiAgICAgICAgeDogbW9kZWwueCxcbiAgICAgICAgeTogbW9kZWwueVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgeCA9IGV2dC54IC0gb3JpZ2luLnggKyB0aGlzLnBvaW50W2l0ZW1JZF0ueDtcbiAgICB2YXIgeSA9IGV2dC55IC0gb3JpZ2luLnkgKyB0aGlzLnBvaW50W2l0ZW1JZF0ueTtcblxuICAgIGlmIChyZXN0b3JlKSB7XG4gICAgICB4ICs9IG9yaWdpbi54IC0gZXZ0Lng7XG4gICAgICB5ICs9IG9yaWdpbi55IC0gZXZ0Lnk7XG4gICAgfVxuXG4gICAgZ3JhcGgudXBkYXRlSXRlbShpdGVtLCB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiDmoLnmja4gSUQg6I635Y+W54i2IENvbWJvXG4gICAqIEBwYXJhbSBwYXJlbnRJZCDniLYgQ29tYm8gSURcbiAgICovXG4gIGdldFBhcmVudENvbWJvOiBmdW5jdGlvbiBnZXRQYXJlbnRDb21ibyhwYXJlbnRJZCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIXBhcmVudElkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHZhciBwYXJlbnRDb21ibyA9IGdyYXBoLmZpbmRCeUlkKHBhcmVudElkKTtcblxuICAgIGlmICghcGFyZW50Q29tYm8pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudENvbWJvO1xuICB9LFxuICB1cGRhdGVEZWxlZ2F0ZTogZnVuY3Rpb24gdXBkYXRlRGVsZWdhdGUoZXZ0KSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDsgLy8g5b2T5rKh5pyJIGRlbGVnYXRlIHNoYXBlIOaXtuWIm+W7ulxuXG4gICAgaWYgKCF0aGlzLmRlbGVnYXRlU2hhcGUpIHtcbiAgICAgIHZhciBkZWxlZ2F0ZUdyb3VwID0gZ3JhcGguZ2V0KCdkZWxlZ2F0ZUdyb3VwJyk7XG4gICAgICB2YXIgYmJveCA9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLnRhcmdldHMubGVuZ3RoID4gMSkge1xuICAgICAgICBiYm94ID0gY2FsY3VsYXRpb25JdGVtc0JCb3godGhpcy50YXJnZXRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJib3ggPSB0aGlzLnRhcmdldHNbMF0uZ2V0QkJveCgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgeCA9IGJib3gueCxcbiAgICAgICAgICB5ID0gYmJveC55LFxuICAgICAgICAgIHdpZHRoID0gYmJveC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBiYm94LmhlaWdodCxcbiAgICAgICAgICBtaW5YID0gYmJveC5taW5YLFxuICAgICAgICAgIG1pblkgPSBiYm94Lm1pblk7XG4gICAgICB0aGlzLm9yaWdpblBvaW50ID0ge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICBtaW5ZOiBtaW5ZXG4gICAgICB9O1xuXG4gICAgICB2YXIgYXR0cnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgR2xvYmFsLmRlbGVnYXRlU3R5bGUpLCB0aGlzLmRlbGVnYXRlU3R5bGUpO1xuXG4gICAgICB0aGlzLmRlbGVnYXRlU2hhcGUgPSBkZWxlZ2F0ZUdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHdpZHRoOiBiYm94LndpZHRoLFxuICAgICAgICAgIGhlaWdodDogYmJveC5oZWlnaHQsXG4gICAgICAgICAgeDogYmJveC54LFxuICAgICAgICAgIHk6IGJib3gueVxuICAgICAgICB9LCBhdHRycyksXG4gICAgICAgIG5hbWU6ICdjb21iby1kZWxlZ2F0ZS1zaGFwZSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kZWxlZ2F0ZVNoYXBlLnNldCgnY2FwdHVyZScsIGZhbHNlKTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB0aGlzLmRlbGVnYXRlU2hhcGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjbGllbnRYID0gZXZ0LnggLSB0aGlzLm9yaWdpbi54ICsgdGhpcy5vcmlnaW5Qb2ludC5taW5YO1xuICAgICAgdmFyIGNsaWVudFkgPSBldnQueSAtIHRoaXMub3JpZ2luLnkgKyB0aGlzLm9yaWdpblBvaW50Lm1pblk7XG4gICAgICB0aGlzLmRlbGVnYXRlU2hhcGUuYXR0cih7XG4gICAgICAgIHg6IGNsaWVudFgsXG4gICAgICAgIHk6IGNsaWVudFlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/drag-combo.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/drag-node.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/drag-node.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-pc/es/global.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n updateEdge: true,\n delegateStyle: {},\n // 是否开启delegate\n enableDelegate: false,\n // 拖动节点过程中是否只改变 Combo 的大小,而不改变其结构\n onlyChangeComboSize: false,\n // 拖动过程中目标 combo 状态样式\n comboActiveState: '',\n selectedState: 'selected',\n enableOptimize: false,\n enableDebounce: false,\n enableStack: true\n };\n },\n getEvents: function getEvents() {\n return {\n 'node:dragstart': 'onDragStart',\n 'node:drag': 'onDrag',\n 'node:dragend': 'onDragEnd',\n 'combo:dragenter': 'onDragEnter',\n 'combo:dragleave': 'onDragLeave',\n 'combo:drop': 'onDropCombo',\n 'node:drop': 'onDropNode',\n 'canvas:drop': 'onDropCanvas',\n 'touchstart': 'onTouchStart',\n 'touchmove': 'onTouchMove',\n 'touchend': 'onDragEnd'\n };\n },\n validationCombo: function validationCombo(item) {\n if (!this.origin || !item || item.destroyed) {\n return false;\n }\n\n var type = item.getType();\n\n if (type !== 'combo') {\n return false;\n }\n\n return true;\n },\n onTouchStart: function onTouchStart(e) {\n if (!e.item) return;\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.onDragStart(e);\n },\n onTouchMove: function onTouchMove(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n self.onDragEnd(e);\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.onDrag(e);\n },\n\n /**\n * 开始拖动节点\n * @param evt\n */\n onDragStart: function onDragStart(evt) {\n var _this = this;\n\n this.currentShouldEnd = true;\n\n if (!this.shouldBegin.call(this, evt)) {\n return;\n }\n\n var item = evt.item;\n\n if (!item || item.destroyed || item.hasLocked()) {\n return;\n } // 拖动时,设置拖动元素的 capture 为false,则不拾取拖动的元素\n\n\n var group = item.getContainer();\n group.set('capture', false);\n if (!this.cachedCaptureItems) this.cachedCaptureItems = [];\n this.cachedCaptureItems.push(item); // 如果拖动的target 是linkPoints / anchorPoints 则不允许拖动\n\n var target = evt.target;\n\n if (target) {\n var isAnchorPoint = target.get('isAnchorPoint');\n\n if (isAnchorPoint) {\n return;\n }\n }\n\n var graph = this.graph;\n this.targets = []; // 将节点拖入到指定的 Combo\n\n this.targetCombo = null; // 获取所有选中的元素\n\n var nodes = graph.findAllByState('node', this.selectedState);\n var currentNodeId = item.get('id'); // 当前拖动的节点是否是选中的节点\n\n var dragNodes = nodes.filter(function (node) {\n var nodeId = node.get('id');\n return currentNodeId === nodeId;\n }); // 只拖动当前节点\n\n if (dragNodes.length === 0) {\n this.targets.push(item);\n } else if (nodes.length > 1) {\n // 拖动多个节点\n nodes.forEach(function (node) {\n var locked = node.hasLocked();\n\n if (!locked) {\n _this.targets.push(node);\n }\n });\n } else {\n this.targets.push(item);\n }\n\n var beforeDragNodes = [];\n this.targets.forEach(function (t) {\n beforeDragNodes.push(Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(t.getModel()));\n });\n this.set('beforeDragNodes', beforeDragNodes);\n this.hidenEdge = {};\n\n if (this.get('updateEdge') && this.enableOptimize && !this.enableDelegate) {\n this.targets.forEach(function (node) {\n var edges = node.getEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return;\n _this.hidenEdge[edge.getID()] = true;\n edge.hide();\n });\n });\n }\n\n this.origin = {\n x: evt.x,\n y: evt.y\n };\n this.point = {};\n this.originPoint = {};\n },\n\n /**\n * 持续拖动节点\n * @param evt\n */\n onDrag: function onDrag(evt) {\n var _this = this;\n\n if (!this.origin) {\n return;\n }\n\n if (!this.shouldUpdate.call(this, evt)) {\n return;\n }\n\n if (this.get('enableDelegate')) {\n this.updateDelegate(evt);\n } else {\n if (this.enableDebounce) this.debounceUpdate({\n targets: this.targets,\n graph: this.graph,\n point: this.point,\n origin: this.origin,\n evt: evt,\n updateEdge: this.get('updateEdge')\n });else this.targets.map(function (target) {\n _this.update(target, evt);\n });\n }\n },\n\n /**\n * 拖动结束,设置拖动元素capture为true,更新元素位置,如果是拖动涉及到 combo,则更新 combo 结构\n * @param evt\n */\n onDragEnd: function onDragEnd(evt) {\n var _this = this;\n\n var _a;\n\n if (!this.origin) {\n return;\n } // 拖动结束后,设置拖动元素 group 的 capture 为 true,允许拾取拖动元素\n\n\n (_a = this.cachedCaptureItems) === null || _a === void 0 ? void 0 : _a.forEach(function (item) {\n var group = item.getContainer();\n group.set('capture', true);\n });\n this.cachedCaptureItems = [];\n\n if (this.delegateRect) {\n this.delegateRect.remove();\n this.delegateRect = null;\n }\n\n if (this.get('updateEdge') && this.enableOptimize && !this.enableDelegate) {\n this.targets.forEach(function (node) {\n var edges = node.getEdges();\n edges.forEach(function (edge) {\n if (_this.hidenEdge[edge.getID()]) edge.show();\n edge.refresh();\n });\n });\n }\n\n this.hidenEdge = {};\n var graph = this.graph; // 拖动结束后,入栈\n\n if (graph.get('enabledStack') && this.enableStack) {\n var stackData_1 = {\n before: {\n nodes: [],\n edges: [],\n combos: []\n },\n after: {\n nodes: [],\n edges: [],\n combos: []\n }\n };\n this.get('beforeDragNodes').forEach(function (model) {\n stackData_1.before.nodes.push({\n id: model.id,\n x: model.x,\n y: model.y\n });\n });\n this.targets.forEach(function (target) {\n var targetModel = target.getModel();\n stackData_1.after.nodes.push({\n id: targetModel.id,\n x: targetModel.x,\n y: targetModel.y\n });\n });\n graph.pushStack('update', Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(stackData_1));\n } // 拖动结束后emit事件,将当前操作的节点抛出去,目标节点为null\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: null\n });\n this.point = {};\n this.origin = null;\n this.originPoint = {};\n this.targets.length = 0;\n this.targetCombo = null;\n },\n\n /**\n * 拖动过程中将节点放置到 combo 上\n * @param evt\n */\n onDropCombo: function onDropCombo(evt) {\n var item = evt.item;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, item); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd || !this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, false);\n }\n\n this.targetCombo = item; // 拖动结束后是动态改变 Combo 大小还是将节点从 Combo 中删除\n\n if (this.onlyChangeComboSize) {\n // 拖动节点结束后,动态改变 Combo 的大小\n graph.updateCombos();\n } else {\n var targetComboModel_1 = item.getModel();\n this.targets.map(function (node) {\n var nodeModel = node.getModel();\n\n if (nodeModel.comboId !== targetComboModel_1.id) {\n graph.updateComboTree(node, targetComboModel_1.id);\n }\n });\n graph.updateCombo(item);\n } // 将节点拖动到 combo 上面,emit事件抛出当前操作的节点及目标 combo\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: this.targetCombo\n });\n },\n onDropCanvas: function onDropCanvas(evt) {\n var graph = this.graph;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, undefined); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.targets || this.targets.length === 0 || !this.currentShouldEnd) return;\n\n if (this.onlyChangeComboSize) {\n // 拖动节点结束后,动态改变 Combo 的大小\n graph.updateCombos();\n } else {\n this.targets.map(function (node) {\n // 拖动的节点有 comboId,即是从其他 combo 中拖出时才处理\n var model = node.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(node);\n }\n });\n }\n },\n\n /**\n * 拖动放置到某个 combo 中的子 node 上\n * @param evt\n */\n onDropNode: function onDropNode(evt) {\n if (!this.targets || this.targets.length === 0) return;\n var self = this;\n var item = evt.item;\n var graph = self.graph;\n var comboId = item.getModel().comboId;\n var newParentCombo = comboId ? graph.findById(comboId) : undefined;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, newParentCombo); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd) return;\n\n if (this.onlyChangeComboSize) {\n graph.updateCombos();\n } else if (comboId) {\n var combo = graph.findById(comboId);\n\n if (self.comboActiveState) {\n graph.setItemState(combo, self.comboActiveState, false);\n }\n\n this.targets.map(function (node) {\n var nodeModel = node.getModel();\n\n if (comboId !== nodeModel.comboId) {\n graph.updateComboTree(node, comboId);\n }\n });\n graph.updateCombo(combo);\n } else {\n this.targets.map(function (node) {\n var model = node.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(node);\n }\n });\n } // 将节点拖动到另外个节点上面,emit 事件抛出当前操作的节点及目标节点\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: item\n });\n },\n\n /**\n * 将节点拖入到 Combo 中\n * @param evt\n */\n onDragEnter: function onDragEnter(evt) {\n var item = evt.item;\n if (!this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, true);\n }\n },\n\n /**\n * 将节点从 Combo 中拖出\n * @param evt\n */\n onDragLeave: function onDragLeave(evt) {\n var item = evt.item;\n if (!this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, false);\n }\n },\n updatePositions: function updatePositions(evt, restore) {\n var _this = this;\n\n if (!this.targets || this.targets.length === 0) return; // 当开启 delegate 时,拖动结束后需要更新所有已选中节点的位置\n\n if (this.get('enableDelegate')) {\n if (this.enableDebounce) this.debounceUpdate({\n targets: this.targets,\n graph: this.graph,\n point: this.point,\n origin: this.origin,\n evt: evt,\n updateEdge: this.get('updateEdge'),\n updateFunc: this.update\n });else if (!restore) this.targets.map(function (node) {\n return _this.update(node, evt);\n });\n } else this.targets.map(function (node) {\n return _this.update(node, evt, restore);\n });\n },\n\n /**\n * 更新节点\n * @param item 拖动的节点实例\n * @param evt\n */\n update: function update(item, evt, restore) {\n var origin = this.origin;\n var model = item.get('model');\n var nodeId = item.get('id');\n\n if (!this.point[nodeId]) {\n this.point[nodeId] = {\n x: model.x || 0,\n y: model.y || 0\n };\n }\n\n var x = evt.x - origin.x + this.point[nodeId].x;\n var y = evt.y - origin.y + this.point[nodeId].y;\n\n if (restore) {\n x += origin.x - evt.x;\n y += origin.y - evt.y;\n }\n\n var pos = {\n x: x,\n y: y\n };\n\n if (this.get('updateEdge')) {\n this.graph.updateItem(item, pos, false);\n } else {\n item.updatePosition(pos);\n }\n },\n\n /**\n * 限流更新节点\n * @param item 拖动的节点实例\n * @param evt\n */\n debounceUpdate: Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"debounce\"])(function (event) {\n var targets = event.targets,\n graph = event.graph,\n point = event.point,\n origin = event.origin,\n evt = event.evt,\n updateEdge = event.updateEdge,\n updateFunc = event.updateFunc;\n targets.map(function (item) {\n var model = item.get('model');\n var nodeId = item.get('id');\n\n if (!point[nodeId]) {\n point[nodeId] = {\n x: model.x || 0,\n y: model.y || 0\n };\n }\n\n var x = evt.x - origin.x + point[nodeId].x;\n var y = evt.y - origin.y + point[nodeId].y;\n var pos = {\n x: x,\n y: y\n };\n\n if (updateEdge) {\n graph.updateItem(item, pos, false);\n } else {\n item.updatePosition(pos);\n }\n });\n }, 50, true),\n\n /**\n * 更新拖动元素时的delegate\n * @param {Event} e 事件句柄\n * @param {number} x 拖动单个元素时候的x坐标\n * @param {number} y 拖动单个元素时候的y坐标\n */\n updateDelegate: function updateDelegate(e) {\n var graph = this.graph;\n\n if (!this.delegateRect) {\n // 拖动多个\n var parent_1 = graph.get('group');\n var attrs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].delegateStyle, this.delegateStyle);\n\n var _a = this.calculationGroupPosition(e),\n cx = _a.x,\n cy = _a.y,\n width = _a.width,\n height = _a.height,\n minX = _a.minX,\n minY = _a.minY;\n\n this.originPoint = {\n x: cx,\n y: cy,\n width: width,\n height: height,\n minX: minX,\n minY: minY\n }; // model上的x, y是相对于图形中心的,delegateShape是g实例,x,y是绝对坐标\n\n this.delegateRect = parent_1.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n width: width,\n height: height,\n x: cx,\n y: cy\n }, attrs),\n name: 'rect-delegate-shape'\n });\n this.delegate = this.delegateRect;\n this.delegateRect.set('capture', false);\n } else {\n var clientX = e.x - this.origin.x + this.originPoint.minX;\n var clientY = e.y - this.origin.y + this.originPoint.minY;\n this.delegateRect.attr({\n x: clientX,\n y: clientY\n });\n }\n },\n\n /**\n * 计算delegate位置,包括左上角左边及宽度和高度\n * @memberof ItemGroup\n * @return {object} 计算出来的delegate坐标信息及宽高\n */\n calculationGroupPosition: function calculationGroupPosition(evt) {\n var nodes = this.targets;\n\n if (nodes.length === 0) {\n nodes.push(evt.item);\n }\n\n var minx = Infinity;\n var maxx = -Infinity;\n var miny = Infinity;\n var maxy = -Infinity; // 获取已节点的所有最大最小x y值\n\n for (var i = 0; i < nodes.length; i++) {\n var element = nodes[i];\n var bbox = element.getBBox();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n\n if (minX < minx) {\n minx = minX;\n }\n\n if (minY < miny) {\n miny = minY;\n }\n\n if (maxX > maxx) {\n maxx = maxX;\n }\n\n if (maxY > maxy) {\n maxy = maxY;\n }\n }\n\n var x = Math.floor(minx);\n var y = Math.floor(miny);\n var width = Math.ceil(maxx) - Math.floor(minx);\n var height = Math.ceil(maxy) - Math.floor(miny);\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minx,\n minY: miny\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZHJhZy1ub2RlLmpzPzg1OWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDcUI7QUFDdkI7QUFDaEI7QUFDZjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7O0FBRXRCLDRCQUE0Qjs7QUFFNUI7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJCQUEyQix3REFBSztBQUNoQyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUE7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLGdDQUFnQyx3REFBSztBQUNyQyxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFOztBQUVqRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxzRUFBc0U7O0FBRXRFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyRUFBMkU7O0FBRTNFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsMkRBQTJEOztBQUUzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7QUFDVDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJEQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQixhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsMERBQU8sR0FBRyxFQUFFLCtDQUFNOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7O0FBRVI7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EseUJBQXlCOztBQUV6QixtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZHJhZy1ub2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXgsIGNsb25lLCBkZWJvdW5jZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGVFZGdlOiB0cnVlLFxuICAgICAgZGVsZWdhdGVTdHlsZToge30sXG4gICAgICAvLyDmmK/lkKblvIDlkK9kZWxlZ2F0ZVxuICAgICAgZW5hYmxlRGVsZWdhdGU6IGZhbHNlLFxuICAgICAgLy8g5ouW5Yqo6IqC54K56L+H56iL5Lit5piv5ZCm5Y+q5pS55Y+YIENvbWJvIOeahOWkp+Wwj++8jOiAjOS4jeaUueWPmOWFtue7k+aehFxuICAgICAgb25seUNoYW5nZUNvbWJvU2l6ZTogZmFsc2UsXG4gICAgICAvLyDmi5bliqjov4fnqIvkuK3nm67moIcgY29tYm8g54q25oCB5qC35byPXG4gICAgICBjb21ib0FjdGl2ZVN0YXRlOiAnJyxcbiAgICAgIHNlbGVjdGVkU3RhdGU6ICdzZWxlY3RlZCcsXG4gICAgICBlbmFibGVPcHRpbWl6ZTogZmFsc2UsXG4gICAgICBlbmFibGVEZWJvdW5jZTogZmFsc2UsXG4gICAgICBlbmFibGVTdGFjazogdHJ1ZVxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnbm9kZTpkcmFnc3RhcnQnOiAnb25EcmFnU3RhcnQnLFxuICAgICAgJ25vZGU6ZHJhZyc6ICdvbkRyYWcnLFxuICAgICAgJ25vZGU6ZHJhZ2VuZCc6ICdvbkRyYWdFbmQnLFxuICAgICAgJ2NvbWJvOmRyYWdlbnRlcic6ICdvbkRyYWdFbnRlcicsXG4gICAgICAnY29tYm86ZHJhZ2xlYXZlJzogJ29uRHJhZ0xlYXZlJyxcbiAgICAgICdjb21ibzpkcm9wJzogJ29uRHJvcENvbWJvJyxcbiAgICAgICdub2RlOmRyb3AnOiAnb25Ecm9wTm9kZScsXG4gICAgICAnY2FudmFzOmRyb3AnOiAnb25Ecm9wQ2FudmFzJyxcbiAgICAgICd0b3VjaHN0YXJ0JzogJ29uVG91Y2hTdGFydCcsXG4gICAgICAndG91Y2htb3ZlJzogJ29uVG91Y2hNb3ZlJyxcbiAgICAgICd0b3VjaGVuZCc6ICdvbkRyYWdFbmQnXG4gICAgfTtcbiAgfSxcbiAgdmFsaWRhdGlvbkNvbWJvOiBmdW5jdGlvbiB2YWxpZGF0aW9uQ29tYm8oaXRlbSkge1xuICAgIGlmICghdGhpcy5vcmlnaW4gfHwgIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgdHlwZSA9IGl0ZW0uZ2V0VHlwZSgpO1xuXG4gICAgaWYgKHR5cGUgIT09ICdjb21ibycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgb25Ub3VjaFN0YXJ0OiBmdW5jdGlvbiBvblRvdWNoU3RhcnQoZSkge1xuICAgIGlmICghZS5pdGVtKSByZXR1cm47XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdHJ5IHtcbiAgICAgIHZhciB0b3VjaGVzID0gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7XG4gICAgICB2YXIgZXZlbnQxID0gdG91Y2hlc1swXTtcbiAgICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdO1xuXG4gICAgICBpZiAoZXZlbnQxICYmIGV2ZW50Mikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RvdWNoIG9yaWdpbmFsIGV2ZW50IG5vdCBleGlzdCEnKTtcbiAgICB9XG5cbiAgICBzZWxmLm9uRHJhZ1N0YXJ0KGUpO1xuICB9LFxuICBvblRvdWNoTW92ZTogZnVuY3Rpb24gb25Ub3VjaE1vdmUoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRyeSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgICAgdmFyIGV2ZW50MSA9IHRvdWNoZXNbMF07XG4gICAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTtcblxuICAgICAgaWYgKGV2ZW50MSAmJiBldmVudDIpIHtcbiAgICAgICAgc2VsZi5vbkRyYWdFbmQoZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignVG91Y2ggb3JpZ2luYWwgZXZlbnQgbm90IGV4aXN0IScpO1xuICAgIH1cblxuICAgIHNlbGYub25EcmFnKGUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiDlvIDlp4vmi5bliqjoioLngrlcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgb25EcmFnU3RhcnQ6IGZ1bmN0aW9uIG9uRHJhZ1N0YXJ0KGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmN1cnJlbnRTaG91bGRFbmQgPSB0cnVlO1xuXG4gICAgaWYgKCF0aGlzLnNob3VsZEJlZ2luLmNhbGwodGhpcywgZXZ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQgfHwgaXRlbS5oYXNMb2NrZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8g5ouW5Yqo5pe277yM6K6+572u5ouW5Yqo5YWD57Sg55qEIGNhcHR1cmUg5Li6ZmFsc2XvvIzliJnkuI3mi77lj5bmi5bliqjnmoTlhYPntKBcblxuXG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICBncm91cC5zZXQoJ2NhcHR1cmUnLCBmYWxzZSk7XG4gICAgaWYgKCF0aGlzLmNhY2hlZENhcHR1cmVJdGVtcykgdGhpcy5jYWNoZWRDYXB0dXJlSXRlbXMgPSBbXTtcbiAgICB0aGlzLmNhY2hlZENhcHR1cmVJdGVtcy5wdXNoKGl0ZW0pOyAvLyDlpoLmnpzmi5bliqjnmoR0YXJnZXQg5pivbGlua1BvaW50cyAvIGFuY2hvclBvaW50cyDliJnkuI3lhYHorrjmi5bliqhcblxuICAgIHZhciB0YXJnZXQgPSBldnQudGFyZ2V0O1xuXG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgdmFyIGlzQW5jaG9yUG9pbnQgPSB0YXJnZXQuZ2V0KCdpc0FuY2hvclBvaW50Jyk7XG5cbiAgICAgIGlmIChpc0FuY2hvclBvaW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHRoaXMudGFyZ2V0cyA9IFtdOyAvLyDlsIboioLngrnmi5blhaXliLDmjIflrprnmoQgQ29tYm9cblxuICAgIHRoaXMudGFyZ2V0Q29tYm8gPSBudWxsOyAvLyDojrflj5bmiYDmnInpgInkuK3nmoTlhYPntKBcblxuICAgIHZhciBub2RlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdub2RlJywgdGhpcy5zZWxlY3RlZFN0YXRlKTtcbiAgICB2YXIgY3VycmVudE5vZGVJZCA9IGl0ZW0uZ2V0KCdpZCcpOyAvLyDlvZPliY3mi5bliqjnmoToioLngrnmmK/lkKbmmK/pgInkuK3nmoToioLngrlcblxuICAgIHZhciBkcmFnTm9kZXMgPSBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlLmdldCgnaWQnKTtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZUlkID09PSBub2RlSWQ7XG4gICAgfSk7IC8vIOWPquaLluWKqOW9k+WJjeiKgueCuVxuXG4gICAgaWYgKGRyYWdOb2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKGl0ZW0pO1xuICAgIH0gZWxzZSBpZiAobm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgLy8g5ouW5Yqo5aSa5Liq6IqC54K5XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBsb2NrZWQgPSBub2RlLmhhc0xvY2tlZCgpO1xuXG4gICAgICAgIGlmICghbG9ja2VkKSB7XG4gICAgICAgICAgX3RoaXMudGFyZ2V0cy5wdXNoKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YXJnZXRzLnB1c2goaXRlbSk7XG4gICAgfVxuXG4gICAgdmFyIGJlZm9yZURyYWdOb2RlcyA9IFtdO1xuICAgIHRoaXMudGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICBiZWZvcmVEcmFnTm9kZXMucHVzaChjbG9uZSh0LmdldE1vZGVsKCkpKTtcbiAgICB9KTtcbiAgICB0aGlzLnNldCgnYmVmb3JlRHJhZ05vZGVzJywgYmVmb3JlRHJhZ05vZGVzKTtcbiAgICB0aGlzLmhpZGVuRWRnZSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuZ2V0KCd1cGRhdGVFZGdlJykgJiYgdGhpcy5lbmFibGVPcHRpbWl6ZSAmJiAhdGhpcy5lbmFibGVEZWxlZ2F0ZSkge1xuICAgICAgdGhpcy50YXJnZXRzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGVkZ2VzID0gbm9kZS5nZXRFZGdlcygpO1xuICAgICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgaWYgKCFlZGdlLmlzVmlzaWJsZSgpKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuaGlkZW5FZGdlW2VkZ2UuZ2V0SUQoKV0gPSB0cnVlO1xuICAgICAgICAgIGVkZ2UuaGlkZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luID0ge1xuICAgICAgeDogZXZ0LngsXG4gICAgICB5OiBldnQueVxuICAgIH07XG4gICAgdGhpcy5wb2ludCA9IHt9O1xuICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7fTtcbiAgfSxcblxuICAvKipcbiAgICog5oyB57ut5ouW5Yqo6IqC54K5XG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIG9uRHJhZzogZnVuY3Rpb24gb25EcmFnKGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXRoaXMub3JpZ2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNob3VsZFVwZGF0ZS5jYWxsKHRoaXMsIGV2dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXQoJ2VuYWJsZURlbGVnYXRlJykpIHtcbiAgICAgIHRoaXMudXBkYXRlRGVsZWdhdGUoZXZ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZW5hYmxlRGVib3VuY2UpIHRoaXMuZGVib3VuY2VVcGRhdGUoe1xuICAgICAgICB0YXJnZXRzOiB0aGlzLnRhcmdldHMsXG4gICAgICAgIGdyYXBoOiB0aGlzLmdyYXBoLFxuICAgICAgICBwb2ludDogdGhpcy5wb2ludCxcbiAgICAgICAgb3JpZ2luOiB0aGlzLm9yaWdpbixcbiAgICAgICAgZXZ0OiBldnQsXG4gICAgICAgIHVwZGF0ZUVkZ2U6IHRoaXMuZ2V0KCd1cGRhdGVFZGdlJylcbiAgICAgIH0pO2Vsc2UgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgIF90aGlzLnVwZGF0ZSh0YXJnZXQsIGV2dCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOaLluWKqOe7k+adn++8jOiuvue9ruaLluWKqOWFg+e0oGNhcHR1cmXkuLp0cnVl77yM5pu05paw5YWD57Sg5L2N572u77yM5aaC5p6c5piv5ouW5Yqo5raJ5Y+K5YiwIGNvbWJv77yM5YiZ5pu05pawIGNvbWJvIOe7k+aehFxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICBvbkRyYWdFbmQ6IGZ1bmN0aW9uIG9uRHJhZ0VuZChldnQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hO1xuXG4gICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8g5ouW5Yqo57uT5p2f5ZCO77yM6K6+572u5ouW5Yqo5YWD57SgIGdyb3VwIOeahCBjYXB0dXJlIOS4uiB0cnVl77yM5YWB6K645ou+5Y+W5ouW5Yqo5YWD57SgXG5cblxuICAgIChfYSA9IHRoaXMuY2FjaGVkQ2FwdHVyZUl0ZW1zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICAgIGdyb3VwLnNldCgnY2FwdHVyZScsIHRydWUpO1xuICAgIH0pO1xuICAgIHRoaXMuY2FjaGVkQ2FwdHVyZUl0ZW1zID0gW107XG5cbiAgICBpZiAodGhpcy5kZWxlZ2F0ZVJlY3QpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGVSZWN0LnJlbW92ZSgpO1xuICAgICAgdGhpcy5kZWxlZ2F0ZVJlY3QgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdldCgndXBkYXRlRWRnZScpICYmIHRoaXMuZW5hYmxlT3B0aW1pemUgJiYgIXRoaXMuZW5hYmxlRGVsZWdhdGUpIHtcbiAgICAgIHRoaXMudGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBlZGdlcyA9IG5vZGUuZ2V0RWRnZXMoKTtcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIGlmIChfdGhpcy5oaWRlbkVkZ2VbZWRnZS5nZXRJRCgpXSkgZWRnZS5zaG93KCk7XG4gICAgICAgICAgZWRnZS5yZWZyZXNoKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5oaWRlbkVkZ2UgPSB7fTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoOyAvLyDmi5bliqjnu5PmnZ/lkI7vvIzlhaXmoIhcblxuICAgIGlmIChncmFwaC5nZXQoJ2VuYWJsZWRTdGFjaycpICYmIHRoaXMuZW5hYmxlU3RhY2spIHtcbiAgICAgIHZhciBzdGFja0RhdGFfMSA9IHtcbiAgICAgICAgYmVmb3JlOiB7XG4gICAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICAgIGVkZ2VzOiBbXSxcbiAgICAgICAgICBjb21ib3M6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyOiB7XG4gICAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICAgIGVkZ2VzOiBbXSxcbiAgICAgICAgICBjb21ib3M6IFtdXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLmdldCgnYmVmb3JlRHJhZ05vZGVzJykuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcbiAgICAgICAgc3RhY2tEYXRhXzEuYmVmb3JlLm5vZGVzLnB1c2goe1xuICAgICAgICAgIGlkOiBtb2RlbC5pZCxcbiAgICAgICAgICB4OiBtb2RlbC54LFxuICAgICAgICAgIHk6IG1vZGVsLnlcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgdmFyIHRhcmdldE1vZGVsID0gdGFyZ2V0LmdldE1vZGVsKCk7XG4gICAgICAgIHN0YWNrRGF0YV8xLmFmdGVyLm5vZGVzLnB1c2goe1xuICAgICAgICAgIGlkOiB0YXJnZXRNb2RlbC5pZCxcbiAgICAgICAgICB4OiB0YXJnZXRNb2RlbC54LFxuICAgICAgICAgIHk6IHRhcmdldE1vZGVsLnlcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGdyYXBoLnB1c2hTdGFjaygndXBkYXRlJywgY2xvbmUoc3RhY2tEYXRhXzEpKTtcbiAgICB9IC8vIOaLluWKqOe7k+adn+WQjmVtaXTkuovku7bvvIzlsIblvZPliY3mk43kvZznmoToioLngrnmipvlh7rljrvvvIznm67moIfoioLngrnkuLpudWxsXG5cblxuICAgIGdyYXBoLmVtaXQoJ2RyYWdub2RlZW5kJywge1xuICAgICAgaXRlbXM6IHRoaXMudGFyZ2V0cyxcbiAgICAgIHRhcmdldEl0ZW06IG51bGxcbiAgICB9KTtcbiAgICB0aGlzLnBvaW50ID0ge307XG4gICAgdGhpcy5vcmlnaW4gPSBudWxsO1xuICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7fTtcbiAgICB0aGlzLnRhcmdldHMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnRhcmdldENvbWJvID0gbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICog5ouW5Yqo6L+H56iL5Lit5bCG6IqC54K55pS+572u5YiwIGNvbWJvIOS4ilxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICBvbkRyb3BDb21ibzogZnVuY3Rpb24gb25Ecm9wQ29tYm8oZXZ0KSB7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICB0aGlzLmN1cnJlbnRTaG91bGRFbmQgPSB0aGlzLnNob3VsZEVuZC5jYWxsKHRoaXMsIGV2dCwgaXRlbSk7IC8vIOiLpeS4jeWFgeiuuOe7k+adn++8jOWImeWwhuiKgueCueS9jee9ruiuvue9ruWbnuWIneivhuS9jee9ruOAguWQjumdoueahOmAu+i+keS7jemcgOimgeaJp+ihjFxuXG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoZXZ0LCAhdGhpcy5jdXJyZW50U2hvdWxkRW5kKTtcbiAgICBpZiAoIXRoaXMuY3VycmVudFNob3VsZEVuZCB8fCAhdGhpcy52YWxpZGF0aW9uQ29tYm8oaXRlbSkpIHJldHVybjtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKHRoaXMuY29tYm9BY3RpdmVTdGF0ZSkge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIHRoaXMuY29tYm9BY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMudGFyZ2V0Q29tYm8gPSBpdGVtOyAvLyDmi5bliqjnu5PmnZ/lkI7mmK/liqjmgIHmlLnlj5ggQ29tYm8g5aSn5bCP6L+Y5piv5bCG6IqC54K55LuOIENvbWJvIOS4reWIoOmZpFxuXG4gICAgaWYgKHRoaXMub25seUNoYW5nZUNvbWJvU2l6ZSkge1xuICAgICAgLy8g5ouW5Yqo6IqC54K557uT5p2f5ZCO77yM5Yqo5oCB5pS55Y+YIENvbWJvIOeahOWkp+Wwj1xuICAgICAgZ3JhcGgudXBkYXRlQ29tYm9zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB0YXJnZXRDb21ib01vZGVsXzEgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgICB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBub2RlTW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG5cbiAgICAgICAgaWYgKG5vZGVNb2RlbC5jb21ib0lkICE9PSB0YXJnZXRDb21ib01vZGVsXzEuaWQpIHtcbiAgICAgICAgICBncmFwaC51cGRhdGVDb21ib1RyZWUobm9kZSwgdGFyZ2V0Q29tYm9Nb2RlbF8xLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBncmFwaC51cGRhdGVDb21ibyhpdGVtKTtcbiAgICB9IC8vIOWwhuiKgueCueaLluWKqOWIsCBjb21ibyDkuIrpnaLvvIxlbWl05LqL5Lu25oqb5Ye65b2T5YmN5pON5L2c55qE6IqC54K55Y+K55uu5qCHIGNvbWJvXG5cblxuICAgIGdyYXBoLmVtaXQoJ2RyYWdub2RlZW5kJywge1xuICAgICAgaXRlbXM6IHRoaXMudGFyZ2V0cyxcbiAgICAgIHRhcmdldEl0ZW06IHRoaXMudGFyZ2V0Q29tYm9cbiAgICB9KTtcbiAgfSxcbiAgb25Ecm9wQ2FudmFzOiBmdW5jdGlvbiBvbkRyb3BDYW52YXMoZXZ0KSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB0aGlzLmN1cnJlbnRTaG91bGRFbmQgPSB0aGlzLnNob3VsZEVuZC5jYWxsKHRoaXMsIGV2dCwgdW5kZWZpbmVkKTsgLy8g6Iul5LiN5YWB6K6457uT5p2f77yM5YiZ5bCG6IqC54K55L2N572u6K6+572u5Zue5Yid6K+G5L2N572u44CC5ZCO6Z2i55qE6YC76L6R5LuN6ZyA6KaB5omn6KGMXG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucyhldnQsICF0aGlzLmN1cnJlbnRTaG91bGRFbmQpO1xuICAgIGlmICghdGhpcy50YXJnZXRzIHx8IHRoaXMudGFyZ2V0cy5sZW5ndGggPT09IDAgfHwgIXRoaXMuY3VycmVudFNob3VsZEVuZCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMub25seUNoYW5nZUNvbWJvU2l6ZSkge1xuICAgICAgLy8g5ouW5Yqo6IqC54K557uT5p2f5ZCO77yM5Yqo5oCB5pS55Y+YIENvbWJvIOeahOWkp+Wwj1xuICAgICAgZ3JhcGgudXBkYXRlQ29tYm9zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgLy8g5ouW5Yqo55qE6IqC54K55pyJIGNvbWJvSWTvvIzljbPmmK/ku47lhbbku5YgY29tYm8g5Lit5ouW5Ye65pe25omN5aSE55CGXG4gICAgICAgIHZhciBtb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAobW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDmi5bliqjmlL7nva7liLDmn5DkuKogY29tYm8g5Lit55qE5a2QIG5vZGUg5LiKXG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIG9uRHJvcE5vZGU6IGZ1bmN0aW9uIG9uRHJvcE5vZGUoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLnRhcmdldHMgfHwgdGhpcy50YXJnZXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ3JhcGg7XG4gICAgdmFyIGNvbWJvSWQgPSBpdGVtLmdldE1vZGVsKCkuY29tYm9JZDtcbiAgICB2YXIgbmV3UGFyZW50Q29tYm8gPSBjb21ib0lkID8gZ3JhcGguZmluZEJ5SWQoY29tYm9JZCkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50U2hvdWxkRW5kID0gdGhpcy5zaG91bGRFbmQuY2FsbCh0aGlzLCBldnQsIG5ld1BhcmVudENvbWJvKTsgLy8g6Iul5LiN5YWB6K6457uT5p2f77yM5YiZ5bCG6IqC54K55L2N572u6K6+572u5Zue5Yid6K+G5L2N572u44CC5ZCO6Z2i55qE6YC76L6R5LuN6ZyA6KaB5omn6KGMXG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucyhldnQsICF0aGlzLmN1cnJlbnRTaG91bGRFbmQpO1xuICAgIGlmICghdGhpcy5jdXJyZW50U2hvdWxkRW5kKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICBncmFwaC51cGRhdGVDb21ib3MoKTtcbiAgICB9IGVsc2UgaWYgKGNvbWJvSWQpIHtcbiAgICAgIHZhciBjb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvSWQpO1xuXG4gICAgICBpZiAoc2VsZi5jb21ib0FjdGl2ZVN0YXRlKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgc2VsZi5jb21ib0FjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIG5vZGVNb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAoY29tYm9JZCAhPT0gbm9kZU1vZGVsLmNvbWJvSWQpIHtcbiAgICAgICAgICBncmFwaC51cGRhdGVDb21ib1RyZWUobm9kZSwgY29tYm9JZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oY29tYm8pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBtb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAobW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSAvLyDlsIboioLngrnmi5bliqjliLDlj6blpJbkuKroioLngrnkuIrpnaLvvIxlbWl0IOS6i+S7tuaKm+WHuuW9k+WJjeaTjeS9nOeahOiKgueCueWPiuebruagh+iKgueCuVxuXG5cbiAgICBncmFwaC5lbWl0KCdkcmFnbm9kZWVuZCcsIHtcbiAgICAgIGl0ZW1zOiB0aGlzLnRhcmdldHMsXG4gICAgICB0YXJnZXRJdGVtOiBpdGVtXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOWwhuiKgueCueaLluWFpeWIsCBDb21ibyDkuK1cbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgb25EcmFnRW50ZXI6IGZ1bmN0aW9uIG9uRHJhZ0VudGVyKGV2dCkge1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRpb25Db21ibyhpdGVtKSkgcmV0dXJuO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAodGhpcy5jb21ib0FjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgdGhpcy5jb21ib0FjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOWwhuiKgueCueS7jiBDb21ibyDkuK3mi5blh7pcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgb25EcmFnTGVhdmU6IGZ1bmN0aW9uIG9uRHJhZ0xlYXZlKGV2dCkge1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRpb25Db21ibyhpdGVtKSkgcmV0dXJuO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAodGhpcy5jb21ib0FjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgdGhpcy5jb21ib0FjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgfVxuICB9LFxuICB1cGRhdGVQb3NpdGlvbnM6IGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9ucyhldnQsIHJlc3RvcmUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCF0aGlzLnRhcmdldHMgfHwgdGhpcy50YXJnZXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOyAvLyDlvZPlvIDlkK8gZGVsZWdhdGUg5pe277yM5ouW5Yqo57uT5p2f5ZCO6ZyA6KaB5pu05paw5omA5pyJ5bey6YCJ5Lit6IqC54K555qE5L2N572uXG5cbiAgICBpZiAodGhpcy5nZXQoJ2VuYWJsZURlbGVnYXRlJykpIHtcbiAgICAgIGlmICh0aGlzLmVuYWJsZURlYm91bmNlKSB0aGlzLmRlYm91bmNlVXBkYXRlKHtcbiAgICAgICAgdGFyZ2V0czogdGhpcy50YXJnZXRzLFxuICAgICAgICBncmFwaDogdGhpcy5ncmFwaCxcbiAgICAgICAgcG9pbnQ6IHRoaXMucG9pbnQsXG4gICAgICAgIG9yaWdpbjogdGhpcy5vcmlnaW4sXG4gICAgICAgIGV2dDogZXZ0LFxuICAgICAgICB1cGRhdGVFZGdlOiB0aGlzLmdldCgndXBkYXRlRWRnZScpLFxuICAgICAgICB1cGRhdGVGdW5jOiB0aGlzLnVwZGF0ZVxuICAgICAgfSk7ZWxzZSBpZiAoIXJlc3RvcmUpIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZShub2RlLCBldnQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBfdGhpcy51cGRhdGUobm9kZSwgZXZ0LCByZXN0b3JlKTtcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICog5pu05paw6IqC54K5XG4gICAqIEBwYXJhbSBpdGVtIOaLluWKqOeahOiKgueCueWunuS+i1xuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShpdGVtLCBldnQsIHJlc3RvcmUpIHtcbiAgICB2YXIgb3JpZ2luID0gdGhpcy5vcmlnaW47XG4gICAgdmFyIG1vZGVsID0gaXRlbS5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIG5vZGVJZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgaWYgKCF0aGlzLnBvaW50W25vZGVJZF0pIHtcbiAgICAgIHRoaXMucG9pbnRbbm9kZUlkXSA9IHtcbiAgICAgICAgeDogbW9kZWwueCB8fCAwLFxuICAgICAgICB5OiBtb2RlbC55IHx8IDBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHggPSBldnQueCAtIG9yaWdpbi54ICsgdGhpcy5wb2ludFtub2RlSWRdLng7XG4gICAgdmFyIHkgPSBldnQueSAtIG9yaWdpbi55ICsgdGhpcy5wb2ludFtub2RlSWRdLnk7XG5cbiAgICBpZiAocmVzdG9yZSkge1xuICAgICAgeCArPSBvcmlnaW4ueCAtIGV2dC54O1xuICAgICAgeSArPSBvcmlnaW4ueSAtIGV2dC55O1xuICAgIH1cblxuICAgIHZhciBwb3MgPSB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5nZXQoJ3VwZGF0ZUVkZ2UnKSkge1xuICAgICAgdGhpcy5ncmFwaC51cGRhdGVJdGVtKGl0ZW0sIHBvcywgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtLnVwZGF0ZVBvc2l0aW9uKHBvcyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDpmZDmtYHmm7TmlrDoioLngrlcbiAgICogQHBhcmFtIGl0ZW0g5ouW5Yqo55qE6IqC54K55a6e5L6LXG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIGRlYm91bmNlVXBkYXRlOiBkZWJvdW5jZShmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgdGFyZ2V0cyA9IGV2ZW50LnRhcmdldHMsXG4gICAgICAgIGdyYXBoID0gZXZlbnQuZ3JhcGgsXG4gICAgICAgIHBvaW50ID0gZXZlbnQucG9pbnQsXG4gICAgICAgIG9yaWdpbiA9IGV2ZW50Lm9yaWdpbixcbiAgICAgICAgZXZ0ID0gZXZlbnQuZXZ0LFxuICAgICAgICB1cGRhdGVFZGdlID0gZXZlbnQudXBkYXRlRWRnZSxcbiAgICAgICAgdXBkYXRlRnVuYyA9IGV2ZW50LnVwZGF0ZUZ1bmM7XG4gICAgdGFyZ2V0cy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBtb2RlbCA9IGl0ZW0uZ2V0KCdtb2RlbCcpO1xuICAgICAgdmFyIG5vZGVJZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgICBpZiAoIXBvaW50W25vZGVJZF0pIHtcbiAgICAgICAgcG9pbnRbbm9kZUlkXSA9IHtcbiAgICAgICAgICB4OiBtb2RlbC54IHx8IDAsXG4gICAgICAgICAgeTogbW9kZWwueSB8fCAwXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHZhciB4ID0gZXZ0LnggLSBvcmlnaW4ueCArIHBvaW50W25vZGVJZF0ueDtcbiAgICAgIHZhciB5ID0gZXZ0LnkgLSBvcmlnaW4ueSArIHBvaW50W25vZGVJZF0ueTtcbiAgICAgIHZhciBwb3MgPSB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHlcbiAgICAgIH07XG5cbiAgICAgIGlmICh1cGRhdGVFZGdlKSB7XG4gICAgICAgIGdyYXBoLnVwZGF0ZUl0ZW0oaXRlbSwgcG9zLCBmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLnVwZGF0ZVBvc2l0aW9uKHBvcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIDUwLCB0cnVlKSxcblxuICAvKipcbiAgICog5pu05paw5ouW5Yqo5YWD57Sg5pe255qEZGVsZWdhdGVcbiAgICogQHBhcmFtIHtFdmVudH0gZSDkuovku7blj6Xmn4RcbiAgICogQHBhcmFtIHtudW1iZXJ9IHgg5ouW5Yqo5Y2V5Liq5YWD57Sg5pe25YCZ55qEeOWdkOagh1xuICAgKiBAcGFyYW0ge251bWJlcn0geSDmi5bliqjljZXkuKrlhYPntKDml7blgJnnmoR55Z2Q5qCHXG4gICAqL1xuICB1cGRhdGVEZWxlZ2F0ZTogZnVuY3Rpb24gdXBkYXRlRGVsZWdhdGUoZSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIXRoaXMuZGVsZWdhdGVSZWN0KSB7XG4gICAgICAvLyDmi5bliqjlpJrkuKpcbiAgICAgIHZhciBwYXJlbnRfMSA9IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICAgIHZhciBhdHRycyA9IGRlZXBNaXgoe30sIEdsb2JhbC5kZWxlZ2F0ZVN0eWxlLCB0aGlzLmRlbGVnYXRlU3R5bGUpO1xuXG4gICAgICB2YXIgX2EgPSB0aGlzLmNhbGN1bGF0aW9uR3JvdXBQb3NpdGlvbihlKSxcbiAgICAgICAgICBjeCA9IF9hLngsXG4gICAgICAgICAgY3kgPSBfYS55LFxuICAgICAgICAgIHdpZHRoID0gX2Eud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX2EuaGVpZ2h0LFxuICAgICAgICAgIG1pblggPSBfYS5taW5YLFxuICAgICAgICAgIG1pblkgPSBfYS5taW5ZO1xuXG4gICAgICB0aGlzLm9yaWdpblBvaW50ID0ge1xuICAgICAgICB4OiBjeCxcbiAgICAgICAgeTogY3ksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIG1pblg6IG1pblgsXG4gICAgICAgIG1pblk6IG1pbllcbiAgICAgIH07IC8vIG1vZGVs5LiK55qEeCwgeeaYr+ebuOWvueS6juWbvuW9ouS4reW/g+eahO+8jGRlbGVnYXRlU2hhcGXmmK9n5a6e5L6L77yMeCx55piv57ud5a+55Z2Q5qCHXG5cbiAgICAgIHRoaXMuZGVsZWdhdGVSZWN0ID0gcGFyZW50XzEuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgIHg6IGN4LFxuICAgICAgICAgIHk6IGN5XG4gICAgICAgIH0sIGF0dHJzKSxcbiAgICAgICAgbmFtZTogJ3JlY3QtZGVsZWdhdGUtc2hhcGUnXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB0aGlzLmRlbGVnYXRlUmVjdDtcbiAgICAgIHRoaXMuZGVsZWdhdGVSZWN0LnNldCgnY2FwdHVyZScsIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNsaWVudFggPSBlLnggLSB0aGlzLm9yaWdpbi54ICsgdGhpcy5vcmlnaW5Qb2ludC5taW5YO1xuICAgICAgdmFyIGNsaWVudFkgPSBlLnkgLSB0aGlzLm9yaWdpbi55ICsgdGhpcy5vcmlnaW5Qb2ludC5taW5ZO1xuICAgICAgdGhpcy5kZWxlZ2F0ZVJlY3QuYXR0cih7XG4gICAgICAgIHg6IGNsaWVudFgsXG4gICAgICAgIHk6IGNsaWVudFlcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6K6h566XZGVsZWdhdGXkvY3nva7vvIzljIXmi6zlt6bkuIrop5Llt6bovrnlj4rlrr3luqblkozpq5jluqZcbiAgICogQG1lbWJlcm9mIEl0ZW1Hcm91cFxuICAgKiBAcmV0dXJuIHtvYmplY3R9IOiuoeeul+WHuuadpeeahGRlbGVnYXRl5Z2Q5qCH5L+h5oGv5Y+K5a696auYXG4gICAqL1xuICBjYWxjdWxhdGlvbkdyb3VwUG9zaXRpb246IGZ1bmN0aW9uIGNhbGN1bGF0aW9uR3JvdXBQb3NpdGlvbihldnQpIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLnRhcmdldHM7XG5cbiAgICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBub2Rlcy5wdXNoKGV2dC5pdGVtKTtcbiAgICB9XG5cbiAgICB2YXIgbWlueCA9IEluZmluaXR5O1xuICAgIHZhciBtYXh4ID0gLUluZmluaXR5O1xuICAgIHZhciBtaW55ID0gSW5maW5pdHk7XG4gICAgdmFyIG1heHkgPSAtSW5maW5pdHk7IC8vIOiOt+WPluW3suiKgueCueeahOaJgOacieacgOWkp+acgOWwj3ggeeWAvFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZW1lbnQgPSBub2Rlc1tpXTtcbiAgICAgIHZhciBiYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gICAgICB2YXIgbWluWCA9IGJib3gubWluWCxcbiAgICAgICAgICBtaW5ZID0gYmJveC5taW5ZLFxuICAgICAgICAgIG1heFggPSBiYm94Lm1heFgsXG4gICAgICAgICAgbWF4WSA9IGJib3gubWF4WTtcblxuICAgICAgaWYgKG1pblggPCBtaW54KSB7XG4gICAgICAgIG1pbnggPSBtaW5YO1xuICAgICAgfVxuXG4gICAgICBpZiAobWluWSA8IG1pbnkpIHtcbiAgICAgICAgbWlueSA9IG1pblk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXhYID4gbWF4eCkge1xuICAgICAgICBtYXh4ID0gbWF4WDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1heFkgPiBtYXh5KSB7XG4gICAgICAgIG1heHkgPSBtYXhZO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciB4ID0gTWF0aC5mbG9vcihtaW54KTtcbiAgICB2YXIgeSA9IE1hdGguZmxvb3IobWlueSk7XG4gICAgdmFyIHdpZHRoID0gTWF0aC5jZWlsKG1heHgpIC0gTWF0aC5mbG9vcihtaW54KTtcbiAgICB2YXIgaGVpZ2h0ID0gTWF0aC5jZWlsKG1heHkpIC0gTWF0aC5mbG9vcihtaW55KTtcbiAgICByZXR1cm4ge1xuICAgICAgeDogeCxcbiAgICAgIHk6IHksXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIG1pblg6IG1pbngsXG4gICAgICBtaW5ZOiBtaW55XG4gICAgfTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/drag-node.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/edge-tooltip.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/edge-tooltip.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _tooltip_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip-base */ \"./node_modules/@antv/g6-pc/es/behavior/tooltip-base.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n getDefaultCfg: function getDefaultCfg() {\n return {\n item: 'edge',\n offset: 12,\n formatText: function formatText(model) {\n return \"source: \".concat(model.source, \" target: \").concat(model.target);\n }\n };\n },\n getEvents: function getEvents() {\n return {\n 'edge:mouseenter': 'onMouseEnter',\n 'edge:mouseleave': 'onMouseLeave',\n 'edge:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave'\n };\n }\n}, _tooltip_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZWRnZS10b29sdGlwLmpzP2FmODkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0M7QUFDbkIscUhBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFLHFEQUFJLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZWRnZS10b29sdGlwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBiYXNlIGZyb20gJy4vdG9vbHRpcC1iYXNlJztcbmV4cG9ydCBkZWZhdWx0IF9fYXNzaWduKHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXRlbTogJ2VkZ2UnLFxuICAgICAgb2Zmc2V0OiAxMixcbiAgICAgIGZvcm1hdFRleHQ6IGZ1bmN0aW9uIGZvcm1hdFRleHQobW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIFwic291cmNlOiBcIi5jb25jYXQobW9kZWwuc291cmNlLCBcIiB0YXJnZXQ6IFwiKS5jb25jYXQobW9kZWwudGFyZ2V0KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2VkZ2U6bW91c2VlbnRlcic6ICdvbk1vdXNlRW50ZXInLFxuICAgICAgJ2VkZ2U6bW91c2VsZWF2ZSc6ICdvbk1vdXNlTGVhdmUnLFxuICAgICAgJ2VkZ2U6bW91c2Vtb3ZlJzogJ29uTW91c2VNb3ZlJyxcbiAgICAgIGFmdGVycmVtb3ZlaXRlbTogJ29uTW91c2VMZWF2ZSdcbiAgICB9O1xuICB9XG59LCBiYXNlKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/edge-tooltip.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/index.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/index.js ***! \*******************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _drag_canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./drag-canvas */ \"./node_modules/@antv/g6-pc/es/behavior/drag-canvas.js\");\n/* harmony import */ var _drag_node__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./drag-node */ \"./node_modules/@antv/g6-pc/es/behavior/drag-node.js\");\n/* harmony import */ var _activate_relations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./activate-relations */ \"./node_modules/@antv/g6-pc/es/behavior/activate-relations.js\");\n/* harmony import */ var _brush_select__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./brush-select */ \"./node_modules/@antv/g6-pc/es/behavior/brush-select.js\");\n/* harmony import */ var _click_select__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./click-select */ \"./node_modules/@antv/g6-pc/es/behavior/click-select.js\");\n/* harmony import */ var _zoom_canvas__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./zoom-canvas */ \"./node_modules/@antv/g6-pc/es/behavior/zoom-canvas.js\");\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./tooltip */ \"./node_modules/@antv/g6-pc/es/behavior/tooltip.js\");\n/* harmony import */ var _edge_tooltip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./edge-tooltip */ \"./node_modules/@antv/g6-pc/es/behavior/edge-tooltip.js\");\n/* harmony import */ var _collapse_expand__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./collapse-expand */ \"./node_modules/@antv/g6-pc/es/behavior/collapse-expand.js\");\n/* harmony import */ var _drag_combo__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./drag-combo */ \"./node_modules/@antv/g6-pc/es/behavior/drag-combo.js\");\n/* harmony import */ var _collapse_expand_combo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./collapse-expand-combo */ \"./node_modules/@antv/g6-pc/es/behavior/collapse-expand-combo.js\");\n/* harmony import */ var _lasso_select__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./lasso-select */ \"./node_modules/@antv/g6-pc/es/behavior/lasso-select.js\");\n/* harmony import */ var _create_edge__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./create-edge */ \"./node_modules/@antv/g6-pc/es/behavior/create-edge.js\");\n/* harmony import */ var _shortcuts_call__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./shortcuts-call */ \"./node_modules/@antv/g6-pc/es/behavior/shortcuts-call.js\");\n/* harmony import */ var _scroll_canvas__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./scroll-canvas */ \"./node_modules/@antv/g6-pc/es/behavior/scroll-canvas.js\");\n\n // import Behavior from './behavior';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar behaviors = {\n 'drag-canvas': _drag_canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n 'zoom-canvas': _zoom_canvas__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n 'drag-node': _drag_node__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n 'activate-relations': _activate_relations__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n 'brush-select': _brush_select__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n 'click-select': _click_select__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n 'lasso-select': _lasso_select__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n tooltip: _tooltip__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n 'edge-tooltip': _edge_tooltip__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n 'collapse-expand': _collapse_expand__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n 'drag-combo': _drag_combo__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n 'collapse-expand-combo': _collapse_expand_combo__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n 'create-edge': _create_edge__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n 'shortcuts-call': _shortcuts_call__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n 'scroll-canvas': _scroll_canvas__WEBPACK_IMPORTED_MODULE_16__[\"default\"]\n};\nObject(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors, function (behavior, type) {\n Object(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerBehavior\"])(type, behavior);\n}); // export default Behavior;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvaW5kZXguanM/NTliMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDZTs7QUFFVjtBQUNKO0FBQ2tCO0FBQ1o7QUFDQTtBQUNGO0FBQ1A7QUFDUztBQUNNO0FBQ1Y7QUFDcUI7QUFDakI7QUFDRjtBQUNNO0FBQ0Y7QUFDM0M7QUFDQSxpQkFBaUIsb0RBQVU7QUFDM0IsaUJBQWlCLG9EQUFVO0FBQzNCLGVBQWUsa0RBQVE7QUFDdkIsd0JBQXdCLDJEQUFpQjtBQUN6QyxrQkFBa0IscURBQVc7QUFDN0Isa0JBQWtCLHFEQUFXO0FBQzdCLGtCQUFrQixzREFBVztBQUM3QixXQUFXLGdEQUFPO0FBQ2xCLGtCQUFrQixxREFBVztBQUM3QixxQkFBcUIseURBQWM7QUFDbkMsZ0JBQWdCLG9EQUFTO0FBQ3pCLDJCQUEyQiwrREFBbUI7QUFDOUMsaUJBQWlCLHFEQUFVO0FBQzNCLG9CQUFvQix3REFBYTtBQUNqQyxtQkFBbUIsdURBQVk7QUFDL0I7QUFDQSx1REFBSTtBQUNKLEVBQUUsc0VBQWdCO0FBQ2xCLENBQUMsRUFBRSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVhY2ggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IHJlZ2lzdGVyQmVoYXZpb3IgfSBmcm9tICdAYW50di9nNi1jb3JlJzsgLy8gaW1wb3J0IEJlaGF2aW9yIGZyb20gJy4vYmVoYXZpb3InO1xuXG5pbXBvcnQgRHJhZ0NhbnZhcyBmcm9tICcuL2RyYWctY2FudmFzJztcbmltcG9ydCBEcmFnTm9kZSBmcm9tICcuL2RyYWctbm9kZSc7XG5pbXBvcnQgQWN0aXZhdGVSZWxhdGlvbnMgZnJvbSAnLi9hY3RpdmF0ZS1yZWxhdGlvbnMnO1xuaW1wb3J0IEJydXNoU2VsZWN0IGZyb20gJy4vYnJ1c2gtc2VsZWN0JztcbmltcG9ydCBDbGlja1NlbGVjdCBmcm9tICcuL2NsaWNrLXNlbGVjdCc7XG5pbXBvcnQgWm9vbUNhbnZhcyBmcm9tICcuL3pvb20tY2FudmFzJztcbmltcG9ydCBUb29sdGlwIGZyb20gJy4vdG9vbHRpcCc7XG5pbXBvcnQgRWRnZVRvb2x0aXAgZnJvbSAnLi9lZGdlLXRvb2x0aXAnO1xuaW1wb3J0IENvbGxhcHNlRXhwYW5kIGZyb20gJy4vY29sbGFwc2UtZXhwYW5kJztcbmltcG9ydCBEcmFnQ29tYm8gZnJvbSAnLi9kcmFnLWNvbWJvJztcbmltcG9ydCBDb2xsYXBzZUV4cGFuZENvbWJvIGZyb20gJy4vY29sbGFwc2UtZXhwYW5kLWNvbWJvJztcbmltcG9ydCBMYXNzb1NlbGVjdCBmcm9tICcuL2xhc3NvLXNlbGVjdCc7XG5pbXBvcnQgQ3JlYXRlRWRnZSBmcm9tICcuL2NyZWF0ZS1lZGdlJztcbmltcG9ydCBTaG9ydGN1dHNDYWxsIGZyb20gJy4vc2hvcnRjdXRzLWNhbGwnO1xuaW1wb3J0IFNjcm9sbENhbnZhcyBmcm9tICcuL3Njcm9sbC1jYW52YXMnO1xudmFyIGJlaGF2aW9ycyA9IHtcbiAgJ2RyYWctY2FudmFzJzogRHJhZ0NhbnZhcyxcbiAgJ3pvb20tY2FudmFzJzogWm9vbUNhbnZhcyxcbiAgJ2RyYWctbm9kZSc6IERyYWdOb2RlLFxuICAnYWN0aXZhdGUtcmVsYXRpb25zJzogQWN0aXZhdGVSZWxhdGlvbnMsXG4gICdicnVzaC1zZWxlY3QnOiBCcnVzaFNlbGVjdCxcbiAgJ2NsaWNrLXNlbGVjdCc6IENsaWNrU2VsZWN0LFxuICAnbGFzc28tc2VsZWN0JzogTGFzc29TZWxlY3QsXG4gIHRvb2x0aXA6IFRvb2x0aXAsXG4gICdlZGdlLXRvb2x0aXAnOiBFZGdlVG9vbHRpcCxcbiAgJ2NvbGxhcHNlLWV4cGFuZCc6IENvbGxhcHNlRXhwYW5kLFxuICAnZHJhZy1jb21ibyc6IERyYWdDb21ibyxcbiAgJ2NvbGxhcHNlLWV4cGFuZC1jb21ibyc6IENvbGxhcHNlRXhwYW5kQ29tYm8sXG4gICdjcmVhdGUtZWRnZSc6IENyZWF0ZUVkZ2UsXG4gICdzaG9ydGN1dHMtY2FsbCc6IFNob3J0Y3V0c0NhbGwsXG4gICdzY3JvbGwtY2FudmFzJzogU2Nyb2xsQ2FudmFzXG59O1xuZWFjaChiZWhhdmlvcnMsIGZ1bmN0aW9uIChiZWhhdmlvciwgdHlwZSkge1xuICByZWdpc3RlckJlaGF2aW9yKHR5cGUsIGJlaGF2aW9yKTtcbn0pOyAvLyBleHBvcnQgZGVmYXVsdCBCZWhhdmlvcjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/lasso-select.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/lasso-select.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g6-pc/es/util/index.js\");\n\n\nvar isPolygonsIntersect = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isPolygonsIntersect,\n pathToPoints = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pathToPoints;\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['drag', 'shift', 'ctrl', 'alt', 'control'];\n\nvar isItemIntersecPolygon = function isItemIntersecPolygon(item, polyPoints) {\n var shapePoints;\n var shape = item.getKeyShape();\n\n if (item.get('type') === 'path') {\n shapePoints = pathToPoints(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = [[shapeBBox.minX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.maxY], [shapeBBox.minX, shapeBBox.maxY]];\n }\n\n return isPolygonsIntersect(polyPoints, shapePoints);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n delegateStyle: {\n fill: '#EEF6FF',\n fillOpacity: 0.4,\n stroke: '#DDEEFE',\n lineWidth: 1\n },\n onSelect: function onSelect() {},\n onDeselect: function onDeselect() {},\n selectedState: 'selected',\n trigger: DEFAULT_TRIGGER,\n includeEdges: true,\n selectedEdges: [],\n selectedNodes: [] // multiple: false,\n\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior lasso-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (this.trigger === 'drag') {\n return {\n dragstart: 'onDragStart',\n drag: 'onDragMove',\n dragend: 'onDragEnd',\n 'canvas:click': 'clearStates'\n };\n }\n\n return {\n dragstart: 'onDragStart',\n drag: 'onDragMove',\n dragend: 'onDragEnd',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown',\n 'canvas:click': 'clearStates'\n };\n },\n onDragStart: function onDragStart(e) {\n var lasso = this.lasso;\n var item = e.item; // 排除在节点上拖动\n\n if (item) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n if (this.selectedNodes && this.selectedNodes.length !== 0) {\n this.clearStates();\n }\n\n if (!lasso) {\n lasso = this.createLasso();\n }\n\n this.dragging = true;\n this.originPoint = {\n x: e.x,\n y: e.y\n };\n this.points.push(this.originPoint);\n lasso.show();\n },\n onDragMove: function onDragMove(e) {\n if (!this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.points.push({\n x: e.x,\n y: e.y\n });\n this.updateLasso(e);\n },\n onDragEnd: function onDragEnd(e) {\n if (!this.lasso && !this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.points.push(this.originPoint);\n this.getSelectedItems();\n this.lasso.remove(true);\n this.lasso = null;\n this.points = [];\n this.dragging = false;\n },\n getLassoPath: function getLassoPath() {\n var points = this.points;\n var path = [];\n\n if (points.length) {\n points.forEach(function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n path.push(['L', points[0].x, points[0].y]);\n }\n\n return path;\n },\n clearStates: function clearStates() {\n var _a = this,\n graph = _a.graph,\n selectedState = _a.selectedState;\n\n var nodes = graph.findAllByState('node', selectedState);\n var edges = graph.findAllByState('edge', selectedState);\n nodes.forEach(function (node) {\n return graph.setItemState(node, selectedState, false);\n });\n edges.forEach(function (edge) {\n return graph.setItemState(edge, selectedState, false);\n });\n\n if (this.onDeselect) {\n this.onDeselect(this.selectedNodes, this.selectedEdges);\n }\n\n this.selectedNodes = [];\n this.selectedEdges = [];\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: []\n },\n select: false\n });\n },\n getSelectedItems: function getSelectedItems() {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n shouldUpdate = _a.shouldUpdate;\n\n var lassoContour = this.points.map(function (point) {\n return [graph.getCanvasByPoint(point.x, point.y).x, graph.getCanvasByPoint(point.x, point.y).y];\n });\n var state = this.selectedState;\n var selectedNodes = [];\n var selectedIds = [];\n graph.getNodes().forEach(function (node) {\n if (!node.isVisible()) return; // 隐藏节点不能被选中\n\n if (isItemIntersecPolygon(node, lassoContour)) {\n if (shouldUpdate(node, 'select')) {\n selectedNodes.push(node);\n var model = node.getModel();\n selectedIds.push(model.id);\n graph.setItemState(node, state, true);\n }\n }\n });\n var selectedEdges = [];\n\n if (this.includeEdges) {\n // 选中边,边的source和target都在选中的节点中时才选中\n selectedNodes.forEach(function (node) {\n var edges = node.getOutEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return; // 隐藏边不能够被选中\n\n var model = edge.getModel();\n var source = model.source,\n target = model.target;\n\n if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate(edge, 'select')) {\n selectedEdges.push(edge);\n graph.setItemState(edge, _this.selectedState, true);\n }\n });\n });\n }\n\n this.selectedEdges = selectedEdges;\n this.selectedNodes = selectedNodes;\n\n if (this.onSelect) {\n this.onSelect(selectedNodes, selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges\n },\n select: true\n });\n },\n createLasso: function createLasso() {\n var self = this;\n var lasso = self.graph.get('delegateGroup').addShape('path', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: []\n }, self.delegateStyle),\n capture: false,\n name: 'lasso-shape'\n });\n this.lasso = lasso;\n this.delegate = lasso;\n this.points = [];\n return lasso;\n },\n updateLasso: function updateLasso(e) {\n var self = this;\n this.lasso.attr({\n path: self.getLassoPath()\n });\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n } // if (this.selectedNodes && this.selectedNodes.length !== 0) {\n // this.clearStates();\n // }\n\n\n if (code.toLowerCase() === this.trigger.toLowerCase()) {\n this.keydown = true;\n } else {\n this.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.lasso) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的lasso\n this.lasso.remove(true);\n this.lasso = null;\n this.points = [];\n this.dragging = false;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvbGFzc28tc2VsZWN0LmpzPzA3OWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ047QUFDM0IsMEJBQTBCLDZDQUFJO0FBQzlCLG1CQUFtQiw2Q0FBSTtBQUN2QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asc0NBQXNDO0FBQ3RDLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxzREFBUTtBQUNyQjtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvbGFzc28tc2VsZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBVdGlsIGZyb20gJy4uL3V0aWwnO1xudmFyIGlzUG9seWdvbnNJbnRlcnNlY3QgPSBVdGlsLmlzUG9seWdvbnNJbnRlcnNlY3QsXG4gICAgcGF0aFRvUG9pbnRzID0gVXRpbC5wYXRoVG9Qb2ludHM7XG52YXIgREVGQVVMVF9UUklHR0VSID0gJ3NoaWZ0JztcbnZhciBBTExPV19FVkVOVFMgPSBbJ2RyYWcnLCAnc2hpZnQnLCAnY3RybCcsICdhbHQnLCAnY29udHJvbCddO1xuXG52YXIgaXNJdGVtSW50ZXJzZWNQb2x5Z29uID0gZnVuY3Rpb24gaXNJdGVtSW50ZXJzZWNQb2x5Z29uKGl0ZW0sIHBvbHlQb2ludHMpIHtcbiAgdmFyIHNoYXBlUG9pbnRzO1xuICB2YXIgc2hhcGUgPSBpdGVtLmdldEtleVNoYXBlKCk7XG5cbiAgaWYgKGl0ZW0uZ2V0KCd0eXBlJykgPT09ICdwYXRoJykge1xuICAgIHNoYXBlUG9pbnRzID0gcGF0aFRvUG9pbnRzKHNoYXBlLmF0dHIoJ3BhdGgnKSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNoYXBlQkJveCA9IHNoYXBlLmdldENhbnZhc0JCb3goKTtcbiAgICBzaGFwZVBvaW50cyA9IFtbc2hhcGVCQm94Lm1pblgsIHNoYXBlQkJveC5taW5ZXSwgW3NoYXBlQkJveC5tYXhYLCBzaGFwZUJCb3gubWluWV0sIFtzaGFwZUJCb3gubWF4WCwgc2hhcGVCQm94Lm1heFldLCBbc2hhcGVCQm94Lm1pblgsIHNoYXBlQkJveC5tYXhZXV07XG4gIH1cblxuICByZXR1cm4gaXNQb2x5Z29uc0ludGVyc2VjdChwb2x5UG9pbnRzLCBzaGFwZVBvaW50cyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlbGVnYXRlU3R5bGU6IHtcbiAgICAgICAgZmlsbDogJyNFRUY2RkYnLFxuICAgICAgICBmaWxsT3BhY2l0eTogMC40LFxuICAgICAgICBzdHJva2U6ICcjRERFRUZFJyxcbiAgICAgICAgbGluZVdpZHRoOiAxXG4gICAgICB9LFxuICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uIG9uU2VsZWN0KCkge30sXG4gICAgICBvbkRlc2VsZWN0OiBmdW5jdGlvbiBvbkRlc2VsZWN0KCkge30sXG4gICAgICBzZWxlY3RlZFN0YXRlOiAnc2VsZWN0ZWQnLFxuICAgICAgdHJpZ2dlcjogREVGQVVMVF9UUklHR0VSLFxuICAgICAgaW5jbHVkZUVkZ2VzOiB0cnVlLFxuICAgICAgc2VsZWN0ZWRFZGdlczogW10sXG4gICAgICBzZWxlY3RlZE5vZGVzOiBbXSAvLyBtdWx0aXBsZTogZmFsc2UsXG5cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcbiAgICBpZiAoIShBTExPV19FVkVOVFMuaW5kZXhPZih0aGlzLnRyaWdnZXIudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHtcbiAgICAgIHRoaXMudHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjtcbiAgICAgIGNvbnNvbGUud2FybihcIkJlaGF2aW9yIGxhc3NvLXNlbGVjdCDnmoQgdHJpZ2dlciDlj4LmlbDkuI3lkIjms5XvvIzor7fovpPlhaUgJ2RyYWcn44CBJ3NoaWZ0J+OAgSdjdHJsJyDmiJYgJ2FsdCdcIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2RyYWcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkcmFnc3RhcnQ6ICdvbkRyYWdTdGFydCcsXG4gICAgICAgIGRyYWc6ICdvbkRyYWdNb3ZlJyxcbiAgICAgICAgZHJhZ2VuZDogJ29uRHJhZ0VuZCcsXG4gICAgICAgICdjYW52YXM6Y2xpY2snOiAnY2xlYXJTdGF0ZXMnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkcmFnc3RhcnQ6ICdvbkRyYWdTdGFydCcsXG4gICAgICBkcmFnOiAnb25EcmFnTW92ZScsXG4gICAgICBkcmFnZW5kOiAnb25EcmFnRW5kJyxcbiAgICAgIGtleXVwOiAnb25LZXlVcCcsXG4gICAgICBrZXlkb3duOiAnb25LZXlEb3duJyxcbiAgICAgICdjYW52YXM6Y2xpY2snOiAnY2xlYXJTdGF0ZXMnXG4gICAgfTtcbiAgfSxcbiAgb25EcmFnU3RhcnQ6IGZ1bmN0aW9uIG9uRHJhZ1N0YXJ0KGUpIHtcbiAgICB2YXIgbGFzc28gPSB0aGlzLmxhc3NvO1xuICAgIHZhciBpdGVtID0gZS5pdGVtOyAvLyDmjpLpmaTlnKjoioLngrnkuIrmi5bliqhcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciAhPT0gJ2RyYWcnICYmICF0aGlzLmtleWRvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzICYmIHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGggIT09IDApIHtcbiAgICAgIHRoaXMuY2xlYXJTdGF0ZXMoKTtcbiAgICB9XG5cbiAgICBpZiAoIWxhc3NvKSB7XG4gICAgICBsYXNzbyA9IHRoaXMuY3JlYXRlTGFzc28oKTtcbiAgICB9XG5cbiAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICB0aGlzLm9yaWdpblBvaW50ID0ge1xuICAgICAgeDogZS54LFxuICAgICAgeTogZS55XG4gICAgfTtcbiAgICB0aGlzLnBvaW50cy5wdXNoKHRoaXMub3JpZ2luUG9pbnQpO1xuICAgIGxhc3NvLnNob3coKTtcbiAgfSxcbiAgb25EcmFnTW92ZTogZnVuY3Rpb24gb25EcmFnTW92ZShlKSB7XG4gICAgaWYgKCF0aGlzLmRyYWdnaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciAhPT0gJ2RyYWcnICYmICF0aGlzLmtleWRvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBvaW50cy5wdXNoKHtcbiAgICAgIHg6IGUueCxcbiAgICAgIHk6IGUueVxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlTGFzc28oZSk7XG4gIH0sXG4gIG9uRHJhZ0VuZDogZnVuY3Rpb24gb25EcmFnRW5kKGUpIHtcbiAgICBpZiAoIXRoaXMubGFzc28gJiYgIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyICE9PSAnZHJhZycgJiYgIXRoaXMua2V5ZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucG9pbnRzLnB1c2godGhpcy5vcmlnaW5Qb2ludCk7XG4gICAgdGhpcy5nZXRTZWxlY3RlZEl0ZW1zKCk7XG4gICAgdGhpcy5sYXNzby5yZW1vdmUodHJ1ZSk7XG4gICAgdGhpcy5sYXNzbyA9IG51bGw7XG4gICAgdGhpcy5wb2ludHMgPSBbXTtcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gIH0sXG4gIGdldExhc3NvUGF0aDogZnVuY3Rpb24gZ2V0TGFzc29QYXRoKCkge1xuICAgIHZhciBwb2ludHMgPSB0aGlzLnBvaW50cztcbiAgICB2YXIgcGF0aCA9IFtdO1xuXG4gICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcbiAgICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChwb2ludCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgcGF0aC5wdXNoKFsnTScsIHBvaW50LngsIHBvaW50LnldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXRoLnB1c2goWydMJywgcG9pbnQueCwgcG9pbnQueV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHBhdGgucHVzaChbJ0wnLCBwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcbiAgY2xlYXJTdGF0ZXM6IGZ1bmN0aW9uIGNsZWFyU3RhdGVzKCkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIHNlbGVjdGVkU3RhdGUgPSBfYS5zZWxlY3RlZFN0YXRlO1xuXG4gICAgdmFyIG5vZGVzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCBzZWxlY3RlZFN0YXRlKTtcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnZWRnZScsIHNlbGVjdGVkU3RhdGUpO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBncmFwaC5zZXRJdGVtU3RhdGUobm9kZSwgc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgIH0pO1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMub25EZXNlbGVjdCkge1xuICAgICAgdGhpcy5vbkRlc2VsZWN0KHRoaXMuc2VsZWN0ZWROb2RlcywgdGhpcy5zZWxlY3RlZEVkZ2VzKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRWRnZXMgPSBbXTtcbiAgICBncmFwaC5lbWl0KCdub2Rlc2VsZWN0Y2hhbmdlJywge1xuICAgICAgc2VsZWN0ZWRJdGVtczoge1xuICAgICAgICBub2RlczogW10sXG4gICAgICAgIGVkZ2VzOiBbXVxuICAgICAgfSxcbiAgICAgIHNlbGVjdDogZmFsc2VcbiAgICB9KTtcbiAgfSxcbiAgZ2V0U2VsZWN0ZWRJdGVtczogZnVuY3Rpb24gZ2V0U2VsZWN0ZWRJdGVtcygpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgZ3JhcGggPSBfYS5ncmFwaCxcbiAgICAgICAgc2hvdWxkVXBkYXRlID0gX2Euc2hvdWxkVXBkYXRlO1xuXG4gICAgdmFyIGxhc3NvQ29udG91ciA9IHRoaXMucG9pbnRzLm1hcChmdW5jdGlvbiAocG9pbnQpIHtcbiAgICAgIHJldHVybiBbZ3JhcGguZ2V0Q2FudmFzQnlQb2ludChwb2ludC54LCBwb2ludC55KS54LCBncmFwaC5nZXRDYW52YXNCeVBvaW50KHBvaW50LngsIHBvaW50LnkpLnldO1xuICAgIH0pO1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuc2VsZWN0ZWRTdGF0ZTtcbiAgICB2YXIgc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgIHZhciBzZWxlY3RlZElkcyA9IFtdO1xuICAgIGdyYXBoLmdldE5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgaWYgKCFub2RlLmlzVmlzaWJsZSgpKSByZXR1cm47IC8vIOmakOiXj+iKgueCueS4jeiDveiiq+mAieS4rVxuXG4gICAgICBpZiAoaXNJdGVtSW50ZXJzZWNQb2x5Z29uKG5vZGUsIGxhc3NvQ29udG91cikpIHtcbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZShub2RlLCAnc2VsZWN0JykpIHtcbiAgICAgICAgICBzZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgICAgICAgIHNlbGVjdGVkSWRzLnB1c2gobW9kZWwuaWQpO1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMuaW5jbHVkZUVkZ2VzKSB7XG4gICAgICAvLyDpgInkuK3ovrnvvIzovrnnmoRzb3VyY2Xlkox0YXJnZXTpg73lnKjpgInkuK3nmoToioLngrnkuK3ml7bmiY3pgInkuK1cbiAgICAgIHNlbGVjdGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgZWRnZXMgPSBub2RlLmdldE91dEVkZ2VzKCk7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICBpZiAoIWVkZ2UuaXNWaXNpYmxlKCkpIHJldHVybjsgLy8g6ZqQ6JeP6L655LiN6IO95aSf6KKr6YCJ5LitXG5cbiAgICAgICAgICB2YXIgbW9kZWwgPSBlZGdlLmdldE1vZGVsKCk7XG4gICAgICAgICAgdmFyIHNvdXJjZSA9IG1vZGVsLnNvdXJjZSxcbiAgICAgICAgICAgICAgdGFyZ2V0ID0gbW9kZWwudGFyZ2V0O1xuXG4gICAgICAgICAgaWYgKHNlbGVjdGVkSWRzLmluY2x1ZGVzKHNvdXJjZSkgJiYgc2VsZWN0ZWRJZHMuaW5jbHVkZXModGFyZ2V0KSAmJiBzaG91bGRVcGRhdGUoZWRnZSwgJ3NlbGVjdCcpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEVkZ2VzLnB1c2goZWRnZSk7XG4gICAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgX3RoaXMuc2VsZWN0ZWRTdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRFZGdlcyA9IHNlbGVjdGVkRWRnZXM7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gc2VsZWN0ZWROb2RlcztcblxuICAgIGlmICh0aGlzLm9uU2VsZWN0KSB7XG4gICAgICB0aGlzLm9uU2VsZWN0KHNlbGVjdGVkTm9kZXMsIHNlbGVjdGVkRWRnZXMpO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ25vZGVzZWxlY3RjaGFuZ2UnLCB7XG4gICAgICBzZWxlY3RlZEl0ZW1zOiB7XG4gICAgICAgIG5vZGVzOiBzZWxlY3RlZE5vZGVzLFxuICAgICAgICBlZGdlczogc2VsZWN0ZWRFZGdlc1xuICAgICAgfSxcbiAgICAgIHNlbGVjdDogdHJ1ZVxuICAgIH0pO1xuICB9LFxuICBjcmVhdGVMYXNzbzogZnVuY3Rpb24gY3JlYXRlTGFzc28oKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBsYXNzbyA9IHNlbGYuZ3JhcGguZ2V0KCdkZWxlZ2F0ZUdyb3VwJykuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICBwYXRoOiBbXVxuICAgICAgfSwgc2VsZi5kZWxlZ2F0ZVN0eWxlKSxcbiAgICAgIGNhcHR1cmU6IGZhbHNlLFxuICAgICAgbmFtZTogJ2xhc3NvLXNoYXBlJ1xuICAgIH0pO1xuICAgIHRoaXMubGFzc28gPSBsYXNzbztcbiAgICB0aGlzLmRlbGVnYXRlID0gbGFzc287XG4gICAgdGhpcy5wb2ludHMgPSBbXTtcbiAgICByZXR1cm4gbGFzc287XG4gIH0sXG4gIHVwZGF0ZUxhc3NvOiBmdW5jdGlvbiB1cGRhdGVMYXNzbyhlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMubGFzc28uYXR0cih7XG4gICAgICBwYXRoOiBzZWxmLmdldExhc3NvUGF0aCgpXG4gICAgfSk7XG4gIH0sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKGUpIHtcbiAgICB2YXIgY29kZSA9IGUua2V5O1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBpZiAodGhpcy5zZWxlY3RlZE5vZGVzICYmIHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGggIT09IDApIHtcbiAgICAvLyAgIHRoaXMuY2xlYXJTdGF0ZXMoKTtcbiAgICAvLyB9XG5cblxuICAgIGlmIChjb2RlLnRvTG93ZXJDYXNlKCkgPT09IHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aGlzLmtleWRvd24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleWRvd24gPSBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIG9uS2V5VXA6IGZ1bmN0aW9uIG9uS2V5VXAoKSB7XG4gICAgaWYgKHRoaXMubGFzc28pIHtcbiAgICAgIC8vIOa4hemZpOaJgOaciemAieS4reeKtuaAgeWQju+8jOiuvue9ruaLluW+l+WKqOeKtuaAgeS4umZhbHNl77yM5bm25riF6Zmk5qGG6YCJ55qEbGFzc29cbiAgICAgIHRoaXMubGFzc28ucmVtb3ZlKHRydWUpO1xuICAgICAgdGhpcy5sYXNzbyA9IG51bGw7XG4gICAgICB0aGlzLnBvaW50cyA9IFtdO1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMua2V5ZG93biA9IGZhbHNlO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/lasso-select.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/scroll-canvas.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/scroll-canvas.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n direction: 'both',\n enableOptimize: false,\n zoomKey: 'ctrl',\n // scroll-canvas 可滚动的扩展范围,默认为 0,即最多可以滚动一屏的位置\n // 当设置的值大于 0 时,即滚动可以超过一屏\n // 当设置的值小于 0 时,相当于缩小了可滚动范围\n // 具体实例可参考:https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*IFfoS67_HssAAAAAAAAAAAAAARQnAQ\n scalableRange: 0\n };\n },\n getEvents: function getEvents() {\n if (!this.zoomKey || ALLOW_EVENTS.indexOf(this.zoomKey) === -1) this.zoomKey = 'ctrl';\n return {\n wheel: 'onWheel'\n };\n },\n onWheel: function onWheel(ev) {\n var _this = this;\n\n var graph = this.graph;\n var keyDown = ev[\"\".concat(this.zoomKey, \"Key\")];\n if (this.zoomKey === 'control') keyDown = ev.ctrlKey;\n\n if (keyDown) {\n var canvas = graph.get('canvas');\n var point = canvas.getPointByClient(ev.clientX, ev.clientY);\n var ratio = graph.getZoom();\n\n if (ev.wheelDelta > 0) {\n ratio = ratio + ratio * 0.05;\n } else {\n ratio = ratio - ratio * 0.05;\n }\n\n graph.zoomTo(ratio, {\n x: point.x,\n y: point.y\n });\n } else {\n var dx = ev.deltaX || ev.movementX;\n var dy = ev.deltaY || ev.movementY;\n if (!dy && navigator.userAgent.indexOf('Firefox') > -1) dy = -ev.wheelDelta * 125 / 3;\n var width = this.graph.get('width');\n var height = this.graph.get('height');\n var graphCanvasBBox = this.graph.get('canvas').getCanvasBBox();\n var expandWidth = this.scalableRange;\n var expandHeight = this.scalableRange; // 若 scalableRange 是 0~1 的小数,则作为比例考虑\n\n if (expandWidth < 1 && expandWidth > -1) {\n expandWidth = width * expandWidth;\n expandHeight = height * expandHeight;\n }\n\n var minX = graphCanvasBBox.minX,\n maxX = graphCanvasBBox.maxX,\n minY = graphCanvasBBox.minY,\n maxY = graphCanvasBBox.maxY;\n\n if (dx > 0) {\n if (maxX < -expandWidth) {\n dx = 0;\n } else if (maxX - dx < -expandWidth) {\n dx = maxX + expandWidth;\n }\n } else if (dx < 0) {\n if (minX > width + expandWidth) {\n dx = 0;\n } else if (minX - dx > width + expandWidth) {\n dx = minX - (width + expandWidth);\n }\n }\n\n if (dy > 0) {\n if (maxY < -expandHeight) {\n dy = 0;\n } else if (maxY - dy < -expandHeight) {\n dy = maxY + expandHeight;\n }\n } else if (dy < 0) {\n if (minY > height + expandHeight) {\n dy = 0;\n } else if (minY - dy > height + expandHeight) {\n dy = minY - (height + expandHeight);\n }\n }\n\n if (this.get('direction') === 'x') {\n dy = 0;\n } else if (this.get('direction') === 'y') {\n dx = 0;\n }\n\n graph.translate(-dx, -dy);\n }\n\n ev.preventDefault(); // hide the shapes when the zoom ratio is smaller than optimizeZoom\n // hide the shapes when zoomming\n\n var enableOptimize = this.get('enableOptimize');\n\n if (enableOptimize) {\n var optimizeZoom_1 = this.get('optimizeZoom');\n var optimized = this.get('optimized');\n var nodes_1 = graph.getNodes();\n var edges_1 = graph.getEdges();\n var nodesLength_1 = nodes_1.length;\n var edgesLength_1 = edges_1.length; // hiding\n\n if (!optimized) {\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n\n if (!node.destroyed) {\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.destoryed && !shape.get('isKeyShape')) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n\n this.set('optimized', true);\n } // showing after 100ms\n\n\n clearTimeout(this.get('timeout'));\n var timeout = setTimeout(function () {\n var currentZoom = graph.getZoom();\n\n var curOptimized = _this.get('optimized');\n\n if (curOptimized) {\n _this.set('optimized', false);\n\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = node.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var oriVis = shape.get('ori-visibility');\n\n if (!shape.get('visible') && oriVis) {\n if (oriVis) shape.show();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = edge.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.get('visible')) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n }\n }\n }\n }\n }\n }, 100);\n this.set('timeout', timeout);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3Ivc2Nyb2xsLWNhbnZhcy5qcz8wZDQwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsd0JBQXdCO0FBQ3hCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQSx1QkFBdUIsbUJBQW1CO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsb0JBQW9CO0FBQy9DOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQiwyQkFBMkI7QUFDMUQ7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixvQkFBb0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLHlCQUF5QixtQkFBbUI7QUFDNUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLDZCQUE2QixvQkFBb0I7QUFDakQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUNBQWlDLDJCQUEyQjtBQUM1RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsNkJBQTZCLG9CQUFvQjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3Ivc2Nyb2xsLWNhbnZhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBBTExPV19FVkVOVFMgPSBbJ3NoaWZ0JywgJ2N0cmwnLCAnYWx0JywgJ2NvbnRyb2wnXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlyZWN0aW9uOiAnYm90aCcsXG4gICAgICBlbmFibGVPcHRpbWl6ZTogZmFsc2UsXG4gICAgICB6b29tS2V5OiAnY3RybCcsXG4gICAgICAvLyBzY3JvbGwtY2FudmFzIOWPr+a7muWKqOeahOaJqeWxleiMg+WbtO+8jOm7mOiupOS4uiAw77yM5Y2z5pyA5aSa5Y+v5Lul5rua5Yqo5LiA5bGP55qE5L2N572uXG4gICAgICAvLyDlvZPorr7nva7nmoTlgLzlpKfkuo4gMCDml7bvvIzljbPmu5rliqjlj6/ku6XotoXov4fkuIDlsY9cbiAgICAgIC8vIOW9k+iuvue9rueahOWAvOWwj+S6jiAwIOaXtu+8jOebuOW9k+S6jue8qeWwj+S6huWPr+a7muWKqOiMg+WbtFxuICAgICAgLy8g5YW35L2T5a6e5L6L5Y+v5Y+C6ICD77yaaHR0cHM6Ly9ndy5hbGlwYXlvYmplY3RzLmNvbS9tZG4vcm1zX2Y4YzZhMC9hZnRzL2ltZy9BKklGZm9TNjdfSHNzQUFBQUFBQUFBQUFBQUFSUW5BUVxuICAgICAgc2NhbGFibGVSYW5nZTogMFxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIGlmICghdGhpcy56b29tS2V5IHx8IEFMTE9XX0VWRU5UUy5pbmRleE9mKHRoaXMuem9vbUtleSkgPT09IC0xKSB0aGlzLnpvb21LZXkgPSAnY3RybCc7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdoZWVsOiAnb25XaGVlbCdcbiAgICB9O1xuICB9LFxuICBvbldoZWVsOiBmdW5jdGlvbiBvbldoZWVsKGV2KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIGtleURvd24gPSBldltcIlwiLmNvbmNhdCh0aGlzLnpvb21LZXksIFwiS2V5XCIpXTtcbiAgICBpZiAodGhpcy56b29tS2V5ID09PSAnY29udHJvbCcpIGtleURvd24gPSBldi5jdHJsS2V5O1xuXG4gICAgaWYgKGtleURvd24pIHtcbiAgICAgIHZhciBjYW52YXMgPSBncmFwaC5nZXQoJ2NhbnZhcycpO1xuICAgICAgdmFyIHBvaW50ID0gY2FudmFzLmdldFBvaW50QnlDbGllbnQoZXYuY2xpZW50WCwgZXYuY2xpZW50WSk7XG4gICAgICB2YXIgcmF0aW8gPSBncmFwaC5nZXRab29tKCk7XG5cbiAgICAgIGlmIChldi53aGVlbERlbHRhID4gMCkge1xuICAgICAgICByYXRpbyA9IHJhdGlvICsgcmF0aW8gKiAwLjA1O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmF0aW8gPSByYXRpbyAtIHJhdGlvICogMC4wNTtcbiAgICAgIH1cblxuICAgICAgZ3JhcGguem9vbVRvKHJhdGlvLCB7XG4gICAgICAgIHg6IHBvaW50LngsXG4gICAgICAgIHk6IHBvaW50LnlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZHggPSBldi5kZWx0YVggfHwgZXYubW92ZW1lbnRYO1xuICAgICAgdmFyIGR5ID0gZXYuZGVsdGFZIHx8IGV2Lm1vdmVtZW50WTtcbiAgICAgIGlmICghZHkgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgPiAtMSkgZHkgPSAtZXYud2hlZWxEZWx0YSAqIDEyNSAvIDM7XG4gICAgICB2YXIgd2lkdGggPSB0aGlzLmdyYXBoLmdldCgnd2lkdGgnKTtcbiAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgICB2YXIgZ3JhcGhDYW52YXNCQm94ID0gdGhpcy5ncmFwaC5nZXQoJ2NhbnZhcycpLmdldENhbnZhc0JCb3goKTtcbiAgICAgIHZhciBleHBhbmRXaWR0aCA9IHRoaXMuc2NhbGFibGVSYW5nZTtcbiAgICAgIHZhciBleHBhbmRIZWlnaHQgPSB0aGlzLnNjYWxhYmxlUmFuZ2U7IC8vIOiLpSBzY2FsYWJsZVJhbmdlIOaYryAwfjEg55qE5bCP5pWw77yM5YiZ5L2c5Li65q+U5L6L6ICD6JmRXG5cbiAgICAgIGlmIChleHBhbmRXaWR0aCA8IDEgJiYgZXhwYW5kV2lkdGggPiAtMSkge1xuICAgICAgICBleHBhbmRXaWR0aCA9IHdpZHRoICogZXhwYW5kV2lkdGg7XG4gICAgICAgIGV4cGFuZEhlaWdodCA9IGhlaWdodCAqIGV4cGFuZEhlaWdodDtcbiAgICAgIH1cblxuICAgICAgdmFyIG1pblggPSBncmFwaENhbnZhc0JCb3gubWluWCxcbiAgICAgICAgICBtYXhYID0gZ3JhcGhDYW52YXNCQm94Lm1heFgsXG4gICAgICAgICAgbWluWSA9IGdyYXBoQ2FudmFzQkJveC5taW5ZLFxuICAgICAgICAgIG1heFkgPSBncmFwaENhbnZhc0JCb3gubWF4WTtcblxuICAgICAgaWYgKGR4ID4gMCkge1xuICAgICAgICBpZiAobWF4WCA8IC1leHBhbmRXaWR0aCkge1xuICAgICAgICAgIGR4ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChtYXhYIC0gZHggPCAtZXhwYW5kV2lkdGgpIHtcbiAgICAgICAgICBkeCA9IG1heFggKyBleHBhbmRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkeCA8IDApIHtcbiAgICAgICAgaWYgKG1pblggPiB3aWR0aCArIGV4cGFuZFdpZHRoKSB7XG4gICAgICAgICAgZHggPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1pblggLSBkeCA+IHdpZHRoICsgZXhwYW5kV2lkdGgpIHtcbiAgICAgICAgICBkeCA9IG1pblggLSAod2lkdGggKyBleHBhbmRXaWR0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGR5ID4gMCkge1xuICAgICAgICBpZiAobWF4WSA8IC1leHBhbmRIZWlnaHQpIHtcbiAgICAgICAgICBkeSA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAobWF4WSAtIGR5IDwgLWV4cGFuZEhlaWdodCkge1xuICAgICAgICAgIGR5ID0gbWF4WSArIGV4cGFuZEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkeSA8IDApIHtcbiAgICAgICAgaWYgKG1pblkgPiBoZWlnaHQgKyBleHBhbmRIZWlnaHQpIHtcbiAgICAgICAgICBkeSA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAobWluWSAtIGR5ID4gaGVpZ2h0ICsgZXhwYW5kSGVpZ2h0KSB7XG4gICAgICAgICAgZHkgPSBtaW5ZIC0gKGhlaWdodCArIGV4cGFuZEhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ3gnKSB7XG4gICAgICAgIGR5ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXQoJ2RpcmVjdGlvbicpID09PSAneScpIHtcbiAgICAgICAgZHggPSAwO1xuICAgICAgfVxuXG4gICAgICBncmFwaC50cmFuc2xhdGUoLWR4LCAtZHkpO1xuICAgIH1cblxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7IC8vIGhpZGUgdGhlIHNoYXBlcyB3aGVuIHRoZSB6b29tIHJhdGlvIGlzIHNtYWxsZXIgdGhhbiBvcHRpbWl6ZVpvb21cbiAgICAvLyBoaWRlIHRoZSBzaGFwZXMgd2hlbiB6b29tbWluZ1xuXG4gICAgdmFyIGVuYWJsZU9wdGltaXplID0gdGhpcy5nZXQoJ2VuYWJsZU9wdGltaXplJyk7XG5cbiAgICBpZiAoZW5hYmxlT3B0aW1pemUpIHtcbiAgICAgIHZhciBvcHRpbWl6ZVpvb21fMSA9IHRoaXMuZ2V0KCdvcHRpbWl6ZVpvb20nKTtcbiAgICAgIHZhciBvcHRpbWl6ZWQgPSB0aGlzLmdldCgnb3B0aW1pemVkJyk7XG4gICAgICB2YXIgbm9kZXNfMSA9IGdyYXBoLmdldE5vZGVzKCk7XG4gICAgICB2YXIgZWRnZXNfMSA9IGdyYXBoLmdldEVkZ2VzKCk7XG4gICAgICB2YXIgbm9kZXNMZW5ndGhfMSA9IG5vZGVzXzEubGVuZ3RoO1xuICAgICAgdmFyIGVkZ2VzTGVuZ3RoXzEgPSBlZGdlc18xLmxlbmd0aDsgLy8gaGlkaW5nXG5cbiAgICAgIGlmICghb3B0aW1pemVkKSB7XG4gICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXNMZW5ndGhfMTsgbisrKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc18xW25dO1xuXG4gICAgICAgICAgaWYgKCFub2RlLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG5cbiAgICAgICAgICAgICAgaWYgKCFzaGFwZS5kZXN0b3J5ZWQgJiYgIXNoYXBlLmdldCgnaXNLZXlTaGFwZScpKSB7XG4gICAgICAgICAgICAgICAgc2hhcGUuc2V0KCdvcmktdmlzaWJpbGl0eScsIHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKSB8fCBzaGFwZS5nZXQoJ3Zpc2libGUnKSk7XG4gICAgICAgICAgICAgICAgc2hhcGUuaGlkZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gMDsgZWRnZUluZGV4IDwgZWRnZXNMZW5ndGhfMTsgZWRnZUluZGV4KyspIHtcbiAgICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzXzFbZWRnZUluZGV4XTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBlZGdlLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcbiAgICAgICAgICAgIHNoYXBlLnNldCgnb3JpLXZpc2liaWxpdHknLCBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5JykgfHwgc2hhcGUuZ2V0KCd2aXNpYmxlJykpO1xuICAgICAgICAgICAgc2hhcGUuaGlkZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0KCdvcHRpbWl6ZWQnLCB0cnVlKTtcbiAgICAgIH0gLy8gc2hvd2luZyBhZnRlciAxMDBtc1xuXG5cbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmdldCgndGltZW91dCcpKTtcbiAgICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjdXJyZW50Wm9vbSA9IGdyYXBoLmdldFpvb20oKTtcblxuICAgICAgICB2YXIgY3VyT3B0aW1pemVkID0gX3RoaXMuZ2V0KCdvcHRpbWl6ZWQnKTtcblxuICAgICAgICBpZiAoY3VyT3B0aW1pemVkKSB7XG4gICAgICAgICAgX3RoaXMuc2V0KCdvcHRpbWl6ZWQnLCBmYWxzZSk7XG5cbiAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzTGVuZ3RoXzE7IG4rKykge1xuICAgICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc18xW25dO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFpvb20gPCBvcHRpbWl6ZVpvb21fMSkge1xuICAgICAgICAgICAgICB2YXIga2V5U2hhcGUgPSBub2RlLmdldEtleVNoYXBlKCk7XG4gICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBrZXlTaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgIGlmIChvcmlWaXMpIGtleVNoYXBlLnNob3coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuICAgICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNoYXBlLmdldCgndmlzaWJsZScpICYmIG9yaVZpcykge1xuICAgICAgICAgICAgICAgICAgaWYgKG9yaVZpcykgc2hhcGUuc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IDA7IGVkZ2VJbmRleCA8IGVkZ2VzTGVuZ3RoXzE7IGVkZ2VJbmRleCsrKSB7XG4gICAgICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzXzFbZWRnZUluZGV4XTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGVkZ2UuZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRab29tIDwgb3B0aW1pemVab29tXzEpIHtcbiAgICAgICAgICAgICAgdmFyIGtleVNoYXBlID0gZWRnZS5nZXRLZXlTaGFwZSgpO1xuICAgICAgICAgICAgICB2YXIgb3JpVmlzID0ga2V5U2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuICAgICAgICAgICAgICBpZiAob3JpVmlzKSBrZXlTaGFwZS5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcblxuICAgICAgICAgICAgICAgIGlmICghc2hhcGUuZ2V0KCd2aXNpYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgICAgICBpZiAob3JpVmlzKSBzaGFwZS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgICAgdGhpcy5zZXQoJ3RpbWVvdXQnLCB0aW1lb3V0KTtcbiAgICB9XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/scroll-canvas.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/shortcuts-call.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/shortcuts-call.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar DEFAULT_TRIGGER = 'ctrl';\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\nvar DEFAULT_COMBINED_KEY = '1';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n combinedKey: DEFAULT_COMBINED_KEY,\n functionName: 'fitView',\n functionParams: []\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior shortcuts-fit-view \\u7684 trigger \\u53C2\\u6570 '\".concat(this.trigger, \"' \\u4E0D\\u5408\\u6CD5\\uFF0C\\u8BF7\\u8F93\\u5165 'drag'\\u3001'shift'\\u3001'ctrl' \\u6216 'alt'\"));\n }\n\n if (this.combinedKey === this.trigger) {\n this.combinedKey = undefined;\n }\n\n return {\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n var triggerLowerCase = this.trigger.toLowerCase();\n var codeLowerCase = code.toLowerCase(); // 按住 control 键时,允许用户设置 trigger 为 ctrl\n\n if (!this.triggerKeydown) {\n if (codeLowerCase === triggerLowerCase || codeLowerCase === 'control' && triggerLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && triggerLowerCase === 'control') {\n this.triggerKeydown = true;\n } else {\n this.triggerKeydown = false;\n }\n }\n\n var graph = this.graph;\n\n if (!graph[this.functionName]) {\n console.warn(\"Behavior shortcuts-fit-view \\u7684 functionName \\u53C2\\u6570 '\".concat(this.functionName, \"' \\u4E0D\\u5408\\u6CD5\\uFF0C\\u5B83\\u4E0D\\u662F Graph \\u7684\\u4E00\\u4E2A\\u51FD\\u6570\\u540D\"));\n return {};\n } // 未配置 combinedKey,直接 fitView\n\n\n if (this.triggerKeydown && !this.combinedKey) {\n if (this.functionParams && this.functionParams.length) graph[this.functionName].apply(graph, this.functionParams);else graph[this.functionName]();\n return;\n }\n\n var combinedKeyLowerCase = this.combinedKey.toLowerCase();\n\n if (this.triggerKeydown) {\n if (codeLowerCase === combinedKeyLowerCase || codeLowerCase === 'control' && combinedKeyLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && combinedKeyLowerCase === 'control') {\n if (this.functionParams && this.functionParams.length) graph[this.functionName].apply(graph, this.functionParams);else graph[this.functionName]();\n }\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.brush) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的brush\n this.brush.remove(true);\n this.brush = null;\n this.dragging = false;\n }\n\n this.triggerKeydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3Ivc2hvcnRjdXRzLWNhbGwuanM/Mzc5ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBLHdIQUF3SDtBQUN4SDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSwwSEFBMEg7QUFDMUg7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci9zaG9ydGN1dHMtY2FsbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBERUZBVUxUX1RSSUdHRVIgPSAnY3RybCc7XG52YXIgQUxMT1dfRVZFTlRTID0gWydzaGlmdCcsICdjdHJsJywgJ2FsdCcsICdjb250cm9sJ107XG52YXIgREVGQVVMVF9DT01CSU5FRF9LRVkgPSAnMSc7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyaWdnZXI6IERFRkFVTFRfVFJJR0dFUixcbiAgICAgIGNvbWJpbmVkS2V5OiBERUZBVUxUX0NPTUJJTkVEX0tFWSxcbiAgICAgIGZ1bmN0aW9uTmFtZTogJ2ZpdFZpZXcnLFxuICAgICAgZnVuY3Rpb25QYXJhbXM6IFtdXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgLy8g5qOA5rWL6L6T5YWl5piv5ZCm5ZCI5rOVXG4gICAgaWYgKCEoQUxMT1dfRVZFTlRTLmluZGV4T2YodGhpcy50cmlnZ2VyLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB7XG4gICAgICB0aGlzLnRyaWdnZXIgPSBERUZBVUxUX1RSSUdHRVI7XG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBzaG9ydGN1dHMtZml0LXZpZXcgXFx1NzY4NCB0cmlnZ2VyIFxcdTUzQzJcXHU2NTcwICdcIi5jb25jYXQodGhpcy50cmlnZ2VyLCBcIicgXFx1NEUwRFxcdTU0MDhcXHU2Q0Q1XFx1RkYwQ1xcdThCRjdcXHU4RjkzXFx1NTE2NSAnZHJhZydcXHUzMDAxJ3NoaWZ0J1xcdTMwMDEnY3RybCcgXFx1NjIxNiAnYWx0J1wiKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29tYmluZWRLZXkgPT09IHRoaXMudHJpZ2dlcikge1xuICAgICAgdGhpcy5jb21iaW5lZEtleSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGtleWRvd246ICdvbktleURvd24nXG4gICAgfTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBjb2RlID0gZS5rZXk7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdHJpZ2dlckxvd2VyQ2FzZSA9IHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBjb2RlTG93ZXJDYXNlID0gY29kZS50b0xvd2VyQ2FzZSgpOyAvLyDmjInkvY8gY29udHJvbCDplK7ml7bvvIzlhYHorrjnlKjmiLforr7nva4gdHJpZ2dlciDkuLogY3RybFxuXG4gICAgaWYgKCF0aGlzLnRyaWdnZXJLZXlkb3duKSB7XG4gICAgICBpZiAoY29kZUxvd2VyQ2FzZSA9PT0gdHJpZ2dlckxvd2VyQ2FzZSB8fCBjb2RlTG93ZXJDYXNlID09PSAnY29udHJvbCcgJiYgdHJpZ2dlckxvd2VyQ2FzZSA9PT0gJ2N0cmwnIHx8IGNvZGVMb3dlckNhc2UgPT09ICdjdHJsJyAmJiB0cmlnZ2VyTG93ZXJDYXNlID09PSAnY29udHJvbCcpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyS2V5ZG93biA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRyaWdnZXJLZXlkb3duID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICghZ3JhcGhbdGhpcy5mdW5jdGlvbk5hbWVdKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBzaG9ydGN1dHMtZml0LXZpZXcgXFx1NzY4NCBmdW5jdGlvbk5hbWUgXFx1NTNDMlxcdTY1NzAgJ1wiLmNvbmNhdCh0aGlzLmZ1bmN0aW9uTmFtZSwgXCInIFxcdTRFMERcXHU1NDA4XFx1NkNENVxcdUZGMENcXHU1QjgzXFx1NEUwRFxcdTY2MkYgR3JhcGggXFx1NzY4NFxcdTRFMDBcXHU0RTJBXFx1NTFGRFxcdTY1NzBcXHU1NDBEXCIpKTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9IC8vIOacqumFjee9riBjb21iaW5lZEtlee+8jOebtOaOpSBmaXRWaWV3XG5cblxuICAgIGlmICh0aGlzLnRyaWdnZXJLZXlkb3duICYmICF0aGlzLmNvbWJpbmVkS2V5KSB7XG4gICAgICBpZiAodGhpcy5mdW5jdGlvblBhcmFtcyAmJiB0aGlzLmZ1bmN0aW9uUGFyYW1zLmxlbmd0aCkgZ3JhcGhbdGhpcy5mdW5jdGlvbk5hbWVdLmFwcGx5KGdyYXBoLCB0aGlzLmZ1bmN0aW9uUGFyYW1zKTtlbHNlIGdyYXBoW3RoaXMuZnVuY3Rpb25OYW1lXSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjb21iaW5lZEtleUxvd2VyQ2FzZSA9IHRoaXMuY29tYmluZWRLZXkudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICh0aGlzLnRyaWdnZXJLZXlkb3duKSB7XG4gICAgICBpZiAoY29kZUxvd2VyQ2FzZSA9PT0gY29tYmluZWRLZXlMb3dlckNhc2UgfHwgY29kZUxvd2VyQ2FzZSA9PT0gJ2NvbnRyb2wnICYmIGNvbWJpbmVkS2V5TG93ZXJDYXNlID09PSAnY3RybCcgfHwgY29kZUxvd2VyQ2FzZSA9PT0gJ2N0cmwnICYmIGNvbWJpbmVkS2V5TG93ZXJDYXNlID09PSAnY29udHJvbCcpIHtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25QYXJhbXMgJiYgdGhpcy5mdW5jdGlvblBhcmFtcy5sZW5ndGgpIGdyYXBoW3RoaXMuZnVuY3Rpb25OYW1lXS5hcHBseShncmFwaCwgdGhpcy5mdW5jdGlvblBhcmFtcyk7ZWxzZSBncmFwaFt0aGlzLmZ1bmN0aW9uTmFtZV0oKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG9uS2V5VXA6IGZ1bmN0aW9uIG9uS2V5VXAoKSB7XG4gICAgaWYgKHRoaXMuYnJ1c2gpIHtcbiAgICAgIC8vIOa4hemZpOaJgOaciemAieS4reeKtuaAgeWQju+8jOiuvue9ruaLluW+l+WKqOeKtuaAgeS4umZhbHNl77yM5bm25riF6Zmk5qGG6YCJ55qEYnJ1c2hcbiAgICAgIHRoaXMuYnJ1c2gucmVtb3ZlKHRydWUpO1xuICAgICAgdGhpcy5icnVzaCA9IG51bGw7XG4gICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyS2V5ZG93biA9IGZhbHNlO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/shortcuts-call.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/tooltip-base.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/tooltip-base.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onMouseEnter: function onMouseEnter(e) {\n var item = e.item;\n this.currentTarget = item;\n this.showTooltip(e);\n this.graph.emit('tooltipchange', {\n item: e.item,\n action: 'show'\n });\n },\n onMouseMove: function onMouseMove(e) {\n if (!this.shouldUpdate(e)) {\n this.hideTooltip();\n return;\n }\n\n if (!this.currentTarget || e.item !== this.currentTarget) {\n return;\n }\n\n this.updatePosition(e);\n },\n onMouseLeave: function onMouseLeave(e) {\n if (!this.shouldEnd(e)) {\n return;\n }\n\n this.hideTooltip();\n this.graph.emit('tooltipchange', {\n item: this.currentTarget,\n action: 'hide'\n });\n this.currentTarget = null;\n },\n showTooltip: function showTooltip(e) {\n var container = this.container;\n\n if (!e.item || e.item.destroyed) {\n return;\n }\n\n if (!container) {\n container = this.createTooltip(this.graph.get('canvas'));\n this.container = container;\n }\n\n var text = this.formatText(e.item.get('model'), e);\n container.innerHTML = text;\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n visibility: 'visible'\n });\n this.updatePosition(e);\n },\n hideTooltip: function hideTooltip() {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n visibility: 'hidden'\n });\n },\n updatePosition: function updatePosition(e) {\n var shouldBegin = this.get('shouldBegin');\n\n var _a = this,\n width = _a.width,\n height = _a.height,\n container = _a.container,\n graph = _a.graph;\n\n if (!shouldBegin(e)) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(container, {\n visibility: 'hidden'\n });\n return;\n }\n\n var point = graph.getPointByClient(e.clientX, e.clientY);\n\n var _b = graph.getCanvasByPoint(point.x, point.y),\n x = _b.x,\n y = _b.y;\n\n var bbox = container.getBoundingClientRect();\n\n if (x > width / 2) {\n x -= bbox.width;\n } else {\n x += this.offset;\n }\n\n if (y > height / 2) {\n y -= bbox.height;\n } else {\n y += this.offset;\n }\n\n var left = \"\".concat(x, \"px\");\n var top = \"\".concat(y, \"px\");\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n left: left,\n top: top,\n visibility: 'visible'\n });\n },\n createTooltip: function createTooltip(canvas) {\n var el = canvas.get('el');\n el.style.position = 'relative';\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"
\"));\n el.parentNode.appendChild(container);\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(container, {\n position: 'absolute',\n visibility: 'visible'\n });\n this.width = canvas.get('width');\n this.height = canvas.get('height');\n this.container = container;\n this.graph.get('tooltips').push(container);\n return container;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvdG9vbHRpcC1iYXNlLmpzPzA0OWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFzRDtBQUN2QztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLGdFQUFTO0FBQ2Y7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGdFQUFTO0FBQzdCO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci90b29sdGlwLWJhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb2RpZnlDU1MsIGNyZWF0ZURvbSB9IGZyb20gJ0BhbnR2L2RvbS11dGlsJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgb25Nb3VzZUVudGVyOiBmdW5jdGlvbiBvbk1vdXNlRW50ZXIoZSkge1xuICAgIHZhciBpdGVtID0gZS5pdGVtO1xuICAgIHRoaXMuY3VycmVudFRhcmdldCA9IGl0ZW07XG4gICAgdGhpcy5zaG93VG9vbHRpcChlKTtcbiAgICB0aGlzLmdyYXBoLmVtaXQoJ3Rvb2x0aXBjaGFuZ2UnLCB7XG4gICAgICBpdGVtOiBlLml0ZW0sXG4gICAgICBhY3Rpb246ICdzaG93J1xuICAgIH0pO1xuICB9LFxuICBvbk1vdXNlTW92ZTogZnVuY3Rpb24gb25Nb3VzZU1vdmUoZSkge1xuICAgIGlmICghdGhpcy5zaG91bGRVcGRhdGUoZSkpIHtcbiAgICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVudFRhcmdldCB8fCBlLml0ZW0gIT09IHRoaXMuY3VycmVudFRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlUG9zaXRpb24oZSk7XG4gIH0sXG4gIG9uTW91c2VMZWF2ZTogZnVuY3Rpb24gb25Nb3VzZUxlYXZlKGUpIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkRW5kKGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgIHRoaXMuZ3JhcGguZW1pdCgndG9vbHRpcGNoYW5nZScsIHtcbiAgICAgIGl0ZW06IHRoaXMuY3VycmVudFRhcmdldCxcbiAgICAgIGFjdGlvbjogJ2hpZGUnXG4gICAgfSk7XG4gICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcbiAgfSxcbiAgc2hvd1Rvb2x0aXA6IGZ1bmN0aW9uIHNob3dUb29sdGlwKGUpIHtcbiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5jb250YWluZXI7XG5cbiAgICBpZiAoIWUuaXRlbSB8fCBlLml0ZW0uZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lciA9IHRoaXMuY3JlYXRlVG9vbHRpcCh0aGlzLmdyYXBoLmdldCgnY2FudmFzJykpO1xuICAgICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgfVxuXG4gICAgdmFyIHRleHQgPSB0aGlzLmZvcm1hdFRleHQoZS5pdGVtLmdldCgnbW9kZWwnKSwgZSk7XG4gICAgY29udGFpbmVyLmlubmVySFRNTCA9IHRleHQ7XG4gICAgbW9kaWZ5Q1NTKHRoaXMuY29udGFpbmVyLCB7XG4gICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKGUpO1xuICB9LFxuICBoaWRlVG9vbHRpcDogZnVuY3Rpb24gaGlkZVRvb2x0aXAoKSB7XG4gICAgbW9kaWZ5Q1NTKHRoaXMuY29udGFpbmVyLCB7XG4gICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJ1xuICAgIH0pO1xuICB9LFxuICB1cGRhdGVQb3NpdGlvbjogZnVuY3Rpb24gdXBkYXRlUG9zaXRpb24oZSkge1xuICAgIHZhciBzaG91bGRCZWdpbiA9IHRoaXMuZ2V0KCdzaG91bGRCZWdpbicpO1xuXG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgd2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX2EuaGVpZ2h0LFxuICAgICAgICBjb250YWluZXIgPSBfYS5jb250YWluZXIsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGg7XG5cbiAgICBpZiAoIXNob3VsZEJlZ2luKGUpKSB7XG4gICAgICBtb2RpZnlDU1MoY29udGFpbmVyLCB7XG4gICAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcG9pbnQgPSBncmFwaC5nZXRQb2ludEJ5Q2xpZW50KGUuY2xpZW50WCwgZS5jbGllbnRZKTtcblxuICAgIHZhciBfYiA9IGdyYXBoLmdldENhbnZhc0J5UG9pbnQocG9pbnQueCwgcG9pbnQueSksXG4gICAgICAgIHggPSBfYi54LFxuICAgICAgICB5ID0gX2IueTtcblxuICAgIHZhciBiYm94ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKHggPiB3aWR0aCAvIDIpIHtcbiAgICAgIHggLT0gYmJveC53aWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgeCArPSB0aGlzLm9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAoeSA+IGhlaWdodCAvIDIpIHtcbiAgICAgIHkgLT0gYmJveC5oZWlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHkgKz0gdGhpcy5vZmZzZXQ7XG4gICAgfVxuXG4gICAgdmFyIGxlZnQgPSBcIlwiLmNvbmNhdCh4LCBcInB4XCIpO1xuICAgIHZhciB0b3AgPSBcIlwiLmNvbmNhdCh5LCBcInB4XCIpO1xuICAgIG1vZGlmeUNTUyh0aGlzLmNvbnRhaW5lciwge1xuICAgICAgbGVmdDogbGVmdCxcbiAgICAgIHRvcDogdG9wLFxuICAgICAgdmlzaWJpbGl0eTogJ3Zpc2libGUnXG4gICAgfSk7XG4gIH0sXG4gIGNyZWF0ZVRvb2x0aXA6IGZ1bmN0aW9uIGNyZWF0ZVRvb2x0aXAoY2FudmFzKSB7XG4gICAgdmFyIGVsID0gY2FudmFzLmdldCgnZWwnKTtcbiAgICBlbC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgdmFyIGNvbnRhaW5lciA9IGNyZWF0ZURvbShcIjxkaXYgY2xhc3M9XFxcImc2LXRvb2x0aXAgZzYtXCIuY29uY2F0KHRoaXMuaXRlbSwgXCItdG9vbHRpcFxcXCI+PC9kaXY+XCIpKTtcbiAgICBlbC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgbW9kaWZ5Q1NTKGNvbnRhaW5lciwge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICB9KTtcbiAgICB0aGlzLndpZHRoID0gY2FudmFzLmdldCgnd2lkdGgnKTtcbiAgICB0aGlzLmhlaWdodCA9IGNhbnZhcy5nZXQoJ2hlaWdodCcpO1xuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRoaXMuZ3JhcGguZ2V0KCd0b29sdGlwcycpLnB1c2goY29udGFpbmVyKTtcbiAgICByZXR1cm4gY29udGFpbmVyO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/tooltip-base.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/tooltip.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/tooltip.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _tooltip_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip-base */ \"./node_modules/@antv/g6-pc/es/behavior/tooltip-base.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n getDefaultCfg: function getDefaultCfg() {\n return {\n item: 'node',\n offset: 12,\n formatText: function formatText(model) {\n return model.label;\n }\n };\n },\n getEvents: function getEvents() {\n return {\n 'node:mouseenter': 'onMouseEnter',\n 'node:mouseleave': 'onMouseLeave',\n 'node:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave'\n };\n }\n}, _tooltip_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvdG9vbHRpcC5qcz84ZjMzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNDO0FBQ25CLHFIQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRSxxREFBSSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Rvb2x0aXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IGJhc2UgZnJvbSAnLi90b29sdGlwLWJhc2UnO1xuZXhwb3J0IGRlZmF1bHQgX19hc3NpZ24oe1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpdGVtOiAnbm9kZScsXG4gICAgICBvZmZzZXQ6IDEyLFxuICAgICAgZm9ybWF0VGV4dDogZnVuY3Rpb24gZm9ybWF0VGV4dChtb2RlbCkge1xuICAgICAgICByZXR1cm4gbW9kZWwubGFiZWw7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdub2RlOm1vdXNlZW50ZXInOiAnb25Nb3VzZUVudGVyJyxcbiAgICAgICdub2RlOm1vdXNlbGVhdmUnOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICdub2RlOm1vdXNlbW92ZSc6ICdvbk1vdXNlTW92ZScsXG4gICAgICBhZnRlcnJlbW92ZWl0ZW06ICdvbk1vdXNlTGVhdmUnXG4gICAgfTtcbiAgfVxufSwgYmFzZSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/tooltip.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/behavior/zoom-canvas.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/behavior/zoom-canvas.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"ext\"].transform;\nvar DELTA = 0.05;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n sensitivity: 2,\n minZoom: undefined,\n maxZoom: undefined,\n enableOptimize: false,\n optimizeZoom: 0.1,\n fixSelectedItems: {\n fixAll: false,\n fixLineWidth: false,\n fixLabel: false,\n fixState: 'selected'\n },\n animate: false,\n animateCfg: {\n duration: 500\n }\n };\n },\n getEvents: function getEvents() {\n var fixSelectedItems = this.fixSelectedItems;\n if (!fixSelectedItems.fixState) fixSelectedItems.fixState = 'selected';\n\n if (fixSelectedItems.fixAll) {\n fixSelectedItems.fixLineWidth = true;\n fixSelectedItems.fixLabel = true;\n }\n\n return {\n wheel: 'onWheel',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onTouchEnd'\n };\n },\n onTouchStart: function onTouchStart(evt) {\n var touches = evt.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n evt.preventDefault(); // 如果不是缩放事件则禁止继续执行\n\n if (!event2) {\n return;\n }\n\n if (this.shouldBegin && !this.shouldBegin.call(this, evt)) {\n return;\n } // 第一个触摸点位置\n\n\n this.startPoint = {\n pageX: event1.pageX,\n pageY: event1.pageY\n };\n this.moveable = true;\n\n if (event2) {\n this.endPoint = {\n pageX: event2.pageX,\n pageY: event2.pageY\n };\n }\n\n this.originScale = this.graph.getZoom() || this.currentScale || 1;\n },\n onTouchMove: function onTouchMove(evt) {\n if (!this.moveable) {\n return;\n }\n\n evt.preventDefault();\n var touches = evt.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (!event2) {\n return;\n }\n\n if (!this.endPoint) {\n this.endPoint = {\n pageX: event2.pageX,\n pageY: event2.pageY\n };\n } // 获取坐标之间的距离\n\n\n var getDistance = function getDistance(start, end) {\n return Math.hypot(end.x - start.x, end.y - start.y);\n }; // 双指缩放比例\n\n\n var scale = getDistance({\n x: event1.pageX,\n y: event1.pageY\n }, {\n x: event2.pageX,\n y: event2.pageY\n }) / getDistance({\n x: this.startPoint.pageX,\n y: this.startPoint.pageY\n }, {\n x: this.endPoint.pageX,\n y: this.endPoint.pageY\n }); // 应用到画布上的缩放比例\n\n var zoom = this.originScale * scale; // 缓存当前的缩放比例\n\n this.currentScale = zoom;\n var minZoom = this.get('minZoom') || this.graph.get('minZoom');\n var maxZoom = this.get('maxZoom') || this.graph.get('maxZoom');\n\n if (zoom > maxZoom || zoom < minZoom) {\n return;\n }\n\n var animate = this.get('animate');\n var animateCfg = this.get('animateCfg');\n var canvas = this.graph.get('canvas');\n var point = canvas.getPointByClient(evt.clientX, evt.clientY);\n this.graph.zoomTo(zoom, {\n x: point.x,\n y: point.y\n }, animate, animateCfg);\n this.graph.emit('wheelzoom', evt);\n },\n onTouchEnd: function onTouchEnd() {\n this.moveable = false;\n this.endPoint = null;\n },\n onWheel: function onWheel(e) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n fixSelectedItems = _a.fixSelectedItems;\n\n if (this.shouldBegin && !this.shouldBegin.call(this, e)) {\n return;\n }\n\n if (!this.shouldUpdate.call(this, e)) {\n return;\n }\n\n e.preventDefault();\n var canvas = graph.get('canvas');\n var point = canvas.getPointByClient(e.clientX, e.clientY);\n var sensitivity = this.get('sensitivity');\n var graphZoom = graph.getZoom();\n var ratio = graphZoom;\n var zoom = graphZoom; // 兼容IE、Firefox及Chrome\n\n if (e.wheelDelta < 0) {\n ratio = 1 - DELTA * sensitivity;\n } else {\n ratio = 1 / (1 - DELTA * sensitivity);\n }\n\n zoom = graphZoom * ratio; // const zoom = ratio * graphZoom;\n\n var minZoom = this.get('minZoom') || graph.get('minZoom');\n var maxZoom = this.get('maxZoom') || graph.get('maxZoom');\n\n if (zoom > maxZoom || zoom < minZoom) {\n return;\n } // hide the shapes when the zoom ratio is smaller than optimizeZoom\n // hide the shapes when zoomming\n\n\n var enableOptimize = this.get('enableOptimize');\n\n if (enableOptimize) {\n var optimizeZoom_1 = this.get('optimizeZoom');\n var optimized = this.get('optimized');\n var nodes_1 = graph.getNodes();\n var edges_1 = graph.getEdges();\n var nodesLength_1 = nodes_1.length;\n var edgesLength_1 = edges_1.length; // hiding\n\n if (!optimized) {\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n\n if (!node.destroyed) {\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.destoryed && !shape.get('isKeyShape')) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n\n this.set('optimized', true);\n } // showing after 100ms\n\n\n clearTimeout(this.get('timeout'));\n var timeout = setTimeout(function () {\n var currentZoom = graph.getZoom();\n\n var curOptimized = _this.get('optimized');\n\n if (curOptimized) {\n _this.set('optimized', false);\n\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = node.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var oriVis = shape.get('ori-visibility');\n\n if (!shape.get('visible') && oriVis) {\n if (oriVis) shape.show();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = edge.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.get('visible')) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n }\n }\n }\n }\n }\n }, 100);\n this.set('timeout', timeout);\n } // fix the items when zooming\n\n\n if (graphZoom <= 1) {\n var fixNodes = void 0,\n fixEdges = void 0;\n\n if (fixSelectedItems.fixAll || fixSelectedItems.fixLineWidth || fixSelectedItems.fixLabel) {\n fixNodes = graph.findAllByState('node', fixSelectedItems.fixState);\n fixEdges = graph.findAllByState('edge', fixSelectedItems.fixState);\n var scale = graphZoom / zoom;\n var fixNodesLength = fixNodes.length;\n\n for (var fn = 0; fn < fixNodesLength; fn++) {\n var node = fixNodes[fn];\n var group = node.getContainer();\n var nodeModel = node.getModel();\n var originStyle = node.getOriginStyle();\n var itemStateStyle = node.getStateStyle(fixSelectedItems.fixState);\n var shapeStateStyle = node.get('shapeFactory').getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, node)[fixSelectedItems.fixState];\n\n if (fixSelectedItems.fixAll) {\n if (zoom <= 1) {\n var groupMatrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(group.getMatrix());\n if (!groupMatrix) groupMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n var _b = node.getModel(),\n x = _b.x,\n y = _b.y;\n\n groupMatrix = transform(groupMatrix, [['t', -x, -y], ['s', scale, scale], ['t', x, y]]);\n group.setMatrix(groupMatrix);\n }\n } else {\n var children = group.get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var fontSize = void 0,\n lineWidth = void 0;\n\n if (fixSelectedItems.fixLabel) {\n var shapeType = shape.get('type');\n\n if (shapeType === 'text') {\n fontSize = shape.attr('fontSize') || 12;\n var itemStyle = itemStateStyle[shape.get('name')];\n var shapeStyle = shapeStateStyle[shape.get('name')];\n var itemFontSize = itemStyle ? itemStyle.fontSize : 12;\n var shapeFontSize = shapeStyle ? shapeStyle.fontSize : 12;\n var oriFontSize = itemFontSize || shapeFontSize || 12;\n if (zoom <= 1) shape.attr('fontSize', oriFontSize / zoom); // * graphZoom / zoom\n\n if (lineWidth) break;\n }\n }\n\n if (fixSelectedItems.fixLineWidth) {\n if (shape.get('isKeyShape')) {\n lineWidth = shape.attr('lineWidth') || 0;\n var oriLineWidth = itemStateStyle.lineWidth || shapeStateStyle.lineWidth || originStyle.lineWidth || 0;\n if (zoom <= 1) shape.attr('lineWidth', oriLineWidth / zoom); // * graphZoom / zoom\n\n if (fontSize) break;\n }\n }\n }\n }\n }\n\n var fixEdgesLength = fixEdges.length;\n\n for (var fe = 0; fe < fixEdgesLength; fe++) {\n var edge = fixEdges[fe];\n var group = edge.getContainer();\n var children = group.get('children');\n var nodeModel = edge.getModel();\n var itemStateStyle = edge.getStateStyle(fixSelectedItems.fixState);\n var shapeStateStyle = edge.get('shapeFactory').getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, edge)[fixSelectedItems.fixState];\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var fontSize = void 0,\n lineWidth = void 0;\n\n if (fixSelectedItems.fixLabel || fixSelectedItems.fixAll) {\n var shapeType = shape.get('type');\n\n if (shapeType === 'text') {\n fontSize = shape.attr('fontSize') || 12;\n var itemStyle = itemStateStyle[shape.get('name')];\n var shapeStyle = shapeStateStyle[shape.get('name')];\n var itemFontSize = itemStyle ? itemStyle.fontSize : 12;\n var shapeFontSize = shapeStyle ? shapeStyle.fontSize : 12;\n var oriFontSize = itemFontSize || shapeFontSize || 12;\n if (zoom <= 1) shape.attr('fontSize', oriFontSize / zoom);\n if (lineWidth) break;\n }\n }\n\n if (fixSelectedItems.fixLineWidth || fixSelectedItems.fixAll) {\n if (shape.get('isKeyShape')) {\n lineWidth = shape.attr('lineWidth') || 0;\n var oriLineWidth = itemStateStyle.lineWidth || shapeStateStyle.lineWidth || 1;\n if (zoom <= 1) shape.attr('lineWidth', oriLineWidth / zoom);\n if (fontSize) break;\n }\n }\n }\n }\n }\n }\n\n var animate = this.get('animate');\n var animateCfg = this.get('animateCfg');\n graph.zoomTo(zoom, {\n x: point.x,\n y: point.y\n }, animate, animateCfg);\n graph.emit('wheelzoom', e);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvYmVoYXZpb3Ivem9vbS1jYW52YXMuanM/ZjE3NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBd0M7QUFDTDtBQUNuQyxnQkFBZ0IscURBQUc7QUFDbkI7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSw2QkFBNkI7O0FBRTdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBLHVCQUF1QixtQkFBbUI7QUFDMUM7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDJCQUEyQixvQkFBb0I7QUFDL0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0JBQStCLDJCQUEyQjtBQUMxRDtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLG9CQUFvQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEseUJBQXlCLG1CQUFtQjtBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsNkJBQTZCLG9CQUFvQjtBQUNqRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsMkJBQTJCO0FBQzVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYiw2QkFBNkIsb0JBQW9CO0FBQ2pEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0NBQWdDLHdEQUFLO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQSwyQkFBMkIsb0JBQW9CO0FBQy9DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFOztBQUU1RTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4RUFBOEU7O0FBRTlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixvQkFBb0I7QUFDN0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9iZWhhdmlvci96b29tLWNhbnZhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dCB9IGZyb20gJ0BhbnR2L21hdHJpeC11dGlsJztcbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbnZhciBERUxUQSA9IDAuMDU7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbnNpdGl2aXR5OiAyLFxuICAgICAgbWluWm9vbTogdW5kZWZpbmVkLFxuICAgICAgbWF4Wm9vbTogdW5kZWZpbmVkLFxuICAgICAgZW5hYmxlT3B0aW1pemU6IGZhbHNlLFxuICAgICAgb3B0aW1pemVab29tOiAwLjEsXG4gICAgICBmaXhTZWxlY3RlZEl0ZW1zOiB7XG4gICAgICAgIGZpeEFsbDogZmFsc2UsXG4gICAgICAgIGZpeExpbmVXaWR0aDogZmFsc2UsXG4gICAgICAgIGZpeExhYmVsOiBmYWxzZSxcbiAgICAgICAgZml4U3RhdGU6ICdzZWxlY3RlZCdcbiAgICAgIH0sXG4gICAgICBhbmltYXRlOiBmYWxzZSxcbiAgICAgIGFuaW1hdGVDZmc6IHtcbiAgICAgICAgZHVyYXRpb246IDUwMFxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHZhciBmaXhTZWxlY3RlZEl0ZW1zID0gdGhpcy5maXhTZWxlY3RlZEl0ZW1zO1xuICAgIGlmICghZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSkgZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSA9ICdzZWxlY3RlZCc7XG5cbiAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwpIHtcbiAgICAgIGZpeFNlbGVjdGVkSXRlbXMuZml4TGluZVdpZHRoID0gdHJ1ZTtcbiAgICAgIGZpeFNlbGVjdGVkSXRlbXMuZml4TGFiZWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB3aGVlbDogJ29uV2hlZWwnLFxuICAgICAgdG91Y2hzdGFydDogJ29uVG91Y2hTdGFydCcsXG4gICAgICB0b3VjaG1vdmU6ICdvblRvdWNoTW92ZScsXG4gICAgICB0b3VjaGVuZDogJ29uVG91Y2hFbmQnXG4gICAgfTtcbiAgfSxcbiAgb25Ub3VjaFN0YXJ0OiBmdW5jdGlvbiBvblRvdWNoU3RhcnQoZXZ0KSB7XG4gICAgdmFyIHRvdWNoZXMgPSBldnQub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdO1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpOyAvLyDlpoLmnpzkuI3mmK/nvKnmlL7kuovku7bliJnnpoHmraLnu6fnu63miafooYxcblxuICAgIGlmICghZXZlbnQyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVnaW4gJiYgIXRoaXMuc2hvdWxkQmVnaW4uY2FsbCh0aGlzLCBldnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDnrKzkuIDkuKrop6bmkbjngrnkvY3nva5cblxuXG4gICAgdGhpcy5zdGFydFBvaW50ID0ge1xuICAgICAgcGFnZVg6IGV2ZW50MS5wYWdlWCxcbiAgICAgIHBhZ2VZOiBldmVudDEucGFnZVlcbiAgICB9O1xuICAgIHRoaXMubW92ZWFibGUgPSB0cnVlO1xuXG4gICAgaWYgKGV2ZW50Mikge1xuICAgICAgdGhpcy5lbmRQb2ludCA9IHtcbiAgICAgICAgcGFnZVg6IGV2ZW50Mi5wYWdlWCxcbiAgICAgICAgcGFnZVk6IGV2ZW50Mi5wYWdlWVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLm9yaWdpblNjYWxlID0gdGhpcy5ncmFwaC5nZXRab29tKCkgfHwgdGhpcy5jdXJyZW50U2NhbGUgfHwgMTtcbiAgfSxcbiAgb25Ub3VjaE1vdmU6IGZ1bmN0aW9uIG9uVG91Y2hNb3ZlKGV2dCkge1xuICAgIGlmICghdGhpcy5tb3ZlYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHZhciB0b3VjaGVzID0gZXZ0Lm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICB2YXIgZXZlbnQxID0gdG91Y2hlc1swXTtcbiAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTtcblxuICAgIGlmICghZXZlbnQyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmVuZFBvaW50KSB7XG4gICAgICB0aGlzLmVuZFBvaW50ID0ge1xuICAgICAgICBwYWdlWDogZXZlbnQyLnBhZ2VYLFxuICAgICAgICBwYWdlWTogZXZlbnQyLnBhZ2VZXG4gICAgICB9O1xuICAgIH0gLy8g6I635Y+W5Z2Q5qCH5LmL6Ze055qE6Led56a7XG5cblxuICAgIHZhciBnZXREaXN0YW5jZSA9IGZ1bmN0aW9uIGdldERpc3RhbmNlKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHJldHVybiBNYXRoLmh5cG90KGVuZC54IC0gc3RhcnQueCwgZW5kLnkgLSBzdGFydC55KTtcbiAgICB9OyAvLyDlj4zmjIfnvKnmlL7mr5TkvotcblxuXG4gICAgdmFyIHNjYWxlID0gZ2V0RGlzdGFuY2Uoe1xuICAgICAgeDogZXZlbnQxLnBhZ2VYLFxuICAgICAgeTogZXZlbnQxLnBhZ2VZXG4gICAgfSwge1xuICAgICAgeDogZXZlbnQyLnBhZ2VYLFxuICAgICAgeTogZXZlbnQyLnBhZ2VZXG4gICAgfSkgLyBnZXREaXN0YW5jZSh7XG4gICAgICB4OiB0aGlzLnN0YXJ0UG9pbnQucGFnZVgsXG4gICAgICB5OiB0aGlzLnN0YXJ0UG9pbnQucGFnZVlcbiAgICB9LCB7XG4gICAgICB4OiB0aGlzLmVuZFBvaW50LnBhZ2VYLFxuICAgICAgeTogdGhpcy5lbmRQb2ludC5wYWdlWVxuICAgIH0pOyAvLyDlupTnlKjliLDnlLvluIPkuIrnmoTnvKnmlL7mr5TkvotcblxuICAgIHZhciB6b29tID0gdGhpcy5vcmlnaW5TY2FsZSAqIHNjYWxlOyAvLyDnvJPlrZjlvZPliY3nmoTnvKnmlL7mr5TkvotcblxuICAgIHRoaXMuY3VycmVudFNjYWxlID0gem9vbTtcbiAgICB2YXIgbWluWm9vbSA9IHRoaXMuZ2V0KCdtaW5ab29tJykgfHwgdGhpcy5ncmFwaC5nZXQoJ21pblpvb20nKTtcbiAgICB2YXIgbWF4Wm9vbSA9IHRoaXMuZ2V0KCdtYXhab29tJykgfHwgdGhpcy5ncmFwaC5nZXQoJ21heFpvb20nKTtcblxuICAgIGlmICh6b29tID4gbWF4Wm9vbSB8fCB6b29tIDwgbWluWm9vbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBhbmltYXRlID0gdGhpcy5nZXQoJ2FuaW1hdGUnKTtcbiAgICB2YXIgYW5pbWF0ZUNmZyA9IHRoaXMuZ2V0KCdhbmltYXRlQ2ZnJyk7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgcG9pbnQgPSBjYW52YXMuZ2V0UG9pbnRCeUNsaWVudChldnQuY2xpZW50WCwgZXZ0LmNsaWVudFkpO1xuICAgIHRoaXMuZ3JhcGguem9vbVRvKHpvb20sIHtcbiAgICAgIHg6IHBvaW50LngsXG4gICAgICB5OiBwb2ludC55XG4gICAgfSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZyk7XG4gICAgdGhpcy5ncmFwaC5lbWl0KCd3aGVlbHpvb20nLCBldnQpO1xuICB9LFxuICBvblRvdWNoRW5kOiBmdW5jdGlvbiBvblRvdWNoRW5kKCkge1xuICAgIHRoaXMubW92ZWFibGUgPSBmYWxzZTtcbiAgICB0aGlzLmVuZFBvaW50ID0gbnVsbDtcbiAgfSxcbiAgb25XaGVlbDogZnVuY3Rpb24gb25XaGVlbChlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIGZpeFNlbGVjdGVkSXRlbXMgPSBfYS5maXhTZWxlY3RlZEl0ZW1zO1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVnaW4gJiYgIXRoaXMuc2hvdWxkQmVnaW4uY2FsbCh0aGlzLCBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zaG91bGRVcGRhdGUuY2FsbCh0aGlzLCBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB2YXIgY2FudmFzID0gZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgcG9pbnQgPSBjYW52YXMuZ2V0UG9pbnRCeUNsaWVudChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgdmFyIHNlbnNpdGl2aXR5ID0gdGhpcy5nZXQoJ3NlbnNpdGl2aXR5Jyk7XG4gICAgdmFyIGdyYXBoWm9vbSA9IGdyYXBoLmdldFpvb20oKTtcbiAgICB2YXIgcmF0aW8gPSBncmFwaFpvb207XG4gICAgdmFyIHpvb20gPSBncmFwaFpvb207IC8vIOWFvOWuuUlF44CBRmlyZWZveOWPikNocm9tZVxuXG4gICAgaWYgKGUud2hlZWxEZWx0YSA8IDApIHtcbiAgICAgIHJhdGlvID0gMSAtIERFTFRBICogc2Vuc2l0aXZpdHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhdGlvID0gMSAvICgxIC0gREVMVEEgKiBzZW5zaXRpdml0eSk7XG4gICAgfVxuXG4gICAgem9vbSA9IGdyYXBoWm9vbSAqIHJhdGlvOyAvLyBjb25zdCB6b29tID0gcmF0aW8gKiBncmFwaFpvb207XG5cbiAgICB2YXIgbWluWm9vbSA9IHRoaXMuZ2V0KCdtaW5ab29tJykgfHwgZ3JhcGguZ2V0KCdtaW5ab29tJyk7XG4gICAgdmFyIG1heFpvb20gPSB0aGlzLmdldCgnbWF4Wm9vbScpIHx8IGdyYXBoLmdldCgnbWF4Wm9vbScpO1xuXG4gICAgaWYgKHpvb20gPiBtYXhab29tIHx8IHpvb20gPCBtaW5ab29tKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBoaWRlIHRoZSBzaGFwZXMgd2hlbiB0aGUgem9vbSByYXRpbyBpcyBzbWFsbGVyIHRoYW4gb3B0aW1pemVab29tXG4gICAgLy8gaGlkZSB0aGUgc2hhcGVzIHdoZW4gem9vbW1pbmdcblxuXG4gICAgdmFyIGVuYWJsZU9wdGltaXplID0gdGhpcy5nZXQoJ2VuYWJsZU9wdGltaXplJyk7XG5cbiAgICBpZiAoZW5hYmxlT3B0aW1pemUpIHtcbiAgICAgIHZhciBvcHRpbWl6ZVpvb21fMSA9IHRoaXMuZ2V0KCdvcHRpbWl6ZVpvb20nKTtcbiAgICAgIHZhciBvcHRpbWl6ZWQgPSB0aGlzLmdldCgnb3B0aW1pemVkJyk7XG4gICAgICB2YXIgbm9kZXNfMSA9IGdyYXBoLmdldE5vZGVzKCk7XG4gICAgICB2YXIgZWRnZXNfMSA9IGdyYXBoLmdldEVkZ2VzKCk7XG4gICAgICB2YXIgbm9kZXNMZW5ndGhfMSA9IG5vZGVzXzEubGVuZ3RoO1xuICAgICAgdmFyIGVkZ2VzTGVuZ3RoXzEgPSBlZGdlc18xLmxlbmd0aDsgLy8gaGlkaW5nXG5cbiAgICAgIGlmICghb3B0aW1pemVkKSB7XG4gICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXNMZW5ndGhfMTsgbisrKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc18xW25dO1xuXG4gICAgICAgICAgaWYgKCFub2RlLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG5cbiAgICAgICAgICAgICAgaWYgKCFzaGFwZS5kZXN0b3J5ZWQgJiYgIXNoYXBlLmdldCgnaXNLZXlTaGFwZScpKSB7XG4gICAgICAgICAgICAgICAgc2hhcGUuc2V0KCdvcmktdmlzaWJpbGl0eScsIHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKSB8fCBzaGFwZS5nZXQoJ3Zpc2libGUnKSk7XG4gICAgICAgICAgICAgICAgc2hhcGUuaGlkZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gMDsgZWRnZUluZGV4IDwgZWRnZXNMZW5ndGhfMTsgZWRnZUluZGV4KyspIHtcbiAgICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzXzFbZWRnZUluZGV4XTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBlZGdlLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcbiAgICAgICAgICAgIHNoYXBlLnNldCgnb3JpLXZpc2liaWxpdHknLCBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5JykgfHwgc2hhcGUuZ2V0KCd2aXNpYmxlJykpO1xuICAgICAgICAgICAgc2hhcGUuaGlkZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0KCdvcHRpbWl6ZWQnLCB0cnVlKTtcbiAgICAgIH0gLy8gc2hvd2luZyBhZnRlciAxMDBtc1xuXG5cbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmdldCgndGltZW91dCcpKTtcbiAgICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjdXJyZW50Wm9vbSA9IGdyYXBoLmdldFpvb20oKTtcblxuICAgICAgICB2YXIgY3VyT3B0aW1pemVkID0gX3RoaXMuZ2V0KCdvcHRpbWl6ZWQnKTtcblxuICAgICAgICBpZiAoY3VyT3B0aW1pemVkKSB7XG4gICAgICAgICAgX3RoaXMuc2V0KCdvcHRpbWl6ZWQnLCBmYWxzZSk7XG5cbiAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzTGVuZ3RoXzE7IG4rKykge1xuICAgICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc18xW25dO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFpvb20gPCBvcHRpbWl6ZVpvb21fMSkge1xuICAgICAgICAgICAgICB2YXIga2V5U2hhcGUgPSBub2RlLmdldEtleVNoYXBlKCk7XG4gICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBrZXlTaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgIGlmIChvcmlWaXMpIGtleVNoYXBlLnNob3coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuICAgICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNoYXBlLmdldCgndmlzaWJsZScpICYmIG9yaVZpcykge1xuICAgICAgICAgICAgICAgICAgaWYgKG9yaVZpcykgc2hhcGUuc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IDA7IGVkZ2VJbmRleCA8IGVkZ2VzTGVuZ3RoXzE7IGVkZ2VJbmRleCsrKSB7XG4gICAgICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzXzFbZWRnZUluZGV4XTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGVkZ2UuZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRab29tIDwgb3B0aW1pemVab29tXzEpIHtcbiAgICAgICAgICAgICAgdmFyIGtleVNoYXBlID0gZWRnZS5nZXRLZXlTaGFwZSgpO1xuICAgICAgICAgICAgICB2YXIgb3JpVmlzID0ga2V5U2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuICAgICAgICAgICAgICBpZiAob3JpVmlzKSBrZXlTaGFwZS5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcblxuICAgICAgICAgICAgICAgIGlmICghc2hhcGUuZ2V0KCd2aXNpYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgICAgICBpZiAob3JpVmlzKSBzaGFwZS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgICAgdGhpcy5zZXQoJ3RpbWVvdXQnLCB0aW1lb3V0KTtcbiAgICB9IC8vIGZpeCB0aGUgaXRlbXMgd2hlbiB6b29taW5nXG5cblxuICAgIGlmIChncmFwaFpvb20gPD0gMSkge1xuICAgICAgdmFyIGZpeE5vZGVzID0gdm9pZCAwLFxuICAgICAgICAgIGZpeEVkZ2VzID0gdm9pZCAwO1xuXG4gICAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwgfHwgZml4U2VsZWN0ZWRJdGVtcy5maXhMaW5lV2lkdGggfHwgZml4U2VsZWN0ZWRJdGVtcy5maXhMYWJlbCkge1xuICAgICAgICBmaXhOb2RlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdub2RlJywgZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSk7XG4gICAgICAgIGZpeEVkZ2VzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ2VkZ2UnLCBmaXhTZWxlY3RlZEl0ZW1zLmZpeFN0YXRlKTtcbiAgICAgICAgdmFyIHNjYWxlID0gZ3JhcGhab29tIC8gem9vbTtcbiAgICAgICAgdmFyIGZpeE5vZGVzTGVuZ3RoID0gZml4Tm9kZXMubGVuZ3RoO1xuXG4gICAgICAgIGZvciAodmFyIGZuID0gMDsgZm4gPCBmaXhOb2Rlc0xlbmd0aDsgZm4rKykge1xuICAgICAgICAgIHZhciBub2RlID0gZml4Tm9kZXNbZm5dO1xuICAgICAgICAgIHZhciBncm91cCA9IG5vZGUuZ2V0Q29udGFpbmVyKCk7XG4gICAgICAgICAgdmFyIG5vZGVNb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcbiAgICAgICAgICB2YXIgb3JpZ2luU3R5bGUgPSBub2RlLmdldE9yaWdpblN0eWxlKCk7XG4gICAgICAgICAgdmFyIGl0ZW1TdGF0ZVN0eWxlID0gbm9kZS5nZXRTdGF0ZVN0eWxlKGZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGUpO1xuICAgICAgICAgIHZhciBzaGFwZVN0YXRlU3R5bGUgPSBub2RlLmdldCgnc2hhcGVGYWN0b3J5JykuZ2V0U2hhcGUobm9kZU1vZGVsLnR5cGUpLmdldFN0YXRlU3R5bGUoZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSwgbm9kZSlbZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZV07XG5cbiAgICAgICAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwpIHtcbiAgICAgICAgICAgIGlmICh6b29tIDw9IDEpIHtcbiAgICAgICAgICAgICAgdmFyIGdyb3VwTWF0cml4ID0gY2xvbmUoZ3JvdXAuZ2V0TWF0cml4KCkpO1xuICAgICAgICAgICAgICBpZiAoIWdyb3VwTWF0cml4KSBncm91cE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcblxuICAgICAgICAgICAgICB2YXIgX2IgPSBub2RlLmdldE1vZGVsKCksXG4gICAgICAgICAgICAgICAgICB4ID0gX2IueCxcbiAgICAgICAgICAgICAgICAgIHkgPSBfYi55O1xuXG4gICAgICAgICAgICAgIGdyb3VwTWF0cml4ID0gdHJhbnNmb3JtKGdyb3VwTWF0cml4LCBbWyd0JywgLXgsIC15XSwgWydzJywgc2NhbGUsIHNjYWxlXSwgWyd0JywgeCwgeV1dKTtcbiAgICAgICAgICAgICAgZ3JvdXAuc2V0TWF0cml4KGdyb3VwTWF0cml4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gZ3JvdXAuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG4gICAgICAgICAgICAgIHZhciBmb250U2l6ZSA9IHZvaWQgMCxcbiAgICAgICAgICAgICAgICAgIGxpbmVXaWR0aCA9IHZvaWQgMDtcblxuICAgICAgICAgICAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhMYWJlbCkge1xuICAgICAgICAgICAgICAgIHZhciBzaGFwZVR5cGUgPSBzaGFwZS5nZXQoJ3R5cGUnKTtcblxuICAgICAgICAgICAgICAgIGlmIChzaGFwZVR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgICAgICAgZm9udFNpemUgPSBzaGFwZS5hdHRyKCdmb250U2l6ZScpIHx8IDEyO1xuICAgICAgICAgICAgICAgICAgdmFyIGl0ZW1TdHlsZSA9IGl0ZW1TdGF0ZVN0eWxlW3NoYXBlLmdldCgnbmFtZScpXTtcbiAgICAgICAgICAgICAgICAgIHZhciBzaGFwZVN0eWxlID0gc2hhcGVTdGF0ZVN0eWxlW3NoYXBlLmdldCgnbmFtZScpXTtcbiAgICAgICAgICAgICAgICAgIHZhciBpdGVtRm9udFNpemUgPSBpdGVtU3R5bGUgPyBpdGVtU3R5bGUuZm9udFNpemUgOiAxMjtcbiAgICAgICAgICAgICAgICAgIHZhciBzaGFwZUZvbnRTaXplID0gc2hhcGVTdHlsZSA/IHNoYXBlU3R5bGUuZm9udFNpemUgOiAxMjtcbiAgICAgICAgICAgICAgICAgIHZhciBvcmlGb250U2l6ZSA9IGl0ZW1Gb250U2l6ZSB8fCBzaGFwZUZvbnRTaXplIHx8IDEyO1xuICAgICAgICAgICAgICAgICAgaWYgKHpvb20gPD0gMSkgc2hhcGUuYXR0cignZm9udFNpemUnLCBvcmlGb250U2l6ZSAvIHpvb20pOyAvLyAqIGdyYXBoWm9vbSAvIHpvb21cblxuICAgICAgICAgICAgICAgICAgaWYgKGxpbmVXaWR0aCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGZpeFNlbGVjdGVkSXRlbXMuZml4TGluZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNoYXBlLmdldCgnaXNLZXlTaGFwZScpKSB7XG4gICAgICAgICAgICAgICAgICBsaW5lV2lkdGggPSBzaGFwZS5hdHRyKCdsaW5lV2lkdGgnKSB8fCAwO1xuICAgICAgICAgICAgICAgICAgdmFyIG9yaUxpbmVXaWR0aCA9IGl0ZW1TdGF0ZVN0eWxlLmxpbmVXaWR0aCB8fCBzaGFwZVN0YXRlU3R5bGUubGluZVdpZHRoIHx8IG9yaWdpblN0eWxlLmxpbmVXaWR0aCB8fCAwO1xuICAgICAgICAgICAgICAgICAgaWYgKHpvb20gPD0gMSkgc2hhcGUuYXR0cignbGluZVdpZHRoJywgb3JpTGluZVdpZHRoIC8gem9vbSk7IC8vICogZ3JhcGhab29tIC8gem9vbVxuXG4gICAgICAgICAgICAgICAgICBpZiAoZm9udFNpemUpIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBmaXhFZGdlc0xlbmd0aCA9IGZpeEVkZ2VzLmxlbmd0aDtcblxuICAgICAgICBmb3IgKHZhciBmZSA9IDA7IGZlIDwgZml4RWRnZXNMZW5ndGg7IGZlKyspIHtcbiAgICAgICAgICB2YXIgZWRnZSA9IGZpeEVkZ2VzW2ZlXTtcbiAgICAgICAgICB2YXIgZ3JvdXAgPSBlZGdlLmdldENvbnRhaW5lcigpO1xuICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGdyb3VwLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICB2YXIgbm9kZU1vZGVsID0gZWRnZS5nZXRNb2RlbCgpO1xuICAgICAgICAgIHZhciBpdGVtU3RhdGVTdHlsZSA9IGVkZ2UuZ2V0U3RhdGVTdHlsZShmaXhTZWxlY3RlZEl0ZW1zLmZpeFN0YXRlKTtcbiAgICAgICAgICB2YXIgc2hhcGVTdGF0ZVN0eWxlID0gZWRnZS5nZXQoJ3NoYXBlRmFjdG9yeScpLmdldFNoYXBlKG5vZGVNb2RlbC50eXBlKS5nZXRTdGF0ZVN0eWxlKGZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGUsIGVkZ2UpW2ZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGVdO1xuICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG4gICAgICAgICAgICB2YXIgZm9udFNpemUgPSB2b2lkIDAsXG4gICAgICAgICAgICAgICAgbGluZVdpZHRoID0gdm9pZCAwO1xuXG4gICAgICAgICAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhMYWJlbCB8fCBmaXhTZWxlY3RlZEl0ZW1zLmZpeEFsbCkge1xuICAgICAgICAgICAgICB2YXIgc2hhcGVUeXBlID0gc2hhcGUuZ2V0KCd0eXBlJyk7XG5cbiAgICAgICAgICAgICAgaWYgKHNoYXBlVHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgICAgZm9udFNpemUgPSBzaGFwZS5hdHRyKCdmb250U2l6ZScpIHx8IDEyO1xuICAgICAgICAgICAgICAgIHZhciBpdGVtU3R5bGUgPSBpdGVtU3RhdGVTdHlsZVtzaGFwZS5nZXQoJ25hbWUnKV07XG4gICAgICAgICAgICAgICAgdmFyIHNoYXBlU3R5bGUgPSBzaGFwZVN0YXRlU3R5bGVbc2hhcGUuZ2V0KCduYW1lJyldO1xuICAgICAgICAgICAgICAgIHZhciBpdGVtRm9udFNpemUgPSBpdGVtU3R5bGUgPyBpdGVtU3R5bGUuZm9udFNpemUgOiAxMjtcbiAgICAgICAgICAgICAgICB2YXIgc2hhcGVGb250U2l6ZSA9IHNoYXBlU3R5bGUgPyBzaGFwZVN0eWxlLmZvbnRTaXplIDogMTI7XG4gICAgICAgICAgICAgICAgdmFyIG9yaUZvbnRTaXplID0gaXRlbUZvbnRTaXplIHx8IHNoYXBlRm9udFNpemUgfHwgMTI7XG4gICAgICAgICAgICAgICAgaWYgKHpvb20gPD0gMSkgc2hhcGUuYXR0cignZm9udFNpemUnLCBvcmlGb250U2l6ZSAvIHpvb20pO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lV2lkdGgpIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaXhTZWxlY3RlZEl0ZW1zLmZpeExpbmVXaWR0aCB8fCBmaXhTZWxlY3RlZEl0ZW1zLmZpeEFsbCkge1xuICAgICAgICAgICAgICBpZiAoc2hhcGUuZ2V0KCdpc0tleVNoYXBlJykpIHtcbiAgICAgICAgICAgICAgICBsaW5lV2lkdGggPSBzaGFwZS5hdHRyKCdsaW5lV2lkdGgnKSB8fCAwO1xuICAgICAgICAgICAgICAgIHZhciBvcmlMaW5lV2lkdGggPSBpdGVtU3RhdGVTdHlsZS5saW5lV2lkdGggfHwgc2hhcGVTdGF0ZVN0eWxlLmxpbmVXaWR0aCB8fCAxO1xuICAgICAgICAgICAgICAgIGlmICh6b29tIDw9IDEpIHNoYXBlLmF0dHIoJ2xpbmVXaWR0aCcsIG9yaUxpbmVXaWR0aCAvIHpvb20pO1xuICAgICAgICAgICAgICAgIGlmIChmb250U2l6ZSkgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYW5pbWF0ZSA9IHRoaXMuZ2V0KCdhbmltYXRlJyk7XG4gICAgdmFyIGFuaW1hdGVDZmcgPSB0aGlzLmdldCgnYW5pbWF0ZUNmZycpO1xuICAgIGdyYXBoLnpvb21Ubyh6b29tLCB7XG4gICAgICB4OiBwb2ludC54LFxuICAgICAgeTogcG9pbnQueVxuICAgIH0sIGFuaW1hdGUsIGFuaW1hdGVDZmcpO1xuICAgIGdyYXBoLmVtaXQoJ3doZWVsem9vbScsIGUpO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/behavior/zoom-canvas.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/element/index.js": /*!******************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/element/index.js ***! \******************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g6_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-element */ \"./node_modules/@antv/g6-element/es/index.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZWxlbWVudC9pbmRleC5qcz8wY2FkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZWxlbWVudC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnQGFudHYvZzYtZWxlbWVudCc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/element/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/global.js": /*!***********************************************!*\ !*** ./node_modules/@antv/g6-pc/es/global.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/color */ \"./node_modules/@antv/g6-pc/es/util/color.js\");\n\nvar subjectColor = 'rgb(95, 149, 255)';\nvar backColor = 'rgb(255, 255, 255)';\nvar textColor = 'rgb(0, 0, 0)';\nvar colorSet = Object(_util_color__WEBPACK_IMPORTED_MODULE_0__[\"getColorsWithSubjectColor\"])(subjectColor, backColor);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: '0.5.3',\n rootContainerClassName: 'root-container',\n nodeContainerClassName: 'node-container',\n edgeContainerClassName: 'edge-container',\n comboContainerClassName: 'combo-container',\n delegateContainerClassName: 'delegate-container',\n defaultLoopPosition: 'top',\n nodeLabel: {\n style: {\n fill: '#000',\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle'\n },\n offset: 4 // 节点的默认文本不居中时的偏移量\n\n },\n defaultNode: {\n type: 'circle',\n style: {\n lineWidth: 1,\n stroke: colorSet.mainStroke,\n fill: colorSet.mainFill\n },\n size: 20,\n color: colorSet.mainStroke,\n linkPoints: {\n size: 8,\n lineWidth: 1,\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke\n }\n },\n // 节点应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n nodeStateStyles: {\n active: {\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke,\n lineWidth: 2,\n shadowColor: colorSet.mainStroke,\n shadowBlur: 10\n },\n selected: {\n fill: colorSet.selectedFill,\n stroke: colorSet.selectedStroke,\n lineWidth: 4,\n shadowColor: colorSet.selectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n fill: colorSet.highlightFill,\n stroke: colorSet.highlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n fill: colorSet.inactiveFill,\n stroke: colorSet.inactiveStroke,\n lineWidth: 1\n },\n disable: {\n fill: colorSet.disableFill,\n stroke: colorSet.disableStroke,\n lineWidth: 1\n }\n },\n edgeLabel: {\n style: {\n fill: textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n }\n },\n defaultEdge: {\n type: 'line',\n size: 1,\n style: {\n stroke: colorSet.edgeMainStroke,\n lineAppendWidth: 2\n },\n color: colorSet.edgeMainStroke\n },\n // 边应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n edgeStateStyles: {\n active: {\n stroke: colorSet.edgeActiveStroke,\n lineWidth: 1\n },\n selected: {\n stroke: colorSet.edgeSelectedStroke,\n lineWidth: 2,\n shadowColor: colorSet.edgeSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.edgeHighlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.edgeInactiveStroke,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.edgeDisableStroke,\n lineWidth: 1\n }\n },\n comboLabel: {\n style: {\n fill: textColor,\n // textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n },\n refY: 10,\n refX: 10 // Combo 的默认文本不居中时的偏移量\n\n },\n defaultCombo: {\n type: 'circle',\n style: {\n fill: colorSet.comboMainFill,\n lineWidth: 1,\n stroke: colorSet.comboMainStroke,\n r: 5,\n width: 20,\n height: 10\n },\n size: [20, 5],\n color: colorSet.comboMainStroke,\n padding: [25, 20, 15, 20]\n },\n // combo 应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n comboStateStyles: {\n active: {\n stroke: colorSet.comboActiveStroke,\n lineWidth: 1,\n fill: colorSet.comboActiveFill\n },\n selected: {\n stroke: colorSet.comboSelectedStroke,\n lineWidth: 2,\n fill: colorSet.comboSelectedFill,\n shadowColor: colorSet.comboSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.comboHighlightStroke,\n lineWidth: 2,\n fill: colorSet.comboHighlightFill,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.comboInactiveStroke,\n fill: colorSet.comboInactiveFill,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.comboDisableStroke,\n fill: colorSet.comboDisableFill,\n lineWidth: 1\n }\n },\n delegateStyle: {\n fill: '#F3F9FF',\n fillOpacity: 0.5,\n stroke: '#1890FF',\n strokeOpacity: 0.9,\n lineDash: [5, 5]\n },\n // 文本水印默认配置\n textWaterMarkerConfig: {\n width: 150,\n height: 100,\n compatible: false,\n text: {\n x: 0,\n y: 60,\n lineHeight: 20,\n rotate: 20,\n fontSize: 14,\n fontFamily: 'Microsoft YaHei',\n fill: 'rgba(0, 0, 0, 0.1)',\n baseline: 'Middle'\n }\n },\n imageWaterMarkerConfig: {\n width: 150,\n height: 130,\n compatible: false,\n image: {\n x: 0,\n y: 0,\n width: 30,\n height: 20,\n rotate: 0\n }\n },\n waterMarkerImage: 'https://gw.alipayobjects.com/os/s/prod/antv/assets/image/logo-with-text-73b8a.svg'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZ2xvYmFsLmpzPzZkMWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDZFQUF5QjtBQUN6QjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9nbG9iYWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRDb2xvcnNXaXRoU3ViamVjdENvbG9yIH0gZnJvbSAnLi91dGlsL2NvbG9yJztcbnZhciBzdWJqZWN0Q29sb3IgPSAncmdiKDk1LCAxNDksIDI1NSknO1xudmFyIGJhY2tDb2xvciA9ICdyZ2IoMjU1LCAyNTUsIDI1NSknO1xudmFyIHRleHRDb2xvciA9ICdyZ2IoMCwgMCwgMCknO1xudmFyIGNvbG9yU2V0ID0gZ2V0Q29sb3JzV2l0aFN1YmplY3RDb2xvcihzdWJqZWN0Q29sb3IsIGJhY2tDb2xvcik7XG5leHBvcnQgZGVmYXVsdCB7XG4gIHZlcnNpb246ICcwLjUuMycsXG4gIHJvb3RDb250YWluZXJDbGFzc05hbWU6ICdyb290LWNvbnRhaW5lcicsXG4gIG5vZGVDb250YWluZXJDbGFzc05hbWU6ICdub2RlLWNvbnRhaW5lcicsXG4gIGVkZ2VDb250YWluZXJDbGFzc05hbWU6ICdlZGdlLWNvbnRhaW5lcicsXG4gIGNvbWJvQ29udGFpbmVyQ2xhc3NOYW1lOiAnY29tYm8tY29udGFpbmVyJyxcbiAgZGVsZWdhdGVDb250YWluZXJDbGFzc05hbWU6ICdkZWxlZ2F0ZS1jb250YWluZXInLFxuICBkZWZhdWx0TG9vcFBvc2l0aW9uOiAndG9wJyxcbiAgbm9kZUxhYmVsOiB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnXG4gICAgfSxcbiAgICBvZmZzZXQ6IDQgLy8g6IqC54K555qE6buY6K6k5paH5pys5LiN5bGF5Lit5pe255qE5YGP56e76YePXG5cbiAgfSxcbiAgZGVmYXVsdE5vZGU6IHtcbiAgICB0eXBlOiAnY2lyY2xlJyxcbiAgICBzdHlsZToge1xuICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgc3Ryb2tlOiBjb2xvclNldC5tYWluU3Ryb2tlLFxuICAgICAgZmlsbDogY29sb3JTZXQubWFpbkZpbGxcbiAgICB9LFxuICAgIHNpemU6IDIwLFxuICAgIGNvbG9yOiBjb2xvclNldC5tYWluU3Ryb2tlLFxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHNpemU6IDgsXG4gICAgICBsaW5lV2lkdGg6IDEsXG4gICAgICBmaWxsOiBjb2xvclNldC5hY3RpdmVGaWxsLFxuICAgICAgc3Ryb2tlOiBjb2xvclNldC5hY3RpdmVTdHJva2VcbiAgICB9XG4gIH0sXG4gIC8vIOiKgueCueW6lOeUqOeKtuaAgeWQjueahOagt+W8j++8jOm7mOiupOS7heaPkOS+myBhY3RpdmXjgIFzZWxlY3RlZOOAgWhpZ2hsaWdodOOAgWluYWN0aXZl44CBZGlzYWJsZe+8jOeUqOaIt+WPr+S7peiHquW3seaJqeWxlVxuICBub2RlU3RhdGVTdHlsZXM6IHtcbiAgICBhY3RpdmU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmFjdGl2ZUZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmFjdGl2ZVN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIHNoYWRvd0NvbG9yOiBjb2xvclNldC5tYWluU3Ryb2tlLFxuICAgICAgc2hhZG93Qmx1cjogMTBcbiAgICB9LFxuICAgIHNlbGVjdGVkOiB7XG4gICAgICBmaWxsOiBjb2xvclNldC5zZWxlY3RlZEZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LnNlbGVjdGVkU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiA0LFxuICAgICAgc2hhZG93Q29sb3I6IGNvbG9yU2V0LnNlbGVjdGVkU3Ryb2tlLFxuICAgICAgc2hhZG93Qmx1cjogMTAsXG4gICAgICAndGV4dC1zaGFwZSc6IHtcbiAgICAgICAgZm9udFdlaWdodDogNTAwXG4gICAgICB9XG4gICAgfSxcbiAgICBoaWdobGlnaHQ6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmhpZ2hsaWdodEZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmhpZ2hsaWdodFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGluYWN0aXZlOiB7XG4gICAgICBmaWxsOiBjb2xvclNldC5pbmFjdGl2ZUZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmluYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBmaWxsOiBjb2xvclNldC5kaXNhYmxlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZGlzYWJsZVN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMVxuICAgIH1cbiAgfSxcbiAgZWRnZUxhYmVsOiB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6IHRleHRDb2xvcixcbiAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICAgICAgZm9udFNpemU6IDEyXG4gICAgfVxuICB9LFxuICBkZWZhdWx0RWRnZToge1xuICAgIHR5cGU6ICdsaW5lJyxcbiAgICBzaXplOiAxLFxuICAgIHN0eWxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VNYWluU3Ryb2tlLFxuICAgICAgbGluZUFwcGVuZFdpZHRoOiAyXG4gICAgfSxcbiAgICBjb2xvcjogY29sb3JTZXQuZWRnZU1haW5TdHJva2VcbiAgfSxcbiAgLy8g6L655bqU55So54q25oCB5ZCO55qE5qC35byP77yM6buY6K6k5LuF5o+Q5L6bIGFjdGl2ZeOAgXNlbGVjdGVk44CBaGlnaGxpZ2h044CBaW5hY3RpdmXjgIFkaXNhYmxl77yM55So5oi35Y+v5Lul6Ieq5bex5omp5bGVXG4gIGVkZ2VTdGF0ZVN0eWxlczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlQWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBzZWxlY3RlZDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlU2VsZWN0ZWRTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDIsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuZWRnZVNlbGVjdGVkU3Ryb2tlLFxuICAgICAgc2hhZG93Qmx1cjogMTAsXG4gICAgICAndGV4dC1zaGFwZSc6IHtcbiAgICAgICAgZm9udFdlaWdodDogNTAwXG4gICAgICB9XG4gICAgfSxcbiAgICBoaWdobGlnaHQ6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZUhpZ2hsaWdodFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGluYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VJbmFjdGl2ZVN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMVxuICAgIH0sXG4gICAgZGlzYWJsZToge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlRGlzYWJsZVN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMVxuICAgIH1cbiAgfSxcbiAgY29tYm9MYWJlbDoge1xuICAgIHN0eWxlOiB7XG4gICAgICBmaWxsOiB0ZXh0Q29sb3IsXG4gICAgICAvLyB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgIGZvbnRTaXplOiAxMlxuICAgIH0sXG4gICAgcmVmWTogMTAsXG4gICAgcmVmWDogMTAgLy8gQ29tYm8g55qE6buY6K6k5paH5pys5LiN5bGF5Lit5pe255qE5YGP56e76YePXG5cbiAgfSxcbiAgZGVmYXVsdENvbWJvOiB7XG4gICAgdHlwZTogJ2NpcmNsZScsXG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvTWFpbkZpbGwsXG4gICAgICBsaW5lV2lkdGg6IDEsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvTWFpblN0cm9rZSxcbiAgICAgIHI6IDUsXG4gICAgICB3aWR0aDogMjAsXG4gICAgICBoZWlnaHQ6IDEwXG4gICAgfSxcbiAgICBzaXplOiBbMjAsIDVdLFxuICAgIGNvbG9yOiBjb2xvclNldC5jb21ib01haW5TdHJva2UsXG4gICAgcGFkZGluZzogWzI1LCAyMCwgMTUsIDIwXVxuICB9LFxuICAvLyBjb21ibyDlupTnlKjnirbmgIHlkI7nmoTmoLflvI/vvIzpu5jorqTku4Xmj5DkvpsgYWN0aXZl44CBc2VsZWN0ZWTjgIFoaWdobGlnaHTjgIFpbmFjdGl2ZeOAgWRpc2FibGXvvIznlKjmiLflj6/ku6Xoh6rlt7HmianlsZVcbiAgY29tYm9TdGF0ZVN0eWxlczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib0FjdGl2ZVN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvQWN0aXZlRmlsbFxuICAgIH0sXG4gICAgc2VsZWN0ZWQ6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9TZWxlY3RlZFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvU2VsZWN0ZWRGaWxsLFxuICAgICAgc2hhZG93Q29sb3I6IGNvbG9yU2V0LmNvbWJvU2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib0hpZ2hsaWdodFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvSGlnaGxpZ2h0RmlsbCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGluYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvSW5hY3RpdmVTdHJva2UsXG4gICAgICBmaWxsOiBjb2xvclNldC5jb21ib0luYWN0aXZlRmlsbCxcbiAgICAgIGxpbmVXaWR0aDogMVxuICAgIH0sXG4gICAgZGlzYWJsZToge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib0Rpc2FibGVTdHJva2UsXG4gICAgICBmaWxsOiBjb2xvclNldC5jb21ib0Rpc2FibGVGaWxsLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBkZWxlZ2F0ZVN0eWxlOiB7XG4gICAgZmlsbDogJyNGM0Y5RkYnLFxuICAgIGZpbGxPcGFjaXR5OiAwLjUsXG4gICAgc3Ryb2tlOiAnIzE4OTBGRicsXG4gICAgc3Ryb2tlT3BhY2l0eTogMC45LFxuICAgIGxpbmVEYXNoOiBbNSwgNV1cbiAgfSxcbiAgLy8g5paH5pys5rC05Y2w6buY6K6k6YWN572uXG4gIHRleHRXYXRlck1hcmtlckNvbmZpZzoge1xuICAgIHdpZHRoOiAxNTAsXG4gICAgaGVpZ2h0OiAxMDAsXG4gICAgY29tcGF0aWJsZTogZmFsc2UsXG4gICAgdGV4dDoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDYwLFxuICAgICAgbGluZUhlaWdodDogMjAsXG4gICAgICByb3RhdGU6IDIwLFxuICAgICAgZm9udFNpemU6IDE0LFxuICAgICAgZm9udEZhbWlseTogJ01pY3Jvc29mdCBZYUhlaScsXG4gICAgICBmaWxsOiAncmdiYSgwLCAwLCAwLCAwLjEpJyxcbiAgICAgIGJhc2VsaW5lOiAnTWlkZGxlJ1xuICAgIH1cbiAgfSxcbiAgaW1hZ2VXYXRlck1hcmtlckNvbmZpZzoge1xuICAgIHdpZHRoOiAxNTAsXG4gICAgaGVpZ2h0OiAxMzAsXG4gICAgY29tcGF0aWJsZTogZmFsc2UsXG4gICAgaW1hZ2U6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IDMwLFxuICAgICAgaGVpZ2h0OiAyMCxcbiAgICAgIHJvdGF0ZTogMFxuICAgIH1cbiAgfSxcbiAgd2F0ZXJNYXJrZXJJbWFnZTogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vb3Mvcy9wcm9kL2FudHYvYXNzZXRzL2ltYWdlL2xvZ28td2l0aC10ZXh0LTczYjhhLnN2Zydcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/global.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/graph/controller/event.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/graph/controller/event.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n\n\n\n\nvar cloneEvent = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].cloneEvent,\n isViewportChanged = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].isViewportChanged;\n\nvar EventController =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(EventController, _super);\n\n function EventController(graph) {\n var _this = _super.call(this, graph) || this;\n\n _this.extendEvents = [];\n _this.dragging = false;\n _this.preItem = null;\n _this.graph = graph;\n _this.destroyed = false;\n\n _this.initEvents();\n\n return _this;\n } // 初始化 G6 中的事件\n\n\n EventController.prototype.initEvents = function () {\n var _a = this,\n graph = _a.graph,\n _b = _a.extendEvents,\n extendEvents = _b === void 0 ? [] : _b;\n\n var canvas = graph.get('canvas'); // canvas.set('draggable', true);\n\n var el = canvas.get('el');\n var canvasHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onCanvasEvents');\n var originHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onExtendEvents');\n var wheelHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onWheelEvent'); // each(EVENTS, event => {\n // canvas.off(event).on(event, canvasHandler);\n // });\n\n canvas.off('*').on('*', canvasHandler);\n this.canvasHandler = canvasHandler;\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(el, 'DOMMouseScroll', wheelHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(el, 'mousewheel', wheelHandler));\n\n if (typeof window !== 'undefined') {\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'keydown', originHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'keyup', originHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'focus', originHandler));\n }\n }; // 获取 shape 的 item 对象\n\n\n EventController.getItemRoot = function (shape) {\n while (shape && !shape.get('item')) {\n shape = shape.get('parent');\n }\n\n return shape;\n };\n /**\n * 处理 canvas 事件\n * @param evt 事件句柄\n */\n\n\n EventController.prototype.onCanvasEvents = function (evt) {\n var graph = this.graph;\n var canvas = graph.get('canvas');\n var target = evt.target;\n var eventType = evt.type;\n /**\n * (clientX, clientY): 相对于页面的坐标;\n * (canvasX, canvasY): 相对于 左上角的坐标;\n * (x, y): 相对于整个画布的坐标, 与 model 的 x, y 是同一维度的。\n */\n\n evt.canvasX = evt.x;\n evt.canvasY = evt.y;\n var point = {\n x: evt.canvasX,\n y: evt.canvasY\n };\n var group = graph.get('group');\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n if (isViewportChanged(matrix)) {\n point = graph.getPointByClient(evt.clientX, evt.clientY);\n }\n\n evt.x = point.x;\n evt.y = point.y;\n evt.currentTarget = graph;\n\n if (target === canvas) {\n if (eventType === 'mousemove' || eventType === 'mouseleave') {\n this.handleMouseMove(evt, 'canvas');\n }\n\n evt.target = canvas;\n evt.item = null;\n graph.emit(eventType, evt);\n graph.emit(\"canvas:\".concat(eventType), evt);\n return;\n }\n\n var itemShape = EventController.getItemRoot(target);\n\n if (!itemShape) {\n graph.emit(eventType, evt);\n return;\n }\n\n var item = itemShape.get('item');\n\n if (item.destroyed) {\n return;\n }\n\n var type = item.getType(); // 事件target是触发事件的Shape实例,item是触发事件的item实例\n\n evt.target = target;\n evt.item = item;\n\n if (evt.canvasX === evt.x && evt.canvasY === evt.y) {\n var canvasPoint = graph.getCanvasByPoint(evt.x, evt.y);\n evt.canvasX = canvasPoint.x;\n evt.canvasY = canvasPoint.y;\n } // emit('click', evt);\n\n\n graph.emit(eventType, evt);\n if (evt.name && !evt.name.includes(':')) graph.emit(\"\".concat(type, \":\").concat(eventType), evt); // emit('node:click', evt)\n else graph.emit(evt.name, evt); // emit('text-shape:click', evt)\n\n if (eventType === 'dragstart') {\n this.dragging = true;\n }\n\n if (eventType === 'dragend') {\n this.dragging = false;\n }\n\n if (eventType === 'mousemove') {\n this.handleMouseMove(evt, type);\n }\n };\n /**\n * 处理扩展事件\n * @param evt 事件句柄\n */\n\n\n EventController.prototype.onExtendEvents = function (evt) {\n this.graph.emit(evt.type, evt);\n };\n /**\n * 处理滚轮事件\n * @param evt 事件句柄\n */\n\n\n EventController.prototype.onWheelEvent = function (evt) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(evt.wheelDelta)) {\n evt.wheelDelta = -evt.detail;\n }\n\n this.graph.emit('wheel', evt);\n };\n /**\n * 处理鼠标移动的事件\n * @param evt 事件句柄\n * @param type item 类型\n */\n\n\n EventController.prototype.handleMouseMove = function (evt, type) {\n var _a = this,\n graph = _a.graph,\n preItem = _a.preItem;\n\n var canvas = graph.get('canvas');\n var item = evt.target === canvas ? null : evt.item;\n evt = cloneEvent(evt); // 从前一个item直接移动到当前item,触发前一个item的leave事件\n\n if (preItem && preItem !== item && !preItem.destroyed) {\n evt.item = preItem;\n this.emitCustomEvent(preItem.getType(), 'mouseleave', evt);\n\n if (this.dragging) {\n this.emitCustomEvent(preItem.getType(), 'dragleave', evt);\n }\n } // 从一个item或canvas移动到当前item,触发当前item的enter事件\n\n\n if (item && preItem !== item) {\n evt.item = item;\n this.emitCustomEvent(type, 'mouseenter', evt);\n\n if (this.dragging) {\n this.emitCustomEvent(type, 'dragenter', evt);\n }\n }\n\n this.preItem = item;\n };\n /**\n * 在 graph 上面 emit 事件\n * @param itemType item 类型\n * @param eventType 事件类型\n * @param evt 事件句柄\n */\n\n\n EventController.prototype.emitCustomEvent = function (itemType, eventType, evt) {\n evt.type = eventType;\n this.graph.emit(\"\".concat(itemType, \":\").concat(eventType), evt);\n };\n\n EventController.prototype.destroy = function () {\n var _a = this,\n graph = _a.graph,\n canvasHandler = _a.canvasHandler,\n extendEvents = _a.extendEvents;\n\n var canvas = graph.get('canvas'); // each(EVENTS, event => {\n // canvas.off(event, canvasHandler);\n // });\n\n canvas.off('*', canvasHandler);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(extendEvents, function (event) {\n event.remove();\n });\n this.dragging = false;\n this.preItem = null;\n this.extendEvents.length = 0;\n this.canvasHandler = null;\n this.destroyed = true;\n };\n\n return EventController;\n}(_antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"AbstractEvent\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZ3JhcGgvY29udHJvbGxlci9ldmVudC5qcz8wMGVkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDZ0I7QUFDSztBQUNIO0FBQ3BELGlCQUFpQixrREFBSTtBQUNyQix3QkFBd0Isa0RBQUk7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQVM7O0FBRVg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUM7O0FBRXJDO0FBQ0Esd0JBQXdCLCtEQUFZO0FBQ3BDLHdCQUF3QiwrREFBWTtBQUNwQyx1QkFBdUIsK0RBQVksdUJBQXVCO0FBQzFEO0FBQ0EsUUFBUTs7QUFFUjtBQUNBO0FBQ0Esc0JBQXNCLHVFQUFnQjtBQUN0QyxzQkFBc0IsdUVBQWdCOztBQUV0QztBQUNBLHdCQUF3Qix1RUFBZ0I7QUFDeEMsd0JBQXdCLHVFQUFnQjtBQUN4Qyx3QkFBd0IsdUVBQWdCO0FBQ3hDO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsOEJBQThCOztBQUU5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSxxR0FBcUc7QUFDckcsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLFFBQVEsd0RBQUs7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDO0FBQ3JDO0FBQ0EsUUFBUTs7QUFFUjtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsMkRBQWE7O0FBRUEsOEVBQWUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZ3JhcGgvY29udHJvbGxlci9ldmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgYWRkRXZlbnRMaXN0ZW5lciB9IGZyb20gJ0BhbnR2L2RvbS11dGlsJztcbmltcG9ydCB7IGVhY2gsIGlzTmlsLCB3cmFwQmVoYXZpb3IgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IEFic3RyYWN0RXZlbnQsIFV0aWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbnZhciBjbG9uZUV2ZW50ID0gVXRpbC5jbG9uZUV2ZW50LFxuICAgIGlzVmlld3BvcnRDaGFuZ2VkID0gVXRpbC5pc1ZpZXdwb3J0Q2hhbmdlZDtcblxudmFyIEV2ZW50Q29udHJvbGxlciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhFdmVudENvbnRyb2xsZXIsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gRXZlbnRDb250cm9sbGVyKGdyYXBoKSB7XG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZ3JhcGgpIHx8IHRoaXM7XG5cbiAgICBfdGhpcy5leHRlbmRFdmVudHMgPSBbXTtcbiAgICBfdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIF90aGlzLnByZUl0ZW0gPSBudWxsO1xuICAgIF90aGlzLmdyYXBoID0gZ3JhcGg7XG4gICAgX3RoaXMuZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgICBfdGhpcy5pbml0RXZlbnRzKCk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH0gLy8g5Yid5aeL5YyWIEc2IOS4reeahOS6i+S7tlxuXG5cbiAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5pbml0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIF9iID0gX2EuZXh0ZW5kRXZlbnRzLFxuICAgICAgICBleHRlbmRFdmVudHMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcblxuICAgIHZhciBjYW52YXMgPSBncmFwaC5nZXQoJ2NhbnZhcycpOyAvLyBjYW52YXMuc2V0KCdkcmFnZ2FibGUnLCB0cnVlKTtcblxuICAgIHZhciBlbCA9IGNhbnZhcy5nZXQoJ2VsJyk7XG4gICAgdmFyIGNhbnZhc0hhbmRsZXIgPSB3cmFwQmVoYXZpb3IodGhpcywgJ29uQ2FudmFzRXZlbnRzJyk7XG4gICAgdmFyIG9yaWdpbkhhbmRsZXIgPSB3cmFwQmVoYXZpb3IodGhpcywgJ29uRXh0ZW5kRXZlbnRzJyk7XG4gICAgdmFyIHdoZWVsSGFuZGxlciA9IHdyYXBCZWhhdmlvcih0aGlzLCAnb25XaGVlbEV2ZW50Jyk7IC8vIGVhY2goRVZFTlRTLCBldmVudCA9PiB7XG4gICAgLy8gICBjYW52YXMub2ZmKGV2ZW50KS5vbihldmVudCwgY2FudmFzSGFuZGxlcik7XG4gICAgLy8gfSk7XG5cbiAgICBjYW52YXMub2ZmKCcqJykub24oJyonLCBjYW52YXNIYW5kbGVyKTtcbiAgICB0aGlzLmNhbnZhc0hhbmRsZXIgPSBjYW52YXNIYW5kbGVyO1xuICAgIGV4dGVuZEV2ZW50cy5wdXNoKGFkZEV2ZW50TGlzdGVuZXIoZWwsICdET01Nb3VzZVNjcm9sbCcsIHdoZWVsSGFuZGxlcikpO1xuICAgIGV4dGVuZEV2ZW50cy5wdXNoKGFkZEV2ZW50TGlzdGVuZXIoZWwsICdtb3VzZXdoZWVsJywgd2hlZWxIYW5kbGVyKSk7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGV4dGVuZEV2ZW50cy5wdXNoKGFkZEV2ZW50TGlzdGVuZXIod2luZG93LCAna2V5ZG93bicsIG9yaWdpbkhhbmRsZXIpKTtcbiAgICAgIGV4dGVuZEV2ZW50cy5wdXNoKGFkZEV2ZW50TGlzdGVuZXIod2luZG93LCAna2V5dXAnLCBvcmlnaW5IYW5kbGVyKSk7XG4gICAgICBleHRlbmRFdmVudHMucHVzaChhZGRFdmVudExpc3RlbmVyKHdpbmRvdywgJ2ZvY3VzJywgb3JpZ2luSGFuZGxlcikpO1xuICAgIH1cbiAgfTsgLy8g6I635Y+WIHNoYXBlIOeahCBpdGVtIOWvueixoVxuXG5cbiAgRXZlbnRDb250cm9sbGVyLmdldEl0ZW1Sb290ID0gZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgd2hpbGUgKHNoYXBlICYmICFzaGFwZS5nZXQoJ2l0ZW0nKSkge1xuICAgICAgc2hhcGUgPSBzaGFwZS5nZXQoJ3BhcmVudCcpO1xuICAgIH1cblxuICAgIHJldHVybiBzaGFwZTtcbiAgfTtcbiAgLyoqXG4gICAqIOWkhOeQhiBjYW52YXMg5LqL5Lu2XG4gICAqIEBwYXJhbSBldnQg5LqL5Lu25Y+l5p+EXG4gICAqL1xuXG5cbiAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5vbkNhbnZhc0V2ZW50cyA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBjYW52YXMgPSBncmFwaC5nZXQoJ2NhbnZhcycpO1xuICAgIHZhciB0YXJnZXQgPSBldnQudGFyZ2V0O1xuICAgIHZhciBldmVudFR5cGUgPSBldnQudHlwZTtcbiAgICAvKipcbiAgICAgKiAoY2xpZW50WCwgY2xpZW50WSk6IOebuOWvueS6jumhtemdoueahOWdkOagh++8m1xuICAgICAqIChjYW52YXNYLCBjYW52YXNZKTog55u45a+55LqOIDxjYW52YXM+IOW3puS4iuinkueahOWdkOagh++8m1xuICAgICAqICh4LCB5KTog55u45a+55LqO5pW05Liq55S75biD55qE5Z2Q5qCHLCDkuI4gbW9kZWwg55qEIHgsIHkg5piv5ZCM5LiA57u05bqm55qE44CCXG4gICAgICovXG5cbiAgICBldnQuY2FudmFzWCA9IGV2dC54O1xuICAgIGV2dC5jYW52YXNZID0gZXZ0Lnk7XG4gICAgdmFyIHBvaW50ID0ge1xuICAgICAgeDogZXZ0LmNhbnZhc1gsXG4gICAgICB5OiBldnQuY2FudmFzWVxuICAgIH07XG4gICAgdmFyIGdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgIHZhciBtYXRyaXggPSBncm91cC5nZXRNYXRyaXgoKTtcblxuICAgIGlmICghbWF0cml4KSB7XG4gICAgICBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgfVxuXG4gICAgaWYgKGlzVmlld3BvcnRDaGFuZ2VkKG1hdHJpeCkpIHtcbiAgICAgIHBvaW50ID0gZ3JhcGguZ2V0UG9pbnRCeUNsaWVudChldnQuY2xpZW50WCwgZXZ0LmNsaWVudFkpO1xuICAgIH1cblxuICAgIGV2dC54ID0gcG9pbnQueDtcbiAgICBldnQueSA9IHBvaW50Lnk7XG4gICAgZXZ0LmN1cnJlbnRUYXJnZXQgPSBncmFwaDtcblxuICAgIGlmICh0YXJnZXQgPT09IGNhbnZhcykge1xuICAgICAgaWYgKGV2ZW50VHlwZSA9PT0gJ21vdXNlbW92ZScgfHwgZXZlbnRUeXBlID09PSAnbW91c2VsZWF2ZScpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVNb3VzZU1vdmUoZXZ0LCAnY2FudmFzJyk7XG4gICAgICB9XG5cbiAgICAgIGV2dC50YXJnZXQgPSBjYW52YXM7XG4gICAgICBldnQuaXRlbSA9IG51bGw7XG4gICAgICBncmFwaC5lbWl0KGV2ZW50VHlwZSwgZXZ0KTtcbiAgICAgIGdyYXBoLmVtaXQoXCJjYW52YXM6XCIuY29uY2F0KGV2ZW50VHlwZSksIGV2dCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1TaGFwZSA9IEV2ZW50Q29udHJvbGxlci5nZXRJdGVtUm9vdCh0YXJnZXQpO1xuXG4gICAgaWYgKCFpdGVtU2hhcGUpIHtcbiAgICAgIGdyYXBoLmVtaXQoZXZlbnRUeXBlLCBldnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBpdGVtID0gaXRlbVNoYXBlLmdldCgnaXRlbScpO1xuXG4gICAgaWYgKGl0ZW0uZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHR5cGUgPSBpdGVtLmdldFR5cGUoKTsgLy8g5LqL5Lu2dGFyZ2V05piv6Kem5Y+R5LqL5Lu255qEU2hhcGXlrp7kvovvvIxpdGVt5piv6Kem5Y+R5LqL5Lu255qEaXRlbeWunuS+i1xuXG4gICAgZXZ0LnRhcmdldCA9IHRhcmdldDtcbiAgICBldnQuaXRlbSA9IGl0ZW07XG5cbiAgICBpZiAoZXZ0LmNhbnZhc1ggPT09IGV2dC54ICYmIGV2dC5jYW52YXNZID09PSBldnQueSkge1xuICAgICAgdmFyIGNhbnZhc1BvaW50ID0gZ3JhcGguZ2V0Q2FudmFzQnlQb2ludChldnQueCwgZXZ0LnkpO1xuICAgICAgZXZ0LmNhbnZhc1ggPSBjYW52YXNQb2ludC54O1xuICAgICAgZXZ0LmNhbnZhc1kgPSBjYW52YXNQb2ludC55O1xuICAgIH0gLy8gZW1pdCgnY2xpY2snLCBldnQpO1xuXG5cbiAgICBncmFwaC5lbWl0KGV2ZW50VHlwZSwgZXZ0KTtcbiAgICBpZiAoZXZ0Lm5hbWUgJiYgIWV2dC5uYW1lLmluY2x1ZGVzKCc6JykpIGdyYXBoLmVtaXQoXCJcIi5jb25jYXQodHlwZSwgXCI6XCIpLmNvbmNhdChldmVudFR5cGUpLCBldnQpOyAvLyBlbWl0KCdub2RlOmNsaWNrJywgZXZ0KVxuICAgIGVsc2UgZ3JhcGguZW1pdChldnQubmFtZSwgZXZ0KTsgLy8gZW1pdCgndGV4dC1zaGFwZTpjbGljaycsIGV2dClcblxuICAgIGlmIChldmVudFR5cGUgPT09ICdkcmFnc3RhcnQnKSB7XG4gICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAnZHJhZ2VuZCcpIHtcbiAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAnbW91c2Vtb3ZlJykge1xuICAgICAgdGhpcy5oYW5kbGVNb3VzZU1vdmUoZXZ0LCB0eXBlKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDlpITnkIbmianlsZXkuovku7ZcbiAgICogQHBhcmFtIGV2dCDkuovku7blj6Xmn4RcbiAgICovXG5cblxuICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLm9uRXh0ZW5kRXZlbnRzID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIHRoaXMuZ3JhcGguZW1pdChldnQudHlwZSwgZXZ0KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWkhOeQhua7mui9ruS6i+S7tlxuICAgKiBAcGFyYW0gZXZ0IOS6i+S7tuWPpeafhFxuICAgKi9cblxuXG4gIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUub25XaGVlbEV2ZW50ID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIGlmIChpc05pbChldnQud2hlZWxEZWx0YSkpIHtcbiAgICAgIGV2dC53aGVlbERlbHRhID0gLWV2dC5kZXRhaWw7XG4gICAgfVxuXG4gICAgdGhpcy5ncmFwaC5lbWl0KCd3aGVlbCcsIGV2dCk7XG4gIH07XG4gIC8qKlxuICAgKiDlpITnkIbpvKDmoIfnp7vliqjnmoTkuovku7ZcbiAgICogQHBhcmFtIGV2dCDkuovku7blj6Xmn4RcbiAgICogQHBhcmFtIHR5cGUgaXRlbSDnsbvlnotcbiAgICovXG5cblxuICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZU1vdXNlTW92ZSA9IGZ1bmN0aW9uIChldnQsIHR5cGUpIHtcbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICBwcmVJdGVtID0gX2EucHJlSXRlbTtcblxuICAgIHZhciBjYW52YXMgPSBncmFwaC5nZXQoJ2NhbnZhcycpO1xuICAgIHZhciBpdGVtID0gZXZ0LnRhcmdldCA9PT0gY2FudmFzID8gbnVsbCA6IGV2dC5pdGVtO1xuICAgIGV2dCA9IGNsb25lRXZlbnQoZXZ0KTsgLy8g5LuO5YmN5LiA5LiqaXRlbeebtOaOpeenu+WKqOWIsOW9k+WJjWl0ZW3vvIzop6blj5HliY3kuIDkuKppdGVt55qEbGVhdmXkuovku7ZcblxuICAgIGlmIChwcmVJdGVtICYmIHByZUl0ZW0gIT09IGl0ZW0gJiYgIXByZUl0ZW0uZGVzdHJveWVkKSB7XG4gICAgICBldnQuaXRlbSA9IHByZUl0ZW07XG4gICAgICB0aGlzLmVtaXRDdXN0b21FdmVudChwcmVJdGVtLmdldFR5cGUoKSwgJ21vdXNlbGVhdmUnLCBldnQpO1xuXG4gICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xuICAgICAgICB0aGlzLmVtaXRDdXN0b21FdmVudChwcmVJdGVtLmdldFR5cGUoKSwgJ2RyYWdsZWF2ZScsIGV2dCk7XG4gICAgICB9XG4gICAgfSAvLyDku47kuIDkuKppdGVt5oiWY2FudmFz56e75Yqo5Yiw5b2T5YmNaXRlbe+8jOinpuWPkeW9k+WJjWl0ZW3nmoRlbnRlcuS6i+S7tlxuXG5cbiAgICBpZiAoaXRlbSAmJiBwcmVJdGVtICE9PSBpdGVtKSB7XG4gICAgICBldnQuaXRlbSA9IGl0ZW07XG4gICAgICB0aGlzLmVtaXRDdXN0b21FdmVudCh0eXBlLCAnbW91c2VlbnRlcicsIGV2dCk7XG5cbiAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgIHRoaXMuZW1pdEN1c3RvbUV2ZW50KHR5cGUsICdkcmFnZW50ZXInLCBldnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHJlSXRlbSA9IGl0ZW07XG4gIH07XG4gIC8qKlxuICAgKiDlnKggZ3JhcGgg5LiK6Z2iIGVtaXQg5LqL5Lu2XG4gICAqIEBwYXJhbSBpdGVtVHlwZSBpdGVtIOexu+Wei1xuICAgKiBAcGFyYW0gZXZlbnRUeXBlIOS6i+S7tuexu+Wei1xuICAgKiBAcGFyYW0gZXZ0IOS6i+S7tuWPpeafhFxuICAgKi9cblxuXG4gIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuZW1pdEN1c3RvbUV2ZW50ID0gZnVuY3Rpb24gKGl0ZW1UeXBlLCBldmVudFR5cGUsIGV2dCkge1xuICAgIGV2dC50eXBlID0gZXZlbnRUeXBlO1xuICAgIHRoaXMuZ3JhcGguZW1pdChcIlwiLmNvbmNhdChpdGVtVHlwZSwgXCI6XCIpLmNvbmNhdChldmVudFR5cGUpLCBldnQpO1xuICB9O1xuXG4gIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICBjYW52YXNIYW5kbGVyID0gX2EuY2FudmFzSGFuZGxlcixcbiAgICAgICAgZXh0ZW5kRXZlbnRzID0gX2EuZXh0ZW5kRXZlbnRzO1xuXG4gICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7IC8vIGVhY2goRVZFTlRTLCBldmVudCA9PiB7XG4gICAgLy8gICBjYW52YXMub2ZmKGV2ZW50LCBjYW52YXNIYW5kbGVyKTtcbiAgICAvLyB9KTtcblxuICAgIGNhbnZhcy5vZmYoJyonLCBjYW52YXNIYW5kbGVyKTtcbiAgICBlYWNoKGV4dGVuZEV2ZW50cywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBldmVudC5yZW1vdmUoKTtcbiAgICB9KTtcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgdGhpcy5wcmVJdGVtID0gbnVsbDtcbiAgICB0aGlzLmV4dGVuZEV2ZW50cy5sZW5ndGggPSAwO1xuICAgIHRoaXMuY2FudmFzSGFuZGxlciA9IG51bGw7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICB9O1xuXG4gIHJldHVybiBFdmVudENvbnRyb2xsZXI7XG59KEFic3RyYWN0RXZlbnQpO1xuXG5leHBvcnQgZGVmYXVsdCBFdmVudENvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/graph/controller/event.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/graph/controller/index.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/graph/controller/index.js ***! \***************************************************************/ /*! exports provided: EventController, LayoutController */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _event__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event */ \"./node_modules/@antv/g6-pc/es/graph/controller/event.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EventController\", function() { return _event__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layout */ \"./node_modules/@antv/g6-pc/es/graph/controller/layout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LayoutController\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZ3JhcGgvY29udHJvbGxlci9pbmRleC5qcz8zZDA2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2dyYXBoL2NvbnRyb2xsZXIvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIEV2ZW50Q29udHJvbGxlciB9IGZyb20gJy4vZXZlbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMYXlvdXRDb250cm9sbGVyIH0gZnJvbSAnLi9sYXlvdXQnOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/graph/controller/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/graph/controller/layout.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/graph/controller/layout.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../layout */ \"./node_modules/@antv/g6-pc/es/layout/index.js\");\n/* harmony import */ var _layout_worker_layout_worker__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../layout/worker/layout.worker */ \"./node_modules/@antv/g6-pc/es/layout/worker/layout.worker.js\");\n/* harmony import */ var _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../layout/worker/layoutConst */ \"./node_modules/@antv/g6-pc/es/layout/worker/layoutConst.js\");\n/* harmony import */ var _util_gpu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/gpu */ \"./node_modules/@antv/g6-pc/es/util/gpu.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n\n\n\n\n\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n\nvar mockRaf = function mockRaf(cb) {\n return setTimeout(cb, 16);\n};\n\nvar mockCaf = function mockCaf(reqId) {\n return clearTimeout(reqId);\n};\n\nvar helper = {\n // pollyfill\n requestAnimationFrame: function requestAnimationFrame(callback) {\n var fn = typeof window !== 'undefined' ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || mockRaf : mockRaf;\n return fn(callback);\n },\n cancelAnimationFrame: function cancelAnimationFrame(requestId) {\n var fn = typeof window !== 'undefined' ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || mockCaf : mockCaf;\n return fn(requestId);\n }\n};\nvar GPU_LAYOUT_NAMES = ['fruchterman', 'gForce'];\nvar LAYOUT_PIPES_ADJUST_NAMES = ['force', 'grid', 'circular'];\n\nvar LayoutController =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(LayoutController, _super); // the configurations of the layout\n // private layoutCfg: any; // LayoutOptions\n // the type name of the layout\n // private layoutType: string;\n // private data: GraphData;\n // private layoutMethods: typeof Layout;\n\n\n function LayoutController(graph) {\n var _this = _super.call(this, graph) || this;\n\n _this.graph = graph;\n _this.layoutCfg = graph.get('layout') || {};\n _this.layoutType = _this.getLayoutType();\n _this.worker = null;\n _this.workerData = {};\n\n _this.initLayout();\n\n return _this;\n } // eslint-disable-next-line class-methods-use-this\n\n\n LayoutController.prototype.initLayout = function () {// no data before rendering\n }; // get layout worker and create one if not exists\n\n\n LayoutController.prototype.getWorker = function () {\n if (this.worker) {\n return this.worker;\n }\n\n if (typeof Worker === 'undefined') {\n // 如果当前浏览器不支持 web worker,则不使用 web worker\n console.warn('Web worker is not supported in current browser.');\n this.worker = null;\n } else {\n this.worker = Object(_layout_worker_layout_worker__WEBPACK_IMPORTED_MODULE_3__[\"LayoutWorker\"])(this.layoutCfg.workerScriptURL);\n }\n\n return this.worker;\n }; // stop layout worker\n\n\n LayoutController.prototype.stopWorker = function () {\n var workerData = this.workerData;\n\n if (!this.worker) {\n return;\n }\n\n this.worker.terminate();\n this.worker = null; // 重新开始新的布局之前,先取消之前布局的requestAnimationFrame。\n\n if (workerData.requestId) {\n helper.cancelAnimationFrame(workerData.requestId);\n workerData.requestId = null;\n }\n\n if (workerData.requestId2) {\n helper.cancelAnimationFrame(workerData.requestId2);\n workerData.requestId2 = null;\n }\n };\n\n LayoutController.prototype.execLayoutMethod = function (layoutCfg, order) {\n var _this = this;\n\n return new Promise(function (reslove, reject) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var graph, layoutType, isForce, onTick_1, tick, enableTick, layoutMethod, onTick_2, tick, layoutData;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n graph = this.graph;\n if (!graph || graph.get('destroyed')) return [2\n /*return*/\n ];\n layoutType = layoutCfg.type; // 每个布局方法都需要注册\n\n layoutCfg.onLayoutEnd = function () {\n graph.emit('aftersublayout', {\n type: layoutType\n });\n reslove();\n }; // 若用户指定开启 gpu,且当前浏览器支持 webgl,且该算法存在 GPU 版本(目前仅支持 fruchterman 和 gForce),使用 gpu 版本的布局\n\n\n if (layoutType && this.isGPU) {\n if (!this.hasGPUVersion(layoutType)) {\n console.warn(\"The '\".concat(layoutType, \"' layout does not support GPU calculation for now, it will run in CPU.\"));\n } else {\n layoutType = \"\".concat(layoutType, \"-gpu\");\n }\n }\n\n isForce = layoutType === 'force' || layoutType === 'g6force' || layoutType === 'gForce';\n\n if (isForce) {\n onTick_1 = layoutCfg.onTick;\n\n tick = function tick() {\n if (onTick_1) {\n onTick_1();\n }\n\n graph.refreshPositions();\n };\n\n layoutCfg.tick = tick;\n } else if (layoutCfg.type === 'comboForce') {\n layoutCfg.comboTrees = graph.get('comboTrees');\n }\n\n enableTick = false;\n\n try {\n layoutMethod = new _layout__WEBPACK_IMPORTED_MODULE_2__[\"Layout\"][layoutType](layoutCfg);\n } catch (e) {\n console.warn(\"The layout method: '\".concat(layoutType, \"' does not exist! Please specify it first.\"));\n reject();\n } // 是否需要迭代的方式完成布局。这里是来自布局对象的实例属性,是由布局的定义者在布局类定义的。\n\n\n enableTick = layoutMethod.enableTick;\n\n if (enableTick) {\n onTick_2 = layoutCfg.onTick;\n\n tick = function tick() {\n if (onTick_2) {\n onTick_2();\n }\n\n graph.refreshPositions();\n };\n\n layoutMethod.tick = tick;\n }\n\n layoutData = this.filterLayoutData(this.data, layoutCfg);\n addLayoutOrder(layoutData, order);\n layoutMethod.init(layoutData); // 若存在节点没有位置信息,且没有设置 layout,在 initPositions 中 random 给出了所有节点的位置,不需要再次执行 random 布局\n // 所有节点都有位置信息,且指定了 layout,则执行布局(代表不是第一次进行布局)\n\n graph.emit('beforesublayout', {\n type: layoutType\n });\n return [4\n /*yield*/\n , layoutMethod.execute()];\n\n case 1:\n _a.sent();\n\n if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) layoutCfg.onLayoutEnd();\n this.layoutMethods[order] = layoutMethod;\n return [2\n /*return*/\n ];\n }\n });\n });\n });\n };\n\n LayoutController.prototype.updateLayoutMethod = function (layoutMethod, layoutCfg) {\n var _this = this;\n\n return new Promise(function (reslove, reject) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var graph, layoutType, layoutData;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n graph = this.graph;\n layoutType = layoutCfg === null || layoutCfg === void 0 ? void 0 : layoutCfg.type; // 每个布局方法都需要注册\n\n layoutCfg.onLayoutEnd = function () {\n graph.emit('aftersublayout', {\n type: layoutType\n });\n reslove();\n };\n\n layoutData = this.filterLayoutData(this.data, layoutCfg);\n layoutMethod.init(layoutData);\n layoutMethod.updateCfg(layoutCfg);\n graph.emit('beforesublayout', {\n type: layoutType\n });\n return [4\n /*yield*/\n , layoutMethod.execute()];\n\n case 1:\n _a.sent();\n\n if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) layoutCfg.onLayoutEnd();\n return [2\n /*return*/\n ];\n }\n });\n });\n });\n };\n /**\n * @param {function} success callback\n * @return {boolean} 是否使用web worker布局\n */\n\n\n LayoutController.prototype.layout = function (success) {\n var _this = this;\n\n var graph = this.graph;\n this.data = this.setDataFromGraph();\n var _a = this.data,\n nodes = _a.nodes,\n hiddenNodes = _a.hiddenNodes;\n\n if (!nodes) {\n return false;\n }\n\n var width = graph.get('width');\n var height = graph.get('height');\n var layoutCfg = {};\n Object.assign(layoutCfg, {\n width: width,\n height: height,\n center: [width / 2, height / 2]\n }, this.layoutCfg);\n this.layoutCfg = layoutCfg;\n this.destoryLayoutMethods();\n graph.emit('beforelayout');\n this.initPositions(layoutCfg.center, nodes); // init hidden nodes\n\n this.initPositions(layoutCfg.center, hiddenNodes); // 防止用户直接用 -gpu 结尾指定布局\n\n var layoutType = layoutCfg.type;\n\n if (layoutType && layoutType.split('-')[1] === 'gpu') {\n layoutType = layoutType.split('-')[0];\n layoutCfg.gpuEnabled = true;\n } // 若用户指定开启 gpu,且当前浏览器支持 webgl,且该算法存在 GPU 版本(目前仅支持 fruchterman 和 gForce),使用 gpu 版本的布局\n\n\n var enableGPU = false;\n\n if (layoutCfg.gpuEnabled) {\n enableGPU = true; // 打开下面语句将会导致 webworker 报找不到 window\n\n if (!Object(_util_gpu__WEBPACK_IMPORTED_MODULE_5__[\"gpuDetector\"])().webgl) {\n console.warn(\"Your browser does not support webGL or GPGPU. The layout will run in CPU.\");\n enableGPU = false;\n }\n }\n\n this.isGPU = enableGPU; // 在 onAllLayoutEnd 中执行用户自定义 onLayoutEnd,触发 afterlayout、更新节点位置、fitView/fitCenter、触发 afterrender\n\n var onLayoutEnd = layoutCfg.onLayoutEnd,\n layoutEndFormatted = layoutCfg.layoutEndFormatted,\n adjust = layoutCfg.adjust;\n\n if (!layoutEndFormatted) {\n layoutCfg.layoutEndFormatted = true;\n\n layoutCfg.onAllLayoutEnd = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n // 执行用户自定义 onLayoutEnd\n if (onLayoutEnd) {\n onLayoutEnd();\n } // 更新节点位置\n\n\n this.refreshLayout();\n if (!(adjust && layoutCfg.pipes)) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.adjustPipesBox(this.data, adjust)];\n\n case 1:\n _a.sent();\n\n this.refreshLayout();\n _a.label = 2;\n\n case 2:\n // 触发 afterlayout\n graph.emit('afterlayout');\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n }\n\n this.stopWorker();\n\n if (layoutCfg.workerEnabled && this.layoutWithWorker(this.data)) {\n // 如果启用布局web worker并且浏览器支持web worker,用web worker布局。否则回退到不用web worker布局。\n return true;\n }\n\n var start = Promise.resolve();\n\n if (layoutCfg.type) {\n start = start.then(function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.execLayoutMethod(layoutCfg, 0)];\n\n case 1:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n });\n } else if (layoutCfg.pipes) {\n layoutCfg.pipes.forEach(function (cfg, index) {\n start = start.then(function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.execLayoutMethod(cfg, index)];\n\n case 1:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n });\n });\n } // 最后统一在外部调用onAllLayoutEnd\n\n\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd(); // 在执行 execute 后立即执行 success,且在 timeBar 中有 throttle,可以防止 timeBar 监听 afterrender 进行 changeData 后 layout,从而死循环\n // 对于 force 一类布局完成后的 fitView 需要用户自己在 onLayoutEnd 中配置\n\n if (success) success();\n }).catch(function (error) {\n console.warn('graph layout failed,', error);\n });\n return false;\n };\n /**\n * layout with web worker\n * @param {object} data graph data\n * @return {boolean} 是否支持web worker\n */\n\n\n LayoutController.prototype.layoutWithWorker = function (data) {\n var _this = this;\n\n var _a = this,\n layoutCfg = _a.layoutCfg,\n graph = _a.graph;\n\n var worker = this.getWorker(); // 每次worker message event handler调用之间的共享数据,会被修改。\n\n var workerData = this.workerData;\n\n if (!worker) {\n return false;\n }\n\n workerData.requestId = null;\n workerData.requestId2 = null;\n workerData.currentTick = null;\n workerData.currentTickData = null;\n graph.emit('beforelayout');\n var start = Promise.resolve();\n\n if (layoutCfg.type) {\n start = start.then(function () {\n return _this.runWebworker(worker, data, layoutCfg);\n });\n } else if (layoutCfg.pipes) {\n var _loop_1 = function _loop_1(cfg) {\n start = start.then(function () {\n return _this.runWebworker(worker, data, cfg);\n });\n };\n\n for (var _i = 0, _b = layoutCfg.pipes; _i < _b.length; _i++) {\n var cfg = _b[_i];\n\n _loop_1(cfg);\n }\n } // 最后统一在外部调用onAllLayoutEnd\n\n\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd();\n }).catch(function (error) {\n console.error('layout failed', error);\n });\n return true;\n };\n\n LayoutController.prototype.runWebworker = function (worker, allData, layoutCfg) {\n var _this = this;\n\n var isGPU = this.isGPU;\n var data = this.filterLayoutData(allData, layoutCfg);\n var nodes = data.nodes,\n edges = data.edges;\n var offScreenCanvas = document.createElement('canvas');\n var gpuWorkerAbility = isGPU && typeof window !== 'undefined' && // eslint-disable-next-line @typescript-eslint/dot-notation\n window.navigator && !navigator[\"gpu\"] && // WebGPU 还不支持 OffscreenCanvas\n 'OffscreenCanvas' in window && 'transferControlToOffscreen' in offScreenCanvas; // NOTE: postMessage的message参数里面不能包含函数,否则postMessage会报错,\n // 例如:'function could not be cloned'。\n // 详情参考:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm\n // 所以这里需要把过滤layoutCfg里的函数字段过滤掉。\n\n var filteredLayoutCfg = filterObject(layoutCfg, function (value) {\n return typeof value !== 'function';\n });\n\n if (!gpuWorkerAbility) {\n worker.postMessage({\n type: _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].RUN,\n nodes: nodes,\n edges: edges,\n layoutCfg: filteredLayoutCfg\n });\n } else {\n var offscreen = offScreenCanvas.transferControlToOffscreen(); // filteredLayoutCfg.canvas = offscreen;\n\n filteredLayoutCfg.type = \"\".concat(filteredLayoutCfg.type, \"-gpu\");\n worker.postMessage({\n type: _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].GPURUN,\n nodes: nodes,\n edges: edges,\n layoutCfg: filteredLayoutCfg,\n canvas: offscreen\n }, [offscreen]);\n }\n\n return new Promise(function (reslove, reject) {\n worker.onmessage = function (event) {\n _this.handleWorkerMessage(reslove, reject, event, data, layoutCfg);\n };\n });\n }; // success callback will be called when updating graph positions for the first time.\n\n\n LayoutController.prototype.handleWorkerMessage = function (reslove, reject, event, data, layoutCfg) {\n var _a = this,\n graph = _a.graph,\n workerData = _a.workerData;\n\n var eventData = event.data;\n var type = eventData.type;\n\n var onTick = function onTick() {\n if (layoutCfg.onTick) {\n layoutCfg.onTick();\n }\n };\n\n switch (type) {\n case _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].TICK:\n workerData.currentTick = eventData.currentTick;\n workerData.currentTickData = eventData;\n\n if (!workerData.requestId) {\n workerData.requestId = helper.requestAnimationFrame(function requestId() {\n updateLayoutPosition(data, eventData);\n graph.refreshPositions();\n onTick();\n\n if (eventData.currentTick === eventData.totalTicks) {\n // 如果是最后一次tick\n reslove();\n } else if (workerData.currentTick === eventData.totalTicks) {\n // 注意这里workerData.currentTick可能已经不再是前面赋值时候的值了,\n // 因为在requestAnimationFrame等待时间里,可能产生新的tick。\n // 如果当前tick不是最后一次tick,并且所有的tick消息都已发出来了,那么需要用最后一次tick的数据再刷新一次。\n workerData.requestId2 = helper.requestAnimationFrame(function requestId2() {\n updateLayoutPosition(data, workerData.currentTickData);\n graph.refreshPositions();\n workerData.requestId2 = null;\n onTick();\n reslove();\n });\n }\n\n workerData.requestId = null;\n });\n }\n\n break;\n\n case _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].END:\n // 如果没有tick消息(非力导布局)\n if (workerData.currentTick == null) {\n updateLayoutPosition(data, eventData);\n reslove();\n }\n\n break;\n\n case _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].GPUEND:\n // 如果没有tick消息(非力导布局)\n if (workerData.currentTick == null) {\n updateGPUWorkerLayoutPosition(data, eventData);\n reslove();\n }\n\n break;\n\n case _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].ERROR:\n console.warn('Web-Worker layout error!', eventData.message);\n reject();\n break;\n\n default:\n reject();\n break;\n }\n }; // 更新布局参数\n\n\n LayoutController.prototype.updateLayoutCfg = function (cfg) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n layoutMethods = _a.layoutMethods;\n\n var layoutCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_6__[\"mix\"])({}, this.layoutCfg, cfg);\n this.layoutCfg = layoutCfg;\n\n if (!(layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.length)) {\n this.layout();\n return;\n }\n\n this.data = this.setDataFromGraph();\n this.stopWorker();\n\n if (cfg.workerEnabled && this.layoutWithWorker(this.data)) {\n // 如果启用布局web worker并且浏览器支持web worker,用web worker布局。否则回退到不用web worker布局。\n return;\n }\n\n graph.emit('beforelayout');\n var start = Promise.resolve();\n\n if (layoutMethods.length === 1) {\n start = start.then(function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.updateLayoutMethod(layoutMethods[0], layoutCfg)];\n\n case 1:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n });\n } else {\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod, index) {\n var currentCfg = layoutCfg.pipes[index];\n start = start.then(function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.updateLayoutMethod(layoutMethod, currentCfg)];\n\n case 1:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n });\n });\n }\n\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd();\n }).catch(function (error) {\n console.warn('layout failed', error);\n });\n };\n\n LayoutController.prototype.adjustPipesBox = function (data, adjust) {\n var _this = this;\n\n return new Promise(function (resolve) {\n var nodes = data.nodes;\n\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) {\n resolve();\n }\n\n if (!LAYOUT_PIPES_ADJUST_NAMES.includes(adjust)) {\n console.warn(\"The adjust type \".concat(adjust, \" is not supported yet, please assign it with 'force', 'grid', or 'circular'.\"));\n resolve();\n }\n\n var layoutCfg = {\n center: _this.layoutCfg.center,\n nodeSize: function nodeSize(d) {\n return Math.max(d.height, d.width);\n },\n preventOverlap: true,\n onLayoutEnd: function onLayoutEnd() {}\n }; // 计算出大单元\n\n var _a = _this.getLayoutBBox(nodes),\n groupNodes = _a.groupNodes,\n layoutNodes = _a.layoutNodes;\n\n var preNodes = Object(_antv_util__WEBPACK_IMPORTED_MODULE_6__[\"clone\"])(layoutNodes); // 根据大单元坐标的变化,调整这里面每个小单元nodes\n\n layoutCfg.onLayoutEnd = function () {\n layoutNodes === null || layoutNodes === void 0 ? void 0 : layoutNodes.forEach(function (ele, index) {\n var _a, _b, _c;\n\n var dx = ele.x - ((_a = preNodes[index]) === null || _a === void 0 ? void 0 : _a.x);\n var dy = ele.y - ((_b = preNodes[index]) === null || _b === void 0 ? void 0 : _b.y);\n (_c = groupNodes[index]) === null || _c === void 0 ? void 0 : _c.forEach(function (n) {\n n.x += dx;\n n.y += dy;\n });\n });\n resolve();\n };\n\n var layoutMethod = new _layout__WEBPACK_IMPORTED_MODULE_2__[\"Layout\"][adjust](layoutCfg);\n layoutMethod.layout({\n nodes: layoutNodes\n });\n });\n };\n\n LayoutController.prototype.hasGPUVersion = function (layoutName) {\n return GPU_LAYOUT_NAMES.includes(layoutName);\n };\n\n LayoutController.prototype.destroy = function () {\n this.destoryLayoutMethods();\n var worker = this.worker;\n\n if (worker) {\n worker.terminate();\n this.worker = null;\n }\n\n this.destroyed = true;\n this.graph.set('layout', undefined);\n this.layoutCfg = undefined;\n this.layoutType = undefined;\n this.layoutMethods = undefined;\n this.graph = null;\n };\n\n return LayoutController;\n}(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"AbstractLayout\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LayoutController);\n\nfunction updateLayoutPosition(data, layoutData) {\n var nodes = data.nodes;\n var layoutNodes = layoutData.nodes;\n var nodeLength = nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n node.x = layoutNodes[i].x;\n node.y = layoutNodes[i].y;\n }\n}\n\nfunction filterObject(collection, callback) {\n var result = {};\n\n if (collection && _typeof(collection) === 'object') {\n Object.keys(collection).forEach(function (key) {\n if (collection.hasOwnProperty(key) && callback(collection[key])) {\n result[key] = collection[key];\n }\n });\n return result;\n }\n\n return collection;\n}\n\nfunction updateGPUWorkerLayoutPosition(data, layoutData) {\n var nodes = data.nodes;\n var vertexEdgeData = layoutData.vertexEdgeData;\n var nodeLength = nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n var x = vertexEdgeData[4 * i];\n var y = vertexEdgeData[4 * i + 1];\n node.x = x;\n node.y = y;\n }\n}\n\nfunction addLayoutOrder(data, order) {\n var _a;\n\n if (!((_a = data === null || data === void 0 ? void 0 : data.nodes) === null || _a === void 0 ? void 0 : _a.length)) {\n return;\n }\n\n var nodes = data.nodes;\n nodes.forEach(function (node) {\n node.layoutOrder = order;\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZ3JhcGgvY29udHJvbGxlci9sYXlvdXQuanM/OTgzNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQXVCLDJCQUEyQixzR0FBc0csbUJBQW1CLEVBQUUsbUJBQW1CLDZIQUE2SCxFQUFFLGVBQWU7O0FBRXBSO0FBQ1g7QUFDVDtBQUMyQjtBQUNBO0FBQ3BCO0FBQ0w7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFTLDJCQUEyQjtBQUN0Qyw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEdBQUc7OztBQUdILHVEQUF1RDtBQUN2RCxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxvQkFBb0IsaUZBQVk7QUFDaEM7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSx1REFBUztBQUN0QjtBQUNBLGVBQWUseURBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0I7OztBQUdoQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGVBQWU7QUFDZjtBQUNBOztBQUVBOztBQUVBO0FBQ0EsbUNBQW1DLDhDQUFNO0FBQ3pDLGVBQWU7QUFDZjtBQUNBO0FBQ0EsZUFBZTs7O0FBR2Y7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRDQUE0QztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLHVEQUFTO0FBQ3RCO0FBQ0EsZUFBZSx5REFBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQSxnR0FBZ0c7O0FBRWhHO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxhQUFhLFNBQVM7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDs7QUFFaEQsc0RBQXNEOztBQUV0RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkIsV0FBVyw2REFBVztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSx1REFBUztBQUN4QixpQkFBaUIseURBQVc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7O0FBR2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsZUFBZSx1REFBUztBQUN4QixpQkFBaUIseURBQVc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxpQkFBaUIsdURBQVM7QUFDMUIsbUJBQW1CLHlEQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBLCtEQUErRDtBQUMvRDs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLFFBQVE7QUFDdEI7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGtDQUFrQzs7QUFFbEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSw0Q0FBNEMsZ0JBQWdCO0FBQzVEOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1GQUFtRjtBQUNuRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLGNBQWMseUVBQWM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxtRUFBbUU7O0FBRW5FO0FBQ0E7QUFDQSxjQUFjLHlFQUFjO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcseUVBQWM7QUFDekI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7O0FBRUE7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7O0FBRUEsV0FBVyx5RUFBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLFdBQVcseUVBQWM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxXQUFXLHlFQUFjO0FBQ3pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixzREFBRyxHQUFHO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZUFBZSx1REFBUztBQUN4QixpQkFBaUIseURBQVc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix1REFBUztBQUMxQixtQkFBbUIseURBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUTs7QUFFUjtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLHdEQUFLLGNBQWM7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBOztBQUVBLDZCQUE2Qiw4Q0FBTTtBQUNuQztBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDREQUFjOztBQUVELCtFQUFnQixFQUFDOztBQUVoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsZ0JBQWdCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsZ0JBQWdCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9ncmFwaC9jb250cm9sbGVyL2xheW91dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9LCBfdHlwZW9mKG9iaik7IH1cblxuaW1wb3J0IHsgX19hd2FpdGVyLCBfX2V4dGVuZHMsIF9fZ2VuZXJhdG9yIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBBYnN0cmFjdExheW91dCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgTGF5b3V0IH0gZnJvbSAnLi4vLi4vbGF5b3V0JztcbmltcG9ydCB7IExheW91dFdvcmtlciB9IGZyb20gJy4uLy4uL2xheW91dC93b3JrZXIvbGF5b3V0Lndvcmtlcic7XG5pbXBvcnQgeyBMQVlPVVRfTUVTU0FHRSB9IGZyb20gJy4uLy4uL2xheW91dC93b3JrZXIvbGF5b3V0Q29uc3QnO1xuaW1wb3J0IHsgZ3B1RGV0ZWN0b3IgfSBmcm9tICcuLi8uLi91dGlsL2dwdSc7XG5pbXBvcnQgeyBtaXgsIGNsb25lIH0gZnJvbSAnQGFudHYvdXRpbCc7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW1wbGllZC1ldmFsXG5cbnZhciBtb2NrUmFmID0gZnVuY3Rpb24gbW9ja1JhZihjYikge1xuICByZXR1cm4gc2V0VGltZW91dChjYiwgMTYpO1xufTtcblxudmFyIG1vY2tDYWYgPSBmdW5jdGlvbiBtb2NrQ2FmKHJlcUlkKSB7XG4gIHJldHVybiBjbGVhclRpbWVvdXQocmVxSWQpO1xufTtcblxudmFyIGhlbHBlciA9IHtcbiAgLy8gcG9sbHlmaWxsXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZTogZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrKSB7XG4gICAgdmFyIGZuID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgbW9ja1JhZiA6IG1vY2tSYWY7XG4gICAgcmV0dXJuIGZuKGNhbGxiYWNrKTtcbiAgfSxcbiAgY2FuY2VsQW5pbWF0aW9uRnJhbWU6IGZ1bmN0aW9uIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJlcXVlc3RJZCkge1xuICAgIHZhciBmbiA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy53ZWJraXRDYW5jZWxBbmltYXRpb25GcmFtZSB8fCBtb2NrQ2FmIDogbW9ja0NhZjtcbiAgICByZXR1cm4gZm4ocmVxdWVzdElkKTtcbiAgfVxufTtcbnZhciBHUFVfTEFZT1VUX05BTUVTID0gWydmcnVjaHRlcm1hbicsICdnRm9yY2UnXTtcbnZhciBMQVlPVVRfUElQRVNfQURKVVNUX05BTUVTID0gWydmb3JjZScsICdncmlkJywgJ2NpcmN1bGFyJ107XG5cbnZhciBMYXlvdXRDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKExheW91dENvbnRyb2xsZXIsIF9zdXBlcik7IC8vIHRoZSBjb25maWd1cmF0aW9ucyBvZiB0aGUgbGF5b3V0XG4gIC8vIHByaXZhdGUgbGF5b3V0Q2ZnOiBhbnk7IC8vIExheW91dE9wdGlvbnNcbiAgLy8gdGhlIHR5cGUgbmFtZSBvZiB0aGUgbGF5b3V0XG4gIC8vIHByaXZhdGUgbGF5b3V0VHlwZTogc3RyaW5nO1xuICAvLyBwcml2YXRlIGRhdGE6IEdyYXBoRGF0YTtcbiAgLy8gcHJpdmF0ZSBsYXlvdXRNZXRob2RzOiB0eXBlb2YgTGF5b3V0O1xuXG5cbiAgZnVuY3Rpb24gTGF5b3V0Q29udHJvbGxlcihncmFwaCkge1xuICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGdyYXBoKSB8fCB0aGlzO1xuXG4gICAgX3RoaXMuZ3JhcGggPSBncmFwaDtcbiAgICBfdGhpcy5sYXlvdXRDZmcgPSBncmFwaC5nZXQoJ2xheW91dCcpIHx8IHt9O1xuICAgIF90aGlzLmxheW91dFR5cGUgPSBfdGhpcy5nZXRMYXlvdXRUeXBlKCk7XG4gICAgX3RoaXMud29ya2VyID0gbnVsbDtcbiAgICBfdGhpcy53b3JrZXJEYXRhID0ge307XG5cbiAgICBfdGhpcy5pbml0TGF5b3V0KCk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcblxuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmluaXRMYXlvdXQgPSBmdW5jdGlvbiAoKSB7Ly8gbm8gZGF0YSBiZWZvcmUgcmVuZGVyaW5nXG4gIH07IC8vIGdldCBsYXlvdXQgd29ya2VyIGFuZCBjcmVhdGUgb25lIGlmIG5vdCBleGlzdHNcblxuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmdldFdvcmtlciA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy53b3JrZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLndvcmtlcjtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIFdvcmtlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIOWmguaenOW9k+WJjea1j+iniOWZqOS4jeaUr+aMgSB3ZWIgd29ya2Vy77yM5YiZ5LiN5L2/55SoIHdlYiB3b3JrZXJcbiAgICAgIGNvbnNvbGUud2FybignV2ViIHdvcmtlciBpcyBub3Qgc3VwcG9ydGVkIGluIGN1cnJlbnQgYnJvd3Nlci4nKTtcbiAgICAgIHRoaXMud29ya2VyID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3JrZXIgPSBMYXlvdXRXb3JrZXIodGhpcy5sYXlvdXRDZmcud29ya2VyU2NyaXB0VVJMKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy53b3JrZXI7XG4gIH07IC8vIHN0b3AgbGF5b3V0IHdvcmtlclxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuc3RvcFdvcmtlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgd29ya2VyRGF0YSA9IHRoaXMud29ya2VyRGF0YTtcblxuICAgIGlmICghdGhpcy53b3JrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcbiAgICB0aGlzLndvcmtlciA9IG51bGw7IC8vIOmHjeaWsOW8gOWni+aWsOeahOW4g+WxgOS5i+WJje+8jOWFiOWPlua2iOS5i+WJjeW4g+WxgOeahHJlcXVlc3RBbmltYXRpb25GcmFtZeOAglxuXG4gICAgaWYgKHdvcmtlckRhdGEucmVxdWVzdElkKSB7XG4gICAgICBoZWxwZXIuY2FuY2VsQW5pbWF0aW9uRnJhbWUod29ya2VyRGF0YS5yZXF1ZXN0SWQpO1xuICAgICAgd29ya2VyRGF0YS5yZXF1ZXN0SWQgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh3b3JrZXJEYXRhLnJlcXVlc3RJZDIpIHtcbiAgICAgIGhlbHBlci5jYW5jZWxBbmltYXRpb25GcmFtZSh3b3JrZXJEYXRhLnJlcXVlc3RJZDIpO1xuICAgICAgd29ya2VyRGF0YS5yZXF1ZXN0SWQyID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZXhlY0xheW91dE1ldGhvZCA9IGZ1bmN0aW9uIChsYXlvdXRDZmcsIG9yZGVyKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzbG92ZSwgcmVqZWN0KSB7XG4gICAgICByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZ3JhcGgsIGxheW91dFR5cGUsIGlzRm9yY2UsIG9uVGlja18xLCB0aWNrLCBlbmFibGVUaWNrLCBsYXlvdXRNZXRob2QsIG9uVGlja18yLCB0aWNrLCBsYXlvdXREYXRhO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgICAgICAgICAgIGlmICghZ3JhcGggfHwgZ3JhcGguZ2V0KCdkZXN0cm95ZWQnKSkgcmV0dXJuIFsyXG4gICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgbGF5b3V0VHlwZSA9IGxheW91dENmZy50eXBlOyAvLyDmr4/kuKrluIPlsYDmlrnms5Xpg73pnIDopoHms6jlhoxcblxuICAgICAgICAgICAgICBsYXlvdXRDZmcub25MYXlvdXRFbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZ3JhcGguZW1pdCgnYWZ0ZXJzdWJsYXlvdXQnLCB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBsYXlvdXRUeXBlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmVzbG92ZSgpO1xuICAgICAgICAgICAgICB9OyAvLyDoi6XnlKjmiLfmjIflrprlvIDlkK8gZ3B177yM5LiU5b2T5YmN5rWP6KeI5Zmo5pSv5oyBIHdlYmds77yM5LiU6K+l566X5rOV5a2Y5ZyoIEdQVSDniYjmnKzvvIjnm67liY3ku4XmlK/mjIEgZnJ1Y2h0ZXJtYW4g5ZKMIGdGb3JjZe+8ie+8jOS9v+eUqCBncHUg54mI5pys55qE5biD5bGAXG5cblxuICAgICAgICAgICAgICBpZiAobGF5b3V0VHlwZSAmJiB0aGlzLmlzR1BVKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0dQVVZlcnNpb24obGF5b3V0VHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlRoZSAnXCIuY29uY2F0KGxheW91dFR5cGUsIFwiJyBsYXlvdXQgZG9lcyBub3Qgc3VwcG9ydCBHUFUgY2FsY3VsYXRpb24gZm9yIG5vdywgaXQgd2lsbCBydW4gaW4gQ1BVLlwiKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGxheW91dFR5cGUgPSBcIlwiLmNvbmNhdChsYXlvdXRUeXBlLCBcIi1ncHVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaXNGb3JjZSA9IGxheW91dFR5cGUgPT09ICdmb3JjZScgfHwgbGF5b3V0VHlwZSA9PT0gJ2c2Zm9yY2UnIHx8IGxheW91dFR5cGUgPT09ICdnRm9yY2UnO1xuXG4gICAgICAgICAgICAgIGlmIChpc0ZvcmNlKSB7XG4gICAgICAgICAgICAgICAgb25UaWNrXzEgPSBsYXlvdXRDZmcub25UaWNrO1xuXG4gICAgICAgICAgICAgICAgdGljayA9IGZ1bmN0aW9uIHRpY2soKSB7XG4gICAgICAgICAgICAgICAgICBpZiAob25UaWNrXzEpIHtcbiAgICAgICAgICAgICAgICAgICAgb25UaWNrXzEoKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgZ3JhcGgucmVmcmVzaFBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBsYXlvdXRDZmcudGljayA9IHRpY2s7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0Q2ZnLnR5cGUgPT09ICdjb21ib0ZvcmNlJykge1xuICAgICAgICAgICAgICAgIGxheW91dENmZy5jb21ib1RyZWVzID0gZ3JhcGguZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBlbmFibGVUaWNrID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsYXlvdXRNZXRob2QgPSBuZXcgTGF5b3V0W2xheW91dFR5cGVdKGxheW91dENmZyk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJUaGUgbGF5b3V0IG1ldGhvZDogJ1wiLmNvbmNhdChsYXlvdXRUeXBlLCBcIicgZG9lcyBub3QgZXhpc3QhIFBsZWFzZSBzcGVjaWZ5IGl0IGZpcnN0LlwiKSk7XG4gICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgIH0gLy8g5piv5ZCm6ZyA6KaB6L+t5Luj55qE5pa55byP5a6M5oiQ5biD5bGA44CC6L+Z6YeM5piv5p2l6Ieq5biD5bGA5a+56LGh55qE5a6e5L6L5bGe5oCn77yM5piv55Sx5biD5bGA55qE5a6a5LmJ6ICF5Zyo5biD5bGA57G75a6a5LmJ55qE44CCXG5cblxuICAgICAgICAgICAgICBlbmFibGVUaWNrID0gbGF5b3V0TWV0aG9kLmVuYWJsZVRpY2s7XG5cbiAgICAgICAgICAgICAgaWYgKGVuYWJsZVRpY2spIHtcbiAgICAgICAgICAgICAgICBvblRpY2tfMiA9IGxheW91dENmZy5vblRpY2s7XG5cbiAgICAgICAgICAgICAgICB0aWNrID0gZnVuY3Rpb24gdGljaygpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChvblRpY2tfMikge1xuICAgICAgICAgICAgICAgICAgICBvblRpY2tfMigpO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBncmFwaC5yZWZyZXNoUG9zaXRpb25zKCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGxheW91dE1ldGhvZC50aWNrID0gdGljaztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGxheW91dERhdGEgPSB0aGlzLmZpbHRlckxheW91dERhdGEodGhpcy5kYXRhLCBsYXlvdXRDZmcpO1xuICAgICAgICAgICAgICBhZGRMYXlvdXRPcmRlcihsYXlvdXREYXRhLCBvcmRlcik7XG4gICAgICAgICAgICAgIGxheW91dE1ldGhvZC5pbml0KGxheW91dERhdGEpOyAvLyDoi6XlrZjlnKjoioLngrnmsqHmnInkvY3nva7kv6Hmga/vvIzkuJTmsqHmnInorr7nva4gbGF5b3V077yM5ZyoIGluaXRQb3NpdGlvbnMg5LitIHJhbmRvbSDnu5nlh7rkuobmiYDmnInoioLngrnnmoTkvY3nva7vvIzkuI3pnIDopoHlho3mrKHmiafooYwgcmFuZG9tIOW4g+WxgFxuICAgICAgICAgICAgICAvLyDmiYDmnInoioLngrnpg73mnInkvY3nva7kv6Hmga/vvIzkuJTmjIflrprkuoYgbGF5b3V077yM5YiZ5omn6KGM5biD5bGA77yI5Luj6KGo5LiN5piv56ys5LiA5qyh6L+b6KGM5biD5bGA77yJXG5cbiAgICAgICAgICAgICAgZ3JhcGguZW1pdCgnYmVmb3Jlc3VibGF5b3V0Jywge1xuICAgICAgICAgICAgICAgIHR5cGU6IGxheW91dFR5cGVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiBbNFxuICAgICAgICAgICAgICAvKnlpZWxkKi9cbiAgICAgICAgICAgICAgLCBsYXlvdXRNZXRob2QuZXhlY3V0ZSgpXTtcblxuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBfYS5zZW50KCk7XG5cbiAgICAgICAgICAgICAgaWYgKGxheW91dE1ldGhvZC5pc0N1c3RvbUxheW91dCAmJiBsYXlvdXRDZmcub25MYXlvdXRFbmQpIGxheW91dENmZy5vbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgICB0aGlzLmxheW91dE1ldGhvZHNbb3JkZXJdID0gbGF5b3V0TWV0aG9kO1xuICAgICAgICAgICAgICByZXR1cm4gWzJcbiAgICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRNZXRob2QgPSBmdW5jdGlvbiAobGF5b3V0TWV0aG9kLCBsYXlvdXRDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNsb3ZlLCByZWplY3QpIHtcbiAgICAgIHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBncmFwaCwgbGF5b3V0VHlwZSwgbGF5b3V0RGF0YTtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgICAgICAgICAgICBsYXlvdXRUeXBlID0gbGF5b3V0Q2ZnID09PSBudWxsIHx8IGxheW91dENmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5b3V0Q2ZnLnR5cGU7IC8vIOavj+S4quW4g+WxgOaWueazlemDvemcgOimgeazqOWGjFxuXG4gICAgICAgICAgICAgIGxheW91dENmZy5vbkxheW91dEVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBncmFwaC5lbWl0KCdhZnRlcnN1YmxheW91dCcsIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IGxheW91dFR5cGVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXNsb3ZlKCk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgbGF5b3V0RGF0YSA9IHRoaXMuZmlsdGVyTGF5b3V0RGF0YSh0aGlzLmRhdGEsIGxheW91dENmZyk7XG4gICAgICAgICAgICAgIGxheW91dE1ldGhvZC5pbml0KGxheW91dERhdGEpO1xuICAgICAgICAgICAgICBsYXlvdXRNZXRob2QudXBkYXRlQ2ZnKGxheW91dENmZyk7XG4gICAgICAgICAgICAgIGdyYXBoLmVtaXQoJ2JlZm9yZXN1YmxheW91dCcsIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBsYXlvdXRUeXBlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gWzRcbiAgICAgICAgICAgICAgLyp5aWVsZCovXG4gICAgICAgICAgICAgICwgbGF5b3V0TWV0aG9kLmV4ZWN1dGUoKV07XG5cbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgX2Euc2VudCgpO1xuXG4gICAgICAgICAgICAgIGlmIChsYXlvdXRNZXRob2QuaXNDdXN0b21MYXlvdXQgJiYgbGF5b3V0Q2ZnLm9uTGF5b3V0RW5kKSBsYXlvdXRDZmcub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFsyXG4gICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdWNjZXNzIGNhbGxiYWNrXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IOaYr+WQpuS9v+eUqHdlYiB3b3JrZXLluIPlsYBcbiAgICovXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbiAoc3VjY2Vzcykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuc2V0RGF0YUZyb21HcmFwaCgpO1xuICAgIHZhciBfYSA9IHRoaXMuZGF0YSxcbiAgICAgICAgbm9kZXMgPSBfYS5ub2RlcyxcbiAgICAgICAgaGlkZGVuTm9kZXMgPSBfYS5oaWRkZW5Ob2RlcztcblxuICAgIGlmICghbm9kZXMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgd2lkdGggPSBncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIGxheW91dENmZyA9IHt9O1xuICAgIE9iamVjdC5hc3NpZ24obGF5b3V0Q2ZnLCB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIGNlbnRlcjogW3dpZHRoIC8gMiwgaGVpZ2h0IC8gMl1cbiAgICB9LCB0aGlzLmxheW91dENmZyk7XG4gICAgdGhpcy5sYXlvdXRDZmcgPSBsYXlvdXRDZmc7XG4gICAgdGhpcy5kZXN0b3J5TGF5b3V0TWV0aG9kcygpO1xuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWxheW91dCcpO1xuICAgIHRoaXMuaW5pdFBvc2l0aW9ucyhsYXlvdXRDZmcuY2VudGVyLCBub2Rlcyk7IC8vIGluaXQgaGlkZGVuIG5vZGVzXG5cbiAgICB0aGlzLmluaXRQb3NpdGlvbnMobGF5b3V0Q2ZnLmNlbnRlciwgaGlkZGVuTm9kZXMpOyAvLyDpmLLmraLnlKjmiLfnm7TmjqXnlKggLWdwdSDnu5PlsL7mjIflrprluIPlsYBcblxuICAgIHZhciBsYXlvdXRUeXBlID0gbGF5b3V0Q2ZnLnR5cGU7XG5cbiAgICBpZiAobGF5b3V0VHlwZSAmJiBsYXlvdXRUeXBlLnNwbGl0KCctJylbMV0gPT09ICdncHUnKSB7XG4gICAgICBsYXlvdXRUeXBlID0gbGF5b3V0VHlwZS5zcGxpdCgnLScpWzBdO1xuICAgICAgbGF5b3V0Q2ZnLmdwdUVuYWJsZWQgPSB0cnVlO1xuICAgIH0gLy8g6Iul55So5oi35oyH5a6a5byA5ZCvIGdwde+8jOS4lOW9k+WJjea1j+iniOWZqOaUr+aMgSB3ZWJnbO+8jOS4lOivpeeul+azleWtmOWcqCBHUFUg54mI5pys77yI55uu5YmN5LuF5pSv5oyBIGZydWNodGVybWFuIOWSjCBnRm9yY2XvvInvvIzkvb/nlKggZ3B1IOeJiOacrOeahOW4g+WxgFxuXG5cbiAgICB2YXIgZW5hYmxlR1BVID0gZmFsc2U7XG5cbiAgICBpZiAobGF5b3V0Q2ZnLmdwdUVuYWJsZWQpIHtcbiAgICAgIGVuYWJsZUdQVSA9IHRydWU7IC8vIOaJk+W8gOS4i+mdouivreWPpeWwhuS8muWvvOiHtCB3ZWJ3b3JrZXIg5oql5om+5LiN5YiwIHdpbmRvd1xuXG4gICAgICBpZiAoIWdwdURldGVjdG9yKCkud2ViZ2wpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiWW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgd2ViR0wgb3IgR1BHUFUuIFRoZSBsYXlvdXQgd2lsbCBydW4gaW4gQ1BVLlwiKTtcbiAgICAgICAgZW5hYmxlR1BVID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pc0dQVSA9IGVuYWJsZUdQVTsgLy8g5ZyoIG9uQWxsTGF5b3V0RW5kIOS4reaJp+ihjOeUqOaIt+iHquWumuS5iSBvbkxheW91dEVuZO+8jOinpuWPkSBhZnRlcmxheW91dOOAgeabtOaWsOiKgueCueS9jee9ruOAgWZpdFZpZXcvZml0Q2VudGVy44CB6Kem5Y+RIGFmdGVycmVuZGVyXG5cbiAgICB2YXIgb25MYXlvdXRFbmQgPSBsYXlvdXRDZmcub25MYXlvdXRFbmQsXG4gICAgICAgIGxheW91dEVuZEZvcm1hdHRlZCA9IGxheW91dENmZy5sYXlvdXRFbmRGb3JtYXR0ZWQsXG4gICAgICAgIGFkanVzdCA9IGxheW91dENmZy5hZGp1c3Q7XG5cbiAgICBpZiAoIWxheW91dEVuZEZvcm1hdHRlZCkge1xuICAgICAgbGF5b3V0Q2ZnLmxheW91dEVuZEZvcm1hdHRlZCA9IHRydWU7XG5cbiAgICAgIGxheW91dENmZy5vbkFsbExheW91dEVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAvLyDmiafooYznlKjmiLfoh6rlrprkuYkgb25MYXlvdXRFbmRcbiAgICAgICAgICAgICAgICBpZiAob25MYXlvdXRFbmQpIHtcbiAgICAgICAgICAgICAgICAgIG9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICAgICAgfSAvLyDmm7TmlrDoioLngrnkvY3nva5cblxuXG4gICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoTGF5b3V0KCk7XG4gICAgICAgICAgICAgICAgaWYgKCEoYWRqdXN0ICYmIGxheW91dENmZy5waXBlcykpIHJldHVybiBbM1xuICAgICAgICAgICAgICAgIC8qYnJlYWsqL1xuICAgICAgICAgICAgICAgICwgMl07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFs0XG4gICAgICAgICAgICAgICAgLyp5aWVsZCovXG4gICAgICAgICAgICAgICAgLCB0aGlzLmFkanVzdFBpcGVzQm94KHRoaXMuZGF0YSwgYWRqdXN0KV07XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaExheW91dCgpO1xuICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gMjtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgLy8g6Kem5Y+RIGFmdGVybGF5b3V0XG4gICAgICAgICAgICAgICAgZ3JhcGguZW1pdCgnYWZ0ZXJsYXlvdXQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzJcbiAgICAgICAgICAgICAgICAvKnJldHVybiovXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFdvcmtlcigpO1xuXG4gICAgaWYgKGxheW91dENmZy53b3JrZXJFbmFibGVkICYmIHRoaXMubGF5b3V0V2l0aFdvcmtlcih0aGlzLmRhdGEpKSB7XG4gICAgICAvLyDlpoLmnpzlkK/nlKjluIPlsYB3ZWIgd29ya2Vy5bm25LiU5rWP6KeI5Zmo5pSv5oyBd2ViIHdvcmtlcu+8jOeUqHdlYiB3b3JrZXLluIPlsYDjgILlkKbliJnlm57pgIDliLDkuI3nlKh3ZWIgd29ya2Vy5biD5bGA44CCXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnQgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuICAgIGlmIChsYXlvdXRDZmcudHlwZSkge1xuICAgICAgc3RhcnQgPSBzdGFydC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gWzRcbiAgICAgICAgICAgICAgICAvKnlpZWxkKi9cbiAgICAgICAgICAgICAgICAsIHRoaXMuZXhlY0xheW91dE1ldGhvZChsYXlvdXRDZmcsIDApXTtcblxuICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyXG4gICAgICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgICAgICwgX2Euc2VudCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGxheW91dENmZy5waXBlcykge1xuICAgICAgbGF5b3V0Q2ZnLnBpcGVzLmZvckVhY2goZnVuY3Rpb24gKGNmZywgaW5kZXgpIHtcbiAgICAgICAgc3RhcnQgPSBzdGFydC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0XG4gICAgICAgICAgICAgICAgICAvKnlpZWxkKi9cbiAgICAgICAgICAgICAgICAgICwgdGhpcy5leGVjTGF5b3V0TWV0aG9kKGNmZywgaW5kZXgpXTtcblxuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgIHJldHVybiBbMlxuICAgICAgICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgICAgICAgLCBfYS5zZW50KCldO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IC8vIOacgOWQjue7n+S4gOWcqOWklumDqOiwg+eUqG9uQWxsTGF5b3V0RW5kXG5cblxuICAgIHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGxheW91dENmZy5vbkFsbExheW91dEVuZCkgbGF5b3V0Q2ZnLm9uQWxsTGF5b3V0RW5kKCk7IC8vIOWcqOaJp+ihjCBleGVjdXRlIOWQjueri+WNs+aJp+ihjCBzdWNjZXNz77yM5LiU5ZyoIHRpbWVCYXIg5Lit5pyJIHRocm90dGxl77yM5Y+v5Lul6Ziy5q2iIHRpbWVCYXIg55uR5ZCsIGFmdGVycmVuZGVyIOi/m+ihjCBjaGFuZ2VEYXRhIOWQjiBsYXlvdXTvvIzku47ogIzmrbvlvqrnjq9cbiAgICAgIC8vIOWvueS6jiBmb3JjZSDkuIDnsbvluIPlsYDlrozmiJDlkI7nmoQgZml0VmlldyDpnIDopoHnlKjmiLfoh6rlt7HlnKggb25MYXlvdXRFbmQg5Lit6YWN572uXG5cbiAgICAgIGlmIChzdWNjZXNzKSBzdWNjZXNzKCk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2dyYXBoIGxheW91dCBmYWlsZWQsJywgZXJyb3IpO1xuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcbiAgLyoqXG4gICAqIGxheW91dCB3aXRoIHdlYiB3b3JrZXJcbiAgICogQHBhcmFtIHtvYmplY3R9IGRhdGEgZ3JhcGggZGF0YVxuICAgKiBAcmV0dXJuIHtib29sZWFufSDmmK/lkKbmlK/mjIF3ZWIgd29ya2VyXG4gICAqL1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUubGF5b3V0V2l0aFdvcmtlciA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGxheW91dENmZyA9IF9hLmxheW91dENmZyxcbiAgICAgICAgZ3JhcGggPSBfYS5ncmFwaDtcblxuICAgIHZhciB3b3JrZXIgPSB0aGlzLmdldFdvcmtlcigpOyAvLyDmr4/mrKF3b3JrZXIgbWVzc2FnZSBldmVudCBoYW5kbGVy6LCD55So5LmL6Ze055qE5YWx5Lqr5pWw5o2u77yM5Lya6KKr5L+u5pS544CCXG5cbiAgICB2YXIgd29ya2VyRGF0YSA9IHRoaXMud29ya2VyRGF0YTtcblxuICAgIGlmICghd29ya2VyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgd29ya2VyRGF0YS5yZXF1ZXN0SWQgPSBudWxsO1xuICAgIHdvcmtlckRhdGEucmVxdWVzdElkMiA9IG51bGw7XG4gICAgd29ya2VyRGF0YS5jdXJyZW50VGljayA9IG51bGw7XG4gICAgd29ya2VyRGF0YS5jdXJyZW50VGlja0RhdGEgPSBudWxsO1xuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWxheW91dCcpO1xuICAgIHZhciBzdGFydCA9IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gICAgaWYgKGxheW91dENmZy50eXBlKSB7XG4gICAgICBzdGFydCA9IHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMucnVuV2Vid29ya2VyKHdvcmtlciwgZGF0YSwgbGF5b3V0Q2ZnKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAobGF5b3V0Q2ZnLnBpcGVzKSB7XG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoY2ZnKSB7XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnJ1bldlYndvcmtlcih3b3JrZXIsIGRhdGEsIGNmZyk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYiA9IGxheW91dENmZy5waXBlczsgX2kgPCBfYi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGNmZyA9IF9iW19pXTtcblxuICAgICAgICBfbG9vcF8xKGNmZyk7XG4gICAgICB9XG4gICAgfSAvLyDmnIDlkI7nu5/kuIDlnKjlpJbpg6josIPnlKhvbkFsbExheW91dEVuZFxuXG5cbiAgICBzdGFydC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChsYXlvdXRDZmcub25BbGxMYXlvdXRFbmQpIGxheW91dENmZy5vbkFsbExheW91dEVuZCgpO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignbGF5b3V0IGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5ydW5XZWJ3b3JrZXIgPSBmdW5jdGlvbiAod29ya2VyLCBhbGxEYXRhLCBsYXlvdXRDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGlzR1BVID0gdGhpcy5pc0dQVTtcbiAgICB2YXIgZGF0YSA9IHRoaXMuZmlsdGVyTGF5b3V0RGF0YShhbGxEYXRhLCBsYXlvdXRDZmcpO1xuICAgIHZhciBub2RlcyA9IGRhdGEubm9kZXMsXG4gICAgICAgIGVkZ2VzID0gZGF0YS5lZGdlcztcbiAgICB2YXIgb2ZmU2NyZWVuQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgdmFyIGdwdVdvcmtlckFiaWxpdHkgPSBpc0dQVSAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2RvdC1ub3RhdGlvblxuICAgIHdpbmRvdy5uYXZpZ2F0b3IgJiYgIW5hdmlnYXRvcltcImdwdVwiXSAmJiAvLyBXZWJHUFUg6L+Y5LiN5pSv5oyBIE9mZnNjcmVlbkNhbnZhc1xuICAgICdPZmZzY3JlZW5DYW52YXMnIGluIHdpbmRvdyAmJiAndHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4nIGluIG9mZlNjcmVlbkNhbnZhczsgLy8gTk9URTogcG9zdE1lc3NhZ2XnmoRtZXNzYWdl5Y+C5pWw6YeM6Z2i5LiN6IO95YyF5ZCr5Ye95pWw77yM5ZCm5YiZcG9zdE1lc3NhZ2XkvJrmiqXplJnvvIxcbiAgICAvLyDkvovlpoLvvJonZnVuY3Rpb24gY291bGQgbm90IGJlIGNsb25lZCfjgIJcbiAgICAvLyDor6bmg4Xlj4LogIPvvJpodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2ViX1dvcmtlcnNfQVBJL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtXG4gICAgLy8g5omA5Lul6L+Z6YeM6ZyA6KaB5oqK6L+H5rukbGF5b3V0Q2Zn6YeM55qE5Ye95pWw5a2X5q616L+H5ruk5o6J44CCXG5cbiAgICB2YXIgZmlsdGVyZWRMYXlvdXRDZmcgPSBmaWx0ZXJPYmplY3QobGF5b3V0Q2ZnLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbic7XG4gICAgfSk7XG5cbiAgICBpZiAoIWdwdVdvcmtlckFiaWxpdHkpIHtcbiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgIHR5cGU6IExBWU9VVF9NRVNTQUdFLlJVTixcbiAgICAgICAgbm9kZXM6IG5vZGVzLFxuICAgICAgICBlZGdlczogZWRnZXMsXG4gICAgICAgIGxheW91dENmZzogZmlsdGVyZWRMYXlvdXRDZmdcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb2Zmc2NyZWVuID0gb2ZmU2NyZWVuQ2FudmFzLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCk7IC8vIGZpbHRlcmVkTGF5b3V0Q2ZnLmNhbnZhcyA9IG9mZnNjcmVlbjtcblxuICAgICAgZmlsdGVyZWRMYXlvdXRDZmcudHlwZSA9IFwiXCIuY29uY2F0KGZpbHRlcmVkTGF5b3V0Q2ZnLnR5cGUsIFwiLWdwdVwiKTtcbiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgIHR5cGU6IExBWU9VVF9NRVNTQUdFLkdQVVJVTixcbiAgICAgICAgbm9kZXM6IG5vZGVzLFxuICAgICAgICBlZGdlczogZWRnZXMsXG4gICAgICAgIGxheW91dENmZzogZmlsdGVyZWRMYXlvdXRDZmcsXG4gICAgICAgIGNhbnZhczogb2Zmc2NyZWVuXG4gICAgICB9LCBbb2Zmc2NyZWVuXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNsb3ZlLCByZWplY3QpIHtcbiAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgX3RoaXMuaGFuZGxlV29ya2VyTWVzc2FnZShyZXNsb3ZlLCByZWplY3QsIGV2ZW50LCBkYXRhLCBsYXlvdXRDZmcpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfTsgLy8gc3VjY2VzcyBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCB3aGVuIHVwZGF0aW5nIGdyYXBoIHBvc2l0aW9ucyBmb3IgdGhlIGZpcnN0IHRpbWUuXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVXb3JrZXJNZXNzYWdlID0gZnVuY3Rpb24gKHJlc2xvdmUsIHJlamVjdCwgZXZlbnQsIGRhdGEsIGxheW91dENmZykge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIHdvcmtlckRhdGEgPSBfYS53b3JrZXJEYXRhO1xuXG4gICAgdmFyIGV2ZW50RGF0YSA9IGV2ZW50LmRhdGE7XG4gICAgdmFyIHR5cGUgPSBldmVudERhdGEudHlwZTtcblxuICAgIHZhciBvblRpY2sgPSBmdW5jdGlvbiBvblRpY2soKSB7XG4gICAgICBpZiAobGF5b3V0Q2ZnLm9uVGljaykge1xuICAgICAgICBsYXlvdXRDZmcub25UaWNrKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBMQVlPVVRfTUVTU0FHRS5USUNLOlxuICAgICAgICB3b3JrZXJEYXRhLmN1cnJlbnRUaWNrID0gZXZlbnREYXRhLmN1cnJlbnRUaWNrO1xuICAgICAgICB3b3JrZXJEYXRhLmN1cnJlbnRUaWNrRGF0YSA9IGV2ZW50RGF0YTtcblxuICAgICAgICBpZiAoIXdvcmtlckRhdGEucmVxdWVzdElkKSB7XG4gICAgICAgICAgd29ya2VyRGF0YS5yZXF1ZXN0SWQgPSBoZWxwZXIucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uIHJlcXVlc3RJZCgpIHtcbiAgICAgICAgICAgIHVwZGF0ZUxheW91dFBvc2l0aW9uKGRhdGEsIGV2ZW50RGF0YSk7XG4gICAgICAgICAgICBncmFwaC5yZWZyZXNoUG9zaXRpb25zKCk7XG4gICAgICAgICAgICBvblRpY2soKTtcblxuICAgICAgICAgICAgaWYgKGV2ZW50RGF0YS5jdXJyZW50VGljayA9PT0gZXZlbnREYXRhLnRvdGFsVGlja3MpIHtcbiAgICAgICAgICAgICAgLy8g5aaC5p6c5piv5pyA5ZCO5LiA5qyhdGlja1xuICAgICAgICAgICAgICByZXNsb3ZlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHdvcmtlckRhdGEuY3VycmVudFRpY2sgPT09IGV2ZW50RGF0YS50b3RhbFRpY2tzKSB7XG4gICAgICAgICAgICAgIC8vIOazqOaEj+i/memHjHdvcmtlckRhdGEuY3VycmVudFRpY2vlj6/og73lt7Lnu4/kuI3lho3mmK/liY3pnaLotYvlgLzml7blgJnnmoTlgLzkuobvvIxcbiAgICAgICAgICAgICAgLy8g5Zug5Li65ZyocmVxdWVzdEFuaW1hdGlvbkZyYW1l562J5b6F5pe26Ze06YeM77yM5Y+v6IO95Lqn55Sf5paw55qEdGlja+OAglxuICAgICAgICAgICAgICAvLyDlpoLmnpzlvZPliY10aWNr5LiN5piv5pyA5ZCO5LiA5qyhdGlja++8jOW5tuS4lOaJgOacieeahHRpY2vmtojmga/pg73lt7Llj5Hlh7rmnaXkuobvvIzpgqPkuYjpnIDopoHnlKjmnIDlkI7kuIDmrKF0aWNr55qE5pWw5o2u5YaN5Yi35paw5LiA5qyh44CCXG4gICAgICAgICAgICAgIHdvcmtlckRhdGEucmVxdWVzdElkMiA9IGhlbHBlci5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gcmVxdWVzdElkMigpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVMYXlvdXRQb3NpdGlvbihkYXRhLCB3b3JrZXJEYXRhLmN1cnJlbnRUaWNrRGF0YSk7XG4gICAgICAgICAgICAgICAgZ3JhcGgucmVmcmVzaFBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgIHdvcmtlckRhdGEucmVxdWVzdElkMiA9IG51bGw7XG4gICAgICAgICAgICAgICAgb25UaWNrKCk7XG4gICAgICAgICAgICAgICAgcmVzbG92ZSgpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd29ya2VyRGF0YS5yZXF1ZXN0SWQgPSBudWxsO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTEFZT1VUX01FU1NBR0UuRU5EOlxuICAgICAgICAvLyDlpoLmnpzmsqHmnIl0aWNr5raI5oGv77yI6Z2e5Yqb5a+85biD5bGA77yJXG4gICAgICAgIGlmICh3b3JrZXJEYXRhLmN1cnJlbnRUaWNrID09IG51bGwpIHtcbiAgICAgICAgICB1cGRhdGVMYXlvdXRQb3NpdGlvbihkYXRhLCBldmVudERhdGEpO1xuICAgICAgICAgIHJlc2xvdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIExBWU9VVF9NRVNTQUdFLkdQVUVORDpcbiAgICAgICAgLy8g5aaC5p6c5rKh5pyJdGlja+a2iOaBr++8iOmdnuWKm+WvvOW4g+WxgO+8iVxuICAgICAgICBpZiAod29ya2VyRGF0YS5jdXJyZW50VGljayA9PSBudWxsKSB7XG4gICAgICAgICAgdXBkYXRlR1BVV29ya2VyTGF5b3V0UG9zaXRpb24oZGF0YSwgZXZlbnREYXRhKTtcbiAgICAgICAgICByZXNsb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBMQVlPVVRfTUVTU0FHRS5FUlJPUjpcbiAgICAgICAgY29uc29sZS53YXJuKCdXZWItV29ya2VyIGxheW91dCBlcnJvciEnLCBldmVudERhdGEubWVzc2FnZSk7XG4gICAgICAgIHJlamVjdCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfTsgLy8g5pu05paw5biD5bGA5Y+C5pWwXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRDZmcgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIGxheW91dE1ldGhvZHMgPSBfYS5sYXlvdXRNZXRob2RzO1xuXG4gICAgdmFyIGxheW91dENmZyA9IG1peCh7fSwgdGhpcy5sYXlvdXRDZmcsIGNmZyk7XG4gICAgdGhpcy5sYXlvdXRDZmcgPSBsYXlvdXRDZmc7XG5cbiAgICBpZiAoIShsYXlvdXRNZXRob2RzID09PSBudWxsIHx8IGxheW91dE1ldGhvZHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheW91dE1ldGhvZHMubGVuZ3RoKSkge1xuICAgICAgdGhpcy5sYXlvdXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgPSB0aGlzLnNldERhdGFGcm9tR3JhcGgoKTtcbiAgICB0aGlzLnN0b3BXb3JrZXIoKTtcblxuICAgIGlmIChjZmcud29ya2VyRW5hYmxlZCAmJiB0aGlzLmxheW91dFdpdGhXb3JrZXIodGhpcy5kYXRhKSkge1xuICAgICAgLy8g5aaC5p6c5ZCv55So5biD5bGAd2ViIHdvcmtlcuW5tuS4lOa1j+iniOWZqOaUr+aMgXdlYiB3b3JrZXLvvIznlKh3ZWIgd29ya2Vy5biD5bGA44CC5ZCm5YiZ5Zue6YCA5Yiw5LiN55Sod2ViIHdvcmtlcuW4g+WxgOOAglxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWxheW91dCcpO1xuICAgIHZhciBzdGFydCA9IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gICAgaWYgKGxheW91dE1ldGhvZHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBzdGFydCA9IHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiBbNFxuICAgICAgICAgICAgICAgIC8qeWllbGQqL1xuICAgICAgICAgICAgICAgICwgdGhpcy51cGRhdGVMYXlvdXRNZXRob2QobGF5b3V0TWV0aG9kc1swXSwgbGF5b3V0Q2ZnKV07XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIHJldHVybiBbMlxuICAgICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgICAsIF9hLnNlbnQoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxheW91dE1ldGhvZHMgPT09IG51bGwgfHwgbGF5b3V0TWV0aG9kcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5b3V0TWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uIChsYXlvdXRNZXRob2QsIGluZGV4KSB7XG4gICAgICAgIHZhciBjdXJyZW50Q2ZnID0gbGF5b3V0Q2ZnLnBpcGVzW2luZGV4XTtcbiAgICAgICAgc3RhcnQgPSBzdGFydC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0XG4gICAgICAgICAgICAgICAgICAvKnlpZWxkKi9cbiAgICAgICAgICAgICAgICAgICwgdGhpcy51cGRhdGVMYXlvdXRNZXRob2QobGF5b3V0TWV0aG9kLCBjdXJyZW50Q2ZnKV07XG5cbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gWzJcbiAgICAgICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgICAgICwgX2Euc2VudCgpXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhcnQudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAobGF5b3V0Q2ZnLm9uQWxsTGF5b3V0RW5kKSBsYXlvdXRDZmcub25BbGxMYXlvdXRFbmQoKTtcbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignbGF5b3V0IGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5hZGp1c3RQaXBlc0JveCA9IGZ1bmN0aW9uIChkYXRhLCBhZGp1c3QpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzO1xuXG4gICAgICBpZiAoIShub2RlcyA9PT0gbnVsbCB8fCBub2RlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZXMubGVuZ3RoKSkge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghTEFZT1VUX1BJUEVTX0FESlVTVF9OQU1FUy5pbmNsdWRlcyhhZGp1c3QpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIlRoZSBhZGp1c3QgdHlwZSBcIi5jb25jYXQoYWRqdXN0LCBcIiBpcyBub3Qgc3VwcG9ydGVkIHlldCwgcGxlYXNlIGFzc2lnbiBpdCB3aXRoICdmb3JjZScsICdncmlkJywgb3IgJ2NpcmN1bGFyJy5cIikpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBsYXlvdXRDZmcgPSB7XG4gICAgICAgIGNlbnRlcjogX3RoaXMubGF5b3V0Q2ZnLmNlbnRlcixcbiAgICAgICAgbm9kZVNpemU6IGZ1bmN0aW9uIG5vZGVTaXplKGQpIHtcbiAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoZC5oZWlnaHQsIGQud2lkdGgpO1xuICAgICAgICB9LFxuICAgICAgICBwcmV2ZW50T3ZlcmxhcDogdHJ1ZSxcbiAgICAgICAgb25MYXlvdXRFbmQ6IGZ1bmN0aW9uIG9uTGF5b3V0RW5kKCkge31cbiAgICAgIH07IC8vIOiuoeeul+WHuuWkp+WNleWFg1xuXG4gICAgICB2YXIgX2EgPSBfdGhpcy5nZXRMYXlvdXRCQm94KG5vZGVzKSxcbiAgICAgICAgICBncm91cE5vZGVzID0gX2EuZ3JvdXBOb2RlcyxcbiAgICAgICAgICBsYXlvdXROb2RlcyA9IF9hLmxheW91dE5vZGVzO1xuXG4gICAgICB2YXIgcHJlTm9kZXMgPSBjbG9uZShsYXlvdXROb2Rlcyk7IC8vIOagueaNruWkp+WNleWFg+WdkOagh+eahOWPmOWMlu+8jOiwg+aVtOi/memHjOmdouavj+S4quWwj+WNleWFg25vZGVzXG5cbiAgICAgIGxheW91dENmZy5vbkxheW91dEVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGF5b3V0Tm9kZXMgPT09IG51bGwgfHwgbGF5b3V0Tm9kZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheW91dE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSwgaW5kZXgpIHtcbiAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcblxuICAgICAgICAgIHZhciBkeCA9IGVsZS54IC0gKChfYSA9IHByZU5vZGVzW2luZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLngpO1xuICAgICAgICAgIHZhciBkeSA9IGVsZS55IC0gKChfYiA9IHByZU5vZGVzW2luZGV4XSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnkpO1xuICAgICAgICAgIChfYyA9IGdyb3VwTm9kZXNbaW5kZXhdKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgbi54ICs9IGR4O1xuICAgICAgICAgICAgbi55ICs9IGR5O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfTtcblxuICAgICAgdmFyIGxheW91dE1ldGhvZCA9IG5ldyBMYXlvdXRbYWRqdXN0XShsYXlvdXRDZmcpO1xuICAgICAgbGF5b3V0TWV0aG9kLmxheW91dCh7XG4gICAgICAgIG5vZGVzOiBsYXlvdXROb2Rlc1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuaGFzR1BVVmVyc2lvbiA9IGZ1bmN0aW9uIChsYXlvdXROYW1lKSB7XG4gICAgcmV0dXJuIEdQVV9MQVlPVVRfTkFNRVMuaW5jbHVkZXMobGF5b3V0TmFtZSk7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmRlc3RvcnlMYXlvdXRNZXRob2RzKCk7XG4gICAgdmFyIHdvcmtlciA9IHRoaXMud29ya2VyO1xuXG4gICAgaWYgKHdvcmtlcikge1xuICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgdGhpcy53b3JrZXIgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB0aGlzLmdyYXBoLnNldCgnbGF5b3V0JywgdW5kZWZpbmVkKTtcbiAgICB0aGlzLmxheW91dENmZyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmxheW91dFR5cGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXlvdXRNZXRob2RzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZ3JhcGggPSBudWxsO1xuICB9O1xuXG4gIHJldHVybiBMYXlvdXRDb250cm9sbGVyO1xufShBYnN0cmFjdExheW91dCk7XG5cbmV4cG9ydCBkZWZhdWx0IExheW91dENvbnRyb2xsZXI7XG5cbmZ1bmN0aW9uIHVwZGF0ZUxheW91dFBvc2l0aW9uKGRhdGEsIGxheW91dERhdGEpIHtcbiAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcztcbiAgdmFyIGxheW91dE5vZGVzID0gbGF5b3V0RGF0YS5ub2RlcztcbiAgdmFyIG5vZGVMZW5ndGggPSBub2Rlcy5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgIG5vZGUueCA9IGxheW91dE5vZGVzW2ldLng7XG4gICAgbm9kZS55ID0gbGF5b3V0Tm9kZXNbaV0ueTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaWx0ZXJPYmplY3QoY29sbGVjdGlvbiwgY2FsbGJhY2spIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuXG4gIGlmIChjb2xsZWN0aW9uICYmIF90eXBlb2YoY29sbGVjdGlvbikgPT09ICdvYmplY3QnKSB7XG4gICAgT2JqZWN0LmtleXMoY29sbGVjdGlvbikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAoY29sbGVjdGlvbi5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGNhbGxiYWNrKGNvbGxlY3Rpb25ba2V5XSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBjb2xsZWN0aW9uW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBjb2xsZWN0aW9uO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVHUFVXb3JrZXJMYXlvdXRQb3NpdGlvbihkYXRhLCBsYXlvdXREYXRhKSB7XG4gIHZhciBub2RlcyA9IGRhdGEubm9kZXM7XG4gIHZhciB2ZXJ0ZXhFZGdlRGF0YSA9IGxheW91dERhdGEudmVydGV4RWRnZURhdGE7XG4gIHZhciBub2RlTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgeCA9IHZlcnRleEVkZ2VEYXRhWzQgKiBpXTtcbiAgICB2YXIgeSA9IHZlcnRleEVkZ2VEYXRhWzQgKiBpICsgMV07XG4gICAgbm9kZS54ID0geDtcbiAgICBub2RlLnkgPSB5O1xuICB9XG59XG5cbmZ1bmN0aW9uIGFkZExheW91dE9yZGVyKGRhdGEsIG9yZGVyKSB7XG4gIHZhciBfYTtcblxuICBpZiAoISgoX2EgPSBkYXRhID09PSBudWxsIHx8IGRhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRhdGEubm9kZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcztcbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIG5vZGUubGF5b3V0T3JkZXIgPSBvcmRlcjtcbiAgfSk7XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/graph/controller/layout.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/graph/graph.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/graph/graph.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-canvas */ \"./node_modules/@antv/g-canvas/esm/index.js\");\n/* harmony import */ var _antv_g_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-svg */ \"./node_modules/@antv/g-svg/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../global */ \"./node_modules/@antv/g6-pc/es/global.js\");\n/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./controller */ \"./node_modules/@antv/g6-pc/es/graph/controller/index.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n\n\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__[\"ext\"].transform;\nvar SVG = 'svg';\n\nvar Graph =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Graph, _super);\n\n function Graph(cfg) {\n var _this = _super.call(this, cfg) || this;\n\n var defaultNode = _this.get('defaultNode');\n\n if (!defaultNode) {\n _this.set('defaultNode', {\n type: 'circle'\n });\n }\n\n if (!defaultNode.type) {\n defaultNode.type = 'circle';\n\n _this.set('defaultNode', defaultNode);\n }\n\n _this.destroyed = false;\n return _this;\n }\n\n Graph.prototype.initLayoutController = function () {\n var layoutController = new _controller__WEBPACK_IMPORTED_MODULE_7__[\"LayoutController\"](this);\n this.set({\n layoutController: layoutController\n });\n };\n\n Graph.prototype.initEventController = function () {\n var eventController = new _controller__WEBPACK_IMPORTED_MODULE_7__[\"EventController\"](this);\n this.set({\n eventController: eventController\n });\n };\n\n Graph.prototype.initCanvas = function () {\n var container = this.get('container');\n\n if (typeof container === 'string') {\n container = document.getElementById(container);\n this.set('container', container);\n }\n\n if (!container) {\n throw new Error('invalid container');\n }\n\n var clientWidth = container.clientWidth,\n clientHeight = container.clientHeight;\n var width = this.get('width') || clientWidth;\n var height = this.get('height') || clientHeight;\n\n if (!this.get('width') && !this.get('height')) {\n this.set('width', clientWidth);\n this.set('height', clientHeight);\n }\n\n var renderer = this.get('renderer');\n var canvas;\n\n if (renderer === SVG) {\n canvas = new _antv_g_svg__WEBPACK_IMPORTED_MODULE_2__[\"Canvas\"]({\n container: container,\n width: width,\n height: height\n });\n } else {\n var canvasCfg = {\n container: container,\n width: width,\n height: height\n };\n var pixelRatio = this.get('pixelRatio');\n\n if (pixelRatio) {\n canvasCfg.pixelRatio = pixelRatio;\n }\n\n canvas = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"](canvasCfg);\n }\n\n this.set('canvas', canvas);\n };\n\n Graph.prototype.initPlugins = function () {\n var self = this;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"each\"])(self.get('plugins'), function (plugin) {\n if (!plugin.destroyed && plugin.initPlugin) {\n plugin.initPlugin(self);\n }\n });\n };\n /**\n * 增加图片下载水印功能\n */\n\n\n Graph.prototype.downloadImageWatermark = function (watermarker, context, width, height) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var watermarkStr, watermarkbase64, img;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n watermarkStr = watermarker.style.backgroundImage;\n watermarkbase64 = watermarkStr.slice(5, watermarkStr.length - 2);\n img = new Image();\n img.src = watermarkbase64;\n return [4\n /*yield*/\n , new Promise(function (resolve) {\n img.onload = function () {\n var pat = context.createPattern(img, \"repeat\");\n context.rect(0, 0, width, height);\n context.fillStyle = pat;\n context.fill();\n resolve('');\n };\n })];\n\n case 1:\n _a.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n /**\n * 用于生成图片 (异步callback)\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {string} backgroundColor 图片背景色\n * @return {string} 图片 dataURL\n */\n\n\n Graph.prototype.asyncToDataUrl = function (type, backgroundColor, callback, widths, heights, vCanvasEl) {\n var _this = this;\n\n var watermarker = document.querySelector('.g6-graph-watermarker');\n var canvas = this.get('canvas');\n var renderer = canvas.getRenderer();\n var canvasDom = vCanvasEl || canvas.get('el');\n var dataURL = '';\n if (!type) type = 'image/png';\n setTimeout(function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var cloneNode, svgDocType, svgDoc, svgData, imageData, context, width, height, compositeOperation, pixelRatio;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(renderer === 'svg')) return [3\n /*break*/\n , 1];\n cloneNode = canvasDom.cloneNode(true);\n svgDocType = document.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');\n svgDoc = document.implementation.createDocument('http://www.w3.org/2000/svg', 'svg', svgDocType);\n svgDoc.replaceChild(cloneNode, svgDoc.documentElement);\n svgData = new XMLSerializer().serializeToString(svgDoc);\n dataURL = \"data:image/svg+xml;charset=utf8,\".concat(encodeURIComponent(svgData));\n return [3\n /*break*/\n , 4];\n\n case 1:\n imageData = void 0;\n context = canvasDom.getContext('2d');\n width = widths || this.get('width');\n height = heights || this.get('height');\n compositeOperation = void 0;\n if (!watermarker) return [3\n /*break*/\n , 3];\n return [4\n /*yield*/\n , this.downloadImageWatermark(watermarker, context, width, height)];\n\n case 2:\n _a.sent();\n\n _a.label = 3;\n\n case 3:\n if (backgroundColor) {\n pixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio : 1;\n\n try {\n imageData = context.getImageData(0, 0, width * pixelRatio, height * pixelRatio);\n compositeOperation = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-over';\n context.fillStyle = backgroundColor;\n context.fillRect(0, 0, width, height);\n } catch (error) {\n console.error('Download image failed. Out of memory at ImageData creation');\n }\n }\n\n dataURL = canvasDom.toDataURL(type);\n\n if (backgroundColor) {\n context.clearRect(0, 0, width, height);\n context.putImageData(imageData, 0, 0);\n context.globalCompositeOperation = compositeOperation;\n }\n\n _a.label = 4;\n\n case 4:\n if (callback) callback(dataURL);\n return [2\n /*return*/\n ];\n }\n });\n });\n }, 16);\n };\n /**\n * 返回可见区域的图的 dataUrl,用于生成图片\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {string} backgroundColor 图片背景色\n * @return {string} 图片 dataURL\n */\n\n\n Graph.prototype.toDataURL = function (type, backgroundColor) {\n var canvas = this.get('canvas');\n var renderer = canvas.getRenderer();\n var canvasDom = canvas.get('el');\n if (!type) type = 'image/png';\n var dataURL = '';\n\n if (renderer === 'svg') {\n var cloneNode = canvasDom.cloneNode(true);\n var svgDocType = document.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');\n var svgDoc = document.implementation.createDocument('http://www.w3.org/2000/svg', 'svg', svgDocType);\n svgDoc.replaceChild(cloneNode, svgDoc.documentElement);\n var svgData = new XMLSerializer().serializeToString(svgDoc);\n dataURL = \"data:image/svg+xml;charset=utf8,\".concat(encodeURIComponent(svgData));\n } else {\n var imageData = void 0;\n var context = canvasDom.getContext('2d');\n var width = this.get('width');\n var height = this.get('height');\n var compositeOperation = void 0;\n\n if (backgroundColor) {\n var pixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio : 1;\n\n try {\n imageData = context.getImageData(0, 0, width * pixelRatio, height * pixelRatio);\n compositeOperation = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-over';\n context.fillStyle = backgroundColor;\n context.fillRect(0, 0, width, height);\n } catch (error) {\n console.error('Download image failed. Out of memory at ImageData creation');\n }\n }\n\n dataURL = canvasDom.toDataURL(type);\n\n if (backgroundColor) {\n context.clearRect(0, 0, width, height);\n context.putImageData(imageData, 0, 0);\n context.globalCompositeOperation = compositeOperation;\n }\n }\n\n return dataURL;\n };\n /**\n * 返回整个图(包括超出可见区域的部分)的 dataUrl,用于生成图片\n * @param {Function} callback 异步生成 dataUrl 完成后的回调函数,在这里处理生成的 dataUrl 字符串\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {Object} imageConfig 图片配置项,包括背景色和上下左右的 padding\n */\n\n\n Graph.prototype.toFullDataURL = function (callback, type, imageConfig) {\n var bbox = this.get('group').getCanvasBBox();\n var height = bbox.height;\n var width = bbox.width;\n var renderer = this.get('renderer');\n var vContainerDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_8__[\"createDom\"])('');\n var backgroundColor = imageConfig ? imageConfig.backgroundColor : undefined;\n var padding = imageConfig ? imageConfig.padding : undefined;\n if (!padding) padding = [0, 0, 0, 0];else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var vHeight = height + padding[0] + padding[2];\n var vWidth = width + padding[1] + padding[3];\n var canvasOptions = {\n container: vContainerDOM,\n height: vHeight,\n width: vWidth,\n quickHit: true\n };\n var vCanvas = renderer === 'svg' ? new _antv_g_svg__WEBPACK_IMPORTED_MODULE_2__[\"Canvas\"](canvasOptions) : new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"](canvasOptions);\n var group = this.get('group');\n var vGroup = group.clone();\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"clone\"])(vGroup.getMatrix());\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var centerX = (bbox.maxX + bbox.minX) / 2;\n var centerY = (bbox.maxY + bbox.minY) / 2;\n matrix = transform(matrix, [['t', -centerX, -centerY], ['t', width / 2 + padding[3], height / 2 + padding[0]]]);\n vGroup.resetMatrix();\n vGroup.setMatrix(matrix);\n vCanvas.add(vGroup);\n var vCanvasEl = vCanvas.get('el');\n var dataURL = '';\n if (!type) type = 'image/png';\n setTimeout(function () {\n if (renderer === 'svg') {\n var cloneNode = vCanvasEl.cloneNode(true);\n var svgDocType = document.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');\n var svgDoc = document.implementation.createDocument('http://www.w3.org/2000/svg', 'svg', svgDocType);\n svgDoc.replaceChild(cloneNode, svgDoc.documentElement);\n var svgData = new XMLSerializer().serializeToString(svgDoc);\n dataURL = \"data:image/svg+xml;charset=utf8,\".concat(encodeURIComponent(svgData));\n } else {\n var imageData = void 0;\n var context = vCanvasEl.getContext('2d');\n var compositeOperation = void 0;\n\n if (backgroundColor) {\n var pixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio : 1;\n\n try {\n imageData = context.getImageData(0, 0, vWidth * pixelRatio, vHeight * pixelRatio);\n compositeOperation = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-over';\n context.fillStyle = backgroundColor;\n context.fillRect(0, 0, vWidth, vHeight);\n } catch (error) {\n console.error('Download image failed. Out of memory at ImageData creation');\n }\n }\n\n dataURL = vCanvasEl.toDataURL(type);\n\n if (backgroundColor) {\n context.clearRect(0, 0, vWidth, vHeight);\n context.putImageData(imageData, 0, 0);\n context.globalCompositeOperation = compositeOperation;\n }\n }\n\n if (callback) callback(dataURL);\n }, 16);\n };\n /**\n * 导出包含全图的图片\n * @param {String} name 图片的名称\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {Object} imageConfig 图片配置项,包括背景色和上下左右的 padding\n */\n\n\n Graph.prototype.downloadFullImage = function (name, type, imageConfig) {\n var _this = this;\n\n var bbox = this.get('group').getCanvasBBox();\n var height = bbox.height;\n var width = bbox.width;\n var renderer = this.get('renderer');\n var vContainerDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_8__[\"createDom\"])('');\n var watermarker = document.querySelector('.g6-graph-watermarker');\n var backgroundColor = imageConfig ? imageConfig.backgroundColor : undefined;\n var padding = imageConfig ? imageConfig.padding : undefined;\n if (!padding) padding = [0, 0, 0, 0];else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var vHeight = height + padding[0] + padding[2];\n var vWidth = width + padding[1] + padding[3];\n\n if (watermarker) {\n var _a = this.get('graphWaterMarker').cfg || {},\n wmWidth = _a.width,\n wmHeight = _a.height;\n\n vHeight = Math.ceil(vHeight / wmHeight) * wmHeight;\n vWidth = Math.ceil(vWidth / wmWidth) * wmWidth;\n }\n\n var canvasOptions = {\n container: vContainerDOM,\n height: vHeight,\n width: vWidth\n };\n var vCanvas = renderer === 'svg' ? new _antv_g_svg__WEBPACK_IMPORTED_MODULE_2__[\"Canvas\"](canvasOptions) : new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"](canvasOptions);\n var group = this.get('group');\n var vGroup = group.clone();\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"clone\"])(vGroup.getMatrix());\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var centerX = (bbox.maxX + bbox.minX) / 2;\n var centerY = (bbox.maxY + bbox.minY) / 2;\n matrix = transform(matrix, [['t', -centerX, -centerY], ['t', width / 2 + padding[3], height / 2 + padding[0]]]);\n vGroup.resetMatrix();\n vGroup.setMatrix(matrix);\n vCanvas.add(vGroup);\n var vCanvasEl = vCanvas.get('el');\n if (!type) type = 'image/png';\n this.asyncToDataUrl(type, backgroundColor, function (dataURL) {\n var link = document.createElement('a');\n var fileName = (name || 'graph') + (renderer === 'svg' ? '.svg' : \".\".concat(type.split('/')[1]));\n\n _this.dataURLToImage(dataURL, renderer, link, fileName);\n\n var e = document.createEvent('MouseEvents');\n e.initEvent('click', false, false);\n link.dispatchEvent(e);\n }, vWidth, vHeight, vCanvasEl);\n };\n /**\n * 画布导出图片,图片仅包含画布可见区域部分内容\n * @param {String} name 图片的名称\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {string} backgroundColor 图片背景色\n */\n\n\n Graph.prototype.downloadImage = function (name, type, backgroundColor) {\n var _this = this;\n\n var self = this;\n\n if (self.isAnimating()) {\n self.stopAnimate();\n }\n\n var canvas = self.get('canvas');\n var renderer = canvas.getRenderer();\n if (!type) type = 'image/png';\n var fileName = (name || 'graph') + (renderer === 'svg' ? '.svg' : type.split('/')[1]);\n var link = document.createElement('a');\n self.asyncToDataUrl(type, backgroundColor, function (dataURL) {\n _this.dataURLToImage(dataURL, renderer, link, fileName);\n\n var e = document.createEvent('MouseEvents');\n e.initEvent('click', false, false);\n link.dispatchEvent(e);\n });\n };\n\n Graph.prototype.dataURLToImage = function (dataURL, renderer, link, fileName) {\n if (!dataURL || dataURL === 'data:') {\n console.error('Download image failed. The graph is too large or there is invalid attribute values in graph items');\n return;\n }\n\n if (typeof window !== 'undefined') {\n if (window.Blob && window.URL && renderer !== 'svg') {\n var arr = dataURL.split(',');\n var mime = '';\n\n if (arr && arr.length > 0) {\n var match = arr[0].match(/:(.*?);/); // eslint-disable-next-line prefer-destructuring\n\n if (match && match.length >= 2) mime = match[1];\n }\n\n var bstr = atob(arr[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n\n var blobObj_1 = new Blob([u8arr], {\n type: mime\n });\n\n if (window.navigator.msSaveBlob) {\n window.navigator.msSaveBlob(blobObj_1, fileName);\n } else {\n link.addEventListener('click', function () {\n link.download = fileName;\n link.href = window.URL.createObjectURL(blobObj_1);\n });\n }\n } else {\n link.addEventListener('click', function () {\n link.download = fileName;\n link.href = dataURL;\n });\n }\n }\n };\n /**\n * 添加插件\n * @param {object} plugin 插件实例\n */\n\n\n Graph.prototype.addPlugin = function (plugin) {\n var self = this;\n\n if (plugin.destroyed) {\n return;\n }\n\n self.get('plugins').push(plugin);\n plugin.initPlugin(self);\n };\n /**\n * 添加插件\n * @param {object} plugin 插件实例\n */\n\n\n Graph.prototype.removePlugin = function (plugin) {\n var plugins = this.get('plugins');\n var index = plugins.indexOf(plugin);\n\n if (index >= 0) {\n plugin.destroyPlugin();\n plugins.splice(index, 1);\n }\n };\n /**\n * 设置图片水印\n * @param {string} imgURL 图片水印的url地址\n * @param {WaterMarkerConfig} config 文本水印的配置项\n */\n\n\n Graph.prototype.setImageWaterMarker = function (imgURL, config) {\n if (imgURL === void 0) {\n imgURL = _global__WEBPACK_IMPORTED_MODULE_6__[\"default\"].waterMarkerImage;\n }\n\n var container = this.get('container');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n if (!container.style.position) {\n container.style.position = 'relative';\n }\n\n var canvas = this.get('graphWaterMarker');\n var waterMarkerConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"deepMix\"])({}, _global__WEBPACK_IMPORTED_MODULE_6__[\"default\"].imageWaterMarkerConfig, config);\n var width = waterMarkerConfig.width,\n height = waterMarkerConfig.height,\n compatible = waterMarkerConfig.compatible,\n image = waterMarkerConfig.image;\n\n if (!canvas) {\n var canvasCfg = {\n container: container,\n width: width,\n height: height,\n capture: false\n };\n var pixelRatio = this.get('pixelRatio');\n\n if (pixelRatio) {\n canvasCfg.pixelRatio = pixelRatio;\n }\n\n canvas = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"](canvasCfg);\n this.set('graphWaterMarker', canvas);\n }\n\n canvas.get('el').style.display = 'none';\n var ctx = canvas.get('context');\n var rotate = image.rotate,\n x = image.x,\n y = image.y; // 旋转20度\n\n ctx.rotate(-rotate * Math.PI / 180);\n var img = new Image();\n img.crossOrigin = 'anonymous';\n img.src = imgURL;\n\n img.onload = function () {\n ctx.drawImage(img, x, y, image.width, image.height); // 恢复旋转角度\n\n ctx.rotate(rotate * Math.PI / 180); // 默认按照现代浏览器处理\n\n if (!compatible) {\n var box = document.querySelector('.g6-graph-watermarker');\n\n if (!box) {\n box = document.createElement('div');\n box.className = 'g6-graph-watermarker';\n }\n\n box.className = 'g6-graph-watermarker';\n\n if (!canvas.destroyed) {\n box.style.cssText = \"background-image: url(\".concat(canvas.get('el').toDataURL('image/png'), \");background-repeat:repeat;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;z-index:-1;\");\n container.appendChild(box);\n }\n } else {\n // 当需要兼容不支持 pointer-events属性的浏览器时,将 compatible 设置为 true\n container.style.cssText = \"background-image: url(\".concat(canvas.get('el').toDataURL('image/png'), \");background-repeat:repeat;\");\n }\n };\n };\n /**\n * 设置文本水印\n * @param {string[]} texts 水印的文本内容\n * @param {WaterMarkerConfig} config 文本水印的配置项\n */\n\n\n Graph.prototype.setTextWaterMarker = function (texts, config) {\n var container = this.get('container');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n if (!container.style.position) {\n container.style.position = 'relative';\n }\n\n var canvas = this.get('graphWaterMarker');\n var waterMarkerConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"deepMix\"])({}, _global__WEBPACK_IMPORTED_MODULE_6__[\"default\"].textWaterMarkerConfig, config);\n var width = waterMarkerConfig.width,\n height = waterMarkerConfig.height,\n compatible = waterMarkerConfig.compatible,\n text = waterMarkerConfig.text;\n\n if (!canvas) {\n var canvasCfg = {\n container: container,\n width: width,\n height: height,\n capture: false\n };\n var pixelRatio = this.get('pixelRatio');\n\n if (pixelRatio) {\n canvasCfg.pixelRatio = pixelRatio;\n }\n\n canvas = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"](canvasCfg);\n this.set('graphWaterMarker', canvas);\n }\n\n canvas.get('el').style.display = 'none';\n var ctx = canvas.get('context');\n var rotate = text.rotate,\n fill = text.fill,\n fontFamily = text.fontFamily,\n fontSize = text.fontSize,\n baseline = text.baseline,\n x = text.x,\n y = text.y,\n lineHeight = text.lineHeight; // 旋转20度\n\n ctx.rotate(-rotate * Math.PI / 180); // 设置文字样式\n\n ctx.font = \"\".concat(fontSize, \"px \").concat(fontFamily); // 设置文字颜色\n\n ctx.fillStyle = fill;\n ctx.textBaseline = baseline;\n\n for (var i = texts.length - 1; i >= 0; i--) {\n // 将文字绘制到画布\n ctx.fillText(texts[i], x, y + i * lineHeight);\n } // 恢复旋转角度\n\n\n ctx.rotate(rotate * Math.PI / 180); // 默认按照现代浏览器处理\n\n if (!compatible) {\n var box = document.querySelector('.g6-graph-watermarker');\n\n if (!box) {\n box = document.createElement('div');\n box.className = 'g6-graph-watermarker';\n }\n\n box.style.cssText = \"background-image: url(\".concat(canvas.get('el').toDataURL('image/png'), \");background-repeat:repeat;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;z-index:99;\");\n container.appendChild(box);\n } else {\n // 当需要兼容不支持 pointer-events属性的浏览器时,将 compatible 设置为 true\n container.style.cssText = \"background-image: url(\".concat(canvas.get('el').toDataURL('image/png'), \");background-repeat:repeat;\");\n }\n };\n /**\n * 销毁画布\n */\n\n\n Graph.prototype.destroy = function () {\n var _a, _b, _c, _d;\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"each\"])(this.get('plugins'), function (plugin) {\n plugin.destroyPlugin();\n }); // destroy tooltip doms, removed when upgrade G6 4.0\n\n var tooltipDOMs = this.get('tooltips');\n\n if (tooltipDOMs) {\n for (var i = 0; i < tooltipDOMs.length; i++) {\n var container = tooltipDOMs[i];\n if (!container) continue;\n var parent_1 = container.parentElement;\n if (!parent_1) continue;\n parent_1.removeChild(container);\n }\n }\n\n (_a = this.get('eventController')) === null || _a === void 0 ? void 0 : _a.destroy();\n (_b = this.get('layoutController')) === null || _b === void 0 ? void 0 : _b.destroy(); // this.get('eventController').destroy();\n // this.get('itemController').destroy();\n // this.get('modeController').destroy();\n // this.get('viewController').destroy();\n // this.get('stateController').destroy();\n // this.get('canvas').destroy();\n\n (_c = this.get('graphWaterMarker')) === null || _c === void 0 ? void 0 : _c.destroy();\n (_d = document.querySelector('.g6-graph-watermarker')) === null || _d === void 0 ? void 0 : _d.remove();\n\n _super.prototype.destroy.call(this);\n };\n\n return Graph;\n}(_antv_g6_core__WEBPACK_IMPORTED_MODULE_5__[\"AbstractGraph\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Graph);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZ3JhcGgvZ3JhcGguanM/ZGJhMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRDtBQUNQO0FBQ0E7QUFDWDtBQUM4QjtBQUN4QjtBQUNmO0FBQ2tDO0FBQ3RCO0FBQzNDLGdCQUFnQixxREFBRztBQUNuQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFTOztBQUVYO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0IsNERBQWdCO0FBQy9DO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSw4QkFBOEIsMkRBQWU7QUFDN0M7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGtEQUFVO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIscURBQU87QUFDMUI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxXQUFXLHVEQUFTO0FBQ3BCO0FBQ0EsYUFBYSx5REFBVztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFTO0FBQ3RCO0FBQ0EsZUFBZSx5REFBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0VBQVM7QUFDakM7QUFDQTtBQUNBLHlDQUF5QyxTQUFTLDJEQUFRO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsa0RBQVUsc0JBQXNCLHFEQUFPO0FBQ2xGO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QyxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0VBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLFNBQVMsMkRBQVE7QUFDMUQ7QUFDQTs7QUFFQTtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLGtEQUFVLHNCQUFzQixxREFBTztBQUNsRjtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDLEdBQUc7O0FBRTlDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsa0JBQWtCO0FBQy9COzs7QUFHQTtBQUNBO0FBQ0EsZUFBZSwrQ0FBTTtBQUNyQjs7QUFFQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLDBEQUFPLEdBQUcsRUFBRSwrQ0FBTTtBQUM5QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIscURBQU87QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwREFBMEQ7O0FBRTFELHlDQUF5Qzs7QUFFekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDBHQUEwRyx5QkFBeUIsa0JBQWtCLE1BQU0sU0FBUyxPQUFPLFFBQVEsb0JBQW9CLFdBQVc7QUFDbE47QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLDhHQUE4Ryx5QkFBeUI7QUFDdkk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsU0FBUztBQUN0QixhQUFhLGtCQUFrQjtBQUMvQjs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLDBEQUFPLEdBQUcsRUFBRSwrQ0FBTTtBQUM5QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIscURBQU87QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7O0FBRXJDLHdDQUF3Qzs7QUFFeEMsNkRBQTZEOztBQUU3RDtBQUNBOztBQUVBLGtDQUFrQyxRQUFRO0FBQzFDO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTCx1Q0FBdUM7O0FBRXZDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0dBQXNHLHlCQUF5QixrQkFBa0IsTUFBTSxTQUFTLE9BQU8sUUFBUSxvQkFBb0IsV0FBVztBQUM5TTtBQUNBLEtBQUs7QUFDTDtBQUNBLDRHQUE0Ryx5QkFBeUI7QUFDckk7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLLEVBQUU7O0FBRVA7O0FBRUE7QUFDQSxxQkFBcUIsd0JBQXdCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEZBQTBGO0FBQzFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFhOztBQUVBLG9FQUFLIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2dyYXBoL2dyYXBoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hd2FpdGVyLCBfX2V4dGVuZHMsIF9fZ2VuZXJhdG9yIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBDYW52YXMgYXMgR0NhbnZhcyB9IGZyb20gJ0BhbnR2L2ctY2FudmFzJztcbmltcG9ydCB7IENhbnZhcyBhcyBHU1ZHQ2FudmFzIH0gZnJvbSAnQGFudHYvZy1zdmcnO1xuaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IHsgY2xvbmUsIGRlZXBNaXgsIGVhY2gsIGlzU3RyaW5nLCBpc051bWJlciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgQWJzdHJhY3RHcmFwaCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xuaW1wb3J0IHsgTGF5b3V0Q29udHJvbGxlciwgRXZlbnRDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyJztcbmltcG9ydCB7IGNyZWF0ZURvbSB9IGZyb20gJ0BhbnR2L2RvbS11dGlsJztcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xudmFyIFNWRyA9ICdzdmcnO1xuXG52YXIgR3JhcGggPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoR3JhcGgsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gR3JhcGgoY2ZnKSB7XG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgY2ZnKSB8fCB0aGlzO1xuXG4gICAgdmFyIGRlZmF1bHROb2RlID0gX3RoaXMuZ2V0KCdkZWZhdWx0Tm9kZScpO1xuXG4gICAgaWYgKCFkZWZhdWx0Tm9kZSkge1xuICAgICAgX3RoaXMuc2V0KCdkZWZhdWx0Tm9kZScsIHtcbiAgICAgICAgdHlwZTogJ2NpcmNsZSdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghZGVmYXVsdE5vZGUudHlwZSkge1xuICAgICAgZGVmYXVsdE5vZGUudHlwZSA9ICdjaXJjbGUnO1xuXG4gICAgICBfdGhpcy5zZXQoJ2RlZmF1bHROb2RlJywgZGVmYXVsdE5vZGUpO1xuICAgIH1cblxuICAgIF90aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIEdyYXBoLnByb3RvdHlwZS5pbml0TGF5b3V0Q29udHJvbGxlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGF5b3V0Q29udHJvbGxlciA9IG5ldyBMYXlvdXRDb250cm9sbGVyKHRoaXMpO1xuICAgIHRoaXMuc2V0KHtcbiAgICAgIGxheW91dENvbnRyb2xsZXI6IGxheW91dENvbnRyb2xsZXJcbiAgICB9KTtcbiAgfTtcblxuICBHcmFwaC5wcm90b3R5cGUuaW5pdEV2ZW50Q29udHJvbGxlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXZlbnRDb250cm9sbGVyID0gbmV3IEV2ZW50Q29udHJvbGxlcih0aGlzKTtcbiAgICB0aGlzLnNldCh7XG4gICAgICBldmVudENvbnRyb2xsZXI6IGV2ZW50Q29udHJvbGxlclxuICAgIH0pO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5pbml0Q2FudmFzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG5cbiAgICBpZiAodHlwZW9mIGNvbnRhaW5lciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcik7XG4gICAgICB0aGlzLnNldCgnY29udGFpbmVyJywgY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGNvbnRhaW5lcicpO1xuICAgIH1cblxuICAgIHZhciBjbGllbnRXaWR0aCA9IGNvbnRhaW5lci5jbGllbnRXaWR0aCxcbiAgICAgICAgY2xpZW50SGVpZ2h0ID0gY29udGFpbmVyLmNsaWVudEhlaWdodDtcbiAgICB2YXIgd2lkdGggPSB0aGlzLmdldCgnd2lkdGgnKSB8fCBjbGllbnRXaWR0aDtcbiAgICB2YXIgaGVpZ2h0ID0gdGhpcy5nZXQoJ2hlaWdodCcpIHx8IGNsaWVudEhlaWdodDtcblxuICAgIGlmICghdGhpcy5nZXQoJ3dpZHRoJykgJiYgIXRoaXMuZ2V0KCdoZWlnaHQnKSkge1xuICAgICAgdGhpcy5zZXQoJ3dpZHRoJywgY2xpZW50V2lkdGgpO1xuICAgICAgdGhpcy5zZXQoJ2hlaWdodCcsIGNsaWVudEhlaWdodCk7XG4gICAgfVxuXG4gICAgdmFyIHJlbmRlcmVyID0gdGhpcy5nZXQoJ3JlbmRlcmVyJyk7XG4gICAgdmFyIGNhbnZhcztcblxuICAgIGlmIChyZW5kZXJlciA9PT0gU1ZHKSB7XG4gICAgICBjYW52YXMgPSBuZXcgR1NWR0NhbnZhcyh7XG4gICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNhbnZhc0NmZyA9IHtcbiAgICAgICAgY29udGFpbmVyOiBjb250YWluZXIsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgIH07XG4gICAgICB2YXIgcGl4ZWxSYXRpbyA9IHRoaXMuZ2V0KCdwaXhlbFJhdGlvJyk7XG5cbiAgICAgIGlmIChwaXhlbFJhdGlvKSB7XG4gICAgICAgIGNhbnZhc0NmZy5waXhlbFJhdGlvID0gcGl4ZWxSYXRpbztcbiAgICAgIH1cblxuICAgICAgY2FudmFzID0gbmV3IEdDYW52YXMoY2FudmFzQ2ZnKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldCgnY2FudmFzJywgY2FudmFzKTtcbiAgfTtcblxuICBHcmFwaC5wcm90b3R5cGUuaW5pdFBsdWdpbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGVhY2goc2VsZi5nZXQoJ3BsdWdpbnMnKSwgZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgaWYgKCFwbHVnaW4uZGVzdHJveWVkICYmIHBsdWdpbi5pbml0UGx1Z2luKSB7XG4gICAgICAgIHBsdWdpbi5pbml0UGx1Z2luKHNlbGYpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgKiDlop7liqDlm77niYfkuIvovb3msLTljbDlip/og71cbiAgKi9cblxuXG4gIEdyYXBoLnByb3RvdHlwZS5kb3dubG9hZEltYWdlV2F0ZXJtYXJrID0gZnVuY3Rpb24gKHdhdGVybWFya2VyLCBjb250ZXh0LCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHdhdGVybWFya1N0ciwgd2F0ZXJtYXJrYmFzZTY0LCBpbWc7XG4gICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICB3YXRlcm1hcmtTdHIgPSB3YXRlcm1hcmtlci5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U7XG4gICAgICAgICAgICB3YXRlcm1hcmtiYXNlNjQgPSB3YXRlcm1hcmtTdHIuc2xpY2UoNSwgd2F0ZXJtYXJrU3RyLmxlbmd0aCAtIDIpO1xuICAgICAgICAgICAgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWcuc3JjID0gd2F0ZXJtYXJrYmFzZTY0O1xuICAgICAgICAgICAgcmV0dXJuIFs0XG4gICAgICAgICAgICAvKnlpZWxkKi9cbiAgICAgICAgICAgICwgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgcGF0ID0gY29udGV4dC5jcmVhdGVQYXR0ZXJuKGltZywgXCJyZXBlYXRcIik7XG4gICAgICAgICAgICAgICAgY29udGV4dC5yZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gcGF0O1xuICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoJycpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSldO1xuXG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgX2Euc2VudCgpO1xuXG4gICAgICAgICAgICByZXR1cm4gWzJcbiAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog55So5LqO55Sf5oiQ5Zu+54mHICjlvILmraVjYWxsYmFjaylcbiAgICogQHBhcmFtIHtTdHJpbmd9IHR5cGUg5Zu+54mH57G75Z6L77yM5Y+v6YCJ5YC877yaXCJpbWFnZS9wbmdcIiB8IFwiaW1hZ2UvanBlZ1wiIHwgXCJpbWFnZS93ZWJwXCIgfCBcImltYWdlL2JtcFwiXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiYWNrZ3JvdW5kQ29sb3Ig5Zu+54mH6IOM5pmv6ImyXG4gICAqIEByZXR1cm4ge3N0cmluZ30g5Zu+54mHIGRhdGFVUkxcbiAgICovXG5cblxuICBHcmFwaC5wcm90b3R5cGUuYXN5bmNUb0RhdGFVcmwgPSBmdW5jdGlvbiAodHlwZSwgYmFja2dyb3VuZENvbG9yLCBjYWxsYmFjaywgd2lkdGhzLCBoZWlnaHRzLCB2Q2FudmFzRWwpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHdhdGVybWFya2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmc2LWdyYXBoLXdhdGVybWFya2VyJyk7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgcmVuZGVyZXIgPSBjYW52YXMuZ2V0UmVuZGVyZXIoKTtcbiAgICB2YXIgY2FudmFzRG9tID0gdkNhbnZhc0VsIHx8IGNhbnZhcy5nZXQoJ2VsJyk7XG4gICAgdmFyIGRhdGFVUkwgPSAnJztcbiAgICBpZiAoIXR5cGUpIHR5cGUgPSAnaW1hZ2UvcG5nJztcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjbG9uZU5vZGUsIHN2Z0RvY1R5cGUsIHN2Z0RvYywgc3ZnRGF0YSwgaW1hZ2VEYXRhLCBjb250ZXh0LCB3aWR0aCwgaGVpZ2h0LCBjb21wb3NpdGVPcGVyYXRpb24sIHBpeGVsUmF0aW87XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIGlmICghKHJlbmRlcmVyID09PSAnc3ZnJykpIHJldHVybiBbM1xuICAgICAgICAgICAgICAvKmJyZWFrKi9cbiAgICAgICAgICAgICAgLCAxXTtcbiAgICAgICAgICAgICAgY2xvbmVOb2RlID0gY2FudmFzRG9tLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgICAgICAgc3ZnRG9jVHlwZSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgnc3ZnJywgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJywgJ2h0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCcpO1xuICAgICAgICAgICAgICBzdmdEb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAnc3ZnJywgc3ZnRG9jVHlwZSk7XG4gICAgICAgICAgICAgIHN2Z0RvYy5yZXBsYWNlQ2hpbGQoY2xvbmVOb2RlLCBzdmdEb2MuZG9jdW1lbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgc3ZnRGF0YSA9IG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoc3ZnRG9jKTtcbiAgICAgICAgICAgICAgZGF0YVVSTCA9IFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCxcIi5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KHN2Z0RhdGEpKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFszXG4gICAgICAgICAgICAgIC8qYnJlYWsqL1xuICAgICAgICAgICAgICAsIDRdO1xuXG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIGltYWdlRGF0YSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgY29udGV4dCA9IGNhbnZhc0RvbS5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgICAgICB3aWR0aCA9IHdpZHRocyB8fCB0aGlzLmdldCgnd2lkdGgnKTtcbiAgICAgICAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0cyB8fCB0aGlzLmdldCgnaGVpZ2h0Jyk7XG4gICAgICAgICAgICAgIGNvbXBvc2l0ZU9wZXJhdGlvbiA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgaWYgKCF3YXRlcm1hcmtlcikgcmV0dXJuIFszXG4gICAgICAgICAgICAgIC8qYnJlYWsqL1xuICAgICAgICAgICAgICAsIDNdO1xuICAgICAgICAgICAgICByZXR1cm4gWzRcbiAgICAgICAgICAgICAgLyp5aWVsZCovXG4gICAgICAgICAgICAgICwgdGhpcy5kb3dubG9hZEltYWdlV2F0ZXJtYXJrKHdhdGVybWFya2VyLCBjb250ZXh0LCB3aWR0aCwgaGVpZ2h0KV07XG5cbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgX2Euc2VudCgpO1xuXG4gICAgICAgICAgICAgIF9hLmxhYmVsID0gMztcblxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgICAgICAgICAgcGl4ZWxSYXRpbyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmRldmljZVBpeGVsUmF0aW8gOiAxO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGltYWdlRGF0YSA9IGNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIHdpZHRoICogcGl4ZWxSYXRpbywgaGVpZ2h0ICogcGl4ZWxSYXRpbyk7XG4gICAgICAgICAgICAgICAgICBjb21wb3NpdGVPcGVyYXRpb24gPSBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW92ZXInO1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBiYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdEb3dubG9hZCBpbWFnZSBmYWlsZWQuIE91dCBvZiBtZW1vcnkgYXQgSW1hZ2VEYXRhIGNyZWF0aW9uJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZGF0YVVSTCA9IGNhbnZhc0RvbS50b0RhdGFVUkwodHlwZSk7XG5cbiAgICAgICAgICAgICAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgICAgICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbnRleHQucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBjb21wb3NpdGVPcGVyYXRpb247XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBfYS5sYWJlbCA9IDQ7XG5cbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjayhkYXRhVVJMKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFsyXG4gICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgMTYpO1xuICB9O1xuICAvKipcbiAgICog6L+U5Zue5Y+v6KeB5Yy65Z+f55qE5Zu+55qEIGRhdGFVcmzvvIznlKjkuo7nlJ/miJDlm77niYdcbiAgICogQHBhcmFtIHtTdHJpbmd9IHR5cGUg5Zu+54mH57G75Z6L77yM5Y+v6YCJ5YC877yaXCJpbWFnZS9wbmdcIiB8IFwiaW1hZ2UvanBlZ1wiIHwgXCJpbWFnZS93ZWJwXCIgfCBcImltYWdlL2JtcFwiXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiYWNrZ3JvdW5kQ29sb3Ig5Zu+54mH6IOM5pmv6ImyXG4gICAqIEByZXR1cm4ge3N0cmluZ30g5Zu+54mHIGRhdGFVUkxcbiAgICovXG5cblxuICBHcmFwaC5wcm90b3R5cGUudG9EYXRhVVJMID0gZnVuY3Rpb24gKHR5cGUsIGJhY2tncm91bmRDb2xvcikge1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIHJlbmRlcmVyID0gY2FudmFzLmdldFJlbmRlcmVyKCk7XG4gICAgdmFyIGNhbnZhc0RvbSA9IGNhbnZhcy5nZXQoJ2VsJyk7XG4gICAgaWYgKCF0eXBlKSB0eXBlID0gJ2ltYWdlL3BuZyc7XG4gICAgdmFyIGRhdGFVUkwgPSAnJztcblxuICAgIGlmIChyZW5kZXJlciA9PT0gJ3N2ZycpIHtcbiAgICAgIHZhciBjbG9uZU5vZGUgPSBjYW52YXNEb20uY2xvbmVOb2RlKHRydWUpO1xuICAgICAgdmFyIHN2Z0RvY1R5cGUgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudFR5cGUoJ3N2ZycsICctLy9XM0MvL0RURCBTVkcgMS4xLy9FTicsICdodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQnKTtcbiAgICAgIHZhciBzdmdEb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAnc3ZnJywgc3ZnRG9jVHlwZSk7XG4gICAgICBzdmdEb2MucmVwbGFjZUNoaWxkKGNsb25lTm9kZSwgc3ZnRG9jLmRvY3VtZW50RWxlbWVudCk7XG4gICAgICB2YXIgc3ZnRGF0YSA9IG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoc3ZnRG9jKTtcbiAgICAgIGRhdGFVUkwgPSBcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsXCIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChzdmdEYXRhKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpbWFnZURhdGEgPSB2b2lkIDA7XG4gICAgICB2YXIgY29udGV4dCA9IGNhbnZhc0RvbS5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgdmFyIHdpZHRoID0gdGhpcy5nZXQoJ3dpZHRoJyk7XG4gICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5nZXQoJ2hlaWdodCcpO1xuICAgICAgdmFyIGNvbXBvc2l0ZU9wZXJhdGlvbiA9IHZvaWQgMDtcblxuICAgICAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgICAgICB2YXIgcGl4ZWxSYXRpbyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmRldmljZVBpeGVsUmF0aW8gOiAxO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaW1hZ2VEYXRhID0gY29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGggKiBwaXhlbFJhdGlvLCBoZWlnaHQgKiBwaXhlbFJhdGlvKTtcbiAgICAgICAgICBjb21wb3NpdGVPcGVyYXRpb24gPSBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbjtcbiAgICAgICAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdmVyJztcbiAgICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGJhY2tncm91bmRDb2xvcjtcbiAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Rvd25sb2FkIGltYWdlIGZhaWxlZC4gT3V0IG9mIG1lbW9yeSBhdCBJbWFnZURhdGEgY3JlYXRpb24nKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBkYXRhVVJMID0gY2FudmFzRG9tLnRvRGF0YVVSTCh0eXBlKTtcblxuICAgICAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgY29udGV4dC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAwKTtcbiAgICAgICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBjb21wb3NpdGVPcGVyYXRpb247XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFVUkw7XG4gIH07XG4gIC8qKlxuICAgKiDov5Tlm57mlbTkuKrlm77vvIjljIXmi6zotoXlh7rlj6/op4HljLrln5/nmoTpg6jliIbvvInnmoQgZGF0YVVybO+8jOeUqOS6jueUn+aIkOWbvueJh1xuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayDlvILmraXnlJ/miJAgZGF0YVVybCDlrozmiJDlkI7nmoTlm57osIPlh73mlbDvvIzlnKjov5nph4zlpITnkIbnlJ/miJDnmoQgZGF0YVVybCDlrZfnrKbkuLJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHR5cGUg5Zu+54mH57G75Z6L77yM5Y+v6YCJ5YC877yaXCJpbWFnZS9wbmdcIiB8IFwiaW1hZ2UvanBlZ1wiIHwgXCJpbWFnZS93ZWJwXCIgfCBcImltYWdlL2JtcFwiXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpbWFnZUNvbmZpZyDlm77niYfphY3nva7pobnvvIzljIXmi6zog4zmma/oibLlkozkuIrkuIvlt6blj7PnmoQgcGFkZGluZ1xuICAgKi9cblxuXG4gIEdyYXBoLnByb3RvdHlwZS50b0Z1bGxEYXRhVVJMID0gZnVuY3Rpb24gKGNhbGxiYWNrLCB0eXBlLCBpbWFnZUNvbmZpZykge1xuICAgIHZhciBiYm94ID0gdGhpcy5nZXQoJ2dyb3VwJykuZ2V0Q2FudmFzQkJveCgpO1xuICAgIHZhciBoZWlnaHQgPSBiYm94LmhlaWdodDtcbiAgICB2YXIgd2lkdGggPSBiYm94LndpZHRoO1xuICAgIHZhciByZW5kZXJlciA9IHRoaXMuZ2V0KCdyZW5kZXJlcicpO1xuICAgIHZhciB2Q29udGFpbmVyRE9NID0gY3JlYXRlRG9tKCc8aWQ9XCJ2aXJ0dWFsLWltYWdlXCI+PC9kaXY+Jyk7XG4gICAgdmFyIGJhY2tncm91bmRDb2xvciA9IGltYWdlQ29uZmlnID8gaW1hZ2VDb25maWcuYmFja2dyb3VuZENvbG9yIDogdW5kZWZpbmVkO1xuICAgIHZhciBwYWRkaW5nID0gaW1hZ2VDb25maWcgPyBpbWFnZUNvbmZpZy5wYWRkaW5nIDogdW5kZWZpbmVkO1xuICAgIGlmICghcGFkZGluZykgcGFkZGluZyA9IFswLCAwLCAwLCAwXTtlbHNlIGlmIChpc051bWJlcihwYWRkaW5nKSkgcGFkZGluZyA9IFtwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nXTtcbiAgICB2YXIgdkhlaWdodCA9IGhlaWdodCArIHBhZGRpbmdbMF0gKyBwYWRkaW5nWzJdO1xuICAgIHZhciB2V2lkdGggPSB3aWR0aCArIHBhZGRpbmdbMV0gKyBwYWRkaW5nWzNdO1xuICAgIHZhciBjYW52YXNPcHRpb25zID0ge1xuICAgICAgY29udGFpbmVyOiB2Q29udGFpbmVyRE9NLFxuICAgICAgaGVpZ2h0OiB2SGVpZ2h0LFxuICAgICAgd2lkdGg6IHZXaWR0aCxcbiAgICAgIHF1aWNrSGl0OiB0cnVlXG4gICAgfTtcbiAgICB2YXIgdkNhbnZhcyA9IHJlbmRlcmVyID09PSAnc3ZnJyA/IG5ldyBHU1ZHQ2FudmFzKGNhbnZhc09wdGlvbnMpIDogbmV3IEdDYW52YXMoY2FudmFzT3B0aW9ucyk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIHZHcm91cCA9IGdyb3VwLmNsb25lKCk7XG4gICAgdmFyIG1hdHJpeCA9IGNsb25lKHZHcm91cC5nZXRNYXRyaXgoKSk7XG4gICAgaWYgKCFtYXRyaXgpIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB2YXIgY2VudGVyWCA9IChiYm94Lm1heFggKyBiYm94Lm1pblgpIC8gMjtcbiAgICB2YXIgY2VudGVyWSA9IChiYm94Lm1heFkgKyBiYm94Lm1pblkpIC8gMjtcbiAgICBtYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgLWNlbnRlclgsIC1jZW50ZXJZXSwgWyd0Jywgd2lkdGggLyAyICsgcGFkZGluZ1szXSwgaGVpZ2h0IC8gMiArIHBhZGRpbmdbMF1dXSk7XG4gICAgdkdyb3VwLnJlc2V0TWF0cml4KCk7XG4gICAgdkdyb3VwLnNldE1hdHJpeChtYXRyaXgpO1xuICAgIHZDYW52YXMuYWRkKHZHcm91cCk7XG4gICAgdmFyIHZDYW52YXNFbCA9IHZDYW52YXMuZ2V0KCdlbCcpO1xuICAgIHZhciBkYXRhVVJMID0gJyc7XG4gICAgaWYgKCF0eXBlKSB0eXBlID0gJ2ltYWdlL3BuZyc7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAocmVuZGVyZXIgPT09ICdzdmcnKSB7XG4gICAgICAgIHZhciBjbG9uZU5vZGUgPSB2Q2FudmFzRWwuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICB2YXIgc3ZnRG9jVHlwZSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgnc3ZnJywgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJywgJ2h0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCcpO1xuICAgICAgICB2YXIgc3ZnRG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3N2ZycsIHN2Z0RvY1R5cGUpO1xuICAgICAgICBzdmdEb2MucmVwbGFjZUNoaWxkKGNsb25lTm9kZSwgc3ZnRG9jLmRvY3VtZW50RWxlbWVudCk7XG4gICAgICAgIHZhciBzdmdEYXRhID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhzdmdEb2MpO1xuICAgICAgICBkYXRhVVJMID0gXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LFwiLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQoc3ZnRGF0YSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGltYWdlRGF0YSA9IHZvaWQgMDtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB2Q2FudmFzRWwuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgdmFyIGNvbXBvc2l0ZU9wZXJhdGlvbiA9IHZvaWQgMDtcblxuICAgICAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgICAgdmFyIHBpeGVsUmF0aW8gPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIDogMTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpbWFnZURhdGEgPSBjb250ZXh0LmdldEltYWdlRGF0YSgwLCAwLCB2V2lkdGggKiBwaXhlbFJhdGlvLCB2SGVpZ2h0ICogcGl4ZWxSYXRpbyk7XG4gICAgICAgICAgICBjb21wb3NpdGVPcGVyYXRpb24gPSBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbjtcbiAgICAgICAgICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW92ZXInO1xuICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBiYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHZXaWR0aCwgdkhlaWdodCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Rvd25sb2FkIGltYWdlIGZhaWxlZC4gT3V0IG9mIG1lbW9yeSBhdCBJbWFnZURhdGEgY3JlYXRpb24nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhVVJMID0gdkNhbnZhc0VsLnRvRGF0YVVSTCh0eXBlKTtcblxuICAgICAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdldpZHRoLCB2SGVpZ2h0KTtcbiAgICAgICAgICBjb250ZXh0LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDApO1xuICAgICAgICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gY29tcG9zaXRlT3BlcmF0aW9uO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soZGF0YVVSTCk7XG4gICAgfSwgMTYpO1xuICB9O1xuICAvKipcbiAgICog5a+85Ye65YyF5ZCr5YWo5Zu+55qE5Zu+54mHXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIOWbvueJh+eahOWQjeensFxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSDlm77niYfnsbvlnovvvIzlj6/pgInlgLzvvJpcImltYWdlL3BuZ1wiIHwgXCJpbWFnZS9qcGVnXCIgfCBcImltYWdlL3dlYnBcIiB8IFwiaW1hZ2UvYm1wXCJcbiAgICogQHBhcmFtIHtPYmplY3R9IGltYWdlQ29uZmlnIOWbvueJh+mFjee9rumhue+8jOWMheaLrOiDjOaZr+iJsuWSjOS4iuS4i+W3puWPs+eahCBwYWRkaW5nXG4gICAqL1xuXG5cbiAgR3JhcGgucHJvdG90eXBlLmRvd25sb2FkRnVsbEltYWdlID0gZnVuY3Rpb24gKG5hbWUsIHR5cGUsIGltYWdlQ29uZmlnKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBiYm94ID0gdGhpcy5nZXQoJ2dyb3VwJykuZ2V0Q2FudmFzQkJveCgpO1xuICAgIHZhciBoZWlnaHQgPSBiYm94LmhlaWdodDtcbiAgICB2YXIgd2lkdGggPSBiYm94LndpZHRoO1xuICAgIHZhciByZW5kZXJlciA9IHRoaXMuZ2V0KCdyZW5kZXJlcicpO1xuICAgIHZhciB2Q29udGFpbmVyRE9NID0gY3JlYXRlRG9tKCc8aWQ9XCJ2aXJ0dWFsLWltYWdlXCI+PC9kaXY+Jyk7XG4gICAgdmFyIHdhdGVybWFya2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmc2LWdyYXBoLXdhdGVybWFya2VyJyk7XG4gICAgdmFyIGJhY2tncm91bmRDb2xvciA9IGltYWdlQ29uZmlnID8gaW1hZ2VDb25maWcuYmFja2dyb3VuZENvbG9yIDogdW5kZWZpbmVkO1xuICAgIHZhciBwYWRkaW5nID0gaW1hZ2VDb25maWcgPyBpbWFnZUNvbmZpZy5wYWRkaW5nIDogdW5kZWZpbmVkO1xuICAgIGlmICghcGFkZGluZykgcGFkZGluZyA9IFswLCAwLCAwLCAwXTtlbHNlIGlmIChpc051bWJlcihwYWRkaW5nKSkgcGFkZGluZyA9IFtwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nXTtcbiAgICB2YXIgdkhlaWdodCA9IGhlaWdodCArIHBhZGRpbmdbMF0gKyBwYWRkaW5nWzJdO1xuICAgIHZhciB2V2lkdGggPSB3aWR0aCArIHBhZGRpbmdbMV0gKyBwYWRkaW5nWzNdO1xuXG4gICAgaWYgKHdhdGVybWFya2VyKSB7XG4gICAgICB2YXIgX2EgPSB0aGlzLmdldCgnZ3JhcGhXYXRlck1hcmtlcicpLmNmZyB8fCB7fSxcbiAgICAgICAgICB3bVdpZHRoID0gX2Eud2lkdGgsXG4gICAgICAgICAgd21IZWlnaHQgPSBfYS5oZWlnaHQ7XG5cbiAgICAgIHZIZWlnaHQgPSBNYXRoLmNlaWwodkhlaWdodCAvIHdtSGVpZ2h0KSAqIHdtSGVpZ2h0O1xuICAgICAgdldpZHRoID0gTWF0aC5jZWlsKHZXaWR0aCAvIHdtV2lkdGgpICogd21XaWR0aDtcbiAgICB9XG5cbiAgICB2YXIgY2FudmFzT3B0aW9ucyA9IHtcbiAgICAgIGNvbnRhaW5lcjogdkNvbnRhaW5lckRPTSxcbiAgICAgIGhlaWdodDogdkhlaWdodCxcbiAgICAgIHdpZHRoOiB2V2lkdGhcbiAgICB9O1xuICAgIHZhciB2Q2FudmFzID0gcmVuZGVyZXIgPT09ICdzdmcnID8gbmV3IEdTVkdDYW52YXMoY2FudmFzT3B0aW9ucykgOiBuZXcgR0NhbnZhcyhjYW52YXNPcHRpb25zKTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcbiAgICB2YXIgdkdyb3VwID0gZ3JvdXAuY2xvbmUoKTtcbiAgICB2YXIgbWF0cml4ID0gY2xvbmUodkdyb3VwLmdldE1hdHJpeCgpKTtcbiAgICBpZiAoIW1hdHJpeCkgbWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgIHZhciBjZW50ZXJYID0gKGJib3gubWF4WCArIGJib3gubWluWCkgLyAyO1xuICAgIHZhciBjZW50ZXJZID0gKGJib3gubWF4WSArIGJib3gubWluWSkgLyAyO1xuICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3QnLCAtY2VudGVyWCwgLWNlbnRlclldLCBbJ3QnLCB3aWR0aCAvIDIgKyBwYWRkaW5nWzNdLCBoZWlnaHQgLyAyICsgcGFkZGluZ1swXV1dKTtcbiAgICB2R3JvdXAucmVzZXRNYXRyaXgoKTtcbiAgICB2R3JvdXAuc2V0TWF0cml4KG1hdHJpeCk7XG4gICAgdkNhbnZhcy5hZGQodkdyb3VwKTtcbiAgICB2YXIgdkNhbnZhc0VsID0gdkNhbnZhcy5nZXQoJ2VsJyk7XG4gICAgaWYgKCF0eXBlKSB0eXBlID0gJ2ltYWdlL3BuZyc7XG4gICAgdGhpcy5hc3luY1RvRGF0YVVybCh0eXBlLCBiYWNrZ3JvdW5kQ29sb3IsIGZ1bmN0aW9uIChkYXRhVVJMKSB7XG4gICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIHZhciBmaWxlTmFtZSA9IChuYW1lIHx8ICdncmFwaCcpICsgKHJlbmRlcmVyID09PSAnc3ZnJyA/ICcuc3ZnJyA6IFwiLlwiLmNvbmNhdCh0eXBlLnNwbGl0KCcvJylbMV0pKTtcblxuICAgICAgX3RoaXMuZGF0YVVSTFRvSW1hZ2UoZGF0YVVSTCwgcmVuZGVyZXIsIGxpbmssIGZpbGVOYW1lKTtcblxuICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudHMnKTtcbiAgICAgIGUuaW5pdEV2ZW50KCdjbGljaycsIGZhbHNlLCBmYWxzZSk7XG4gICAgICBsaW5rLmRpc3BhdGNoRXZlbnQoZSk7XG4gICAgfSwgdldpZHRoLCB2SGVpZ2h0LCB2Q2FudmFzRWwpO1xuICB9O1xuICAvKipcbiAgICog55S75biD5a+85Ye65Zu+54mH77yM5Zu+54mH5LuF5YyF5ZCr55S75biD5Y+v6KeB5Yy65Z+f6YOo5YiG5YaF5a65XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIOWbvueJh+eahOWQjeensFxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSDlm77niYfnsbvlnovvvIzlj6/pgInlgLzvvJpcImltYWdlL3BuZ1wiIHwgXCJpbWFnZS9qcGVnXCIgfCBcImltYWdlL3dlYnBcIiB8IFwiaW1hZ2UvYm1wXCJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhY2tncm91bmRDb2xvciDlm77niYfog4zmma/oibJcbiAgICovXG5cblxuICBHcmFwaC5wcm90b3R5cGUuZG93bmxvYWRJbWFnZSA9IGZ1bmN0aW9uIChuYW1lLCB0eXBlLCBiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKHNlbGYuaXNBbmltYXRpbmcoKSkge1xuICAgICAgc2VsZi5zdG9wQW5pbWF0ZSgpO1xuICAgIH1cblxuICAgIHZhciBjYW52YXMgPSBzZWxmLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIHJlbmRlcmVyID0gY2FudmFzLmdldFJlbmRlcmVyKCk7XG4gICAgaWYgKCF0eXBlKSB0eXBlID0gJ2ltYWdlL3BuZyc7XG4gICAgdmFyIGZpbGVOYW1lID0gKG5hbWUgfHwgJ2dyYXBoJykgKyAocmVuZGVyZXIgPT09ICdzdmcnID8gJy5zdmcnIDogdHlwZS5zcGxpdCgnLycpWzFdKTtcbiAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBzZWxmLmFzeW5jVG9EYXRhVXJsKHR5cGUsIGJhY2tncm91bmRDb2xvciwgZnVuY3Rpb24gKGRhdGFVUkwpIHtcbiAgICAgIF90aGlzLmRhdGFVUkxUb0ltYWdlKGRhdGFVUkwsIHJlbmRlcmVyLCBsaW5rLCBmaWxlTmFtZSk7XG5cbiAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnRzJyk7XG4gICAgICBlLmluaXRFdmVudCgnY2xpY2snLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgbGluay5kaXNwYXRjaEV2ZW50KGUpO1xuICAgIH0pO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5kYXRhVVJMVG9JbWFnZSA9IGZ1bmN0aW9uIChkYXRhVVJMLCByZW5kZXJlciwgbGluaywgZmlsZU5hbWUpIHtcbiAgICBpZiAoIWRhdGFVUkwgfHwgZGF0YVVSTCA9PT0gJ2RhdGE6Jykge1xuICAgICAgY29uc29sZS5lcnJvcignRG93bmxvYWQgaW1hZ2UgZmFpbGVkLiBUaGUgZ3JhcGggaXMgdG9vIGxhcmdlIG9yIHRoZXJlIGlzIGludmFsaWQgYXR0cmlidXRlIHZhbHVlcyBpbiBncmFwaCBpdGVtcycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKHdpbmRvdy5CbG9iICYmIHdpbmRvdy5VUkwgJiYgcmVuZGVyZXIgIT09ICdzdmcnKSB7XG4gICAgICAgIHZhciBhcnIgPSBkYXRhVVJMLnNwbGl0KCcsJyk7XG4gICAgICAgIHZhciBtaW1lID0gJyc7XG5cbiAgICAgICAgaWYgKGFyciAmJiBhcnIubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHZhciBtYXRjaCA9IGFyclswXS5tYXRjaCgvOiguKj8pOy8pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcblxuICAgICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaC5sZW5ndGggPj0gMikgbWltZSA9IG1hdGNoWzFdO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGJzdHIgPSBhdG9iKGFyclsxXSk7XG4gICAgICAgIHZhciBuID0gYnN0ci5sZW5ndGg7XG4gICAgICAgIHZhciB1OGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuXG4gICAgICAgIHdoaWxlIChuLS0pIHtcbiAgICAgICAgICB1OGFycltuXSA9IGJzdHIuY2hhckNvZGVBdChuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBibG9iT2JqXzEgPSBuZXcgQmxvYihbdThhcnJdLCB7XG4gICAgICAgICAgdHlwZTogbWltZVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAod2luZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9iKSB7XG4gICAgICAgICAgd2luZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9iKGJsb2JPYmpfMSwgZmlsZU5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWU7XG4gICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iT2JqXzEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcbiAgICAgICAgICBsaW5rLmhyZWYgPSBkYXRhVVJMO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmt7vliqDmj5Lku7ZcbiAgICogQHBhcmFtIHtvYmplY3R9IHBsdWdpbiDmj5Lku7blrp7kvotcbiAgICovXG5cblxuICBHcmFwaC5wcm90b3R5cGUuYWRkUGx1Z2luID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmIChwbHVnaW4uZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2VsZi5nZXQoJ3BsdWdpbnMnKS5wdXNoKHBsdWdpbik7XG4gICAgcGx1Z2luLmluaXRQbHVnaW4oc2VsZik7XG4gIH07XG4gIC8qKlxuICAgKiDmt7vliqDmj5Lku7ZcbiAgICogQHBhcmFtIHtvYmplY3R9IHBsdWdpbiDmj5Lku7blrp7kvotcbiAgICovXG5cblxuICBHcmFwaC5wcm90b3R5cGUucmVtb3ZlUGx1Z2luID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIHZhciBwbHVnaW5zID0gdGhpcy5nZXQoJ3BsdWdpbnMnKTtcbiAgICB2YXIgaW5kZXggPSBwbHVnaW5zLmluZGV4T2YocGx1Z2luKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBwbHVnaW4uZGVzdHJveVBsdWdpbigpO1xuICAgICAgcGx1Z2lucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWbvueJh+awtOWNsFxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW1nVVJMIOWbvueJh+awtOWNsOeahHVybOWcsOWdgFxuICAgKiBAcGFyYW0ge1dhdGVyTWFya2VyQ29uZmlnfSBjb25maWcg5paH5pys5rC05Y2w55qE6YWN572u6aG5XG4gICAqL1xuXG5cbiAgR3JhcGgucHJvdG90eXBlLnNldEltYWdlV2F0ZXJNYXJrZXIgPSBmdW5jdGlvbiAoaW1nVVJMLCBjb25maWcpIHtcbiAgICBpZiAoaW1nVVJMID09PSB2b2lkIDApIHtcbiAgICAgIGltZ1VSTCA9IEdsb2JhbC53YXRlck1hcmtlckltYWdlO1xuICAgIH1cblxuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbikge1xuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICB9XG5cbiAgICB2YXIgY2FudmFzID0gdGhpcy5nZXQoJ2dyYXBoV2F0ZXJNYXJrZXInKTtcbiAgICB2YXIgd2F0ZXJNYXJrZXJDb25maWcgPSBkZWVwTWl4KHt9LCBHbG9iYWwuaW1hZ2VXYXRlck1hcmtlckNvbmZpZywgY29uZmlnKTtcbiAgICB2YXIgd2lkdGggPSB3YXRlck1hcmtlckNvbmZpZy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gd2F0ZXJNYXJrZXJDb25maWcuaGVpZ2h0LFxuICAgICAgICBjb21wYXRpYmxlID0gd2F0ZXJNYXJrZXJDb25maWcuY29tcGF0aWJsZSxcbiAgICAgICAgaW1hZ2UgPSB3YXRlck1hcmtlckNvbmZpZy5pbWFnZTtcblxuICAgIGlmICghY2FudmFzKSB7XG4gICAgICB2YXIgY2FudmFzQ2ZnID0ge1xuICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lcixcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgY2FwdHVyZTogZmFsc2VcbiAgICAgIH07XG4gICAgICB2YXIgcGl4ZWxSYXRpbyA9IHRoaXMuZ2V0KCdwaXhlbFJhdGlvJyk7XG5cbiAgICAgIGlmIChwaXhlbFJhdGlvKSB7XG4gICAgICAgIGNhbnZhc0NmZy5waXhlbFJhdGlvID0gcGl4ZWxSYXRpbztcbiAgICAgIH1cblxuICAgICAgY2FudmFzID0gbmV3IEdDYW52YXMoY2FudmFzQ2ZnKTtcbiAgICAgIHRoaXMuc2V0KCdncmFwaFdhdGVyTWFya2VyJywgY2FudmFzKTtcbiAgICB9XG5cbiAgICBjYW52YXMuZ2V0KCdlbCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdmFyIGN0eCA9IGNhbnZhcy5nZXQoJ2NvbnRleHQnKTtcbiAgICB2YXIgcm90YXRlID0gaW1hZ2Uucm90YXRlLFxuICAgICAgICB4ID0gaW1hZ2UueCxcbiAgICAgICAgeSA9IGltYWdlLnk7IC8vIOaXi+i9rDIw5bqmXG5cbiAgICBjdHgucm90YXRlKC1yb3RhdGUgKiBNYXRoLlBJIC8gMTgwKTtcbiAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgaW1nLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XG4gICAgaW1nLnNyYyA9IGltZ1VSTDtcblxuICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBjdHguZHJhd0ltYWdlKGltZywgeCwgeSwgaW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCk7IC8vIOaBouWkjeaXi+i9rOinkuW6plxuXG4gICAgICBjdHgucm90YXRlKHJvdGF0ZSAqIE1hdGguUEkgLyAxODApOyAvLyDpu5jorqTmjInnhafnjrDku6PmtY/op4jlmajlpITnkIZcblxuICAgICAgaWYgKCFjb21wYXRpYmxlKSB7XG4gICAgICAgIHZhciBib3ggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZzYtZ3JhcGgtd2F0ZXJtYXJrZXInKTtcblxuICAgICAgICBpZiAoIWJveCkge1xuICAgICAgICAgIGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgIGJveC5jbGFzc05hbWUgPSAnZzYtZ3JhcGgtd2F0ZXJtYXJrZXInO1xuICAgICAgICB9XG5cbiAgICAgICAgYm94LmNsYXNzTmFtZSA9ICdnNi1ncmFwaC13YXRlcm1hcmtlcic7XG5cbiAgICAgICAgaWYgKCFjYW52YXMuZGVzdHJveWVkKSB7XG4gICAgICAgICAgYm94LnN0eWxlLmNzc1RleHQgPSBcImJhY2tncm91bmQtaW1hZ2U6IHVybChcIi5jb25jYXQoY2FudmFzLmdldCgnZWwnKS50b0RhdGFVUkwoJ2ltYWdlL3BuZycpLCBcIik7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3BvaW50ZXItZXZlbnRzOm5vbmU7ei1pbmRleDotMTtcIik7XG4gICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGJveCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOW9k+mcgOimgeWFvOWuueS4jeaUr+aMgSBwb2ludGVyLWV2ZW50c+WxnuaAp+eahOa1j+iniOWZqOaXtu+8jOWwhiBjb21wYXRpYmxlIOiuvue9ruS4uiB0cnVlXG4gICAgICAgIGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gXCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuY29uY2F0KGNhbnZhcy5nZXQoJ2VsJykudG9EYXRhVVJMKCdpbWFnZS9wbmcnKSwgXCIpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdDtcIik7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruaWh+acrOawtOWNsFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSB0ZXh0cyDmsLTljbDnmoTmlofmnKzlhoXlrrlcbiAgICogQHBhcmFtIHtXYXRlck1hcmtlckNvbmZpZ30gY29uZmlnIOaWh+acrOawtOWNsOeahOmFjee9rumhuVxuICAgKi9cblxuXG4gIEdyYXBoLnByb3RvdHlwZS5zZXRUZXh0V2F0ZXJNYXJrZXIgPSBmdW5jdGlvbiAodGV4dHMsIGNvbmZpZykge1xuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbikge1xuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICB9XG5cbiAgICB2YXIgY2FudmFzID0gdGhpcy5nZXQoJ2dyYXBoV2F0ZXJNYXJrZXInKTtcbiAgICB2YXIgd2F0ZXJNYXJrZXJDb25maWcgPSBkZWVwTWl4KHt9LCBHbG9iYWwudGV4dFdhdGVyTWFya2VyQ29uZmlnLCBjb25maWcpO1xuICAgIHZhciB3aWR0aCA9IHdhdGVyTWFya2VyQ29uZmlnLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSB3YXRlck1hcmtlckNvbmZpZy5oZWlnaHQsXG4gICAgICAgIGNvbXBhdGlibGUgPSB3YXRlck1hcmtlckNvbmZpZy5jb21wYXRpYmxlLFxuICAgICAgICB0ZXh0ID0gd2F0ZXJNYXJrZXJDb25maWcudGV4dDtcblxuICAgIGlmICghY2FudmFzKSB7XG4gICAgICB2YXIgY2FudmFzQ2ZnID0ge1xuICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lcixcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgY2FwdHVyZTogZmFsc2VcbiAgICAgIH07XG4gICAgICB2YXIgcGl4ZWxSYXRpbyA9IHRoaXMuZ2V0KCdwaXhlbFJhdGlvJyk7XG5cbiAgICAgIGlmIChwaXhlbFJhdGlvKSB7XG4gICAgICAgIGNhbnZhc0NmZy5waXhlbFJhdGlvID0gcGl4ZWxSYXRpbztcbiAgICAgIH1cblxuICAgICAgY2FudmFzID0gbmV3IEdDYW52YXMoY2FudmFzQ2ZnKTtcbiAgICAgIHRoaXMuc2V0KCdncmFwaFdhdGVyTWFya2VyJywgY2FudmFzKTtcbiAgICB9XG5cbiAgICBjYW52YXMuZ2V0KCdlbCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdmFyIGN0eCA9IGNhbnZhcy5nZXQoJ2NvbnRleHQnKTtcbiAgICB2YXIgcm90YXRlID0gdGV4dC5yb3RhdGUsXG4gICAgICAgIGZpbGwgPSB0ZXh0LmZpbGwsXG4gICAgICAgIGZvbnRGYW1pbHkgPSB0ZXh0LmZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRTaXplID0gdGV4dC5mb250U2l6ZSxcbiAgICAgICAgYmFzZWxpbmUgPSB0ZXh0LmJhc2VsaW5lLFxuICAgICAgICB4ID0gdGV4dC54LFxuICAgICAgICB5ID0gdGV4dC55LFxuICAgICAgICBsaW5lSGVpZ2h0ID0gdGV4dC5saW5lSGVpZ2h0OyAvLyDml4vovawyMOW6plxuXG4gICAgY3R4LnJvdGF0ZSgtcm90YXRlICogTWF0aC5QSSAvIDE4MCk7IC8vIOiuvue9ruaWh+Wtl+agt+W8j1xuXG4gICAgY3R4LmZvbnQgPSBcIlwiLmNvbmNhdChmb250U2l6ZSwgXCJweCBcIikuY29uY2F0KGZvbnRGYW1pbHkpOyAvLyDorr7nva7mloflrZfpopzoibJcblxuICAgIGN0eC5maWxsU3R5bGUgPSBmaWxsO1xuICAgIGN0eC50ZXh0QmFzZWxpbmUgPSBiYXNlbGluZTtcblxuICAgIGZvciAodmFyIGkgPSB0ZXh0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgLy8g5bCG5paH5a2X57uY5Yi25Yiw55S75biDXG4gICAgICBjdHguZmlsbFRleHQodGV4dHNbaV0sIHgsIHkgKyBpICogbGluZUhlaWdodCk7XG4gICAgfSAvLyDmgaLlpI3ml4vovazop5LluqZcblxuXG4gICAgY3R4LnJvdGF0ZShyb3RhdGUgKiBNYXRoLlBJIC8gMTgwKTsgLy8g6buY6K6k5oyJ54Wn546w5Luj5rWP6KeI5Zmo5aSE55CGXG5cbiAgICBpZiAoIWNvbXBhdGlibGUpIHtcbiAgICAgIHZhciBib3ggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZzYtZ3JhcGgtd2F0ZXJtYXJrZXInKTtcblxuICAgICAgaWYgKCFib3gpIHtcbiAgICAgICAgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGJveC5jbGFzc05hbWUgPSAnZzYtZ3JhcGgtd2F0ZXJtYXJrZXInO1xuICAgICAgfVxuXG4gICAgICBib3guc3R5bGUuY3NzVGV4dCA9IFwiYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLmNvbmNhdChjYW52YXMuZ2V0KCdlbCcpLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyksIFwiKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4Ojk5O1wiKTtcbiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChib3gpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlvZPpnIDopoHlhbzlrrnkuI3mlK/mjIEgcG9pbnRlci1ldmVudHPlsZ7mgKfnmoTmtY/op4jlmajml7bvvIzlsIYgY29tcGF0aWJsZSDorr7nva7kuLogdHJ1ZVxuICAgICAgY29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSBcImJhY2tncm91bmQtaW1hZ2U6IHVybChcIi5jb25jYXQoY2FudmFzLmdldCgnZWwnKS50b0RhdGFVUkwoJ2ltYWdlL3BuZycpLCBcIik7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0O1wiKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDplIDmr4HnlLvluINcbiAgICovXG5cblxuICBHcmFwaC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG5cbiAgICBlYWNoKHRoaXMuZ2V0KCdwbHVnaW5zJyksIGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIHBsdWdpbi5kZXN0cm95UGx1Z2luKCk7XG4gICAgfSk7IC8vIGRlc3Ryb3kgdG9vbHRpcCBkb21zLCByZW1vdmVkIHdoZW4gdXBncmFkZSBHNiA0LjBcblxuICAgIHZhciB0b29sdGlwRE9NcyA9IHRoaXMuZ2V0KCd0b29sdGlwcycpO1xuXG4gICAgaWYgKHRvb2x0aXBET01zKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvb2x0aXBET01zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjb250YWluZXIgPSB0b29sdGlwRE9Nc1tpXTtcbiAgICAgICAgaWYgKCFjb250YWluZXIpIGNvbnRpbnVlO1xuICAgICAgICB2YXIgcGFyZW50XzEgPSBjb250YWluZXIucGFyZW50RWxlbWVudDtcbiAgICAgICAgaWYgKCFwYXJlbnRfMSkgY29udGludWU7XG4gICAgICAgIHBhcmVudF8xLnJlbW92ZUNoaWxkKGNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgKF9hID0gdGhpcy5nZXQoJ2V2ZW50Q29udHJvbGxlcicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVzdHJveSgpO1xuICAgIChfYiA9IHRoaXMuZ2V0KCdsYXlvdXRDb250cm9sbGVyJykpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5kZXN0cm95KCk7IC8vIHRoaXMuZ2V0KCdldmVudENvbnRyb2xsZXInKS5kZXN0cm95KCk7XG4gICAgLy8gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJykuZGVzdHJveSgpO1xuICAgIC8vIHRoaXMuZ2V0KCdtb2RlQ29udHJvbGxlcicpLmRlc3Ryb3koKTtcbiAgICAvLyB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKS5kZXN0cm95KCk7XG4gICAgLy8gdGhpcy5nZXQoJ3N0YXRlQ29udHJvbGxlcicpLmRlc3Ryb3koKTtcbiAgICAvLyB0aGlzLmdldCgnY2FudmFzJykuZGVzdHJveSgpO1xuXG4gICAgKF9jID0gdGhpcy5nZXQoJ2dyYXBoV2F0ZXJNYXJrZXInKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmRlc3Ryb3koKTtcbiAgICAoX2QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZzYtZ3JhcGgtd2F0ZXJtYXJrZXInKSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnJlbW92ZSgpO1xuXG4gICAgX3N1cGVyLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyk7XG4gIH07XG5cbiAgcmV0dXJuIEdyYXBoO1xufShBYnN0cmFjdEdyYXBoKTtcblxuZXhwb3J0IGRlZmF1bHQgR3JhcGg7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/graph/graph.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/graph/tree-graph.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/graph/tree-graph.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_hierarchy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/hierarchy */ \"./node_modules/@antv/hierarchy/build/hierarchy.js\");\n/* harmony import */ var _antv_hierarchy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_antv_hierarchy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g6-pc/es/util/index.js\");\n/* harmony import */ var _graph__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./graph */ \"./node_modules/@antv/g6-pc/es/graph/graph.js\");\n\n\n\n\n\nvar radialLayout = _util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].radialLayout,\n traverseTree = _util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].traverseTree;\n\nvar TreeGraph =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(TreeGraph, _super);\n\n function TreeGraph(cfg) {\n var _this = _super.call(this, cfg) || this;\n\n _this.layoutAnimating = false; // 用于缓存动画结束后需要删除的节点\n\n _this.set('removeList', []);\n\n _this.set('layoutMethod', _this.getLayout());\n\n return _this;\n }\n /**\n * 通过 Layout 配置获取布局配置\n */\n\n\n TreeGraph.prototype.getLayout = function () {\n var layout = this.get('layout');\n\n if (!layout) {\n return null;\n }\n\n if (typeof layout === 'function') {\n return layout;\n }\n\n if (!layout.type) {\n layout.type = 'dendrogram';\n }\n\n if (!layout.direction) {\n layout.direction = 'TB';\n }\n\n if (layout.radial) {\n return function (data) {\n var layoutData = _antv_hierarchy__WEBPACK_IMPORTED_MODULE_1___default.a[layout.type](data, layout);\n radialLayout(layoutData);\n return layoutData;\n };\n }\n\n return function (data) {\n return _antv_hierarchy__WEBPACK_IMPORTED_MODULE_1___default.a[layout.type](data, layout);\n };\n };\n /**\n * 返回指定节点在树图数据中的索引\n * @param children 树图数据\n * @param child 树图中某一个 Item 的数据\n */\n\n\n TreeGraph.indexOfChild = function (children, id) {\n var index = -1; // eslint-disable-next-line consistent-return\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(children, function (former, i) {\n if (id === former.id) {\n index = i;\n return false;\n }\n });\n return index;\n };\n\n TreeGraph.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this); // 树图默认打开动画\n\n\n cfg.animate = true;\n return cfg;\n };\n /**\n * 向🌲树中添加数据\n * @param treeData 树图数据\n * @param parent 父节点实例\n * @param animate 是否开启动画\n */\n\n\n TreeGraph.prototype.innerAddChild = function (treeData, parent, animate) {\n var self = this;\n var model = treeData.data;\n\n if (model) {\n // model 中应存储真实的数据,特别是真实的 children\n model.x = treeData.x;\n model.y = treeData.y;\n model.depth = treeData.depth;\n }\n\n var node = self.addItem('node', model, false);\n\n if (parent) {\n node.set('parent', parent);\n\n if (animate) {\n var origin_1 = parent.get('originAttrs');\n\n if (origin_1) {\n node.set('originAttrs', origin_1);\n } else {\n var parentModel = parent.getModel();\n node.set('originAttrs', {\n x: parentModel.x,\n y: parentModel.y\n });\n }\n }\n\n var childrenList = parent.get('children');\n\n if (!childrenList) {\n parent.set('children', [node]);\n } else {\n childrenList.push(node);\n }\n\n self.addItem('edge', {\n source: parent.get('id'),\n target: node.get('id'),\n id: \"\".concat(parent.get('id'), \":\").concat(node.get('id'))\n }, false);\n } // 渲染到视图上应参考布局的children, 避免多绘制了收起的节点\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(treeData.children || [], function (child) {\n self.innerAddChild(child, node, animate);\n });\n self.emit('afteraddchild', {\n item: node,\n parent: parent\n });\n return node;\n };\n /**\n * 将数据上的变更转换到视图上\n * @param data\n * @param parent\n * @param animate\n */\n\n\n TreeGraph.prototype.innerUpdateChild = function (data, parent, animate) {\n var self = this;\n var current = self.findById(data.id); // 若子树不存在,整体添加即可\n\n if (!current) {\n self.innerAddChild(data, parent, animate);\n return;\n } // 更新新节点下所有子节点\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(data.children || [], function (child) {\n self.innerUpdateChild(child, current, animate);\n }); // 用现在节点的children实例来删除移除的子节点\n\n var children = current.get('children');\n\n if (children) {\n var len = children.length;\n\n if (len > 0) {\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i].getModel();\n\n if (TreeGraph.indexOfChild(data.children || [], child.id) === -1) {\n self.innerRemoveChild(child.id, {\n x: data.x,\n y: data.y\n }, animate); // 更新父节点下缓存的子节点 item 实例列表\n\n children.splice(i, 1);\n }\n }\n }\n }\n\n var oriX;\n var oriY;\n\n if (current.get('originAttrs')) {\n oriX = current.get('originAttrs').x;\n oriY = current.get('originAttrs').y;\n }\n\n var model = current.getModel();\n\n if (animate) {\n // 如果有动画,先缓存节点运动再更新节点\n current.set('originAttrs', {\n x: model.x,\n y: model.y\n });\n }\n\n current.set('model', data.data);\n\n if (oriX !== data.x || oriY !== data.y) {\n current.updatePosition({\n x: data.x,\n y: data.y\n });\n }\n };\n /**\n * 删除子节点Item对象\n * @param id\n * @param to\n * @param animate\n */\n\n\n TreeGraph.prototype.innerRemoveChild = function (id, to, animate) {\n var self = this;\n var node = self.findById(id);\n\n if (!node) {\n return;\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(node.get('children'), function (child) {\n self.innerRemoveChild(child.getModel().id, to, animate);\n });\n\n if (animate) {\n var model = node.getModel();\n node.set('to', to);\n node.set('originAttrs', {\n x: model.x,\n y: model.y\n });\n self.get('removeList').push(node);\n } else {\n self.removeItem(node, false);\n }\n };\n /**\n * 更新数据模型,差量更新并重新渲染\n * @param {object} data 数据模型\n */\n\n\n TreeGraph.prototype.changeData = function (data) {\n var self = this; // 更改数据源后,取消所有状态\n\n this.getNodes().map(function (node) {\n return self.clearItemStates(node);\n });\n this.getEdges().map(function (edge) {\n return self.clearItemStates(edge);\n });\n\n if (data) {\n self.data(data);\n self.render();\n } else {\n self.layout(this.get('fitView'));\n }\n };\n /**\n * 已更名为 updateLayout,为保持兼容暂且保留。\n * 更改并应用树布局算法\n * @param {object} layout 布局算法\n */\n\n\n TreeGraph.prototype.changeLayout = function (layout) {\n // eslint-disable-next-line no-console\n console.warn('Please call updateLayout instead of changeLayout. changeLayout will be discarded soon');\n var self = this;\n self.updateLayout(layout);\n };\n /**\n * 更改并应用树布局算法\n * @param {object} layout 布局算法\n */\n\n\n TreeGraph.prototype.updateLayout = function (layout) {\n var self = this;\n\n if (!layout) {\n // eslint-disable-next-line no-console\n console.warn('layout cannot be null');\n return;\n }\n\n self.set('layout', layout);\n self.set('layoutMethod', self.getLayout());\n self.layout();\n };\n /**\n * 已更名为 layout,为保持兼容暂且保留。\n * 根据目前的 data 刷新布局,更新到画布上。用于变更数据之后刷新视图。\n * @param {boolean} fitView 更新布局时是否需要适应窗口\n */\n\n\n TreeGraph.prototype.refreshLayout = function (fitView) {\n // eslint-disable-next-line no-console\n console.warn('Please call layout instead of refreshLayout. refreshLayout will be discarded soon');\n var self = this;\n self.layout(fitView);\n };\n /**\n * 根据目前的 data 刷新布局,更新到画布上。用于变更数据之后刷新视图。\n * @param {boolean} fitView 更新布局时是否需要适应窗口\n */\n\n\n TreeGraph.prototype.layout = function (fitView) {\n var self = this;\n var data = self.get('data');\n var layoutMethod = self.get('layoutMethod');\n var layoutData = layoutMethod ? layoutMethod(data, self.get('layout')) : data;\n var animate = self.get('animate');\n self.emit('beforerefreshlayout', {\n data: data,\n layoutData: layoutData\n });\n self.emit('beforelayout');\n self.innerUpdateChild(layoutData, undefined, animate);\n\n if (fitView) {\n var viewController = self.get('viewController');\n viewController.fitView();\n }\n\n if (!animate) {\n // 如果没有动画,目前仅更新了节点的位置,刷新一下边的样式\n self.refresh();\n self.paint();\n } else {\n self.layoutAnimate(layoutData);\n }\n\n self.emit('afterrefreshlayout', {\n data: data,\n layoutData: layoutData\n });\n self.emit('afterlayout');\n };\n /**\n * 添加子树到对应 id 的节点\n * @param {TreeGraphData} data 子树数据模型\n * @param {string} parent 子树的父节点id\n */\n\n\n TreeGraph.prototype.addChild = function (data, parent) {\n var self = this;\n self.emit('beforeaddchild', {\n model: data,\n parent: parent\n }); // 将数据添加到源数据中,走changeData方法\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(parent)) {\n parent = parent.get('id');\n }\n\n var parentData = self.findDataById(parent);\n\n if (parentData) {\n if (!parentData.children) {\n parentData.children = [];\n }\n\n parentData.children.push(data);\n self.changeData();\n }\n };\n /**\n * 更新某个节点下的所有子节点\n * @param {TreeGraphData[]} data 子树数据模型集合\n * @param {string} parent 子树的父节点id\n */\n\n\n TreeGraph.prototype.updateChildren = function (data, parentId) {\n var self = this; // 如果没有父节点或找不到该节点,是全量的更新,直接重置data\n\n if (!parentId || !self.findById(parentId)) {\n console.warn(\"Update children failed! There is no node with id '\".concat(parentId, \"'\"));\n return;\n }\n\n var parentModel = self.findDataById(parentId);\n parentModel.children = data;\n self.changeData();\n };\n /**\n * 更新源数据,差量更新子树\n * @param {TreeGraphData} data 子树数据模型\n * @param {string} parentId 子树的父节点id\n */\n\n\n TreeGraph.prototype.updateChild = function (data, parentId) {\n var self = this; // 如果没有父节点或找不到该节点,是全量的更新,直接重置data\n\n if (!parentId || !self.findById(parentId)) {\n self.changeData(data);\n return;\n }\n\n var parentModel = self.findDataById(parentId);\n var current = self.findById(data.id);\n\n if (!parentModel.children) {\n // 当 current 不存在时,children 为空数组\n parentModel.children = [];\n } // 如果不存在该节点,则添加\n\n\n if (!current) {\n parentModel.children.push(data);\n } else {\n var index = TreeGraph.indexOfChild(parentModel.children, data.id);\n parentModel.children[index] = data;\n }\n\n self.changeData();\n };\n /**\n * 删除子树\n * @param {string} id 子树根节点id\n */\n\n\n TreeGraph.prototype.removeChild = function (id) {\n var self = this;\n var node = self.findById(id);\n\n if (!node) {\n return;\n }\n\n var parent = node.get('parent');\n\n if (parent && !parent.destroyed) {\n var parentNode = self.findDataById(parent.get('id'));\n var siblings = parentNode && parentNode.children || [];\n var model = node.getModel();\n var index = TreeGraph.indexOfChild(siblings, model.id);\n siblings.splice(index, 1);\n }\n\n self.changeData();\n };\n /**\n * 根据id获取对应的源数据\n * @param {string} id 元素id\n * @param {TreeGraphData | undefined} parent 从哪个节点开始寻找,为空时从根节点开始查找\n * @return {TreeGraphData} 对应源数据\n */\n\n\n TreeGraph.prototype.findDataById = function (id, parent) {\n var self = this;\n\n if (!parent) {\n parent = self.get('data');\n }\n\n if (id === parent.id) {\n return parent;\n }\n\n var result = null; // eslint-disable-next-line consistent-return\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(parent.children || [], function (child) {\n if (child.id === id) {\n result = child;\n return false;\n }\n\n result = self.findDataById(id, child);\n\n if (result) {\n return false;\n }\n });\n return result;\n };\n /**\n * 布局动画接口,用于数据更新时做节点位置更新的动画\n * @param {TreeGraphData} data 更新的数据\n * @param {function} onFrame 定义节点位置更新时如何移动\n */\n\n\n TreeGraph.prototype.layoutAnimate = function (data, onFrame) {\n var self = this;\n var animateCfg = this.get('animateCfg');\n self.emit('beforeanimate', {\n data: data\n }); // 如果边中没有指定锚点,但是本身有锚点控制,在动画过程中保持锚点不变\n\n self.getEdges().forEach(function (edge) {\n var model = edge.get('model');\n\n if (!model.sourceAnchor) {\n model.sourceAnchor = edge.get('sourceAnchorIndex');\n }\n });\n this.get('canvas').animate(function (ratio) {\n traverseTree(data, function (child) {\n var node = self.findById(child.id); // 只有当存在node的时候才执行\n\n if (node) {\n var origin_2 = node.get('originAttrs');\n var model = node.get('model');\n\n if (!origin_2) {\n origin_2 = {\n x: model.x,\n y: model.y\n };\n node.set('originAttrs', origin_2);\n }\n\n if (onFrame) {\n var attrs = onFrame(node, ratio, origin_2, data);\n node.set('model', Object.assign(model, attrs));\n } else {\n model.x = origin_2.x + (child.x - origin_2.x) * ratio;\n model.y = origin_2.y + (child.y - origin_2.y) * ratio;\n }\n }\n\n return true;\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(self.get('removeList'), function (node) {\n var model = node.getModel();\n var from = node.get('originAttrs');\n var to = node.get('to');\n model.x = from.x + (to.x - from.x) * ratio;\n model.y = from.y + (to.y - from.y) * ratio;\n });\n self.refreshPositions();\n }, {\n duration: animateCfg.duration,\n easing: animateCfg.ease,\n callback: function callback() {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(self.getNodes(), function (node) {\n node.set('originAttrs', null);\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(self.get('removeList'), function (node) {\n self.removeItem(node);\n });\n self.set('removeList', []);\n\n if (animateCfg.callback) {\n animateCfg.callback();\n }\n\n self.emit('afteranimate', {\n data: data\n });\n },\n delay: animateCfg.delay\n });\n };\n /**\n * 立即停止布局动画\n */\n\n\n TreeGraph.prototype.stopLayoutAnimate = function () {\n this.get('canvas').stopAnimate();\n this.emit('layoutanimateend', {\n data: this.get('data')\n });\n this.layoutAnimating = false;\n };\n /**\n * 是否在布局动画\n * @return {boolean} 是否有布局动画\n */\n\n\n TreeGraph.prototype.isLayoutAnimating = function () {\n return this.layoutAnimating;\n };\n /**\n * 根据data接口的数据渲染视图\n */\n\n\n TreeGraph.prototype.render = function () {\n var self = this;\n var data = self.get('data');\n\n if (!data || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isObject\"])(data) || !Object.keys(data).length) {\n throw new Error('data must be defined first');\n }\n\n self.clear();\n self.emit('beforerender');\n self.layout(this.get('fitView'));\n self.emit('afterrender');\n };\n /**\n * 导出图数据\n * @return {object} data\n */\n\n\n TreeGraph.prototype.save = function () {\n return this.get('data');\n };\n\n return TreeGraph;\n}(_graph__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TreeGraph);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvZ3JhcGgvdHJlZS1ncmFwaC5qcz85NWMyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ007QUFDYztBQUMzQjtBQUNDO0FBQzVCLG1CQUFtQiw2Q0FBSTtBQUN2QixtQkFBbUIsNkNBQUk7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQVM7O0FBRVg7QUFDQTs7QUFFQSxrQ0FBa0M7O0FBRWxDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5QkFBeUIsc0RBQVM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLHNEQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLG1CQUFtQjs7QUFFbkIsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSx3REFBd0Q7OztBQUd4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0wsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTCxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLLEVBQUU7O0FBRVA7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHlDQUF5QyxRQUFRO0FBQ2pEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxXQUFXOztBQUV4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0Esb0JBQW9COztBQUVwQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGNBQWM7QUFDM0IsYUFBYSxPQUFPO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLFNBQVMsMkRBQVE7QUFDakI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGdCQUFnQjtBQUM3QixhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0Esb0JBQW9COztBQUVwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGNBQWM7QUFDM0IsYUFBYSxPQUFPO0FBQ3BCOzs7QUFHQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLDBCQUEwQjtBQUN2QyxjQUFjLGNBQWM7QUFDNUI7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0I7O0FBRXRCLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGNBQWM7QUFDM0IsYUFBYSxTQUFTO0FBQ3RCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsTUFBTSx1REFBSTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUztBQUNULFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsMkRBQVE7QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDhDQUFLOztBQUVRLHdFQUFTIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2dyYXBoL3RyZWUtZ3JhcGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBIaWVyYXJjaHkgZnJvbSAnQGFudHYvaGllcmFyY2h5JztcbmltcG9ydCB7IGVhY2gsIGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgR3JhcGggZnJvbSAnLi9ncmFwaCc7XG52YXIgcmFkaWFsTGF5b3V0ID0gVXRpbC5yYWRpYWxMYXlvdXQsXG4gICAgdHJhdmVyc2VUcmVlID0gVXRpbC50cmF2ZXJzZVRyZWU7XG5cbnZhciBUcmVlR3JhcGggPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoVHJlZUdyYXBoLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIFRyZWVHcmFwaChjZmcpIHtcbiAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBjZmcpIHx8IHRoaXM7XG5cbiAgICBfdGhpcy5sYXlvdXRBbmltYXRpbmcgPSBmYWxzZTsgLy8g55So5LqO57yT5a2Y5Yqo55S757uT5p2f5ZCO6ZyA6KaB5Yig6Zmk55qE6IqC54K5XG5cbiAgICBfdGhpcy5zZXQoJ3JlbW92ZUxpc3QnLCBbXSk7XG5cbiAgICBfdGhpcy5zZXQoJ2xheW91dE1ldGhvZCcsIF90aGlzLmdldExheW91dCgpKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICAvKipcbiAgICog6YCa6L+HIExheW91dCDphY3nva7ojrflj5bluIPlsYDphY3nva5cbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLmdldExheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGF5b3V0ID0gdGhpcy5nZXQoJ2xheW91dCcpO1xuXG4gICAgaWYgKCFsYXlvdXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbGF5b3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gbGF5b3V0O1xuICAgIH1cblxuICAgIGlmICghbGF5b3V0LnR5cGUpIHtcbiAgICAgIGxheW91dC50eXBlID0gJ2RlbmRyb2dyYW0nO1xuICAgIH1cblxuICAgIGlmICghbGF5b3V0LmRpcmVjdGlvbikge1xuICAgICAgbGF5b3V0LmRpcmVjdGlvbiA9ICdUQic7XG4gICAgfVxuXG4gICAgaWYgKGxheW91dC5yYWRpYWwpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB2YXIgbGF5b3V0RGF0YSA9IEhpZXJhcmNoeVtsYXlvdXQudHlwZV0oZGF0YSwgbGF5b3V0KTtcbiAgICAgICAgcmFkaWFsTGF5b3V0KGxheW91dERhdGEpO1xuICAgICAgICByZXR1cm4gbGF5b3V0RGF0YTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICByZXR1cm4gSGllcmFyY2h5W2xheW91dC50eXBlXShkYXRhLCBsYXlvdXQpO1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDov5Tlm57mjIflrproioLngrnlnKjmoJHlm77mlbDmja7kuK3nmoTntKLlvJVcbiAgICogQHBhcmFtIGNoaWxkcmVuIOagkeWbvuaVsOaNrlxuICAgKiBAcGFyYW0gY2hpbGQg5qCR5Zu+5Lit5p+Q5LiA5LiqIEl0ZW0g55qE5pWw5o2uXG4gICAqL1xuXG5cbiAgVHJlZUdyYXBoLmluZGV4T2ZDaGlsZCA9IGZ1bmN0aW9uIChjaGlsZHJlbiwgaWQpIHtcbiAgICB2YXIgaW5kZXggPSAtMTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG5cbiAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoZm9ybWVyLCBpKSB7XG4gICAgICBpZiAoaWQgPT09IGZvcm1lci5pZCkge1xuICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH07XG5cbiAgVHJlZUdyYXBoLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjZmcgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRDZmcuY2FsbCh0aGlzKTsgLy8g5qCR5Zu+6buY6K6k5omT5byA5Yqo55S7XG5cblxuICAgIGNmZy5hbmltYXRlID0gdHJ1ZTtcbiAgICByZXR1cm4gY2ZnO1xuICB9O1xuICAvKipcbiAgICog5ZCR8J+MsuagkeS4rea3u+WKoOaVsOaNrlxuICAgKiBAcGFyYW0gdHJlZURhdGEg5qCR5Zu+5pWw5o2uXG4gICAqIEBwYXJhbSBwYXJlbnQg54i26IqC54K55a6e5L6LXG4gICAqIEBwYXJhbSBhbmltYXRlIOaYr+WQpuW8gOWQr+WKqOeUu1xuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUuaW5uZXJBZGRDaGlsZCA9IGZ1bmN0aW9uICh0cmVlRGF0YSwgcGFyZW50LCBhbmltYXRlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBtb2RlbCA9IHRyZWVEYXRhLmRhdGE7XG5cbiAgICBpZiAobW9kZWwpIHtcbiAgICAgIC8vIG1vZGVsIOS4reW6lOWtmOWCqOecn+WunueahOaVsOaNru+8jOeJueWIq+aYr+ecn+WunueahCBjaGlsZHJlblxuICAgICAgbW9kZWwueCA9IHRyZWVEYXRhLng7XG4gICAgICBtb2RlbC55ID0gdHJlZURhdGEueTtcbiAgICAgIG1vZGVsLmRlcHRoID0gdHJlZURhdGEuZGVwdGg7XG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSBzZWxmLmFkZEl0ZW0oJ25vZGUnLCBtb2RlbCwgZmFsc2UpO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgbm9kZS5zZXQoJ3BhcmVudCcsIHBhcmVudCk7XG5cbiAgICAgIGlmIChhbmltYXRlKSB7XG4gICAgICAgIHZhciBvcmlnaW5fMSA9IHBhcmVudC5nZXQoJ29yaWdpbkF0dHJzJyk7XG5cbiAgICAgICAgaWYgKG9yaWdpbl8xKSB7XG4gICAgICAgICAgbm9kZS5zZXQoJ29yaWdpbkF0dHJzJywgb3JpZ2luXzEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBwYXJlbnRNb2RlbCA9IHBhcmVudC5nZXRNb2RlbCgpO1xuICAgICAgICAgIG5vZGUuc2V0KCdvcmlnaW5BdHRycycsIHtcbiAgICAgICAgICAgIHg6IHBhcmVudE1vZGVsLngsXG4gICAgICAgICAgICB5OiBwYXJlbnRNb2RlbC55XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGNoaWxkcmVuTGlzdCA9IHBhcmVudC5nZXQoJ2NoaWxkcmVuJyk7XG5cbiAgICAgIGlmICghY2hpbGRyZW5MaXN0KSB7XG4gICAgICAgIHBhcmVudC5zZXQoJ2NoaWxkcmVuJywgW25vZGVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoaWxkcmVuTGlzdC5wdXNoKG5vZGUpO1xuICAgICAgfVxuXG4gICAgICBzZWxmLmFkZEl0ZW0oJ2VkZ2UnLCB7XG4gICAgICAgIHNvdXJjZTogcGFyZW50LmdldCgnaWQnKSxcbiAgICAgICAgdGFyZ2V0OiBub2RlLmdldCgnaWQnKSxcbiAgICAgICAgaWQ6IFwiXCIuY29uY2F0KHBhcmVudC5nZXQoJ2lkJyksIFwiOlwiKS5jb25jYXQobm9kZS5nZXQoJ2lkJykpXG4gICAgICB9LCBmYWxzZSk7XG4gICAgfSAvLyDmuLLmn5PliLDop4blm77kuIrlupTlj4LogIPluIPlsYDnmoRjaGlsZHJlbiwg6YG/5YWN5aSa57uY5Yi25LqG5pS26LW355qE6IqC54K5XG5cblxuICAgIGVhY2godHJlZURhdGEuY2hpbGRyZW4gfHwgW10sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgc2VsZi5pbm5lckFkZENoaWxkKGNoaWxkLCBub2RlLCBhbmltYXRlKTtcbiAgICB9KTtcbiAgICBzZWxmLmVtaXQoJ2FmdGVyYWRkY2hpbGQnLCB7XG4gICAgICBpdGVtOiBub2RlLFxuICAgICAgcGFyZW50OiBwYXJlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuaVsOaNruS4iueahOWPmOabtOi9rOaNouWIsOinhuWbvuS4ilxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcGFyYW0gcGFyZW50XG4gICAqIEBwYXJhbSBhbmltYXRlXG4gICAqL1xuXG5cbiAgVHJlZUdyYXBoLnByb3RvdHlwZS5pbm5lclVwZGF0ZUNoaWxkID0gZnVuY3Rpb24gKGRhdGEsIHBhcmVudCwgYW5pbWF0ZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgY3VycmVudCA9IHNlbGYuZmluZEJ5SWQoZGF0YS5pZCk7IC8vIOiLpeWtkOagkeS4jeWtmOWcqO+8jOaVtOS9k+a3u+WKoOWNs+WPr1xuXG4gICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICBzZWxmLmlubmVyQWRkQ2hpbGQoZGF0YSwgcGFyZW50LCBhbmltYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIOabtOaWsOaWsOiKgueCueS4i+aJgOacieWtkOiKgueCuVxuXG5cbiAgICBlYWNoKGRhdGEuY2hpbGRyZW4gfHwgW10sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgc2VsZi5pbm5lclVwZGF0ZUNoaWxkKGNoaWxkLCBjdXJyZW50LCBhbmltYXRlKTtcbiAgICB9KTsgLy8g55So546w5Zyo6IqC54K555qEY2hpbGRyZW7lrp7kvovmnaXliKDpmaTnp7vpmaTnmoTlrZDoioLngrlcblxuICAgIHZhciBjaGlsZHJlbiA9IGN1cnJlbnQuZ2V0KCdjaGlsZHJlbicpO1xuXG4gICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICB2YXIgbGVuID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICBpZiAobGVuID4gMCkge1xuICAgICAgICBmb3IgKHZhciBpID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXS5nZXRNb2RlbCgpO1xuXG4gICAgICAgICAgaWYgKFRyZWVHcmFwaC5pbmRleE9mQ2hpbGQoZGF0YS5jaGlsZHJlbiB8fCBbXSwgY2hpbGQuaWQpID09PSAtMSkge1xuICAgICAgICAgICAgc2VsZi5pbm5lclJlbW92ZUNoaWxkKGNoaWxkLmlkLCB7XG4gICAgICAgICAgICAgIHg6IGRhdGEueCxcbiAgICAgICAgICAgICAgeTogZGF0YS55XG4gICAgICAgICAgICB9LCBhbmltYXRlKTsgLy8g5pu05paw54i26IqC54K55LiL57yT5a2Y55qE5a2Q6IqC54K5IGl0ZW0g5a6e5L6L5YiX6KGoXG5cbiAgICAgICAgICAgIGNoaWxkcmVuLnNwbGljZShpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgb3JpWDtcbiAgICB2YXIgb3JpWTtcblxuICAgIGlmIChjdXJyZW50LmdldCgnb3JpZ2luQXR0cnMnKSkge1xuICAgICAgb3JpWCA9IGN1cnJlbnQuZ2V0KCdvcmlnaW5BdHRycycpLng7XG4gICAgICBvcmlZID0gY3VycmVudC5nZXQoJ29yaWdpbkF0dHJzJykueTtcbiAgICB9XG5cbiAgICB2YXIgbW9kZWwgPSBjdXJyZW50LmdldE1vZGVsKCk7XG5cbiAgICBpZiAoYW5pbWF0ZSkge1xuICAgICAgLy8g5aaC5p6c5pyJ5Yqo55S777yM5YWI57yT5a2Y6IqC54K56L+Q5Yqo5YaN5pu05paw6IqC54K5XG4gICAgICBjdXJyZW50LnNldCgnb3JpZ2luQXR0cnMnLCB7XG4gICAgICAgIHg6IG1vZGVsLngsXG4gICAgICAgIHk6IG1vZGVsLnlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGN1cnJlbnQuc2V0KCdtb2RlbCcsIGRhdGEuZGF0YSk7XG5cbiAgICBpZiAob3JpWCAhPT0gZGF0YS54IHx8IG9yaVkgIT09IGRhdGEueSkge1xuICAgICAgY3VycmVudC51cGRhdGVQb3NpdGlvbih7XG4gICAgICAgIHg6IGRhdGEueCxcbiAgICAgICAgeTogZGF0YS55XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTlrZDoioLngrlJdGVt5a+56LGhXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gdG9cbiAgICogQHBhcmFtIGFuaW1hdGVcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLmlubmVyUmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiAoaWQsIHRvLCBhbmltYXRlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBub2RlID0gc2VsZi5maW5kQnlJZChpZCk7XG5cbiAgICBpZiAoIW5vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlYWNoKG5vZGUuZ2V0KCdjaGlsZHJlbicpLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIHNlbGYuaW5uZXJSZW1vdmVDaGlsZChjaGlsZC5nZXRNb2RlbCgpLmlkLCB0bywgYW5pbWF0ZSk7XG4gICAgfSk7XG5cbiAgICBpZiAoYW5pbWF0ZSkge1xuICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgICAgbm9kZS5zZXQoJ3RvJywgdG8pO1xuICAgICAgbm9kZS5zZXQoJ29yaWdpbkF0dHJzJywge1xuICAgICAgICB4OiBtb2RlbC54LFxuICAgICAgICB5OiBtb2RlbC55XG4gICAgICB9KTtcbiAgICAgIHNlbGYuZ2V0KCdyZW1vdmVMaXN0JykucHVzaChub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5yZW1vdmVJdGVtKG5vZGUsIGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrDmlbDmja7mqKHlnovvvIzlt67ph4/mm7TmlrDlubbph43mlrDmuLLmn5NcbiAgICogQHBhcmFtIHtvYmplY3R9IGRhdGEg5pWw5o2u5qih5Z6LXG4gICAqL1xuXG5cbiAgVHJlZUdyYXBoLnByb3RvdHlwZS5jaGFuZ2VEYXRhID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7IC8vIOabtOaUueaVsOaNrua6kOWQju+8jOWPlua2iOaJgOacieeKtuaAgVxuXG4gICAgdGhpcy5nZXROb2RlcygpLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIHNlbGYuY2xlYXJJdGVtU3RhdGVzKG5vZGUpO1xuICAgIH0pO1xuICAgIHRoaXMuZ2V0RWRnZXMoKS5tYXAoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBzZWxmLmNsZWFySXRlbVN0YXRlcyhlZGdlKTtcbiAgICB9KTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBzZWxmLmRhdGEoZGF0YSk7XG4gICAgICBzZWxmLnJlbmRlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLmxheW91dCh0aGlzLmdldCgnZml0VmlldycpKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDlt7Lmm7TlkI3kuLogdXBkYXRlTGF5b3V077yM5Li65L+d5oyB5YW85a655pqC5LiU5L+d55WZ44CCXG4gICAqIOabtOaUueW5tuW6lOeUqOagkeW4g+WxgOeul+azlVxuICAgKiBAcGFyYW0ge29iamVjdH0gbGF5b3V0IOW4g+WxgOeul+azlVxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUuY2hhbmdlTGF5b3V0ID0gZnVuY3Rpb24gKGxheW91dCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS53YXJuKCdQbGVhc2UgY2FsbCB1cGRhdGVMYXlvdXQgaW5zdGVhZCBvZiBjaGFuZ2VMYXlvdXQuIGNoYW5nZUxheW91dCB3aWxsIGJlIGRpc2NhcmRlZCBzb29uJyk7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYudXBkYXRlTGF5b3V0KGxheW91dCk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlLnlubblupTnlKjmoJHluIPlsYDnrpfms5VcbiAgICogQHBhcmFtIHtvYmplY3R9IGxheW91dCDluIPlsYDnrpfms5VcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLnVwZGF0ZUxheW91dCA9IGZ1bmN0aW9uIChsYXlvdXQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAoIWxheW91dCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybignbGF5b3V0IGNhbm5vdCBiZSBudWxsJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2VsZi5zZXQoJ2xheW91dCcsIGxheW91dCk7XG4gICAgc2VsZi5zZXQoJ2xheW91dE1ldGhvZCcsIHNlbGYuZ2V0TGF5b3V0KCkpO1xuICAgIHNlbGYubGF5b3V0KCk7XG4gIH07XG4gIC8qKlxuICAgKiDlt7Lmm7TlkI3kuLogbGF5b3V077yM5Li65L+d5oyB5YW85a655pqC5LiU5L+d55WZ44CCXG4gICAqIOagueaNruebruWJjeeahCBkYXRhIOWIt+aWsOW4g+WxgO+8jOabtOaWsOWIsOeUu+W4g+S4iuOAgueUqOS6juWPmOabtOaVsOaNruS5i+WQjuWIt+aWsOinhuWbvuOAglxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZpdFZpZXcg5pu05paw5biD5bGA5pe25piv5ZCm6ZyA6KaB6YCC5bqU56qX5Y+jXG4gICAqL1xuXG5cbiAgVHJlZUdyYXBoLnByb3RvdHlwZS5yZWZyZXNoTGF5b3V0ID0gZnVuY3Rpb24gKGZpdFZpZXcpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUud2FybignUGxlYXNlIGNhbGwgbGF5b3V0IGluc3RlYWQgb2YgcmVmcmVzaExheW91dC4gcmVmcmVzaExheW91dCB3aWxsIGJlIGRpc2NhcmRlZCBzb29uJyk7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYubGF5b3V0KGZpdFZpZXcpO1xuICB9O1xuICAvKipcbiAgICog5qC55o2u55uu5YmN55qEIGRhdGEg5Yi35paw5biD5bGA77yM5pu05paw5Yiw55S75biD5LiK44CC55So5LqO5Y+Y5pu05pWw5o2u5LmL5ZCO5Yi35paw6KeG5Zu+44CCXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZml0VmlldyDmm7TmlrDluIPlsYDml7bmmK/lkKbpnIDopoHpgILlupTnqpflj6NcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLmxheW91dCA9IGZ1bmN0aW9uIChmaXRWaWV3KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBkYXRhID0gc2VsZi5nZXQoJ2RhdGEnKTtcbiAgICB2YXIgbGF5b3V0TWV0aG9kID0gc2VsZi5nZXQoJ2xheW91dE1ldGhvZCcpO1xuICAgIHZhciBsYXlvdXREYXRhID0gbGF5b3V0TWV0aG9kID8gbGF5b3V0TWV0aG9kKGRhdGEsIHNlbGYuZ2V0KCdsYXlvdXQnKSkgOiBkYXRhO1xuICAgIHZhciBhbmltYXRlID0gc2VsZi5nZXQoJ2FuaW1hdGUnKTtcbiAgICBzZWxmLmVtaXQoJ2JlZm9yZXJlZnJlc2hsYXlvdXQnLCB7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgbGF5b3V0RGF0YTogbGF5b3V0RGF0YVxuICAgIH0pO1xuICAgIHNlbGYuZW1pdCgnYmVmb3JlbGF5b3V0Jyk7XG4gICAgc2VsZi5pbm5lclVwZGF0ZUNoaWxkKGxheW91dERhdGEsIHVuZGVmaW5lZCwgYW5pbWF0ZSk7XG5cbiAgICBpZiAoZml0Vmlldykge1xuICAgICAgdmFyIHZpZXdDb250cm9sbGVyID0gc2VsZi5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgICB2aWV3Q29udHJvbGxlci5maXRWaWV3KCk7XG4gICAgfVxuXG4gICAgaWYgKCFhbmltYXRlKSB7XG4gICAgICAvLyDlpoLmnpzmsqHmnInliqjnlLvvvIznm67liY3ku4Xmm7TmlrDkuoboioLngrnnmoTkvY3nva7vvIzliLfmlrDkuIDkuIvovrnnmoTmoLflvI9cbiAgICAgIHNlbGYucmVmcmVzaCgpO1xuICAgICAgc2VsZi5wYWludCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLmxheW91dEFuaW1hdGUobGF5b3V0RGF0YSk7XG4gICAgfVxuXG4gICAgc2VsZi5lbWl0KCdhZnRlcnJlZnJlc2hsYXlvdXQnLCB7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgbGF5b3V0RGF0YTogbGF5b3V0RGF0YVxuICAgIH0pO1xuICAgIHNlbGYuZW1pdCgnYWZ0ZXJsYXlvdXQnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOa3u+WKoOWtkOagkeWIsOWvueW6lCBpZCDnmoToioLngrlcbiAgICogQHBhcmFtIHtUcmVlR3JhcGhEYXRhfSBkYXRhIOWtkOagkeaVsOaNruaooeWei1xuICAgKiBAcGFyYW0ge3N0cmluZ30gcGFyZW50IOWtkOagkeeahOeItuiKgueCuWlkXG4gICAqL1xuXG5cbiAgVHJlZUdyYXBoLnByb3RvdHlwZS5hZGRDaGlsZCA9IGZ1bmN0aW9uIChkYXRhLCBwYXJlbnQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5lbWl0KCdiZWZvcmVhZGRjaGlsZCcsIHtcbiAgICAgIG1vZGVsOiBkYXRhLFxuICAgICAgcGFyZW50OiBwYXJlbnRcbiAgICB9KTsgLy8g5bCG5pWw5o2u5re75Yqg5Yiw5rqQ5pWw5o2u5Lit77yM6LWwY2hhbmdlRGF0YeaWueazlVxuXG4gICAgaWYgKCFpc1N0cmluZyhwYXJlbnQpKSB7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQuZ2V0KCdpZCcpO1xuICAgIH1cblxuICAgIHZhciBwYXJlbnREYXRhID0gc2VsZi5maW5kRGF0YUJ5SWQocGFyZW50KTtcblxuICAgIGlmIChwYXJlbnREYXRhKSB7XG4gICAgICBpZiAoIXBhcmVudERhdGEuY2hpbGRyZW4pIHtcbiAgICAgICAgcGFyZW50RGF0YS5jaGlsZHJlbiA9IFtdO1xuICAgICAgfVxuXG4gICAgICBwYXJlbnREYXRhLmNoaWxkcmVuLnB1c2goZGF0YSk7XG4gICAgICBzZWxmLmNoYW5nZURhdGEoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrDmn5DkuKroioLngrnkuIvnmoTmiYDmnInlrZDoioLngrlcbiAgICogQHBhcmFtIHtUcmVlR3JhcGhEYXRhW119IGRhdGEg5a2Q5qCR5pWw5o2u5qih5Z6L6ZuG5ZCIXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnQg5a2Q5qCR55qE54i26IqC54K5aWRcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLnVwZGF0ZUNoaWxkcmVuID0gZnVuY3Rpb24gKGRhdGEsIHBhcmVudElkKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzOyAvLyDlpoLmnpzmsqHmnInniLboioLngrnmiJbmib7kuI3liLDor6XoioLngrnvvIzmmK/lhajph4/nmoTmm7TmlrDvvIznm7TmjqXph43nva5kYXRhXG5cbiAgICBpZiAoIXBhcmVudElkIHx8ICFzZWxmLmZpbmRCeUlkKHBhcmVudElkKSkge1xuICAgICAgY29uc29sZS53YXJuKFwiVXBkYXRlIGNoaWxkcmVuIGZhaWxlZCEgVGhlcmUgaXMgbm8gbm9kZSB3aXRoIGlkICdcIi5jb25jYXQocGFyZW50SWQsIFwiJ1wiKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudE1vZGVsID0gc2VsZi5maW5kRGF0YUJ5SWQocGFyZW50SWQpO1xuICAgIHBhcmVudE1vZGVsLmNoaWxkcmVuID0gZGF0YTtcbiAgICBzZWxmLmNoYW5nZURhdGEoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOa6kOaVsOaNru+8jOW3rumHj+abtOaWsOWtkOagkVxuICAgKiBAcGFyYW0ge1RyZWVHcmFwaERhdGF9IGRhdGEg5a2Q5qCR5pWw5o2u5qih5Z6LXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRJZCDlrZDmoJHnmoTniLboioLngrlpZFxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUudXBkYXRlQ2hpbGQgPSBmdW5jdGlvbiAoZGF0YSwgcGFyZW50SWQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7IC8vIOWmguaenOayoeacieeItuiKgueCueaIluaJvuS4jeWIsOivpeiKgueCue+8jOaYr+WFqOmHj+eahOabtOaWsO+8jOebtOaOpemHjee9rmRhdGFcblxuICAgIGlmICghcGFyZW50SWQgfHwgIXNlbGYuZmluZEJ5SWQocGFyZW50SWQpKSB7XG4gICAgICBzZWxmLmNoYW5nZURhdGEoZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudE1vZGVsID0gc2VsZi5maW5kRGF0YUJ5SWQocGFyZW50SWQpO1xuICAgIHZhciBjdXJyZW50ID0gc2VsZi5maW5kQnlJZChkYXRhLmlkKTtcblxuICAgIGlmICghcGFyZW50TW9kZWwuY2hpbGRyZW4pIHtcbiAgICAgIC8vIOW9kyBjdXJyZW50IOS4jeWtmOWcqOaXtu+8jGNoaWxkcmVuIOS4uuepuuaVsOe7hFxuICAgICAgcGFyZW50TW9kZWwuY2hpbGRyZW4gPSBbXTtcbiAgICB9IC8vIOWmguaenOS4jeWtmOWcqOivpeiKgueCue+8jOWImea3u+WKoFxuXG5cbiAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgIHBhcmVudE1vZGVsLmNoaWxkcmVuLnB1c2goZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpbmRleCA9IFRyZWVHcmFwaC5pbmRleE9mQ2hpbGQocGFyZW50TW9kZWwuY2hpbGRyZW4sIGRhdGEuaWQpO1xuICAgICAgcGFyZW50TW9kZWwuY2hpbGRyZW5baW5kZXhdID0gZGF0YTtcbiAgICB9XG5cbiAgICBzZWxmLmNoYW5nZURhdGEoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWtkOagkVxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQg5a2Q5qCR5qC56IqC54K5aWRcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBub2RlID0gc2VsZi5maW5kQnlJZChpZCk7XG5cbiAgICBpZiAoIW5vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50ID0gbm9kZS5nZXQoJ3BhcmVudCcpO1xuXG4gICAgaWYgKHBhcmVudCAmJiAhcGFyZW50LmRlc3Ryb3llZCkge1xuICAgICAgdmFyIHBhcmVudE5vZGUgPSBzZWxmLmZpbmREYXRhQnlJZChwYXJlbnQuZ2V0KCdpZCcpKTtcbiAgICAgIHZhciBzaWJsaW5ncyA9IHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS5jaGlsZHJlbiB8fCBbXTtcbiAgICAgIHZhciBtb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcbiAgICAgIHZhciBpbmRleCA9IFRyZWVHcmFwaC5pbmRleE9mQ2hpbGQoc2libGluZ3MsIG1vZGVsLmlkKTtcbiAgICAgIHNpYmxpbmdzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgc2VsZi5jaGFuZ2VEYXRhKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja5pZOiOt+WPluWvueW6lOeahOa6kOaVsOaNrlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQg5YWD57SgaWRcbiAgICogQHBhcmFtIHtUcmVlR3JhcGhEYXRhIHwgdW5kZWZpbmVkfSBwYXJlbnQg5LuO5ZOq5Liq6IqC54K55byA5aeL5a+75om+77yM5Li656m65pe25LuO5qC56IqC54K55byA5aeL5p+l5om+XG4gICAqIEByZXR1cm4ge1RyZWVHcmFwaERhdGF9IOWvueW6lOa6kOaVsOaNrlxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUuZmluZERhdGFCeUlkID0gZnVuY3Rpb24gKGlkLCBwYXJlbnQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgcGFyZW50ID0gc2VsZi5nZXQoJ2RhdGEnKTtcbiAgICB9XG5cbiAgICBpZiAoaWQgPT09IHBhcmVudC5pZCkge1xuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0ID0gbnVsbDsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG5cbiAgICBlYWNoKHBhcmVudC5jaGlsZHJlbiB8fCBbXSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQuaWQgPT09IGlkKSB7XG4gICAgICAgIHJlc3VsdCA9IGNoaWxkO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCA9IHNlbGYuZmluZERhdGFCeUlkKGlkLCBjaGlsZCk7XG5cbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIC8qKlxuICAgKiDluIPlsYDliqjnlLvmjqXlj6PvvIznlKjkuo7mlbDmja7mm7TmlrDml7blgZroioLngrnkvY3nva7mm7TmlrDnmoTliqjnlLtcbiAgICogQHBhcmFtIHtUcmVlR3JhcGhEYXRhfSBkYXRhIOabtOaWsOeahOaVsOaNrlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbkZyYW1lIOWumuS5ieiKgueCueS9jee9ruabtOaWsOaXtuWmguS9leenu+WKqFxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUubGF5b3V0QW5pbWF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBvbkZyYW1lKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBhbmltYXRlQ2ZnID0gdGhpcy5nZXQoJ2FuaW1hdGVDZmcnKTtcbiAgICBzZWxmLmVtaXQoJ2JlZm9yZWFuaW1hdGUnLCB7XG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSk7IC8vIOWmguaenOi+ueS4reayoeacieaMh+WumumUmueCue+8jOS9huaYr+acrOi6q+aciemUmueCueaOp+WItu+8jOWcqOWKqOeUu+i/h+eoi+S4reS/neaMgemUmueCueS4jeWPmFxuXG4gICAgc2VsZi5nZXRFZGdlcygpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBtb2RlbCA9IGVkZ2UuZ2V0KCdtb2RlbCcpO1xuXG4gICAgICBpZiAoIW1vZGVsLnNvdXJjZUFuY2hvcikge1xuICAgICAgICBtb2RlbC5zb3VyY2VBbmNob3IgPSBlZGdlLmdldCgnc291cmNlQW5jaG9ySW5kZXgnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmdldCgnY2FudmFzJykuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgIHRyYXZlcnNlVHJlZShkYXRhLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBzZWxmLmZpbmRCeUlkKGNoaWxkLmlkKTsgLy8g5Y+q5pyJ5b2T5a2Y5Zyobm9kZeeahOaXtuWAmeaJjeaJp+ihjFxuXG4gICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgdmFyIG9yaWdpbl8yID0gbm9kZS5nZXQoJ29yaWdpbkF0dHJzJyk7XG4gICAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXQoJ21vZGVsJyk7XG5cbiAgICAgICAgICBpZiAoIW9yaWdpbl8yKSB7XG4gICAgICAgICAgICBvcmlnaW5fMiA9IHtcbiAgICAgICAgICAgICAgeDogbW9kZWwueCxcbiAgICAgICAgICAgICAgeTogbW9kZWwueVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG5vZGUuc2V0KCdvcmlnaW5BdHRycycsIG9yaWdpbl8yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob25GcmFtZSkge1xuICAgICAgICAgICAgdmFyIGF0dHJzID0gb25GcmFtZShub2RlLCByYXRpbywgb3JpZ2luXzIsIGRhdGEpO1xuICAgICAgICAgICAgbm9kZS5zZXQoJ21vZGVsJywgT2JqZWN0LmFzc2lnbihtb2RlbCwgYXR0cnMpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbW9kZWwueCA9IG9yaWdpbl8yLnggKyAoY2hpbGQueCAtIG9yaWdpbl8yLngpICogcmF0aW87XG4gICAgICAgICAgICBtb2RlbC55ID0gb3JpZ2luXzIueSArIChjaGlsZC55IC0gb3JpZ2luXzIueSkgKiByYXRpbztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgZWFjaChzZWxmLmdldCgncmVtb3ZlTGlzdCcpLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgbW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgICAgIHZhciBmcm9tID0gbm9kZS5nZXQoJ29yaWdpbkF0dHJzJyk7XG4gICAgICAgIHZhciB0byA9IG5vZGUuZ2V0KCd0bycpO1xuICAgICAgICBtb2RlbC54ID0gZnJvbS54ICsgKHRvLnggLSBmcm9tLngpICogcmF0aW87XG4gICAgICAgIG1vZGVsLnkgPSBmcm9tLnkgKyAodG8ueSAtIGZyb20ueSkgKiByYXRpbztcbiAgICAgIH0pO1xuICAgICAgc2VsZi5yZWZyZXNoUG9zaXRpb25zKCk7XG4gICAgfSwge1xuICAgICAgZHVyYXRpb246IGFuaW1hdGVDZmcuZHVyYXRpb24sXG4gICAgICBlYXNpbmc6IGFuaW1hdGVDZmcuZWFzZSxcbiAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiBjYWxsYmFjaygpIHtcbiAgICAgICAgZWFjaChzZWxmLmdldE5vZGVzKCksIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgbm9kZS5zZXQoJ29yaWdpbkF0dHJzJywgbnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICBlYWNoKHNlbGYuZ2V0KCdyZW1vdmVMaXN0JyksIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgc2VsZi5yZW1vdmVJdGVtKG5vZGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5zZXQoJ3JlbW92ZUxpc3QnLCBbXSk7XG5cbiAgICAgICAgaWYgKGFuaW1hdGVDZmcuY2FsbGJhY2spIHtcbiAgICAgICAgICBhbmltYXRlQ2ZnLmNhbGxiYWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmVtaXQoJ2FmdGVyYW5pbWF0ZScsIHtcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGRlbGF5OiBhbmltYXRlQ2ZnLmRlbGF5XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDnq4vljbPlgZzmraLluIPlsYDliqjnlLtcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLnN0b3BMYXlvdXRBbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ2V0KCdjYW52YXMnKS5zdG9wQW5pbWF0ZSgpO1xuICAgIHRoaXMuZW1pdCgnbGF5b3V0YW5pbWF0ZWVuZCcsIHtcbiAgICAgIGRhdGE6IHRoaXMuZ2V0KCdkYXRhJylcbiAgICB9KTtcbiAgICB0aGlzLmxheW91dEFuaW1hdGluZyA9IGZhbHNlO1xuICB9O1xuICAvKipcbiAgICog5piv5ZCm5Zyo5biD5bGA5Yqo55S7XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IOaYr+WQpuacieW4g+WxgOWKqOeUu1xuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUuaXNMYXlvdXRBbmltYXRpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0QW5pbWF0aW5nO1xuICB9O1xuICAvKipcbiAgICog5qC55o2uZGF0YeaOpeWPo+eahOaVsOaNrua4suafk+inhuWbvlxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZGF0YSA9IHNlbGYuZ2V0KCdkYXRhJyk7XG5cbiAgICBpZiAoIWRhdGEgfHwgIWlzT2JqZWN0KGRhdGEpIHx8ICFPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGF0YSBtdXN0IGJlIGRlZmluZWQgZmlyc3QnKTtcbiAgICB9XG5cbiAgICBzZWxmLmNsZWFyKCk7XG4gICAgc2VsZi5lbWl0KCdiZWZvcmVyZW5kZXInKTtcbiAgICBzZWxmLmxheW91dCh0aGlzLmdldCgnZml0VmlldycpKTtcbiAgICBzZWxmLmVtaXQoJ2FmdGVycmVuZGVyJyk7XG4gIH07XG4gIC8qKlxuICAgKiDlr7zlh7rlm77mlbDmja5cbiAgICogQHJldHVybiB7b2JqZWN0fSBkYXRhXG4gICAqL1xuXG5cbiAgVHJlZUdyYXBoLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnZGF0YScpO1xuICB9O1xuXG4gIHJldHVybiBUcmVlR3JhcGg7XG59KEdyYXBoKTtcblxuZXhwb3J0IGRlZmF1bHQgVHJlZUdyYXBoOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/graph/tree-graph.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/index.js": /*!**********************************************!*\ !*** ./node_modules/@antv/g6-pc/es/index.js ***! \**********************************************/ /*! exports provided: G6GraphEvent, G6Event, Node, Edge, Combo, Hull, registerNode, registerCombo, AbstractGraph, registerEdge, registerBehavior, AbstractLayout, AbstractEvent, BaseGlobal, Graph, TreeGraph, Util, Layout, TreeLayout, registerLayout, Global, Minimap, Grid, Bundling, Menu, Fisheye, Algorithm, ToolBar, Tooltip, TimeBar, ImageMinimap, EdgeFilterLens, SnapLine, Legend, Arrow, Marker, Shape, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Minimap\", function() { return Minimap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Grid\", function() { return Grid; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Bundling\", function() { return Bundling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Menu\", function() { return Menu; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Fisheye\", function() { return Fisheye; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Algorithm\", function() { return Algorithm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ToolBar\", function() { return ToolBar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Tooltip\", function() { return Tooltip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TimeBar\", function() { return TimeBar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ImageMinimap\", function() { return ImageMinimap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EdgeFilterLens\", function() { return EdgeFilterLens; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SnapLine\", function() { return SnapLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Legend\", function() { return Legend; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Arrow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Marker\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Shape\"]; });\n\n/* harmony import */ var _antv_algorithm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/algorithm */ \"./node_modules/@antv/algorithm/es/index.js\");\n/* harmony import */ var _antv_algorithm_lib_asyncIndex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/algorithm/lib/asyncIndex */ \"./node_modules/@antv/algorithm/lib/asyncIndex.js\");\n/* harmony import */ var _antv_algorithm_lib_asyncIndex__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_antv_algorithm_lib_asyncIndex__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _graph_graph__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./graph/graph */ \"./node_modules/@antv/g6-pc/es/graph/graph.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Graph\", function() { return _graph_graph__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _graph_tree_graph__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./graph/tree-graph */ \"./node_modules/@antv/g6-pc/es/graph/tree-graph.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeGraph\", function() { return _graph_tree_graph__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./layout */ \"./node_modules/@antv/g6-pc/es/layout/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_6__[\"Layout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_6__[\"TreeLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_6__[\"registerLayout\"]; });\n\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./global */ \"./node_modules/@antv/g6-pc/es/global.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Global\", function() { return _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/g6-pc/es/util/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _util__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _plugin__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./plugin */ \"./node_modules/@antv/g6-pc/es/plugin/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./element */ \"./node_modules/@antv/g6-pc/es/element/index.js\");\n/* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./behavior */ \"./node_modules/@antv/g6-pc/es/behavior/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"G6GraphEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"G6Event\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Node\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Edge\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Combo\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Combo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Hull\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Hull\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerNode\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerCombo\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerCombo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGraph\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"AbstractGraph\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerEdge\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerEdge\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerBehavior\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerBehavior\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractLayout\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"AbstractLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractEvent\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"AbstractEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BaseGlobal\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"]; });\n\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./types */ \"./node_modules/@antv/g6-pc/es/types/index.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _interface_graph__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./interface/graph */ \"./node_modules/@antv/g6-pc/es/interface/graph.js\");\n/* empty/unused harmony star reexport */\n\n\n\n\n\n\n\n\n\n\n\n\nvar Algorithm = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_algorithm__WEBPACK_IMPORTED_MODULE_2__), _antv_algorithm_lib_asyncIndex__WEBPACK_IMPORTED_MODULE_3__);\n\nvar Grid = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Grid;\nvar Minimap = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Minimap;\nvar Bundling = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Bundling;\nvar Menu = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Menu;\nvar Fisheye = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Fisheye;\nvar ToolBar = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].ToolBar;\nvar Tooltip = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Tooltip;\nvar TimeBar = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].TimeBar;\nvar ImageMinimap = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].ImageMinimap;\nvar EdgeFilterLens = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].EdgeFilterLens;\nvar SnapLine = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].SnapLine;\nvar Legend = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Legend;\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].version,\n Graph: _graph_graph__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n TreeGraph: _graph_tree_graph__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n Util: _util__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n Layout: _layout__WEBPACK_IMPORTED_MODULE_6__[\"Layout\"],\n TreeLayout: _layout__WEBPACK_IMPORTED_MODULE_6__[\"TreeLayout\"],\n registerLayout: _layout__WEBPACK_IMPORTED_MODULE_6__[\"registerLayout\"],\n Global: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n registerBehavior: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerBehavior\"],\n registerCombo: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerCombo\"],\n registerEdge: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerEdge\"],\n registerNode: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"],\n Minimap: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Minimap,\n Grid: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Grid,\n Bundling: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Bundling,\n Menu: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Menu,\n ToolBar: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].ToolBar,\n Tooltip: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Tooltip,\n Legend: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Legend,\n TimeBar: TimeBar,\n SnapLine: SnapLine,\n Fisheye: Fisheye,\n ImageMinimap: ImageMinimap,\n EdgeFilterLens: EdgeFilterLens,\n Algorithm: Algorithm,\n Arrow: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Arrow\"],\n Marker: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Marker\"],\n Shape: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Shape\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvaW5kZXguanM/YmY4MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsd0NBQWlDO0FBQ2lGO0FBQ2pFO0FBQ2dCO0FBQy9CO0FBQ1M7QUFDbUI7QUFDaEM7QUFDSjtBQUNJO0FBQ1g7QUFDQzs7QUFFcEIsZ0JBQWdCLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxFQUFFLDRDQUFhLEdBQUcsMkRBQWM7O0FBRXBFLFdBQVcsK0NBQU07QUFDakIsY0FBYywrQ0FBTTtBQUNwQixlQUFlLCtDQUFNO0FBQ3JCLFdBQVcsK0NBQU07QUFDakIsY0FBYywrQ0FBTTtBQUNwQixjQUFjLCtDQUFNO0FBQ3BCLGNBQWMsK0NBQU07QUFDcEIsY0FBYywrQ0FBTTtBQUNwQixtQkFBbUIsK0NBQU07QUFDekIscUJBQXFCLCtDQUFNO0FBQzNCLGVBQWUsK0NBQU07QUFDckIsYUFBYSwrQ0FBTTtBQUNXO0FBQ047QUFDVTtBQUNnTTtBQUNuTjtBQUNmLFdBQVcsK0NBQU07QUFDakIsU0FBUyxvREFBSztBQUNkLGFBQWEseURBQVM7QUFDdEIsUUFBUSw2Q0FBSTtBQUNaLFVBQVUsOENBQU07QUFDaEIsY0FBYyxrREFBVTtBQUN4QixrQkFBa0Isc0RBQWM7QUFDaEMsVUFBVSwrQ0FBTTtBQUNoQixvQkFBb0IsOERBQWdCO0FBQ3BDLGlCQUFpQiwyREFBYTtBQUM5QixnQkFBZ0IsMERBQVk7QUFDNUIsZ0JBQWdCLDBEQUFZO0FBQzVCLFdBQVcsK0NBQU07QUFDakIsUUFBUSwrQ0FBTTtBQUNkLFlBQVksK0NBQU07QUFDbEIsUUFBUSwrQ0FBTTtBQUNkLFdBQVcsK0NBQU07QUFDakIsV0FBVywrQ0FBTTtBQUNqQixVQUFVLCtDQUFNO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsbURBQUs7QUFDZCxVQUFVLG9EQUFNO0FBQ2hCLFNBQVMsbURBQUs7QUFDZCxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHJlZ2lzdGVyQmVoYXZpb3IsIHJlZ2lzdGVyQ29tYm8sIHJlZ2lzdGVyRWRnZSwgcmVnaXN0ZXJOb2RlLCBBcnJvdywgTWFya2VyLCBTaGFwZSB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0ICogYXMgQWxnb3JpdGhtU3luYyBmcm9tICdAYW50di9hbGdvcml0aG0nO1xuaW1wb3J0ICogYXMgQWxnb3JpdGhtQXN5bmMgZnJvbSAnQGFudHYvYWxnb3JpdGhtL2xpYi9hc3luY0luZGV4JztcbmltcG9ydCBHcmFwaCBmcm9tICcuL2dyYXBoL2dyYXBoJztcbmltcG9ydCBUcmVlR3JhcGggZnJvbSAnLi9ncmFwaC90cmVlLWdyYXBoJztcbmltcG9ydCB7IFRyZWVMYXlvdXQsIExheW91dCwgcmVnaXN0ZXJMYXlvdXQgfSBmcm9tICcuL2xheW91dCc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4vZ2xvYmFsJztcbmltcG9ydCBVdGlsIGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgUGx1Z2luIGZyb20gJy4vcGx1Z2luJztcbmltcG9ydCAnLi9lbGVtZW50JztcbmltcG9ydCAnLi9iZWhhdmlvcic7XG5cbnZhciBBbGdvcml0aG0gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgQWxnb3JpdGhtU3luYyksIEFsZ29yaXRobUFzeW5jKTtcblxudmFyIEdyaWQgPSBQbHVnaW4uR3JpZDtcbnZhciBNaW5pbWFwID0gUGx1Z2luLk1pbmltYXA7XG52YXIgQnVuZGxpbmcgPSBQbHVnaW4uQnVuZGxpbmc7XG52YXIgTWVudSA9IFBsdWdpbi5NZW51O1xudmFyIEZpc2hleWUgPSBQbHVnaW4uRmlzaGV5ZTtcbnZhciBUb29sQmFyID0gUGx1Z2luLlRvb2xCYXI7XG52YXIgVG9vbHRpcCA9IFBsdWdpbi5Ub29sdGlwO1xudmFyIFRpbWVCYXIgPSBQbHVnaW4uVGltZUJhcjtcbnZhciBJbWFnZU1pbmltYXAgPSBQbHVnaW4uSW1hZ2VNaW5pbWFwO1xudmFyIEVkZ2VGaWx0ZXJMZW5zID0gUGx1Z2luLkVkZ2VGaWx0ZXJMZW5zO1xudmFyIFNuYXBMaW5lID0gUGx1Z2luLlNuYXBMaW5lO1xudmFyIExlZ2VuZCA9IFBsdWdpbi5MZWdlbmQ7XG5leHBvcnQgKiBmcm9tICdAYW50di9nNi1jb3JlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UvZ3JhcGgnO1xuZXhwb3J0IHsgR3JhcGgsIFRyZWVHcmFwaCwgVXRpbCwgTGF5b3V0LCBUcmVlTGF5b3V0LCByZWdpc3RlckxheW91dCwgR2xvYmFsLCBNaW5pbWFwLCBHcmlkLCBCdW5kbGluZywgTWVudSwgRmlzaGV5ZSwgQWxnb3JpdGhtLCBUb29sQmFyLCBUb29sdGlwLCBUaW1lQmFyLCBJbWFnZU1pbmltYXAsIEVkZ2VGaWx0ZXJMZW5zLCBTbmFwTGluZSwgTGVnZW5kLCBBcnJvdywgTWFya2VyLCBTaGFwZSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2ZXJzaW9uOiBHbG9iYWwudmVyc2lvbixcbiAgR3JhcGg6IEdyYXBoLFxuICBUcmVlR3JhcGg6IFRyZWVHcmFwaCxcbiAgVXRpbDogVXRpbCxcbiAgTGF5b3V0OiBMYXlvdXQsXG4gIFRyZWVMYXlvdXQ6IFRyZWVMYXlvdXQsXG4gIHJlZ2lzdGVyTGF5b3V0OiByZWdpc3RlckxheW91dCxcbiAgR2xvYmFsOiBHbG9iYWwsXG4gIHJlZ2lzdGVyQmVoYXZpb3I6IHJlZ2lzdGVyQmVoYXZpb3IsXG4gIHJlZ2lzdGVyQ29tYm86IHJlZ2lzdGVyQ29tYm8sXG4gIHJlZ2lzdGVyRWRnZTogcmVnaXN0ZXJFZGdlLFxuICByZWdpc3Rlck5vZGU6IHJlZ2lzdGVyTm9kZSxcbiAgTWluaW1hcDogUGx1Z2luLk1pbmltYXAsXG4gIEdyaWQ6IFBsdWdpbi5HcmlkLFxuICBCdW5kbGluZzogUGx1Z2luLkJ1bmRsaW5nLFxuICBNZW51OiBQbHVnaW4uTWVudSxcbiAgVG9vbEJhcjogUGx1Z2luLlRvb2xCYXIsXG4gIFRvb2x0aXA6IFBsdWdpbi5Ub29sdGlwLFxuICBMZWdlbmQ6IFBsdWdpbi5MZWdlbmQsXG4gIFRpbWVCYXI6IFRpbWVCYXIsXG4gIFNuYXBMaW5lOiBTbmFwTGluZSxcbiAgRmlzaGV5ZTogRmlzaGV5ZSxcbiAgSW1hZ2VNaW5pbWFwOiBJbWFnZU1pbmltYXAsXG4gIEVkZ2VGaWx0ZXJMZW5zOiBFZGdlRmlsdGVyTGVucyxcbiAgQWxnb3JpdGhtOiBBbGdvcml0aG0sXG4gIEFycm93OiBBcnJvdyxcbiAgTWFya2VyOiBNYXJrZXIsXG4gIFNoYXBlOiBTaGFwZVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/interface/graph.js": /*!********************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/interface/graph.js ***! \********************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvaW50ZXJmYWNlL2dyYXBoLmpzP2UyYWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvaW50ZXJmYWNlL2dyYXBoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/interface/graph.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/layout/index.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/layout/index.js ***! \*****************************************************/ /*! exports provided: TreeLayout, Layout, registerLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerLayout\", function() { return registerLayout; });\n/* harmony import */ var _antv_layout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/layout */ \"./node_modules/@antv/layout/es/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"Layouts\"]; });\n\n/* harmony import */ var _tree_layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tree-layout */ \"./node_modules/@antv/g6-pc/es/layout/tree-layout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeLayout\", function() { return _tree_layout__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('grid', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"GridLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('random', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"RandomLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('force', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"ForceLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('circular', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"CircularLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('dagre', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"DagreLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('radial', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"RadialLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('concentric', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"ConcentricLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('mds', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"MDSLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('fruchterman', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"FruchtermanLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('fruchterman-gpu', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"FruchtermanGPULayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('gForce', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"GForceLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('gForce-gpu', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"GForceGPULayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('comboForce', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"ComboForceLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('forceAtlas2', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"ForceAtlas2Layout\"]);\n\nvar registerLayout = function registerLayout(name, layoutOverride) {\n layoutOverride.isCustomLayout = true;\n _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"Layouts\"][name] = Object(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])(name, layoutOverride);\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvbGF5b3V0L2luZGV4LmpzP2M1YjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFnVDtBQUN6UTtBQUN2QyxtRUFBZSxTQUFTLHVEQUFVO0FBQ2xDLG1FQUFlLFdBQVcseURBQVk7QUFDdEMsbUVBQWUsVUFBVSx3REFBVztBQUNwQyxtRUFBZSxhQUFhLDJEQUFjO0FBQzFDLG1FQUFlLFVBQVUsd0RBQVc7QUFDcEMsbUVBQWUsV0FBVyx5REFBWTtBQUN0QyxtRUFBZSxlQUFlLDZEQUFnQjtBQUM5QyxtRUFBZSxRQUFRLHNEQUFTO0FBQ2hDLG1FQUFlLGdCQUFnQiw4REFBaUI7QUFDaEQsbUVBQWUsb0JBQW9CLGlFQUFvQjtBQUN2RCxtRUFBZSxXQUFXLHlEQUFZO0FBQ3RDLG1FQUFlLGVBQWUsNERBQWU7QUFDN0MsbUVBQWUsZUFBZSw2REFBZ0I7QUFDOUMsbUVBQWUsZ0JBQWdCLDhEQUFpQjs7QUFFaEQ7QUFDQTtBQUNBLEVBQUUsb0RBQU0sU0FBUyxtRUFBZTtBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9sYXlvdXQvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXlvdXRzIGFzIExheW91dCwgcmVnaXN0ZXJMYXlvdXQgYXMgb1JlZ2lzdGVyTGF5b3V0LCBHcmlkTGF5b3V0LCBSYW5kb21MYXlvdXQsIEZvcmNlTGF5b3V0LCBDaXJjdWxhckxheW91dCwgRGFncmVMYXlvdXQsIFJhZGlhbExheW91dCwgQ29uY2VudHJpY0xheW91dCwgTURTTGF5b3V0LCBGcnVjaHRlcm1hbkdQVUxheW91dCwgRnJ1Y2h0ZXJtYW5MYXlvdXQsIEdGb3JjZUxheW91dCwgR0ZvcmNlR1BVTGF5b3V0LCBDb21ib0ZvcmNlTGF5b3V0LCBGb3JjZUF0bGFzMkxheW91dCB9IGZyb20gJ0BhbnR2L2xheW91dCc7XG5pbXBvcnQgVHJlZUxheW91dCBmcm9tICcuL3RyZWUtbGF5b3V0Jztcbm9SZWdpc3RlckxheW91dCgnZ3JpZCcsIEdyaWRMYXlvdXQpO1xub1JlZ2lzdGVyTGF5b3V0KCdyYW5kb20nLCBSYW5kb21MYXlvdXQpO1xub1JlZ2lzdGVyTGF5b3V0KCdmb3JjZScsIEZvcmNlTGF5b3V0KTtcbm9SZWdpc3RlckxheW91dCgnY2lyY3VsYXInLCBDaXJjdWxhckxheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ2RhZ3JlJywgRGFncmVMYXlvdXQpO1xub1JlZ2lzdGVyTGF5b3V0KCdyYWRpYWwnLCBSYWRpYWxMYXlvdXQpO1xub1JlZ2lzdGVyTGF5b3V0KCdjb25jZW50cmljJywgQ29uY2VudHJpY0xheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ21kcycsIE1EU0xheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ2ZydWNodGVybWFuJywgRnJ1Y2h0ZXJtYW5MYXlvdXQpO1xub1JlZ2lzdGVyTGF5b3V0KCdmcnVjaHRlcm1hbi1ncHUnLCBGcnVjaHRlcm1hbkdQVUxheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ2dGb3JjZScsIEdGb3JjZUxheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ2dGb3JjZS1ncHUnLCBHRm9yY2VHUFVMYXlvdXQpO1xub1JlZ2lzdGVyTGF5b3V0KCdjb21ib0ZvcmNlJywgQ29tYm9Gb3JjZUxheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ2ZvcmNlQXRsYXMyJywgRm9yY2VBdGxhczJMYXlvdXQpO1xuXG52YXIgcmVnaXN0ZXJMYXlvdXQgPSBmdW5jdGlvbiByZWdpc3RlckxheW91dChuYW1lLCBsYXlvdXRPdmVycmlkZSkge1xuICBsYXlvdXRPdmVycmlkZS5pc0N1c3RvbUxheW91dCA9IHRydWU7XG4gIExheW91dFtuYW1lXSA9IG9SZWdpc3RlckxheW91dChuYW1lLCBsYXlvdXRPdmVycmlkZSk7XG59O1xuXG5leHBvcnQgeyBUcmVlTGF5b3V0LCBMYXlvdXQsIHJlZ2lzdGVyTGF5b3V0IH07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/layout/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/layout/tree-layout.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/layout/tree-layout.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_hierarchy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/hierarchy */ \"./node_modules/@antv/hierarchy/build/hierarchy.js\");\n/* harmony import */ var _antv_hierarchy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_antv_hierarchy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/g6-pc/es/util/index.js\");\n\n\nvar radialLayout = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].radialLayout;\n\nvar TreeLayout =\n/** @class */\nfunction () {\n function TreeLayout(cfg) {\n this.type = cfg.type;\n this.radial = cfg.radial;\n this.config = cfg;\n }\n\n TreeLayout.prototype.init = function (data) {\n var _this = this;\n\n this.data = data;\n\n if (this.radial) {\n this.layoutMethod = function (data) {\n var layoutData = _antv_hierarchy__WEBPACK_IMPORTED_MODULE_0___default.a[_this.type](data, _this.config);\n\n radialLayout(layoutData);\n return layoutData;\n };\n\n return;\n }\n\n this.layoutMethod = function (data) {\n return _antv_hierarchy__WEBPACK_IMPORTED_MODULE_0___default.a[_this.type](data, _this.config);\n };\n };\n\n TreeLayout.prototype.execute = function () {\n return this.layoutMethod(this.data, this.config);\n };\n\n TreeLayout.prototype.layout = function (data) {\n this.init(data);\n return this.execute();\n };\n\n return TreeLayout;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TreeLayout);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvbGF5b3V0L3RyZWUtbGF5b3V0LmpzPzBjYzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBd0M7QUFDYjtBQUMzQixtQkFBbUIsNkNBQUk7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCLHNEQUFTOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGFBQWEsc0RBQVM7QUFDdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHlFQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2xheW91dC90cmVlLWxheW91dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBIaWVyYXJjaHkgZnJvbSAnQGFudHYvaGllcmFyY2h5JztcbmltcG9ydCBVdGlsIGZyb20gJy4uL3V0aWwnO1xudmFyIHJhZGlhbExheW91dCA9IFV0aWwucmFkaWFsTGF5b3V0O1xuXG52YXIgVHJlZUxheW91dCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRyZWVMYXlvdXQoY2ZnKSB7XG4gICAgdGhpcy50eXBlID0gY2ZnLnR5cGU7XG4gICAgdGhpcy5yYWRpYWwgPSBjZmcucmFkaWFsO1xuICAgIHRoaXMuY29uZmlnID0gY2ZnO1xuICB9XG5cbiAgVHJlZUxheW91dC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG5cbiAgICBpZiAodGhpcy5yYWRpYWwpIHtcbiAgICAgIHRoaXMubGF5b3V0TWV0aG9kID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdmFyIGxheW91dERhdGEgPSBIaWVyYXJjaHlbX3RoaXMudHlwZV0oZGF0YSwgX3RoaXMuY29uZmlnKTtcblxuICAgICAgICByYWRpYWxMYXlvdXQobGF5b3V0RGF0YSk7XG4gICAgICAgIHJldHVybiBsYXlvdXREYXRhO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubGF5b3V0TWV0aG9kID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIHJldHVybiBIaWVyYXJjaHlbX3RoaXMudHlwZV0oZGF0YSwgX3RoaXMuY29uZmlnKTtcbiAgICB9O1xuICB9O1xuXG4gIFRyZWVMYXlvdXQucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0TWV0aG9kKHRoaXMuZGF0YSwgdGhpcy5jb25maWcpO1xuICB9O1xuXG4gIFRyZWVMYXlvdXQucHJvdG90eXBlLmxheW91dCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhpcy5pbml0KGRhdGEpO1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUoKTtcbiAgfTtcblxuICByZXR1cm4gVHJlZUxheW91dDtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgVHJlZUxheW91dDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/layout/tree-layout.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/layout/worker/layout.worker.js": /*!********************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/layout/worker/layout.worker.js ***! \********************************************************************/ /*! exports provided: LayoutWorker */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LayoutWorker\", function() { return LayoutWorker; });\n/* harmony import */ var _work__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./work */ \"./node_modules/@antv/g6-pc/es/layout/worker/work.js\");\n\nvar LayoutWorker = function LayoutWorker(workerScriptURL) {\n if (workerScriptURL === void 0) {\n workerScriptURL = 'https://unpkg.com/@antv/layout@latest/dist/layout.min.js';\n }\n\n function workerCode() {\n var LAYOUT_MESSAGE = {\n // run layout\n RUN: 'LAYOUT_RUN',\n // layout ended with success\n END: 'LAYOUT_END',\n // layout error\n ERROR: 'LAYOUT_ERROR',\n // layout tick, used in force directed layout\n TICK: 'LAYOUT_TICK',\n GPURUN: 'GPU_LAYOUT_RUN',\n GPUEND: 'GPU_LAYOUT_END'\n }; // @ts-ignore\n\n layout.registerLayout('grid', layout.GridLayout); // @ts-ignore\n\n layout.registerLayout('random', layout.RandomLayout); // @ts-ignore\n\n layout.registerLayout('force', layout.ForceLayout); // @ts-ignore\n\n layout.registerLayout('circular', layout.CircularLayout); // @ts-ignore\n\n layout.registerLayout('dagre', layout.DagreLayout); // @ts-ignore\n\n layout.registerLayout('radial', layout.RadialLayout); // @ts-ignore\n\n layout.registerLayout('concentric', layout.ConcentricLayout); // @ts-ignore\n\n layout.registerLayout('mds', layout.MDSLayout); // @ts-ignore\n\n layout.registerLayout('fruchterman', layout.FruchtermanLayout); // @ts-ignore\n\n layout.registerLayout('fruchterman-gpu', layout.FruchtermanGPULayout); // @ts-ignore\n\n layout.registerLayout('gForce', layout.GForceLayout); // @ts-ignore\n\n layout.registerLayout('gForce-gpu', layout.GForceGPULayout); // @ts-ignore\n\n layout.registerLayout('comboForce', layout.ComboForceLayout); // @ts-ignore\n\n layout.registerLayout('forceAtlas2', layout.ForceAtlas2Layout);\n\n function isLayoutMessage(event) {\n var type = event.data.type;\n return type === LAYOUT_MESSAGE.RUN || type === LAYOUT_MESSAGE.GPURUN;\n }\n\n function handleLayoutMessage(event) {\n var _this = this;\n\n var type = event.data.type;\n\n switch (type) {\n case LAYOUT_MESSAGE.RUN:\n {\n var _a = event.data,\n nodes_1 = _a.nodes,\n edges = _a.edges,\n _b = _a.layoutCfg,\n layoutCfg = _b === void 0 ? {} : _b;\n var layoutType = layoutCfg.type; // @ts-ignore\n\n var LayoutClass = layout.getLayoutByName(layoutType);\n\n if (!LayoutClass) {\n this.postMessage({\n type: LAYOUT_MESSAGE.ERROR,\n message: \"layout \".concat(layoutType, \" not found\")\n });\n break;\n }\n\n var layoutMethod_1;\n\n layoutCfg.onLayoutEnd = function () {\n _this.postMessage({\n type: LAYOUT_MESSAGE.END,\n nodes: nodes_1\n });\n\n layoutMethod_1 === null || layoutMethod_1 === void 0 ? void 0 : layoutMethod_1.destroy();\n };\n\n layoutMethod_1 = new LayoutClass(layoutCfg);\n layoutMethod_1.init({\n nodes: nodes_1,\n edges: edges\n });\n layoutMethod_1.execute();\n break;\n }\n\n case LAYOUT_MESSAGE.GPURUN:\n {\n var _c = event.data,\n nodes = _c.nodes,\n edges = _c.edges,\n _d = _c.layoutCfg,\n layoutCfg = _d === void 0 ? {} : _d,\n canvas = _c.canvas;\n var layoutType = layoutCfg.type; // @ts-ignore\n\n var LayoutClass = layout.getLayoutByName(layoutType);\n\n if (!LayoutClass) {\n this.postMessage({\n type: LAYOUT_MESSAGE.ERROR,\n message: \"layout \".concat(layoutType, \" not found\")\n });\n break;\n }\n\n if (layoutType.split('-')[1] !== 'gpu') {\n this.postMessage({\n type: LAYOUT_MESSAGE.ERROR,\n message: \"layout \".concat(layoutType, \" does not support GPU\")\n });\n break;\n }\n\n var layoutMethod = new LayoutClass(layoutCfg);\n layoutMethod.init({\n nodes: nodes,\n edges: edges\n });\n layoutMethod.executeWithWorker(canvas, this);\n break;\n }\n\n default:\n break;\n }\n }\n\n onmessage = function onmessage(event) {\n if (isLayoutMessage(event)) {\n handleLayoutMessage(event);\n }\n };\n }\n\n var layoutWorker = new _work__WEBPACK_IMPORTED_MODULE_0__[\"default\"](workerCode, workerScriptURL);\n return layoutWorker;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvbGF5b3V0L3dvcmtlci9sYXlvdXQud29ya2VyLmpzPzBhYWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQStCO0FBQ3hCO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4scURBQXFEOztBQUVyRCx5REFBeUQ7O0FBRXpELHVEQUF1RDs7QUFFdkQsNkRBQTZEOztBQUU3RCx1REFBdUQ7O0FBRXZELHlEQUF5RDs7QUFFekQsaUVBQWlFOztBQUVqRSxtREFBbUQ7O0FBRW5ELG1FQUFtRTs7QUFFbkUsMEVBQTBFOztBQUUxRSx5REFBeUQ7O0FBRXpELGdFQUFnRTs7QUFFaEUsaUVBQWlFOztBQUVqRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDLDRDQUE0Qzs7QUFFNUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7O0FBRWY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0EsNENBQTRDOztBQUU1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsNkNBQVM7QUFDbEM7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9sYXlvdXQvd29ya2VyL2xheW91dC53b3JrZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV2ViV29ya2VyIGZyb20gJy4vd29yayc7XG5leHBvcnQgdmFyIExheW91dFdvcmtlciA9IGZ1bmN0aW9uIExheW91dFdvcmtlcih3b3JrZXJTY3JpcHRVUkwpIHtcbiAgaWYgKHdvcmtlclNjcmlwdFVSTCA9PT0gdm9pZCAwKSB7XG4gICAgd29ya2VyU2NyaXB0VVJMID0gJ2h0dHBzOi8vdW5wa2cuY29tL0BhbnR2L2xheW91dEBsYXRlc3QvZGlzdC9sYXlvdXQubWluLmpzJztcbiAgfVxuXG4gIGZ1bmN0aW9uIHdvcmtlckNvZGUoKSB7XG4gICAgdmFyIExBWU9VVF9NRVNTQUdFID0ge1xuICAgICAgLy8gcnVuIGxheW91dFxuICAgICAgUlVOOiAnTEFZT1VUX1JVTicsXG4gICAgICAvLyBsYXlvdXQgZW5kZWQgd2l0aCBzdWNjZXNzXG4gICAgICBFTkQ6ICdMQVlPVVRfRU5EJyxcbiAgICAgIC8vIGxheW91dCBlcnJvclxuICAgICAgRVJST1I6ICdMQVlPVVRfRVJST1InLFxuICAgICAgLy8gbGF5b3V0IHRpY2ssIHVzZWQgaW4gZm9yY2UgZGlyZWN0ZWQgbGF5b3V0XG4gICAgICBUSUNLOiAnTEFZT1VUX1RJQ0snLFxuICAgICAgR1BVUlVOOiAnR1BVX0xBWU9VVF9SVU4nLFxuICAgICAgR1BVRU5EOiAnR1BVX0xBWU9VVF9FTkQnXG4gICAgfTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgbGF5b3V0LnJlZ2lzdGVyTGF5b3V0KCdncmlkJywgbGF5b3V0LkdyaWRMYXlvdXQpOyAvLyBAdHMtaWdub3JlXG5cbiAgICBsYXlvdXQucmVnaXN0ZXJMYXlvdXQoJ3JhbmRvbScsIGxheW91dC5SYW5kb21MYXlvdXQpOyAvLyBAdHMtaWdub3JlXG5cbiAgICBsYXlvdXQucmVnaXN0ZXJMYXlvdXQoJ2ZvcmNlJywgbGF5b3V0LkZvcmNlTGF5b3V0KTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgbGF5b3V0LnJlZ2lzdGVyTGF5b3V0KCdjaXJjdWxhcicsIGxheW91dC5DaXJjdWxhckxheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgnZGFncmUnLCBsYXlvdXQuRGFncmVMYXlvdXQpOyAvLyBAdHMtaWdub3JlXG5cbiAgICBsYXlvdXQucmVnaXN0ZXJMYXlvdXQoJ3JhZGlhbCcsIGxheW91dC5SYWRpYWxMYXlvdXQpOyAvLyBAdHMtaWdub3JlXG5cbiAgICBsYXlvdXQucmVnaXN0ZXJMYXlvdXQoJ2NvbmNlbnRyaWMnLCBsYXlvdXQuQ29uY2VudHJpY0xheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgnbWRzJywgbGF5b3V0Lk1EU0xheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgnZnJ1Y2h0ZXJtYW4nLCBsYXlvdXQuRnJ1Y2h0ZXJtYW5MYXlvdXQpOyAvLyBAdHMtaWdub3JlXG5cbiAgICBsYXlvdXQucmVnaXN0ZXJMYXlvdXQoJ2ZydWNodGVybWFuLWdwdScsIGxheW91dC5GcnVjaHRlcm1hbkdQVUxheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgnZ0ZvcmNlJywgbGF5b3V0LkdGb3JjZUxheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgnZ0ZvcmNlLWdwdScsIGxheW91dC5HRm9yY2VHUFVMYXlvdXQpOyAvLyBAdHMtaWdub3JlXG5cbiAgICBsYXlvdXQucmVnaXN0ZXJMYXlvdXQoJ2NvbWJvRm9yY2UnLCBsYXlvdXQuQ29tYm9Gb3JjZUxheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgnZm9yY2VBdGxhczInLCBsYXlvdXQuRm9yY2VBdGxhczJMYXlvdXQpO1xuXG4gICAgZnVuY3Rpb24gaXNMYXlvdXRNZXNzYWdlKGV2ZW50KSB7XG4gICAgICB2YXIgdHlwZSA9IGV2ZW50LmRhdGEudHlwZTtcbiAgICAgIHJldHVybiB0eXBlID09PSBMQVlPVVRfTUVTU0FHRS5SVU4gfHwgdHlwZSA9PT0gTEFZT1VUX01FU1NBR0UuR1BVUlVOO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUxheW91dE1lc3NhZ2UoZXZlbnQpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciB0eXBlID0gZXZlbnQuZGF0YS50eXBlO1xuXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBMQVlPVVRfTUVTU0FHRS5SVU46XG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFyIF9hID0gZXZlbnQuZGF0YSxcbiAgICAgICAgICAgICAgICBub2Rlc18xID0gX2Eubm9kZXMsXG4gICAgICAgICAgICAgICAgZWRnZXMgPSBfYS5lZGdlcyxcbiAgICAgICAgICAgICAgICBfYiA9IF9hLmxheW91dENmZyxcbiAgICAgICAgICAgICAgICBsYXlvdXRDZmcgPSBfYiA9PT0gdm9pZCAwID8ge30gOiBfYjtcbiAgICAgICAgICAgIHZhciBsYXlvdXRUeXBlID0gbGF5b3V0Q2ZnLnR5cGU7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgdmFyIExheW91dENsYXNzID0gbGF5b3V0LmdldExheW91dEJ5TmFtZShsYXlvdXRUeXBlKTtcblxuICAgICAgICAgICAgaWYgKCFMYXlvdXRDbGFzcykge1xuICAgICAgICAgICAgICB0aGlzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBMQVlPVVRfTUVTU0FHRS5FUlJPUixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcImxheW91dCBcIi5jb25jYXQobGF5b3V0VHlwZSwgXCIgbm90IGZvdW5kXCIpXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGxheW91dE1ldGhvZF8xO1xuXG4gICAgICAgICAgICBsYXlvdXRDZmcub25MYXlvdXRFbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIF90aGlzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBMQVlPVVRfTUVTU0FHRS5FTkQsXG4gICAgICAgICAgICAgICAgbm9kZXM6IG5vZGVzXzFcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgbGF5b3V0TWV0aG9kXzEgPT09IG51bGwgfHwgbGF5b3V0TWV0aG9kXzEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheW91dE1ldGhvZF8xLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxheW91dE1ldGhvZF8xID0gbmV3IExheW91dENsYXNzKGxheW91dENmZyk7XG4gICAgICAgICAgICBsYXlvdXRNZXRob2RfMS5pbml0KHtcbiAgICAgICAgICAgICAgbm9kZXM6IG5vZGVzXzEsXG4gICAgICAgICAgICAgIGVkZ2VzOiBlZGdlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBsYXlvdXRNZXRob2RfMS5leGVjdXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBMQVlPVVRfTUVTU0FHRS5HUFVSVU46XG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFyIF9jID0gZXZlbnQuZGF0YSxcbiAgICAgICAgICAgICAgICBub2RlcyA9IF9jLm5vZGVzLFxuICAgICAgICAgICAgICAgIGVkZ2VzID0gX2MuZWRnZXMsXG4gICAgICAgICAgICAgICAgX2QgPSBfYy5sYXlvdXRDZmcsXG4gICAgICAgICAgICAgICAgbGF5b3V0Q2ZnID0gX2QgPT09IHZvaWQgMCA/IHt9IDogX2QsXG4gICAgICAgICAgICAgICAgY2FudmFzID0gX2MuY2FudmFzO1xuICAgICAgICAgICAgdmFyIGxheW91dFR5cGUgPSBsYXlvdXRDZmcudHlwZTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICB2YXIgTGF5b3V0Q2xhc3MgPSBsYXlvdXQuZ2V0TGF5b3V0QnlOYW1lKGxheW91dFR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoIUxheW91dENsYXNzKSB7XG4gICAgICAgICAgICAgIHRoaXMucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIHR5cGU6IExBWU9VVF9NRVNTQUdFLkVSUk9SLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwibGF5b3V0IFwiLmNvbmNhdChsYXlvdXRUeXBlLCBcIiBub3QgZm91bmRcIilcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobGF5b3V0VHlwZS5zcGxpdCgnLScpWzFdICE9PSAnZ3B1Jykge1xuICAgICAgICAgICAgICB0aGlzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBMQVlPVVRfTUVTU0FHRS5FUlJPUixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcImxheW91dCBcIi5jb25jYXQobGF5b3V0VHlwZSwgXCIgZG9lcyBub3Qgc3VwcG9ydCBHUFVcIilcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgbGF5b3V0TWV0aG9kID0gbmV3IExheW91dENsYXNzKGxheW91dENmZyk7XG4gICAgICAgICAgICBsYXlvdXRNZXRob2QuaW5pdCh7XG4gICAgICAgICAgICAgIG5vZGVzOiBub2RlcyxcbiAgICAgICAgICAgICAgZWRnZXM6IGVkZ2VzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxheW91dE1ldGhvZC5leGVjdXRlV2l0aFdvcmtlcihjYW52YXMsIHRoaXMpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgb25tZXNzYWdlID0gZnVuY3Rpb24gb25tZXNzYWdlKGV2ZW50KSB7XG4gICAgICBpZiAoaXNMYXlvdXRNZXNzYWdlKGV2ZW50KSkge1xuICAgICAgICBoYW5kbGVMYXlvdXRNZXNzYWdlKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgdmFyIGxheW91dFdvcmtlciA9IG5ldyBXZWJXb3JrZXIod29ya2VyQ29kZSwgd29ya2VyU2NyaXB0VVJMKTtcbiAgcmV0dXJuIGxheW91dFdvcmtlcjtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/layout/worker/layout.worker.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/layout/worker/layoutConst.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/layout/worker/layoutConst.js ***! \******************************************************************/ /*! exports provided: LAYOUT_MESSAGE */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LAYOUT_MESSAGE\", function() { return LAYOUT_MESSAGE; });\n/**\n * @fileoverview constants for layout\n * @author changzhe.zb@antfin.com\n */\n\n/** layout message type */\nvar LAYOUT_MESSAGE = {\n // run layout\n RUN: 'LAYOUT_RUN',\n // layout ended with success\n END: 'LAYOUT_END',\n // layout error\n ERROR: 'LAYOUT_ERROR',\n // layout tick, used in force directed layout\n TICK: 'LAYOUT_TICK',\n GPURUN: 'GPU_LAYOUT_RUN',\n GPUEND: 'GPU_LAYOUT_END'\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvbGF5b3V0L3dvcmtlci9sYXlvdXRDb25zdC5qcz9iMDYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy9sYXlvdXQvd29ya2VyL2xheW91dENvbnN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGNvbnN0YW50cyBmb3IgbGF5b3V0XG4gKiBAYXV0aG9yIGNoYW5nemhlLnpiQGFudGZpbi5jb21cbiAqL1xuXG4vKiogbGF5b3V0IG1lc3NhZ2UgdHlwZSAqL1xuZXhwb3J0IHZhciBMQVlPVVRfTUVTU0FHRSA9IHtcbiAgLy8gcnVuIGxheW91dFxuICBSVU46ICdMQVlPVVRfUlVOJyxcbiAgLy8gbGF5b3V0IGVuZGVkIHdpdGggc3VjY2Vzc1xuICBFTkQ6ICdMQVlPVVRfRU5EJyxcbiAgLy8gbGF5b3V0IGVycm9yXG4gIEVSUk9SOiAnTEFZT1VUX0VSUk9SJyxcbiAgLy8gbGF5b3V0IHRpY2ssIHVzZWQgaW4gZm9yY2UgZGlyZWN0ZWQgbGF5b3V0XG4gIFRJQ0s6ICdMQVlPVVRfVElDSycsXG4gIEdQVVJVTjogJ0dQVV9MQVlPVVRfUlVOJyxcbiAgR1BVRU5EOiAnR1BVX0xBWU9VVF9FTkQnXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/layout/worker/layoutConst.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/layout/worker/work.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/layout/worker/work.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar WebWorker =\n/** @class */\nfunction () {\n function WebWorker(worker, workerScirptURL) {\n var code = worker.toString();\n var blob = new Blob([\"importScripts('\".concat(workerScirptURL, \"');(\").concat(code, \")()\")], {\n type: 'text/javascript'\n });\n return new Worker(URL.createObjectURL(blob));\n }\n\n return WebWorker;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (WebWorker);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvbGF5b3V0L3dvcmtlci93b3JrLmpzPzJjYzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUVBQXVFO0FBQ3ZFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHdFQUFTIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL2xheW91dC93b3JrZXIvd29yay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBXZWJXb3JrZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJXb3JrZXIod29ya2VyLCB3b3JrZXJTY2lycHRVUkwpIHtcbiAgICB2YXIgY29kZSA9IHdvcmtlci50b1N0cmluZygpO1xuICAgIHZhciBibG9iID0gbmV3IEJsb2IoW1wiaW1wb3J0U2NyaXB0cygnXCIuY29uY2F0KHdvcmtlclNjaXJwdFVSTCwgXCInKTsoXCIpLmNvbmNhdChjb2RlLCBcIikoKVwiKV0sIHtcbiAgICAgIHR5cGU6ICd0ZXh0L2phdmFzY3JpcHQnXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSk7XG4gIH1cblxuICByZXR1cm4gV2ViV29ya2VyO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBXZWJXb3JrZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/layout/worker/work.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/plugin/index.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/plugin/index.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g6_plugin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-plugin */ \"./node_modules/@antv/g6-plugin/es/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_antv_g6_plugin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]); // export default {};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvcGx1Z2luL2luZGV4LmpzPzFiZjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFxQztBQUN0QixzSEFBTSxFQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL3BsdWdpbi9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQbHVnaW4gZnJvbSAnQGFudHYvZzYtcGx1Z2luJztcbmV4cG9ydCBkZWZhdWx0IFBsdWdpbjsgLy8gZXhwb3J0IGRlZmF1bHQge307Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/plugin/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/types/index.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/types/index.js ***! \****************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvdHlwZXMvaW5kZXguanM/ODE4ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy90eXBlcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/types/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/util/color.js": /*!***************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/util/color.js ***! \***************************************************/ /*! exports provided: mixColor, getColorsWithSubjectColor, getColorSetsBySubjectColors */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mixColor\", function() { return mixColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColorsWithSubjectColor\", function() { return getColorsWithSubjectColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColorSetsBySubjectColors\", function() { return getColorSetsBySubjectColors; });\n/* harmony import */ var color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! color */ \"./node_modules/color/index.js\");\n/* harmony import */ var color__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(color__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ant_design_colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ant-design/colors */ \"./node_modules/@ant-design/colors/dist/index.esm.js\");\n\n\n/**\n * get the mix color of backColor and frontColor with alpah\n * @param backColor background color\n * @param frontColor foreground color\n * @param frontAlpha the opacity of foreground color\n */\n\nvar mixColor = function mixColor(backColor, frontColor, frontAlpha) {\n var bc = color__WEBPACK_IMPORTED_MODULE_0___default()(backColor);\n var fc = color__WEBPACK_IMPORTED_MODULE_0___default()(frontColor);\n return color__WEBPACK_IMPORTED_MODULE_0___default()([(1 - frontAlpha) * bc.red() + frontAlpha * fc.red(), (1 - frontAlpha) * bc.green() + frontAlpha * fc.green(), (1 - frontAlpha) * bc.blue() + frontAlpha * fc.blue()]).rgb();\n};\n\nvar getColorsWithDefaultTheme = function getColorsWithDefaultTheme(subjectColor, backColor, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n\n if (disableColor === void 0) {\n disableColor = 'rgb(150, 150, 150)';\n }\n\n var subjectColor005 = mixColor(backColor, subjectColor, 0.05).rgb().toString();\n var subjectColor01 = mixColor(backColor, subjectColor, 0.1).rgb().toString();\n var subjectColor02 = mixColor(backColor, subjectColor, 0.2).rgb().toString();\n var subjectColor04 = mixColor(backColor, subjectColor, 0.4).rgb().toString();\n var disableColor002 = mixColor(backColor, disableColor, 0.02).rgb().toString();\n var disableColor005 = mixColor(backColor, disableColor, 0.05).rgb().toString();\n var disableColor01 = mixColor(backColor, disableColor, 0.1).rgb().toString();\n var disableColor02 = mixColor(backColor, disableColor, 0.2).rgb().toString();\n var disableColor03 = mixColor(backColor, disableColor, 0.3).rgb().toString();\n var paletteFromSubject = Object(_ant_design_colors__WEBPACK_IMPORTED_MODULE_1__[\"generate\"])(subjectColor, {\n theme: 'default',\n backgroundColor: backColor\n });\n var subjectHex = color__WEBPACK_IMPORTED_MODULE_0___default()(subjectColor).hex().toLowerCase();\n var subjectIdx = paletteFromSubject.indexOf(subjectHex);\n var deeperSubject = subjectColor;\n\n if (subjectIdx !== -1) {\n deeperSubject = paletteFromSubject[subjectIdx + 1];\n }\n\n return {\n // for nodes\n mainStroke: subjectColor,\n mainFill: subjectColor01,\n activeStroke: subjectColor,\n activeFill: subjectColor005,\n inactiveStroke: subjectColor04,\n inactiveFill: subjectColor005,\n selectedStroke: subjectColor,\n selectedFill: backColor,\n highlightStroke: deeperSubject,\n highlightFill: subjectColor02,\n disableStroke: disableColor03,\n disableFill: disableColor005,\n // for edges\n edgeMainStroke: disableColor03,\n edgeActiveStroke: subjectColor,\n edgeInactiveStroke: disableColor02,\n edgeSelectedStroke: subjectColor,\n edgeHighlightStroke: subjectColor,\n edgeDisableStroke: disableColor01,\n // for combos\n comboMainStroke: disableColor03,\n comboMainFill: disableColor002,\n comboActiveStroke: subjectColor,\n comboActiveFill: subjectColor005,\n comboInactiveStroke: disableColor03,\n comboInactiveFill: disableColor002,\n comboSelectedStroke: subjectColor,\n comboSelectedFill: disableColor002,\n comboHighlightStroke: deeperSubject,\n comboHighlightFill: disableColor002,\n comboDisableStroke: disableColor02,\n comboDisableFill: disableColor005\n };\n};\n\nvar getColorsWithDarkTheme = function getColorsWithDarkTheme(subjectColor, backColor, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n\n if (disableColor === void 0) {\n disableColor = '#777';\n }\n\n var subjectColor02 = mixColor(backColor, subjectColor, 0.2).rgb().toString();\n var subjectColor03 = mixColor(backColor, subjectColor, 0.3).rgb().toString();\n var subjectColor06 = mixColor(backColor, subjectColor, 0.6).rgb().toString();\n var subjectColor08 = mixColor(backColor, subjectColor, 0.8).rgb().toString();\n var disableColor02 = mixColor(backColor, disableColor, 0.2).rgb().toString();\n var disableColor025 = mixColor(backColor, disableColor, 0.25).rgb().toString();\n var disableColor03 = mixColor(backColor, disableColor, 0.3).rgb().toString();\n var disableColor04 = mixColor(backColor, disableColor, 0.4).rgb().toString();\n var disableColor05 = mixColor(backColor, disableColor, 0.5).rgb().toString();\n var paletteFromSubject = Object(_ant_design_colors__WEBPACK_IMPORTED_MODULE_1__[\"generate\"])(subjectColor, {\n theme: 'dark',\n backgroundColor: backColor\n });\n var subjectHex = color__WEBPACK_IMPORTED_MODULE_0___default()(subjectColor).hex().toLowerCase();\n var subjectIdx = paletteFromSubject.indexOf(subjectHex);\n var deeperSubject = subjectColor;\n\n if (subjectIdx !== -1) {\n deeperSubject = paletteFromSubject[subjectIdx + 1];\n }\n\n return {\n // for nodes\n mainStroke: subjectColor08,\n mainFill: subjectColor02,\n activeStroke: subjectColor,\n activeFill: subjectColor03,\n inactiveStroke: subjectColor08,\n inactiveFill: subjectColor02,\n selectedStroke: subjectColor,\n selectedFill: subjectColor02,\n highlightStroke: subjectColor,\n highlightFill: subjectColor06,\n disableStroke: disableColor05,\n disableFill: disableColor025,\n // for edges\n edgeMainStroke: disableColor,\n edgeActiveStroke: subjectColor,\n edgeInactiveStroke: disableColor,\n edgeSelectedStroke: subjectColor,\n edgeHighlightStroke: subjectColor,\n edgeDisableStroke: disableColor03,\n // for combos\n comboMainStroke: disableColor04,\n comboMainFill: disableColor025,\n comboActiveStroke: subjectColor,\n comboActiveFill: disableColor02,\n comboInactiveStroke: disableColor04,\n comboInactiveFill: disableColor025,\n comboSelectedStroke: subjectColor,\n comboSelectedFill: disableColor02,\n comboHighlightStroke: deeperSubject,\n comboHighlightFill: disableColor025,\n comboDisableStroke: disableColor04,\n comboDisableFill: disableColor02\n };\n};\n/**\n * get the set of colors according to the subject color and background color\n * @param subjectColor the subject color\n * @param backColor background color\n * @param disableColor the color for disable state\n */\n\n\nvar getColorsWithSubjectColor = function getColorsWithSubjectColor(subjectColor, backColor, theme, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n\n if (theme === void 0) {\n theme = 'default';\n }\n\n if (disableColor === void 0) {\n disableColor = 'rgb(150, 150, 150)';\n }\n\n if (theme === 'default') return getColorsWithDefaultTheme(subjectColor, backColor, 'rgb(150, 150, 150)');\n return getColorsWithDarkTheme(subjectColor, backColor, '#777');\n};\nvar getColorSetsBySubjectColors = function getColorSetsBySubjectColors(subjectColors, backColor, theme, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n\n if (theme === void 0) {\n theme = 'default';\n }\n\n if (disableColor === void 0) {\n disableColor = 'rgb(150, 150, 150)';\n }\n\n var sets = [];\n subjectColors.forEach(function (sColor) {\n sets.push(getColorsWithSubjectColor(sColor, backColor, theme, disableColor));\n });\n return sets;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvdXRpbC9jb2xvci5qcz82NjZhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBCO0FBQ29CO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLFdBQVcsNENBQUs7QUFDaEIsV0FBVyw0Q0FBSztBQUNoQixTQUFTLDRDQUFLO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixtRUFBUTtBQUNuQztBQUNBO0FBQ0EsR0FBRztBQUNILG1CQUFtQiw0Q0FBSztBQUN4QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixtRUFBUTtBQUNuQztBQUNBO0FBQ0EsR0FBRztBQUNILG1CQUFtQiw0Q0FBSztBQUN4QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy91dGlsL2NvbG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9yIGZyb20gJ2NvbG9yJztcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSAnQGFudC1kZXNpZ24vY29sb3JzJztcbi8qKlxuICogZ2V0IHRoZSBtaXggY29sb3Igb2YgYmFja0NvbG9yIGFuZCBmcm9udENvbG9yIHdpdGggYWxwYWhcbiAqIEBwYXJhbSBiYWNrQ29sb3IgYmFja2dyb3VuZCBjb2xvclxuICogQHBhcmFtIGZyb250Q29sb3IgZm9yZWdyb3VuZCBjb2xvclxuICogQHBhcmFtIGZyb250QWxwaGEgdGhlIG9wYWNpdHkgb2YgZm9yZWdyb3VuZCBjb2xvclxuICovXG5cbmV4cG9ydCB2YXIgbWl4Q29sb3IgPSBmdW5jdGlvbiBtaXhDb2xvcihiYWNrQ29sb3IsIGZyb250Q29sb3IsIGZyb250QWxwaGEpIHtcbiAgdmFyIGJjID0gY29sb3IoYmFja0NvbG9yKTtcbiAgdmFyIGZjID0gY29sb3IoZnJvbnRDb2xvcik7XG4gIHJldHVybiBjb2xvcihbKDEgLSBmcm9udEFscGhhKSAqIGJjLnJlZCgpICsgZnJvbnRBbHBoYSAqIGZjLnJlZCgpLCAoMSAtIGZyb250QWxwaGEpICogYmMuZ3JlZW4oKSArIGZyb250QWxwaGEgKiBmYy5ncmVlbigpLCAoMSAtIGZyb250QWxwaGEpICogYmMuYmx1ZSgpICsgZnJvbnRBbHBoYSAqIGZjLmJsdWUoKV0pLnJnYigpO1xufTtcblxudmFyIGdldENvbG9yc1dpdGhEZWZhdWx0VGhlbWUgPSBmdW5jdGlvbiBnZXRDb2xvcnNXaXRoRGVmYXVsdFRoZW1lKHN1YmplY3RDb2xvciwgYmFja0NvbG9yLCBkaXNhYmxlQ29sb3IpIHtcbiAgaWYgKGJhY2tDb2xvciA9PT0gdm9pZCAwKSB7XG4gICAgYmFja0NvbG9yID0gJyNmZmYnO1xuICB9XG5cbiAgaWYgKGRpc2FibGVDb2xvciA9PT0gdm9pZCAwKSB7XG4gICAgZGlzYWJsZUNvbG9yID0gJ3JnYigxNTAsIDE1MCwgMTUwKSc7XG4gIH1cblxuICB2YXIgc3ViamVjdENvbG9yMDA1ID0gbWl4Q29sb3IoYmFja0NvbG9yLCBzdWJqZWN0Q29sb3IsIDAuMDUpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBzdWJqZWN0Q29sb3IwMSA9IG1peENvbG9yKGJhY2tDb2xvciwgc3ViamVjdENvbG9yLCAwLjEpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBzdWJqZWN0Q29sb3IwMiA9IG1peENvbG9yKGJhY2tDb2xvciwgc3ViamVjdENvbG9yLCAwLjIpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBzdWJqZWN0Q29sb3IwNCA9IG1peENvbG9yKGJhY2tDb2xvciwgc3ViamVjdENvbG9yLCAwLjQpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBkaXNhYmxlQ29sb3IwMDIgPSBtaXhDb2xvcihiYWNrQ29sb3IsIGRpc2FibGVDb2xvciwgMC4wMikucmdiKCkudG9TdHJpbmcoKTtcbiAgdmFyIGRpc2FibGVDb2xvcjAwNSA9IG1peENvbG9yKGJhY2tDb2xvciwgZGlzYWJsZUNvbG9yLCAwLjA1KS5yZ2IoKS50b1N0cmluZygpO1xuICB2YXIgZGlzYWJsZUNvbG9yMDEgPSBtaXhDb2xvcihiYWNrQ29sb3IsIGRpc2FibGVDb2xvciwgMC4xKS5yZ2IoKS50b1N0cmluZygpO1xuICB2YXIgZGlzYWJsZUNvbG9yMDIgPSBtaXhDb2xvcihiYWNrQ29sb3IsIGRpc2FibGVDb2xvciwgMC4yKS5yZ2IoKS50b1N0cmluZygpO1xuICB2YXIgZGlzYWJsZUNvbG9yMDMgPSBtaXhDb2xvcihiYWNrQ29sb3IsIGRpc2FibGVDb2xvciwgMC4zKS5yZ2IoKS50b1N0cmluZygpO1xuICB2YXIgcGFsZXR0ZUZyb21TdWJqZWN0ID0gZ2VuZXJhdGUoc3ViamVjdENvbG9yLCB7XG4gICAgdGhlbWU6ICdkZWZhdWx0JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tDb2xvclxuICB9KTtcbiAgdmFyIHN1YmplY3RIZXggPSBjb2xvcihzdWJqZWN0Q29sb3IpLmhleCgpLnRvTG93ZXJDYXNlKCk7XG4gIHZhciBzdWJqZWN0SWR4ID0gcGFsZXR0ZUZyb21TdWJqZWN0LmluZGV4T2Yoc3ViamVjdEhleCk7XG4gIHZhciBkZWVwZXJTdWJqZWN0ID0gc3ViamVjdENvbG9yO1xuXG4gIGlmIChzdWJqZWN0SWR4ICE9PSAtMSkge1xuICAgIGRlZXBlclN1YmplY3QgPSBwYWxldHRlRnJvbVN1YmplY3Rbc3ViamVjdElkeCArIDFdO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBmb3Igbm9kZXNcbiAgICBtYWluU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gICAgbWFpbkZpbGw6IHN1YmplY3RDb2xvcjAxLFxuICAgIGFjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yLFxuICAgIGFjdGl2ZUZpbGw6IHN1YmplY3RDb2xvcjAwNSxcbiAgICBpbmFjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yMDQsXG4gICAgaW5hY3RpdmVGaWxsOiBzdWJqZWN0Q29sb3IwMDUsXG4gICAgc2VsZWN0ZWRTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgICBzZWxlY3RlZEZpbGw6IGJhY2tDb2xvcixcbiAgICBoaWdobGlnaHRTdHJva2U6IGRlZXBlclN1YmplY3QsXG4gICAgaGlnaGxpZ2h0RmlsbDogc3ViamVjdENvbG9yMDIsXG4gICAgZGlzYWJsZVN0cm9rZTogZGlzYWJsZUNvbG9yMDMsXG4gICAgZGlzYWJsZUZpbGw6IGRpc2FibGVDb2xvcjAwNSxcbiAgICAvLyBmb3IgZWRnZXNcbiAgICBlZGdlTWFpblN0cm9rZTogZGlzYWJsZUNvbG9yMDMsXG4gICAgZWRnZUFjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yLFxuICAgIGVkZ2VJbmFjdGl2ZVN0cm9rZTogZGlzYWJsZUNvbG9yMDIsXG4gICAgZWRnZVNlbGVjdGVkU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gICAgZWRnZUhpZ2hsaWdodFN0cm9rZTogc3ViamVjdENvbG9yLFxuICAgIGVkZ2VEaXNhYmxlU3Ryb2tlOiBkaXNhYmxlQ29sb3IwMSxcbiAgICAvLyBmb3IgY29tYm9zXG4gICAgY29tYm9NYWluU3Ryb2tlOiBkaXNhYmxlQ29sb3IwMyxcbiAgICBjb21ib01haW5GaWxsOiBkaXNhYmxlQ29sb3IwMDIsXG4gICAgY29tYm9BY3RpdmVTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgICBjb21ib0FjdGl2ZUZpbGw6IHN1YmplY3RDb2xvcjAwNSxcbiAgICBjb21ib0luYWN0aXZlU3Ryb2tlOiBkaXNhYmxlQ29sb3IwMyxcbiAgICBjb21ib0luYWN0aXZlRmlsbDogZGlzYWJsZUNvbG9yMDAyLFxuICAgIGNvbWJvU2VsZWN0ZWRTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgICBjb21ib1NlbGVjdGVkRmlsbDogZGlzYWJsZUNvbG9yMDAyLFxuICAgIGNvbWJvSGlnaGxpZ2h0U3Ryb2tlOiBkZWVwZXJTdWJqZWN0LFxuICAgIGNvbWJvSGlnaGxpZ2h0RmlsbDogZGlzYWJsZUNvbG9yMDAyLFxuICAgIGNvbWJvRGlzYWJsZVN0cm9rZTogZGlzYWJsZUNvbG9yMDIsXG4gICAgY29tYm9EaXNhYmxlRmlsbDogZGlzYWJsZUNvbG9yMDA1XG4gIH07XG59O1xuXG52YXIgZ2V0Q29sb3JzV2l0aERhcmtUaGVtZSA9IGZ1bmN0aW9uIGdldENvbG9yc1dpdGhEYXJrVGhlbWUoc3ViamVjdENvbG9yLCBiYWNrQ29sb3IsIGRpc2FibGVDb2xvcikge1xuICBpZiAoYmFja0NvbG9yID09PSB2b2lkIDApIHtcbiAgICBiYWNrQ29sb3IgPSAnI2ZmZic7XG4gIH1cblxuICBpZiAoZGlzYWJsZUNvbG9yID09PSB2b2lkIDApIHtcbiAgICBkaXNhYmxlQ29sb3IgPSAnIzc3Nyc7XG4gIH1cblxuICB2YXIgc3ViamVjdENvbG9yMDIgPSBtaXhDb2xvcihiYWNrQ29sb3IsIHN1YmplY3RDb2xvciwgMC4yKS5yZ2IoKS50b1N0cmluZygpO1xuICB2YXIgc3ViamVjdENvbG9yMDMgPSBtaXhDb2xvcihiYWNrQ29sb3IsIHN1YmplY3RDb2xvciwgMC4zKS5yZ2IoKS50b1N0cmluZygpO1xuICB2YXIgc3ViamVjdENvbG9yMDYgPSBtaXhDb2xvcihiYWNrQ29sb3IsIHN1YmplY3RDb2xvciwgMC42KS5yZ2IoKS50b1N0cmluZygpO1xuICB2YXIgc3ViamVjdENvbG9yMDggPSBtaXhDb2xvcihiYWNrQ29sb3IsIHN1YmplY3RDb2xvciwgMC44KS5yZ2IoKS50b1N0cmluZygpO1xuICB2YXIgZGlzYWJsZUNvbG9yMDIgPSBtaXhDb2xvcihiYWNrQ29sb3IsIGRpc2FibGVDb2xvciwgMC4yKS5yZ2IoKS50b1N0cmluZygpO1xuICB2YXIgZGlzYWJsZUNvbG9yMDI1ID0gbWl4Q29sb3IoYmFja0NvbG9yLCBkaXNhYmxlQ29sb3IsIDAuMjUpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBkaXNhYmxlQ29sb3IwMyA9IG1peENvbG9yKGJhY2tDb2xvciwgZGlzYWJsZUNvbG9yLCAwLjMpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBkaXNhYmxlQ29sb3IwNCA9IG1peENvbG9yKGJhY2tDb2xvciwgZGlzYWJsZUNvbG9yLCAwLjQpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBkaXNhYmxlQ29sb3IwNSA9IG1peENvbG9yKGJhY2tDb2xvciwgZGlzYWJsZUNvbG9yLCAwLjUpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBwYWxldHRlRnJvbVN1YmplY3QgPSBnZW5lcmF0ZShzdWJqZWN0Q29sb3IsIHtcbiAgICB0aGVtZTogJ2RhcmsnLFxuICAgIGJhY2tncm91bmRDb2xvcjogYmFja0NvbG9yXG4gIH0pO1xuICB2YXIgc3ViamVjdEhleCA9IGNvbG9yKHN1YmplY3RDb2xvcikuaGV4KCkudG9Mb3dlckNhc2UoKTtcbiAgdmFyIHN1YmplY3RJZHggPSBwYWxldHRlRnJvbVN1YmplY3QuaW5kZXhPZihzdWJqZWN0SGV4KTtcbiAgdmFyIGRlZXBlclN1YmplY3QgPSBzdWJqZWN0Q29sb3I7XG5cbiAgaWYgKHN1YmplY3RJZHggIT09IC0xKSB7XG4gICAgZGVlcGVyU3ViamVjdCA9IHBhbGV0dGVGcm9tU3ViamVjdFtzdWJqZWN0SWR4ICsgMV07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIGZvciBub2Rlc1xuICAgIG1haW5TdHJva2U6IHN1YmplY3RDb2xvcjA4LFxuICAgIG1haW5GaWxsOiBzdWJqZWN0Q29sb3IwMixcbiAgICBhY3RpdmVTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgICBhY3RpdmVGaWxsOiBzdWJqZWN0Q29sb3IwMyxcbiAgICBpbmFjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yMDgsXG4gICAgaW5hY3RpdmVGaWxsOiBzdWJqZWN0Q29sb3IwMixcbiAgICBzZWxlY3RlZFN0cm9rZTogc3ViamVjdENvbG9yLFxuICAgIHNlbGVjdGVkRmlsbDogc3ViamVjdENvbG9yMDIsXG4gICAgaGlnaGxpZ2h0U3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gICAgaGlnaGxpZ2h0RmlsbDogc3ViamVjdENvbG9yMDYsXG4gICAgZGlzYWJsZVN0cm9rZTogZGlzYWJsZUNvbG9yMDUsXG4gICAgZGlzYWJsZUZpbGw6IGRpc2FibGVDb2xvcjAyNSxcbiAgICAvLyBmb3IgZWRnZXNcbiAgICBlZGdlTWFpblN0cm9rZTogZGlzYWJsZUNvbG9yLFxuICAgIGVkZ2VBY3RpdmVTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgICBlZGdlSW5hY3RpdmVTdHJva2U6IGRpc2FibGVDb2xvcixcbiAgICBlZGdlU2VsZWN0ZWRTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgICBlZGdlSGlnaGxpZ2h0U3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gICAgZWRnZURpc2FibGVTdHJva2U6IGRpc2FibGVDb2xvcjAzLFxuICAgIC8vIGZvciBjb21ib3NcbiAgICBjb21ib01haW5TdHJva2U6IGRpc2FibGVDb2xvcjA0LFxuICAgIGNvbWJvTWFpbkZpbGw6IGRpc2FibGVDb2xvcjAyNSxcbiAgICBjb21ib0FjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yLFxuICAgIGNvbWJvQWN0aXZlRmlsbDogZGlzYWJsZUNvbG9yMDIsXG4gICAgY29tYm9JbmFjdGl2ZVN0cm9rZTogZGlzYWJsZUNvbG9yMDQsXG4gICAgY29tYm9JbmFjdGl2ZUZpbGw6IGRpc2FibGVDb2xvcjAyNSxcbiAgICBjb21ib1NlbGVjdGVkU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gICAgY29tYm9TZWxlY3RlZEZpbGw6IGRpc2FibGVDb2xvcjAyLFxuICAgIGNvbWJvSGlnaGxpZ2h0U3Ryb2tlOiBkZWVwZXJTdWJqZWN0LFxuICAgIGNvbWJvSGlnaGxpZ2h0RmlsbDogZGlzYWJsZUNvbG9yMDI1LFxuICAgIGNvbWJvRGlzYWJsZVN0cm9rZTogZGlzYWJsZUNvbG9yMDQsXG4gICAgY29tYm9EaXNhYmxlRmlsbDogZGlzYWJsZUNvbG9yMDJcbiAgfTtcbn07XG4vKipcbiAqIGdldCB0aGUgc2V0IG9mIGNvbG9ycyBhY2NvcmRpbmcgdG8gdGhlIHN1YmplY3QgY29sb3IgYW5kIGJhY2tncm91bmQgY29sb3JcbiAqIEBwYXJhbSBzdWJqZWN0Q29sb3IgdGhlIHN1YmplY3QgY29sb3JcbiAqIEBwYXJhbSBiYWNrQ29sb3IgYmFja2dyb3VuZCBjb2xvclxuICogQHBhcmFtIGRpc2FibGVDb2xvciB0aGUgY29sb3IgZm9yIGRpc2FibGUgc3RhdGVcbiAqL1xuXG5cbmV4cG9ydCB2YXIgZ2V0Q29sb3JzV2l0aFN1YmplY3RDb2xvciA9IGZ1bmN0aW9uIGdldENvbG9yc1dpdGhTdWJqZWN0Q29sb3Ioc3ViamVjdENvbG9yLCBiYWNrQ29sb3IsIHRoZW1lLCBkaXNhYmxlQ29sb3IpIHtcbiAgaWYgKGJhY2tDb2xvciA9PT0gdm9pZCAwKSB7XG4gICAgYmFja0NvbG9yID0gJyNmZmYnO1xuICB9XG5cbiAgaWYgKHRoZW1lID09PSB2b2lkIDApIHtcbiAgICB0aGVtZSA9ICdkZWZhdWx0JztcbiAgfVxuXG4gIGlmIChkaXNhYmxlQ29sb3IgPT09IHZvaWQgMCkge1xuICAgIGRpc2FibGVDb2xvciA9ICdyZ2IoMTUwLCAxNTAsIDE1MCknO1xuICB9XG5cbiAgaWYgKHRoZW1lID09PSAnZGVmYXVsdCcpIHJldHVybiBnZXRDb2xvcnNXaXRoRGVmYXVsdFRoZW1lKHN1YmplY3RDb2xvciwgYmFja0NvbG9yLCAncmdiKDE1MCwgMTUwLCAxNTApJyk7XG4gIHJldHVybiBnZXRDb2xvcnNXaXRoRGFya1RoZW1lKHN1YmplY3RDb2xvciwgYmFja0NvbG9yLCAnIzc3NycpO1xufTtcbmV4cG9ydCB2YXIgZ2V0Q29sb3JTZXRzQnlTdWJqZWN0Q29sb3JzID0gZnVuY3Rpb24gZ2V0Q29sb3JTZXRzQnlTdWJqZWN0Q29sb3JzKHN1YmplY3RDb2xvcnMsIGJhY2tDb2xvciwgdGhlbWUsIGRpc2FibGVDb2xvcikge1xuICBpZiAoYmFja0NvbG9yID09PSB2b2lkIDApIHtcbiAgICBiYWNrQ29sb3IgPSAnI2ZmZic7XG4gIH1cblxuICBpZiAodGhlbWUgPT09IHZvaWQgMCkge1xuICAgIHRoZW1lID0gJ2RlZmF1bHQnO1xuICB9XG5cbiAgaWYgKGRpc2FibGVDb2xvciA9PT0gdm9pZCAwKSB7XG4gICAgZGlzYWJsZUNvbG9yID0gJ3JnYigxNTAsIDE1MCwgMTUwKSc7XG4gIH1cblxuICB2YXIgc2V0cyA9IFtdO1xuICBzdWJqZWN0Q29sb3JzLmZvckVhY2goZnVuY3Rpb24gKHNDb2xvcikge1xuICAgIHNldHMucHVzaChnZXRDb2xvcnNXaXRoU3ViamVjdENvbG9yKHNDb2xvciwgYmFja0NvbG9yLCB0aGVtZSwgZGlzYWJsZUNvbG9yKSk7XG4gIH0pO1xuICByZXR1cm4gc2V0cztcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/util/color.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/util/gpu.js": /*!*************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/util/gpu.js ***! \*************************************************/ /*! exports provided: gpuDetector */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gpuDetector\", function() { return gpuDetector; });\n/**\n * 调用 gpuDetector.webgl 判断当前浏览器是否支持 webgl。(支持 gpgpu 的浏览器一定也支持 webgl)\n */\nvar gpuDetector = function gpuDetector() {\n if (typeof window === 'undefined' || typeof document === 'undefined') return {};\n return {\n canvas: !!window.CanvasRenderingContext2D,\n webgl: function () {\n try {\n var canvas = document.createElement('canvas');\n return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));\n } catch (e) {\n return false;\n }\n }(),\n workers: !!window.Worker,\n fileapi: window.File && window.FileReader && window.FileList && window.Blob,\n getWebGLErrorMessage: function getWebGLErrorMessage() {\n var element = document.createElement('div');\n element.id = 'webgl-error-message';\n element.style.fontFamily = 'monospace';\n element.style.fontSize = '13px';\n element.style.fontWeight = 'normal';\n element.style.textAlign = 'center';\n element.style.background = '#fff';\n element.style.color = '#000';\n element.style.padding = '1.5em';\n element.style.width = '400px';\n element.style.margin = '5em auto 0';\n\n if (!this.webgl) {\n element.innerHTML = window.WebGLRenderingContext ? ['Your graphics card does not seem to support WebGL.
', 'Find out how to get it here.'].join('\\n') : ['Your browser does not seem to support WebGL.
', 'Find out how to get it here.'].join('\\n');\n }\n\n return element;\n },\n addGetWebGLMessage: function addGetWebGLMessage(parameters) {\n parameters = parameters || {};\n var parent = parameters.parent !== undefined ? parameters.parent : document.body;\n var id = parameters.id !== undefined ? parameters.id : 'oldie';\n var element = gpuDetector().getWebGLErrorMessage();\n element.id = id;\n parent.appendChild(element);\n }\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvdXRpbC9ncHUuanM/NTRjYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBjL2VzL3V0aWwvZ3B1LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDosIPnlKggZ3B1RGV0ZWN0b3Iud2ViZ2wg5Yik5pat5b2T5YmN5rWP6KeI5Zmo5piv5ZCm5pSv5oyBIHdlYmds44CC77yI5pSv5oyBIGdwZ3B1IOeahOa1j+iniOWZqOS4gOWumuS5n+aUr+aMgSB3ZWJnbO+8iVxuICovXG5leHBvcnQgdmFyIGdwdURldGVjdG9yID0gZnVuY3Rpb24gZ3B1RGV0ZWN0b3IoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSByZXR1cm4ge307XG4gIHJldHVybiB7XG4gICAgY2FudmFzOiAhIXdpbmRvdy5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgd2ViZ2w6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgcmV0dXJuICEhKHdpbmRvdy5XZWJHTFJlbmRlcmluZ0NvbnRleHQgJiYgKGNhbnZhcy5nZXRDb250ZXh0KCd3ZWJnbCcpIHx8IGNhbnZhcy5nZXRDb250ZXh0KCdleHBlcmltZW50YWwtd2ViZ2wnKSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSgpLFxuICAgIHdvcmtlcnM6ICEhd2luZG93LldvcmtlcixcbiAgICBmaWxlYXBpOiB3aW5kb3cuRmlsZSAmJiB3aW5kb3cuRmlsZVJlYWRlciAmJiB3aW5kb3cuRmlsZUxpc3QgJiYgd2luZG93LkJsb2IsXG4gICAgZ2V0V2ViR0xFcnJvck1lc3NhZ2U6IGZ1bmN0aW9uIGdldFdlYkdMRXJyb3JNZXNzYWdlKCkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGVsZW1lbnQuaWQgPSAnd2ViZ2wtZXJyb3ItbWVzc2FnZSc7XG4gICAgICBlbGVtZW50LnN0eWxlLmZvbnRGYW1pbHkgPSAnbW9ub3NwYWNlJztcbiAgICAgIGVsZW1lbnQuc3R5bGUuZm9udFNpemUgPSAnMTNweCc7XG4gICAgICBlbGVtZW50LnN0eWxlLmZvbnRXZWlnaHQgPSAnbm9ybWFsJztcbiAgICAgIGVsZW1lbnQuc3R5bGUudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgICBlbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZic7XG4gICAgICBlbGVtZW50LnN0eWxlLmNvbG9yID0gJyMwMDAnO1xuICAgICAgZWxlbWVudC5zdHlsZS5wYWRkaW5nID0gJzEuNWVtJztcbiAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSAnNDAwcHgnO1xuICAgICAgZWxlbWVudC5zdHlsZS5tYXJnaW4gPSAnNWVtIGF1dG8gMCc7XG5cbiAgICAgIGlmICghdGhpcy53ZWJnbCkge1xuICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IHdpbmRvdy5XZWJHTFJlbmRlcmluZ0NvbnRleHQgPyBbJ1lvdXIgZ3JhcGhpY3MgY2FyZCBkb2VzIG5vdCBzZWVtIHRvIHN1cHBvcnQgPGEgaHJlZj1cImh0dHA6Ly9raHJvbm9zLm9yZy93ZWJnbC93aWtpL0dldHRpbmdfYV9XZWJHTF9JbXBsZW1lbnRhdGlvblwiIHJlbD1cImV4dGVybmFsIG5vZm9sbG93XCIgcmVsPVwiZXh0ZXJuYWwgbm9mb2xsb3dcIiBzdHlsZT1cImNvbG9yOiMwMDBcIj5XZWJHTDwvYT4uPGJyIC8+JywgJ0ZpbmQgb3V0IGhvdyB0byBnZXQgaXQgPGEgaHJlZj1cImh0dHA6Ly9nZXQud2ViZ2wub3JnL1wiIHJlbD1cImV4dGVybmFsIG5vZm9sbG93XCIgcmVsPVwiZXh0ZXJuYWwgbm9mb2xsb3dcIiBzdHlsZT1cImNvbG9yOiMwMDBcIj5oZXJlPC9hPi4nXS5qb2luKCdcXG4nKSA6IFsnWW91ciBicm93c2VyIGRvZXMgbm90IHNlZW0gdG8gc3VwcG9ydCA8YSBocmVmPVwiaHR0cDovL2tocm9ub3Mub3JnL3dlYmdsL3dpa2kvR2V0dGluZ19hX1dlYkdMX0ltcGxlbWVudGF0aW9uXCIgcmVsPVwiZXh0ZXJuYWwgbm9mb2xsb3dcIiByZWw9XCJleHRlcm5hbCBub2ZvbGxvd1wiIHN0eWxlPVwiY29sb3I6IzAwMFwiPldlYkdMPC9hPi48YnIvPicsICdGaW5kIG91dCBob3cgdG8gZ2V0IGl0IDxhIGhyZWY9XCJodHRwOi8vZ2V0LndlYmdsLm9yZy9cIiByZWw9XCJleHRlcm5hbCBub2ZvbGxvd1wiIHJlbD1cImV4dGVybmFsIG5vZm9sbG93XCIgc3R5bGU9XCJjb2xvcjojMDAwXCI+aGVyZTwvYT4uJ10uam9pbignXFxuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH0sXG4gICAgYWRkR2V0V2ViR0xNZXNzYWdlOiBmdW5jdGlvbiBhZGRHZXRXZWJHTE1lc3NhZ2UocGFyYW1ldGVycykge1xuICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMgfHwge307XG4gICAgICB2YXIgcGFyZW50ID0gcGFyYW1ldGVycy5wYXJlbnQgIT09IHVuZGVmaW5lZCA/IHBhcmFtZXRlcnMucGFyZW50IDogZG9jdW1lbnQuYm9keTtcbiAgICAgIHZhciBpZCA9IHBhcmFtZXRlcnMuaWQgIT09IHVuZGVmaW5lZCA/IHBhcmFtZXRlcnMuaWQgOiAnb2xkaWUnO1xuICAgICAgdmFyIGVsZW1lbnQgPSBncHVEZXRlY3RvcigpLmdldFdlYkdMRXJyb3JNZXNzYWdlKCk7XG4gICAgICBlbGVtZW50LmlkID0gaWQ7XG4gICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgfVxuICB9O1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/util/gpu.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/util/index.js": /*!***************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/util/index.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color */ \"./node_modules/@antv/g6-pc/es/util/color.js\");\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./layout */ \"./node_modules/@antv/g6-pc/es/util/layout.js\");\n/* harmony import */ var _gpu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./gpu */ \"./node_modules/@antv/g6-pc/es/util/gpu.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n\n\n\n\n\n\nvar G6Util = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_4__[\"Util\"]), _color__WEBPACK_IMPORTED_MODULE_1__), _layout__WEBPACK_IMPORTED_MODULE_2__), _gpu__WEBPACK_IMPORTED_MODULE_3__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (G6Util);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvdXRpbC9pbmRleC5qcz8wZTIwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNJO0FBQ0U7QUFDTjtBQUNJOztBQUVyQyxhQUFhLHNEQUFRLENBQUMsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSxrREFBSSxHQUFHLG1DQUFTLEdBQUcsb0NBQVUsR0FBRyxpQ0FBTzs7QUFFN0UscUVBQU0iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvdXRpbC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBDb2xvclV0aWwgZnJvbSAnLi9jb2xvcic7XG5pbXBvcnQgKiBhcyBMYXlvdXRVdGlsIGZyb20gJy4vbGF5b3V0JztcbmltcG9ydCAqIGFzIEdwdVV0aWwgZnJvbSAnLi9ncHUnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuXG52YXIgRzZVdGlsID0gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIFV0aWwpLCBDb2xvclV0aWwpLCBMYXlvdXRVdGlsKSwgR3B1VXRpbCk7XG5cbmV4cG9ydCBkZWZhdWx0IEc2VXRpbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/util/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-pc/es/util/layout.js": /*!****************************************************!*\ !*** ./node_modules/@antv/g6-pc/es/util/layout.js ***! \****************************************************/ /*! exports provided: proccessToFunc, buildTextureData, buildTextureDataWithOneEdgeAttr, buildTextureDataWithTwoEdgeAttr, attributesToTextureData, arrayToTextureData, radialLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"proccessToFunc\", function() { return proccessToFunc; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildTextureData\", function() { return buildTextureData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildTextureDataWithOneEdgeAttr\", function() { return buildTextureDataWithOneEdgeAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildTextureDataWithTwoEdgeAttr\", function() { return buildTextureDataWithTwoEdgeAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"attributesToTextureData\", function() { return attributesToTextureData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"arrayToTextureData\", function() { return arrayToTextureData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"radialLayout\", function() { return radialLayout; });\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\nvar traverseTree = _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].traverseTree;\n/**\n * 将 number | Function 类型的参数转换为 return number 的 Function\n * @param {number | Function} value 需要被转换的值\n * @param {number} defaultV 返回函数的默认返回值\n * @return {Function} 转换后的函数\n */\n\nvar proccessToFunc = function proccessToFunc(value, defaultV) {\n var func;\n\n if (!value) {\n func = function func(d) {\n return defaultV || 1;\n };\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value)) {\n func = function func(d) {\n return value;\n };\n } else {\n func = value;\n }\n\n return func;\n};\n/**\n * 将节点和边数据转换为 GPU 可读的数组。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 需要被转换的值\n * @param {EdgeConfig[]} edges 返回函数的默认返回值\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\n\nvar buildTextureData = function buildTextureData(nodes, edges) {\n var dataArray = [];\n var nodeDict = [];\n var mapIdPos = {};\n var i = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n\n for (i = 0; i < edges.length; i++) {\n var e = edges[i];\n nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n }\n\n var maxEdgePerVetex = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var offset = dataArray.length;\n var dests = nodeDict[i];\n var len = dests.length;\n dataArray[i * 4 + 2] = offset;\n dataArray[i * 4 + 3] = dests.length;\n maxEdgePerVetex = Math.max(maxEdgePerVetex, dests.length);\n\n for (var j = 0; j < len; ++j) {\n var dest = dests[j];\n dataArray.push(+dest);\n }\n }\n\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n\n return {\n array: new Float32Array(dataArray),\n maxEdgePerVetex: maxEdgePerVetex\n };\n};\n/**\n * 将节点和边数据转换为 GPU 可读的数组,每条边带有一个属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 节点数组\n * @param {EdgeConfig[]} edges 边数组\n * @param {Function} attrs 读取边属性的函数\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\n\nvar buildTextureDataWithOneEdgeAttr = function buildTextureDataWithOneEdgeAttr(nodes, edges, attrs) {\n var dataArray = [];\n var nodeDict = [];\n var mapIdPos = {};\n var i = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n\n for (i = 0; i < edges.length; i++) {\n var e = edges[i];\n nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n nodeDict[mapIdPos[e.source]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n\n nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n nodeDict[mapIdPos[e.target]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n }\n\n var maxEdgePerVetex = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var offset = dataArray.length;\n var dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n\n var len = dests.length;\n dataArray[i * 4 + 2] = offset;\n dataArray[i * 4 + 3] = len / 2; // 第四位存储与该节点相关的所有节点个数\n\n maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 2);\n\n for (var j = 0; j < len; ++j) {\n var dest = dests[j];\n dataArray.push(+dest);\n }\n } // 不是 4 的倍数,填充 0\n\n\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n\n return {\n array: new Float32Array(dataArray),\n maxEdgePerVetex: maxEdgePerVetex\n };\n};\n/**\n * 将节点和边数据转换为 GPU 可读的数组,每条边带有一个以上属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 节点数组\n * @param {EdgeConfig[]} edges 边数组\n * @param {Function} attrs 读取边属性的函数\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\n\nvar buildTextureDataWithTwoEdgeAttr = function buildTextureDataWithTwoEdgeAttr(nodes, edges, attrs1, attrs2) {\n var dataArray = [];\n var nodeDict = [];\n var mapIdPos = {};\n var i = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n\n for (i = 0; i < edges.length; i++) {\n var e = edges[i];\n nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n nodeDict[mapIdPos[e.source]].push(attrs1(e));\n nodeDict[mapIdPos[e.source]].push(attrs2(e));\n nodeDict[mapIdPos[e.source]].push(0);\n nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n nodeDict[mapIdPos[e.target]].push(attrs1(e));\n nodeDict[mapIdPos[e.target]].push(attrs2(e));\n nodeDict[mapIdPos[e.target]].push(0);\n }\n\n var maxEdgePerVetex = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var offset = dataArray.length;\n var dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n\n var len = dests.length; // dataArray[i * 4 + 2] = offset;\n // dataArray[i * 4 + 3] = len / 4; // 第四位存储与该节点相关的所有节点个数\n // pack offset & length into float32: offset 20bit, length 12bit\n\n dataArray[i * 4 + 2] = offset + 1048576 * len / 4;\n dataArray[i * 4 + 3] = 0; // 第四位存储与上一次的距离差值\n\n maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 4);\n\n for (var j = 0; j < len; ++j) {\n var dest = dests[j];\n dataArray.push(+dest);\n }\n } // 不是 4 的倍数,填充 0\n\n\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n\n return {\n array: new Float32Array(dataArray),\n maxEdgePerVetex: maxEdgePerVetex\n };\n};\n/**\n * transform the extended attributes of nodes or edges to a texture array\n * @param {string[]} attributeNames attributes' name to be read from items and put into output array\n * @param {ModelConfig[]} items the items to be read\n * @return {Float32Array} the attributes' value array to be read by GPU\n */\n\nvar attributesToTextureData = function attributesToTextureData(attributeNames, items) {\n var dataArray = [];\n var attributeNum = attributeNames.length;\n var attributteStringMap = {};\n items.forEach(function (item) {\n attributeNames.forEach(function (name, i) {\n if (attributteStringMap[item[name]] === undefined) {\n attributteStringMap[item[name]] = Object.keys(attributteStringMap).length;\n }\n\n dataArray.push(attributteStringMap[item[name]]); // insure each node's attributes take inter number of grids\n\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n });\n return {\n array: new Float32Array(dataArray),\n count: Object.keys(attributteStringMap).length\n };\n};\n/**\n * transform the number array format of extended attributes of nodes or edges to a texture array\n * @param {string[]} attributeNames attributes' name to be read from items and put into output array\n * @return {Float32Array} the attributes' value array to be read by GPU\n */\n\nvar arrayToTextureData = function arrayToTextureData(valueArrays) {\n var dataArray = [];\n var attributeNum = valueArrays.length;\n var itemNum = valueArrays[0].length;\n\n var _loop_1 = function _loop_1(j) {\n valueArrays.forEach(function (valueArray, i) {\n dataArray.push(valueArray[j]); // insure each node's attributes take inter number of grids\n\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n };\n\n for (var j = 0; j < itemNum; j++) {\n _loop_1(j);\n }\n\n return new Float32Array(dataArray);\n};\n/**\n *\n * @param data Tree graph data\n * @param layout\n */\n\nvar radialLayout = function radialLayout(data, layout) {\n // 布局方式有 H / V / LR / RL / TB / BT\n var VERTICAL_LAYOUTS = ['V', 'TB', 'BT'];\n var min = {\n x: Infinity,\n y: Infinity\n };\n var max = {\n x: -Infinity,\n y: -Infinity\n }; // 默认布局是垂直布局TB,此时x对应rad,y对应r\n\n var rScale = 'x';\n var radScale = 'y';\n\n if (layout && VERTICAL_LAYOUTS.indexOf(layout) >= 0) {\n // 若是水平布局,y对应rad,x对应r\n radScale = 'x';\n rScale = 'y';\n }\n\n var count = 0;\n traverseTree(data, function (node) {\n count++;\n\n if (node.x > max.x) {\n max.x = node.x;\n }\n\n if (node.x < min.x) {\n min.x = node.x;\n }\n\n if (node.y > max.y) {\n max.y = node.y;\n }\n\n if (node.y < min.y) {\n min.y = node.y;\n }\n\n return true;\n });\n var avgRad = Math.PI * 2 / count;\n var radDiff = max[radScale] - min[radScale];\n\n if (radDiff === 0) {\n return data;\n }\n\n traverseTree(data, function (node) {\n var radial = (node[radScale] - min[radScale]) / radDiff * (Math.PI * 2 - avgRad) + avgRad;\n var r = Math.abs(rScale === 'x' ? node.x - data.x : node.y - data.y);\n node.x = r * Math.cos(radial);\n node.y = r * Math.sin(radial);\n return true;\n });\n return data;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGMvZXMvdXRpbC9sYXlvdXQuanM/MGM3ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxQztBQUNDO0FBQ3RDLG1CQUFtQixrREFBSTtBQUN2QjtBQUNBO0FBQ0EsWUFBWSxrQkFBa0I7QUFDOUIsWUFBWSxPQUFPO0FBQ25CLFlBQVksU0FBUztBQUNyQjs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxVQUFVLDJEQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxhQUFhO0FBQ3pCLFlBQVksYUFBYTtBQUN6QixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsa0JBQWtCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLGFBQWEsa0JBQWtCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsU0FBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGFBQWE7QUFDekIsWUFBWSxhQUFhO0FBQ3pCLFlBQVksU0FBUztBQUNyQixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsa0JBQWtCO0FBQy9CO0FBQ0E7QUFDQSxnREFBZ0Q7O0FBRWhEO0FBQ0EsZ0RBQWdEO0FBQ2hEOztBQUVBOztBQUVBLGFBQWEsa0JBQWtCO0FBQy9CO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0EsbUNBQW1DOztBQUVuQzs7QUFFQSxtQkFBbUIsU0FBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGFBQWE7QUFDekIsWUFBWSxhQUFhO0FBQ3pCLFlBQVksU0FBUztBQUNyQixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsa0JBQWtCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLGFBQWEsa0JBQWtCO0FBQy9CO0FBQ0EsNEJBQTRCOztBQUU1QiwyQkFBMkI7QUFDM0Isc0NBQXNDO0FBQ3RDOztBQUVBO0FBQ0EsNkJBQTZCOztBQUU3Qjs7QUFFQSxtQkFBbUIsU0FBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFNBQVM7QUFDckIsWUFBWSxjQUFjO0FBQzFCLFlBQVksYUFBYTtBQUN6Qjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0RBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQixZQUFZLGFBQWE7QUFDekI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxpQkFBaUIsYUFBYTtBQUM5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wYy9lcy91dGlsL2xheW91dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgdHJhdmVyc2VUcmVlID0gVXRpbC50cmF2ZXJzZVRyZWU7XG4vKipcbiAqIOWwhiBudW1iZXIgfCBGdW5jdGlvbiDnsbvlnovnmoTlj4LmlbDovazmjaLkuLogcmV0dXJuIG51bWJlciDnmoQgRnVuY3Rpb25cbiAqIEBwYXJhbSAge251bWJlciB8IEZ1bmN0aW9ufSAgdmFsdWUg6ZyA6KaB6KKr6L2s5o2i55qE5YC8XG4gKiBAcGFyYW0gIHtudW1iZXJ9ICBkZWZhdWx0ViDov5Tlm57lh73mlbDnmoTpu5jorqTov5Tlm57lgLxcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSDovazmjaLlkI7nmoTlh73mlbBcbiAqL1xuXG5leHBvcnQgdmFyIHByb2NjZXNzVG9GdW5jID0gZnVuY3Rpb24gcHJvY2Nlc3NUb0Z1bmModmFsdWUsIGRlZmF1bHRWKSB7XG4gIHZhciBmdW5jO1xuXG4gIGlmICghdmFsdWUpIHtcbiAgICBmdW5jID0gZnVuY3Rpb24gZnVuYyhkKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFYgfHwgMTtcbiAgICB9O1xuICB9IGVsc2UgaWYgKGlzTnVtYmVyKHZhbHVlKSkge1xuICAgIGZ1bmMgPSBmdW5jdGlvbiBmdW5jKGQpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGZ1bmMgPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBmdW5jO1xufTtcbi8qKlxuICog5bCG6IqC54K55ZKM6L655pWw5o2u6L2s5o2i5Li6IEdQVSDlj6/or7vnmoTmlbDnu4TjgILlubbov5Tlm54gbWF4RWRnZVBlclZldGV477yM5q+P5Liq6IqC54K55LiK5pyA5aSa55qE6L655pWwXG4gKiBAcGFyYW0gIHtOb2RlQ29uZmlnW119ICBub2RlcyDpnIDopoHooqvovazmjaLnmoTlgLxcbiAqIEBwYXJhbSAge0VkZ2VDb25maWdbXX0gIGVkZ2VzIOi/lOWbnuWHveaVsOeahOm7mOiupOi/lOWbnuWAvFxuICogQHJldHVybiB7T2JqZWN0fSDovazmjaLlkI7nmoTmlbDnu4Tlj4ogbWF4RWRnZVBlclZldGV4IOe7hOaIkOeahOWvueixoVxuICovXG5cbmV4cG9ydCB2YXIgYnVpbGRUZXh0dXJlRGF0YSA9IGZ1bmN0aW9uIGJ1aWxkVGV4dHVyZURhdGEobm9kZXMsIGVkZ2VzKSB7XG4gIHZhciBkYXRhQXJyYXkgPSBbXTtcbiAgdmFyIG5vZGVEaWN0ID0gW107XG4gIHZhciBtYXBJZFBvcyA9IHt9O1xuICB2YXIgaSA9IDA7XG5cbiAgZm9yIChpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG4gPSBub2Rlc1tpXTtcbiAgICBtYXBJZFBvc1tuLmlkXSA9IGk7XG4gICAgZGF0YUFycmF5LnB1c2gobi54KTtcbiAgICBkYXRhQXJyYXkucHVzaChuLnkpO1xuICAgIGRhdGFBcnJheS5wdXNoKDApO1xuICAgIGRhdGFBcnJheS5wdXNoKDApO1xuICAgIG5vZGVEaWN0LnB1c2goW10pO1xuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGUgPSBlZGdlc1tpXTtcbiAgICBub2RlRGljdFttYXBJZFBvc1tlLnNvdXJjZV1dLnB1c2gobWFwSWRQb3NbZS50YXJnZXRdKTtcbiAgICBub2RlRGljdFttYXBJZFBvc1tlLnRhcmdldF1dLnB1c2gobWFwSWRQb3NbZS5zb3VyY2VdKTtcbiAgfVxuXG4gIHZhciBtYXhFZGdlUGVyVmV0ZXggPSAwO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBvZmZzZXQgPSBkYXRhQXJyYXkubGVuZ3RoO1xuICAgIHZhciBkZXN0cyA9IG5vZGVEaWN0W2ldO1xuICAgIHZhciBsZW4gPSBkZXN0cy5sZW5ndGg7XG4gICAgZGF0YUFycmF5W2kgKiA0ICsgMl0gPSBvZmZzZXQ7XG4gICAgZGF0YUFycmF5W2kgKiA0ICsgM10gPSBkZXN0cy5sZW5ndGg7XG4gICAgbWF4RWRnZVBlclZldGV4ID0gTWF0aC5tYXgobWF4RWRnZVBlclZldGV4LCBkZXN0cy5sZW5ndGgpO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW47ICsraikge1xuICAgICAgdmFyIGRlc3QgPSBkZXN0c1tqXTtcbiAgICAgIGRhdGFBcnJheS5wdXNoKCtkZXN0KTtcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoZGF0YUFycmF5Lmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYXJyYXk6IG5ldyBGbG9hdDMyQXJyYXkoZGF0YUFycmF5KSxcbiAgICBtYXhFZGdlUGVyVmV0ZXg6IG1heEVkZ2VQZXJWZXRleFxuICB9O1xufTtcbi8qKlxuICog5bCG6IqC54K55ZKM6L655pWw5o2u6L2s5o2i5Li6IEdQVSDlj6/or7vnmoTmlbDnu4TvvIzmr4/mnaHovrnluKbmnInkuIDkuKrlsZ7mgKfjgILlubbov5Tlm54gbWF4RWRnZVBlclZldGV477yM5q+P5Liq6IqC54K55LiK5pyA5aSa55qE6L655pWwXG4gKiBAcGFyYW0gIHtOb2RlQ29uZmlnW119ICBub2RlcyDoioLngrnmlbDnu4RcbiAqIEBwYXJhbSAge0VkZ2VDb25maWdbXX0gIGVkZ2VzIOi+ueaVsOe7hFxuICogQHBhcmFtICB7RnVuY3Rpb259ICBhdHRycyDor7vlj5bovrnlsZ7mgKfnmoTlh73mlbBcbiAqIEByZXR1cm4ge09iamVjdH0g6L2s5o2i5ZCO55qE5pWw57uE5Y+KIG1heEVkZ2VQZXJWZXRleCDnu4TmiJDnmoTlr7nosaFcbiAqL1xuXG5leHBvcnQgdmFyIGJ1aWxkVGV4dHVyZURhdGFXaXRoT25lRWRnZUF0dHIgPSBmdW5jdGlvbiBidWlsZFRleHR1cmVEYXRhV2l0aE9uZUVkZ2VBdHRyKG5vZGVzLCBlZGdlcywgYXR0cnMpIHtcbiAgdmFyIGRhdGFBcnJheSA9IFtdO1xuICB2YXIgbm9kZURpY3QgPSBbXTtcbiAgdmFyIG1hcElkUG9zID0ge307XG4gIHZhciBpID0gMDtcblxuICBmb3IgKGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbiA9IG5vZGVzW2ldO1xuICAgIG1hcElkUG9zW24uaWRdID0gaTtcbiAgICBkYXRhQXJyYXkucHVzaChuLngpO1xuICAgIGRhdGFBcnJheS5wdXNoKG4ueSk7XG4gICAgZGF0YUFycmF5LnB1c2goMCk7XG4gICAgZGF0YUFycmF5LnB1c2goMCk7XG4gICAgbm9kZURpY3QucHVzaChbXSk7XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZSA9IGVkZ2VzW2ldO1xuICAgIG5vZGVEaWN0W21hcElkUG9zW2Uuc291cmNlXV0ucHVzaChtYXBJZFBvc1tlLnRhcmdldF0pO1xuICAgIG5vZGVEaWN0W21hcElkUG9zW2Uuc291cmNlXV0ucHVzaChhdHRycyhlKSk7IC8vIOeQhuaDs+i+uemVv++8jOWQjue7reWPr+S7peaUueaIkOavj+adoei+ueS4jeWQjFxuXG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS50YXJnZXRdXS5wdXNoKG1hcElkUG9zW2Uuc291cmNlXSk7XG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS50YXJnZXRdXS5wdXNoKGF0dHJzKGUpKTsgLy8g55CG5oOz6L656ZW/77yM5ZCO57ut5Y+v5Lul5pS55oiQ5q+P5p2h6L655LiN5ZCMXG4gIH1cblxuICB2YXIgbWF4RWRnZVBlclZldGV4ID0gMDtcblxuICBmb3IgKGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb2Zmc2V0ID0gZGF0YUFycmF5Lmxlbmd0aDtcbiAgICB2YXIgZGVzdHMgPSBub2RlRGljdFtpXTsgLy8gZGVzdCDkuK3oioLngrkgaWQg5LiO6L656ZW/6Ze06ZqU5a2Y5YKo77yM5Y2z5LiA5L2N6IqC54K5IGlk77yM5LiA5L2N6L656ZW/4oCm4oCmXG5cbiAgICB2YXIgbGVuID0gZGVzdHMubGVuZ3RoO1xuICAgIGRhdGFBcnJheVtpICogNCArIDJdID0gb2Zmc2V0O1xuICAgIGRhdGFBcnJheVtpICogNCArIDNdID0gbGVuIC8gMjsgLy8g56ys5Zub5L2N5a2Y5YKo5LiO6K+l6IqC54K555u45YWz55qE5omA5pyJ6IqC54K55Liq5pWwXG5cbiAgICBtYXhFZGdlUGVyVmV0ZXggPSBNYXRoLm1heChtYXhFZGdlUGVyVmV0ZXgsIGxlbiAvIDIpO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW47ICsraikge1xuICAgICAgdmFyIGRlc3QgPSBkZXN0c1tqXTtcbiAgICAgIGRhdGFBcnJheS5wdXNoKCtkZXN0KTtcbiAgICB9XG4gIH0gLy8g5LiN5pivIDQg55qE5YCN5pWw77yM5aGr5YWFIDBcblxuXG4gIHdoaWxlIChkYXRhQXJyYXkubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIGRhdGFBcnJheS5wdXNoKDApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhcnJheTogbmV3IEZsb2F0MzJBcnJheShkYXRhQXJyYXkpLFxuICAgIG1heEVkZ2VQZXJWZXRleDogbWF4RWRnZVBlclZldGV4XG4gIH07XG59O1xuLyoqXG4gKiDlsIboioLngrnlkozovrnmlbDmja7ovazmjaLkuLogR1BVIOWPr+ivu+eahOaVsOe7hO+8jOavj+adoei+ueW4puacieS4gOS4quS7peS4iuWxnuaAp+OAguW5tui/lOWbniBtYXhFZGdlUGVyVmV0ZXjvvIzmr4/kuKroioLngrnkuIrmnIDlpJrnmoTovrnmlbBcbiAqIEBwYXJhbSAge05vZGVDb25maWdbXX0gIG5vZGVzIOiKgueCueaVsOe7hFxuICogQHBhcmFtICB7RWRnZUNvbmZpZ1tdfSAgZWRnZXMg6L655pWw57uEXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gIGF0dHJzIOivu+WPlui+ueWxnuaAp+eahOWHveaVsFxuICogQHJldHVybiB7T2JqZWN0fSDovazmjaLlkI7nmoTmlbDnu4Tlj4ogbWF4RWRnZVBlclZldGV4IOe7hOaIkOeahOWvueixoVxuICovXG5cbmV4cG9ydCB2YXIgYnVpbGRUZXh0dXJlRGF0YVdpdGhUd29FZGdlQXR0ciA9IGZ1bmN0aW9uIGJ1aWxkVGV4dHVyZURhdGFXaXRoVHdvRWRnZUF0dHIobm9kZXMsIGVkZ2VzLCBhdHRyczEsIGF0dHJzMikge1xuICB2YXIgZGF0YUFycmF5ID0gW107XG4gIHZhciBub2RlRGljdCA9IFtdO1xuICB2YXIgbWFwSWRQb3MgPSB7fTtcbiAgdmFyIGkgPSAwO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBuID0gbm9kZXNbaV07XG4gICAgbWFwSWRQb3Nbbi5pZF0gPSBpO1xuICAgIGRhdGFBcnJheS5wdXNoKG4ueCk7XG4gICAgZGF0YUFycmF5LnB1c2gobi55KTtcbiAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICBub2RlRGljdC5wdXNoKFtdKTtcbiAgfVxuXG4gIGZvciAoaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlID0gZWRnZXNbaV07XG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS5zb3VyY2VdXS5wdXNoKG1hcElkUG9zW2UudGFyZ2V0XSk7XG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS5zb3VyY2VdXS5wdXNoKGF0dHJzMShlKSk7XG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS5zb3VyY2VdXS5wdXNoKGF0dHJzMihlKSk7XG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS5zb3VyY2VdXS5wdXNoKDApO1xuICAgIG5vZGVEaWN0W21hcElkUG9zW2UudGFyZ2V0XV0ucHVzaChtYXBJZFBvc1tlLnNvdXJjZV0pO1xuICAgIG5vZGVEaWN0W21hcElkUG9zW2UudGFyZ2V0XV0ucHVzaChhdHRyczEoZSkpO1xuICAgIG5vZGVEaWN0W21hcElkUG9zW2UudGFyZ2V0XV0ucHVzaChhdHRyczIoZSkpO1xuICAgIG5vZGVEaWN0W21hcElkUG9zW2UudGFyZ2V0XV0ucHVzaCgwKTtcbiAgfVxuXG4gIHZhciBtYXhFZGdlUGVyVmV0ZXggPSAwO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBvZmZzZXQgPSBkYXRhQXJyYXkubGVuZ3RoO1xuICAgIHZhciBkZXN0cyA9IG5vZGVEaWN0W2ldOyAvLyBkZXN0IOS4reiKgueCuSBpZCDkuI7ovrnplb/pl7TpmpTlrZjlgqjvvIzljbPkuIDkvY3oioLngrkgaWTvvIzkuIDkvY3ovrnplb/igKbigKZcblxuICAgIHZhciBsZW4gPSBkZXN0cy5sZW5ndGg7IC8vIGRhdGFBcnJheVtpICogNCArIDJdID0gb2Zmc2V0O1xuICAgIC8vIGRhdGFBcnJheVtpICogNCArIDNdID0gbGVuIC8gNDsgLy8g56ys5Zub5L2N5a2Y5YKo5LiO6K+l6IqC54K555u45YWz55qE5omA5pyJ6IqC54K55Liq5pWwXG4gICAgLy8gcGFjayBvZmZzZXQgJiBsZW5ndGggaW50byBmbG9hdDMyOiBvZmZzZXQgMjBiaXQsIGxlbmd0aCAxMmJpdFxuXG4gICAgZGF0YUFycmF5W2kgKiA0ICsgMl0gPSBvZmZzZXQgKyAxMDQ4NTc2ICogbGVuIC8gNDtcbiAgICBkYXRhQXJyYXlbaSAqIDQgKyAzXSA9IDA7IC8vIOesrOWbm+S9jeWtmOWCqOS4juS4iuS4gOasoeeahOi3neemu+W3ruWAvFxuXG4gICAgbWF4RWRnZVBlclZldGV4ID0gTWF0aC5tYXgobWF4RWRnZVBlclZldGV4LCBsZW4gLyA0KTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuOyArK2opIHtcbiAgICAgIHZhciBkZXN0ID0gZGVzdHNbal07XG4gICAgICBkYXRhQXJyYXkucHVzaCgrZGVzdCk7XG4gICAgfVxuICB9IC8vIOS4jeaYryA0IOeahOWAjeaVsO+8jOWhq+WFhSAwXG5cblxuICB3aGlsZSAoZGF0YUFycmF5Lmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYXJyYXk6IG5ldyBGbG9hdDMyQXJyYXkoZGF0YUFycmF5KSxcbiAgICBtYXhFZGdlUGVyVmV0ZXg6IG1heEVkZ2VQZXJWZXRleFxuICB9O1xufTtcbi8qKlxuICogdHJhbnNmb3JtIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGVzIG9mIG5vZGVzIG9yIGVkZ2VzIHRvIGEgdGV4dHVyZSBhcnJheVxuICogQHBhcmFtICB7c3RyaW5nW119ICBhdHRyaWJ1dGVOYW1lcyBhdHRyaWJ1dGVzJyBuYW1lIHRvIGJlIHJlYWQgZnJvbSBpdGVtcyBhbmQgcHV0IGludG8gb3V0cHV0IGFycmF5XG4gKiBAcGFyYW0gIHtNb2RlbENvbmZpZ1tdfSAgaXRlbXMgdGhlIGl0ZW1zIHRvIGJlIHJlYWRcbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gdGhlIGF0dHJpYnV0ZXMnIHZhbHVlIGFycmF5IHRvIGJlIHJlYWQgYnkgR1BVXG4gKi9cblxuZXhwb3J0IHZhciBhdHRyaWJ1dGVzVG9UZXh0dXJlRGF0YSA9IGZ1bmN0aW9uIGF0dHJpYnV0ZXNUb1RleHR1cmVEYXRhKGF0dHJpYnV0ZU5hbWVzLCBpdGVtcykge1xuICB2YXIgZGF0YUFycmF5ID0gW107XG4gIHZhciBhdHRyaWJ1dGVOdW0gPSBhdHRyaWJ1dGVOYW1lcy5sZW5ndGg7XG4gIHZhciBhdHRyaWJ1dHRlU3RyaW5nTWFwID0ge307XG4gIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBhdHRyaWJ1dGVOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lLCBpKSB7XG4gICAgICBpZiAoYXR0cmlidXR0ZVN0cmluZ01hcFtpdGVtW25hbWVdXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF0dHJpYnV0dGVTdHJpbmdNYXBbaXRlbVtuYW1lXV0gPSBPYmplY3Qua2V5cyhhdHRyaWJ1dHRlU3RyaW5nTWFwKS5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIGRhdGFBcnJheS5wdXNoKGF0dHJpYnV0dGVTdHJpbmdNYXBbaXRlbVtuYW1lXV0pOyAvLyBpbnN1cmUgZWFjaCBub2RlJ3MgYXR0cmlidXRlcyB0YWtlIGludGVyIG51bWJlciBvZiBncmlkc1xuXG4gICAgICBpZiAoaSA9PT0gYXR0cmlidXRlTnVtIC0gMSkge1xuICAgICAgICB3aGlsZSAoZGF0YUFycmF5Lmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICAgICAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBhcnJheTogbmV3IEZsb2F0MzJBcnJheShkYXRhQXJyYXkpLFxuICAgIGNvdW50OiBPYmplY3Qua2V5cyhhdHRyaWJ1dHRlU3RyaW5nTWFwKS5sZW5ndGhcbiAgfTtcbn07XG4vKipcbiAqIHRyYW5zZm9ybSB0aGUgbnVtYmVyIGFycmF5IGZvcm1hdCBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIG9mIG5vZGVzIG9yIGVkZ2VzIHRvIGEgdGV4dHVyZSBhcnJheVxuICogQHBhcmFtICB7c3RyaW5nW119ICBhdHRyaWJ1dGVOYW1lcyBhdHRyaWJ1dGVzJyBuYW1lIHRvIGJlIHJlYWQgZnJvbSBpdGVtcyBhbmQgcHV0IGludG8gb3V0cHV0IGFycmF5XG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IHRoZSBhdHRyaWJ1dGVzJyB2YWx1ZSBhcnJheSB0byBiZSByZWFkIGJ5IEdQVVxuICovXG5cbmV4cG9ydCB2YXIgYXJyYXlUb1RleHR1cmVEYXRhID0gZnVuY3Rpb24gYXJyYXlUb1RleHR1cmVEYXRhKHZhbHVlQXJyYXlzKSB7XG4gIHZhciBkYXRhQXJyYXkgPSBbXTtcbiAgdmFyIGF0dHJpYnV0ZU51bSA9IHZhbHVlQXJyYXlzLmxlbmd0aDtcbiAgdmFyIGl0ZW1OdW0gPSB2YWx1ZUFycmF5c1swXS5sZW5ndGg7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKGopIHtcbiAgICB2YWx1ZUFycmF5cy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZUFycmF5LCBpKSB7XG4gICAgICBkYXRhQXJyYXkucHVzaCh2YWx1ZUFycmF5W2pdKTsgLy8gaW5zdXJlIGVhY2ggbm9kZSdzIGF0dHJpYnV0ZXMgdGFrZSBpbnRlciBudW1iZXIgb2YgZ3JpZHNcblxuICAgICAgaWYgKGkgPT09IGF0dHJpYnV0ZU51bSAtIDEpIHtcbiAgICAgICAgd2hpbGUgKGRhdGFBcnJheS5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgICAgICAgZGF0YUFycmF5LnB1c2goMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IGl0ZW1OdW07IGorKykge1xuICAgIF9sb29wXzEoaik7XG4gIH1cblxuICByZXR1cm4gbmV3IEZsb2F0MzJBcnJheShkYXRhQXJyYXkpO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhIFRyZWUgZ3JhcGggZGF0YVxuICogQHBhcmFtIGxheW91dFxuICovXG5cbmV4cG9ydCB2YXIgcmFkaWFsTGF5b3V0ID0gZnVuY3Rpb24gcmFkaWFsTGF5b3V0KGRhdGEsIGxheW91dCkge1xuICAvLyDluIPlsYDmlrnlvI/mnIkgSCAvIFYgLyBMUiAvIFJMIC8gVEIgLyBCVFxuICB2YXIgVkVSVElDQUxfTEFZT1VUUyA9IFsnVicsICdUQicsICdCVCddO1xuICB2YXIgbWluID0ge1xuICAgIHg6IEluZmluaXR5LFxuICAgIHk6IEluZmluaXR5XG4gIH07XG4gIHZhciBtYXggPSB7XG4gICAgeDogLUluZmluaXR5LFxuICAgIHk6IC1JbmZpbml0eVxuICB9OyAvLyDpu5jorqTluIPlsYDmmK/lnoLnm7TluIPlsYBUQu+8jOatpOaXtnjlr7nlupRyYWTvvIx55a+55bqUclxuXG4gIHZhciByU2NhbGUgPSAneCc7XG4gIHZhciByYWRTY2FsZSA9ICd5JztcblxuICBpZiAobGF5b3V0ICYmIFZFUlRJQ0FMX0xBWU9VVFMuaW5kZXhPZihsYXlvdXQpID49IDApIHtcbiAgICAvLyDoi6XmmK/msLTlubPluIPlsYDvvIx55a+55bqUcmFk77yMeOWvueW6lHJcbiAgICByYWRTY2FsZSA9ICd4JztcbiAgICByU2NhbGUgPSAneSc7XG4gIH1cblxuICB2YXIgY291bnQgPSAwO1xuICB0cmF2ZXJzZVRyZWUoZGF0YSwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBjb3VudCsrO1xuXG4gICAgaWYgKG5vZGUueCA+IG1heC54KSB7XG4gICAgICBtYXgueCA9IG5vZGUueDtcbiAgICB9XG5cbiAgICBpZiAobm9kZS54IDwgbWluLngpIHtcbiAgICAgIG1pbi54ID0gbm9kZS54O1xuICAgIH1cblxuICAgIGlmIChub2RlLnkgPiBtYXgueSkge1xuICAgICAgbWF4LnkgPSBub2RlLnk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUueSA8IG1pbi55KSB7XG4gICAgICBtaW4ueSA9IG5vZGUueTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG4gIHZhciBhdmdSYWQgPSBNYXRoLlBJICogMiAvIGNvdW50O1xuICB2YXIgcmFkRGlmZiA9IG1heFtyYWRTY2FsZV0gLSBtaW5bcmFkU2NhbGVdO1xuXG4gIGlmIChyYWREaWZmID09PSAwKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICB0cmF2ZXJzZVRyZWUoZGF0YSwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICB2YXIgcmFkaWFsID0gKG5vZGVbcmFkU2NhbGVdIC0gbWluW3JhZFNjYWxlXSkgLyByYWREaWZmICogKE1hdGguUEkgKiAyIC0gYXZnUmFkKSArIGF2Z1JhZDtcbiAgICB2YXIgciA9IE1hdGguYWJzKHJTY2FsZSA9PT0gJ3gnID8gbm9kZS54IC0gZGF0YS54IDogbm9kZS55IC0gZGF0YS55KTtcbiAgICBub2RlLnggPSByICogTWF0aC5jb3MocmFkaWFsKTtcbiAgICBub2RlLnkgPSByICogTWF0aC5zaW4ocmFkaWFsKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiBkYXRhO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-pc/es/util/layout.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/base.js": /*!*************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/base.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\nvar PluginBase =\n/** @class */\nfunction () {\n /**\n * 插件基类的构造函数\n * @param cfgs 插件的配置项\n */\n function PluginBase(cfgs) {\n this._cfgs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"deepMix\"])(this.getDefaultCfgs(), cfgs);\n this._events = {};\n this.destroyed = false;\n }\n /**\n * 获取默认的插件配置\n */\n\n\n PluginBase.prototype.getDefaultCfgs = function () {\n return {};\n };\n /**\n * 初始化插件\n * @param graph IGraph 实例\n */\n\n\n PluginBase.prototype.initPlugin = function (graph) {\n var self = this;\n self.set('graph', graph);\n var events = self.getEvents();\n var bindEvents = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (v, k) {\n var event = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"wrapBehavior\"])(self, v);\n bindEvents[k] = event;\n graph.on(k, event);\n });\n this._events = bindEvents;\n this.init();\n };\n /**\n * 获取插件中的事件和事件处理方法,供子类实现\n */\n\n\n PluginBase.prototype.getEvents = function () {\n return {};\n };\n /**\n * 获取配置项中的某个值\n * @param key 键值\n */\n\n\n PluginBase.prototype.get = function (key) {\n var _a;\n\n return (_a = this._cfgs) === null || _a === void 0 ? void 0 : _a[key];\n };\n /**\n * 将指定的值存储到 cfgs 中\n * @param key 键值\n * @param val 设置的值\n */\n\n\n PluginBase.prototype.set = function (key, val) {\n this._cfgs[key] = val;\n };\n /**\n * 销毁方法,供子类复写\n */\n\n\n PluginBase.prototype.destroy = function () {};\n /**\n * 销毁插件\n */\n\n\n PluginBase.prototype.destroyPlugin = function () {\n this.destroy();\n var graph = this.get('graph');\n var events = this._events;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (v, k) {\n graph.off(k, v);\n });\n this._events = null;\n this._cfgs = null;\n this.destroyed = true;\n };\n\n return PluginBase;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (PluginBase);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL2Jhc2UuanM/ZWZmZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXlEOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDBEQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1Isa0JBQWtCLCtEQUFZO0FBQzlCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHlFQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBsdWdpbi9lcy9iYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd3JhcEJlaGF2aW9yLCBlYWNoLCBkZWVwTWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5cbnZhciBQbHVnaW5CYXNlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIOaPkuS7tuWfuuexu+eahOaehOmAoOWHveaVsFxuICAgKiBAcGFyYW0gY2ZncyDmj5Lku7bnmoTphY3nva7poblcbiAgICovXG4gIGZ1bmN0aW9uIFBsdWdpbkJhc2UoY2Zncykge1xuICAgIHRoaXMuX2NmZ3MgPSBkZWVwTWl4KHRoaXMuZ2V0RGVmYXVsdENmZ3MoKSwgY2Zncyk7XG4gICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgfVxuICAvKipcbiAgICog6I635Y+W6buY6K6k55qE5o+S5Lu26YWN572uXG4gICAqL1xuXG5cbiAgUGx1Z2luQmFzZS5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9O1xuICAvKipcbiAgICog5Yid5aeL5YyW5o+S5Lu2XG4gICAqIEBwYXJhbSBncmFwaCBJR3JhcGgg5a6e5L6LXG4gICAqL1xuXG5cbiAgUGx1Z2luQmFzZS5wcm90b3R5cGUuaW5pdFBsdWdpbiA9IGZ1bmN0aW9uIChncmFwaCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLnNldCgnZ3JhcGgnLCBncmFwaCk7XG4gICAgdmFyIGV2ZW50cyA9IHNlbGYuZ2V0RXZlbnRzKCk7XG4gICAgdmFyIGJpbmRFdmVudHMgPSB7fTtcbiAgICBlYWNoKGV2ZW50cywgZnVuY3Rpb24gKHYsIGspIHtcbiAgICAgIHZhciBldmVudCA9IHdyYXBCZWhhdmlvcihzZWxmLCB2KTtcbiAgICAgIGJpbmRFdmVudHNba10gPSBldmVudDtcbiAgICAgIGdyYXBoLm9uKGssIGV2ZW50KTtcbiAgICB9KTtcbiAgICB0aGlzLl9ldmVudHMgPSBiaW5kRXZlbnRzO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5o+S5Lu25Lit55qE5LqL5Lu25ZKM5LqL5Lu25aSE55CG5pa55rOV77yM5L6b5a2Q57G75a6e546wXG4gICAqL1xuXG5cbiAgUGx1Z2luQmFzZS5wcm90b3R5cGUuZ2V0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPlumFjee9rumhueS4reeahOafkOS4quWAvFxuICAgKiBAcGFyYW0ga2V5IOmUruWAvFxuICAgKi9cblxuXG4gIFBsdWdpbkJhc2UucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgX2E7XG5cbiAgICByZXR1cm4gKF9hID0gdGhpcy5fY2ZncykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW2tleV07XG4gIH07XG4gIC8qKlxuICAgKiDlsIbmjIflrprnmoTlgLzlrZjlgqjliLAgY2ZncyDkuK1cbiAgICogQHBhcmFtIGtleSDplK7lgLxcbiAgICogQHBhcmFtIHZhbCDorr7nva7nmoTlgLxcbiAgICovXG5cblxuICBQbHVnaW5CYXNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWwpIHtcbiAgICB0aGlzLl9jZmdzW2tleV0gPSB2YWw7XG4gIH07XG4gIC8qKlxuICAgKiDplIDmr4Hmlrnms5XvvIzkvpvlrZDnsbvlpI3lhplcbiAgICovXG5cblxuICBQbHVnaW5CYXNlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge307XG4gIC8qKlxuICAgKiDplIDmr4Hmj5Lku7ZcbiAgICovXG5cblxuICBQbHVnaW5CYXNlLnByb3RvdHlwZS5kZXN0cm95UGx1Z2luID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgZWFjaChldmVudHMsIGZ1bmN0aW9uICh2LCBrKSB7XG4gICAgICBncmFwaC5vZmYoaywgdik7XG4gICAgfSk7XG4gICAgdGhpcy5fZXZlbnRzID0gbnVsbDtcbiAgICB0aGlzLl9jZmdzID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIFBsdWdpbkJhc2U7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFBsdWdpbkJhc2U7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/base.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/bundling/index.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/bundling/index.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\nfunction getEucliDis(pointA, pointB, eps) {\n var vx = pointA.x - pointB.x;\n var vy = pointA.y - pointB.y;\n\n if (!eps || Math.abs(vx) > eps || Math.abs(vy) > eps) {\n return Math.sqrt(vx * vx + vy * vy);\n }\n\n return eps;\n}\n\nfunction getDotProduct(ei, ej) {\n return ei.x * ej.x + ei.y * ej.y;\n}\n\nfunction projectPointToEdge(p, e) {\n var k = (e.source.y - e.target.y) / (e.source.x - e.target.x);\n var x = (k * k * e.source.x + k * (p.y - e.source.y) + p.x) / (k * k + 1);\n var y = k * (x - e.source.x) + e.source.y;\n return {\n x: x,\n y: y\n };\n}\n\nvar Bundling =\n/** @class */\nfunction (_super) {\n __extends(Bundling, _super);\n\n function Bundling(config) {\n return _super.call(this, config) || this;\n }\n\n Bundling.prototype.getDefaultCfgs = function () {\n return {\n edgeBundles: [],\n edgePoints: [],\n K: 0.1,\n lambda: 0.1,\n divisions: 1,\n divRate: 2,\n cycles: 6,\n iterations: 90,\n iterRate: 0.6666667,\n bundleThreshold: 0.6,\n eps: 1e-6,\n onLayoutEnd: function onLayoutEnd() {},\n onTick: function onTick() {}\n };\n };\n\n Bundling.prototype.init = function () {\n var graph = this.get('graph');\n var onTick = this.get('onTick');\n\n var tick = function tick() {\n if (onTick) {\n onTick();\n }\n\n graph.refreshPositions();\n };\n\n this.set('tick', tick);\n };\n\n Bundling.prototype.bundling = function (data) {\n var self = this;\n self.set('data', data); // 如果正在布局,忽略布局请求\n\n if (self.isTicking()) {\n return;\n }\n\n var edges = data.edges || [];\n var nodes = data.nodes || [];\n var nodeIdMap = {};\n var error = false;\n nodes.forEach(function (node) {\n if (node.x === null || !node.y === null || node.x === undefined || !node.y === undefined) {\n error = true;\n }\n\n nodeIdMap[node.id] = node;\n });\n if (error) throw new Error('please layout the graph or assign x and y for nodes first');\n self.set('nodeIdMap', nodeIdMap); // subdivide each edges\n\n var divisions = self.get('divisions');\n var divRate = self.get('divRate');\n var edgePoints = self.divideEdges(divisions);\n self.set('edgePoints', edgePoints); // compute the bundles\n\n var edgeBundles = self.getEdgeBundles();\n self.set('edgeBundles', edgeBundles); // iterations\n\n var C = self.get('cycles');\n var iterations = self.get('iterations');\n var iterRate = self.get('iterRate');\n var lambda = self.get('lambda');\n\n for (var i = 0; i < C; i++) {\n var _loop_1 = function _loop_1(j) {\n var forces = [];\n edges.forEach(function (e, k) {\n if (e.source === e.target) return;\n var source = nodeIdMap[e.source];\n var target = nodeIdMap[e.target];\n forces[k] = self.getEdgeForces({\n source: source,\n target: target\n }, k, divisions, lambda);\n\n for (var p = 0; p < divisions + 1; p++) {\n edgePoints[k][p].x += forces[k][p].x;\n edgePoints[k][p].y += forces[k][p].y;\n }\n });\n };\n\n for (var j = 0; j < iterations; j++) {\n _loop_1(j);\n } // parameters for nex cycle\n\n\n lambda = lambda / 2;\n divisions *= divRate;\n iterations *= iterRate;\n edgePoints = self.divideEdges(divisions);\n self.set('edgePoints', edgePoints);\n } // change the edges according to edgePoints\n\n\n edges.forEach(function (e, i) {\n if (e.source === e.target) return;\n e.type = 'polyline';\n e.controlPoints = edgePoints[i].slice(1, edgePoints[i].length - 1);\n });\n var graph = self.get('graph');\n graph.refresh();\n };\n\n Bundling.prototype.updateBundling = function (cfg) {\n var self = this;\n var data = cfg.data;\n\n if (data) {\n self.set('data', data);\n }\n\n if (self.get('ticking')) {\n self.set('ticking', false);\n }\n\n Object.keys(cfg).forEach(function (key) {\n self.set(key, cfg[key]);\n });\n\n if (cfg.onTick) {\n var graph_1 = this.get('graph');\n self.set('tick', function () {\n cfg.onTick();\n graph_1.refresh();\n });\n }\n\n self.bundling(data);\n };\n\n Bundling.prototype.divideEdges = function (divisions) {\n var self = this;\n var edges = self.get('data').edges;\n var nodeIdMap = self.get('nodeIdMap');\n var edgePoints = self.get('edgePoints');\n if (!edgePoints || edgePoints === undefined) edgePoints = [];\n edges.forEach(function (edge, i) {\n if (!edgePoints[i] || edgePoints[i] === undefined) {\n edgePoints[i] = [];\n }\n\n var source = nodeIdMap[edge.source];\n var target = nodeIdMap[edge.target];\n\n if (divisions === 1) {\n edgePoints[i].push({\n x: source.x,\n y: source.y\n }); // source\n\n edgePoints[i].push({\n x: 0.5 * (source.x + target.x),\n y: 0.5 * (source.y + target.y)\n }); // mid\n\n edgePoints[i].push({\n x: target.x,\n y: target.y\n }); // target\n } else {\n var edgeLength = 0;\n\n if (!edgePoints[i] || edgePoints[i] === []) {\n // it is a straight line\n edgeLength = getEucliDis({\n x: source.x,\n y: source.y\n }, {\n x: target.x,\n y: target.y\n });\n } else {\n edgeLength = self.getEdgeLength(edgePoints[i]);\n }\n\n var divisionLength_1 = edgeLength / (divisions + 1);\n var currentDivisonLength_1 = divisionLength_1;\n var newEdgePoints_1 = [{\n x: source.x,\n y: source.y\n }]; // source\n\n edgePoints[i].forEach(function (ep, j) {\n if (j === 0) return;\n var oriDivisionLength = getEucliDis(ep, edgePoints[i][j - 1]);\n\n while (oriDivisionLength > currentDivisonLength_1) {\n var ratio = currentDivisonLength_1 / oriDivisionLength;\n var edgePoint = {\n x: edgePoints[i][j - 1].x,\n y: edgePoints[i][j - 1].y\n };\n edgePoint.x += ratio * (ep.x - edgePoints[i][j - 1].x);\n edgePoint.y += ratio * (ep.y - edgePoints[i][j - 1].y);\n newEdgePoints_1.push(edgePoint);\n oriDivisionLength -= currentDivisonLength_1;\n currentDivisonLength_1 = divisionLength_1;\n }\n\n currentDivisonLength_1 -= oriDivisionLength;\n });\n newEdgePoints_1.push({\n x: target.x,\n y: target.y\n }); // target\n\n edgePoints[i] = newEdgePoints_1;\n }\n });\n return edgePoints;\n };\n /**\n * 计算边的长度\n * @param points\n */\n\n\n Bundling.prototype.getEdgeLength = function (points) {\n var length = 0;\n points.forEach(function (p, i) {\n if (i === 0) return;\n length += getEucliDis(p, points[i - 1]);\n });\n return length;\n };\n\n Bundling.prototype.getEdgeBundles = function () {\n var self = this;\n var data = self.get('data');\n var edges = data.edges || [];\n var bundleThreshold = self.get('bundleThreshold');\n var nodeIdMap = self.get('nodeIdMap');\n var edgeBundles = self.get('edgeBundles');\n if (!edgeBundles) edgeBundles = [];\n edges.forEach(function (e, i) {\n if (!edgeBundles[i] || edgeBundles[i] === undefined) {\n edgeBundles[i] = [];\n }\n });\n edges.forEach(function (ei, i) {\n var iSource = nodeIdMap[ei.source];\n var iTarget = nodeIdMap[ei.target];\n edges.forEach(function (ej, j) {\n if (j <= i) return;\n var jSource = nodeIdMap[ej.source];\n var jTarget = nodeIdMap[ej.target];\n var score = self.getBundleScore({\n source: iSource,\n target: iTarget\n }, {\n source: jSource,\n target: jTarget\n });\n\n if (score >= bundleThreshold) {\n edgeBundles[i].push(j);\n edgeBundles[j].push(i);\n }\n });\n });\n return edgeBundles;\n };\n\n Bundling.prototype.getBundleScore = function (ei, ej) {\n var self = this;\n ei.vx = ei.target.x - ei.source.x;\n ei.vy = ei.target.y - ei.source.y;\n ej.vx = ej.target.x - ej.source.x;\n ej.vy = ej.target.y - ej.source.y;\n ei.length = getEucliDis({\n x: ei.source.x,\n y: ei.source.y\n }, {\n x: ei.target.x,\n y: ei.target.y\n });\n ej.length = getEucliDis({\n x: ej.source.x,\n y: ej.source.y\n }, {\n x: ej.target.x,\n y: ej.target.y\n }); // angle score\n\n var aScore = self.getAngleScore(ei, ej); // scale score\n\n var sScore = self.getScaleScore(ei, ej); // position score\n\n var pScore = self.getPositionScore(ei, ej); // visibility socre\n\n var vScore = self.getVisibilityScore(ei, ej);\n return aScore * sScore * pScore * vScore;\n };\n\n Bundling.prototype.getAngleScore = function (ei, ej) {\n var dotProduct = getDotProduct({\n x: ei.vx,\n y: ei.vy\n }, {\n x: ej.vx,\n y: ej.vy\n });\n return dotProduct / (ei.length * ej.length);\n };\n\n Bundling.prototype.getScaleScore = function (ei, ej) {\n var aLength = (ei.length + ej.length) / 2;\n var score = 2 / (aLength / Math.min(ei.length, ej.length) + Math.max(ei.length, ej.length) / aLength);\n return score;\n };\n\n Bundling.prototype.getPositionScore = function (ei, ej) {\n var aLength = (ei.length + ej.length) / 2;\n var iMid = {\n x: (ei.source.x + ei.target.x) / 2,\n y: (ei.source.y + ei.target.y) / 2\n };\n var jMid = {\n x: (ej.source.x + ej.target.x) / 2,\n y: (ej.source.y + ej.target.y) / 2\n };\n var distance = getEucliDis(iMid, jMid);\n return aLength / (aLength + distance);\n };\n\n Bundling.prototype.getVisibilityScore = function (ei, ej) {\n var vij = this.getEdgeVisibility(ei, ej);\n var vji = this.getEdgeVisibility(ej, ei);\n return vij < vji ? vij : vji;\n };\n\n Bundling.prototype.getEdgeVisibility = function (ei, ej) {\n var ps = projectPointToEdge(ej.source, ei);\n var pt = projectPointToEdge(ej.target, ei);\n var pMid = {\n x: (ps.x + pt.x) / 2,\n y: (ps.y + pt.y) / 2\n };\n var iMid = {\n x: (ei.source.x + ei.target.x) / 2,\n y: (ei.source.y + ei.target.y) / 2\n };\n return Math.max(0, 1 - 2 * getEucliDis(pMid, iMid) / getEucliDis(ps, pt));\n };\n\n Bundling.prototype.getEdgeForces = function (e, eidx, divisions, lambda) {\n var self = this;\n var edgePoints = self.get('edgePoints');\n var K = self.get('K');\n var kp = K / (getEucliDis(e.source, e.target) * (divisions + 1));\n var edgePointForces = [{\n x: 0,\n y: 0\n }];\n\n for (var i = 1; i < divisions; i++) {\n var force = {\n x: 0,\n y: 0\n };\n var spring = self.getSpringForce({\n pre: edgePoints[eidx][i - 1],\n cur: edgePoints[eidx][i],\n next: edgePoints[eidx][i + 1]\n }, kp);\n var electrostatic = self.getElectrostaticForce(i, eidx);\n force.x = lambda * (spring.x + electrostatic.x);\n force.y = lambda * (spring.y + electrostatic.y);\n edgePointForces.push(force);\n }\n\n edgePointForces.push({\n x: 0,\n y: 0\n });\n return edgePointForces;\n };\n\n Bundling.prototype.getSpringForce = function (divisions, kp) {\n var x = divisions.pre.x + divisions.next.x - 2 * divisions.cur.x;\n var y = divisions.pre.y + divisions.next.y - 2 * divisions.cur.y;\n x *= kp;\n y *= kp;\n return {\n x: x,\n y: y\n };\n };\n\n Bundling.prototype.getElectrostaticForce = function (pidx, eidx) {\n var self = this;\n var eps = self.get('eps');\n var edgeBundles = self.get('edgeBundles');\n var edgePoints = self.get('edgePoints');\n var edgeBundle = edgeBundles[eidx];\n var resForce = {\n x: 0,\n y: 0\n };\n edgeBundle.forEach(function (eb) {\n var force = {\n x: edgePoints[eb][pidx].x - edgePoints[eidx][pidx].x,\n y: edgePoints[eb][pidx].y - edgePoints[eidx][pidx].y\n };\n\n if (Math.abs(force.x) > eps || Math.abs(force.y) > eps) {\n var length_1 = getEucliDis(edgePoints[eb][pidx], edgePoints[eidx][pidx]);\n var diff = 1 / length_1;\n resForce.x += force.x * diff;\n resForce.y += force.y * diff;\n }\n });\n return resForce;\n };\n\n Bundling.prototype.isTicking = function () {\n return this.get('ticking');\n };\n\n Bundling.prototype.getSimulation = function () {\n return this.get('forceSimulation');\n };\n\n Bundling.prototype.destroy = function () {\n if (this.get('ticking')) {\n this.getSimulation().stop();\n }\n\n _super.prototype.destroy.call(this);\n };\n\n return Bundling;\n}(_base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Bundling);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL2J1bmRsaW5nL2luZGV4LmpzP2ZjZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFMEI7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWCx5QkFBeUIsbUJBQW1CO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSxxQkFBcUIsZ0JBQWdCO0FBQ3JDO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVg7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFO0FBQ1gsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFOztBQUVYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFOztBQUVYO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLDRDQUE0Qzs7QUFFNUMsNENBQTRDOztBQUU1QywrQ0FBK0M7O0FBRS9DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLHVFQUFRIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBsdWdpbi9lcy9idW5kbGluZy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2V4dGVuZHMgPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9leHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gZXh0ZW5kU3RhdGljcyhkLCBiKSB7XG4gICAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZC5fX3Byb3RvX18gPSBiO1xuICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGZvciAodmFyIHAgaW4gYikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICAgIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgZnVuY3Rpb24gX18oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICB9XG5cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gIH07XG59KCk7XG5cbmltcG9ydCBCYXNlIGZyb20gJy4uL2Jhc2UnO1xuXG5mdW5jdGlvbiBnZXRFdWNsaURpcyhwb2ludEEsIHBvaW50QiwgZXBzKSB7XG4gIHZhciB2eCA9IHBvaW50QS54IC0gcG9pbnRCLng7XG4gIHZhciB2eSA9IHBvaW50QS55IC0gcG9pbnRCLnk7XG5cbiAgaWYgKCFlcHMgfHwgTWF0aC5hYnModngpID4gZXBzIHx8IE1hdGguYWJzKHZ5KSA+IGVwcykge1xuICAgIHJldHVybiBNYXRoLnNxcnQodnggKiB2eCArIHZ5ICogdnkpO1xuICB9XG5cbiAgcmV0dXJuIGVwcztcbn1cblxuZnVuY3Rpb24gZ2V0RG90UHJvZHVjdChlaSwgZWopIHtcbiAgcmV0dXJuIGVpLnggKiBlai54ICsgZWkueSAqIGVqLnk7XG59XG5cbmZ1bmN0aW9uIHByb2plY3RQb2ludFRvRWRnZShwLCBlKSB7XG4gIHZhciBrID0gKGUuc291cmNlLnkgLSBlLnRhcmdldC55KSAvIChlLnNvdXJjZS54IC0gZS50YXJnZXQueCk7XG4gIHZhciB4ID0gKGsgKiBrICogZS5zb3VyY2UueCArIGsgKiAocC55IC0gZS5zb3VyY2UueSkgKyBwLngpIC8gKGsgKiBrICsgMSk7XG4gIHZhciB5ID0gayAqICh4IC0gZS5zb3VyY2UueCkgKyBlLnNvdXJjZS55O1xuICByZXR1cm4ge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufVxuXG52YXIgQnVuZGxpbmcgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoQnVuZGxpbmcsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gQnVuZGxpbmcoY29uZmlnKSB7XG4gICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGNvbmZpZykgfHwgdGhpcztcbiAgfVxuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZncyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZWRnZUJ1bmRsZXM6IFtdLFxuICAgICAgZWRnZVBvaW50czogW10sXG4gICAgICBLOiAwLjEsXG4gICAgICBsYW1iZGE6IDAuMSxcbiAgICAgIGRpdmlzaW9uczogMSxcbiAgICAgIGRpdlJhdGU6IDIsXG4gICAgICBjeWNsZXM6IDYsXG4gICAgICBpdGVyYXRpb25zOiA5MCxcbiAgICAgIGl0ZXJSYXRlOiAwLjY2NjY2NjcsXG4gICAgICBidW5kbGVUaHJlc2hvbGQ6IDAuNixcbiAgICAgIGVwczogMWUtNixcbiAgICAgIG9uTGF5b3V0RW5kOiBmdW5jdGlvbiBvbkxheW91dEVuZCgpIHt9LFxuICAgICAgb25UaWNrOiBmdW5jdGlvbiBvblRpY2soKSB7fVxuICAgIH07XG4gIH07XG5cbiAgQnVuZGxpbmcucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIG9uVGljayA9IHRoaXMuZ2V0KCdvblRpY2snKTtcblxuICAgIHZhciB0aWNrID0gZnVuY3Rpb24gdGljaygpIHtcbiAgICAgIGlmIChvblRpY2spIHtcbiAgICAgICAgb25UaWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGdyYXBoLnJlZnJlc2hQb3NpdGlvbnMoKTtcbiAgICB9O1xuXG4gICAgdGhpcy5zZXQoJ3RpY2snLCB0aWNrKTtcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuYnVuZGxpbmcgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLnNldCgnZGF0YScsIGRhdGEpOyAvLyDlpoLmnpzmraPlnKjluIPlsYDvvIzlv73nlaXluIPlsYDor7fmsYJcblxuICAgIGlmIChzZWxmLmlzVGlja2luZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGVkZ2VzID0gZGF0YS5lZGdlcyB8fCBbXTtcbiAgICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzIHx8IFtdO1xuICAgIHZhciBub2RlSWRNYXAgPSB7fTtcbiAgICB2YXIgZXJyb3IgPSBmYWxzZTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBpZiAobm9kZS54ID09PSBudWxsIHx8ICFub2RlLnkgPT09IG51bGwgfHwgbm9kZS54ID09PSB1bmRlZmluZWQgfHwgIW5vZGUueSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgbm9kZUlkTWFwW25vZGUuaWRdID0gbm9kZTtcbiAgICB9KTtcbiAgICBpZiAoZXJyb3IpIHRocm93IG5ldyBFcnJvcigncGxlYXNlIGxheW91dCB0aGUgZ3JhcGggb3IgYXNzaWduIHggYW5kIHkgZm9yIG5vZGVzIGZpcnN0Jyk7XG4gICAgc2VsZi5zZXQoJ25vZGVJZE1hcCcsIG5vZGVJZE1hcCk7IC8vIHN1YmRpdmlkZSBlYWNoIGVkZ2VzXG5cbiAgICB2YXIgZGl2aXNpb25zID0gc2VsZi5nZXQoJ2RpdmlzaW9ucycpO1xuICAgIHZhciBkaXZSYXRlID0gc2VsZi5nZXQoJ2RpdlJhdGUnKTtcbiAgICB2YXIgZWRnZVBvaW50cyA9IHNlbGYuZGl2aWRlRWRnZXMoZGl2aXNpb25zKTtcbiAgICBzZWxmLnNldCgnZWRnZVBvaW50cycsIGVkZ2VQb2ludHMpOyAvLyBjb21wdXRlIHRoZSBidW5kbGVzXG5cbiAgICB2YXIgZWRnZUJ1bmRsZXMgPSBzZWxmLmdldEVkZ2VCdW5kbGVzKCk7XG4gICAgc2VsZi5zZXQoJ2VkZ2VCdW5kbGVzJywgZWRnZUJ1bmRsZXMpOyAvLyBpdGVyYXRpb25zXG5cbiAgICB2YXIgQyA9IHNlbGYuZ2V0KCdjeWNsZXMnKTtcbiAgICB2YXIgaXRlcmF0aW9ucyA9IHNlbGYuZ2V0KCdpdGVyYXRpb25zJyk7XG4gICAgdmFyIGl0ZXJSYXRlID0gc2VsZi5nZXQoJ2l0ZXJSYXRlJyk7XG4gICAgdmFyIGxhbWJkYSA9IHNlbGYuZ2V0KCdsYW1iZGEnKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgQzsgaSsrKSB7XG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaikge1xuICAgICAgICB2YXIgZm9yY2VzID0gW107XG4gICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGUsIGspIHtcbiAgICAgICAgICBpZiAoZS5zb3VyY2UgPT09IGUudGFyZ2V0KSByZXR1cm47XG4gICAgICAgICAgdmFyIHNvdXJjZSA9IG5vZGVJZE1hcFtlLnNvdXJjZV07XG4gICAgICAgICAgdmFyIHRhcmdldCA9IG5vZGVJZE1hcFtlLnRhcmdldF07XG4gICAgICAgICAgZm9yY2VzW2tdID0gc2VsZi5nZXRFZGdlRm9yY2VzKHtcbiAgICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXRcbiAgICAgICAgICB9LCBrLCBkaXZpc2lvbnMsIGxhbWJkYSk7XG5cbiAgICAgICAgICBmb3IgKHZhciBwID0gMDsgcCA8IGRpdmlzaW9ucyArIDE7IHArKykge1xuICAgICAgICAgICAgZWRnZVBvaW50c1trXVtwXS54ICs9IGZvcmNlc1trXVtwXS54O1xuICAgICAgICAgICAgZWRnZVBvaW50c1trXVtwXS55ICs9IGZvcmNlc1trXVtwXS55O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGl0ZXJhdGlvbnM7IGorKykge1xuICAgICAgICBfbG9vcF8xKGopO1xuICAgICAgfSAvLyBwYXJhbWV0ZXJzIGZvciBuZXggY3ljbGVcblxuXG4gICAgICBsYW1iZGEgPSBsYW1iZGEgLyAyO1xuICAgICAgZGl2aXNpb25zICo9IGRpdlJhdGU7XG4gICAgICBpdGVyYXRpb25zICo9IGl0ZXJSYXRlO1xuICAgICAgZWRnZVBvaW50cyA9IHNlbGYuZGl2aWRlRWRnZXMoZGl2aXNpb25zKTtcbiAgICAgIHNlbGYuc2V0KCdlZGdlUG9pbnRzJywgZWRnZVBvaW50cyk7XG4gICAgfSAvLyBjaGFuZ2UgdGhlIGVkZ2VzIGFjY29yZGluZyB0byBlZGdlUG9pbnRzXG5cblxuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGUsIGkpIHtcbiAgICAgIGlmIChlLnNvdXJjZSA9PT0gZS50YXJnZXQpIHJldHVybjtcbiAgICAgIGUudHlwZSA9ICdwb2x5bGluZSc7XG4gICAgICBlLmNvbnRyb2xQb2ludHMgPSBlZGdlUG9pbnRzW2ldLnNsaWNlKDEsIGVkZ2VQb2ludHNbaV0ubGVuZ3RoIC0gMSk7XG4gICAgfSk7XG4gICAgdmFyIGdyYXBoID0gc2VsZi5nZXQoJ2dyYXBoJyk7XG4gICAgZ3JhcGgucmVmcmVzaCgpO1xuICB9O1xuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS51cGRhdGVCdW5kbGluZyA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGRhdGEgPSBjZmcuZGF0YTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBzZWxmLnNldCgnZGF0YScsIGRhdGEpO1xuICAgIH1cblxuICAgIGlmIChzZWxmLmdldCgndGlja2luZycpKSB7XG4gICAgICBzZWxmLnNldCgndGlja2luZycsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBPYmplY3Qua2V5cyhjZmcpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgc2VsZi5zZXQoa2V5LCBjZmdba2V5XSk7XG4gICAgfSk7XG5cbiAgICBpZiAoY2ZnLm9uVGljaykge1xuICAgICAgdmFyIGdyYXBoXzEgPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICAgIHNlbGYuc2V0KCd0aWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjZmcub25UaWNrKCk7XG4gICAgICAgIGdyYXBoXzEucmVmcmVzaCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2VsZi5idW5kbGluZyhkYXRhKTtcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuZGl2aWRlRWRnZXMgPSBmdW5jdGlvbiAoZGl2aXNpb25zKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBlZGdlcyA9IHNlbGYuZ2V0KCdkYXRhJykuZWRnZXM7XG4gICAgdmFyIG5vZGVJZE1hcCA9IHNlbGYuZ2V0KCdub2RlSWRNYXAnKTtcbiAgICB2YXIgZWRnZVBvaW50cyA9IHNlbGYuZ2V0KCdlZGdlUG9pbnRzJyk7XG4gICAgaWYgKCFlZGdlUG9pbnRzIHx8IGVkZ2VQb2ludHMgPT09IHVuZGVmaW5lZCkgZWRnZVBvaW50cyA9IFtdO1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UsIGkpIHtcbiAgICAgIGlmICghZWRnZVBvaW50c1tpXSB8fCBlZGdlUG9pbnRzW2ldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZWRnZVBvaW50c1tpXSA9IFtdO1xuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gbm9kZUlkTWFwW2VkZ2Uuc291cmNlXTtcbiAgICAgIHZhciB0YXJnZXQgPSBub2RlSWRNYXBbZWRnZS50YXJnZXRdO1xuXG4gICAgICBpZiAoZGl2aXNpb25zID09PSAxKSB7XG4gICAgICAgIGVkZ2VQb2ludHNbaV0ucHVzaCh7XG4gICAgICAgICAgeDogc291cmNlLngsXG4gICAgICAgICAgeTogc291cmNlLnlcbiAgICAgICAgfSk7IC8vIHNvdXJjZVxuXG4gICAgICAgIGVkZ2VQb2ludHNbaV0ucHVzaCh7XG4gICAgICAgICAgeDogMC41ICogKHNvdXJjZS54ICsgdGFyZ2V0LngpLFxuICAgICAgICAgIHk6IDAuNSAqIChzb3VyY2UueSArIHRhcmdldC55KVxuICAgICAgICB9KTsgLy8gbWlkXG5cbiAgICAgICAgZWRnZVBvaW50c1tpXS5wdXNoKHtcbiAgICAgICAgICB4OiB0YXJnZXQueCxcbiAgICAgICAgICB5OiB0YXJnZXQueVxuICAgICAgICB9KTsgLy8gdGFyZ2V0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZWRnZUxlbmd0aCA9IDA7XG5cbiAgICAgICAgaWYgKCFlZGdlUG9pbnRzW2ldIHx8IGVkZ2VQb2ludHNbaV0gPT09IFtdKSB7XG4gICAgICAgICAgLy8gaXQgaXMgYSBzdHJhaWdodCBsaW5lXG4gICAgICAgICAgZWRnZUxlbmd0aCA9IGdldEV1Y2xpRGlzKHtcbiAgICAgICAgICAgIHg6IHNvdXJjZS54LFxuICAgICAgICAgICAgeTogc291cmNlLnlcbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICB4OiB0YXJnZXQueCxcbiAgICAgICAgICAgIHk6IHRhcmdldC55XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWRnZUxlbmd0aCA9IHNlbGYuZ2V0RWRnZUxlbmd0aChlZGdlUG9pbnRzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBkaXZpc2lvbkxlbmd0aF8xID0gZWRnZUxlbmd0aCAvIChkaXZpc2lvbnMgKyAxKTtcbiAgICAgICAgdmFyIGN1cnJlbnREaXZpc29uTGVuZ3RoXzEgPSBkaXZpc2lvbkxlbmd0aF8xO1xuICAgICAgICB2YXIgbmV3RWRnZVBvaW50c18xID0gW3tcbiAgICAgICAgICB4OiBzb3VyY2UueCxcbiAgICAgICAgICB5OiBzb3VyY2UueVxuICAgICAgICB9XTsgLy8gc291cmNlXG5cbiAgICAgICAgZWRnZVBvaW50c1tpXS5mb3JFYWNoKGZ1bmN0aW9uIChlcCwgaikge1xuICAgICAgICAgIGlmIChqID09PSAwKSByZXR1cm47XG4gICAgICAgICAgdmFyIG9yaURpdmlzaW9uTGVuZ3RoID0gZ2V0RXVjbGlEaXMoZXAsIGVkZ2VQb2ludHNbaV1baiAtIDFdKTtcblxuICAgICAgICAgIHdoaWxlIChvcmlEaXZpc2lvbkxlbmd0aCA+IGN1cnJlbnREaXZpc29uTGVuZ3RoXzEpIHtcbiAgICAgICAgICAgIHZhciByYXRpbyA9IGN1cnJlbnREaXZpc29uTGVuZ3RoXzEgLyBvcmlEaXZpc2lvbkxlbmd0aDtcbiAgICAgICAgICAgIHZhciBlZGdlUG9pbnQgPSB7XG4gICAgICAgICAgICAgIHg6IGVkZ2VQb2ludHNbaV1baiAtIDFdLngsXG4gICAgICAgICAgICAgIHk6IGVkZ2VQb2ludHNbaV1baiAtIDFdLnlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBlZGdlUG9pbnQueCArPSByYXRpbyAqIChlcC54IC0gZWRnZVBvaW50c1tpXVtqIC0gMV0ueCk7XG4gICAgICAgICAgICBlZGdlUG9pbnQueSArPSByYXRpbyAqIChlcC55IC0gZWRnZVBvaW50c1tpXVtqIC0gMV0ueSk7XG4gICAgICAgICAgICBuZXdFZGdlUG9pbnRzXzEucHVzaChlZGdlUG9pbnQpO1xuICAgICAgICAgICAgb3JpRGl2aXNpb25MZW5ndGggLT0gY3VycmVudERpdmlzb25MZW5ndGhfMTtcbiAgICAgICAgICAgIGN1cnJlbnREaXZpc29uTGVuZ3RoXzEgPSBkaXZpc2lvbkxlbmd0aF8xO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnREaXZpc29uTGVuZ3RoXzEgLT0gb3JpRGl2aXNpb25MZW5ndGg7XG4gICAgICAgIH0pO1xuICAgICAgICBuZXdFZGdlUG9pbnRzXzEucHVzaCh7XG4gICAgICAgICAgeDogdGFyZ2V0LngsXG4gICAgICAgICAgeTogdGFyZ2V0LnlcbiAgICAgICAgfSk7IC8vIHRhcmdldFxuXG4gICAgICAgIGVkZ2VQb2ludHNbaV0gPSBuZXdFZGdlUG9pbnRzXzE7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGVkZ2VQb2ludHM7XG4gIH07XG4gIC8qKlxuICAgKiDorqHnrpfovrnnmoTplb/luqZcbiAgICogQHBhcmFtIHBvaW50c1xuICAgKi9cblxuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS5nZXRFZGdlTGVuZ3RoID0gZnVuY3Rpb24gKHBvaW50cykge1xuICAgIHZhciBsZW5ndGggPSAwO1xuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChwLCBpKSB7XG4gICAgICBpZiAoaSA9PT0gMCkgcmV0dXJuO1xuICAgICAgbGVuZ3RoICs9IGdldEV1Y2xpRGlzKHAsIHBvaW50c1tpIC0gMV0pO1xuICAgIH0pO1xuICAgIHJldHVybiBsZW5ndGg7XG4gIH07XG5cbiAgQnVuZGxpbmcucHJvdG90eXBlLmdldEVkZ2VCdW5kbGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZGF0YSA9IHNlbGYuZ2V0KCdkYXRhJyk7XG4gICAgdmFyIGVkZ2VzID0gZGF0YS5lZGdlcyB8fCBbXTtcbiAgICB2YXIgYnVuZGxlVGhyZXNob2xkID0gc2VsZi5nZXQoJ2J1bmRsZVRocmVzaG9sZCcpO1xuICAgIHZhciBub2RlSWRNYXAgPSBzZWxmLmdldCgnbm9kZUlkTWFwJyk7XG4gICAgdmFyIGVkZ2VCdW5kbGVzID0gc2VsZi5nZXQoJ2VkZ2VCdW5kbGVzJyk7XG4gICAgaWYgKCFlZGdlQnVuZGxlcykgZWRnZUJ1bmRsZXMgPSBbXTtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlLCBpKSB7XG4gICAgICBpZiAoIWVkZ2VCdW5kbGVzW2ldIHx8IGVkZ2VCdW5kbGVzW2ldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZWRnZUJ1bmRsZXNbaV0gPSBbXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlaSwgaSkge1xuICAgICAgdmFyIGlTb3VyY2UgPSBub2RlSWRNYXBbZWkuc291cmNlXTtcbiAgICAgIHZhciBpVGFyZ2V0ID0gbm9kZUlkTWFwW2VpLnRhcmdldF07XG4gICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlaiwgaikge1xuICAgICAgICBpZiAoaiA8PSBpKSByZXR1cm47XG4gICAgICAgIHZhciBqU291cmNlID0gbm9kZUlkTWFwW2VqLnNvdXJjZV07XG4gICAgICAgIHZhciBqVGFyZ2V0ID0gbm9kZUlkTWFwW2VqLnRhcmdldF07XG4gICAgICAgIHZhciBzY29yZSA9IHNlbGYuZ2V0QnVuZGxlU2NvcmUoe1xuICAgICAgICAgIHNvdXJjZTogaVNvdXJjZSxcbiAgICAgICAgICB0YXJnZXQ6IGlUYXJnZXRcbiAgICAgICAgfSwge1xuICAgICAgICAgIHNvdXJjZTogalNvdXJjZSxcbiAgICAgICAgICB0YXJnZXQ6IGpUYXJnZXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHNjb3JlID49IGJ1bmRsZVRocmVzaG9sZCkge1xuICAgICAgICAgIGVkZ2VCdW5kbGVzW2ldLnB1c2goaik7XG4gICAgICAgICAgZWRnZUJ1bmRsZXNbal0ucHVzaChpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGVkZ2VCdW5kbGVzO1xuICB9O1xuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS5nZXRCdW5kbGVTY29yZSA9IGZ1bmN0aW9uIChlaSwgZWopIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgZWkudnggPSBlaS50YXJnZXQueCAtIGVpLnNvdXJjZS54O1xuICAgIGVpLnZ5ID0gZWkudGFyZ2V0LnkgLSBlaS5zb3VyY2UueTtcbiAgICBlai52eCA9IGVqLnRhcmdldC54IC0gZWouc291cmNlLng7XG4gICAgZWoudnkgPSBlai50YXJnZXQueSAtIGVqLnNvdXJjZS55O1xuICAgIGVpLmxlbmd0aCA9IGdldEV1Y2xpRGlzKHtcbiAgICAgIHg6IGVpLnNvdXJjZS54LFxuICAgICAgeTogZWkuc291cmNlLnlcbiAgICB9LCB7XG4gICAgICB4OiBlaS50YXJnZXQueCxcbiAgICAgIHk6IGVpLnRhcmdldC55XG4gICAgfSk7XG4gICAgZWoubGVuZ3RoID0gZ2V0RXVjbGlEaXMoe1xuICAgICAgeDogZWouc291cmNlLngsXG4gICAgICB5OiBlai5zb3VyY2UueVxuICAgIH0sIHtcbiAgICAgIHg6IGVqLnRhcmdldC54LFxuICAgICAgeTogZWoudGFyZ2V0LnlcbiAgICB9KTsgLy8gYW5nbGUgc2NvcmVcblxuICAgIHZhciBhU2NvcmUgPSBzZWxmLmdldEFuZ2xlU2NvcmUoZWksIGVqKTsgLy8gc2NhbGUgc2NvcmVcblxuICAgIHZhciBzU2NvcmUgPSBzZWxmLmdldFNjYWxlU2NvcmUoZWksIGVqKTsgLy8gcG9zaXRpb24gc2NvcmVcblxuICAgIHZhciBwU2NvcmUgPSBzZWxmLmdldFBvc2l0aW9uU2NvcmUoZWksIGVqKTsgLy8gdmlzaWJpbGl0eSBzb2NyZVxuXG4gICAgdmFyIHZTY29yZSA9IHNlbGYuZ2V0VmlzaWJpbGl0eVNjb3JlKGVpLCBlaik7XG4gICAgcmV0dXJuIGFTY29yZSAqIHNTY29yZSAqIHBTY29yZSAqIHZTY29yZTtcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuZ2V0QW5nbGVTY29yZSA9IGZ1bmN0aW9uIChlaSwgZWopIHtcbiAgICB2YXIgZG90UHJvZHVjdCA9IGdldERvdFByb2R1Y3Qoe1xuICAgICAgeDogZWkudngsXG4gICAgICB5OiBlaS52eVxuICAgIH0sIHtcbiAgICAgIHg6IGVqLnZ4LFxuICAgICAgeTogZWoudnlcbiAgICB9KTtcbiAgICByZXR1cm4gZG90UHJvZHVjdCAvIChlaS5sZW5ndGggKiBlai5sZW5ndGgpO1xuICB9O1xuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS5nZXRTY2FsZVNjb3JlID0gZnVuY3Rpb24gKGVpLCBlaikge1xuICAgIHZhciBhTGVuZ3RoID0gKGVpLmxlbmd0aCArIGVqLmxlbmd0aCkgLyAyO1xuICAgIHZhciBzY29yZSA9IDIgLyAoYUxlbmd0aCAvIE1hdGgubWluKGVpLmxlbmd0aCwgZWoubGVuZ3RoKSArIE1hdGgubWF4KGVpLmxlbmd0aCwgZWoubGVuZ3RoKSAvIGFMZW5ndGgpO1xuICAgIHJldHVybiBzY29yZTtcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuZ2V0UG9zaXRpb25TY29yZSA9IGZ1bmN0aW9uIChlaSwgZWopIHtcbiAgICB2YXIgYUxlbmd0aCA9IChlaS5sZW5ndGggKyBlai5sZW5ndGgpIC8gMjtcbiAgICB2YXIgaU1pZCA9IHtcbiAgICAgIHg6IChlaS5zb3VyY2UueCArIGVpLnRhcmdldC54KSAvIDIsXG4gICAgICB5OiAoZWkuc291cmNlLnkgKyBlaS50YXJnZXQueSkgLyAyXG4gICAgfTtcbiAgICB2YXIgak1pZCA9IHtcbiAgICAgIHg6IChlai5zb3VyY2UueCArIGVqLnRhcmdldC54KSAvIDIsXG4gICAgICB5OiAoZWouc291cmNlLnkgKyBlai50YXJnZXQueSkgLyAyXG4gICAgfTtcbiAgICB2YXIgZGlzdGFuY2UgPSBnZXRFdWNsaURpcyhpTWlkLCBqTWlkKTtcbiAgICByZXR1cm4gYUxlbmd0aCAvIChhTGVuZ3RoICsgZGlzdGFuY2UpO1xuICB9O1xuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS5nZXRWaXNpYmlsaXR5U2NvcmUgPSBmdW5jdGlvbiAoZWksIGVqKSB7XG4gICAgdmFyIHZpaiA9IHRoaXMuZ2V0RWRnZVZpc2liaWxpdHkoZWksIGVqKTtcbiAgICB2YXIgdmppID0gdGhpcy5nZXRFZGdlVmlzaWJpbGl0eShlaiwgZWkpO1xuICAgIHJldHVybiB2aWogPCB2amkgPyB2aWogOiB2amk7XG4gIH07XG5cbiAgQnVuZGxpbmcucHJvdG90eXBlLmdldEVkZ2VWaXNpYmlsaXR5ID0gZnVuY3Rpb24gKGVpLCBlaikge1xuICAgIHZhciBwcyA9IHByb2plY3RQb2ludFRvRWRnZShlai5zb3VyY2UsIGVpKTtcbiAgICB2YXIgcHQgPSBwcm9qZWN0UG9pbnRUb0VkZ2UoZWoudGFyZ2V0LCBlaSk7XG4gICAgdmFyIHBNaWQgPSB7XG4gICAgICB4OiAocHMueCArIHB0LngpIC8gMixcbiAgICAgIHk6IChwcy55ICsgcHQueSkgLyAyXG4gICAgfTtcbiAgICB2YXIgaU1pZCA9IHtcbiAgICAgIHg6IChlaS5zb3VyY2UueCArIGVpLnRhcmdldC54KSAvIDIsXG4gICAgICB5OiAoZWkuc291cmNlLnkgKyBlaS50YXJnZXQueSkgLyAyXG4gICAgfTtcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgMSAtIDIgKiBnZXRFdWNsaURpcyhwTWlkLCBpTWlkKSAvIGdldEV1Y2xpRGlzKHBzLCBwdCkpO1xuICB9O1xuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS5nZXRFZGdlRm9yY2VzID0gZnVuY3Rpb24gKGUsIGVpZHgsIGRpdmlzaW9ucywgbGFtYmRhKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBlZGdlUG9pbnRzID0gc2VsZi5nZXQoJ2VkZ2VQb2ludHMnKTtcbiAgICB2YXIgSyA9IHNlbGYuZ2V0KCdLJyk7XG4gICAgdmFyIGtwID0gSyAvIChnZXRFdWNsaURpcyhlLnNvdXJjZSwgZS50YXJnZXQpICogKGRpdmlzaW9ucyArIDEpKTtcbiAgICB2YXIgZWRnZVBvaW50Rm9yY2VzID0gW3tcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfV07XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGRpdmlzaW9uczsgaSsrKSB7XG4gICAgICB2YXIgZm9yY2UgPSB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDBcbiAgICAgIH07XG4gICAgICB2YXIgc3ByaW5nID0gc2VsZi5nZXRTcHJpbmdGb3JjZSh7XG4gICAgICAgIHByZTogZWRnZVBvaW50c1tlaWR4XVtpIC0gMV0sXG4gICAgICAgIGN1cjogZWRnZVBvaW50c1tlaWR4XVtpXSxcbiAgICAgICAgbmV4dDogZWRnZVBvaW50c1tlaWR4XVtpICsgMV1cbiAgICAgIH0sIGtwKTtcbiAgICAgIHZhciBlbGVjdHJvc3RhdGljID0gc2VsZi5nZXRFbGVjdHJvc3RhdGljRm9yY2UoaSwgZWlkeCk7XG4gICAgICBmb3JjZS54ID0gbGFtYmRhICogKHNwcmluZy54ICsgZWxlY3Ryb3N0YXRpYy54KTtcbiAgICAgIGZvcmNlLnkgPSBsYW1iZGEgKiAoc3ByaW5nLnkgKyBlbGVjdHJvc3RhdGljLnkpO1xuICAgICAgZWRnZVBvaW50Rm9yY2VzLnB1c2goZm9yY2UpO1xuICAgIH1cblxuICAgIGVkZ2VQb2ludEZvcmNlcy5wdXNoKHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfSk7XG4gICAgcmV0dXJuIGVkZ2VQb2ludEZvcmNlcztcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuZ2V0U3ByaW5nRm9yY2UgPSBmdW5jdGlvbiAoZGl2aXNpb25zLCBrcCkge1xuICAgIHZhciB4ID0gZGl2aXNpb25zLnByZS54ICsgZGl2aXNpb25zLm5leHQueCAtIDIgKiBkaXZpc2lvbnMuY3VyLng7XG4gICAgdmFyIHkgPSBkaXZpc2lvbnMucHJlLnkgKyBkaXZpc2lvbnMubmV4dC55IC0gMiAqIGRpdmlzaW9ucy5jdXIueTtcbiAgICB4ICo9IGtwO1xuICAgIHkgKj0ga3A7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfTtcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuZ2V0RWxlY3Ryb3N0YXRpY0ZvcmNlID0gZnVuY3Rpb24gKHBpZHgsIGVpZHgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGVwcyA9IHNlbGYuZ2V0KCdlcHMnKTtcbiAgICB2YXIgZWRnZUJ1bmRsZXMgPSBzZWxmLmdldCgnZWRnZUJ1bmRsZXMnKTtcbiAgICB2YXIgZWRnZVBvaW50cyA9IHNlbGYuZ2V0KCdlZGdlUG9pbnRzJyk7XG4gICAgdmFyIGVkZ2VCdW5kbGUgPSBlZGdlQnVuZGxlc1tlaWR4XTtcbiAgICB2YXIgcmVzRm9yY2UgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH07XG4gICAgZWRnZUJ1bmRsZS5mb3JFYWNoKGZ1bmN0aW9uIChlYikge1xuICAgICAgdmFyIGZvcmNlID0ge1xuICAgICAgICB4OiBlZGdlUG9pbnRzW2ViXVtwaWR4XS54IC0gZWRnZVBvaW50c1tlaWR4XVtwaWR4XS54LFxuICAgICAgICB5OiBlZGdlUG9pbnRzW2ViXVtwaWR4XS55IC0gZWRnZVBvaW50c1tlaWR4XVtwaWR4XS55XG4gICAgICB9O1xuXG4gICAgICBpZiAoTWF0aC5hYnMoZm9yY2UueCkgPiBlcHMgfHwgTWF0aC5hYnMoZm9yY2UueSkgPiBlcHMpIHtcbiAgICAgICAgdmFyIGxlbmd0aF8xID0gZ2V0RXVjbGlEaXMoZWRnZVBvaW50c1tlYl1bcGlkeF0sIGVkZ2VQb2ludHNbZWlkeF1bcGlkeF0pO1xuICAgICAgICB2YXIgZGlmZiA9IDEgLyBsZW5ndGhfMTtcbiAgICAgICAgcmVzRm9yY2UueCArPSBmb3JjZS54ICogZGlmZjtcbiAgICAgICAgcmVzRm9yY2UueSArPSBmb3JjZS55ICogZGlmZjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzRm9yY2U7XG4gIH07XG5cbiAgQnVuZGxpbmcucHJvdG90eXBlLmlzVGlja2luZyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3RpY2tpbmcnKTtcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuZ2V0U2ltdWxhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2ZvcmNlU2ltdWxhdGlvbicpO1xuICB9O1xuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmdldCgndGlja2luZycpKSB7XG4gICAgICB0aGlzLmdldFNpbXVsYXRpb24oKS5zdG9wKCk7XG4gICAgfVxuXG4gICAgX3N1cGVyLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyk7XG4gIH07XG5cbiAgcmV0dXJuIEJ1bmRsaW5nO1xufShCYXNlKTtcblxuZXhwb3J0IGRlZmF1bHQgQnVuZGxpbmc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/bundling/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/edgeFilterLens/index.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/edgeFilterLens/index.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\nvar distance = _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Util\"].distance;\nvar DELTA = 0.05;\nvar lensDelegateStyle = {\n stroke: '#000',\n strokeOpacity: 0.8,\n lineWidth: 2,\n fillOpacity: 1,\n fill: '#fff'\n};\n\nvar EdgeFilterLens =\n/** @class */\nfunction (_super) {\n __extends(EdgeFilterLens, _super);\n\n function EdgeFilterLens(config) {\n return _super.call(this, config) || this;\n }\n\n EdgeFilterLens.prototype.getDefaultCfgs = function () {\n return {\n type: 'both',\n trigger: 'mousemove',\n r: 60,\n delegateStyle: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(lensDelegateStyle),\n showLabel: 'edge',\n scaleRBy: 'wheel'\n };\n }; // class-methods-use-this\n\n\n EdgeFilterLens.prototype.getEvents = function () {\n var events;\n\n switch (this.get('trigger')) {\n case 'click':\n events = {\n click: 'filter'\n };\n break;\n\n case 'drag':\n events = {\n click: 'createDelegate'\n };\n break;\n\n default:\n events = {\n mousemove: 'filter'\n };\n break;\n }\n\n return events;\n };\n\n EdgeFilterLens.prototype.init = function () {\n var self = this;\n var showLabel = self.get('showLabel');\n var showNodeLabel = showLabel === 'node' || showLabel === 'both';\n var showEdgeLabel = showLabel === 'edge' || showLabel === 'both';\n self.set('showNodeLabel', showNodeLabel);\n self.set('showEdgeLabel', showEdgeLabel);\n var shouldShow = self.get('shouldShow');\n if (!shouldShow) self.set('shouldShow', function () {\n return true;\n });\n }; // Create the delegate when the trigger is drag\n\n\n EdgeFilterLens.prototype.createDelegate = function (e) {\n var self = this;\n var lensDelegate = self.get('delegate');\n\n if (!lensDelegate || lensDelegate.destroyed) {\n self.filter(e);\n lensDelegate = self.get('delegate'); // drag to move the lens\n\n lensDelegate.on('dragstart', function (evt) {});\n lensDelegate.on('drag', function (evt) {\n self.filter(evt);\n }); // 绑定调整范围(r)\n // 由于 drag 用于改变 lens 位置,因此在此模式下,drag 不能用于调整 r\n // scaling r\n\n if (this.get('scaleRBy') === 'wheel') {\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n }\n }\n };\n /**\n * Scale the range by wheel\n * @param e mouse wheel event\n */\n\n\n EdgeFilterLens.prototype.scaleRByWheel = function (e) {\n var self = this;\n if (!e || !e.originalEvent) return;\n if (e.preventDefault) e.preventDefault();\n var graph = self.get('graph');\n var ratio;\n var lensDelegate = self.get('delegate');\n var lensCenter = lensDelegate ? {\n x: lensDelegate.attr('x'),\n y: lensDelegate.attr('y')\n } : undefined;\n var mousePos = lensCenter || graph.getPointByClient(e.clientX, e.clientY);\n\n if (e.originalEvent.wheelDelta < 0) {\n ratio = 1 - DELTA;\n } else {\n ratio = 1 / (1 - DELTA);\n }\n\n var maxR = self.get('maxR');\n var minR = self.get('minR');\n var r = self.get('r');\n\n if (r > (maxR || graph.get('height')) && ratio > 1 || r < (minR || graph.get('height') * 0.05) && ratio < 1) {\n ratio = 1;\n }\n\n r *= ratio;\n self.set('r', r);\n self.filter(e);\n };\n /**\n * Response function for mousemove, click, or drag to filter out the edges\n * @param e mouse event\n */\n\n\n EdgeFilterLens.prototype.filter = function (e) {\n var self = this;\n var graph = self.get('graph');\n var nodes = graph.getNodes();\n var hitNodesMap = {};\n var r = self.get('r');\n var type = self.get('type');\n var fCenter = {\n x: e.x,\n y: e.y\n };\n self.updateDelegate(fCenter, r);\n var shouldShow = self.get('shouldShow');\n var vShapes = self.get('vShapes');\n\n if (vShapes) {\n vShapes.forEach(function (shape) {\n shape.remove();\n shape.destroy();\n });\n }\n\n vShapes = [];\n nodes.forEach(function (node) {\n var model = node.getModel();\n var x = model.x,\n y = model.y;\n\n if (distance({\n x: x,\n y: y\n }, fCenter) < r) {\n hitNodesMap[model.id] = node;\n }\n });\n var edges = graph.getEdges();\n var hitEdges = [];\n edges.forEach(function (edge) {\n var model = edge.getModel();\n var sourceId = model.source;\n var targetId = model.target;\n\n if (shouldShow(model)) {\n if (type === 'only-source' || type === 'one') {\n if (hitNodesMap[sourceId] && !hitNodesMap[targetId]) hitEdges.push(edge);\n } else if (type === 'only-target' || type === 'one') {\n if (hitNodesMap[targetId] && !hitNodesMap[sourceId]) hitEdges.push(edge);\n } else if (type === 'both' && hitNodesMap[sourceId] && hitNodesMap[targetId]) {\n hitEdges.push(edge);\n }\n }\n });\n var showNodeLabel = self.get('showNodeLabel');\n var showEdgeLabel = self.get('showEdgelabel'); // copy the shapes in hitEdges\n\n var group = graph.get('group');\n hitEdges.forEach(function (edge) {\n var shapes = edge.get('group').get('children');\n shapes.forEach(function (shape) {\n var shapeType = shape.get('type');\n var vShape = group.addShape(shapeType, {\n attrs: shape.attr()\n });\n vShapes.push(vShape);\n\n if (showNodeLabel && shapeType === 'text') {\n vShape.set('visible', true);\n }\n });\n }); // copy the shape sof hitNodes\n\n Object.keys(hitNodesMap).forEach(function (key) {\n var node = hitNodesMap[key];\n var clonedGroup = node.get('group').clone();\n group.add(clonedGroup);\n vShapes.push(clonedGroup);\n\n if (showEdgeLabel) {\n var shapes = clonedGroup.get('children');\n\n for (var j = 0; j < shapes.length; j++) {\n var shape = shapes[j];\n\n if (shape.get('type') === 'text') {\n shape.set('visible', true);\n }\n }\n }\n });\n self.set('vShapes', vShapes);\n };\n /**\n * Adjust part of the parameters, including trigger, type, r, maxR, minR, shouldShow, showLabel, and scaleRBy\n * @param {EdgeFilterLensConfig} cfg\n */\n\n\n EdgeFilterLens.prototype.updateParams = function (cfg) {\n var self = this;\n var r = cfg.r,\n trigger = cfg.trigger,\n minR = cfg.minR,\n maxR = cfg.maxR,\n scaleRBy = cfg.scaleRBy,\n showLabel = cfg.showLabel,\n shouldShow = cfg.shouldShow;\n\n if (!isNaN(cfg.r)) {\n self.set('r', r);\n }\n\n if (!isNaN(maxR)) {\n self.set('maxR', maxR);\n }\n\n if (!isNaN(minR)) {\n self.set('minR', minR);\n }\n\n if (trigger === 'mousemove' || trigger === 'click') {\n self.set('trigger', trigger);\n }\n\n if (scaleRBy === 'wheel' || scaleRBy === 'unset') {\n self.set('scaleRBy', scaleRBy);\n self.get('delegate').remove();\n self.get('delegate').destroy();\n var dPercentText = self.get('dPercentText');\n\n if (dPercentText) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n }\n\n if (showLabel === 'node' || showLabel === 'both') {\n self.set('showNodeLabel', true);\n }\n\n if (showLabel === 'edge' || showLabel === 'both') {\n self.set('showEdgeLabel', true);\n }\n\n if (shouldShow) {\n self.set('shouldShow', shouldShow);\n }\n };\n /**\n * Update the delegate shape of the lens\n * @param {Point} mCenter the center of the shape\n * @param {number} r the radius of the shape\n */\n\n\n EdgeFilterLens.prototype.updateDelegate = function (mCenter, r) {\n var self = this;\n var graph = self.get('graph');\n var lensDelegate = self.get('delegate');\n\n if (!lensDelegate || lensDelegate.destroyed) {\n // 拖动多个\n var parent_1 = graph.get('group');\n var attrs = self.get('delegateStyle') || lensDelegateStyle; // model上的x, y是相对于图形中心的,delegateShape是g实例,x,y是绝对坐标\n\n lensDelegate = parent_1.addShape('circle', {\n attrs: __assign({\n r: r,\n x: mCenter.x,\n y: mCenter.y\n }, attrs),\n name: 'lens-shape',\n draggable: true\n });\n\n if (this.get('trigger') !== 'drag') {\n // 调整范围 r 的监听\n if (this.get('scaleRBy') === 'wheel') {\n // 使用滚轮调整 r\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n }\n }\n } else {\n lensDelegate.attr({\n x: mCenter.x,\n y: mCenter.y,\n r: r\n });\n }\n\n self.set('delegate', lensDelegate);\n };\n /**\n * Clear the filtering\n */\n\n\n EdgeFilterLens.prototype.clear = function () {\n var self = this;\n var vShapes = self.get('vShapes');\n\n if (vShapes) {\n vShapes.forEach(function (shape) {\n shape.remove();\n shape.destroy();\n });\n }\n\n vShapes = [];\n self.set('vShapes', vShapes);\n var lensDelegate = self.get('delegate');\n\n if (lensDelegate && !lensDelegate.destroyed) {\n lensDelegate.remove();\n lensDelegate.destroy();\n }\n };\n /**\n * Destroy the component\n */\n\n\n EdgeFilterLens.prototype.destroy = function () {\n this.clear();\n };\n\n return EdgeFilterLens;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EdgeFilterLens);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL2VkZ2VGaWx0ZXJMZW5zL2luZGV4LmpzP2MxMzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsZUFBZSxTQUFJLElBQUksU0FBSTtBQUMzQjtBQUNBLDRDQUE0QyxPQUFPO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFbUM7QUFDRTtBQUNWO0FBQzNCLGVBQWUsa0RBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix3REFBSztBQUMxQjtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQyxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBLE9BQU8sRUFBRTtBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxrREFBa0Q7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHVCQUF1QixtQkFBbUI7QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEscUJBQXFCO0FBQ2xDOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQixhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTs7QUFFakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyw2RUFBYyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wbHVnaW4vZXMvZWRnZUZpbHRlckxlbnMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19leHRlbmRzID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG52YXIgX19hc3NpZ24gPSB0aGlzICYmIHRoaXMuX19hc3NpZ24gfHwgZnVuY3Rpb24gKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHQpIHtcbiAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIHMgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIHAgaW4gcykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5cbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5pbXBvcnQgQmFzZSBmcm9tICcuLi9iYXNlJztcbnZhciBkaXN0YW5jZSA9IFV0aWwuZGlzdGFuY2U7XG52YXIgREVMVEEgPSAwLjA1O1xudmFyIGxlbnNEZWxlZ2F0ZVN0eWxlID0ge1xuICBzdHJva2U6ICcjMDAwJyxcbiAgc3Ryb2tlT3BhY2l0eTogMC44LFxuICBsaW5lV2lkdGg6IDIsXG4gIGZpbGxPcGFjaXR5OiAxLFxuICBmaWxsOiAnI2ZmZidcbn07XG5cbnZhciBFZGdlRmlsdGVyTGVucyA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhFZGdlRmlsdGVyTGVucywgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBFZGdlRmlsdGVyTGVucyhjb25maWcpIHtcbiAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgY29uZmlnKSB8fCB0aGlzO1xuICB9XG5cbiAgRWRnZUZpbHRlckxlbnMucHJvdG90eXBlLmdldERlZmF1bHRDZmdzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnYm90aCcsXG4gICAgICB0cmlnZ2VyOiAnbW91c2Vtb3ZlJyxcbiAgICAgIHI6IDYwLFxuICAgICAgZGVsZWdhdGVTdHlsZTogY2xvbmUobGVuc0RlbGVnYXRlU3R5bGUpLFxuICAgICAgc2hvd0xhYmVsOiAnZWRnZScsXG4gICAgICBzY2FsZVJCeTogJ3doZWVsJ1xuICAgIH07XG4gIH07IC8vIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcblxuXG4gIEVkZ2VGaWx0ZXJMZW5zLnByb3RvdHlwZS5nZXRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV2ZW50cztcblxuICAgIHN3aXRjaCAodGhpcy5nZXQoJ3RyaWdnZXInKSkge1xuICAgICAgY2FzZSAnY2xpY2snOlxuICAgICAgICBldmVudHMgPSB7XG4gICAgICAgICAgY2xpY2s6ICdmaWx0ZXInXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdkcmFnJzpcbiAgICAgICAgZXZlbnRzID0ge1xuICAgICAgICAgIGNsaWNrOiAnY3JlYXRlRGVsZWdhdGUnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBldmVudHMgPSB7XG4gICAgICAgICAgbW91c2Vtb3ZlOiAnZmlsdGVyJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9O1xuXG4gIEVkZ2VGaWx0ZXJMZW5zLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc2hvd0xhYmVsID0gc2VsZi5nZXQoJ3Nob3dMYWJlbCcpO1xuICAgIHZhciBzaG93Tm9kZUxhYmVsID0gc2hvd0xhYmVsID09PSAnbm9kZScgfHwgc2hvd0xhYmVsID09PSAnYm90aCc7XG4gICAgdmFyIHNob3dFZGdlTGFiZWwgPSBzaG93TGFiZWwgPT09ICdlZGdlJyB8fCBzaG93TGFiZWwgPT09ICdib3RoJztcbiAgICBzZWxmLnNldCgnc2hvd05vZGVMYWJlbCcsIHNob3dOb2RlTGFiZWwpO1xuICAgIHNlbGYuc2V0KCdzaG93RWRnZUxhYmVsJywgc2hvd0VkZ2VMYWJlbCk7XG4gICAgdmFyIHNob3VsZFNob3cgPSBzZWxmLmdldCgnc2hvdWxkU2hvdycpO1xuICAgIGlmICghc2hvdWxkU2hvdykgc2VsZi5zZXQoJ3Nob3VsZFNob3cnLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfTsgLy8gQ3JlYXRlIHRoZSBkZWxlZ2F0ZSB3aGVuIHRoZSB0cmlnZ2VyIGlzIGRyYWdcblxuXG4gIEVkZ2VGaWx0ZXJMZW5zLnByb3RvdHlwZS5jcmVhdGVEZWxlZ2F0ZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBsZW5zRGVsZWdhdGUgPSBzZWxmLmdldCgnZGVsZWdhdGUnKTtcblxuICAgIGlmICghbGVuc0RlbGVnYXRlIHx8IGxlbnNEZWxlZ2F0ZS5kZXN0cm95ZWQpIHtcbiAgICAgIHNlbGYuZmlsdGVyKGUpO1xuICAgICAgbGVuc0RlbGVnYXRlID0gc2VsZi5nZXQoJ2RlbGVnYXRlJyk7IC8vIGRyYWcgdG8gbW92ZSB0aGUgbGVuc1xuXG4gICAgICBsZW5zRGVsZWdhdGUub24oJ2RyYWdzdGFydCcsIGZ1bmN0aW9uIChldnQpIHt9KTtcbiAgICAgIGxlbnNEZWxlZ2F0ZS5vbignZHJhZycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgc2VsZi5maWx0ZXIoZXZ0KTtcbiAgICAgIH0pOyAvLyDnu5HlrprosIPmlbTojIPlm7TvvIhy77yJXG4gICAgICAvLyDnlLHkuo4gZHJhZyDnlKjkuo7mlLnlj5ggbGVucyDkvY3nva7vvIzlm6DmraTlnKjmraTmqKHlvI/kuIvvvIxkcmFnIOS4jeiDveeUqOS6juiwg+aVtCByXG4gICAgICAvLyBzY2FsaW5nIHJcblxuICAgICAgaWYgKHRoaXMuZ2V0KCdzY2FsZVJCeScpID09PSAnd2hlZWwnKSB7XG4gICAgICAgIGxlbnNEZWxlZ2F0ZS5vbignbW91c2V3aGVlbCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICBzZWxmLnNjYWxlUkJ5V2hlZWwoZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogU2NhbGUgdGhlIHJhbmdlIGJ5IHdoZWVsXG4gICAqIEBwYXJhbSBlIG1vdXNlIHdoZWVsIGV2ZW50XG4gICAqL1xuXG5cbiAgRWRnZUZpbHRlckxlbnMucHJvdG90eXBlLnNjYWxlUkJ5V2hlZWwgPSBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBpZiAoIWUgfHwgIWUub3JpZ2luYWxFdmVudCkgcmV0dXJuO1xuICAgIGlmIChlLnByZXZlbnREZWZhdWx0KSBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdmFyIGdyYXBoID0gc2VsZi5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIHJhdGlvO1xuICAgIHZhciBsZW5zRGVsZWdhdGUgPSBzZWxmLmdldCgnZGVsZWdhdGUnKTtcbiAgICB2YXIgbGVuc0NlbnRlciA9IGxlbnNEZWxlZ2F0ZSA/IHtcbiAgICAgIHg6IGxlbnNEZWxlZ2F0ZS5hdHRyKCd4JyksXG4gICAgICB5OiBsZW5zRGVsZWdhdGUuYXR0cigneScpXG4gICAgfSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbW91c2VQb3MgPSBsZW5zQ2VudGVyIHx8IGdyYXBoLmdldFBvaW50QnlDbGllbnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuXG4gICAgaWYgKGUub3JpZ2luYWxFdmVudC53aGVlbERlbHRhIDwgMCkge1xuICAgICAgcmF0aW8gPSAxIC0gREVMVEE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhdGlvID0gMSAvICgxIC0gREVMVEEpO1xuICAgIH1cblxuICAgIHZhciBtYXhSID0gc2VsZi5nZXQoJ21heFInKTtcbiAgICB2YXIgbWluUiA9IHNlbGYuZ2V0KCdtaW5SJyk7XG4gICAgdmFyIHIgPSBzZWxmLmdldCgncicpO1xuXG4gICAgaWYgKHIgPiAobWF4UiB8fCBncmFwaC5nZXQoJ2hlaWdodCcpKSAmJiByYXRpbyA+IDEgfHwgciA8IChtaW5SIHx8IGdyYXBoLmdldCgnaGVpZ2h0JykgKiAwLjA1KSAmJiByYXRpbyA8IDEpIHtcbiAgICAgIHJhdGlvID0gMTtcbiAgICB9XG5cbiAgICByICo9IHJhdGlvO1xuICAgIHNlbGYuc2V0KCdyJywgcik7XG4gICAgc2VsZi5maWx0ZXIoZSk7XG4gIH07XG4gIC8qKlxuICAgKiBSZXNwb25zZSBmdW5jdGlvbiBmb3IgbW91c2Vtb3ZlLCBjbGljaywgb3IgZHJhZyB0byBmaWx0ZXIgb3V0IHRoZSBlZGdlc1xuICAgKiBAcGFyYW0gZSBtb3VzZSBldmVudFxuICAgKi9cblxuXG4gIEVkZ2VGaWx0ZXJMZW5zLnByb3RvdHlwZS5maWx0ZXIgPSBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgbm9kZXMgPSBncmFwaC5nZXROb2RlcygpO1xuICAgIHZhciBoaXROb2Rlc01hcCA9IHt9O1xuICAgIHZhciByID0gc2VsZi5nZXQoJ3InKTtcbiAgICB2YXIgdHlwZSA9IHNlbGYuZ2V0KCd0eXBlJyk7XG4gICAgdmFyIGZDZW50ZXIgPSB7XG4gICAgICB4OiBlLngsXG4gICAgICB5OiBlLnlcbiAgICB9O1xuICAgIHNlbGYudXBkYXRlRGVsZWdhdGUoZkNlbnRlciwgcik7XG4gICAgdmFyIHNob3VsZFNob3cgPSBzZWxmLmdldCgnc2hvdWxkU2hvdycpO1xuICAgIHZhciB2U2hhcGVzID0gc2VsZi5nZXQoJ3ZTaGFwZXMnKTtcblxuICAgIGlmICh2U2hhcGVzKSB7XG4gICAgICB2U2hhcGVzLmZvckVhY2goZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgICAgIHNoYXBlLnJlbW92ZSgpO1xuICAgICAgICBzaGFwZS5kZXN0cm95KCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2U2hhcGVzID0gW107XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgICAgdmFyIHggPSBtb2RlbC54LFxuICAgICAgICAgIHkgPSBtb2RlbC55O1xuXG4gICAgICBpZiAoZGlzdGFuY2Uoe1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5XG4gICAgICB9LCBmQ2VudGVyKSA8IHIpIHtcbiAgICAgICAgaGl0Tm9kZXNNYXBbbW9kZWwuaWRdID0gbm9kZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5nZXRFZGdlcygpO1xuICAgIHZhciBoaXRFZGdlcyA9IFtdO1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBtb2RlbCA9IGVkZ2UuZ2V0TW9kZWwoKTtcbiAgICAgIHZhciBzb3VyY2VJZCA9IG1vZGVsLnNvdXJjZTtcbiAgICAgIHZhciB0YXJnZXRJZCA9IG1vZGVsLnRhcmdldDtcblxuICAgICAgaWYgKHNob3VsZFNob3cobW9kZWwpKSB7XG4gICAgICAgIGlmICh0eXBlID09PSAnb25seS1zb3VyY2UnIHx8IHR5cGUgPT09ICdvbmUnKSB7XG4gICAgICAgICAgaWYgKGhpdE5vZGVzTWFwW3NvdXJjZUlkXSAmJiAhaGl0Tm9kZXNNYXBbdGFyZ2V0SWRdKSBoaXRFZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvbmx5LXRhcmdldCcgfHwgdHlwZSA9PT0gJ29uZScpIHtcbiAgICAgICAgICBpZiAoaGl0Tm9kZXNNYXBbdGFyZ2V0SWRdICYmICFoaXROb2Rlc01hcFtzb3VyY2VJZF0pIGhpdEVkZ2VzLnB1c2goZWRnZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2JvdGgnICYmIGhpdE5vZGVzTWFwW3NvdXJjZUlkXSAmJiBoaXROb2Rlc01hcFt0YXJnZXRJZF0pIHtcbiAgICAgICAgICBoaXRFZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIHNob3dOb2RlTGFiZWwgPSBzZWxmLmdldCgnc2hvd05vZGVMYWJlbCcpO1xuICAgIHZhciBzaG93RWRnZUxhYmVsID0gc2VsZi5nZXQoJ3Nob3dFZGdlbGFiZWwnKTsgLy8gY29weSB0aGUgc2hhcGVzIGluIGhpdEVkZ2VzXG5cbiAgICB2YXIgZ3JvdXAgPSBncmFwaC5nZXQoJ2dyb3VwJyk7XG4gICAgaGl0RWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIHNoYXBlcyA9IGVkZ2UuZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgIHNoYXBlcy5mb3JFYWNoKGZ1bmN0aW9uIChzaGFwZSkge1xuICAgICAgICB2YXIgc2hhcGVUeXBlID0gc2hhcGUuZ2V0KCd0eXBlJyk7XG4gICAgICAgIHZhciB2U2hhcGUgPSBncm91cC5hZGRTaGFwZShzaGFwZVR5cGUsIHtcbiAgICAgICAgICBhdHRyczogc2hhcGUuYXR0cigpXG4gICAgICAgIH0pO1xuICAgICAgICB2U2hhcGVzLnB1c2godlNoYXBlKTtcblxuICAgICAgICBpZiAoc2hvd05vZGVMYWJlbCAmJiBzaGFwZVR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICAgIHZTaGFwZS5zZXQoJ3Zpc2libGUnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7IC8vIGNvcHkgdGhlIHNoYXBlIHNvZiBoaXROb2Rlc1xuXG4gICAgT2JqZWN0LmtleXMoaGl0Tm9kZXNNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIG5vZGUgPSBoaXROb2Rlc01hcFtrZXldO1xuICAgICAgdmFyIGNsb25lZEdyb3VwID0gbm9kZS5nZXQoJ2dyb3VwJykuY2xvbmUoKTtcbiAgICAgIGdyb3VwLmFkZChjbG9uZWRHcm91cCk7XG4gICAgICB2U2hhcGVzLnB1c2goY2xvbmVkR3JvdXApO1xuXG4gICAgICBpZiAoc2hvd0VkZ2VMYWJlbCkge1xuICAgICAgICB2YXIgc2hhcGVzID0gY2xvbmVkR3JvdXAuZ2V0KCdjaGlsZHJlbicpO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2hhcGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgdmFyIHNoYXBlID0gc2hhcGVzW2pdO1xuXG4gICAgICAgICAgaWYgKHNoYXBlLmdldCgndHlwZScpID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgIHNoYXBlLnNldCgndmlzaWJsZScsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHNlbGYuc2V0KCd2U2hhcGVzJywgdlNoYXBlcyk7XG4gIH07XG4gIC8qKlxuICAgKiBBZGp1c3QgcGFydCBvZiB0aGUgcGFyYW1ldGVycywgaW5jbHVkaW5nIHRyaWdnZXIsIHR5cGUsIHIsIG1heFIsIG1pblIsIHNob3VsZFNob3csIHNob3dMYWJlbCwgYW5kIHNjYWxlUkJ5XG4gICAqIEBwYXJhbSB7RWRnZUZpbHRlckxlbnNDb25maWd9IGNmZ1xuICAgKi9cblxuXG4gIEVkZ2VGaWx0ZXJMZW5zLnByb3RvdHlwZS51cGRhdGVQYXJhbXMgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciByID0gY2ZnLnIsXG4gICAgICAgIHRyaWdnZXIgPSBjZmcudHJpZ2dlcixcbiAgICAgICAgbWluUiA9IGNmZy5taW5SLFxuICAgICAgICBtYXhSID0gY2ZnLm1heFIsXG4gICAgICAgIHNjYWxlUkJ5ID0gY2ZnLnNjYWxlUkJ5LFxuICAgICAgICBzaG93TGFiZWwgPSBjZmcuc2hvd0xhYmVsLFxuICAgICAgICBzaG91bGRTaG93ID0gY2ZnLnNob3VsZFNob3c7XG5cbiAgICBpZiAoIWlzTmFOKGNmZy5yKSkge1xuICAgICAgc2VsZi5zZXQoJ3InLCByKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzTmFOKG1heFIpKSB7XG4gICAgICBzZWxmLnNldCgnbWF4UicsIG1heFIpO1xuICAgIH1cblxuICAgIGlmICghaXNOYU4obWluUikpIHtcbiAgICAgIHNlbGYuc2V0KCdtaW5SJywgbWluUik7XG4gICAgfVxuXG4gICAgaWYgKHRyaWdnZXIgPT09ICdtb3VzZW1vdmUnIHx8IHRyaWdnZXIgPT09ICdjbGljaycpIHtcbiAgICAgIHNlbGYuc2V0KCd0cmlnZ2VyJywgdHJpZ2dlcik7XG4gICAgfVxuXG4gICAgaWYgKHNjYWxlUkJ5ID09PSAnd2hlZWwnIHx8IHNjYWxlUkJ5ID09PSAndW5zZXQnKSB7XG4gICAgICBzZWxmLnNldCgnc2NhbGVSQnknLCBzY2FsZVJCeSk7XG4gICAgICBzZWxmLmdldCgnZGVsZWdhdGUnKS5yZW1vdmUoKTtcbiAgICAgIHNlbGYuZ2V0KCdkZWxlZ2F0ZScpLmRlc3Ryb3koKTtcbiAgICAgIHZhciBkUGVyY2VudFRleHQgPSBzZWxmLmdldCgnZFBlcmNlbnRUZXh0Jyk7XG5cbiAgICAgIGlmIChkUGVyY2VudFRleHQpIHtcbiAgICAgICAgZFBlcmNlbnRUZXh0LnJlbW92ZSgpO1xuICAgICAgICBkUGVyY2VudFRleHQuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzaG93TGFiZWwgPT09ICdub2RlJyB8fCBzaG93TGFiZWwgPT09ICdib3RoJykge1xuICAgICAgc2VsZi5zZXQoJ3Nob3dOb2RlTGFiZWwnLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoc2hvd0xhYmVsID09PSAnZWRnZScgfHwgc2hvd0xhYmVsID09PSAnYm90aCcpIHtcbiAgICAgIHNlbGYuc2V0KCdzaG93RWRnZUxhYmVsJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFNob3cpIHtcbiAgICAgIHNlbGYuc2V0KCdzaG91bGRTaG93Jywgc2hvdWxkU2hvdyk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogVXBkYXRlIHRoZSBkZWxlZ2F0ZSBzaGFwZSBvZiB0aGUgbGVuc1xuICAgKiBAcGFyYW0ge1BvaW50fSBtQ2VudGVyIHRoZSBjZW50ZXIgb2YgdGhlIHNoYXBlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByIHRoZSByYWRpdXMgb2YgdGhlIHNoYXBlXG4gICAqL1xuXG5cbiAgRWRnZUZpbHRlckxlbnMucHJvdG90eXBlLnVwZGF0ZURlbGVnYXRlID0gZnVuY3Rpb24gKG1DZW50ZXIsIHIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGdyYXBoID0gc2VsZi5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGxlbnNEZWxlZ2F0ZSA9IHNlbGYuZ2V0KCdkZWxlZ2F0ZScpO1xuXG4gICAgaWYgKCFsZW5zRGVsZWdhdGUgfHwgbGVuc0RlbGVnYXRlLmRlc3Ryb3llZCkge1xuICAgICAgLy8g5ouW5Yqo5aSa5LiqXG4gICAgICB2YXIgcGFyZW50XzEgPSBncmFwaC5nZXQoJ2dyb3VwJyk7XG4gICAgICB2YXIgYXR0cnMgPSBzZWxmLmdldCgnZGVsZWdhdGVTdHlsZScpIHx8IGxlbnNEZWxlZ2F0ZVN0eWxlOyAvLyBtb2RlbOS4iueahHgsIHnmmK/nm7jlr7nkuo7lm77lvaLkuK3lv4PnmoTvvIxkZWxlZ2F0ZVNoYXBl5pivZ+WunuS+i++8jHgseeaYr+e7neWvueWdkOagh1xuXG4gICAgICBsZW5zRGVsZWdhdGUgPSBwYXJlbnRfMS5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHI6IHIsXG4gICAgICAgICAgeDogbUNlbnRlci54LFxuICAgICAgICAgIHk6IG1DZW50ZXIueVxuICAgICAgICB9LCBhdHRycyksXG4gICAgICAgIG5hbWU6ICdsZW5zLXNoYXBlJyxcbiAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuZ2V0KCd0cmlnZ2VyJykgIT09ICdkcmFnJykge1xuICAgICAgICAvLyDosIPmlbTojIPlm7QgciDnmoTnm5HlkKxcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCdzY2FsZVJCeScpID09PSAnd2hlZWwnKSB7XG4gICAgICAgICAgLy8g5L2/55So5rua6L2u6LCD5pW0IHJcbiAgICAgICAgICBsZW5zRGVsZWdhdGUub24oJ21vdXNld2hlZWwnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICBzZWxmLnNjYWxlUkJ5V2hlZWwoZXZ0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5zRGVsZWdhdGUuYXR0cih7XG4gICAgICAgIHg6IG1DZW50ZXIueCxcbiAgICAgICAgeTogbUNlbnRlci55LFxuICAgICAgICByOiByXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzZWxmLnNldCgnZGVsZWdhdGUnLCBsZW5zRGVsZWdhdGUpO1xuICB9O1xuICAvKipcbiAgICogQ2xlYXIgdGhlIGZpbHRlcmluZ1xuICAgKi9cblxuXG4gIEVkZ2VGaWx0ZXJMZW5zLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHZTaGFwZXMgPSBzZWxmLmdldCgndlNoYXBlcycpO1xuXG4gICAgaWYgKHZTaGFwZXMpIHtcbiAgICAgIHZTaGFwZXMuZm9yRWFjaChmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICAgICAgc2hhcGUucmVtb3ZlKCk7XG4gICAgICAgIHNoYXBlLmRlc3Ryb3koKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZTaGFwZXMgPSBbXTtcbiAgICBzZWxmLnNldCgndlNoYXBlcycsIHZTaGFwZXMpO1xuICAgIHZhciBsZW5zRGVsZWdhdGUgPSBzZWxmLmdldCgnZGVsZWdhdGUnKTtcblxuICAgIGlmIChsZW5zRGVsZWdhdGUgJiYgIWxlbnNEZWxlZ2F0ZS5kZXN0cm95ZWQpIHtcbiAgICAgIGxlbnNEZWxlZ2F0ZS5yZW1vdmUoKTtcbiAgICAgIGxlbnNEZWxlZ2F0ZS5kZXN0cm95KCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogRGVzdHJveSB0aGUgY29tcG9uZW50XG4gICAqL1xuXG5cbiAgRWRnZUZpbHRlckxlbnMucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jbGVhcigpO1xuICB9O1xuXG4gIHJldHVybiBFZGdlRmlsdGVyTGVucztcbn0oQmFzZSk7XG5cbmV4cG9ydCBkZWZhdWx0IEVkZ2VGaWx0ZXJMZW5zOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/edgeFilterLens/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/fisheye/index.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/fisheye/index.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\nvar DELTA = 0.05;\nvar lensDelegateStyle = {\n stroke: '#000',\n strokeOpacity: 0.8,\n lineWidth: 2,\n fillOpacity: 0.1,\n fill: '#ccc'\n};\n\nvar Fisheye =\n/** @class */\nfunction (_super) {\n __extends(Fisheye, _super);\n\n function Fisheye(config) {\n return _super.call(this, config) || this;\n }\n\n Fisheye.prototype.getDefaultCfgs = function () {\n return {\n trigger: 'mousemove',\n d: 1.5,\n r: 300,\n delegateStyle: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(lensDelegateStyle),\n showLabel: false,\n maxD: 5,\n minD: 0,\n scaleRBy: 'unset',\n scaleDBy: 'unset',\n showDPercent: true\n };\n }; // class-methods-use-this\n\n\n Fisheye.prototype.getEvents = function () {\n var events;\n\n switch (this.get('trigger')) {\n case 'click':\n events = {\n click: 'magnify'\n };\n break;\n\n case 'drag':\n events = {\n click: 'createDelegate'\n };\n break;\n\n default:\n events = {\n mousemove: 'magnify'\n };\n break;\n }\n\n return events;\n };\n\n Fisheye.prototype.init = function () {\n var self = this;\n var r = self.get('r');\n self.set('cachedMagnifiedModels', []);\n self.set('cachedOriginPositions', {});\n self.set('r2', r * r);\n var d = self.get('d');\n self.set('molecularParam', (d + 1) * r);\n }; // Create the delegate when the trigger is drag\n\n\n Fisheye.prototype.createDelegate = function (e) {\n var _this = this;\n\n var self = this;\n var lensDelegate = self.get('delegate');\n\n if (!lensDelegate || lensDelegate.destroyed) {\n self.magnify(e);\n lensDelegate = self.get('delegate'); // drag to move the lens\n\n lensDelegate.on('dragstart', function (evt) {\n self.set('delegateCenterDiff', {\n x: lensDelegate.attr('x') - evt.x,\n y: lensDelegate.attr('y') - evt.y\n });\n });\n lensDelegate.on('drag', function (evt) {\n self.magnify(evt);\n }); // 绑定调整范围(r)和缩放系数(d)的监听\n // 由于 drag 用于改变 lens 位置, 因此在此模式下, drag 不能用于调整 r 和 d\n // scaling d\n\n if (this.get('scaleDBy') === 'wheel') {\n lensDelegate.on('mousewheel', function (evt) {\n _this.scaleDByWheel(evt);\n });\n } // scaling r\n\n\n if (this.get('scaleRBy') === 'wheel') {\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n }\n }\n };\n /**\n * Scale the range by wheel\n * @param e mouse wheel event\n */\n\n\n Fisheye.prototype.scaleRByWheel = function (e) {\n var self = this;\n if (!e || !e.originalEvent) return;\n if (e.preventDefault) e.preventDefault();\n var graph = self.get('graph');\n var ratio;\n var lensDelegate = self.get('delegate');\n var lensCenter = lensDelegate ? {\n x: lensDelegate.attr('x'),\n y: lensDelegate.attr('y')\n } : undefined;\n var mousePos = lensCenter || graph.getPointByClient(e.clientX, e.clientY);\n\n if (e.originalEvent.wheelDelta < 0) {\n ratio = 1 - DELTA;\n } else {\n ratio = 1 / (1 - DELTA);\n }\n\n var maxR = self.get('maxR');\n var minR = self.get('minR');\n var r = self.get('r');\n\n if (r > (maxR || graph.get('height')) && ratio > 1 || r < (minR || graph.get('height') * 0.05) && ratio < 1) {\n ratio = 1;\n }\n\n r *= ratio;\n self.set('r', r);\n self.set('r2', r * r);\n var d = self.get('d');\n self.set('molecularParam', (d + 1) * r);\n self.set('delegateCenterDiff', undefined);\n self.magnify(e, mousePos);\n };\n /**\n * Scale the range by dragging\n * @param e mouse event\n */\n\n\n Fisheye.prototype.scaleRByDrag = function (e) {\n var self = this;\n if (!e) return;\n var dragPrePos = self.get('dragPrePos');\n var graph = self.get('graph');\n var ratio;\n var mousePos = graph.getPointByClient(e.clientX, e.clientY);\n\n if (e.x - dragPrePos.x < 0) {\n ratio = 1 - DELTA;\n } else {\n ratio = 1 / (1 - DELTA);\n }\n\n var maxR = self.get('maxR');\n var minR = self.get('minR');\n var r = self.get('r');\n\n if (r > (maxR || graph.get('height')) && ratio > 1 || r < (minR || graph.get('height') * 0.05) && ratio < 1) {\n ratio = 1;\n }\n\n r *= ratio;\n self.set('r', r);\n self.set('r2', r * r);\n var d = self.get('d');\n self.set('molecularParam', (d + 1) * r);\n self.magnify(e, mousePos);\n self.set('dragPrePos', {\n x: e.x,\n y: e.y\n });\n };\n /**\n * Scale the magnifying factor by wheel\n * @param e mouse wheel event\n */\n\n\n Fisheye.prototype.scaleDByWheel = function (evt) {\n var self = this;\n if (!evt && !evt.originalEvent) return;\n if (evt.preventDefault) evt.preventDefault();\n var delta = 0;\n\n if (evt.originalEvent.wheelDelta < 0) {\n delta = -0.1;\n } else {\n delta = 0.1;\n }\n\n var d = self.get('d');\n var newD = d + delta;\n var maxD = self.get('maxD');\n var minD = self.get('minD');\n\n if (newD < maxD && newD > minD) {\n self.set('d', newD);\n var r = self.get('r');\n self.set('molecularParam', (newD + 1) * r);\n var lensDelegate = self.get('delegate');\n var lensCenter = lensDelegate ? {\n x: lensDelegate.attr('x'),\n y: lensDelegate.attr('y')\n } : undefined;\n self.set('delegateCenterDiff', undefined);\n self.magnify(evt, lensCenter);\n }\n };\n /**\n * Scale the magnifying factor by dragging\n * @param e mouse event\n */\n\n\n Fisheye.prototype.scaleDByDrag = function (e) {\n var self = this;\n var dragPrePos = self.get('dragPrePos');\n var delta = e.x - dragPrePos.x > 0 ? 0.1 : -0.1;\n var d = self.get('d');\n var newD = d + delta;\n var maxD = self.get('maxD');\n var minD = self.get('minD');\n\n if (newD < maxD && newD > minD) {\n self.set('d', newD);\n var r = self.get('r');\n self.set('molecularParam', (newD + 1) * r);\n self.magnify(e);\n }\n\n self.set('dragPrePos', {\n x: e.x,\n y: e.y\n });\n };\n /**\n * Response function for mousemove, click, or drag to magnify\n * @param e mouse event\n */\n\n\n Fisheye.prototype.magnify = function (e, mousePos) {\n var self = this;\n self.restoreCache();\n var graph = self.get('graph');\n var cachedMagnifiedModels = self.get('cachedMagnifiedModels');\n var cachedOriginPositions = self.get('cachedOriginPositions');\n var showLabel = self.get('showLabel');\n var r = self.get('r');\n var r2 = self.get('r2');\n var d = self.get('d');\n var molecularParam = self.get('molecularParam');\n var nodes = graph.getNodes();\n var nodeLength = nodes.length;\n var mCenter = mousePos ? {\n x: mousePos.x,\n y: mousePos.y\n } : {\n x: e.x,\n y: e.y\n };\n\n if (self.get('dragging') && (self.get('trigger') === 'mousemove' || self.get('trigger') === 'click')) {\n mCenter = self.get('cacheCenter');\n }\n\n var delegateCenterDiff = self.get('delegateCenterDiff');\n\n if (delegateCenterDiff) {\n mCenter.x += delegateCenterDiff.x;\n mCenter.y += delegateCenterDiff.y;\n }\n\n self.updateDelegate(mCenter, r);\n\n for (var i = 0; i < nodeLength; i++) {\n var model = nodes[i].getModel();\n var x = model.x,\n y = model.y;\n if (isNaN(x) || isNaN(y)) continue; // the square of the distance between the node and the magnified center\n\n var dist2 = (x - mCenter.x) * (x - mCenter.x) + (y - mCenter.y) * (y - mCenter.y);\n\n if (!isNaN(dist2) && dist2 < r2 && dist2 !== 0) {\n var dist = Math.sqrt(dist2); // (r * (d + 1) * (dist / r)) / (d * (dist / r) + 1);\n\n var magnifiedDist = molecularParam * dist / (d * dist + r);\n var cos = (x - mCenter.x) / dist;\n var sin = (y - mCenter.y) / dist;\n model.x = cos * magnifiedDist + mCenter.x;\n model.y = sin * magnifiedDist + mCenter.y;\n\n if (!cachedOriginPositions[model.id]) {\n cachedOriginPositions[model.id] = {\n x: x,\n y: y,\n texts: []\n };\n }\n\n cachedMagnifiedModels.push(model);\n\n if (showLabel && 2 * dist < r) {\n var node = nodes[i];\n var nodeGroup = node.getContainer();\n var shapes = nodeGroup.getChildren();\n var shapeLength = shapes.length;\n\n for (var j = 0; j < shapeLength; j++) {\n var shape = shapes[j];\n\n if (shape.get('type') === 'text') {\n cachedOriginPositions[model.id].texts.push({\n visible: shape.get('visible'),\n shape: shape\n });\n shape.set('visible', true);\n }\n }\n }\n }\n }\n\n graph.refreshPositions();\n };\n /**\n * Restore the cache nodes while magnifying\n */\n\n\n Fisheye.prototype.restoreCache = function () {\n var self = this;\n var cachedMagnifiedModels = self.get('cachedMagnifiedModels');\n var cachedOriginPositions = self.get('cachedOriginPositions');\n var cacheLength = cachedMagnifiedModels.length;\n\n for (var i = 0; i < cacheLength; i++) {\n var node = cachedMagnifiedModels[i];\n var id = node.id;\n var ori = cachedOriginPositions[id];\n node.x = ori.x;\n node.y = ori.y;\n var textLength = ori.texts.length;\n\n for (var j = 0; j < textLength; j++) {\n var text = ori.texts[j];\n text.shape.set('visible', text.visible);\n }\n }\n\n self.set('cachedMagnifiedModels', []);\n self.set('cachedOriginPositions', {});\n };\n /**\n * Adjust part of the parameters, including trigger, d, r, maxR, minR, maxD, minD, scaleRBy, and scaleDBy\n * @param {FisheyeConfig} cfg\n */\n\n\n Fisheye.prototype.updateParams = function (cfg) {\n var self = this;\n var r = cfg.r,\n d = cfg.d,\n trigger = cfg.trigger,\n minD = cfg.minD,\n maxD = cfg.maxD,\n minR = cfg.minR,\n maxR = cfg.maxR,\n scaleDBy = cfg.scaleDBy,\n scaleRBy = cfg.scaleRBy;\n\n if (!isNaN(cfg.r)) {\n self.set('r', r);\n self.set('r2', r * r);\n }\n\n if (!isNaN(d)) {\n self.set('d', d);\n }\n\n if (!isNaN(maxD)) {\n self.set('maxD', maxD);\n }\n\n if (!isNaN(minD)) {\n self.set('minD', minD);\n }\n\n if (!isNaN(maxR)) {\n self.set('maxR', maxR);\n }\n\n if (!isNaN(minR)) {\n self.set('minR', minR);\n }\n\n var nd = self.get('d');\n var nr = self.get('r');\n self.set('molecularParam', (nd + 1) * nr);\n\n if (trigger === 'mousemove' || trigger === 'click' || trigger === 'drag') {\n self.set('trigger', trigger);\n }\n\n if (scaleDBy === 'drag' || scaleDBy === 'wheel' || scaleDBy === 'unset') {\n self.set('scaleDBy', scaleDBy);\n self.get('delegate').remove();\n self.get('delegate').destroy();\n var dPercentText = self.get('dPercentText');\n\n if (dPercentText) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n }\n\n if (scaleRBy === 'drag' || scaleRBy === 'wheel' || scaleRBy === 'unset') {\n self.set('scaleRBy', scaleRBy);\n self.get('delegate').remove();\n self.get('delegate').destroy();\n var dPercentText = self.get('dPercentText');\n\n if (dPercentText) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n }\n };\n /**\n * Update the delegate shape of the lens\n * @param {Point} mCenter the center of the shape\n * @param {number} r the radius of the shape\n */\n\n\n Fisheye.prototype.updateDelegate = function (mCenter, r) {\n var _this = this;\n\n var self = this;\n var graph = self.get('graph');\n var lensDelegate = self.get('delegate');\n\n if (!lensDelegate || lensDelegate.destroyed) {\n // 拖动多个\n var parent_1 = graph.get('group');\n var attrs = self.get('delegateStyle') || lensDelegateStyle; // model上的x, y是相对于图形中心的, delegateShape是g实例, x,y是绝对坐标\n\n lensDelegate = parent_1.addShape('circle', {\n attrs: __assign({\n r: r / 1.5,\n x: mCenter.x,\n y: mCenter.y\n }, attrs),\n name: 'lens-shape',\n draggable: true\n });\n\n if (this.get('trigger') !== 'drag') {\n // 调整范围 r 的监听\n if (this.get('scaleRBy') === 'wheel') {\n // 使用滚轮调整 r\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n } else if (this.get('scaleRBy') === 'drag') {\n // 使用拖拽调整 r\n lensDelegate.on('dragstart', function (e) {\n self.set('dragging', true);\n self.set('cacheCenter', {\n x: e.x,\n y: e.y\n });\n self.set('dragPrePos', {\n x: e.x,\n y: e.y\n });\n });\n lensDelegate.on('drag', function (evt) {\n self.scaleRByDrag(evt);\n });\n lensDelegate.on('dragend', function (e) {\n self.set('dragging', false);\n });\n } // 调整缩放系数 d 的监听\n\n\n if (this.get('scaleDBy') === 'wheel') {\n // 使用滚轮调整 d\n lensDelegate.on('mousewheel', function (evt) {\n _this.scaleDByWheel(evt);\n });\n } else if (this.get('scaleDBy') === 'drag') {\n // 使用拖拽调整 d\n lensDelegate.on('dragstart', function (evt) {\n self.set('dragging', true);\n self.set('cacheCenter', {\n x: evt.x,\n y: evt.y\n });\n self.set('dragPrePos', {\n x: evt.x,\n y: evt.y\n });\n });\n lensDelegate.on('drag', function (evt) {\n _this.scaleDByDrag(evt);\n });\n lensDelegate.on('dragend', function (evt) {\n self.set('dragging', false);\n });\n }\n }\n } else {\n lensDelegate.attr({\n x: mCenter.x,\n y: mCenter.y,\n r: r / 1.5\n });\n } // 绘制缩放系数百分比文本\n\n\n if (self.get('showDPercent')) {\n var percent = Math.round((self.get('d') - self.get('minD')) / (self.get('maxD') - self.get('minD')) * 100);\n var dPercentText = self.get('dPercentText');\n var textY = mCenter.y + r / 1.5 + 16;\n\n if (!dPercentText || dPercentText.destroyed) {\n var parent_2 = graph.get('group');\n dPercentText = parent_2.addShape('text', {\n attrs: {\n text: \"\".concat(percent, \"%\"),\n x: mCenter.x,\n y: textY,\n fill: '#aaa',\n stroke: '#fff',\n lineWidth: 1,\n fontSize: 12\n }\n });\n self.set('dPercentText', dPercentText);\n } else {\n dPercentText.attr({\n text: \"\".concat(percent, \"%\"),\n x: mCenter.x,\n y: textY\n });\n }\n }\n\n self.set('delegate', lensDelegate);\n };\n /**\n * Clear the fisheye lens\n */\n\n\n Fisheye.prototype.clear = function () {\n var graph = this.get('graph');\n this.restoreCache();\n graph.refreshPositions();\n var lensDelegate = this.get('delegate');\n\n if (lensDelegate && !lensDelegate.destroyed) {\n lensDelegate.remove();\n lensDelegate.destroy();\n }\n\n var dPercentText = this.get('dPercentText');\n\n if (dPercentText && !dPercentText.destroyed) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n };\n /**\n * Destroy the component\n */\n\n\n Fisheye.prototype.destroy = function () {\n this.clear();\n };\n\n return Fisheye;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Fisheye);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL2Zpc2hleWUvaW5kZXguanM/YWM1ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsZUFBZSxTQUFJLElBQUksU0FBSTtBQUMzQjtBQUNBLDRDQUE0QyxPQUFPO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFbUM7QUFDUjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHdEQUFLO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPLEVBQUU7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDOztBQUVBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLGlCQUFpQjtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsZ0JBQWdCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQixhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTs7QUFFakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsNkNBQUk7O0FBRVMsc0VBQU8iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL2Zpc2hleWUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19leHRlbmRzID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG52YXIgX19hc3NpZ24gPSB0aGlzICYmIHRoaXMuX19hc3NpZ24gfHwgZnVuY3Rpb24gKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHQpIHtcbiAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIHMgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIHAgaW4gcykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5cbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgQmFzZSBmcm9tICcuLi9iYXNlJztcbnZhciBERUxUQSA9IDAuMDU7XG52YXIgbGVuc0RlbGVnYXRlU3R5bGUgPSB7XG4gIHN0cm9rZTogJyMwMDAnLFxuICBzdHJva2VPcGFjaXR5OiAwLjgsXG4gIGxpbmVXaWR0aDogMixcbiAgZmlsbE9wYWNpdHk6IDAuMSxcbiAgZmlsbDogJyNjY2MnXG59O1xuXG52YXIgRmlzaGV5ZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhGaXNoZXllLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIEZpc2hleWUoY29uZmlnKSB7XG4gICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGNvbmZpZykgfHwgdGhpcztcbiAgfVxuXG4gIEZpc2hleWUucHJvdG90eXBlLmdldERlZmF1bHRDZmdzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0cmlnZ2VyOiAnbW91c2Vtb3ZlJyxcbiAgICAgIGQ6IDEuNSxcbiAgICAgIHI6IDMwMCxcbiAgICAgIGRlbGVnYXRlU3R5bGU6IGNsb25lKGxlbnNEZWxlZ2F0ZVN0eWxlKSxcbiAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICBtYXhEOiA1LFxuICAgICAgbWluRDogMCxcbiAgICAgIHNjYWxlUkJ5OiAndW5zZXQnLFxuICAgICAgc2NhbGVEQnk6ICd1bnNldCcsXG4gICAgICBzaG93RFBlcmNlbnQ6IHRydWVcbiAgICB9O1xuICB9OyAvLyBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG5cblxuICBGaXNoZXllLnByb3RvdHlwZS5nZXRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV2ZW50cztcblxuICAgIHN3aXRjaCAodGhpcy5nZXQoJ3RyaWdnZXInKSkge1xuICAgICAgY2FzZSAnY2xpY2snOlxuICAgICAgICBldmVudHMgPSB7XG4gICAgICAgICAgY2xpY2s6ICdtYWduaWZ5J1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZHJhZyc6XG4gICAgICAgIGV2ZW50cyA9IHtcbiAgICAgICAgICBjbGljazogJ2NyZWF0ZURlbGVnYXRlJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZXZlbnRzID0ge1xuICAgICAgICAgIG1vdXNlbW92ZTogJ21hZ25pZnknXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBldmVudHM7XG4gIH07XG5cbiAgRmlzaGV5ZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHIgPSBzZWxmLmdldCgncicpO1xuICAgIHNlbGYuc2V0KCdjYWNoZWRNYWduaWZpZWRNb2RlbHMnLCBbXSk7XG4gICAgc2VsZi5zZXQoJ2NhY2hlZE9yaWdpblBvc2l0aW9ucycsIHt9KTtcbiAgICBzZWxmLnNldCgncjInLCByICogcik7XG4gICAgdmFyIGQgPSBzZWxmLmdldCgnZCcpO1xuICAgIHNlbGYuc2V0KCdtb2xlY3VsYXJQYXJhbScsIChkICsgMSkgKiByKTtcbiAgfTsgLy8gQ3JlYXRlIHRoZSBkZWxlZ2F0ZSB3aGVuIHRoZSB0cmlnZ2VyIGlzIGRyYWdcblxuXG4gIEZpc2hleWUucHJvdG90eXBlLmNyZWF0ZURlbGVnYXRlID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBsZW5zRGVsZWdhdGUgPSBzZWxmLmdldCgnZGVsZWdhdGUnKTtcblxuICAgIGlmICghbGVuc0RlbGVnYXRlIHx8IGxlbnNEZWxlZ2F0ZS5kZXN0cm95ZWQpIHtcbiAgICAgIHNlbGYubWFnbmlmeShlKTtcbiAgICAgIGxlbnNEZWxlZ2F0ZSA9IHNlbGYuZ2V0KCdkZWxlZ2F0ZScpOyAvLyBkcmFnIHRvIG1vdmUgdGhlIGxlbnNcblxuICAgICAgbGVuc0RlbGVnYXRlLm9uKCdkcmFnc3RhcnQnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIHNlbGYuc2V0KCdkZWxlZ2F0ZUNlbnRlckRpZmYnLCB7XG4gICAgICAgICAgeDogbGVuc0RlbGVnYXRlLmF0dHIoJ3gnKSAtIGV2dC54LFxuICAgICAgICAgIHk6IGxlbnNEZWxlZ2F0ZS5hdHRyKCd5JykgLSBldnQueVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgbGVuc0RlbGVnYXRlLm9uKCdkcmFnJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICBzZWxmLm1hZ25pZnkoZXZ0KTtcbiAgICAgIH0pOyAvLyDnu5HlrprosIPmlbTojIPlm7TvvIhy77yJ5ZKM57yp5pS+57O75pWwKGQp55qE55uR5ZCsXG4gICAgICAvLyDnlLHkuo4gZHJhZyDnlKjkuo7mlLnlj5ggbGVucyDkvY3nva4sIOWboOatpOWcqOatpOaooeW8j+S4iywgZHJhZyDkuI3og73nlKjkuo7osIPmlbQgciDlkowgZFxuICAgICAgLy8gc2NhbGluZyBkXG5cbiAgICAgIGlmICh0aGlzLmdldCgnc2NhbGVEQnknKSA9PT0gJ3doZWVsJykge1xuICAgICAgICBsZW5zRGVsZWdhdGUub24oJ21vdXNld2hlZWwnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgX3RoaXMuc2NhbGVEQnlXaGVlbChldnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gLy8gc2NhbGluZyByXG5cblxuICAgICAgaWYgKHRoaXMuZ2V0KCdzY2FsZVJCeScpID09PSAnd2hlZWwnKSB7XG4gICAgICAgIGxlbnNEZWxlZ2F0ZS5vbignbW91c2V3aGVlbCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICBzZWxmLnNjYWxlUkJ5V2hlZWwoZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogU2NhbGUgdGhlIHJhbmdlIGJ5IHdoZWVsXG4gICAqIEBwYXJhbSBlIG1vdXNlIHdoZWVsIGV2ZW50XG4gICAqL1xuXG5cbiAgRmlzaGV5ZS5wcm90b3R5cGUuc2NhbGVSQnlXaGVlbCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGlmICghZSB8fCAhZS5vcmlnaW5hbEV2ZW50KSByZXR1cm47XG4gICAgaWYgKGUucHJldmVudERlZmF1bHQpIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgcmF0aW87XG4gICAgdmFyIGxlbnNEZWxlZ2F0ZSA9IHNlbGYuZ2V0KCdkZWxlZ2F0ZScpO1xuICAgIHZhciBsZW5zQ2VudGVyID0gbGVuc0RlbGVnYXRlID8ge1xuICAgICAgeDogbGVuc0RlbGVnYXRlLmF0dHIoJ3gnKSxcbiAgICAgIHk6IGxlbnNEZWxlZ2F0ZS5hdHRyKCd5JylcbiAgICB9IDogdW5kZWZpbmVkO1xuICAgIHZhciBtb3VzZVBvcyA9IGxlbnNDZW50ZXIgfHwgZ3JhcGguZ2V0UG9pbnRCeUNsaWVudChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG5cbiAgICBpZiAoZS5vcmlnaW5hbEV2ZW50LndoZWVsRGVsdGEgPCAwKSB7XG4gICAgICByYXRpbyA9IDEgLSBERUxUQTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmF0aW8gPSAxIC8gKDEgLSBERUxUQSk7XG4gICAgfVxuXG4gICAgdmFyIG1heFIgPSBzZWxmLmdldCgnbWF4UicpO1xuICAgIHZhciBtaW5SID0gc2VsZi5nZXQoJ21pblInKTtcbiAgICB2YXIgciA9IHNlbGYuZ2V0KCdyJyk7XG5cbiAgICBpZiAociA+IChtYXhSIHx8IGdyYXBoLmdldCgnaGVpZ2h0JykpICYmIHJhdGlvID4gMSB8fCByIDwgKG1pblIgfHwgZ3JhcGguZ2V0KCdoZWlnaHQnKSAqIDAuMDUpICYmIHJhdGlvIDwgMSkge1xuICAgICAgcmF0aW8gPSAxO1xuICAgIH1cblxuICAgIHIgKj0gcmF0aW87XG4gICAgc2VsZi5zZXQoJ3InLCByKTtcbiAgICBzZWxmLnNldCgncjInLCByICogcik7XG4gICAgdmFyIGQgPSBzZWxmLmdldCgnZCcpO1xuICAgIHNlbGYuc2V0KCdtb2xlY3VsYXJQYXJhbScsIChkICsgMSkgKiByKTtcbiAgICBzZWxmLnNldCgnZGVsZWdhdGVDZW50ZXJEaWZmJywgdW5kZWZpbmVkKTtcbiAgICBzZWxmLm1hZ25pZnkoZSwgbW91c2VQb3MpO1xuICB9O1xuICAvKipcbiAgICogU2NhbGUgdGhlIHJhbmdlIGJ5IGRyYWdnaW5nXG4gICAqIEBwYXJhbSBlIG1vdXNlIGV2ZW50XG4gICAqL1xuXG5cbiAgRmlzaGV5ZS5wcm90b3R5cGUuc2NhbGVSQnlEcmFnID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKCFlKSByZXR1cm47XG4gICAgdmFyIGRyYWdQcmVQb3MgPSBzZWxmLmdldCgnZHJhZ1ByZVBvcycpO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ2V0KCdncmFwaCcpO1xuICAgIHZhciByYXRpbztcbiAgICB2YXIgbW91c2VQb3MgPSBncmFwaC5nZXRQb2ludEJ5Q2xpZW50KGUuY2xpZW50WCwgZS5jbGllbnRZKTtcblxuICAgIGlmIChlLnggLSBkcmFnUHJlUG9zLnggPCAwKSB7XG4gICAgICByYXRpbyA9IDEgLSBERUxUQTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmF0aW8gPSAxIC8gKDEgLSBERUxUQSk7XG4gICAgfVxuXG4gICAgdmFyIG1heFIgPSBzZWxmLmdldCgnbWF4UicpO1xuICAgIHZhciBtaW5SID0gc2VsZi5nZXQoJ21pblInKTtcbiAgICB2YXIgciA9IHNlbGYuZ2V0KCdyJyk7XG5cbiAgICBpZiAociA+IChtYXhSIHx8IGdyYXBoLmdldCgnaGVpZ2h0JykpICYmIHJhdGlvID4gMSB8fCByIDwgKG1pblIgfHwgZ3JhcGguZ2V0KCdoZWlnaHQnKSAqIDAuMDUpICYmIHJhdGlvIDwgMSkge1xuICAgICAgcmF0aW8gPSAxO1xuICAgIH1cblxuICAgIHIgKj0gcmF0aW87XG4gICAgc2VsZi5zZXQoJ3InLCByKTtcbiAgICBzZWxmLnNldCgncjInLCByICogcik7XG4gICAgdmFyIGQgPSBzZWxmLmdldCgnZCcpO1xuICAgIHNlbGYuc2V0KCdtb2xlY3VsYXJQYXJhbScsIChkICsgMSkgKiByKTtcbiAgICBzZWxmLm1hZ25pZnkoZSwgbW91c2VQb3MpO1xuICAgIHNlbGYuc2V0KCdkcmFnUHJlUG9zJywge1xuICAgICAgeDogZS54LFxuICAgICAgeTogZS55XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiBTY2FsZSB0aGUgbWFnbmlmeWluZyBmYWN0b3IgYnkgd2hlZWxcbiAgICogQHBhcmFtIGUgbW91c2Ugd2hlZWwgZXZlbnRcbiAgICovXG5cblxuICBGaXNoZXllLnByb3RvdHlwZS5zY2FsZURCeVdoZWVsID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBpZiAoIWV2dCAmJiAhZXZ0Lm9yaWdpbmFsRXZlbnQpIHJldHVybjtcbiAgICBpZiAoZXZ0LnByZXZlbnREZWZhdWx0KSBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB2YXIgZGVsdGEgPSAwO1xuXG4gICAgaWYgKGV2dC5vcmlnaW5hbEV2ZW50LndoZWVsRGVsdGEgPCAwKSB7XG4gICAgICBkZWx0YSA9IC0wLjE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbHRhID0gMC4xO1xuICAgIH1cblxuICAgIHZhciBkID0gc2VsZi5nZXQoJ2QnKTtcbiAgICB2YXIgbmV3RCA9IGQgKyBkZWx0YTtcbiAgICB2YXIgbWF4RCA9IHNlbGYuZ2V0KCdtYXhEJyk7XG4gICAgdmFyIG1pbkQgPSBzZWxmLmdldCgnbWluRCcpO1xuXG4gICAgaWYgKG5ld0QgPCBtYXhEICYmIG5ld0QgPiBtaW5EKSB7XG4gICAgICBzZWxmLnNldCgnZCcsIG5ld0QpO1xuICAgICAgdmFyIHIgPSBzZWxmLmdldCgncicpO1xuICAgICAgc2VsZi5zZXQoJ21vbGVjdWxhclBhcmFtJywgKG5ld0QgKyAxKSAqIHIpO1xuICAgICAgdmFyIGxlbnNEZWxlZ2F0ZSA9IHNlbGYuZ2V0KCdkZWxlZ2F0ZScpO1xuICAgICAgdmFyIGxlbnNDZW50ZXIgPSBsZW5zRGVsZWdhdGUgPyB7XG4gICAgICAgIHg6IGxlbnNEZWxlZ2F0ZS5hdHRyKCd4JyksXG4gICAgICAgIHk6IGxlbnNEZWxlZ2F0ZS5hdHRyKCd5JylcbiAgICAgIH0gOiB1bmRlZmluZWQ7XG4gICAgICBzZWxmLnNldCgnZGVsZWdhdGVDZW50ZXJEaWZmJywgdW5kZWZpbmVkKTtcbiAgICAgIHNlbGYubWFnbmlmeShldnQsIGxlbnNDZW50ZXIpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIFNjYWxlIHRoZSBtYWduaWZ5aW5nIGZhY3RvciBieSBkcmFnZ2luZ1xuICAgKiBAcGFyYW0gZSBtb3VzZSBldmVudFxuICAgKi9cblxuXG4gIEZpc2hleWUucHJvdG90eXBlLnNjYWxlREJ5RHJhZyA9IGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBkcmFnUHJlUG9zID0gc2VsZi5nZXQoJ2RyYWdQcmVQb3MnKTtcbiAgICB2YXIgZGVsdGEgPSBlLnggLSBkcmFnUHJlUG9zLnggPiAwID8gMC4xIDogLTAuMTtcbiAgICB2YXIgZCA9IHNlbGYuZ2V0KCdkJyk7XG4gICAgdmFyIG5ld0QgPSBkICsgZGVsdGE7XG4gICAgdmFyIG1heEQgPSBzZWxmLmdldCgnbWF4RCcpO1xuICAgIHZhciBtaW5EID0gc2VsZi5nZXQoJ21pbkQnKTtcblxuICAgIGlmIChuZXdEIDwgbWF4RCAmJiBuZXdEID4gbWluRCkge1xuICAgICAgc2VsZi5zZXQoJ2QnLCBuZXdEKTtcbiAgICAgIHZhciByID0gc2VsZi5nZXQoJ3InKTtcbiAgICAgIHNlbGYuc2V0KCdtb2xlY3VsYXJQYXJhbScsIChuZXdEICsgMSkgKiByKTtcbiAgICAgIHNlbGYubWFnbmlmeShlKTtcbiAgICB9XG5cbiAgICBzZWxmLnNldCgnZHJhZ1ByZVBvcycsIHtcbiAgICAgIHg6IGUueCxcbiAgICAgIHk6IGUueVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICogUmVzcG9uc2UgZnVuY3Rpb24gZm9yIG1vdXNlbW92ZSwgY2xpY2ssIG9yIGRyYWcgdG8gbWFnbmlmeVxuICAgKiBAcGFyYW0gZSBtb3VzZSBldmVudFxuICAgKi9cblxuXG4gIEZpc2hleWUucHJvdG90eXBlLm1hZ25pZnkgPSBmdW5jdGlvbiAoZSwgbW91c2VQb3MpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5yZXN0b3JlQ2FjaGUoKTtcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgY2FjaGVkTWFnbmlmaWVkTW9kZWxzID0gc2VsZi5nZXQoJ2NhY2hlZE1hZ25pZmllZE1vZGVscycpO1xuICAgIHZhciBjYWNoZWRPcmlnaW5Qb3NpdGlvbnMgPSBzZWxmLmdldCgnY2FjaGVkT3JpZ2luUG9zaXRpb25zJyk7XG4gICAgdmFyIHNob3dMYWJlbCA9IHNlbGYuZ2V0KCdzaG93TGFiZWwnKTtcbiAgICB2YXIgciA9IHNlbGYuZ2V0KCdyJyk7XG4gICAgdmFyIHIyID0gc2VsZi5nZXQoJ3IyJyk7XG4gICAgdmFyIGQgPSBzZWxmLmdldCgnZCcpO1xuICAgIHZhciBtb2xlY3VsYXJQYXJhbSA9IHNlbGYuZ2V0KCdtb2xlY3VsYXJQYXJhbScpO1xuICAgIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCk7XG4gICAgdmFyIG5vZGVMZW5ndGggPSBub2Rlcy5sZW5ndGg7XG4gICAgdmFyIG1DZW50ZXIgPSBtb3VzZVBvcyA/IHtcbiAgICAgIHg6IG1vdXNlUG9zLngsXG4gICAgICB5OiBtb3VzZVBvcy55XG4gICAgfSA6IHtcbiAgICAgIHg6IGUueCxcbiAgICAgIHk6IGUueVxuICAgIH07XG5cbiAgICBpZiAoc2VsZi5nZXQoJ2RyYWdnaW5nJykgJiYgKHNlbGYuZ2V0KCd0cmlnZ2VyJykgPT09ICdtb3VzZW1vdmUnIHx8IHNlbGYuZ2V0KCd0cmlnZ2VyJykgPT09ICdjbGljaycpKSB7XG4gICAgICBtQ2VudGVyID0gc2VsZi5nZXQoJ2NhY2hlQ2VudGVyJyk7XG4gICAgfVxuXG4gICAgdmFyIGRlbGVnYXRlQ2VudGVyRGlmZiA9IHNlbGYuZ2V0KCdkZWxlZ2F0ZUNlbnRlckRpZmYnKTtcblxuICAgIGlmIChkZWxlZ2F0ZUNlbnRlckRpZmYpIHtcbiAgICAgIG1DZW50ZXIueCArPSBkZWxlZ2F0ZUNlbnRlckRpZmYueDtcbiAgICAgIG1DZW50ZXIueSArPSBkZWxlZ2F0ZUNlbnRlckRpZmYueTtcbiAgICB9XG5cbiAgICBzZWxmLnVwZGF0ZURlbGVnYXRlKG1DZW50ZXIsIHIpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBtb2RlbCA9IG5vZGVzW2ldLmdldE1vZGVsKCk7XG4gICAgICB2YXIgeCA9IG1vZGVsLngsXG4gICAgICAgICAgeSA9IG1vZGVsLnk7XG4gICAgICBpZiAoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIGNvbnRpbnVlOyAvLyB0aGUgc3F1YXJlIG9mIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBub2RlIGFuZCB0aGUgbWFnbmlmaWVkIGNlbnRlclxuXG4gICAgICB2YXIgZGlzdDIgPSAoeCAtIG1DZW50ZXIueCkgKiAoeCAtIG1DZW50ZXIueCkgKyAoeSAtIG1DZW50ZXIueSkgKiAoeSAtIG1DZW50ZXIueSk7XG5cbiAgICAgIGlmICghaXNOYU4oZGlzdDIpICYmIGRpc3QyIDwgcjIgJiYgZGlzdDIgIT09IDApIHtcbiAgICAgICAgdmFyIGRpc3QgPSBNYXRoLnNxcnQoZGlzdDIpOyAvLyAociAqIChkICsgMSkgKiAoZGlzdCAvIHIpKSAvIChkICogKGRpc3QgLyByKSArIDEpO1xuXG4gICAgICAgIHZhciBtYWduaWZpZWREaXN0ID0gbW9sZWN1bGFyUGFyYW0gKiBkaXN0IC8gKGQgKiBkaXN0ICsgcik7XG4gICAgICAgIHZhciBjb3MgPSAoeCAtIG1DZW50ZXIueCkgLyBkaXN0O1xuICAgICAgICB2YXIgc2luID0gKHkgLSBtQ2VudGVyLnkpIC8gZGlzdDtcbiAgICAgICAgbW9kZWwueCA9IGNvcyAqIG1hZ25pZmllZERpc3QgKyBtQ2VudGVyLng7XG4gICAgICAgIG1vZGVsLnkgPSBzaW4gKiBtYWduaWZpZWREaXN0ICsgbUNlbnRlci55O1xuXG4gICAgICAgIGlmICghY2FjaGVkT3JpZ2luUG9zaXRpb25zW21vZGVsLmlkXSkge1xuICAgICAgICAgIGNhY2hlZE9yaWdpblBvc2l0aW9uc1ttb2RlbC5pZF0gPSB7XG4gICAgICAgICAgICB4OiB4LFxuICAgICAgICAgICAgeTogeSxcbiAgICAgICAgICAgIHRleHRzOiBbXVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjYWNoZWRNYWduaWZpZWRNb2RlbHMucHVzaChtb2RlbCk7XG5cbiAgICAgICAgaWYgKHNob3dMYWJlbCAmJiAyICogZGlzdCA8IHIpIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICAgIHZhciBub2RlR3JvdXAgPSBub2RlLmdldENvbnRhaW5lcigpO1xuICAgICAgICAgIHZhciBzaGFwZXMgPSBub2RlR3JvdXAuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICB2YXIgc2hhcGVMZW5ndGggPSBzaGFwZXMubGVuZ3RoO1xuXG4gICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaGFwZUxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICB2YXIgc2hhcGUgPSBzaGFwZXNbal07XG5cbiAgICAgICAgICAgIGlmIChzaGFwZS5nZXQoJ3R5cGUnKSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgIGNhY2hlZE9yaWdpblBvc2l0aW9uc1ttb2RlbC5pZF0udGV4dHMucHVzaCh7XG4gICAgICAgICAgICAgICAgdmlzaWJsZTogc2hhcGUuZ2V0KCd2aXNpYmxlJyksXG4gICAgICAgICAgICAgICAgc2hhcGU6IHNoYXBlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBzaGFwZS5zZXQoJ3Zpc2libGUnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBncmFwaC5yZWZyZXNoUG9zaXRpb25zKCk7XG4gIH07XG4gIC8qKlxuICAgKiBSZXN0b3JlIHRoZSBjYWNoZSBub2RlcyB3aGlsZSBtYWduaWZ5aW5nXG4gICAqL1xuXG5cbiAgRmlzaGV5ZS5wcm90b3R5cGUucmVzdG9yZUNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgY2FjaGVkTWFnbmlmaWVkTW9kZWxzID0gc2VsZi5nZXQoJ2NhY2hlZE1hZ25pZmllZE1vZGVscycpO1xuICAgIHZhciBjYWNoZWRPcmlnaW5Qb3NpdGlvbnMgPSBzZWxmLmdldCgnY2FjaGVkT3JpZ2luUG9zaXRpb25zJyk7XG4gICAgdmFyIGNhY2hlTGVuZ3RoID0gY2FjaGVkTWFnbmlmaWVkTW9kZWxzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FjaGVMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBjYWNoZWRNYWduaWZpZWRNb2RlbHNbaV07XG4gICAgICB2YXIgaWQgPSBub2RlLmlkO1xuICAgICAgdmFyIG9yaSA9IGNhY2hlZE9yaWdpblBvc2l0aW9uc1tpZF07XG4gICAgICBub2RlLnggPSBvcmkueDtcbiAgICAgIG5vZGUueSA9IG9yaS55O1xuICAgICAgdmFyIHRleHRMZW5ndGggPSBvcmkudGV4dHMubGVuZ3RoO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRleHRMZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgdGV4dCA9IG9yaS50ZXh0c1tqXTtcbiAgICAgICAgdGV4dC5zaGFwZS5zZXQoJ3Zpc2libGUnLCB0ZXh0LnZpc2libGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNlbGYuc2V0KCdjYWNoZWRNYWduaWZpZWRNb2RlbHMnLCBbXSk7XG4gICAgc2VsZi5zZXQoJ2NhY2hlZE9yaWdpblBvc2l0aW9ucycsIHt9KTtcbiAgfTtcbiAgLyoqXG4gICAqIEFkanVzdCBwYXJ0IG9mIHRoZSBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcgdHJpZ2dlciwgZCwgciwgbWF4UiwgbWluUiwgbWF4RCwgbWluRCwgc2NhbGVSQnksIGFuZCBzY2FsZURCeVxuICAgKiBAcGFyYW0ge0Zpc2hleWVDb25maWd9IGNmZ1xuICAgKi9cblxuXG4gIEZpc2hleWUucHJvdG90eXBlLnVwZGF0ZVBhcmFtcyA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHIgPSBjZmcucixcbiAgICAgICAgZCA9IGNmZy5kLFxuICAgICAgICB0cmlnZ2VyID0gY2ZnLnRyaWdnZXIsXG4gICAgICAgIG1pbkQgPSBjZmcubWluRCxcbiAgICAgICAgbWF4RCA9IGNmZy5tYXhELFxuICAgICAgICBtaW5SID0gY2ZnLm1pblIsXG4gICAgICAgIG1heFIgPSBjZmcubWF4UixcbiAgICAgICAgc2NhbGVEQnkgPSBjZmcuc2NhbGVEQnksXG4gICAgICAgIHNjYWxlUkJ5ID0gY2ZnLnNjYWxlUkJ5O1xuXG4gICAgaWYgKCFpc05hTihjZmcucikpIHtcbiAgICAgIHNlbGYuc2V0KCdyJywgcik7XG4gICAgICBzZWxmLnNldCgncjInLCByICogcik7XG4gICAgfVxuXG4gICAgaWYgKCFpc05hTihkKSkge1xuICAgICAgc2VsZi5zZXQoJ2QnLCBkKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzTmFOKG1heEQpKSB7XG4gICAgICBzZWxmLnNldCgnbWF4RCcsIG1heEQpO1xuICAgIH1cblxuICAgIGlmICghaXNOYU4obWluRCkpIHtcbiAgICAgIHNlbGYuc2V0KCdtaW5EJywgbWluRCk7XG4gICAgfVxuXG4gICAgaWYgKCFpc05hTihtYXhSKSkge1xuICAgICAgc2VsZi5zZXQoJ21heFInLCBtYXhSKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzTmFOKG1pblIpKSB7XG4gICAgICBzZWxmLnNldCgnbWluUicsIG1pblIpO1xuICAgIH1cblxuICAgIHZhciBuZCA9IHNlbGYuZ2V0KCdkJyk7XG4gICAgdmFyIG5yID0gc2VsZi5nZXQoJ3InKTtcbiAgICBzZWxmLnNldCgnbW9sZWN1bGFyUGFyYW0nLCAobmQgKyAxKSAqIG5yKTtcblxuICAgIGlmICh0cmlnZ2VyID09PSAnbW91c2Vtb3ZlJyB8fCB0cmlnZ2VyID09PSAnY2xpY2snIHx8IHRyaWdnZXIgPT09ICdkcmFnJykge1xuICAgICAgc2VsZi5zZXQoJ3RyaWdnZXInLCB0cmlnZ2VyKTtcbiAgICB9XG5cbiAgICBpZiAoc2NhbGVEQnkgPT09ICdkcmFnJyB8fCBzY2FsZURCeSA9PT0gJ3doZWVsJyB8fCBzY2FsZURCeSA9PT0gJ3Vuc2V0Jykge1xuICAgICAgc2VsZi5zZXQoJ3NjYWxlREJ5Jywgc2NhbGVEQnkpO1xuICAgICAgc2VsZi5nZXQoJ2RlbGVnYXRlJykucmVtb3ZlKCk7XG4gICAgICBzZWxmLmdldCgnZGVsZWdhdGUnKS5kZXN0cm95KCk7XG4gICAgICB2YXIgZFBlcmNlbnRUZXh0ID0gc2VsZi5nZXQoJ2RQZXJjZW50VGV4dCcpO1xuXG4gICAgICBpZiAoZFBlcmNlbnRUZXh0KSB7XG4gICAgICAgIGRQZXJjZW50VGV4dC5yZW1vdmUoKTtcbiAgICAgICAgZFBlcmNlbnRUZXh0LmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2NhbGVSQnkgPT09ICdkcmFnJyB8fCBzY2FsZVJCeSA9PT0gJ3doZWVsJyB8fCBzY2FsZVJCeSA9PT0gJ3Vuc2V0Jykge1xuICAgICAgc2VsZi5zZXQoJ3NjYWxlUkJ5Jywgc2NhbGVSQnkpO1xuICAgICAgc2VsZi5nZXQoJ2RlbGVnYXRlJykucmVtb3ZlKCk7XG4gICAgICBzZWxmLmdldCgnZGVsZWdhdGUnKS5kZXN0cm95KCk7XG4gICAgICB2YXIgZFBlcmNlbnRUZXh0ID0gc2VsZi5nZXQoJ2RQZXJjZW50VGV4dCcpO1xuXG4gICAgICBpZiAoZFBlcmNlbnRUZXh0KSB7XG4gICAgICAgIGRQZXJjZW50VGV4dC5yZW1vdmUoKTtcbiAgICAgICAgZFBlcmNlbnRUZXh0LmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGRlbGVnYXRlIHNoYXBlIG9mIHRoZSBsZW5zXG4gICAqIEBwYXJhbSB7UG9pbnR9IG1DZW50ZXIgdGhlIGNlbnRlciBvZiB0aGUgc2hhcGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IHIgdGhlIHJhZGl1cyBvZiB0aGUgc2hhcGVcbiAgICovXG5cblxuICBGaXNoZXllLnByb3RvdHlwZS51cGRhdGVEZWxlZ2F0ZSA9IGZ1bmN0aW9uIChtQ2VudGVyLCByKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgbGVuc0RlbGVnYXRlID0gc2VsZi5nZXQoJ2RlbGVnYXRlJyk7XG5cbiAgICBpZiAoIWxlbnNEZWxlZ2F0ZSB8fCBsZW5zRGVsZWdhdGUuZGVzdHJveWVkKSB7XG4gICAgICAvLyDmi5bliqjlpJrkuKpcbiAgICAgIHZhciBwYXJlbnRfMSA9IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICAgIHZhciBhdHRycyA9IHNlbGYuZ2V0KCdkZWxlZ2F0ZVN0eWxlJykgfHwgbGVuc0RlbGVnYXRlU3R5bGU7IC8vIG1vZGVs5LiK55qEeCwgeeaYr+ebuOWvueS6juWbvuW9ouS4reW/g+eahCwgZGVsZWdhdGVTaGFwZeaYr2flrp7kvossIHgseeaYr+e7neWvueWdkOagh1xuXG4gICAgICBsZW5zRGVsZWdhdGUgPSBwYXJlbnRfMS5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHI6IHIgLyAxLjUsXG4gICAgICAgICAgeDogbUNlbnRlci54LFxuICAgICAgICAgIHk6IG1DZW50ZXIueVxuICAgICAgICB9LCBhdHRycyksXG4gICAgICAgIG5hbWU6ICdsZW5zLXNoYXBlJyxcbiAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuZ2V0KCd0cmlnZ2VyJykgIT09ICdkcmFnJykge1xuICAgICAgICAvLyDosIPmlbTojIPlm7QgciDnmoTnm5HlkKxcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCdzY2FsZVJCeScpID09PSAnd2hlZWwnKSB7XG4gICAgICAgICAgLy8g5L2/55So5rua6L2u6LCD5pW0IHJcbiAgICAgICAgICBsZW5zRGVsZWdhdGUub24oJ21vdXNld2hlZWwnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICBzZWxmLnNjYWxlUkJ5V2hlZWwoZXZ0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldCgnc2NhbGVSQnknKSA9PT0gJ2RyYWcnKSB7XG4gICAgICAgICAgLy8g5L2/55So5ouW5ou96LCD5pW0IHJcbiAgICAgICAgICBsZW5zRGVsZWdhdGUub24oJ2RyYWdzdGFydCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBzZWxmLnNldCgnZHJhZ2dpbmcnLCB0cnVlKTtcbiAgICAgICAgICAgIHNlbGYuc2V0KCdjYWNoZUNlbnRlcicsIHtcbiAgICAgICAgICAgICAgeDogZS54LFxuICAgICAgICAgICAgICB5OiBlLnlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VsZi5zZXQoJ2RyYWdQcmVQb3MnLCB7XG4gICAgICAgICAgICAgIHg6IGUueCxcbiAgICAgICAgICAgICAgeTogZS55XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsZW5zRGVsZWdhdGUub24oJ2RyYWcnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICBzZWxmLnNjYWxlUkJ5RHJhZyhldnQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxlbnNEZWxlZ2F0ZS5vbignZHJhZ2VuZCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBzZWxmLnNldCgnZHJhZ2dpbmcnLCBmYWxzZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gLy8g6LCD5pW057yp5pS+57O75pWwIGQg55qE55uR5ZCsXG5cblxuICAgICAgICBpZiAodGhpcy5nZXQoJ3NjYWxlREJ5JykgPT09ICd3aGVlbCcpIHtcbiAgICAgICAgICAvLyDkvb/nlKjmu5rova7osIPmlbQgZFxuICAgICAgICAgIGxlbnNEZWxlZ2F0ZS5vbignbW91c2V3aGVlbCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgIF90aGlzLnNjYWxlREJ5V2hlZWwoZXZ0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldCgnc2NhbGVEQnknKSA9PT0gJ2RyYWcnKSB7XG4gICAgICAgICAgLy8g5L2/55So5ouW5ou96LCD5pW0IGRcbiAgICAgICAgICBsZW5zRGVsZWdhdGUub24oJ2RyYWdzdGFydCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgIHNlbGYuc2V0KCdkcmFnZ2luZycsIHRydWUpO1xuICAgICAgICAgICAgc2VsZi5zZXQoJ2NhY2hlQ2VudGVyJywge1xuICAgICAgICAgICAgICB4OiBldnQueCxcbiAgICAgICAgICAgICAgeTogZXZ0LnlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VsZi5zZXQoJ2RyYWdQcmVQb3MnLCB7XG4gICAgICAgICAgICAgIHg6IGV2dC54LFxuICAgICAgICAgICAgICB5OiBldnQueVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGVuc0RlbGVnYXRlLm9uKCdkcmFnJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgX3RoaXMuc2NhbGVEQnlEcmFnKGV2dCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGVuc0RlbGVnYXRlLm9uKCdkcmFnZW5kJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgc2VsZi5zZXQoJ2RyYWdnaW5nJywgZmFsc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbnNEZWxlZ2F0ZS5hdHRyKHtcbiAgICAgICAgeDogbUNlbnRlci54LFxuICAgICAgICB5OiBtQ2VudGVyLnksXG4gICAgICAgIHI6IHIgLyAxLjVcbiAgICAgIH0pO1xuICAgIH0gLy8g57uY5Yi257yp5pS+57O75pWw55m+5YiG5q+U5paH5pysXG5cblxuICAgIGlmIChzZWxmLmdldCgnc2hvd0RQZXJjZW50JykpIHtcbiAgICAgIHZhciBwZXJjZW50ID0gTWF0aC5yb3VuZCgoc2VsZi5nZXQoJ2QnKSAtIHNlbGYuZ2V0KCdtaW5EJykpIC8gKHNlbGYuZ2V0KCdtYXhEJykgLSBzZWxmLmdldCgnbWluRCcpKSAqIDEwMCk7XG4gICAgICB2YXIgZFBlcmNlbnRUZXh0ID0gc2VsZi5nZXQoJ2RQZXJjZW50VGV4dCcpO1xuICAgICAgdmFyIHRleHRZID0gbUNlbnRlci55ICsgciAvIDEuNSArIDE2O1xuXG4gICAgICBpZiAoIWRQZXJjZW50VGV4dCB8fCBkUGVyY2VudFRleHQuZGVzdHJveWVkKSB7XG4gICAgICAgIHZhciBwYXJlbnRfMiA9IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICAgICAgZFBlcmNlbnRUZXh0ID0gcGFyZW50XzIuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIHRleHQ6IFwiXCIuY29uY2F0KHBlcmNlbnQsIFwiJVwiKSxcbiAgICAgICAgICAgIHg6IG1DZW50ZXIueCxcbiAgICAgICAgICAgIHk6IHRleHRZLFxuICAgICAgICAgICAgZmlsbDogJyNhYWEnLFxuICAgICAgICAgICAgc3Ryb2tlOiAnI2ZmZicsXG4gICAgICAgICAgICBsaW5lV2lkdGg6IDEsXG4gICAgICAgICAgICBmb250U2l6ZTogMTJcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLnNldCgnZFBlcmNlbnRUZXh0JywgZFBlcmNlbnRUZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRQZXJjZW50VGV4dC5hdHRyKHtcbiAgICAgICAgICB0ZXh0OiBcIlwiLmNvbmNhdChwZXJjZW50LCBcIiVcIiksXG4gICAgICAgICAgeDogbUNlbnRlci54LFxuICAgICAgICAgIHk6IHRleHRZXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNlbGYuc2V0KCdkZWxlZ2F0ZScsIGxlbnNEZWxlZ2F0ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBDbGVhciB0aGUgZmlzaGV5ZSBsZW5zXG4gICAqL1xuXG5cbiAgRmlzaGV5ZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdGhpcy5yZXN0b3JlQ2FjaGUoKTtcbiAgICBncmFwaC5yZWZyZXNoUG9zaXRpb25zKCk7XG4gICAgdmFyIGxlbnNEZWxlZ2F0ZSA9IHRoaXMuZ2V0KCdkZWxlZ2F0ZScpO1xuXG4gICAgaWYgKGxlbnNEZWxlZ2F0ZSAmJiAhbGVuc0RlbGVnYXRlLmRlc3Ryb3llZCkge1xuICAgICAgbGVuc0RlbGVnYXRlLnJlbW92ZSgpO1xuICAgICAgbGVuc0RlbGVnYXRlLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB2YXIgZFBlcmNlbnRUZXh0ID0gdGhpcy5nZXQoJ2RQZXJjZW50VGV4dCcpO1xuXG4gICAgaWYgKGRQZXJjZW50VGV4dCAmJiAhZFBlcmNlbnRUZXh0LmRlc3Ryb3llZCkge1xuICAgICAgZFBlcmNlbnRUZXh0LnJlbW92ZSgpO1xuICAgICAgZFBlcmNlbnRUZXh0LmRlc3Ryb3koKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBEZXN0cm95IHRoZSBjb21wb25lbnRcbiAgICovXG5cblxuICBGaXNoZXllLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgfTtcblxuICByZXR1cm4gRmlzaGV5ZTtcbn0oQmFzZSk7XG5cbmV4cG9ydCBkZWZhdWx0IEZpc2hleWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/fisheye/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/grid/index.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/grid/index.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n // 网格背景图片\n\nvar GRID_PNG = 'url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImdyaWQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTSAwIDEwIEwgNDAgMTAgTSAxMCAwIEwgMTAgNDAgTSAwIDIwIEwgNDAgMjAgTSAyMCAwIEwgMjAgNDAgTSAwIDMwIEwgNDAgMzAgTSAzMCAwIEwgMzAgNDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2UwZTBlMCIgb3BhY2l0eT0iMC4yIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNIDQwIDAgTCAwIDAgMCA0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIiBzdHJva2Utd2lkdGg9IjEiLz48L3BhdHRlcm4+PC9kZWZzPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JpZCkiLz48L3N2Zz4=)';\n\nvar Grid =\n/** @class */\nfunction (_super) {\n __extends(Grid, _super);\n\n function Grid(config) {\n return _super.call(this, config) || this;\n }\n\n Grid.prototype.getDefaultCfgs = function () {\n return {\n img: GRID_PNG,\n follow: true\n };\n };\n\n Grid.prototype.init = function () {\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var canvas = graph.get('canvas').get('el');\n var img = this.get('img') || GRID_PNG;\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"
\");\n var gridContainer = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"\"));\n this.set('container', container);\n this.set('gridContainer', gridContainer);\n this.positionInit();\n container.appendChild(gridContainer);\n graphContainer.insertBefore(container, canvas);\n };\n /** 定位信息初始化 */\n\n\n Grid.prototype.positionInit = function () {\n var graph = this.get('graph');\n var minZoom = graph.get('minZoom');\n var width = graph.get('width');\n var height = graph.get('height');\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.get('container'), {\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\")\n }); // 网格 40*40 需保证 (gridContainerWidth / 2) % 40 = 0 才能让网格线对齐左上角 故 * 80\n\n var gridContainerWidth = width * 80 / minZoom;\n var gridContainerHeight = height * 80 / minZoom;\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.get('gridContainer'), {\n width: \"\".concat(gridContainerWidth, \"px\"),\n height: \"\".concat(gridContainerHeight, \"px\"),\n left: \"-\".concat(gridContainerWidth / 2, \"px\"),\n top: \"-\".concat(gridContainerHeight / 2, \"px\")\n });\n }; // class-methods-use-this\n\n\n Grid.prototype.getEvents = function () {\n return {\n viewportchange: 'updateGrid'\n };\n };\n /**\n * viewport change 事件的响应函数\n * @param param\n */\n\n\n Grid.prototype.updateGrid = function (param) {\n var gridContainer = this.get('gridContainer');\n var matrix = param.matrix;\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var isFollow = this.get('follow');\n var transform = \"matrix(\".concat(matrix[0], \", \").concat(matrix[1], \", \").concat(matrix[3], \", \").concat(matrix[4], \", \").concat(isFollow ? matrix[6] : '0', \", \").concat(isFollow ? matrix[7] : '0', \")\");\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(gridContainer, {\n transform: transform\n });\n };\n\n Grid.prototype.getContainer = function () {\n return this.get('container');\n };\n\n Grid.prototype.destroy = function () {\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var container = this.get('container');\n graphContainer.removeChild(container);\n };\n\n return Grid;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Grid);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL2dyaWQvaW5kZXguanM/NDk4ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRXFEO0FBQzNCOztBQUUzQix1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixnRUFBUywyREFBMkQsZ0JBQWdCLFlBQVk7QUFDcEgsd0JBQXdCLGdFQUFTLGtFQUFrRSw0Q0FBNEM7QUFDL0k7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsNkNBQUk7O0FBRVMsbUVBQUkiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL2dyaWQvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19leHRlbmRzID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG5pbXBvcnQgeyBtb2RpZnlDU1MsIGNyZWF0ZURvbSB9IGZyb20gJ0BhbnR2L2RvbS11dGlsJztcbmltcG9ydCBCYXNlIGZyb20gJy4uL2Jhc2UnOyAvLyDnvZHmoLzog4zmma/lm77niYdcblxudmFyIEdSSURfUE5HID0gJ3VybChkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIzYVdSMGFEMGlOREFpSUdobGFXZG9kRDBpTkRBaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJK1BHUmxabk0rUEhCaGRIUmxjbTRnYVdROUltZHlhV1FpSUhkcFpIUm9QU0kwTUNJZ2FHVnBaMmgwUFNJME1DSWdjR0YwZEdWeWJsVnVhWFJ6UFNKMWMyVnlVM0JoWTJWUGJsVnpaU0krUEhCaGRHZ2daRDBpVFNBd0lERXdJRXdnTkRBZ01UQWdUU0F4TUNBd0lFd2dNVEFnTkRBZ1RTQXdJREl3SUV3Z05EQWdNakFnVFNBeU1DQXdJRXdnTWpBZ05EQWdUU0F3SURNd0lFd2dOREFnTXpBZ1RTQXpNQ0F3SUV3Z016QWdOREFpSUdacGJHdzlJbTV2Ym1VaUlITjBjbTlyWlQwaUkyVXdaVEJsTUNJZ2IzQmhZMmwwZVQwaU1DNHlJaUJ6ZEhKdmEyVXRkMmxrZEdnOUlqRWlMejQ4Y0dGMGFDQmtQU0pOSURRd0lEQWdUQ0F3SURBZ01DQTBNQ0lnWm1sc2JEMGlibTl1WlNJZ2MzUnliMnRsUFNJalpUQmxNR1V3SWlCemRISnZhMlV0ZDJsa2RHZzlJakVpTHo0OEwzQmhkSFJsY200K1BDOWtaV1p6UGp4eVpXTjBJSGRwWkhSb1BTSXhNREFsSWlCb1pXbG5hSFE5SWpFd01DVWlJR1pwYkd3OUluVnliQ2dqWjNKcFpDa2lMejQ4TDNOMlp6ND0pJztcblxudmFyIEdyaWQgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoR3JpZCwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBHcmlkKGNvbmZpZykge1xuICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBjb25maWcpIHx8IHRoaXM7XG4gIH1cblxuICBHcmlkLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZncyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW1nOiBHUklEX1BORyxcbiAgICAgIGZvbGxvdzogdHJ1ZVxuICAgIH07XG4gIH07XG5cbiAgR3JpZC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgZ3JhcGhDb250YWluZXIgPSBncmFwaC5nZXQoJ2NvbnRhaW5lcicpO1xuICAgIHZhciBjYW52YXMgPSBncmFwaC5nZXQoJ2NhbnZhcycpLmdldCgnZWwnKTtcbiAgICB2YXIgaW1nID0gdGhpcy5nZXQoJ2ltZycpIHx8IEdSSURfUE5HO1xuICAgIHZhciBjb250YWluZXIgPSBjcmVhdGVEb20oXCI8ZGl2IGNsYXNzPSdnNi1ncmlkLWNvbnRhaW5lcicgc3R5bGU9XFxcInBvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjt6LWluZGV4OiAtMTtcXFwiPjwvZGl2PlwiKTtcbiAgICB2YXIgZ3JpZENvbnRhaW5lciA9IGNyZWF0ZURvbShcIjxkaXZcXG4gICAgICAgIGNsYXNzPSdnNi1ncmlkJ1xcbiAgICAgICAgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO1xcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogXCIuY29uY2F0KGltZywgXCI7XFxuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZVxcbiAgICAgICAgJz48L2Rpdj5cIikpO1xuICAgIHRoaXMuc2V0KCdjb250YWluZXInLCBjb250YWluZXIpO1xuICAgIHRoaXMuc2V0KCdncmlkQ29udGFpbmVyJywgZ3JpZENvbnRhaW5lcik7XG4gICAgdGhpcy5wb3NpdGlvbkluaXQoKTtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZ3JpZENvbnRhaW5lcik7XG4gICAgZ3JhcGhDb250YWluZXIuaW5zZXJ0QmVmb3JlKGNvbnRhaW5lciwgY2FudmFzKTtcbiAgfTtcbiAgLyoqIOWumuS9jeS/oeaBr+WIneWni+WMliAqL1xuXG5cbiAgR3JpZC5wcm90b3R5cGUucG9zaXRpb25Jbml0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBtaW5ab29tID0gZ3JhcGguZ2V0KCdtaW5ab29tJyk7XG4gICAgdmFyIHdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBoZWlnaHQgPSBncmFwaC5nZXQoJ2hlaWdodCcpO1xuICAgIG1vZGlmeUNTUyh0aGlzLmdldCgnY29udGFpbmVyJyksIHtcbiAgICAgIHdpZHRoOiBcIlwiLmNvbmNhdCh3aWR0aCwgXCJweFwiKSxcbiAgICAgIGhlaWdodDogXCJcIi5jb25jYXQoaGVpZ2h0LCBcInB4XCIpXG4gICAgfSk7IC8vIOe9keagvCA0MCo0MCDpnIDkv53or4EgKGdyaWRDb250YWluZXJXaWR0aCAvIDIpICUgNDAgPSAwIOaJjeiDveiuqee9keagvOe6v+Wvuem9kOW3puS4iuinkiDmlYUgKiA4MFxuXG4gICAgdmFyIGdyaWRDb250YWluZXJXaWR0aCA9IHdpZHRoICogODAgLyBtaW5ab29tO1xuICAgIHZhciBncmlkQ29udGFpbmVySGVpZ2h0ID0gaGVpZ2h0ICogODAgLyBtaW5ab29tO1xuICAgIG1vZGlmeUNTUyh0aGlzLmdldCgnZ3JpZENvbnRhaW5lcicpLCB7XG4gICAgICB3aWR0aDogXCJcIi5jb25jYXQoZ3JpZENvbnRhaW5lcldpZHRoLCBcInB4XCIpLFxuICAgICAgaGVpZ2h0OiBcIlwiLmNvbmNhdChncmlkQ29udGFpbmVySGVpZ2h0LCBcInB4XCIpLFxuICAgICAgbGVmdDogXCItXCIuY29uY2F0KGdyaWRDb250YWluZXJXaWR0aCAvIDIsIFwicHhcIiksXG4gICAgICB0b3A6IFwiLVwiLmNvbmNhdChncmlkQ29udGFpbmVySGVpZ2h0IC8gMiwgXCJweFwiKVxuICAgIH0pO1xuICB9OyAvLyBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG5cblxuICBHcmlkLnByb3RvdHlwZS5nZXRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZpZXdwb3J0Y2hhbmdlOiAndXBkYXRlR3JpZCdcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogdmlld3BvcnQgY2hhbmdlIOS6i+S7tueahOWTjeW6lOWHveaVsFxuICAgKiBAcGFyYW0gcGFyYW1cbiAgICovXG5cblxuICBHcmlkLnByb3RvdHlwZS51cGRhdGVHcmlkID0gZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgdmFyIGdyaWRDb250YWluZXIgPSB0aGlzLmdldCgnZ3JpZENvbnRhaW5lcicpO1xuICAgIHZhciBtYXRyaXggPSBwYXJhbS5tYXRyaXg7XG4gICAgaWYgKCFtYXRyaXgpIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB2YXIgaXNGb2xsb3cgPSB0aGlzLmdldCgnZm9sbG93Jyk7XG4gICAgdmFyIHRyYW5zZm9ybSA9IFwibWF0cml4KFwiLmNvbmNhdChtYXRyaXhbMF0sIFwiLCBcIikuY29uY2F0KG1hdHJpeFsxXSwgXCIsIFwiKS5jb25jYXQobWF0cml4WzNdLCBcIiwgXCIpLmNvbmNhdChtYXRyaXhbNF0sIFwiLCBcIikuY29uY2F0KGlzRm9sbG93ID8gbWF0cml4WzZdIDogJzAnLCBcIiwgXCIpLmNvbmNhdChpc0ZvbGxvdyA/IG1hdHJpeFs3XSA6ICcwJywgXCIpXCIpO1xuICAgIG1vZGlmeUNTUyhncmlkQ29udGFpbmVyLCB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zZm9ybVxuICAgIH0pO1xuICB9O1xuXG4gIEdyaWQucHJvdG90eXBlLmdldENvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICB9O1xuXG4gIEdyaWQucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGdyYXBoQ29udGFpbmVyID0gZ3JhcGguZ2V0KCdjb250YWluZXInKTtcbiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICAgIGdyYXBoQ29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lcik7XG4gIH07XG5cbiAgcmV0dXJuIEdyaWQ7XG59KEJhc2UpO1xuXG5leHBvcnQgZGVmYXVsdCBHcmlkOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/grid/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/imageMinimap/index.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/imageMinimap/index.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\n\n\n\nvar applyMatrix = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].applyMatrix;\n\nfunction getImgNaturalDimension(img, callback) {\n var nWidth, nHeight;\n\n if (img.naturalWidth) {\n // 现代浏览器\n nWidth = img.naturalWidth;\n nHeight = img.naturalHeight;\n } else {\n // IE6/7/8\n var image_1 = new Image();\n image_1.src = img.src;\n\n image_1.onload = function () {\n if (callback) callback(image_1.width, image_1.height);\n };\n }\n\n return [nWidth, nHeight];\n}\n\nvar ImageMiniMap =\n/** @class */\nfunction (_super) {\n __extends(ImageMiniMap, _super);\n\n function ImageMiniMap(config) {\n return _super.call(this, config) || this;\n }\n\n ImageMiniMap.prototype.getDefaultCfgs = function () {\n return {\n container: null,\n className: 'g6-minimap',\n viewportClassName: 'g6-minimap-viewport',\n width: 200,\n delegateStyle: {\n fill: '#40a9ff',\n stroke: '#096dd9'\n },\n refresh: true\n };\n };\n\n ImageMiniMap.prototype.getEvents = function () {\n return {\n beforepaint: 'updateViewport',\n beforeanimate: 'disableRefresh',\n afteranimate: 'enableRefresh',\n viewportchange: 'disableOneRefresh'\n };\n }; // 若是正在进行动画,不刷新缩略图\n\n\n ImageMiniMap.prototype.disableRefresh = function () {\n this.set('refresh', false);\n };\n\n ImageMiniMap.prototype.enableRefresh = function () {\n this.set('refresh', true);\n this.updateCanvas();\n };\n\n ImageMiniMap.prototype.disableOneRefresh = function () {\n this.set('viewportChange', true);\n };\n\n ImageMiniMap.prototype.initViewport = function () {\n var _this = this;\n\n var cfgs = this._cfgs; // cWidth and cHeight are the width and height of the minimap's container\n\n var graph = cfgs.graph;\n if (this.destroyed) return;\n var containerDOM = this.get('container');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(containerDOM)) {\n containerDOM = document.getElementById(containerDOM);\n }\n\n var viewport = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"
\\n
\")); // 计算拖拽水平方向距离\n\n var x = 0; // 计算拖拽垂直方向距离\n\n var y = 0; // 是否在拖拽minimap的视口\n\n var dragging = false; // 缓存viewport当前对于画布的x\n\n var left = 0; // 缓存viewport当前对于画布的y\n\n var top = 0; // 缓存viewport当前宽度\n\n var width = 0; // 缓存viewport当前高度\n\n var height = 0;\n var ratio = 0;\n var zoom = 0;\n containerDOM.addEventListener('mousedown', function (e) {\n cfgs.refresh = false;\n\n if (e.target !== viewport) {\n return;\n } // 如果视口已经最大了,不需要拖拽\n\n\n var style = viewport.style;\n width = parseInt(style.width, 10);\n height = parseInt(style.height, 10);\n\n var cWidth = _this.get('width');\n\n var cHeight = _this.get('height');\n\n if (width > cWidth || height > cHeight) {\n return;\n }\n\n zoom = graph.getZoom();\n ratio = _this.get('ratio');\n dragging = true;\n x = e.clientX;\n y = e.clientY;\n }, false);\n containerDOM.addEventListener('mousemove', function (e) {\n if (!dragging || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(e.clientX) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(e.clientY)) {\n return;\n }\n\n var cWidth = _this.get('width');\n\n var cHeight = _this.get('height');\n\n var style = viewport.style;\n left = parseInt(style.left, 10);\n top = parseInt(style.top, 10);\n width = parseInt(style.width, 10);\n height = parseInt(style.height, 10);\n var dx = x - e.clientX;\n var dy = y - e.clientY; // 若视口移动到最左边或最右边了,仅移动到边界\n\n if (left - dx < 0) {\n dx = left;\n } else if (left - dx + width >= cWidth) {\n dx = 0;\n } // 若视口移动到最上或最下边了,仅移动到边界\n\n\n if (top - dy < 0) {\n dy = top;\n } else if (top - dy + height >= cHeight) {\n dy = 0;\n }\n\n left -= dx;\n top -= dy; // 先移动视口,避免移动到边上以后出现视口闪烁\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"modifyCSS\"])(viewport, {\n left: \"\".concat(left, \"px\"),\n top: \"\".concat(top, \"px\")\n }); // graph 移动需要偏移量 dx/dy * 缩放比例才会得到正确的移动距离\n\n graph.translate(dx * zoom / ratio, dy * zoom / ratio);\n x = e.clientX;\n y = e.clientY;\n }, false);\n containerDOM.addEventListener('mouseleave', function () {\n dragging = false;\n cfgs.refresh = true;\n }, false);\n containerDOM.addEventListener('mouseup', function () {\n dragging = false;\n cfgs.refresh = true;\n }, false);\n this.set('viewport', viewport);\n containerDOM.appendChild(viewport);\n };\n /**\n * 更新 viewport 视图\n */\n\n\n ImageMiniMap.prototype.updateViewport = function () {\n if (this.destroyed) return;\n var ratio = this.get('ratio');\n var cWidth = this.get('width');\n var cHeight = this.get('height');\n var graph = this.get('graph');\n var graphWidth = graph.get('width');\n var graphHeight = graph.get('height');\n var aspectRatio = graphWidth / graphHeight;\n var graphGroup = graph.getGroup(); // 主图的 bbox(矩阵变换相关的 bbox)\n\n var graphCanvasBBox = graphGroup.getCanvasBBox(); // 扩展 graphBBox 到和 graphWidth / graphHeight 等比\n\n var graphCanvasBBoxMean = [(graphCanvasBBox.minX + graphCanvasBBox.maxX) / 2, (graphCanvasBBox.minY + graphCanvasBBox.maxY) / 2];\n var graphCanvasBBoxSize = [graphCanvasBBox.maxX - graphCanvasBBox.minX, graphCanvasBBox.maxY - graphCanvasBBox.minY];\n var expandedGraphCanvasBBox = {\n centerX: graphCanvasBBoxMean[0],\n centerY: graphCanvasBBoxMean[1],\n width: 0,\n height: 0,\n minX: 0,\n minY: 0\n };\n\n if (graphCanvasBBox[0] / graphCanvasBBox[1] > aspectRatio) {\n expandedGraphCanvasBBox.width = graphCanvasBBoxSize[0];\n expandedGraphCanvasBBox.height = expandedGraphCanvasBBox.width / aspectRatio;\n } else {\n expandedGraphCanvasBBox.height = graphCanvasBBoxSize[1];\n expandedGraphCanvasBBox.width = expandedGraphCanvasBBox.height * aspectRatio;\n }\n\n expandedGraphCanvasBBox.minX = graphCanvasBBoxMean[0] - expandedGraphCanvasBBox.width / 2;\n expandedGraphCanvasBBox.minY = graphCanvasBBoxMean[1] - expandedGraphCanvasBBox.height / 2;\n var graphMatrix = graphGroup.getMatrix();\n if (!graphMatrix) graphMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var invertGraphMatrix = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_4__[\"mat3\"].invert([1, 0, 0, 0, 1, 0, 0, 0, 1], graphMatrix);\n var minXY = applyMatrix({\n x: expandedGraphCanvasBBox.minX,\n y: expandedGraphCanvasBBox.minY\n }, invertGraphMatrix); // 扩展 graphBBox 后的 bbox 的左上角对应的 canvas container 坐标\n\n var topLeft = graph.getCanvasByPoint(minXY.x, minXY.y);\n var viewport = this.get('viewport');\n\n if (!viewport) {\n this.initViewport();\n } // Viewport 与 minimap container 的比例 = Graph container 与 expandedGraphBBox 比例\n\n\n var vpToMc = graphWidth / expandedGraphCanvasBBox.width; // viewport 宽高 = vpToMc * minimap container 宽高\n\n var width = vpToMc * cWidth;\n var height = vpToMc * cHeight; // vierport 左上角到 minimap container 的距离 / minimap container 宽高\n // = 主图 expandedBBox 左上角 canvas container 坐标距离 / expandedBBox 宽高\n\n var left = cWidth * -topLeft.x / expandedGraphCanvasBBox.width;\n var top = cHeight * -topLeft.y / expandedGraphCanvasBBox.height;\n var right = left + width;\n var bottom = top + height;\n\n if (left < 0) {\n width += left;\n left = 0;\n }\n\n if (right > cWidth) {\n width = width - (right - cWidth);\n }\n\n if (top < 0) {\n height += top;\n top = 0;\n }\n\n if (bottom > cHeight) {\n height = height - (bottom - cHeight);\n } // 缓存目前缩放比,在移动 minimap 视窗时就不用再计算大图的移动量\n\n\n this.set('ratio', ratio);\n var correctLeft = \"\".concat(left, \"px\");\n var correctTop = \"\".concat(top, \"px\");\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"modifyCSS\"])(viewport, {\n left: correctLeft,\n top: correctTop,\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\")\n });\n };\n\n ImageMiniMap.prototype.init = function () {\n this.initContainer();\n };\n /**\n * 初始化 Minimap 的容器\n */\n\n\n ImageMiniMap.prototype.initContainer = function () {\n var self = this;\n var graph = self.get('graph');\n var graphWidth = graph.get('width');\n var graphHeight = graph.get('height');\n var aspectRatio = graphHeight / graphWidth;\n var className = self.get('className');\n var parentNode = self.get('container'); // size of the minimap's container\n\n var cWidth = self.get('width');\n var cHeight = self.get('height');\n\n if (!cWidth && !cHeight) {\n cWidth = 200;\n }\n\n if (cWidth) {\n cHeight = aspectRatio * cWidth;\n self.set('height', cHeight);\n } else {\n cWidth = 1 / aspectRatio * cHeight;\n self.set('width', cWidth);\n }\n\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"
\"));\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(parentNode)) {\n parentNode = document.getElementById(parentNode);\n }\n\n if (parentNode) {\n parentNode.appendChild(container);\n } else {\n graph.get('container').appendChild(container);\n }\n\n self.set('container', container);\n var containerDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"
\");\n container.appendChild(containerDOM);\n var span = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"\");\n containerDOM.appendChild(span);\n self.set('containerDOM', containerDOM);\n self.set('containerSpan', span);\n var img = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"\\\"\\\"\"));\n self.set('imgDOM', img);\n self.updateImgSize();\n span.appendChild(img);\n self.updateCanvas();\n };\n\n ImageMiniMap.prototype.updateImgSize = function () {\n var self = this;\n var imgDOM = self.get('imgDOM');\n var cWidth = self.get('width');\n var cHeight = self.get('height');\n\n imgDOM.onload = function () {\n var naturalSize = getImgNaturalDimension(imgDOM);\n\n if (naturalSize[0] > naturalSize[1]) {\n imgDOM.width = cWidth;\n } else {\n imgDOM.height = cHeight;\n }\n };\n };\n\n ImageMiniMap.prototype.updateCanvas = function () {\n // 如果是在动画,则不刷新视图\n var isRefresh = this.get('refresh');\n\n if (!isRefresh) {\n return;\n }\n\n var graph = this.get('graph');\n\n if (graph.get('destroyed')) {\n return;\n } // 如果是视口变换,也不刷新视图,但是需要重置视口大小和位置\n\n\n if (this.get('viewportChange')) {\n this.set('viewportChange', false);\n this.updateViewport();\n }\n\n var cWidth = this.get('width');\n var graphBBox = graph.get('canvas').getCanvasBBox();\n var width = graphBBox.width;\n var ratio = cWidth / width; // // 更新minimap视口\n\n this.set('ratio', ratio);\n this.updateViewport();\n };\n /**\n * 获取minimap的窗口\n * @return {HTMLElement} 窗口的dom实例\n */\n\n\n ImageMiniMap.prototype.getViewport = function () {\n return this.get('viewport');\n };\n /**\n * 获取minimap的容器dom\n * @return {HTMLElement} dom\n */\n\n\n ImageMiniMap.prototype.getContainer = function () {\n return this.get('container');\n };\n\n ImageMiniMap.prototype.updateGraphImg = function (img) {\n var self = this;\n var oriImgDOM = self.get('imgDOM');\n oriImgDOM.remove();\n self.set('graphImg', img);\n var imgDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"\\\"\\\"\"));\n self.set('imgDOM', imgDOM);\n imgDOM.src = img;\n self.updateImgSize();\n var span = self.get('containerSpan');\n span.appendChild(imgDOM);\n self.updateCanvas();\n };\n\n ImageMiniMap.prototype.destroy = function () {\n var container = this.get('container');\n container.parentNode.removeChild(container);\n };\n\n return ImageMiniMap;\n}(_base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ImageMiniMap);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL2ltYWdlTWluaW1hcC9pbmRleC5qcz9lOTQ1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFMEI7QUFDa0I7QUFDUztBQUNqQjtBQUNJO0FBQ3pDLGtCQUFrQixrREFBSTs7QUFFdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUEsbUJBQW1CLGdFQUFTLGdGQUFnRixpQkFBaUIsZ0JBQWdCLGdDQUFnQyx1REFBdUQ7O0FBRXBPLGNBQWM7O0FBRWQsY0FBYzs7QUFFZCx5QkFBeUI7O0FBRXpCLGlCQUFpQjs7QUFFakIsZ0JBQWdCOztBQUVoQixrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHVCQUF1Qix3REFBSyxlQUFlLHdEQUFLO0FBQ2hEO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCOztBQUVoQixNQUFNLGdFQUFTO0FBQ2Y7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQzs7QUFFdEMscURBQXFEOztBQUVyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHNEQUFJO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLEtBQUsscUJBQXFCOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTCw0REFBNEQ7O0FBRTVEO0FBQ0Esa0NBQWtDO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGdFQUFTLHlFQUF5RSxnQ0FBZ0Msa0JBQWtCLG9CQUFvQjs7QUFFNUssUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLHVCQUF1QixnRUFBUyxpRUFBaUUsYUFBYSxjQUFjLG9CQUFvQixnQkFBZ0I7QUFDaEs7QUFDQSxlQUFlLGdFQUFTLG9DQUFvQyx3QkFBd0I7QUFDcEY7QUFDQTtBQUNBO0FBQ0EsY0FBYyxnRUFBUyx1RkFBdUYsbUJBQW1CO0FBQ2pJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxZQUFZO0FBQzFCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxZQUFZO0FBQzFCOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixnRUFBUyxzRUFBc0UsOEJBQThCLGdDQUFnQztBQUM5SjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUywyRUFBWSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wbHVnaW4vZXMvaW1hZ2VNaW5pbWFwL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZXh0ZW5kcyA9IHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMgfHwgZnVuY3Rpb24gKCkge1xuICB2YXIgX2V4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiBleHRlbmRTdGF0aWNzKGQsIGIpIHtcbiAgICBfZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7XG4gICAgICBfX3Byb3RvX186IFtdXG4gICAgfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBkLl9fcHJvdG9fXyA9IGI7XG4gICAgfSB8fCBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZm9yICh2YXIgcCBpbiBiKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gX2V4dGVuZFN0YXRpY3MoZCwgYik7XG4gIH07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuXG4gICAgX2V4dGVuZFN0YXRpY3MoZCwgYik7XG5cbiAgICBmdW5jdGlvbiBfXygpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBkO1xuICAgIH1cblxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgfTtcbn0oKTtcblxuaW1wb3J0IEJhc2UgZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgeyBpc1N0cmluZywgaXNOaWwgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IG1vZGlmeUNTUywgY3JlYXRlRG9tIH0gZnJvbSAnQGFudHYvZG9tLXV0aWwnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgbWF0MyB9IGZyb20gJ0BhbnR2L21hdHJpeC11dGlsJztcbnZhciBhcHBseU1hdHJpeCA9IFV0aWwuYXBwbHlNYXRyaXg7XG5cbmZ1bmN0aW9uIGdldEltZ05hdHVyYWxEaW1lbnNpb24oaW1nLCBjYWxsYmFjaykge1xuICB2YXIgbldpZHRoLCBuSGVpZ2h0O1xuXG4gIGlmIChpbWcubmF0dXJhbFdpZHRoKSB7XG4gICAgLy8g546w5Luj5rWP6KeI5ZmoXG4gICAgbldpZHRoID0gaW1nLm5hdHVyYWxXaWR0aDtcbiAgICBuSGVpZ2h0ID0gaW1nLm5hdHVyYWxIZWlnaHQ7XG4gIH0gZWxzZSB7XG4gICAgLy8gSUU2LzcvOFxuICAgIHZhciBpbWFnZV8xID0gbmV3IEltYWdlKCk7XG4gICAgaW1hZ2VfMS5zcmMgPSBpbWcuc3JjO1xuXG4gICAgaW1hZ2VfMS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKGltYWdlXzEud2lkdGgsIGltYWdlXzEuaGVpZ2h0KTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIFtuV2lkdGgsIG5IZWlnaHRdO1xufVxuXG52YXIgSW1hZ2VNaW5pTWFwID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKEltYWdlTWluaU1hcCwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBJbWFnZU1pbmlNYXAoY29uZmlnKSB7XG4gICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGNvbmZpZykgfHwgdGhpcztcbiAgfVxuXG4gIEltYWdlTWluaU1hcC5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgIGNsYXNzTmFtZTogJ2c2LW1pbmltYXAnLFxuICAgICAgdmlld3BvcnRDbGFzc05hbWU6ICdnNi1taW5pbWFwLXZpZXdwb3J0JyxcbiAgICAgIHdpZHRoOiAyMDAsXG4gICAgICBkZWxlZ2F0ZVN0eWxlOiB7XG4gICAgICAgIGZpbGw6ICcjNDBhOWZmJyxcbiAgICAgICAgc3Ryb2tlOiAnIzA5NmRkOSdcbiAgICAgIH0sXG4gICAgICByZWZyZXNoOiB0cnVlXG4gICAgfTtcbiAgfTtcblxuICBJbWFnZU1pbmlNYXAucHJvdG90eXBlLmdldEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYmVmb3JlcGFpbnQ6ICd1cGRhdGVWaWV3cG9ydCcsXG4gICAgICBiZWZvcmVhbmltYXRlOiAnZGlzYWJsZVJlZnJlc2gnLFxuICAgICAgYWZ0ZXJhbmltYXRlOiAnZW5hYmxlUmVmcmVzaCcsXG4gICAgICB2aWV3cG9ydGNoYW5nZTogJ2Rpc2FibGVPbmVSZWZyZXNoJ1xuICAgIH07XG4gIH07IC8vIOiLpeaYr+ato+WcqOi/m+ihjOWKqOeUu++8jOS4jeWIt+aWsOe8qeeVpeWbvlxuXG5cbiAgSW1hZ2VNaW5pTWFwLnByb3RvdHlwZS5kaXNhYmxlUmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNldCgncmVmcmVzaCcsIGZhbHNlKTtcbiAgfTtcblxuICBJbWFnZU1pbmlNYXAucHJvdG90eXBlLmVuYWJsZVJlZnJlc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoJ3JlZnJlc2gnLCB0cnVlKTtcbiAgICB0aGlzLnVwZGF0ZUNhbnZhcygpO1xuICB9O1xuXG4gIEltYWdlTWluaU1hcC5wcm90b3R5cGUuZGlzYWJsZU9uZVJlZnJlc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoJ3ZpZXdwb3J0Q2hhbmdlJywgdHJ1ZSk7XG4gIH07XG5cbiAgSW1hZ2VNaW5pTWFwLnByb3RvdHlwZS5pbml0Vmlld3BvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBjZmdzID0gdGhpcy5fY2ZnczsgLy8gY1dpZHRoIGFuZCBjSGVpZ2h0IGFyZSB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgbWluaW1hcCdzIGNvbnRhaW5lclxuXG4gICAgdmFyIGdyYXBoID0gY2Zncy5ncmFwaDtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB2YXIgY29udGFpbmVyRE9NID0gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5lckRPTSkpIHtcbiAgICAgIGNvbnRhaW5lckRPTSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lckRPTSk7XG4gICAgfVxuXG4gICAgdmFyIHZpZXdwb3J0ID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz1cIi5jb25jYXQoY2Zncy52aWV3cG9ydENsYXNzTmFtZSwgXCJcXG4gICAgICBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7XFxuICAgICAgICBsZWZ0OjA7XFxuICAgICAgICB0b3A6MDtcXG4gICAgICAgIGJveC1zaXppbmc6Ym9yZGVyLWJveDtcXG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICMxOTgwZmYnPlxcbiAgICAgIDwvZGl2PlwiKSk7IC8vIOiuoeeul+aLluaLveawtOW5s+aWueWQkei3neemu1xuXG4gICAgdmFyIHggPSAwOyAvLyDorqHnrpfmi5bmi73lnoLnm7TmlrnlkJHot53nprtcblxuICAgIHZhciB5ID0gMDsgLy8g5piv5ZCm5Zyo5ouW5ou9bWluaW1hcOeahOinhuWPo1xuXG4gICAgdmFyIGRyYWdnaW5nID0gZmFsc2U7IC8vIOe8k+WtmHZpZXdwb3J05b2T5YmN5a+55LqO55S75biD55qEeFxuXG4gICAgdmFyIGxlZnQgPSAwOyAvLyDnvJPlrZh2aWV3cG9ydOW9k+WJjeWvueS6jueUu+W4g+eahHlcblxuICAgIHZhciB0b3AgPSAwOyAvLyDnvJPlrZh2aWV3cG9ydOW9k+WJjeWuveW6plxuXG4gICAgdmFyIHdpZHRoID0gMDsgLy8g57yT5a2Ydmlld3BvcnTlvZPliY3pq5jluqZcblxuICAgIHZhciBoZWlnaHQgPSAwO1xuICAgIHZhciByYXRpbyA9IDA7XG4gICAgdmFyIHpvb20gPSAwO1xuICAgIGNvbnRhaW5lckRPTS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgY2Zncy5yZWZyZXNoID0gZmFsc2U7XG5cbiAgICAgIGlmIChlLnRhcmdldCAhPT0gdmlld3BvcnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyDlpoLmnpzop4blj6Plt7Lnu4/mnIDlpKfkuobvvIzkuI3pnIDopoHmi5bmi71cblxuXG4gICAgICB2YXIgc3R5bGUgPSB2aWV3cG9ydC5zdHlsZTtcbiAgICAgIHdpZHRoID0gcGFyc2VJbnQoc3R5bGUud2lkdGgsIDEwKTtcbiAgICAgIGhlaWdodCA9IHBhcnNlSW50KHN0eWxlLmhlaWdodCwgMTApO1xuXG4gICAgICB2YXIgY1dpZHRoID0gX3RoaXMuZ2V0KCd3aWR0aCcpO1xuXG4gICAgICB2YXIgY0hlaWdodCA9IF90aGlzLmdldCgnaGVpZ2h0Jyk7XG5cbiAgICAgIGlmICh3aWR0aCA+IGNXaWR0aCB8fCBoZWlnaHQgPiBjSGVpZ2h0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgem9vbSA9IGdyYXBoLmdldFpvb20oKTtcbiAgICAgIHJhdGlvID0gX3RoaXMuZ2V0KCdyYXRpbycpO1xuICAgICAgZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgeCA9IGUuY2xpZW50WDtcbiAgICAgIHkgPSBlLmNsaWVudFk7XG4gICAgfSwgZmFsc2UpO1xuICAgIGNvbnRhaW5lckRPTS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKCFkcmFnZ2luZyB8fCBpc05pbChlLmNsaWVudFgpIHx8IGlzTmlsKGUuY2xpZW50WSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgY1dpZHRoID0gX3RoaXMuZ2V0KCd3aWR0aCcpO1xuXG4gICAgICB2YXIgY0hlaWdodCA9IF90aGlzLmdldCgnaGVpZ2h0Jyk7XG5cbiAgICAgIHZhciBzdHlsZSA9IHZpZXdwb3J0LnN0eWxlO1xuICAgICAgbGVmdCA9IHBhcnNlSW50KHN0eWxlLmxlZnQsIDEwKTtcbiAgICAgIHRvcCA9IHBhcnNlSW50KHN0eWxlLnRvcCwgMTApO1xuICAgICAgd2lkdGggPSBwYXJzZUludChzdHlsZS53aWR0aCwgMTApO1xuICAgICAgaGVpZ2h0ID0gcGFyc2VJbnQoc3R5bGUuaGVpZ2h0LCAxMCk7XG4gICAgICB2YXIgZHggPSB4IC0gZS5jbGllbnRYO1xuICAgICAgdmFyIGR5ID0geSAtIGUuY2xpZW50WTsgLy8g6Iul6KeG5Y+j56e75Yqo5Yiw5pyA5bem6L655oiW5pyA5Y+z6L655LqGLOS7heenu+WKqOWIsOi+ueeVjFxuXG4gICAgICBpZiAobGVmdCAtIGR4IDwgMCkge1xuICAgICAgICBkeCA9IGxlZnQ7XG4gICAgICB9IGVsc2UgaWYgKGxlZnQgLSBkeCArIHdpZHRoID49IGNXaWR0aCkge1xuICAgICAgICBkeCA9IDA7XG4gICAgICB9IC8vIOiLpeinhuWPo+enu+WKqOWIsOacgOS4iuaIluacgOS4i+i+ueS6hu+8jOS7heenu+WKqOWIsOi+ueeVjFxuXG5cbiAgICAgIGlmICh0b3AgLSBkeSA8IDApIHtcbiAgICAgICAgZHkgPSB0b3A7XG4gICAgICB9IGVsc2UgaWYgKHRvcCAtIGR5ICsgaGVpZ2h0ID49IGNIZWlnaHQpIHtcbiAgICAgICAgZHkgPSAwO1xuICAgICAgfVxuXG4gICAgICBsZWZ0IC09IGR4O1xuICAgICAgdG9wIC09IGR5OyAvLyDlhYjnp7vliqjop4blj6PvvIzpgb/lhY3np7vliqjliLDovrnkuIrku6XlkI7lh7rnjrDop4blj6Ppl6rng4FcblxuICAgICAgbW9kaWZ5Q1NTKHZpZXdwb3J0LCB7XG4gICAgICAgIGxlZnQ6IFwiXCIuY29uY2F0KGxlZnQsIFwicHhcIiksXG4gICAgICAgIHRvcDogXCJcIi5jb25jYXQodG9wLCBcInB4XCIpXG4gICAgICB9KTsgLy8gZ3JhcGgg56e75Yqo6ZyA6KaB5YGP56e76YePIGR4L2R5ICog57yp5pS+5q+U5L6L5omN5Lya5b6X5Yiw5q2j56Gu55qE56e75Yqo6Led56a7XG5cbiAgICAgIGdyYXBoLnRyYW5zbGF0ZShkeCAqIHpvb20gLyByYXRpbywgZHkgKiB6b29tIC8gcmF0aW8pO1xuICAgICAgeCA9IGUuY2xpZW50WDtcbiAgICAgIHkgPSBlLmNsaWVudFk7XG4gICAgfSwgZmFsc2UpO1xuICAgIGNvbnRhaW5lckRPTS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgZnVuY3Rpb24gKCkge1xuICAgICAgZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgIGNmZ3MucmVmcmVzaCA9IHRydWU7XG4gICAgfSwgZmFsc2UpO1xuICAgIGNvbnRhaW5lckRPTS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgZnVuY3Rpb24gKCkge1xuICAgICAgZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgIGNmZ3MucmVmcmVzaCA9IHRydWU7XG4gICAgfSwgZmFsc2UpO1xuICAgIHRoaXMuc2V0KCd2aWV3cG9ydCcsIHZpZXdwb3J0KTtcbiAgICBjb250YWluZXJET00uYXBwZW5kQ2hpbGQodmlld3BvcnQpO1xuICB9O1xuICAvKipcbiAgICog5pu05pawIHZpZXdwb3J0IOinhuWbvlxuICAgKi9cblxuXG4gIEltYWdlTWluaU1hcC5wcm90b3R5cGUudXBkYXRlVmlld3BvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZGVzdHJveWVkKSByZXR1cm47XG4gICAgdmFyIHJhdGlvID0gdGhpcy5nZXQoJ3JhdGlvJyk7XG4gICAgdmFyIGNXaWR0aCA9IHRoaXMuZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBjSGVpZ2h0ID0gdGhpcy5nZXQoJ2hlaWdodCcpO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBncmFwaFdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBncmFwaEhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIGFzcGVjdFJhdGlvID0gZ3JhcGhXaWR0aCAvIGdyYXBoSGVpZ2h0O1xuICAgIHZhciBncmFwaEdyb3VwID0gZ3JhcGguZ2V0R3JvdXAoKTsgLy8g5Li75Zu+55qEIGJib3jvvIjnn6npmLXlj5jmjaLnm7jlhbPnmoQgYmJveO+8iVxuXG4gICAgdmFyIGdyYXBoQ2FudmFzQkJveCA9IGdyYXBoR3JvdXAuZ2V0Q2FudmFzQkJveCgpOyAvLyDmianlsZUgZ3JhcGhCQm94IOWIsOWSjCBncmFwaFdpZHRoIC8gZ3JhcGhIZWlnaHQg562J5q+UXG5cbiAgICB2YXIgZ3JhcGhDYW52YXNCQm94TWVhbiA9IFsoZ3JhcGhDYW52YXNCQm94Lm1pblggKyBncmFwaENhbnZhc0JCb3gubWF4WCkgLyAyLCAoZ3JhcGhDYW52YXNCQm94Lm1pblkgKyBncmFwaENhbnZhc0JCb3gubWF4WSkgLyAyXTtcbiAgICB2YXIgZ3JhcGhDYW52YXNCQm94U2l6ZSA9IFtncmFwaENhbnZhc0JCb3gubWF4WCAtIGdyYXBoQ2FudmFzQkJveC5taW5YLCBncmFwaENhbnZhc0JCb3gubWF4WSAtIGdyYXBoQ2FudmFzQkJveC5taW5ZXTtcbiAgICB2YXIgZXhwYW5kZWRHcmFwaENhbnZhc0JCb3ggPSB7XG4gICAgICBjZW50ZXJYOiBncmFwaENhbnZhc0JCb3hNZWFuWzBdLFxuICAgICAgY2VudGVyWTogZ3JhcGhDYW52YXNCQm94TWVhblsxXSxcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwLFxuICAgICAgbWluWDogMCxcbiAgICAgIG1pblk6IDBcbiAgICB9O1xuXG4gICAgaWYgKGdyYXBoQ2FudmFzQkJveFswXSAvIGdyYXBoQ2FudmFzQkJveFsxXSA+IGFzcGVjdFJhdGlvKSB7XG4gICAgICBleHBhbmRlZEdyYXBoQ2FudmFzQkJveC53aWR0aCA9IGdyYXBoQ2FudmFzQkJveFNpemVbMF07XG4gICAgICBleHBhbmRlZEdyYXBoQ2FudmFzQkJveC5oZWlnaHQgPSBleHBhbmRlZEdyYXBoQ2FudmFzQkJveC53aWR0aCAvIGFzcGVjdFJhdGlvO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHBhbmRlZEdyYXBoQ2FudmFzQkJveC5oZWlnaHQgPSBncmFwaENhbnZhc0JCb3hTaXplWzFdO1xuICAgICAgZXhwYW5kZWRHcmFwaENhbnZhc0JCb3gud2lkdGggPSBleHBhbmRlZEdyYXBoQ2FudmFzQkJveC5oZWlnaHQgKiBhc3BlY3RSYXRpbztcbiAgICB9XG5cbiAgICBleHBhbmRlZEdyYXBoQ2FudmFzQkJveC5taW5YID0gZ3JhcGhDYW52YXNCQm94TWVhblswXSAtIGV4cGFuZGVkR3JhcGhDYW52YXNCQm94LndpZHRoIC8gMjtcbiAgICBleHBhbmRlZEdyYXBoQ2FudmFzQkJveC5taW5ZID0gZ3JhcGhDYW52YXNCQm94TWVhblsxXSAtIGV4cGFuZGVkR3JhcGhDYW52YXNCQm94LmhlaWdodCAvIDI7XG4gICAgdmFyIGdyYXBoTWF0cml4ID0gZ3JhcGhHcm91cC5nZXRNYXRyaXgoKTtcbiAgICBpZiAoIWdyYXBoTWF0cml4KSBncmFwaE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB2YXIgaW52ZXJ0R3JhcGhNYXRyaXggPSBtYXQzLmludmVydChbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV0sIGdyYXBoTWF0cml4KTtcbiAgICB2YXIgbWluWFkgPSBhcHBseU1hdHJpeCh7XG4gICAgICB4OiBleHBhbmRlZEdyYXBoQ2FudmFzQkJveC5taW5YLFxuICAgICAgeTogZXhwYW5kZWRHcmFwaENhbnZhc0JCb3gubWluWVxuICAgIH0sIGludmVydEdyYXBoTWF0cml4KTsgLy8g5omp5bGVIGdyYXBoQkJveCDlkI7nmoQgYmJveCDnmoTlt6bkuIrop5Llr7nlupTnmoQgY2FudmFzIGNvbnRhaW5lciDlnZDmoIdcblxuICAgIHZhciB0b3BMZWZ0ID0gZ3JhcGguZ2V0Q2FudmFzQnlQb2ludChtaW5YWS54LCBtaW5YWS55KTtcbiAgICB2YXIgdmlld3BvcnQgPSB0aGlzLmdldCgndmlld3BvcnQnKTtcblxuICAgIGlmICghdmlld3BvcnQpIHtcbiAgICAgIHRoaXMuaW5pdFZpZXdwb3J0KCk7XG4gICAgfSAvLyBWaWV3cG9ydCDkuI4gbWluaW1hcCBjb250YWluZXIg55qE5q+U5L6LID0gIEdyYXBoIGNvbnRhaW5lciDkuI4gZXhwYW5kZWRHcmFwaEJCb3gg5q+U5L6LXG5cblxuICAgIHZhciB2cFRvTWMgPSBncmFwaFdpZHRoIC8gZXhwYW5kZWRHcmFwaENhbnZhc0JCb3gud2lkdGg7IC8vIHZpZXdwb3J0IOWuvemrmCA9IHZwVG9NYyAqIG1pbmltYXAgY29udGFpbmVyIOWuvemrmFxuXG4gICAgdmFyIHdpZHRoID0gdnBUb01jICogY1dpZHRoO1xuICAgIHZhciBoZWlnaHQgPSB2cFRvTWMgKiBjSGVpZ2h0OyAvLyB2aWVycG9ydCDlt6bkuIrop5LliLAgbWluaW1hcCBjb250YWluZXIg55qE6Led56a7IC8gbWluaW1hcCBjb250YWluZXIg5a696auYXG4gICAgLy8gPSDkuLvlm74gZXhwYW5kZWRCQm94IOW3puS4iuinkiBjYW52YXMgY29udGFpbmVyIOWdkOagh+i3neemuyAvIGV4cGFuZGVkQkJveCDlrr3pq5hcblxuICAgIHZhciBsZWZ0ID0gY1dpZHRoICogLXRvcExlZnQueCAvIGV4cGFuZGVkR3JhcGhDYW52YXNCQm94LndpZHRoO1xuICAgIHZhciB0b3AgPSBjSGVpZ2h0ICogLXRvcExlZnQueSAvIGV4cGFuZGVkR3JhcGhDYW52YXNCQm94LmhlaWdodDtcbiAgICB2YXIgcmlnaHQgPSBsZWZ0ICsgd2lkdGg7XG4gICAgdmFyIGJvdHRvbSA9IHRvcCArIGhlaWdodDtcblxuICAgIGlmIChsZWZ0IDwgMCkge1xuICAgICAgd2lkdGggKz0gbGVmdDtcbiAgICAgIGxlZnQgPSAwO1xuICAgIH1cblxuICAgIGlmIChyaWdodCA+IGNXaWR0aCkge1xuICAgICAgd2lkdGggPSB3aWR0aCAtIChyaWdodCAtIGNXaWR0aCk7XG4gICAgfVxuXG4gICAgaWYgKHRvcCA8IDApIHtcbiAgICAgIGhlaWdodCArPSB0b3A7XG4gICAgICB0b3AgPSAwO1xuICAgIH1cblxuICAgIGlmIChib3R0b20gPiBjSGVpZ2h0KSB7XG4gICAgICBoZWlnaHQgPSBoZWlnaHQgLSAoYm90dG9tIC0gY0hlaWdodCk7XG4gICAgfSAvLyDnvJPlrZjnm67liY3nvKnmlL7mr5TvvIzlnKjnp7vliqggbWluaW1hcCDop4bnqpfml7blsLHkuI3nlKjlho3orqHnrpflpKflm77nmoTnp7vliqjph49cblxuXG4gICAgdGhpcy5zZXQoJ3JhdGlvJywgcmF0aW8pO1xuICAgIHZhciBjb3JyZWN0TGVmdCA9IFwiXCIuY29uY2F0KGxlZnQsIFwicHhcIik7XG4gICAgdmFyIGNvcnJlY3RUb3AgPSBcIlwiLmNvbmNhdCh0b3AsIFwicHhcIik7XG4gICAgbW9kaWZ5Q1NTKHZpZXdwb3J0LCB7XG4gICAgICBsZWZ0OiBjb3JyZWN0TGVmdCxcbiAgICAgIHRvcDogY29ycmVjdFRvcCxcbiAgICAgIHdpZHRoOiBcIlwiLmNvbmNhdCh3aWR0aCwgXCJweFwiKSxcbiAgICAgIGhlaWdodDogXCJcIi5jb25jYXQoaGVpZ2h0LCBcInB4XCIpXG4gICAgfSk7XG4gIH07XG5cbiAgSW1hZ2VNaW5pTWFwLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaW5pdENvbnRhaW5lcigpO1xuICB9O1xuICAvKipcbiAgICog5Yid5aeL5YyWIE1pbmltYXAg55qE5a655ZmoXG4gICAqL1xuXG5cbiAgSW1hZ2VNaW5pTWFwLnByb3RvdHlwZS5pbml0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgZ3JhcGhXaWR0aCA9IGdyYXBoLmdldCgnd2lkdGgnKTtcbiAgICB2YXIgZ3JhcGhIZWlnaHQgPSBncmFwaC5nZXQoJ2hlaWdodCcpO1xuICAgIHZhciBhc3BlY3RSYXRpbyA9IGdyYXBoSGVpZ2h0IC8gZ3JhcGhXaWR0aDtcbiAgICB2YXIgY2xhc3NOYW1lID0gc2VsZi5nZXQoJ2NsYXNzTmFtZScpO1xuICAgIHZhciBwYXJlbnROb2RlID0gc2VsZi5nZXQoJ2NvbnRhaW5lcicpOyAvLyBzaXplIG9mIHRoZSBtaW5pbWFwJ3MgY29udGFpbmVyXG5cbiAgICB2YXIgY1dpZHRoID0gc2VsZi5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGNIZWlnaHQgPSBzZWxmLmdldCgnaGVpZ2h0Jyk7XG5cbiAgICBpZiAoIWNXaWR0aCAmJiAhY0hlaWdodCkge1xuICAgICAgY1dpZHRoID0gMjAwO1xuICAgIH1cblxuICAgIGlmIChjV2lkdGgpIHtcbiAgICAgIGNIZWlnaHQgPSBhc3BlY3RSYXRpbyAqIGNXaWR0aDtcbiAgICAgIHNlbGYuc2V0KCdoZWlnaHQnLCBjSGVpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY1dpZHRoID0gMSAvIGFzcGVjdFJhdGlvICogY0hlaWdodDtcbiAgICAgIHNlbGYuc2V0KCd3aWR0aCcsIGNXaWR0aCk7XG4gICAgfVxuXG4gICAgdmFyIGNvbnRhaW5lciA9IGNyZWF0ZURvbShcIjxkaXYgY2xhc3M9J1wiLmNvbmNhdChjbGFzc05hbWUsIFwiJyBzdHlsZT0nd2lkdGg6IFwiKS5jb25jYXQoY1dpZHRoLCBcInB4OyBoZWlnaHQ6IFwiKS5jb25jYXQoY0hlaWdodCwgXCJweDsgb3ZlcmZsb3c6IGhpZGRlbjsgcG9zaXRpb246IHJlbGF0aXZlOyc+PC9kaXY+XCIpKTtcblxuICAgIGlmIChpc1N0cmluZyhwYXJlbnROb2RlKSkge1xuICAgICAgcGFyZW50Tm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBhcmVudE5vZGUpO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyYXBoLmdldCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBzZWxmLnNldCgnY29udGFpbmVyJywgY29udGFpbmVyKTtcbiAgICB2YXIgY29udGFpbmVyRE9NID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz1cXFwiZzYtbWluaW1hcC1jb250YWluZXJcXFwiIHN0eWxlPVxcXCJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IHRleHQtYWxpZ246IGNlbnRlcjsgZGlzcGxheTogdGFibGU7XFxcIj48L2Rpdj5cIik7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNvbnRhaW5lckRPTSk7XG4gICAgdmFyIHNwYW4gPSBjcmVhdGVEb20oXCI8c3BhbiBzdHlsZT1cXFwiZGlzcGxheTogdGFibGUtY2VsbDsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgXFxcIj48L3NwYW4+XCIpO1xuICAgIGNvbnRhaW5lckRPTS5hcHBlbmRDaGlsZChzcGFuKTtcbiAgICBzZWxmLnNldCgnY29udGFpbmVyRE9NJywgY29udGFpbmVyRE9NKTtcbiAgICBzZWxmLnNldCgnY29udGFpbmVyU3BhbicsIHNwYW4pO1xuICAgIHZhciBpbWcgPSBjcmVhdGVEb20oXCI8aW1nIGFsdD1cXFwiXFxcIiBzcmM9XFxcIlwiLmNvbmNhdCh0aGlzLmdldCgnZ3JhcGhJbWcnKSwgXCJcXFwiIHN0eWxlPVxcXCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHVzZXItc2VsZWN0OiBub25lO1xcXCIgZHJhZ2dhYmxlPVxcXCJmYWxzZVxcXCIgLz5cIikpO1xuICAgIHNlbGYuc2V0KCdpbWdET00nLCBpbWcpO1xuICAgIHNlbGYudXBkYXRlSW1nU2l6ZSgpO1xuICAgIHNwYW4uYXBwZW5kQ2hpbGQoaW1nKTtcbiAgICBzZWxmLnVwZGF0ZUNhbnZhcygpO1xuICB9O1xuXG4gIEltYWdlTWluaU1hcC5wcm90b3R5cGUudXBkYXRlSW1nU2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGltZ0RPTSA9IHNlbGYuZ2V0KCdpbWdET00nKTtcbiAgICB2YXIgY1dpZHRoID0gc2VsZi5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGNIZWlnaHQgPSBzZWxmLmdldCgnaGVpZ2h0Jyk7XG5cbiAgICBpbWdET00ub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG5hdHVyYWxTaXplID0gZ2V0SW1nTmF0dXJhbERpbWVuc2lvbihpbWdET00pO1xuXG4gICAgICBpZiAobmF0dXJhbFNpemVbMF0gPiBuYXR1cmFsU2l6ZVsxXSkge1xuICAgICAgICBpbWdET00ud2lkdGggPSBjV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbWdET00uaGVpZ2h0ID0gY0hlaWdodDtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIEltYWdlTWluaU1hcC5wcm90b3R5cGUudXBkYXRlQ2FudmFzID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIOWmguaenOaYr+WcqOWKqOeUu++8jOWImeS4jeWIt+aWsOinhuWbvlxuICAgIHZhciBpc1JlZnJlc2ggPSB0aGlzLmdldCgncmVmcmVzaCcpO1xuXG4gICAgaWYgKCFpc1JlZnJlc2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcblxuICAgIGlmIChncmFwaC5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDlpoLmnpzmmK/op4blj6Plj5jmjaLvvIzkuZ/kuI3liLfmlrDop4blm77vvIzkvYbmmK/pnIDopoHph43nva7op4blj6PlpKflsI/lkozkvY3nva5cblxuXG4gICAgaWYgKHRoaXMuZ2V0KCd2aWV3cG9ydENoYW5nZScpKSB7XG4gICAgICB0aGlzLnNldCgndmlld3BvcnRDaGFuZ2UnLCBmYWxzZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0KCk7XG4gICAgfVxuXG4gICAgdmFyIGNXaWR0aCA9IHRoaXMuZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBncmFwaEJCb3ggPSBncmFwaC5nZXQoJ2NhbnZhcycpLmdldENhbnZhc0JCb3goKTtcbiAgICB2YXIgd2lkdGggPSBncmFwaEJCb3gud2lkdGg7XG4gICAgdmFyIHJhdGlvID0gY1dpZHRoIC8gd2lkdGg7IC8vIC8vIOabtOaWsG1pbmltYXDop4blj6NcblxuICAgIHRoaXMuc2V0KCdyYXRpbycsIHJhdGlvKTtcbiAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0KCk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5ZtaW5pbWFw55qE56qX5Y+jXG4gICAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSDnqpflj6PnmoRkb23lrp7kvotcbiAgICovXG5cblxuICBJbWFnZU1pbmlNYXAucHJvdG90eXBlLmdldFZpZXdwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgndmlld3BvcnQnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPlm1pbmltYXDnmoTlrrnlmahkb21cbiAgICogQHJldHVybiB7SFRNTEVsZW1lbnR9IGRvbVxuICAgKi9cblxuXG4gIEltYWdlTWluaU1hcC5wcm90b3R5cGUuZ2V0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gIH07XG5cbiAgSW1hZ2VNaW5pTWFwLnByb3RvdHlwZS51cGRhdGVHcmFwaEltZyA9IGZ1bmN0aW9uIChpbWcpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIG9yaUltZ0RPTSA9IHNlbGYuZ2V0KCdpbWdET00nKTtcbiAgICBvcmlJbWdET00ucmVtb3ZlKCk7XG4gICAgc2VsZi5zZXQoJ2dyYXBoSW1nJywgaW1nKTtcbiAgICB2YXIgaW1nRE9NID0gY3JlYXRlRG9tKFwiPGltZyBhbHQ9XFxcIlxcXCIgc3JjPVxcXCJcIi5jb25jYXQoaW1nLCBcIlxcXCIgc3R5bGU9XFxcImRpc3BsYXk6IGlubGluZS1ibG9jaztcXFwiIG9uZHJhZ3N0YXJ0PVxcXCJyZXR1cm4gZmFsc2U7XFxcIiBvbnNlbGVjdHN0YXJ0PVxcXCJyZXR1cm4gZmFsc2U7XFxcIi8+XCIpKTtcbiAgICBzZWxmLnNldCgnaW1nRE9NJywgaW1nRE9NKTtcbiAgICBpbWdET00uc3JjID0gaW1nO1xuICAgIHNlbGYudXBkYXRlSW1nU2l6ZSgpO1xuICAgIHZhciBzcGFuID0gc2VsZi5nZXQoJ2NvbnRhaW5lclNwYW4nKTtcbiAgICBzcGFuLmFwcGVuZENoaWxkKGltZ0RPTSk7XG4gICAgc2VsZi51cGRhdGVDYW52YXMoKTtcbiAgfTtcblxuICBJbWFnZU1pbmlNYXAucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcbiAgICBjb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb250YWluZXIpO1xuICB9O1xuXG4gIHJldHVybiBJbWFnZU1pbmlNYXA7XG59KEJhc2UpO1xuXG5leHBvcnQgZGVmYXVsdCBJbWFnZU1pbmlNYXA7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/imageMinimap/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/index.js": /*!**************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/index.js ***! \**************************************************/ /*! exports provided: PluginBase, Menu, Grid, Minimap, Bundling, ToolBar, Tooltip, Fisheye, TimeBar, ImageMinimap, EdgeFilterLens, SnapLine, Legend, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./grid */ \"./node_modules/@antv/g6-plugin/es/grid/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Grid\", function() { return _grid__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _menu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./menu */ \"./node_modules/@antv/g6-plugin/es/menu/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Menu\", function() { return _menu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _minimap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./minimap */ \"./node_modules/@antv/g6-plugin/es/minimap/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Minimap\", function() { return _minimap__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _bundling__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bundling */ \"./node_modules/@antv/g6-plugin/es/bundling/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Bundling\", function() { return _bundling__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _fisheye__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fisheye */ \"./node_modules/@antv/g6-plugin/es/fisheye/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Fisheye\", function() { return _fisheye__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _toolBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./toolBar */ \"./node_modules/@antv/g6-plugin/es/toolBar/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ToolBar\", function() { return _toolBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tooltip */ \"./node_modules/@antv/g6-plugin/es/tooltip/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Tooltip\", function() { return _tooltip__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _timeBar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./timeBar */ \"./node_modules/@antv/g6-plugin/es/timeBar/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TimeBar\", function() { return _timeBar__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _imageMinimap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./imageMinimap */ \"./node_modules/@antv/g6-plugin/es/imageMinimap/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ImageMinimap\", function() { return _imageMinimap__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _edgeFilterLens__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./edgeFilterLens */ \"./node_modules/@antv/g6-plugin/es/edgeFilterLens/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EdgeFilterLens\", function() { return _edgeFilterLens__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _snapline__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./snapline */ \"./node_modules/@antv/g6-plugin/es/snapline/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SnapLine\", function() { return _snapline__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PluginBase\", function() { return _base__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _legend__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./legend */ \"./node_modules/@antv/g6-plugin/es/legend/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Legend\", function() { return _legend__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Plugin = {\n PluginBase: _base__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n Menu: _menu__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Grid: _grid__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n Minimap: _minimap__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Bundling: _bundling__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n ToolBar: _toolBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n Tooltip: _tooltip__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n Fisheye: _fisheye__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n TimeBar: _timeBar__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n ImageMinimap: _imageMinimap__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n EdgeFilterLens: _edgeFilterLens__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n SnapLine: _snapline__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Legend: _legend__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Plugin);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL2luZGV4LmpzPzBkM2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEI7QUFDQTtBQUNNO0FBQ0U7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNVO0FBQ0k7QUFDWjtBQUNGO0FBQ0Y7QUFDMkc7QUFDekk7QUFDQSxjQUFjLDhDQUFVO0FBQ3hCLFFBQVEsNkNBQUk7QUFDWixRQUFRLDZDQUFJO0FBQ1osV0FBVyxnREFBTztBQUNsQixZQUFZLGlEQUFRO0FBQ3BCLFdBQVcsZ0RBQU87QUFDbEIsV0FBVyxnREFBTztBQUNsQixXQUFXLGdEQUFPO0FBQ2xCLFdBQVcsZ0RBQU87QUFDbEIsZ0JBQWdCLHFEQUFZO0FBQzVCLGtCQUFrQix1REFBYztBQUNoQyxZQUFZLGtEQUFRO0FBQ3BCLFVBQVUsZ0RBQU07QUFDaEI7QUFDZSxxRUFBTSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wbHVnaW4vZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR3JpZCBmcm9tICcuL2dyaWQnO1xuaW1wb3J0IE1lbnUgZnJvbSAnLi9tZW51JztcbmltcG9ydCBNaW5pbWFwIGZyb20gJy4vbWluaW1hcCc7XG5pbXBvcnQgQnVuZGxpbmcgZnJvbSAnLi9idW5kbGluZyc7XG5pbXBvcnQgRmlzaGV5ZSBmcm9tICcuL2Zpc2hleWUnO1xuaW1wb3J0IFRvb2xCYXIgZnJvbSAnLi90b29sQmFyJztcbmltcG9ydCBUb29sdGlwIGZyb20gJy4vdG9vbHRpcCc7XG5pbXBvcnQgVGltZUJhciBmcm9tICcuL3RpbWVCYXInO1xuaW1wb3J0IEltYWdlTWluaW1hcCBmcm9tICcuL2ltYWdlTWluaW1hcCc7XG5pbXBvcnQgRWRnZUZpbHRlckxlbnMgZnJvbSAnLi9lZGdlRmlsdGVyTGVucyc7XG5pbXBvcnQgU25hcExpbmUgZnJvbSAnLi9zbmFwbGluZSc7XG5pbXBvcnQgUGx1Z2luQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IExlZ2VuZCBmcm9tICcuL2xlZ2VuZCc7XG5leHBvcnQgeyBQbHVnaW5CYXNlLCBNZW51LCBHcmlkLCBNaW5pbWFwLCBCdW5kbGluZywgVG9vbEJhciwgVG9vbHRpcCwgRmlzaGV5ZSwgVGltZUJhciwgSW1hZ2VNaW5pbWFwLCBFZGdlRmlsdGVyTGVucywgU25hcExpbmUsIExlZ2VuZCB9O1xudmFyIFBsdWdpbiA9IHtcbiAgUGx1Z2luQmFzZTogUGx1Z2luQmFzZSxcbiAgTWVudTogTWVudSxcbiAgR3JpZDogR3JpZCxcbiAgTWluaW1hcDogTWluaW1hcCxcbiAgQnVuZGxpbmc6IEJ1bmRsaW5nLFxuICBUb29sQmFyOiBUb29sQmFyLFxuICBUb29sdGlwOiBUb29sdGlwLFxuICBGaXNoZXllOiBGaXNoZXllLFxuICBUaW1lQmFyOiBUaW1lQmFyLFxuICBJbWFnZU1pbmltYXA6IEltYWdlTWluaW1hcCxcbiAgRWRnZUZpbHRlckxlbnM6IEVkZ2VGaWx0ZXJMZW5zLFxuICBTbmFwTGluZTogU25hcExpbmUsXG4gIExlZ2VuZDogTGVnZW5kXG59O1xuZXhwb3J0IGRlZmF1bHQgUGx1Z2luOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/legend/index.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/legend/index.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_g_canvas__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-canvas */ \"./node_modules/@antv/g-canvas/esm/index.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\n\nvar ALLOW_EVENTS = ['click', 'mouseenter'];\n\nvar Legend =\n/** @class */\nfunction (_super) {\n __extends(Legend, _super);\n\n function Legend(config) {\n return _super.call(this, config) || this;\n }\n\n Legend.prototype.getDefaultCfgs = function () {\n return {\n data: {},\n position: 'top',\n padding: 8,\n margin: 8,\n offsetX: 0,\n offsetY: 0,\n layout: 'horizontal',\n flipPage: false,\n containerStyle: {},\n align: undefined,\n horiSep: 8,\n vertiSep: 8,\n filter: {\n enable: false,\n trigger: 'click'\n }\n };\n };\n\n Legend.prototype.init = function () {\n this.formatArray('padding');\n this.formatArray('margin');\n var filter = this.get('filter') || {};\n var multiple = filter.multiple;\n if (multiple && filter.trigger === 'mouseenter') this.set('multiple', false);\n var align = this.get('align');\n\n if (!align) {\n var positions = this.get('position').split('-');\n if (positions.includes('left')) align = 'left';\n if (positions.includes('right')) align = 'right';else align = 'center';\n this.set('align', align);\n }\n\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"
\");\n graphContainer.appendChild(container);\n this.set('container', container);\n var size = this.render();\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(container, this.getContainerPos(size));\n this.bindEvents();\n };\n\n Legend.prototype.getContainerPos = function (size) {\n if (size === void 0) {\n size = [0, 0];\n }\n\n var self = this;\n var graph = self.get('graph');\n var offsetX = this.get('offsetX');\n var offsetY = this.get('offsetY');\n var margin = this.get('margin');\n var positions = this.get('position').split('-');\n var posIdxMap = {\n 'top': 0,\n 'right': 1,\n 'bottom': 2,\n 'left': 3\n };\n var x = 0,\n y = 0;\n var containerCSS = {\n left: (graph.getWidth() - size[0]) / 2 + x,\n top: (graph.getHeight() - size[1]) / 2 + y\n };\n positions.forEach(function (pos) {\n var marginValue = margin[posIdxMap[pos]];\n var key = pos;\n\n switch (pos) {\n case 'top':\n marginValue += y;\n break;\n\n case 'left':\n marginValue += x;\n break;\n\n case 'bottom':\n marginValue = graph.getHeight() - size[1] - marginValue + y;\n key = 'top';\n break;\n\n default:\n marginValue = graph.getWidth() - size[0] - marginValue + x;\n key = 'left';\n break;\n }\n\n containerCSS[key] = marginValue;\n });\n containerCSS.top += offsetY + graph.getContainer().offsetTop;\n containerCSS.left += offsetX + graph.getContainer().offsetLeft;\n Object.keys(containerCSS).forEach(function (key) {\n containerCSS[key] = \"\".concat(containerCSS[key], \"px\");\n });\n return containerCSS;\n }; // class-methods-use-this\n\n\n Legend.prototype.bindEvents = function () {\n var self = this;\n var filter = self.get('filter');\n if (!filter || !filter.enable) return;\n var trigger = filter.trigger || 'click';\n\n if (!ALLOW_EVENTS.includes(trigger)) {\n console.warn('Trigger for legend filterling must be \\'click\\' or \\'mouseenter\\', \\'click\\' will take effect by default.');\n trigger = 'click';\n }\n\n var lc = self.get('legendCanvas');\n\n if (trigger === 'mouseenter') {\n lc.on('node-container:mouseenter', function (e) {\n return self.filterData(e);\n });\n lc.on('node-container:mouseleave', function (e) {\n self.clearFilter();\n self.clearActiveLegend();\n });\n } else {\n lc.on('node-container:click', function (e) {\n return self.filterData(e);\n });\n lc.on('click', function (e) {\n if (e.target && e.target.isCanvas && e.target.isCanvas()) {\n self.clearFilter();\n self.clearActiveLegend();\n }\n });\n }\n };\n /**\n * 更新 legend 数据,开放给用户控制\n * @param param\n */\n\n\n Legend.prototype.changeData = function (data) {\n this.set('data', data);\n var size = this.render();\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.get('container'), this.getContainerPos(size));\n };\n\n Legend.prototype.activateLegend = function (shape) {\n var filter = this.get('filter');\n var multiple = filter === null || filter === void 0 ? void 0 : filter.multiple;\n if (!multiple) this.clearActiveLegend();\n var shapeGroup = shape.get('parent'); // 若被高亮元素已经处于 active 状态,则取消它的 active 状态\n // 并根据目前是否有其他 active 状态的元素决定是否要设置为 inactive 状态\n\n if (shapeGroup.get('active')) {\n shapeGroup.set('active', false);\n if (this.findLegendItemsByState('active').length) shapeGroup.set('inactive', true);\n } else {\n shapeGroup.set('inactive', false);\n shapeGroup.set('active', true);\n } // 当目前有元素为 active 状态时,将非 active 的元素设置为 inactive\n\n\n if (this.findLegendItemsByState('active').length) {\n this.findLegendItemsByState('active', 'all', false).forEach(function (subGroup) {\n subGroup.set('inactive', true);\n });\n } else {\n this.clearActiveLegend();\n } // 设置样式\n\n\n var stateStyles = (filter === null || filter === void 0 ? void 0 : filter.lengedStateStyles) || {};\n var legendInactive = (stateStyles === null || stateStyles === void 0 ? void 0 : stateStyles.inactive) || {\n opacity: 0.5,\n 'text-shape': {\n opacity: 0.5\n }\n };\n var legendTextInactive = legendInactive['text-shape'] || {};\n this.findLegendItemsByState('inactive').forEach(function (subGroup) {\n var _a = subGroup.get('children'),\n keyShape = _a[0],\n text = _a[1];\n\n keyShape.attr(__assign(__assign({}, keyShape.get('oriAttrs')), legendInactive));\n text.attr(__assign(__assign({}, text.get('oriAttrs')), legendTextInactive));\n });\n var legendActive = (stateStyles === null || stateStyles === void 0 ? void 0 : stateStyles.active) || {\n stroke: '#000',\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 'bold'\n }\n };\n var legendTextActive = legendActive['text-shape'] || {};\n this.findLegendItemsByState('active').forEach(function (subGroup) {\n var _a = subGroup.get('children'),\n keyShape = _a[0],\n text = _a[1];\n\n keyShape.attr(__assign(__assign({}, keyShape.get('oriAttrs')), legendActive));\n text.attr(__assign(__assign({}, text.get('oriAttrs')), legendTextActive));\n });\n };\n\n Legend.prototype.findLegendItemsByState = function (stateName, type, value) {\n if (type === void 0) {\n type = 'all';\n }\n\n if (value === void 0) {\n value = true;\n }\n\n var group = this.get('legendCanvas').find(function (e) {\n return e.get('name') === 'root';\n });\n var nodeGroup = group.find(function (e) {\n return e.get('name') === 'node-group';\n });\n var edgeGroup = group.find(function (e) {\n return e.get('name') === 'edge-group';\n });\n if (type === 'node') return nodeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n });\n if (type === 'edge') return edgeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n });\n return nodeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n }).concat(edgeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n }));\n };\n\n Legend.prototype.clearActiveLegend = function () {\n var lg = this.get('legendCanvas');\n var group = lg.find(function (e) {\n return e.get('name') === 'root';\n });\n var groups = [group.find(function (e) {\n return e.get('name') === 'node-group';\n }), group.find(function (e) {\n return e.get('name') === 'edge-group';\n })];\n groups.forEach(function (itemGroup) {\n itemGroup.get('children').forEach(function (subGroup) {\n subGroup.set('active', false);\n subGroup.set('inactive', false);\n\n var _a = subGroup.get('children'),\n keyShape = _a[0],\n text = _a[1];\n\n keyShape.attr(keyShape.get('oriAttrs'));\n text.attr(text.get('oriAttrs'));\n });\n });\n };\n /**\n * 高亮和置灰图例,并过滤主图元素\n * @param param\n */\n\n\n Legend.prototype.filterData = function (e) {\n var filter = this.get('filter');\n var filterFunctions = filter === null || filter === void 0 ? void 0 : filter.filterFunctions;\n if (!filter || !filterFunctions) return;\n var lc = this.get('legendCanvas');\n var graph = this.get('graph');\n var activeState = filter.graphActiveState || 'active';\n var inactiveState = filter.graphInactiveState || 'inactive';\n var multiple = filter.multiple;\n this.clearFilter();\n if (!multiple) this.clearActiveLegend(); // 设置 legend 的高亮状态\n\n this.activateLegend(e.target);\n var group = lc.find(function (e) {\n return e.get('name') === 'root';\n });\n var nodeGroup = group.find(function (e) {\n return e.get('name') === 'node-group';\n });\n var edgeGroup = group.find(function (e) {\n return e.get('name') === 'edge-group';\n });\n var activeNodeLegend = nodeGroup.get('children').filter(function (e) {\n return e.get('active');\n });\n var activeEdgeLegend = edgeGroup.get('children').filter(function (e) {\n return e.get('active');\n });\n var activeCount = 0;\n var typeFuncs = ['getNodes', 'getEdges'];\n typeFuncs.forEach(function (typeFunc) {\n graph[typeFunc]().forEach(function (graphItem) {\n var active = false;\n var activeLegend = typeFunc === 'getNodes' ? activeNodeLegend : activeEdgeLegend;\n activeLegend.forEach(function (itemGroup) {\n var func = filterFunctions[itemGroup.get('id')];\n active = active || func(graphItem.getModel());\n });\n\n if (active) {\n graph.setItemState(graphItem, inactiveState, false);\n graph.setItemState(graphItem, activeState, true);\n activeCount++;\n } else {\n graph.setItemState(graphItem, activeState, false);\n graph.setItemState(graphItem, inactiveState, true);\n }\n });\n });\n if (!activeCount) typeFuncs.forEach(function (typeFunc) {\n graph[typeFunc]().forEach(function (graphItem) {\n graph.clearItemStates(graphItem, [inactiveState]);\n });\n });\n };\n /**\n * 清除主图相关状态\n * @param param\n */\n\n\n Legend.prototype.clearFilter = function () {\n // 清除 legend 的高亮状态\n var graph = this.get('graph');\n var filter = this.get('filter');\n if (!filter) return;\n var activeState = filter.graphActiveState || 'active';\n var inactiveState = filter.graphInactiveState || 'inactive';\n graph.getNodes().forEach(function (node) {\n graph.clearItemStates(node, [activeState, inactiveState]);\n });\n graph.getEdges().forEach(function (edge) {\n graph.clearItemStates(edge, [activeState, inactiveState]);\n });\n };\n /**\n * 渲染 legend 图\n * @param param\n */\n\n\n Legend.prototype.render = function () {\n var _this = this;\n\n this.processData();\n var lc = this.get('legendCanvas');\n\n if (!lc) {\n lc = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_4__[\"Canvas\"]({\n container: this.get('container'),\n width: 200,\n height: 200\n });\n var rootGroup = lc.addGroup({\n name: 'root'\n });\n rootGroup.addGroup({\n name: 'node-group'\n });\n rootGroup.addGroup({\n name: 'edge-group'\n }); // nodeStateStyles: {\n // legendActive,\n // legendInactive\n // }\n\n this.set('legendCanvas', lc);\n }\n\n var group = lc.find(function (e) {\n return e.get('name') === 'root';\n });\n var nodeGroup = group.find(function (e) {\n return e.get('name') === 'node-group';\n });\n var edgeGroup = group.find(function (e) {\n return e.get('name') === 'edge-group';\n });\n var itemsData = this.get('itemsData');\n var itemTypes = ['nodes', 'edges'];\n var itemGroup = [nodeGroup, edgeGroup];\n itemTypes.forEach(function (itemType, i) {\n itemsData[itemType].forEach(function (data) {\n var _a;\n\n var subGroup = itemGroup[i].addGroup({\n id: data.id,\n name: 'node-container'\n });\n var attrs;\n var shapeType = data.type;\n\n var _b = _this.getShapeSize(data),\n width = _b.width,\n height = _b.height,\n r = _b.r;\n\n var style = _this.getStyle(itemType.substr(0, 4), data);\n\n switch (data.type) {\n case 'circle':\n attrs = {\n r: r,\n x: 0,\n y: 0\n };\n break;\n\n case 'rect':\n attrs = {\n width: width,\n height: height,\n x: -width / 2,\n y: -height / 2\n };\n break;\n\n case 'ellipse':\n attrs = {\n r1: width,\n r2: height,\n x: 0,\n y: 0\n };\n break;\n\n case 'line':\n attrs = {\n x1: -width / 2,\n y1: 0,\n x2: width / 2,\n y2: 0\n };\n shapeType = 'line';\n break;\n\n case 'quadratic':\n attrs = {\n path: [['M', -width / 2, 0], ['Q', 0, width / 2, width / 2, 0]]\n };\n shapeType = 'path';\n break;\n\n case 'cubic':\n attrs = {\n path: [['M', -width / 2, 0], ['C', -width / 6, width / 2, width / 6, -width / 2, width / 2, 0]]\n };\n shapeType = 'path';\n break;\n\n default:\n attrs = {\n r: r,\n x: 0,\n y: 0\n };\n break;\n }\n\n var keyShape = subGroup.addShape(shapeType, {\n attrs: __assign(__assign({}, attrs), style),\n name: \"\".concat(data.type, \"-node-keyShape\"),\n oriAttrs: __assign({\n opacity: 1\n }, style)\n });\n\n if (data.label) {\n var keyShapeBBox = keyShape.getBBox();\n var labelStyle = ((_a = data.labelCfg) === null || _a === void 0 ? void 0 : _a.style) || {};\n\n var attrs_1 = __assign({\n textAlign: 'begin',\n fontSize: 12,\n textBaseline: 'middle',\n fill: '#000',\n opacity: 1,\n fontWeight: 'normal'\n }, labelStyle);\n\n subGroup.addShape('text', {\n attrs: __assign({\n x: keyShapeBBox.maxX + 4,\n y: 0,\n text: data.label\n }, attrs_1),\n className: 'legend-label',\n name: \"\".concat(data.type, \"-node-text\"),\n oriAttrs: attrs_1\n });\n }\n });\n });\n var padding = this.get('padding');\n var titleShape;\n var titleGroup = group.find(function (e) {\n return e.get('name') === 'title-container';\n });\n var titleGroupBBox = {\n height: 0,\n maxY: 0,\n width: 0\n };\n\n if (this.get('title')) {\n if (!titleGroup) {\n titleGroup = group.addGroup({\n name: 'title-container'\n });\n }\n\n var defaultTitleStyle = {\n fontSize: 20,\n fontFamily: 'Arial',\n fontWeight: 300,\n textBaseline: 'top',\n textAlign: 'center',\n fill: \"#000\",\n x: 0,\n y: padding[0]\n };\n var titleConfig = this.get('titleConfig') || {};\n var style = Object.assign(defaultTitleStyle, titleConfig.style || {});\n titleShape = titleGroup.addShape('text', {\n attrs: __assign({\n text: this.get('title')\n }, style)\n });\n titleGroupBBox = titleGroup.getCanvasBBox();\n titleGroup.setMatrix([1, 0, 0, 0, 1, 0, titleConfig.offsetX, titleConfig.offsetY, 1]);\n }\n\n this.layoutItems();\n var lcBBox = group.getCanvasBBox();\n var nodeGroupBBox = nodeGroup.getCanvasBBox(); // 若有图形超过边界的情况,平移回来\n\n var nodeGroupBeginX = nodeGroupBBox.minX < 0 ? Math.abs(nodeGroupBBox.minX) + padding[3] : padding[3];\n var nodeGroupBeginY = titleGroupBBox.maxY < nodeGroupBBox.minY ? Math.abs(titleGroupBBox.maxY - nodeGroupBBox.minY) + padding[0] : titleGroupBBox.maxY + padding[0];\n var nodeGroupMatrix = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1];\n nodeGroup.setMatrix(nodeGroupMatrix);\n lcBBox = group.getCanvasBBox();\n var size = [lcBBox.minX + lcBBox.width + padding[1], lcBBox.minY + lcBBox.height + padding[2]]; // 根据 size 和 titleConfig 调整 title 位置,再调整 nodeGroup 位置\n\n if (titleShape) {\n var titleConfig = __assign({\n position: 'center',\n offsetX: 0,\n offsetY: 0\n }, this.get('titleConfig'));\n\n titleGroupBBox = titleGroup.getCanvasBBox();\n var titleGroupMatrix = titleGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n if (titleConfig.position === 'center') {\n titleGroupMatrix[6] = size[0] / 2 + titleConfig.offsetX;\n } else if (titleConfig.position === 'right') {\n titleGroupMatrix[6] = size[0] - padding[3] + titleConfig.offsetX;\n titleShape.attr({\n textAlign: 'right'\n });\n } else {\n titleGroupMatrix[6] = padding[3] + titleConfig.offsetX;\n titleShape.attr({\n textAlign: 'left'\n });\n }\n\n titleGroup.setMatrix(titleGroupMatrix);\n titleGroupBBox = titleGroup.getCanvasBBox(); // 若有图形超过边界的情况,平移回来\n\n nodeGroupBeginX = nodeGroupBBox.minX < 0 ? Math.abs(nodeGroupBBox.minX) + padding[3] : padding[3];\n nodeGroupBeginY = nodeGroupBBox.minY < titleGroupBBox.maxY ? Math.abs(titleGroupBBox.maxY - nodeGroupBBox.minY) + padding[0] : titleGroupBBox.maxY + padding[0];\n nodeGroupMatrix = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1];\n nodeGroup.setMatrix(nodeGroupMatrix);\n var edgeGroupMatrix_1 = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1];\n if (this.get('layout') === 'vertical') edgeGroupMatrix_1[6] += nodeGroupBBox.maxX + this.get('horiSep');else edgeGroupMatrix_1[7] += nodeGroupBBox.maxY + this.get('vertiSep');\n edgeGroup.setMatrix(edgeGroupMatrix_1);\n } else {\n // 没有 title,也需要平移 edgeGroup\n nodeGroupBBox = nodeGroup.getCanvasBBox();\n var edgeGroupMatrix_2 = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (this.get('layout') === 'vertical') edgeGroupMatrix_2[6] += nodeGroupMatrix[6] + nodeGroupBBox.maxX + this.get('horiSep');else edgeGroupMatrix_2[7] += nodeGroupMatrix[7] + nodeGroupBBox.maxY + this.get('vertiSep');\n edgeGroup.setMatrix(edgeGroupMatrix_2);\n }\n\n lcBBox = group.getCanvasBBox();\n nodeGroupBBox = nodeGroup.getCanvasBBox();\n nodeGroupMatrix = nodeGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var edgeGroupMatrix = edgeGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var edgeGroupBBox = edgeGroup.getCanvasBBox();\n size = [Math.max(nodeGroupBBox.width + nodeGroupMatrix[6], edgeGroupBBox.width + edgeGroupMatrix[6]) + padding[1], Math.max(nodeGroupBBox.height + nodeGroupMatrix[7], edgeGroupBBox.height + edgeGroupMatrix[7]) + padding[2]];\n lc.changeSize(size[0], size[1]); // 更新容器背景样式\n\n var containerStyle = this.get('containerStyle');\n var viewportMatrix = group.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var beginPos = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].invertMatrix({\n x: 0,\n y: 0\n }, viewportMatrix);\n var backRect = group.addShape('rect', {\n attrs: __assign({\n x: beginPos.x + (containerStyle.lineWidth || 1),\n y: beginPos.y + (containerStyle.lineWidth || 1),\n width: size[0] - 2 * (containerStyle.lineWidth || 1),\n height: size[1] - 2 * (containerStyle.lineWidth || 1),\n fill: \"#f00\",\n stroke: '#000',\n lineWidth: 1,\n opacity: 0.5\n }, containerStyle),\n name: 'legend-back-rect',\n capture: false\n });\n backRect.toBack();\n return size;\n };\n\n Legend.prototype.layoutItems = function () {\n var lc = this.get('legendCanvas');\n var horiSep = this.get('horiSep');\n var vertiSep = this.get('vertiSep');\n var layout = this.get('layout');\n var align = this.get('align');\n var begin = [0, 0];\n var group = lc.find(function (e) {\n return e.get('name') === 'root';\n });\n var nodeGroup = group.find(function (e) {\n return e.get('name') === 'node-group';\n });\n var edgeGroup = group.find(function (e) {\n return e.get('name') === 'edge-group';\n });\n var nodeLegendSize = {\n min: 0,\n max: -Infinity\n };\n var rowMaxY = -Infinity;\n nodeGroup.get('children').forEach(function (cNodeGroup, i) {\n if (i === 0) nodeLegendSize.min = begin[0];\n var keyShape = cNodeGroup.get('children')[0];\n var bbox = cNodeGroup.getCanvasBBox();\n\n var _a = keyShape.getBBox(),\n keyShapeWidth = _a.width,\n keyShapeHeight = _a.height;\n\n var curHeight = 0,\n x = 0,\n y = 0;\n\n if (layout === 'vertical') {\n x = begin[1];\n y = begin[0] + keyShapeWidth / 2;\n begin[0] = y + bbox.height + vertiSep;\n curHeight = bbox.maxX + x + keyShapeWidth / 2;\n } else {\n x = begin[0] + keyShapeWidth / 2;\n y = begin[1];\n begin[0] = x + bbox.width + horiSep;\n curHeight = bbox.maxY + y + keyShapeHeight / 2;\n }\n\n if (begin[0] > nodeLegendSize.max) nodeLegendSize.max = begin[0];\n if (curHeight > rowMaxY) rowMaxY = curHeight;\n cNodeGroup.setMatrix([1, 0, 0, 0, 1, 0, x, y, 1]);\n });\n var nw = nodeLegendSize.max - nodeLegendSize.min;\n var edgeLegendSize = {\n min: 0,\n max: -Infinity\n };\n var nodeGroupBBox = nodeGroup.getCanvasBBox();\n begin[0] = 0;\n begin[1] = layout === 'vertical' ? nodeGroupBBox.maxX + horiSep : nodeGroupBBox.maxY + vertiSep;\n edgeGroup.get('children').forEach(function (subGroup, i) {\n if (i === 0) edgeLegendSize.min = begin[0];\n var keyShape = subGroup.get('children')[0];\n var bbox = subGroup.getCanvasBBox();\n\n var _a = keyShape.getBBox(),\n keyShapeWidth = _a.width,\n keyShapeHeight = _a.height;\n\n var x = 0,\n y = 0;\n\n if (layout === 'vertical') {\n x = begin[1];\n y = begin[0];\n begin[0] = y + bbox.height + vertiSep;\n subGroup.setMatrix([1, 0, 0, 0, 1, 0, 0, y + keyShapeHeight / 2, 1]);\n } else {\n x = begin[0];\n y = begin[1];\n begin[0] = x + bbox.width + horiSep;\n subGroup.setMatrix([1, 0, 0, 0, 1, 0, x + keyShapeWidth / 2, 0, 1]);\n }\n\n if (begin[0] > edgeLegendSize.max) edgeLegendSize.max = begin[0];\n });\n var ew = edgeLegendSize.max - edgeLegendSize.min;\n\n if (align && align !== '' && align !== 'left') {\n var widthDiff = nw - ew;\n var movement_1 = align === 'center' ? Math.abs(widthDiff) / 2 : Math.abs(widthDiff);\n var shouldAdjustGroup = widthDiff < 0 ? nodeGroup : edgeGroup;\n shouldAdjustGroup.get('children').forEach(function (subGroup) {\n var matrix = subGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (layout === 'vertical') matrix[7] += movement_1;else matrix[6] += movement_1;\n subGroup.setMatrix(matrix);\n });\n }\n };\n\n Legend.prototype.processData = function () {\n var data = this.get('data');\n var itemsData = {\n nodes: [],\n edges: []\n };\n\n if (data.nodes) {\n data.nodes.sort(function (a, b) {\n return a.order - b.order;\n });\n data.nodes.forEach(function (node) {\n var _a, _b, _c, _d, _e;\n\n var size = node.size || [((_a = node.style) === null || _a === void 0 ? void 0 : _a.width) || ((_b = node.style) === null || _b === void 0 ? void 0 : _b.r) || 8, ((_c = node.style) === null || _c === void 0 ? void 0 : _c.height) || ((_d = node.style) === null || _d === void 0 ? void 0 : _d.r) || 8];\n var labelStyle = ((_e = node.labelCfg) === null || _e === void 0 ? void 0 : _e.style) || {};\n itemsData.nodes.push({\n id: node.id || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"uniqueId\"])(),\n type: node.type || 'circle',\n style: __assign({}, node.style),\n order: node.order,\n label: node.label,\n itemType: 'node',\n size: size,\n labelCfg: {\n position: 'right',\n style: __assign({\n fontFamily: \"Arial\"\n }, labelStyle)\n }\n });\n });\n }\n\n if (data.edges) {\n data.edges.sort(function (a, b) {\n return a.order - b.order;\n });\n data.edges.forEach(function (edge) {\n var _a, _b;\n\n var type = edge.type || 'line';\n if (edge.type === 'cubic-horizontal') type = 'cubic';\n var labelStyle = ((_a = edge.labelCfg) === null || _a === void 0 ? void 0 : _a.style) || {};\n var size = edge.size || [((_b = edge.style) === null || _b === void 0 ? void 0 : _b.width) || 8, 1];\n itemsData.edges.push({\n id: edge.id || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"uniqueId\"])(),\n type: type,\n size: size,\n style: __assign({\n lineWidth: Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(size) ? size[1] : 1\n }, edge.style),\n order: edge.order,\n label: edge.label,\n itemType: 'edge',\n labelCfg: {\n position: 'right',\n style: __assign({\n fontFamily: \"Arial\"\n }, labelStyle)\n }\n });\n });\n }\n\n this.set('itemsData', itemsData);\n };\n\n Legend.prototype.getContainer = function () {\n return this.get('container');\n };\n\n Legend.prototype.formatArray = function (key) {\n var value = this.get(key);\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(value)) this.set(key, [value, value, value, value]);else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(value)) {\n switch (value.length) {\n case 0:\n this.set(key, [0, 0, 0, 0]);\n break;\n\n case 1:\n this.set(key, [value[0], value[0], value[0], value[0]]);\n break;\n\n case 2:\n this.set(key, [value[0], value[1], value[0], value[1]]);\n break;\n\n case 3:\n this.set(key, [value[0], value[1], value[2], value[1]]);\n break;\n\n default:\n break;\n }\n }\n return this.get(key);\n };\n\n Legend.prototype.getShapeSize = function (data) {\n var width, height, r;\n\n if (data.size) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(data.size)) {\n width = data.size[0];\n height = data.size[1] || data.size[0];\n r = data.size[0] / 2;\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(data.size)) {\n width = data.size;\n height = data.size;\n r = data.size / 2;\n }\n }\n\n if (data.style) {\n if (data.style.width) width = data.style.width;\n if (data.style.height) height = data.style.height;\n if (data.style.r) r = data.style.r;\n }\n\n if (!r) r = 5;\n if (!width) width = r;\n if (!height) height = r;\n return {\n width: width,\n height: height,\n r: r\n };\n };\n\n Legend.prototype.getStyle = function (type, data) {\n var defaultStyle = type === 'node' ? {\n fill: '#ccc',\n lineWidth: 0\n } : {\n stroke: '#000',\n lineWidth: 1\n };\n return __assign(__assign({}, defaultStyle), data.style || {});\n };\n\n Legend.prototype.destroy = function () {\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var container = this.get('container');\n graphContainer.removeChild(container);\n };\n\n return Legend;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Legend);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL2xlZ2VuZC9pbmRleC5qcz8yZDEwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxlQUFlLFNBQUksSUFBSSxTQUFJO0FBQzNCO0FBQ0EsNENBQTRDLE9BQU87QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVzRDtBQUMzQjtBQUM4QjtBQUNwQjtBQUNHO0FBQ3hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQ7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9CLGdFQUFTLDhEQUE4RDtBQUMzRjtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0VBQVM7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0NBQXdDO0FBQ3hDLG9DQUFvQztBQUNwQyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QyxvQ0FBb0M7QUFDcEMsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxxREFBTTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPLEVBQUU7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEU7QUFDMUU7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtEQUFrRDs7QUFFbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1HQUFtRzs7QUFFbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEdBQThHO0FBQzlHO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLG1JQUFtSTtBQUNuSTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBLG1CQUFtQixrREFBSTtBQUN2QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRDtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsMkRBQVE7QUFDakM7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMERBQU87QUFDOUIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUSwyREFBUSxxREFBcUQsU0FBUywwREFBTztBQUNyRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFVBQVUsMERBQU87QUFDakI7QUFDQTtBQUNBO0FBQ0EsT0FBTyxVQUFVLDJEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGlDQUFpQztBQUNoRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsNkNBQUk7O0FBRVMscUVBQU0iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL2xlZ2VuZC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2V4dGVuZHMgPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9leHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gZXh0ZW5kU3RhdGljcyhkLCBiKSB7XG4gICAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZC5fX3Byb3RvX18gPSBiO1xuICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGZvciAodmFyIHAgaW4gYikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICAgIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgZnVuY3Rpb24gX18oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICB9XG5cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gIH07XG59KCk7XG5cbnZhciBfX2Fzc2lnbiA9IHRoaXMgJiYgdGhpcy5fX2Fzc2lnbiB8fCBmdW5jdGlvbiAoKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcblxuaW1wb3J0IHsgbW9kaWZ5Q1NTLCBjcmVhdGVEb20gfSBmcm9tICdAYW50di9kb20tdXRpbCc7XG5pbXBvcnQgQmFzZSBmcm9tICcuLi9iYXNlJztcbmltcG9ydCB7IGlzQXJyYXksIGlzTnVtYmVyLCB1bmlxdWVJZCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgQ2FudmFzIH0gZnJvbSAnQGFudHYvZy1jYW52YXMnO1xudmFyIEFMTE9XX0VWRU5UUyA9IFsnY2xpY2snLCAnbW91c2VlbnRlciddO1xuXG52YXIgTGVnZW5kID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKExlZ2VuZCwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBMZWdlbmQoY29uZmlnKSB7XG4gICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGNvbmZpZykgfHwgdGhpcztcbiAgfVxuXG4gIExlZ2VuZC5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHt9LFxuICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgcGFkZGluZzogOCxcbiAgICAgIG1hcmdpbjogOCxcbiAgICAgIG9mZnNldFg6IDAsXG4gICAgICBvZmZzZXRZOiAwLFxuICAgICAgbGF5b3V0OiAnaG9yaXpvbnRhbCcsXG4gICAgICBmbGlwUGFnZTogZmFsc2UsXG4gICAgICBjb250YWluZXJTdHlsZToge30sXG4gICAgICBhbGlnbjogdW5kZWZpbmVkLFxuICAgICAgaG9yaVNlcDogOCxcbiAgICAgIHZlcnRpU2VwOiA4LFxuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGVuYWJsZTogZmFsc2UsXG4gICAgICAgIHRyaWdnZXI6ICdjbGljaydcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIExlZ2VuZC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZvcm1hdEFycmF5KCdwYWRkaW5nJyk7XG4gICAgdGhpcy5mb3JtYXRBcnJheSgnbWFyZ2luJyk7XG4gICAgdmFyIGZpbHRlciA9IHRoaXMuZ2V0KCdmaWx0ZXInKSB8fCB7fTtcbiAgICB2YXIgbXVsdGlwbGUgPSBmaWx0ZXIubXVsdGlwbGU7XG4gICAgaWYgKG11bHRpcGxlICYmIGZpbHRlci50cmlnZ2VyID09PSAnbW91c2VlbnRlcicpIHRoaXMuc2V0KCdtdWx0aXBsZScsIGZhbHNlKTtcbiAgICB2YXIgYWxpZ24gPSB0aGlzLmdldCgnYWxpZ24nKTtcblxuICAgIGlmICghYWxpZ24pIHtcbiAgICAgIHZhciBwb3NpdGlvbnMgPSB0aGlzLmdldCgncG9zaXRpb24nKS5zcGxpdCgnLScpO1xuICAgICAgaWYgKHBvc2l0aW9ucy5pbmNsdWRlcygnbGVmdCcpKSBhbGlnbiA9ICdsZWZ0JztcbiAgICAgIGlmIChwb3NpdGlvbnMuaW5jbHVkZXMoJ3JpZ2h0JykpIGFsaWduID0gJ3JpZ2h0JztlbHNlIGFsaWduID0gJ2NlbnRlcic7XG4gICAgICB0aGlzLnNldCgnYWxpZ24nLCBhbGlnbik7XG4gICAgfVxuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGdyYXBoQ29udGFpbmVyID0gZ3JhcGguZ2V0KCdjb250YWluZXInKTtcbiAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz0nZzYtbGVnZW5kLWNvbnRhaW5lcicgc3R5bGU9XFxcInBvc2l0aW9uOiBhYnNvbHV0ZTtcXFwiPjwvZGl2PlwiKTtcbiAgICBncmFwaENvbnRhaW5lci5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgIHRoaXMuc2V0KCdjb250YWluZXInLCBjb250YWluZXIpO1xuICAgIHZhciBzaXplID0gdGhpcy5yZW5kZXIoKTtcbiAgICBtb2RpZnlDU1MoY29udGFpbmVyLCB0aGlzLmdldENvbnRhaW5lclBvcyhzaXplKSk7XG4gICAgdGhpcy5iaW5kRXZlbnRzKCk7XG4gIH07XG5cbiAgTGVnZW5kLnByb3RvdHlwZS5nZXRDb250YWluZXJQb3MgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgIGlmIChzaXplID09PSB2b2lkIDApIHtcbiAgICAgIHNpemUgPSBbMCwgMF07XG4gICAgfVxuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBvZmZzZXRYID0gdGhpcy5nZXQoJ29mZnNldFgnKTtcbiAgICB2YXIgb2Zmc2V0WSA9IHRoaXMuZ2V0KCdvZmZzZXRZJyk7XG4gICAgdmFyIG1hcmdpbiA9IHRoaXMuZ2V0KCdtYXJnaW4nKTtcbiAgICB2YXIgcG9zaXRpb25zID0gdGhpcy5nZXQoJ3Bvc2l0aW9uJykuc3BsaXQoJy0nKTtcbiAgICB2YXIgcG9zSWR4TWFwID0ge1xuICAgICAgJ3RvcCc6IDAsXG4gICAgICAncmlnaHQnOiAxLFxuICAgICAgJ2JvdHRvbSc6IDIsXG4gICAgICAnbGVmdCc6IDNcbiAgICB9O1xuICAgIHZhciB4ID0gMCxcbiAgICAgICAgeSA9IDA7XG4gICAgdmFyIGNvbnRhaW5lckNTUyA9IHtcbiAgICAgIGxlZnQ6IChncmFwaC5nZXRXaWR0aCgpIC0gc2l6ZVswXSkgLyAyICsgeCxcbiAgICAgIHRvcDogKGdyYXBoLmdldEhlaWdodCgpIC0gc2l6ZVsxXSkgLyAyICsgeVxuICAgIH07XG4gICAgcG9zaXRpb25zLmZvckVhY2goZnVuY3Rpb24gKHBvcykge1xuICAgICAgdmFyIG1hcmdpblZhbHVlID0gbWFyZ2luW3Bvc0lkeE1hcFtwb3NdXTtcbiAgICAgIHZhciBrZXkgPSBwb3M7XG5cbiAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgbWFyZ2luVmFsdWUgKz0geTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICBtYXJnaW5WYWx1ZSArPSB4O1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgbWFyZ2luVmFsdWUgPSBncmFwaC5nZXRIZWlnaHQoKSAtIHNpemVbMV0gLSBtYXJnaW5WYWx1ZSArIHk7XG4gICAgICAgICAga2V5ID0gJ3RvcCc7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBtYXJnaW5WYWx1ZSA9IGdyYXBoLmdldFdpZHRoKCkgLSBzaXplWzBdIC0gbWFyZ2luVmFsdWUgKyB4O1xuICAgICAgICAgIGtleSA9ICdsZWZ0JztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyQ1NTW2tleV0gPSBtYXJnaW5WYWx1ZTtcbiAgICB9KTtcbiAgICBjb250YWluZXJDU1MudG9wICs9IG9mZnNldFkgKyBncmFwaC5nZXRDb250YWluZXIoKS5vZmZzZXRUb3A7XG4gICAgY29udGFpbmVyQ1NTLmxlZnQgKz0gb2Zmc2V0WCArIGdyYXBoLmdldENvbnRhaW5lcigpLm9mZnNldExlZnQ7XG4gICAgT2JqZWN0LmtleXMoY29udGFpbmVyQ1NTKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGNvbnRhaW5lckNTU1trZXldID0gXCJcIi5jb25jYXQoY29udGFpbmVyQ1NTW2tleV0sIFwicHhcIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbnRhaW5lckNTUztcbiAgfTsgLy8gY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuXG5cbiAgTGVnZW5kLnByb3RvdHlwZS5iaW5kRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZmlsdGVyID0gc2VsZi5nZXQoJ2ZpbHRlcicpO1xuICAgIGlmICghZmlsdGVyIHx8ICFmaWx0ZXIuZW5hYmxlKSByZXR1cm47XG4gICAgdmFyIHRyaWdnZXIgPSBmaWx0ZXIudHJpZ2dlciB8fCAnY2xpY2snO1xuXG4gICAgaWYgKCFBTExPV19FVkVOVFMuaW5jbHVkZXModHJpZ2dlcikpIHtcbiAgICAgIGNvbnNvbGUud2FybignVHJpZ2dlciBmb3IgbGVnZW5kIGZpbHRlcmxpbmcgbXVzdCBiZSBcXCdjbGlja1xcJyBvciBcXCdtb3VzZWVudGVyXFwnLCBcXCdjbGlja1xcJyB3aWxsIHRha2UgZWZmZWN0IGJ5IGRlZmF1bHQuJyk7XG4gICAgICB0cmlnZ2VyID0gJ2NsaWNrJztcbiAgICB9XG5cbiAgICB2YXIgbGMgPSBzZWxmLmdldCgnbGVnZW5kQ2FudmFzJyk7XG5cbiAgICBpZiAodHJpZ2dlciA9PT0gJ21vdXNlZW50ZXInKSB7XG4gICAgICBsYy5vbignbm9kZS1jb250YWluZXI6bW91c2VlbnRlcicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiBzZWxmLmZpbHRlckRhdGEoZSk7XG4gICAgICB9KTtcbiAgICAgIGxjLm9uKCdub2RlLWNvbnRhaW5lcjptb3VzZWxlYXZlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgc2VsZi5jbGVhckZpbHRlcigpO1xuICAgICAgICBzZWxmLmNsZWFyQWN0aXZlTGVnZW5kKCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGMub24oJ25vZGUtY29udGFpbmVyOmNsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgcmV0dXJuIHNlbGYuZmlsdGVyRGF0YShlKTtcbiAgICAgIH0pO1xuICAgICAgbGMub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKGUudGFyZ2V0ICYmIGUudGFyZ2V0LmlzQ2FudmFzICYmIGUudGFyZ2V0LmlzQ2FudmFzKCkpIHtcbiAgICAgICAgICBzZWxmLmNsZWFyRmlsdGVyKCk7XG4gICAgICAgICAgc2VsZi5jbGVhckFjdGl2ZUxlZ2VuZCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrAgbGVnZW5kIOaVsOaNru+8jOW8gOaUvue7meeUqOaIt+aOp+WItlxuICAgKiBAcGFyYW0gcGFyYW1cbiAgICovXG5cblxuICBMZWdlbmQucHJvdG90eXBlLmNoYW5nZURhdGEgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoaXMuc2V0KCdkYXRhJywgZGF0YSk7XG4gICAgdmFyIHNpemUgPSB0aGlzLnJlbmRlcigpO1xuICAgIG1vZGlmeUNTUyh0aGlzLmdldCgnY29udGFpbmVyJyksIHRoaXMuZ2V0Q29udGFpbmVyUG9zKHNpemUpKTtcbiAgfTtcblxuICBMZWdlbmQucHJvdG90eXBlLmFjdGl2YXRlTGVnZW5kID0gZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIGZpbHRlciA9IHRoaXMuZ2V0KCdmaWx0ZXInKTtcbiAgICB2YXIgbXVsdGlwbGUgPSBmaWx0ZXIgPT09IG51bGwgfHwgZmlsdGVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmaWx0ZXIubXVsdGlwbGU7XG4gICAgaWYgKCFtdWx0aXBsZSkgdGhpcy5jbGVhckFjdGl2ZUxlZ2VuZCgpO1xuICAgIHZhciBzaGFwZUdyb3VwID0gc2hhcGUuZ2V0KCdwYXJlbnQnKTsgLy8g6Iul6KKr6auY5Lqu5YWD57Sg5bey57uP5aSE5LqOIGFjdGl2ZSDnirbmgIHvvIzliJnlj5bmtojlroPnmoQgYWN0aXZlIOeKtuaAgVxuICAgIC8vIOW5tuagueaNruebruWJjeaYr+WQpuacieWFtuS7liBhY3RpdmUg54q25oCB55qE5YWD57Sg5Yaz5a6a5piv5ZCm6KaB6K6+572u5Li6IGluYWN0aXZlIOeKtuaAgVxuXG4gICAgaWYgKHNoYXBlR3JvdXAuZ2V0KCdhY3RpdmUnKSkge1xuICAgICAgc2hhcGVHcm91cC5zZXQoJ2FjdGl2ZScsIGZhbHNlKTtcbiAgICAgIGlmICh0aGlzLmZpbmRMZWdlbmRJdGVtc0J5U3RhdGUoJ2FjdGl2ZScpLmxlbmd0aCkgc2hhcGVHcm91cC5zZXQoJ2luYWN0aXZlJywgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNoYXBlR3JvdXAuc2V0KCdpbmFjdGl2ZScsIGZhbHNlKTtcbiAgICAgIHNoYXBlR3JvdXAuc2V0KCdhY3RpdmUnLCB0cnVlKTtcbiAgICB9IC8vIOW9k+ebruWJjeacieWFg+e0oOS4uiBhY3RpdmUg54q25oCB5pe277yM5bCG6Z2eIGFjdGl2ZSDnmoTlhYPntKDorr7nva7kuLogaW5hY3RpdmVcblxuXG4gICAgaWYgKHRoaXMuZmluZExlZ2VuZEl0ZW1zQnlTdGF0ZSgnYWN0aXZlJykubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbmRMZWdlbmRJdGVtc0J5U3RhdGUoJ2FjdGl2ZScsICdhbGwnLCBmYWxzZSkuZm9yRWFjaChmdW5jdGlvbiAoc3ViR3JvdXApIHtcbiAgICAgICAgc3ViR3JvdXAuc2V0KCdpbmFjdGl2ZScsIHRydWUpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJBY3RpdmVMZWdlbmQoKTtcbiAgICB9IC8vIOiuvue9ruagt+W8j1xuXG5cbiAgICB2YXIgc3RhdGVTdHlsZXMgPSAoZmlsdGVyID09PSBudWxsIHx8IGZpbHRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmlsdGVyLmxlbmdlZFN0YXRlU3R5bGVzKSB8fCB7fTtcbiAgICB2YXIgbGVnZW5kSW5hY3RpdmUgPSAoc3RhdGVTdHlsZXMgPT09IG51bGwgfHwgc3RhdGVTdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlU3R5bGVzLmluYWN0aXZlKSB8fCB7XG4gICAgICBvcGFjaXR5OiAwLjUsXG4gICAgICAndGV4dC1zaGFwZSc6IHtcbiAgICAgICAgb3BhY2l0eTogMC41XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgbGVnZW5kVGV4dEluYWN0aXZlID0gbGVnZW5kSW5hY3RpdmVbJ3RleHQtc2hhcGUnXSB8fCB7fTtcbiAgICB0aGlzLmZpbmRMZWdlbmRJdGVtc0J5U3RhdGUoJ2luYWN0aXZlJykuZm9yRWFjaChmdW5jdGlvbiAoc3ViR3JvdXApIHtcbiAgICAgIHZhciBfYSA9IHN1Ykdyb3VwLmdldCgnY2hpbGRyZW4nKSxcbiAgICAgICAgICBrZXlTaGFwZSA9IF9hWzBdLFxuICAgICAgICAgIHRleHQgPSBfYVsxXTtcblxuICAgICAga2V5U2hhcGUuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwga2V5U2hhcGUuZ2V0KCdvcmlBdHRycycpKSwgbGVnZW5kSW5hY3RpdmUpKTtcbiAgICAgIHRleHQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGV4dC5nZXQoJ29yaUF0dHJzJykpLCBsZWdlbmRUZXh0SW5hY3RpdmUpKTtcbiAgICB9KTtcbiAgICB2YXIgbGVnZW5kQWN0aXZlID0gKHN0YXRlU3R5bGVzID09PSBudWxsIHx8IHN0YXRlU3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZVN0eWxlcy5hY3RpdmUpIHx8IHtcbiAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJ1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIGxlZ2VuZFRleHRBY3RpdmUgPSBsZWdlbmRBY3RpdmVbJ3RleHQtc2hhcGUnXSB8fCB7fTtcbiAgICB0aGlzLmZpbmRMZWdlbmRJdGVtc0J5U3RhdGUoJ2FjdGl2ZScpLmZvckVhY2goZnVuY3Rpb24gKHN1Ykdyb3VwKSB7XG4gICAgICB2YXIgX2EgPSBzdWJHcm91cC5nZXQoJ2NoaWxkcmVuJyksXG4gICAgICAgICAga2V5U2hhcGUgPSBfYVswXSxcbiAgICAgICAgICB0ZXh0ID0gX2FbMV07XG5cbiAgICAgIGtleVNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIGtleVNoYXBlLmdldCgnb3JpQXR0cnMnKSksIGxlZ2VuZEFjdGl2ZSkpO1xuICAgICAgdGV4dC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCB0ZXh0LmdldCgnb3JpQXR0cnMnKSksIGxlZ2VuZFRleHRBY3RpdmUpKTtcbiAgICB9KTtcbiAgfTtcblxuICBMZWdlbmQucHJvdG90eXBlLmZpbmRMZWdlbmRJdGVtc0J5U3RhdGUgPSBmdW5jdGlvbiAoc3RhdGVOYW1lLCB0eXBlLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlID09PSB2b2lkIDApIHtcbiAgICAgIHR5cGUgPSAnYWxsJztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IHZvaWQgMCkge1xuICAgICAgdmFsdWUgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdsZWdlbmRDYW52YXMnKS5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ3Jvb3QnO1xuICAgIH0pO1xuICAgIHZhciBub2RlR3JvdXAgPSBncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ25vZGUtZ3JvdXAnO1xuICAgIH0pO1xuICAgIHZhciBlZGdlR3JvdXAgPSBncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ2VkZ2UtZ3JvdXAnO1xuICAgIH0pO1xuICAgIGlmICh0eXBlID09PSAnbm9kZScpIHJldHVybiBub2RlR3JvdXAuZ2V0KCdjaGlsZHJlbicpLmZpbHRlcihmdW5jdGlvbiAoZykge1xuICAgICAgcmV0dXJuICEhZy5nZXQoc3RhdGVOYW1lKSA9PT0gdmFsdWU7XG4gICAgfSk7XG4gICAgaWYgKHR5cGUgPT09ICdlZGdlJykgcmV0dXJuIGVkZ2VHcm91cC5nZXQoJ2NoaWxkcmVuJykuZmlsdGVyKGZ1bmN0aW9uIChnKSB7XG4gICAgICByZXR1cm4gISFnLmdldChzdGF0ZU5hbWUpID09PSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZUdyb3VwLmdldCgnY2hpbGRyZW4nKS5maWx0ZXIoZnVuY3Rpb24gKGcpIHtcbiAgICAgIHJldHVybiAhIWcuZ2V0KHN0YXRlTmFtZSkgPT09IHZhbHVlO1xuICAgIH0pLmNvbmNhdChlZGdlR3JvdXAuZ2V0KCdjaGlsZHJlbicpLmZpbHRlcihmdW5jdGlvbiAoZykge1xuICAgICAgcmV0dXJuICEhZy5nZXQoc3RhdGVOYW1lKSA9PT0gdmFsdWU7XG4gICAgfSkpO1xuICB9O1xuXG4gIExlZ2VuZC5wcm90b3R5cGUuY2xlYXJBY3RpdmVMZWdlbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxnID0gdGhpcy5nZXQoJ2xlZ2VuZENhbnZhcycpO1xuICAgIHZhciBncm91cCA9IGxnLmZpbmQoZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBlLmdldCgnbmFtZScpID09PSAncm9vdCc7XG4gICAgfSk7XG4gICAgdmFyIGdyb3VwcyA9IFtncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ25vZGUtZ3JvdXAnO1xuICAgIH0pLCBncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ2VkZ2UtZ3JvdXAnO1xuICAgIH0pXTtcbiAgICBncm91cHMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbUdyb3VwKSB7XG4gICAgICBpdGVtR3JvdXAuZ2V0KCdjaGlsZHJlbicpLmZvckVhY2goZnVuY3Rpb24gKHN1Ykdyb3VwKSB7XG4gICAgICAgIHN1Ykdyb3VwLnNldCgnYWN0aXZlJywgZmFsc2UpO1xuICAgICAgICBzdWJHcm91cC5zZXQoJ2luYWN0aXZlJywgZmFsc2UpO1xuXG4gICAgICAgIHZhciBfYSA9IHN1Ykdyb3VwLmdldCgnY2hpbGRyZW4nKSxcbiAgICAgICAgICAgIGtleVNoYXBlID0gX2FbMF0sXG4gICAgICAgICAgICB0ZXh0ID0gX2FbMV07XG5cbiAgICAgICAga2V5U2hhcGUuYXR0cihrZXlTaGFwZS5nZXQoJ29yaUF0dHJzJykpO1xuICAgICAgICB0ZXh0LmF0dHIodGV4dC5nZXQoJ29yaUF0dHJzJykpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDpq5jkuq7lkoznva7ngbDlm77kvovvvIzlubbov4fmu6TkuLvlm77lhYPntKBcbiAgICogQHBhcmFtIHBhcmFtXG4gICAqL1xuXG5cbiAgTGVnZW5kLnByb3RvdHlwZS5maWx0ZXJEYXRhID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgZmlsdGVyID0gdGhpcy5nZXQoJ2ZpbHRlcicpO1xuICAgIHZhciBmaWx0ZXJGdW5jdGlvbnMgPSBmaWx0ZXIgPT09IG51bGwgfHwgZmlsdGVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmaWx0ZXIuZmlsdGVyRnVuY3Rpb25zO1xuICAgIGlmICghZmlsdGVyIHx8ICFmaWx0ZXJGdW5jdGlvbnMpIHJldHVybjtcbiAgICB2YXIgbGMgPSB0aGlzLmdldCgnbGVnZW5kQ2FudmFzJyk7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGFjdGl2ZVN0YXRlID0gZmlsdGVyLmdyYXBoQWN0aXZlU3RhdGUgfHwgJ2FjdGl2ZSc7XG4gICAgdmFyIGluYWN0aXZlU3RhdGUgPSBmaWx0ZXIuZ3JhcGhJbmFjdGl2ZVN0YXRlIHx8ICdpbmFjdGl2ZSc7XG4gICAgdmFyIG11bHRpcGxlID0gZmlsdGVyLm11bHRpcGxlO1xuICAgIHRoaXMuY2xlYXJGaWx0ZXIoKTtcbiAgICBpZiAoIW11bHRpcGxlKSB0aGlzLmNsZWFyQWN0aXZlTGVnZW5kKCk7IC8vIOiuvue9riBsZWdlbmQg55qE6auY5Lqu54q25oCBXG5cbiAgICB0aGlzLmFjdGl2YXRlTGVnZW5kKGUudGFyZ2V0KTtcbiAgICB2YXIgZ3JvdXAgPSBsYy5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ3Jvb3QnO1xuICAgIH0pO1xuICAgIHZhciBub2RlR3JvdXAgPSBncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ25vZGUtZ3JvdXAnO1xuICAgIH0pO1xuICAgIHZhciBlZGdlR3JvdXAgPSBncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ2VkZ2UtZ3JvdXAnO1xuICAgIH0pO1xuICAgIHZhciBhY3RpdmVOb2RlTGVnZW5kID0gbm9kZUdyb3VwLmdldCgnY2hpbGRyZW4nKS5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBlLmdldCgnYWN0aXZlJyk7XG4gICAgfSk7XG4gICAgdmFyIGFjdGl2ZUVkZ2VMZWdlbmQgPSBlZGdlR3JvdXAuZ2V0KCdjaGlsZHJlbicpLmZpbHRlcihmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCdhY3RpdmUnKTtcbiAgICB9KTtcbiAgICB2YXIgYWN0aXZlQ291bnQgPSAwO1xuICAgIHZhciB0eXBlRnVuY3MgPSBbJ2dldE5vZGVzJywgJ2dldEVkZ2VzJ107XG4gICAgdHlwZUZ1bmNzLmZvckVhY2goZnVuY3Rpb24gKHR5cGVGdW5jKSB7XG4gICAgICBncmFwaFt0eXBlRnVuY10oKS5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaEl0ZW0pIHtcbiAgICAgICAgdmFyIGFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB2YXIgYWN0aXZlTGVnZW5kID0gdHlwZUZ1bmMgPT09ICdnZXROb2RlcycgPyBhY3RpdmVOb2RlTGVnZW5kIDogYWN0aXZlRWRnZUxlZ2VuZDtcbiAgICAgICAgYWN0aXZlTGVnZW5kLmZvckVhY2goZnVuY3Rpb24gKGl0ZW1Hcm91cCkge1xuICAgICAgICAgIHZhciBmdW5jID0gZmlsdGVyRnVuY3Rpb25zW2l0ZW1Hcm91cC5nZXQoJ2lkJyldO1xuICAgICAgICAgIGFjdGl2ZSA9IGFjdGl2ZSB8fCBmdW5jKGdyYXBoSXRlbS5nZXRNb2RlbCgpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShncmFwaEl0ZW0sIGluYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZ3JhcGhJdGVtLCBhY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgYWN0aXZlQ291bnQrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZ3JhcGhJdGVtLCBhY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShncmFwaEl0ZW0sIGluYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAoIWFjdGl2ZUNvdW50KSB0eXBlRnVuY3MuZm9yRWFjaChmdW5jdGlvbiAodHlwZUZ1bmMpIHtcbiAgICAgIGdyYXBoW3R5cGVGdW5jXSgpLmZvckVhY2goZnVuY3Rpb24gKGdyYXBoSXRlbSkge1xuICAgICAgICBncmFwaC5jbGVhckl0ZW1TdGF0ZXMoZ3JhcGhJdGVtLCBbaW5hY3RpdmVTdGF0ZV0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDmuIXpmaTkuLvlm77nm7jlhbPnirbmgIFcbiAgICogQHBhcmFtIHBhcmFtXG4gICAqL1xuXG5cbiAgTGVnZW5kLnByb3RvdHlwZS5jbGVhckZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyDmuIXpmaQgbGVnZW5kIOeahOmrmOS6rueKtuaAgVxuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBmaWx0ZXIgPSB0aGlzLmdldCgnZmlsdGVyJyk7XG4gICAgaWYgKCFmaWx0ZXIpIHJldHVybjtcbiAgICB2YXIgYWN0aXZlU3RhdGUgPSBmaWx0ZXIuZ3JhcGhBY3RpdmVTdGF0ZSB8fCAnYWN0aXZlJztcbiAgICB2YXIgaW5hY3RpdmVTdGF0ZSA9IGZpbHRlci5ncmFwaEluYWN0aXZlU3RhdGUgfHwgJ2luYWN0aXZlJztcbiAgICBncmFwaC5nZXROb2RlcygpLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIGdyYXBoLmNsZWFySXRlbVN0YXRlcyhub2RlLCBbYWN0aXZlU3RhdGUsIGluYWN0aXZlU3RhdGVdKTtcbiAgICB9KTtcbiAgICBncmFwaC5nZXRFZGdlcygpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGdyYXBoLmNsZWFySXRlbVN0YXRlcyhlZGdlLCBbYWN0aXZlU3RhdGUsIGluYWN0aXZlU3RhdGVdKTtcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOa4suafkyBsZWdlbmQg5Zu+XG4gICAqIEBwYXJhbSBwYXJhbVxuICAgKi9cblxuXG4gIExlZ2VuZC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLnByb2Nlc3NEYXRhKCk7XG4gICAgdmFyIGxjID0gdGhpcy5nZXQoJ2xlZ2VuZENhbnZhcycpO1xuXG4gICAgaWYgKCFsYykge1xuICAgICAgbGMgPSBuZXcgQ2FudmFzKHtcbiAgICAgICAgY29udGFpbmVyOiB0aGlzLmdldCgnY29udGFpbmVyJyksXG4gICAgICAgIHdpZHRoOiAyMDAsXG4gICAgICAgIGhlaWdodDogMjAwXG4gICAgICB9KTtcbiAgICAgIHZhciByb290R3JvdXAgPSBsYy5hZGRHcm91cCh7XG4gICAgICAgIG5hbWU6ICdyb290J1xuICAgICAgfSk7XG4gICAgICByb290R3JvdXAuYWRkR3JvdXAoe1xuICAgICAgICBuYW1lOiAnbm9kZS1ncm91cCdcbiAgICAgIH0pO1xuICAgICAgcm9vdEdyb3VwLmFkZEdyb3VwKHtcbiAgICAgICAgbmFtZTogJ2VkZ2UtZ3JvdXAnXG4gICAgICB9KTsgLy8gbm9kZVN0YXRlU3R5bGVzOiB7XG4gICAgICAvLyAgIGxlZ2VuZEFjdGl2ZSxcbiAgICAgIC8vICAgbGVnZW5kSW5hY3RpdmVcbiAgICAgIC8vIH1cblxuICAgICAgdGhpcy5zZXQoJ2xlZ2VuZENhbnZhcycsIGxjKTtcbiAgICB9XG5cbiAgICB2YXIgZ3JvdXAgPSBsYy5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ3Jvb3QnO1xuICAgIH0pO1xuICAgIHZhciBub2RlR3JvdXAgPSBncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ25vZGUtZ3JvdXAnO1xuICAgIH0pO1xuICAgIHZhciBlZGdlR3JvdXAgPSBncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ2VkZ2UtZ3JvdXAnO1xuICAgIH0pO1xuICAgIHZhciBpdGVtc0RhdGEgPSB0aGlzLmdldCgnaXRlbXNEYXRhJyk7XG4gICAgdmFyIGl0ZW1UeXBlcyA9IFsnbm9kZXMnLCAnZWRnZXMnXTtcbiAgICB2YXIgaXRlbUdyb3VwID0gW25vZGVHcm91cCwgZWRnZUdyb3VwXTtcbiAgICBpdGVtVHlwZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbVR5cGUsIGkpIHtcbiAgICAgIGl0ZW1zRGF0YVtpdGVtVHlwZV0uZm9yRWFjaChmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB2YXIgX2E7XG5cbiAgICAgICAgdmFyIHN1Ykdyb3VwID0gaXRlbUdyb3VwW2ldLmFkZEdyb3VwKHtcbiAgICAgICAgICBpZDogZGF0YS5pZCxcbiAgICAgICAgICBuYW1lOiAnbm9kZS1jb250YWluZXInXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgYXR0cnM7XG4gICAgICAgIHZhciBzaGFwZVR5cGUgPSBkYXRhLnR5cGU7XG5cbiAgICAgICAgdmFyIF9iID0gX3RoaXMuZ2V0U2hhcGVTaXplKGRhdGEpLFxuICAgICAgICAgICAgd2lkdGggPSBfYi53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCA9IF9iLmhlaWdodCxcbiAgICAgICAgICAgIHIgPSBfYi5yO1xuXG4gICAgICAgIHZhciBzdHlsZSA9IF90aGlzLmdldFN0eWxlKGl0ZW1UeXBlLnN1YnN0cigwLCA0KSwgZGF0YSk7XG5cbiAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdjaXJjbGUnOlxuICAgICAgICAgICAgYXR0cnMgPSB7XG4gICAgICAgICAgICAgIHI6IHIsXG4gICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgIHk6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3JlY3QnOlxuICAgICAgICAgICAgYXR0cnMgPSB7XG4gICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgICAgIHk6IC1oZWlnaHQgLyAyXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdlbGxpcHNlJzpcbiAgICAgICAgICAgIGF0dHJzID0ge1xuICAgICAgICAgICAgICByMTogd2lkdGgsXG4gICAgICAgICAgICAgIHIyOiBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgIHk6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2xpbmUnOlxuICAgICAgICAgICAgYXR0cnMgPSB7XG4gICAgICAgICAgICAgIHgxOiAtd2lkdGggLyAyLFxuICAgICAgICAgICAgICB5MTogMCxcbiAgICAgICAgICAgICAgeDI6IHdpZHRoIC8gMixcbiAgICAgICAgICAgICAgeTI6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzaGFwZVR5cGUgPSAnbGluZSc7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3F1YWRyYXRpYyc6XG4gICAgICAgICAgICBhdHRycyA9IHtcbiAgICAgICAgICAgICAgcGF0aDogW1snTScsIC13aWR0aCAvIDIsIDBdLCBbJ1EnLCAwLCB3aWR0aCAvIDIsIHdpZHRoIC8gMiwgMF1dXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2hhcGVUeXBlID0gJ3BhdGgnO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdjdWJpYyc6XG4gICAgICAgICAgICBhdHRycyA9IHtcbiAgICAgICAgICAgICAgcGF0aDogW1snTScsIC13aWR0aCAvIDIsIDBdLCBbJ0MnLCAtd2lkdGggLyA2LCB3aWR0aCAvIDIsIHdpZHRoIC8gNiwgLXdpZHRoIC8gMiwgd2lkdGggLyAyLCAwXV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzaGFwZVR5cGUgPSAncGF0aCc7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBhdHRycyA9IHtcbiAgICAgICAgICAgICAgcjogcixcbiAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGtleVNoYXBlID0gc3ViR3JvdXAuYWRkU2hhcGUoc2hhcGVUeXBlLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHN0eWxlKSxcbiAgICAgICAgICBuYW1lOiBcIlwiLmNvbmNhdChkYXRhLnR5cGUsIFwiLW5vZGUta2V5U2hhcGVcIiksXG4gICAgICAgICAgb3JpQXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDFcbiAgICAgICAgICB9LCBzdHlsZSlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGRhdGEubGFiZWwpIHtcbiAgICAgICAgICB2YXIga2V5U2hhcGVCQm94ID0ga2V5U2hhcGUuZ2V0QkJveCgpO1xuICAgICAgICAgIHZhciBsYWJlbFN0eWxlID0gKChfYSA9IGRhdGEubGFiZWxDZmcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdHlsZSkgfHwge307XG5cbiAgICAgICAgICB2YXIgYXR0cnNfMSA9IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2JlZ2luJyxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgZm9udFdlaWdodDogJ25vcm1hbCdcbiAgICAgICAgICB9LCBsYWJlbFN0eWxlKTtcblxuICAgICAgICAgIHN1Ykdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgICAgeDoga2V5U2hhcGVCQm94Lm1heFggKyA0LFxuICAgICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgICB0ZXh0OiBkYXRhLmxhYmVsXG4gICAgICAgICAgICB9LCBhdHRyc18xKSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2xlZ2VuZC1sYWJlbCcsXG4gICAgICAgICAgICBuYW1lOiBcIlwiLmNvbmNhdChkYXRhLnR5cGUsIFwiLW5vZGUtdGV4dFwiKSxcbiAgICAgICAgICAgIG9yaUF0dHJzOiBhdHRyc18xXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHZhciBwYWRkaW5nID0gdGhpcy5nZXQoJ3BhZGRpbmcnKTtcbiAgICB2YXIgdGl0bGVTaGFwZTtcbiAgICB2YXIgdGl0bGVHcm91cCA9IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBlLmdldCgnbmFtZScpID09PSAndGl0bGUtY29udGFpbmVyJztcbiAgICB9KTtcbiAgICB2YXIgdGl0bGVHcm91cEJCb3ggPSB7XG4gICAgICBoZWlnaHQ6IDAsXG4gICAgICBtYXhZOiAwLFxuICAgICAgd2lkdGg6IDBcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZ2V0KCd0aXRsZScpKSB7XG4gICAgICBpZiAoIXRpdGxlR3JvdXApIHtcbiAgICAgICAgdGl0bGVHcm91cCA9IGdyb3VwLmFkZEdyb3VwKHtcbiAgICAgICAgICBuYW1lOiAndGl0bGUtY29udGFpbmVyJ1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRlZmF1bHRUaXRsZVN0eWxlID0ge1xuICAgICAgICBmb250U2l6ZTogMjAsXG4gICAgICAgIGZvbnRGYW1pbHk6ICdBcmlhbCcsXG4gICAgICAgIGZvbnRXZWlnaHQ6IDMwMCxcbiAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJyxcbiAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgZmlsbDogXCIjMDAwXCIsXG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IHBhZGRpbmdbMF1cbiAgICAgIH07XG4gICAgICB2YXIgdGl0bGVDb25maWcgPSB0aGlzLmdldCgndGl0bGVDb25maWcnKSB8fCB7fTtcbiAgICAgIHZhciBzdHlsZSA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdFRpdGxlU3R5bGUsIHRpdGxlQ29uZmlnLnN0eWxlIHx8IHt9KTtcbiAgICAgIHRpdGxlU2hhcGUgPSB0aXRsZUdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHRleHQ6IHRoaXMuZ2V0KCd0aXRsZScpXG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgICB0aXRsZUdyb3VwQkJveCA9IHRpdGxlR3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgdGl0bGVHcm91cC5zZXRNYXRyaXgoWzEsIDAsIDAsIDAsIDEsIDAsIHRpdGxlQ29uZmlnLm9mZnNldFgsIHRpdGxlQ29uZmlnLm9mZnNldFksIDFdKTtcbiAgICB9XG5cbiAgICB0aGlzLmxheW91dEl0ZW1zKCk7XG4gICAgdmFyIGxjQkJveCA9IGdyb3VwLmdldENhbnZhc0JCb3goKTtcbiAgICB2YXIgbm9kZUdyb3VwQkJveCA9IG5vZGVHcm91cC5nZXRDYW52YXNCQm94KCk7IC8vIOiLpeacieWbvuW9oui2hei/h+i+ueeVjOeahOaDheWGte+8jOW5s+enu+WbnuadpVxuXG4gICAgdmFyIG5vZGVHcm91cEJlZ2luWCA9IG5vZGVHcm91cEJCb3gubWluWCA8IDAgPyBNYXRoLmFicyhub2RlR3JvdXBCQm94Lm1pblgpICsgcGFkZGluZ1szXSA6IHBhZGRpbmdbM107XG4gICAgdmFyIG5vZGVHcm91cEJlZ2luWSA9IHRpdGxlR3JvdXBCQm94Lm1heFkgPCBub2RlR3JvdXBCQm94Lm1pblkgPyBNYXRoLmFicyh0aXRsZUdyb3VwQkJveC5tYXhZIC0gbm9kZUdyb3VwQkJveC5taW5ZKSArIHBhZGRpbmdbMF0gOiB0aXRsZUdyb3VwQkJveC5tYXhZICsgcGFkZGluZ1swXTtcbiAgICB2YXIgbm9kZUdyb3VwTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIG5vZGVHcm91cEJlZ2luWCwgbm9kZUdyb3VwQmVnaW5ZLCAxXTtcbiAgICBub2RlR3JvdXAuc2V0TWF0cml4KG5vZGVHcm91cE1hdHJpeCk7XG4gICAgbGNCQm94ID0gZ3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIHZhciBzaXplID0gW2xjQkJveC5taW5YICsgbGNCQm94LndpZHRoICsgcGFkZGluZ1sxXSwgbGNCQm94Lm1pblkgKyBsY0JCb3guaGVpZ2h0ICsgcGFkZGluZ1syXV07IC8vIOagueaNriBzaXplIOWSjCB0aXRsZUNvbmZpZyDosIPmlbQgdGl0bGUg5L2N572u77yM5YaN6LCD5pW0IG5vZGVHcm91cCDkvY3nva5cblxuICAgIGlmICh0aXRsZVNoYXBlKSB7XG4gICAgICB2YXIgdGl0bGVDb25maWcgPSBfX2Fzc2lnbih7XG4gICAgICAgIHBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgb2Zmc2V0WTogMFxuICAgICAgfSwgdGhpcy5nZXQoJ3RpdGxlQ29uZmlnJykpO1xuXG4gICAgICB0aXRsZUdyb3VwQkJveCA9IHRpdGxlR3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgdmFyIHRpdGxlR3JvdXBNYXRyaXggPSB0aXRsZUdyb3VwLmdldE1hdHJpeCgpIHx8IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcblxuICAgICAgaWYgKHRpdGxlQ29uZmlnLnBvc2l0aW9uID09PSAnY2VudGVyJykge1xuICAgICAgICB0aXRsZUdyb3VwTWF0cml4WzZdID0gc2l6ZVswXSAvIDIgKyB0aXRsZUNvbmZpZy5vZmZzZXRYO1xuICAgICAgfSBlbHNlIGlmICh0aXRsZUNvbmZpZy5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICB0aXRsZUdyb3VwTWF0cml4WzZdID0gc2l6ZVswXSAtIHBhZGRpbmdbM10gKyB0aXRsZUNvbmZpZy5vZmZzZXRYO1xuICAgICAgICB0aXRsZVNoYXBlLmF0dHIoe1xuICAgICAgICAgIHRleHRBbGlnbjogJ3JpZ2h0J1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRpdGxlR3JvdXBNYXRyaXhbNl0gPSBwYWRkaW5nWzNdICsgdGl0bGVDb25maWcub2Zmc2V0WDtcbiAgICAgICAgdGl0bGVTaGFwZS5hdHRyKHtcbiAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0J1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGl0bGVHcm91cC5zZXRNYXRyaXgodGl0bGVHcm91cE1hdHJpeCk7XG4gICAgICB0aXRsZUdyb3VwQkJveCA9IHRpdGxlR3JvdXAuZ2V0Q2FudmFzQkJveCgpOyAvLyDoi6XmnInlm77lvaLotoXov4fovrnnlYznmoTmg4XlhrXvvIzlubPnp7vlm57mnaVcblxuICAgICAgbm9kZUdyb3VwQmVnaW5YID0gbm9kZUdyb3VwQkJveC5taW5YIDwgMCA/IE1hdGguYWJzKG5vZGVHcm91cEJCb3gubWluWCkgKyBwYWRkaW5nWzNdIDogcGFkZGluZ1szXTtcbiAgICAgIG5vZGVHcm91cEJlZ2luWSA9IG5vZGVHcm91cEJCb3gubWluWSA8IHRpdGxlR3JvdXBCQm94Lm1heFkgPyBNYXRoLmFicyh0aXRsZUdyb3VwQkJveC5tYXhZIC0gbm9kZUdyb3VwQkJveC5taW5ZKSArIHBhZGRpbmdbMF0gOiB0aXRsZUdyb3VwQkJveC5tYXhZICsgcGFkZGluZ1swXTtcbiAgICAgIG5vZGVHcm91cE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCBub2RlR3JvdXBCZWdpblgsIG5vZGVHcm91cEJlZ2luWSwgMV07XG4gICAgICBub2RlR3JvdXAuc2V0TWF0cml4KG5vZGVHcm91cE1hdHJpeCk7XG4gICAgICB2YXIgZWRnZUdyb3VwTWF0cml4XzEgPSBbMSwgMCwgMCwgMCwgMSwgMCwgbm9kZUdyb3VwQmVnaW5YLCBub2RlR3JvdXBCZWdpblksIDFdO1xuICAgICAgaWYgKHRoaXMuZ2V0KCdsYXlvdXQnKSA9PT0gJ3ZlcnRpY2FsJykgZWRnZUdyb3VwTWF0cml4XzFbNl0gKz0gbm9kZUdyb3VwQkJveC5tYXhYICsgdGhpcy5nZXQoJ2hvcmlTZXAnKTtlbHNlIGVkZ2VHcm91cE1hdHJpeF8xWzddICs9IG5vZGVHcm91cEJCb3gubWF4WSArIHRoaXMuZ2V0KCd2ZXJ0aVNlcCcpO1xuICAgICAgZWRnZUdyb3VwLnNldE1hdHJpeChlZGdlR3JvdXBNYXRyaXhfMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOayoeaciSB0aXRsZe+8jOS5n+mcgOimgeW5s+enuyBlZGdlR3JvdXBcbiAgICAgIG5vZGVHcm91cEJCb3ggPSBub2RlR3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgdmFyIGVkZ2VHcm91cE1hdHJpeF8yID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgICAgaWYgKHRoaXMuZ2V0KCdsYXlvdXQnKSA9PT0gJ3ZlcnRpY2FsJykgZWRnZUdyb3VwTWF0cml4XzJbNl0gKz0gbm9kZUdyb3VwTWF0cml4WzZdICsgbm9kZUdyb3VwQkJveC5tYXhYICsgdGhpcy5nZXQoJ2hvcmlTZXAnKTtlbHNlIGVkZ2VHcm91cE1hdHJpeF8yWzddICs9IG5vZGVHcm91cE1hdHJpeFs3XSArIG5vZGVHcm91cEJCb3gubWF4WSArIHRoaXMuZ2V0KCd2ZXJ0aVNlcCcpO1xuICAgICAgZWRnZUdyb3VwLnNldE1hdHJpeChlZGdlR3JvdXBNYXRyaXhfMik7XG4gICAgfVxuXG4gICAgbGNCQm94ID0gZ3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIG5vZGVHcm91cEJCb3ggPSBub2RlR3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIG5vZGVHcm91cE1hdHJpeCA9IG5vZGVHcm91cC5nZXRNYXRyaXgoKSB8fCBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgdmFyIGVkZ2VHcm91cE1hdHJpeCA9IGVkZ2VHcm91cC5nZXRNYXRyaXgoKSB8fCBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgdmFyIGVkZ2VHcm91cEJCb3ggPSBlZGdlR3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIHNpemUgPSBbTWF0aC5tYXgobm9kZUdyb3VwQkJveC53aWR0aCArIG5vZGVHcm91cE1hdHJpeFs2XSwgZWRnZUdyb3VwQkJveC53aWR0aCArIGVkZ2VHcm91cE1hdHJpeFs2XSkgKyBwYWRkaW5nWzFdLCBNYXRoLm1heChub2RlR3JvdXBCQm94LmhlaWdodCArIG5vZGVHcm91cE1hdHJpeFs3XSwgZWRnZUdyb3VwQkJveC5oZWlnaHQgKyBlZGdlR3JvdXBNYXRyaXhbN10pICsgcGFkZGluZ1syXV07XG4gICAgbGMuY2hhbmdlU2l6ZShzaXplWzBdLCBzaXplWzFdKTsgLy8g5pu05paw5a655Zmo6IOM5pmv5qC35byPXG5cbiAgICB2YXIgY29udGFpbmVyU3R5bGUgPSB0aGlzLmdldCgnY29udGFpbmVyU3R5bGUnKTtcbiAgICB2YXIgdmlld3BvcnRNYXRyaXggPSBncm91cC5nZXRNYXRyaXgoKSB8fCBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgdmFyIGJlZ2luUG9zID0gVXRpbC5pbnZlcnRNYXRyaXgoe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9LCB2aWV3cG9ydE1hdHJpeCk7XG4gICAgdmFyIGJhY2tSZWN0ID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICB4OiBiZWdpblBvcy54ICsgKGNvbnRhaW5lclN0eWxlLmxpbmVXaWR0aCB8fCAxKSxcbiAgICAgICAgeTogYmVnaW5Qb3MueSArIChjb250YWluZXJTdHlsZS5saW5lV2lkdGggfHwgMSksXG4gICAgICAgIHdpZHRoOiBzaXplWzBdIC0gMiAqIChjb250YWluZXJTdHlsZS5saW5lV2lkdGggfHwgMSksXG4gICAgICAgIGhlaWdodDogc2l6ZVsxXSAtIDIgKiAoY29udGFpbmVyU3R5bGUubGluZVdpZHRoIHx8IDEpLFxuICAgICAgICBmaWxsOiBcIiNmMDBcIixcbiAgICAgICAgc3Ryb2tlOiAnIzAwMCcsXG4gICAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgICAgb3BhY2l0eTogMC41XG4gICAgICB9LCBjb250YWluZXJTdHlsZSksXG4gICAgICBuYW1lOiAnbGVnZW5kLWJhY2stcmVjdCcsXG4gICAgICBjYXB0dXJlOiBmYWxzZVxuICAgIH0pO1xuICAgIGJhY2tSZWN0LnRvQmFjaygpO1xuICAgIHJldHVybiBzaXplO1xuICB9O1xuXG4gIExlZ2VuZC5wcm90b3R5cGUubGF5b3V0SXRlbXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxjID0gdGhpcy5nZXQoJ2xlZ2VuZENhbnZhcycpO1xuICAgIHZhciBob3JpU2VwID0gdGhpcy5nZXQoJ2hvcmlTZXAnKTtcbiAgICB2YXIgdmVydGlTZXAgPSB0aGlzLmdldCgndmVydGlTZXAnKTtcbiAgICB2YXIgbGF5b3V0ID0gdGhpcy5nZXQoJ2xheW91dCcpO1xuICAgIHZhciBhbGlnbiA9IHRoaXMuZ2V0KCdhbGlnbicpO1xuICAgIHZhciBiZWdpbiA9IFswLCAwXTtcbiAgICB2YXIgZ3JvdXAgPSBsYy5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ3Jvb3QnO1xuICAgIH0pO1xuICAgIHZhciBub2RlR3JvdXAgPSBncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ25vZGUtZ3JvdXAnO1xuICAgIH0pO1xuICAgIHZhciBlZGdlR3JvdXAgPSBncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ2VkZ2UtZ3JvdXAnO1xuICAgIH0pO1xuICAgIHZhciBub2RlTGVnZW5kU2l6ZSA9IHtcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogLUluZmluaXR5XG4gICAgfTtcbiAgICB2YXIgcm93TWF4WSA9IC1JbmZpbml0eTtcbiAgICBub2RlR3JvdXAuZ2V0KCdjaGlsZHJlbicpLmZvckVhY2goZnVuY3Rpb24gKGNOb2RlR3JvdXAsIGkpIHtcbiAgICAgIGlmIChpID09PSAwKSBub2RlTGVnZW5kU2l6ZS5taW4gPSBiZWdpblswXTtcbiAgICAgIHZhciBrZXlTaGFwZSA9IGNOb2RlR3JvdXAuZ2V0KCdjaGlsZHJlbicpWzBdO1xuICAgICAgdmFyIGJib3ggPSBjTm9kZUdyb3VwLmdldENhbnZhc0JCb3goKTtcblxuICAgICAgdmFyIF9hID0ga2V5U2hhcGUuZ2V0QkJveCgpLFxuICAgICAgICAgIGtleVNoYXBlV2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgICBrZXlTaGFwZUhlaWdodCA9IF9hLmhlaWdodDtcblxuICAgICAgdmFyIGN1ckhlaWdodCA9IDAsXG4gICAgICAgICAgeCA9IDAsXG4gICAgICAgICAgeSA9IDA7XG5cbiAgICAgIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgeCA9IGJlZ2luWzFdO1xuICAgICAgICB5ID0gYmVnaW5bMF0gKyBrZXlTaGFwZVdpZHRoIC8gMjtcbiAgICAgICAgYmVnaW5bMF0gPSB5ICsgYmJveC5oZWlnaHQgKyB2ZXJ0aVNlcDtcbiAgICAgICAgY3VySGVpZ2h0ID0gYmJveC5tYXhYICsgeCArIGtleVNoYXBlV2lkdGggLyAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeCA9IGJlZ2luWzBdICsga2V5U2hhcGVXaWR0aCAvIDI7XG4gICAgICAgIHkgPSBiZWdpblsxXTtcbiAgICAgICAgYmVnaW5bMF0gPSB4ICsgYmJveC53aWR0aCArIGhvcmlTZXA7XG4gICAgICAgIGN1ckhlaWdodCA9IGJib3gubWF4WSArIHkgKyBrZXlTaGFwZUhlaWdodCAvIDI7XG4gICAgICB9XG5cbiAgICAgIGlmIChiZWdpblswXSA+IG5vZGVMZWdlbmRTaXplLm1heCkgbm9kZUxlZ2VuZFNpemUubWF4ID0gYmVnaW5bMF07XG4gICAgICBpZiAoY3VySGVpZ2h0ID4gcm93TWF4WSkgcm93TWF4WSA9IGN1ckhlaWdodDtcbiAgICAgIGNOb2RlR3JvdXAuc2V0TWF0cml4KFsxLCAwLCAwLCAwLCAxLCAwLCB4LCB5LCAxXSk7XG4gICAgfSk7XG4gICAgdmFyIG53ID0gbm9kZUxlZ2VuZFNpemUubWF4IC0gbm9kZUxlZ2VuZFNpemUubWluO1xuICAgIHZhciBlZGdlTGVnZW5kU2l6ZSA9IHtcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogLUluZmluaXR5XG4gICAgfTtcbiAgICB2YXIgbm9kZUdyb3VwQkJveCA9IG5vZGVHcm91cC5nZXRDYW52YXNCQm94KCk7XG4gICAgYmVnaW5bMF0gPSAwO1xuICAgIGJlZ2luWzFdID0gbGF5b3V0ID09PSAndmVydGljYWwnID8gbm9kZUdyb3VwQkJveC5tYXhYICsgaG9yaVNlcCA6IG5vZGVHcm91cEJCb3gubWF4WSArIHZlcnRpU2VwO1xuICAgIGVkZ2VHcm91cC5nZXQoJ2NoaWxkcmVuJykuZm9yRWFjaChmdW5jdGlvbiAoc3ViR3JvdXAsIGkpIHtcbiAgICAgIGlmIChpID09PSAwKSBlZGdlTGVnZW5kU2l6ZS5taW4gPSBiZWdpblswXTtcbiAgICAgIHZhciBrZXlTaGFwZSA9IHN1Ykdyb3VwLmdldCgnY2hpbGRyZW4nKVswXTtcbiAgICAgIHZhciBiYm94ID0gc3ViR3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuXG4gICAgICB2YXIgX2EgPSBrZXlTaGFwZS5nZXRCQm94KCksXG4gICAgICAgICAga2V5U2hhcGVXaWR0aCA9IF9hLndpZHRoLFxuICAgICAgICAgIGtleVNoYXBlSGVpZ2h0ID0gX2EuaGVpZ2h0O1xuXG4gICAgICB2YXIgeCA9IDAsXG4gICAgICAgICAgeSA9IDA7XG5cbiAgICAgIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgeCA9IGJlZ2luWzFdO1xuICAgICAgICB5ID0gYmVnaW5bMF07XG4gICAgICAgIGJlZ2luWzBdID0geSArIGJib3guaGVpZ2h0ICsgdmVydGlTZXA7XG4gICAgICAgIHN1Ykdyb3VwLnNldE1hdHJpeChbMSwgMCwgMCwgMCwgMSwgMCwgMCwgeSArIGtleVNoYXBlSGVpZ2h0IC8gMiwgMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeCA9IGJlZ2luWzBdO1xuICAgICAgICB5ID0gYmVnaW5bMV07XG4gICAgICAgIGJlZ2luWzBdID0geCArIGJib3gud2lkdGggKyBob3JpU2VwO1xuICAgICAgICBzdWJHcm91cC5zZXRNYXRyaXgoWzEsIDAsIDAsIDAsIDEsIDAsIHggKyBrZXlTaGFwZVdpZHRoIC8gMiwgMCwgMV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoYmVnaW5bMF0gPiBlZGdlTGVnZW5kU2l6ZS5tYXgpIGVkZ2VMZWdlbmRTaXplLm1heCA9IGJlZ2luWzBdO1xuICAgIH0pO1xuICAgIHZhciBldyA9IGVkZ2VMZWdlbmRTaXplLm1heCAtIGVkZ2VMZWdlbmRTaXplLm1pbjtcblxuICAgIGlmIChhbGlnbiAmJiBhbGlnbiAhPT0gJycgJiYgYWxpZ24gIT09ICdsZWZ0Jykge1xuICAgICAgdmFyIHdpZHRoRGlmZiA9IG53IC0gZXc7XG4gICAgICB2YXIgbW92ZW1lbnRfMSA9IGFsaWduID09PSAnY2VudGVyJyA/IE1hdGguYWJzKHdpZHRoRGlmZikgLyAyIDogTWF0aC5hYnMod2lkdGhEaWZmKTtcbiAgICAgIHZhciBzaG91bGRBZGp1c3RHcm91cCA9IHdpZHRoRGlmZiA8IDAgPyBub2RlR3JvdXAgOiBlZGdlR3JvdXA7XG4gICAgICBzaG91bGRBZGp1c3RHcm91cC5nZXQoJ2NoaWxkcmVuJykuZm9yRWFjaChmdW5jdGlvbiAoc3ViR3JvdXApIHtcbiAgICAgICAgdmFyIG1hdHJpeCA9IHN1Ykdyb3VwLmdldE1hdHJpeCgpIHx8IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgICAgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykgbWF0cml4WzddICs9IG1vdmVtZW50XzE7ZWxzZSBtYXRyaXhbNl0gKz0gbW92ZW1lbnRfMTtcbiAgICAgICAgc3ViR3JvdXAuc2V0TWF0cml4KG1hdHJpeCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgTGVnZW5kLnByb3RvdHlwZS5wcm9jZXNzRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuZ2V0KCdkYXRhJyk7XG4gICAgdmFyIGl0ZW1zRGF0YSA9IHtcbiAgICAgIG5vZGVzOiBbXSxcbiAgICAgIGVkZ2VzOiBbXVxuICAgIH07XG5cbiAgICBpZiAoZGF0YS5ub2Rlcykge1xuICAgICAgZGF0YS5ub2Rlcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlcjtcbiAgICAgIH0pO1xuICAgICAgZGF0YS5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG5cbiAgICAgICAgdmFyIHNpemUgPSBub2RlLnNpemUgfHwgWygoX2EgPSBub2RlLnN0eWxlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eud2lkdGgpIHx8ICgoX2IgPSBub2RlLnN0eWxlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucikgfHwgOCwgKChfYyA9IG5vZGUuc3R5bGUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5oZWlnaHQpIHx8ICgoX2QgPSBub2RlLnN0eWxlKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QucikgfHwgOF07XG4gICAgICAgIHZhciBsYWJlbFN0eWxlID0gKChfZSA9IG5vZGUubGFiZWxDZmcpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5zdHlsZSkgfHwge307XG4gICAgICAgIGl0ZW1zRGF0YS5ub2Rlcy5wdXNoKHtcbiAgICAgICAgICBpZDogbm9kZS5pZCB8fCB1bmlxdWVJZCgpLFxuICAgICAgICAgIHR5cGU6IG5vZGUudHlwZSB8fCAnY2lyY2xlJyxcbiAgICAgICAgICBzdHlsZTogX19hc3NpZ24oe30sIG5vZGUuc3R5bGUpLFxuICAgICAgICAgIG9yZGVyOiBub2RlLm9yZGVyLFxuICAgICAgICAgIGxhYmVsOiBub2RlLmxhYmVsLFxuICAgICAgICAgIGl0ZW1UeXBlOiAnbm9kZScsXG4gICAgICAgICAgc2l6ZTogc2l6ZSxcbiAgICAgICAgICBsYWJlbENmZzoge1xuICAgICAgICAgICAgcG9zaXRpb246ICdyaWdodCcsXG4gICAgICAgICAgICBzdHlsZTogX19hc3NpZ24oe1xuICAgICAgICAgICAgICBmb250RmFtaWx5OiBcIkFyaWFsXCJcbiAgICAgICAgICAgIH0sIGxhYmVsU3R5bGUpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChkYXRhLmVkZ2VzKSB7XG4gICAgICBkYXRhLmVkZ2VzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyO1xuICAgICAgfSk7XG4gICAgICBkYXRhLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcblxuICAgICAgICB2YXIgdHlwZSA9IGVkZ2UudHlwZSB8fCAnbGluZSc7XG4gICAgICAgIGlmIChlZGdlLnR5cGUgPT09ICdjdWJpYy1ob3Jpem9udGFsJykgdHlwZSA9ICdjdWJpYyc7XG4gICAgICAgIHZhciBsYWJlbFN0eWxlID0gKChfYSA9IGVkZ2UubGFiZWxDZmcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdHlsZSkgfHwge307XG4gICAgICAgIHZhciBzaXplID0gZWRnZS5zaXplIHx8IFsoKF9iID0gZWRnZS5zdHlsZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLndpZHRoKSB8fCA4LCAxXTtcbiAgICAgICAgaXRlbXNEYXRhLmVkZ2VzLnB1c2goe1xuICAgICAgICAgIGlkOiBlZGdlLmlkIHx8IHVuaXF1ZUlkKCksXG4gICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICBzaXplOiBzaXplLFxuICAgICAgICAgIHN0eWxlOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICBsaW5lV2lkdGg6IGlzQXJyYXkoc2l6ZSkgPyBzaXplWzFdIDogMVxuICAgICAgICAgIH0sIGVkZ2Uuc3R5bGUpLFxuICAgICAgICAgIG9yZGVyOiBlZGdlLm9yZGVyLFxuICAgICAgICAgIGxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgIGl0ZW1UeXBlOiAnZWRnZScsXG4gICAgICAgICAgbGFiZWxDZmc6IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAncmlnaHQnLFxuICAgICAgICAgICAgc3R5bGU6IF9fYXNzaWduKHtcbiAgICAgICAgICAgICAgZm9udEZhbWlseTogXCJBcmlhbFwiXG4gICAgICAgICAgICB9LCBsYWJlbFN0eWxlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNldCgnaXRlbXNEYXRhJywgaXRlbXNEYXRhKTtcbiAgfTtcblxuICBMZWdlbmQucHJvdG90eXBlLmdldENvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICB9O1xuXG4gIExlZ2VuZC5wcm90b3R5cGUuZm9ybWF0QXJyYXkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5nZXQoa2V5KTtcbiAgICBpZiAoaXNOdW1iZXIodmFsdWUpKSB0aGlzLnNldChrZXksIFt2YWx1ZSwgdmFsdWUsIHZhbHVlLCB2YWx1ZV0pO2Vsc2UgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBzd2l0Y2ggKHZhbHVlLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgdGhpcy5zZXQoa2V5LCBbMCwgMCwgMCwgMF0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0aGlzLnNldChrZXksIFt2YWx1ZVswXSwgdmFsdWVbMF0sIHZhbHVlWzBdLCB2YWx1ZVswXV0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICB0aGlzLnNldChrZXksIFt2YWx1ZVswXSwgdmFsdWVbMV0sIHZhbHVlWzBdLCB2YWx1ZVsxXV0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aGlzLnNldChrZXksIFt2YWx1ZVswXSwgdmFsdWVbMV0sIHZhbHVlWzJdLCB2YWx1ZVsxXV0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldChrZXkpO1xuICB9O1xuXG4gIExlZ2VuZC5wcm90b3R5cGUuZ2V0U2hhcGVTaXplID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgd2lkdGgsIGhlaWdodCwgcjtcblxuICAgIGlmIChkYXRhLnNpemUpIHtcbiAgICAgIGlmIChpc0FycmF5KGRhdGEuc2l6ZSkpIHtcbiAgICAgICAgd2lkdGggPSBkYXRhLnNpemVbMF07XG4gICAgICAgIGhlaWdodCA9IGRhdGEuc2l6ZVsxXSB8fCBkYXRhLnNpemVbMF07XG4gICAgICAgIHIgPSBkYXRhLnNpemVbMF0gLyAyO1xuICAgICAgfSBlbHNlIGlmIChpc051bWJlcihkYXRhLnNpemUpKSB7XG4gICAgICAgIHdpZHRoID0gZGF0YS5zaXplO1xuICAgICAgICBoZWlnaHQgPSBkYXRhLnNpemU7XG4gICAgICAgIHIgPSBkYXRhLnNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLnN0eWxlKSB7XG4gICAgICBpZiAoZGF0YS5zdHlsZS53aWR0aCkgd2lkdGggPSBkYXRhLnN0eWxlLndpZHRoO1xuICAgICAgaWYgKGRhdGEuc3R5bGUuaGVpZ2h0KSBoZWlnaHQgPSBkYXRhLnN0eWxlLmhlaWdodDtcbiAgICAgIGlmIChkYXRhLnN0eWxlLnIpIHIgPSBkYXRhLnN0eWxlLnI7XG4gICAgfVxuXG4gICAgaWYgKCFyKSByID0gNTtcbiAgICBpZiAoIXdpZHRoKSB3aWR0aCA9IHI7XG4gICAgaWYgKCFoZWlnaHQpIGhlaWdodCA9IHI7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgcjogclxuICAgIH07XG4gIH07XG5cbiAgTGVnZW5kLnByb3RvdHlwZS5nZXRTdHlsZSA9IGZ1bmN0aW9uICh0eXBlLCBkYXRhKSB7XG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IHR5cGUgPT09ICdub2RlJyA/IHtcbiAgICAgIGZpbGw6ICcjY2NjJyxcbiAgICAgIGxpbmVXaWR0aDogMFxuICAgIH0gOiB7XG4gICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgIGxpbmVXaWR0aDogMVxuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBkZWZhdWx0U3R5bGUpLCBkYXRhLnN0eWxlIHx8IHt9KTtcbiAgfTtcblxuICBMZWdlbmQucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGdyYXBoQ29udGFpbmVyID0gZ3JhcGguZ2V0KCdjb250YWluZXInKTtcbiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICAgIGdyYXBoQ29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lcik7XG4gIH07XG5cbiAgcmV0dXJuIExlZ2VuZDtcbn0oQmFzZSk7XG5cbmV4cG9ydCBkZWZhdWx0IExlZ2VuZDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/legend/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/menu/index.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/menu/index.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! insert-css */ \"./node_modules/insert-css/index.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(insert_css__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\n\n\ntypeof document !== 'undefined' && insert_css__WEBPACK_IMPORTED_MODULE_2___default()(\"\\n .g6-component-contextmenu {\\n border: 1px solid #e2e2e2;\\n border-radius: 4px;\\n font-size: 12px;\\n color: #545454;\\n background-color: rgba(255, 255, 255, 0.9);\\n padding: 10px 8px;\\n box-shadow: rgb(174, 174, 174) 0px 0px 10px;\\n }\\n .g6-contextmenu-ul {\\n padding: 0;\\n margin: 0;\\n list-style: none;\\n }\\n\\n\");\n\nvar Menu =\n/** @class */\nfunction (_super) {\n __extends(Menu, _super);\n\n function Menu(config) {\n return _super.call(this, config) || this;\n }\n\n Menu.prototype.getDefaultCfgs = function () {\n return {\n offsetX: 6,\n offsetY: 6,\n handleMenuClick: undefined,\n // 指定菜单内容,function(e) {...}\n getContent: function getContent(e) {\n return \"\\n
    \\n
  • \\u83DC\\u5355\\u98791
  • \\n
  • \\u83DC\\u5355\\u98792
  • \\n
\\n \";\n },\n shouldBegin: function shouldBegin(e) {\n return true;\n },\n // 菜单隐藏事件\n onHide: function onHide() {\n return true;\n },\n itemTypes: ['node', 'edge', 'combo'],\n trigger: 'contextmenu'\n };\n }; // class-methods-use-this\n\n\n Menu.prototype.getEvents = function () {\n if (this.get('trigger') === 'click') {\n return {\n click: 'onMenuShow'\n };\n }\n\n return {\n contextmenu: 'onMenuShow'\n };\n };\n\n Menu.prototype.init = function () {\n var className = this.get('className');\n var menu = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"
\"));\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(menu, {\n top: '0px',\n position: 'absolute',\n visibility: 'hidden'\n });\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.appendChild(menu);\n this.set('menu', menu);\n };\n\n Menu.prototype.onMenuShow = function (e) {\n var self = this;\n e.preventDefault();\n var itemTypes = this.get('itemTypes');\n\n if (!e.item) {\n if (itemTypes.indexOf('canvas') === -1) {\n self.onMenuHide();\n return;\n }\n } else {\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) {\n self.onMenuHide();\n return;\n }\n }\n\n var shouldBegin = this.get('shouldBegin');\n if (!shouldBegin(e)) return;\n var menuDom = this.get('menu');\n var getContent = this.get('getContent');\n var graph = this.get('graph');\n var menu = getContent(e, graph);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(menu)) {\n menuDom.innerHTML = menu;\n } else {\n menuDom.innerHTML = menu.outerHTML;\n } // 清除之前监听的事件\n\n\n this.removeMenuEventListener();\n var handleMenuClick = this.get('handleMenuClick');\n\n if (handleMenuClick) {\n var handleMenuClickWrapper = function handleMenuClickWrapper(evt) {\n handleMenuClick(evt.target, e.item, graph);\n };\n\n this.set('handleMenuClickWrapper', handleMenuClickWrapper);\n menuDom.addEventListener('click', handleMenuClickWrapper);\n }\n\n var width = graph.get('width');\n var height = graph.get('height');\n var bbox = menuDom.getBoundingClientRect();\n var offsetX = this.get('offsetX') || 0;\n var offsetY = this.get('offsetY') || 0;\n var graphTop = graph.getContainer().offsetTop;\n var graphLeft = graph.getContainer().offsetLeft;\n var x = e.canvasX + graphLeft + offsetX;\n var y = e.canvasY + graphTop + offsetY; // when the menu is (part of) out of the canvas\n\n if (x + bbox.width > width) {\n x = e.canvasX - bbox.width - offsetX + graphLeft;\n }\n\n if (y + bbox.height > height) {\n y = e.canvasY - bbox.height - offsetY + graphTop;\n }\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(menuDom, {\n top: \"\".concat(y, \"px\"),\n left: \"\".concat(x, \"px\"),\n visibility: 'visible'\n }); // 左键单击会触发 body 上监听的 click 事件,导致菜单展示出来后又立即被隐藏了,需要过滤掉\n\n var triggeredByFirstClick = this.get('trigger') === 'click';\n\n var handler = function handler(evt) {\n if (triggeredByFirstClick) {\n triggeredByFirstClick = false;\n return;\n }\n\n self.onMenuHide();\n }; // 如果在页面中其他任意地方进行click, 隐去菜单\n\n\n document.body.addEventListener('click', handler);\n this.set('handler', handler);\n };\n\n Menu.prototype.removeMenuEventListener = function () {\n var handleMenuClickWrapper = this.get('handleMenuClickWrapper');\n var handler = this.get('handler');\n\n if (handleMenuClickWrapper) {\n var menuDom = this.get('menu');\n menuDom.removeEventListener('click', handleMenuClickWrapper);\n this.set('handleMenuClickWrapper', null);\n }\n\n if (handler) {\n document.body.removeEventListener('click', handler);\n }\n };\n\n Menu.prototype.onMenuHide = function () {\n var menuDom = this.get('menu');\n\n if (menuDom) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(menuDom, {\n visibility: 'hidden'\n });\n } // 隐藏菜单后需要移除事件监听\n\n\n this.removeMenuEventListener();\n };\n\n Menu.prototype.destroy = function () {\n var menu = this.get('menu');\n this.removeMenuEventListener();\n\n if (menu) {\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.removeChild(menu);\n }\n };\n\n return Menu;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Menu);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL21lbnUvaW5kZXguanM/NmU4NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRXFEO0FBQ2hCO0FBQ0g7QUFDUjtBQUMzQixtQ0FBbUMsaURBQVMsaUNBQWlDLGdDQUFnQyx5QkFBeUIsc0JBQXNCLHFCQUFxQixpREFBaUQsd0JBQXdCLGtEQUFrRCxLQUFLLHdCQUF3QixpQkFBaUIsZ0JBQWdCLHVCQUF1QixLQUFLOztBQUV0WTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZUFBZSxnRUFBUztBQUN4QixJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLGdFQUFTO0FBQ2Y7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSwyREFBUTtBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyxtRUFBSSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wbHVnaW4vZXMvbWVudS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2V4dGVuZHMgPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9leHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gZXh0ZW5kU3RhdGljcyhkLCBiKSB7XG4gICAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZC5fX3Byb3RvX18gPSBiO1xuICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGZvciAodmFyIHAgaW4gYikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICAgIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgZnVuY3Rpb24gX18oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICB9XG5cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gIH07XG59KCk7XG5cbmltcG9ydCB7IG1vZGlmeUNTUywgY3JlYXRlRG9tIH0gZnJvbSAnQGFudHYvZG9tLXV0aWwnO1xuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBpbnNlcnRDc3MgZnJvbSAnaW5zZXJ0LWNzcyc7XG5pbXBvcnQgQmFzZSBmcm9tICcuLi9iYXNlJztcbnR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaW5zZXJ0Q3NzKFwiXFxuICAuZzYtY29tcG9uZW50LWNvbnRleHRtZW51IHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2UyZTJlMjtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICBmb250LXNpemU6IDEycHg7XFxuICAgIGNvbG9yOiAjNTQ1NDU0O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XFxuICAgIHBhZGRpbmc6IDEwcHggOHB4O1xcbiAgICBib3gtc2hhZG93OiByZ2IoMTc0LCAxNzQsIDE3NCkgMHB4IDBweCAxMHB4O1xcbiAgfVxcbiAgLmc2LWNvbnRleHRtZW51LXVsIHtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBsaXN0LXN0eWxlOiBub25lO1xcbiAgfVxcblxcblwiKTtcblxudmFyIE1lbnUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoTWVudSwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBNZW51KGNvbmZpZykge1xuICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBjb25maWcpIHx8IHRoaXM7XG4gIH1cblxuICBNZW51LnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZncyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2Zmc2V0WDogNixcbiAgICAgIG9mZnNldFk6IDYsXG4gICAgICBoYW5kbGVNZW51Q2xpY2s6IHVuZGVmaW5lZCxcbiAgICAgIC8vIOaMh+WumuiPnOWNleWGheWuue+8jGZ1bmN0aW9uKGUpIHsuLi59XG4gICAgICBnZXRDb250ZW50OiBmdW5jdGlvbiBnZXRDb250ZW50KGUpIHtcbiAgICAgICAgcmV0dXJuIFwiXFxuICAgICAgICAgIDx1bCBjbGFzcz0nZzYtY29udGV4dG1lbnUtdWwnPlxcbiAgICAgICAgICAgIDxsaT5cXHU4M0RDXFx1NTM1NVxcdTk4NzkxPC9saT5cXG4gICAgICAgICAgICA8bGk+XFx1ODNEQ1xcdTUzNTVcXHU5ODc5MjwvbGk+XFxuICAgICAgICAgIDwvdWw+XFxuICAgICAgICBcIjtcbiAgICAgIH0sXG4gICAgICBzaG91bGRCZWdpbjogZnVuY3Rpb24gc2hvdWxkQmVnaW4oZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAvLyDoj5zljZXpmpDol4/kuovku7ZcbiAgICAgIG9uSGlkZTogZnVuY3Rpb24gb25IaWRlKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBpdGVtVHlwZXM6IFsnbm9kZScsICdlZGdlJywgJ2NvbWJvJ10sXG4gICAgICB0cmlnZ2VyOiAnY29udGV4dG1lbnUnXG4gICAgfTtcbiAgfTsgLy8gY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuXG5cbiAgTWVudS5wcm90b3R5cGUuZ2V0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmdldCgndHJpZ2dlcicpID09PSAnY2xpY2snKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjbGljazogJ29uTWVudVNob3cnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZXh0bWVudTogJ29uTWVudVNob3cnXG4gICAgfTtcbiAgfTtcblxuICBNZW51LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjbGFzc05hbWUgPSB0aGlzLmdldCgnY2xhc3NOYW1lJyk7XG4gICAgdmFyIG1lbnUgPSBjcmVhdGVEb20oXCI8ZGl2IGNsYXNzPVwiLmNvbmNhdChjbGFzc05hbWUgfHwgJ2c2LWNvbXBvbmVudC1jb250ZXh0bWVudScsIFwiPjwvZGl2PlwiKSk7XG4gICAgbW9kaWZ5Q1NTKG1lbnUsIHtcbiAgICAgIHRvcDogJzBweCcsXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nXG4gICAgfSk7XG4gICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcblxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICBjb250YWluZXIgPSB0aGlzLmdldCgnZ3JhcGgnKS5nZXQoJ2NvbnRhaW5lcicpO1xuICAgIH1cblxuICAgIGlmIChpc1N0cmluZyhjb250YWluZXIpKSB7XG4gICAgICBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXIpO1xuICAgIH1cblxuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChtZW51KTtcbiAgICB0aGlzLnNldCgnbWVudScsIG1lbnUpO1xuICB9O1xuXG4gIE1lbnUucHJvdG90eXBlLm9uTWVudVNob3cgPSBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdmFyIGl0ZW1UeXBlcyA9IHRoaXMuZ2V0KCdpdGVtVHlwZXMnKTtcblxuICAgIGlmICghZS5pdGVtKSB7XG4gICAgICBpZiAoaXRlbVR5cGVzLmluZGV4T2YoJ2NhbnZhcycpID09PSAtMSkge1xuICAgICAgICBzZWxmLm9uTWVudUhpZGUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZS5pdGVtICYmIGUuaXRlbS5nZXRUeXBlICYmIGl0ZW1UeXBlcy5pbmRleE9mKGUuaXRlbS5nZXRUeXBlKCkpID09PSAtMSkge1xuICAgICAgICBzZWxmLm9uTWVudUhpZGUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzaG91bGRCZWdpbiA9IHRoaXMuZ2V0KCdzaG91bGRCZWdpbicpO1xuICAgIGlmICghc2hvdWxkQmVnaW4oZSkpIHJldHVybjtcbiAgICB2YXIgbWVudURvbSA9IHRoaXMuZ2V0KCdtZW51Jyk7XG4gICAgdmFyIGdldENvbnRlbnQgPSB0aGlzLmdldCgnZ2V0Q29udGVudCcpO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBtZW51ID0gZ2V0Q29udGVudChlLCBncmFwaCk7XG5cbiAgICBpZiAoaXNTdHJpbmcobWVudSkpIHtcbiAgICAgIG1lbnVEb20uaW5uZXJIVE1MID0gbWVudTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVudURvbS5pbm5lckhUTUwgPSBtZW51Lm91dGVySFRNTDtcbiAgICB9IC8vIOa4hemZpOS5i+WJjeebkeWQrOeahOS6i+S7tlxuXG5cbiAgICB0aGlzLnJlbW92ZU1lbnVFdmVudExpc3RlbmVyKCk7XG4gICAgdmFyIGhhbmRsZU1lbnVDbGljayA9IHRoaXMuZ2V0KCdoYW5kbGVNZW51Q2xpY2snKTtcblxuICAgIGlmIChoYW5kbGVNZW51Q2xpY2spIHtcbiAgICAgIHZhciBoYW5kbGVNZW51Q2xpY2tXcmFwcGVyID0gZnVuY3Rpb24gaGFuZGxlTWVudUNsaWNrV3JhcHBlcihldnQpIHtcbiAgICAgICAgaGFuZGxlTWVudUNsaWNrKGV2dC50YXJnZXQsIGUuaXRlbSwgZ3JhcGgpO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5zZXQoJ2hhbmRsZU1lbnVDbGlja1dyYXBwZXInLCBoYW5kbGVNZW51Q2xpY2tXcmFwcGVyKTtcbiAgICAgIG1lbnVEb20uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVNZW51Q2xpY2tXcmFwcGVyKTtcbiAgICB9XG5cbiAgICB2YXIgd2lkdGggPSBncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIGJib3ggPSBtZW51RG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHZhciBvZmZzZXRYID0gdGhpcy5nZXQoJ29mZnNldFgnKSB8fCAwO1xuICAgIHZhciBvZmZzZXRZID0gdGhpcy5nZXQoJ29mZnNldFknKSB8fCAwO1xuICAgIHZhciBncmFwaFRvcCA9IGdyYXBoLmdldENvbnRhaW5lcigpLm9mZnNldFRvcDtcbiAgICB2YXIgZ3JhcGhMZWZ0ID0gZ3JhcGguZ2V0Q29udGFpbmVyKCkub2Zmc2V0TGVmdDtcbiAgICB2YXIgeCA9IGUuY2FudmFzWCArIGdyYXBoTGVmdCArIG9mZnNldFg7XG4gICAgdmFyIHkgPSBlLmNhbnZhc1kgKyBncmFwaFRvcCArIG9mZnNldFk7IC8vIHdoZW4gdGhlIG1lbnUgaXMgKHBhcnQgb2YpIG91dCBvZiB0aGUgY2FudmFzXG5cbiAgICBpZiAoeCArIGJib3gud2lkdGggPiB3aWR0aCkge1xuICAgICAgeCA9IGUuY2FudmFzWCAtIGJib3gud2lkdGggLSBvZmZzZXRYICsgZ3JhcGhMZWZ0O1xuICAgIH1cblxuICAgIGlmICh5ICsgYmJveC5oZWlnaHQgPiBoZWlnaHQpIHtcbiAgICAgIHkgPSBlLmNhbnZhc1kgLSBiYm94LmhlaWdodCAtIG9mZnNldFkgKyBncmFwaFRvcDtcbiAgICB9XG5cbiAgICBtb2RpZnlDU1MobWVudURvbSwge1xuICAgICAgdG9wOiBcIlwiLmNvbmNhdCh5LCBcInB4XCIpLFxuICAgICAgbGVmdDogXCJcIi5jb25jYXQoeCwgXCJweFwiKSxcbiAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJ1xuICAgIH0pOyAvLyDlt6bplK7ljZXlh7vkvJrop6blj5EgYm9keSDkuIrnm5HlkKznmoQgY2xpY2sg5LqL5Lu277yM5a+86Ie06I+c5Y2V5bGV56S65Ye65p2l5ZCO5Y+I56uL5Y2z6KKr6ZqQ6JeP5LqG77yM6ZyA6KaB6L+H5ruk5o6JXG5cbiAgICB2YXIgdHJpZ2dlcmVkQnlGaXJzdENsaWNrID0gdGhpcy5nZXQoJ3RyaWdnZXInKSA9PT0gJ2NsaWNrJztcblxuICAgIHZhciBoYW5kbGVyID0gZnVuY3Rpb24gaGFuZGxlcihldnQpIHtcbiAgICAgIGlmICh0cmlnZ2VyZWRCeUZpcnN0Q2xpY2spIHtcbiAgICAgICAgdHJpZ2dlcmVkQnlGaXJzdENsaWNrID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VsZi5vbk1lbnVIaWRlKCk7XG4gICAgfTsgLy8g5aaC5p6c5Zyo6aG16Z2i5Lit5YW25LuW5Lu75oSP5Zyw5pa56L+b6KGMY2xpY2ssIOmakOWOu+iPnOWNlVxuXG5cbiAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlcik7XG4gICAgdGhpcy5zZXQoJ2hhbmRsZXInLCBoYW5kbGVyKTtcbiAgfTtcblxuICBNZW51LnByb3RvdHlwZS5yZW1vdmVNZW51RXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaGFuZGxlTWVudUNsaWNrV3JhcHBlciA9IHRoaXMuZ2V0KCdoYW5kbGVNZW51Q2xpY2tXcmFwcGVyJyk7XG4gICAgdmFyIGhhbmRsZXIgPSB0aGlzLmdldCgnaGFuZGxlcicpO1xuXG4gICAgaWYgKGhhbmRsZU1lbnVDbGlja1dyYXBwZXIpIHtcbiAgICAgIHZhciBtZW51RG9tID0gdGhpcy5nZXQoJ21lbnUnKTtcbiAgICAgIG1lbnVEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVNZW51Q2xpY2tXcmFwcGVyKTtcbiAgICAgIHRoaXMuc2V0KCdoYW5kbGVNZW51Q2xpY2tXcmFwcGVyJywgbnVsbCk7XG4gICAgfVxuXG4gICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVyKTtcbiAgICB9XG4gIH07XG5cbiAgTWVudS5wcm90b3R5cGUub25NZW51SGlkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWVudURvbSA9IHRoaXMuZ2V0KCdtZW51Jyk7XG5cbiAgICBpZiAobWVudURvbSkge1xuICAgICAgbW9kaWZ5Q1NTKG1lbnVEb20sIHtcbiAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbiAgICAgIH0pO1xuICAgIH0gLy8g6ZqQ6JeP6I+c5Y2V5ZCO6ZyA6KaB56e76Zmk5LqL5Lu255uR5ZCsXG5cblxuICAgIHRoaXMucmVtb3ZlTWVudUV2ZW50TGlzdGVuZXIoKTtcbiAgfTtcblxuICBNZW51LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBtZW51ID0gdGhpcy5nZXQoJ21lbnUnKTtcbiAgICB0aGlzLnJlbW92ZU1lbnVFdmVudExpc3RlbmVyKCk7XG5cbiAgICBpZiAobWVudSkge1xuICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcblxuICAgICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgICAgY29udGFpbmVyID0gdGhpcy5nZXQoJ2dyYXBoJykuZ2V0KCdjb250YWluZXInKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5lcikpIHtcbiAgICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKTtcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKG1lbnUpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gTWVudTtcbn0oQmFzZSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1lbnU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/menu/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/minimap/index.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/minimap/index.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-canvas */ \"./node_modules/@antv/g-canvas/esm/index.js\");\n/* harmony import */ var _antv_g_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-svg */ \"./node_modules/@antv/g-svg/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\n\n\nvar max = Math.max;\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_4__[\"ext\"].transform;\nvar DEFAULT_MODE = 'default';\nvar KEYSHAPE_MODE = 'keyShape';\nvar DELEGATE_MODE = 'delegate';\nvar SVG = 'svg';\n\nvar MiniMap =\n/** @class */\nfunction (_super) {\n __extends(MiniMap, _super);\n\n function MiniMap(config) {\n var _this = _super.call(this, config) || this;\n /**\n * 主图更新的监听函数,使用 debounce 减少渲染频率\n * e.g. 拖拽节点只会在松手后的 100ms 后执行 updateCanvas\n * e.g. render 时大量 addItem 也只会执行一次 updateCanvas\n */\n\n\n _this.handleUpdateCanvas = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"debounce\"])(function (event) {\n var self = _this;\n if (self.destroyed) return;\n self.updateCanvas();\n }, 100, false);\n return _this;\n }\n\n MiniMap.prototype.getDefaultCfgs = function () {\n return {\n container: null,\n className: 'g6-minimap',\n viewportClassName: 'g6-minimap-viewport',\n // Minimap 中默认展示和主图一样的内容,KeyShape 只展示节点和边的 key shape 部分,delegate表示展示自定义的rect,用户可自定义样式\n type: 'default',\n padding: 50,\n size: [200, 120],\n delegateStyle: {\n fill: '#40a9ff',\n stroke: '#096dd9'\n },\n refresh: true\n };\n };\n\n MiniMap.prototype.getEvents = function () {\n return {\n beforepaint: 'updateViewport',\n beforeanimate: 'disableRefresh',\n afteranimate: 'enableRefresh',\n viewportchange: 'disableOneRefresh'\n };\n }; // 若是正在进行动画,不刷新缩略图\n\n\n MiniMap.prototype.disableRefresh = function () {\n this.set('refresh', false);\n };\n\n MiniMap.prototype.enableRefresh = function () {\n this.set('refresh', true);\n this.updateCanvas();\n };\n\n MiniMap.prototype.disableOneRefresh = function () {\n this.set('viewportChange', true);\n };\n\n MiniMap.prototype.initViewport = function () {\n var _this = this;\n\n var cfgs = this._cfgs;\n var size = cfgs.size,\n graph = cfgs.graph;\n if (this.destroyed) return;\n var canvas = this.get('canvas');\n var containerDOM = canvas.get('container');\n var viewport = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_3__[\"createDom\"])(\"\\n \\n \"));\n var isFireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; // 计算拖拽水平方向距离\n\n var x = 0; // 计算拖拽垂直方向距离\n\n var y = 0; // 是否在拖拽minimap的视口\n\n var dragging = false; // 缓存viewport当前对于画布的x\n\n var left = 0; // 缓存viewport当前对于画布的y\n\n var top = 0; // 缓存viewport当前宽度\n\n var width = 0; // 缓存viewport当前高度\n\n var height = 0;\n var ratio = 0;\n var zoom = 0;\n viewport.addEventListener('dragstart', function (e) {\n var _a, _b;\n\n if (e.dataTransfer) {\n var img = new Image();\n img.src = \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' %3E%3Cpath /%3E%3C/svg%3E\";\n (_b = (_a = e.dataTransfer).setDragImage) === null || _b === void 0 ? void 0 : _b.call(_a, img, 0, 0);\n\n try {\n e.dataTransfer.setData('text/html', 'view-port-minimap');\n } catch (_c) {\n // support IE\n e.dataTransfer.setData('text', 'view-port-minimap');\n }\n }\n\n cfgs.refresh = false;\n\n if (e.target !== viewport) {\n return;\n } // 如果视口已经最大了,不需要拖拽\n\n\n var style = viewport.style;\n left = parseInt(style.left, 10);\n top = parseInt(style.top, 10);\n width = parseInt(style.width, 10);\n height = parseInt(style.height, 10);\n\n if (width > size[0] || height > size[1]) {\n return;\n }\n\n zoom = graph.getZoom();\n ratio = _this.get('ratio');\n dragging = true;\n x = e.clientX;\n y = e.clientY;\n }, false);\n viewport.addEventListener(isFireFox ? 'dragover' : 'drag', function (e) {\n if (!dragging || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(e.clientX) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(e.clientY)) {\n return;\n }\n\n var dx = x - e.clientX;\n var dy = y - e.clientY; // 若视口移动到最左边或最右边了,仅移动到边界\n\n if (left - dx < 0 || left - dx + width >= size[0]) {\n dx = 0;\n } // 若视口移动到最上或最下边了,仅移动到边界\n\n\n if (top - dy < 0 || top - dy + height >= size[1]) {\n dy = 0;\n }\n\n left -= dx;\n top -= dy; // 先移动视口,避免移动到边上以后出现视口闪烁\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_3__[\"modifyCSS\"])(viewport, {\n left: \"\".concat(left, \"px\"),\n top: \"\".concat(top, \"px\")\n }); // graph 移动需要偏移量 dx/dy * 缩放比例才会得到正确的移动距离\n\n graph.translate(dx * zoom / ratio, dy * zoom / ratio);\n x = e.clientX;\n y = e.clientY;\n }, false);\n viewport.addEventListener('dragend', function () {\n dragging = false;\n cfgs.refresh = true;\n }, false);\n this.set('viewport', viewport);\n containerDOM.appendChild(viewport);\n };\n /**\n * 更新 viewport 视图\n */\n\n\n MiniMap.prototype.updateViewport = function () {\n if (this.destroyed) return;\n var ratio = this.get('ratio');\n var dx = this.get('dx');\n var dy = this.get('dy');\n var totaldx = this.get('totaldx');\n var totaldy = this.get('totaldy');\n var graph = this.get('graph');\n var size = this.get('size');\n var graphWidth = graph.get('width');\n var graphHeight = graph.get('height');\n var topLeft = graph.getPointByCanvas(0, 0);\n var bottomRight = graph.getPointByCanvas(graphWidth, graphHeight);\n var viewport = this.get('viewport');\n\n if (!viewport) {\n this.initViewport();\n } // viewport宽高,左上角点的计算\n\n\n var width = (bottomRight.x - topLeft.x) * ratio;\n var height = (bottomRight.y - topLeft.y) * ratio;\n var left = topLeft.x * ratio + totaldx;\n var top = topLeft.y * ratio + totaldy;\n var right = left + width;\n var bottom = top + height;\n\n if (left < 0) {\n width += left;\n left = 0;\n }\n\n if (right > size[0]) {\n width = width - (right - size[0]);\n }\n\n if (top < 0) {\n height += top;\n top = 0;\n }\n\n if (bottom > size[1]) {\n height = height - (bottom - size[1]);\n } // 缓存目前缩放比,在移动 minimap 视窗时就不用再计算大图的移动量\n\n\n this.set('ratio', ratio);\n var correctLeft = \"\".concat(left, \"px\");\n var correctTop = \"\".concat(top, \"px\");\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_3__[\"modifyCSS\"])(viewport, {\n left: correctLeft,\n top: correctTop,\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\")\n });\n };\n /**\n * 将主图上的图形完全复制到小图\n */\n\n\n MiniMap.prototype.updateGraphShapes = function () {\n var graph = this._cfgs.graph;\n var canvas = this.get('canvas');\n var graphGroup = graph.get('group');\n if (graphGroup.destroyed) return;\n var clonedGroup = graphGroup.clone();\n clonedGroup.resetMatrix();\n canvas.clear();\n canvas.add(clonedGroup); // 当 renderer 是 svg,由于渲染引擎的 bug,这里需要将 visible 为 false 的元素手动隐藏\n\n var renderer = graph.get('renderer');\n\n if (renderer === SVG) {\n // 递归更新子元素\n this.updateVisible(clonedGroup);\n }\n }; // svg 在 canvas.add(clonedGroup) 之后会出现 visible 为 false 的元素被展示出来,需要递归更新\n\n\n MiniMap.prototype.updateVisible = function (ele) {\n var _this = this;\n\n if (!ele.isGroup() && !ele.get('visible')) {\n ele.hide();\n } else {\n var children = ele.get('children');\n if (!children || !children.length) return;\n children.forEach(function (child) {\n if (!child.get('visible')) child.hide();\n\n _this.updateVisible(child);\n });\n }\n }; // 仅在 minimap 上绘制 keyShape\n // FIXME 如果用户自定义绘制了其他内容,minimap上就无法画出\n\n\n MiniMap.prototype.updateKeyShapes = function () {\n var _this = this;\n\n var graph = this._cfgs.graph;\n var canvas = this.get('canvas');\n var group = canvas.get('children')[0] || canvas.addGroup();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(graph.getEdges(), function (edge) {\n _this.updateOneEdgeKeyShape(edge, group);\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(graph.getNodes(), function (node) {\n _this.updateOneNodeKeyShape(node, group);\n });\n var combos = graph.getCombos();\n\n if (combos && combos.length) {\n var comboGroup_1 = group.find(function (e) {\n return e.get('name') === 'comboGroup';\n }) || group.addGroup({\n name: 'comboGroup'\n });\n setTimeout(function () {\n if (_this.destroyed) return;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(combos, function (combo) {\n _this.updateOneComboKeyShape(combo, comboGroup_1);\n });\n comboGroup_1 === null || comboGroup_1 === void 0 ? void 0 : comboGroup_1.sort();\n comboGroup_1 === null || comboGroup_1 === void 0 ? void 0 : comboGroup_1.toBack();\n\n _this.updateCanvas();\n }, 250);\n }\n\n this.clearDestroyedShapes();\n };\n /**\n * 增加/更新单个元素的 keyShape\n * @param item ICombo 实例\n */\n\n\n MiniMap.prototype.updateOneComboKeyShape = function (item, comboGroup) {\n if (this.destroyed) return;\n var itemMap = this.get('itemMap') || {}; // 差量更新 minimap 上的一个节点,对应主图的 item\n\n var mappedItem = itemMap[item.get('id')];\n var bbox = item.getBBox(); // 计算了节点父组矩阵的 bbox\n\n var cKeyShape = item.get('keyShape').clone();\n var keyShapeStyle = cKeyShape.attr();\n var attrs = {\n x: bbox.centerX,\n y: bbox.centerY\n };\n\n if (!mappedItem) {\n mappedItem = cKeyShape;\n comboGroup.add(mappedItem);\n } else {\n attrs = Object.assign(keyShapeStyle, attrs);\n }\n\n var shapeType = mappedItem.get('type');\n\n if (shapeType === 'rect' || shapeType === 'image') {\n attrs.x = bbox.minX;\n attrs.y = bbox.minY;\n }\n\n mappedItem.attr(attrs);\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n var zIndex = item.getModel().depth;\n if (!isNaN(zIndex)) mappedItem.set('zIndex', zIndex);\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n /**\n * 增加/更新单个元素的 keyShape\n * @param item INode 实例\n */\n\n\n MiniMap.prototype.updateOneNodeKeyShape = function (item, group) {\n var itemMap = this.get('itemMap') || {}; // 差量更新 minimap 上的一个节点,对应主图的 item\n\n var mappedItem = itemMap[item.get('id')];\n var bbox = item.getBBox(); // 计算了节点父组矩阵的 bbox\n\n var cKeyShape = item.get('keyShape').clone();\n var keyShapeStyle = cKeyShape.attr();\n var attrs = {\n x: bbox.centerX,\n y: bbox.centerY\n };\n\n if (!mappedItem) {\n mappedItem = cKeyShape;\n group.add(mappedItem);\n } else {\n attrs = Object.assign(keyShapeStyle, attrs);\n }\n\n var shapeType = mappedItem.get('type');\n\n if (shapeType === 'rect' || shapeType === 'image') {\n attrs.x = bbox.minX;\n attrs.y = bbox.minY;\n }\n\n mappedItem.attr(attrs);\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n var zIndex = item.getModel().depth;\n if (!isNaN(zIndex)) mappedItem.set('zIndex', zIndex);\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n /**\n * Minimap 中展示自定义的rect,支持用户自定义样式和节点大小\n */\n\n\n MiniMap.prototype.updateDelegateShapes = function () {\n var _this = this;\n\n var graph = this._cfgs.graph;\n var canvas = this.get('canvas');\n var group = canvas.get('children')[0] || canvas.addGroup(); // 差量更新 minimap 上的节点和边\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(graph.getEdges(), function (edge) {\n _this.updateOneEdgeKeyShape(edge, group);\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(graph.getNodes(), function (node) {\n _this.updateOneNodeDelegateShape(node, group);\n });\n var combos = graph.getCombos();\n\n if (combos && combos.length) {\n var comboGroup_2 = group.find(function (e) {\n return e.get('name') === 'comboGroup';\n }) || group.addGroup({\n name: 'comboGroup'\n });\n setTimeout(function () {\n if (_this.destroyed) return;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(combos, function (combo) {\n _this.updateOneComboKeyShape(combo, comboGroup_2);\n });\n comboGroup_2 === null || comboGroup_2 === void 0 ? void 0 : comboGroup_2.sort();\n comboGroup_2 === null || comboGroup_2 === void 0 ? void 0 : comboGroup_2.toBack();\n\n _this.updateCanvas();\n }, 250);\n }\n\n this.clearDestroyedShapes();\n };\n\n MiniMap.prototype.clearDestroyedShapes = function () {\n var itemMap = this.get('itemMap') || {};\n var keys = Object.keys(itemMap);\n if (!keys || keys.length === 0) return;\n\n for (var i = keys.length - 1; i >= 0; i--) {\n var shape = itemMap[keys[i]];\n var exist = shape.exist;\n shape.exist = false;\n\n if (!exist) {\n shape.remove();\n delete itemMap[keys[i]];\n }\n }\n };\n /**\n * 设置只显示 edge 的 keyShape\n * @param item IEdge 实例\n */\n\n\n MiniMap.prototype.updateOneEdgeKeyShape = function (item, group) {\n var itemMap = this.get('itemMap') || {}; // 差量更新 minimap 上的一个节点,对应主图的 item\n\n var mappedItem = itemMap[item.get('id')];\n\n if (mappedItem) {\n var path = item.get('keyShape').attr('path');\n mappedItem.attr('path', path);\n } else {\n mappedItem = item.get('keyShape').clone();\n group.add(mappedItem);\n }\n\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n /**\n * Minimap 中展示自定义的 rect,支持用户自定义样式和节点大小\n * 增加/更新单个元素\n * @param item INode 实例\n */\n\n\n MiniMap.prototype.updateOneNodeDelegateShape = function (item, group) {\n var delegateStyle = this.get('delegateStyle');\n var itemMap = this.get('itemMap') || {}; // 差量更新 minimap 上的一个节点,对应主图的 item\n\n var mappedItem = itemMap[item.get('id')];\n var bbox = item.getBBox(); // 计算了节点父组矩阵的 bbox\n\n if (mappedItem) {\n var attrs = {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.width,\n height: bbox.height\n };\n mappedItem.attr(attrs);\n } else {\n mappedItem = group.addShape('rect', {\n attrs: __assign({\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.width,\n height: bbox.height\n }, delegateStyle),\n name: 'minimap-node-shape'\n });\n }\n\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n\n MiniMap.prototype.init = function () {\n this.initContainer();\n this.get('graph').on('afterupdateitem', this.handleUpdateCanvas);\n this.get('graph').on('afteritemstatechange', this.handleUpdateCanvas);\n this.get('graph').on('afteradditem', this.handleUpdateCanvas);\n this.get('graph').on('afterremoveitem', this.handleUpdateCanvas);\n this.get('graph').on('afterrender', this.handleUpdateCanvas);\n this.get('graph').on('afterlayout', this.handleUpdateCanvas);\n };\n /**\n * 初始化 Minimap 的容器\n */\n\n\n MiniMap.prototype.initContainer = function () {\n var self = this;\n var graph = self.get('graph');\n var size = self.get('size');\n var className = self.get('className');\n var parentNode = self.get('container');\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_3__[\"createDom\"])(\"
\"));\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(parentNode)) {\n parentNode = document.getElementById(parentNode);\n }\n\n if (parentNode) {\n parentNode.appendChild(container);\n } else {\n graph.get('container').appendChild(container);\n }\n\n self.set('container', container);\n var containerDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_3__[\"createDom\"])('
');\n container.appendChild(containerDOM);\n containerDOM.addEventListener('dragenter', function (e) {\n e.preventDefault();\n });\n containerDOM.addEventListener('dragover', function (e) {\n e.preventDefault();\n });\n var canvas;\n var renderer = graph.get('renderer');\n\n if (renderer === SVG) {\n canvas = new _antv_g_svg__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"]({\n container: containerDOM,\n width: size[0],\n height: size[1]\n });\n } else {\n canvas = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_0__[\"Canvas\"]({\n container: containerDOM,\n width: size[0],\n height: size[1]\n });\n }\n\n self.set('canvas', canvas);\n self.updateCanvas();\n };\n\n MiniMap.prototype.updateCanvas = function () {\n if (this.destroyed) return; // 如果是在动画,则不刷新视图\n\n var isRefresh = this.get('refresh');\n\n if (!isRefresh) {\n return;\n }\n\n var graph = this.get('graph');\n\n if (graph.get('destroyed')) {\n return;\n } // 如果是视口变换,也不刷新视图,但是需要重置视口大小和位置\n\n\n if (this.get('viewportChange')) {\n this.set('viewportChange', false);\n this.updateViewport();\n }\n\n var size = this.get('size'); // 用户定义的 minimap size\n\n var canvas = this.get('canvas'); // minimap 的 canvas\n\n var type = this.get('type'); // minimap 的类型\n\n var padding = this.get('padding'); // 用户额定义的 minimap 的 padding\n\n if (canvas.destroyed) {\n return;\n }\n\n switch (type) {\n case DEFAULT_MODE:\n this.updateGraphShapes();\n break;\n\n case KEYSHAPE_MODE:\n this.updateKeyShapes();\n break;\n\n case DELEGATE_MODE:\n // 得到的节点直接带有 x 和 y,每个节点不存在父 group,即每个节点位置不由父 group 控制\n this.updateDelegateShapes();\n break;\n\n default:\n break;\n }\n\n var group = canvas.get('children')[0];\n if (!group) return;\n group.resetMatrix(); // 该 bbox 是准确的,不计算 matrix 的包围盒\n\n var bbox = group.getCanvasBBox();\n var graphBBox = graph.get('canvas').getCanvasBBox(); // 主图的 bbox\n\n var graphZoom = graph.getZoom() || 1;\n var width = graphBBox.width / graphZoom;\n var height = graphBBox.height / graphZoom;\n\n if (Number.isFinite(bbox.width)) {\n // 刷新后bbox可能会变,需要重置画布矩阵以缩放到合适的大小\n width = max(bbox.width, width);\n height = max(bbox.height, height);\n }\n\n width += 2 * padding;\n height += 2 * padding;\n var ratio = Math.min(size[0] / width, size[1] / height);\n var matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var minX = 0;\n var minY = 0; // 平移到左上角\n\n if (Number.isFinite(bbox.minX)) {\n minX = -bbox.minX;\n }\n\n if (Number.isFinite(bbox.minY)) {\n minY = -bbox.minY;\n } // 缩放到适合视口后, 平移到画布中心\n\n\n var dx = (size[0] - (width - 2 * padding) * ratio) / 2;\n var dy = (size[1] - (height - 2 * padding) * ratio) / 2;\n matrix = transform(matrix, [['t', minX, minY], ['s', ratio, ratio], ['t', dx, dy] // 移动到画布中心\n ]);\n group.setMatrix(matrix); // 更新minimap视口\n\n this.set('ratio', ratio);\n this.set('totaldx', dx + minX * ratio);\n this.set('totaldy', dy + minY * ratio);\n this.set('dx', dx);\n this.set('dy', dy);\n this.updateViewport();\n };\n /**\n * 获取minimap的画布\n * @return {GCanvas} G的canvas实例\n */\n\n\n MiniMap.prototype.getCanvas = function () {\n return this.get('canvas');\n };\n /**\n * 获取minimap的窗口\n * @return {HTMLElement} 窗口的dom实例\n */\n\n\n MiniMap.prototype.getViewport = function () {\n return this.get('viewport');\n };\n /**\n * 获取minimap的容器dom\n * @return {HTMLElement} dom\n */\n\n\n MiniMap.prototype.getContainer = function () {\n return this.get('container');\n };\n\n MiniMap.prototype.destroy = function () {\n this.get('canvas').destroy();\n var container = this.get('container');\n container.parentNode.removeChild(container);\n };\n\n return MiniMap;\n}(_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MiniMap);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL21pbmltYXAvaW5kZXguanM/MDcyYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxlQUFlLFNBQUksSUFBSSxTQUFJO0FBQzNCO0FBQ0EsNENBQTRDLE9BQU87QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVtRDtBQUNBO0FBQ1U7QUFDUDtBQUNkO0FBQ2I7QUFDM0I7QUFDQSxnQkFBZ0IscURBQUc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBLCtCQUErQiwyREFBUTtBQUN2QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnRUFBUyxtR0FBbUcsbUJBQW1CLGtCQUFrQixrQ0FBa0M7QUFDdE0sOEVBQThFOztBQUU5RSxjQUFjOztBQUVkLGNBQWM7O0FBRWQseUJBQXlCOztBQUV6QixpQkFBaUI7O0FBRWpCLGdCQUFnQjs7QUFFaEIsa0JBQWtCOztBQUVsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1QkFBdUIsd0RBQUssZUFBZSx3REFBSztBQUNoRDtBQUNBOztBQUVBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCOztBQUVoQixNQUFNLGdFQUFTO0FBQ2Y7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBLElBQUk7QUFDSjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0wsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQSw4QkFBOEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLCtEQUErRDs7QUFFL0QsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUNBQWlDLFFBQVE7QUFDekM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDRDQUE0Qzs7QUFFNUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGdFQUFTLDBFQUEwRSxnQ0FBZ0M7O0FBRXZJLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsZ0VBQVMsOERBQThEO0FBQzlGO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsa0RBQVU7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxtQkFBbUIscURBQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQjs7QUFFL0I7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0M7O0FBRWhDLG9DQUFvQzs7QUFFcEMsZ0NBQWdDOztBQUVoQyxzQ0FBc0M7O0FBRXRDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0Esd0RBQXdEOztBQUV4RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFlBQVk7QUFDMUI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFlBQVk7QUFDMUI7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLHNFQUFPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBsdWdpbi9lcy9taW5pbWFwL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZXh0ZW5kcyA9IHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMgfHwgZnVuY3Rpb24gKCkge1xuICB2YXIgX2V4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiBleHRlbmRTdGF0aWNzKGQsIGIpIHtcbiAgICBfZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7XG4gICAgICBfX3Byb3RvX186IFtdXG4gICAgfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBkLl9fcHJvdG9fXyA9IGI7XG4gICAgfSB8fCBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZm9yICh2YXIgcCBpbiBiKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gX2V4dGVuZFN0YXRpY3MoZCwgYik7XG4gIH07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuXG4gICAgX2V4dGVuZFN0YXRpY3MoZCwgYik7XG5cbiAgICBmdW5jdGlvbiBfXygpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBkO1xuICAgIH1cblxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgfTtcbn0oKTtcblxudmFyIF9fYXNzaWduID0gdGhpcyAmJiB0aGlzLl9fYXNzaWduIHx8IGZ1bmN0aW9uICgpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0KSB7XG4gICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBzID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuXG5pbXBvcnQgeyBDYW52YXMgYXMgR0NhbnZhcyB9IGZyb20gJ0BhbnR2L2ctY2FudmFzJztcbmltcG9ydCB7IENhbnZhcyBhcyBHU1ZHQ2FudmFzIH0gZnJvbSAnQGFudHYvZy1zdmcnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzTmlsLCBlYWNoLCBkZWJvdW5jZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlRG9tLCBtb2RpZnlDU1MgfSBmcm9tICdAYW50di9kb20tdXRpbCc7XG5pbXBvcnQgeyBleHQgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgQmFzZSBmcm9tICcuLi9iYXNlJztcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xudmFyIERFRkFVTFRfTU9ERSA9ICdkZWZhdWx0JztcbnZhciBLRVlTSEFQRV9NT0RFID0gJ2tleVNoYXBlJztcbnZhciBERUxFR0FURV9NT0RFID0gJ2RlbGVnYXRlJztcbnZhciBTVkcgPSAnc3ZnJztcblxudmFyIE1pbmlNYXAgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoTWluaU1hcCwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBNaW5pTWFwKGNvbmZpZykge1xuICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGNvbmZpZykgfHwgdGhpcztcbiAgICAvKipcbiAgICAgKiDkuLvlm77mm7TmlrDnmoTnm5HlkKzlh73mlbDvvIzkvb/nlKggZGVib3VuY2Ug5YeP5bCR5riy5p+T6aKR546HXG4gICAgICogZS5nLiDmi5bmi73oioLngrnlj6rkvJrlnKjmnb7miYvlkI7nmoQgMTAwbXMg5ZCO5omn6KGMIHVwZGF0ZUNhbnZhc1xuICAgICAqIGUuZy4gcmVuZGVyIOaXtuWkp+mHjyBhZGRJdGVtIOS5n+WPquS8muaJp+ihjOS4gOasoSB1cGRhdGVDYW52YXNcbiAgICAgKi9cblxuXG4gICAgX3RoaXMuaGFuZGxlVXBkYXRlQ2FudmFzID0gZGVib3VuY2UoZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgc2VsZiA9IF90aGlzO1xuICAgICAgaWYgKHNlbGYuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICBzZWxmLnVwZGF0ZUNhbnZhcygpO1xuICAgIH0sIDEwMCwgZmFsc2UpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIE1pbmlNYXAucHJvdG90eXBlLmdldERlZmF1bHRDZmdzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICBjbGFzc05hbWU6ICdnNi1taW5pbWFwJyxcbiAgICAgIHZpZXdwb3J0Q2xhc3NOYW1lOiAnZzYtbWluaW1hcC12aWV3cG9ydCcsXG4gICAgICAvLyBNaW5pbWFwIOS4rem7mOiupOWxleekuuWSjOS4u+WbvuS4gOagt+eahOWGheWuue+8jEtleVNoYXBlIOWPquWxleekuuiKgueCueWSjOi+ueeahCBrZXkgc2hhcGUg6YOo5YiG77yMZGVsZWdhdGXooajnpLrlsZXnpLroh6rlrprkuYnnmoRyZWN077yM55So5oi35Y+v6Ieq5a6a5LmJ5qC35byPXG4gICAgICB0eXBlOiAnZGVmYXVsdCcsXG4gICAgICBwYWRkaW5nOiA1MCxcbiAgICAgIHNpemU6IFsyMDAsIDEyMF0sXG4gICAgICBkZWxlZ2F0ZVN0eWxlOiB7XG4gICAgICAgIGZpbGw6ICcjNDBhOWZmJyxcbiAgICAgICAgc3Ryb2tlOiAnIzA5NmRkOSdcbiAgICAgIH0sXG4gICAgICByZWZyZXNoOiB0cnVlXG4gICAgfTtcbiAgfTtcblxuICBNaW5pTWFwLnByb3RvdHlwZS5nZXRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJlZm9yZXBhaW50OiAndXBkYXRlVmlld3BvcnQnLFxuICAgICAgYmVmb3JlYW5pbWF0ZTogJ2Rpc2FibGVSZWZyZXNoJyxcbiAgICAgIGFmdGVyYW5pbWF0ZTogJ2VuYWJsZVJlZnJlc2gnLFxuICAgICAgdmlld3BvcnRjaGFuZ2U6ICdkaXNhYmxlT25lUmVmcmVzaCdcbiAgICB9O1xuICB9OyAvLyDoi6XmmK/mraPlnKjov5vooYzliqjnlLvvvIzkuI3liLfmlrDnvKnnlaXlm75cblxuXG4gIE1pbmlNYXAucHJvdG90eXBlLmRpc2FibGVSZWZyZXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KCdyZWZyZXNoJywgZmFsc2UpO1xuICB9O1xuXG4gIE1pbmlNYXAucHJvdG90eXBlLmVuYWJsZVJlZnJlc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoJ3JlZnJlc2gnLCB0cnVlKTtcbiAgICB0aGlzLnVwZGF0ZUNhbnZhcygpO1xuICB9O1xuXG4gIE1pbmlNYXAucHJvdG90eXBlLmRpc2FibGVPbmVSZWZyZXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KCd2aWV3cG9ydENoYW5nZScsIHRydWUpO1xuICB9O1xuXG4gIE1pbmlNYXAucHJvdG90eXBlLmluaXRWaWV3cG9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGNmZ3MgPSB0aGlzLl9jZmdzO1xuICAgIHZhciBzaXplID0gY2Zncy5zaXplLFxuICAgICAgICBncmFwaCA9IGNmZ3MuZ3JhcGg7XG4gICAgaWYgKHRoaXMuZGVzdHJveWVkKSByZXR1cm47XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgY29udGFpbmVyRE9NID0gY2FudmFzLmdldCgnY29udGFpbmVyJyk7XG4gICAgdmFyIHZpZXdwb3J0ID0gY3JlYXRlRG9tKFwiXFxuICAgICAgPGRpdlxcbiAgICAgICAgY2xhc3M9XCIuY29uY2F0KGNmZ3Mudmlld3BvcnRDbGFzc05hbWUsIFwiXFxuICAgICAgICBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7XFxuICAgICAgICAgIGxlZnQ6MDtcXG4gICAgICAgICAgdG9wOjA7XFxuICAgICAgICAgIGJveC1zaXppbmc6Ym9yZGVyLWJveDtcXG4gICAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICMxOTgwZmYnXFxuICAgICAgICBkcmFnZ2FibGU9dHJ1ZT5cXG4gICAgICA8L2Rpdj5cIikpO1xuICAgIHZhciBpc0ZpcmVGb3ggPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpID4gLTE7IC8vIOiuoeeul+aLluaLveawtOW5s+aWueWQkei3neemu1xuXG4gICAgdmFyIHggPSAwOyAvLyDorqHnrpfmi5bmi73lnoLnm7TmlrnlkJHot53nprtcblxuICAgIHZhciB5ID0gMDsgLy8g5piv5ZCm5Zyo5ouW5ou9bWluaW1hcOeahOinhuWPo1xuXG4gICAgdmFyIGRyYWdnaW5nID0gZmFsc2U7IC8vIOe8k+WtmHZpZXdwb3J05b2T5YmN5a+55LqO55S75biD55qEeFxuXG4gICAgdmFyIGxlZnQgPSAwOyAvLyDnvJPlrZh2aWV3cG9ydOW9k+WJjeWvueS6jueUu+W4g+eahHlcblxuICAgIHZhciB0b3AgPSAwOyAvLyDnvJPlrZh2aWV3cG9ydOW9k+WJjeWuveW6plxuXG4gICAgdmFyIHdpZHRoID0gMDsgLy8g57yT5a2Ydmlld3BvcnTlvZPliY3pq5jluqZcblxuICAgIHZhciBoZWlnaHQgPSAwO1xuICAgIHZhciByYXRpbyA9IDA7XG4gICAgdmFyIHpvb20gPSAwO1xuICAgIHZpZXdwb3J0LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdzdGFydCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgX2EsIF9iO1xuXG4gICAgICBpZiAoZS5kYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpbWcuc3JjID0gXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgJTNFJTNDcGF0aCAvJTNFJTNDL3N2ZyUzRVwiO1xuICAgICAgICAoX2IgPSAoX2EgPSBlLmRhdGFUcmFuc2Zlcikuc2V0RHJhZ0ltYWdlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSwgaW1nLCAwLCAwKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3RleHQvaHRtbCcsICd2aWV3LXBvcnQtbWluaW1hcCcpO1xuICAgICAgICB9IGNhdGNoIChfYykge1xuICAgICAgICAgIC8vIHN1cHBvcnQgSUVcbiAgICAgICAgICBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0JywgJ3ZpZXctcG9ydC1taW5pbWFwJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2Zncy5yZWZyZXNoID0gZmFsc2U7XG5cbiAgICAgIGlmIChlLnRhcmdldCAhPT0gdmlld3BvcnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyDlpoLmnpzop4blj6Plt7Lnu4/mnIDlpKfkuobvvIzkuI3pnIDopoHmi5bmi71cblxuXG4gICAgICB2YXIgc3R5bGUgPSB2aWV3cG9ydC5zdHlsZTtcbiAgICAgIGxlZnQgPSBwYXJzZUludChzdHlsZS5sZWZ0LCAxMCk7XG4gICAgICB0b3AgPSBwYXJzZUludChzdHlsZS50b3AsIDEwKTtcbiAgICAgIHdpZHRoID0gcGFyc2VJbnQoc3R5bGUud2lkdGgsIDEwKTtcbiAgICAgIGhlaWdodCA9IHBhcnNlSW50KHN0eWxlLmhlaWdodCwgMTApO1xuXG4gICAgICBpZiAod2lkdGggPiBzaXplWzBdIHx8IGhlaWdodCA+IHNpemVbMV0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB6b29tID0gZ3JhcGguZ2V0Wm9vbSgpO1xuICAgICAgcmF0aW8gPSBfdGhpcy5nZXQoJ3JhdGlvJyk7XG4gICAgICBkcmFnZ2luZyA9IHRydWU7XG4gICAgICB4ID0gZS5jbGllbnRYO1xuICAgICAgeSA9IGUuY2xpZW50WTtcbiAgICB9LCBmYWxzZSk7XG4gICAgdmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcihpc0ZpcmVGb3ggPyAnZHJhZ292ZXInIDogJ2RyYWcnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKCFkcmFnZ2luZyB8fCBpc05pbChlLmNsaWVudFgpIHx8IGlzTmlsKGUuY2xpZW50WSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgZHggPSB4IC0gZS5jbGllbnRYO1xuICAgICAgdmFyIGR5ID0geSAtIGUuY2xpZW50WTsgLy8g6Iul6KeG5Y+j56e75Yqo5Yiw5pyA5bem6L655oiW5pyA5Y+z6L655LqGLOS7heenu+WKqOWIsOi+ueeVjFxuXG4gICAgICBpZiAobGVmdCAtIGR4IDwgMCB8fCBsZWZ0IC0gZHggKyB3aWR0aCA+PSBzaXplWzBdKSB7XG4gICAgICAgIGR4ID0gMDtcbiAgICAgIH0gLy8g6Iul6KeG5Y+j56e75Yqo5Yiw5pyA5LiK5oiW5pyA5LiL6L655LqG77yM5LuF56e75Yqo5Yiw6L6555WMXG5cblxuICAgICAgaWYgKHRvcCAtIGR5IDwgMCB8fCB0b3AgLSBkeSArIGhlaWdodCA+PSBzaXplWzFdKSB7XG4gICAgICAgIGR5ID0gMDtcbiAgICAgIH1cblxuICAgICAgbGVmdCAtPSBkeDtcbiAgICAgIHRvcCAtPSBkeTsgLy8g5YWI56e75Yqo6KeG5Y+j77yM6YG/5YWN56e75Yqo5Yiw6L655LiK5Lul5ZCO5Ye6546w6KeG5Y+j6Zeq54OBXG5cbiAgICAgIG1vZGlmeUNTUyh2aWV3cG9ydCwge1xuICAgICAgICBsZWZ0OiBcIlwiLmNvbmNhdChsZWZ0LCBcInB4XCIpLFxuICAgICAgICB0b3A6IFwiXCIuY29uY2F0KHRvcCwgXCJweFwiKVxuICAgICAgfSk7IC8vIGdyYXBoIOenu+WKqOmcgOimgeWBj+enu+mHjyBkeC9keSAqIOe8qeaUvuavlOS+i+aJjeS8muW+l+WIsOato+ehrueahOenu+WKqOi3neemu1xuXG4gICAgICBncmFwaC50cmFuc2xhdGUoZHggKiB6b29tIC8gcmF0aW8sIGR5ICogem9vbSAvIHJhdGlvKTtcbiAgICAgIHggPSBlLmNsaWVudFg7XG4gICAgICB5ID0gZS5jbGllbnRZO1xuICAgIH0sIGZhbHNlKTtcbiAgICB2aWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgIGNmZ3MucmVmcmVzaCA9IHRydWU7XG4gICAgfSwgZmFsc2UpO1xuICAgIHRoaXMuc2V0KCd2aWV3cG9ydCcsIHZpZXdwb3J0KTtcbiAgICBjb250YWluZXJET00uYXBwZW5kQ2hpbGQodmlld3BvcnQpO1xuICB9O1xuICAvKipcbiAgICog5pu05pawIHZpZXdwb3J0IOinhuWbvlxuICAgKi9cblxuXG4gIE1pbmlNYXAucHJvdG90eXBlLnVwZGF0ZVZpZXdwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHZhciByYXRpbyA9IHRoaXMuZ2V0KCdyYXRpbycpO1xuICAgIHZhciBkeCA9IHRoaXMuZ2V0KCdkeCcpO1xuICAgIHZhciBkeSA9IHRoaXMuZ2V0KCdkeScpO1xuICAgIHZhciB0b3RhbGR4ID0gdGhpcy5nZXQoJ3RvdGFsZHgnKTtcbiAgICB2YXIgdG90YWxkeSA9IHRoaXMuZ2V0KCd0b3RhbGR5Jyk7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldCgnc2l6ZScpO1xuICAgIHZhciBncmFwaFdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBncmFwaEhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIHRvcExlZnQgPSBncmFwaC5nZXRQb2ludEJ5Q2FudmFzKDAsIDApO1xuICAgIHZhciBib3R0b21SaWdodCA9IGdyYXBoLmdldFBvaW50QnlDYW52YXMoZ3JhcGhXaWR0aCwgZ3JhcGhIZWlnaHQpO1xuICAgIHZhciB2aWV3cG9ydCA9IHRoaXMuZ2V0KCd2aWV3cG9ydCcpO1xuXG4gICAgaWYgKCF2aWV3cG9ydCkge1xuICAgICAgdGhpcy5pbml0Vmlld3BvcnQoKTtcbiAgICB9IC8vIHZpZXdwb3J05a696auYLOW3puS4iuinkueCueeahOiuoeeul1xuXG5cbiAgICB2YXIgd2lkdGggPSAoYm90dG9tUmlnaHQueCAtIHRvcExlZnQueCkgKiByYXRpbztcbiAgICB2YXIgaGVpZ2h0ID0gKGJvdHRvbVJpZ2h0LnkgLSB0b3BMZWZ0LnkpICogcmF0aW87XG4gICAgdmFyIGxlZnQgPSB0b3BMZWZ0LnggKiByYXRpbyArIHRvdGFsZHg7XG4gICAgdmFyIHRvcCA9IHRvcExlZnQueSAqIHJhdGlvICsgdG90YWxkeTtcbiAgICB2YXIgcmlnaHQgPSBsZWZ0ICsgd2lkdGg7XG4gICAgdmFyIGJvdHRvbSA9IHRvcCArIGhlaWdodDtcblxuICAgIGlmIChsZWZ0IDwgMCkge1xuICAgICAgd2lkdGggKz0gbGVmdDtcbiAgICAgIGxlZnQgPSAwO1xuICAgIH1cblxuICAgIGlmIChyaWdodCA+IHNpemVbMF0pIHtcbiAgICAgIHdpZHRoID0gd2lkdGggLSAocmlnaHQgLSBzaXplWzBdKTtcbiAgICB9XG5cbiAgICBpZiAodG9wIDwgMCkge1xuICAgICAgaGVpZ2h0ICs9IHRvcDtcbiAgICAgIHRvcCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSA+IHNpemVbMV0pIHtcbiAgICAgIGhlaWdodCA9IGhlaWdodCAtIChib3R0b20gLSBzaXplWzFdKTtcbiAgICB9IC8vIOe8k+WtmOebruWJjee8qeaUvuavlO+8jOWcqOenu+WKqCBtaW5pbWFwIOinhueql+aXtuWwseS4jeeUqOWGjeiuoeeul+Wkp+WbvueahOenu+WKqOmHj1xuXG5cbiAgICB0aGlzLnNldCgncmF0aW8nLCByYXRpbyk7XG4gICAgdmFyIGNvcnJlY3RMZWZ0ID0gXCJcIi5jb25jYXQobGVmdCwgXCJweFwiKTtcbiAgICB2YXIgY29ycmVjdFRvcCA9IFwiXCIuY29uY2F0KHRvcCwgXCJweFwiKTtcbiAgICBtb2RpZnlDU1Modmlld3BvcnQsIHtcbiAgICAgIGxlZnQ6IGNvcnJlY3RMZWZ0LFxuICAgICAgdG9wOiBjb3JyZWN0VG9wLFxuICAgICAgd2lkdGg6IFwiXCIuY29uY2F0KHdpZHRoLCBcInB4XCIpLFxuICAgICAgaGVpZ2h0OiBcIlwiLmNvbmNhdChoZWlnaHQsIFwicHhcIilcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuS4u+WbvuS4iueahOWbvuW9ouWujOWFqOWkjeWItuWIsOWwj+WbvlxuICAgKi9cblxuXG4gIE1pbmlNYXAucHJvdG90eXBlLnVwZGF0ZUdyYXBoU2hhcGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuX2NmZ3MuZ3JhcGg7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgZ3JhcGhHcm91cCA9IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICBpZiAoZ3JhcGhHcm91cC5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB2YXIgY2xvbmVkR3JvdXAgPSBncmFwaEdyb3VwLmNsb25lKCk7XG4gICAgY2xvbmVkR3JvdXAucmVzZXRNYXRyaXgoKTtcbiAgICBjYW52YXMuY2xlYXIoKTtcbiAgICBjYW52YXMuYWRkKGNsb25lZEdyb3VwKTsgLy8g5b2TIHJlbmRlcmVyIOaYryBzdmfvvIznlLHkuo7muLLmn5PlvJXmk47nmoQgYnVn77yM6L+Z6YeM6ZyA6KaB5bCGIHZpc2libGUg5Li6IGZhbHNlIOeahOWFg+e0oOaJi+WKqOmakOiXj1xuXG4gICAgdmFyIHJlbmRlcmVyID0gZ3JhcGguZ2V0KCdyZW5kZXJlcicpO1xuXG4gICAgaWYgKHJlbmRlcmVyID09PSBTVkcpIHtcbiAgICAgIC8vIOmAkuW9kuabtOaWsOWtkOWFg+e0oFxuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlKGNsb25lZEdyb3VwKTtcbiAgICB9XG4gIH07IC8vIHN2ZyDlnKggY2FudmFzLmFkZChjbG9uZWRHcm91cCkg5LmL5ZCO5Lya5Ye6546wIHZpc2libGUg5Li6IGZhbHNlIOeahOWFg+e0oOiiq+WxleekuuWHuuadpe+8jOmcgOimgemAkuW9kuabtOaWsFxuXG5cbiAgTWluaU1hcC5wcm90b3R5cGUudXBkYXRlVmlzaWJsZSA9IGZ1bmN0aW9uIChlbGUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCFlbGUuaXNHcm91cCgpICYmICFlbGUuZ2V0KCd2aXNpYmxlJykpIHtcbiAgICAgIGVsZS5oaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IGVsZS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICBpZiAoIWNoaWxkcmVuIHx8ICFjaGlsZHJlbi5sZW5ndGgpIHJldHVybjtcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmICghY2hpbGQuZ2V0KCd2aXNpYmxlJykpIGNoaWxkLmhpZGUoKTtcblxuICAgICAgICBfdGhpcy51cGRhdGVWaXNpYmxlKGNoaWxkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTsgLy8g5LuF5ZyoIG1pbmltYXAg5LiK57uY5Yi2IGtleVNoYXBlXG4gIC8vIEZJWE1FIOWmguaenOeUqOaIt+iHquWumuS5iee7mOWItuS6huWFtuS7luWGheWuue+8jG1pbmltYXDkuIrlsLHml6Dms5XnlLvlh7pcblxuXG4gIE1pbmlNYXAucHJvdG90eXBlLnVwZGF0ZUtleVNoYXBlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5fY2Zncy5ncmFwaDtcbiAgICB2YXIgY2FudmFzID0gdGhpcy5nZXQoJ2NhbnZhcycpO1xuICAgIHZhciBncm91cCA9IGNhbnZhcy5nZXQoJ2NoaWxkcmVuJylbMF0gfHwgY2FudmFzLmFkZEdyb3VwKCk7XG4gICAgZWFjaChncmFwaC5nZXRFZGdlcygpLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgX3RoaXMudXBkYXRlT25lRWRnZUtleVNoYXBlKGVkZ2UsIGdyb3VwKTtcbiAgICB9KTtcbiAgICBlYWNoKGdyYXBoLmdldE5vZGVzKCksIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBfdGhpcy51cGRhdGVPbmVOb2RlS2V5U2hhcGUobm9kZSwgZ3JvdXApO1xuICAgIH0pO1xuICAgIHZhciBjb21ib3MgPSBncmFwaC5nZXRDb21ib3MoKTtcblxuICAgIGlmIChjb21ib3MgJiYgY29tYm9zLmxlbmd0aCkge1xuICAgICAgdmFyIGNvbWJvR3JvdXBfMSA9IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdjb21ib0dyb3VwJztcbiAgICAgIH0pIHx8IGdyb3VwLmFkZEdyb3VwKHtcbiAgICAgICAgbmFtZTogJ2NvbWJvR3JvdXAnXG4gICAgICB9KTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXMuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgIGVhY2goY29tYm9zLCBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgICBfdGhpcy51cGRhdGVPbmVDb21ib0tleVNoYXBlKGNvbWJvLCBjb21ib0dyb3VwXzEpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29tYm9Hcm91cF8xID09PSBudWxsIHx8IGNvbWJvR3JvdXBfMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tYm9Hcm91cF8xLnNvcnQoKTtcbiAgICAgICAgY29tYm9Hcm91cF8xID09PSBudWxsIHx8IGNvbWJvR3JvdXBfMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tYm9Hcm91cF8xLnRvQmFjaygpO1xuXG4gICAgICAgIF90aGlzLnVwZGF0ZUNhbnZhcygpO1xuICAgICAgfSwgMjUwKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsZWFyRGVzdHJveWVkU2hhcGVzKCk7XG4gIH07XG4gIC8qKlxuICAgKiDlop7liqAv5pu05paw5Y2V5Liq5YWD57Sg55qEIGtleVNoYXBlXG4gICAqIEBwYXJhbSBpdGVtIElDb21ibyDlrp7kvotcbiAgICovXG5cblxuICBNaW5pTWFwLnByb3RvdHlwZS51cGRhdGVPbmVDb21ib0tleVNoYXBlID0gZnVuY3Rpb24gKGl0ZW0sIGNvbWJvR3JvdXApIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB2YXIgaXRlbU1hcCA9IHRoaXMuZ2V0KCdpdGVtTWFwJykgfHwge307IC8vIOW3rumHj+abtOaWsCBtaW5pbWFwIOS4iueahOS4gOS4quiKgueCue+8jOWvueW6lOS4u+WbvueahCBpdGVtXG5cbiAgICB2YXIgbWFwcGVkSXRlbSA9IGl0ZW1NYXBbaXRlbS5nZXQoJ2lkJyldO1xuICAgIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7IC8vIOiuoeeul+S6huiKgueCueeItue7hOefqemYteeahCBiYm94XG5cbiAgICB2YXIgY0tleVNoYXBlID0gaXRlbS5nZXQoJ2tleVNoYXBlJykuY2xvbmUoKTtcbiAgICB2YXIga2V5U2hhcGVTdHlsZSA9IGNLZXlTaGFwZS5hdHRyKCk7XG4gICAgdmFyIGF0dHJzID0ge1xuICAgICAgeDogYmJveC5jZW50ZXJYLFxuICAgICAgeTogYmJveC5jZW50ZXJZXG4gICAgfTtcblxuICAgIGlmICghbWFwcGVkSXRlbSkge1xuICAgICAgbWFwcGVkSXRlbSA9IGNLZXlTaGFwZTtcbiAgICAgIGNvbWJvR3JvdXAuYWRkKG1hcHBlZEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhdHRycyA9IE9iamVjdC5hc3NpZ24oa2V5U2hhcGVTdHlsZSwgYXR0cnMpO1xuICAgIH1cblxuICAgIHZhciBzaGFwZVR5cGUgPSBtYXBwZWRJdGVtLmdldCgndHlwZScpO1xuXG4gICAgaWYgKHNoYXBlVHlwZSA9PT0gJ3JlY3QnIHx8IHNoYXBlVHlwZSA9PT0gJ2ltYWdlJykge1xuICAgICAgYXR0cnMueCA9IGJib3gubWluWDtcbiAgICAgIGF0dHJzLnkgPSBiYm94Lm1pblk7XG4gICAgfVxuXG4gICAgbWFwcGVkSXRlbS5hdHRyKGF0dHJzKTtcbiAgICBpZiAoIWl0ZW0uaXNWaXNpYmxlKCkpIG1hcHBlZEl0ZW0uaGlkZSgpO2Vsc2UgbWFwcGVkSXRlbS5zaG93KCk7XG4gICAgbWFwcGVkSXRlbS5leGlzdCA9IHRydWU7XG4gICAgdmFyIHpJbmRleCA9IGl0ZW0uZ2V0TW9kZWwoKS5kZXB0aDtcbiAgICBpZiAoIWlzTmFOKHpJbmRleCkpIG1hcHBlZEl0ZW0uc2V0KCd6SW5kZXgnLCB6SW5kZXgpO1xuICAgIGl0ZW1NYXBbaXRlbS5nZXQoJ2lkJyldID0gbWFwcGVkSXRlbTtcbiAgICB0aGlzLnNldCgnaXRlbU1hcCcsIGl0ZW1NYXApO1xuICB9O1xuICAvKipcbiAgICog5aKe5YqgL+abtOaWsOWNleS4quWFg+e0oOeahCBrZXlTaGFwZVxuICAgKiBAcGFyYW0gaXRlbSBJTm9kZSDlrp7kvotcbiAgICovXG5cblxuICBNaW5pTWFwLnByb3RvdHlwZS51cGRhdGVPbmVOb2RlS2V5U2hhcGUgPSBmdW5jdGlvbiAoaXRlbSwgZ3JvdXApIHtcbiAgICB2YXIgaXRlbU1hcCA9IHRoaXMuZ2V0KCdpdGVtTWFwJykgfHwge307IC8vIOW3rumHj+abtOaWsCBtaW5pbWFwIOS4iueahOS4gOS4quiKgueCue+8jOWvueW6lOS4u+WbvueahCBpdGVtXG5cbiAgICB2YXIgbWFwcGVkSXRlbSA9IGl0ZW1NYXBbaXRlbS5nZXQoJ2lkJyldO1xuICAgIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7IC8vIOiuoeeul+S6huiKgueCueeItue7hOefqemYteeahCBiYm94XG5cbiAgICB2YXIgY0tleVNoYXBlID0gaXRlbS5nZXQoJ2tleVNoYXBlJykuY2xvbmUoKTtcbiAgICB2YXIga2V5U2hhcGVTdHlsZSA9IGNLZXlTaGFwZS5hdHRyKCk7XG4gICAgdmFyIGF0dHJzID0ge1xuICAgICAgeDogYmJveC5jZW50ZXJYLFxuICAgICAgeTogYmJveC5jZW50ZXJZXG4gICAgfTtcblxuICAgIGlmICghbWFwcGVkSXRlbSkge1xuICAgICAgbWFwcGVkSXRlbSA9IGNLZXlTaGFwZTtcbiAgICAgIGdyb3VwLmFkZChtYXBwZWRJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXR0cnMgPSBPYmplY3QuYXNzaWduKGtleVNoYXBlU3R5bGUsIGF0dHJzKTtcbiAgICB9XG5cbiAgICB2YXIgc2hhcGVUeXBlID0gbWFwcGVkSXRlbS5nZXQoJ3R5cGUnKTtcblxuICAgIGlmIChzaGFwZVR5cGUgPT09ICdyZWN0JyB8fCBzaGFwZVR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgIGF0dHJzLnggPSBiYm94Lm1pblg7XG4gICAgICBhdHRycy55ID0gYmJveC5taW5ZO1xuICAgIH1cblxuICAgIG1hcHBlZEl0ZW0uYXR0cihhdHRycyk7XG4gICAgaWYgKCFpdGVtLmlzVmlzaWJsZSgpKSBtYXBwZWRJdGVtLmhpZGUoKTtlbHNlIG1hcHBlZEl0ZW0uc2hvdygpO1xuICAgIG1hcHBlZEl0ZW0uZXhpc3QgPSB0cnVlO1xuICAgIHZhciB6SW5kZXggPSBpdGVtLmdldE1vZGVsKCkuZGVwdGg7XG4gICAgaWYgKCFpc05hTih6SW5kZXgpKSBtYXBwZWRJdGVtLnNldCgnekluZGV4JywgekluZGV4KTtcbiAgICBpdGVtTWFwW2l0ZW0uZ2V0KCdpZCcpXSA9IG1hcHBlZEl0ZW07XG4gICAgdGhpcy5zZXQoJ2l0ZW1NYXAnLCBpdGVtTWFwKTtcbiAgfTtcbiAgLyoqXG4gICAqIE1pbmltYXAg5Lit5bGV56S66Ieq5a6a5LmJ55qEcmVjdO+8jOaUr+aMgeeUqOaIt+iHquWumuS5ieagt+W8j+WSjOiKgueCueWkp+Wwj1xuICAgKi9cblxuXG4gIE1pbmlNYXAucHJvdG90eXBlLnVwZGF0ZURlbGVnYXRlU2hhcGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLl9jZmdzLmdyYXBoO1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIGdyb3VwID0gY2FudmFzLmdldCgnY2hpbGRyZW4nKVswXSB8fCBjYW52YXMuYWRkR3JvdXAoKTsgLy8g5beu6YeP5pu05pawIG1pbmltYXAg5LiK55qE6IqC54K55ZKM6L65XG5cbiAgICBlYWNoKGdyYXBoLmdldEVkZ2VzKCksIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBfdGhpcy51cGRhdGVPbmVFZGdlS2V5U2hhcGUoZWRnZSwgZ3JvdXApO1xuICAgIH0pO1xuICAgIGVhY2goZ3JhcGguZ2V0Tm9kZXMoKSwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIF90aGlzLnVwZGF0ZU9uZU5vZGVEZWxlZ2F0ZVNoYXBlKG5vZGUsIGdyb3VwKTtcbiAgICB9KTtcbiAgICB2YXIgY29tYm9zID0gZ3JhcGguZ2V0Q29tYm9zKCk7XG5cbiAgICBpZiAoY29tYm9zICYmIGNvbWJvcy5sZW5ndGgpIHtcbiAgICAgIHZhciBjb21ib0dyb3VwXzIgPSBncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiBlLmdldCgnbmFtZScpID09PSAnY29tYm9Hcm91cCc7XG4gICAgICB9KSB8fCBncm91cC5hZGRHcm91cCh7XG4gICAgICAgIG5hbWU6ICdjb21ib0dyb3VwJ1xuICAgICAgfSk7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICBlYWNoKGNvbWJvcywgZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgICAgX3RoaXMudXBkYXRlT25lQ29tYm9LZXlTaGFwZShjb21ibywgY29tYm9Hcm91cF8yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbWJvR3JvdXBfMiA9PT0gbnVsbCB8fCBjb21ib0dyb3VwXzIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbWJvR3JvdXBfMi5zb3J0KCk7XG4gICAgICAgIGNvbWJvR3JvdXBfMiA9PT0gbnVsbCB8fCBjb21ib0dyb3VwXzIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbWJvR3JvdXBfMi50b0JhY2soKTtcblxuICAgICAgICBfdGhpcy51cGRhdGVDYW52YXMoKTtcbiAgICAgIH0sIDI1MCk7XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhckRlc3Ryb3llZFNoYXBlcygpO1xuICB9O1xuXG4gIE1pbmlNYXAucHJvdG90eXBlLmNsZWFyRGVzdHJveWVkU2hhcGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBpdGVtTWFwID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKSB8fCB7fTtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGl0ZW1NYXApO1xuICAgIGlmICgha2V5cyB8fCBrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IGtleXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBzaGFwZSA9IGl0ZW1NYXBba2V5c1tpXV07XG4gICAgICB2YXIgZXhpc3QgPSBzaGFwZS5leGlzdDtcbiAgICAgIHNoYXBlLmV4aXN0ID0gZmFsc2U7XG5cbiAgICAgIGlmICghZXhpc3QpIHtcbiAgICAgICAgc2hhcGUucmVtb3ZlKCk7XG4gICAgICAgIGRlbGV0ZSBpdGVtTWFwW2tleXNbaV1dO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWPquaYvuekuiBlZGdlIOeahCBrZXlTaGFwZVxuICAgKiBAcGFyYW0gaXRlbSBJRWRnZSDlrp7kvotcbiAgICovXG5cblxuICBNaW5pTWFwLnByb3RvdHlwZS51cGRhdGVPbmVFZGdlS2V5U2hhcGUgPSBmdW5jdGlvbiAoaXRlbSwgZ3JvdXApIHtcbiAgICB2YXIgaXRlbU1hcCA9IHRoaXMuZ2V0KCdpdGVtTWFwJykgfHwge307IC8vIOW3rumHj+abtOaWsCBtaW5pbWFwIOS4iueahOS4gOS4quiKgueCue+8jOWvueW6lOS4u+WbvueahCBpdGVtXG5cbiAgICB2YXIgbWFwcGVkSXRlbSA9IGl0ZW1NYXBbaXRlbS5nZXQoJ2lkJyldO1xuXG4gICAgaWYgKG1hcHBlZEl0ZW0pIHtcbiAgICAgIHZhciBwYXRoID0gaXRlbS5nZXQoJ2tleVNoYXBlJykuYXR0cigncGF0aCcpO1xuICAgICAgbWFwcGVkSXRlbS5hdHRyKCdwYXRoJywgcGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hcHBlZEl0ZW0gPSBpdGVtLmdldCgna2V5U2hhcGUnKS5jbG9uZSgpO1xuICAgICAgZ3JvdXAuYWRkKG1hcHBlZEl0ZW0pO1xuICAgIH1cblxuICAgIGlmICghaXRlbS5pc1Zpc2libGUoKSkgbWFwcGVkSXRlbS5oaWRlKCk7ZWxzZSBtYXBwZWRJdGVtLnNob3coKTtcbiAgICBtYXBwZWRJdGVtLmV4aXN0ID0gdHJ1ZTtcbiAgICBpdGVtTWFwW2l0ZW0uZ2V0KCdpZCcpXSA9IG1hcHBlZEl0ZW07XG4gICAgdGhpcy5zZXQoJ2l0ZW1NYXAnLCBpdGVtTWFwKTtcbiAgfTtcbiAgLyoqXG4gICAqIE1pbmltYXAg5Lit5bGV56S66Ieq5a6a5LmJ55qEIHJlY3TvvIzmlK/mjIHnlKjmiLfoh6rlrprkuYnmoLflvI/lkozoioLngrnlpKflsI9cbiAgICog5aKe5YqgL+abtOaWsOWNleS4quWFg+e0oFxuICAgKiBAcGFyYW0gaXRlbSBJTm9kZSDlrp7kvotcbiAgICovXG5cblxuICBNaW5pTWFwLnByb3RvdHlwZS51cGRhdGVPbmVOb2RlRGVsZWdhdGVTaGFwZSA9IGZ1bmN0aW9uIChpdGVtLCBncm91cCkge1xuICAgIHZhciBkZWxlZ2F0ZVN0eWxlID0gdGhpcy5nZXQoJ2RlbGVnYXRlU3R5bGUnKTtcbiAgICB2YXIgaXRlbU1hcCA9IHRoaXMuZ2V0KCdpdGVtTWFwJykgfHwge307IC8vIOW3rumHj+abtOaWsCBtaW5pbWFwIOS4iueahOS4gOS4quiKgueCue+8jOWvueW6lOS4u+WbvueahCBpdGVtXG5cbiAgICB2YXIgbWFwcGVkSXRlbSA9IGl0ZW1NYXBbaXRlbS5nZXQoJ2lkJyldO1xuICAgIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7IC8vIOiuoeeul+S6huiKgueCueeItue7hOefqemYteeahCBiYm94XG5cbiAgICBpZiAobWFwcGVkSXRlbSkge1xuICAgICAgdmFyIGF0dHJzID0ge1xuICAgICAgICB4OiBiYm94Lm1pblgsXG4gICAgICAgIHk6IGJib3gubWluWSxcbiAgICAgICAgd2lkdGg6IGJib3gud2lkdGgsXG4gICAgICAgIGhlaWdodDogYmJveC5oZWlnaHRcbiAgICAgIH07XG4gICAgICBtYXBwZWRJdGVtLmF0dHIoYXR0cnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXBwZWRJdGVtID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgeDogYmJveC5taW5YLFxuICAgICAgICAgIHk6IGJib3gubWluWSxcbiAgICAgICAgICB3aWR0aDogYmJveC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGJib3guaGVpZ2h0XG4gICAgICAgIH0sIGRlbGVnYXRlU3R5bGUpLFxuICAgICAgICBuYW1lOiAnbWluaW1hcC1ub2RlLXNoYXBlJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFpdGVtLmlzVmlzaWJsZSgpKSBtYXBwZWRJdGVtLmhpZGUoKTtlbHNlIG1hcHBlZEl0ZW0uc2hvdygpO1xuICAgIG1hcHBlZEl0ZW0uZXhpc3QgPSB0cnVlO1xuICAgIGl0ZW1NYXBbaXRlbS5nZXQoJ2lkJyldID0gbWFwcGVkSXRlbTtcbiAgICB0aGlzLnNldCgnaXRlbU1hcCcsIGl0ZW1NYXApO1xuICB9O1xuXG4gIE1pbmlNYXAucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5pbml0Q29udGFpbmVyKCk7XG4gICAgdGhpcy5nZXQoJ2dyYXBoJykub24oJ2FmdGVydXBkYXRlaXRlbScsIHRoaXMuaGFuZGxlVXBkYXRlQ2FudmFzKTtcbiAgICB0aGlzLmdldCgnZ3JhcGgnKS5vbignYWZ0ZXJpdGVtc3RhdGVjaGFuZ2UnLCB0aGlzLmhhbmRsZVVwZGF0ZUNhbnZhcyk7XG4gICAgdGhpcy5nZXQoJ2dyYXBoJykub24oJ2FmdGVyYWRkaXRlbScsIHRoaXMuaGFuZGxlVXBkYXRlQ2FudmFzKTtcbiAgICB0aGlzLmdldCgnZ3JhcGgnKS5vbignYWZ0ZXJyZW1vdmVpdGVtJywgdGhpcy5oYW5kbGVVcGRhdGVDYW52YXMpO1xuICAgIHRoaXMuZ2V0KCdncmFwaCcpLm9uKCdhZnRlcnJlbmRlcicsIHRoaXMuaGFuZGxlVXBkYXRlQ2FudmFzKTtcbiAgICB0aGlzLmdldCgnZ3JhcGgnKS5vbignYWZ0ZXJsYXlvdXQnLCB0aGlzLmhhbmRsZVVwZGF0ZUNhbnZhcyk7XG4gIH07XG4gIC8qKlxuICAgKiDliJ3lp4vljJYgTWluaW1hcCDnmoTlrrnlmahcbiAgICovXG5cblxuICBNaW5pTWFwLnByb3RvdHlwZS5pbml0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgc2l6ZSA9IHNlbGYuZ2V0KCdzaXplJyk7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHNlbGYuZ2V0KCdjbGFzc05hbWUnKTtcbiAgICB2YXIgcGFyZW50Tm9kZSA9IHNlbGYuZ2V0KCdjb250YWluZXInKTtcbiAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz0nXCIuY29uY2F0KGNsYXNzTmFtZSwgXCInIHN0eWxlPSd3aWR0aDogXCIpLmNvbmNhdChzaXplWzBdLCBcInB4OyBoZWlnaHQ6IFwiKS5jb25jYXQoc2l6ZVsxXSwgXCJweDsgb3ZlcmZsb3c6IGhpZGRlbic+PC9kaXY+XCIpKTtcblxuICAgIGlmIChpc1N0cmluZyhwYXJlbnROb2RlKSkge1xuICAgICAgcGFyZW50Tm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBhcmVudE5vZGUpO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyYXBoLmdldCgnY29udGFpbmVyJykuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBzZWxmLnNldCgnY29udGFpbmVyJywgY29udGFpbmVyKTtcbiAgICB2YXIgY29udGFpbmVyRE9NID0gY3JlYXRlRG9tKCc8ZGl2IGNsYXNzPVwiZzYtbWluaW1hcC1jb250YWluZXJcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj48L2Rpdj4nKTtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyRE9NKTtcbiAgICBjb250YWluZXJET00uYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcbiAgICBjb250YWluZXJET00uYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBmdW5jdGlvbiAoZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuICAgIHZhciBjYW52YXM7XG4gICAgdmFyIHJlbmRlcmVyID0gZ3JhcGguZ2V0KCdyZW5kZXJlcicpO1xuXG4gICAgaWYgKHJlbmRlcmVyID09PSBTVkcpIHtcbiAgICAgIGNhbnZhcyA9IG5ldyBHU1ZHQ2FudmFzKHtcbiAgICAgICAgY29udGFpbmVyOiBjb250YWluZXJET00sXG4gICAgICAgIHdpZHRoOiBzaXplWzBdLFxuICAgICAgICBoZWlnaHQ6IHNpemVbMV1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW52YXMgPSBuZXcgR0NhbnZhcyh7XG4gICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyRE9NLFxuICAgICAgICB3aWR0aDogc2l6ZVswXSxcbiAgICAgICAgaGVpZ2h0OiBzaXplWzFdXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzZWxmLnNldCgnY2FudmFzJywgY2FudmFzKTtcbiAgICBzZWxmLnVwZGF0ZUNhbnZhcygpO1xuICB9O1xuXG4gIE1pbmlNYXAucHJvdG90eXBlLnVwZGF0ZUNhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybjsgLy8g5aaC5p6c5piv5Zyo5Yqo55S777yM5YiZ5LiN5Yi35paw6KeG5Zu+XG5cbiAgICB2YXIgaXNSZWZyZXNoID0gdGhpcy5nZXQoJ3JlZnJlc2gnKTtcblxuICAgIGlmICghaXNSZWZyZXNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG5cbiAgICBpZiAoZ3JhcGguZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8g5aaC5p6c5piv6KeG5Y+j5Y+Y5o2i77yM5Lmf5LiN5Yi35paw6KeG5Zu+77yM5L2G5piv6ZyA6KaB6YeN572u6KeG5Y+j5aSn5bCP5ZKM5L2N572uXG5cblxuICAgIGlmICh0aGlzLmdldCgndmlld3BvcnRDaGFuZ2UnKSkge1xuICAgICAgdGhpcy5zZXQoJ3ZpZXdwb3J0Q2hhbmdlJywgZmFsc2UpO1xuICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydCgpO1xuICAgIH1cblxuICAgIHZhciBzaXplID0gdGhpcy5nZXQoJ3NpemUnKTsgLy8g55So5oi35a6a5LmJ55qEIG1pbmltYXAgc2l6ZVxuXG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTsgLy8gbWluaW1hcCDnmoQgY2FudmFzXG5cbiAgICB2YXIgdHlwZSA9IHRoaXMuZ2V0KCd0eXBlJyk7IC8vIG1pbmltYXAg55qE57G75Z6LXG5cbiAgICB2YXIgcGFkZGluZyA9IHRoaXMuZ2V0KCdwYWRkaW5nJyk7IC8vIOeUqOaIt+mineWumuS5ieeahCBtaW5pbWFwIOeahCBwYWRkaW5nXG5cbiAgICBpZiAoY2FudmFzLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBERUZBVUxUX01PREU6XG4gICAgICAgIHRoaXMudXBkYXRlR3JhcGhTaGFwZXMoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS0VZU0hBUEVfTU9ERTpcbiAgICAgICAgdGhpcy51cGRhdGVLZXlTaGFwZXMoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgREVMRUdBVEVfTU9ERTpcbiAgICAgICAgLy8g5b6X5Yiw55qE6IqC54K555u05o6l5bim5pyJIHgg5ZKMIHnvvIzmr4/kuKroioLngrnkuI3lrZjlnKjniLYgZ3JvdXDvvIzljbPmr4/kuKroioLngrnkvY3nva7kuI3nlLHniLYgZ3JvdXAg5o6n5Yi2XG4gICAgICAgIHRoaXMudXBkYXRlRGVsZWdhdGVTaGFwZXMoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBncm91cCA9IGNhbnZhcy5nZXQoJ2NoaWxkcmVuJylbMF07XG4gICAgaWYgKCFncm91cCkgcmV0dXJuO1xuICAgIGdyb3VwLnJlc2V0TWF0cml4KCk7IC8vIOivpSBiYm94IOaYr+WHhuehrueahO+8jOS4jeiuoeeulyBtYXRyaXgg55qE5YyF5Zu055uSXG5cbiAgICB2YXIgYmJveCA9IGdyb3VwLmdldENhbnZhc0JCb3goKTtcbiAgICB2YXIgZ3JhcGhCQm94ID0gZ3JhcGguZ2V0KCdjYW52YXMnKS5nZXRDYW52YXNCQm94KCk7IC8vIOS4u+WbvueahCBiYm94XG5cbiAgICB2YXIgZ3JhcGhab29tID0gZ3JhcGguZ2V0Wm9vbSgpIHx8IDE7XG4gICAgdmFyIHdpZHRoID0gZ3JhcGhCQm94LndpZHRoIC8gZ3JhcGhab29tO1xuICAgIHZhciBoZWlnaHQgPSBncmFwaEJCb3guaGVpZ2h0IC8gZ3JhcGhab29tO1xuXG4gICAgaWYgKE51bWJlci5pc0Zpbml0ZShiYm94LndpZHRoKSkge1xuICAgICAgLy8g5Yi35paw5ZCOYmJveOWPr+iDveS8muWPmO+8jOmcgOimgemHjee9rueUu+W4g+efqemYteS7pee8qeaUvuWIsOWQiOmAgueahOWkp+Wwj1xuICAgICAgd2lkdGggPSBtYXgoYmJveC53aWR0aCwgd2lkdGgpO1xuICAgICAgaGVpZ2h0ID0gbWF4KGJib3guaGVpZ2h0LCBoZWlnaHQpO1xuICAgIH1cblxuICAgIHdpZHRoICs9IDIgKiBwYWRkaW5nO1xuICAgIGhlaWdodCArPSAyICogcGFkZGluZztcbiAgICB2YXIgcmF0aW8gPSBNYXRoLm1pbihzaXplWzBdIC8gd2lkdGgsIHNpemVbMV0gLyBoZWlnaHQpO1xuICAgIHZhciBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgdmFyIG1pblggPSAwO1xuICAgIHZhciBtaW5ZID0gMDsgLy8g5bmz56e75Yiw5bem5LiK6KeSXG5cbiAgICBpZiAoTnVtYmVyLmlzRmluaXRlKGJib3gubWluWCkpIHtcbiAgICAgIG1pblggPSAtYmJveC5taW5YO1xuICAgIH1cblxuICAgIGlmIChOdW1iZXIuaXNGaW5pdGUoYmJveC5taW5ZKSkge1xuICAgICAgbWluWSA9IC1iYm94Lm1pblk7XG4gICAgfSAvLyDnvKnmlL7liLDpgILlkIjop4blj6PlkI4sIOW5s+enu+WIsOeUu+W4g+S4reW/g1xuXG5cbiAgICB2YXIgZHggPSAoc2l6ZVswXSAtICh3aWR0aCAtIDIgKiBwYWRkaW5nKSAqIHJhdGlvKSAvIDI7XG4gICAgdmFyIGR5ID0gKHNpemVbMV0gLSAoaGVpZ2h0IC0gMiAqIHBhZGRpbmcpICogcmF0aW8pIC8gMjtcbiAgICBtYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgbWluWCwgbWluWV0sIFsncycsIHJhdGlvLCByYXRpb10sIFsndCcsIGR4LCBkeV0gLy8g56e75Yqo5Yiw55S75biD5Lit5b+DXG4gICAgXSk7XG4gICAgZ3JvdXAuc2V0TWF0cml4KG1hdHJpeCk7IC8vIOabtOaWsG1pbmltYXDop4blj6NcblxuICAgIHRoaXMuc2V0KCdyYXRpbycsIHJhdGlvKTtcbiAgICB0aGlzLnNldCgndG90YWxkeCcsIGR4ICsgbWluWCAqIHJhdGlvKTtcbiAgICB0aGlzLnNldCgndG90YWxkeScsIGR5ICsgbWluWSAqIHJhdGlvKTtcbiAgICB0aGlzLnNldCgnZHgnLCBkeCk7XG4gICAgdGhpcy5zZXQoJ2R5JywgZHkpO1xuICAgIHRoaXMudXBkYXRlVmlld3BvcnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPlm1pbmltYXDnmoTnlLvluINcbiAgICogQHJldHVybiB7R0NhbnZhc30gR+eahGNhbnZhc+WunuS+i1xuICAgKi9cblxuXG4gIE1pbmlNYXAucHJvdG90eXBlLmdldENhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2NhbnZhcycpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WbWluaW1hcOeahOeql+WPo1xuICAgKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0g56qX5Y+j55qEZG9t5a6e5L6LXG4gICAqL1xuXG5cbiAgTWluaU1hcC5wcm90b3R5cGUuZ2V0Vmlld3BvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCd2aWV3cG9ydCcpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WbWluaW1hcOeahOWuueWZqGRvbVxuICAgKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0gZG9tXG4gICAqL1xuXG5cbiAgTWluaU1hcC5wcm90b3R5cGUuZ2V0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gIH07XG5cbiAgTWluaU1hcC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdldCgnY2FudmFzJykuZGVzdHJveSgpO1xuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gICAgY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY29udGFpbmVyKTtcbiAgfTtcblxuICByZXR1cm4gTWluaU1hcDtcbn0oQmFzZSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1pbmlNYXA7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/minimap/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/snapline/index.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/snapline/index.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/@antv/g6-core/es/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\n\nvar pointLineDistance = _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Util\"].pointLineDistance; // 对齐线样式\n\nvar alignLineStyle = {\n stroke: '#FA8C16',\n lineWidth: 1\n};\n\nvar SnapLine =\n/** @class */\nfunction (_super) {\n __extends(SnapLine, _super);\n\n function SnapLine(props) {\n return _super.call(this, props) || this;\n }\n\n SnapLine.prototype.getDefaultCfgs = function () {\n return {\n line: alignLineStyle,\n\n /**\n * item align type\n * @type {String|True|False}\n */\n itemAlignType: 'center',\n\n /**\n * tolerance to item force align\n * @type {String|True|False}\n */\n tolerance: 5,\n horizontalLines: {},\n verticalLines: {},\n alignLines: []\n };\n };\n\n SnapLine.prototype.init = function () {}; // class-methods-use-this\n\n\n SnapLine.prototype.getEvents = function () {\n return {\n 'node:dragstart': 'onDragStart',\n 'node:drag': 'onDrag',\n 'node:dragend': 'onDragEnd'\n };\n };\n\n SnapLine.prototype.onDragStart = function () {\n this.initBoxLine();\n };\n\n SnapLine.prototype.onDrag = function (e) {\n var item = e.item; // 计算辅助线位置,拖动过程中更新辅助线\n\n var delegateShape = item.get('delegateShape') || item;\n var bbox = delegateShape.getBBox();\n var model = item.getModel();\n var dx = model.x - bbox.x;\n var dy = model.y - bbox.y;\n this.show({\n x: bbox.minX + dx,\n y: bbox.minY + dy\n }, {\n width: bbox.width,\n height: bbox.height\n });\n };\n\n SnapLine.prototype.onDragEnd = function () {\n // 拖动结束时候删除辅助线\n this.destory();\n };\n /**\n * 每次开始拖动之前,计算出所有节点在水平和垂直方向上,左中右三条中线,并缓存起来\n *\n * @param {object} item Node节点\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.initBoxLine = function () {\n var _a = this._cfgs,\n horizontalLines = _a.horizontalLines,\n verticalLines = _a.verticalLines,\n itemAlignType = _a.itemAlignType;\n var graph = this.get('graph');\n var nodes = graph.getNodes();\n nodes.forEach(function (item) {\n var bbox = item.getBBox();\n var nodeId = item.get('id'); // 设置水平方向辅助线\n\n if (itemAlignType === true || itemAlignType === 'horizontal') {\n // tltr: top left top right\n // lcrc: left center right center\n // blbr: bottom left bottom right\n horizontalLines[\"\".concat(nodeId, \"tltr\")] = [bbox.minX, bbox.minY, bbox.maxX, bbox.minY, item];\n horizontalLines[\"\".concat(nodeId, \"lcrc\")] = [bbox.minX, bbox.centerY, bbox.maxX, bbox.centerY, item];\n horizontalLines[\"\".concat(nodeId, \"blbr\")] = [bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY, item];\n } else if (itemAlignType === 'center') {\n horizontalLines[\"\".concat(nodeId, \"lcrc\")] = [bbox.minX, bbox.centerY, bbox.maxX, bbox.centerY, item];\n } // 设置垂直方向辅助线\n\n\n if (itemAlignType === true || itemAlignType === 'vertical') {\n // tlbl: top left bottom left\n // tcbc: top center bottom center\n // trbr: top right bottom right\n verticalLines[\"\".concat(nodeId, \"tlbl\")] = [bbox.minX, bbox.minY, bbox.minX, bbox.maxY, item];\n verticalLines[\"\".concat(nodeId, \"tcbc\")] = [bbox.centerX, bbox.minY, bbox.centerX, bbox.maxY, item];\n verticalLines[\"\".concat(nodeId, \"trbr\")] = [bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY, item];\n } else if (itemAlignType === 'center') {\n verticalLines[\"\".concat(nodeId, \"tcbc\")] = [bbox.centerX, bbox.minY, bbox.centerX, bbox.maxY, item];\n }\n });\n };\n /**\n * 显示AlignLine\n *\n * @param {object} point 起始点\n * @param {object} bbox BBox\n * @returns\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.show = function (point, bbox) {\n var originPoint = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mix\"])({}, point);\n this.itemAlign(point, bbox, originPoint);\n return point;\n };\n /**\n * 拖动拖出中添加辅助线\n *\n * @param {object} point 起始点\n * @param {object} bbox 代理形状的bbox\n * @param {object} originPoint 原始点,同point\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.itemAlign = function (point, bbox, originPoint) {\n var _this = this;\n\n var _a = this._cfgs,\n horizontalLines = _a.horizontalLines,\n verticalLines = _a.verticalLines,\n tolerance = _a.tolerance;\n var tc = {\n x: originPoint.x + bbox.width / 2,\n y: originPoint.y\n };\n var cc = {\n x: originPoint.x + bbox.width / 2,\n y: originPoint.y + bbox.height / 2\n };\n var bc = {\n x: originPoint.x + bbox.width / 2,\n y: originPoint.y + bbox.height\n };\n var lc = {\n x: originPoint.x,\n y: originPoint.y + bbox.height / 2\n };\n var rc = {\n x: originPoint.x + bbox.width,\n y: originPoint.y + bbox.height / 2\n };\n var horizontalDis = [];\n var verticalDis = [];\n var alignCfg = null;\n this.clearAlignLine();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(horizontalLines, function (line) {\n if (line[4].isVisible) {\n horizontalDis.push(_this.getLineDisObject(line, tc));\n horizontalDis.push(_this.getLineDisObject(line, cc));\n horizontalDis.push(_this.getLineDisObject(line, bc));\n }\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(verticalLines, function (line) {\n if (line[4].isVisible) {\n verticalDis.push(_this.getLineDisObject(line, lc));\n verticalDis.push(_this.getLineDisObject(line, cc));\n verticalDis.push(_this.getLineDisObject(line, rc));\n }\n });\n horizontalDis.sort(function (a, b) {\n return a.dis - b.dis;\n });\n verticalDis.sort(function (a, b) {\n return a.dis - b.dis;\n });\n\n if (horizontalDis.length !== 0 && horizontalDis[0].dis < tolerance) {\n point.y = horizontalDis[0].line[1] - horizontalDis[0].point.y + originPoint.y;\n alignCfg = {\n type: 'item',\n horizontals: [horizontalDis[0]]\n };\n\n for (var i = 1; i < 3; i++) {\n if (horizontalDis[0].dis === horizontalDis[i].dis) {\n alignCfg.horizontals.push(horizontalDis[i]);\n }\n }\n }\n\n if (verticalDis.length !== 0 && verticalDis[0].dis < tolerance) {\n point.x = verticalDis[0].line[0] - verticalDis[0].point.x + originPoint.x;\n\n if (!alignCfg) {\n alignCfg = {\n type: 'item',\n verticals: [verticalDis[0]]\n };\n } else {\n alignCfg.verticals = [verticalDis[0]];\n }\n\n for (var i = 1; i < 3; i++) {\n if (verticalDis[0].dis === verticalDis[i].dis) {\n alignCfg.verticals.push(verticalDis[i]);\n }\n }\n }\n\n if (alignCfg) {\n alignCfg.bbox = bbox;\n this.addAlignLine(alignCfg);\n }\n };\n /**\n * 根据配置项添加辅助线\n *\n * @param {object} cfg\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.addAlignLine = function (cfg) {\n var bbox = cfg.bbox,\n type = cfg.type,\n horizontals = cfg.horizontals,\n verticals = cfg.verticals;\n var _a = this._cfgs,\n lineStyle = _a.line,\n alignLines = _a.alignLines;\n var graph = this.get('graph');\n var group = graph.get('group');\n\n if (type === 'item') {\n if (horizontals) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(horizontals, function (horizontal) {\n var refLine = horizontal.line,\n refPoint = horizontal.point;\n var lineCenterX = (refLine[0] + refLine[2]) / 2;\n var x1;\n var x2;\n\n if (refPoint.x < lineCenterX) {\n x1 = refPoint.x - bbox.width / 2;\n x2 = Math.max(refLine[0], refLine[2]);\n } else {\n x1 = refPoint.x + bbox.width / 2;\n x2 = Math.min(refLine[0], refLine[2]);\n }\n\n var lineAttrs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mix\"])({\n x1: x1,\n y1: refLine[1],\n x2: x2,\n y2: refLine[1]\n }, lineStyle);\n var line = group.addShape('line', {\n attrs: lineAttrs,\n capture: false\n });\n alignLines.push(line);\n });\n }\n\n if (verticals) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(verticals, function (vertical) {\n var refLine = vertical.line,\n refPoint = vertical.point;\n var lineCenterY = (refLine[1] + refLine[3]) / 2;\n var y1;\n var y2;\n\n if (refPoint.y < lineCenterY) {\n y1 = refPoint.y - bbox.height / 2;\n y2 = Math.max(refLine[1], refLine[3]);\n } else {\n y1 = refPoint.y + bbox.height / 2;\n y2 = Math.min(refLine[1], refLine[3]);\n }\n\n var lineAtts = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mix\"])({\n x1: refLine[0],\n y1: y1,\n x2: refLine[0],\n y2: y2\n }, lineStyle);\n var line = group.addShape('line', {\n attrs: lineAtts,\n capture: false\n });\n alignLines.push(line);\n });\n }\n }\n };\n /**\n * 获取点到线的距离\n *\n * @param {array} line [x1, y1, x2, y2] 线的四个点\n * @param {object} point 点的x和y坐标点 {x, y}\n * @returns\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.getLineDisObject = function (line, point) {\n return {\n line: line,\n point: point,\n dis: pointLineDistance(line, point)\n };\n };\n\n SnapLine.prototype.getContainer = function () {\n return this.get('container');\n };\n /**\n * 拖动过程中,清楚上次绘制的线\n *\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.clearAlignLine = function () {\n var alignLines = this._cfgs.alignLines;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(alignLines, function (line) {\n line.remove();\n });\n alignLines.length = 0;\n };\n /**\n * 拖动结束时候,情况缓存的节点的辅助线,同时删除绘制的线\n *\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.destory = function () {\n var _a = this._cfgs,\n horizontalLines = _a.horizontalLines,\n verticalLines = _a.verticalLines;\n var graph = this.get('graph');\n var nodes = graph.getNodes();\n nodes.forEach(function (node) {\n var itemId = node.get('id');\n delete horizontalLines[\"\".concat(itemId, \"tltr\")];\n delete horizontalLines[\"\".concat(itemId, \"lcrc\")];\n delete horizontalLines[\"\".concat(itemId, \"blbr\")];\n delete verticalLines[\"\".concat(itemId, \"tlbl\")];\n delete verticalLines[\"\".concat(itemId, \"tcbc\")];\n delete verticalLines[\"\".concat(itemId, \"trbr\")];\n });\n this.clearAlignLine();\n };\n\n return SnapLine;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SnapLine);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3NuYXBsaW5lL2luZGV4LmpzP2QyNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRXNDO0FBQ0Y7QUFDVjtBQUMzQix3QkFBd0Isa0RBQUksbUJBQW1COztBQUUvQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTs7QUFFQSwyQ0FBMkM7OztBQUczQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLHNCQUFzQixzREFBRyxHQUFHO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEIsc0RBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsc0RBQUc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQixhQUFhLE9BQU8saUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLHVFQUFRIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBsdWdpbi9lcy9zbmFwbGluZS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2V4dGVuZHMgPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9leHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gZXh0ZW5kU3RhdGljcyhkLCBiKSB7XG4gICAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZC5fX3Byb3RvX18gPSBiO1xuICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGZvciAodmFyIHAgaW4gYikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICAgIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgZnVuY3Rpb24gX18oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICB9XG5cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gIH07XG59KCk7XG5cbmltcG9ydCB7IGVhY2gsIG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IEJhc2UgZnJvbSAnLi4vYmFzZSc7XG52YXIgcG9pbnRMaW5lRGlzdGFuY2UgPSBVdGlsLnBvaW50TGluZURpc3RhbmNlOyAvLyDlr7npvZDnur/moLflvI9cblxudmFyIGFsaWduTGluZVN0eWxlID0ge1xuICBzdHJva2U6ICcjRkE4QzE2JyxcbiAgbGluZVdpZHRoOiAxXG59O1xuXG52YXIgU25hcExpbmUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoU25hcExpbmUsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gU25hcExpbmUocHJvcHMpIHtcbiAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgcHJvcHMpIHx8IHRoaXM7XG4gIH1cblxuICBTbmFwTGluZS5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IGFsaWduTGluZVN0eWxlLFxuXG4gICAgICAvKipcbiAgICAgICAqIGl0ZW0gYWxpZ24gdHlwZVxuICAgICAgICogQHR5cGUge1N0cmluZ3xUcnVlfEZhbHNlfVxuICAgICAgICovXG4gICAgICBpdGVtQWxpZ25UeXBlOiAnY2VudGVyJyxcblxuICAgICAgLyoqXG4gICAgICAgKiB0b2xlcmFuY2UgdG8gaXRlbSBmb3JjZSBhbGlnblxuICAgICAgICogQHR5cGUge1N0cmluZ3xUcnVlfEZhbHNlfVxuICAgICAgICovXG4gICAgICB0b2xlcmFuY2U6IDUsXG4gICAgICBob3Jpem9udGFsTGluZXM6IHt9LFxuICAgICAgdmVydGljYWxMaW5lczoge30sXG4gICAgICBhbGlnbkxpbmVzOiBbXVxuICAgIH07XG4gIH07XG5cbiAgU25hcExpbmUucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7fTsgLy8gY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuXG5cbiAgU25hcExpbmUucHJvdG90eXBlLmdldEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ25vZGU6ZHJhZ3N0YXJ0JzogJ29uRHJhZ1N0YXJ0JyxcbiAgICAgICdub2RlOmRyYWcnOiAnb25EcmFnJyxcbiAgICAgICdub2RlOmRyYWdlbmQnOiAnb25EcmFnRW5kJ1xuICAgIH07XG4gIH07XG5cbiAgU25hcExpbmUucHJvdG90eXBlLm9uRHJhZ1N0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaW5pdEJveExpbmUoKTtcbiAgfTtcblxuICBTbmFwTGluZS5wcm90b3R5cGUub25EcmFnID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgaXRlbSA9IGUuaXRlbTsgLy8g6K6h566X6L6F5Yqp57q/5L2N572uLOaLluWKqOi/h+eoi+S4reabtOaWsOi+heWKqee6v1xuXG4gICAgdmFyIGRlbGVnYXRlU2hhcGUgPSBpdGVtLmdldCgnZGVsZWdhdGVTaGFwZScpIHx8IGl0ZW07XG4gICAgdmFyIGJib3ggPSBkZWxlZ2F0ZVNoYXBlLmdldEJCb3goKTtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdmFyIGR4ID0gbW9kZWwueCAtIGJib3gueDtcbiAgICB2YXIgZHkgPSBtb2RlbC55IC0gYmJveC55O1xuICAgIHRoaXMuc2hvdyh7XG4gICAgICB4OiBiYm94Lm1pblggKyBkeCxcbiAgICAgIHk6IGJib3gubWluWSArIGR5XG4gICAgfSwge1xuICAgICAgd2lkdGg6IGJib3gud2lkdGgsXG4gICAgICBoZWlnaHQ6IGJib3guaGVpZ2h0XG4gICAgfSk7XG4gIH07XG5cbiAgU25hcExpbmUucHJvdG90eXBlLm9uRHJhZ0VuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyDmi5bliqjnu5PmnZ/ml7blgJnliKDpmaTovoXliqnnur9cbiAgICB0aGlzLmRlc3RvcnkoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOavj+asoeW8gOWni+aLluWKqOS5i+WJje+8jOiuoeeul+WHuuaJgOacieiKgueCueWcqOawtOW5s+WSjOWeguebtOaWueWQkeS4iu+8jOW3puS4reWPs+S4ieadoeS4ree6v++8jOW5tue8k+WtmOi1t+adpVxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaXRlbSBOb2Rl6IqC54K5XG4gICAqIEBtZW1iZXJvZiBBbGlnbkxpbmVcbiAgICovXG5cblxuICBTbmFwTGluZS5wcm90b3R5cGUuaW5pdEJveExpbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hID0gdGhpcy5fY2ZncyxcbiAgICAgICAgaG9yaXpvbnRhbExpbmVzID0gX2EuaG9yaXpvbnRhbExpbmVzLFxuICAgICAgICB2ZXJ0aWNhbExpbmVzID0gX2EudmVydGljYWxMaW5lcyxcbiAgICAgICAgaXRlbUFsaWduVHlwZSA9IF9hLml0ZW1BbGlnblR5cGU7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIG5vZGVzID0gZ3JhcGguZ2V0Tm9kZXMoKTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgYmJveCA9IGl0ZW0uZ2V0QkJveCgpO1xuICAgICAgdmFyIG5vZGVJZCA9IGl0ZW0uZ2V0KCdpZCcpOyAvLyDorr7nva7msLTlubPmlrnlkJHovoXliqnnur9cblxuICAgICAgaWYgKGl0ZW1BbGlnblR5cGUgPT09IHRydWUgfHwgaXRlbUFsaWduVHlwZSA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgIC8vIHRsdHI6IHRvcCBsZWZ0IHRvcCByaWdodFxuICAgICAgICAvLyBsY3JjOiBsZWZ0IGNlbnRlciByaWdodCBjZW50ZXJcbiAgICAgICAgLy8gYmxicjogYm90dG9tIGxlZnQgYm90dG9tIHJpZ2h0XG4gICAgICAgIGhvcml6b250YWxMaW5lc1tcIlwiLmNvbmNhdChub2RlSWQsIFwidGx0clwiKV0gPSBbYmJveC5taW5YLCBiYm94Lm1pblksIGJib3gubWF4WCwgYmJveC5taW5ZLCBpdGVtXTtcbiAgICAgICAgaG9yaXpvbnRhbExpbmVzW1wiXCIuY29uY2F0KG5vZGVJZCwgXCJsY3JjXCIpXSA9IFtiYm94Lm1pblgsIGJib3guY2VudGVyWSwgYmJveC5tYXhYLCBiYm94LmNlbnRlclksIGl0ZW1dO1xuICAgICAgICBob3Jpem9udGFsTGluZXNbXCJcIi5jb25jYXQobm9kZUlkLCBcImJsYnJcIildID0gW2Jib3gubWluWCwgYmJveC5tYXhZLCBiYm94Lm1heFgsIGJib3gubWF4WSwgaXRlbV07XG4gICAgICB9IGVsc2UgaWYgKGl0ZW1BbGlnblR5cGUgPT09ICdjZW50ZXInKSB7XG4gICAgICAgIGhvcml6b250YWxMaW5lc1tcIlwiLmNvbmNhdChub2RlSWQsIFwibGNyY1wiKV0gPSBbYmJveC5taW5YLCBiYm94LmNlbnRlclksIGJib3gubWF4WCwgYmJveC5jZW50ZXJZLCBpdGVtXTtcbiAgICAgIH0gLy8g6K6+572u5Z6C55u05pa55ZCR6L6F5Yqp57q/XG5cblxuICAgICAgaWYgKGl0ZW1BbGlnblR5cGUgPT09IHRydWUgfHwgaXRlbUFsaWduVHlwZSA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAvLyB0bGJsOiB0b3AgbGVmdCBib3R0b20gbGVmdFxuICAgICAgICAvLyB0Y2JjOiB0b3AgY2VudGVyIGJvdHRvbSBjZW50ZXJcbiAgICAgICAgLy8gdHJicjogdG9wIHJpZ2h0IGJvdHRvbSByaWdodFxuICAgICAgICB2ZXJ0aWNhbExpbmVzW1wiXCIuY29uY2F0KG5vZGVJZCwgXCJ0bGJsXCIpXSA9IFtiYm94Lm1pblgsIGJib3gubWluWSwgYmJveC5taW5YLCBiYm94Lm1heFksIGl0ZW1dO1xuICAgICAgICB2ZXJ0aWNhbExpbmVzW1wiXCIuY29uY2F0KG5vZGVJZCwgXCJ0Y2JjXCIpXSA9IFtiYm94LmNlbnRlclgsIGJib3gubWluWSwgYmJveC5jZW50ZXJYLCBiYm94Lm1heFksIGl0ZW1dO1xuICAgICAgICB2ZXJ0aWNhbExpbmVzW1wiXCIuY29uY2F0KG5vZGVJZCwgXCJ0cmJyXCIpXSA9IFtiYm94Lm1heFgsIGJib3gubWluWSwgYmJveC5tYXhYLCBiYm94Lm1heFksIGl0ZW1dO1xuICAgICAgfSBlbHNlIGlmIChpdGVtQWxpZ25UeXBlID09PSAnY2VudGVyJykge1xuICAgICAgICB2ZXJ0aWNhbExpbmVzW1wiXCIuY29uY2F0KG5vZGVJZCwgXCJ0Y2JjXCIpXSA9IFtiYm94LmNlbnRlclgsIGJib3gubWluWSwgYmJveC5jZW50ZXJYLCBiYm94Lm1heFksIGl0ZW1dO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5pi+56S6QWxpZ25MaW5lXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwb2ludCDotbflp4vngrlcbiAgICogQHBhcmFtIHtvYmplY3R9IGJib3ggQkJveFxuICAgKiBAcmV0dXJuc1xuICAgKiBAbWVtYmVyb2YgQWxpZ25MaW5lXG4gICAqL1xuXG5cbiAgU25hcExpbmUucHJvdG90eXBlLnNob3cgPSBmdW5jdGlvbiAocG9pbnQsIGJib3gpIHtcbiAgICB2YXIgb3JpZ2luUG9pbnQgPSBtaXgoe30sIHBvaW50KTtcbiAgICB0aGlzLml0ZW1BbGlnbihwb2ludCwgYmJveCwgb3JpZ2luUG9pbnQpO1xuICAgIHJldHVybiBwb2ludDtcbiAgfTtcbiAgLyoqXG4gICAqIOaLluWKqOaLluWHuuS4rea3u+WKoOi+heWKqee6v1xuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcG9pbnQg6LW35aeL54K5XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBiYm94IOS7o+eQhuW9oueKtueahGJib3hcbiAgICogQHBhcmFtIHtvYmplY3R9IG9yaWdpblBvaW50IOWOn+Wni+eCue+8jOWQjHBvaW50XG4gICAqIEBtZW1iZXJvZiBBbGlnbkxpbmVcbiAgICovXG5cblxuICBTbmFwTGluZS5wcm90b3R5cGUuaXRlbUFsaWduID0gZnVuY3Rpb24gKHBvaW50LCBiYm94LCBvcmlnaW5Qb2ludCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2EgPSB0aGlzLl9jZmdzLFxuICAgICAgICBob3Jpem9udGFsTGluZXMgPSBfYS5ob3Jpem9udGFsTGluZXMsXG4gICAgICAgIHZlcnRpY2FsTGluZXMgPSBfYS52ZXJ0aWNhbExpbmVzLFxuICAgICAgICB0b2xlcmFuY2UgPSBfYS50b2xlcmFuY2U7XG4gICAgdmFyIHRjID0ge1xuICAgICAgeDogb3JpZ2luUG9pbnQueCArIGJib3gud2lkdGggLyAyLFxuICAgICAgeTogb3JpZ2luUG9pbnQueVxuICAgIH07XG4gICAgdmFyIGNjID0ge1xuICAgICAgeDogb3JpZ2luUG9pbnQueCArIGJib3gud2lkdGggLyAyLFxuICAgICAgeTogb3JpZ2luUG9pbnQueSArIGJib3guaGVpZ2h0IC8gMlxuICAgIH07XG4gICAgdmFyIGJjID0ge1xuICAgICAgeDogb3JpZ2luUG9pbnQueCArIGJib3gud2lkdGggLyAyLFxuICAgICAgeTogb3JpZ2luUG9pbnQueSArIGJib3guaGVpZ2h0XG4gICAgfTtcbiAgICB2YXIgbGMgPSB7XG4gICAgICB4OiBvcmlnaW5Qb2ludC54LFxuICAgICAgeTogb3JpZ2luUG9pbnQueSArIGJib3guaGVpZ2h0IC8gMlxuICAgIH07XG4gICAgdmFyIHJjID0ge1xuICAgICAgeDogb3JpZ2luUG9pbnQueCArIGJib3gud2lkdGgsXG4gICAgICB5OiBvcmlnaW5Qb2ludC55ICsgYmJveC5oZWlnaHQgLyAyXG4gICAgfTtcbiAgICB2YXIgaG9yaXpvbnRhbERpcyA9IFtdO1xuICAgIHZhciB2ZXJ0aWNhbERpcyA9IFtdO1xuICAgIHZhciBhbGlnbkNmZyA9IG51bGw7XG4gICAgdGhpcy5jbGVhckFsaWduTGluZSgpO1xuICAgIGVhY2goaG9yaXpvbnRhbExpbmVzLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgaWYgKGxpbmVbNF0uaXNWaXNpYmxlKSB7XG4gICAgICAgIGhvcml6b250YWxEaXMucHVzaChfdGhpcy5nZXRMaW5lRGlzT2JqZWN0KGxpbmUsIHRjKSk7XG4gICAgICAgIGhvcml6b250YWxEaXMucHVzaChfdGhpcy5nZXRMaW5lRGlzT2JqZWN0KGxpbmUsIGNjKSk7XG4gICAgICAgIGhvcml6b250YWxEaXMucHVzaChfdGhpcy5nZXRMaW5lRGlzT2JqZWN0KGxpbmUsIGJjKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWFjaCh2ZXJ0aWNhbExpbmVzLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgaWYgKGxpbmVbNF0uaXNWaXNpYmxlKSB7XG4gICAgICAgIHZlcnRpY2FsRGlzLnB1c2goX3RoaXMuZ2V0TGluZURpc09iamVjdChsaW5lLCBsYykpO1xuICAgICAgICB2ZXJ0aWNhbERpcy5wdXNoKF90aGlzLmdldExpbmVEaXNPYmplY3QobGluZSwgY2MpKTtcbiAgICAgICAgdmVydGljYWxEaXMucHVzaChfdGhpcy5nZXRMaW5lRGlzT2JqZWN0KGxpbmUsIHJjKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaG9yaXpvbnRhbERpcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYS5kaXMgLSBiLmRpcztcbiAgICB9KTtcbiAgICB2ZXJ0aWNhbERpcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYS5kaXMgLSBiLmRpcztcbiAgICB9KTtcblxuICAgIGlmIChob3Jpem9udGFsRGlzLmxlbmd0aCAhPT0gMCAmJiBob3Jpem9udGFsRGlzWzBdLmRpcyA8IHRvbGVyYW5jZSkge1xuICAgICAgcG9pbnQueSA9IGhvcml6b250YWxEaXNbMF0ubGluZVsxXSAtIGhvcml6b250YWxEaXNbMF0ucG9pbnQueSArIG9yaWdpblBvaW50Lnk7XG4gICAgICBhbGlnbkNmZyA9IHtcbiAgICAgICAgdHlwZTogJ2l0ZW0nLFxuICAgICAgICBob3Jpem9udGFsczogW2hvcml6b250YWxEaXNbMF1dXG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMTsgaSA8IDM7IGkrKykge1xuICAgICAgICBpZiAoaG9yaXpvbnRhbERpc1swXS5kaXMgPT09IGhvcml6b250YWxEaXNbaV0uZGlzKSB7XG4gICAgICAgICAgYWxpZ25DZmcuaG9yaXpvbnRhbHMucHVzaChob3Jpem9udGFsRGlzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJ0aWNhbERpcy5sZW5ndGggIT09IDAgJiYgdmVydGljYWxEaXNbMF0uZGlzIDwgdG9sZXJhbmNlKSB7XG4gICAgICBwb2ludC54ID0gdmVydGljYWxEaXNbMF0ubGluZVswXSAtIHZlcnRpY2FsRGlzWzBdLnBvaW50LnggKyBvcmlnaW5Qb2ludC54O1xuXG4gICAgICBpZiAoIWFsaWduQ2ZnKSB7XG4gICAgICAgIGFsaWduQ2ZnID0ge1xuICAgICAgICAgIHR5cGU6ICdpdGVtJyxcbiAgICAgICAgICB2ZXJ0aWNhbHM6IFt2ZXJ0aWNhbERpc1swXV1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsaWduQ2ZnLnZlcnRpY2FscyA9IFt2ZXJ0aWNhbERpc1swXV07XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgIGlmICh2ZXJ0aWNhbERpc1swXS5kaXMgPT09IHZlcnRpY2FsRGlzW2ldLmRpcykge1xuICAgICAgICAgIGFsaWduQ2ZnLnZlcnRpY2Fscy5wdXNoKHZlcnRpY2FsRGlzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhbGlnbkNmZykge1xuICAgICAgYWxpZ25DZmcuYmJveCA9IGJib3g7XG4gICAgICB0aGlzLmFkZEFsaWduTGluZShhbGlnbkNmZyk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5qC55o2u6YWN572u6aG55re75Yqg6L6F5Yqp57q/XG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjZmdcbiAgICogQG1lbWJlcm9mIEFsaWduTGluZVxuICAgKi9cblxuXG4gIFNuYXBMaW5lLnByb3RvdHlwZS5hZGRBbGlnbkxpbmUgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgdmFyIGJib3ggPSBjZmcuYmJveCxcbiAgICAgICAgdHlwZSA9IGNmZy50eXBlLFxuICAgICAgICBob3Jpem9udGFscyA9IGNmZy5ob3Jpem9udGFscyxcbiAgICAgICAgdmVydGljYWxzID0gY2ZnLnZlcnRpY2FscztcbiAgICB2YXIgX2EgPSB0aGlzLl9jZmdzLFxuICAgICAgICBsaW5lU3R5bGUgPSBfYS5saW5lLFxuICAgICAgICBhbGlnbkxpbmVzID0gX2EuYWxpZ25MaW5lcztcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgZ3JvdXAgPSBncmFwaC5nZXQoJ2dyb3VwJyk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ2l0ZW0nKSB7XG4gICAgICBpZiAoaG9yaXpvbnRhbHMpIHtcbiAgICAgICAgZWFjaChob3Jpem9udGFscywgZnVuY3Rpb24gKGhvcml6b250YWwpIHtcbiAgICAgICAgICB2YXIgcmVmTGluZSA9IGhvcml6b250YWwubGluZSxcbiAgICAgICAgICAgICAgcmVmUG9pbnQgPSBob3Jpem9udGFsLnBvaW50O1xuICAgICAgICAgIHZhciBsaW5lQ2VudGVyWCA9IChyZWZMaW5lWzBdICsgcmVmTGluZVsyXSkgLyAyO1xuICAgICAgICAgIHZhciB4MTtcbiAgICAgICAgICB2YXIgeDI7XG5cbiAgICAgICAgICBpZiAocmVmUG9pbnQueCA8IGxpbmVDZW50ZXJYKSB7XG4gICAgICAgICAgICB4MSA9IHJlZlBvaW50LnggLSBiYm94LndpZHRoIC8gMjtcbiAgICAgICAgICAgIHgyID0gTWF0aC5tYXgocmVmTGluZVswXSwgcmVmTGluZVsyXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHgxID0gcmVmUG9pbnQueCArIGJib3gud2lkdGggLyAyO1xuICAgICAgICAgICAgeDIgPSBNYXRoLm1pbihyZWZMaW5lWzBdLCByZWZMaW5lWzJdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgbGluZUF0dHJzID0gbWl4KHtcbiAgICAgICAgICAgIHgxOiB4MSxcbiAgICAgICAgICAgIHkxOiByZWZMaW5lWzFdLFxuICAgICAgICAgICAgeDI6IHgyLFxuICAgICAgICAgICAgeTI6IHJlZkxpbmVbMV1cbiAgICAgICAgICB9LCBsaW5lU3R5bGUpO1xuICAgICAgICAgIHZhciBsaW5lID0gZ3JvdXAuYWRkU2hhcGUoJ2xpbmUnLCB7XG4gICAgICAgICAgICBhdHRyczogbGluZUF0dHJzLFxuICAgICAgICAgICAgY2FwdHVyZTogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhbGlnbkxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVydGljYWxzKSB7XG4gICAgICAgIGVhY2godmVydGljYWxzLCBmdW5jdGlvbiAodmVydGljYWwpIHtcbiAgICAgICAgICB2YXIgcmVmTGluZSA9IHZlcnRpY2FsLmxpbmUsXG4gICAgICAgICAgICAgIHJlZlBvaW50ID0gdmVydGljYWwucG9pbnQ7XG4gICAgICAgICAgdmFyIGxpbmVDZW50ZXJZID0gKHJlZkxpbmVbMV0gKyByZWZMaW5lWzNdKSAvIDI7XG4gICAgICAgICAgdmFyIHkxO1xuICAgICAgICAgIHZhciB5MjtcblxuICAgICAgICAgIGlmIChyZWZQb2ludC55IDwgbGluZUNlbnRlclkpIHtcbiAgICAgICAgICAgIHkxID0gcmVmUG9pbnQueSAtIGJib3guaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIHkyID0gTWF0aC5tYXgocmVmTGluZVsxXSwgcmVmTGluZVszXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHkxID0gcmVmUG9pbnQueSArIGJib3guaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIHkyID0gTWF0aC5taW4ocmVmTGluZVsxXSwgcmVmTGluZVszXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGxpbmVBdHRzID0gbWl4KHtcbiAgICAgICAgICAgIHgxOiByZWZMaW5lWzBdLFxuICAgICAgICAgICAgeTE6IHkxLFxuICAgICAgICAgICAgeDI6IHJlZkxpbmVbMF0sXG4gICAgICAgICAgICB5MjogeTJcbiAgICAgICAgICB9LCBsaW5lU3R5bGUpO1xuICAgICAgICAgIHZhciBsaW5lID0gZ3JvdXAuYWRkU2hhcGUoJ2xpbmUnLCB7XG4gICAgICAgICAgICBhdHRyczogbGluZUF0dHMsXG4gICAgICAgICAgICBjYXB0dXJlOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGFsaWduTGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog6I635Y+W54K55Yiw57q/55qE6Led56a7XG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXl9IGxpbmUgW3gxLCB5MSwgeDIsIHkyXSDnur/nmoTlm5vkuKrngrlcbiAgICogQHBhcmFtIHtvYmplY3R9IHBvaW50IOeCueeahHjlkox55Z2Q5qCH54K5IHt4LCB5fVxuICAgKiBAcmV0dXJuc1xuICAgKiBAbWVtYmVyb2YgQWxpZ25MaW5lXG4gICAqL1xuXG5cbiAgU25hcExpbmUucHJvdG90eXBlLmdldExpbmVEaXNPYmplY3QgPSBmdW5jdGlvbiAobGluZSwgcG9pbnQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogbGluZSxcbiAgICAgIHBvaW50OiBwb2ludCxcbiAgICAgIGRpczogcG9pbnRMaW5lRGlzdGFuY2UobGluZSwgcG9pbnQpXG4gICAgfTtcbiAgfTtcblxuICBTbmFwTGluZS5wcm90b3R5cGUuZ2V0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gIH07XG4gIC8qKlxuICAgKiDmi5bliqjov4fnqIvkuK3vvIzmuIXmpZrkuIrmrKHnu5jliLbnmoTnur9cbiAgICpcbiAgICogQG1lbWJlcm9mIEFsaWduTGluZVxuICAgKi9cblxuXG4gIFNuYXBMaW5lLnByb3RvdHlwZS5jbGVhckFsaWduTGluZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYWxpZ25MaW5lcyA9IHRoaXMuX2NmZ3MuYWxpZ25MaW5lcztcbiAgICBlYWNoKGFsaWduTGluZXMsIGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICBsaW5lLnJlbW92ZSgpO1xuICAgIH0pO1xuICAgIGFsaWduTGluZXMubGVuZ3RoID0gMDtcbiAgfTtcbiAgLyoqXG4gICAqIOaLluWKqOe7k+adn+aXtuWAme+8jOaDheWGtee8k+WtmOeahOiKgueCueeahOi+heWKqee6v++8jOWQjOaXtuWIoOmZpOe7mOWItueahOe6v1xuICAgKlxuICAgKiBAbWVtYmVyb2YgQWxpZ25MaW5lXG4gICAqL1xuXG5cbiAgU25hcExpbmUucHJvdG90eXBlLmRlc3RvcnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hID0gdGhpcy5fY2ZncyxcbiAgICAgICAgaG9yaXpvbnRhbExpbmVzID0gX2EuaG9yaXpvbnRhbExpbmVzLFxuICAgICAgICB2ZXJ0aWNhbExpbmVzID0gX2EudmVydGljYWxMaW5lcztcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgbm9kZXMgPSBncmFwaC5nZXROb2RlcygpO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBpdGVtSWQgPSBub2RlLmdldCgnaWQnKTtcbiAgICAgIGRlbGV0ZSBob3Jpem9udGFsTGluZXNbXCJcIi5jb25jYXQoaXRlbUlkLCBcInRsdHJcIildO1xuICAgICAgZGVsZXRlIGhvcml6b250YWxMaW5lc1tcIlwiLmNvbmNhdChpdGVtSWQsIFwibGNyY1wiKV07XG4gICAgICBkZWxldGUgaG9yaXpvbnRhbExpbmVzW1wiXCIuY29uY2F0KGl0ZW1JZCwgXCJibGJyXCIpXTtcbiAgICAgIGRlbGV0ZSB2ZXJ0aWNhbExpbmVzW1wiXCIuY29uY2F0KGl0ZW1JZCwgXCJ0bGJsXCIpXTtcbiAgICAgIGRlbGV0ZSB2ZXJ0aWNhbExpbmVzW1wiXCIuY29uY2F0KGl0ZW1JZCwgXCJ0Y2JjXCIpXTtcbiAgICAgIGRlbGV0ZSB2ZXJ0aWNhbExpbmVzW1wiXCIuY29uY2F0KGl0ZW1JZCwgXCJ0cmJyXCIpXTtcbiAgICB9KTtcbiAgICB0aGlzLmNsZWFyQWxpZ25MaW5lKCk7XG4gIH07XG5cbiAgcmV0dXJuIFNuYXBMaW5lO1xufShCYXNlKTtcblxuZXhwb3J0IGRlZmF1bHQgU25hcExpbmU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/snapline/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/timeBar/constant.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/timeBar/constant.js ***! \*************************************************************/ /*! exports provided: TIMELINE_START, TIMELINE_END, VALUE_CHANGE, TIMEBAR_CONFIG_CHANGE, PLAY_PAUSE_BTN, NEXT_STEP_BTN, PRE_STEP_BTN */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TIMELINE_START\", function() { return TIMELINE_START; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TIMELINE_END\", function() { return TIMELINE_END; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VALUE_CHANGE\", function() { return VALUE_CHANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TIMEBAR_CONFIG_CHANGE\", function() { return TIMEBAR_CONFIG_CHANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PLAY_PAUSE_BTN\", function() { return PLAY_PAUSE_BTN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NEXT_STEP_BTN\", function() { return NEXT_STEP_BTN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PRE_STEP_BTN\", function() { return PRE_STEP_BTN; });\nvar TIMELINE_START = 'timebarstartplay';\nvar TIMELINE_END = 'timebarendplay';\nvar VALUE_CHANGE = 'valuechange';\nvar TIMEBAR_CONFIG_CHANGE = 'timebarConfigChanged';\nvar PLAY_PAUSE_BTN = 'playPauseBtn';\nvar NEXT_STEP_BTN = 'nextStepBtn';\nvar PRE_STEP_BTN = 'preStepBtn';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvY29uc3RhbnQuanM/MTg2ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvY29uc3RhbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIFRJTUVMSU5FX1NUQVJUID0gJ3RpbWViYXJzdGFydHBsYXknO1xuZXhwb3J0IHZhciBUSU1FTElORV9FTkQgPSAndGltZWJhcmVuZHBsYXknO1xuZXhwb3J0IHZhciBWQUxVRV9DSEFOR0UgPSAndmFsdWVjaGFuZ2UnO1xuZXhwb3J0IHZhciBUSU1FQkFSX0NPTkZJR19DSEFOR0UgPSAndGltZWJhckNvbmZpZ0NoYW5nZWQnO1xuZXhwb3J0IHZhciBQTEFZX1BBVVNFX0JUTiA9ICdwbGF5UGF1c2VCdG4nO1xuZXhwb3J0IHZhciBORVhUX1NURVBfQlROID0gJ25leHRTdGVwQnRuJztcbmV4cG9ydCB2YXIgUFJFX1NURVBfQlROID0gJ3ByZVN0ZXBCdG4nOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/timeBar/constant.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/timeBar/controllerBtn.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/timeBar/controllerBtn.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _timeButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./timeButton */ \"./node_modules/@antv/g6-plugin/es/timeBar/timeButton.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/g6-plugin/es/timeBar/constant.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__[\"ext\"].transform;\nvar DEFAULT_RECT_FILL = '#aaa';\nvar DEFAULT_RECT_STROKE = 'green';\nvar DEFAULT_PLAYBTN_STYLE = {\n fill: '#aaa',\n fillOpacity: 0.35,\n stroke: '#aaa'\n};\nvar DEFAULT_PREBTN_STYLE = {\n fill: '#fff'\n};\nvar DEFAULT_NEXTBTN_STYLE = {\n fill: 'green'\n};\nvar DEFAULT_SPEED_CONTROLLER_STYLE = {\n pointer: {\n fill: '#aaa',\n lineWidth: 0\n },\n scroller: {\n stroke: '#aaa',\n fill: '#aaa',\n lineWidth: 1,\n lineAppendWidth: 5,\n cursor: 'pointer'\n },\n text: {\n fill: '#aaa',\n textBaseline: 'top'\n }\n};\nvar DEFAULT_TIMETYPE_CONTROLLER_STYLE = {\n check: {\n stroke: 'green',\n lineWidth: 3\n },\n box: {\n fill: '#fff',\n stroke: '#aaa',\n lineWidth: 2,\n radius: 3,\n width: 12,\n height: 12\n },\n text: {\n fill: '#aaa',\n fontSize: 12,\n textBaseline: 'top'\n }\n};\nvar DEFAULT_CONTROLLER_CONFIG = {\n speed: 1,\n loop: false,\n fill: '#fff',\n stroke: '#fff',\n hideTimeTypeController: false,\n preBtnStyle: {\n fill: '#aaa',\n stroke: '#aaa'\n },\n nextBtnStyle: {\n fill: '#aaa',\n stroke: '#aaa'\n },\n playBtnStyle: {\n fill: '#aaa',\n stroke: '#aaa',\n fillOpacity: 0.05\n },\n speedControllerStyle: DEFAULT_SPEED_CONTROLLER_STYLE,\n timeTypeControllerStyle: DEFAULT_TIMETYPE_CONTROLLER_STYLE\n};\nvar SPEED_CONTROLLER_OFFSET = 110;\nvar TOGGLE_MODEL_OFFSET = 50;\n\nvar ControllerBtn =\n/** @class */\nfunction () {\n function ControllerBtn(cfg) {\n this.controllerCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"deepMix\"])({}, DEFAULT_CONTROLLER_CONFIG, cfg);\n this.group = cfg.group;\n this.controllerGroup = this.group.addGroup({\n name: 'controller-group'\n });\n this.speedAxisY = [];\n this.currentSpeed = this.controllerCfg.speed;\n this.currentType = 'range';\n this.fontFamily = cfg.fontFamily || 'Arial, sans-serif';\n this.init();\n }\n\n ControllerBtn.prototype.init = function () {\n this.renderPlayButton();\n };\n /** 获取播放键 marker path */\n\n\n ControllerBtn.prototype.getNextMarkerPath = function (x, y, len) {\n return [['M', x, y - len], ['L', x + len, y], ['L', x, y + len], ['Z', x, y - len], ['M', x, y], ['L', x - len, y - len], ['L', x - len, y + len], ['Z']];\n };\n\n ControllerBtn.prototype.getPreMarkerPath = function (x, y, len) {\n return [['M', x, y - len], ['L', x - len, y], ['L', x, y + len], ['L', x, y - len], ['M', x, y], ['L', x + len, y - len], ['L', x + len, y + len], ['Z']];\n };\n\n ControllerBtn.prototype.renderPlayButton = function () {\n var controllerCfg = this.controllerCfg;\n var width = controllerCfg.width,\n height = controllerCfg.height,\n x = controllerCfg.x,\n y = controllerCfg.y,\n hideTimeTypeController = controllerCfg.hideTimeTypeController,\n _a = controllerCfg.fill,\n fill = _a === void 0 ? DEFAULT_RECT_FILL : _a,\n _b = controllerCfg.stroke,\n stroke = _b === void 0 ? DEFAULT_RECT_STROKE : _b,\n _c = controllerCfg.containerStyle,\n containerStyle = _c === void 0 ? {} : _c;\n\n var playBtnStyle = __assign(__assign({}, DEFAULT_PLAYBTN_STYLE), controllerCfg.playBtnStyle || {});\n\n var preBtnStyle = __assign(__assign({}, DEFAULT_PREBTN_STYLE), controllerCfg.preBtnStyle || {});\n\n var nextBtnStyle = __assign(__assign({}, DEFAULT_NEXTBTN_STYLE), controllerCfg.nextBtnStyle || {});\n\n var r = height / 2 - 5;\n var realY = y + 10; // 绘制最外层的矩形包围框\n\n var container = this.controllerGroup.addShape('rect', {\n attrs: __assign({\n x: x,\n y: realY,\n width: width,\n height: height,\n stroke: stroke,\n fill: fill\n }, containerStyle),\n name: 'container-rect'\n });\n\n if (this.playButton) {\n this.playButton.update({\n x: width / 2,\n y: realY,\n r: r\n });\n } else {\n this.playButton = new _timeButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n group: this.controllerGroup,\n x: width / 2,\n y: realY + r + 5,\n r: r,\n isPlay: this.isPlay,\n style: playBtnStyle\n });\n } // 后退按钮\n\n\n var prePaddingX = preBtnStyle.offsetX || 0;\n var prePaddingY = preBtnStyle.offsetY || 0;\n var preR = (preBtnStyle.scale || 1) * r;\n this.controllerGroup.addShape('path', {\n attrs: __assign({\n path: this.getPreMarkerPath(width / 2 - 5 * r + prePaddingX, realY + r + 5 + prePaddingY, preR * 0.5)\n }, preBtnStyle),\n name: _constant__WEBPACK_IMPORTED_MODULE_3__[\"PRE_STEP_BTN\"]\n }); // 前进按钮\n\n var nxtPaddingX = nextBtnStyle.offsetX || 0;\n var nxtPaddingY = nextBtnStyle.offsetY || 0;\n var nxtR = (nextBtnStyle.scale || 1) * r;\n this.controllerGroup.addShape('path', {\n attrs: __assign({\n path: this.getNextMarkerPath(width / 2 + 5 * r + nxtPaddingX, realY + r + 5 + nxtPaddingY, nxtR * 0.5)\n }, nextBtnStyle),\n name: _constant__WEBPACK_IMPORTED_MODULE_3__[\"NEXT_STEP_BTN\"]\n });\n container.toBack(); // 调节speed的按钮\n\n this.renderSpeedBtn();\n\n if (!hideTimeTypeController) {\n this.renderToggleTime();\n }\n\n this.bindEvent(); // 根据配置的 scale、offsetX,offsetY 缩放和移动控制栏\n\n var _d = this.controllerCfg.scale,\n scale = _d === void 0 ? 1 : _d;\n var currentBBox = this.controllerGroup.getCanvasBBox();\n var centerX = (currentBBox.maxX + currentBBox.minX) / 2;\n var centerY = (currentBBox.maxY + currentBBox.minY) / 2;\n var matrix = transform([1, 0, 0, 0, 1, 0, 0, 0, 1], [['t', -centerX, -centerY], ['s', scale, scale], ['t', centerX, centerY]]);\n this.controllerGroup.setMatrix(matrix);\n };\n\n ControllerBtn.prototype.renderSpeedBtn = function () {\n var _a = this.controllerCfg,\n y = _a.y,\n width = _a.width,\n hideTimeTypeController = _a.hideTimeTypeController;\n\n var speedControllerStyle = __assign(__assign({}, DEFAULT_SPEED_CONTROLLER_STYLE), this.controllerCfg.speedControllerStyle || {});\n\n var _b = speedControllerStyle.scroller,\n scroller = _b === void 0 ? {} : _b,\n _c = speedControllerStyle.text,\n text = _c === void 0 ? {} : _c,\n _d = speedControllerStyle.pointer,\n pointer = _d === void 0 ? {} : _d,\n _e = speedControllerStyle.scale,\n scale = _e === void 0 ? 1 : _e,\n _f = speedControllerStyle.offsetX,\n offsetX = _f === void 0 ? 0 : _f,\n _g = speedControllerStyle.offsetY,\n offsetY = _g === void 0 ? 0 : _g;\n var speedGroup = this.controllerGroup.addGroup({\n name: 'speed-group'\n });\n this.speedGroup = speedGroup;\n var speedNum = [];\n var maxSpeed = 5;\n this.speedAxisY = [19, 22, 26, 32, 39]; // 增加speed刻度\n\n for (var i = 0; i < 5; i++) {\n var axisY = y + this.speedAxisY[i]; // 灰色刻度\n\n var startX = width - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET);\n speedGroup.addShape('line', {\n attrs: __assign({\n x1: startX,\n x2: startX + 15,\n y1: axisY,\n y2: axisY\n }, scroller),\n speed: maxSpeed,\n name: 'speed-rect'\n });\n this.speedAxisY[i] = axisY;\n speedNum.push(maxSpeed);\n maxSpeed = maxSpeed - 1;\n } // 速度文本\n\n\n this.speedText = speedGroup.addShape('text', {\n attrs: __assign({\n x: width - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET) + 20,\n y: this.speedAxisY[0] + 4,\n text: \"1.0X\",\n fontFamily: this.fontFamily || 'Arial, sans-serif'\n }, text),\n name: 'speed-text'\n });\n this.speedPoint = speedGroup.addShape('path', {\n attrs: __assign({\n path: this.getPointerPath(width - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET), 0),\n matrix: [1, 0, 0, 0, 1, 0, 0, this.speedAxisY[4], 1]\n }, pointer),\n name: 'speed-pointer'\n }); // 根据配置在 speedControllerStyle 中的 scale offsetX offsetY 缩放和移动速度控制器\n\n var currentBBox = this.speedGroup.getCanvasBBox();\n var centerX = (currentBBox.maxX + currentBBox.minX) / 2;\n var centerY = (currentBBox.maxY + currentBBox.minY) / 2;\n var matrix = this.speedGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n matrix = transform(matrix, [['t', -centerX, -centerY], ['s', scale, scale], ['t', centerX + offsetX * scale, centerY + offsetY * scale]]);\n this.speedGroup.setMatrix(matrix);\n };\n\n ControllerBtn.prototype.getPointerPath = function (x, y) {\n return [['M', x, y], ['L', x - 10, y - 4], ['L', x - 10, y + 4], ['Z']];\n };\n\n ControllerBtn.prototype.renderToggleTime = function () {\n var _a;\n\n var width = this.controllerCfg.width;\n\n var timeTypeControllerStyle = __assign(__assign({}, DEFAULT_TIMETYPE_CONTROLLER_STYLE), this.controllerCfg.timeTypeControllerStyle || {});\n\n var _b = timeTypeControllerStyle.scale,\n scale = _b === void 0 ? 1 : _b,\n _c = timeTypeControllerStyle.offsetX,\n offsetX = _c === void 0 ? 0 : _c,\n _d = timeTypeControllerStyle.offsetY,\n offsetY = _d === void 0 ? 0 : _d,\n _e = timeTypeControllerStyle.box,\n box = _e === void 0 ? {} : _e,\n _f = timeTypeControllerStyle.check,\n check = _f === void 0 ? {} : _f,\n _g = timeTypeControllerStyle.text,\n text = _g === void 0 ? {} : _g;\n this.toggleGroup = this.controllerGroup.addGroup({\n name: 'toggle-group'\n });\n this.toggleGroup.addShape('rect', {\n attrs: __assign({\n x: width - TOGGLE_MODEL_OFFSET,\n y: this.speedAxisY[0] + 3.5\n }, box),\n isChecked: false,\n name: 'toggle-model'\n });\n this.checkedIcon = this.toggleGroup.addShape('path', {\n attrs: __assign({\n path: [['M', width - TOGGLE_MODEL_OFFSET + 3, this.speedAxisY[1] + 6], ['L', width - TOGGLE_MODEL_OFFSET + 7, this.speedAxisY[1] + 10], ['L', width - TOGGLE_MODEL_OFFSET + 12, this.speedAxisY[1] + 4]]\n }, check),\n capture: false,\n name: 'check-icon'\n });\n this.checkedIcon.hide();\n this.checkedText = this.toggleGroup.addShape('text', {\n attrs: __assign({\n text: ((_a = this.controllerCfg) === null || _a === void 0 ? void 0 : _a.timePointControllerText) || '单一时间',\n x: width - TOGGLE_MODEL_OFFSET + 15,\n y: this.speedAxisY[0] + 4,\n fontFamily: typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif'\n }, text),\n name: 'checked-text'\n }); // 根据配置在 timeTypeControllerStyle 中的 scale offsetX offsetY 缩放和移动速度控制器\n\n var currentBBox = this.toggleGroup.getCanvasBBox();\n var centerX = (currentBBox.maxX + currentBBox.minX) / 2;\n var centerY = (currentBBox.maxY + currentBBox.minY) / 2;\n var matrix = this.toggleGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n matrix = transform(matrix, [['t', -centerX, -centerY], ['s', scale, scale], ['t', centerX + offsetX * scale, centerY + offsetY * scale]]);\n this.toggleGroup.setMatrix(matrix);\n };\n\n ControllerBtn.prototype.bindEvent = function () {\n var _this = this;\n\n this.speedGroup.on('speed-rect:click', function (evt) {\n var currentPointerY = evt.target.attr('y1');\n\n var pointerMatrix = _this.speedPoint.attr('matrix');\n\n var currentYIdx = _this.speedAxisY.indexOf(pointerMatrix[7] || 0);\n\n var targetYIdx = _this.speedAxisY.indexOf(currentPointerY);\n\n var yDiff = _this.speedAxisY[targetYIdx] - _this.speedAxisY[currentYIdx];\n pointerMatrix = transform(pointerMatrix, [['t', 0, yDiff]]);\n\n _this.speedPoint.setMatrix(pointerMatrix);\n\n _this.currentSpeed = _this.speedAxisY.length - targetYIdx;\n\n _this.speedText.attr('text', \"\".concat(_this.currentSpeed, \".0X\"));\n\n _this.group.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"TIMEBAR_CONFIG_CHANGE\"], {\n speed: _this.currentSpeed,\n type: _this.currentType\n });\n });\n this.speedGroup.on('mousewheel', function (evt) {\n evt.preventDefault();\n var pointerMatrix = _this.speedPoint.attr('matrix') || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var currentPointerY = pointerMatrix[7];\n\n var currentYIdx = _this.speedAxisY.indexOf(currentPointerY);\n\n if (currentYIdx === -1) {\n // 找到最近的一个 y\n var minDist_1 = Infinity;\n\n _this.speedAxisY.forEach(function (y, idx) {\n var dist = Math.abs(y - currentPointerY);\n\n if (minDist_1 > dist) {\n minDist_1 = dist;\n currentYIdx = idx;\n }\n });\n }\n\n if (evt.originalEvent.deltaY > 0) currentYIdx = Math.max(0, currentYIdx - 1);else currentYIdx = Math.min(_this.speedAxisY.length - 1, currentYIdx + 1);\n var yDiff = _this.speedAxisY[currentYIdx] - currentPointerY;\n pointerMatrix = transform(pointerMatrix, [['t', 0, yDiff]]);\n\n _this.speedPoint.setMatrix(pointerMatrix);\n\n _this.currentSpeed = _this.speedAxisY.length - currentYIdx;\n\n _this.speedText.attr('text', \"\".concat(_this.currentSpeed, \".0X\"));\n\n _this.group.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"TIMEBAR_CONFIG_CHANGE\"], {\n speed: _this.currentSpeed,\n type: _this.currentType\n });\n });\n\n if (this.toggleGroup) {\n this.toggleGroup.on('toggle-model:click', function (evt) {\n var _a, _b;\n\n var isChecked = evt.target.get('isChecked');\n\n if (!isChecked) {\n _this.checkedIcon.show();\n\n _this.checkedText.attr('text', ((_a = _this.controllerCfg) === null || _a === void 0 ? void 0 : _a.timeRangeControllerText) || '时间范围');\n\n _this.currentType = 'single';\n } else {\n _this.checkedIcon.hide();\n\n _this.checkedText.attr('text', ((_b = _this.controllerCfg) === null || _b === void 0 ? void 0 : _b.timePointControllerText) || '单一时间');\n\n _this.currentType = 'range';\n }\n\n evt.target.set('isChecked', !isChecked);\n\n _this.group.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"TIMEBAR_CONFIG_CHANGE\"], {\n type: _this.currentType,\n speed: _this.currentSpeed\n });\n });\n }\n };\n\n ControllerBtn.prototype.destroy = function () {\n this.speedGroup.off('speed-rect:click');\n\n if (this.toggleGroup) {\n this.toggleGroup.off('toggle-model:click');\n this.toggleGroup.destroy();\n }\n\n this.speedGroup.destroy();\n };\n\n return ControllerBtn;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ControllerBtn);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvY29udHJvbGxlckJ0bi5qcz81YzAyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUFlLFNBQUksSUFBSSxTQUFJO0FBQzNCO0FBQ0EsNENBQTRDLE9BQU87QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVxQztBQUNHO0FBQ047QUFDOEM7QUFDaEYsZ0JBQWdCLHFEQUFHO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsMERBQU8sR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0MsMkNBQTJDLDBEQUEwRDs7QUFFckcsMENBQTBDLHdEQUF3RDs7QUFFbEcsMkNBQTJDLDBEQUEwRDs7QUFFckc7QUFDQSx1QkFBdUI7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLDRCQUE0QixtREFBTTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLFlBQVksc0RBQVk7QUFDeEIsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxZQUFZLHVEQUFhO0FBQ3pCLEtBQUs7QUFDTCx1QkFBdUI7O0FBRXZCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtREFBbUQsZ0ZBQWdGOztBQUVuSTtBQUNBLHFDQUFxQztBQUNyQztBQUNBLGlDQUFpQztBQUNqQztBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0MsbUJBQW1CLE9BQU87QUFDMUIseUNBQXlDOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxzREFBc0Qsc0ZBQXNGOztBQUU1STtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBLGtDQUFrQztBQUNsQztBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUEsdUJBQXVCLCtEQUFxQjtBQUM1QztBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSxtRkFBbUY7QUFDbkY7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQSx1QkFBdUIsK0RBQXFCO0FBQzVDO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLHlCQUF5QiwrREFBcUI7QUFDOUM7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLDRFQUFhIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBsdWdpbi9lcy90aW1lQmFyL2NvbnRyb2xsZXJCdG4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hc3NpZ24gPSB0aGlzICYmIHRoaXMuX19hc3NpZ24gfHwgZnVuY3Rpb24gKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHQpIHtcbiAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIHMgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIHAgaW4gcykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5cbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGV4dCB9IGZyb20gJ0BhbnR2L21hdHJpeC11dGlsJztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi90aW1lQnV0dG9uJztcbmltcG9ydCB7IFRJTUVCQVJfQ09ORklHX0NIQU5HRSwgUFJFX1NURVBfQlROLCBORVhUX1NURVBfQlROIH0gZnJvbSAnLi9jb25zdGFudCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbnZhciBERUZBVUxUX1JFQ1RfRklMTCA9ICcjYWFhJztcbnZhciBERUZBVUxUX1JFQ1RfU1RST0tFID0gJ2dyZWVuJztcbnZhciBERUZBVUxUX1BMQVlCVE5fU1RZTEUgPSB7XG4gIGZpbGw6ICcjYWFhJyxcbiAgZmlsbE9wYWNpdHk6IDAuMzUsXG4gIHN0cm9rZTogJyNhYWEnXG59O1xudmFyIERFRkFVTFRfUFJFQlROX1NUWUxFID0ge1xuICBmaWxsOiAnI2ZmZidcbn07XG52YXIgREVGQVVMVF9ORVhUQlROX1NUWUxFID0ge1xuICBmaWxsOiAnZ3JlZW4nXG59O1xudmFyIERFRkFVTFRfU1BFRURfQ09OVFJPTExFUl9TVFlMRSA9IHtcbiAgcG9pbnRlcjoge1xuICAgIGZpbGw6ICcjYWFhJyxcbiAgICBsaW5lV2lkdGg6IDBcbiAgfSxcbiAgc2Nyb2xsZXI6IHtcbiAgICBzdHJva2U6ICcjYWFhJyxcbiAgICBmaWxsOiAnI2FhYScsXG4gICAgbGluZVdpZHRoOiAxLFxuICAgIGxpbmVBcHBlbmRXaWR0aDogNSxcbiAgICBjdXJzb3I6ICdwb2ludGVyJ1xuICB9LFxuICB0ZXh0OiB7XG4gICAgZmlsbDogJyNhYWEnLFxuICAgIHRleHRCYXNlbGluZTogJ3RvcCdcbiAgfVxufTtcbnZhciBERUZBVUxUX1RJTUVUWVBFX0NPTlRST0xMRVJfU1RZTEUgPSB7XG4gIGNoZWNrOiB7XG4gICAgc3Ryb2tlOiAnZ3JlZW4nLFxuICAgIGxpbmVXaWR0aDogM1xuICB9LFxuICBib3g6IHtcbiAgICBmaWxsOiAnI2ZmZicsXG4gICAgc3Ryb2tlOiAnI2FhYScsXG4gICAgbGluZVdpZHRoOiAyLFxuICAgIHJhZGl1czogMyxcbiAgICB3aWR0aDogMTIsXG4gICAgaGVpZ2h0OiAxMlxuICB9LFxuICB0ZXh0OiB7XG4gICAgZmlsbDogJyNhYWEnLFxuICAgIGZvbnRTaXplOiAxMixcbiAgICB0ZXh0QmFzZWxpbmU6ICd0b3AnXG4gIH1cbn07XG52YXIgREVGQVVMVF9DT05UUk9MTEVSX0NPTkZJRyA9IHtcbiAgc3BlZWQ6IDEsXG4gIGxvb3A6IGZhbHNlLFxuICBmaWxsOiAnI2ZmZicsXG4gIHN0cm9rZTogJyNmZmYnLFxuICBoaWRlVGltZVR5cGVDb250cm9sbGVyOiBmYWxzZSxcbiAgcHJlQnRuU3R5bGU6IHtcbiAgICBmaWxsOiAnI2FhYScsXG4gICAgc3Ryb2tlOiAnI2FhYSdcbiAgfSxcbiAgbmV4dEJ0blN0eWxlOiB7XG4gICAgZmlsbDogJyNhYWEnLFxuICAgIHN0cm9rZTogJyNhYWEnXG4gIH0sXG4gIHBsYXlCdG5TdHlsZToge1xuICAgIGZpbGw6ICcjYWFhJyxcbiAgICBzdHJva2U6ICcjYWFhJyxcbiAgICBmaWxsT3BhY2l0eTogMC4wNVxuICB9LFxuICBzcGVlZENvbnRyb2xsZXJTdHlsZTogREVGQVVMVF9TUEVFRF9DT05UUk9MTEVSX1NUWUxFLFxuICB0aW1lVHlwZUNvbnRyb2xsZXJTdHlsZTogREVGQVVMVF9USU1FVFlQRV9DT05UUk9MTEVSX1NUWUxFXG59O1xudmFyIFNQRUVEX0NPTlRST0xMRVJfT0ZGU0VUID0gMTEwO1xudmFyIFRPR0dMRV9NT0RFTF9PRkZTRVQgPSA1MDtcblxudmFyIENvbnRyb2xsZXJCdG4gPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBDb250cm9sbGVyQnRuKGNmZykge1xuICAgIHRoaXMuY29udHJvbGxlckNmZyA9IGRlZXBNaXgoe30sIERFRkFVTFRfQ09OVFJPTExFUl9DT05GSUcsIGNmZyk7XG4gICAgdGhpcy5ncm91cCA9IGNmZy5ncm91cDtcbiAgICB0aGlzLmNvbnRyb2xsZXJHcm91cCA9IHRoaXMuZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgbmFtZTogJ2NvbnRyb2xsZXItZ3JvdXAnXG4gICAgfSk7XG4gICAgdGhpcy5zcGVlZEF4aXNZID0gW107XG4gICAgdGhpcy5jdXJyZW50U3BlZWQgPSB0aGlzLmNvbnRyb2xsZXJDZmcuc3BlZWQ7XG4gICAgdGhpcy5jdXJyZW50VHlwZSA9ICdyYW5nZSc7XG4gICAgdGhpcy5mb250RmFtaWx5ID0gY2ZnLmZvbnRGYW1pbHkgfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJztcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIENvbnRyb2xsZXJCdG4ucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZW5kZXJQbGF5QnV0dG9uKCk7XG4gIH07XG4gIC8qKiDojrflj5bmkq3mlL7plK4gbWFya2VyIHBhdGggKi9cblxuXG4gIENvbnRyb2xsZXJCdG4ucHJvdG90eXBlLmdldE5leHRNYXJrZXJQYXRoID0gZnVuY3Rpb24gKHgsIHksIGxlbikge1xuICAgIHJldHVybiBbWydNJywgeCwgeSAtIGxlbl0sIFsnTCcsIHggKyBsZW4sIHldLCBbJ0wnLCB4LCB5ICsgbGVuXSwgWydaJywgeCwgeSAtIGxlbl0sIFsnTScsIHgsIHldLCBbJ0wnLCB4IC0gbGVuLCB5IC0gbGVuXSwgWydMJywgeCAtIGxlbiwgeSArIGxlbl0sIFsnWiddXTtcbiAgfTtcblxuICBDb250cm9sbGVyQnRuLnByb3RvdHlwZS5nZXRQcmVNYXJrZXJQYXRoID0gZnVuY3Rpb24gKHgsIHksIGxlbikge1xuICAgIHJldHVybiBbWydNJywgeCwgeSAtIGxlbl0sIFsnTCcsIHggLSBsZW4sIHldLCBbJ0wnLCB4LCB5ICsgbGVuXSwgWydMJywgeCwgeSAtIGxlbl0sIFsnTScsIHgsIHldLCBbJ0wnLCB4ICsgbGVuLCB5IC0gbGVuXSwgWydMJywgeCArIGxlbiwgeSArIGxlbl0sIFsnWiddXTtcbiAgfTtcblxuICBDb250cm9sbGVyQnRuLnByb3RvdHlwZS5yZW5kZXJQbGF5QnV0dG9uID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjb250cm9sbGVyQ2ZnID0gdGhpcy5jb250cm9sbGVyQ2ZnO1xuICAgIHZhciB3aWR0aCA9IGNvbnRyb2xsZXJDZmcud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGNvbnRyb2xsZXJDZmcuaGVpZ2h0LFxuICAgICAgICB4ID0gY29udHJvbGxlckNmZy54LFxuICAgICAgICB5ID0gY29udHJvbGxlckNmZy55LFxuICAgICAgICBoaWRlVGltZVR5cGVDb250cm9sbGVyID0gY29udHJvbGxlckNmZy5oaWRlVGltZVR5cGVDb250cm9sbGVyLFxuICAgICAgICBfYSA9IGNvbnRyb2xsZXJDZmcuZmlsbCxcbiAgICAgICAgZmlsbCA9IF9hID09PSB2b2lkIDAgPyBERUZBVUxUX1JFQ1RfRklMTCA6IF9hLFxuICAgICAgICBfYiA9IGNvbnRyb2xsZXJDZmcuc3Ryb2tlLFxuICAgICAgICBzdHJva2UgPSBfYiA9PT0gdm9pZCAwID8gREVGQVVMVF9SRUNUX1NUUk9LRSA6IF9iLFxuICAgICAgICBfYyA9IGNvbnRyb2xsZXJDZmcuY29udGFpbmVyU3R5bGUsXG4gICAgICAgIGNvbnRhaW5lclN0eWxlID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2M7XG5cbiAgICB2YXIgcGxheUJ0blN0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIERFRkFVTFRfUExBWUJUTl9TVFlMRSksIGNvbnRyb2xsZXJDZmcucGxheUJ0blN0eWxlIHx8IHt9KTtcblxuICAgIHZhciBwcmVCdG5TdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBERUZBVUxUX1BSRUJUTl9TVFlMRSksIGNvbnRyb2xsZXJDZmcucHJlQnRuU3R5bGUgfHwge30pO1xuXG4gICAgdmFyIG5leHRCdG5TdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBERUZBVUxUX05FWFRCVE5fU1RZTEUpLCBjb250cm9sbGVyQ2ZnLm5leHRCdG5TdHlsZSB8fCB7fSk7XG5cbiAgICB2YXIgciA9IGhlaWdodCAvIDIgLSA1O1xuICAgIHZhciByZWFsWSA9IHkgKyAxMDsgLy8g57uY5Yi25pyA5aSW5bGC55qE55+p5b2i5YyF5Zu05qGGXG5cbiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5jb250cm9sbGVyR3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiByZWFsWSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgc3Ryb2tlOiBzdHJva2UsXG4gICAgICAgIGZpbGw6IGZpbGxcbiAgICAgIH0sIGNvbnRhaW5lclN0eWxlKSxcbiAgICAgIG5hbWU6ICdjb250YWluZXItcmVjdCdcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnBsYXlCdXR0b24pIHtcbiAgICAgIHRoaXMucGxheUJ1dHRvbi51cGRhdGUoe1xuICAgICAgICB4OiB3aWR0aCAvIDIsXG4gICAgICAgIHk6IHJlYWxZLFxuICAgICAgICByOiByXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wbGF5QnV0dG9uID0gbmV3IEJ1dHRvbih7XG4gICAgICAgIGdyb3VwOiB0aGlzLmNvbnRyb2xsZXJHcm91cCxcbiAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICB5OiByZWFsWSArIHIgKyA1LFxuICAgICAgICByOiByLFxuICAgICAgICBpc1BsYXk6IHRoaXMuaXNQbGF5LFxuICAgICAgICBzdHlsZTogcGxheUJ0blN0eWxlXG4gICAgICB9KTtcbiAgICB9IC8vIOWQjumAgOaMiemSrlxuXG5cbiAgICB2YXIgcHJlUGFkZGluZ1ggPSBwcmVCdG5TdHlsZS5vZmZzZXRYIHx8IDA7XG4gICAgdmFyIHByZVBhZGRpbmdZID0gcHJlQnRuU3R5bGUub2Zmc2V0WSB8fCAwO1xuICAgIHZhciBwcmVSID0gKHByZUJ0blN0eWxlLnNjYWxlIHx8IDEpICogcjtcbiAgICB0aGlzLmNvbnRyb2xsZXJHcm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHBhdGg6IHRoaXMuZ2V0UHJlTWFya2VyUGF0aCh3aWR0aCAvIDIgLSA1ICogciArIHByZVBhZGRpbmdYLCByZWFsWSArIHIgKyA1ICsgcHJlUGFkZGluZ1ksIHByZVIgKiAwLjUpXG4gICAgICB9LCBwcmVCdG5TdHlsZSksXG4gICAgICBuYW1lOiBQUkVfU1RFUF9CVE5cbiAgICB9KTsgLy8g5YmN6L+b5oyJ6ZKuXG5cbiAgICB2YXIgbnh0UGFkZGluZ1ggPSBuZXh0QnRuU3R5bGUub2Zmc2V0WCB8fCAwO1xuICAgIHZhciBueHRQYWRkaW5nWSA9IG5leHRCdG5TdHlsZS5vZmZzZXRZIHx8IDA7XG4gICAgdmFyIG54dFIgPSAobmV4dEJ0blN0eWxlLnNjYWxlIHx8IDEpICogcjtcbiAgICB0aGlzLmNvbnRyb2xsZXJHcm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHBhdGg6IHRoaXMuZ2V0TmV4dE1hcmtlclBhdGgod2lkdGggLyAyICsgNSAqIHIgKyBueHRQYWRkaW5nWCwgcmVhbFkgKyByICsgNSArIG54dFBhZGRpbmdZLCBueHRSICogMC41KVxuICAgICAgfSwgbmV4dEJ0blN0eWxlKSxcbiAgICAgIG5hbWU6IE5FWFRfU1RFUF9CVE5cbiAgICB9KTtcbiAgICBjb250YWluZXIudG9CYWNrKCk7IC8vIOiwg+iKgnNwZWVk55qE5oyJ6ZKuXG5cbiAgICB0aGlzLnJlbmRlclNwZWVkQnRuKCk7XG5cbiAgICBpZiAoIWhpZGVUaW1lVHlwZUNvbnRyb2xsZXIpIHtcbiAgICAgIHRoaXMucmVuZGVyVG9nZ2xlVGltZSgpO1xuICAgIH1cblxuICAgIHRoaXMuYmluZEV2ZW50KCk7IC8vIOagueaNrumFjee9rueahCBzY2FsZeOAgW9mZnNldFjvvIxvZmZzZXRZIOe8qeaUvuWSjOenu+WKqOaOp+WItuagj1xuXG4gICAgdmFyIF9kID0gdGhpcy5jb250cm9sbGVyQ2ZnLnNjYWxlLFxuICAgICAgICBzY2FsZSA9IF9kID09PSB2b2lkIDAgPyAxIDogX2Q7XG4gICAgdmFyIGN1cnJlbnRCQm94ID0gdGhpcy5jb250cm9sbGVyR3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIHZhciBjZW50ZXJYID0gKGN1cnJlbnRCQm94Lm1heFggKyBjdXJyZW50QkJveC5taW5YKSAvIDI7XG4gICAgdmFyIGNlbnRlclkgPSAoY3VycmVudEJCb3gubWF4WSArIGN1cnJlbnRCQm94Lm1pblkpIC8gMjtcbiAgICB2YXIgbWF0cml4ID0gdHJhbnNmb3JtKFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXSwgW1sndCcsIC1jZW50ZXJYLCAtY2VudGVyWV0sIFsncycsIHNjYWxlLCBzY2FsZV0sIFsndCcsIGNlbnRlclgsIGNlbnRlclldXSk7XG4gICAgdGhpcy5jb250cm9sbGVyR3JvdXAuc2V0TWF0cml4KG1hdHJpeCk7XG4gIH07XG5cbiAgQ29udHJvbGxlckJ0bi5wcm90b3R5cGUucmVuZGVyU3BlZWRCdG4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hID0gdGhpcy5jb250cm9sbGVyQ2ZnLFxuICAgICAgICB5ID0gX2EueSxcbiAgICAgICAgd2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgaGlkZVRpbWVUeXBlQ29udHJvbGxlciA9IF9hLmhpZGVUaW1lVHlwZUNvbnRyb2xsZXI7XG5cbiAgICB2YXIgc3BlZWRDb250cm9sbGVyU3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgREVGQVVMVF9TUEVFRF9DT05UUk9MTEVSX1NUWUxFKSwgdGhpcy5jb250cm9sbGVyQ2ZnLnNwZWVkQ29udHJvbGxlclN0eWxlIHx8IHt9KTtcblxuICAgIHZhciBfYiA9IHNwZWVkQ29udHJvbGxlclN0eWxlLnNjcm9sbGVyLFxuICAgICAgICBzY3JvbGxlciA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iLFxuICAgICAgICBfYyA9IHNwZWVkQ29udHJvbGxlclN0eWxlLnRleHQsXG4gICAgICAgIHRleHQgPSBfYyA9PT0gdm9pZCAwID8ge30gOiBfYyxcbiAgICAgICAgX2QgPSBzcGVlZENvbnRyb2xsZXJTdHlsZS5wb2ludGVyLFxuICAgICAgICBwb2ludGVyID0gX2QgPT09IHZvaWQgMCA/IHt9IDogX2QsXG4gICAgICAgIF9lID0gc3BlZWRDb250cm9sbGVyU3R5bGUuc2NhbGUsXG4gICAgICAgIHNjYWxlID0gX2UgPT09IHZvaWQgMCA/IDEgOiBfZSxcbiAgICAgICAgX2YgPSBzcGVlZENvbnRyb2xsZXJTdHlsZS5vZmZzZXRYLFxuICAgICAgICBvZmZzZXRYID0gX2YgPT09IHZvaWQgMCA/IDAgOiBfZixcbiAgICAgICAgX2cgPSBzcGVlZENvbnRyb2xsZXJTdHlsZS5vZmZzZXRZLFxuICAgICAgICBvZmZzZXRZID0gX2cgPT09IHZvaWQgMCA/IDAgOiBfZztcbiAgICB2YXIgc3BlZWRHcm91cCA9IHRoaXMuY29udHJvbGxlckdyb3VwLmFkZEdyb3VwKHtcbiAgICAgIG5hbWU6ICdzcGVlZC1ncm91cCdcbiAgICB9KTtcbiAgICB0aGlzLnNwZWVkR3JvdXAgPSBzcGVlZEdyb3VwO1xuICAgIHZhciBzcGVlZE51bSA9IFtdO1xuICAgIHZhciBtYXhTcGVlZCA9IDU7XG4gICAgdGhpcy5zcGVlZEF4aXNZID0gWzE5LCAyMiwgMjYsIDMyLCAzOV07IC8vIOWinuWKoHNwZWVk5Yi75bqmXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgICAgdmFyIGF4aXNZID0geSArIHRoaXMuc3BlZWRBeGlzWVtpXTsgLy8g54Gw6Imy5Yi75bqmXG5cbiAgICAgIHZhciBzdGFydFggPSB3aWR0aCAtICghaGlkZVRpbWVUeXBlQ29udHJvbGxlciA/IFNQRUVEX0NPTlRST0xMRVJfT0ZGU0VUIDogVE9HR0xFX01PREVMX09GRlNFVCk7XG4gICAgICBzcGVlZEdyb3VwLmFkZFNoYXBlKCdsaW5lJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHgxOiBzdGFydFgsXG4gICAgICAgICAgeDI6IHN0YXJ0WCArIDE1LFxuICAgICAgICAgIHkxOiBheGlzWSxcbiAgICAgICAgICB5MjogYXhpc1lcbiAgICAgICAgfSwgc2Nyb2xsZXIpLFxuICAgICAgICBzcGVlZDogbWF4U3BlZWQsXG4gICAgICAgIG5hbWU6ICdzcGVlZC1yZWN0J1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNwZWVkQXhpc1lbaV0gPSBheGlzWTtcbiAgICAgIHNwZWVkTnVtLnB1c2gobWF4U3BlZWQpO1xuICAgICAgbWF4U3BlZWQgPSBtYXhTcGVlZCAtIDE7XG4gICAgfSAvLyDpgJ/luqbmlofmnKxcblxuXG4gICAgdGhpcy5zcGVlZFRleHQgPSBzcGVlZEdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgeDogd2lkdGggLSAoIWhpZGVUaW1lVHlwZUNvbnRyb2xsZXIgPyBTUEVFRF9DT05UUk9MTEVSX09GRlNFVCA6IFRPR0dMRV9NT0RFTF9PRkZTRVQpICsgMjAsXG4gICAgICAgIHk6IHRoaXMuc3BlZWRBeGlzWVswXSArIDQsXG4gICAgICAgIHRleHQ6IFwiMS4wWFwiLFxuICAgICAgICBmb250RmFtaWx5OiB0aGlzLmZvbnRGYW1pbHkgfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJ1xuICAgICAgfSwgdGV4dCksXG4gICAgICBuYW1lOiAnc3BlZWQtdGV4dCdcbiAgICB9KTtcbiAgICB0aGlzLnNwZWVkUG9pbnQgPSBzcGVlZEdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgcGF0aDogdGhpcy5nZXRQb2ludGVyUGF0aCh3aWR0aCAtICghaGlkZVRpbWVUeXBlQ29udHJvbGxlciA/IFNQRUVEX0NPTlRST0xMRVJfT0ZGU0VUIDogVE9HR0xFX01PREVMX09GRlNFVCksIDApLFxuICAgICAgICBtYXRyaXg6IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCB0aGlzLnNwZWVkQXhpc1lbNF0sIDFdXG4gICAgICB9LCBwb2ludGVyKSxcbiAgICAgIG5hbWU6ICdzcGVlZC1wb2ludGVyJ1xuICAgIH0pOyAvLyDmoLnmja7phY3nva7lnKggc3BlZWRDb250cm9sbGVyU3R5bGUg5Lit55qEIHNjYWxlIG9mZnNldFggb2Zmc2V0WSDnvKnmlL7lkoznp7vliqjpgJ/luqbmjqfliLblmahcblxuICAgIHZhciBjdXJyZW50QkJveCA9IHRoaXMuc3BlZWRHcm91cC5nZXRDYW52YXNCQm94KCk7XG4gICAgdmFyIGNlbnRlclggPSAoY3VycmVudEJCb3gubWF4WCArIGN1cnJlbnRCQm94Lm1pblgpIC8gMjtcbiAgICB2YXIgY2VudGVyWSA9IChjdXJyZW50QkJveC5tYXhZICsgY3VycmVudEJCb3gubWluWSkgLyAyO1xuICAgIHZhciBtYXRyaXggPSB0aGlzLnNwZWVkR3JvdXAuZ2V0TWF0cml4KCkgfHwgWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3QnLCAtY2VudGVyWCwgLWNlbnRlclldLCBbJ3MnLCBzY2FsZSwgc2NhbGVdLCBbJ3QnLCBjZW50ZXJYICsgb2Zmc2V0WCAqIHNjYWxlLCBjZW50ZXJZICsgb2Zmc2V0WSAqIHNjYWxlXV0pO1xuICAgIHRoaXMuc3BlZWRHcm91cC5zZXRNYXRyaXgobWF0cml4KTtcbiAgfTtcblxuICBDb250cm9sbGVyQnRuLnByb3RvdHlwZS5nZXRQb2ludGVyUGF0aCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgcmV0dXJuIFtbJ00nLCB4LCB5XSwgWydMJywgeCAtIDEwLCB5IC0gNF0sIFsnTCcsIHggLSAxMCwgeSArIDRdLCBbJ1onXV07XG4gIH07XG5cbiAgQ29udHJvbGxlckJ0bi5wcm90b3R5cGUucmVuZGVyVG9nZ2xlVGltZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgd2lkdGggPSB0aGlzLmNvbnRyb2xsZXJDZmcud2lkdGg7XG5cbiAgICB2YXIgdGltZVR5cGVDb250cm9sbGVyU3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgREVGQVVMVF9USU1FVFlQRV9DT05UUk9MTEVSX1NUWUxFKSwgdGhpcy5jb250cm9sbGVyQ2ZnLnRpbWVUeXBlQ29udHJvbGxlclN0eWxlIHx8IHt9KTtcblxuICAgIHZhciBfYiA9IHRpbWVUeXBlQ29udHJvbGxlclN0eWxlLnNjYWxlLFxuICAgICAgICBzY2FsZSA9IF9iID09PSB2b2lkIDAgPyAxIDogX2IsXG4gICAgICAgIF9jID0gdGltZVR5cGVDb250cm9sbGVyU3R5bGUub2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WCA9IF9jID09PSB2b2lkIDAgPyAwIDogX2MsXG4gICAgICAgIF9kID0gdGltZVR5cGVDb250cm9sbGVyU3R5bGUub2Zmc2V0WSxcbiAgICAgICAgb2Zmc2V0WSA9IF9kID09PSB2b2lkIDAgPyAwIDogX2QsXG4gICAgICAgIF9lID0gdGltZVR5cGVDb250cm9sbGVyU3R5bGUuYm94LFxuICAgICAgICBib3ggPSBfZSA9PT0gdm9pZCAwID8ge30gOiBfZSxcbiAgICAgICAgX2YgPSB0aW1lVHlwZUNvbnRyb2xsZXJTdHlsZS5jaGVjayxcbiAgICAgICAgY2hlY2sgPSBfZiA9PT0gdm9pZCAwID8ge30gOiBfZixcbiAgICAgICAgX2cgPSB0aW1lVHlwZUNvbnRyb2xsZXJTdHlsZS50ZXh0LFxuICAgICAgICB0ZXh0ID0gX2cgPT09IHZvaWQgMCA/IHt9IDogX2c7XG4gICAgdGhpcy50b2dnbGVHcm91cCA9IHRoaXMuY29udHJvbGxlckdyb3VwLmFkZEdyb3VwKHtcbiAgICAgIG5hbWU6ICd0b2dnbGUtZ3JvdXAnXG4gICAgfSk7XG4gICAgdGhpcy50b2dnbGVHcm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHg6IHdpZHRoIC0gVE9HR0xFX01PREVMX09GRlNFVCxcbiAgICAgICAgeTogdGhpcy5zcGVlZEF4aXNZWzBdICsgMy41XG4gICAgICB9LCBib3gpLFxuICAgICAgaXNDaGVja2VkOiBmYWxzZSxcbiAgICAgIG5hbWU6ICd0b2dnbGUtbW9kZWwnXG4gICAgfSk7XG4gICAgdGhpcy5jaGVja2VkSWNvbiA9IHRoaXMudG9nZ2xlR3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICBwYXRoOiBbWydNJywgd2lkdGggLSBUT0dHTEVfTU9ERUxfT0ZGU0VUICsgMywgdGhpcy5zcGVlZEF4aXNZWzFdICsgNl0sIFsnTCcsIHdpZHRoIC0gVE9HR0xFX01PREVMX09GRlNFVCArIDcsIHRoaXMuc3BlZWRBeGlzWVsxXSArIDEwXSwgWydMJywgd2lkdGggLSBUT0dHTEVfTU9ERUxfT0ZGU0VUICsgMTIsIHRoaXMuc3BlZWRBeGlzWVsxXSArIDRdXVxuICAgICAgfSwgY2hlY2spLFxuICAgICAgY2FwdHVyZTogZmFsc2UsXG4gICAgICBuYW1lOiAnY2hlY2staWNvbidcbiAgICB9KTtcbiAgICB0aGlzLmNoZWNrZWRJY29uLmhpZGUoKTtcbiAgICB0aGlzLmNoZWNrZWRUZXh0ID0gdGhpcy50b2dnbGVHcm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHRleHQ6ICgoX2EgPSB0aGlzLmNvbnRyb2xsZXJDZmcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50aW1lUG9pbnRDb250cm9sbGVyVGV4dCkgfHwgJ+WNleS4gOaXtumXtCcsXG4gICAgICAgIHg6IHdpZHRoIC0gVE9HR0xFX01PREVMX09GRlNFVCArIDE1LFxuICAgICAgICB5OiB0aGlzLnNwZWVkQXhpc1lbMF0gKyA0LFxuICAgICAgICBmb250RmFtaWx5OiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtZmFtaWx5JykgfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJyA6ICdBcmlhbCwgc2Fucy1zZXJpZidcbiAgICAgIH0sIHRleHQpLFxuICAgICAgbmFtZTogJ2NoZWNrZWQtdGV4dCdcbiAgICB9KTsgLy8g5qC55o2u6YWN572u5ZyoIHRpbWVUeXBlQ29udHJvbGxlclN0eWxlIOS4reeahCBzY2FsZSBvZmZzZXRYIG9mZnNldFkg57yp5pS+5ZKM56e75Yqo6YCf5bqm5o6n5Yi25ZmoXG5cbiAgICB2YXIgY3VycmVudEJCb3ggPSB0aGlzLnRvZ2dsZUdyb3VwLmdldENhbnZhc0JCb3goKTtcbiAgICB2YXIgY2VudGVyWCA9IChjdXJyZW50QkJveC5tYXhYICsgY3VycmVudEJCb3gubWluWCkgLyAyO1xuICAgIHZhciBjZW50ZXJZID0gKGN1cnJlbnRCQm94Lm1heFkgKyBjdXJyZW50QkJveC5taW5ZKSAvIDI7XG4gICAgdmFyIG1hdHJpeCA9IHRoaXMudG9nZ2xlR3JvdXAuZ2V0TWF0cml4KCkgfHwgWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3QnLCAtY2VudGVyWCwgLWNlbnRlclldLCBbJ3MnLCBzY2FsZSwgc2NhbGVdLCBbJ3QnLCBjZW50ZXJYICsgb2Zmc2V0WCAqIHNjYWxlLCBjZW50ZXJZICsgb2Zmc2V0WSAqIHNjYWxlXV0pO1xuICAgIHRoaXMudG9nZ2xlR3JvdXAuc2V0TWF0cml4KG1hdHJpeCk7XG4gIH07XG5cbiAgQ29udHJvbGxlckJ0bi5wcm90b3R5cGUuYmluZEV2ZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLnNwZWVkR3JvdXAub24oJ3NwZWVkLXJlY3Q6Y2xpY2snLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICB2YXIgY3VycmVudFBvaW50ZXJZID0gZXZ0LnRhcmdldC5hdHRyKCd5MScpO1xuXG4gICAgICB2YXIgcG9pbnRlck1hdHJpeCA9IF90aGlzLnNwZWVkUG9pbnQuYXR0cignbWF0cml4Jyk7XG5cbiAgICAgIHZhciBjdXJyZW50WUlkeCA9IF90aGlzLnNwZWVkQXhpc1kuaW5kZXhPZihwb2ludGVyTWF0cml4WzddIHx8IDApO1xuXG4gICAgICB2YXIgdGFyZ2V0WUlkeCA9IF90aGlzLnNwZWVkQXhpc1kuaW5kZXhPZihjdXJyZW50UG9pbnRlclkpO1xuXG4gICAgICB2YXIgeURpZmYgPSBfdGhpcy5zcGVlZEF4aXNZW3RhcmdldFlJZHhdIC0gX3RoaXMuc3BlZWRBeGlzWVtjdXJyZW50WUlkeF07XG4gICAgICBwb2ludGVyTWF0cml4ID0gdHJhbnNmb3JtKHBvaW50ZXJNYXRyaXgsIFtbJ3QnLCAwLCB5RGlmZl1dKTtcblxuICAgICAgX3RoaXMuc3BlZWRQb2ludC5zZXRNYXRyaXgocG9pbnRlck1hdHJpeCk7XG5cbiAgICAgIF90aGlzLmN1cnJlbnRTcGVlZCA9IF90aGlzLnNwZWVkQXhpc1kubGVuZ3RoIC0gdGFyZ2V0WUlkeDtcblxuICAgICAgX3RoaXMuc3BlZWRUZXh0LmF0dHIoJ3RleHQnLCBcIlwiLmNvbmNhdChfdGhpcy5jdXJyZW50U3BlZWQsIFwiLjBYXCIpKTtcblxuICAgICAgX3RoaXMuZ3JvdXAuZW1pdChUSU1FQkFSX0NPTkZJR19DSEFOR0UsIHtcbiAgICAgICAgc3BlZWQ6IF90aGlzLmN1cnJlbnRTcGVlZCxcbiAgICAgICAgdHlwZTogX3RoaXMuY3VycmVudFR5cGVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuc3BlZWRHcm91cC5vbignbW91c2V3aGVlbCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdmFyIHBvaW50ZXJNYXRyaXggPSBfdGhpcy5zcGVlZFBvaW50LmF0dHIoJ21hdHJpeCcpIHx8IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgIHZhciBjdXJyZW50UG9pbnRlclkgPSBwb2ludGVyTWF0cml4WzddO1xuXG4gICAgICB2YXIgY3VycmVudFlJZHggPSBfdGhpcy5zcGVlZEF4aXNZLmluZGV4T2YoY3VycmVudFBvaW50ZXJZKTtcblxuICAgICAgaWYgKGN1cnJlbnRZSWR4ID09PSAtMSkge1xuICAgICAgICAvLyDmib7liLDmnIDov5HnmoTkuIDkuKogeVxuICAgICAgICB2YXIgbWluRGlzdF8xID0gSW5maW5pdHk7XG5cbiAgICAgICAgX3RoaXMuc3BlZWRBeGlzWS5mb3JFYWNoKGZ1bmN0aW9uICh5LCBpZHgpIHtcbiAgICAgICAgICB2YXIgZGlzdCA9IE1hdGguYWJzKHkgLSBjdXJyZW50UG9pbnRlclkpO1xuXG4gICAgICAgICAgaWYgKG1pbkRpc3RfMSA+IGRpc3QpIHtcbiAgICAgICAgICAgIG1pbkRpc3RfMSA9IGRpc3Q7XG4gICAgICAgICAgICBjdXJyZW50WUlkeCA9IGlkeDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZ0Lm9yaWdpbmFsRXZlbnQuZGVsdGFZID4gMCkgY3VycmVudFlJZHggPSBNYXRoLm1heCgwLCBjdXJyZW50WUlkeCAtIDEpO2Vsc2UgY3VycmVudFlJZHggPSBNYXRoLm1pbihfdGhpcy5zcGVlZEF4aXNZLmxlbmd0aCAtIDEsIGN1cnJlbnRZSWR4ICsgMSk7XG4gICAgICB2YXIgeURpZmYgPSBfdGhpcy5zcGVlZEF4aXNZW2N1cnJlbnRZSWR4XSAtIGN1cnJlbnRQb2ludGVyWTtcbiAgICAgIHBvaW50ZXJNYXRyaXggPSB0cmFuc2Zvcm0ocG9pbnRlck1hdHJpeCwgW1sndCcsIDAsIHlEaWZmXV0pO1xuXG4gICAgICBfdGhpcy5zcGVlZFBvaW50LnNldE1hdHJpeChwb2ludGVyTWF0cml4KTtcblxuICAgICAgX3RoaXMuY3VycmVudFNwZWVkID0gX3RoaXMuc3BlZWRBeGlzWS5sZW5ndGggLSBjdXJyZW50WUlkeDtcblxuICAgICAgX3RoaXMuc3BlZWRUZXh0LmF0dHIoJ3RleHQnLCBcIlwiLmNvbmNhdChfdGhpcy5jdXJyZW50U3BlZWQsIFwiLjBYXCIpKTtcblxuICAgICAgX3RoaXMuZ3JvdXAuZW1pdChUSU1FQkFSX0NPTkZJR19DSEFOR0UsIHtcbiAgICAgICAgc3BlZWQ6IF90aGlzLmN1cnJlbnRTcGVlZCxcbiAgICAgICAgdHlwZTogX3RoaXMuY3VycmVudFR5cGVcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMudG9nZ2xlR3JvdXApIHtcbiAgICAgIHRoaXMudG9nZ2xlR3JvdXAub24oJ3RvZ2dsZS1tb2RlbDpjbGljaycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcblxuICAgICAgICB2YXIgaXNDaGVja2VkID0gZXZ0LnRhcmdldC5nZXQoJ2lzQ2hlY2tlZCcpO1xuXG4gICAgICAgIGlmICghaXNDaGVja2VkKSB7XG4gICAgICAgICAgX3RoaXMuY2hlY2tlZEljb24uc2hvdygpO1xuXG4gICAgICAgICAgX3RoaXMuY2hlY2tlZFRleHQuYXR0cigndGV4dCcsICgoX2EgPSBfdGhpcy5jb250cm9sbGVyQ2ZnKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGltZVJhbmdlQ29udHJvbGxlclRleHQpIHx8ICfml7bpl7TojIPlm7QnKTtcblxuICAgICAgICAgIF90aGlzLmN1cnJlbnRUeXBlID0gJ3NpbmdsZSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuY2hlY2tlZEljb24uaGlkZSgpO1xuXG4gICAgICAgICAgX3RoaXMuY2hlY2tlZFRleHQuYXR0cigndGV4dCcsICgoX2IgPSBfdGhpcy5jb250cm9sbGVyQ2ZnKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudGltZVBvaW50Q29udHJvbGxlclRleHQpIHx8ICfljZXkuIDml7bpl7QnKTtcblxuICAgICAgICAgIF90aGlzLmN1cnJlbnRUeXBlID0gJ3JhbmdlJztcbiAgICAgICAgfVxuXG4gICAgICAgIGV2dC50YXJnZXQuc2V0KCdpc0NoZWNrZWQnLCAhaXNDaGVja2VkKTtcblxuICAgICAgICBfdGhpcy5ncm91cC5lbWl0KFRJTUVCQVJfQ09ORklHX0NIQU5HRSwge1xuICAgICAgICAgIHR5cGU6IF90aGlzLmN1cnJlbnRUeXBlLFxuICAgICAgICAgIHNwZWVkOiBfdGhpcy5jdXJyZW50U3BlZWRcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgQ29udHJvbGxlckJ0bi5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNwZWVkR3JvdXAub2ZmKCdzcGVlZC1yZWN0OmNsaWNrJyk7XG5cbiAgICBpZiAodGhpcy50b2dnbGVHcm91cCkge1xuICAgICAgdGhpcy50b2dnbGVHcm91cC5vZmYoJ3RvZ2dsZS1tb2RlbDpjbGljaycpO1xuICAgICAgdGhpcy50b2dnbGVHcm91cC5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy5zcGVlZEdyb3VwLmRlc3Ryb3koKTtcbiAgfTtcblxuICByZXR1cm4gQ29udHJvbGxlckJ0bjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29udHJvbGxlckJ0bjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/timeBar/controllerBtn.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/timeBar/handler.js": /*!************************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/timeBar/handler.js ***! \************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\nvar DEFAULT_STYLE = {\n fill: '#1890ff',\n stroke: '#1890ff',\n type: 'trend',\n radius: 2,\n opacity: 1,\n cursor: 'ew-resize',\n // 高亮的颜色\n highLightFill: '#0050b3'\n};\nvar SIMPLE_DEFAULT_STYLE = {\n fill: '#fff',\n stroke: '#1890ff',\n radius: 2,\n opacity: 1,\n cursor: 'ew-resize'\n};\n\nvar Handler =\n/** @class */\nfunction () {\n function Handler(cfg) {\n var group = cfg.group,\n name = cfg.name,\n type = cfg.type,\n _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n _c = cfg.width,\n width = _c === void 0 ? 2 : _c,\n _d = cfg.height,\n height = _d === void 0 ? 24 : _d,\n _e = cfg.style,\n style = _e === void 0 ? {} : _e;\n this.group = group;\n this.name = name;\n this.handleType = type;\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n\n if (type === 'trend') {\n this.style = __assign(__assign({}, DEFAULT_STYLE), style);\n } else if (type === 'simple') {\n this.style = __assign(__assign({}, SIMPLE_DEFAULT_STYLE), style);\n }\n\n this.renderHandle();\n }\n /**\n * 设置位置 x\n * @param x\n */\n\n\n Handler.prototype.setX = function (x) {\n this.setXY(x, undefined);\n };\n /**\n * 设置位置 y\n * @param y\n */\n\n\n Handler.prototype.setY = function (y) {\n this.setXY(undefined, y);\n };\n\n Handler.prototype.setXY = function (x, y) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(x)) {\n this.x = x;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(y)) {\n this.y = y;\n }\n\n this.updateXY();\n };\n /**\n * 初始化组件\n * @private\n */\n\n\n Handler.prototype.renderHandle = function () {\n var _a = this,\n width = _a.width,\n height = _a.height,\n style = _a.style,\n name = _a.name;\n\n var fill = style.fill,\n stroke = style.stroke,\n radius = style.radius,\n opacity = style.opacity,\n cursor = style.cursor;\n this.handleGroup = this.group.addGroup(); // 趋势图时的 handle\n\n if (this.handleType === 'trend') {\n // 垂直线\n this.verticalLine = this.handleGroup.addShape('rect', {\n attrs: {\n x: 0,\n y: 0,\n width: width,\n height: height,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor\n },\n name: \"\".concat(name, \"-handler\")\n });\n this.topCircle = this.handleGroup.addShape('circle', {\n attrs: {\n x: width / 2,\n y: 0,\n r: 2 * width,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor,\n lineAppendWidth: 12\n },\n name: \"\".concat(name, \"-handler\")\n });\n this.bottomCircle = this.handleGroup.addShape('circle', {\n attrs: {\n x: width / 2,\n y: height,\n r: 2 * width,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor\n },\n name: \"\".concat(name, \"-handler\")\n });\n } else if (this.handleType === 'simple') {\n this.topCircle = this.handleGroup.addShape('circle', {\n attrs: {\n x: width / 2,\n y: height / 2,\n r: 2 * width,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor,\n lineWidth: 2\n },\n name: \"\".concat(name, \"-handler\")\n });\n } // 移动到对应的位置\n\n\n this.updateXY();\n\n if (this.handleType === 'trend') {\n this.bindTrendEvents();\n } else if (this.handleType === 'simple') {\n this.bindSimpleEvents();\n }\n };\n\n Handler.prototype.bindSimpleEvents = function () {\n var _this = this;\n\n var name = this.name;\n this.handleGroup.on(\"\".concat(name, \"-handler:mouseenter\"), function () {\n var highLightFill = _this.style.highLightFill;\n\n _this.topCircle.attr('fill', highLightFill);\n });\n this.handleGroup.on(\"\".concat(name, \"-handler:mouseleave\"), function () {\n var fill = _this.style.fill;\n\n _this.topCircle.attr('fill', fill);\n });\n };\n\n Handler.prototype.bindTrendEvents = function () {\n var _this = this;\n\n var name = this.name;\n this.handleGroup.on(\"\".concat(name, \"-handler:mouseenter\"), function () {\n var highLightFill = _this.style.highLightFill;\n\n _this.verticalLine.attr('fill', highLightFill);\n\n _this.topCircle.attr('fill', highLightFill);\n\n _this.bottomCircle.attr('fill', highLightFill);\n });\n this.handleGroup.on(\"\".concat(name, \"-handler:mouseleave\"), function () {\n var fill = _this.style.fill;\n\n _this.verticalLine.attr('fill', fill);\n\n _this.topCircle.attr('fill', fill);\n\n _this.bottomCircle.attr('fill', fill);\n });\n };\n\n Handler.prototype.show = function () {\n this.handleGroup.show();\n };\n\n Handler.prototype.hide = function () {\n this.handleGroup.hide();\n };\n\n Handler.prototype.updateXY = function () {\n this.handleGroup.setMatrix([1, 0, 0, 0, 1, 0, this.x, this.y, 1]);\n };\n\n return Handler;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Handler);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvaGFuZGxlci5qcz8wMWY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSxlQUFlLFNBQUksSUFBSSxTQUFJO0FBQzNCO0FBQ0EsNENBQTRDLE9BQU87QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDO0FBQ3ZDLEtBQUs7QUFDTCx1Q0FBdUM7QUFDdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsc0VBQU8iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvaGFuZGxlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2Fzc2lnbiA9IHRoaXMgJiYgdGhpcy5fX2Fzc2lnbiB8fCBmdW5jdGlvbiAoKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcblxuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBERUZBVUxUX1NUWUxFID0ge1xuICBmaWxsOiAnIzE4OTBmZicsXG4gIHN0cm9rZTogJyMxODkwZmYnLFxuICB0eXBlOiAndHJlbmQnLFxuICByYWRpdXM6IDIsXG4gIG9wYWNpdHk6IDEsXG4gIGN1cnNvcjogJ2V3LXJlc2l6ZScsXG4gIC8vIOmrmOS6rueahOminOiJslxuICBoaWdoTGlnaHRGaWxsOiAnIzAwNTBiMydcbn07XG52YXIgU0lNUExFX0RFRkFVTFRfU1RZTEUgPSB7XG4gIGZpbGw6ICcjZmZmJyxcbiAgc3Ryb2tlOiAnIzE4OTBmZicsXG4gIHJhZGl1czogMixcbiAgb3BhY2l0eTogMSxcbiAgY3Vyc29yOiAnZXctcmVzaXplJ1xufTtcblxudmFyIEhhbmRsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBIYW5kbGVyKGNmZykge1xuICAgIHZhciBncm91cCA9IGNmZy5ncm91cCxcbiAgICAgICAgbmFtZSA9IGNmZy5uYW1lLFxuICAgICAgICB0eXBlID0gY2ZnLnR5cGUsXG4gICAgICAgIF9hID0gY2ZnLngsXG4gICAgICAgIHggPSBfYSA9PT0gdm9pZCAwID8gMCA6IF9hLFxuICAgICAgICBfYiA9IGNmZy55LFxuICAgICAgICB5ID0gX2IgPT09IHZvaWQgMCA/IDAgOiBfYixcbiAgICAgICAgX2MgPSBjZmcud2lkdGgsXG4gICAgICAgIHdpZHRoID0gX2MgPT09IHZvaWQgMCA/IDIgOiBfYyxcbiAgICAgICAgX2QgPSBjZmcuaGVpZ2h0LFxuICAgICAgICBoZWlnaHQgPSBfZCA9PT0gdm9pZCAwID8gMjQgOiBfZCxcbiAgICAgICAgX2UgPSBjZmcuc3R5bGUsXG4gICAgICAgIHN0eWxlID0gX2UgPT09IHZvaWQgMCA/IHt9IDogX2U7XG4gICAgdGhpcy5ncm91cCA9IGdyb3VwO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5oYW5kbGVUeXBlID0gdHlwZTtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgaWYgKHR5cGUgPT09ICd0cmVuZCcpIHtcbiAgICAgIHRoaXMuc3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgREVGQVVMVF9TVFlMRSksIHN0eWxlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzaW1wbGUnKSB7XG4gICAgICB0aGlzLnN0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIFNJTVBMRV9ERUZBVUxUX1NUWUxFKSwgc3R5bGUpO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVySGFuZGxlKCk7XG4gIH1cbiAgLyoqXG4gICAqIOiuvue9ruS9jee9riB4XG4gICAqIEBwYXJhbSB4XG4gICAqL1xuXG5cbiAgSGFuZGxlci5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gICAgdGhpcy5zZXRYWSh4LCB1bmRlZmluZWQpO1xuICB9O1xuICAvKipcbiAgICog6K6+572u5L2N572uIHlcbiAgICogQHBhcmFtIHlcbiAgICovXG5cblxuICBIYW5kbGVyLnByb3RvdHlwZS5zZXRZID0gZnVuY3Rpb24gKHkpIHtcbiAgICB0aGlzLnNldFhZKHVuZGVmaW5lZCwgeSk7XG4gIH07XG5cbiAgSGFuZGxlci5wcm90b3R5cGUuc2V0WFkgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgIGlmIChpc051bWJlcih4KSkge1xuICAgICAgdGhpcy54ID0geDtcbiAgICB9XG5cbiAgICBpZiAoaXNOdW1iZXIoeSkpIHtcbiAgICAgIHRoaXMueSA9IHk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVYWSgpO1xuICB9O1xuICAvKipcbiAgICog5Yid5aeL5YyW57uE5Lu2XG4gICAqIEBwcml2YXRlXG4gICAqL1xuXG5cbiAgSGFuZGxlci5wcm90b3R5cGUucmVuZGVySGFuZGxlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIHdpZHRoID0gX2Eud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF9hLmhlaWdodCxcbiAgICAgICAgc3R5bGUgPSBfYS5zdHlsZSxcbiAgICAgICAgbmFtZSA9IF9hLm5hbWU7XG5cbiAgICB2YXIgZmlsbCA9IHN0eWxlLmZpbGwsXG4gICAgICAgIHN0cm9rZSA9IHN0eWxlLnN0cm9rZSxcbiAgICAgICAgcmFkaXVzID0gc3R5bGUucmFkaXVzLFxuICAgICAgICBvcGFjaXR5ID0gc3R5bGUub3BhY2l0eSxcbiAgICAgICAgY3Vyc29yID0gc3R5bGUuY3Vyc29yO1xuICAgIHRoaXMuaGFuZGxlR3JvdXAgPSB0aGlzLmdyb3VwLmFkZEdyb3VwKCk7IC8vIOi2i+WKv+WbvuaXtueahCBoYW5kbGVcblxuICAgIGlmICh0aGlzLmhhbmRsZVR5cGUgPT09ICd0cmVuZCcpIHtcbiAgICAgIC8vIOWeguebtOe6v1xuICAgICAgdGhpcy52ZXJ0aWNhbExpbmUgPSB0aGlzLmhhbmRsZUdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgZmlsbDogZmlsbCxcbiAgICAgICAgICBzdHJva2U6IHN0cm9rZSxcbiAgICAgICAgICByYWRpdXM6IHJhZGl1cyxcbiAgICAgICAgICBvcGFjaXR5OiBvcGFjaXR5LFxuICAgICAgICAgIGN1cnNvcjogY3Vyc29yXG4gICAgICAgIH0sXG4gICAgICAgIG5hbWU6IFwiXCIuY29uY2F0KG5hbWUsIFwiLWhhbmRsZXJcIilcbiAgICAgIH0pO1xuICAgICAgdGhpcy50b3BDaXJjbGUgPSB0aGlzLmhhbmRsZUdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogMiAqIHdpZHRoLFxuICAgICAgICAgIGZpbGw6IGZpbGwsXG4gICAgICAgICAgc3Ryb2tlOiBzdHJva2UsXG4gICAgICAgICAgcmFkaXVzOiByYWRpdXMsXG4gICAgICAgICAgb3BhY2l0eTogb3BhY2l0eSxcbiAgICAgICAgICBjdXJzb3I6IGN1cnNvcixcbiAgICAgICAgICBsaW5lQXBwZW5kV2lkdGg6IDEyXG4gICAgICAgIH0sXG4gICAgICAgIG5hbWU6IFwiXCIuY29uY2F0KG5hbWUsIFwiLWhhbmRsZXJcIilcbiAgICAgIH0pO1xuICAgICAgdGhpcy5ib3R0b21DaXJjbGUgPSB0aGlzLmhhbmRsZUdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICAgIHk6IGhlaWdodCxcbiAgICAgICAgICByOiAyICogd2lkdGgsXG4gICAgICAgICAgZmlsbDogZmlsbCxcbiAgICAgICAgICBzdHJva2U6IHN0cm9rZSxcbiAgICAgICAgICByYWRpdXM6IHJhZGl1cyxcbiAgICAgICAgICBvcGFjaXR5OiBvcGFjaXR5LFxuICAgICAgICAgIGN1cnNvcjogY3Vyc29yXG4gICAgICAgIH0sXG4gICAgICAgIG5hbWU6IFwiXCIuY29uY2F0KG5hbWUsIFwiLWhhbmRsZXJcIilcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5oYW5kbGVUeXBlID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy50b3BDaXJjbGUgPSB0aGlzLmhhbmRsZUdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDIsXG4gICAgICAgICAgcjogMiAqIHdpZHRoLFxuICAgICAgICAgIGZpbGw6IGZpbGwsXG4gICAgICAgICAgc3Ryb2tlOiBzdHJva2UsXG4gICAgICAgICAgcmFkaXVzOiByYWRpdXMsXG4gICAgICAgICAgb3BhY2l0eTogb3BhY2l0eSxcbiAgICAgICAgICBjdXJzb3I6IGN1cnNvcixcbiAgICAgICAgICBsaW5lV2lkdGg6IDJcbiAgICAgICAgfSxcbiAgICAgICAgbmFtZTogXCJcIi5jb25jYXQobmFtZSwgXCItaGFuZGxlclwiKVxuICAgICAgfSk7XG4gICAgfSAvLyDnp7vliqjliLDlr7nlupTnmoTkvY3nva5cblxuXG4gICAgdGhpcy51cGRhdGVYWSgpO1xuXG4gICAgaWYgKHRoaXMuaGFuZGxlVHlwZSA9PT0gJ3RyZW5kJykge1xuICAgICAgdGhpcy5iaW5kVHJlbmRFdmVudHMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGFuZGxlVHlwZSA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIHRoaXMuYmluZFNpbXBsZUV2ZW50cygpO1xuICAgIH1cbiAgfTtcblxuICBIYW5kbGVyLnByb3RvdHlwZS5iaW5kU2ltcGxlRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTtcbiAgICB0aGlzLmhhbmRsZUdyb3VwLm9uKFwiXCIuY29uY2F0KG5hbWUsIFwiLWhhbmRsZXI6bW91c2VlbnRlclwiKSwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGhpZ2hMaWdodEZpbGwgPSBfdGhpcy5zdHlsZS5oaWdoTGlnaHRGaWxsO1xuXG4gICAgICBfdGhpcy50b3BDaXJjbGUuYXR0cignZmlsbCcsIGhpZ2hMaWdodEZpbGwpO1xuICAgIH0pO1xuICAgIHRoaXMuaGFuZGxlR3JvdXAub24oXCJcIi5jb25jYXQobmFtZSwgXCItaGFuZGxlcjptb3VzZWxlYXZlXCIpLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZmlsbCA9IF90aGlzLnN0eWxlLmZpbGw7XG5cbiAgICAgIF90aGlzLnRvcENpcmNsZS5hdHRyKCdmaWxsJywgZmlsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgSGFuZGxlci5wcm90b3R5cGUuYmluZFRyZW5kRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTtcbiAgICB0aGlzLmhhbmRsZUdyb3VwLm9uKFwiXCIuY29uY2F0KG5hbWUsIFwiLWhhbmRsZXI6bW91c2VlbnRlclwiKSwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGhpZ2hMaWdodEZpbGwgPSBfdGhpcy5zdHlsZS5oaWdoTGlnaHRGaWxsO1xuXG4gICAgICBfdGhpcy52ZXJ0aWNhbExpbmUuYXR0cignZmlsbCcsIGhpZ2hMaWdodEZpbGwpO1xuXG4gICAgICBfdGhpcy50b3BDaXJjbGUuYXR0cignZmlsbCcsIGhpZ2hMaWdodEZpbGwpO1xuXG4gICAgICBfdGhpcy5ib3R0b21DaXJjbGUuYXR0cignZmlsbCcsIGhpZ2hMaWdodEZpbGwpO1xuICAgIH0pO1xuICAgIHRoaXMuaGFuZGxlR3JvdXAub24oXCJcIi5jb25jYXQobmFtZSwgXCItaGFuZGxlcjptb3VzZWxlYXZlXCIpLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZmlsbCA9IF90aGlzLnN0eWxlLmZpbGw7XG5cbiAgICAgIF90aGlzLnZlcnRpY2FsTGluZS5hdHRyKCdmaWxsJywgZmlsbCk7XG5cbiAgICAgIF90aGlzLnRvcENpcmNsZS5hdHRyKCdmaWxsJywgZmlsbCk7XG5cbiAgICAgIF90aGlzLmJvdHRvbUNpcmNsZS5hdHRyKCdmaWxsJywgZmlsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgSGFuZGxlci5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmhhbmRsZUdyb3VwLnNob3coKTtcbiAgfTtcblxuICBIYW5kbGVyLnByb3RvdHlwZS5oaWRlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaGFuZGxlR3JvdXAuaGlkZSgpO1xuICB9O1xuXG4gIEhhbmRsZXIucHJvdG90eXBlLnVwZGF0ZVhZID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaGFuZGxlR3JvdXAuc2V0TWF0cml4KFsxLCAwLCAwLCAwLCAxLCAwLCB0aGlzLngsIHRoaXMueSwgMV0pO1xuICB9O1xuXG4gIHJldHVybiBIYW5kbGVyO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBIYW5kbGVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/timeBar/handler.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/timeBar/index.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/timeBar/index.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-canvas */ \"./node_modules/@antv/g-canvas/esm/index.js\");\n/* harmony import */ var _antv_g_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-svg */ \"./node_modules/@antv/g-svg/esm/index.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\n/* harmony import */ var _trendTimeBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./trendTimeBar */ \"./node_modules/@antv/g6-plugin/es/timeBar/trendTimeBar.js\");\n/* harmony import */ var _timeBarSlice__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./timeBarSlice */ \"./node_modules/@antv/g6-plugin/es/timeBar/timeBarSlice.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/g6-plugin/es/timeBar/constant.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/**\n * 基于 G 的时间轴组件\n */\n\n\n\n\n\n\n\n\n\n // simple 版本默认高度\n\nvar DEFAULT_SIMPLE_HEIGHT = 4; // trend 版本默认高度\n\nvar DEFAULT_TREND_HEIGHT = 26;\n\nvar TimeBar =\n/** @class */\nfunction (_super) {\n __extends(TimeBar, _super);\n\n function TimeBar(config) {\n return _super.call(this, config) || this;\n }\n\n TimeBar.prototype.getDefaultCfgs = function () {\n return {\n container: null,\n className: 'g6-component-timebar',\n padding: 10,\n type: 'trend',\n trend: {\n data: [],\n isArea: false,\n smooth: true\n },\n controllerCfg: {\n speed: 1,\n loop: false\n },\n slider: {\n start: 0.1,\n end: 0.9,\n minText: 'min',\n maxText: 'max'\n },\n tick: {\n start: 0.1,\n end: 0.9,\n data: []\n },\n textStyle: {},\n filterEdge: false,\n filterItemTypes: ['node'],\n containerCSS: {}\n };\n };\n /**\n * 初始化 TimeBar 的容器\n */\n\n\n TimeBar.prototype.initContainer = function () {\n var graph = this.get('graph');\n var _a = this._cfgs,\n width = _a.width,\n height = _a.height;\n var className = this.get('className') || 'g6-component-timebar';\n var container = this.get('container');\n var graphContainer = this.get('graph').get('container');\n var timeBarContainer;\n\n if (!container) {\n timeBarContainer = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"
\"));\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"modifyCSS\"])(timeBarContainer, {\n position: 'relative'\n });\n } else {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_7__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n timeBarContainer = container;\n }\n\n graphContainer.appendChild(timeBarContainer);\n this.set('timeBarContainer', timeBarContainer);\n var canvas;\n var renderer = graph.get('renderer');\n\n if (renderer === 'SVG') {\n canvas = new _antv_g_svg__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"]({\n container: timeBarContainer,\n width: width,\n height: height\n });\n } else {\n canvas = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_0__[\"Canvas\"]({\n container: timeBarContainer,\n width: width,\n height: height\n });\n } // 根据传入的参数修改容器 CSS 样式\n\n\n if (this.get('containerCSS')) Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"modifyCSS\"])(timeBarContainer, this.get('containerCSS'));\n this.set('canvas', canvas);\n };\n\n TimeBar.prototype.init = function () {\n this.initContainer();\n var canvas = this.get('canvas');\n var timeBarGroup = canvas.addGroup({\n name: 'timebar-group'\n });\n this.set('timeBarGroup', timeBarGroup);\n this.renderTrend();\n this.initEvent();\n var fontFamily = typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif';\n this.set('fontFamily', fontFamily);\n };\n\n TimeBar.prototype.renderTrend = function () {\n var _this = this;\n\n var _a = this._cfgs,\n width = _a.width,\n x = _a.x,\n y = _a.y,\n padding = _a.padding,\n type = _a.type,\n trend = _a.trend,\n slider = _a.slider,\n controllerCfg = _a.controllerCfg,\n textStyle = _a.textStyle,\n tick = _a.tick,\n backgroundStyle = _a.backgroundStyle,\n foregroundStyle = _a.foregroundStyle;\n\n var data = trend.data,\n other = __rest(trend, [\"data\"]);\n\n var realWidth = width - 2 * padding;\n var defaultHeight = type === 'trend' ? DEFAULT_TREND_HEIGHT : DEFAULT_SIMPLE_HEIGHT;\n var graph = this.get('graph');\n var group = this.get('timeBarGroup');\n var canvas = this.get('canvas');\n var timebar = null;\n\n if (type === 'trend' || type === 'simple') {\n var getValue_1 = this.get('getValue');\n timebar = new _trendTimeBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"](__assign(__assign({\n graph: graph,\n canvas: canvas,\n group: group,\n type: type,\n x: x + padding,\n y: type === 'trend' ? y + padding : y + padding + 15,\n width: realWidth,\n height: defaultHeight,\n padding: padding,\n backgroundStyle: backgroundStyle,\n foregroundStyle: foregroundStyle,\n trendCfg: __assign(__assign({}, other), {\n data: data.map(function (d) {\n return (getValue_1 === null || getValue_1 === void 0 ? void 0 : getValue_1(d)) || d.value;\n })\n })\n }, slider), {\n tick: {\n ticks: data,\n tickLabelFormatter: tick.tickLabelFormatter,\n tickLabelStyle: tick.tickLabelStyle,\n tickLineStyle: tick.tickLineStyle\n },\n handlerStyle: __assign(__assign({}, slider.handlerStyle), {\n height: slider.height || defaultHeight\n }),\n controllerCfg: controllerCfg,\n textStyle: textStyle\n }));\n } else if (type === 'tick') {\n // 刻度时间轴\n timebar = new _timeBarSlice__WEBPACK_IMPORTED_MODULE_5__[\"default\"](__assign({\n graph: graph,\n canvas: canvas,\n group: group,\n x: x + padding,\n y: y + padding,\n width: width,\n height: 42,\n padding: 2\n }, tick));\n } // 鼠标按下左/右滑块或范围条后在任意地方释放,都触发暂停播放\n\n\n var handleMouseUp = function handleMouseUp() {\n var timebarInstance = _this.get('timebar');\n\n timebarInstance.draggingHandler = false;\n\n if (timebarInstance.isPlay) {\n timebarInstance.isPlay = false;\n timebarInstance.currentHandler = timebarInstance.maxHandlerShape;\n timebarInstance.changePlayStatus();\n }\n\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n canvas.on('mousedown', function (e) {\n if (e.target.get('name') === 'maxHandlerShape-handler' || e.target.get('name') === 'minHandlerShape-handler' || e.target === timebar.foregroundShape) {\n document.addEventListener('mouseup', handleMouseUp);\n }\n });\n this.set('timebar', timebar);\n };\n\n TimeBar.prototype.filterData = function (evt) {\n var _a;\n\n var value = evt.value;\n var trendData = null;\n var type = this._cfgs.type;\n\n if (type === 'trend' || type === 'simple') {\n trendData = this._cfgs.trend.data;\n } else if (type === 'tick') {\n trendData = this._cfgs.tick.data;\n }\n\n if (!trendData || trendData.length === 0) {\n console.warn('请配置 TimeBar 组件的数据');\n return;\n }\n\n var rangeChange = this.get('rangeChange');\n var graph = this.get('graph');\n var min = Math.round(trendData.length * value[0]);\n var max = Math.round(trendData.length * value[1]);\n max = max >= trendData.length ? trendData.length - 1 : max;\n min = min >= trendData.length ? trendData.length - 1 : min;\n var tickLabelFormatter = (_a = this._cfgs.tick) === null || _a === void 0 ? void 0 : _a.tickLabelFormatter;\n var minText = tickLabelFormatter ? tickLabelFormatter(trendData[min]) : trendData[min].date;\n var maxText = tickLabelFormatter ? tickLabelFormatter(trendData[max]) : trendData[max].date;\n\n if (type !== 'tick') {\n var timebar = this.get('timebar');\n timebar.setText(minText, maxText);\n }\n\n if (rangeChange) {\n rangeChange(graph, minText, maxText);\n } else {\n // 自动过滤数据,并渲染 graph\n if (!this.cacheGraphData || this.cacheGraphData.nodes && this.cacheGraphData.nodes.length === 0) {\n this.cacheGraphData = graph.get('data'); // graph.save() as GraphData;\n }\n\n var filterItemTypes = this.get('filterItemTypes');\n var changeData = this.get('changeData'); // 过滤不在 min 和 max 范围内的节点\n\n var getDate_1 = this.get('getDate');\n var shouldIgnore_1 = this.get('shouldIgnore');\n var minDate_1 = trendData[min].date,\n maxDate_1 = trendData[max].date;\n\n if (changeData || changeData === undefined) {\n var filterNodes = this.cacheGraphData.nodes;\n var filterEdges = this.cacheGraphData.edges;\n\n if (filterItemTypes.includes('node')) {\n filterNodes = filterNodes.filter(function (node) {\n var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(node)) || node.date);\n return date >= minDate_1 && date <= maxDate_1 || (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1('node', node, {\n min: minDate_1,\n max: maxDate_1\n }));\n });\n var nodeIds_1 = filterNodes.map(function (node) {\n return node.id;\n });\n\n if (filterEdges) {\n // 过滤 source 或 target 不在 min 和 max 范围内的边\n filterEdges = filterEdges.filter(function (edge) {\n return nodeIds_1.includes(edge.source) && nodeIds_1.includes(edge.target) || (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1('edge', edge, {\n min: minDate_1,\n max: maxDate_1\n }));\n });\n }\n }\n\n if (this.get('filterEdge') || filterItemTypes.includes('edge')) {\n filterEdges = filterEdges.filter(function (edge) {\n var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(edge)) || edge.date);\n return date >= minDate_1 && date <= maxDate_1 || (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1('edge', edge, {\n min: minDate_1,\n max: maxDate_1\n }));\n });\n }\n\n graph.changeData({\n nodes: filterNodes,\n edges: filterEdges\n });\n } else {\n if (filterItemTypes.includes('node')) {\n graph.getNodes().forEach(function (node) {\n var model = node.getModel();\n if (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1('node', model, {\n min: minDate_1,\n max: maxDate_1\n })) return;\n var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(model)) || model.date);\n\n if (date < minDate_1 || date > maxDate_1) {\n graph.hideItem(node);\n } else {\n graph.showItem(node);\n }\n });\n }\n\n if (this.get('filterEdge') || filterItemTypes.includes('edge')) {\n graph.getEdges().forEach(function (edge) {\n var model = edge.getModel();\n if (shouldIgnore_1 === null || shouldIgnore_1 === void 0 ? void 0 : shouldIgnore_1('edge', model, {\n min: trendData[min].date,\n max: trendData[max].date\n })) return;\n var date = +((getDate_1 === null || getDate_1 === void 0 ? void 0 : getDate_1(model)) || model.date);\n\n if (date < trendData[min].date || date > trendData[max].date) {\n graph.hideItem(edge);\n } else {\n graph.showItem(edge);\n }\n });\n }\n }\n }\n };\n\n TimeBar.prototype.initEvent = function () {\n var _this = this;\n\n var start = 0;\n var end = 0;\n var type = this._cfgs.type;\n\n if (!type || type === 'trend' || type === 'simple') {\n start = this._cfgs.slider.start;\n end = this._cfgs.slider.end;\n } else if (type === 'tick') {\n start = this._cfgs.tick.start;\n end = this._cfgs.tick.end;\n }\n\n var graph = this.get('graph');\n graph.on('afterrender', function (e) {\n _this.filterData({\n value: [start, end]\n });\n }); // 时间轴的值发生改变的事件\n\n graph.on(_constant__WEBPACK_IMPORTED_MODULE_6__[\"VALUE_CHANGE\"], Object(_antv_util__WEBPACK_IMPORTED_MODULE_7__[\"throttle\"])(function (e) {\n _this.filterData(e);\n }, 200, {\n trailing: true,\n leading: true\n }));\n };\n\n TimeBar.prototype.destroy = function () {\n var timebar = this.get('timebar');\n\n if (timebar && timebar.destory) {\n timebar.destory();\n }\n\n _super.prototype.destroy.call(this);\n\n var timeBarContainer = this.get('timeBarContainer');\n\n if (timeBarContainer) {\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_7__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.removeChild(timeBarContainer);\n }\n };\n\n return TimeBar;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimeBar);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvaW5kZXguanM/NmIwOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsZUFBZSxTQUFJLElBQUksU0FBSTtBQUMzQjtBQUNBLDRDQUE0QyxPQUFPO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxhQUFhLFNBQUksSUFBSSxTQUFJO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSwySEFBMkgsY0FBYztBQUN6STtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR21EO0FBQ0E7QUFDRztBQUMzQjtBQUNlO0FBQ0E7QUFDQTtBQUNNOztBQUVoRCw4QkFBOEI7O0FBRTlCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseUJBQXlCLGdFQUFTO0FBQ2xDLE1BQU0sZ0VBQVM7QUFDZjtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsVUFBVSwyREFBUTtBQUNsQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsa0RBQVU7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxtQkFBbUIscURBQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMLGtDQUFrQyxnRUFBUztBQUMzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQixxREFBWTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULDBDQUEwQztBQUMxQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLG9CQUFvQixxREFBWTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7O0FBRUE7QUFDQSw4Q0FBOEM7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZixhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSyxFQUFFOztBQUVQLGFBQWEsc0RBQVksRUFBRSwyREFBUTtBQUNuQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFVBQVUsMkRBQVE7QUFDbEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsNkNBQUk7O0FBRVMsc0VBQU8iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19leHRlbmRzID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG52YXIgX19hc3NpZ24gPSB0aGlzICYmIHRoaXMuX19hc3NpZ24gfHwgZnVuY3Rpb24gKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHQpIHtcbiAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIHMgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIHAgaW4gcykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5cbnZhciBfX3Jlc3QgPSB0aGlzICYmIHRoaXMuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcbiAgfVxuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuLyoqXG4gKiDln7rkuo4gRyDnmoTml7bpl7TovbTnu4Tku7ZcbiAqL1xuXG5cbmltcG9ydCB7IENhbnZhcyBhcyBHQ2FudmFzIH0gZnJvbSAnQGFudHYvZy1jYW52YXMnO1xuaW1wb3J0IHsgQ2FudmFzIGFzIEdTVkdDYW52YXMgfSBmcm9tICdAYW50di9nLXN2Zyc7XG5pbXBvcnQgeyBjcmVhdGVEb20sIG1vZGlmeUNTUyB9IGZyb20gJ0BhbnR2L2RvbS11dGlsJztcbmltcG9ydCBCYXNlIGZyb20gJy4uL2Jhc2UnO1xuaW1wb3J0IFRyZW5kVGltZUJhciBmcm9tICcuL3RyZW5kVGltZUJhcic7XG5pbXBvcnQgVGltZUJhclNsaWNlIGZyb20gJy4vdGltZUJhclNsaWNlJztcbmltcG9ydCB7IFZBTFVFX0NIQU5HRSB9IGZyb20gJy4vY29uc3RhbnQnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIHRocm90dGxlIH0gZnJvbSAnQGFudHYvdXRpbCc7IC8vIHNpbXBsZSDniYjmnKzpu5jorqTpq5jluqZcblxudmFyIERFRkFVTFRfU0lNUExFX0hFSUdIVCA9IDQ7IC8vIHRyZW5kIOeJiOacrOm7mOiupOmrmOW6plxuXG52YXIgREVGQVVMVF9UUkVORF9IRUlHSFQgPSAyNjtcblxudmFyIFRpbWVCYXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoVGltZUJhciwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBUaW1lQmFyKGNvbmZpZykge1xuICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBjb25maWcpIHx8IHRoaXM7XG4gIH1cblxuICBUaW1lQmFyLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZncyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgY2xhc3NOYW1lOiAnZzYtY29tcG9uZW50LXRpbWViYXInLFxuICAgICAgcGFkZGluZzogMTAsXG4gICAgICB0eXBlOiAndHJlbmQnLFxuICAgICAgdHJlbmQ6IHtcbiAgICAgICAgZGF0YTogW10sXG4gICAgICAgIGlzQXJlYTogZmFsc2UsXG4gICAgICAgIHNtb290aDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGNvbnRyb2xsZXJDZmc6IHtcbiAgICAgICAgc3BlZWQ6IDEsXG4gICAgICAgIGxvb3A6IGZhbHNlXG4gICAgICB9LFxuICAgICAgc2xpZGVyOiB7XG4gICAgICAgIHN0YXJ0OiAwLjEsXG4gICAgICAgIGVuZDogMC45LFxuICAgICAgICBtaW5UZXh0OiAnbWluJyxcbiAgICAgICAgbWF4VGV4dDogJ21heCdcbiAgICAgIH0sXG4gICAgICB0aWNrOiB7XG4gICAgICAgIHN0YXJ0OiAwLjEsXG4gICAgICAgIGVuZDogMC45LFxuICAgICAgICBkYXRhOiBbXVxuICAgICAgfSxcbiAgICAgIHRleHRTdHlsZToge30sXG4gICAgICBmaWx0ZXJFZGdlOiBmYWxzZSxcbiAgICAgIGZpbHRlckl0ZW1UeXBlczogWydub2RlJ10sXG4gICAgICBjb250YWluZXJDU1M6IHt9XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIneWni+WMliBUaW1lQmFyIOeahOWuueWZqFxuICAgKi9cblxuXG4gIFRpbWVCYXIucHJvdG90eXBlLmluaXRDb250YWluZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIF9hID0gdGhpcy5fY2ZncyxcbiAgICAgICAgd2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX2EuaGVpZ2h0O1xuICAgIHZhciBjbGFzc05hbWUgPSB0aGlzLmdldCgnY2xhc3NOYW1lJykgfHwgJ2c2LWNvbXBvbmVudC10aW1lYmFyJztcbiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICAgIHZhciBncmFwaENvbnRhaW5lciA9IHRoaXMuZ2V0KCdncmFwaCcpLmdldCgnY29udGFpbmVyJyk7XG4gICAgdmFyIHRpbWVCYXJDb250YWluZXI7XG5cbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgdGltZUJhckNvbnRhaW5lciA9IGNyZWF0ZURvbShcIjxkaXYgY2xhc3M9J1wiLmNvbmNhdChjbGFzc05hbWUsIFwiJz48L2Rpdj5cIikpO1xuICAgICAgbW9kaWZ5Q1NTKHRpbWVCYXJDb250YWluZXIsIHtcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xuICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXIpO1xuICAgICAgfVxuXG4gICAgICB0aW1lQmFyQ29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIH1cblxuICAgIGdyYXBoQ29udGFpbmVyLmFwcGVuZENoaWxkKHRpbWVCYXJDb250YWluZXIpO1xuICAgIHRoaXMuc2V0KCd0aW1lQmFyQ29udGFpbmVyJywgdGltZUJhckNvbnRhaW5lcik7XG4gICAgdmFyIGNhbnZhcztcbiAgICB2YXIgcmVuZGVyZXIgPSBncmFwaC5nZXQoJ3JlbmRlcmVyJyk7XG5cbiAgICBpZiAocmVuZGVyZXIgPT09ICdTVkcnKSB7XG4gICAgICBjYW52YXMgPSBuZXcgR1NWR0NhbnZhcyh7XG4gICAgICAgIGNvbnRhaW5lcjogdGltZUJhckNvbnRhaW5lcixcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbnZhcyA9IG5ldyBHQ2FudmFzKHtcbiAgICAgICAgY29udGFpbmVyOiB0aW1lQmFyQ29udGFpbmVyLFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9KTtcbiAgICB9IC8vIOagueaNruS8oOWFpeeahOWPguaVsOS/ruaUueWuueWZqCBDU1Mg5qC35byPXG5cblxuICAgIGlmICh0aGlzLmdldCgnY29udGFpbmVyQ1NTJykpIG1vZGlmeUNTUyh0aW1lQmFyQ29udGFpbmVyLCB0aGlzLmdldCgnY29udGFpbmVyQ1NTJykpO1xuICAgIHRoaXMuc2V0KCdjYW52YXMnLCBjYW52YXMpO1xuICB9O1xuXG4gIFRpbWVCYXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5pbml0Q29udGFpbmVyKCk7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgdGltZUJhckdyb3VwID0gY2FudmFzLmFkZEdyb3VwKHtcbiAgICAgIG5hbWU6ICd0aW1lYmFyLWdyb3VwJ1xuICAgIH0pO1xuICAgIHRoaXMuc2V0KCd0aW1lQmFyR3JvdXAnLCB0aW1lQmFyR3JvdXApO1xuICAgIHRoaXMucmVuZGVyVHJlbmQoKTtcbiAgICB0aGlzLmluaXRFdmVudCgpO1xuICAgIHZhciBmb250RmFtaWx5ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LWZhbWlseScpIHx8ICdBcmlhbCwgc2Fucy1zZXJpZicgOiAnQXJpYWwsIHNhbnMtc2VyaWYnO1xuICAgIHRoaXMuc2V0KCdmb250RmFtaWx5JywgZm9udEZhbWlseSk7XG4gIH07XG5cbiAgVGltZUJhci5wcm90b3R5cGUucmVuZGVyVHJlbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMuX2NmZ3MsXG4gICAgICAgIHdpZHRoID0gX2Eud2lkdGgsXG4gICAgICAgIHggPSBfYS54LFxuICAgICAgICB5ID0gX2EueSxcbiAgICAgICAgcGFkZGluZyA9IF9hLnBhZGRpbmcsXG4gICAgICAgIHR5cGUgPSBfYS50eXBlLFxuICAgICAgICB0cmVuZCA9IF9hLnRyZW5kLFxuICAgICAgICBzbGlkZXIgPSBfYS5zbGlkZXIsXG4gICAgICAgIGNvbnRyb2xsZXJDZmcgPSBfYS5jb250cm9sbGVyQ2ZnLFxuICAgICAgICB0ZXh0U3R5bGUgPSBfYS50ZXh0U3R5bGUsXG4gICAgICAgIHRpY2sgPSBfYS50aWNrLFxuICAgICAgICBiYWNrZ3JvdW5kU3R5bGUgPSBfYS5iYWNrZ3JvdW5kU3R5bGUsXG4gICAgICAgIGZvcmVncm91bmRTdHlsZSA9IF9hLmZvcmVncm91bmRTdHlsZTtcblxuICAgIHZhciBkYXRhID0gdHJlbmQuZGF0YSxcbiAgICAgICAgb3RoZXIgPSBfX3Jlc3QodHJlbmQsIFtcImRhdGFcIl0pO1xuXG4gICAgdmFyIHJlYWxXaWR0aCA9IHdpZHRoIC0gMiAqIHBhZGRpbmc7XG4gICAgdmFyIGRlZmF1bHRIZWlnaHQgPSB0eXBlID09PSAndHJlbmQnID8gREVGQVVMVF9UUkVORF9IRUlHSFQgOiBERUZBVUxUX1NJTVBMRV9IRUlHSFQ7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ3RpbWVCYXJHcm91cCcpO1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIHRpbWViYXIgPSBudWxsO1xuXG4gICAgaWYgKHR5cGUgPT09ICd0cmVuZCcgfHwgdHlwZSA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIHZhciBnZXRWYWx1ZV8xID0gdGhpcy5nZXQoJ2dldFZhbHVlJyk7XG4gICAgICB0aW1lYmFyID0gbmV3IFRyZW5kVGltZUJhcihfX2Fzc2lnbihfX2Fzc2lnbih7XG4gICAgICAgIGdyYXBoOiBncmFwaCxcbiAgICAgICAgY2FudmFzOiBjYW52YXMsXG4gICAgICAgIGdyb3VwOiBncm91cCxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgeDogeCArIHBhZGRpbmcsXG4gICAgICAgIHk6IHR5cGUgPT09ICd0cmVuZCcgPyB5ICsgcGFkZGluZyA6IHkgKyBwYWRkaW5nICsgMTUsXG4gICAgICAgIHdpZHRoOiByZWFsV2lkdGgsXG4gICAgICAgIGhlaWdodDogZGVmYXVsdEhlaWdodCxcbiAgICAgICAgcGFkZGluZzogcGFkZGluZyxcbiAgICAgICAgYmFja2dyb3VuZFN0eWxlOiBiYWNrZ3JvdW5kU3R5bGUsXG4gICAgICAgIGZvcmVncm91bmRTdHlsZTogZm9yZWdyb3VuZFN0eWxlLFxuICAgICAgICB0cmVuZENmZzogX19hc3NpZ24oX19hc3NpZ24oe30sIG90aGVyKSwge1xuICAgICAgICAgIGRhdGE6IGRhdGEubWFwKGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgICByZXR1cm4gKGdldFZhbHVlXzEgPT09IG51bGwgfHwgZ2V0VmFsdWVfMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2V0VmFsdWVfMShkKSkgfHwgZC52YWx1ZTtcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfSwgc2xpZGVyKSwge1xuICAgICAgICB0aWNrOiB7XG4gICAgICAgICAgdGlja3M6IGRhdGEsXG4gICAgICAgICAgdGlja0xhYmVsRm9ybWF0dGVyOiB0aWNrLnRpY2tMYWJlbEZvcm1hdHRlcixcbiAgICAgICAgICB0aWNrTGFiZWxTdHlsZTogdGljay50aWNrTGFiZWxTdHlsZSxcbiAgICAgICAgICB0aWNrTGluZVN0eWxlOiB0aWNrLnRpY2tMaW5lU3R5bGVcbiAgICAgICAgfSxcbiAgICAgICAgaGFuZGxlclN0eWxlOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc2xpZGVyLmhhbmRsZXJTdHlsZSksIHtcbiAgICAgICAgICBoZWlnaHQ6IHNsaWRlci5oZWlnaHQgfHwgZGVmYXVsdEhlaWdodFxuICAgICAgICB9KSxcbiAgICAgICAgY29udHJvbGxlckNmZzogY29udHJvbGxlckNmZyxcbiAgICAgICAgdGV4dFN0eWxlOiB0ZXh0U3R5bGVcbiAgICAgIH0pKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0aWNrJykge1xuICAgICAgLy8g5Yi75bqm5pe26Ze06L20XG4gICAgICB0aW1lYmFyID0gbmV3IFRpbWVCYXJTbGljZShfX2Fzc2lnbih7XG4gICAgICAgIGdyYXBoOiBncmFwaCxcbiAgICAgICAgY2FudmFzOiBjYW52YXMsXG4gICAgICAgIGdyb3VwOiBncm91cCxcbiAgICAgICAgeDogeCArIHBhZGRpbmcsXG4gICAgICAgIHk6IHkgKyBwYWRkaW5nLFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogNDIsXG4gICAgICAgIHBhZGRpbmc6IDJcbiAgICAgIH0sIHRpY2spKTtcbiAgICB9IC8vIOm8oOagh+aMieS4i+W3pi/lj7Pmu5HlnZfmiJbojIPlm7TmnaHlkI7lnKjku7vmhI/lnLDmlrnph4rmlL7vvIzpg73op6blj5HmmoLlgZzmkq3mlL5cblxuXG4gICAgdmFyIGhhbmRsZU1vdXNlVXAgPSBmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKCkge1xuICAgICAgdmFyIHRpbWViYXJJbnN0YW5jZSA9IF90aGlzLmdldCgndGltZWJhcicpO1xuXG4gICAgICB0aW1lYmFySW5zdGFuY2UuZHJhZ2dpbmdIYW5kbGVyID0gZmFsc2U7XG5cbiAgICAgIGlmICh0aW1lYmFySW5zdGFuY2UuaXNQbGF5KSB7XG4gICAgICAgIHRpbWViYXJJbnN0YW5jZS5pc1BsYXkgPSBmYWxzZTtcbiAgICAgICAgdGltZWJhckluc3RhbmNlLmN1cnJlbnRIYW5kbGVyID0gdGltZWJhckluc3RhbmNlLm1heEhhbmRsZXJTaGFwZTtcbiAgICAgICAgdGltZWJhckluc3RhbmNlLmNoYW5nZVBsYXlTdGF0dXMoKTtcbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU1vdXNlVXApO1xuICAgIH07XG5cbiAgICBjYW52YXMub24oJ21vdXNlZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZS50YXJnZXQuZ2V0KCduYW1lJykgPT09ICdtYXhIYW5kbGVyU2hhcGUtaGFuZGxlcicgfHwgZS50YXJnZXQuZ2V0KCduYW1lJykgPT09ICdtaW5IYW5kbGVyU2hhcGUtaGFuZGxlcicgfHwgZS50YXJnZXQgPT09IHRpbWViYXIuZm9yZWdyb3VuZFNoYXBlKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVNb3VzZVVwKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNldCgndGltZWJhcicsIHRpbWViYXIpO1xuICB9O1xuXG4gIFRpbWVCYXIucHJvdG90eXBlLmZpbHRlckRhdGEgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIHZhbHVlID0gZXZ0LnZhbHVlO1xuICAgIHZhciB0cmVuZERhdGEgPSBudWxsO1xuICAgIHZhciB0eXBlID0gdGhpcy5fY2Zncy50eXBlO1xuXG4gICAgaWYgKHR5cGUgPT09ICd0cmVuZCcgfHwgdHlwZSA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIHRyZW5kRGF0YSA9IHRoaXMuX2NmZ3MudHJlbmQuZGF0YTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0aWNrJykge1xuICAgICAgdHJlbmREYXRhID0gdGhpcy5fY2Zncy50aWNrLmRhdGE7XG4gICAgfVxuXG4gICAgaWYgKCF0cmVuZERhdGEgfHwgdHJlbmREYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKCfor7fphY3nva4gVGltZUJhciDnu4Tku7bnmoTmlbDmja4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcmFuZ2VDaGFuZ2UgPSB0aGlzLmdldCgncmFuZ2VDaGFuZ2UnKTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgbWluID0gTWF0aC5yb3VuZCh0cmVuZERhdGEubGVuZ3RoICogdmFsdWVbMF0pO1xuICAgIHZhciBtYXggPSBNYXRoLnJvdW5kKHRyZW5kRGF0YS5sZW5ndGggKiB2YWx1ZVsxXSk7XG4gICAgbWF4ID0gbWF4ID49IHRyZW5kRGF0YS5sZW5ndGggPyB0cmVuZERhdGEubGVuZ3RoIC0gMSA6IG1heDtcbiAgICBtaW4gPSBtaW4gPj0gdHJlbmREYXRhLmxlbmd0aCA/IHRyZW5kRGF0YS5sZW5ndGggLSAxIDogbWluO1xuICAgIHZhciB0aWNrTGFiZWxGb3JtYXR0ZXIgPSAoX2EgPSB0aGlzLl9jZmdzLnRpY2spID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50aWNrTGFiZWxGb3JtYXR0ZXI7XG4gICAgdmFyIG1pblRleHQgPSB0aWNrTGFiZWxGb3JtYXR0ZXIgPyB0aWNrTGFiZWxGb3JtYXR0ZXIodHJlbmREYXRhW21pbl0pIDogdHJlbmREYXRhW21pbl0uZGF0ZTtcbiAgICB2YXIgbWF4VGV4dCA9IHRpY2tMYWJlbEZvcm1hdHRlciA/IHRpY2tMYWJlbEZvcm1hdHRlcih0cmVuZERhdGFbbWF4XSkgOiB0cmVuZERhdGFbbWF4XS5kYXRlO1xuXG4gICAgaWYgKHR5cGUgIT09ICd0aWNrJykge1xuICAgICAgdmFyIHRpbWViYXIgPSB0aGlzLmdldCgndGltZWJhcicpO1xuICAgICAgdGltZWJhci5zZXRUZXh0KG1pblRleHQsIG1heFRleHQpO1xuICAgIH1cblxuICAgIGlmIChyYW5nZUNoYW5nZSkge1xuICAgICAgcmFuZ2VDaGFuZ2UoZ3JhcGgsIG1pblRleHQsIG1heFRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDoh6rliqjov4fmu6TmlbDmja7vvIzlubbmuLLmn5MgZ3JhcGhcbiAgICAgIGlmICghdGhpcy5jYWNoZUdyYXBoRGF0YSB8fCB0aGlzLmNhY2hlR3JhcGhEYXRhLm5vZGVzICYmIHRoaXMuY2FjaGVHcmFwaERhdGEubm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2FjaGVHcmFwaERhdGEgPSBncmFwaC5nZXQoJ2RhdGEnKTsgLy8gZ3JhcGguc2F2ZSgpIGFzIEdyYXBoRGF0YTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZpbHRlckl0ZW1UeXBlcyA9IHRoaXMuZ2V0KCdmaWx0ZXJJdGVtVHlwZXMnKTtcbiAgICAgIHZhciBjaGFuZ2VEYXRhID0gdGhpcy5nZXQoJ2NoYW5nZURhdGEnKTsgLy8g6L+H5ruk5LiN5ZyoIG1pbiDlkowgbWF4IOiMg+WbtOWGheeahOiKgueCuVxuXG4gICAgICB2YXIgZ2V0RGF0ZV8xID0gdGhpcy5nZXQoJ2dldERhdGUnKTtcbiAgICAgIHZhciBzaG91bGRJZ25vcmVfMSA9IHRoaXMuZ2V0KCdzaG91bGRJZ25vcmUnKTtcbiAgICAgIHZhciBtaW5EYXRlXzEgPSB0cmVuZERhdGFbbWluXS5kYXRlLFxuICAgICAgICAgIG1heERhdGVfMSA9IHRyZW5kRGF0YVttYXhdLmRhdGU7XG5cbiAgICAgIGlmIChjaGFuZ2VEYXRhIHx8IGNoYW5nZURhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgZmlsdGVyTm9kZXMgPSB0aGlzLmNhY2hlR3JhcGhEYXRhLm5vZGVzO1xuICAgICAgICB2YXIgZmlsdGVyRWRnZXMgPSB0aGlzLmNhY2hlR3JhcGhEYXRhLmVkZ2VzO1xuXG4gICAgICAgIGlmIChmaWx0ZXJJdGVtVHlwZXMuaW5jbHVkZXMoJ25vZGUnKSkge1xuICAgICAgICAgIGZpbHRlck5vZGVzID0gZmlsdGVyTm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICB2YXIgZGF0ZSA9ICsoKGdldERhdGVfMSA9PT0gbnVsbCB8fCBnZXREYXRlXzEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdldERhdGVfMShub2RlKSkgfHwgbm9kZS5kYXRlKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID49IG1pbkRhdGVfMSAmJiBkYXRlIDw9IG1heERhdGVfMSB8fCAoc2hvdWxkSWdub3JlXzEgPT09IG51bGwgfHwgc2hvdWxkSWdub3JlXzEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNob3VsZElnbm9yZV8xKCdub2RlJywgbm9kZSwge1xuICAgICAgICAgICAgICBtaW46IG1pbkRhdGVfMSxcbiAgICAgICAgICAgICAgbWF4OiBtYXhEYXRlXzFcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YXIgbm9kZUlkc18xID0gZmlsdGVyTm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZS5pZDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChmaWx0ZXJFZGdlcykge1xuICAgICAgICAgICAgLy8g6L+H5rukIHNvdXJjZSDmiJYgdGFyZ2V0IOS4jeWcqCBtaW4g5ZKMIG1heCDojIPlm7TlhoXnmoTovrlcbiAgICAgICAgICAgIGZpbHRlckVkZ2VzID0gZmlsdGVyRWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBub2RlSWRzXzEuaW5jbHVkZXMoZWRnZS5zb3VyY2UpICYmIG5vZGVJZHNfMS5pbmNsdWRlcyhlZGdlLnRhcmdldCkgfHwgKHNob3VsZElnbm9yZV8xID09PSBudWxsIHx8IHNob3VsZElnbm9yZV8xID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzaG91bGRJZ25vcmVfMSgnZWRnZScsIGVkZ2UsIHtcbiAgICAgICAgICAgICAgICBtaW46IG1pbkRhdGVfMSxcbiAgICAgICAgICAgICAgICBtYXg6IG1heERhdGVfMVxuICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5nZXQoJ2ZpbHRlckVkZ2UnKSB8fCBmaWx0ZXJJdGVtVHlwZXMuaW5jbHVkZXMoJ2VkZ2UnKSkge1xuICAgICAgICAgIGZpbHRlckVkZ2VzID0gZmlsdGVyRWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICB2YXIgZGF0ZSA9ICsoKGdldERhdGVfMSA9PT0gbnVsbCB8fCBnZXREYXRlXzEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdldERhdGVfMShlZGdlKSkgfHwgZWRnZS5kYXRlKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID49IG1pbkRhdGVfMSAmJiBkYXRlIDw9IG1heERhdGVfMSB8fCAoc2hvdWxkSWdub3JlXzEgPT09IG51bGwgfHwgc2hvdWxkSWdub3JlXzEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNob3VsZElnbm9yZV8xKCdlZGdlJywgZWRnZSwge1xuICAgICAgICAgICAgICBtaW46IG1pbkRhdGVfMSxcbiAgICAgICAgICAgICAgbWF4OiBtYXhEYXRlXzFcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdyYXBoLmNoYW5nZURhdGEoe1xuICAgICAgICAgIG5vZGVzOiBmaWx0ZXJOb2RlcyxcbiAgICAgICAgICBlZGdlczogZmlsdGVyRWRnZXNcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZmlsdGVySXRlbVR5cGVzLmluY2x1ZGVzKCdub2RlJykpIHtcbiAgICAgICAgICBncmFwaC5nZXROb2RlcygpLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHZhciBtb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcbiAgICAgICAgICAgIGlmIChzaG91bGRJZ25vcmVfMSA9PT0gbnVsbCB8fCBzaG91bGRJZ25vcmVfMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2hvdWxkSWdub3JlXzEoJ25vZGUnLCBtb2RlbCwge1xuICAgICAgICAgICAgICBtaW46IG1pbkRhdGVfMSxcbiAgICAgICAgICAgICAgbWF4OiBtYXhEYXRlXzFcbiAgICAgICAgICAgIH0pKSByZXR1cm47XG4gICAgICAgICAgICB2YXIgZGF0ZSA9ICsoKGdldERhdGVfMSA9PT0gbnVsbCB8fCBnZXREYXRlXzEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdldERhdGVfMShtb2RlbCkpIHx8IG1vZGVsLmRhdGUpO1xuXG4gICAgICAgICAgICBpZiAoZGF0ZSA8IG1pbkRhdGVfMSB8fCBkYXRlID4gbWF4RGF0ZV8xKSB7XG4gICAgICAgICAgICAgIGdyYXBoLmhpZGVJdGVtKG5vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JhcGguc2hvd0l0ZW0obm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5nZXQoJ2ZpbHRlckVkZ2UnKSB8fCBmaWx0ZXJJdGVtVHlwZXMuaW5jbHVkZXMoJ2VkZ2UnKSkge1xuICAgICAgICAgIGdyYXBoLmdldEVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgdmFyIG1vZGVsID0gZWRnZS5nZXRNb2RlbCgpO1xuICAgICAgICAgICAgaWYgKHNob3VsZElnbm9yZV8xID09PSBudWxsIHx8IHNob3VsZElnbm9yZV8xID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzaG91bGRJZ25vcmVfMSgnZWRnZScsIG1vZGVsLCB7XG4gICAgICAgICAgICAgIG1pbjogdHJlbmREYXRhW21pbl0uZGF0ZSxcbiAgICAgICAgICAgICAgbWF4OiB0cmVuZERhdGFbbWF4XS5kYXRlXG4gICAgICAgICAgICB9KSkgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIGRhdGUgPSArKChnZXREYXRlXzEgPT09IG51bGwgfHwgZ2V0RGF0ZV8xID09PSB2b2lkIDAgPyB2b2lkIDAgOiBnZXREYXRlXzEobW9kZWwpKSB8fCBtb2RlbC5kYXRlKTtcblxuICAgICAgICAgICAgaWYgKGRhdGUgPCB0cmVuZERhdGFbbWluXS5kYXRlIHx8IGRhdGUgPiB0cmVuZERhdGFbbWF4XS5kYXRlKSB7XG4gICAgICAgICAgICAgIGdyYXBoLmhpZGVJdGVtKGVkZ2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JhcGguc2hvd0l0ZW0oZWRnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgVGltZUJhci5wcm90b3R5cGUuaW5pdEV2ZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAwO1xuICAgIHZhciB0eXBlID0gdGhpcy5fY2Zncy50eXBlO1xuXG4gICAgaWYgKCF0eXBlIHx8IHR5cGUgPT09ICd0cmVuZCcgfHwgdHlwZSA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIHN0YXJ0ID0gdGhpcy5fY2Zncy5zbGlkZXIuc3RhcnQ7XG4gICAgICBlbmQgPSB0aGlzLl9jZmdzLnNsaWRlci5lbmQ7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndGljaycpIHtcbiAgICAgIHN0YXJ0ID0gdGhpcy5fY2Zncy50aWNrLnN0YXJ0O1xuICAgICAgZW5kID0gdGhpcy5fY2Zncy50aWNrLmVuZDtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICBncmFwaC5vbignYWZ0ZXJyZW5kZXInLCBmdW5jdGlvbiAoZSkge1xuICAgICAgX3RoaXMuZmlsdGVyRGF0YSh7XG4gICAgICAgIHZhbHVlOiBbc3RhcnQsIGVuZF1cbiAgICAgIH0pO1xuICAgIH0pOyAvLyDml7bpl7TovbTnmoTlgLzlj5HnlJ/mlLnlj5jnmoTkuovku7ZcblxuICAgIGdyYXBoLm9uKFZBTFVFX0NIQU5HRSwgdGhyb3R0bGUoZnVuY3Rpb24gKGUpIHtcbiAgICAgIF90aGlzLmZpbHRlckRhdGEoZSk7XG4gICAgfSwgMjAwLCB7XG4gICAgICB0cmFpbGluZzogdHJ1ZSxcbiAgICAgIGxlYWRpbmc6IHRydWVcbiAgICB9KSk7XG4gIH07XG5cbiAgVGltZUJhci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGltZWJhciA9IHRoaXMuZ2V0KCd0aW1lYmFyJyk7XG5cbiAgICBpZiAodGltZWJhciAmJiB0aW1lYmFyLmRlc3RvcnkpIHtcbiAgICAgIHRpbWViYXIuZGVzdG9yeSgpO1xuICAgIH1cblxuICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuXG4gICAgdmFyIHRpbWVCYXJDb250YWluZXIgPSB0aGlzLmdldCgndGltZUJhckNvbnRhaW5lcicpO1xuXG4gICAgaWYgKHRpbWVCYXJDb250YWluZXIpIHtcbiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG5cbiAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdncmFwaCcpLmdldCgnY29udGFpbmVyJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1N0cmluZyhjb250YWluZXIpKSB7XG4gICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZCh0aW1lQmFyQ29udGFpbmVyKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFRpbWVCYXI7XG59KEJhc2UpO1xuXG5leHBvcnQgZGVmYXVsdCBUaW1lQmFyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/timeBar/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/timeBar/path.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/timeBar/path.js ***! \*********************************************************/ /*! exports provided: getLinePath, getSmoothLinePath, dataToPath, dataToRectPath, getAreaLineY, linePathToAreaPath, getRectPoints, getRectPath */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLinePath\", function() { return getLinePath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSmoothLinePath\", function() { return getSmoothLinePath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataToPath\", function() { return dataToPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataToRectPath\", function() { return dataToRectPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAreaLineY\", function() { return getAreaLineY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linePathToAreaPath\", function() { return linePathToAreaPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRectPoints\", function() { return getRectPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRectPath\", function() { return getRectPath; });\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/@antv/path-util/esm/index.js\");\n/* harmony import */ var _antv_scale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/scale */ \"./node_modules/@antv/scale/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\n/**\n * 点数组转 path\n * @param points\n */\n\nfunction pointsToPath(points) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(points, function (p, idx) {\n var command = idx === 0 ? 'M' : 'L';\n var x = p[0],\n y = p[1];\n return [command, x, y];\n });\n}\n/**\n * 将点连接成路径 path\n * @param points\n */\n\n\nfunction getLinePath(points) {\n return pointsToPath(points);\n}\n/**\n * 将点连成平滑的曲线\n * @param points\n */\n\nfunction getSmoothLinePath(points) {\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return getLinePath(points);\n }\n\n var data = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points, function (p) {\n // 当前点和上一个点一样的时候,忽略掉\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isEqual\"])(p, data.slice(data.length - 2))) {\n data.push(p[0], p[1]);\n }\n });\n var path = _antv_path_util__WEBPACK_IMPORTED_MODULE_0__[\"catmullRom2Bezier\"](data, false);\n\n var _a = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"head\"])(points),\n x = _a[0],\n y = _a[1];\n\n path.unshift(['M', x, y]);\n return path;\n}\n/**\n * 将数据转成 path,利用 scale 的归一化能力\n * @param data\n * @param width\n * @param height\n * @param smooth\n */\n\nfunction dataToPath(data, width, height, smooth) {\n if (smooth === void 0) {\n smooth = true;\n } // 利用 scale 来获取 y 上的映射\n\n\n var y = new _antv_scale__WEBPACK_IMPORTED_MODULE_1__[\"Linear\"]({\n values: data\n });\n var x = new _antv_scale__WEBPACK_IMPORTED_MODULE_1__[\"Category\"]({\n values: Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(data, function (v, idx) {\n return idx;\n })\n });\n var points = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(data, function (v, idx) {\n return [x.scale(idx) * width, height - y.scale(v) * height];\n });\n return smooth ? getSmoothLinePath(points) : getLinePath(points);\n}\nfunction dataToRectPath(data, width, height, barWidth) {\n if (barWidth === void 0) {\n barWidth = 5;\n } // 利用 scale 来获取 y 上的映射\n\n\n var y = new _antv_scale__WEBPACK_IMPORTED_MODULE_1__[\"Linear\"]({\n values: data\n });\n var x = new _antv_scale__WEBPACK_IMPORTED_MODULE_1__[\"Category\"]({\n values: Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(data, function (v, idx) {\n return idx;\n })\n });\n var points = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(data, function (v, idx) {\n return [x.scale(idx) * width, height - y.scale(v) * height];\n });\n var rectPoints = [];\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n var param = {\n x: point[0],\n y: point[1],\n y0: height,\n size: barWidth\n };\n var rectPoint = getRectPoints(param);\n rectPoints.push.apply(rectPoints, rectPoint);\n }\n\n return getRectPath(rectPoints);\n}\n/**\n * 获得 area 面积的横向连接线的 px 位置\n * @param data\n * @param width\n * @param height\n */\n\nfunction getAreaLineY(data, height) {\n var y = new _antv_scale__WEBPACK_IMPORTED_MODULE_1__[\"Linear\"]({\n values: data\n });\n var lineY = Math.max(0, y.min);\n return height - y.scale(lineY) * height;\n}\n/**\n * 线 path 转 area path\n * @param path\n * @param width\n * @param height\n */\n\nfunction linePathToAreaPath(path, width, height, data) {\n var areaPath = __spreadArray([], path, true);\n\n var lineYPx = getAreaLineY(data, height);\n areaPath.push(['L', width, lineYPx]);\n areaPath.push(['L', 0, lineYPx]);\n areaPath.push(['Z']);\n return areaPath;\n}\n/**\n * @ignore\n * 根据数据点生成矩形的四个关键点\n * @param pointInfo 数据点信息\n * @returns rect points 返回矩形四个顶点信息\n */\n\nfunction getRectPoints(pointInfo) {\n var x = pointInfo.x,\n y = pointInfo.y,\n y0 = pointInfo.y0,\n size = pointInfo.size; // 有 4 种情况,\n // 1. x, y 都不是数组\n // 2. y是数组,x不是\n // 3. x是数组,y不是\n // 4. x, y 都是数组\n\n var yMin;\n var yMax;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(y)) {\n yMin = y[0], yMax = y[1];\n } else {\n yMin = y0;\n yMax = y;\n }\n\n var xMin;\n var xMax;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(x)) {\n xMin = x[0], xMax = x[1];\n } else {\n xMin = x - size / 2;\n xMax = x + size / 2;\n }\n\n var points = [{\n x: xMin,\n y: yMin\n }, {\n x: xMin,\n y: yMax\n }]; // 矩形的四个关键点,结构如下(左下角顺时针连接)\n // 1 ---- 2\n // | |\n // 0 ---- 3\n\n points.push({\n x: xMax,\n y: yMax\n }, {\n x: xMax,\n y: yMin\n });\n return points;\n}\n/**\n * @ignore\n * 根据矩形关键点绘制 path\n * @param points 关键点数组\n * @param isClosed path 是否需要闭合\n * @returns 返回矩形的 path\n */\n\nfunction getRectPath(points, isClosed) {\n if (isClosed === void 0) {\n isClosed = true;\n }\n\n var path = [];\n var firstPoint = points[0];\n path.push(['M', firstPoint.x, firstPoint.y]);\n\n for (var i = 1, len = points.length; i < len; i++) {\n path.push(['L', points[i].x, points[i].y]);\n } // 对于 shape=\"line\" path 不应该闭合,否则会造成 lineCap 绘图属性失效\n\n\n if (isClosed) {\n path.push(['L', firstPoint.x, firstPoint.y]); // 需要闭合\n\n path.push(['z']);\n }\n\n return path;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvcGF0aC5qcz9mZmQ5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG9CQUFvQixTQUFJLElBQUksU0FBSTtBQUNoQywwRUFBMEUsT0FBTztBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFNEM7QUFDRztBQUNnQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsc0RBQUc7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRSx1REFBSTtBQUNOO0FBQ0EsU0FBUywwREFBTztBQUNoQjtBQUNBO0FBQ0EsR0FBRztBQUNILGFBQWEsaUVBQTBCOztBQUV2QyxXQUFXLHVEQUFJO0FBQ2Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSCxjQUFjLGtEQUFNO0FBQ3BCO0FBQ0EsR0FBRztBQUNILGNBQWMsb0RBQVE7QUFDdEIsWUFBWSxzREFBRztBQUNmO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCxlQUFlLHNEQUFHO0FBQ2xCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSCxjQUFjLGtEQUFNO0FBQ3BCO0FBQ0EsR0FBRztBQUNILGNBQWMsb0RBQVE7QUFDdEIsWUFBWSxzREFBRztBQUNmO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCxlQUFlLHNEQUFHO0FBQ2xCO0FBQ0EsR0FBRztBQUNIOztBQUVBLGlCQUFpQixtQkFBbUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLGNBQWMsa0RBQU07QUFDcEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsTUFBTSwwREFBTztBQUNiO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLE1BQU0sMERBQU87QUFDYjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxzQ0FBc0MsU0FBUztBQUMvQztBQUNBLEdBQUc7OztBQUdIO0FBQ0EsaURBQWlEOztBQUVqRDtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3NwcmVhZEFycmF5ID0gdGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xuXG5pbXBvcnQgKiBhcyBwYXRoVXRpbCBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuaW1wb3J0IHsgQ2F0ZWdvcnksIExpbmVhciB9IGZyb20gJ0BhbnR2L3NjYWxlJztcbmltcG9ydCB7IG1hcCwgZWFjaCwgaXNFcXVhbCwgaGVhZCwgaXNBcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuLyoqXG4gKiDngrnmlbDnu4TovawgcGF0aFxuICogQHBhcmFtIHBvaW50c1xuICovXG5cbmZ1bmN0aW9uIHBvaW50c1RvUGF0aChwb2ludHMpIHtcbiAgcmV0dXJuIG1hcChwb2ludHMsIGZ1bmN0aW9uIChwLCBpZHgpIHtcbiAgICB2YXIgY29tbWFuZCA9IGlkeCA9PT0gMCA/ICdNJyA6ICdMJztcbiAgICB2YXIgeCA9IHBbMF0sXG4gICAgICAgIHkgPSBwWzFdO1xuICAgIHJldHVybiBbY29tbWFuZCwgeCwgeV07XG4gIH0pO1xufVxuLyoqXG4gKiDlsIbngrnov57mjqXmiJDot6/lvoQgcGF0aFxuICogQHBhcmFtIHBvaW50c1xuICovXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmVQYXRoKHBvaW50cykge1xuICByZXR1cm4gcG9pbnRzVG9QYXRoKHBvaW50cyk7XG59XG4vKipcbiAqIOWwhueCuei/nuaIkOW5s+a7keeahOabsue6v1xuICogQHBhcmFtIHBvaW50c1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTbW9vdGhMaW5lUGF0aChwb2ludHMpIHtcbiAgaWYgKHBvaW50cy5sZW5ndGggPD0gMikge1xuICAgIC8vIOS4pOeCueS7peWGheebtOaOpee7mOWItuaIkOi3r+W+hFxuICAgIHJldHVybiBnZXRMaW5lUGF0aChwb2ludHMpO1xuICB9XG5cbiAgdmFyIGRhdGEgPSBbXTtcbiAgZWFjaChwb2ludHMsIGZ1bmN0aW9uIChwKSB7XG4gICAgLy8g5b2T5YmN54K55ZKM5LiK5LiA5Liq54K55LiA5qC355qE5pe25YCZ77yM5b+955Wl5o6JXG4gICAgaWYgKCFpc0VxdWFsKHAsIGRhdGEuc2xpY2UoZGF0YS5sZW5ndGggLSAyKSkpIHtcbiAgICAgIGRhdGEucHVzaChwWzBdLCBwWzFdKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgcGF0aCA9IHBhdGhVdGlsLmNhdG11bGxSb20yQmV6aWVyKGRhdGEsIGZhbHNlKTtcblxuICB2YXIgX2EgPSBoZWFkKHBvaW50cyksXG4gICAgICB4ID0gX2FbMF0sXG4gICAgICB5ID0gX2FbMV07XG5cbiAgcGF0aC51bnNoaWZ0KFsnTScsIHgsIHldKTtcbiAgcmV0dXJuIHBhdGg7XG59XG4vKipcbiAqIOWwhuaVsOaNrui9rOaIkCBwYXRo77yM5Yip55SoIHNjYWxlIOeahOW9kuS4gOWMluiDveWKm1xuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSB3aWR0aFxuICogQHBhcmFtIGhlaWdodFxuICogQHBhcmFtIHNtb290aFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRhVG9QYXRoKGRhdGEsIHdpZHRoLCBoZWlnaHQsIHNtb290aCkge1xuICBpZiAoc21vb3RoID09PSB2b2lkIDApIHtcbiAgICBzbW9vdGggPSB0cnVlO1xuICB9IC8vIOWIqeeUqCBzY2FsZSDmnaXojrflj5YgeSDkuIrnmoTmmKDlsIRcblxuXG4gIHZhciB5ID0gbmV3IExpbmVhcih7XG4gICAgdmFsdWVzOiBkYXRhXG4gIH0pO1xuICB2YXIgeCA9IG5ldyBDYXRlZ29yeSh7XG4gICAgdmFsdWVzOiBtYXAoZGF0YSwgZnVuY3Rpb24gKHYsIGlkeCkge1xuICAgICAgcmV0dXJuIGlkeDtcbiAgICB9KVxuICB9KTtcbiAgdmFyIHBvaW50cyA9IG1hcChkYXRhLCBmdW5jdGlvbiAodiwgaWR4KSB7XG4gICAgcmV0dXJuIFt4LnNjYWxlKGlkeCkgKiB3aWR0aCwgaGVpZ2h0IC0geS5zY2FsZSh2KSAqIGhlaWdodF07XG4gIH0pO1xuICByZXR1cm4gc21vb3RoID8gZ2V0U21vb3RoTGluZVBhdGgocG9pbnRzKSA6IGdldExpbmVQYXRoKHBvaW50cyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZGF0YVRvUmVjdFBhdGgoZGF0YSwgd2lkdGgsIGhlaWdodCwgYmFyV2lkdGgpIHtcbiAgaWYgKGJhcldpZHRoID09PSB2b2lkIDApIHtcbiAgICBiYXJXaWR0aCA9IDU7XG4gIH0gLy8g5Yip55SoIHNjYWxlIOadpeiOt+WPliB5IOS4iueahOaYoOWwhFxuXG5cbiAgdmFyIHkgPSBuZXcgTGluZWFyKHtcbiAgICB2YWx1ZXM6IGRhdGFcbiAgfSk7XG4gIHZhciB4ID0gbmV3IENhdGVnb3J5KHtcbiAgICB2YWx1ZXM6IG1hcChkYXRhLCBmdW5jdGlvbiAodiwgaWR4KSB7XG4gICAgICByZXR1cm4gaWR4O1xuICAgIH0pXG4gIH0pO1xuICB2YXIgcG9pbnRzID0gbWFwKGRhdGEsIGZ1bmN0aW9uICh2LCBpZHgpIHtcbiAgICByZXR1cm4gW3guc2NhbGUoaWR4KSAqIHdpZHRoLCBoZWlnaHQgLSB5LnNjYWxlKHYpICogaGVpZ2h0XTtcbiAgfSk7XG4gIHZhciByZWN0UG9pbnRzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgdmFyIHBhcmFtID0ge1xuICAgICAgeDogcG9pbnRbMF0sXG4gICAgICB5OiBwb2ludFsxXSxcbiAgICAgIHkwOiBoZWlnaHQsXG4gICAgICBzaXplOiBiYXJXaWR0aFxuICAgIH07XG4gICAgdmFyIHJlY3RQb2ludCA9IGdldFJlY3RQb2ludHMocGFyYW0pO1xuICAgIHJlY3RQb2ludHMucHVzaC5hcHBseShyZWN0UG9pbnRzLCByZWN0UG9pbnQpO1xuICB9XG5cbiAgcmV0dXJuIGdldFJlY3RQYXRoKHJlY3RQb2ludHMpO1xufVxuLyoqXG4gKiDojrflvpcgYXJlYSDpnaLnp6/nmoTmqKrlkJHov57mjqXnur/nmoQgcHgg5L2N572uXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIHdpZHRoXG4gKiBAcGFyYW0gaGVpZ2h0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFyZWFMaW5lWShkYXRhLCBoZWlnaHQpIHtcbiAgdmFyIHkgPSBuZXcgTGluZWFyKHtcbiAgICB2YWx1ZXM6IGRhdGFcbiAgfSk7XG4gIHZhciBsaW5lWSA9IE1hdGgubWF4KDAsIHkubWluKTtcbiAgcmV0dXJuIGhlaWdodCAtIHkuc2NhbGUobGluZVkpICogaGVpZ2h0O1xufVxuLyoqXG4gKiDnur8gcGF0aCDovawgYXJlYSBwYXRoXG4gKiBAcGFyYW0gcGF0aFxuICogQHBhcmFtIHdpZHRoXG4gKiBAcGFyYW0gaGVpZ2h0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVQYXRoVG9BcmVhUGF0aChwYXRoLCB3aWR0aCwgaGVpZ2h0LCBkYXRhKSB7XG4gIHZhciBhcmVhUGF0aCA9IF9fc3ByZWFkQXJyYXkoW10sIHBhdGgsIHRydWUpO1xuXG4gIHZhciBsaW5lWVB4ID0gZ2V0QXJlYUxpbmVZKGRhdGEsIGhlaWdodCk7XG4gIGFyZWFQYXRoLnB1c2goWydMJywgd2lkdGgsIGxpbmVZUHhdKTtcbiAgYXJlYVBhdGgucHVzaChbJ0wnLCAwLCBsaW5lWVB4XSk7XG4gIGFyZWFQYXRoLnB1c2goWydaJ10pO1xuICByZXR1cm4gYXJlYVBhdGg7XG59XG4vKipcbiAqIEBpZ25vcmVcbiAqIOagueaNruaVsOaNrueCueeUn+aIkOefqeW9oueahOWbm+S4quWFs+mUrueCuVxuICogQHBhcmFtIHBvaW50SW5mbyDmlbDmja7ngrnkv6Hmga9cbiAqIEByZXR1cm5zIHJlY3QgcG9pbnRzIOi/lOWbnuefqeW9ouWbm+S4qumhtueCueS/oeaBr1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWN0UG9pbnRzKHBvaW50SW5mbykge1xuICB2YXIgeCA9IHBvaW50SW5mby54LFxuICAgICAgeSA9IHBvaW50SW5mby55LFxuICAgICAgeTAgPSBwb2ludEluZm8ueTAsXG4gICAgICBzaXplID0gcG9pbnRJbmZvLnNpemU7IC8vIOaciSA0IOenjeaDheWGte+8jFxuICAvLyAxLiB4LCB5IOmDveS4jeaYr+aVsOe7hFxuICAvLyAyLiB55piv5pWw57uE77yMeOS4jeaYr1xuICAvLyAzLiB45piv5pWw57uE77yMeeS4jeaYr1xuICAvLyA0LiB4LCB5IOmDveaYr+aVsOe7hFxuXG4gIHZhciB5TWluO1xuICB2YXIgeU1heDtcblxuICBpZiAoaXNBcnJheSh5KSkge1xuICAgIHlNaW4gPSB5WzBdLCB5TWF4ID0geVsxXTtcbiAgfSBlbHNlIHtcbiAgICB5TWluID0geTA7XG4gICAgeU1heCA9IHk7XG4gIH1cblxuICB2YXIgeE1pbjtcbiAgdmFyIHhNYXg7XG5cbiAgaWYgKGlzQXJyYXkoeCkpIHtcbiAgICB4TWluID0geFswXSwgeE1heCA9IHhbMV07XG4gIH0gZWxzZSB7XG4gICAgeE1pbiA9IHggLSBzaXplIC8gMjtcbiAgICB4TWF4ID0geCArIHNpemUgLyAyO1xuICB9XG5cbiAgdmFyIHBvaW50cyA9IFt7XG4gICAgeDogeE1pbixcbiAgICB5OiB5TWluXG4gIH0sIHtcbiAgICB4OiB4TWluLFxuICAgIHk6IHlNYXhcbiAgfV07IC8vIOefqeW9oueahOWbm+S4quWFs+mUrueCue+8jOe7k+aehOWmguS4i++8iOW3puS4i+inkumhuuaXtumSiOi/nuaOpe+8iVxuICAvLyAxIC0tLS0gMlxuICAvLyB8ICAgICAgfFxuICAvLyAwIC0tLS0gM1xuXG4gIHBvaW50cy5wdXNoKHtcbiAgICB4OiB4TWF4LFxuICAgIHk6IHlNYXhcbiAgfSwge1xuICAgIHg6IHhNYXgsXG4gICAgeTogeU1pblxuICB9KTtcbiAgcmV0dXJuIHBvaW50cztcbn1cbi8qKlxuICogQGlnbm9yZVxuICog5qC55o2u55+p5b2i5YWz6ZSu54K557uY5Yi2IHBhdGhcbiAqIEBwYXJhbSBwb2ludHMg5YWz6ZSu54K55pWw57uEXG4gKiBAcGFyYW0gaXNDbG9zZWQgcGF0aCDmmK/lkKbpnIDopoHpl63lkIhcbiAqIEByZXR1cm5zIOi/lOWbnuefqeW9oueahCBwYXRoXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlY3RQYXRoKHBvaW50cywgaXNDbG9zZWQpIHtcbiAgaWYgKGlzQ2xvc2VkID09PSB2b2lkIDApIHtcbiAgICBpc0Nsb3NlZCA9IHRydWU7XG4gIH1cblxuICB2YXIgcGF0aCA9IFtdO1xuICB2YXIgZmlyc3RQb2ludCA9IHBvaW50c1swXTtcbiAgcGF0aC5wdXNoKFsnTScsIGZpcnN0UG9pbnQueCwgZmlyc3RQb2ludC55XSk7XG5cbiAgZm9yICh2YXIgaSA9IDEsIGxlbiA9IHBvaW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHBhdGgucHVzaChbJ0wnLCBwb2ludHNbaV0ueCwgcG9pbnRzW2ldLnldKTtcbiAgfSAvLyDlr7nkuo4gc2hhcGU9XCJsaW5lXCIgcGF0aCDkuI3lupTor6Xpl63lkIjvvIzlkKbliJnkvJrpgKDmiJAgbGluZUNhcCDnu5jlm77lsZ7mgKflpLHmlYhcblxuXG4gIGlmIChpc0Nsb3NlZCkge1xuICAgIHBhdGgucHVzaChbJ0wnLCBmaXJzdFBvaW50LngsIGZpcnN0UG9pbnQueV0pOyAvLyDpnIDopoHpl63lkIhcblxuICAgIHBhdGgucHVzaChbJ3onXSk7XG4gIH1cblxuICByZXR1cm4gcGF0aDtcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/timeBar/path.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/timeBar/timeBarSlice.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/timeBar/timeBarSlice.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _timeBarTooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./timeBarTooltip */ \"./node_modules/@antv/g6-plugin/es/timeBar/timeBarTooltip.js\");\n/* harmony import */ var _controllerBtn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./controllerBtn */ \"./node_modules/@antv/g6-plugin/es/timeBar/controllerBtn.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/g6-plugin/es/timeBar/constant.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n/**\n * 基于 G 的刻度时间轴组件\n */\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"ext\"].transform;\nvar DEFAULT_SELECTEDTICK_STYLE = {\n fill: '#5B8FF9'\n};\nvar DEFAULT_UNSELECTEDTICK_STYLE = {\n fill: '#e6e8e9'\n};\n\nvar TimeBarSlice =\n/** @class */\nfunction () {\n function TimeBarSlice(cfgs) {\n this.frameCount = 0;\n this.fontFamily = 'Arial, sans-serif';\n var graph = cfgs.graph,\n canvas = cfgs.canvas,\n group = cfgs.group,\n width = cfgs.width,\n height = cfgs.height,\n padding = cfgs.padding,\n data = cfgs.data,\n start = cfgs.start,\n end = cfgs.end,\n _a = cfgs.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfgs.y,\n y = _b === void 0 ? 0 : _b,\n tickLabelFormatter = cfgs.tickLabelFormatter,\n _c = cfgs.selectedTickStyle,\n selectedTickStyle = _c === void 0 ? DEFAULT_SELECTEDTICK_STYLE : _c,\n _d = cfgs.unselectedTickStyle,\n unselectedTickStyle = _d === void 0 ? DEFAULT_UNSELECTEDTICK_STYLE : _d,\n tooltipBackgroundColor = cfgs.tooltipBackgroundColor,\n tooltipFomatter = cfgs.tooltipFomatter,\n tickLabelStyle = cfgs.tickLabelStyle;\n this.graph = graph;\n this.group = group;\n this.sliceGroup = group.addGroup({\n name: 'slice-group'\n });\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this.padding = padding;\n this.data = data;\n this.start = start;\n this.end = end;\n this.tickLabelFormatter = tickLabelFormatter;\n this.tickLabelStyle = tickLabelStyle || {};\n this.selectedTickStyle = selectedTickStyle;\n this.unselectedTickStyle = unselectedTickStyle;\n this.x = x;\n this.y = y;\n this.tooltipBackgroundColor = tooltipBackgroundColor;\n this.tooltipFomatter = tooltipFomatter; // 初始化 fontFamily,如果有浏览器,取 body 上的字体,防止文字更新时局部渲染造成的重影\n\n this.fontFamily = typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif';\n this.renderSlices();\n this.initEvent();\n }\n\n TimeBarSlice.prototype.renderSlices = function () {\n var _this = this;\n\n var _a = this,\n width = _a.width,\n height = _a.height,\n padding = _a.padding,\n data = _a.data,\n start = _a.start,\n end = _a.end,\n tickLabelFormatter = _a.tickLabelFormatter,\n selectedTickStyle = _a.selectedTickStyle,\n unselectedTickStyle = _a.unselectedTickStyle,\n tickLabelStyle = _a.tickLabelStyle;\n\n var realWidth = width - 2 * padding;\n var fontSize = 10;\n var labelLineHeight = 4;\n var labelAreaHeight = 3 * padding + labelLineHeight + fontSize;\n var ticksAreaHeight = height - labelAreaHeight - 2 * padding;\n var gap = 2;\n var ticksLength = data.length;\n var tickWidth = (realWidth - gap * (ticksLength - 1)) / ticksLength;\n this.tickWidth = tickWidth;\n var sliceGroup = this.sliceGroup;\n var tickRects = [];\n var labels = [];\n var startTickId = Math.round(ticksLength * start);\n var endTickId = Math.round(ticksLength * end);\n this.startTickRectId = startTickId;\n this.endTickRectId = endTickId;\n var rotate = tickLabelStyle.rotate;\n delete tickLabelStyle.rotate;\n data.forEach(function (d, i) {\n // draw the tick rects\n var selected = i >= startTickId && i <= endTickId;\n var tickStyle = selected ? selectedTickStyle : unselectedTickStyle;\n var rect = sliceGroup.addShape('rect', {\n attrs: __assign({\n x: padding + i * (tickWidth + gap),\n y: padding,\n width: tickWidth,\n height: ticksAreaHeight\n }, tickStyle),\n draggable: true,\n name: \"tick-rect-\".concat(i)\n }); // draw the pick tick rects\n\n var pickRect = sliceGroup.addShape('rect', {\n attrs: {\n x: padding + i * tickWidth + gap * (2 * i - 1) / 2,\n y: padding,\n width: i === 0 || i === ticksLength - 1 ? tickWidth + gap / 2 : tickWidth + gap,\n height: ticksAreaHeight,\n fill: '#fff',\n opacity: 0\n },\n draggable: true,\n name: \"pick-rect-\".concat(i)\n });\n pickRect.toFront();\n var rectBBox = rect.getBBox();\n var centerX = (rectBBox.minX + rectBBox.maxX) / 2;\n tickRects.push({\n rect: rect,\n pickRect: pickRect,\n value: d.date,\n x: centerX,\n y: rectBBox.minY\n });\n var label;\n\n if (tickLabelFormatter) {\n label = tickLabelFormatter(d);\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(label) && label) {\n // return true\n label = d.date;\n }\n } else if (i % Math.round(ticksLength / 10) === 0) {\n label = d.date;\n }\n\n if (label) {\n labels.push(label); // draw tick lines\n\n var lineStartY = rectBBox.maxY + padding * 2;\n sliceGroup.addShape('line', {\n attrs: {\n stroke: '#BFBFBF',\n x1: centerX,\n y1: lineStartY,\n x2: centerX,\n y2: lineStartY + labelLineHeight\n },\n name: 'tick-line'\n });\n var labelStartY = lineStartY + labelLineHeight + padding;\n var text = sliceGroup.addShape('text', {\n attrs: __assign({\n fill: '#8c8c8c',\n stroke: '#fff',\n lineWidth: 1,\n x: centerX,\n y: labelStartY,\n textAlign: 'center',\n text: label,\n textBaseline: 'top',\n fontSize: 10,\n fontFamily: _this.fontFamily || 'Arial, sans-serif'\n }, tickLabelStyle),\n capture: false,\n name: 'tick-label'\n });\n var textBBox = text.getBBox();\n\n if (textBBox.maxX > width) {\n text.attr('textAlign', 'right');\n } else if (textBBox.minX < 0) {\n text.attr('textAlign', 'left');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(rotate) && labels.length !== 10) {\n var matrix = transform([1, 0, 0, 0, 1, 0, 0, 0, 1], [['t', -centerX, -labelStartY], ['r', rotate], ['t', centerX - 5, labelStartY + 2]]);\n text.attr({\n textAlign: 'left',\n matrix: matrix\n });\n }\n\n if (labels.length === 1) {\n text.attr({\n textAlign: 'left'\n });\n } else if (labels.length === 10) {\n text.attr({\n textAlign: 'right'\n });\n } // draw tick labels\n\n }\n });\n this.tickRects = tickRects; // 渲染播放、快进和后退的控制按钮\n\n var group = this.group;\n this.currentSpeed = 1;\n this.controllerBtnGroup = new _controllerBtn__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\n group: group,\n x: this.x,\n y: this.y + height + 5,\n width: width,\n height: 40,\n hideTimeTypeController: true,\n speed: this.currentSpeed,\n fontFamily: this.fontFamily || 'Arial, sans-serif'\n });\n };\n\n TimeBarSlice.prototype.initEvent = function () {\n var _this = this;\n\n var sliceGroup = this.sliceGroup;\n sliceGroup.on('click', function (e) {\n var targetRect = e.target;\n if (targetRect.get('type') !== 'rect' || !targetRect.get('name')) return;\n var id = parseInt(targetRect.get('name').split('-')[2], 10);\n\n if (!isNaN(id)) {\n var tickRects_1 = _this.tickRects; // cancel the selected ticks\n\n var unselectedTickStyle_1 = _this.unselectedTickStyle;\n tickRects_1.forEach(function (tickRect) {\n tickRect.rect.attr(unselectedTickStyle_1);\n });\n var selectedTickStyle = _this.selectedTickStyle;\n tickRects_1[id].rect.attr(selectedTickStyle);\n _this.startTickRectId = id;\n _this.endTickRectId = id;\n var ticksLength = tickRects_1.length;\n var start = id / ticksLength;\n\n _this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_4__[\"VALUE_CHANGE\"], {\n value: [start, start]\n });\n }\n });\n sliceGroup.on('dragstart', function (e) {\n var tickRects = _this.tickRects; // cancel the selected ticks\n\n var unselectedTickStyle = _this.unselectedTickStyle;\n tickRects.forEach(function (tickRect) {\n tickRect.rect.attr(unselectedTickStyle);\n });\n var targetRect = e.target;\n var id = parseInt(targetRect.get('name').split('-')[2], 10);\n var selectedTickStyle = _this.selectedTickStyle;\n tickRects[id].rect.attr(selectedTickStyle);\n _this.startTickRectId = id;\n var ticksLength = tickRects.length;\n var start = id / ticksLength;\n\n _this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_4__[\"VALUE_CHANGE\"], {\n value: [start, start]\n });\n\n _this.dragging = true;\n });\n sliceGroup.on('dragover', function (e) {\n if (!_this.dragging) return;\n if (e.target.get('type') !== 'rect') return;\n var id = parseInt(e.target.get('name').split('-')[2], 10);\n var startTickRectId = _this.startTickRectId;\n var tickRects = _this.tickRects;\n var selectedTickStyle = _this.selectedTickStyle;\n var unselectedTickStyle = _this.unselectedTickStyle;\n\n for (var i = 0; i < tickRects.length; i++) {\n var style = i >= startTickRectId && i <= id ? selectedTickStyle : unselectedTickStyle;\n tickRects[i].rect.attr(style);\n }\n\n var ticksLength = tickRects.length;\n _this.endTickRectId = id;\n var start = startTickRectId / ticksLength;\n var end = id / ticksLength;\n\n _this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_4__[\"VALUE_CHANGE\"], {\n value: [start, end]\n });\n });\n sliceGroup.on('drop', function (e) {\n if (!_this.dragging) return;\n _this.dragging = false;\n if (e.target.get('type') !== 'rect') return;\n var startTickRectId = _this.startTickRectId;\n var id = parseInt(e.target.get('name').split('-')[2], 10);\n if (id < startTickRectId) return;\n var selectedTickStyle = _this.selectedTickStyle;\n var tickRects = _this.tickRects;\n tickRects[id].rect.attr(selectedTickStyle);\n _this.endTickRectId = id;\n var ticksLength = tickRects.length;\n var start = startTickRectId / ticksLength;\n var end = id / ticksLength;\n\n _this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_4__[\"VALUE_CHANGE\"], {\n value: [start, end]\n });\n }); // tooltip\n\n var _a = this,\n tooltipBackgroundColor = _a.tooltipBackgroundColor,\n tooltipFomatter = _a.tooltipFomatter,\n canvas = _a.canvas;\n\n var tooltip = new _timeBarTooltip__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n container: canvas.get('container'),\n backgroundColor: tooltipBackgroundColor\n });\n var tickRects = this.tickRects;\n tickRects.forEach(function (tickRect) {\n var pickRect = tickRect.pickRect;\n pickRect.on('mouseenter', function (e) {\n var rect = e.target;\n if (rect.get('type') !== 'rect') return;\n var id = parseInt(rect.get('name').split('-')[2], 10);\n var clientPoint = canvas.getClientByPoint(tickRects[id].x, tickRects[id].y);\n tooltip.show({\n x: tickRects[id].x,\n y: tickRects[id].y,\n clientX: clientPoint.x,\n clientY: clientPoint.y,\n text: tooltipFomatter ? tooltipFomatter(tickRects[id].value) : tickRects[id].value\n });\n });\n pickRect.on('mouseleave', function (e) {\n tooltip.hide();\n });\n }); // play controller events\n\n var group = this.group; // 播放区按钮控制\n\n /** 播放/暂停事件 */\n\n group.on(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_4__[\"PLAY_PAUSE_BTN\"], \":click\"), function () {\n _this.isPlay = !_this.isPlay;\n\n _this.changePlayStatus();\n }); // 处理前进一步的事件\n\n group.on(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_4__[\"NEXT_STEP_BTN\"], \":click\"), function () {\n _this.updateStartEnd(1);\n }); // 处理后退一步的事件\n\n group.on(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_4__[\"PRE_STEP_BTN\"], \":click\"), function () {\n _this.updateStartEnd(-1);\n });\n group.on(_constant__WEBPACK_IMPORTED_MODULE_4__[\"TIMEBAR_CONFIG_CHANGE\"], function (_a) {\n var type = _a.type,\n speed = _a.speed;\n _this.currentSpeed = speed;\n });\n };\n\n TimeBarSlice.prototype.changePlayStatus = function (isSync) {\n if (isSync === void 0) {\n isSync = true;\n }\n\n this.controllerBtnGroup.playButton.update({\n isPlay: this.isPlay\n });\n\n if (this.isPlay) {\n // 开始播放\n this.playHandler = this.startPlay();\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_4__[\"TIMELINE_START\"], null);\n } else {\n // 结束播放\n if (this.playHandler) {\n if (typeof window !== 'undefined') window.cancelAnimationFrame(this.playHandler);\n\n if (isSync) {\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_4__[\"TIMELINE_END\"], null);\n }\n }\n }\n };\n\n TimeBarSlice.prototype.startPlay = function () {\n var _this = this;\n\n return typeof window !== 'undefined' ? window.requestAnimationFrame(function () {\n var speed = _this.currentSpeed; // 一分钟刷新一次\n\n if (_this.frameCount % (60 / speed) === 0) {\n _this.frameCount = 0;\n\n _this.updateStartEnd(1);\n }\n\n _this.frameCount++;\n\n if (_this.isPlay) {\n _this.playHandler = _this.startPlay();\n }\n }) : undefined;\n };\n\n TimeBarSlice.prototype.updateStartEnd = function (sign) {\n var self = this;\n var tickRects = this.tickRects;\n var ticksLength = tickRects.length;\n var unselectedTickStyle = this.unselectedTickStyle;\n var selectedTickStyle = this.selectedTickStyle;\n var previousEndTickRectId = self.endTickRectId;\n\n if (sign > 0) {\n self.endTickRectId++;\n } else {\n tickRects[self.endTickRectId].rect.attr(unselectedTickStyle);\n self.endTickRectId--;\n } // 若此时 start 与 end 不同,范围前进/后退/播放\n\n\n if (previousEndTickRectId !== self.startTickRectId) {\n if (self.endTickRectId < self.startTickRectId) {\n self.startTickRectId = self.endTickRectId;\n }\n } else {\n // 否则是单帧的前进/后退/播放\n for (var i = self.startTickRectId; i <= self.endTickRectId - 1; i++) {\n tickRects[i].rect.attr(unselectedTickStyle);\n }\n\n self.startTickRectId = self.endTickRectId;\n }\n\n if (tickRects[self.endTickRectId]) {\n tickRects[self.endTickRectId].rect.attr(selectedTickStyle);\n var start = self.startTickRectId / ticksLength;\n var end = self.endTickRectId / ticksLength;\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_4__[\"VALUE_CHANGE\"], {\n value: [start, end]\n });\n }\n };\n\n TimeBarSlice.prototype.destory = function () {\n this.graph.off(_constant__WEBPACK_IMPORTED_MODULE_4__[\"VALUE_CHANGE\"]);\n var group = this.sliceGroup;\n group.off('click');\n group.off('dragstart');\n group.off('dragover');\n group.off('drop');\n this.tickRects.forEach(function (tickRect) {\n var pickRect = tickRect.pickRect;\n pickRect.off('mouseenter');\n pickRect.off('mouseleave');\n });\n this.tickRects.length = 0;\n group.off(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_4__[\"PLAY_PAUSE_BTN\"], \":click\"));\n group.off(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_4__[\"NEXT_STEP_BTN\"], \":click\"));\n group.off(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_4__[\"PRE_STEP_BTN\"], \":click\"));\n group.off(_constant__WEBPACK_IMPORTED_MODULE_4__[\"TIMEBAR_CONFIG_CHANGE\"]);\n this.sliceGroup.destroy();\n };\n\n return TimeBarSlice;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimeBarSlice);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvdGltZUJhclNsaWNlLmpzPzQ2MTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBZSxTQUFJLElBQUksU0FBSTtBQUMzQjtBQUNBLDRDQUE0QyxPQUFPO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR3dDO0FBQ1E7QUFDRjtBQUNGO0FBQ2dHO0FBQzVJLGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBLGFBQWEsMkRBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUEsWUFBWSwyREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUzs7QUFFVDtBQUNBLEtBQUs7QUFDTCwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQSxrQ0FBa0Msc0RBQWE7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLHNEQUFZO0FBQ3JDO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0Esc0NBQXNDOztBQUV0QztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLHNEQUFZO0FBQ25DO0FBQ0EsT0FBTzs7QUFFUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixzQkFBc0I7QUFDM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixzREFBWTtBQUNuQztBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0RBQVk7QUFDbkM7QUFDQSxPQUFPO0FBQ1AsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNCQUFzQix1REFBYztBQUNwQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSyxFQUFFOztBQUVQLDJCQUEyQjs7QUFFM0I7O0FBRUEsdUJBQXVCLHdEQUFjO0FBQ3JDOztBQUVBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLHVCQUF1Qix1REFBYTtBQUNwQztBQUNBLEtBQUssRUFBRTs7QUFFUCx1QkFBdUIsc0RBQVk7QUFDbkM7QUFDQSxLQUFLO0FBQ0wsYUFBYSwrREFBcUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix3REFBYztBQUNwQyxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCLHNEQUFZO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx3Q0FBd0MsNkJBQTZCO0FBQ3JFO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzREFBWTtBQUNsQztBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLHNEQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHdCQUF3Qix3REFBYztBQUN0Qyx3QkFBd0IsdURBQWE7QUFDckMsd0JBQXdCLHNEQUFZO0FBQ3BDLGNBQWMsK0RBQXFCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLDJFQUFZIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBsdWdpbi9lcy90aW1lQmFyL3RpbWVCYXJTbGljZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2Fzc2lnbiA9IHRoaXMgJiYgdGhpcy5fX2Fzc2lnbiB8fCBmdW5jdGlvbiAoKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbi8qKlxuICog5Z+65LqOIEcg55qE5Yi75bqm5pe26Ze06L2057uE5Lu2XG4gKi9cblxuXG5pbXBvcnQgeyBleHQgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyBpc051bWJlciwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBUaW1lQmFyVG9vbHRpcCBmcm9tICcuL3RpbWVCYXJUb29sdGlwJztcbmltcG9ydCBDb250cm9sbGVyQnRuIGZyb20gJy4vY29udHJvbGxlckJ0bic7XG5pbXBvcnQgeyBWQUxVRV9DSEFOR0UsIFRJTUVMSU5FX1NUQVJULCBUSU1FTElORV9FTkQsIFBMQVlfUEFVU0VfQlROLCBORVhUX1NURVBfQlROLCBQUkVfU1RFUF9CVE4sIFRJTUVCQVJfQ09ORklHX0NIQU5HRSB9IGZyb20gJy4vY29uc3RhbnQnO1xudmFyIHRyYW5zZm9ybSA9IGV4dC50cmFuc2Zvcm07XG52YXIgREVGQVVMVF9TRUxFQ1RFRFRJQ0tfU1RZTEUgPSB7XG4gIGZpbGw6ICcjNUI4RkY5J1xufTtcbnZhciBERUZBVUxUX1VOU0VMRUNURURUSUNLX1NUWUxFID0ge1xuICBmaWxsOiAnI2U2ZThlOSdcbn07XG5cbnZhciBUaW1lQmFyU2xpY2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBUaW1lQmFyU2xpY2UoY2Zncykge1xuICAgIHRoaXMuZnJhbWVDb3VudCA9IDA7XG4gICAgdGhpcy5mb250RmFtaWx5ID0gJ0FyaWFsLCBzYW5zLXNlcmlmJztcbiAgICB2YXIgZ3JhcGggPSBjZmdzLmdyYXBoLFxuICAgICAgICBjYW52YXMgPSBjZmdzLmNhbnZhcyxcbiAgICAgICAgZ3JvdXAgPSBjZmdzLmdyb3VwLFxuICAgICAgICB3aWR0aCA9IGNmZ3Mud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGNmZ3MuaGVpZ2h0LFxuICAgICAgICBwYWRkaW5nID0gY2Zncy5wYWRkaW5nLFxuICAgICAgICBkYXRhID0gY2Zncy5kYXRhLFxuICAgICAgICBzdGFydCA9IGNmZ3Muc3RhcnQsXG4gICAgICAgIGVuZCA9IGNmZ3MuZW5kLFxuICAgICAgICBfYSA9IGNmZ3MueCxcbiAgICAgICAgeCA9IF9hID09PSB2b2lkIDAgPyAwIDogX2EsXG4gICAgICAgIF9iID0gY2Zncy55LFxuICAgICAgICB5ID0gX2IgPT09IHZvaWQgMCA/IDAgOiBfYixcbiAgICAgICAgdGlja0xhYmVsRm9ybWF0dGVyID0gY2Zncy50aWNrTGFiZWxGb3JtYXR0ZXIsXG4gICAgICAgIF9jID0gY2Zncy5zZWxlY3RlZFRpY2tTdHlsZSxcbiAgICAgICAgc2VsZWN0ZWRUaWNrU3R5bGUgPSBfYyA9PT0gdm9pZCAwID8gREVGQVVMVF9TRUxFQ1RFRFRJQ0tfU1RZTEUgOiBfYyxcbiAgICAgICAgX2QgPSBjZmdzLnVuc2VsZWN0ZWRUaWNrU3R5bGUsXG4gICAgICAgIHVuc2VsZWN0ZWRUaWNrU3R5bGUgPSBfZCA9PT0gdm9pZCAwID8gREVGQVVMVF9VTlNFTEVDVEVEVElDS19TVFlMRSA6IF9kLFxuICAgICAgICB0b29sdGlwQmFja2dyb3VuZENvbG9yID0gY2Zncy50b29sdGlwQmFja2dyb3VuZENvbG9yLFxuICAgICAgICB0b29sdGlwRm9tYXR0ZXIgPSBjZmdzLnRvb2x0aXBGb21hdHRlcixcbiAgICAgICAgdGlja0xhYmVsU3R5bGUgPSBjZmdzLnRpY2tMYWJlbFN0eWxlO1xuICAgIHRoaXMuZ3JhcGggPSBncmFwaDtcbiAgICB0aGlzLmdyb3VwID0gZ3JvdXA7XG4gICAgdGhpcy5zbGljZUdyb3VwID0gZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgbmFtZTogJ3NsaWNlLWdyb3VwJ1xuICAgIH0pO1xuICAgIHRoaXMuY2FudmFzID0gY2FudmFzO1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB0aGlzLnBhZGRpbmcgPSBwYWRkaW5nO1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIHRoaXMudGlja0xhYmVsRm9ybWF0dGVyID0gdGlja0xhYmVsRm9ybWF0dGVyO1xuICAgIHRoaXMudGlja0xhYmVsU3R5bGUgPSB0aWNrTGFiZWxTdHlsZSB8fCB7fTtcbiAgICB0aGlzLnNlbGVjdGVkVGlja1N0eWxlID0gc2VsZWN0ZWRUaWNrU3R5bGU7XG4gICAgdGhpcy51bnNlbGVjdGVkVGlja1N0eWxlID0gdW5zZWxlY3RlZFRpY2tTdHlsZTtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy50b29sdGlwQmFja2dyb3VuZENvbG9yID0gdG9vbHRpcEJhY2tncm91bmRDb2xvcjtcbiAgICB0aGlzLnRvb2x0aXBGb21hdHRlciA9IHRvb2x0aXBGb21hdHRlcjsgLy8g5Yid5aeL5YyWIGZvbnRGYW1pbHnvvIzlpoLmnpzmnInmtY/op4jlmajvvIzlj5YgYm9keSDkuIrnmoTlrZfkvZPvvIzpmLLmraLmloflrZfmm7TmlrDml7blsYDpg6jmuLLmn5PpgKDmiJDnmoTph43lvbFcblxuICAgIHRoaXMuZm9udEZhbWlseSA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1mYW1pbHknKSB8fCAnQXJpYWwsIHNhbnMtc2VyaWYnIDogJ0FyaWFsLCBzYW5zLXNlcmlmJztcbiAgICB0aGlzLnJlbmRlclNsaWNlcygpO1xuICAgIHRoaXMuaW5pdEV2ZW50KCk7XG4gIH1cblxuICBUaW1lQmFyU2xpY2UucHJvdG90eXBlLnJlbmRlclNsaWNlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgd2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX2EuaGVpZ2h0LFxuICAgICAgICBwYWRkaW5nID0gX2EucGFkZGluZyxcbiAgICAgICAgZGF0YSA9IF9hLmRhdGEsXG4gICAgICAgIHN0YXJ0ID0gX2Euc3RhcnQsXG4gICAgICAgIGVuZCA9IF9hLmVuZCxcbiAgICAgICAgdGlja0xhYmVsRm9ybWF0dGVyID0gX2EudGlja0xhYmVsRm9ybWF0dGVyLFxuICAgICAgICBzZWxlY3RlZFRpY2tTdHlsZSA9IF9hLnNlbGVjdGVkVGlja1N0eWxlLFxuICAgICAgICB1bnNlbGVjdGVkVGlja1N0eWxlID0gX2EudW5zZWxlY3RlZFRpY2tTdHlsZSxcbiAgICAgICAgdGlja0xhYmVsU3R5bGUgPSBfYS50aWNrTGFiZWxTdHlsZTtcblxuICAgIHZhciByZWFsV2lkdGggPSB3aWR0aCAtIDIgKiBwYWRkaW5nO1xuICAgIHZhciBmb250U2l6ZSA9IDEwO1xuICAgIHZhciBsYWJlbExpbmVIZWlnaHQgPSA0O1xuICAgIHZhciBsYWJlbEFyZWFIZWlnaHQgPSAzICogcGFkZGluZyArIGxhYmVsTGluZUhlaWdodCArIGZvbnRTaXplO1xuICAgIHZhciB0aWNrc0FyZWFIZWlnaHQgPSBoZWlnaHQgLSBsYWJlbEFyZWFIZWlnaHQgLSAyICogcGFkZGluZztcbiAgICB2YXIgZ2FwID0gMjtcbiAgICB2YXIgdGlja3NMZW5ndGggPSBkYXRhLmxlbmd0aDtcbiAgICB2YXIgdGlja1dpZHRoID0gKHJlYWxXaWR0aCAtIGdhcCAqICh0aWNrc0xlbmd0aCAtIDEpKSAvIHRpY2tzTGVuZ3RoO1xuICAgIHRoaXMudGlja1dpZHRoID0gdGlja1dpZHRoO1xuICAgIHZhciBzbGljZUdyb3VwID0gdGhpcy5zbGljZUdyb3VwO1xuICAgIHZhciB0aWNrUmVjdHMgPSBbXTtcbiAgICB2YXIgbGFiZWxzID0gW107XG4gICAgdmFyIHN0YXJ0VGlja0lkID0gTWF0aC5yb3VuZCh0aWNrc0xlbmd0aCAqIHN0YXJ0KTtcbiAgICB2YXIgZW5kVGlja0lkID0gTWF0aC5yb3VuZCh0aWNrc0xlbmd0aCAqIGVuZCk7XG4gICAgdGhpcy5zdGFydFRpY2tSZWN0SWQgPSBzdGFydFRpY2tJZDtcbiAgICB0aGlzLmVuZFRpY2tSZWN0SWQgPSBlbmRUaWNrSWQ7XG4gICAgdmFyIHJvdGF0ZSA9IHRpY2tMYWJlbFN0eWxlLnJvdGF0ZTtcbiAgICBkZWxldGUgdGlja0xhYmVsU3R5bGUucm90YXRlO1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoZCwgaSkge1xuICAgICAgLy8gZHJhdyB0aGUgdGljayByZWN0c1xuICAgICAgdmFyIHNlbGVjdGVkID0gaSA+PSBzdGFydFRpY2tJZCAmJiBpIDw9IGVuZFRpY2tJZDtcbiAgICAgIHZhciB0aWNrU3R5bGUgPSBzZWxlY3RlZCA/IHNlbGVjdGVkVGlja1N0eWxlIDogdW5zZWxlY3RlZFRpY2tTdHlsZTtcbiAgICAgIHZhciByZWN0ID0gc2xpY2VHcm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4OiBwYWRkaW5nICsgaSAqICh0aWNrV2lkdGggKyBnYXApLFxuICAgICAgICAgIHk6IHBhZGRpbmcsXG4gICAgICAgICAgd2lkdGg6IHRpY2tXaWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IHRpY2tzQXJlYUhlaWdodFxuICAgICAgICB9LCB0aWNrU3R5bGUpLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgIG5hbWU6IFwidGljay1yZWN0LVwiLmNvbmNhdChpKVxuICAgICAgfSk7IC8vIGRyYXcgdGhlIHBpY2sgdGljayByZWN0c1xuXG4gICAgICB2YXIgcGlja1JlY3QgPSBzbGljZUdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHg6IHBhZGRpbmcgKyBpICogdGlja1dpZHRoICsgZ2FwICogKDIgKiBpIC0gMSkgLyAyLFxuICAgICAgICAgIHk6IHBhZGRpbmcsXG4gICAgICAgICAgd2lkdGg6IGkgPT09IDAgfHwgaSA9PT0gdGlja3NMZW5ndGggLSAxID8gdGlja1dpZHRoICsgZ2FwIC8gMiA6IHRpY2tXaWR0aCArIGdhcCxcbiAgICAgICAgICBoZWlnaHQ6IHRpY2tzQXJlYUhlaWdodCxcbiAgICAgICAgICBmaWxsOiAnI2ZmZicsXG4gICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICB9LFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgIG5hbWU6IFwicGljay1yZWN0LVwiLmNvbmNhdChpKVxuICAgICAgfSk7XG4gICAgICBwaWNrUmVjdC50b0Zyb250KCk7XG4gICAgICB2YXIgcmVjdEJCb3ggPSByZWN0LmdldEJCb3goKTtcbiAgICAgIHZhciBjZW50ZXJYID0gKHJlY3RCQm94Lm1pblggKyByZWN0QkJveC5tYXhYKSAvIDI7XG4gICAgICB0aWNrUmVjdHMucHVzaCh7XG4gICAgICAgIHJlY3Q6IHJlY3QsXG4gICAgICAgIHBpY2tSZWN0OiBwaWNrUmVjdCxcbiAgICAgICAgdmFsdWU6IGQuZGF0ZSxcbiAgICAgICAgeDogY2VudGVyWCxcbiAgICAgICAgeTogcmVjdEJCb3gubWluWVxuICAgICAgfSk7XG4gICAgICB2YXIgbGFiZWw7XG5cbiAgICAgIGlmICh0aWNrTGFiZWxGb3JtYXR0ZXIpIHtcbiAgICAgICAgbGFiZWwgPSB0aWNrTGFiZWxGb3JtYXR0ZXIoZCk7XG5cbiAgICAgICAgaWYgKCFpc1N0cmluZyhsYWJlbCkgJiYgbGFiZWwpIHtcbiAgICAgICAgICAvLyByZXR1cm4gdHJ1ZVxuICAgICAgICAgIGxhYmVsID0gZC5kYXRlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGkgJSBNYXRoLnJvdW5kKHRpY2tzTGVuZ3RoIC8gMTApID09PSAwKSB7XG4gICAgICAgIGxhYmVsID0gZC5kYXRlO1xuICAgICAgfVxuXG4gICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgbGFiZWxzLnB1c2gobGFiZWwpOyAvLyBkcmF3IHRpY2sgbGluZXNcblxuICAgICAgICB2YXIgbGluZVN0YXJ0WSA9IHJlY3RCQm94Lm1heFkgKyBwYWRkaW5nICogMjtcbiAgICAgICAgc2xpY2VHcm91cC5hZGRTaGFwZSgnbGluZScsIHtcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgc3Ryb2tlOiAnI0JGQkZCRicsXG4gICAgICAgICAgICB4MTogY2VudGVyWCxcbiAgICAgICAgICAgIHkxOiBsaW5lU3RhcnRZLFxuICAgICAgICAgICAgeDI6IGNlbnRlclgsXG4gICAgICAgICAgICB5MjogbGluZVN0YXJ0WSArIGxhYmVsTGluZUhlaWdodFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmFtZTogJ3RpY2stbGluZSdcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBsYWJlbFN0YXJ0WSA9IGxpbmVTdGFydFkgKyBsYWJlbExpbmVIZWlnaHQgKyBwYWRkaW5nO1xuICAgICAgICB2YXIgdGV4dCA9IHNsaWNlR3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIGZpbGw6ICcjOGM4YzhjJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyNmZmYnLFxuICAgICAgICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgICAgICAgeDogY2VudGVyWCxcbiAgICAgICAgICAgIHk6IGxhYmVsU3RhcnRZLFxuICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgIHRleHQ6IGxhYmVsLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJyxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMCxcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IF90aGlzLmZvbnRGYW1pbHkgfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJ1xuICAgICAgICAgIH0sIHRpY2tMYWJlbFN0eWxlKSxcbiAgICAgICAgICBjYXB0dXJlOiBmYWxzZSxcbiAgICAgICAgICBuYW1lOiAndGljay1sYWJlbCdcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0ZXh0QkJveCA9IHRleHQuZ2V0QkJveCgpO1xuXG4gICAgICAgIGlmICh0ZXh0QkJveC5tYXhYID4gd2lkdGgpIHtcbiAgICAgICAgICB0ZXh0LmF0dHIoJ3RleHRBbGlnbicsICdyaWdodCcpO1xuICAgICAgICB9IGVsc2UgaWYgKHRleHRCQm94Lm1pblggPCAwKSB7XG4gICAgICAgICAgdGV4dC5hdHRyKCd0ZXh0QWxpZ24nLCAnbGVmdCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTnVtYmVyKHJvdGF0ZSkgJiYgbGFiZWxzLmxlbmd0aCAhPT0gMTApIHtcbiAgICAgICAgICB2YXIgbWF0cml4ID0gdHJhbnNmb3JtKFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXSwgW1sndCcsIC1jZW50ZXJYLCAtbGFiZWxTdGFydFldLCBbJ3InLCByb3RhdGVdLCBbJ3QnLCBjZW50ZXJYIC0gNSwgbGFiZWxTdGFydFkgKyAyXV0pO1xuICAgICAgICAgIHRleHQuYXR0cih7XG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgICAgICAgICAgIG1hdHJpeDogbWF0cml4XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGFiZWxzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIHRleHQuYXR0cih7XG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0J1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGxhYmVscy5sZW5ndGggPT09IDEwKSB7XG4gICAgICAgICAgdGV4dC5hdHRyKHtcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ3JpZ2h0J1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IC8vIGRyYXcgdGljayBsYWJlbHNcblxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudGlja1JlY3RzID0gdGlja1JlY3RzOyAvLyDmuLLmn5Pmkq3mlL7jgIHlv6vov5vlkozlkI7pgIDnmoTmjqfliLbmjInpkq5cblxuICAgIHZhciBncm91cCA9IHRoaXMuZ3JvdXA7XG4gICAgdGhpcy5jdXJyZW50U3BlZWQgPSAxO1xuICAgIHRoaXMuY29udHJvbGxlckJ0bkdyb3VwID0gbmV3IENvbnRyb2xsZXJCdG4oe1xuICAgICAgZ3JvdXA6IGdyb3VwLFxuICAgICAgeDogdGhpcy54LFxuICAgICAgeTogdGhpcy55ICsgaGVpZ2h0ICsgNSxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogNDAsXG4gICAgICBoaWRlVGltZVR5cGVDb250cm9sbGVyOiB0cnVlLFxuICAgICAgc3BlZWQ6IHRoaXMuY3VycmVudFNwZWVkLFxuICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFtaWx5IHx8ICdBcmlhbCwgc2Fucy1zZXJpZidcbiAgICB9KTtcbiAgfTtcblxuICBUaW1lQmFyU2xpY2UucHJvdG90eXBlLmluaXRFdmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHNsaWNlR3JvdXAgPSB0aGlzLnNsaWNlR3JvdXA7XG4gICAgc2xpY2VHcm91cC5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIHRhcmdldFJlY3QgPSBlLnRhcmdldDtcbiAgICAgIGlmICh0YXJnZXRSZWN0LmdldCgndHlwZScpICE9PSAncmVjdCcgfHwgIXRhcmdldFJlY3QuZ2V0KCduYW1lJykpIHJldHVybjtcbiAgICAgIHZhciBpZCA9IHBhcnNlSW50KHRhcmdldFJlY3QuZ2V0KCduYW1lJykuc3BsaXQoJy0nKVsyXSwgMTApO1xuXG4gICAgICBpZiAoIWlzTmFOKGlkKSkge1xuICAgICAgICB2YXIgdGlja1JlY3RzXzEgPSBfdGhpcy50aWNrUmVjdHM7IC8vIGNhbmNlbCB0aGUgc2VsZWN0ZWQgdGlja3NcblxuICAgICAgICB2YXIgdW5zZWxlY3RlZFRpY2tTdHlsZV8xID0gX3RoaXMudW5zZWxlY3RlZFRpY2tTdHlsZTtcbiAgICAgICAgdGlja1JlY3RzXzEuZm9yRWFjaChmdW5jdGlvbiAodGlja1JlY3QpIHtcbiAgICAgICAgICB0aWNrUmVjdC5yZWN0LmF0dHIodW5zZWxlY3RlZFRpY2tTdHlsZV8xKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzZWxlY3RlZFRpY2tTdHlsZSA9IF90aGlzLnNlbGVjdGVkVGlja1N0eWxlO1xuICAgICAgICB0aWNrUmVjdHNfMVtpZF0ucmVjdC5hdHRyKHNlbGVjdGVkVGlja1N0eWxlKTtcbiAgICAgICAgX3RoaXMuc3RhcnRUaWNrUmVjdElkID0gaWQ7XG4gICAgICAgIF90aGlzLmVuZFRpY2tSZWN0SWQgPSBpZDtcbiAgICAgICAgdmFyIHRpY2tzTGVuZ3RoID0gdGlja1JlY3RzXzEubGVuZ3RoO1xuICAgICAgICB2YXIgc3RhcnQgPSBpZCAvIHRpY2tzTGVuZ3RoO1xuXG4gICAgICAgIF90aGlzLmdyYXBoLmVtaXQoVkFMVUVfQ0hBTkdFLCB7XG4gICAgICAgICAgdmFsdWU6IFtzdGFydCwgc3RhcnRdXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNsaWNlR3JvdXAub24oJ2RyYWdzdGFydCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgdGlja1JlY3RzID0gX3RoaXMudGlja1JlY3RzOyAvLyBjYW5jZWwgdGhlIHNlbGVjdGVkIHRpY2tzXG5cbiAgICAgIHZhciB1bnNlbGVjdGVkVGlja1N0eWxlID0gX3RoaXMudW5zZWxlY3RlZFRpY2tTdHlsZTtcbiAgICAgIHRpY2tSZWN0cy5mb3JFYWNoKGZ1bmN0aW9uICh0aWNrUmVjdCkge1xuICAgICAgICB0aWNrUmVjdC5yZWN0LmF0dHIodW5zZWxlY3RlZFRpY2tTdHlsZSk7XG4gICAgICB9KTtcbiAgICAgIHZhciB0YXJnZXRSZWN0ID0gZS50YXJnZXQ7XG4gICAgICB2YXIgaWQgPSBwYXJzZUludCh0YXJnZXRSZWN0LmdldCgnbmFtZScpLnNwbGl0KCctJylbMl0sIDEwKTtcbiAgICAgIHZhciBzZWxlY3RlZFRpY2tTdHlsZSA9IF90aGlzLnNlbGVjdGVkVGlja1N0eWxlO1xuICAgICAgdGlja1JlY3RzW2lkXS5yZWN0LmF0dHIoc2VsZWN0ZWRUaWNrU3R5bGUpO1xuICAgICAgX3RoaXMuc3RhcnRUaWNrUmVjdElkID0gaWQ7XG4gICAgICB2YXIgdGlja3NMZW5ndGggPSB0aWNrUmVjdHMubGVuZ3RoO1xuICAgICAgdmFyIHN0YXJ0ID0gaWQgLyB0aWNrc0xlbmd0aDtcblxuICAgICAgX3RoaXMuZ3JhcGguZW1pdChWQUxVRV9DSEFOR0UsIHtcbiAgICAgICAgdmFsdWU6IFtzdGFydCwgc3RhcnRdXG4gICAgICB9KTtcblxuICAgICAgX3RoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgIH0pO1xuICAgIHNsaWNlR3JvdXAub24oJ2RyYWdvdmVyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghX3RoaXMuZHJhZ2dpbmcpIHJldHVybjtcbiAgICAgIGlmIChlLnRhcmdldC5nZXQoJ3R5cGUnKSAhPT0gJ3JlY3QnKSByZXR1cm47XG4gICAgICB2YXIgaWQgPSBwYXJzZUludChlLnRhcmdldC5nZXQoJ25hbWUnKS5zcGxpdCgnLScpWzJdLCAxMCk7XG4gICAgICB2YXIgc3RhcnRUaWNrUmVjdElkID0gX3RoaXMuc3RhcnRUaWNrUmVjdElkO1xuICAgICAgdmFyIHRpY2tSZWN0cyA9IF90aGlzLnRpY2tSZWN0cztcbiAgICAgIHZhciBzZWxlY3RlZFRpY2tTdHlsZSA9IF90aGlzLnNlbGVjdGVkVGlja1N0eWxlO1xuICAgICAgdmFyIHVuc2VsZWN0ZWRUaWNrU3R5bGUgPSBfdGhpcy51bnNlbGVjdGVkVGlja1N0eWxlO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRpY2tSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc3R5bGUgPSBpID49IHN0YXJ0VGlja1JlY3RJZCAmJiBpIDw9IGlkID8gc2VsZWN0ZWRUaWNrU3R5bGUgOiB1bnNlbGVjdGVkVGlja1N0eWxlO1xuICAgICAgICB0aWNrUmVjdHNbaV0ucmVjdC5hdHRyKHN0eWxlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRpY2tzTGVuZ3RoID0gdGlja1JlY3RzLmxlbmd0aDtcbiAgICAgIF90aGlzLmVuZFRpY2tSZWN0SWQgPSBpZDtcbiAgICAgIHZhciBzdGFydCA9IHN0YXJ0VGlja1JlY3RJZCAvIHRpY2tzTGVuZ3RoO1xuICAgICAgdmFyIGVuZCA9IGlkIC8gdGlja3NMZW5ndGg7XG5cbiAgICAgIF90aGlzLmdyYXBoLmVtaXQoVkFMVUVfQ0hBTkdFLCB7XG4gICAgICAgIHZhbHVlOiBbc3RhcnQsIGVuZF1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHNsaWNlR3JvdXAub24oJ2Ryb3AnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKCFfdGhpcy5kcmFnZ2luZykgcmV0dXJuO1xuICAgICAgX3RoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgIGlmIChlLnRhcmdldC5nZXQoJ3R5cGUnKSAhPT0gJ3JlY3QnKSByZXR1cm47XG4gICAgICB2YXIgc3RhcnRUaWNrUmVjdElkID0gX3RoaXMuc3RhcnRUaWNrUmVjdElkO1xuICAgICAgdmFyIGlkID0gcGFyc2VJbnQoZS50YXJnZXQuZ2V0KCduYW1lJykuc3BsaXQoJy0nKVsyXSwgMTApO1xuICAgICAgaWYgKGlkIDwgc3RhcnRUaWNrUmVjdElkKSByZXR1cm47XG4gICAgICB2YXIgc2VsZWN0ZWRUaWNrU3R5bGUgPSBfdGhpcy5zZWxlY3RlZFRpY2tTdHlsZTtcbiAgICAgIHZhciB0aWNrUmVjdHMgPSBfdGhpcy50aWNrUmVjdHM7XG4gICAgICB0aWNrUmVjdHNbaWRdLnJlY3QuYXR0cihzZWxlY3RlZFRpY2tTdHlsZSk7XG4gICAgICBfdGhpcy5lbmRUaWNrUmVjdElkID0gaWQ7XG4gICAgICB2YXIgdGlja3NMZW5ndGggPSB0aWNrUmVjdHMubGVuZ3RoO1xuICAgICAgdmFyIHN0YXJ0ID0gc3RhcnRUaWNrUmVjdElkIC8gdGlja3NMZW5ndGg7XG4gICAgICB2YXIgZW5kID0gaWQgLyB0aWNrc0xlbmd0aDtcblxuICAgICAgX3RoaXMuZ3JhcGguZW1pdChWQUxVRV9DSEFOR0UsIHtcbiAgICAgICAgdmFsdWU6IFtzdGFydCwgZW5kXVxuICAgICAgfSk7XG4gICAgfSk7IC8vIHRvb2x0aXBcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IgPSBfYS50b29sdGlwQmFja2dyb3VuZENvbG9yLFxuICAgICAgICB0b29sdGlwRm9tYXR0ZXIgPSBfYS50b29sdGlwRm9tYXR0ZXIsXG4gICAgICAgIGNhbnZhcyA9IF9hLmNhbnZhcztcblxuICAgIHZhciB0b29sdGlwID0gbmV3IFRpbWVCYXJUb29sdGlwKHtcbiAgICAgIGNvbnRhaW5lcjogY2FudmFzLmdldCgnY29udGFpbmVyJyksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3JcbiAgICB9KTtcbiAgICB2YXIgdGlja1JlY3RzID0gdGhpcy50aWNrUmVjdHM7XG4gICAgdGlja1JlY3RzLmZvckVhY2goZnVuY3Rpb24gKHRpY2tSZWN0KSB7XG4gICAgICB2YXIgcGlja1JlY3QgPSB0aWNrUmVjdC5waWNrUmVjdDtcbiAgICAgIHBpY2tSZWN0Lm9uKCdtb3VzZWVudGVyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIHJlY3QgPSBlLnRhcmdldDtcbiAgICAgICAgaWYgKHJlY3QuZ2V0KCd0eXBlJykgIT09ICdyZWN0JykgcmV0dXJuO1xuICAgICAgICB2YXIgaWQgPSBwYXJzZUludChyZWN0LmdldCgnbmFtZScpLnNwbGl0KCctJylbMl0sIDEwKTtcbiAgICAgICAgdmFyIGNsaWVudFBvaW50ID0gY2FudmFzLmdldENsaWVudEJ5UG9pbnQodGlja1JlY3RzW2lkXS54LCB0aWNrUmVjdHNbaWRdLnkpO1xuICAgICAgICB0b29sdGlwLnNob3coe1xuICAgICAgICAgIHg6IHRpY2tSZWN0c1tpZF0ueCxcbiAgICAgICAgICB5OiB0aWNrUmVjdHNbaWRdLnksXG4gICAgICAgICAgY2xpZW50WDogY2xpZW50UG9pbnQueCxcbiAgICAgICAgICBjbGllbnRZOiBjbGllbnRQb2ludC55LFxuICAgICAgICAgIHRleHQ6IHRvb2x0aXBGb21hdHRlciA/IHRvb2x0aXBGb21hdHRlcih0aWNrUmVjdHNbaWRdLnZhbHVlKSA6IHRpY2tSZWN0c1tpZF0udmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHBpY2tSZWN0Lm9uKCdtb3VzZWxlYXZlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdG9vbHRpcC5oaWRlKCk7XG4gICAgICB9KTtcbiAgICB9KTsgLy8gcGxheSBjb250cm9sbGVyIGV2ZW50c1xuXG4gICAgdmFyIGdyb3VwID0gdGhpcy5ncm91cDsgLy8g5pKt5pS+5Yy65oyJ6ZKu5o6n5Yi2XG5cbiAgICAvKiog5pKt5pS+L+aaguWBnOS6i+S7tiAqL1xuXG4gICAgZ3JvdXAub24oXCJcIi5jb25jYXQoUExBWV9QQVVTRV9CVE4sIFwiOmNsaWNrXCIpLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5pc1BsYXkgPSAhX3RoaXMuaXNQbGF5O1xuXG4gICAgICBfdGhpcy5jaGFuZ2VQbGF5U3RhdHVzKCk7XG4gICAgfSk7IC8vIOWkhOeQhuWJjei/m+S4gOatpeeahOS6i+S7tlxuXG4gICAgZ3JvdXAub24oXCJcIi5jb25jYXQoTkVYVF9TVEVQX0JUTiwgXCI6Y2xpY2tcIiksIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLnVwZGF0ZVN0YXJ0RW5kKDEpO1xuICAgIH0pOyAvLyDlpITnkIblkI7pgIDkuIDmraXnmoTkuovku7ZcblxuICAgIGdyb3VwLm9uKFwiXCIuY29uY2F0KFBSRV9TVEVQX0JUTiwgXCI6Y2xpY2tcIiksIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLnVwZGF0ZVN0YXJ0RW5kKC0xKTtcbiAgICB9KTtcbiAgICBncm91cC5vbihUSU1FQkFSX0NPTkZJR19DSEFOR0UsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgdmFyIHR5cGUgPSBfYS50eXBlLFxuICAgICAgICAgIHNwZWVkID0gX2Euc3BlZWQ7XG4gICAgICBfdGhpcy5jdXJyZW50U3BlZWQgPSBzcGVlZDtcbiAgICB9KTtcbiAgfTtcblxuICBUaW1lQmFyU2xpY2UucHJvdG90eXBlLmNoYW5nZVBsYXlTdGF0dXMgPSBmdW5jdGlvbiAoaXNTeW5jKSB7XG4gICAgaWYgKGlzU3luYyA9PT0gdm9pZCAwKSB7XG4gICAgICBpc1N5bmMgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbGxlckJ0bkdyb3VwLnBsYXlCdXR0b24udXBkYXRlKHtcbiAgICAgIGlzUGxheTogdGhpcy5pc1BsYXlcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmlzUGxheSkge1xuICAgICAgLy8g5byA5aeL5pKt5pS+XG4gICAgICB0aGlzLnBsYXlIYW5kbGVyID0gdGhpcy5zdGFydFBsYXkoKTtcbiAgICAgIHRoaXMuZ3JhcGguZW1pdChUSU1FTElORV9TVEFSVCwgbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOe7k+adn+aSreaUvlxuICAgICAgaWYgKHRoaXMucGxheUhhbmRsZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5wbGF5SGFuZGxlcik7XG5cbiAgICAgICAgaWYgKGlzU3luYykge1xuICAgICAgICAgIHRoaXMuZ3JhcGguZW1pdChUSU1FTElORV9FTkQsIG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIFRpbWVCYXJTbGljZS5wcm90b3R5cGUuc3RhcnRQbGF5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzcGVlZCA9IF90aGlzLmN1cnJlbnRTcGVlZDsgLy8g5LiA5YiG6ZKf5Yi35paw5LiA5qyhXG5cbiAgICAgIGlmIChfdGhpcy5mcmFtZUNvdW50ICUgKDYwIC8gc3BlZWQpID09PSAwKSB7XG4gICAgICAgIF90aGlzLmZyYW1lQ291bnQgPSAwO1xuXG4gICAgICAgIF90aGlzLnVwZGF0ZVN0YXJ0RW5kKDEpO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5mcmFtZUNvdW50Kys7XG5cbiAgICAgIGlmIChfdGhpcy5pc1BsYXkpIHtcbiAgICAgICAgX3RoaXMucGxheUhhbmRsZXIgPSBfdGhpcy5zdGFydFBsYXkoKTtcbiAgICAgIH1cbiAgICB9KSA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICBUaW1lQmFyU2xpY2UucHJvdG90eXBlLnVwZGF0ZVN0YXJ0RW5kID0gZnVuY3Rpb24gKHNpZ24pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHRpY2tSZWN0cyA9IHRoaXMudGlja1JlY3RzO1xuICAgIHZhciB0aWNrc0xlbmd0aCA9IHRpY2tSZWN0cy5sZW5ndGg7XG4gICAgdmFyIHVuc2VsZWN0ZWRUaWNrU3R5bGUgPSB0aGlzLnVuc2VsZWN0ZWRUaWNrU3R5bGU7XG4gICAgdmFyIHNlbGVjdGVkVGlja1N0eWxlID0gdGhpcy5zZWxlY3RlZFRpY2tTdHlsZTtcbiAgICB2YXIgcHJldmlvdXNFbmRUaWNrUmVjdElkID0gc2VsZi5lbmRUaWNrUmVjdElkO1xuXG4gICAgaWYgKHNpZ24gPiAwKSB7XG4gICAgICBzZWxmLmVuZFRpY2tSZWN0SWQrKztcbiAgICB9IGVsc2Uge1xuICAgICAgdGlja1JlY3RzW3NlbGYuZW5kVGlja1JlY3RJZF0ucmVjdC5hdHRyKHVuc2VsZWN0ZWRUaWNrU3R5bGUpO1xuICAgICAgc2VsZi5lbmRUaWNrUmVjdElkLS07XG4gICAgfSAvLyDoi6XmraTml7Ygc3RhcnQg5LiOIGVuZCDkuI3lkIzvvIzojIPlm7TliY3ov5sv5ZCO6YCAL+aSreaUvlxuXG5cbiAgICBpZiAocHJldmlvdXNFbmRUaWNrUmVjdElkICE9PSBzZWxmLnN0YXJ0VGlja1JlY3RJZCkge1xuICAgICAgaWYgKHNlbGYuZW5kVGlja1JlY3RJZCA8IHNlbGYuc3RhcnRUaWNrUmVjdElkKSB7XG4gICAgICAgIHNlbGYuc3RhcnRUaWNrUmVjdElkID0gc2VsZi5lbmRUaWNrUmVjdElkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlkKbliJnmmK/ljZXluKfnmoTliY3ov5sv5ZCO6YCAL+aSreaUvlxuICAgICAgZm9yICh2YXIgaSA9IHNlbGYuc3RhcnRUaWNrUmVjdElkOyBpIDw9IHNlbGYuZW5kVGlja1JlY3RJZCAtIDE7IGkrKykge1xuICAgICAgICB0aWNrUmVjdHNbaV0ucmVjdC5hdHRyKHVuc2VsZWN0ZWRUaWNrU3R5bGUpO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnN0YXJ0VGlja1JlY3RJZCA9IHNlbGYuZW5kVGlja1JlY3RJZDtcbiAgICB9XG5cbiAgICBpZiAodGlja1JlY3RzW3NlbGYuZW5kVGlja1JlY3RJZF0pIHtcbiAgICAgIHRpY2tSZWN0c1tzZWxmLmVuZFRpY2tSZWN0SWRdLnJlY3QuYXR0cihzZWxlY3RlZFRpY2tTdHlsZSk7XG4gICAgICB2YXIgc3RhcnQgPSBzZWxmLnN0YXJ0VGlja1JlY3RJZCAvIHRpY2tzTGVuZ3RoO1xuICAgICAgdmFyIGVuZCA9IHNlbGYuZW5kVGlja1JlY3RJZCAvIHRpY2tzTGVuZ3RoO1xuICAgICAgdGhpcy5ncmFwaC5lbWl0KFZBTFVFX0NIQU5HRSwge1xuICAgICAgICB2YWx1ZTogW3N0YXJ0LCBlbmRdXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgVGltZUJhclNsaWNlLnByb3RvdHlwZS5kZXN0b3J5ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JhcGgub2ZmKFZBTFVFX0NIQU5HRSk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5zbGljZUdyb3VwO1xuICAgIGdyb3VwLm9mZignY2xpY2snKTtcbiAgICBncm91cC5vZmYoJ2RyYWdzdGFydCcpO1xuICAgIGdyb3VwLm9mZignZHJhZ292ZXInKTtcbiAgICBncm91cC5vZmYoJ2Ryb3AnKTtcbiAgICB0aGlzLnRpY2tSZWN0cy5mb3JFYWNoKGZ1bmN0aW9uICh0aWNrUmVjdCkge1xuICAgICAgdmFyIHBpY2tSZWN0ID0gdGlja1JlY3QucGlja1JlY3Q7XG4gICAgICBwaWNrUmVjdC5vZmYoJ21vdXNlZW50ZXInKTtcbiAgICAgIHBpY2tSZWN0Lm9mZignbW91c2VsZWF2ZScpO1xuICAgIH0pO1xuICAgIHRoaXMudGlja1JlY3RzLmxlbmd0aCA9IDA7XG4gICAgZ3JvdXAub2ZmKFwiXCIuY29uY2F0KFBMQVlfUEFVU0VfQlROLCBcIjpjbGlja1wiKSk7XG4gICAgZ3JvdXAub2ZmKFwiXCIuY29uY2F0KE5FWFRfU1RFUF9CVE4sIFwiOmNsaWNrXCIpKTtcbiAgICBncm91cC5vZmYoXCJcIi5jb25jYXQoUFJFX1NURVBfQlROLCBcIjpjbGlja1wiKSk7XG4gICAgZ3JvdXAub2ZmKFRJTUVCQVJfQ09ORklHX0NIQU5HRSk7XG4gICAgdGhpcy5zbGljZUdyb3VwLmRlc3Ryb3koKTtcbiAgfTtcblxuICByZXR1cm4gVGltZUJhclNsaWNlO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBUaW1lQmFyU2xpY2U7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/timeBar/timeBarSlice.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/timeBar/timeBarTooltip.js": /*!*******************************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/timeBar/timeBarTooltip.js ***! \*******************************************************************/ /*! exports provided: BACKGROUND_STYLE, ARROW_STYLE, TEXT_STYLE, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BACKGROUND_STYLE\", function() { return BACKGROUND_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ARROW_STYLE\", function() { return ARROW_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT_STYLE\", function() { return TEXT_STYLE; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n\n\nvar BACKGROUND_STYLE = {\n opacity: 0.5,\n fill: '#000'\n};\nvar ARROW_STYLE = {\n opacity: 0.5,\n fill: '#000',\n r: 5\n};\nvar TEXT_STYLE = {\n fill: '#fff',\n fontSize: 12\n};\n/**\n * 缩略趋势图\n */\n\nvar TimeBarTooltip =\n/** @class */\nfunction () {\n function TimeBarTooltip(cfg) {\n var _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n container = cfg.container,\n text = cfg.text,\n _c = cfg.padding,\n padding = _c === void 0 ? [4, 4, 4, 4] : _c,\n _d = cfg.className,\n className = _d === void 0 ? 'g6-component-timebar-tooltip' : _d,\n _e = cfg.backgroundColor,\n backgroundColor = _e === void 0 ? '#000' : _e,\n _f = cfg.textColor,\n textColor = _f === void 0 ? '#fff' : _f,\n _g = cfg.opacity,\n opacity = _g === void 0 ? 0.8 : _g,\n _h = cfg.fontSize,\n fontSize = _h === void 0 ? 12 : _h;\n this.container = container;\n this.className = className;\n this.backgroundColor = backgroundColor;\n this.textColor = textColor;\n this.x = x;\n this.y = y;\n this.text = text;\n this.padding = padding;\n this.opacity = opacity;\n this.fontSize = fontSize;\n this.render();\n }\n /**\n * 首次渲染\n * @private\n */\n\n\n TimeBarTooltip.prototype.render = function () {\n var self = this;\n var className = self.className,\n x = self.x,\n y = self.y,\n backgroundColor = self.backgroundColor,\n textColor = self.textColor,\n text = self.text,\n padding = self.padding,\n opacity = self.opacity,\n fontSize = self.fontSize;\n var parentNode = self.container;\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"createDom\"])(\"
\"));\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(parentNode)) {\n parentNode = document.getElementById(parentNode);\n }\n\n parentNode.appendChild(container);\n self.parentHeight = parentNode.offsetHeight;\n self.parentWidth = parentNode.offsetWidth;\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(container, {\n visibility: 'hidden',\n top: 0,\n left: 0\n });\n var background = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"createDom\"])(\"\\n
\"));\n background.innerHTML = text;\n container.appendChild(background);\n self.backgroundDOM = background;\n var arrow = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"createDom\"])(\"
\"));\n container.appendChild(arrow);\n self.arrowDOM = arrow;\n self.container = container;\n };\n\n TimeBarTooltip.prototype.show = function (cfg) {\n var self = this;\n var text = cfg.text,\n x = cfg.x,\n y = cfg.y,\n clientX = cfg.clientX,\n clientY = cfg.clientY;\n self.backgroundDOM.innerHTML = text;\n var backgroundWidth = self.backgroundDOM.offsetWidth;\n var backgroundHeight = self.backgroundDOM.offsetHeight;\n var arrowWidth = self.arrowDOM.offsetWidth;\n var arrowHeight = self.arrowDOM.offsetHeight;\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(self.container, {\n top: \"\".concat(-backgroundHeight - arrowHeight, \"px\"),\n left: \"\".concat(x, \"px\"),\n visibility: 'visible'\n });\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(self.backgroundDOM, {\n marginLeft: \"\".concat(-backgroundWidth / 2, \"px\")\n });\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(self.arrowDOM, {\n marginLeft: \"\".concat(-arrowWidth / 2, \"px\"),\n top: \"\".concat(backgroundHeight, \"px\")\n });\n var left = x - backgroundWidth / 2;\n var right = x + backgroundWidth / 2;\n\n if (left < 0) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(self.backgroundDOM, {\n marginLeft: \"\".concat(-backgroundWidth / 2 - left, \"px\")\n });\n } else if (right > self.parentWidth) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(self.backgroundDOM, {\n marginLeft: \"\".concat(-backgroundWidth / 2 - right + self.parentWidth + 12, \"px\")\n });\n }\n };\n\n TimeBarTooltip.prototype.hide = function () {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(this.container, {\n top: 0,\n left: 0,\n visibility: 'hidden'\n });\n };\n\n return TimeBarTooltip;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimeBarTooltip);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvdGltZUJhclRvb2x0aXAuanM/NTJjZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDZ0I7QUFDL0M7QUFDUDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGdFQUFTLGdFQUFnRSxvQkFBb0IscUJBQXFCOztBQUV0SSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxxQkFBcUIsZ0VBQVMseUNBQXlDLG9CQUFvQiwrQ0FBK0Msb0NBQW9DLG9CQUFvQixvQkFBb0IscUJBQXFCLCtCQUErQjtBQUMxUTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsZ0VBQVMsaUNBQWlDLFlBQVksYUFBYSxvQ0FBb0MscUNBQXFDO0FBQzVKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0VBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSSxnRUFBUztBQUNiO0FBQ0EsS0FBSztBQUNMLElBQUksZ0VBQVM7QUFDYjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLGdFQUFTO0FBQ2Y7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLE1BQU0sZ0VBQVM7QUFDZjtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLENBQUM7O0FBRWMsNkVBQWMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvdGltZUJhclRvb2x0aXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlRG9tLCBtb2RpZnlDU1MgfSBmcm9tICdAYW50di9kb20tdXRpbCc7XG5leHBvcnQgdmFyIEJBQ0tHUk9VTkRfU1RZTEUgPSB7XG4gIG9wYWNpdHk6IDAuNSxcbiAgZmlsbDogJyMwMDAnXG59O1xuZXhwb3J0IHZhciBBUlJPV19TVFlMRSA9IHtcbiAgb3BhY2l0eTogMC41LFxuICBmaWxsOiAnIzAwMCcsXG4gIHI6IDVcbn07XG5leHBvcnQgdmFyIFRFWFRfU1RZTEUgPSB7XG4gIGZpbGw6ICcjZmZmJyxcbiAgZm9udFNpemU6IDEyXG59O1xuLyoqXG4gKiDnvKnnlaXotovlir/lm75cbiAqL1xuXG52YXIgVGltZUJhclRvb2x0aXAgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBUaW1lQmFyVG9vbHRpcChjZmcpIHtcbiAgICB2YXIgX2EgPSBjZmcueCxcbiAgICAgICAgeCA9IF9hID09PSB2b2lkIDAgPyAwIDogX2EsXG4gICAgICAgIF9iID0gY2ZnLnksXG4gICAgICAgIHkgPSBfYiA9PT0gdm9pZCAwID8gMCA6IF9iLFxuICAgICAgICBjb250YWluZXIgPSBjZmcuY29udGFpbmVyLFxuICAgICAgICB0ZXh0ID0gY2ZnLnRleHQsXG4gICAgICAgIF9jID0gY2ZnLnBhZGRpbmcsXG4gICAgICAgIHBhZGRpbmcgPSBfYyA9PT0gdm9pZCAwID8gWzQsIDQsIDQsIDRdIDogX2MsXG4gICAgICAgIF9kID0gY2ZnLmNsYXNzTmFtZSxcbiAgICAgICAgY2xhc3NOYW1lID0gX2QgPT09IHZvaWQgMCA/ICdnNi1jb21wb25lbnQtdGltZWJhci10b29sdGlwJyA6IF9kLFxuICAgICAgICBfZSA9IGNmZy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9IF9lID09PSB2b2lkIDAgPyAnIzAwMCcgOiBfZSxcbiAgICAgICAgX2YgPSBjZmcudGV4dENvbG9yLFxuICAgICAgICB0ZXh0Q29sb3IgPSBfZiA9PT0gdm9pZCAwID8gJyNmZmYnIDogX2YsXG4gICAgICAgIF9nID0gY2ZnLm9wYWNpdHksXG4gICAgICAgIG9wYWNpdHkgPSBfZyA9PT0gdm9pZCAwID8gMC44IDogX2csXG4gICAgICAgIF9oID0gY2ZnLmZvbnRTaXplLFxuICAgICAgICBmb250U2l6ZSA9IF9oID09PSB2b2lkIDAgPyAxMiA6IF9oO1xuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRoaXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yO1xuICAgIHRoaXMudGV4dENvbG9yID0gdGV4dENvbG9yO1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICAgIHRoaXMucGFkZGluZyA9IHBhZGRpbmc7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgICB0aGlzLmZvbnRTaXplID0gZm9udFNpemU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuICAvKipcbiAgICog6aaW5qyh5riy5p+TXG4gICAqIEBwcml2YXRlXG4gICAqL1xuXG5cbiAgVGltZUJhclRvb2x0aXAucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHNlbGYuY2xhc3NOYW1lLFxuICAgICAgICB4ID0gc2VsZi54LFxuICAgICAgICB5ID0gc2VsZi55LFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBzZWxmLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgdGV4dENvbG9yID0gc2VsZi50ZXh0Q29sb3IsXG4gICAgICAgIHRleHQgPSBzZWxmLnRleHQsXG4gICAgICAgIHBhZGRpbmcgPSBzZWxmLnBhZGRpbmcsXG4gICAgICAgIG9wYWNpdHkgPSBzZWxmLm9wYWNpdHksXG4gICAgICAgIGZvbnRTaXplID0gc2VsZi5mb250U2l6ZTtcbiAgICB2YXIgcGFyZW50Tm9kZSA9IHNlbGYuY29udGFpbmVyO1xuICAgIHZhciBjb250YWluZXIgPSBjcmVhdGVEb20oXCI8ZGl2IGNsYXNzPSdcIi5jb25jYXQoY2xhc3NOYW1lLCBcIicgc3R5bGU9XFxcInBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IGZpdC1jb250ZW50OyBoZWlnaHQ6IGZpdC1jb250ZW50OyBvcGFjaXR5OiBcIikuY29uY2F0KG9wYWNpdHksIFwiXFxcIj48L2Rpdj5cIikpO1xuXG4gICAgaWYgKGlzU3RyaW5nKHBhcmVudE5vZGUpKSB7XG4gICAgICBwYXJlbnROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocGFyZW50Tm9kZSk7XG4gICAgfVxuXG4gICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgIHNlbGYucGFyZW50SGVpZ2h0ID0gcGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQ7XG4gICAgc2VsZi5wYXJlbnRXaWR0aCA9IHBhcmVudE5vZGUub2Zmc2V0V2lkdGg7XG4gICAgbW9kaWZ5Q1NTKGNvbnRhaW5lciwge1xuICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICB0b3A6IDAsXG4gICAgICBsZWZ0OiAwXG4gICAgfSk7XG4gICAgdmFyIGJhY2tncm91bmQgPSBjcmVhdGVEb20oXCJcXG4gICAgICA8ZGl2IHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IHdoaXRlLXNwYWNlOm5vd3JhcDsgYmFja2dyb3VuZC1jb2xvcjogXCIuY29uY2F0KGJhY2tncm91bmRDb2xvciwgXCI7IGZvbnQtc2l6ZTogXCIpLmNvbmNhdChmb250U2l6ZSwgXCJweDsgYm9yZGVyLXJhZGl1czogNHB4OyB3aWR0aDogZml0LWNvbnRlbnQ7IGhlaWdodDogZml0LWNvbnRlbnQ7IGNvbG9yOiBcIikuY29uY2F0KHRleHRDb2xvciwgXCI7IHBhZGRpbmc6IFwiKS5jb25jYXQocGFkZGluZ1swXSwgXCJweCBcIikuY29uY2F0KHBhZGRpbmdbMV0sIFwicHggXCIpLmNvbmNhdChwYWRkaW5nWzJdLCBcInB4IFwiKS5jb25jYXQocGFkZGluZ1szXSwgXCJweCc+PC9kaXY+XCIpKTtcbiAgICBiYWNrZ3JvdW5kLmlubmVySFRNTCA9IHRleHQ7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGJhY2tncm91bmQpO1xuICAgIHNlbGYuYmFja2dyb3VuZERPTSA9IGJhY2tncm91bmQ7XG4gICAgdmFyIGFycm93ID0gY3JlYXRlRG9tKFwiPGRpdiBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMHB4OyBoZWlnaHQ6IDBweDsgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6IDEwcHggc29saWQgXCIuY29uY2F0KGJhY2tncm91bmRDb2xvciwgXCInPjwvZGl2PlwiKSk7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGFycm93KTtcbiAgICBzZWxmLmFycm93RE9NID0gYXJyb3c7XG4gICAgc2VsZi5jb250YWluZXIgPSBjb250YWluZXI7XG4gIH07XG5cbiAgVGltZUJhclRvb2x0aXAucHJvdG90eXBlLnNob3cgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0ZXh0ID0gY2ZnLnRleHQsXG4gICAgICAgIHggPSBjZmcueCxcbiAgICAgICAgeSA9IGNmZy55LFxuICAgICAgICBjbGllbnRYID0gY2ZnLmNsaWVudFgsXG4gICAgICAgIGNsaWVudFkgPSBjZmcuY2xpZW50WTtcbiAgICBzZWxmLmJhY2tncm91bmRET00uaW5uZXJIVE1MID0gdGV4dDtcbiAgICB2YXIgYmFja2dyb3VuZFdpZHRoID0gc2VsZi5iYWNrZ3JvdW5kRE9NLm9mZnNldFdpZHRoO1xuICAgIHZhciBiYWNrZ3JvdW5kSGVpZ2h0ID0gc2VsZi5iYWNrZ3JvdW5kRE9NLm9mZnNldEhlaWdodDtcbiAgICB2YXIgYXJyb3dXaWR0aCA9IHNlbGYuYXJyb3dET00ub2Zmc2V0V2lkdGg7XG4gICAgdmFyIGFycm93SGVpZ2h0ID0gc2VsZi5hcnJvd0RPTS5vZmZzZXRIZWlnaHQ7XG4gICAgbW9kaWZ5Q1NTKHNlbGYuY29udGFpbmVyLCB7XG4gICAgICB0b3A6IFwiXCIuY29uY2F0KC1iYWNrZ3JvdW5kSGVpZ2h0IC0gYXJyb3dIZWlnaHQsIFwicHhcIiksXG4gICAgICBsZWZ0OiBcIlwiLmNvbmNhdCh4LCBcInB4XCIpLFxuICAgICAgdmlzaWJpbGl0eTogJ3Zpc2libGUnXG4gICAgfSk7XG4gICAgbW9kaWZ5Q1NTKHNlbGYuYmFja2dyb3VuZERPTSwge1xuICAgICAgbWFyZ2luTGVmdDogXCJcIi5jb25jYXQoLWJhY2tncm91bmRXaWR0aCAvIDIsIFwicHhcIilcbiAgICB9KTtcbiAgICBtb2RpZnlDU1Moc2VsZi5hcnJvd0RPTSwge1xuICAgICAgbWFyZ2luTGVmdDogXCJcIi5jb25jYXQoLWFycm93V2lkdGggLyAyLCBcInB4XCIpLFxuICAgICAgdG9wOiBcIlwiLmNvbmNhdChiYWNrZ3JvdW5kSGVpZ2h0LCBcInB4XCIpXG4gICAgfSk7XG4gICAgdmFyIGxlZnQgPSB4IC0gYmFja2dyb3VuZFdpZHRoIC8gMjtcbiAgICB2YXIgcmlnaHQgPSB4ICsgYmFja2dyb3VuZFdpZHRoIC8gMjtcblxuICAgIGlmIChsZWZ0IDwgMCkge1xuICAgICAgbW9kaWZ5Q1NTKHNlbGYuYmFja2dyb3VuZERPTSwge1xuICAgICAgICBtYXJnaW5MZWZ0OiBcIlwiLmNvbmNhdCgtYmFja2dyb3VuZFdpZHRoIC8gMiAtIGxlZnQsIFwicHhcIilcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocmlnaHQgPiBzZWxmLnBhcmVudFdpZHRoKSB7XG4gICAgICBtb2RpZnlDU1Moc2VsZi5iYWNrZ3JvdW5kRE9NLCB7XG4gICAgICAgIG1hcmdpbkxlZnQ6IFwiXCIuY29uY2F0KC1iYWNrZ3JvdW5kV2lkdGggLyAyIC0gcmlnaHQgKyBzZWxmLnBhcmVudFdpZHRoICsgMTIsIFwicHhcIilcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBUaW1lQmFyVG9vbHRpcC5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBtb2RpZnlDU1ModGhpcy5jb250YWluZXIsIHtcbiAgICAgIHRvcDogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJ1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBUaW1lQmFyVG9vbHRpcDtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgVGltZUJhclRvb2x0aXA7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/timeBar/timeBarTooltip.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/timeBar/timeButton.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/timeBar/timeButton.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/g6-plugin/es/timeBar/constant.js\");\n/**\n * 基于 G 的按钮组件\n */\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\nvar Button =\n/** @class */\nfunction () {\n function Button(cfg) {\n this.config = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"deepMix\"])({}, cfg);\n this.init();\n }\n\n Button.prototype.update = function (cfg) {\n this.config = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"deepMix\"])({}, this.config, cfg);\n this.updateElement();\n this.renderMarker();\n };\n\n Button.prototype.init = function () {\n this.initElement();\n this.renderMarker();\n };\n\n Button.prototype.initElement = function () {\n var _a = this.config,\n group = _a.group,\n style = _a.style;\n var _b = style.scale,\n scale = _b === void 0 ? 1 : _b,\n _c = style.offsetX,\n offsetX = _c === void 0 ? 0 : _c,\n _d = style.offsetY,\n offsetY = _d === void 0 ? 0 : _d;\n var x = this.config.x + offsetX;\n var y = this.config.y + offsetY;\n var buttonGroup = group.addGroup({\n name: _constant__WEBPACK_IMPORTED_MODULE_1__[\"PLAY_PAUSE_BTN\"]\n });\n this.startMarkerGroup = buttonGroup.addGroup({\n name: _constant__WEBPACK_IMPORTED_MODULE_1__[\"PLAY_PAUSE_BTN\"]\n });\n this.circle = group.addShape('circle', {\n attrs: __assign({\n x: x,\n y: y,\n r: this.config.r * scale\n }, style),\n name: _constant__WEBPACK_IMPORTED_MODULE_1__[\"PLAY_PAUSE_BTN\"]\n });\n this.startMarker = this.startMarkerGroup.addShape('path', {\n attrs: {\n path: this.getStartMarkerPath(x, y, scale),\n fill: style.stroke || '#aaa'\n },\n name: 'start-marker'\n });\n this.pauseMarkerGroup = buttonGroup.addGroup({\n name: _constant__WEBPACK_IMPORTED_MODULE_1__[\"PLAY_PAUSE_BTN\"]\n });\n var width = 0.25 * this.config.r * scale;\n var height = 0.5 * this.config.r * Math.sqrt(3) * scale;\n this.pauseLeftMarker = this.pauseMarkerGroup.addShape('rect', {\n attrs: {\n x: x - 0.375 * this.config.r * scale,\n y: y - height / 2,\n width: width,\n height: height,\n fill: style.stroke || '#aaa',\n lineWidth: 0\n }\n });\n this.pauseRightMarker = this.pauseMarkerGroup.addShape('rect', {\n attrs: {\n x: x + 1 / 8 * this.config.r * scale,\n y: y - height / 2,\n width: width,\n height: height,\n fill: style.stroke || '#aaa',\n lineWidth: 0\n }\n });\n };\n\n Button.prototype.updateElement = function () {\n var _a = this.config.style,\n _b = _a.scale,\n scale = _b === void 0 ? 1 : _b,\n _c = _a.offsetX,\n offsetX = _c === void 0 ? 0 : _c,\n _d = _a.offsetY,\n offsetY = _d === void 0 ? 0 : _d;\n var x = this.config.x + offsetX;\n var y = this.config.y + offsetY;\n this.circle.attr('x', x);\n this.circle.attr('y', y);\n this.circle.attr('r', this.config.r * scale);\n this.startMarker.attr('path', this.getStartMarkerPath(x, y, scale));\n var width = 0.25 * this.config.r * scale;\n var height = 0.5 * this.config.r * Math.sqrt(3) * scale;\n this.pauseLeftMarker.attr('x', x - (1 / 4 + 1 / 8) * this.config.r * scale);\n this.pauseLeftMarker.attr('y', y - height / 2);\n this.pauseLeftMarker.attr('width', width);\n this.pauseLeftMarker.attr('height', height);\n this.pauseRightMarker.attr('x', x + 1 / 8 * this.config.r * scale);\n this.pauseRightMarker.attr('y', y - height / 2);\n this.pauseRightMarker.attr('width', width);\n this.pauseRightMarker.attr('height', height);\n };\n\n Button.prototype.renderMarker = function () {\n if (this.config.isPlay) {\n this.startMarkerGroup.hide();\n this.pauseMarkerGroup.show();\n } else {\n this.startMarkerGroup.show();\n this.pauseMarkerGroup.hide();\n }\n };\n /** 获取播放键 marker path */\n\n\n Button.prototype.getStartMarkerPath = function (x, y, scale) {\n var sideLength = 0.5 * this.config.r * Math.sqrt(3) * scale;\n return [['M', x - sideLength / Math.sqrt(3) / 2, y - sideLength / 2], ['L', x + sideLength / Math.sqrt(3), y], ['L', x - sideLength / Math.sqrt(3) / 2, y + sideLength / 2]];\n };\n\n return Button;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Button);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvdGltZUJ1dHRvbi5qcz85ODQ3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBSSxJQUFJLFNBQUk7QUFDM0I7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRXFDO0FBQ087O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDBEQUFPLEdBQUc7QUFDNUI7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQiwwREFBTyxHQUFHO0FBQzVCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksd0RBQWM7QUFDMUIsS0FBSztBQUNMO0FBQ0EsWUFBWSx3REFBYztBQUMxQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxZQUFZLHdEQUFjO0FBQzFCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLFlBQVksd0RBQWM7QUFDMUIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyxxRUFBTSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci90aW1lQnV0dG9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDln7rkuo4gRyDnmoTmjInpkq7nu4Tku7ZcbiAqL1xudmFyIF9fYXNzaWduID0gdGhpcyAmJiB0aGlzLl9fYXNzaWduIHx8IGZ1bmN0aW9uICgpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0KSB7XG4gICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBzID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuXG5pbXBvcnQgeyBkZWVwTWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBQTEFZX1BBVVNFX0JUTiB9IGZyb20gJy4vY29uc3RhbnQnO1xuXG52YXIgQnV0dG9uID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQnV0dG9uKGNmZykge1xuICAgIHRoaXMuY29uZmlnID0gZGVlcE1peCh7fSwgY2ZnKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIEJ1dHRvbi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHRoaXMuY29uZmlnID0gZGVlcE1peCh7fSwgdGhpcy5jb25maWcsIGNmZyk7XG4gICAgdGhpcy51cGRhdGVFbGVtZW50KCk7XG4gICAgdGhpcy5yZW5kZXJNYXJrZXIoKTtcbiAgfTtcblxuICBCdXR0b24ucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5pbml0RWxlbWVudCgpO1xuICAgIHRoaXMucmVuZGVyTWFya2VyKCk7XG4gIH07XG5cbiAgQnV0dG9uLnByb3RvdHlwZS5pbml0RWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX2EgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgZ3JvdXAgPSBfYS5ncm91cCxcbiAgICAgICAgc3R5bGUgPSBfYS5zdHlsZTtcbiAgICB2YXIgX2IgPSBzdHlsZS5zY2FsZSxcbiAgICAgICAgc2NhbGUgPSBfYiA9PT0gdm9pZCAwID8gMSA6IF9iLFxuICAgICAgICBfYyA9IHN0eWxlLm9mZnNldFgsXG4gICAgICAgIG9mZnNldFggPSBfYyA9PT0gdm9pZCAwID8gMCA6IF9jLFxuICAgICAgICBfZCA9IHN0eWxlLm9mZnNldFksXG4gICAgICAgIG9mZnNldFkgPSBfZCA9PT0gdm9pZCAwID8gMCA6IF9kO1xuICAgIHZhciB4ID0gdGhpcy5jb25maWcueCArIG9mZnNldFg7XG4gICAgdmFyIHkgPSB0aGlzLmNvbmZpZy55ICsgb2Zmc2V0WTtcbiAgICB2YXIgYnV0dG9uR3JvdXAgPSBncm91cC5hZGRHcm91cCh7XG4gICAgICBuYW1lOiBQTEFZX1BBVVNFX0JUTlxuICAgIH0pO1xuICAgIHRoaXMuc3RhcnRNYXJrZXJHcm91cCA9IGJ1dHRvbkdyb3VwLmFkZEdyb3VwKHtcbiAgICAgIG5hbWU6IFBMQVlfUEFVU0VfQlROXG4gICAgfSk7XG4gICAgdGhpcy5jaXJjbGUgPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgcjogdGhpcy5jb25maWcuciAqIHNjYWxlXG4gICAgICB9LCBzdHlsZSksXG4gICAgICBuYW1lOiBQTEFZX1BBVVNFX0JUTlxuICAgIH0pO1xuICAgIHRoaXMuc3RhcnRNYXJrZXIgPSB0aGlzLnN0YXJ0TWFya2VyR3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwYXRoOiB0aGlzLmdldFN0YXJ0TWFya2VyUGF0aCh4LCB5LCBzY2FsZSksXG4gICAgICAgIGZpbGw6IHN0eWxlLnN0cm9rZSB8fCAnI2FhYSdcbiAgICAgIH0sXG4gICAgICBuYW1lOiAnc3RhcnQtbWFya2VyJ1xuICAgIH0pO1xuICAgIHRoaXMucGF1c2VNYXJrZXJHcm91cCA9IGJ1dHRvbkdyb3VwLmFkZEdyb3VwKHtcbiAgICAgIG5hbWU6IFBMQVlfUEFVU0VfQlROXG4gICAgfSk7XG4gICAgdmFyIHdpZHRoID0gMC4yNSAqIHRoaXMuY29uZmlnLnIgKiBzY2FsZTtcbiAgICB2YXIgaGVpZ2h0ID0gMC41ICogdGhpcy5jb25maWcuciAqIE1hdGguc3FydCgzKSAqIHNjYWxlO1xuICAgIHRoaXMucGF1c2VMZWZ0TWFya2VyID0gdGhpcy5wYXVzZU1hcmtlckdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogeCAtIDAuMzc1ICogdGhpcy5jb25maWcuciAqIHNjYWxlLFxuICAgICAgICB5OiB5IC0gaGVpZ2h0IC8gMixcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgZmlsbDogc3R5bGUuc3Ryb2tlIHx8ICcjYWFhJyxcbiAgICAgICAgbGluZVdpZHRoOiAwXG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5wYXVzZVJpZ2h0TWFya2VyID0gdGhpcy5wYXVzZU1hcmtlckdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogeCArIDEgLyA4ICogdGhpcy5jb25maWcuciAqIHNjYWxlLFxuICAgICAgICB5OiB5IC0gaGVpZ2h0IC8gMixcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgZmlsbDogc3R5bGUuc3Ryb2tlIHx8ICcjYWFhJyxcbiAgICAgICAgbGluZVdpZHRoOiAwXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgQnV0dG9uLnByb3RvdHlwZS51cGRhdGVFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYSA9IHRoaXMuY29uZmlnLnN0eWxlLFxuICAgICAgICBfYiA9IF9hLnNjYWxlLFxuICAgICAgICBzY2FsZSA9IF9iID09PSB2b2lkIDAgPyAxIDogX2IsXG4gICAgICAgIF9jID0gX2Eub2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WCA9IF9jID09PSB2b2lkIDAgPyAwIDogX2MsXG4gICAgICAgIF9kID0gX2Eub2Zmc2V0WSxcbiAgICAgICAgb2Zmc2V0WSA9IF9kID09PSB2b2lkIDAgPyAwIDogX2Q7XG4gICAgdmFyIHggPSB0aGlzLmNvbmZpZy54ICsgb2Zmc2V0WDtcbiAgICB2YXIgeSA9IHRoaXMuY29uZmlnLnkgKyBvZmZzZXRZO1xuICAgIHRoaXMuY2lyY2xlLmF0dHIoJ3gnLCB4KTtcbiAgICB0aGlzLmNpcmNsZS5hdHRyKCd5JywgeSk7XG4gICAgdGhpcy5jaXJjbGUuYXR0cigncicsIHRoaXMuY29uZmlnLnIgKiBzY2FsZSk7XG4gICAgdGhpcy5zdGFydE1hcmtlci5hdHRyKCdwYXRoJywgdGhpcy5nZXRTdGFydE1hcmtlclBhdGgoeCwgeSwgc2NhbGUpKTtcbiAgICB2YXIgd2lkdGggPSAwLjI1ICogdGhpcy5jb25maWcuciAqIHNjYWxlO1xuICAgIHZhciBoZWlnaHQgPSAwLjUgKiB0aGlzLmNvbmZpZy5yICogTWF0aC5zcXJ0KDMpICogc2NhbGU7XG4gICAgdGhpcy5wYXVzZUxlZnRNYXJrZXIuYXR0cigneCcsIHggLSAoMSAvIDQgKyAxIC8gOCkgKiB0aGlzLmNvbmZpZy5yICogc2NhbGUpO1xuICAgIHRoaXMucGF1c2VMZWZ0TWFya2VyLmF0dHIoJ3knLCB5IC0gaGVpZ2h0IC8gMik7XG4gICAgdGhpcy5wYXVzZUxlZnRNYXJrZXIuYXR0cignd2lkdGgnLCB3aWR0aCk7XG4gICAgdGhpcy5wYXVzZUxlZnRNYXJrZXIuYXR0cignaGVpZ2h0JywgaGVpZ2h0KTtcbiAgICB0aGlzLnBhdXNlUmlnaHRNYXJrZXIuYXR0cigneCcsIHggKyAxIC8gOCAqIHRoaXMuY29uZmlnLnIgKiBzY2FsZSk7XG4gICAgdGhpcy5wYXVzZVJpZ2h0TWFya2VyLmF0dHIoJ3knLCB5IC0gaGVpZ2h0IC8gMik7XG4gICAgdGhpcy5wYXVzZVJpZ2h0TWFya2VyLmF0dHIoJ3dpZHRoJywgd2lkdGgpO1xuICAgIHRoaXMucGF1c2VSaWdodE1hcmtlci5hdHRyKCdoZWlnaHQnLCBoZWlnaHQpO1xuICB9O1xuXG4gIEJ1dHRvbi5wcm90b3R5cGUucmVuZGVyTWFya2VyID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5pc1BsYXkpIHtcbiAgICAgIHRoaXMuc3RhcnRNYXJrZXJHcm91cC5oaWRlKCk7XG4gICAgICB0aGlzLnBhdXNlTWFya2VyR3JvdXAuc2hvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0TWFya2VyR3JvdXAuc2hvdygpO1xuICAgICAgdGhpcy5wYXVzZU1hcmtlckdyb3VwLmhpZGUoKTtcbiAgICB9XG4gIH07XG4gIC8qKiDojrflj5bmkq3mlL7plK4gbWFya2VyIHBhdGggKi9cblxuXG4gIEJ1dHRvbi5wcm90b3R5cGUuZ2V0U3RhcnRNYXJrZXJQYXRoID0gZnVuY3Rpb24gKHgsIHksIHNjYWxlKSB7XG4gICAgdmFyIHNpZGVMZW5ndGggPSAwLjUgKiB0aGlzLmNvbmZpZy5yICogTWF0aC5zcXJ0KDMpICogc2NhbGU7XG4gICAgcmV0dXJuIFtbJ00nLCB4IC0gc2lkZUxlbmd0aCAvIE1hdGguc3FydCgzKSAvIDIsIHkgLSBzaWRlTGVuZ3RoIC8gMl0sIFsnTCcsIHggKyBzaWRlTGVuZ3RoIC8gTWF0aC5zcXJ0KDMpLCB5XSwgWydMJywgeCAtIHNpZGVMZW5ndGggLyBNYXRoLnNxcnQoMykgLyAyLCB5ICsgc2lkZUxlbmd0aCAvIDJdXTtcbiAgfTtcblxuICByZXR1cm4gQnV0dG9uO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBCdXR0b247Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/timeBar/timeButton.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/timeBar/trend.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/timeBar/trend.js ***! \**********************************************************/ /*! exports provided: LINE_STYLE, AREA_STYLE, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LINE_STYLE\", function() { return LINE_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AREA_STYLE\", function() { return AREA_STYLE; });\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path */ \"./node_modules/@antv/g6-plugin/es/timeBar/path.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\nvar LINE_STYLE = {\n stroke: '#C5C5C5',\n strokeOpacity: 0.85\n};\nvar AREA_STYLE = {\n fill: '#CACED4',\n opacity: 0.85\n};\n/**\n * 缩略趋势图\n */\n\nvar Trend =\n/** @class */\nfunction () {\n function Trend(cfg) {\n var _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n _c = cfg.width,\n width = _c === void 0 ? 200 : _c,\n _d = cfg.height,\n height = _d === void 0 ? 26 : _d,\n _e = cfg.smooth,\n smooth = _e === void 0 ? true : _e,\n _f = cfg.isArea,\n isArea = _f === void 0 ? false : _f,\n _g = cfg.data,\n data = _g === void 0 ? [] : _g,\n lineStyle = cfg.lineStyle,\n areaStyle = cfg.areaStyle,\n group = cfg.group,\n _h = cfg.interval,\n interval = _h === void 0 ? null : _h;\n this.group = group;\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.data = data;\n this.smooth = smooth;\n this.isArea = isArea;\n this.lineStyle = Object.assign({}, LINE_STYLE, lineStyle);\n this.areaStyle = Object.assign({}, AREA_STYLE, areaStyle);\n this.intervalConfig = interval;\n this.renderLine();\n }\n /**\n * 构造\n * @private\n */\n\n\n Trend.prototype.renderLine = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height,\n barWidth = _a.barWidth,\n data = _a.data,\n smooth = _a.smooth,\n isArea = _a.isArea,\n lineStyle = _a.lineStyle,\n areaStyle = _a.areaStyle;\n\n var trendGroup = this.group.addGroup({\n name: 'trend-group'\n });\n\n if (data) {\n var path = Object(_path__WEBPACK_IMPORTED_MODULE_0__[\"dataToPath\"])(data, width, height, smooth); // 线\n\n trendGroup.addShape('path', {\n attrs: __assign({\n path: path\n }, lineStyle),\n name: 'trend-line'\n }); // 在 line 的基础上,绘制面积图\n\n if (isArea) {\n var areaPath = Object(_path__WEBPACK_IMPORTED_MODULE_0__[\"linePathToAreaPath\"])(path, width, height, data);\n trendGroup.addShape('path', {\n attrs: __assign({\n path: areaPath\n }, areaStyle),\n name: 'trend-area'\n });\n }\n } // 绘制柱状图📊\n\n\n if (this.intervalConfig) {\n trendGroup.addShape('path', {\n attrs: __assign({\n path: Object(_path__WEBPACK_IMPORTED_MODULE_0__[\"dataToRectPath\"])(this.intervalConfig.data, width, height, this.intervalConfig.style.barWidth)\n }, this.intervalConfig.style),\n name: 'trend-interval'\n });\n } // 统一移动到对应的位置\n\n\n trendGroup.move(x, y);\n };\n\n Trend.prototype.destory = function () {\n this.group.destroy();\n };\n\n return Trend;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Trend);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvdHJlbmQuanM/NDMzMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQWUsU0FBSSxJQUFJLFNBQUk7QUFDM0I7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRXdFO0FBQ2pFO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckMscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxpQkFBaUIsd0RBQVUsOEJBQThCOztBQUV6RDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQSx1QkFBdUIsZ0VBQWtCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw0REFBYztBQUM5QixTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLG9FQUFLIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2LXBsdWdpbi9lcy90aW1lQmFyL3RyZW5kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXNzaWduID0gdGhpcyAmJiB0aGlzLl9fYXNzaWduIHx8IGZ1bmN0aW9uICgpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0KSB7XG4gICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBzID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuXG5pbXBvcnQgeyBkYXRhVG9QYXRoLCBsaW5lUGF0aFRvQXJlYVBhdGgsIGRhdGFUb1JlY3RQYXRoIH0gZnJvbSAnLi9wYXRoJztcbmV4cG9ydCB2YXIgTElORV9TVFlMRSA9IHtcbiAgc3Ryb2tlOiAnI0M1QzVDNScsXG4gIHN0cm9rZU9wYWNpdHk6IDAuODVcbn07XG5leHBvcnQgdmFyIEFSRUFfU1RZTEUgPSB7XG4gIGZpbGw6ICcjQ0FDRUQ0JyxcbiAgb3BhY2l0eTogMC44NVxufTtcbi8qKlxuICog57yp55Wl6LaL5Yq/5Zu+XG4gKi9cblxudmFyIFRyZW5kID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVHJlbmQoY2ZnKSB7XG4gICAgdmFyIF9hID0gY2ZnLngsXG4gICAgICAgIHggPSBfYSA9PT0gdm9pZCAwID8gMCA6IF9hLFxuICAgICAgICBfYiA9IGNmZy55LFxuICAgICAgICB5ID0gX2IgPT09IHZvaWQgMCA/IDAgOiBfYixcbiAgICAgICAgX2MgPSBjZmcud2lkdGgsXG4gICAgICAgIHdpZHRoID0gX2MgPT09IHZvaWQgMCA/IDIwMCA6IF9jLFxuICAgICAgICBfZCA9IGNmZy5oZWlnaHQsXG4gICAgICAgIGhlaWdodCA9IF9kID09PSB2b2lkIDAgPyAyNiA6IF9kLFxuICAgICAgICBfZSA9IGNmZy5zbW9vdGgsXG4gICAgICAgIHNtb290aCA9IF9lID09PSB2b2lkIDAgPyB0cnVlIDogX2UsXG4gICAgICAgIF9mID0gY2ZnLmlzQXJlYSxcbiAgICAgICAgaXNBcmVhID0gX2YgPT09IHZvaWQgMCA/IGZhbHNlIDogX2YsXG4gICAgICAgIF9nID0gY2ZnLmRhdGEsXG4gICAgICAgIGRhdGEgPSBfZyA9PT0gdm9pZCAwID8gW10gOiBfZyxcbiAgICAgICAgbGluZVN0eWxlID0gY2ZnLmxpbmVTdHlsZSxcbiAgICAgICAgYXJlYVN0eWxlID0gY2ZnLmFyZWFTdHlsZSxcbiAgICAgICAgZ3JvdXAgPSBjZmcuZ3JvdXAsXG4gICAgICAgIF9oID0gY2ZnLmludGVydmFsLFxuICAgICAgICBpbnRlcnZhbCA9IF9oID09PSB2b2lkIDAgPyBudWxsIDogX2g7XG4gICAgdGhpcy5ncm91cCA9IGdyb3VwO1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLnNtb290aCA9IHNtb290aDtcbiAgICB0aGlzLmlzQXJlYSA9IGlzQXJlYTtcbiAgICB0aGlzLmxpbmVTdHlsZSA9IE9iamVjdC5hc3NpZ24oe30sIExJTkVfU1RZTEUsIGxpbmVTdHlsZSk7XG4gICAgdGhpcy5hcmVhU3R5bGUgPSBPYmplY3QuYXNzaWduKHt9LCBBUkVBX1NUWUxFLCBhcmVhU3R5bGUpO1xuICAgIHRoaXMuaW50ZXJ2YWxDb25maWcgPSBpbnRlcnZhbDtcbiAgICB0aGlzLnJlbmRlckxpbmUoKTtcbiAgfVxuICAvKipcbiAgICog5p6E6YCgXG4gICAqIEBwcml2YXRlXG4gICAqL1xuXG5cbiAgVHJlbmQucHJvdG90eXBlLnJlbmRlckxpbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgeCA9IF9hLngsXG4gICAgICAgIHkgPSBfYS55LFxuICAgICAgICB3aWR0aCA9IF9hLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfYS5oZWlnaHQsXG4gICAgICAgIGJhcldpZHRoID0gX2EuYmFyV2lkdGgsXG4gICAgICAgIGRhdGEgPSBfYS5kYXRhLFxuICAgICAgICBzbW9vdGggPSBfYS5zbW9vdGgsXG4gICAgICAgIGlzQXJlYSA9IF9hLmlzQXJlYSxcbiAgICAgICAgbGluZVN0eWxlID0gX2EubGluZVN0eWxlLFxuICAgICAgICBhcmVhU3R5bGUgPSBfYS5hcmVhU3R5bGU7XG5cbiAgICB2YXIgdHJlbmRHcm91cCA9IHRoaXMuZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgbmFtZTogJ3RyZW5kLWdyb3VwJ1xuICAgIH0pO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHZhciBwYXRoID0gZGF0YVRvUGF0aChkYXRhLCB3aWR0aCwgaGVpZ2h0LCBzbW9vdGgpOyAvLyDnur9cblxuICAgICAgdHJlbmRHcm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICBwYXRoOiBwYXRoXG4gICAgICAgIH0sIGxpbmVTdHlsZSksXG4gICAgICAgIG5hbWU6ICd0cmVuZC1saW5lJ1xuICAgICAgfSk7IC8vIOWcqCBsaW5lIOeahOWfuuehgOS4iu+8jOe7mOWItumdouenr+WbvlxuXG4gICAgICBpZiAoaXNBcmVhKSB7XG4gICAgICAgIHZhciBhcmVhUGF0aCA9IGxpbmVQYXRoVG9BcmVhUGF0aChwYXRoLCB3aWR0aCwgaGVpZ2h0LCBkYXRhKTtcbiAgICAgICAgdHJlbmRHcm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgcGF0aDogYXJlYVBhdGhcbiAgICAgICAgICB9LCBhcmVhU3R5bGUpLFxuICAgICAgICAgIG5hbWU6ICd0cmVuZC1hcmVhJ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IC8vIOe7mOWItuafseeKtuWbvvCfk4pcblxuXG4gICAgaWYgKHRoaXMuaW50ZXJ2YWxDb25maWcpIHtcbiAgICAgIHRyZW5kR3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgcGF0aDogZGF0YVRvUmVjdFBhdGgodGhpcy5pbnRlcnZhbENvbmZpZy5kYXRhLCB3aWR0aCwgaGVpZ2h0LCB0aGlzLmludGVydmFsQ29uZmlnLnN0eWxlLmJhcldpZHRoKVxuICAgICAgICB9LCB0aGlzLmludGVydmFsQ29uZmlnLnN0eWxlKSxcbiAgICAgICAgbmFtZTogJ3RyZW5kLWludGVydmFsJ1xuICAgICAgfSk7XG4gICAgfSAvLyDnu5/kuIDnp7vliqjliLDlr7nlupTnmoTkvY3nva5cblxuXG4gICAgdHJlbmRHcm91cC5tb3ZlKHgsIHkpO1xuICB9O1xuXG4gIFRyZW5kLnByb3RvdHlwZS5kZXN0b3J5ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JvdXAuZGVzdHJveSgpO1xuICB9O1xuXG4gIHJldHVybiBUcmVuZDtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgVHJlbmQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/timeBar/trend.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/timeBar/trendTimeBar.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/timeBar/trendTimeBar.js ***! \*****************************************************************/ /*! exports provided: BACKGROUND_STYLE, FOREGROUND_STYLE, DEFAULT_HANDLER_WIDTH, HANDLER_STYLE, TEXT_STYLE, TICK_LABEL_STYLE, TICK_LINE_STYLE, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BACKGROUND_STYLE\", function() { return BACKGROUND_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FOREGROUND_STYLE\", function() { return FOREGROUND_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_HANDLER_WIDTH\", function() { return DEFAULT_HANDLER_WIDTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HANDLER_STYLE\", function() { return HANDLER_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT_STYLE\", function() { return TEXT_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TICK_LABEL_STYLE\", function() { return TICK_LABEL_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TICK_LINE_STYLE\", function() { return TICK_LINE_STYLE; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _trend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./trend */ \"./node_modules/@antv/g6-plugin/es/timeBar/trend.js\");\n/* harmony import */ var _handler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./handler */ \"./node_modules/@antv/g6-plugin/es/timeBar/handler.js\");\n/* harmony import */ var _controllerBtn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./controllerBtn */ \"./node_modules/@antv/g6-plugin/es/timeBar/controllerBtn.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./constant */ \"./node_modules/@antv/g6-plugin/es/timeBar/constant.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__[\"ext\"].transform;\n/**\n * 一些默认的样式配置\n */\n\nvar BACKGROUND_STYLE = {\n fill: '#416180',\n opacity: 0.05\n};\nvar SIMPLE_BACKGROUND_STYLE = {\n fill: '#416180',\n opacity: 0.15,\n radius: 5\n};\nvar FOREGROUND_STYLE = {\n fill: '#5B8FF9',\n opacity: 0.3,\n cursor: 'grab'\n};\nvar DEFAULT_HANDLER_WIDTH = 2;\nvar HANDLER_STYLE = {\n width: DEFAULT_HANDLER_WIDTH,\n height: 24\n};\nvar TEXT_STYLE = {\n textBaseline: 'middle',\n fill: '#000',\n opacity: 0.45\n};\nvar TICK_LABEL_STYLE = {\n textAlign: 'center',\n textBaseline: 'top',\n fill: '#607889',\n opacity: 0.35\n};\nvar TICK_LINE_STYLE = {\n lineWidth: 1,\n stroke: '#ccc'\n};\n\nvar TrendTimeBar =\n/** @class */\nfunction () {\n function TrendTimeBar(cfg) {\n var _this = this;\n\n this.prevX = 0;\n\n this.onMouseDown = function (handler) {\n return function (e) {\n // 1. 记录点击的滑块\n _this.currentHandler = handler;\n var event = e.originalEvent; // 2. 存储当前点击位置\n\n event.stopPropagation();\n event.preventDefault(); // 兼容移动端获取数据\n\n _this.prevX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(event, 'touches.0.pageX', event.pageX); // 3. 开始滑动的时候,绑定 move 和 up 事件\n\n var containerDOM = _this.canvas.get('container');\n\n containerDOM.addEventListener('mousemove', _this.onMouseMove);\n containerDOM.addEventListener('mouseup', _this.onMouseUp);\n containerDOM.addEventListener('mouseleave', _this.onMouseUp); // 移动端事件\n\n containerDOM.addEventListener('touchmove', _this.onMouseMove);\n containerDOM.addEventListener('touchend', _this.onMouseUp);\n containerDOM.addEventListener('touchcancel', _this.onMouseUp);\n };\n };\n\n this.onMouseMove = function (e) {\n // 滑动过程中,计算偏移,更新滑块,然后 emit 数据出去\n e.stopPropagation();\n e.preventDefault();\n var x = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(e, 'touches.0.pageX', e.pageX); // 横向的 slider 只处理 x\n\n var offsetX = x - _this.prevX;\n\n var offsetXRange = _this.adjustOffsetRange(offsetX / _this.width); // 更新 start end range 范围\n\n\n _this.updateStartEnd(offsetXRange); // 更新 ui\n\n\n _this.updateUI();\n\n _this.prevX = x;\n };\n\n this.onMouseUp = function () {\n // 结束之后,取消绑定的事件\n if (_this.currentHandler) {\n _this.currentHandler = undefined;\n }\n\n var containerDOM = _this.canvas.get('container');\n\n if (containerDOM) {\n containerDOM.removeEventListener('mousemove', _this.onMouseMove);\n containerDOM.removeEventListener('mouseup', _this.onMouseUp); // 防止滑动到 canvas 外部之后,状态丢失\n\n containerDOM.removeEventListener('mouseleave', _this.onMouseUp); // 移动端事件\n\n containerDOM.removeEventListener('touchmove', _this.onMouseMove);\n containerDOM.removeEventListener('touchend', _this.onMouseUp);\n containerDOM.removeEventListener('touchcancel', _this.onMouseUp);\n }\n };\n\n var _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n _c = cfg.width,\n width = _c === void 0 ? 100 : _c,\n height = cfg.height,\n _d = cfg.padding,\n padding = _d === void 0 ? 10 : _d,\n trendCfg = cfg.trendCfg,\n _e = cfg.controllerCfg,\n controllerCfg = _e === void 0 ? {\n speed: 1\n } : _e,\n _f = cfg.backgroundStyle,\n backgroundStyle = _f === void 0 ? {} : _f,\n _g = cfg.foregroundStyle,\n foregroundStyle = _g === void 0 ? {} : _g,\n _h = cfg.handlerStyle,\n handlerStyle = _h === void 0 ? {} : _h,\n _j = cfg.textStyle,\n textStyle = _j === void 0 ? {} : _j,\n // 缩略轴的初始位置\n _k = cfg.start,\n // 缩略轴的初始位置\n start = _k === void 0 ? 0 : _k,\n _l = cfg.end,\n end = _l === void 0 ? 1 : _l,\n _m = cfg.minText,\n minText = _m === void 0 ? '' : _m,\n _o = cfg.maxText,\n maxText = _o === void 0 ? '' : _o,\n group = cfg.group,\n graph = cfg.graph,\n canvas = cfg.canvas,\n _p = cfg.tick,\n tick = _p === void 0 ? {\n tickLabelStyle: {},\n tickLineStyle: {},\n tickLabelFormatter: function tickLabelFormatter(d) {\n return d;\n },\n ticks: []\n } : _p,\n type = cfg.type;\n this.graph = graph;\n this.canvas = canvas;\n this.group = group;\n this.timeBarType = type; // position size\n\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.padding = padding;\n this.ticks = tick.ticks;\n this.trendCfg = trendCfg;\n this.controllerCfg = controllerCfg;\n this.currentSpeed = controllerCfg.speed || 1;\n this.tickLabelFormatter = tick.tickLabelFormatter; // style\n\n if (type === 'trend') {\n this.backgroundStyle = __assign(__assign({}, BACKGROUND_STYLE), backgroundStyle);\n } else if (type === 'simple') {\n this.backgroundStyle = __assign(__assign({}, SIMPLE_BACKGROUND_STYLE), backgroundStyle);\n }\n\n this.foregroundStyle = __assign(__assign({}, FOREGROUND_STYLE), foregroundStyle);\n this.handlerStyle = __assign(__assign({}, HANDLER_STYLE), handlerStyle);\n this.textStyle = __assign(__assign({}, TEXT_STYLE), textStyle);\n this.tickLabelStyle = __assign(__assign({}, TICK_LABEL_STYLE), tick.tickLabelStyle);\n this.tickLineStyle = __assign(__assign({}, TICK_LINE_STYLE), tick.tickLineStyle);\n this.currentMode = 'range'; // 初始信息\n\n this.start = start;\n this.end = end;\n this.minText = minText;\n this.maxText = maxText; // 初始化 fontFamily,如果有浏览器,取 body 上的字体,防止文字更新时局部渲染造成的重影\n\n this.fontFamily = typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif';\n this.renderSlider();\n }\n /**\n * 更新配置\n * @param cfg\n */\n\n\n TrendTimeBar.prototype.update = function (cfg) {\n var x = cfg.x,\n y = cfg.y,\n width = cfg.width,\n height = cfg.height,\n minText = cfg.minText,\n maxText = cfg.maxText,\n start = cfg.start,\n end = cfg.end; // start、end 只能是 0~1 范围\n\n this.start = Math.min(1, Math.max(start, 0));\n this.end = Math.min(1, Math.max(end, 0)); // 如果传了则更新,没有传则不更新\n // @ts-ignore\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])(this, {\n x: x,\n y: y,\n width: width,\n height: height,\n minText: minText,\n maxText: maxText\n }); // 更新 ui,不自动绘制\n\n this.updateUI();\n };\n\n TrendTimeBar.prototype.setText = function (minText, maxText) {\n this.minTextShape.attr('text', minText);\n this.maxTextShape.attr('text', maxText);\n };\n /**\n * 初始化组件结构\n * @private\n */\n\n\n TrendTimeBar.prototype.renderSlider = function () {\n var _this = this;\n\n var _a = this,\n width = _a.width,\n height = _a.height,\n timeBarType = _a.timeBarType; // 趋势图数据\n\n\n if (timeBarType === 'trend' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"size\"])(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.trendCfg, 'data'))) {\n var trendComponent = new _trend__WEBPACK_IMPORTED_MODULE_2__[\"default\"](__assign(__assign({\n x: this.x,\n y: this.y,\n width: width,\n height: height\n }, this.trendCfg), {\n group: this.group\n }));\n this.trendComponent = trendComponent;\n }\n\n var sliderGroup = this.group.addGroup({\n name: 'slider-group'\n }); // 1. 背景\n\n sliderGroup.addShape('rect', {\n attrs: __assign({\n x: 0,\n y: 0,\n width: width,\n height: height\n }, this.backgroundStyle),\n name: 'background'\n });\n var textGroup = this.group.addGroup(); // 2. 左右文字\n\n if (timeBarType === 'trend') {\n this.minTextShape = textGroup.addShape('text', {\n attrs: __assign({\n x: 0,\n y: height / 2 + this.y,\n textAlign: 'right',\n text: this.minText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif',\n stroke: '#fff',\n lineWidth: 5\n }, this.textStyle),\n capture: false,\n name: 'min-text-shape'\n });\n this.maxTextShape = textGroup.addShape('text', {\n attrs: __assign({\n y: height / 2 + this.y,\n textAlign: 'left',\n text: this.maxText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif',\n stroke: '#fff',\n lineWidth: 5\n }, this.textStyle),\n capture: false,\n name: 'max-text-shape'\n });\n } else {\n this.minTextShape = textGroup.addShape('text', {\n attrs: __assign({\n x: 0,\n y: this.y - 10,\n textAlign: 'center',\n text: this.minText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif',\n stroke: '#fff',\n lineWidth: 5\n }, this.textStyle),\n capture: false,\n name: 'min-text-shape'\n });\n this.maxTextShape = textGroup.addShape('text', {\n attrs: __assign({\n y: this.y - 10,\n textAlign: 'center',\n text: this.maxText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif',\n stroke: '#fff',\n lineWidth: 5\n }, this.textStyle),\n capture: false,\n name: 'max-text-shape'\n });\n } // 3. 前景 选中背景框\n\n\n this.foregroundShape = this.group.addGroup().addShape('rect', {\n attrs: __assign({\n x: 0,\n y: this.y,\n height: height\n }, this.foregroundStyle),\n name: 'foreground-shape'\n });\n this.foregroundShape.on('mousedown', function (e) {\n e.target.attr('cursor', 'grabbing');\n });\n this.foregroundShape.on('mouseup', function (e) {\n e.target.attr('cursor', _this.foregroundStyle.cursor || 'grab');\n }); // 滑块相关的大小信息\n\n var handlerWidth = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.handlerStyle, 'width', 2);\n var handlerHeight = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.handlerStyle, 'height', 24);\n var minHandleGroup = this.group.addGroup({\n name: 'minHandlerShape'\n }); // 4. 左右滑块\n\n this.minHandlerShape = new _handler__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\n name: 'minHandlerShape',\n group: minHandleGroup,\n type: timeBarType,\n x: this.x,\n y: this.y,\n width: handlerWidth,\n height: handlerHeight,\n style: this.handlerStyle\n });\n var maxHandleGroup = this.group.addGroup({\n name: 'maxHandlerShape'\n });\n this.maxHandlerShape = new _handler__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\n name: 'maxHandlerShape',\n group: maxHandleGroup,\n type: timeBarType,\n x: this.x,\n y: this.y,\n width: handlerWidth,\n height: handlerHeight,\n style: this.handlerStyle\n }); // 缩略图下面的时间刻度\n\n var tickData = this.ticks;\n var interval = width / (tickData.length - 1);\n this.tickPosList = [];\n\n if (this.textList && this.textList.length) {\n this.textList.forEach(function (text) {\n text.destroy();\n });\n }\n\n var lastX = -Infinity;\n var rotate = this.tickLabelStyle.rotate;\n delete this.tickLabelStyle.rotate;\n this.textList = tickData.map(function (data, index) {\n _this.tickPosList.push(_this.x + index * interval);\n\n var label;\n\n if (_this.tickLabelFormatter) {\n label = _this.tickLabelFormatter(data);\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(label) && label) {\n // return true\n label = data.date;\n }\n } else {\n label = data.date;\n } // 文本刻度\n\n\n var textX = _this.x + index * interval,\n textY = _this.y + height + 5;\n\n var text = _this.group.addShape('text', {\n attrs: __assign({\n x: textX,\n y: textY,\n text: label,\n fontFamily: _this.fontFamily || 'Arial, sans-serif'\n }, _this.tickLabelStyle),\n name: 'tick-label'\n });\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(rotate) && index !== tickData.length - 1) {\n var matrix = transform([1, 0, 0, 0, 1, 0, 0, 0, 1], [['t', -textX, -textY], ['r', rotate], ['t', textX - 5, textY + 2]]);\n text.attr({\n textAlign: 'left',\n matrix: matrix\n });\n }\n\n if (index === 0) {\n text.attr({\n textAlign: 'left'\n });\n } else if (index !== tickData.length - 1) {\n text.attr({\n textAlign: 'right'\n });\n } // 文本刻度上面的竖线\n\n\n var line = _this.group.addShape('line', {\n attrs: __assign({\n x1: _this.x + index * interval,\n y1: _this.y + height + 2,\n x2: _this.x + index * interval,\n y2: _this.y + height + 6\n }, _this.tickLineStyle),\n name: 'tick-line'\n });\n\n line.toBack();\n var bbox = text.getBBox(); // 抽样,标签与标签间距不小于 10\n\n if (bbox.minX > lastX) {\n text.show();\n line.show();\n lastX = bbox.minX + bbox.width + 10;\n } else {\n text.hide();\n line.hide();\n }\n\n return text;\n }); // 渲染播放、快进和后退的控制按钮\n\n this.controllerBtnGroup = new _controllerBtn__WEBPACK_IMPORTED_MODULE_4__[\"default\"](__assign({\n group: this.group,\n x: this.x,\n y: this.y + height + 25,\n width: width,\n height: 35\n }, this.controllerCfg)); // 初始化 minText 和 maxText,方便计算它们的 bbox\n\n this.updateStartEnd(0); // 根据 start end 更新 ui 的位置信息\n\n this.updateUI(); // 移动到对应的位置\n\n sliderGroup.move(this.x, this.y); // 绑定事件鼠标事件\n\n this.bindEvents();\n };\n /**\n * 绑定事件:\n * - 点击\n * - 滑动\n * - 拖拽\n * - 滚动\n * @private\n */\n\n\n TrendTimeBar.prototype.bindEvents = function () {\n var _this = this; // 1. 左滑块的滑动\n\n\n var minHandleShapeGroup = this.group.find(function (group) {\n return group.get('name') === 'minHandlerShape';\n });\n\n if (minHandleShapeGroup) {\n minHandleShapeGroup.on('minHandlerShape-handler:mousedown', this.onMouseDown(this.minHandlerShape));\n minHandleShapeGroup.on('minHandlerShape-handler:touchstart', this.onMouseDown(this.minHandlerShape));\n }\n\n var maxHandleShapeGroup = this.group.find(function (group) {\n return group.get('name') === 'maxHandlerShape';\n }); // 2. 右滑块的滑动\n\n if (maxHandleShapeGroup) {\n maxHandleShapeGroup.on('maxHandlerShape-handler:mousedown', this.onMouseDown(this.maxHandlerShape));\n maxHandleShapeGroup.on('maxHandlerShape-handler:touchstart', this.onMouseDown(this.maxHandlerShape));\n } // 3. 前景选中区域\n\n\n this.foregroundShape.on('mousedown', this.onMouseDown(this.foregroundShape));\n this.foregroundShape.on('touchstart', this.onMouseDown(this.foregroundShape)); // 播放区按钮控制\n\n /** 播放/暂停事件 */\n\n this.group.on(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_5__[\"PLAY_PAUSE_BTN\"], \":click\"), function () {\n _this.isPlay = !_this.isPlay;\n _this.currentHandler = _this.maxHandlerShape;\n\n _this.changePlayStatus();\n }); // 处理前进一步的事件\n\n this.group.on(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_5__[\"NEXT_STEP_BTN\"], \":click\"), function () {\n _this.currentHandler = _this.maxHandlerShape;\n\n _this.updateStartEnd(0.01);\n\n _this.updateUI();\n }); // 处理后退一步的事件\n\n this.group.on(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_5__[\"PRE_STEP_BTN\"], \":click\"), function () {\n _this.currentHandler = _this.maxHandlerShape;\n\n _this.updateStartEnd(-0.01);\n\n _this.updateUI();\n });\n this.group.on(_constant__WEBPACK_IMPORTED_MODULE_5__[\"TIMEBAR_CONFIG_CHANGE\"], function (_a) {\n var type = _a.type,\n speed = _a.speed;\n _this.currentSpeed = speed;\n _this.currentMode = type;\n\n if (type === 'single') {\n _this.minHandlerShape.hide();\n\n _this.foregroundShape.hide();\n\n _this.minTextShape.hide();\n } else if (type === 'range') {\n _this.minHandlerShape.show();\n\n _this.foregroundShape.show();\n\n _this.minTextShape.show();\n }\n });\n };\n /** 输入当前圆点位置,输出离哪个 tick 的位置最近 */\n\n\n TrendTimeBar.prototype.adjustTickIndex = function (timeSelectX) {\n for (var i = 0; i < this.tickPosList.length - 1; i++) {\n if (this.tickPosList[i] <= timeSelectX && timeSelectX <= this.tickPosList[i + 1]) {\n return Math.abs(this.tickPosList[i] - timeSelectX) < Math.abs(timeSelectX - this.tickPosList[i + 1]) ? i : i + 1;\n }\n }\n\n return 0;\n };\n /**\n * 调整 offsetRange,因为一些范围的限制\n * @param offsetRange\n */\n\n\n TrendTimeBar.prototype.adjustOffsetRange = function (offsetRange) {\n // 针对不同的滑动组件,处理的方式不同\n switch (this.currentHandler) {\n case this.minHandlerShape:\n {\n var min = 0 - this.start;\n var max = 1 - this.start;\n return Math.min(max, Math.max(min, offsetRange));\n }\n\n case this.maxHandlerShape:\n {\n var min = 0 - this.end;\n var max = 1 - this.end;\n return Math.min(max, Math.max(min, offsetRange));\n }\n\n case this.foregroundShape:\n {\n var min = 0 - this.start;\n var max = 1 - this.end;\n return Math.min(max, Math.max(min, offsetRange));\n }\n\n default:\n return 0;\n }\n };\n /**\n * 更新起始、结束的控制块位置、文本、范围值(原始值)\n * @param offsetRange\n */\n\n\n TrendTimeBar.prototype.updateStartEnd = function (offsetRange) {\n var minData = this.ticks[this.adjustTickIndex(this.start * this.width)];\n var maxData = this.ticks[this.adjustTickIndex(this.end * this.width)];\n\n if (!this.currentHandler) {\n this.minText = this.tickLabelFormatter ? this.tickLabelFormatter(minData) : minData === null || minData === void 0 ? void 0 : minData.date;\n this.maxText = this.tickLabelFormatter ? this.tickLabelFormatter(maxData) : maxData === null || maxData === void 0 ? void 0 : maxData.date;\n return;\n } // 操作不同的组件,反馈不一样\n\n\n switch (this.currentHandler) {\n case this.minHandlerShape:\n // 拖动最小滑块时使用当前最大值设置最大值的文本,以便恢复到默认值\n this.maxText = this.maxTextShape.attr('text');\n this.start += offsetRange;\n this.minText = this.tickLabelFormatter ? this.tickLabelFormatter(minData) : minData.date;\n break;\n\n case this.maxHandlerShape:\n // 拖动最大滑块时使用当前最小值设置最小值的文本,以便恢复到默认值\n this.minText = this.minTextShape.attr('text');\n this.end += offsetRange;\n this.maxText = this.tickLabelFormatter ? this.tickLabelFormatter(maxData) : maxData.date;\n break;\n\n case this.foregroundShape:\n this.start += offsetRange;\n this.end += offsetRange;\n this.minText = this.tickLabelFormatter ? this.tickLabelFormatter(minData) : minData.date;\n this.maxText = this.tickLabelFormatter ? this.tickLabelFormatter(maxData) : maxData.date;\n break;\n\n default:\n break;\n }\n };\n /**\n * 根据移动的比例来更新 ui,更新范围(0-1 范围的比例值)\n * @private\n */\n\n\n TrendTimeBar.prototype.updateUI = function () {\n var _this = this;\n\n if (this.start < 0) {\n this.start = 0;\n }\n\n if (this.end > 1) {\n this.end = 1;\n }\n\n var min = this.x + this.start * this.width;\n var max = this.x + this.end * this.width; // 1. foreground\n\n this.foregroundShape.attr('x', min);\n this.foregroundShape.attr('width', max - min); // 滑块相关的大小信息\n\n var handlerWidth = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.handlerStyle, 'width', DEFAULT_HANDLER_WIDTH); // 设置文本\n\n this.setText(this.minText, this.maxText);\n\n var _a = this.dodgeText([min, max]),\n minAttrs = _a[0],\n maxAttrs = _a[1]; // 2. 左侧滑块和文字位置\n\n\n this.minHandlerShape.setX(min - handlerWidth / 2);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(minAttrs, function (v, k) {\n return _this.minTextShape.attr(k, v);\n }); // 3. 右侧滑块和文字位置\n\n this.maxHandlerShape.setX(max - handlerWidth / 2);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(maxAttrs, function (v, k) {\n return _this.maxTextShape.attr(k, v);\n });\n\n if (this.currentMode === 'range') {\n // 因为存储的 start、end 可能不一定是按大小存储的,所以排序一下,对外是 end >= start\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_5__[\"VALUE_CHANGE\"], {\n value: [this.start, this.end].sort()\n });\n } else if (this.currentMode === 'single') {\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_5__[\"VALUE_CHANGE\"], {\n value: [this.end, this.end]\n });\n }\n };\n /**\n * 调整 text 的位置,自动躲避\n * 根据位置,调整返回新的位置\n * @param range\n */\n\n\n TrendTimeBar.prototype.dodgeText = function (range) {\n var _a, _b;\n\n var TEXTPADDING = 2;\n var handlerWidth = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n var minTextShape = this.minTextShape;\n var maxTextShape = this.maxTextShape;\n var min = range[0],\n max = range[1];\n var sorted = false; // 如果交换了位置,则对应的 min max 也交换\n\n if (min > max) {\n _a = [max, min], min = _a[0], max = _a[1];\n _b = [maxTextShape, minTextShape], minTextShape = _b[0], maxTextShape = _b[1];\n sorted = true;\n } // 避让规则,优先显示在两侧,只有显示不下的时候,才显示在中间\n\n\n var minBBox = minTextShape.getBBox();\n var maxBBox = maxTextShape.getBBox();\n var minAttrs = null;\n var maxAttrs = null;\n\n if (this.timeBarType === 'trend') {\n minAttrs = min - minBBox.width < this.x + TEXTPADDING ? {\n x: min + handlerWidth / 2 + TEXTPADDING,\n textAlign: 'left'\n } : {\n x: min - handlerWidth / 2 - TEXTPADDING,\n textAlign: 'right'\n };\n maxAttrs = max + maxBBox.width > this.x + this.width ? {\n x: max - handlerWidth / 2 - TEXTPADDING,\n textAlign: 'right'\n } : {\n x: max + handlerWidth / 2 + TEXTPADDING,\n textAlign: 'left'\n };\n } else if (this.timeBarType === 'simple') {\n minAttrs = minTextShape.attr('x') > minBBox.width // 左边滑块文本位置小于其宽度代表文字超过左边届\n ? {\n x: min,\n textAlign: 'center'\n } : {\n x: min,\n textAlign: 'left'\n };\n maxAttrs = maxTextShape.attr('x') > this.width - maxBBox.width // 有边滑块文本位置大于宽度代表文字超过右边界\n ? {\n x: max,\n textAlign: 'right'\n } : {\n x: max,\n textAlign: 'center'\n };\n }\n\n return !sorted ? [minAttrs, maxAttrs] : [maxAttrs, minAttrs];\n };\n\n TrendTimeBar.prototype.startPlay = function () {\n var _this = this;\n\n return typeof window !== 'undefined' ? window.requestAnimationFrame(function () {\n var _a = _this,\n ticks = _a.ticks,\n width = _a.width;\n var speed = _this.currentSpeed;\n var tickInterval = width / ticks.length;\n var offsetX = tickInterval / ((10 - speed) * 1000 / 60);\n\n var offsetXRange = _this.adjustOffsetRange(offsetX / _this.width);\n\n _this.updateStartEnd(offsetXRange);\n\n _this.updateUI();\n\n if (_this.isPlay) {\n _this.playHandler = _this.startPlay();\n }\n }) : undefined;\n };\n\n TrendTimeBar.prototype.changePlayStatus = function (isSync) {\n if (isSync === void 0) {\n isSync = true;\n }\n\n this.controllerBtnGroup.playButton.update({\n isPlay: this.isPlay\n });\n\n if (this.isPlay) {\n // 开始播放\n this.playHandler = this.startPlay();\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_5__[\"TIMELINE_START\"], null);\n } else {\n // 结束播放\n if (this.playHandler) {\n if (typeof window !== 'undefined') window.cancelAnimationFrame(this.playHandler);\n\n if (isSync) {\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_5__[\"TIMELINE_END\"], null);\n }\n }\n }\n };\n\n TrendTimeBar.prototype.destory = function () {\n this.graph.off(_constant__WEBPACK_IMPORTED_MODULE_5__[\"VALUE_CHANGE\"]);\n var group = this.group;\n var minHandleShapeGroup = group.find(function (g) {\n return g.get('name') === 'minHandlerShape';\n });\n\n if (minHandleShapeGroup) {\n minHandleShapeGroup.off('minHandlerShape-handler:mousedown');\n minHandleShapeGroup.off('minHandlerShape-handler:touchstart');\n minHandleShapeGroup.destroy();\n }\n\n var maxHandleShapeGroup = group.find(function (g) {\n return g.get('name') === 'maxHandlerShape';\n }); // 2. 右滑块的滑动\n\n if (maxHandleShapeGroup) {\n maxHandleShapeGroup.off('maxHandlerShape-handler:mousedown');\n maxHandleShapeGroup.off('maxHandlerShape-handler:touchstart');\n maxHandleShapeGroup.destroy();\n } // 3. 前景选中区域\n\n\n this.foregroundShape.off('mousedown');\n this.foregroundShape.off('touchstart');\n this.foregroundShape.destroy();\n group.off(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_5__[\"PLAY_PAUSE_BTN\"], \":click\"));\n group.off(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_5__[\"NEXT_STEP_BTN\"], \":click\"));\n group.off(\"\".concat(_constant__WEBPACK_IMPORTED_MODULE_5__[\"PRE_STEP_BTN\"], \":click\"));\n group.off(_constant__WEBPACK_IMPORTED_MODULE_5__[\"TIMEBAR_CONFIG_CHANGE\"]);\n group.destroy();\n\n if (this.trendComponent) {\n this.trendComponent.destory();\n }\n };\n\n return TrendTimeBar;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TrendTimeBar);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvdHJlbmRUaW1lQmFyLmpzPzdiNDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQWUsU0FBSSxJQUFJLFNBQUk7QUFDM0I7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRStEO0FBQ3ZCO0FBQ1o7QUFDSTtBQUNNO0FBQ007QUFDZ0c7QUFDNUksZ0JBQWdCLHFEQUFHO0FBQ25CO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDQTtBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBLCtCQUErQjs7QUFFL0Isc0JBQXNCLHNEQUFHLHdDQUF3Qzs7QUFFakU7O0FBRUE7QUFDQTtBQUNBLHFFQUFxRTs7QUFFckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsc0RBQUcsZ0NBQWdDOztBQUVqRDs7QUFFQSx3RUFBd0U7OztBQUd4RSx5Q0FBeUM7OztBQUd6Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHFFQUFxRTs7QUFFckUsd0VBQXdFOztBQUV4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4Qix1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBLGlEQUFpRDtBQUNqRCxLQUFLO0FBQ0wsaURBQWlEO0FBQ2pEOztBQUVBLCtDQUErQztBQUMvQyw0Q0FBNEM7QUFDNUMseUNBQXlDO0FBQ3pDLDhDQUE4QztBQUM5Qyw2Q0FBNkM7QUFDN0MsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBLDZDQUE2QztBQUM3Qzs7QUFFQSxJQUFJLHlEQUFNO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7OztBQUdyQyxtQ0FBbUMsdURBQUksQ0FBQyxzREFBRztBQUMzQywrQkFBK0IsOENBQUs7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUCx1QkFBdUIsc0RBQUc7QUFDMUIsd0JBQXdCLHNEQUFHO0FBQzNCO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVAsK0JBQStCLGdEQUFPO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCwrQkFBK0IsZ0RBQU87QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxhQUFhLDJEQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87OztBQUdQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTzs7QUFFUCxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPOztBQUVQO0FBQ0EsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLLEVBQUU7O0FBRVAsa0NBQWtDLHNEQUFhO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLHVCQUF1Qjs7QUFFNUIsMkJBQTJCOztBQUUzQixvQkFBb0I7O0FBRXBCLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EscUJBQXFCOzs7QUFHckI7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBLGtGQUFrRjs7QUFFbEY7O0FBRUEsNEJBQTRCLHdEQUFjO0FBQzFDO0FBQ0E7O0FBRUE7QUFDQSxLQUFLLEVBQUU7O0FBRVAsNEJBQTRCLHVEQUFhO0FBQ3pDOztBQUVBOztBQUVBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLDRCQUE0QixzREFBWTtBQUN4Qzs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxrQkFBa0IsK0RBQXFCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOzs7QUFHQTtBQUNBLG1CQUFtQixpQ0FBaUM7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQSxrREFBa0Q7O0FBRWxELHVCQUF1QixzREFBRyxvREFBb0Q7O0FBRTlFOztBQUVBO0FBQ0E7QUFDQSx5QkFBeUI7OztBQUd6QjtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLHNCQUFzQixzREFBWTtBQUNsQztBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsc0JBQXNCLHNEQUFZO0FBQ2xDO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLHNEQUFHO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isd0RBQWM7QUFDcEMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBCQUEwQixzREFBWTtBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixzREFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3REFBYztBQUN0Qyx3QkFBd0IsdURBQWE7QUFDckMsd0JBQXdCLHNEQUFZO0FBQ3BDLGNBQWMsK0RBQXFCO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYywyRUFBWSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci90cmVuZFRpbWVCYXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hc3NpZ24gPSB0aGlzICYmIHRoaXMuX19hc3NpZ24gfHwgZnVuY3Rpb24gKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHQpIHtcbiAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIHMgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIHAgaW4gcykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5cbmltcG9ydCB7IGdldCwgc2l6ZSwgYXNzaWduLCBlYWNoLCBpc051bWJlciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IFRyZW5kIGZyb20gJy4vdHJlbmQnO1xuaW1wb3J0IEhhbmRsZXIgZnJvbSAnLi9oYW5kbGVyJztcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgQ29udHJvbGxlckJ0biBmcm9tICcuL2NvbnRyb2xsZXJCdG4nO1xuaW1wb3J0IHsgVkFMVUVfQ0hBTkdFLCBUSU1FTElORV9TVEFSVCwgVElNRUJBUl9DT05GSUdfQ0hBTkdFLCBQTEFZX1BBVVNFX0JUTiwgTkVYVF9TVEVQX0JUTiwgUFJFX1NURVBfQlROLCBUSU1FTElORV9FTkQgfSBmcm9tICcuL2NvbnN0YW50JztcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xuLyoqXG4gKiDkuIDkupvpu5jorqTnmoTmoLflvI/phY3nva5cbiAqL1xuXG5leHBvcnQgdmFyIEJBQ0tHUk9VTkRfU1RZTEUgPSB7XG4gIGZpbGw6ICcjNDE2MTgwJyxcbiAgb3BhY2l0eTogMC4wNVxufTtcbnZhciBTSU1QTEVfQkFDS0dST1VORF9TVFlMRSA9IHtcbiAgZmlsbDogJyM0MTYxODAnLFxuICBvcGFjaXR5OiAwLjE1LFxuICByYWRpdXM6IDVcbn07XG5leHBvcnQgdmFyIEZPUkVHUk9VTkRfU1RZTEUgPSB7XG4gIGZpbGw6ICcjNUI4RkY5JyxcbiAgb3BhY2l0eTogMC4zLFxuICBjdXJzb3I6ICdncmFiJ1xufTtcbmV4cG9ydCB2YXIgREVGQVVMVF9IQU5ETEVSX1dJRFRIID0gMjtcbmV4cG9ydCB2YXIgSEFORExFUl9TVFlMRSA9IHtcbiAgd2lkdGg6IERFRkFVTFRfSEFORExFUl9XSURUSCxcbiAgaGVpZ2h0OiAyNFxufTtcbmV4cG9ydCB2YXIgVEVYVF9TVFlMRSA9IHtcbiAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgZmlsbDogJyMwMDAnLFxuICBvcGFjaXR5OiAwLjQ1XG59O1xuZXhwb3J0IHZhciBUSUNLX0xBQkVMX1NUWUxFID0ge1xuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB0ZXh0QmFzZWxpbmU6ICd0b3AnLFxuICBmaWxsOiAnIzYwNzg4OScsXG4gIG9wYWNpdHk6IDAuMzVcbn07XG5leHBvcnQgdmFyIFRJQ0tfTElORV9TVFlMRSA9IHtcbiAgbGluZVdpZHRoOiAxLFxuICBzdHJva2U6ICcjY2NjJ1xufTtcblxudmFyIFRyZW5kVGltZUJhciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRyZW5kVGltZUJhcihjZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5wcmV2WCA9IDA7XG5cbiAgICB0aGlzLm9uTW91c2VEb3duID0gZnVuY3Rpb24gKGhhbmRsZXIpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAvLyAxLiDorrDlvZXngrnlh7vnmoTmu5HlnZdcbiAgICAgICAgX3RoaXMuY3VycmVudEhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgICB2YXIgZXZlbnQgPSBlLm9yaWdpbmFsRXZlbnQ7IC8vIDIuIOWtmOWCqOW9k+WJjeeCueWHu+S9jee9rlxuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyDlhbzlrrnnp7vliqjnq6/ojrflj5bmlbDmja5cblxuICAgICAgICBfdGhpcy5wcmV2WCA9IGdldChldmVudCwgJ3RvdWNoZXMuMC5wYWdlWCcsIGV2ZW50LnBhZ2VYKTsgLy8gMy4g5byA5aeL5ruR5Yqo55qE5pe25YCZ77yM57uR5a6aIG1vdmUg5ZKMIHVwIOS6i+S7tlxuXG4gICAgICAgIHZhciBjb250YWluZXJET00gPSBfdGhpcy5jYW52YXMuZ2V0KCdjb250YWluZXInKTtcblxuICAgICAgICBjb250YWluZXJET00uYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgX3RoaXMub25Nb3VzZU1vdmUpO1xuICAgICAgICBjb250YWluZXJET00uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIF90aGlzLm9uTW91c2VVcCk7XG4gICAgICAgIGNvbnRhaW5lckRPTS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgX3RoaXMub25Nb3VzZVVwKTsgLy8g56e75Yqo56uv5LqL5Lu2XG5cbiAgICAgICAgY29udGFpbmVyRE9NLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIF90aGlzLm9uTW91c2VNb3ZlKTtcbiAgICAgICAgY29udGFpbmVyRE9NLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgX3RoaXMub25Nb3VzZVVwKTtcbiAgICAgICAgY29udGFpbmVyRE9NLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoY2FuY2VsJywgX3RoaXMub25Nb3VzZVVwKTtcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHRoaXMub25Nb3VzZU1vdmUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgLy8g5ruR5Yqo6L+H56iL5Lit77yM6K6h566X5YGP56e777yM5pu05paw5ruR5Z2X77yM54S25ZCOIGVtaXQg5pWw5o2u5Ye65Y67XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdmFyIHggPSBnZXQoZSwgJ3RvdWNoZXMuMC5wYWdlWCcsIGUucGFnZVgpOyAvLyDmqKrlkJHnmoQgc2xpZGVyIOWPquWkhOeQhiB4XG5cbiAgICAgIHZhciBvZmZzZXRYID0geCAtIF90aGlzLnByZXZYO1xuXG4gICAgICB2YXIgb2Zmc2V0WFJhbmdlID0gX3RoaXMuYWRqdXN0T2Zmc2V0UmFuZ2Uob2Zmc2V0WCAvIF90aGlzLndpZHRoKTsgLy8g5pu05pawIHN0YXJ0IGVuZCByYW5nZSDojIPlm7RcblxuXG4gICAgICBfdGhpcy51cGRhdGVTdGFydEVuZChvZmZzZXRYUmFuZ2UpOyAvLyDmm7TmlrAgdWlcblxuXG4gICAgICBfdGhpcy51cGRhdGVVSSgpO1xuXG4gICAgICBfdGhpcy5wcmV2WCA9IHg7XG4gICAgfTtcblxuICAgIHRoaXMub25Nb3VzZVVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8g57uT5p2f5LmL5ZCO77yM5Y+W5raI57uR5a6a55qE5LqL5Lu2XG4gICAgICBpZiAoX3RoaXMuY3VycmVudEhhbmRsZXIpIHtcbiAgICAgICAgX3RoaXMuY3VycmVudEhhbmRsZXIgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250YWluZXJET00gPSBfdGhpcy5jYW52YXMuZ2V0KCdjb250YWluZXInKTtcblxuICAgICAgaWYgKGNvbnRhaW5lckRPTSkge1xuICAgICAgICBjb250YWluZXJET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgX3RoaXMub25Nb3VzZU1vdmUpO1xuICAgICAgICBjb250YWluZXJET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIF90aGlzLm9uTW91c2VVcCk7IC8vIOmYsuatoua7keWKqOWIsCBjYW52YXMg5aSW6YOo5LmL5ZCO77yM54q25oCB5Lii5aSxXG5cbiAgICAgICAgY29udGFpbmVyRE9NLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBfdGhpcy5vbk1vdXNlVXApOyAvLyDnp7vliqjnq6/kuovku7ZcblxuICAgICAgICBjb250YWluZXJET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgX3RoaXMub25Nb3VzZU1vdmUpO1xuICAgICAgICBjb250YWluZXJET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBfdGhpcy5vbk1vdXNlVXApO1xuICAgICAgICBjb250YWluZXJET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hjYW5jZWwnLCBfdGhpcy5vbk1vdXNlVXApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgX2EgPSBjZmcueCxcbiAgICAgICAgeCA9IF9hID09PSB2b2lkIDAgPyAwIDogX2EsXG4gICAgICAgIF9iID0gY2ZnLnksXG4gICAgICAgIHkgPSBfYiA9PT0gdm9pZCAwID8gMCA6IF9iLFxuICAgICAgICBfYyA9IGNmZy53aWR0aCxcbiAgICAgICAgd2lkdGggPSBfYyA9PT0gdm9pZCAwID8gMTAwIDogX2MsXG4gICAgICAgIGhlaWdodCA9IGNmZy5oZWlnaHQsXG4gICAgICAgIF9kID0gY2ZnLnBhZGRpbmcsXG4gICAgICAgIHBhZGRpbmcgPSBfZCA9PT0gdm9pZCAwID8gMTAgOiBfZCxcbiAgICAgICAgdHJlbmRDZmcgPSBjZmcudHJlbmRDZmcsXG4gICAgICAgIF9lID0gY2ZnLmNvbnRyb2xsZXJDZmcsXG4gICAgICAgIGNvbnRyb2xsZXJDZmcgPSBfZSA9PT0gdm9pZCAwID8ge1xuICAgICAgc3BlZWQ6IDFcbiAgICB9IDogX2UsXG4gICAgICAgIF9mID0gY2ZnLmJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgYmFja2dyb3VuZFN0eWxlID0gX2YgPT09IHZvaWQgMCA/IHt9IDogX2YsXG4gICAgICAgIF9nID0gY2ZnLmZvcmVncm91bmRTdHlsZSxcbiAgICAgICAgZm9yZWdyb3VuZFN0eWxlID0gX2cgPT09IHZvaWQgMCA/IHt9IDogX2csXG4gICAgICAgIF9oID0gY2ZnLmhhbmRsZXJTdHlsZSxcbiAgICAgICAgaGFuZGxlclN0eWxlID0gX2ggPT09IHZvaWQgMCA/IHt9IDogX2gsXG4gICAgICAgIF9qID0gY2ZnLnRleHRTdHlsZSxcbiAgICAgICAgdGV4dFN0eWxlID0gX2ogPT09IHZvaWQgMCA/IHt9IDogX2osXG4gICAgICAgIC8vIOe8qeeVpei9tOeahOWIneWni+S9jee9rlxuICAgIF9rID0gY2ZnLnN0YXJ0LFxuICAgICAgICAvLyDnvKnnlaXovbTnmoTliJ3lp4vkvY3nva5cbiAgICBzdGFydCA9IF9rID09PSB2b2lkIDAgPyAwIDogX2ssXG4gICAgICAgIF9sID0gY2ZnLmVuZCxcbiAgICAgICAgZW5kID0gX2wgPT09IHZvaWQgMCA/IDEgOiBfbCxcbiAgICAgICAgX20gPSBjZmcubWluVGV4dCxcbiAgICAgICAgbWluVGV4dCA9IF9tID09PSB2b2lkIDAgPyAnJyA6IF9tLFxuICAgICAgICBfbyA9IGNmZy5tYXhUZXh0LFxuICAgICAgICBtYXhUZXh0ID0gX28gPT09IHZvaWQgMCA/ICcnIDogX28sXG4gICAgICAgIGdyb3VwID0gY2ZnLmdyb3VwLFxuICAgICAgICBncmFwaCA9IGNmZy5ncmFwaCxcbiAgICAgICAgY2FudmFzID0gY2ZnLmNhbnZhcyxcbiAgICAgICAgX3AgPSBjZmcudGljayxcbiAgICAgICAgdGljayA9IF9wID09PSB2b2lkIDAgPyB7XG4gICAgICB0aWNrTGFiZWxTdHlsZToge30sXG4gICAgICB0aWNrTGluZVN0eWxlOiB7fSxcbiAgICAgIHRpY2tMYWJlbEZvcm1hdHRlcjogZnVuY3Rpb24gdGlja0xhYmVsRm9ybWF0dGVyKGQpIHtcbiAgICAgICAgcmV0dXJuIGQ7XG4gICAgICB9LFxuICAgICAgdGlja3M6IFtdXG4gICAgfSA6IF9wLFxuICAgICAgICB0eXBlID0gY2ZnLnR5cGU7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuY2FudmFzID0gY2FudmFzO1xuICAgIHRoaXMuZ3JvdXAgPSBncm91cDtcbiAgICB0aGlzLnRpbWVCYXJUeXBlID0gdHlwZTsgLy8gcG9zaXRpb24gc2l6ZVxuXG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB0aGlzLnBhZGRpbmcgPSBwYWRkaW5nO1xuICAgIHRoaXMudGlja3MgPSB0aWNrLnRpY2tzO1xuICAgIHRoaXMudHJlbmRDZmcgPSB0cmVuZENmZztcbiAgICB0aGlzLmNvbnRyb2xsZXJDZmcgPSBjb250cm9sbGVyQ2ZnO1xuICAgIHRoaXMuY3VycmVudFNwZWVkID0gY29udHJvbGxlckNmZy5zcGVlZCB8fCAxO1xuICAgIHRoaXMudGlja0xhYmVsRm9ybWF0dGVyID0gdGljay50aWNrTGFiZWxGb3JtYXR0ZXI7IC8vIHN0eWxlXG5cbiAgICBpZiAodHlwZSA9PT0gJ3RyZW5kJykge1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kU3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgQkFDS0dST1VORF9TVFlMRSksIGJhY2tncm91bmRTdHlsZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kU3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgU0lNUExFX0JBQ0tHUk9VTkRfU1RZTEUpLCBiYWNrZ3JvdW5kU3R5bGUpO1xuICAgIH1cblxuICAgIHRoaXMuZm9yZWdyb3VuZFN0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIEZPUkVHUk9VTkRfU1RZTEUpLCBmb3JlZ3JvdW5kU3R5bGUpO1xuICAgIHRoaXMuaGFuZGxlclN0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIEhBTkRMRVJfU1RZTEUpLCBoYW5kbGVyU3R5bGUpO1xuICAgIHRoaXMudGV4dFN0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIFRFWFRfU1RZTEUpLCB0ZXh0U3R5bGUpO1xuICAgIHRoaXMudGlja0xhYmVsU3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgVElDS19MQUJFTF9TVFlMRSksIHRpY2sudGlja0xhYmVsU3R5bGUpO1xuICAgIHRoaXMudGlja0xpbmVTdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBUSUNLX0xJTkVfU1RZTEUpLCB0aWNrLnRpY2tMaW5lU3R5bGUpO1xuICAgIHRoaXMuY3VycmVudE1vZGUgPSAncmFuZ2UnOyAvLyDliJ3lp4vkv6Hmga9cblxuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB0aGlzLm1pblRleHQgPSBtaW5UZXh0O1xuICAgIHRoaXMubWF4VGV4dCA9IG1heFRleHQ7IC8vIOWIneWni+WMliBmb250RmFtaWx577yM5aaC5p6c5pyJ5rWP6KeI5Zmo77yM5Y+WIGJvZHkg5LiK55qE5a2X5L2T77yM6Ziy5q2i5paH5a2X5pu05paw5pe25bGA6YOo5riy5p+T6YCg5oiQ55qE6YeN5b2xXG5cbiAgICB0aGlzLmZvbnRGYW1pbHkgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtZmFtaWx5JykgfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJyA6ICdBcmlhbCwgc2Fucy1zZXJpZic7XG4gICAgdGhpcy5yZW5kZXJTbGlkZXIoKTtcbiAgfVxuICAvKipcbiAgICog5pu05paw6YWN572uXG4gICAqIEBwYXJhbSBjZmdcbiAgICovXG5cblxuICBUcmVuZFRpbWVCYXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgeCA9IGNmZy54LFxuICAgICAgICB5ID0gY2ZnLnksXG4gICAgICAgIHdpZHRoID0gY2ZnLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBjZmcuaGVpZ2h0LFxuICAgICAgICBtaW5UZXh0ID0gY2ZnLm1pblRleHQsXG4gICAgICAgIG1heFRleHQgPSBjZmcubWF4VGV4dCxcbiAgICAgICAgc3RhcnQgPSBjZmcuc3RhcnQsXG4gICAgICAgIGVuZCA9IGNmZy5lbmQ7IC8vIHN0YXJ044CBZW5kIOWPquiDveaYryAwfjEg6IyD5Zu0XG5cbiAgICB0aGlzLnN0YXJ0ID0gTWF0aC5taW4oMSwgTWF0aC5tYXgoc3RhcnQsIDApKTtcbiAgICB0aGlzLmVuZCA9IE1hdGgubWluKDEsIE1hdGgubWF4KGVuZCwgMCkpOyAvLyDlpoLmnpzkvKDkuobliJnmm7TmlrDvvIzmsqHmnInkvKDliJnkuI3mm7TmlrBcbiAgICAvLyBAdHMtaWdub3JlXG5cbiAgICBhc3NpZ24odGhpcywge1xuICAgICAgeDogeCxcbiAgICAgIHk6IHksXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIG1pblRleHQ6IG1pblRleHQsXG4gICAgICBtYXhUZXh0OiBtYXhUZXh0XG4gICAgfSk7IC8vIOabtOaWsCB1ae+8jOS4jeiHquWKqOe7mOWItlxuXG4gICAgdGhpcy51cGRhdGVVSSgpO1xuICB9O1xuXG4gIFRyZW5kVGltZUJhci5wcm90b3R5cGUuc2V0VGV4dCA9IGZ1bmN0aW9uIChtaW5UZXh0LCBtYXhUZXh0KSB7XG4gICAgdGhpcy5taW5UZXh0U2hhcGUuYXR0cigndGV4dCcsIG1pblRleHQpO1xuICAgIHRoaXMubWF4VGV4dFNoYXBlLmF0dHIoJ3RleHQnLCBtYXhUZXh0KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIneWni+WMlue7hOS7tue7k+aehFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cblxuXG4gIFRyZW5kVGltZUJhci5wcm90b3R5cGUucmVuZGVyU2xpZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICB3aWR0aCA9IF9hLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfYS5oZWlnaHQsXG4gICAgICAgIHRpbWVCYXJUeXBlID0gX2EudGltZUJhclR5cGU7IC8vIOi2i+WKv+WbvuaVsOaNrlxuXG5cbiAgICBpZiAodGltZUJhclR5cGUgPT09ICd0cmVuZCcgJiYgc2l6ZShnZXQodGhpcy50cmVuZENmZywgJ2RhdGEnKSkpIHtcbiAgICAgIHZhciB0cmVuZENvbXBvbmVudCA9IG5ldyBUcmVuZChfX2Fzc2lnbihfX2Fzc2lnbih7XG4gICAgICAgIHg6IHRoaXMueCxcbiAgICAgICAgeTogdGhpcy55LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9LCB0aGlzLnRyZW5kQ2ZnKSwge1xuICAgICAgICBncm91cDogdGhpcy5ncm91cFxuICAgICAgfSkpO1xuICAgICAgdGhpcy50cmVuZENvbXBvbmVudCA9IHRyZW5kQ29tcG9uZW50O1xuICAgIH1cblxuICAgIHZhciBzbGlkZXJHcm91cCA9IHRoaXMuZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgbmFtZTogJ3NsaWRlci1ncm91cCdcbiAgICB9KTsgLy8gMS4g6IOM5pmvXG5cbiAgICBzbGlkZXJHcm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgIH0sIHRoaXMuYmFja2dyb3VuZFN0eWxlKSxcbiAgICAgIG5hbWU6ICdiYWNrZ3JvdW5kJ1xuICAgIH0pO1xuICAgIHZhciB0ZXh0R3JvdXAgPSB0aGlzLmdyb3VwLmFkZEdyb3VwKCk7IC8vIDIuIOW3puWPs+aWh+Wtl1xuXG4gICAgaWYgKHRpbWVCYXJUeXBlID09PSAndHJlbmQnKSB7XG4gICAgICB0aGlzLm1pblRleHRTaGFwZSA9IHRleHRHcm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDIgKyB0aGlzLnksXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnLFxuICAgICAgICAgIHRleHQ6IHRoaXMubWluVGV4dCxcbiAgICAgICAgICBzaWxlbnQ6IGZhbHNlLFxuICAgICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuZm9udEZhbWlseSB8fCAnQXJpYWwsIHNhbnMtc2VyaWYnLFxuICAgICAgICAgIHN0cm9rZTogJyNmZmYnLFxuICAgICAgICAgIGxpbmVXaWR0aDogNVxuICAgICAgICB9LCB0aGlzLnRleHRTdHlsZSksXG4gICAgICAgIGNhcHR1cmU6IGZhbHNlLFxuICAgICAgICBuYW1lOiAnbWluLXRleHQtc2hhcGUnXG4gICAgICB9KTtcbiAgICAgIHRoaXMubWF4VGV4dFNoYXBlID0gdGV4dEdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHk6IGhlaWdodCAvIDIgKyB0aGlzLnksXG4gICAgICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgICAgICAgdGV4dDogdGhpcy5tYXhUZXh0LFxuICAgICAgICAgIHNpbGVudDogZmFsc2UsXG4gICAgICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFtaWx5IHx8ICdBcmlhbCwgc2Fucy1zZXJpZicsXG4gICAgICAgICAgc3Ryb2tlOiAnI2ZmZicsXG4gICAgICAgICAgbGluZVdpZHRoOiA1XG4gICAgICAgIH0sIHRoaXMudGV4dFN0eWxlKSxcbiAgICAgICAgY2FwdHVyZTogZmFsc2UsXG4gICAgICAgIG5hbWU6ICdtYXgtdGV4dC1zaGFwZSdcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1pblRleHRTaGFwZSA9IHRleHRHcm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHRoaXMueSAtIDEwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgdGV4dDogdGhpcy5taW5UZXh0LFxuICAgICAgICAgIHNpbGVudDogZmFsc2UsXG4gICAgICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFtaWx5IHx8ICdBcmlhbCwgc2Fucy1zZXJpZicsXG4gICAgICAgICAgc3Ryb2tlOiAnI2ZmZicsXG4gICAgICAgICAgbGluZVdpZHRoOiA1XG4gICAgICAgIH0sIHRoaXMudGV4dFN0eWxlKSxcbiAgICAgICAgY2FwdHVyZTogZmFsc2UsXG4gICAgICAgIG5hbWU6ICdtaW4tdGV4dC1zaGFwZSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5tYXhUZXh0U2hhcGUgPSB0ZXh0R3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgeTogdGhpcy55IC0gMTAsXG4gICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICB0ZXh0OiB0aGlzLm1heFRleHQsXG4gICAgICAgICAgc2lsZW50OiBmYWxzZSxcbiAgICAgICAgICBmb250RmFtaWx5OiB0aGlzLmZvbnRGYW1pbHkgfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICBzdHJva2U6ICcjZmZmJyxcbiAgICAgICAgICBsaW5lV2lkdGg6IDVcbiAgICAgICAgfSwgdGhpcy50ZXh0U3R5bGUpLFxuICAgICAgICBjYXB0dXJlOiBmYWxzZSxcbiAgICAgICAgbmFtZTogJ21heC10ZXh0LXNoYXBlJ1xuICAgICAgfSk7XG4gICAgfSAvLyAzLiDliY3mma8g6YCJ5Lit6IOM5pmv5qGGXG5cblxuICAgIHRoaXMuZm9yZWdyb3VuZFNoYXBlID0gdGhpcy5ncm91cC5hZGRHcm91cCgpLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogdGhpcy55LFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSwgdGhpcy5mb3JlZ3JvdW5kU3R5bGUpLFxuICAgICAgbmFtZTogJ2ZvcmVncm91bmQtc2hhcGUnXG4gICAgfSk7XG4gICAgdGhpcy5mb3JlZ3JvdW5kU2hhcGUub24oJ21vdXNlZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLnRhcmdldC5hdHRyKCdjdXJzb3InLCAnZ3JhYmJpbmcnKTtcbiAgICB9KTtcbiAgICB0aGlzLmZvcmVncm91bmRTaGFwZS5vbignbW91c2V1cCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLnRhcmdldC5hdHRyKCdjdXJzb3InLCBfdGhpcy5mb3JlZ3JvdW5kU3R5bGUuY3Vyc29yIHx8ICdncmFiJyk7XG4gICAgfSk7IC8vIOa7keWdl+ebuOWFs+eahOWkp+Wwj+S/oeaBr1xuXG4gICAgdmFyIGhhbmRsZXJXaWR0aCA9IGdldCh0aGlzLmhhbmRsZXJTdHlsZSwgJ3dpZHRoJywgMik7XG4gICAgdmFyIGhhbmRsZXJIZWlnaHQgPSBnZXQodGhpcy5oYW5kbGVyU3R5bGUsICdoZWlnaHQnLCAyNCk7XG4gICAgdmFyIG1pbkhhbmRsZUdyb3VwID0gdGhpcy5ncm91cC5hZGRHcm91cCh7XG4gICAgICBuYW1lOiAnbWluSGFuZGxlclNoYXBlJ1xuICAgIH0pOyAvLyA0LiDlt6blj7Pmu5HlnZdcblxuICAgIHRoaXMubWluSGFuZGxlclNoYXBlID0gbmV3IEhhbmRsZXIoe1xuICAgICAgbmFtZTogJ21pbkhhbmRsZXJTaGFwZScsXG4gICAgICBncm91cDogbWluSGFuZGxlR3JvdXAsXG4gICAgICB0eXBlOiB0aW1lQmFyVHlwZSxcbiAgICAgIHg6IHRoaXMueCxcbiAgICAgIHk6IHRoaXMueSxcbiAgICAgIHdpZHRoOiBoYW5kbGVyV2lkdGgsXG4gICAgICBoZWlnaHQ6IGhhbmRsZXJIZWlnaHQsXG4gICAgICBzdHlsZTogdGhpcy5oYW5kbGVyU3R5bGVcbiAgICB9KTtcbiAgICB2YXIgbWF4SGFuZGxlR3JvdXAgPSB0aGlzLmdyb3VwLmFkZEdyb3VwKHtcbiAgICAgIG5hbWU6ICdtYXhIYW5kbGVyU2hhcGUnXG4gICAgfSk7XG4gICAgdGhpcy5tYXhIYW5kbGVyU2hhcGUgPSBuZXcgSGFuZGxlcih7XG4gICAgICBuYW1lOiAnbWF4SGFuZGxlclNoYXBlJyxcbiAgICAgIGdyb3VwOiBtYXhIYW5kbGVHcm91cCxcbiAgICAgIHR5cGU6IHRpbWVCYXJUeXBlLFxuICAgICAgeDogdGhpcy54LFxuICAgICAgeTogdGhpcy55LFxuICAgICAgd2lkdGg6IGhhbmRsZXJXaWR0aCxcbiAgICAgIGhlaWdodDogaGFuZGxlckhlaWdodCxcbiAgICAgIHN0eWxlOiB0aGlzLmhhbmRsZXJTdHlsZVxuICAgIH0pOyAvLyDnvKnnlaXlm77kuIvpnaLnmoTml7bpl7TliLvluqZcblxuICAgIHZhciB0aWNrRGF0YSA9IHRoaXMudGlja3M7XG4gICAgdmFyIGludGVydmFsID0gd2lkdGggLyAodGlja0RhdGEubGVuZ3RoIC0gMSk7XG4gICAgdGhpcy50aWNrUG9zTGlzdCA9IFtdO1xuXG4gICAgaWYgKHRoaXMudGV4dExpc3QgJiYgdGhpcy50ZXh0TGlzdC5sZW5ndGgpIHtcbiAgICAgIHRoaXMudGV4dExpc3QuZm9yRWFjaChmdW5jdGlvbiAodGV4dCkge1xuICAgICAgICB0ZXh0LmRlc3Ryb3koKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBsYXN0WCA9IC1JbmZpbml0eTtcbiAgICB2YXIgcm90YXRlID0gdGhpcy50aWNrTGFiZWxTdHlsZS5yb3RhdGU7XG4gICAgZGVsZXRlIHRoaXMudGlja0xhYmVsU3R5bGUucm90YXRlO1xuICAgIHRoaXMudGV4dExpc3QgPSB0aWNrRGF0YS5tYXAoZnVuY3Rpb24gKGRhdGEsIGluZGV4KSB7XG4gICAgICBfdGhpcy50aWNrUG9zTGlzdC5wdXNoKF90aGlzLnggKyBpbmRleCAqIGludGVydmFsKTtcblxuICAgICAgdmFyIGxhYmVsO1xuXG4gICAgICBpZiAoX3RoaXMudGlja0xhYmVsRm9ybWF0dGVyKSB7XG4gICAgICAgIGxhYmVsID0gX3RoaXMudGlja0xhYmVsRm9ybWF0dGVyKGRhdGEpO1xuXG4gICAgICAgIGlmICghaXNTdHJpbmcobGFiZWwpICYmIGxhYmVsKSB7XG4gICAgICAgICAgLy8gcmV0dXJuIHRydWVcbiAgICAgICAgICBsYWJlbCA9IGRhdGEuZGF0ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFiZWwgPSBkYXRhLmRhdGU7XG4gICAgICB9IC8vIOaWh+acrOWIu+W6plxuXG5cbiAgICAgIHZhciB0ZXh0WCA9IF90aGlzLnggKyBpbmRleCAqIGludGVydmFsLFxuICAgICAgICAgIHRleHRZID0gX3RoaXMueSArIGhlaWdodCArIDU7XG5cbiAgICAgIHZhciB0ZXh0ID0gX3RoaXMuZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgeDogdGV4dFgsXG4gICAgICAgICAgeTogdGV4dFksXG4gICAgICAgICAgdGV4dDogbGFiZWwsXG4gICAgICAgICAgZm9udEZhbWlseTogX3RoaXMuZm9udEZhbWlseSB8fCAnQXJpYWwsIHNhbnMtc2VyaWYnXG4gICAgICAgIH0sIF90aGlzLnRpY2tMYWJlbFN0eWxlKSxcbiAgICAgICAgbmFtZTogJ3RpY2stbGFiZWwnXG4gICAgICB9KTtcblxuICAgICAgaWYgKGlzTnVtYmVyKHJvdGF0ZSkgJiYgaW5kZXggIT09IHRpY2tEYXRhLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdmFyIG1hdHJpeCA9IHRyYW5zZm9ybShbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV0sIFtbJ3QnLCAtdGV4dFgsIC10ZXh0WV0sIFsncicsIHJvdGF0ZV0sIFsndCcsIHRleHRYIC0gNSwgdGV4dFkgKyAyXV0pO1xuICAgICAgICB0ZXh0LmF0dHIoe1xuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICAgIG1hdHJpeDogbWF0cml4XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgdGV4dC5hdHRyKHtcbiAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0J1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXggIT09IHRpY2tEYXRhLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGV4dC5hdHRyKHtcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCdcbiAgICAgICAgfSk7XG4gICAgICB9IC8vIOaWh+acrOWIu+W6puS4iumdoueahOerlue6v1xuXG5cbiAgICAgIHZhciBsaW5lID0gX3RoaXMuZ3JvdXAuYWRkU2hhcGUoJ2xpbmUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgeDE6IF90aGlzLnggKyBpbmRleCAqIGludGVydmFsLFxuICAgICAgICAgIHkxOiBfdGhpcy55ICsgaGVpZ2h0ICsgMixcbiAgICAgICAgICB4MjogX3RoaXMueCArIGluZGV4ICogaW50ZXJ2YWwsXG4gICAgICAgICAgeTI6IF90aGlzLnkgKyBoZWlnaHQgKyA2XG4gICAgICAgIH0sIF90aGlzLnRpY2tMaW5lU3R5bGUpLFxuICAgICAgICBuYW1lOiAndGljay1saW5lJ1xuICAgICAgfSk7XG5cbiAgICAgIGxpbmUudG9CYWNrKCk7XG4gICAgICB2YXIgYmJveCA9IHRleHQuZ2V0QkJveCgpOyAvLyDmir3moLfvvIzmoIfnrb7kuI7moIfnrb7pl7Tot53kuI3lsI/kuo4gMTBcblxuICAgICAgaWYgKGJib3gubWluWCA+IGxhc3RYKSB7XG4gICAgICAgIHRleHQuc2hvdygpO1xuICAgICAgICBsaW5lLnNob3coKTtcbiAgICAgICAgbGFzdFggPSBiYm94Lm1pblggKyBiYm94LndpZHRoICsgMTA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXh0LmhpZGUoKTtcbiAgICAgICAgbGluZS5oaWRlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZXh0O1xuICAgIH0pOyAvLyDmuLLmn5Pmkq3mlL7jgIHlv6vov5vlkozlkI7pgIDnmoTmjqfliLbmjInpkq5cblxuICAgIHRoaXMuY29udHJvbGxlckJ0bkdyb3VwID0gbmV3IENvbnRyb2xsZXJCdG4oX19hc3NpZ24oe1xuICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXAsXG4gICAgICB4OiB0aGlzLngsXG4gICAgICB5OiB0aGlzLnkgKyBoZWlnaHQgKyAyNSxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogMzVcbiAgICB9LCB0aGlzLmNvbnRyb2xsZXJDZmcpKTsgLy8g5Yid5aeL5YyWIG1pblRleHQg5ZKMIG1heFRleHTvvIzmlrnkvr/orqHnrpflroPku6znmoQgYmJveFxuXG4gICAgdGhpcy51cGRhdGVTdGFydEVuZCgwKTsgLy8g5qC55o2uIHN0YXJ0IGVuZCDmm7TmlrAgdWkg55qE5L2N572u5L+h5oGvXG5cbiAgICB0aGlzLnVwZGF0ZVVJKCk7IC8vIOenu+WKqOWIsOWvueW6lOeahOS9jee9rlxuXG4gICAgc2xpZGVyR3JvdXAubW92ZSh0aGlzLngsIHRoaXMueSk7IC8vIOe7keWumuS6i+S7tum8oOagh+S6i+S7tlxuXG4gICAgdGhpcy5iaW5kRXZlbnRzKCk7XG4gIH07XG4gIC8qKlxuICAgKiDnu5Hlrprkuovku7bvvJpcbiAgICogIC0g54K55Ye7XG4gICAqICAtIOa7keWKqFxuICAgKiAgLSDmi5bmi71cbiAgICogIC0g5rua5YqoXG4gICAqIEBwcml2YXRlXG4gICAqL1xuXG5cbiAgVHJlbmRUaW1lQmFyLnByb3RvdHlwZS5iaW5kRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7IC8vIDEuIOW3pua7keWdl+eahOa7keWKqFxuXG5cbiAgICB2YXIgbWluSGFuZGxlU2hhcGVHcm91cCA9IHRoaXMuZ3JvdXAuZmluZChmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICAgIHJldHVybiBncm91cC5nZXQoJ25hbWUnKSA9PT0gJ21pbkhhbmRsZXJTaGFwZSc7XG4gICAgfSk7XG5cbiAgICBpZiAobWluSGFuZGxlU2hhcGVHcm91cCkge1xuICAgICAgbWluSGFuZGxlU2hhcGVHcm91cC5vbignbWluSGFuZGxlclNoYXBlLWhhbmRsZXI6bW91c2Vkb3duJywgdGhpcy5vbk1vdXNlRG93bih0aGlzLm1pbkhhbmRsZXJTaGFwZSkpO1xuICAgICAgbWluSGFuZGxlU2hhcGVHcm91cC5vbignbWluSGFuZGxlclNoYXBlLWhhbmRsZXI6dG91Y2hzdGFydCcsIHRoaXMub25Nb3VzZURvd24odGhpcy5taW5IYW5kbGVyU2hhcGUpKTtcbiAgICB9XG5cbiAgICB2YXIgbWF4SGFuZGxlU2hhcGVHcm91cCA9IHRoaXMuZ3JvdXAuZmluZChmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICAgIHJldHVybiBncm91cC5nZXQoJ25hbWUnKSA9PT0gJ21heEhhbmRsZXJTaGFwZSc7XG4gICAgfSk7IC8vIDIuIOWPs+a7keWdl+eahOa7keWKqFxuXG4gICAgaWYgKG1heEhhbmRsZVNoYXBlR3JvdXApIHtcbiAgICAgIG1heEhhbmRsZVNoYXBlR3JvdXAub24oJ21heEhhbmRsZXJTaGFwZS1oYW5kbGVyOm1vdXNlZG93bicsIHRoaXMub25Nb3VzZURvd24odGhpcy5tYXhIYW5kbGVyU2hhcGUpKTtcbiAgICAgIG1heEhhbmRsZVNoYXBlR3JvdXAub24oJ21heEhhbmRsZXJTaGFwZS1oYW5kbGVyOnRvdWNoc3RhcnQnLCB0aGlzLm9uTW91c2VEb3duKHRoaXMubWF4SGFuZGxlclNoYXBlKSk7XG4gICAgfSAvLyAzLiDliY3mma/pgInkuK3ljLrln59cblxuXG4gICAgdGhpcy5mb3JlZ3JvdW5kU2hhcGUub24oJ21vdXNlZG93bicsIHRoaXMub25Nb3VzZURvd24odGhpcy5mb3JlZ3JvdW5kU2hhcGUpKTtcbiAgICB0aGlzLmZvcmVncm91bmRTaGFwZS5vbigndG91Y2hzdGFydCcsIHRoaXMub25Nb3VzZURvd24odGhpcy5mb3JlZ3JvdW5kU2hhcGUpKTsgLy8g5pKt5pS+5Yy65oyJ6ZKu5o6n5Yi2XG5cbiAgICAvKiog5pKt5pS+L+aaguWBnOS6i+S7tiAqL1xuXG4gICAgdGhpcy5ncm91cC5vbihcIlwiLmNvbmNhdChQTEFZX1BBVVNFX0JUTiwgXCI6Y2xpY2tcIiksIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmlzUGxheSA9ICFfdGhpcy5pc1BsYXk7XG4gICAgICBfdGhpcy5jdXJyZW50SGFuZGxlciA9IF90aGlzLm1heEhhbmRsZXJTaGFwZTtcblxuICAgICAgX3RoaXMuY2hhbmdlUGxheVN0YXR1cygpO1xuICAgIH0pOyAvLyDlpITnkIbliY3ov5vkuIDmraXnmoTkuovku7ZcblxuICAgIHRoaXMuZ3JvdXAub24oXCJcIi5jb25jYXQoTkVYVF9TVEVQX0JUTiwgXCI6Y2xpY2tcIiksIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmN1cnJlbnRIYW5kbGVyID0gX3RoaXMubWF4SGFuZGxlclNoYXBlO1xuXG4gICAgICBfdGhpcy51cGRhdGVTdGFydEVuZCgwLjAxKTtcblxuICAgICAgX3RoaXMudXBkYXRlVUkoKTtcbiAgICB9KTsgLy8g5aSE55CG5ZCO6YCA5LiA5q2l55qE5LqL5Lu2XG5cbiAgICB0aGlzLmdyb3VwLm9uKFwiXCIuY29uY2F0KFBSRV9TVEVQX0JUTiwgXCI6Y2xpY2tcIiksIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmN1cnJlbnRIYW5kbGVyID0gX3RoaXMubWF4SGFuZGxlclNoYXBlO1xuXG4gICAgICBfdGhpcy51cGRhdGVTdGFydEVuZCgtMC4wMSk7XG5cbiAgICAgIF90aGlzLnVwZGF0ZVVJKCk7XG4gICAgfSk7XG4gICAgdGhpcy5ncm91cC5vbihUSU1FQkFSX0NPTkZJR19DSEFOR0UsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgdmFyIHR5cGUgPSBfYS50eXBlLFxuICAgICAgICAgIHNwZWVkID0gX2Euc3BlZWQ7XG4gICAgICBfdGhpcy5jdXJyZW50U3BlZWQgPSBzcGVlZDtcbiAgICAgIF90aGlzLmN1cnJlbnRNb2RlID0gdHlwZTtcblxuICAgICAgaWYgKHR5cGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIF90aGlzLm1pbkhhbmRsZXJTaGFwZS5oaWRlKCk7XG5cbiAgICAgICAgX3RoaXMuZm9yZWdyb3VuZFNoYXBlLmhpZGUoKTtcblxuICAgICAgICBfdGhpcy5taW5UZXh0U2hhcGUuaGlkZSgpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIF90aGlzLm1pbkhhbmRsZXJTaGFwZS5zaG93KCk7XG5cbiAgICAgICAgX3RoaXMuZm9yZWdyb3VuZFNoYXBlLnNob3coKTtcblxuICAgICAgICBfdGhpcy5taW5UZXh0U2hhcGUuc2hvdygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvKiog6L6T5YWl5b2T5YmN5ZyG54K55L2N572u77yM6L6T5Ye656a75ZOq5LiqIHRpY2sg55qE5L2N572u5pyA6L+RICovXG5cblxuICBUcmVuZFRpbWVCYXIucHJvdG90eXBlLmFkanVzdFRpY2tJbmRleCA9IGZ1bmN0aW9uICh0aW1lU2VsZWN0WCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50aWNrUG9zTGlzdC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLnRpY2tQb3NMaXN0W2ldIDw9IHRpbWVTZWxlY3RYICYmIHRpbWVTZWxlY3RYIDw9IHRoaXMudGlja1Bvc0xpc3RbaSArIDFdKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLnRpY2tQb3NMaXN0W2ldIC0gdGltZVNlbGVjdFgpIDwgTWF0aC5hYnModGltZVNlbGVjdFggLSB0aGlzLnRpY2tQb3NMaXN0W2kgKyAxXSkgPyBpIDogaSArIDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH07XG4gIC8qKlxuICAgKiDosIPmlbQgb2Zmc2V0UmFuZ2XvvIzlm6DkuLrkuIDkupvojIPlm7TnmoTpmZDliLZcbiAgICogQHBhcmFtIG9mZnNldFJhbmdlXG4gICAqL1xuXG5cbiAgVHJlbmRUaW1lQmFyLnByb3RvdHlwZS5hZGp1c3RPZmZzZXRSYW5nZSA9IGZ1bmN0aW9uIChvZmZzZXRSYW5nZSkge1xuICAgIC8vIOmSiOWvueS4jeWQjOeahOa7keWKqOe7hOS7tu+8jOWkhOeQhueahOaWueW8j+S4jeWQjFxuICAgIHN3aXRjaCAodGhpcy5jdXJyZW50SGFuZGxlcikge1xuICAgICAgY2FzZSB0aGlzLm1pbkhhbmRsZXJTaGFwZTpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBtaW4gPSAwIC0gdGhpcy5zdGFydDtcbiAgICAgICAgICB2YXIgbWF4ID0gMSAtIHRoaXMuc3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIE1hdGgubWluKG1heCwgTWF0aC5tYXgobWluLCBvZmZzZXRSYW5nZSkpO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgdGhpcy5tYXhIYW5kbGVyU2hhcGU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbWluID0gMCAtIHRoaXMuZW5kO1xuICAgICAgICAgIHZhciBtYXggPSAxIC0gdGhpcy5lbmQ7XG4gICAgICAgICAgcmV0dXJuIE1hdGgubWluKG1heCwgTWF0aC5tYXgobWluLCBvZmZzZXRSYW5nZSkpO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgdGhpcy5mb3JlZ3JvdW5kU2hhcGU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbWluID0gMCAtIHRoaXMuc3RhcnQ7XG4gICAgICAgICAgdmFyIG1heCA9IDEgLSB0aGlzLmVuZDtcbiAgICAgICAgICByZXR1cm4gTWF0aC5taW4obWF4LCBNYXRoLm1heChtaW4sIG9mZnNldFJhbmdlKSk7XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pu05paw6LW35aeL44CB57uT5p2f55qE5o6n5Yi25Z2X5L2N572u44CB5paH5pys44CB6IyD5Zu05YC877yI5Y6f5aeL5YC877yJXG4gICAqIEBwYXJhbSBvZmZzZXRSYW5nZVxuICAgKi9cblxuXG4gIFRyZW5kVGltZUJhci5wcm90b3R5cGUudXBkYXRlU3RhcnRFbmQgPSBmdW5jdGlvbiAob2Zmc2V0UmFuZ2UpIHtcbiAgICB2YXIgbWluRGF0YSA9IHRoaXMudGlja3NbdGhpcy5hZGp1c3RUaWNrSW5kZXgodGhpcy5zdGFydCAqIHRoaXMud2lkdGgpXTtcbiAgICB2YXIgbWF4RGF0YSA9IHRoaXMudGlja3NbdGhpcy5hZGp1c3RUaWNrSW5kZXgodGhpcy5lbmQgKiB0aGlzLndpZHRoKV07XG5cbiAgICBpZiAoIXRoaXMuY3VycmVudEhhbmRsZXIpIHtcbiAgICAgIHRoaXMubWluVGV4dCA9IHRoaXMudGlja0xhYmVsRm9ybWF0dGVyID8gdGhpcy50aWNrTGFiZWxGb3JtYXR0ZXIobWluRGF0YSkgOiBtaW5EYXRhID09PSBudWxsIHx8IG1pbkRhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1pbkRhdGEuZGF0ZTtcbiAgICAgIHRoaXMubWF4VGV4dCA9IHRoaXMudGlja0xhYmVsRm9ybWF0dGVyID8gdGhpcy50aWNrTGFiZWxGb3JtYXR0ZXIobWF4RGF0YSkgOiBtYXhEYXRhID09PSBudWxsIHx8IG1heERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1heERhdGEuZGF0ZTtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIOaTjeS9nOS4jeWQjOeahOe7hOS7tu+8jOWPjemmiOS4jeS4gOagt1xuXG5cbiAgICBzd2l0Y2ggKHRoaXMuY3VycmVudEhhbmRsZXIpIHtcbiAgICAgIGNhc2UgdGhpcy5taW5IYW5kbGVyU2hhcGU6XG4gICAgICAgIC8vIOaLluWKqOacgOWwj+a7keWdl+aXtuS9v+eUqOW9k+WJjeacgOWkp+WAvOiuvue9ruacgOWkp+WAvOeahOaWh+acrO+8jOS7peS+v+aBouWkjeWIsOm7mOiupOWAvFxuICAgICAgICB0aGlzLm1heFRleHQgPSB0aGlzLm1heFRleHRTaGFwZS5hdHRyKCd0ZXh0Jyk7XG4gICAgICAgIHRoaXMuc3RhcnQgKz0gb2Zmc2V0UmFuZ2U7XG4gICAgICAgIHRoaXMubWluVGV4dCA9IHRoaXMudGlja0xhYmVsRm9ybWF0dGVyID8gdGhpcy50aWNrTGFiZWxGb3JtYXR0ZXIobWluRGF0YSkgOiBtaW5EYXRhLmRhdGU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIHRoaXMubWF4SGFuZGxlclNoYXBlOlxuICAgICAgICAvLyDmi5bliqjmnIDlpKfmu5HlnZfml7bkvb/nlKjlvZPliY3mnIDlsI/lgLzorr7nva7mnIDlsI/lgLznmoTmlofmnKzvvIzku6Xkvr/mgaLlpI3liLDpu5jorqTlgLxcbiAgICAgICAgdGhpcy5taW5UZXh0ID0gdGhpcy5taW5UZXh0U2hhcGUuYXR0cigndGV4dCcpO1xuICAgICAgICB0aGlzLmVuZCArPSBvZmZzZXRSYW5nZTtcbiAgICAgICAgdGhpcy5tYXhUZXh0ID0gdGhpcy50aWNrTGFiZWxGb3JtYXR0ZXIgPyB0aGlzLnRpY2tMYWJlbEZvcm1hdHRlcihtYXhEYXRhKSA6IG1heERhdGEuZGF0ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgdGhpcy5mb3JlZ3JvdW5kU2hhcGU6XG4gICAgICAgIHRoaXMuc3RhcnQgKz0gb2Zmc2V0UmFuZ2U7XG4gICAgICAgIHRoaXMuZW5kICs9IG9mZnNldFJhbmdlO1xuICAgICAgICB0aGlzLm1pblRleHQgPSB0aGlzLnRpY2tMYWJlbEZvcm1hdHRlciA/IHRoaXMudGlja0xhYmVsRm9ybWF0dGVyKG1pbkRhdGEpIDogbWluRGF0YS5kYXRlO1xuICAgICAgICB0aGlzLm1heFRleHQgPSB0aGlzLnRpY2tMYWJlbEZvcm1hdHRlciA/IHRoaXMudGlja0xhYmVsRm9ybWF0dGVyKG1heERhdGEpIDogbWF4RGF0YS5kYXRlO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5qC55o2u56e75Yqo55qE5q+U5L6L5p2l5pu05pawIHVp77yM5pu05paw6IyD5Zu077yIMC0xIOiMg+WbtOeahOavlOS+i+WAvO+8iVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cblxuXG4gIFRyZW5kVGltZUJhci5wcm90b3R5cGUudXBkYXRlVUkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICh0aGlzLnN0YXJ0IDwgMCkge1xuICAgICAgdGhpcy5zdGFydCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZW5kID4gMSkge1xuICAgICAgdGhpcy5lbmQgPSAxO1xuICAgIH1cblxuICAgIHZhciBtaW4gPSB0aGlzLnggKyB0aGlzLnN0YXJ0ICogdGhpcy53aWR0aDtcbiAgICB2YXIgbWF4ID0gdGhpcy54ICsgdGhpcy5lbmQgKiB0aGlzLndpZHRoOyAvLyAxLiBmb3JlZ3JvdW5kXG5cbiAgICB0aGlzLmZvcmVncm91bmRTaGFwZS5hdHRyKCd4JywgbWluKTtcbiAgICB0aGlzLmZvcmVncm91bmRTaGFwZS5hdHRyKCd3aWR0aCcsIG1heCAtIG1pbik7IC8vIOa7keWdl+ebuOWFs+eahOWkp+Wwj+S/oeaBr1xuXG4gICAgdmFyIGhhbmRsZXJXaWR0aCA9IGdldCh0aGlzLmhhbmRsZXJTdHlsZSwgJ3dpZHRoJywgREVGQVVMVF9IQU5ETEVSX1dJRFRIKTsgLy8g6K6+572u5paH5pysXG5cbiAgICB0aGlzLnNldFRleHQodGhpcy5taW5UZXh0LCB0aGlzLm1heFRleHQpO1xuXG4gICAgdmFyIF9hID0gdGhpcy5kb2RnZVRleHQoW21pbiwgbWF4XSksXG4gICAgICAgIG1pbkF0dHJzID0gX2FbMF0sXG4gICAgICAgIG1heEF0dHJzID0gX2FbMV07IC8vIDIuIOW3puS+p+a7keWdl+WSjOaWh+Wtl+S9jee9rlxuXG5cbiAgICB0aGlzLm1pbkhhbmRsZXJTaGFwZS5zZXRYKG1pbiAtIGhhbmRsZXJXaWR0aCAvIDIpO1xuICAgIGVhY2gobWluQXR0cnMsIGZ1bmN0aW9uICh2LCBrKSB7XG4gICAgICByZXR1cm4gX3RoaXMubWluVGV4dFNoYXBlLmF0dHIoaywgdik7XG4gICAgfSk7IC8vIDMuIOWPs+S+p+a7keWdl+WSjOaWh+Wtl+S9jee9rlxuXG4gICAgdGhpcy5tYXhIYW5kbGVyU2hhcGUuc2V0WChtYXggLSBoYW5kbGVyV2lkdGggLyAyKTtcbiAgICBlYWNoKG1heEF0dHJzLCBmdW5jdGlvbiAodiwgaykge1xuICAgICAgcmV0dXJuIF90aGlzLm1heFRleHRTaGFwZS5hdHRyKGssIHYpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudE1vZGUgPT09ICdyYW5nZScpIHtcbiAgICAgIC8vIOWboOS4uuWtmOWCqOeahCBzdGFydOOAgWVuZCDlj6/og73kuI3kuIDlrprmmK/mjInlpKflsI/lrZjlgqjnmoTvvIzmiYDku6XmjpLluo/kuIDkuIvvvIzlr7nlpJbmmK8gZW5kID49IHN0YXJ0XG4gICAgICB0aGlzLmdyYXBoLmVtaXQoVkFMVUVfQ0hBTkdFLCB7XG4gICAgICAgIHZhbHVlOiBbdGhpcy5zdGFydCwgdGhpcy5lbmRdLnNvcnQoKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5ncmFwaC5lbWl0KFZBTFVFX0NIQU5HRSwge1xuICAgICAgICB2YWx1ZTogW3RoaXMuZW5kLCB0aGlzLmVuZF1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOiwg+aVtCB0ZXh0IOeahOS9jee9ru+8jOiHquWKqOi6sumBv1xuICAgKiDmoLnmja7kvY3nva7vvIzosIPmlbTov5Tlm57mlrDnmoTkvY3nva5cbiAgICogQHBhcmFtIHJhbmdlXG4gICAqL1xuXG5cbiAgVHJlbmRUaW1lQmFyLnByb3RvdHlwZS5kb2RnZVRleHQgPSBmdW5jdGlvbiAocmFuZ2UpIHtcbiAgICB2YXIgX2EsIF9iO1xuXG4gICAgdmFyIFRFWFRQQURESU5HID0gMjtcbiAgICB2YXIgaGFuZGxlcldpZHRoID0gZ2V0KHRoaXMuaGFuZGxlclN0eWxlLCAnd2lkdGgnLCBERUZBVUxUX0hBTkRMRVJfV0lEVEgpO1xuICAgIHZhciBtaW5UZXh0U2hhcGUgPSB0aGlzLm1pblRleHRTaGFwZTtcbiAgICB2YXIgbWF4VGV4dFNoYXBlID0gdGhpcy5tYXhUZXh0U2hhcGU7XG4gICAgdmFyIG1pbiA9IHJhbmdlWzBdLFxuICAgICAgICBtYXggPSByYW5nZVsxXTtcbiAgICB2YXIgc29ydGVkID0gZmFsc2U7IC8vIOWmguaenOS6pOaNouS6huS9jee9ru+8jOWImeWvueW6lOeahCBtaW4gbWF4IOS5n+S6pOaNolxuXG4gICAgaWYgKG1pbiA+IG1heCkge1xuICAgICAgX2EgPSBbbWF4LCBtaW5dLCBtaW4gPSBfYVswXSwgbWF4ID0gX2FbMV07XG4gICAgICBfYiA9IFttYXhUZXh0U2hhcGUsIG1pblRleHRTaGFwZV0sIG1pblRleHRTaGFwZSA9IF9iWzBdLCBtYXhUZXh0U2hhcGUgPSBfYlsxXTtcbiAgICAgIHNvcnRlZCA9IHRydWU7XG4gICAgfSAvLyDpgb/orqnop4TliJnvvIzkvJjlhYjmmL7npLrlnKjkuKTkvqfvvIzlj6rmnInmmL7npLrkuI3kuIvnmoTml7blgJnvvIzmiY3mmL7npLrlnKjkuK3pl7RcblxuXG4gICAgdmFyIG1pbkJCb3ggPSBtaW5UZXh0U2hhcGUuZ2V0QkJveCgpO1xuICAgIHZhciBtYXhCQm94ID0gbWF4VGV4dFNoYXBlLmdldEJCb3goKTtcbiAgICB2YXIgbWluQXR0cnMgPSBudWxsO1xuICAgIHZhciBtYXhBdHRycyA9IG51bGw7XG5cbiAgICBpZiAodGhpcy50aW1lQmFyVHlwZSA9PT0gJ3RyZW5kJykge1xuICAgICAgbWluQXR0cnMgPSBtaW4gLSBtaW5CQm94LndpZHRoIDwgdGhpcy54ICsgVEVYVFBBRERJTkcgPyB7XG4gICAgICAgIHg6IG1pbiArIGhhbmRsZXJXaWR0aCAvIDIgKyBURVhUUEFERElORyxcbiAgICAgICAgdGV4dEFsaWduOiAnbGVmdCdcbiAgICAgIH0gOiB7XG4gICAgICAgIHg6IG1pbiAtIGhhbmRsZXJXaWR0aCAvIDIgLSBURVhUUEFERElORyxcbiAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnXG4gICAgICB9O1xuICAgICAgbWF4QXR0cnMgPSBtYXggKyBtYXhCQm94LndpZHRoID4gdGhpcy54ICsgdGhpcy53aWR0aCA/IHtcbiAgICAgICAgeDogbWF4IC0gaGFuZGxlcldpZHRoIC8gMiAtIFRFWFRQQURESU5HLFxuICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCdcbiAgICAgIH0gOiB7XG4gICAgICAgIHg6IG1heCArIGhhbmRsZXJXaWR0aCAvIDIgKyBURVhUUEFERElORyxcbiAgICAgICAgdGV4dEFsaWduOiAnbGVmdCdcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0aGlzLnRpbWVCYXJUeXBlID09PSAnc2ltcGxlJykge1xuICAgICAgbWluQXR0cnMgPSBtaW5UZXh0U2hhcGUuYXR0cigneCcpID4gbWluQkJveC53aWR0aCAvLyDlt6bovrnmu5HlnZfmlofmnKzkvY3nva7lsI/kuo7lhbblrr3luqbku6PooajmloflrZfotoXov4flt6bovrnlsYpcbiAgICAgID8ge1xuICAgICAgICB4OiBtaW4sXG4gICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgIH0gOiB7XG4gICAgICAgIHg6IG1pbixcbiAgICAgICAgdGV4dEFsaWduOiAnbGVmdCdcbiAgICAgIH07XG4gICAgICBtYXhBdHRycyA9IG1heFRleHRTaGFwZS5hdHRyKCd4JykgPiB0aGlzLndpZHRoIC0gbWF4QkJveC53aWR0aCAvLyDmnInovrnmu5HlnZfmlofmnKzkvY3nva7lpKfkuo7lrr3luqbku6PooajmloflrZfotoXov4flj7PovrnnlYxcbiAgICAgID8ge1xuICAgICAgICB4OiBtYXgsXG4gICAgICAgIHRleHRBbGlnbjogJ3JpZ2h0J1xuICAgICAgfSA6IHtcbiAgICAgICAgeDogbWF4LFxuICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiAhc29ydGVkID8gW21pbkF0dHJzLCBtYXhBdHRyc10gOiBbbWF4QXR0cnMsIG1pbkF0dHJzXTtcbiAgfTtcblxuICBUcmVuZFRpbWVCYXIucHJvdG90eXBlLnN0YXJ0UGxheSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2EgPSBfdGhpcyxcbiAgICAgICAgICB0aWNrcyA9IF9hLnRpY2tzLFxuICAgICAgICAgIHdpZHRoID0gX2Eud2lkdGg7XG4gICAgICB2YXIgc3BlZWQgPSBfdGhpcy5jdXJyZW50U3BlZWQ7XG4gICAgICB2YXIgdGlja0ludGVydmFsID0gd2lkdGggLyB0aWNrcy5sZW5ndGg7XG4gICAgICB2YXIgb2Zmc2V0WCA9IHRpY2tJbnRlcnZhbCAvICgoMTAgLSBzcGVlZCkgKiAxMDAwIC8gNjApO1xuXG4gICAgICB2YXIgb2Zmc2V0WFJhbmdlID0gX3RoaXMuYWRqdXN0T2Zmc2V0UmFuZ2Uob2Zmc2V0WCAvIF90aGlzLndpZHRoKTtcblxuICAgICAgX3RoaXMudXBkYXRlU3RhcnRFbmQob2Zmc2V0WFJhbmdlKTtcblxuICAgICAgX3RoaXMudXBkYXRlVUkoKTtcblxuICAgICAgaWYgKF90aGlzLmlzUGxheSkge1xuICAgICAgICBfdGhpcy5wbGF5SGFuZGxlciA9IF90aGlzLnN0YXJ0UGxheSgpO1xuICAgICAgfVxuICAgIH0pIDogdW5kZWZpbmVkO1xuICB9O1xuXG4gIFRyZW5kVGltZUJhci5wcm90b3R5cGUuY2hhbmdlUGxheVN0YXR1cyA9IGZ1bmN0aW9uIChpc1N5bmMpIHtcbiAgICBpZiAoaXNTeW5jID09PSB2b2lkIDApIHtcbiAgICAgIGlzU3luYyA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sbGVyQnRuR3JvdXAucGxheUJ1dHRvbi51cGRhdGUoe1xuICAgICAgaXNQbGF5OiB0aGlzLmlzUGxheVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuaXNQbGF5KSB7XG4gICAgICAvLyDlvIDlp4vmkq3mlL5cbiAgICAgIHRoaXMucGxheUhhbmRsZXIgPSB0aGlzLnN0YXJ0UGxheSgpO1xuICAgICAgdGhpcy5ncmFwaC5lbWl0KFRJTUVMSU5FX1NUQVJULCBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g57uT5p2f5pKt5pS+XG4gICAgICBpZiAodGhpcy5wbGF5SGFuZGxlcikge1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnBsYXlIYW5kbGVyKTtcblxuICAgICAgICBpZiAoaXNTeW5jKSB7XG4gICAgICAgICAgdGhpcy5ncmFwaC5lbWl0KFRJTUVMSU5FX0VORCwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgVHJlbmRUaW1lQmFyLnByb3RvdHlwZS5kZXN0b3J5ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JhcGgub2ZmKFZBTFVFX0NIQU5HRSk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5ncm91cDtcbiAgICB2YXIgbWluSGFuZGxlU2hhcGVHcm91cCA9IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGcpIHtcbiAgICAgIHJldHVybiBnLmdldCgnbmFtZScpID09PSAnbWluSGFuZGxlclNoYXBlJztcbiAgICB9KTtcblxuICAgIGlmIChtaW5IYW5kbGVTaGFwZUdyb3VwKSB7XG4gICAgICBtaW5IYW5kbGVTaGFwZUdyb3VwLm9mZignbWluSGFuZGxlclNoYXBlLWhhbmRsZXI6bW91c2Vkb3duJyk7XG4gICAgICBtaW5IYW5kbGVTaGFwZUdyb3VwLm9mZignbWluSGFuZGxlclNoYXBlLWhhbmRsZXI6dG91Y2hzdGFydCcpO1xuICAgICAgbWluSGFuZGxlU2hhcGVHcm91cC5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdmFyIG1heEhhbmRsZVNoYXBlR3JvdXAgPSBncm91cC5maW5kKGZ1bmN0aW9uIChnKSB7XG4gICAgICByZXR1cm4gZy5nZXQoJ25hbWUnKSA9PT0gJ21heEhhbmRsZXJTaGFwZSc7XG4gICAgfSk7IC8vIDIuIOWPs+a7keWdl+eahOa7keWKqFxuXG4gICAgaWYgKG1heEhhbmRsZVNoYXBlR3JvdXApIHtcbiAgICAgIG1heEhhbmRsZVNoYXBlR3JvdXAub2ZmKCdtYXhIYW5kbGVyU2hhcGUtaGFuZGxlcjptb3VzZWRvd24nKTtcbiAgICAgIG1heEhhbmRsZVNoYXBlR3JvdXAub2ZmKCdtYXhIYW5kbGVyU2hhcGUtaGFuZGxlcjp0b3VjaHN0YXJ0Jyk7XG4gICAgICBtYXhIYW5kbGVTaGFwZUdyb3VwLmRlc3Ryb3koKTtcbiAgICB9IC8vIDMuIOWJjeaZr+mAieS4reWMuuWfn1xuXG5cbiAgICB0aGlzLmZvcmVncm91bmRTaGFwZS5vZmYoJ21vdXNlZG93bicpO1xuICAgIHRoaXMuZm9yZWdyb3VuZFNoYXBlLm9mZigndG91Y2hzdGFydCcpO1xuICAgIHRoaXMuZm9yZWdyb3VuZFNoYXBlLmRlc3Ryb3koKTtcbiAgICBncm91cC5vZmYoXCJcIi5jb25jYXQoUExBWV9QQVVTRV9CVE4sIFwiOmNsaWNrXCIpKTtcbiAgICBncm91cC5vZmYoXCJcIi5jb25jYXQoTkVYVF9TVEVQX0JUTiwgXCI6Y2xpY2tcIikpO1xuICAgIGdyb3VwLm9mZihcIlwiLmNvbmNhdChQUkVfU1RFUF9CVE4sIFwiOmNsaWNrXCIpKTtcbiAgICBncm91cC5vZmYoVElNRUJBUl9DT05GSUdfQ0hBTkdFKTtcbiAgICBncm91cC5kZXN0cm95KCk7XG5cbiAgICBpZiAodGhpcy50cmVuZENvbXBvbmVudCkge1xuICAgICAgdGhpcy50cmVuZENvbXBvbmVudC5kZXN0b3J5KCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBUcmVuZFRpbWVCYXI7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFRyZW5kVGltZUJhcjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/timeBar/trendTimeBar.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/toolBar/index.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/toolBar/index.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! insert-css */ \"./node_modules/insert-css/index.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(insert_css__WEBPACK_IMPORTED_MODULE_3__);\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\n\n\nvar DELTA = 0.05;\ntypeof document !== 'undefined' && insert_css__WEBPACK_IMPORTED_MODULE_3___default()(\"\\n .g6-component-toolbar {\\n position: absolute;\\n list-style-type: none;\\n padding: 6px;\\n left: 0px;\\n top: 0px;\\n background-color: rgba(255, 255, 255, 0.9);\\n border: 1px solid #e2e2e2;\\n border-radius: 4px;\\n font-size: 12px;\\n color: #545454;\\n margin: 0;\\n }\\n .g6-component-toolbar li {\\n float: left;\\n text-align: center;\\n width: 35px;\\n height: 24px;\\n cursor: pointer;\\n\\t\\tlist-style-type:none;\\n list-style: none;\\n margin-left: 0px;\\n }\\n .g6-component-toolbar li .icon {\\n opacity: 0.7;\\n }\\n .g6-component-toolbar li .icon:hover {\\n opacity: 1;\\n }\\n\");\n\nvar getEventPath = function getEventPath(evt) {\n if (!evt) {\n return [];\n }\n\n if (evt.composedPath) {\n return evt.composedPath();\n }\n\n var path = [];\n var el = evt.target;\n\n while (el) {\n path.push(el);\n\n if (el.tagName === 'HTML') {\n path.push(document, window);\n return path;\n }\n\n el = el.parentElement;\n }\n\n return path;\n};\n\nvar ToolBar =\n/** @class */\nfunction (_super) {\n __extends(ToolBar, _super);\n\n function ToolBar(config) {\n return _super.call(this, config) || this;\n }\n\n ToolBar.prototype.getDefaultCfgs = function () {\n return {\n handleClick: undefined,\n // 指定菜单内容,function(e) {...}\n getContent: function getContent(graph) {\n return \"\\n
    \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
\\n \";\n },\n zoomSensitivity: 2\n };\n };\n\n ToolBar.prototype.init = function () {\n var _this = this;\n\n var graph = this.get('graph');\n var getContent = this.get('getContent');\n var toolBar = getContent(graph);\n var toolBarDOM = toolBar;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(toolBar)) {\n toolBarDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(toolBar);\n }\n\n var className = this.get('className');\n toolBarDOM.setAttribute('class', className || 'g6-component-toolbar');\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.appendChild(toolBarDOM);\n this.set('toolBar', toolBarDOM);\n var handleClick = this.get('handleClick');\n toolBarDOM.addEventListener('click', function (evt) {\n var current = getEventPath(evt).filter(function (p) {\n return p.nodeName === 'LI';\n });\n\n if (current.length === 0) {\n return;\n }\n\n var code = current[0].getAttribute('code');\n\n if (!code) {\n return;\n }\n\n if (handleClick) {\n handleClick(code, graph);\n } else {\n _this.handleDefaultOperator(code, graph);\n }\n });\n var pos = this.get('position');\n\n if (pos) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(toolBarDOM, {\n top: \"\".concat(pos.y, \"px\"),\n left: \"\".concat(pos.x, \"px\")\n });\n }\n\n this.bindUndoRedo();\n };\n\n ToolBar.prototype.bindUndoRedo = function () {\n var graph = this.get('graph');\n var undoDom = document.querySelector('.g6-component-toolbar li[code=\"undo\"]');\n var undoDomIcon = document.querySelector('.g6-component-toolbar li[code=\"undo\"] svg');\n var redoDom = document.querySelector('.g6-component-toolbar li[code=\"redo\"]');\n var redoDomIcon = document.querySelector('.g6-component-toolbar li[code=\"redo\"] svg');\n\n if (!undoDom || !undoDomIcon || !redoDom || !redoDomIcon) {\n return;\n }\n\n graph.on('stackchange', function (evt) {\n var undoStack = evt.undoStack,\n redoStack = evt.redoStack;\n var undoStackLen = undoStack.length;\n var redoStackLen = redoStack.length; // undo 不可用\n\n if (undoStackLen === 1) {\n undoDom.setAttribute('style', 'cursor: not-allowed');\n undoDomIcon.setAttribute('style', 'opacity: 0.4');\n } else {\n undoDom.removeAttribute('style');\n undoDomIcon.removeAttribute('style');\n } // redo 不可用\n\n\n if (redoStackLen === 0) {\n redoDom.setAttribute('style', 'cursor: not-allowed');\n redoDomIcon.setAttribute('style', 'opacity: 0.4');\n } else {\n redoDom.removeAttribute('style');\n redoDomIcon.removeAttribute('style');\n }\n });\n };\n /**\n * undo 操作\n */\n\n\n ToolBar.prototype.undo = function () {\n var graph = this.get('graph');\n var undoStack = graph.getUndoStack();\n\n if (!undoStack || undoStack.length === 1) {\n return;\n }\n\n var currentData = undoStack.pop();\n\n if (currentData) {\n var action = currentData.action;\n graph.pushStack(action, Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(currentData.data), 'redo');\n var data_1 = currentData.data.before;\n\n if (action === 'add') {\n data_1 = currentData.data.after;\n }\n\n if (!data_1) return;\n\n switch (action) {\n case 'visible':\n {\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n var item = graph.findById(model.id);\n\n if (model.visible) {\n graph.showItem(item, false);\n } else {\n graph.hideItem(item, false);\n }\n });\n });\n break;\n }\n\n case 'render':\n case 'update':\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.updateItem(model.id, model, false);\n });\n });\n break;\n\n case 'changedata':\n graph.changeData(data_1, false);\n break;\n\n case 'delete':\n {\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n var itemType = model.itemType;\n delete model.itemType;\n graph.addItem(itemType, model, false);\n });\n });\n break;\n }\n\n case 'add':\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n });\n break;\n\n case 'updateComboTree':\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.updateComboTree(model.id, model.parentId, false);\n });\n });\n break;\n\n default:\n }\n }\n };\n /**\n * redo 操作\n */\n\n\n ToolBar.prototype.redo = function () {\n var graph = this.get('graph');\n var redoStack = graph.getRedoStack();\n\n if (!redoStack || redoStack.length === 0) {\n return;\n }\n\n var currentData = redoStack.pop();\n\n if (currentData) {\n var action = currentData.action;\n var data_2 = currentData.data.after;\n graph.pushStack(action, Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(currentData.data));\n\n if (action === 'delete') {\n data_2 = currentData.data.before;\n }\n\n if (!data_2) return;\n\n switch (action) {\n case 'visible':\n {\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n var item = graph.findById(model.id);\n\n if (model.visible) {\n graph.showItem(item, false);\n } else {\n graph.hideItem(item, false);\n }\n });\n });\n break;\n }\n\n case 'render':\n case 'update':\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.updateItem(model.id, model, false);\n });\n });\n break;\n\n case 'changedata':\n graph.changeData(data_2, false);\n break;\n\n case 'delete':\n if (data_2.edges) {\n data_2.edges.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n }\n\n if (data_2.nodes) {\n data_2.nodes.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n }\n\n if (data_2.combos) {\n data_2.combos.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n }\n\n break;\n\n case 'add':\n {\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n var itemType = model.itemType;\n delete model.itemType;\n graph.addItem(itemType, model, false);\n });\n });\n break;\n }\n\n case 'updateComboTree':\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.updateComboTree(model.id, model.parentId, false);\n });\n });\n break;\n\n default:\n }\n }\n };\n /**\n * 根据 Toolbar 上不同类型对图进行操作\n * @param code 操作类型编码\n * @param graph Graph 实例\n */\n\n\n ToolBar.prototype.handleDefaultOperator = function (code, graph) {\n var currentZoom = graph.getZoom();\n\n switch (code) {\n case 'redo':\n this.redo();\n break;\n\n case 'undo':\n this.undo();\n break;\n\n case 'zoomOut':\n {\n var ratioOut = 1 / (1 - DELTA * this.get('zoomSensitivity'));\n var maxZoom = this.get('maxZoom') || graph.get('maxZoom');\n\n if (ratioOut * currentZoom > maxZoom) {\n return;\n }\n\n graph.zoomTo(currentZoom * ratioOut);\n break;\n }\n\n case 'zoomIn':\n {\n var ratioIn = 1 - DELTA * this.get('zoomSensitivity');\n var minZoom = this.get('minZoom') || graph.get('minZoom');\n\n if (ratioIn * currentZoom < minZoom) {\n return;\n }\n\n graph.zoomTo(currentZoom * ratioIn);\n break;\n }\n\n case 'realZoom':\n graph.zoomTo(1);\n break;\n\n case 'autoZoom':\n graph.fitView([20, 20]);\n break;\n\n default:\n }\n };\n\n ToolBar.prototype.destroy = function () {\n var toolBar = this.get('toolBar');\n\n if (toolBar) {\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.removeChild(toolBar);\n }\n\n var handleClick = this.get('handleClick');\n\n if (handleClick) {\n toolBar.removeEventListener('click', handleClick);\n }\n };\n\n return ToolBar;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ToolBar);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3Rvb2xCYXIvaW5kZXguanM/YzliNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRXFEO0FBQ1Q7QUFDbEI7QUFDUTtBQUNuQztBQUNBLG1DQUFtQyxpREFBUyw2QkFBNkIseUJBQXlCLDRCQUE0QixtQkFBbUIsZ0JBQWdCLGVBQWUsaURBQWlELGdDQUFnQyx5QkFBeUIsc0JBQXNCLHFCQUFxQixnQkFBZ0IsS0FBSyw4QkFBOEIsa0JBQWtCLHlCQUF5QixrQkFBa0IsbUJBQW1CLHNCQUFzQiwyQkFBMkIsdUJBQXVCLHVCQUF1QixLQUFLLG9DQUFvQyxtQkFBbUIsS0FBSywwQ0FBMEMsaUJBQWlCLEtBQUs7O0FBRXhxQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQixtQkFBbUIsZ0VBQVM7QUFDNUI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLE1BQU0sZ0VBQVM7QUFDZjtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSw4QkFBOEIsd0RBQUs7QUFDbkM7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsZUFBZTtBQUNmLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsd0RBQUs7O0FBRW5DO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGVBQWU7QUFDZixhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyxzRUFBTyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wbHVnaW4vZXMvdG9vbEJhci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2V4dGVuZHMgPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9leHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gZXh0ZW5kU3RhdGljcyhkLCBiKSB7XG4gICAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZC5fX3Byb3RvX18gPSBiO1xuICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGZvciAodmFyIHAgaW4gYikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICAgIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgZnVuY3Rpb24gX18oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICB9XG5cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gIH07XG59KCk7XG5cbmltcG9ydCB7IG1vZGlmeUNTUywgY3JlYXRlRG9tIH0gZnJvbSAnQGFudHYvZG9tLXV0aWwnO1xuaW1wb3J0IHsgY2xvbmUsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgQmFzZSBmcm9tICcuLi9iYXNlJztcbmltcG9ydCBpbnNlcnRDc3MgZnJvbSAnaW5zZXJ0LWNzcyc7XG52YXIgREVMVEEgPSAwLjA1O1xudHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBpbnNlcnRDc3MoXCJcXG4gIC5nNi1jb21wb25lbnQtdG9vbGJhciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xcbiAgICBwYWRkaW5nOiA2cHg7XFxuICAgIGxlZnQ6IDBweDtcXG4gICAgdG9wOiAwcHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2UyZTJlMjtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICBmb250LXNpemU6IDEycHg7XFxuICAgIGNvbG9yOiAjNTQ1NDU0O1xcbiAgICBtYXJnaW46IDA7XFxuICB9XFxuICAuZzYtY29tcG9uZW50LXRvb2xiYXIgbGkge1xcbiAgICBmbG9hdDogbGVmdDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICB3aWR0aDogMzVweDtcXG4gICAgaGVpZ2h0OiAyNHB4O1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuXFx0XFx0bGlzdC1zdHlsZS10eXBlOm5vbmU7XFxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XFxuICAgIG1hcmdpbi1sZWZ0OiAwcHg7XFxuICB9XFxuICAuZzYtY29tcG9uZW50LXRvb2xiYXIgbGkgLmljb24ge1xcbiAgICBvcGFjaXR5OiAwLjc7XFxuICB9XFxuICAuZzYtY29tcG9uZW50LXRvb2xiYXIgbGkgLmljb246aG92ZXIge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcblwiKTtcblxudmFyIGdldEV2ZW50UGF0aCA9IGZ1bmN0aW9uIGdldEV2ZW50UGF0aChldnQpIHtcbiAgaWYgKCFldnQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpZiAoZXZ0LmNvbXBvc2VkUGF0aCkge1xuICAgIHJldHVybiBldnQuY29tcG9zZWRQYXRoKCk7XG4gIH1cblxuICB2YXIgcGF0aCA9IFtdO1xuICB2YXIgZWwgPSBldnQudGFyZ2V0O1xuXG4gIHdoaWxlIChlbCkge1xuICAgIHBhdGgucHVzaChlbCk7XG5cbiAgICBpZiAoZWwudGFnTmFtZSA9PT0gJ0hUTUwnKSB7XG4gICAgICBwYXRoLnB1c2goZG9jdW1lbnQsIHdpbmRvdyk7XG4gICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG5cbiAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gcGF0aDtcbn07XG5cbnZhciBUb29sQmFyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKFRvb2xCYXIsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gVG9vbEJhcihjb25maWcpIHtcbiAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgY29uZmlnKSB8fCB0aGlzO1xuICB9XG5cbiAgVG9vbEJhci5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhbmRsZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgICAvLyDmjIflrproj5zljZXlhoXlrrnvvIxmdW5jdGlvbihlKSB7Li4ufVxuICAgICAgZ2V0Q29udGVudDogZnVuY3Rpb24gZ2V0Q29udGVudChncmFwaCkge1xuICAgICAgICByZXR1cm4gXCJcXG4gICAgICAgICAgPHVsIGNsYXNzPSdnNi1jb21wb25lbnQtdG9vbGJhcic+XFxuICAgICAgICAgICAgPGxpIGNvZGU9J3JlZG8nPlxcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cXFwiaWNvblxcXCIgdmlld0JveD1cXFwiMCAwIDEwMjQgMTAyNFxcXCIgdmVyc2lvbj1cXFwiMS4xXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyNFxcXCIgaGVpZ2h0PVxcXCIyNFxcXCI+XFxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XFxcIk0yNTYgNjgyLjY2NjY2N2MwLTEwMi43NDEzMzMgNjYuNzMwNjY3LTIxMy4zMzMzMzMgMjEzLjMzMzMzMy0yMTMuMzMzMzM0IDEwNy4wMDggMCAxOTAuNzYyNjY3IDU2LjU3NiAyMzAuNTcwNjY3IDEyNS4zNTQ2NjdMNjExLjk2OCA2ODIuNjY2NjY3SDg1My4zMzMzMzN2LTI0MS4zNjUzMzRsLTkxLjU2MjY2NiA5MS41NjI2NjdDNzA0Ljc2OCA0NDguNDY5MzMzIDYwMS4xMzA2NjcgMzg0IDQ2OS4zMzMzMzMgMzg0Yy0xOTYuMDk2IDAtMjk4LjY2NjY2NyAxNTAuMjI5MzMzLTI5OC42NjY2NjYgMjk4LjY2NjY2N2g4NS4zMzMzMzN6XFxcIiBmaWxsPVxcXCJcXFwiIHAtaWQ9XFxcIjIwNDFcXFwiPjwvcGF0aD5cXG4gICAgICAgICAgICAgIDwvc3ZnPlxcbiAgICAgICAgICAgIDwvbGk+XFxuICAgICAgICAgICAgPGxpIGNvZGU9J3VuZG8nPlxcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cXFwiaWNvblxcXCIgdmlld0JveD1cXFwiMCAwIDEwMjQgMTAyNFxcXCIgdmVyc2lvbj1cXFwiMS4xXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyNFxcXCIgaGVpZ2h0PVxcXCIyNFxcXCI+XFxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XFxcIk0xNzAuNjY2NjY3IDY4Mi42NjY2NjdoMjQxLjM2NTMzM2wtODcuOTM2LTg3Ljk3ODY2N0MzNjMuOTA0IDUyNS45MDkzMzMgNDQ3LjY1ODY2NyA0NjkuMzMzMzMzIDU1NC42NjY2NjcgNDY5LjMzMzMzM2MxNDYuNjAyNjY3IDAgMjEzLjMzMzMzMyAxMTAuNTkyIDIxMy4zMzMzMzMgMjEzLjMzMzMzNGg4NS4zMzMzMzNjMC0xNDguNDM3MzMzLTEwMi41NzA2NjctMjk4LjY2NjY2Ny0yOTguNjY2NjY2LTI5OC42NjY2NjctMTMxLjc5NzMzMyAwLTIzNS4zOTIgNjQuNDY5MzMzLTI5Mi40OCAxNDguODIxMzMzTDE3MC42NjY2NjcgNDQxLjMwMTMzM1Y2ODIuNjY2NjY3elxcXCIgZmlsbD1cXFwiXFxcIiBwLWlkPVxcXCIyNzY0XFxcIj48L3BhdGg+XFxuICAgICAgICAgICAgICA8L3N2Zz5cXG4gICAgICAgICAgICA8L2xpPlxcbiAgICAgICAgICAgIDxsaSAgY29kZT0nem9vbU91dCc+XFxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVxcXCJpY29uXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTAyNCAxMDI0XFxcIiB2ZXJzaW9uPVxcXCIxLjFcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjI0XFxcIiBoZWlnaHQ9XFxcIjI0XFxcIj5cXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cXFwiTTY1OC40MzIgNDI4LjczNmEzMy4yMTYgMzMuMjE2IDAgMCAxLTMzLjE1MiAzMy4xNTJINTI1LjgyNHY5OS40NTZhMzMuMjE2IDMzLjIxNiAwIDAgMS02Ni4zMDQgMFY0NjEuODg4SDM2MC4wNjRhMzMuMTUyIDMzLjE1MiAwIDAgMSAwLTY2LjMwNEg0NTkuNTJWMjk2LjEyOGEzMy4xNTIgMzMuMTUyIDAgMCAxIDY2LjMwNCAwVjM5NS41Mkg2MjUuMjhjMTguMjQgMCAzMy4xNTIgMTQuODQ4IDMzLjE1MiAzMy4xNTJ6IG0yOTkuNzc2IDUyMS43OTJhNDMuMzI4IDQzLjMyOCAwIDAgMS02MC44NjQtNi45MTJsLTE4OS4yNDgtMjIwLjk5MmEzNjIuMzY4IDM2Mi4zNjggMCAwIDEtMjE1LjM2IDcwLjg0OCAzNjQuOCAzNjQuOCAwIDEgMSAzNjQuOC0zNjQuNzM2IDM2My4wNzIgMzYzLjA3MiAwIDAgMS04Ni45MTIgMjM1Ljk2OGwxOTIuMzg0IDIyNC42NGE0My4zOTIgNDMuMzkyIDAgMCAxLTQuOCA2MS4xODR6IG0tNDY1LjUzNi0yMjMuMzZhMjk4LjgxNiAyOTguODE2IDAgMCAwIDI5OC40MzItMjk4LjQzMiAyOTguODE2IDI5OC44MTYgMCAwIDAtMjk4LjQzMi0yOTguNDMyQTI5OC44MTYgMjk4LjgxNiAwIDAgMCAxOTQuMjQgNDI4LjhhMjk4LjgxNiAyOTguODE2IDAgMCAwIDI5OC40MzIgMjk4LjQzMnpcXFwiPjwvcGF0aD5cXG4gICAgICAgICAgICAgIDwvc3ZnPlxcbiAgICAgICAgICAgIDwvbGk+XFxuICAgICAgICAgICAgPGxpIGNvZGU9J3pvb21Jbic+XFxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVxcXCJpY29uXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTAyNCAxMDI0XFxcIiB2ZXJzaW9uPVxcXCIxLjFcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjI0XFxcIiBoZWlnaHQ9XFxcIjI0XFxcIj5cXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cXFwiTTYzOS45MzYgNDE2YTMyIDMyIDAgMCAxLTMyIDMyaC0yNTZhMzIgMzIgMCAwIDEgMC02NGgyNTZhMzIgMzIgMCAwIDEgMzIgMzJ6IG0yODkuMjggNTAzLjU1MmE0MS43OTIgNDEuNzkyIDAgMCAxLTU4Ljc1Mi02LjY1NmwtMTgyLjY1Ni0yMTMuMjQ4QTM0OS43NiAzNDkuNzYgMCAwIDEgNDgwIDc2OCAzNTIgMzUyIDAgMSAxIDgzMiA0MTZhMzUwLjQgMzUwLjQgMCAwIDEtODMuODQgMjI3LjcxMmwxODUuNjY0IDIxNi43NjhhNDEuODU2IDQxLjg1NiAwIDAgMS00LjYwOCA1OS4wNzJ6TTQ3OS45MzYgNzA0YzE1OC43ODQgMCAyODgtMTI5LjIxNiAyODgtMjg4UzYzOC43MiAxMjggNDc5LjkzNiAxMjhhMjg4LjMyIDI4OC4zMiAwIDAgMC0yODggMjg4YzAgMTU4Ljc4NCAxMjkuMjE2IDI4OCAyODggMjg4elxcXCIgcC1pZD1cXFwiMzg1M1xcXCI+PC9wYXRoPlxcbiAgICAgICAgICAgICAgPC9zdmc+XFxuICAgICAgICAgICAgPC9saT5cXG4gICAgICAgICAgICA8bGkgY29kZT0ncmVhbFpvb20nPlxcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cXFwiaWNvblxcXCIgdmlld0JveD1cXFwiMCAwIDEwMjQgMTAyNFxcXCIgdmVyc2lvbj1cXFwiMS4xXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIyNFxcXCI+XFxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XFxcIk0zODQgMzIwdjM4NEgzMjBWMzIwaDY0eiBtMjU2IDB2Mzg0SDU3NlYzMjBoNjR6TTUxMiA1NzZ2NjRINDQ4VjU3Nmg2NHogbTAtMTkydjY0SDQ0OFYzODRoNjR6IG0zNTUuOTY4IDU3Nkg5Mi4wMzJBMjguMTYgMjguMTYgMCAwIDEgNjQgOTMxLjk2OFYyOC4wMzJDNjQgMTIuNjA4IDc2LjYwOCAwIDk1LjE2OCAwaDYxMC4zNjhMODk2IDE5MnY3MzkuOTY4YTI4LjE2IDI4LjE2IDAgMCAxLTI4LjAzMiAyOC4wMzJ6TTcwNCA2NHYxMjhoMTI4bC0xMjgtMTI4eiBtMTI4IDE5MmgtMTkwLjQ2NFY2NEgxMjh2ODMyaDcwNFYyNTZ6XFxcIj48L3BhdGg+XFxuICAgICAgICAgICAgICA8L3N2Zz5cXG4gICAgICAgICAgICA8L2xpPlxcbiAgICAgICAgICAgIDxsaSBjb2RlPSdhdXRvWm9vbSc+XFxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVxcXCJpY29uXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTAyNCAxMDI0XFxcIiB2ZXJzaW9uPVxcXCIxLjFcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjI0XFxcIj5cXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cXFwiTTY4NC4yODggMzA1LjI4bDAuMTI4LTAuNjQtMC4xMjgtMC42NFY5OS43MTJjMC0xOS44NCAxNS41NTItMzUuOTA0IDM0LjQ5Ni0zNS43MTJhMzUuMDcyIDM1LjA3MiAwIDAgMSAzNC41NiAzNS43NzZ2MTcxLjAwOGgxNzAuOTQ0YzE5LjY0OCAwIDM1Ljg0IDE1LjQ4OCAzNS43MTIgMzQuNDMyYTM1LjA3MiAzNS4wNzIgMCAwIDEtMzUuODQgMzQuNDk2aC0yMDQuMTZsLTAuNjQtMC4xMjhhMzIuNzY4IDMyLjc2OCAwIDAgMS0yMC44NjQtNy41NTJjLTEuMzQ0LTEuMDI0LTIuODE2LTEuNjY0LTMuOTY4LTIuODE2LTAuMzg0LTAuMzItMC41MTItMC43NjgtMC44MzItMS4wODhhMzMuNDcyIDMzLjQ3MiAwIDAgMS05LjQwOC0yMi44NDh6TTMwNS4yOCA2NGEzNS4wNzIgMzUuMDcyIDAgMCAwLTM0LjU2IDM1Ljc3NnYxNzEuMDA4SDk5Ljc3NkEzNS4wNzIgMzUuMDcyIDAgMCAwIDY0IDMwNS4yMTZjMCAxOC45NDQgMTUuODcyIDM0LjQ5NiAzNS44NCAzNC40OTZoMjA0LjE2bDAuNjQtMC4xMjhhMzIuODk2IDMyLjg5NiAwIDAgMCAyMC44NjQtNy41NTJjMS4zNDQtMS4wMjQgMi44MTYtMS42NjQgMy45MDQtMi44MTYgMC4zODQtMC4zMiAwLjUxMi0wLjc2OCAwLjc2OC0xLjA4OGEzMy4wMjQgMzMuMDI0IDAgMCAwIDkuNTM2LTIyLjg0OGwtMC4xMjgtMC42NCAwLjEyOC0wLjcwNFY5OS43MTJBMzUuMDA4IDM1LjAwOCAwIDAgMCAzMDUuMjE2IDY0eiBtNjE4Ljk0NCA2MjAuMjg4aC0yMDQuMTZsLTAuNjQgMC4xMjgtMC41MTItMC4xMjhjLTcuODA4IDAtMTQuNzIgMy4yLTIwLjQ4IDcuNjgtMS4yOCAxLjAyNC0yLjc1MiAxLjY2NC0zLjg0IDIuNzUyLTAuMzg0IDAuMzItMC41MTIgMC43NjgtMC44MzIgMS4wODhhMzMuNjY0IDMzLjY2NCAwIDAgMC05LjQwOCAyMi45MTJsMC4xMjggMC42NC0wLjEyOCAwLjcwNHYyMDQuMjg4YzAgMTkuNzEyIDE1LjU1MiAzNS45MDQgMzQuNDk2IDM1LjcxMmEzNS4wNzIgMzUuMDcyIDAgMCAwIDM0LjU2LTM1Ljc3NlY3NTMuMjhoMTcwLjk0NGMxOS42NDggMCAzNS44NC0xNS40ODggMzUuNzEyLTM0LjQzMmEzNS4wNzIgMzUuMDcyIDAgMCAwLTM1Ljg0LTM0LjQ5NnogbS01OTMuOTIgMTEuNTJjLTAuMjU2LTAuMzItMC4zODQtMC43NjgtMC43NjgtMS4wODgtMS4wODgtMS4wODgtMi41Ni0xLjcyOC0zLjg0LTIuNjg4YTMzLjA4OCAzMy4wODggMCAwIDAtMjAuNDgtNy42OGwtMC41MTIgMC4wNjQtMC42NC0wLjEyOEg5OS44NGEzNS4wNzIgMzUuMDcyIDAgMCAwLTM1Ljg0IDM0LjQ5NiAzNS4wNzIgMzUuMDcyIDAgMCAwIDM1LjcxMiAzNC40MzJIMjcwLjcydjE3MS4wMDhjMCAxOS44NCAxNS41NTIgMzUuODQgMzQuNTYgMzUuNzc2YTM1LjAwOCAzNS4wMDggMCAwIDAgMzQuNDMyLTM1LjcxMlY3MjBsLTAuMTI4LTAuNjQgMC4xMjgtMC43MDRhMzMuMzQ0IDMzLjM0NCAwIDAgMC05LjQ3Mi0yMi44NDh6TTUxMiAzNzQuMTQ0YTEzNy45MiAxMzcuOTIgMCAxIDAgMC4xMjggMjc1Ljg0QTEzNy45MiAxMzcuOTIgMCAwIDAgNTEyIDM3NC4wOHpcXFwiPjwvcGF0aD5cXG4gICAgICAgICAgICAgIDwvc3ZnPlxcbiAgICAgICAgICAgIDwvbGk+XFxuICAgICAgICAgIDwvdWw+XFxuICAgICAgICBcIjtcbiAgICAgIH0sXG4gICAgICB6b29tU2Vuc2l0aXZpdHk6IDJcbiAgICB9O1xuICB9O1xuXG4gIFRvb2xCYXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBnZXRDb250ZW50ID0gdGhpcy5nZXQoJ2dldENvbnRlbnQnKTtcbiAgICB2YXIgdG9vbEJhciA9IGdldENvbnRlbnQoZ3JhcGgpO1xuICAgIHZhciB0b29sQmFyRE9NID0gdG9vbEJhcjtcblxuICAgIGlmIChpc1N0cmluZyh0b29sQmFyKSkge1xuICAgICAgdG9vbEJhckRPTSA9IGNyZWF0ZURvbSh0b29sQmFyKTtcbiAgICB9XG5cbiAgICB2YXIgY2xhc3NOYW1lID0gdGhpcy5nZXQoJ2NsYXNzTmFtZScpO1xuICAgIHRvb2xCYXJET00uc2V0QXR0cmlidXRlKCdjbGFzcycsIGNsYXNzTmFtZSB8fCAnZzYtY29tcG9uZW50LXRvb2xiYXInKTtcbiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdncmFwaCcpLmdldCgnY29udGFpbmVyJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5lcikpIHtcbiAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRvb2xCYXJET00pO1xuICAgIHRoaXMuc2V0KCd0b29sQmFyJywgdG9vbEJhckRPTSk7XG4gICAgdmFyIGhhbmRsZUNsaWNrID0gdGhpcy5nZXQoJ2hhbmRsZUNsaWNrJyk7XG4gICAgdG9vbEJhckRPTS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHZhciBjdXJyZW50ID0gZ2V0RXZlbnRQYXRoKGV2dCkuZmlsdGVyKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiBwLm5vZGVOYW1lID09PSAnTEknO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChjdXJyZW50Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBjb2RlID0gY3VycmVudFswXS5nZXRBdHRyaWJ1dGUoJ2NvZGUnKTtcblxuICAgICAgaWYgKCFjb2RlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGhhbmRsZUNsaWNrKSB7XG4gICAgICAgIGhhbmRsZUNsaWNrKGNvZGUsIGdyYXBoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLmhhbmRsZURlZmF1bHRPcGVyYXRvcihjb2RlLCBncmFwaCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIHBvcyA9IHRoaXMuZ2V0KCdwb3NpdGlvbicpO1xuXG4gICAgaWYgKHBvcykge1xuICAgICAgbW9kaWZ5Q1NTKHRvb2xCYXJET00sIHtcbiAgICAgICAgdG9wOiBcIlwiLmNvbmNhdChwb3MueSwgXCJweFwiKSxcbiAgICAgICAgbGVmdDogXCJcIi5jb25jYXQocG9zLngsIFwicHhcIilcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuYmluZFVuZG9SZWRvKCk7XG4gIH07XG5cbiAgVG9vbEJhci5wcm90b3R5cGUuYmluZFVuZG9SZWRvID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciB1bmRvRG9tID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmc2LWNvbXBvbmVudC10b29sYmFyIGxpW2NvZGU9XCJ1bmRvXCJdJyk7XG4gICAgdmFyIHVuZG9Eb21JY29uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmc2LWNvbXBvbmVudC10b29sYmFyIGxpW2NvZGU9XCJ1bmRvXCJdIHN2ZycpO1xuICAgIHZhciByZWRvRG9tID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmc2LWNvbXBvbmVudC10b29sYmFyIGxpW2NvZGU9XCJyZWRvXCJdJyk7XG4gICAgdmFyIHJlZG9Eb21JY29uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmc2LWNvbXBvbmVudC10b29sYmFyIGxpW2NvZGU9XCJyZWRvXCJdIHN2ZycpO1xuXG4gICAgaWYgKCF1bmRvRG9tIHx8ICF1bmRvRG9tSWNvbiB8fCAhcmVkb0RvbSB8fCAhcmVkb0RvbUljb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBncmFwaC5vbignc3RhY2tjaGFuZ2UnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICB2YXIgdW5kb1N0YWNrID0gZXZ0LnVuZG9TdGFjayxcbiAgICAgICAgICByZWRvU3RhY2sgPSBldnQucmVkb1N0YWNrO1xuICAgICAgdmFyIHVuZG9TdGFja0xlbiA9IHVuZG9TdGFjay5sZW5ndGg7XG4gICAgICB2YXIgcmVkb1N0YWNrTGVuID0gcmVkb1N0YWNrLmxlbmd0aDsgLy8gdW5kbyDkuI3lj6/nlKhcblxuICAgICAgaWYgKHVuZG9TdGFja0xlbiA9PT0gMSkge1xuICAgICAgICB1bmRvRG9tLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnY3Vyc29yOiBub3QtYWxsb3dlZCcpO1xuICAgICAgICB1bmRvRG9tSWNvbi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ29wYWNpdHk6IDAuNCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdW5kb0RvbS5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICAgIHVuZG9Eb21JY29uLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgIH0gLy8gcmVkbyDkuI3lj6/nlKhcblxuXG4gICAgICBpZiAocmVkb1N0YWNrTGVuID09PSAwKSB7XG4gICAgICAgIHJlZG9Eb20uc2V0QXR0cmlidXRlKCdzdHlsZScsICdjdXJzb3I6IG5vdC1hbGxvd2VkJyk7XG4gICAgICAgIHJlZG9Eb21JY29uLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnb3BhY2l0eTogMC40Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWRvRG9tLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgICAgcmVkb0RvbUljb24ucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICogdW5kbyDmk43kvZxcbiAgICovXG5cblxuICBUb29sQmFyLnByb3RvdHlwZS51bmRvID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciB1bmRvU3RhY2sgPSBncmFwaC5nZXRVbmRvU3RhY2soKTtcblxuICAgIGlmICghdW5kb1N0YWNrIHx8IHVuZG9TdGFjay5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudERhdGEgPSB1bmRvU3RhY2sucG9wKCk7XG5cbiAgICBpZiAoY3VycmVudERhdGEpIHtcbiAgICAgIHZhciBhY3Rpb24gPSBjdXJyZW50RGF0YS5hY3Rpb247XG4gICAgICBncmFwaC5wdXNoU3RhY2soYWN0aW9uLCBjbG9uZShjdXJyZW50RGF0YS5kYXRhKSwgJ3JlZG8nKTtcbiAgICAgIHZhciBkYXRhXzEgPSBjdXJyZW50RGF0YS5kYXRhLmJlZm9yZTtcblxuICAgICAgaWYgKGFjdGlvbiA9PT0gJ2FkZCcpIHtcbiAgICAgICAgZGF0YV8xID0gY3VycmVudERhdGEuZGF0YS5hZnRlcjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkYXRhXzEpIHJldHVybjtcblxuICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGF0YV8xKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgdmFyIGFycmF5ID0gZGF0YV8xW2tleV07XG4gICAgICAgICAgICAgIGlmICghYXJyYXkpIHJldHVybjtcbiAgICAgICAgICAgICAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGdyYXBoLmZpbmRCeUlkKG1vZGVsLmlkKTtcblxuICAgICAgICAgICAgICAgIGlmIChtb2RlbC52aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICBncmFwaC5zaG93SXRlbShpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGdyYXBoLmhpZGVJdGVtKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAncmVuZGVyJzpcbiAgICAgICAgY2FzZSAndXBkYXRlJzpcbiAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhXzEpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIGFycmF5ID0gZGF0YV8xW2tleV07XG4gICAgICAgICAgICBpZiAoIWFycmF5KSByZXR1cm47XG4gICAgICAgICAgICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgICAgICBncmFwaC51cGRhdGVJdGVtKG1vZGVsLmlkLCBtb2RlbCwgZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY2hhbmdlZGF0YSc6XG4gICAgICAgICAgZ3JhcGguY2hhbmdlRGF0YShkYXRhXzEsIGZhbHNlKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGFfMSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgIHZhciBhcnJheSA9IGRhdGFfMVtrZXldO1xuICAgICAgICAgICAgICBpZiAoIWFycmF5KSByZXR1cm47XG4gICAgICAgICAgICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW1UeXBlID0gbW9kZWwuaXRlbVR5cGU7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG1vZGVsLml0ZW1UeXBlO1xuICAgICAgICAgICAgICAgIGdyYXBoLmFkZEl0ZW0oaXRlbVR5cGUsIG1vZGVsLCBmYWxzZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhXzEpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIGFycmF5ID0gZGF0YV8xW2tleV07XG4gICAgICAgICAgICBpZiAoIWFycmF5KSByZXR1cm47XG4gICAgICAgICAgICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgICAgICBncmFwaC5yZW1vdmVJdGVtKG1vZGVsLmlkLCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd1cGRhdGVDb21ib1RyZWUnOlxuICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGFfMSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgYXJyYXkgPSBkYXRhXzFba2V5XTtcbiAgICAgICAgICAgIGlmICghYXJyYXkpIHJldHVybjtcbiAgICAgICAgICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShtb2RlbC5pZCwgbW9kZWwucGFyZW50SWQsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogcmVkbyDmk43kvZxcbiAgICovXG5cblxuICBUb29sQmFyLnByb3RvdHlwZS5yZWRvID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciByZWRvU3RhY2sgPSBncmFwaC5nZXRSZWRvU3RhY2soKTtcblxuICAgIGlmICghcmVkb1N0YWNrIHx8IHJlZG9TdGFjay5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudERhdGEgPSByZWRvU3RhY2sucG9wKCk7XG5cbiAgICBpZiAoY3VycmVudERhdGEpIHtcbiAgICAgIHZhciBhY3Rpb24gPSBjdXJyZW50RGF0YS5hY3Rpb247XG4gICAgICB2YXIgZGF0YV8yID0gY3VycmVudERhdGEuZGF0YS5hZnRlcjtcbiAgICAgIGdyYXBoLnB1c2hTdGFjayhhY3Rpb24sIGNsb25lKGN1cnJlbnREYXRhLmRhdGEpKTtcblxuICAgICAgaWYgKGFjdGlvbiA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgZGF0YV8yID0gY3VycmVudERhdGEuZGF0YS5iZWZvcmU7XG4gICAgICB9XG5cbiAgICAgIGlmICghZGF0YV8yKSByZXR1cm47XG5cbiAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGFfMikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgIHZhciBhcnJheSA9IGRhdGFfMltrZXldO1xuICAgICAgICAgICAgICBpZiAoIWFycmF5KSByZXR1cm47XG4gICAgICAgICAgICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBncmFwaC5maW5kQnlJZChtb2RlbC5pZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAobW9kZWwudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgZ3JhcGguc2hvd0l0ZW0oaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBncmFwaC5oaWRlSXRlbShpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ3JlbmRlcic6XG4gICAgICAgIGNhc2UgJ3VwZGF0ZSc6XG4gICAgICAgICAgT2JqZWN0LmtleXMoZGF0YV8yKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHZhciBhcnJheSA9IGRhdGFfMltrZXldO1xuICAgICAgICAgICAgaWYgKCFhcnJheSkgcmV0dXJuO1xuICAgICAgICAgICAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcbiAgICAgICAgICAgICAgZ3JhcGgudXBkYXRlSXRlbShtb2RlbC5pZCwgbW9kZWwsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NoYW5nZWRhdGEnOlxuICAgICAgICAgIGdyYXBoLmNoYW5nZURhdGEoZGF0YV8yLCBmYWxzZSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgICBpZiAoZGF0YV8yLmVkZ2VzKSB7XG4gICAgICAgICAgICBkYXRhXzIuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcbiAgICAgICAgICAgICAgZ3JhcGgucmVtb3ZlSXRlbShtb2RlbC5pZCwgZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRhdGFfMi5ub2Rlcykge1xuICAgICAgICAgICAgZGF0YV8yLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgICAgIGdyYXBoLnJlbW92ZUl0ZW0obW9kZWwuaWQsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkYXRhXzIuY29tYm9zKSB7XG4gICAgICAgICAgICBkYXRhXzIuY29tYm9zLmZvckVhY2goZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgICAgIGdyYXBoLnJlbW92ZUl0ZW0obW9kZWwuaWQsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgICAge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGF0YV8yKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgdmFyIGFycmF5ID0gZGF0YV8yW2tleV07XG4gICAgICAgICAgICAgIGlmICghYXJyYXkpIHJldHVybjtcbiAgICAgICAgICAgICAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgaXRlbVR5cGUgPSBtb2RlbC5pdGVtVHlwZTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbW9kZWwuaXRlbVR5cGU7XG4gICAgICAgICAgICAgICAgZ3JhcGguYWRkSXRlbShpdGVtVHlwZSwgbW9kZWwsIGZhbHNlKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICBjYXNlICd1cGRhdGVDb21ib1RyZWUnOlxuICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGFfMikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgYXJyYXkgPSBkYXRhXzJba2V5XTtcbiAgICAgICAgICAgIGlmICghYXJyYXkpIHJldHVybjtcbiAgICAgICAgICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShtb2RlbC5pZCwgbW9kZWwucGFyZW50SWQsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5qC55o2uIFRvb2xiYXIg5LiK5LiN5ZCM57G75Z6L5a+55Zu+6L+b6KGM5pON5L2cXG4gICAqIEBwYXJhbSBjb2RlIOaTjeS9nOexu+Wei+e8lueggVxuICAgKiBAcGFyYW0gZ3JhcGggR3JhcGgg5a6e5L6LXG4gICAqL1xuXG5cbiAgVG9vbEJhci5wcm90b3R5cGUuaGFuZGxlRGVmYXVsdE9wZXJhdG9yID0gZnVuY3Rpb24gKGNvZGUsIGdyYXBoKSB7XG4gICAgdmFyIGN1cnJlbnRab29tID0gZ3JhcGguZ2V0Wm9vbSgpO1xuXG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlICdyZWRvJzpcbiAgICAgICAgdGhpcy5yZWRvKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd1bmRvJzpcbiAgICAgICAgdGhpcy51bmRvKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd6b29tT3V0JzpcbiAgICAgICAge1xuICAgICAgICAgIHZhciByYXRpb091dCA9IDEgLyAoMSAtIERFTFRBICogdGhpcy5nZXQoJ3pvb21TZW5zaXRpdml0eScpKTtcbiAgICAgICAgICB2YXIgbWF4Wm9vbSA9IHRoaXMuZ2V0KCdtYXhab29tJykgfHwgZ3JhcGguZ2V0KCdtYXhab29tJyk7XG5cbiAgICAgICAgICBpZiAocmF0aW9PdXQgKiBjdXJyZW50Wm9vbSA+IG1heFpvb20pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBncmFwaC56b29tVG8oY3VycmVudFpvb20gKiByYXRpb091dCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSAnem9vbUluJzpcbiAgICAgICAge1xuICAgICAgICAgIHZhciByYXRpb0luID0gMSAtIERFTFRBICogdGhpcy5nZXQoJ3pvb21TZW5zaXRpdml0eScpO1xuICAgICAgICAgIHZhciBtaW5ab29tID0gdGhpcy5nZXQoJ21pblpvb20nKSB8fCBncmFwaC5nZXQoJ21pblpvb20nKTtcblxuICAgICAgICAgIGlmIChyYXRpb0luICogY3VycmVudFpvb20gPCBtaW5ab29tKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZ3JhcGguem9vbVRvKGN1cnJlbnRab29tICogcmF0aW9Jbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSAncmVhbFpvb20nOlxuICAgICAgICBncmFwaC56b29tVG8oMSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhdXRvWm9vbSc6XG4gICAgICAgIGdyYXBoLmZpdFZpZXcoWzIwLCAyMF0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH07XG5cbiAgVG9vbEJhci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdG9vbEJhciA9IHRoaXMuZ2V0KCd0b29sQmFyJyk7XG5cbiAgICBpZiAodG9vbEJhcikge1xuICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcblxuICAgICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgICAgY29udGFpbmVyID0gdGhpcy5nZXQoJ2dyYXBoJykuZ2V0KCdjb250YWluZXInKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5lcikpIHtcbiAgICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKTtcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKHRvb2xCYXIpO1xuICAgIH1cblxuICAgIHZhciBoYW5kbGVDbGljayA9IHRoaXMuZ2V0KCdoYW5kbGVDbGljaycpO1xuXG4gICAgaWYgKGhhbmRsZUNsaWNrKSB7XG4gICAgICB0b29sQmFyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2spO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gVG9vbEJhcjtcbn0oQmFzZSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRvb2xCYXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/toolBar/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6-plugin/es/tooltip/index.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/g6-plugin/es/tooltip/index.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! insert-css */ \"./node_modules/insert-css/index.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(insert_css__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\n\n\ntypeof document !== 'undefined' && insert_css__WEBPACK_IMPORTED_MODULE_2___default()(\"\\n .g6-component-tooltip {\\n border: 1px solid #e2e2e2;\\n border-radius: 4px;\\n font-size: 12px;\\n color: #545454;\\n background-color: rgba(255, 255, 255, 0.9);\\n padding: 10px 8px;\\n box-shadow: rgb(174, 174, 174) 0px 0px 10px;\\n }\\n .tooltip-type {\\n padding: 0;\\n margin: 0;\\n }\\n .tooltip-id {\\n color: #531dab;\\n }\\n\");\n\nvar Tooltip =\n/** @class */\nfunction (_super) {\n __extends(Tooltip, _super);\n\n function Tooltip(config) {\n return _super.call(this, config) || this;\n }\n\n Tooltip.prototype.getDefaultCfgs = function () {\n return {\n offsetX: 6,\n offsetY: 6,\n // 指定菜单内容,function(e) {...}\n getContent: function getContent(e) {\n return \"\\n

\\u7C7B\\u578B\\uFF1A\".concat(e.item.getType(), \"

\\n ID\\uFF1A\").concat(e.item.getID(), \"\\n \");\n },\n shouldBegin: function shouldBegin(e) {\n return true;\n },\n itemTypes: ['node', 'edge', 'combo'],\n trigger: 'mouseenter',\n fixToNode: undefined\n };\n }; // class-methods-use-this\n\n\n Tooltip.prototype.getEvents = function () {\n if (this.get('trigger') === 'click') {\n return {\n 'node:click': 'onClick',\n 'edge:click': 'onClick',\n 'combo:click': 'onClick',\n 'canvas:click': 'onMouseLeave',\n afterremoveitem: 'onMouseLeave',\n contextmenu: 'onMouseLeave',\n drag: 'onMouseLeave'\n };\n }\n\n return {\n 'node:mouseenter': 'onMouseEnter',\n 'node:mouseleave': 'onMouseLeave',\n 'node:mousemove': 'onMouseMove',\n 'edge:mouseenter': 'onMouseEnter',\n 'edge:mouseleave': 'onMouseLeave',\n 'edge:mousemove': 'onMouseMove',\n 'combo:mouseenter': 'onMouseEnter',\n 'combo:mouseleave': 'onMouseLeave',\n 'combo:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave',\n contextmenu: 'onMouseLeave',\n 'node:drag': 'onMouseLeave'\n };\n };\n\n Tooltip.prototype.init = function () {\n var self = this;\n var className = self.get('className') || 'g6-component-tooltip';\n var tooltip = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"
\"));\n var container = self.get('container');\n\n if (!container) {\n container = self.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n position: 'absolute',\n visibility: 'hidden',\n display: 'none'\n });\n container.appendChild(tooltip);\n\n if (self.get('trigger') !== 'click') {\n tooltip.addEventListener('mouseenter', function (e) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n visibility: 'visible',\n display: 'unset'\n });\n });\n tooltip.addEventListener('mouseleave', function (e) {\n self.hideTooltip();\n });\n }\n\n self.set('tooltip', tooltip);\n };\n\n Tooltip.prototype.onClick = function (e) {\n var itemTypes = this.get('itemTypes');\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n var item = e.item;\n var graph = this.get('graph'); // 若与上一次同一 item,隐藏该 tooltip\n\n if (this.currentTarget === item) {\n this.currentTarget = null;\n this.hideTooltip();\n graph.emit('tooltipchange', {\n item: e.item,\n action: 'hide'\n });\n } else {\n this.currentTarget = item;\n this.showTooltip(e);\n graph.emit('tooltipchange', {\n item: e.item,\n action: 'show'\n });\n }\n };\n\n Tooltip.prototype.onMouseEnter = function (e) {\n var itemTypes = this.get('itemTypes');\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n var item = e.item;\n var graph = this.get('graph');\n this.currentTarget = item;\n this.showTooltip(e);\n graph.emit('tooltipchange', {\n item: e.item,\n action: 'show'\n });\n };\n\n Tooltip.prototype.onMouseMove = function (e) {\n var itemTypes = this.get('itemTypes');\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n\n if (!this.currentTarget || e.item !== this.currentTarget) {\n return;\n }\n\n this.showTooltip(e);\n };\n\n Tooltip.prototype.onMouseLeave = function () {\n this.hideTooltip();\n var graph = this.get('graph');\n graph.emit('tooltipchange', {\n item: this.currentTarget,\n action: 'hide'\n });\n this.currentTarget = null;\n };\n\n Tooltip.prototype.showTooltip = function (e) {\n if (!e.item) {\n return;\n }\n\n var itemTypes = this.get('itemTypes');\n if (e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n var container = this.get('tooltip');\n var getContent = this.get('getContent');\n var tooltip = getContent(e);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(tooltip)) {\n container.innerHTML = tooltip;\n } else {\n container.innerHTML = tooltip.outerHTML;\n }\n\n this.updatePosition(e);\n };\n\n Tooltip.prototype.hideTooltip = function () {\n var tooltip = this.get('tooltip');\n\n if (tooltip) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n visibility: 'hidden',\n display: 'none'\n });\n }\n };\n\n Tooltip.prototype.updatePosition = function (e) {\n var shouldBegin = this.get('shouldBegin');\n var tooltip = this.get('tooltip');\n\n if (!shouldBegin(e)) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n visibility: 'hidden',\n display: 'none'\n });\n return;\n }\n\n var graph = this.get('graph');\n var width = graph.get('width');\n var height = graph.get('height');\n var offsetX = this.get('offsetX') || 0;\n var offsetY = this.get('offsetY') || 0; // const mousePos = graph.getPointByClient(e.clientX, e.clientY);\n\n var point = graph.getPointByClient(e.clientX, e.clientY);\n var fixToNode = this.get('fixToNode');\n var item = e.item;\n\n if (item.getType && item.getType() === 'node' && fixToNode && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(fixToNode) && fixToNode.length >= 2) {\n var itemBBox = item.getBBox();\n point = {\n x: itemBBox.minX + itemBBox.width * fixToNode[0],\n y: itemBBox.minY + itemBBox.height * fixToNode[1]\n };\n }\n\n var _a = graph.getCanvasByPoint(point.x, point.y),\n x = _a.x,\n y = _a.y;\n\n var graphContainer = graph.getContainer();\n var res = {\n x: x + graphContainer.offsetLeft + offsetX,\n y: y + graphContainer.offsetTop + offsetY\n }; // 先修改为 visible 方可正确计算 bbox\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n visibility: 'visible',\n display: 'unset'\n });\n var bbox = tooltip.getBoundingClientRect();\n\n if (x + bbox.width + offsetX > width) {\n res.x -= bbox.width + offsetX;\n }\n\n if (y + bbox.height + offsetY > height) {\n res.y -= bbox.height + offsetY;\n }\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n left: \"\".concat(res.x, \"px\"),\n top: \"\".concat(res.y, \"px\")\n });\n };\n\n Tooltip.prototype.hide = function () {\n this.onMouseLeave();\n };\n\n Tooltip.prototype.destroy = function () {\n var tooltip = this.get('tooltip');\n\n if (tooltip) {\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.removeChild(tooltip);\n }\n };\n\n return Tooltip;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Tooltip);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYtcGx1Z2luL2VzL3Rvb2x0aXAvaW5kZXguanM/MjA1ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRXFEO0FBQ1A7QUFDWjtBQUNSO0FBQzNCLG1DQUFtQyxpREFBUyw2QkFBNkIsZ0NBQWdDLHlCQUF5QixzQkFBc0IscUJBQXFCLGlEQUFpRCx3QkFBd0Isa0RBQWtELEtBQUssbUJBQW1CLGlCQUFpQixnQkFBZ0IsS0FBSyxpQkFBaUIscUJBQXFCLEtBQUs7O0FBRWpaO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixnRUFBUztBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBLElBQUksZ0VBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLFFBQVEsZ0VBQVM7QUFDakI7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSxnRUFBUztBQUNmO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLGdFQUFTO0FBQ2Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7O0FBRUEsa0VBQWtFLDBEQUFPO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLElBQUksZ0VBQVM7QUFDYjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSwyREFBUTtBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyxzRUFBTyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9nNi1wbHVnaW4vZXMvdG9vbHRpcC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2V4dGVuZHMgPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9leHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gZXh0ZW5kU3RhdGljcyhkLCBiKSB7XG4gICAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZC5fX3Byb3RvX18gPSBiO1xuICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGZvciAodmFyIHAgaW4gYikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICAgIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgZnVuY3Rpb24gX18oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICB9XG5cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gIH07XG59KCk7XG5cbmltcG9ydCB7IG1vZGlmeUNTUywgY3JlYXRlRG9tIH0gZnJvbSAnQGFudHYvZG9tLXV0aWwnO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBpbnNlcnRDc3MgZnJvbSAnaW5zZXJ0LWNzcyc7XG5pbXBvcnQgQmFzZSBmcm9tICcuLi9iYXNlJztcbnR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaW5zZXJ0Q3NzKFwiXFxuICAuZzYtY29tcG9uZW50LXRvb2x0aXAge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlMmUyO1xcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgY29sb3I6ICM1NDU0NTQ7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcXG4gICAgcGFkZGluZzogMTBweCA4cHg7XFxuICAgIGJveC1zaGFkb3c6IHJnYigxNzQsIDE3NCwgMTc0KSAwcHggMHB4IDEwcHg7XFxuICB9XFxuICAudG9vbHRpcC10eXBlIHtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgfVxcbiAgLnRvb2x0aXAtaWQge1xcbiAgICBjb2xvcjogIzUzMWRhYjtcXG4gIH1cXG5cIik7XG5cbnZhciBUb29sdGlwID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKFRvb2x0aXAsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gVG9vbHRpcChjb25maWcpIHtcbiAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgY29uZmlnKSB8fCB0aGlzO1xuICB9XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9mZnNldFg6IDYsXG4gICAgICBvZmZzZXRZOiA2LFxuICAgICAgLy8g5oyH5a6a6I+c5Y2V5YaF5a6577yMZnVuY3Rpb24oZSkgey4uLn1cbiAgICAgIGdldENvbnRlbnQ6IGZ1bmN0aW9uIGdldENvbnRlbnQoZSkge1xuICAgICAgICByZXR1cm4gXCJcXG4gICAgICAgICAgPGg0IGNsYXNzPSd0b29sdGlwLXR5cGUnPlxcdTdDN0JcXHU1NzhCXFx1RkYxQVwiLmNvbmNhdChlLml0ZW0uZ2V0VHlwZSgpLCBcIjwvaDQ+XFxuICAgICAgICAgIDxzcGFuIGNsYXNzPSd0b29sdGlwLWlkJz5JRFxcdUZGMUFcIikuY29uY2F0KGUuaXRlbS5nZXRJRCgpLCBcIjwvc3Bhbj5cXG4gICAgICAgIFwiKTtcbiAgICAgIH0sXG4gICAgICBzaG91bGRCZWdpbjogZnVuY3Rpb24gc2hvdWxkQmVnaW4oZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBpdGVtVHlwZXM6IFsnbm9kZScsICdlZGdlJywgJ2NvbWJvJ10sXG4gICAgICB0cmlnZ2VyOiAnbW91c2VlbnRlcicsXG4gICAgICBmaXhUb05vZGU6IHVuZGVmaW5lZFxuICAgIH07XG4gIH07IC8vIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcblxuXG4gIFRvb2x0aXAucHJvdG90eXBlLmdldEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5nZXQoJ3RyaWdnZXInKSA9PT0gJ2NsaWNrJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ25vZGU6Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAgICdlZGdlOmNsaWNrJzogJ29uQ2xpY2snLFxuICAgICAgICAnY29tYm86Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAgICdjYW52YXM6Y2xpY2snOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICAgYWZ0ZXJyZW1vdmVpdGVtOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICAgY29udGV4dG1lbnU6ICdvbk1vdXNlTGVhdmUnLFxuICAgICAgICBkcmFnOiAnb25Nb3VzZUxlYXZlJ1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJ25vZGU6bW91c2VlbnRlcic6ICdvbk1vdXNlRW50ZXInLFxuICAgICAgJ25vZGU6bW91c2VsZWF2ZSc6ICdvbk1vdXNlTGVhdmUnLFxuICAgICAgJ25vZGU6bW91c2Vtb3ZlJzogJ29uTW91c2VNb3ZlJyxcbiAgICAgICdlZGdlOm1vdXNlZW50ZXInOiAnb25Nb3VzZUVudGVyJyxcbiAgICAgICdlZGdlOm1vdXNlbGVhdmUnOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICdlZGdlOm1vdXNlbW92ZSc6ICdvbk1vdXNlTW92ZScsXG4gICAgICAnY29tYm86bW91c2VlbnRlcic6ICdvbk1vdXNlRW50ZXInLFxuICAgICAgJ2NvbWJvOm1vdXNlbGVhdmUnOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICdjb21ibzptb3VzZW1vdmUnOiAnb25Nb3VzZU1vdmUnLFxuICAgICAgYWZ0ZXJyZW1vdmVpdGVtOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgIGNvbnRleHRtZW51OiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICdub2RlOmRyYWcnOiAnb25Nb3VzZUxlYXZlJ1xuICAgIH07XG4gIH07XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHNlbGYuZ2V0KCdjbGFzc05hbWUnKSB8fCAnZzYtY29tcG9uZW50LXRvb2x0aXAnO1xuICAgIHZhciB0b29sdGlwID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz1cIi5jb25jYXQoY2xhc3NOYW1lLCBcIj48L2Rpdj5cIikpO1xuICAgIHZhciBjb250YWluZXIgPSBzZWxmLmdldCgnY29udGFpbmVyJyk7XG5cbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyID0gc2VsZi5nZXQoJ2dyYXBoJykuZ2V0KCdjb250YWluZXInKTtcbiAgICB9XG5cbiAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBtb2RpZnlDU1ModG9vbHRpcCwge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgIH0pO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0b29sdGlwKTtcblxuICAgIGlmIChzZWxmLmdldCgndHJpZ2dlcicpICE9PSAnY2xpY2snKSB7XG4gICAgICB0b29sdGlwLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBtb2RpZnlDU1ModG9vbHRpcCwge1xuICAgICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgICAgICBkaXNwbGF5OiAndW5zZXQnXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0b29sdGlwLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBzZWxmLmhpZGVUb29sdGlwKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzZWxmLnNldCgndG9vbHRpcCcsIHRvb2x0aXApO1xuICB9O1xuXG4gIFRvb2x0aXAucHJvdG90eXBlLm9uQ2xpY2sgPSBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBpdGVtVHlwZXMgPSB0aGlzLmdldCgnaXRlbVR5cGVzJyk7XG4gICAgaWYgKGUuaXRlbSAmJiBlLml0ZW0uZ2V0VHlwZSAmJiBpdGVtVHlwZXMuaW5kZXhPZihlLml0ZW0uZ2V0VHlwZSgpKSA9PT0gLTEpIHJldHVybjtcbiAgICB2YXIgaXRlbSA9IGUuaXRlbTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTsgLy8g6Iul5LiO5LiK5LiA5qyh5ZCM5LiAIGl0ZW3vvIzpmpDol4/or6UgdG9vbHRpcFxuXG4gICAgaWYgKHRoaXMuY3VycmVudFRhcmdldCA9PT0gaXRlbSkge1xuICAgICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcbiAgICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgICAgIGdyYXBoLmVtaXQoJ3Rvb2x0aXBjaGFuZ2UnLCB7XG4gICAgICAgIGl0ZW06IGUuaXRlbSxcbiAgICAgICAgYWN0aW9uOiAnaGlkZSdcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRUYXJnZXQgPSBpdGVtO1xuICAgICAgdGhpcy5zaG93VG9vbHRpcChlKTtcbiAgICAgIGdyYXBoLmVtaXQoJ3Rvb2x0aXBjaGFuZ2UnLCB7XG4gICAgICAgIGl0ZW06IGUuaXRlbSxcbiAgICAgICAgYWN0aW9uOiAnc2hvdydcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBUb29sdGlwLnByb3RvdHlwZS5vbk1vdXNlRW50ZXIgPSBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBpdGVtVHlwZXMgPSB0aGlzLmdldCgnaXRlbVR5cGVzJyk7XG4gICAgaWYgKGUuaXRlbSAmJiBlLml0ZW0uZ2V0VHlwZSAmJiBpdGVtVHlwZXMuaW5kZXhPZihlLml0ZW0uZ2V0VHlwZSgpKSA9PT0gLTEpIHJldHVybjtcbiAgICB2YXIgaXRlbSA9IGUuaXRlbTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB0aGlzLmN1cnJlbnRUYXJnZXQgPSBpdGVtO1xuICAgIHRoaXMuc2hvd1Rvb2x0aXAoZSk7XG4gICAgZ3JhcGguZW1pdCgndG9vbHRpcGNoYW5nZScsIHtcbiAgICAgIGl0ZW06IGUuaXRlbSxcbiAgICAgIGFjdGlvbjogJ3Nob3cnXG4gICAgfSk7XG4gIH07XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUub25Nb3VzZU1vdmUgPSBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBpdGVtVHlwZXMgPSB0aGlzLmdldCgnaXRlbVR5cGVzJyk7XG4gICAgaWYgKGUuaXRlbSAmJiBlLml0ZW0uZ2V0VHlwZSAmJiBpdGVtVHlwZXMuaW5kZXhPZihlLml0ZW0uZ2V0VHlwZSgpKSA9PT0gLTEpIHJldHVybjtcblxuICAgIGlmICghdGhpcy5jdXJyZW50VGFyZ2V0IHx8IGUuaXRlbSAhPT0gdGhpcy5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93VG9vbHRpcChlKTtcbiAgfTtcblxuICBUb29sdGlwLnByb3RvdHlwZS5vbk1vdXNlTGVhdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIGdyYXBoLmVtaXQoJ3Rvb2x0aXBjaGFuZ2UnLCB7XG4gICAgICBpdGVtOiB0aGlzLmN1cnJlbnRUYXJnZXQsXG4gICAgICBhY3Rpb246ICdoaWRlJ1xuICAgIH0pO1xuICAgIHRoaXMuY3VycmVudFRhcmdldCA9IG51bGw7XG4gIH07XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUuc2hvd1Rvb2x0aXAgPSBmdW5jdGlvbiAoZSkge1xuICAgIGlmICghZS5pdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1UeXBlcyA9IHRoaXMuZ2V0KCdpdGVtVHlwZXMnKTtcbiAgICBpZiAoZS5pdGVtLmdldFR5cGUgJiYgaXRlbVR5cGVzLmluZGV4T2YoZS5pdGVtLmdldFR5cGUoKSkgPT09IC0xKSByZXR1cm47XG4gICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCd0b29sdGlwJyk7XG4gICAgdmFyIGdldENvbnRlbnQgPSB0aGlzLmdldCgnZ2V0Q29udGVudCcpO1xuICAgIHZhciB0b29sdGlwID0gZ2V0Q29udGVudChlKTtcblxuICAgIGlmIChpc1N0cmluZyh0b29sdGlwKSkge1xuICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IHRvb2x0aXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSB0b29sdGlwLm91dGVySFRNTDtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKGUpO1xuICB9O1xuXG4gIFRvb2x0aXAucHJvdG90eXBlLmhpZGVUb29sdGlwID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0b29sdGlwID0gdGhpcy5nZXQoJ3Rvb2x0aXAnKTtcblxuICAgIGlmICh0b29sdGlwKSB7XG4gICAgICBtb2RpZnlDU1ModG9vbHRpcCwge1xuICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgICAgZGlzcGxheTogJ25vbmUnXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUudXBkYXRlUG9zaXRpb24gPSBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBzaG91bGRCZWdpbiA9IHRoaXMuZ2V0KCdzaG91bGRCZWdpbicpO1xuICAgIHZhciB0b29sdGlwID0gdGhpcy5nZXQoJ3Rvb2x0aXAnKTtcblxuICAgIGlmICghc2hvdWxkQmVnaW4oZSkpIHtcbiAgICAgIG1vZGlmeUNTUyh0b29sdGlwLCB7XG4gICAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICAgICAgICBkaXNwbGF5OiAnbm9uZSdcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciB3aWR0aCA9IGdyYXBoLmdldCgnd2lkdGgnKTtcbiAgICB2YXIgaGVpZ2h0ID0gZ3JhcGguZ2V0KCdoZWlnaHQnKTtcbiAgICB2YXIgb2Zmc2V0WCA9IHRoaXMuZ2V0KCdvZmZzZXRYJykgfHwgMDtcbiAgICB2YXIgb2Zmc2V0WSA9IHRoaXMuZ2V0KCdvZmZzZXRZJykgfHwgMDsgLy8gY29uc3QgbW91c2VQb3MgPSBncmFwaC5nZXRQb2ludEJ5Q2xpZW50KGUuY2xpZW50WCwgZS5jbGllbnRZKTtcblxuICAgIHZhciBwb2ludCA9IGdyYXBoLmdldFBvaW50QnlDbGllbnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgIHZhciBmaXhUb05vZGUgPSB0aGlzLmdldCgnZml4VG9Ob2RlJyk7XG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07XG5cbiAgICBpZiAoaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSAnbm9kZScgJiYgZml4VG9Ob2RlICYmIGlzQXJyYXkoZml4VG9Ob2RlKSAmJiBmaXhUb05vZGUubGVuZ3RoID49IDIpIHtcbiAgICAgIHZhciBpdGVtQkJveCA9IGl0ZW0uZ2V0QkJveCgpO1xuICAgICAgcG9pbnQgPSB7XG4gICAgICAgIHg6IGl0ZW1CQm94Lm1pblggKyBpdGVtQkJveC53aWR0aCAqIGZpeFRvTm9kZVswXSxcbiAgICAgICAgeTogaXRlbUJCb3gubWluWSArIGl0ZW1CQm94LmhlaWdodCAqIGZpeFRvTm9kZVsxXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgX2EgPSBncmFwaC5nZXRDYW52YXNCeVBvaW50KHBvaW50LngsIHBvaW50LnkpLFxuICAgICAgICB4ID0gX2EueCxcbiAgICAgICAgeSA9IF9hLnk7XG5cbiAgICB2YXIgZ3JhcGhDb250YWluZXIgPSBncmFwaC5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgeDogeCArIGdyYXBoQ29udGFpbmVyLm9mZnNldExlZnQgKyBvZmZzZXRYLFxuICAgICAgeTogeSArIGdyYXBoQ29udGFpbmVyLm9mZnNldFRvcCArIG9mZnNldFlcbiAgICB9OyAvLyDlhYjkv67mlLnkuLogdmlzaWJsZSDmlrnlj6/mraPnoa7orqHnrpcgYmJveFxuXG4gICAgbW9kaWZ5Q1NTKHRvb2x0aXAsIHtcbiAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgIGRpc3BsYXk6ICd1bnNldCdcbiAgICB9KTtcbiAgICB2YXIgYmJveCA9IHRvb2x0aXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBpZiAoeCArIGJib3gud2lkdGggKyBvZmZzZXRYID4gd2lkdGgpIHtcbiAgICAgIHJlcy54IC09IGJib3gud2lkdGggKyBvZmZzZXRYO1xuICAgIH1cblxuICAgIGlmICh5ICsgYmJveC5oZWlnaHQgKyBvZmZzZXRZID4gaGVpZ2h0KSB7XG4gICAgICByZXMueSAtPSBiYm94LmhlaWdodCArIG9mZnNldFk7XG4gICAgfVxuXG4gICAgbW9kaWZ5Q1NTKHRvb2x0aXAsIHtcbiAgICAgIGxlZnQ6IFwiXCIuY29uY2F0KHJlcy54LCBcInB4XCIpLFxuICAgICAgdG9wOiBcIlwiLmNvbmNhdChyZXMueSwgXCJweFwiKVxuICAgIH0pO1xuICB9O1xuXG4gIFRvb2x0aXAucHJvdG90eXBlLmhpZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5vbk1vdXNlTGVhdmUoKTtcbiAgfTtcblxuICBUb29sdGlwLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0b29sdGlwID0gdGhpcy5nZXQoJ3Rvb2x0aXAnKTtcblxuICAgIGlmICh0b29sdGlwKSB7XG4gICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuXG4gICAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgICBjb250YWluZXIgPSB0aGlzLmdldCgnZ3JhcGgnKS5nZXQoJ2NvbnRhaW5lcicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xuICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXIpO1xuICAgICAgfVxuXG4gICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQodG9vbHRpcCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBUb29sdGlwO1xufShCYXNlKTtcblxuZXhwb3J0IGRlZmF1bHQgVG9vbHRpcDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6-plugin/es/tooltip/index.js\n"); /***/ }), /***/ "./node_modules/@antv/g6/es/index.js": /*!*******************************************!*\ !*** ./node_modules/@antv/g6/es/index.js ***! \*******************************************/ /*! exports provided: G6GraphEvent, G6Event, Node, Edge, Combo, Hull, registerNode, registerCombo, AbstractGraph, registerEdge, registerBehavior, AbstractLayout, AbstractEvent, BaseGlobal, Graph, TreeGraph, Util, Layout, TreeLayout, registerLayout, Global, Minimap, Grid, Bundling, Menu, Fisheye, Algorithm, ToolBar, Tooltip, TimeBar, ImageMinimap, EdgeFilterLens, SnapLine, Legend, Arrow, Marker, Shape, default, version */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-pc */ \"./node_modules/@antv/g6-pc/es/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"G6GraphEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"G6Event\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Node\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Edge\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Combo\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Combo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Hull\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Hull\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerNode\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"registerNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerCombo\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"registerCombo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGraph\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"AbstractGraph\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerEdge\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"registerEdge\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerBehavior\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"registerBehavior\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractLayout\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"AbstractLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractEvent\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"AbstractEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BaseGlobal\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"BaseGlobal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Graph\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Graph\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeGraph\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"TreeGraph\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Util\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Layout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeLayout\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"TreeLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerLayout\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Global\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Global\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Minimap\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Minimap\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Grid\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Grid\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Bundling\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Bundling\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Menu\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Menu\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Fisheye\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Fisheye\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Algorithm\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Algorithm\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ToolBar\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"ToolBar\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Tooltip\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Tooltip\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TimeBar\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"TimeBar\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ImageMinimap\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"ImageMinimap\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EdgeFilterLens\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"EdgeFilterLens\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SnapLine\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"SnapLine\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Legend\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Legend\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Arrow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Marker\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Shape\"]; });\n\n\n_antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"default\"].version = '4.5.3';\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\nvar version = '4.5.3';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvZzYvZXMvaW5kZXguanM/N2MzZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZCO0FBQzdCLG1EQUFFO0FBQzBCO0FBQ2Isa0hBQUUsRUFBQztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2c2L2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEc2IGZyb20gJ0BhbnR2L2c2LXBjJztcbkc2LnZlcnNpb24gPSAnNC41LjMnO1xuZXhwb3J0ICogZnJvbSAnQGFudHYvZzYtcGMnO1xuZXhwb3J0IGRlZmF1bHQgRzY7XG5leHBvcnQgdmFyIHZlcnNpb24gPSAnNC41LjMnOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/g6/es/index.js\n"); /***/ }), /***/ "./node_modules/@antv/hierarchy/build/hierarchy.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/hierarchy/build/hierarchy.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 31);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n return Array.isArray ? Array.isArray(value) : Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Array');\n});\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar isArrayLike = function (value) {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isArrayLike);\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_object__ = __webpack_require__(13);\n\n\n\nfunction each(elements, func) {\n if (!elements) {\n return;\n }\n\n var rst;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n\n if (rst === false) {\n break;\n }\n }\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__is_object__[\"a\" /* default */])(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (each);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Function');\n});\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar toString = {}.toString;\n\nvar isType = function (value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isType);\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\n\n\nvar isNumber = function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Number');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isNumber);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// isFinite,\nvar isNil = function (value) {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isNil);\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _require = __webpack_require__(33),\n mix = _require.mix;\n\nmodule.exports = {\n assign: mix\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (str) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(str, 'String');\n});\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object_like__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_type__ = __webpack_require__(4);\n\n\n\nvar isPlainObject = function (value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__[\"a\" /* default */])(value) || !Object(__WEBPACK_IMPORTED_MODULE_1__is_type__[\"a\" /* default */])(value, 'Object')) {\n return false;\n }\n\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n\n var proto = value;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(value) === proto;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isPlainObject);\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(value)) return '';\n return value.toString();\n});\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hierarchy = __webpack_require__(18);\n\nvar Layout = /*#__PURE__*/function () {\n function Layout(root, options) {\n if (options === void 0) {\n options = {};\n }\n\n var me = this;\n me.options = options;\n me.rootNode = hierarchy(root, options);\n }\n\n var _proto = Layout.prototype;\n\n _proto.execute = function execute() {\n throw new Error('please override this method');\n };\n\n return Layout;\n}();\n\nmodule.exports = Layout;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\n\nvar contains = function (arr, value) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(arr)) {\n return false;\n }\n\n return arr.indexOf(value) > -1;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (contains);\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n});\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1);\n\n\n\nvar filter = function (arr, func) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(arr)) {\n return arr;\n }\n\n var result = [];\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(arr, function (value, index) {\n if (func(value, index)) {\n result.push(value);\n }\n });\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (filter);\n\n/***/ }),\n/* 15 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar isObjectLike = function (value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isObjectLike);\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = mix;\n// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist, obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n dist[key] = obj[key];\n }\n }\n}\n\nfunction mix(dist, src1, src2, src3) {\n if (src1) _mix(dist, src1);\n if (src2) _mix(dist, src2);\n if (src3) _mix(dist, src3);\n return dist;\n}\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar separateTree = __webpack_require__(30);\n\nvar VALID_DIRECTIONS = ['LR', // left to right\n'RL', // right to left\n'TB', // top to bottom\n'BT', // bottom to top\n'H', // horizontal\n'V' // vertical\n];\nvar HORIZONTAL_DIRECTIONS = ['LR', 'RL', 'H'];\n\nvar isHorizontal = function isHorizontal(direction) {\n return HORIZONTAL_DIRECTIONS.indexOf(direction) > -1;\n};\n\nvar DEFAULT_DIRECTION = VALID_DIRECTIONS[0];\n\nmodule.exports = function (root, options, layoutAlgrithm) {\n var direction = options.direction || DEFAULT_DIRECTION;\n options.isHorizontal = isHorizontal(direction);\n\n if (direction && VALID_DIRECTIONS.indexOf(direction) === -1) {\n throw new TypeError(\"Invalid direction: \" + direction);\n }\n\n if (direction === VALID_DIRECTIONS[0]) {\n // LR\n layoutAlgrithm(root, options);\n } else if (direction === VALID_DIRECTIONS[1]) {\n // RL\n layoutAlgrithm(root, options);\n root.right2left();\n } else if (direction === VALID_DIRECTIONS[2]) {\n // TB\n layoutAlgrithm(root, options);\n } else if (direction === VALID_DIRECTIONS[3]) {\n // BT\n layoutAlgrithm(root, options);\n root.bottom2top();\n } else if (direction === VALID_DIRECTIONS[4] || direction === VALID_DIRECTIONS[5]) {\n // H or V\n // separate into left and right trees\n var _separateTree = separateTree(root, options),\n left = _separateTree.left,\n right = _separateTree.right; // do layout for left and right trees\n\n\n layoutAlgrithm(left, options);\n layoutAlgrithm(right, options);\n options.isHorizontal ? left.right2left() : left.bottom2top(); // combine left and right trees\n\n right.translate(left.x - right.x, left.y - right.y); // translate root\n\n root.x = left.x;\n root.y = right.y;\n var bb = root.getBoundingBox();\n\n if (options.isHorizontal) {\n if (bb.top < 0) {\n root.translate(0, -bb.top);\n }\n } else {\n if (bb.left < 0) {\n root.translate(-bb.left, 0);\n }\n }\n } // fixed root position, default value is true\n\n\n var fixedRoot = options.fixedRoot;\n if (fixedRoot === undefined) fixedRoot = true;\n\n if (fixedRoot) {\n root.translate(-(root.x + root.width / 2 + root.hgap), -(root.y + root.height / 2 + root.vgap));\n }\n\n return root;\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable no-cond-assign */\nvar util = __webpack_require__(7);\n\nvar PEM = 18;\nvar DEFAULT_HEIGHT = PEM * 2;\nvar DEFAULT_GAP = PEM;\nvar DEFAULT_OPTIONS = {\n getId: function getId(d) {\n return d.id || d.name;\n },\n getPreH: function getPreH(d) {\n return d.preH || 0;\n },\n getPreV: function getPreV(d) {\n return d.preV || 0;\n },\n getHGap: function getHGap(d) {\n return d.hgap || DEFAULT_GAP;\n },\n getVGap: function getVGap(d) {\n return d.vgap || DEFAULT_GAP;\n },\n getChildren: function getChildren(d) {\n return d.children;\n },\n getHeight: function getHeight(d) {\n return d.height || DEFAULT_HEIGHT;\n },\n getWidth: function getWidth(d) {\n var label = d.label || ' ';\n return d.width || label.split('').length * PEM; // FIXME DO NOT get width like this\n }\n};\n\nfunction Node(data, options) {\n var me = this;\n me.vgap = me.hgap = 0;\n if (data instanceof Node) return data;\n me.data = data;\n /*\n * Gaps: filling space between nodes\n * (x, y) ----------------------\n * | vgap |\n * | -------------------- h\n * | h | | e\n * | g | | i\n * | a | | g\n * | p | | h\n * | --------------------- t\n * | |\n * -----------width------------\n */\n\n var hgap = options.getHGap(data);\n var vgap = options.getVGap(data);\n me.preH = options.getPreH(data);\n me.preV = options.getPreV(data);\n me.width = options.getWidth(data);\n me.height = options.getHeight(data);\n me.width += me.preH;\n me.height += me.preV;\n me.id = options.getId(data);\n me.x = me.y = 0;\n me.depth = 0;\n\n if (!me.children) {\n me.children = [];\n }\n\n me.addGap(hgap, vgap);\n return me;\n}\n\nutil.assign(Node.prototype, {\n isRoot: function isRoot() {\n return this.depth === 0;\n },\n isLeaf: function isLeaf() {\n return this.children.length === 0;\n },\n addGap: function addGap(hgap, vgap) {\n var me = this;\n me.hgap += hgap;\n me.vgap += vgap;\n me.width += 2 * hgap;\n me.height += 2 * vgap;\n },\n eachNode: function eachNode(callback) {\n // Depth First traverse\n var me = this;\n var nodes = [me];\n var current;\n\n while (current = nodes.shift()) {\n callback(current);\n nodes = current.children.concat(nodes);\n }\n },\n DFTraverse: function DFTraverse(callback) {\n // Depth First traverse\n this.eachNode(callback);\n },\n BFTraverse: function BFTraverse(callback) {\n // Breadth First traverse\n var me = this;\n var nodes = [me];\n var current;\n\n while (current = nodes.shift()) {\n callback(current);\n nodes = nodes.concat(current.children);\n }\n },\n getBoundingBox: function getBoundingBox() {\n // BBox for just one tree node\n var bb = {\n left: Number.MAX_VALUE,\n top: Number.MAX_VALUE,\n width: 0,\n height: 0\n };\n this.eachNode(function (node) {\n bb.left = Math.min(bb.left, node.x);\n bb.top = Math.min(bb.top, node.y);\n bb.width = Math.max(bb.width, node.x + node.width);\n bb.height = Math.max(bb.height, node.y + node.height);\n });\n return bb;\n },\n // translate\n translate: function translate(tx, ty) {\n if (tx === void 0) {\n tx = 0;\n }\n\n if (ty === void 0) {\n ty = 0;\n }\n\n this.eachNode(function (node) {\n node.x += tx;\n node.y += ty;\n node.x += node.preH;\n node.y += node.preV;\n });\n },\n right2left: function right2left() {\n var me = this;\n var bb = me.getBoundingBox();\n me.eachNode(function (node) {\n node.x = node.x - (node.x - bb.left) * 2 - node.width; // node.x = - node.x;\n });\n me.translate(bb.width, 0);\n },\n bottom2top: function bottom2top() {\n var me = this;\n var bb = me.getBoundingBox();\n me.eachNode(function (node) {\n node.y = node.y - (node.y - bb.top) * 2 - node.height; // node.y = - node.y;\n });\n me.translate(0, bb.height);\n }\n});\n\nfunction hierarchy(data, options, isolated) {\n if (options === void 0) {\n options = {};\n }\n\n options = util.assign({}, DEFAULT_OPTIONS, options);\n var root = new Node(data, options);\n var nodes = [root];\n var node;\n\n if (!isolated && !data.collapsed) {\n while (node = nodes.shift()) {\n if (!node.data.collapsed) {\n var children = options.getChildren(node.data);\n var length = children ? children.length : 0;\n node.children = new Array(length);\n\n if (children && length) {\n for (var i = 0; i < length; i++) {\n var child = new Node(children[i], options);\n node.children[i] = child;\n nodes.push(child);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n }\n }\n\n return root;\n}\n\nmodule.exports = hierarchy;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys__ = __webpack_require__(20);\n\n\n\nfunction isMatch(obj, attrs) {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys__[\"a\" /* default */])(attrs);\n\n var length = _keys.length;\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(obj)) return !length;\n\n for (var i = 0; i < length; i += 1) {\n var key = _keys[i];\n\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n\n return true;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isMatch);\n\n/***/ }),\n/* 20 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3);\n\n\nvar keys = Object.keys ? function (obj) {\n return Object.keys(obj);\n} : function (obj) {\n var result = [];\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(obj, function (value, key) {\n if (!(Object(__WEBPACK_IMPORTED_MODULE_1__is_function__[\"a\" /* default */])(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"a\"] = (keys);\n\n/***/ }),\n/* 21 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\nvar splice = Array.prototype.splice;\n\nvar pullAt = function pullAt(arr, indexes) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(arr)) {\n return [];\n }\n\n var length = arr ? indexes.length : 0;\n var last = length - 1;\n\n while (length--) {\n var previous = void 0;\n var index = indexes[length];\n\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n\n return arr;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (pullAt);\n\n/***/ }),\n/* 22 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each__ = __webpack_require__(2);\n\n\n\nvar uniq = function (arr) {\n var resultArr = [];\n Object(__WEBPACK_IMPORTED_MODULE_1__each__[\"a\" /* default */])(arr, function (item) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__contains__[\"a\" /* default */])(resultArr, item)) {\n resultArr.push(item);\n }\n });\n return resultArr;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (uniq);\n\n/***/ }),\n/* 23 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__group_by__ = __webpack_require__(24);\n\n\n\n\nvar groupToMap = function (data, condition) {\n if (!condition) {\n return {\n 0: data\n };\n }\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_function__[\"a\" /* default */])(condition)) {\n var paramsCondition_1 = Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n\n condition = function (row) {\n var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n\n for (var i = 0, l = paramsCondition_1.length; i < l; i++) {\n unique += row[paramsCondition_1[i]] && row[paramsCondition_1[i]].toString();\n }\n\n return unique;\n };\n }\n\n var groups = Object(__WEBPACK_IMPORTED_MODULE_2__group_by__[\"a\" /* default */])(data, condition);\n return groups;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (groupToMap);\n\n/***/ }),\n/* 24 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(3);\n\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction groupBy(data, condition) {\n if (!condition || !Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(data)) {\n return {};\n }\n\n var result = {}; // 兼容方法和 字符串的写法\n\n var predicate = Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(condition) ? condition : function (item) {\n return item[condition];\n };\n var key;\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(data, function (item) {\n key = predicate(item);\n\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [item];\n }\n });\n return result;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (groupBy);\n\n/***/ }),\n/* 25 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (obj, key) {\n return obj.hasOwnProperty(key);\n});\n\n/***/ }),\n/* 26 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3);\n\n // @ts-ignore\n\nvar values = Object.values ? function (obj) {\n return Object.values(obj);\n} : function (obj) {\n var result = [];\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(obj, function (value, key) {\n if (!(Object(__WEBPACK_IMPORTED_MODULE_1__is_function__[\"a\" /* default */])(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"a\"] = (values);\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar toString = {}.toString;\n\nvar getType = function (value) {\n return toString.call(value).replace(/^\\[object /, '').replace(/]$/, '');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (getType);\n\n/***/ }),\n/* 28 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar objectProto = Object.prototype;\n\nvar isPrototype = function (value) {\n var Ctor = value && value.constructor;\n var proto = typeof Ctor === 'function' && Ctor.prototype || objectProto;\n return value === proto;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isPrototype);\n\n/***/ }),\n/* 29 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object_like__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_string__ = __webpack_require__(8);\n\n\n\n\nvar isEqual = function (value, other) {\n if (value === other) {\n return true;\n }\n\n if (!value || !other) {\n return false;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_string__[\"a\" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_2__is_string__[\"a\" /* default */])(other)) {\n return false;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(other)) {\n if (value.length !== other.length) {\n return false;\n }\n\n var rst = true;\n\n for (var i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n\n if (!rst) {\n break;\n }\n }\n\n return rst;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__[\"a\" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__[\"a\" /* default */])(other)) {\n var valueKeys = Object.keys(value);\n var otherKeys = Object.keys(other);\n\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n\n var rst = true;\n\n for (var i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n\n if (!rst) {\n break;\n }\n }\n\n return rst;\n }\n\n return false;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isEqual);\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hierarchy = __webpack_require__(18);\n\nmodule.exports = function (root, options) {\n // separate into left and right trees\n var left = hierarchy(root.data, options, true); // root only\n\n var right = hierarchy(root.data, options, true); // root only\n // automatically\n\n var treeSize = root.children.length;\n var rightTreeSize = Math.round(treeSize / 2); // separate left and right tree by meta data\n\n var getSide = options.getSide || function (child, index) {\n if (index < rightTreeSize) {\n return 'right';\n }\n\n return 'left';\n };\n\n for (var i = 0; i < treeSize; i++) {\n var child = root.children[i];\n var side = getSide(child, i);\n\n if (side === 'right') {\n right.children.push(child);\n } else {\n left.children.push(child);\n }\n }\n\n left.eachNode(function (node) {\n if (!node.isRoot()) {\n node.side = 'left';\n }\n });\n right.eachNode(function (node) {\n if (!node.isRoot()) {\n node.side = 'right';\n }\n });\n return {\n left: left,\n right: right\n };\n};\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hierarchy = {\n compactBox: __webpack_require__(32),\n dendrogram: __webpack_require__(114),\n indented: __webpack_require__(116),\n mindmap: __webpack_require__(118)\n};\nmodule.exports = hierarchy;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = __webpack_require__(11);\n\nvar nonLayeredTidyTree = __webpack_require__(113);\n\nvar doTreeLayout = __webpack_require__(17);\n\nvar util = __webpack_require__(7);\n\nvar CompactBoxTreeLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(CompactBoxTreeLayout, _TreeLayout);\n\n function CompactBoxTreeLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = CompactBoxTreeLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n return doTreeLayout(me.rootNode, me.options, nonLayeredTidyTree);\n };\n\n return CompactBoxTreeLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction compactBoxLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new CompactBoxTreeLayout(root, options).execute();\n}\n\nmodule.exports = compactBoxLayout;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(12);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return __WEBPACK_IMPORTED_MODULE_0__contains__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"includes\", function() { return __WEBPACK_IMPORTED_MODULE_0__contains__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__difference__ = __webpack_require__(34);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"difference\", function() { return __WEBPACK_IMPORTED_MODULE_1__difference__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__find__ = __webpack_require__(35);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"find\", function() { return __WEBPACK_IMPORTED_MODULE_2__find__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__find_index__ = __webpack_require__(36);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findIndex\", function() { return __WEBPACK_IMPORTED_MODULE_3__find_index__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__first_value__ = __webpack_require__(37);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"firstValue\", function() { return __WEBPACK_IMPORTED_MODULE_4__first_value__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__flatten__ = __webpack_require__(38);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"flatten\", function() { return __WEBPACK_IMPORTED_MODULE_5__flatten__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__flatten_deep__ = __webpack_require__(39);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"flattenDeep\", function() { return __WEBPACK_IMPORTED_MODULE_6__flatten_deep__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__get_range__ = __webpack_require__(40);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"getRange\", function() { return __WEBPACK_IMPORTED_MODULE_7__get_range__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__pull__ = __webpack_require__(41);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pull\", function() { return __WEBPACK_IMPORTED_MODULE_8__pull__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__pull_at__ = __webpack_require__(21);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pullAt\", function() { return __WEBPACK_IMPORTED_MODULE_9__pull_at__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__reduce__ = __webpack_require__(42);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return __WEBPACK_IMPORTED_MODULE_10__reduce__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__remove__ = __webpack_require__(43);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"remove\", function() { return __WEBPACK_IMPORTED_MODULE_11__remove__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__sort_by__ = __webpack_require__(44);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sortBy\", function() { return __WEBPACK_IMPORTED_MODULE_12__sort_by__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__union__ = __webpack_require__(45);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"union\", function() { return __WEBPACK_IMPORTED_MODULE_13__union__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__uniq__ = __webpack_require__(22);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return __WEBPACK_IMPORTED_MODULE_14__uniq__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__values_of_key__ = __webpack_require__(46);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"valuesOfKey\", function() { return __WEBPACK_IMPORTED_MODULE_15__values_of_key__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__head__ = __webpack_require__(47);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"head\", function() { return __WEBPACK_IMPORTED_MODULE_16__head__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__last__ = __webpack_require__(48);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"last\", function() { return __WEBPACK_IMPORTED_MODULE_17__last__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__starts_with__ = __webpack_require__(49);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"startsWith\", function() { return __WEBPACK_IMPORTED_MODULE_18__starts_with__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__ends_with__ = __webpack_require__(50);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"endsWith\", function() { return __WEBPACK_IMPORTED_MODULE_19__ends_with__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__filter__ = __webpack_require__(14);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return __WEBPACK_IMPORTED_MODULE_20__filter__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__every__ = __webpack_require__(51);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return __WEBPACK_IMPORTED_MODULE_21__every__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__some__ = __webpack_require__(52);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return __WEBPACK_IMPORTED_MODULE_22__some__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__group__ = __webpack_require__(53);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"group\", function() { return __WEBPACK_IMPORTED_MODULE_23__group__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__group_by__ = __webpack_require__(24);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return __WEBPACK_IMPORTED_MODULE_24__group_by__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__group_to_map__ = __webpack_require__(23);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"groupToMap\", function() { return __WEBPACK_IMPORTED_MODULE_25__group_to_map__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__get_wrap_behavior__ = __webpack_require__(54);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"getWrapBehavior\", function() { return __WEBPACK_IMPORTED_MODULE_26__get_wrap_behavior__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__wrap_behavior__ = __webpack_require__(55);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapBehavior\", function() { return __WEBPACK_IMPORTED_MODULE_27__wrap_behavior__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__number2color__ = __webpack_require__(56);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"number2color\", function() { return __WEBPACK_IMPORTED_MODULE_28__number2color__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__parse_radius__ = __webpack_require__(57);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return __WEBPACK_IMPORTED_MODULE_29__parse_radius__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__clamp__ = __webpack_require__(58);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"clamp\", function() { return __WEBPACK_IMPORTED_MODULE_30__clamp__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__fixed_base__ = __webpack_require__(59);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"fixedBase\", function() { return __WEBPACK_IMPORTED_MODULE_31__fixed_base__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__is_decimal__ = __webpack_require__(60);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isDecimal\", function() { return __WEBPACK_IMPORTED_MODULE_32__is_decimal__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__is_even__ = __webpack_require__(61);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEven\", function() { return __WEBPACK_IMPORTED_MODULE_33__is_even__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__is_integer__ = __webpack_require__(62);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isInteger\", function() { return __WEBPACK_IMPORTED_MODULE_34__is_integer__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__is_negative__ = __webpack_require__(63);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNegative\", function() { return __WEBPACK_IMPORTED_MODULE_35__is_negative__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__is_number_equal__ = __webpack_require__(64);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return __WEBPACK_IMPORTED_MODULE_36__is_number_equal__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__is_odd__ = __webpack_require__(65);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isOdd\", function() { return __WEBPACK_IMPORTED_MODULE_37__is_odd__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__is_positive__ = __webpack_require__(66);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isPositive\", function() { return __WEBPACK_IMPORTED_MODULE_38__is_positive__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__max_by__ = __webpack_require__(67);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"maxBy\", function() { return __WEBPACK_IMPORTED_MODULE_39__max_by__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__min_by__ = __webpack_require__(68);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"minBy\", function() { return __WEBPACK_IMPORTED_MODULE_40__min_by__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__mod__ = __webpack_require__(69);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mod\", function() { return __WEBPACK_IMPORTED_MODULE_41__mod__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__to_degree__ = __webpack_require__(70);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toDegree\", function() { return __WEBPACK_IMPORTED_MODULE_42__to_degree__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__to_integer__ = __webpack_require__(71);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toInteger\", function() { return __WEBPACK_IMPORTED_MODULE_43__to_integer__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__to_radian__ = __webpack_require__(72);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toRadian\", function() { return __WEBPACK_IMPORTED_MODULE_44__to_radian__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__for_in__ = __webpack_require__(73);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"forIn\", function() { return __WEBPACK_IMPORTED_MODULE_45__for_in__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__has__ = __webpack_require__(25);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"has\", function() { return __WEBPACK_IMPORTED_MODULE_46__has__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__has_key__ = __webpack_require__(74);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"hasKey\", function() { return __WEBPACK_IMPORTED_MODULE_47__has_key__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__has_value__ = __webpack_require__(75);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"hasValue\", function() { return __WEBPACK_IMPORTED_MODULE_48__has_value__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__keys__ = __webpack_require__(20);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return __WEBPACK_IMPORTED_MODULE_49__keys__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__is_match__ = __webpack_require__(19);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isMatch\", function() { return __WEBPACK_IMPORTED_MODULE_50__is_match__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__values__ = __webpack_require__(26);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return __WEBPACK_IMPORTED_MODULE_51__values__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__lower_case__ = __webpack_require__(76);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"lowerCase\", function() { return __WEBPACK_IMPORTED_MODULE_52__lower_case__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__lower_first__ = __webpack_require__(77);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"lowerFirst\", function() { return __WEBPACK_IMPORTED_MODULE_53__lower_first__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__substitute__ = __webpack_require__(78);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"substitute\", function() { return __WEBPACK_IMPORTED_MODULE_54__substitute__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__upper_case__ = __webpack_require__(79);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"upperCase\", function() { return __WEBPACK_IMPORTED_MODULE_55__upper_case__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__upper_first__ = __webpack_require__(80);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"upperFirst\", function() { return __WEBPACK_IMPORTED_MODULE_56__upper_first__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__get_type__ = __webpack_require__(27);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"getType\", function() { return __WEBPACK_IMPORTED_MODULE_57__get_type__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__is_arguments__ = __webpack_require__(81);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArguments\", function() { return __WEBPACK_IMPORTED_MODULE_58__is_arguments__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__is_array__ = __webpack_require__(0);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return __WEBPACK_IMPORTED_MODULE_59__is_array__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__is_array_like__ = __webpack_require__(1);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArrayLike\", function() { return __WEBPACK_IMPORTED_MODULE_60__is_array_like__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__is_boolean__ = __webpack_require__(82);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return __WEBPACK_IMPORTED_MODULE_61__is_boolean__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__is_date__ = __webpack_require__(83);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return __WEBPACK_IMPORTED_MODULE_62__is_date__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__is_error__ = __webpack_require__(84);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isError\", function() { return __WEBPACK_IMPORTED_MODULE_63__is_error__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__is_function__ = __webpack_require__(3);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return __WEBPACK_IMPORTED_MODULE_64__is_function__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__is_finite__ = __webpack_require__(85);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isFinite\", function() { return __WEBPACK_IMPORTED_MODULE_65__is_finite__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__is_nil__ = __webpack_require__(6);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return __WEBPACK_IMPORTED_MODULE_66__is_nil__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__is_null__ = __webpack_require__(86);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNull\", function() { return __WEBPACK_IMPORTED_MODULE_67__is_null__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__is_number__ = __webpack_require__(5);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return __WEBPACK_IMPORTED_MODULE_68__is_number__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__is_object__ = __webpack_require__(13);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return __WEBPACK_IMPORTED_MODULE_69__is_object__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__is_object_like__ = __webpack_require__(15);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isObjectLike\", function() { return __WEBPACK_IMPORTED_MODULE_70__is_object_like__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__is_plain_object__ = __webpack_require__(9);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isPlainObject\", function() { return __WEBPACK_IMPORTED_MODULE_71__is_plain_object__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__is_prototype__ = __webpack_require__(28);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isPrototype\", function() { return __WEBPACK_IMPORTED_MODULE_72__is_prototype__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__is_reg_exp__ = __webpack_require__(87);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return __WEBPACK_IMPORTED_MODULE_73__is_reg_exp__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__is_string__ = __webpack_require__(8);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return __WEBPACK_IMPORTED_MODULE_74__is_string__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__is_type__ = __webpack_require__(4);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isType\", function() { return __WEBPACK_IMPORTED_MODULE_75__is_type__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__is_undefined__ = __webpack_require__(88);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isUndefined\", function() { return __WEBPACK_IMPORTED_MODULE_76__is_undefined__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__is_element__ = __webpack_require__(89);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isElement\", function() { return __WEBPACK_IMPORTED_MODULE_77__is_element__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__request_animation_frame__ = __webpack_require__(90);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return __WEBPACK_IMPORTED_MODULE_78__request_animation_frame__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__clear_animation_frame__ = __webpack_require__(91);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"clearAnimationFrame\", function() { return __WEBPACK_IMPORTED_MODULE_79__clear_animation_frame__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__augment__ = __webpack_require__(92);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"augment\", function() { return __WEBPACK_IMPORTED_MODULE_80__augment__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__clone__ = __webpack_require__(93);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return __WEBPACK_IMPORTED_MODULE_81__clone__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__debounce__ = __webpack_require__(94);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return __WEBPACK_IMPORTED_MODULE_82__debounce__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__memoize__ = __webpack_require__(95);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"memoize\", function() { return __WEBPACK_IMPORTED_MODULE_83__memoize__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__deep_mix__ = __webpack_require__(96);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"deepMix\", function() { return __WEBPACK_IMPORTED_MODULE_84__deep_mix__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__each__ = __webpack_require__(2);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return __WEBPACK_IMPORTED_MODULE_85__each__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__extend__ = __webpack_require__(97);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return __WEBPACK_IMPORTED_MODULE_86__extend__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__index_of__ = __webpack_require__(98);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"indexOf\", function() { return __WEBPACK_IMPORTED_MODULE_87__index_of__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__is_empty__ = __webpack_require__(99);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return __WEBPACK_IMPORTED_MODULE_88__is_empty__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__is_equal__ = __webpack_require__(29);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return __WEBPACK_IMPORTED_MODULE_89__is_equal__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__is_equal_with__ = __webpack_require__(100);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEqualWith\", function() { return __WEBPACK_IMPORTED_MODULE_90__is_equal_with__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__map__ = __webpack_require__(101);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return __WEBPACK_IMPORTED_MODULE_91__map__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__map_values__ = __webpack_require__(102);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mapValues\", function() { return __WEBPACK_IMPORTED_MODULE_92__map_values__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__mix__ = __webpack_require__(16);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mix\", function() { return __WEBPACK_IMPORTED_MODULE_93__mix__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return __WEBPACK_IMPORTED_MODULE_93__mix__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__get__ = __webpack_require__(103);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return __WEBPACK_IMPORTED_MODULE_94__get__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__set__ = __webpack_require__(104);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return __WEBPACK_IMPORTED_MODULE_95__set__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__pick__ = __webpack_require__(105);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return __WEBPACK_IMPORTED_MODULE_96__pick__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__throttle__ = __webpack_require__(106);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return __WEBPACK_IMPORTED_MODULE_97__throttle__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__to_array__ = __webpack_require__(107);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toArray\", function() { return __WEBPACK_IMPORTED_MODULE_98__to_array__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__to_string__ = __webpack_require__(10);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return __WEBPACK_IMPORTED_MODULE_99__to_string__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__unique_id__ = __webpack_require__(108);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return __WEBPACK_IMPORTED_MODULE_100__unique_id__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__noop__ = __webpack_require__(109);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return __WEBPACK_IMPORTED_MODULE_101__noop__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__identity__ = __webpack_require__(110);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return __WEBPACK_IMPORTED_MODULE_102__identity__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_103__size__ = __webpack_require__(111);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"size\", function() { return __WEBPACK_IMPORTED_MODULE_103__size__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_104__cache__ = __webpack_require__(112);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"Cache\", function() { return __WEBPACK_IMPORTED_MODULE_104__cache__[\"a\"]; });\n// array\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // event\n\n\n // format\n\n\n // math\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // object\n\n\n\n\n\n\n\n // string\n\n\n\n\n\n // type\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // other\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // 不知道为什么,需要把这个 export,不然 ts 会报类型错误\n\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__contains__ = __webpack_require__(12);\n\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to inspect.\n * @param {Array} values The values to exclude.\n * @return {Array} Returns the new array of filtered values.\n * @example\n * difference([2, 1], [2, 3]); // => [1]\n */\n\nvar difference = function (arr, values) {\n if (values === void 0) {\n values = [];\n }\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__filter__[\"a\" /* default */])(arr, function (value) {\n return !Object(__WEBPACK_IMPORTED_MODULE_1__contains__[\"a\" /* default */])(values, value);\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (difference);\n\n/***/ }),\n/* 35 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_match__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__is_plain_object__ = __webpack_require__(9);\n\n\n\n\n\nfunction find(arr, predicate) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_2__is_array__[\"a\" /* default */])(arr)) return null;\n\n var _predicate;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_function__[\"a\" /* default */])(predicate)) {\n _predicate = predicate;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__is_plain_object__[\"a\" /* default */])(predicate)) {\n _predicate = function (a) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__is_match__[\"a\" /* default */])(a, predicate);\n };\n }\n\n if (_predicate) {\n for (var i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n\n return null;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (find);\n\n/***/ }),\n/* 36 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction findIndex(arr, predicate, fromIndex) {\n if (fromIndex === void 0) {\n fromIndex = 0;\n }\n\n for (var i = fromIndex; i < arr.length; i++) {\n if (predicate(arr[i], i)) {\n // 找到终止循环\n return i;\n }\n }\n\n return -1;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (findIndex);\n\n/***/ }),\n/* 37 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n\n\n\nvar firstValue = function (data, name) {\n var rst = null;\n\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(value)) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(value)) {\n rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云\n } else {\n rst = value;\n }\n\n break;\n }\n }\n\n return rst;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (firstValue);\n\n/***/ }),\n/* 38 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\n\nvar flatten = function (arr) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(arr)) {\n return [];\n }\n\n var rst = [];\n\n for (var i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n\n return rst;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (flatten);\n\n/***/ }),\n/* 39 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @param {Array} result The array to return.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]\n */\n\nvar flattenDeep = function (arr, result) {\n if (result === void 0) {\n result = [];\n }\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(arr)) {\n result.push(arr);\n } else {\n for (var i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], result);\n }\n }\n\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (flattenDeep);\n\n/***/ }),\n/* 40 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(14);\n\n\n\nvar getRange = function (values) {\n // 存在 NaN 时,min,max 判定会出问题\n values = Object(__WEBPACK_IMPORTED_MODULE_1__filter__[\"a\" /* default */])(values, function (v) {\n return !isNaN(v);\n });\n\n if (!values.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0\n };\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(values[0])) {\n var tmp = [];\n\n for (var i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n\n values = tmp;\n }\n\n var max = Math.max.apply(null, values);\n var min = Math.min.apply(null, values);\n return {\n min: min,\n max: max\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (getRange);\n\n/***/ }),\n/* 41 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar arrPrototype = Array.prototype;\nvar splice = arrPrototype.splice;\nvar indexOf = arrPrototype.indexOf;\n\nvar pull = function (arr) {\n var values = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var fromIndex = -1;\n\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n\n return arr;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (pull);\n\n/***/ }),\n/* 42 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_plain_object__ = __webpack_require__(9);\n\n\n\n\nvar reduce = function (arr, fn, init) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(arr) && !Object(__WEBPACK_IMPORTED_MODULE_2__is_plain_object__[\"a\" /* default */])(arr)) {\n return arr;\n }\n\n var result = init;\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(arr, function (data, i) {\n result = fn(result, data, i);\n });\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (reduce);\n\n/***/ }),\n/* 43 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__pull_at__ = __webpack_require__(21);\n\n\n\nvar remove = function (arr, predicate) {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n var result = [];\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(arr)) {\n return result;\n }\n\n var i = -1;\n var indexes = [];\n var length = arr.length;\n\n while (++i < length) {\n var value = arr[i];\n\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_1__pull_at__[\"a\" /* default */])(arr, indexes);\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (remove);\n\n/***/ }),\n/* 44 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(3);\n\n\n\n\nfunction sortBy(arr, key) {\n var comparer;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(key)) {\n comparer = function (a, b) {\n return key(a) - key(b);\n };\n } else {\n var keys_1 = [];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_string__[\"a\" /* default */])(key)) {\n keys_1.push(key);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(key)) {\n keys_1 = key;\n }\n\n comparer = function (a, b) {\n for (var i = 0; i < keys_1.length; i += 1) {\n var prop = keys_1[i];\n\n if (a[prop] > b[prop]) {\n return 1;\n }\n\n if (a[prop] < b[prop]) {\n return -1;\n }\n }\n\n return 0;\n };\n }\n\n arr.sort(comparer);\n return arr;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (sortBy);\n\n/***/ }),\n/* 45 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__uniq__ = __webpack_require__(22);\n\n\nvar union = function () {\n var sources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__uniq__[\"a\" /* default */])([].concat.apply([], sources));\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (union);\n\n/***/ }),\n/* 46 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_nil__ = __webpack_require__(6);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (data, name) {\n var rst = [];\n var tmpMap = {};\n data.forEach(function (obj) {\n var value = obj[name];\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_2__is_nil__[\"a\" /* default */])(value)) {\n // flatten\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(value)) {\n value = [value];\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(value, function (val) {\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n });\n }\n });\n return rst;\n});\n\n/***/ }),\n/* 47 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = head;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\nfunction head(o) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(o)) {\n return o[0];\n }\n\n return undefined;\n}\n\n/***/ }),\n/* 48 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = last;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\nfunction last(o) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(o)) {\n var arr = o;\n return arr[arr.length - 1];\n }\n\n return undefined;\n}\n\n/***/ }),\n/* 49 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(8);\n\n\n\nfunction startsWith(arr, e) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(arr) || Object(__WEBPACK_IMPORTED_MODULE_1__is_string__[\"a\" /* default */])(arr) ? arr[0] === e : false;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (startsWith);\n\n/***/ }),\n/* 50 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(8);\n\n\n\nfunction endsWith(arr, e) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(arr) || Object(__WEBPACK_IMPORTED_MODULE_1__is_string__[\"a\" /* default */])(arr) ? arr[arr.length - 1] === e : false;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (endsWith);\n\n/***/ }),\n/* 51 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * 只要有一个不满足条件就返回 false\n * @param arr\n * @param func\n */\nvar every = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (!func(arr[i], i)) return false;\n }\n\n return true;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (every);\n\n/***/ }),\n/* 52 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * 只要有一个满足条件就返回 true\n * @param arr\n * @param func\n */\nvar some = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (func(arr[i], i)) return true;\n }\n\n return false;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (some);\n\n/***/ }),\n/* 53 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_to_map__ = __webpack_require__(23);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (data, condition) {\n if (!condition) {\n // 没有条件,则自身改成数组\n return [data];\n }\n\n var groups = Object(__WEBPACK_IMPORTED_MODULE_0__group_to_map__[\"a\" /* default */])(data, condition);\n var array = [];\n\n for (var i in groups) {\n array.push(groups[i]);\n }\n\n return array;\n});\n\n/***/ }),\n/* 54 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * 获取封装的事件\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction getWrapBehavior(obj, action) {\n return obj['_wrap_' + action];\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (getWrapBehavior);\n\n/***/ }),\n/* 55 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * 封装事件,便于使用上下文this,和便于解除事件时使用\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction wrapBehavior(obj, action) {\n if (obj['_wrap_' + action]) {\n return obj['_wrap_' + action];\n }\n\n var method = function (e) {\n obj[action](e);\n };\n\n obj['_wrap_' + action] = method;\n return method;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (wrapBehavior);\n\n/***/ }),\n/* 56 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar numColorCache = {};\n\nfunction numberToColor(num) {\n // 增加缓存\n var color = numColorCache[num];\n\n if (!color) {\n var str = num.toString(16);\n\n for (var i = str.length; i < 6; i++) {\n str = '0' + str;\n }\n\n color = '#' + str;\n numColorCache[num] = color;\n }\n\n return color;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (numberToColor);\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n\n\nfunction parseRadius(radius) {\n var r1 = 0,\n r2 = 0,\n r3 = 0,\n r4 = 0;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (parseRadius);\n\n/***/ }),\n/* 58 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar clamp = function (a, min, max) {\n if (a < min) {\n return min;\n } else if (a > max) {\n return max;\n }\n\n return a;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (clamp);\n\n/***/ }),\n/* 59 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar fixedBase = function (v, base) {\n var str = base.toString();\n var index = str.indexOf('.');\n\n if (index === -1) {\n return Math.round(v);\n }\n\n var length = str.substr(index + 1).length;\n\n if (length > 20) {\n length = 20;\n }\n\n return parseFloat(v.toFixed(length));\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (fixedBase);\n\n/***/ }),\n/* 60 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\n\nvar isDecimal = function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num % 1 !== 0;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isDecimal);\n\n/***/ }),\n/* 61 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\n\nvar isEven = function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num % 2 === 0;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isEven);\n\n/***/ }),\n/* 62 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\nvar isInteger = Number.isInteger ? Number.isInteger : function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num % 1 === 0;\n};\n/* harmony default export */ __webpack_exports__[\"a\"] = (isInteger);\n\n/***/ }),\n/* 63 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\n\nvar isNegative = function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num < 0;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isNegative);\n\n/***/ }),\n/* 64 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isNumberEqual;\nvar PRECISION = 0.00001; // numbers less than this is considered as 0\n\nfunction isNumberEqual(a, b, precision) {\n if (precision === void 0) {\n precision = PRECISION;\n }\n\n return Math.abs(a - b) < precision;\n}\n;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\n\nvar isOdd = function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num % 2 !== 0;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isOdd);\n\n/***/ }),\n/* 66 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\n\nvar isPositive = function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num > 0;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isPositive);\n\n/***/ }),\n/* 67 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(3);\n\n\n\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (arr, fn) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(arr)) {\n return undefined;\n }\n\n var max = arr[0];\n var maxData;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(fn)) {\n maxData = fn(arr[0]);\n } else {\n maxData = arr[0][fn];\n }\n\n var data;\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(arr, function (val) {\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(fn)) {\n data = fn(val);\n } else {\n data = val[fn];\n }\n\n if (data > maxData) {\n max = val;\n maxData = data;\n }\n });\n return max;\n});\n\n/***/ }),\n/* 68 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(3);\n\n\n\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (arr, fn) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(arr)) {\n return undefined;\n }\n\n var min = arr[0];\n var minData;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(fn)) {\n minData = fn(arr[0]);\n } else {\n minData = arr[0][fn];\n }\n\n var data;\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(arr, function (val) {\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(fn)) {\n data = fn(val);\n } else {\n data = val[fn];\n }\n\n if (data < minData) {\n min = val;\n minData = data;\n }\n });\n return min;\n});\n\n/***/ }),\n/* 69 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar mod = function (n, m) {\n return (n % m + m) % m;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (mod);\n\n/***/ }),\n/* 70 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar DEGREE = 180 / Math.PI;\n\nvar toDegree = function (radian) {\n return DEGREE * radian;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (toDegree);\n\n/***/ }),\n/* 71 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (parseInt);\n\n/***/ }),\n/* 72 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar RADIAN = Math.PI / 180;\n\nvar toRadian = function (degree) {\n return RADIAN * degree;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (toRadian);\n\n/***/ }),\n/* 73 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */]);\n\n/***/ }),\n/* 74 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has__ = __webpack_require__(25);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__has__[\"a\" /* default */]);\n\n/***/ }),\n/* 75 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values__ = __webpack_require__(26);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (obj, value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__contains__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_1__values__[\"a\" /* default */])(obj), value);\n});\n\n/***/ }),\n/* 76 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(10);\n\n\nvar lowerCase = function (str) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(str).toLowerCase();\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (lowerCase);\n\n/***/ }),\n/* 77 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(10);\n\n\nvar lowerFirst = function (value) {\n var str = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(value);\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (lowerFirst);\n\n/***/ }),\n/* 78 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n\n return o[name] === undefined ? '' : o[name];\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (substitute);\n\n/***/ }),\n/* 79 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(10);\n\n\nvar upperCase = function (str) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(str).toUpperCase();\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (upperCase);\n\n/***/ }),\n/* 80 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(10);\n\n\nvar upperFirst = function (value) {\n var str = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (upperFirst);\n\n/***/ }),\n/* 81 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\n\nvar isArguments = function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Arguments');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isArguments);\n\n/***/ }),\n/* 82 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\n\nvar isBoolean = function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Boolean');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isBoolean);\n\n/***/ }),\n/* 83 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n\n\nvar isDate = function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Date');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isDate);\n\n/***/ }),\n/* 84 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\n\nvar isError = function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Error');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isError);\n\n/***/ }),\n/* 85 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n/**\n * 判断是否为有限数\n * @return {Boolean}\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(value) && isFinite(value);\n});\n\n/***/ }),\n/* 86 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar isNull = function (value) {\n return value === null;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isNull);\n\n/***/ }),\n/* 87 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n\n\nvar isRegExp = function (str) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(str, 'RegExp');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isRegExp);\n\n/***/ }),\n/* 88 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar isUndefined = function (value) {\n return value === undefined;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isUndefined);\n\n/***/ }),\n/* 89 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * 判断是否HTML元素\n * @return {Boolean} 是否HTML元素\n */\nvar isElement = function (o) {\n return o instanceof Element || o instanceof HTMLDocument;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isElement);\n\n/***/ }),\n/* 90 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = requestAnimationFrame;\nfunction requestAnimationFrame(fn) {\n var method = window.requestAnimationFrame || window.webkitRequestAnimationFrame || // @ts-ignore\n window.mozRequestAnimationFrame || // @ts-ignore\n window.msRequestAnimationFrame || function (f) {\n return setTimeout(f, 16);\n };\n\n return method(fn);\n}\n;\n\n/***/ }),\n/* 91 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = cancelAnimationFrame;\nfunction cancelAnimationFrame(handler) {\n var method = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || // @ts-ignore\n window.mozCancelAnimationFrame || // @ts-ignore\n window.msCancelAnimationFrame || clearTimeout;\n method(handler);\n}\n;\n\n/***/ }),\n/* 92 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mix__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3);\n\n\n\nvar augment = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var c = args[0];\n\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_function__[\"a\" /* default */])(obj)) {\n obj = obj.prototype;\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_0__mix__[\"a\" /* default */])(c.prototype, obj);\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (augment);\n\n/***/ }),\n/* 93 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n\n\nvar clone = function (obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n var rst;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(obj)) {\n rst = [];\n\n for (var i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n } else {\n rst[i] = obj[i];\n }\n }\n } else {\n rst = {};\n\n for (var k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n } else {\n rst[k] = obj[k];\n }\n }\n }\n\n return rst;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (clone);\n\n/***/ }),\n/* 94 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n\n var later = function () {\n timeout = null;\n\n if (!immediate) {\n func.apply(context, args);\n }\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (debounce);\n\n/***/ }),\n/* 95 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(3);\n\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (f, resolver) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_function__[\"a\" /* default */])(f)) {\n throw new TypeError('Expected a function');\n }\n\n var memoized = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n } // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n\n\n var key = resolver ? resolver.apply(this, args) : args[0];\n var cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n var result = f.apply(this, args); // 缓存起来\n\n cache.set(key, result);\n return result;\n };\n\n memoized.cache = new Map();\n return memoized;\n});\n\n/***/ }),\n/* 96 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_plain_object__ = __webpack_require__(9);\n\n\nvar MAX_MIX_LEVEL = 5;\n\nfunction _deepMix(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n var value = src[key];\n\n if (value !== null && Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__[\"a\" /* default */])(value)) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__[\"a\" /* default */])(dist[key])) {\n dist[key] = {};\n }\n\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n } else {\n dist[key] = src[key];\n }\n } else if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n } else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n} // todo 重写\n\n\nvar deepMix = function (rst) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n for (var i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n\n return rst;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (deepMix);\n\n/***/ }),\n/* 97 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mix__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3);\n\n\n\nvar extend = function (subclass, superclass, overrides, staticOverrides) {\n // 如果只提供父类构造函数,则自动生成子类构造函数\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_function__[\"a\" /* default */])(superclass)) {\n overrides = superclass;\n superclass = subclass;\n\n subclass = function () {};\n }\n\n var create = Object.create ? function (proto, c) {\n return Object.create(proto, {\n constructor: {\n value: c\n }\n });\n } : function (proto, c) {\n function Tmp() {}\n\n Tmp.prototype = proto;\n var o = new Tmp();\n o.constructor = c;\n return o;\n };\n var superObj = create(superclass.prototype, subclass); // new superclass(),//实例化父类作为子类的prototype\n\n subclass.prototype = Object(__WEBPACK_IMPORTED_MODULE_0__mix__[\"a\" /* default */])(superObj, subclass.prototype); // 指定子类的prototype\n\n subclass.superclass = create(superclass.prototype, superclass);\n Object(__WEBPACK_IMPORTED_MODULE_0__mix__[\"a\" /* default */])(superObj, overrides);\n Object(__WEBPACK_IMPORTED_MODULE_0__mix__[\"a\" /* default */])(subclass, staticOverrides);\n return subclass;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (extend);\n\n/***/ }),\n/* 98 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\n\nvar indexOf = function (arr, obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(arr)) {\n return -1;\n }\n\n var m = Array.prototype.indexOf;\n\n if (m) {\n return m.call(arr, obj);\n }\n\n var index = -1;\n\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n\n return index;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (indexOf);\n\n/***/ }),\n/* 99 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__get_type__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__is_prototype__ = __webpack_require__(28);\n\n\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isEmpty(value) {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(value)) {\n return true;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(value)) {\n return !value.length;\n }\n\n var type = Object(__WEBPACK_IMPORTED_MODULE_2__get_type__[\"a\" /* default */])(value);\n\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__is_prototype__[\"a\" /* default */])(value)) {\n return !Object.keys(value).length;\n }\n\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n\n return true;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isEmpty);\n\n/***/ }),\n/* 100 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_equal__ = __webpack_require__(29);\n\n\n/**\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [fn] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * isEqualWith(array, other, customizer); // => true\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value, other, fn) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_function__[\"a\" /* default */])(fn)) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__is_equal__[\"a\" /* default */])(value, other);\n }\n\n return !!fn(value, other);\n});\n\n/***/ }),\n/* 101 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1);\n\n\n\nvar map = function (arr, func) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(arr)) {\n // @ts-ignore\n return arr;\n }\n\n var result = [];\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(arr, function (value, index) {\n result.push(func(value, index));\n });\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (map);\n\n/***/ }),\n/* 102 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_object__ = __webpack_require__(13);\n\n\n\nvar identity = function (v) {\n return v;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (object, func) {\n if (func === void 0) {\n func = identity;\n }\n\n var r = {};\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_object__[\"a\" /* default */])(object) && !Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(object)) {\n Object.keys(object).forEach(function (key) {\n // @ts-ignore\n r[key] = func(object[key], key);\n });\n }\n\n return r;\n});\n\n/***/ }),\n/* 103 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_string__ = __webpack_require__(8);\n\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (obj, key, defaultValue) {\n var p = 0;\n var keyArr = Object(__WEBPACK_IMPORTED_MODULE_0__is_string__[\"a\" /* default */])(key) ? key.split('.') : key;\n\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n\n return obj === undefined || p < keyArr.length ? defaultValue : obj;\n});\n\n/***/ }),\n/* 104 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_number__ = __webpack_require__(5);\n\n\n\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (obj, path, value) {\n var o = obj;\n var keyArr = Object(__WEBPACK_IMPORTED_MODULE_1__is_string__[\"a\" /* default */])(path) ? path.split('.') : path;\n keyArr.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_object__[\"a\" /* default */])(o[key])) {\n o[key] = Object(__WEBPACK_IMPORTED_MODULE_2__is_number__[\"a\" /* default */])(keyArr[idx + 1]) ? [] : {};\n }\n\n o = o[key];\n } else {\n o[key] = value;\n }\n });\n return obj;\n});\n\n/***/ }),\n/* 105 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_plain_object__ = __webpack_require__(9);\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (object, keys) {\n if (object === null || !Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__[\"a\" /* default */])(object)) {\n return {};\n }\n\n var result = {};\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(keys, function (key) {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n});\n\n/***/ }),\n/* 106 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function () {\n var now = Date.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n});\n\n/***/ }),\n/* 107 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(value) ? Array.prototype.slice.call(value) : [];\n});\n\n/***/ }),\n/* 108 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar map = {};\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (prefix) {\n prefix = prefix || 'g';\n\n if (!map[prefix]) {\n map[prefix] = 1;\n } else {\n map[prefix] += 1;\n }\n\n return prefix + map[prefix];\n});\n\n/***/ }),\n/* 109 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function () {});\n\n/***/ }),\n/* 110 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (v) {\n return v;\n});\n\n/***/ }),\n/* 111 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = size;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1);\n\n\nfunction size(o) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(o)) {\n return 0;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(o)) {\n return o.length;\n }\n\n return Object.keys(o).length;\n}\n\n/***/ }),\n/* 112 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * k-v 存储\n */\nvar default_1 =\n/** @class */\nfunction () {\n function default_1() {\n this.map = {};\n }\n\n default_1.prototype.has = function (key) {\n return this.map[key] !== undefined;\n };\n\n default_1.prototype.get = function (key, def) {\n var v = this.map[key];\n return v === undefined ? def : v;\n };\n\n default_1.prototype.set = function (key, value) {\n this.map[key] = value;\n };\n\n default_1.prototype.clear = function () {\n this.map = {};\n };\n\n default_1.prototype.delete = function (key) {\n delete this.map[key];\n };\n\n default_1.prototype.size = function () {\n return Object.keys(this.map).length;\n };\n\n return default_1;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (default_1);\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports) {\n\n// wrap tree node\nfunction WrappedTree(w, h, y, c) {\n if (c === void 0) {\n c = [];\n }\n\n var me = this; // size\n\n me.w = w || 0;\n me.h = h || 0; // position\n\n me.y = y || 0;\n me.x = 0; // children\n\n me.c = c || [];\n me.cs = c.length; // modified\n\n me.prelim = 0;\n me.mod = 0;\n me.shift = 0;\n me.change = 0; // left/right tree\n\n me.tl = null;\n me.tr = null; // extreme left/right tree\n\n me.el = null;\n me.er = null; // modified left/right tree\n\n me.msel = 0;\n me.mser = 0;\n}\n\nWrappedTree.fromNode = function (root, isHorizontal) {\n if (!root) return null;\n var children = [];\n root.children.forEach(function (child) {\n children.push(WrappedTree.fromNode(child, isHorizontal));\n });\n if (isHorizontal) return new WrappedTree(root.height, root.width, root.x, children);\n return new WrappedTree(root.width, root.height, root.y, children);\n}; // node utils\n\n\nfunction moveRight(node, move, isHorizontal) {\n if (isHorizontal) {\n node.y += move;\n } else {\n node.x += move;\n }\n\n node.children.forEach(function (child) {\n moveRight(child, move, isHorizontal);\n });\n}\n\nfunction getMin(node, isHorizontal) {\n var res = isHorizontal ? node.y : node.x;\n node.children.forEach(function (child) {\n res = Math.min(getMin(child, isHorizontal), res);\n });\n return res;\n}\n\nfunction normalize(node, isHorizontal) {\n var min = getMin(node, isHorizontal);\n moveRight(node, -min, isHorizontal);\n}\n\nfunction convertBack(converted\n/* WrappedTree */\n, root\n/* TreeNode */\n, isHorizontal) {\n if (isHorizontal) {\n root.y = converted.x;\n } else {\n root.x = converted.x;\n }\n\n converted.c.forEach(function (child, i) {\n convertBack(child, root.children[i], isHorizontal);\n });\n}\n\nfunction layer(node, isHorizontal, d) {\n if (d === void 0) {\n d = 0;\n }\n\n if (isHorizontal) {\n node.x = d;\n d += node.width;\n } else {\n node.y = d;\n d += node.height;\n }\n\n node.children.forEach(function (child) {\n layer(child, isHorizontal, d);\n });\n}\n\nmodule.exports = function (root, options) {\n if (options === void 0) {\n options = {};\n }\n\n var isHorizontal = options.isHorizontal;\n\n function firstWalk(t) {\n if (t.cs === 0) {\n setExtremes(t);\n return;\n }\n\n firstWalk(t.c[0]);\n var ih = updateIYL(bottom(t.c[0].el), 0, null);\n\n for (var i = 1; i < t.cs; ++i) {\n firstWalk(t.c[i]);\n var min = bottom(t.c[i].er);\n separate(t, i, ih);\n ih = updateIYL(min, i, ih);\n }\n\n positionRoot(t);\n setExtremes(t);\n }\n\n function setExtremes(t) {\n if (t.cs === 0) {\n t.el = t;\n t.er = t;\n t.msel = t.mser = 0;\n } else {\n t.el = t.c[0].el;\n t.msel = t.c[0].msel;\n t.er = t.c[t.cs - 1].er;\n t.mser = t.c[t.cs - 1].mser;\n }\n }\n\n function separate(t, i, ih) {\n var sr = t.c[i - 1];\n var mssr = sr.mod;\n var cl = t.c[i];\n var mscl = cl.mod;\n\n while (sr !== null && cl !== null) {\n if (bottom(sr) > ih.low) ih = ih.nxt;\n var dist = mssr + sr.prelim + sr.w - (mscl + cl.prelim);\n\n if (dist > 0) {\n mscl += dist;\n moveSubtree(t, i, ih.index, dist);\n }\n\n var sy = bottom(sr);\n var cy = bottom(cl);\n\n if (sy <= cy) {\n sr = nextRightContour(sr);\n if (sr !== null) mssr += sr.mod;\n }\n\n if (sy >= cy) {\n cl = nextLeftContour(cl);\n if (cl !== null) mscl += cl.mod;\n }\n }\n\n if (!sr && !!cl) {\n setLeftThread(t, i, cl, mscl);\n } else if (!!sr && !cl) {\n setRightThread(t, i, sr, mssr);\n }\n }\n\n function moveSubtree(t, i, si, dist) {\n t.c[i].mod += dist;\n t.c[i].msel += dist;\n t.c[i].mser += dist;\n distributeExtra(t, i, si, dist);\n }\n\n function nextLeftContour(t) {\n return t.cs === 0 ? t.tl : t.c[0];\n }\n\n function nextRightContour(t) {\n return t.cs === 0 ? t.tr : t.c[t.cs - 1];\n }\n\n function bottom(t) {\n return t.y + t.h;\n }\n\n function setLeftThread(t, i, cl, modsumcl) {\n var li = t.c[0].el;\n li.tl = cl;\n var diff = modsumcl - cl.mod - t.c[0].msel;\n li.mod += diff;\n li.prelim -= diff;\n t.c[0].el = t.c[i].el;\n t.c[0].msel = t.c[i].msel;\n }\n\n function setRightThread(t, i, sr, modsumsr) {\n var ri = t.c[i].er;\n ri.tr = sr;\n var diff = modsumsr - sr.mod - t.c[i].mser;\n ri.mod += diff;\n ri.prelim -= diff;\n t.c[i].er = t.c[i - 1].er;\n t.c[i].mser = t.c[i - 1].mser;\n }\n\n function positionRoot(t) {\n t.prelim = (t.c[0].prelim + t.c[0].mod + t.c[t.cs - 1].mod + t.c[t.cs - 1].prelim + t.c[t.cs - 1].w) / 2 - t.w / 2;\n }\n\n function secondWalk(t, modsum) {\n modsum += t.mod;\n t.x = t.prelim + modsum;\n addChildSpacing(t);\n\n for (var i = 0; i < t.cs; i++) {\n secondWalk(t.c[i], modsum);\n }\n }\n\n function distributeExtra(t, i, si, dist) {\n if (si !== i - 1) {\n var nr = i - si;\n t.c[si + 1].shift += dist / nr;\n t.c[i].shift -= dist / nr;\n t.c[i].change -= dist - dist / nr;\n }\n }\n\n function addChildSpacing(t) {\n var d = 0;\n var modsumdelta = 0;\n\n for (var i = 0; i < t.cs; i++) {\n d += t.c[i].shift;\n modsumdelta += d + t.c[i].change;\n t.c[i].mod += modsumdelta;\n }\n }\n\n function updateIYL(low, index, ih) {\n while (ih !== null && low >= ih.low) {\n ih = ih.nxt;\n }\n\n return {\n low: low,\n index: index,\n nxt: ih\n };\n } // do layout\n\n\n layer(root, isHorizontal);\n var wt = WrappedTree.fromNode(root, isHorizontal);\n firstWalk(wt);\n secondWalk(wt, 0);\n convertBack(wt, root, isHorizontal);\n normalize(root, isHorizontal);\n return root;\n};\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = __webpack_require__(11);\n\nvar dendrogram = __webpack_require__(115);\n\nvar doTreeLayout = __webpack_require__(17);\n\nvar util = __webpack_require__(7);\n\nvar DendrogramLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(DendrogramLayout, _TreeLayout);\n\n function DendrogramLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = DendrogramLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n me.rootNode.width = 0;\n return doTreeLayout(me.rootNode, me.options, dendrogram);\n };\n\n return DendrogramLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction dendrogramLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new DendrogramLayout(root, options).execute();\n}\n\nmodule.exports = dendrogramLayout;\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// wrap tree node\n// TODO considering size\nvar util = __webpack_require__(7);\n\nfunction WrappedTree(height, children) {\n if (height === void 0) {\n height = 0;\n }\n\n if (children === void 0) {\n children = [];\n }\n\n var me = this;\n me.x = me.y = 0;\n me.leftChild = me.rightChild = null;\n me.height = 0;\n me.children = children;\n}\n\nvar DEFAULT_OPTIONS = {\n isHorizontal: true,\n nodeSep: 20,\n nodeSize: 20,\n rankSep: 200,\n subTreeSep: 10\n};\n\nfunction convertBack(converted\n/* WrappedTree */\n, root\n/* TreeNode */\n, isHorizontal) {\n if (isHorizontal) {\n root.x = converted.x;\n root.y = converted.y;\n } else {\n root.x = converted.y;\n root.y = converted.x;\n }\n\n converted.children.forEach(function (child, i) {\n convertBack(child, root.children[i], isHorizontal);\n });\n}\n\nmodule.exports = function (root, options) {\n if (options === void 0) {\n options = {};\n }\n\n options = util.assign({}, DEFAULT_OPTIONS, options);\n var maxDepth = 0;\n\n function wrappedTreeFromNode(n) {\n if (!n) return null;\n n.width = 0;\n\n if (n.depth && n.depth > maxDepth) {\n maxDepth = n.depth; // get the max depth\n }\n\n var children = n.children;\n var childrenCount = children.length;\n var t = new WrappedTree(n.height, []);\n children.forEach(function (child, i) {\n var childWT = wrappedTreeFromNode(child);\n t.children.push(childWT);\n\n if (i === 0) {\n // t.leftChild = childWT.leftChild ? childWT.leftChild : childWT\n t.leftChild = childWT;\n }\n\n if (i === childrenCount - 1) {\n // t.rightChild = childWT.rightChild ? childWT.rightChild : childWT\n t.rightChild = childWT;\n }\n });\n t.originNode = n;\n t.isLeaf = n.isLeaf();\n return t;\n }\n\n function getDrawingDepth(t) {\n if (t.isLeaf || t.children.length === 0) {\n t.drawingDepth = maxDepth;\n } else {\n var depths = t.children.map(function (child) {\n return getDrawingDepth(child);\n });\n var minChildDepth = Math.min.apply(null, depths);\n t.drawingDepth = minChildDepth - 1;\n }\n\n return t.drawingDepth;\n }\n\n var prevLeaf;\n\n function position(t) {\n t.x = t.drawingDepth * options.rankSep;\n\n if (t.isLeaf) {\n t.y = 0;\n\n if (prevLeaf) {\n t.y = prevLeaf.y + prevLeaf.height + options.nodeSep;\n\n if (t.originNode.parent !== prevLeaf.originNode.parent) {\n t.y += options.subTreeSep;\n }\n }\n\n prevLeaf = t;\n } else {\n t.children.forEach(function (child) {\n position(child);\n });\n t.y = (t.leftChild.y + t.rightChild.y) / 2;\n }\n } // wrap node\n\n\n var wt = wrappedTreeFromNode(root); // get depth for drawing\n\n getDrawingDepth(wt); // get position\n\n position(wt); // get x, y\n\n convertBack(wt, root, options.isHorizontal);\n return root;\n};\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = __webpack_require__(11);\n\nvar indentedTree = __webpack_require__(117);\n\nvar separateTree = __webpack_require__(30);\n\nvar util = __webpack_require__(7);\n\nvar VALID_DIRECTIONS = ['LR', // left to right\n'RL', // right to left\n'H' // horizontal\n];\nvar DEFAULT_DIRECTION = VALID_DIRECTIONS[0];\n\nvar IndentedLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(IndentedLayout, _TreeLayout);\n\n function IndentedLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = IndentedLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n var options = me.options;\n var root = me.rootNode;\n options.isHorizontal = true; // default indent 20 and sink first children;\n\n var _options$indent = options.indent,\n indent = _options$indent === void 0 ? 20 : _options$indent,\n _options$dropCap = options.dropCap,\n dropCap = _options$dropCap === void 0 ? true : _options$dropCap;\n var direction = options.direction || DEFAULT_DIRECTION;\n\n if (direction && VALID_DIRECTIONS.indexOf(direction) === -1) {\n throw new TypeError(\"Invalid direction: \" + direction);\n }\n\n if (direction === VALID_DIRECTIONS[0]) {\n // LR\n indentedTree(root, indent, dropCap);\n } else if (direction === VALID_DIRECTIONS[1]) {\n // RL\n indentedTree(root, indent, dropCap);\n root.right2left();\n } else if (direction === VALID_DIRECTIONS[2]) {\n // H\n // separate into left and right trees\n var _separateTree = separateTree(root, options),\n left = _separateTree.left,\n right = _separateTree.right;\n\n indentedTree(left, indent, dropCap);\n left.right2left();\n indentedTree(right, indent, dropCap);\n var bbox = left.getBoundingBox();\n right.translate(bbox.width, 0);\n root.x = right.x - root.width / 2;\n }\n\n return root;\n };\n\n return IndentedLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction indentedLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new IndentedLayout(root, options).execute();\n}\n\nmodule.exports = indentedLayout;\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports) {\n\nfunction positionNode(node, previousNode, indent, dropCap) {\n // caculate the node's horizontal offset DX, dx's type might be number or function\n var displacementX = typeof indent === 'function' ? indent(node) : indent * node.depth;\n\n if (!dropCap) {\n try {\n if (node.id === node.parent.children[0].id) {\n node.x += displacementX;\n node.y = previousNode ? previousNode.y : 0;\n return;\n }\n } catch (e) {// skip to normal when a node has no parent\n }\n }\n\n node.x += displacementX;\n node.y = previousNode ? previousNode.y + previousNode.height : 0;\n return;\n}\n\nmodule.exports = function (root, indent, dropCap) {\n var previousNode = null;\n root.eachNode(function (node) {\n positionNode(node, previousNode, indent, dropCap);\n previousNode = node;\n });\n};\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = __webpack_require__(11);\n\nvar mindmap = __webpack_require__(119);\n\nvar doTreeLayout = __webpack_require__(17);\n\nvar util = __webpack_require__(7);\n\nvar MindmapLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(MindmapLayout, _TreeLayout);\n\n function MindmapLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = MindmapLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n return doTreeLayout(me.rootNode, me.options, mindmap);\n };\n\n return MindmapLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction mindmapLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new MindmapLayout(root, options).execute();\n}\n\nmodule.exports = mindmapLayout;\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar util = __webpack_require__(7);\n\nfunction secondWalk(node, options) {\n var totalHeight = 0;\n\n if (!node.children.length) {\n totalHeight = node.height;\n } else {\n node.children.forEach(function (c) {\n totalHeight += secondWalk(c, options);\n });\n }\n\n node._subTreeSep = options.getSubTreeSep(node.data);\n node.totalHeight = Math.max(node.height, totalHeight) + 2 * node._subTreeSep;\n return node.totalHeight;\n}\n\nfunction thirdWalk(node) {\n var children = node.children;\n var len = children.length;\n\n if (len) {\n children.forEach(function (c) {\n thirdWalk(c);\n });\n var first = children[0];\n var last = children[len - 1];\n var childrenHeight = last.y - first.y + last.height;\n var childrenTotalHeight = 0;\n children.forEach(function (child) {\n childrenTotalHeight += child.totalHeight;\n });\n\n if (childrenHeight > node.height) {\n // 当子节点总高度大于父节点高度\n node.y = first.y + childrenHeight / 2 - node.height / 2;\n } else if (children.length !== 1 || node.height > childrenTotalHeight) {\n // 多于一个子节点或者父节点大于所有子节点的总高度\n var offset = node.y + (node.height - childrenHeight) / 2 - first.y;\n children.forEach(function (c) {\n c.translate(0, offset);\n });\n } else {\n // 只有一个子节点\n node.y = (first.y + first.height / 2 + last.y + last.height / 2) / 2 - node.height / 2;\n }\n }\n}\n\nvar DEFAULT_OPTIONS = {\n getSubTreeSep: function getSubTreeSep() {\n return 0;\n }\n};\n\nmodule.exports = function (root, options) {\n if (options === void 0) {\n options = {};\n }\n\n options = util.assign({}, DEFAULT_OPTIONS, options);\n root.parent = {\n x: 0,\n width: 0,\n height: 0,\n y: 0\n }; // first walk\n\n root.BFTraverse(function (node) {\n node.x = node.parent.x + node.parent.width; // simply get x\n });\n root.parent = null; // second walk\n\n secondWalk(root, options); // assign sub tree totalHeight\n // adjusting\n // separating nodes\n\n root.startY = 0;\n root.y = root.totalHeight / 2 - root.height / 2;\n root.eachNode(function (node) {\n var children = node.children;\n var len = children.length;\n\n if (len) {\n var first = children[0];\n first.startY = node.startY + node._subTreeSep;\n\n if (len === 1) {\n first.y = node.y + node.height / 2 - first.height / 2;\n } else {\n first.y = first.startY + first.totalHeight / 2 - first.height / 2;\n\n for (var i = 1; i < len; i++) {\n var c = children[i];\n c.startY = children[i - 1].startY + children[i - 1].totalHeight;\n c.y = c.startY + c.totalHeight / 2 - c.height / 2;\n }\n }\n }\n }); // third walk\n\n thirdWalk(root);\n};\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=hierarchy.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvaGllcmFyY2h5L2J1aWxkL2hpZXJhcmNoeS5qcz8wNTE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsSUFBSSxJQUF5RDtBQUM3RDtBQUNBLE1BQU0sRUFLMEI7QUFDaEMsQ0FBQztBQUNELG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQywwQkFBMEIsRUFBRTtBQUMvRCx5Q0FBeUMsZUFBZTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThELCtEQUErRDtBQUM3SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDBDQUEwQyxTQUFTO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksRUFBRTtBQUNkLFlBQVksUUFBUTtBQUNwQjs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsYUFBYTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQzs7O0FBR3BDO0FBQ0E7QUFDQSxpRUFBaUU7O0FBRWpFLHdEQUF3RDs7QUFFeEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RDtBQUM1RCxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7QUFDNUQsS0FBSztBQUNMO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseUJBQXlCLFlBQVk7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUI7O0FBRXZCLG1EQUFtRCxPQUFPO0FBQzFEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxtQkFBbUIsa0JBQWtCO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsaURBQWlEOztBQUVqRCxrREFBa0Q7QUFDbEQ7O0FBRUE7QUFDQSwrQ0FBK0M7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLGNBQWM7QUFDL0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBLCtDQUErQywwREFBMEQsMkNBQTJDLGlDQUFpQzs7QUFFckw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSwwREFBMEQsY0FBYztBQUN4RTtBQUNBLG9HQUFvRyxxREFBcUQsRUFBRTtBQUMzSixvR0FBb0cscURBQXFELEVBQUU7QUFDM0o7QUFDQSxzR0FBc0csdURBQXVELEVBQUU7QUFDL0o7QUFDQSxnR0FBZ0csaURBQWlELEVBQUU7QUFDbko7QUFDQSxxR0FBcUcsdURBQXVELEVBQUU7QUFDOUo7QUFDQSxzR0FBc0csd0RBQXdELEVBQUU7QUFDaEs7QUFDQSxtR0FBbUcsb0RBQW9ELEVBQUU7QUFDeko7QUFDQSx1R0FBdUcseURBQXlELEVBQUU7QUFDbEs7QUFDQSxvR0FBb0csc0RBQXNELEVBQUU7QUFDNUo7QUFDQSxnR0FBZ0csaURBQWlELEVBQUU7QUFDbko7QUFDQSxrR0FBa0csb0RBQW9ELEVBQUU7QUFDeEo7QUFDQSxrR0FBa0csb0RBQW9ELEVBQUU7QUFDeEo7QUFDQSxrR0FBa0csb0RBQW9ELEVBQUU7QUFDeEo7QUFDQSxrR0FBa0cscURBQXFELEVBQUU7QUFDeko7QUFDQSxpR0FBaUcsbURBQW1ELEVBQUU7QUFDdEo7QUFDQSxnR0FBZ0csa0RBQWtELEVBQUU7QUFDcEo7QUFDQSx1R0FBdUcsMkRBQTJELEVBQUU7QUFDcEs7QUFDQSxnR0FBZ0csa0RBQWtELEVBQUU7QUFDcEo7QUFDQSxnR0FBZ0csa0RBQWtELEVBQUU7QUFDcEo7QUFDQSxzR0FBc0cseURBQXlELEVBQUU7QUFDaks7QUFDQSxvR0FBb0csdURBQXVELEVBQUU7QUFDN0o7QUFDQSxrR0FBa0csb0RBQW9ELEVBQUU7QUFDeEo7QUFDQSxpR0FBaUcsbURBQW1ELEVBQUU7QUFDdEo7QUFDQSxnR0FBZ0csa0RBQWtELEVBQUU7QUFDcEo7QUFDQSxpR0FBaUcsbURBQW1ELEVBQUU7QUFDdEo7QUFDQSxtR0FBbUcsc0RBQXNELEVBQUU7QUFDM0o7QUFDQSxzR0FBc0csMERBQTBELEVBQUU7QUFDbEs7QUFDQSwyR0FBMkcsK0RBQStELEVBQUU7QUFDNUs7QUFDQSx3R0FBd0csMkRBQTJELEVBQUU7QUFDcks7QUFDQSx3R0FBd0csMERBQTBELEVBQUU7QUFDcEs7QUFDQSx1R0FBdUcsMERBQTBELEVBQUU7QUFDbks7QUFDQSxpR0FBaUcsbURBQW1ELEVBQUU7QUFDdEo7QUFDQSxxR0FBcUcsd0RBQXdELEVBQUU7QUFDL0o7QUFDQSxxR0FBcUcsd0RBQXdELEVBQUU7QUFDL0o7QUFDQSxrR0FBa0cscURBQXFELEVBQUU7QUFDeko7QUFDQSxxR0FBcUcsd0RBQXdELEVBQUU7QUFDL0o7QUFDQSxzR0FBc0cseURBQXlELEVBQUU7QUFDaks7QUFDQSx5R0FBeUcsNkRBQTZELEVBQUU7QUFDeEs7QUFDQSxpR0FBaUcsb0RBQW9ELEVBQUU7QUFDdko7QUFDQSxzR0FBc0cseURBQXlELEVBQUU7QUFDaks7QUFDQSxpR0FBaUcsb0RBQW9ELEVBQUU7QUFDdko7QUFDQSxpR0FBaUcsb0RBQW9ELEVBQUU7QUFDdko7QUFDQSwrRkFBK0YsaURBQWlELEVBQUU7QUFDbEo7QUFDQSxvR0FBb0csdURBQXVELEVBQUU7QUFDN0o7QUFDQSxxR0FBcUcsd0RBQXdELEVBQUU7QUFDL0o7QUFDQSxvR0FBb0csdURBQXVELEVBQUU7QUFDN0o7QUFDQSxpR0FBaUcsb0RBQW9ELEVBQUU7QUFDdko7QUFDQSwrRkFBK0YsaURBQWlELEVBQUU7QUFDbEo7QUFDQSxrR0FBa0cscURBQXFELEVBQUU7QUFDeko7QUFDQSxvR0FBb0csdURBQXVELEVBQUU7QUFDN0o7QUFDQSxnR0FBZ0csa0RBQWtELEVBQUU7QUFDcEo7QUFDQSxtR0FBbUcsc0RBQXNELEVBQUU7QUFDM0o7QUFDQSxrR0FBa0csb0RBQW9ELEVBQUU7QUFDeEo7QUFDQSxxR0FBcUcsd0RBQXdELEVBQUU7QUFDL0o7QUFDQSxzR0FBc0cseURBQXlELEVBQUU7QUFDaks7QUFDQSxzR0FBc0csd0RBQXdELEVBQUU7QUFDaEs7QUFDQSxxR0FBcUcsd0RBQXdELEVBQUU7QUFDL0o7QUFDQSxzR0FBc0cseURBQXlELEVBQUU7QUFDaks7QUFDQSxtR0FBbUcsc0RBQXNELEVBQUU7QUFDM0o7QUFDQSx1R0FBdUcsMERBQTBELEVBQUU7QUFDbks7QUFDQSxtR0FBbUcsc0RBQXNELEVBQUU7QUFDM0o7QUFDQSx1R0FBdUcsMkRBQTJELEVBQUU7QUFDcEs7QUFDQSxxR0FBcUcsd0RBQXdELEVBQUU7QUFDL0o7QUFDQSxrR0FBa0cscURBQXFELEVBQUU7QUFDeko7QUFDQSxtR0FBbUcsc0RBQXNELEVBQUU7QUFDM0o7QUFDQSxzR0FBc0cseURBQXlELEVBQUU7QUFDaks7QUFDQSxvR0FBb0csdURBQXVELEVBQUU7QUFDN0o7QUFDQSxpR0FBaUcsb0RBQW9ELEVBQUU7QUFDdko7QUFDQSxrR0FBa0cscURBQXFELEVBQUU7QUFDeko7QUFDQSxvR0FBb0csdURBQXVELEVBQUU7QUFDN0o7QUFDQSxvR0FBb0csdURBQXVELEVBQUU7QUFDN0o7QUFDQSx3R0FBd0csNERBQTRELEVBQUU7QUFDdEs7QUFDQSx5R0FBeUcsNkRBQTZELEVBQUU7QUFDeEs7QUFDQSx1R0FBdUcsMERBQTBELEVBQUU7QUFDbks7QUFDQSxvR0FBb0csd0RBQXdELEVBQUU7QUFDOUo7QUFDQSxvR0FBb0csdURBQXVELEVBQUU7QUFDN0o7QUFDQSxrR0FBa0cscURBQXFELEVBQUU7QUFDeko7QUFDQSx1R0FBdUcsMERBQTBELEVBQUU7QUFDbks7QUFDQSxxR0FBcUcsd0RBQXdELEVBQUU7QUFDL0o7QUFDQSxpSEFBaUgscUVBQXFFLEVBQUU7QUFDeEw7QUFDQSwrR0FBK0csbUVBQW1FLEVBQUU7QUFDcEw7QUFDQSxtR0FBbUcscURBQXFELEVBQUU7QUFDMUo7QUFDQSxpR0FBaUcsbURBQW1ELEVBQUU7QUFDdEo7QUFDQSxvR0FBb0csc0RBQXNELEVBQUU7QUFDNUo7QUFDQSxtR0FBbUcscURBQXFELEVBQUU7QUFDMUo7QUFDQSxtR0FBbUcsc0RBQXNELEVBQUU7QUFDM0o7QUFDQSxnR0FBZ0csa0RBQWtELEVBQUU7QUFDcEo7QUFDQSxrR0FBa0csb0RBQW9ELEVBQUU7QUFDeEo7QUFDQSxtR0FBbUcsc0RBQXNELEVBQUU7QUFDM0o7QUFDQSxtR0FBbUcsc0RBQXNELEVBQUU7QUFDM0o7QUFDQSxtR0FBbUcsc0RBQXNELEVBQUU7QUFDM0o7QUFDQSx1R0FBdUcsMkRBQTJELEVBQUU7QUFDcEs7QUFDQSwrRkFBK0YsaURBQWlELEVBQUU7QUFDbEo7QUFDQSxxR0FBcUcsd0RBQXdELEVBQUU7QUFDL0o7QUFDQSwrRkFBK0YsaURBQWlELEVBQUU7QUFDbEosa0dBQWtHLGlEQUFpRCxFQUFFO0FBQ3JKO0FBQ0EsK0ZBQStGLGlEQUFpRCxFQUFFO0FBQ2xKO0FBQ0EsK0ZBQStGLGlEQUFpRCxFQUFFO0FBQ2xKO0FBQ0EsZ0dBQWdHLGtEQUFrRCxFQUFFO0FBQ3BKO0FBQ0Esb0dBQW9HLHNEQUFzRCxFQUFFO0FBQzVKO0FBQ0EsbUdBQW1HLHNEQUFzRCxFQUFFO0FBQzNKO0FBQ0Esb0dBQW9HLHVEQUF1RCxFQUFFO0FBQzdKO0FBQ0Esb0dBQW9HLHdEQUF3RCxFQUFFO0FBQzlKO0FBQ0EsZ0dBQWdHLG1EQUFtRCxFQUFFO0FBQ3JKO0FBQ0Esb0dBQW9HLHVEQUF1RCxFQUFFO0FBQzdKO0FBQ0EsZ0dBQWdHLG1EQUFtRCxFQUFFO0FBQ3JKO0FBQ0EsaUdBQWlHLG9EQUFvRCxFQUFFO0FBQ3ZKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQTs7O0FBR0E7OztBQUdBOzs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBOzs7Ozs7OztBQVFBOzs7Ozs7QUFNQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBOzs7O0FBSUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCLFlBQVksTUFBTTtBQUNsQjtBQUNBLDhCQUE4QjtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQU1BO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixnQkFBZ0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7O0FBRUEsaUJBQWlCLGlCQUFpQjtBQUNsQztBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsWUFBWSxNQUFNO0FBQ2xCO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsaUJBQWlCLGdCQUFnQjtBQUNqQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCLFlBQVksTUFBTTtBQUNsQjtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGtCQUFrQix1QkFBdUI7QUFDekM7QUFDQTs7QUFFQSxpQkFBaUIsbUJBQW1CO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixtQkFBbUI7QUFDeEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxrQkFBa0IsdUJBQXVCO0FBQ3pDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGdCQUFnQjtBQUNqQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxTQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLFNBQVM7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNEJBQTRCLE9BQU87QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFlBQVksRUFBRTtBQUNkO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUyxHQUFHLFNBQVM7QUFDeEM7QUFDQSwrQkFBK0IsWUFBWSxFQUFFO0FBQzdDLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFlBQVksRUFBRTtBQUNkO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUyxHQUFHLFNBQVM7QUFDeEM7QUFDQSwrQkFBK0IsWUFBWSxFQUFFO0FBQzdDLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCLEtBQUssS0FBSztBQUNyQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBOztBQUVBLGtCQUFrQix1QkFBdUI7QUFDekM7QUFDQTs7QUFFQTs7QUFFQSxpQkFBaUIsaUJBQWlCO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7QUFHRDtBQUNBOztBQUVBLGtCQUFrQix1QkFBdUI7QUFDekM7QUFDQTs7QUFFQSxpQkFBaUIsaUJBQWlCO0FBQ2xDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RDs7QUFFeEQsbUhBQW1IOztBQUVuSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxpQkFBaUIsZ0JBQWdCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSx1RUFBdUU7O0FBRXZFLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQSxXQUFXOztBQUVYO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7O0FBRWhCO0FBQ0EsZUFBZTs7QUFFZjtBQUNBLGVBQWU7O0FBRWY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBLCtDQUErQywwREFBMEQsMkNBQTJDLGlDQUFpQzs7QUFFckw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBCQUEwQjtBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7OztBQUdILHFDQUFxQzs7QUFFckMsc0JBQXNCOztBQUV0QixlQUFlOztBQUVmO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSwrQ0FBK0MsMERBQTBELDJDQUEyQyxpQ0FBaUM7O0FBRXJMOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssWUFBWTtBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUEsK0NBQStDLDBEQUEwRCwyQ0FBMkMsaUNBQWlDOztBQUVyTDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0EsK0NBQStDO0FBQy9DLEdBQUc7QUFDSCxxQkFBcUI7O0FBRXJCLDRCQUE0QjtBQUM1QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsdUJBQXVCLFNBQVM7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2hpZXJhcmNoeS9idWlsZC9oaWVyYXJjaHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJIaWVyYXJjaHlcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiSGllcmFyY2h5XCJdID0gZmFjdG9yeSgpO1xufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAzMSk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkgPyBBcnJheS5pc0FycmF5KHZhbHVlKSA6IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX3R5cGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUsICdBcnJheScpO1xufSk7XG5cbi8qKiovIH0pLFxuLyogMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBpc0FycmF5TGlrZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAvKipcbiAgICogaXNBcnJheUxpa2UoWzEsIDIsIDNdKSA9PiB0cnVlXG4gICAqIGlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pID0+IHRydWVcbiAgICogaXNBcnJheUxpa2UoJ2FiYycpID0+IHRydWVcbiAgICogaXNBcnJheUxpa2UoRnVuY3Rpb24pID0+IGZhbHNlXG4gICAqL1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nICYmIGlzRmluaXRlKHZhbHVlLmxlbmd0aCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzQXJyYXlMaWtlKTtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19vYmplY3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xuXG5cblxuZnVuY3Rpb24gZWFjaChlbGVtZW50cywgZnVuYykge1xuICBpZiAoIWVsZW1lbnRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHJzdDtcblxuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoZWxlbWVudHMpKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGVsZW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICByc3QgPSBmdW5jKGVsZW1lbnRzW2ldLCBpKTtcblxuICAgICAgaWYgKHJzdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX29iamVjdF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShlbGVtZW50cykpIHtcbiAgICBmb3IgKHZhciBrIGluIGVsZW1lbnRzKSB7XG4gICAgICBpZiAoZWxlbWVudHMuaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgcnN0ID0gZnVuYyhlbGVtZW50c1trXSwgayk7XG5cbiAgICAgICAgaWYgKHJzdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGVhY2gpO1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyoqXG4gKiDmmK/lkKbkuLrlh73mlbBcbiAqIEBwYXJhbSAgeyp9IGZuIOWvueixoVxuICogQHJldHVybiB7Qm9vbGVhbn0gIOaYr+WQpuWHveaVsFxuICovXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlLCAnRnVuY3Rpb24nKTtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxudmFyIGlzVHlwZSA9IGZ1bmN0aW9uICh2YWx1ZSwgdHlwZSkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0ICcgKyB0eXBlICsgJ10nO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc1R5cGUpO1xuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyoqXG4gKiDliKTmlq3mmK/lkKbmlbDlrZdcbiAqIEByZXR1cm4ge0Jvb2xlYW59IOaYr+WQpuaVsOWtl1xuICovXG5cblxudmFyIGlzTnVtYmVyID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlLCAnTnVtYmVyJyk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzTnVtYmVyKTtcblxuLyoqKi8gfSksXG4vKiA2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLy8gaXNGaW5pdGUsXG52YXIgaXNOaWwgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgLyoqXG4gICAqIGlzTmlsKG51bGwpID0+IHRydWVcbiAgICogaXNOaWwoKSA9PiB0cnVlXG4gICAqL1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNOaWwpO1xuXG4vKioqLyB9KSxcbi8qIDcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMyksXG4gICAgbWl4ID0gX3JlcXVpcmUubWl4O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYXNzaWduOiBtaXhcbn07XG5cbi8qKiovIH0pLFxuLyogOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX3R5cGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShzdHIsICdTdHJpbmcnKTtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19vYmplY3RfbGlrZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc190eXBlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXG5cblxudmFyIGlzUGxhaW5PYmplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgLyoqXG4gICAqIGlzT2JqZWN0TGlrZShuZXcgRm9vKSA9PiBmYWxzZVxuICAgKiBpc09iamVjdExpa2UoWzEsIDIsIDNdKSA9PiBmYWxzZVxuICAgKiBpc09iamVjdExpa2UoeyB4OiAwLCB5OiAwIH0pID0+IHRydWVcbiAgICogaXNPYmplY3RMaWtlKE9iamVjdC5jcmVhdGUobnVsbCkpID0+IHRydWVcbiAgICovXG4gIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfb2JqZWN0X2xpa2VfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpIHx8ICFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc190eXBlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlLCAnT2JqZWN0JykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdmFyIHByb3RvID0gdmFsdWU7XG5cbiAgd2hpbGUgKE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90bykgIT09IG51bGwpIHtcbiAgICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKSA9PT0gcHJvdG87XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzUGxhaW5PYmplY3QpO1xuXG4vKioqLyB9KSxcbi8qIDEwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbmlsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uICh2YWx1ZSkge1xuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbmlsX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKSkgcmV0dXJuICcnO1xuICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDExICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBoaWVyYXJjaHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcblxudmFyIExheW91dCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExheW91dChyb290LCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cblxuICAgIHZhciBtZSA9IHRoaXM7XG4gICAgbWUub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgbWUucm9vdE5vZGUgPSBoaWVyYXJjaHkocm9vdCwgb3B0aW9ucyk7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gTGF5b3V0LnByb3RvdHlwZTtcblxuICBfcHJvdG8uZXhlY3V0ZSA9IGZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QnKTtcbiAgfTtcblxuICByZXR1cm4gTGF5b3V0O1xufSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IExheW91dDtcblxuLyoqKi8gfSksXG4vKiAxMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cblxudmFyIGNvbnRhaW5zID0gZnVuY3Rpb24gKGFyciwgdmFsdWUpIHtcbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9saWtlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gYXJyLmluZGV4T2YodmFsdWUpID4gLTE7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGNvbnRhaW5zKTtcblxuLyoqKi8gfSksXG4vKiAxMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gIC8qKlxuICAgKiBpc09iamVjdCh7fSkgPT4gdHJ1ZVxuICAgKiBpc09iamVjdChbMSwgMiwgM10pID0+IHRydWVcbiAgICogaXNPYmplY3QoRnVuY3Rpb24pID0+IHRydWVcbiAgICogaXNPYmplY3QobnVsbCkgPT4gZmFsc2VcbiAgICovXG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJztcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDE0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cblxuXG52YXIgZmlsdGVyID0gZnVuY3Rpb24gKGFyciwgZnVuYykge1xuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X2xpa2VfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyKSkge1xuICAgIHJldHVybiBhcnI7XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gW107XG4gIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2VhY2hfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyLCBmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgaWYgKGZ1bmModmFsdWUsIGluZGV4KSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZpbHRlcik7XG5cbi8qKiovIH0pLFxuLyogMTUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNPYmplY3RMaWtlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIC8qKlxuICAgKiBpc09iamVjdExpa2Uoe30pID0+IHRydWVcbiAgICogaXNPYmplY3RMaWtlKFsxLCAyLCAzXSkgPT4gdHJ1ZVxuICAgKiBpc09iamVjdExpa2UoRnVuY3Rpb24pID0+IGZhbHNlXG4gICAqIGlzT2JqZWN0TGlrZShudWxsKSA9PiBmYWxzZVxuICAgKi9cbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGw7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzT2JqZWN0TGlrZSk7XG5cbi8qKiovIH0pLFxuLyogMTYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoaW1tdXRhYmxlKSAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IG1peDtcbi8vIEZJWE1FOiBNdXRhYmxlIHBhcmFtIHNob3VsZCBiZSBmb3JiaWRkZW4gaW4gc3RhdGljIGxhbmcuXG5mdW5jdGlvbiBfbWl4KGRpc3QsIG9iaikge1xuICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleSAhPT0gJ2NvbnN0cnVjdG9yJyAmJiBvYmpba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkaXN0W2tleV0gPSBvYmpba2V5XTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWl4KGRpc3QsIHNyYzEsIHNyYzIsIHNyYzMpIHtcbiAgaWYgKHNyYzEpIF9taXgoZGlzdCwgc3JjMSk7XG4gIGlmIChzcmMyKSBfbWl4KGRpc3QsIHNyYzIpO1xuICBpZiAoc3JjMykgX21peChkaXN0LCBzcmMzKTtcbiAgcmV0dXJuIGRpc3Q7XG59XG5cbi8qKiovIH0pLFxuLyogMTcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHNlcGFyYXRlVHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oMzApO1xuXG52YXIgVkFMSURfRElSRUNUSU9OUyA9IFsnTFInLCAvLyBsZWZ0IHRvIHJpZ2h0XG4nUkwnLCAvLyByaWdodCB0byBsZWZ0XG4nVEInLCAvLyB0b3AgdG8gYm90dG9tXG4nQlQnLCAvLyBib3R0b20gdG8gdG9wXG4nSCcsIC8vIGhvcml6b250YWxcbidWJyAvLyB2ZXJ0aWNhbFxuXTtcbnZhciBIT1JJWk9OVEFMX0RJUkVDVElPTlMgPSBbJ0xSJywgJ1JMJywgJ0gnXTtcblxudmFyIGlzSG9yaXpvbnRhbCA9IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbChkaXJlY3Rpb24pIHtcbiAgcmV0dXJuIEhPUklaT05UQUxfRElSRUNUSU9OUy5pbmRleE9mKGRpcmVjdGlvbikgPiAtMTtcbn07XG5cbnZhciBERUZBVUxUX0RJUkVDVElPTiA9IFZBTElEX0RJUkVDVElPTlNbMF07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHJvb3QsIG9wdGlvbnMsIGxheW91dEFsZ3JpdGhtKSB7XG4gIHZhciBkaXJlY3Rpb24gPSBvcHRpb25zLmRpcmVjdGlvbiB8fCBERUZBVUxUX0RJUkVDVElPTjtcbiAgb3B0aW9ucy5pc0hvcml6b250YWwgPSBpc0hvcml6b250YWwoZGlyZWN0aW9uKTtcblxuICBpZiAoZGlyZWN0aW9uICYmIFZBTElEX0RJUkVDVElPTlMuaW5kZXhPZihkaXJlY3Rpb24pID09PSAtMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGRpcmVjdGlvbjogXCIgKyBkaXJlY3Rpb24pO1xuICB9XG5cbiAgaWYgKGRpcmVjdGlvbiA9PT0gVkFMSURfRElSRUNUSU9OU1swXSkge1xuICAgIC8vIExSXG4gICAgbGF5b3V0QWxncml0aG0ocm9vdCwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSBWQUxJRF9ESVJFQ1RJT05TWzFdKSB7XG4gICAgLy8gUkxcbiAgICBsYXlvdXRBbGdyaXRobShyb290LCBvcHRpb25zKTtcbiAgICByb290LnJpZ2h0MmxlZnQoKTtcbiAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFZBTElEX0RJUkVDVElPTlNbMl0pIHtcbiAgICAvLyBUQlxuICAgIGxheW91dEFsZ3JpdGhtKHJvb3QsIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gVkFMSURfRElSRUNUSU9OU1szXSkge1xuICAgIC8vIEJUXG4gICAgbGF5b3V0QWxncml0aG0ocm9vdCwgb3B0aW9ucyk7XG4gICAgcm9vdC5ib3R0b20ydG9wKCk7XG4gIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSBWQUxJRF9ESVJFQ1RJT05TWzRdIHx8IGRpcmVjdGlvbiA9PT0gVkFMSURfRElSRUNUSU9OU1s1XSkge1xuICAgIC8vIEggb3IgVlxuICAgIC8vIHNlcGFyYXRlIGludG8gbGVmdCBhbmQgcmlnaHQgdHJlZXNcbiAgICB2YXIgX3NlcGFyYXRlVHJlZSA9IHNlcGFyYXRlVHJlZShyb290LCBvcHRpb25zKSxcbiAgICAgICAgbGVmdCA9IF9zZXBhcmF0ZVRyZWUubGVmdCxcbiAgICAgICAgcmlnaHQgPSBfc2VwYXJhdGVUcmVlLnJpZ2h0OyAvLyBkbyBsYXlvdXQgZm9yIGxlZnQgYW5kIHJpZ2h0IHRyZWVzXG5cblxuICAgIGxheW91dEFsZ3JpdGhtKGxlZnQsIG9wdGlvbnMpO1xuICAgIGxheW91dEFsZ3JpdGhtKHJpZ2h0LCBvcHRpb25zKTtcbiAgICBvcHRpb25zLmlzSG9yaXpvbnRhbCA/IGxlZnQucmlnaHQybGVmdCgpIDogbGVmdC5ib3R0b20ydG9wKCk7IC8vIGNvbWJpbmUgbGVmdCBhbmQgcmlnaHQgdHJlZXNcblxuICAgIHJpZ2h0LnRyYW5zbGF0ZShsZWZ0LnggLSByaWdodC54LCBsZWZ0LnkgLSByaWdodC55KTsgLy8gdHJhbnNsYXRlIHJvb3RcblxuICAgIHJvb3QueCA9IGxlZnQueDtcbiAgICByb290LnkgPSByaWdodC55O1xuICAgIHZhciBiYiA9IHJvb3QuZ2V0Qm91bmRpbmdCb3goKTtcblxuICAgIGlmIChvcHRpb25zLmlzSG9yaXpvbnRhbCkge1xuICAgICAgaWYgKGJiLnRvcCA8IDApIHtcbiAgICAgICAgcm9vdC50cmFuc2xhdGUoMCwgLWJiLnRvcCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChiYi5sZWZ0IDwgMCkge1xuICAgICAgICByb290LnRyYW5zbGF0ZSgtYmIubGVmdCwgMCk7XG4gICAgICB9XG4gICAgfVxuICB9IC8vIGZpeGVkIHJvb3QgcG9zaXRpb24sIGRlZmF1bHQgdmFsdWUgaXMgdHJ1ZVxuXG5cbiAgdmFyIGZpeGVkUm9vdCA9IG9wdGlvbnMuZml4ZWRSb290O1xuICBpZiAoZml4ZWRSb290ID09PSB1bmRlZmluZWQpIGZpeGVkUm9vdCA9IHRydWU7XG5cbiAgaWYgKGZpeGVkUm9vdCkge1xuICAgIHJvb3QudHJhbnNsYXRlKC0ocm9vdC54ICsgcm9vdC53aWR0aCAvIDIgKyByb290LmhnYXApLCAtKHJvb3QueSArIHJvb3QuaGVpZ2h0IC8gMiArIHJvb3QudmdhcCkpO1xuICB9XG5cbiAgcmV0dXJuIHJvb3Q7XG59O1xuXG4vKioqLyB9KSxcbi8qIDE4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbmQtYXNzaWduICovXG52YXIgdXRpbCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cbnZhciBQRU0gPSAxODtcbnZhciBERUZBVUxUX0hFSUdIVCA9IFBFTSAqIDI7XG52YXIgREVGQVVMVF9HQVAgPSBQRU07XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBnZXRJZDogZnVuY3Rpb24gZ2V0SWQoZCkge1xuICAgIHJldHVybiBkLmlkIHx8IGQubmFtZTtcbiAgfSxcbiAgZ2V0UHJlSDogZnVuY3Rpb24gZ2V0UHJlSChkKSB7XG4gICAgcmV0dXJuIGQucHJlSCB8fCAwO1xuICB9LFxuICBnZXRQcmVWOiBmdW5jdGlvbiBnZXRQcmVWKGQpIHtcbiAgICByZXR1cm4gZC5wcmVWIHx8IDA7XG4gIH0sXG4gIGdldEhHYXA6IGZ1bmN0aW9uIGdldEhHYXAoZCkge1xuICAgIHJldHVybiBkLmhnYXAgfHwgREVGQVVMVF9HQVA7XG4gIH0sXG4gIGdldFZHYXA6IGZ1bmN0aW9uIGdldFZHYXAoZCkge1xuICAgIHJldHVybiBkLnZnYXAgfHwgREVGQVVMVF9HQVA7XG4gIH0sXG4gIGdldENoaWxkcmVuOiBmdW5jdGlvbiBnZXRDaGlsZHJlbihkKSB7XG4gICAgcmV0dXJuIGQuY2hpbGRyZW47XG4gIH0sXG4gIGdldEhlaWdodDogZnVuY3Rpb24gZ2V0SGVpZ2h0KGQpIHtcbiAgICByZXR1cm4gZC5oZWlnaHQgfHwgREVGQVVMVF9IRUlHSFQ7XG4gIH0sXG4gIGdldFdpZHRoOiBmdW5jdGlvbiBnZXRXaWR0aChkKSB7XG4gICAgdmFyIGxhYmVsID0gZC5sYWJlbCB8fCAnICc7XG4gICAgcmV0dXJuIGQud2lkdGggfHwgbGFiZWwuc3BsaXQoJycpLmxlbmd0aCAqIFBFTTsgLy8gRklYTUUgRE8gTk9UIGdldCB3aWR0aCBsaWtlIHRoaXNcbiAgfVxufTtcblxuZnVuY3Rpb24gTm9kZShkYXRhLCBvcHRpb25zKSB7XG4gIHZhciBtZSA9IHRoaXM7XG4gIG1lLnZnYXAgPSBtZS5oZ2FwID0gMDtcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBOb2RlKSByZXR1cm4gZGF0YTtcbiAgbWUuZGF0YSA9IGRhdGE7XG4gIC8qXG4gICAqIEdhcHM6IGZpbGxpbmcgc3BhY2UgYmV0d2VlbiBub2Rlc1xuICAgKiAoeCwgeSkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiB8ICAgICAgICAgICAgdmdhcCAgICAgICAgICAgIHxcbiAgICogfCAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLSAgICBoXG4gICAqIHwgaCB8ICAgICAgICAgICAgICAgICAgICB8ICAgZVxuICAgKiB8IGcgfCAgICAgICAgICAgICAgICAgICAgfCAgIGlcbiAgICogfCBhIHwgICAgICAgICAgICAgICAgICAgIHwgICBnXG4gICAqIHwgcCB8ICAgICAgICAgICAgICAgICAgICB8ICAgaFxuICAgKiB8ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgIHRcbiAgICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAqICAtLS0tLS0tLS0tLXdpZHRoLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIHZhciBoZ2FwID0gb3B0aW9ucy5nZXRIR2FwKGRhdGEpO1xuICB2YXIgdmdhcCA9IG9wdGlvbnMuZ2V0VkdhcChkYXRhKTtcbiAgbWUucHJlSCA9IG9wdGlvbnMuZ2V0UHJlSChkYXRhKTtcbiAgbWUucHJlViA9IG9wdGlvbnMuZ2V0UHJlVihkYXRhKTtcbiAgbWUud2lkdGggPSBvcHRpb25zLmdldFdpZHRoKGRhdGEpO1xuICBtZS5oZWlnaHQgPSBvcHRpb25zLmdldEhlaWdodChkYXRhKTtcbiAgbWUud2lkdGggKz0gbWUucHJlSDtcbiAgbWUuaGVpZ2h0ICs9IG1lLnByZVY7XG4gIG1lLmlkID0gb3B0aW9ucy5nZXRJZChkYXRhKTtcbiAgbWUueCA9IG1lLnkgPSAwO1xuICBtZS5kZXB0aCA9IDA7XG5cbiAgaWYgKCFtZS5jaGlsZHJlbikge1xuICAgIG1lLmNoaWxkcmVuID0gW107XG4gIH1cblxuICBtZS5hZGRHYXAoaGdhcCwgdmdhcCk7XG4gIHJldHVybiBtZTtcbn1cblxudXRpbC5hc3NpZ24oTm9kZS5wcm90b3R5cGUsIHtcbiAgaXNSb290OiBmdW5jdGlvbiBpc1Jvb3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVwdGggPT09IDA7XG4gIH0sXG4gIGlzTGVhZjogZnVuY3Rpb24gaXNMZWFmKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aCA9PT0gMDtcbiAgfSxcbiAgYWRkR2FwOiBmdW5jdGlvbiBhZGRHYXAoaGdhcCwgdmdhcCkge1xuICAgIHZhciBtZSA9IHRoaXM7XG4gICAgbWUuaGdhcCArPSBoZ2FwO1xuICAgIG1lLnZnYXAgKz0gdmdhcDtcbiAgICBtZS53aWR0aCArPSAyICogaGdhcDtcbiAgICBtZS5oZWlnaHQgKz0gMiAqIHZnYXA7XG4gIH0sXG4gIGVhY2hOb2RlOiBmdW5jdGlvbiBlYWNoTm9kZShjYWxsYmFjaykge1xuICAgIC8vIERlcHRoIEZpcnN0IHRyYXZlcnNlXG4gICAgdmFyIG1lID0gdGhpcztcbiAgICB2YXIgbm9kZXMgPSBbbWVdO1xuICAgIHZhciBjdXJyZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnQgPSBub2Rlcy5zaGlmdCgpKSB7XG4gICAgICBjYWxsYmFjayhjdXJyZW50KTtcbiAgICAgIG5vZGVzID0gY3VycmVudC5jaGlsZHJlbi5jb25jYXQobm9kZXMpO1xuICAgIH1cbiAgfSxcbiAgREZUcmF2ZXJzZTogZnVuY3Rpb24gREZUcmF2ZXJzZShjYWxsYmFjaykge1xuICAgIC8vIERlcHRoIEZpcnN0IHRyYXZlcnNlXG4gICAgdGhpcy5lYWNoTm9kZShjYWxsYmFjayk7XG4gIH0sXG4gIEJGVHJhdmVyc2U6IGZ1bmN0aW9uIEJGVHJhdmVyc2UoY2FsbGJhY2spIHtcbiAgICAvLyBCcmVhZHRoIEZpcnN0IHRyYXZlcnNlXG4gICAgdmFyIG1lID0gdGhpcztcbiAgICB2YXIgbm9kZXMgPSBbbWVdO1xuICAgIHZhciBjdXJyZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnQgPSBub2Rlcy5zaGlmdCgpKSB7XG4gICAgICBjYWxsYmFjayhjdXJyZW50KTtcbiAgICAgIG5vZGVzID0gbm9kZXMuY29uY2F0KGN1cnJlbnQuY2hpbGRyZW4pO1xuICAgIH1cbiAgfSxcbiAgZ2V0Qm91bmRpbmdCb3g6IGZ1bmN0aW9uIGdldEJvdW5kaW5nQm94KCkge1xuICAgIC8vIEJCb3ggZm9yIGp1c3Qgb25lIHRyZWUgbm9kZVxuICAgIHZhciBiYiA9IHtcbiAgICAgIGxlZnQ6IE51bWJlci5NQVhfVkFMVUUsXG4gICAgICB0b3A6IE51bWJlci5NQVhfVkFMVUUsXG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdGhpcy5lYWNoTm9kZShmdW5jdGlvbiAobm9kZSkge1xuICAgICAgYmIubGVmdCA9IE1hdGgubWluKGJiLmxlZnQsIG5vZGUueCk7XG4gICAgICBiYi50b3AgPSBNYXRoLm1pbihiYi50b3AsIG5vZGUueSk7XG4gICAgICBiYi53aWR0aCA9IE1hdGgubWF4KGJiLndpZHRoLCBub2RlLnggKyBub2RlLndpZHRoKTtcbiAgICAgIGJiLmhlaWdodCA9IE1hdGgubWF4KGJiLmhlaWdodCwgbm9kZS55ICsgbm9kZS5oZWlnaHQpO1xuICAgIH0pO1xuICAgIHJldHVybiBiYjtcbiAgfSxcbiAgLy8gdHJhbnNsYXRlXG4gIHRyYW5zbGF0ZTogZnVuY3Rpb24gdHJhbnNsYXRlKHR4LCB0eSkge1xuICAgIGlmICh0eCA9PT0gdm9pZCAwKSB7XG4gICAgICB0eCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHR5ID09PSB2b2lkIDApIHtcbiAgICAgIHR5ID0gMDtcbiAgICB9XG5cbiAgICB0aGlzLmVhY2hOb2RlKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBub2RlLnggKz0gdHg7XG4gICAgICBub2RlLnkgKz0gdHk7XG4gICAgICBub2RlLnggKz0gbm9kZS5wcmVIO1xuICAgICAgbm9kZS55ICs9IG5vZGUucHJlVjtcbiAgICB9KTtcbiAgfSxcbiAgcmlnaHQybGVmdDogZnVuY3Rpb24gcmlnaHQybGVmdCgpIHtcbiAgICB2YXIgbWUgPSB0aGlzO1xuICAgIHZhciBiYiA9IG1lLmdldEJvdW5kaW5nQm94KCk7XG4gICAgbWUuZWFjaE5vZGUoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIG5vZGUueCA9IG5vZGUueCAtIChub2RlLnggLSBiYi5sZWZ0KSAqIDIgLSBub2RlLndpZHRoOyAvLyBub2RlLnggPSAtIG5vZGUueDtcbiAgICB9KTtcbiAgICBtZS50cmFuc2xhdGUoYmIud2lkdGgsIDApO1xuICB9LFxuICBib3R0b20ydG9wOiBmdW5jdGlvbiBib3R0b20ydG9wKCkge1xuICAgIHZhciBtZSA9IHRoaXM7XG4gICAgdmFyIGJiID0gbWUuZ2V0Qm91bmRpbmdCb3goKTtcbiAgICBtZS5lYWNoTm9kZShmdW5jdGlvbiAobm9kZSkge1xuICAgICAgbm9kZS55ID0gbm9kZS55IC0gKG5vZGUueSAtIGJiLnRvcCkgKiAyIC0gbm9kZS5oZWlnaHQ7IC8vIG5vZGUueSA9IC0gbm9kZS55O1xuICAgIH0pO1xuICAgIG1lLnRyYW5zbGF0ZSgwLCBiYi5oZWlnaHQpO1xuICB9XG59KTtcblxuZnVuY3Rpb24gaGllcmFyY2h5KGRhdGEsIG9wdGlvbnMsIGlzb2xhdGVkKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICBvcHRpb25zID0gdXRpbC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucyk7XG4gIHZhciByb290ID0gbmV3IE5vZGUoZGF0YSwgb3B0aW9ucyk7XG4gIHZhciBub2RlcyA9IFtyb290XTtcbiAgdmFyIG5vZGU7XG5cbiAgaWYgKCFpc29sYXRlZCAmJiAhZGF0YS5jb2xsYXBzZWQpIHtcbiAgICB3aGlsZSAobm9kZSA9IG5vZGVzLnNoaWZ0KCkpIHtcbiAgICAgIGlmICghbm9kZS5kYXRhLmNvbGxhcHNlZCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSBvcHRpb25zLmdldENoaWxkcmVuKG5vZGUuZGF0YSk7XG4gICAgICAgIHZhciBsZW5ndGggPSBjaGlsZHJlbiA/IGNoaWxkcmVuLmxlbmd0aCA6IDA7XG4gICAgICAgIG5vZGUuY2hpbGRyZW4gPSBuZXcgQXJyYXkobGVuZ3RoKTtcblxuICAgICAgICBpZiAoY2hpbGRyZW4gJiYgbGVuZ3RoKSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gbmV3IE5vZGUoY2hpbGRyZW5baV0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbltpXSA9IGNoaWxkO1xuICAgICAgICAgICAgbm9kZXMucHVzaChjaGlsZCk7XG4gICAgICAgICAgICBjaGlsZC5wYXJlbnQgPSBub2RlO1xuICAgICAgICAgICAgY2hpbGQuZGVwdGggPSBub2RlLmRlcHRoICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcm9vdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoaWVyYXJjaHk7XG5cbi8qKiovIH0pLFxuLyogMTkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19uaWxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19rZXlzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTtcblxuXG5cbmZ1bmN0aW9uIGlzTWF0Y2gob2JqLCBhdHRycykge1xuICB2YXIgX2tleXMgPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19rZXlzX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGF0dHJzKTtcblxuICB2YXIgbGVuZ3RoID0gX2tleXMubGVuZ3RoO1xuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbmlsX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG9iaikpIHJldHVybiAhbGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB2YXIga2V5ID0gX2tleXNbaV07XG5cbiAgICBpZiAoYXR0cnNba2V5XSAhPT0gb2JqW2tleV0gfHwgIShrZXkgaW4gb2JqKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzTWF0Y2gpO1xuXG4vKioqLyB9KSxcbi8qIDIwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2Z1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG5cbnZhciBrZXlzID0gT2JqZWN0LmtleXMgPyBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopO1xufSA6IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG9iaiwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICBpZiAoIShPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvYmopICYmIGtleSA9PT0gJ3Byb3RvdHlwZScpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChrZXlzKTtcblxuLyoqKi8gfSksXG4vKiAyMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbnZhciBzcGxpY2UgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlO1xuXG52YXIgcHVsbEF0ID0gZnVuY3Rpb24gcHVsbEF0KGFyciwgaW5kZXhlcykge1xuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X2xpa2VfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBhcnIgPyBpbmRleGVzLmxlbmd0aCA6IDA7XG4gIHZhciBsYXN0ID0gbGVuZ3RoIC0gMTtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICB2YXIgcHJldmlvdXMgPSB2b2lkIDA7XG4gICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gbGFzdCB8fCBpbmRleCAhPT0gcHJldmlvdXMpIHtcbiAgICAgIHByZXZpb3VzID0gaW5kZXg7XG4gICAgICBzcGxpY2UuY2FsbChhcnIsIGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJyO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChwdWxsQXQpO1xuXG4vKioqLyB9KSxcbi8qIDIyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fY29udGFpbnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZWFjaF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblxuXG5cbnZhciB1bmlxID0gZnVuY3Rpb24gKGFycikge1xuICB2YXIgcmVzdWx0QXJyID0gW107XG4gIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2VhY2hfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fY29udGFpbnNfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkocmVzdWx0QXJyLCBpdGVtKSkge1xuICAgICAgcmVzdWx0QXJyLnB1c2goaXRlbSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdEFycjtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAodW5pcSk7XG5cbi8qKiovIH0pLFxuLyogMjMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2Z1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZ3JvdXBfYnlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjQpO1xuXG5cblxuXG52YXIgZ3JvdXBUb01hcCA9IGZ1bmN0aW9uIChkYXRhLCBjb25kaXRpb24pIHtcbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICByZXR1cm4ge1xuICAgICAgMDogZGF0YVxuICAgIH07XG4gIH1cblxuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2Z1bmN0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGNvbmRpdGlvbikpIHtcbiAgICB2YXIgcGFyYW1zQ29uZGl0aW9uXzEgPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShjb25kaXRpb24pID8gY29uZGl0aW9uIDogY29uZGl0aW9uLnJlcGxhY2UoL1xccysvZywgJycpLnNwbGl0KCcqJyk7XG5cbiAgICBjb25kaXRpb24gPSBmdW5jdGlvbiAocm93KSB7XG4gICAgICB2YXIgdW5pcXVlID0gJ18nOyAvLyDpgb/lhY3lh7rnjrDmlbDlrZfkvZzkuLpLZXnnmoTmg4XlhrXvvIzkvJrov5vooYzmjInnhafmlbDlrZfnmoTmjpLluo9cblxuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJhbXNDb25kaXRpb25fMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdW5pcXVlICs9IHJvd1twYXJhbXNDb25kaXRpb25fMVtpXV0gJiYgcm93W3BhcmFtc0NvbmRpdGlvbl8xW2ldXS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5pcXVlO1xuICAgIH07XG4gIH1cblxuICB2YXIgZ3JvdXBzID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZ3JvdXBfYnlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoZGF0YSwgY29uZGl0aW9uKTtcbiAgcmV0dXJuIGdyb3Vwcztcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZ3JvdXBUb01hcCk7XG5cbi8qKiovIH0pLFxuLyogMjQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19mdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuXG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIGdyb3VwQnkoZGF0YSwgY29uZGl0aW9uKSB7XG4gIGlmICghY29uZGl0aW9uIHx8ICFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShkYXRhKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHZhciByZXN1bHQgPSB7fTsgLy8g5YW85a655pa55rOV5ZKMIOWtl+espuS4sueahOWGmeazlVxuXG4gIHZhciBwcmVkaWNhdGUgPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShjb25kaXRpb24pID8gY29uZGl0aW9uIDogZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbVtjb25kaXRpb25dO1xuICB9O1xuICB2YXIga2V5O1xuICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGRhdGEsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAga2V5ID0gcHJlZGljYXRlKGl0ZW0pO1xuXG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICByZXN1bHRba2V5XS5wdXNoKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IFtpdGVtXTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGdyb3VwQnkpO1xuXG4vKioqLyB9KSxcbi8qIDI1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbiAob2JqLCBrZXkpIHtcbiAgcmV0dXJuIG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpO1xufSk7XG5cbi8qKiovIH0pLFxuLyogMjYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfZnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cbiAvLyBAdHMtaWdub3JlXG5cbnZhciB2YWx1ZXMgPSBPYmplY3QudmFsdWVzID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopO1xufSA6IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG9iaiwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICBpZiAoIShPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvYmopICYmIGtleSA9PT0gJ3Byb3RvdHlwZScpKSB7XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHZhbHVlcyk7XG5cbi8qKiovIH0pLFxuLyogMjcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxudmFyIGdldFR5cGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpLnJlcGxhY2UoL15cXFtvYmplY3QgLywgJycpLnJlcGxhY2UoL10kLywgJycpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChnZXRUeXBlKTtcblxuLyoqKi8gfSksXG4vKiAyOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbnZhciBpc1Byb3RvdHlwZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yO1xuICB2YXIgcHJvdG8gPSB0eXBlb2YgQ3RvciA9PT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSB8fCBvYmplY3RQcm90bztcbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNQcm90b3R5cGUpO1xuXG4vKioqLyB9KSxcbi8qIDI5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfb2JqZWN0X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfbGlrZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX3N0cmluZ19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblxuXG5cblxudmFyIGlzRXF1YWwgPSBmdW5jdGlvbiAodmFsdWUsIG90aGVyKSB7XG4gIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICghdmFsdWUgfHwgIW90aGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX3N0cmluZ19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkgfHwgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfc3RyaW5nX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG90aGVyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9saWtlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKSB8fCBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9saWtlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG90aGVyKSkge1xuICAgIGlmICh2YWx1ZS5sZW5ndGggIT09IG90aGVyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciByc3QgPSB0cnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgcnN0ID0gaXNFcXVhbCh2YWx1ZVtpXSwgb3RoZXJbaV0pO1xuXG4gICAgICBpZiAoIXJzdCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcnN0O1xuICB9XG5cbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX29iamVjdF9saWtlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKSB8fCBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19vYmplY3RfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvdGhlcikpIHtcbiAgICB2YXIgdmFsdWVLZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICAgIHZhciBvdGhlcktleXMgPSBPYmplY3Qua2V5cyhvdGhlcik7XG5cbiAgICBpZiAodmFsdWVLZXlzLmxlbmd0aCAhPT0gb3RoZXJLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciByc3QgPSB0cnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJzdCA9IGlzRXF1YWwodmFsdWVbdmFsdWVLZXlzW2ldXSwgb3RoZXJbdmFsdWVLZXlzW2ldXSk7XG5cbiAgICAgIGlmICghcnN0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByc3Q7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzRXF1YWwpO1xuXG4vKioqLyB9KSxcbi8qIDMwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBoaWVyYXJjaHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocm9vdCwgb3B0aW9ucykge1xuICAvLyBzZXBhcmF0ZSBpbnRvIGxlZnQgYW5kIHJpZ2h0IHRyZWVzXG4gIHZhciBsZWZ0ID0gaGllcmFyY2h5KHJvb3QuZGF0YSwgb3B0aW9ucywgdHJ1ZSk7IC8vIHJvb3Qgb25seVxuXG4gIHZhciByaWdodCA9IGhpZXJhcmNoeShyb290LmRhdGEsIG9wdGlvbnMsIHRydWUpOyAvLyByb290IG9ubHlcbiAgLy8gYXV0b21hdGljYWxseVxuXG4gIHZhciB0cmVlU2l6ZSA9IHJvb3QuY2hpbGRyZW4ubGVuZ3RoO1xuICB2YXIgcmlnaHRUcmVlU2l6ZSA9IE1hdGgucm91bmQodHJlZVNpemUgLyAyKTsgLy8gc2VwYXJhdGUgbGVmdCBhbmQgcmlnaHQgdHJlZSBieSBtZXRhIGRhdGFcblxuICB2YXIgZ2V0U2lkZSA9IG9wdGlvbnMuZ2V0U2lkZSB8fCBmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgaWYgKGluZGV4IDwgcmlnaHRUcmVlU2l6ZSkge1xuICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdsZWZ0JztcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWVTaXplOyBpKyspIHtcbiAgICB2YXIgY2hpbGQgPSByb290LmNoaWxkcmVuW2ldO1xuICAgIHZhciBzaWRlID0gZ2V0U2lkZShjaGlsZCwgaSk7XG5cbiAgICBpZiAoc2lkZSA9PT0gJ3JpZ2h0Jykge1xuICAgICAgcmlnaHQuY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlZnQuY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgfVxuICB9XG5cbiAgbGVmdC5lYWNoTm9kZShmdW5jdGlvbiAobm9kZSkge1xuICAgIGlmICghbm9kZS5pc1Jvb3QoKSkge1xuICAgICAgbm9kZS5zaWRlID0gJ2xlZnQnO1xuICAgIH1cbiAgfSk7XG4gIHJpZ2h0LmVhY2hOb2RlKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKCFub2RlLmlzUm9vdCgpKSB7XG4gICAgICBub2RlLnNpZGUgPSAncmlnaHQnO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgbGVmdDogbGVmdCxcbiAgICByaWdodDogcmlnaHRcbiAgfTtcbn07XG5cbi8qKiovIH0pLFxuLyogMzEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGhpZXJhcmNoeSA9IHtcbiAgY29tcGFjdEJveDogX193ZWJwYWNrX3JlcXVpcmVfXygzMiksXG4gIGRlbmRyb2dyYW06IF9fd2VicGFja19yZXF1aXJlX18oMTE0KSxcbiAgaW5kZW50ZWQ6IF9fd2VicGFja19yZXF1aXJlX18oMTE2KSxcbiAgbWluZG1hcDogX193ZWJwYWNrX3JlcXVpcmVfXygxMTgpXG59O1xubW9kdWxlLmV4cG9ydHMgPSBoaWVyYXJjaHk7XG5cbi8qKiovIH0pLFxuLyogMzIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7IHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzOyBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBUcmVlTGF5b3V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbnZhciBub25MYXllcmVkVGlkeVRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMyk7XG5cbnZhciBkb1RyZWVMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcblxudmFyIHV0aWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXG52YXIgQ29tcGFjdEJveFRyZWVMYXlvdXQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9UcmVlTGF5b3V0KSB7XG4gIF9pbmhlcml0c0xvb3NlKENvbXBhY3RCb3hUcmVlTGF5b3V0LCBfVHJlZUxheW91dCk7XG5cbiAgZnVuY3Rpb24gQ29tcGFjdEJveFRyZWVMYXlvdXQoKSB7XG4gICAgcmV0dXJuIF9UcmVlTGF5b3V0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBDb21wYWN0Qm94VHJlZUxheW91dC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmV4ZWN1dGUgPSBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgIHZhciBtZSA9IHRoaXM7XG4gICAgcmV0dXJuIGRvVHJlZUxheW91dChtZS5yb290Tm9kZSwgbWUub3B0aW9ucywgbm9uTGF5ZXJlZFRpZHlUcmVlKTtcbiAgfTtcblxuICByZXR1cm4gQ29tcGFjdEJveFRyZWVMYXlvdXQ7XG59KFRyZWVMYXlvdXQpO1xuXG52YXIgREVGQVVMVF9PUFRJT05TID0ge307XG5cbmZ1bmN0aW9uIGNvbXBhY3RCb3hMYXlvdXQocm9vdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gdXRpbC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucyk7XG4gIHJldHVybiBuZXcgQ29tcGFjdEJveFRyZWVMYXlvdXQocm9vdCwgb3B0aW9ucykuZXhlY3V0ZSgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhY3RCb3hMYXlvdXQ7XG5cbi8qKiovIH0pLFxuLyogMzMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19jb250YWluc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJjb250YWluc1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fY29udGFpbnNfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaW5jbHVkZXNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbnRhaW5zX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RpZmZlcmVuY2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMzQpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZGlmZmVyZW5jZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZGlmZmVyZW5jZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19maW5kX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImZpbmRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2ZpbmRfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fZmluZF9pbmRleF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJmaW5kSW5kZXhcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2ZpbmRfaW5kZXhfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fZmlyc3RfdmFsdWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZmlyc3RWYWx1ZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fZmlyc3RfdmFsdWVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fZmxhdHRlbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJmbGF0dGVuXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19mbGF0dGVuX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX2ZsYXR0ZW5fZGVlcF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJmbGF0dGVuRGVlcFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fZmxhdHRlbl9kZWVwX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX2dldF9yYW5nZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJnZXRSYW5nZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fZ2V0X3JhbmdlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX3B1bGxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDEpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwicHVsbFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fcHVsbF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85X19wdWxsX2F0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInB1bGxBdFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fcHVsbF9hdF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fcmVkdWNlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInJlZHVjZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfX3JlZHVjZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fcmVtb3ZlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQzKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInJlbW92ZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfX3JlbW92ZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMl9fc29ydF9ieV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJzb3J0QnlcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEyX19zb3J0X2J5X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEzX191bmlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ1bmlvblwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTNfX3VuaW9uX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE0X191bmlxX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInVuaXFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE0X191bmlxX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE1X192YWx1ZXNfb2Zfa2V5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZhbHVlc09mS2V5XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNV9fdmFsdWVzX29mX2tleV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNl9faGVhZF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nyk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJoZWFkXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNl9faGVhZF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xN19fbGFzdF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJsYXN0XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xN19fbGFzdF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xOF9fc3RhcnRzX3dpdGhfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDkpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwic3RhcnRzV2l0aFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMThfX3N0YXJ0c193aXRoX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE5X19lbmRzX3dpdGhfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNTApO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZW5kc1dpdGhcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE5X19lbmRzX3dpdGhfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjBfX2ZpbHRlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJmaWx0ZXJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIwX19maWx0ZXJfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjFfX2V2ZXJ5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUxKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImV2ZXJ5XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMV9fZXZlcnlfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjJfX3NvbWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwic29tZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjJfX3NvbWVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjNfX2dyb3VwX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUzKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImdyb3VwXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yM19fZ3JvdXBfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjRfX2dyb3VwX2J5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImdyb3VwQnlcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI0X19ncm91cF9ieV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNV9fZ3JvdXBfdG9fbWFwX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImdyb3VwVG9NYXBcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI1X19ncm91cF90b19tYXBfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjZfX2dldF93cmFwX2JlaGF2aW9yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU0KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImdldFdyYXBCZWhhdmlvclwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjZfX2dldF93cmFwX2JlaGF2aW9yX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI3X193cmFwX2JlaGF2aW9yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU1KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcIndyYXBCZWhhdmlvclwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjdfX3dyYXBfYmVoYXZpb3JfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjhfX251bWJlcjJjb2xvcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJudW1iZXIyY29sb3JcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI4X19udW1iZXIyY29sb3JfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjlfX3BhcnNlX3JhZGl1c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nyk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJwYXJzZVJhZGl1c1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjlfX3BhcnNlX3JhZGl1c19fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMF9fY2xhbXBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNTgpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiY2xhbXBcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMwX19jbGFtcF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMV9fZml4ZWRfYmFzZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJmaXhlZEJhc2VcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMxX19maXhlZF9iYXNlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMyX19pc19kZWNpbWFsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzRGVjaW1hbFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzJfX2lzX2RlY2ltYWxfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzNfX2lzX2V2ZW5fXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjEpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNFdmVuXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zM19faXNfZXZlbl9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zNF9faXNfaW50ZWdlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Mik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc0ludGVnZXJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM0X19pc19pbnRlZ2VyX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM1X19pc19uZWdhdGl2ZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Myk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc05lZ2F0aXZlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zNV9faXNfbmVnYXRpdmVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzZfX2lzX251bWJlcl9lcXVhbF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc051bWJlckVxdWFsXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zNl9faXNfbnVtYmVyX2VxdWFsX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM3X19pc19vZGRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjUpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNPZGRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM3X19pc19vZGRfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzhfX2lzX3Bvc2l0aXZlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY2KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzUG9zaXRpdmVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM4X19pc19wb3NpdGl2ZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zOV9fbWF4X2J5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY3KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcIm1heEJ5XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zOV9fbWF4X2J5X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQwX19taW5fYnlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjgpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwibWluQnlcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQwX19taW5fYnlfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDFfX21vZF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJtb2RcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQxX19tb2RfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDJfX3RvX2RlZ3JlZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ0b0RlZ3JlZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDJfX3RvX2RlZ3JlZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80M19fdG9faW50ZWdlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ0b0ludGVnZXJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQzX190b19pbnRlZ2VyX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ0X190b19yYWRpYW5fXyA9IF9fd2VicGFja19yZXF1aXJlX18oNzIpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidG9SYWRpYW5cIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ0X190b19yYWRpYW5fX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDVfX2Zvcl9pbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Myk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJmb3JJblwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDVfX2Zvcl9pbl9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80Nl9faGFzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImhhc1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDZfX2hhc19fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80N19faGFzX2tleV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJoYXNLZXlcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ3X19oYXNfa2V5X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ4X19oYXNfdmFsdWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNzUpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaGFzVmFsdWVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ4X19oYXNfdmFsdWVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDlfX2tleXNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwia2V5c1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDlfX2tleXNfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTBfX2lzX21hdGNoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzTWF0Y2hcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzUwX19pc19tYXRjaF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81MV9fdmFsdWVzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInZhbHVlc1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTFfX3ZhbHVlc19fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81Ml9fbG93ZXJfY2FzZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJsb3dlckNhc2VcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzUyX19sb3dlcl9jYXNlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzUzX19sb3dlcl9maXJzdF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nyk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJsb3dlckZpcnN0XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81M19fbG93ZXJfZmlyc3RfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTRfX3N1YnN0aXR1dGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNzgpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwic3Vic3RpdHV0ZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTRfX3N1YnN0aXR1dGVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTVfX3VwcGVyX2Nhc2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNzkpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidXBwZXJDYXNlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81NV9fdXBwZXJfY2FzZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81Nl9fdXBwZXJfZmlyc3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODApO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidXBwZXJGaXJzdFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTZfX3VwcGVyX2ZpcnN0X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU3X19nZXRfdHlwZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJnZXRUeXBlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81N19fZ2V0X3R5cGVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNThfX2lzX2FyZ3VtZW50c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc0FyZ3VtZW50c1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNThfX2lzX2FyZ3VtZW50c19fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81OV9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc0FycmF5XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81OV9faXNfYXJyYXlfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjBfX2lzX2FycmF5X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc0FycmF5TGlrZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjBfX2lzX2FycmF5X2xpa2VfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjFfX2lzX2Jvb2xlYW5fXyA9IF9fd2VicGFja19yZXF1aXJlX18oODIpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNCb29sZWFuXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82MV9faXNfYm9vbGVhbl9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82Ml9faXNfZGF0ZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Myk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc0RhdGVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzYyX19pc19kYXRlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzYzX19pc19lcnJvcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4NCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc0Vycm9yXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82M19faXNfZXJyb3JfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjRfX2lzX2Z1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNGdW5jdGlvblwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjRfX2lzX2Z1bmN0aW9uX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY1X19pc19maW5pdGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODUpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNGaW5pdGVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY1X19pc19maW5pdGVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjZfX2lzX25pbF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzTmlsXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82Nl9faXNfbmlsX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY3X19pc19udWxsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg2KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzTnVsbFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjdfX2lzX251bGxfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjhfX2lzX251bWJlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzTnVtYmVyXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82OF9faXNfbnVtYmVyX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY5X19pc19vYmplY3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNPYmplY3RcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY5X19pc19vYmplY3RfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNzBfX2lzX29iamVjdF9saWtlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzT2JqZWN0TGlrZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNzBfX2lzX29iamVjdF9saWtlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzcxX19pc19wbGFpbl9vYmplY3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc1BsYWluT2JqZWN0XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83MV9faXNfcGxhaW5fb2JqZWN0X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzcyX19pc19wcm90b3R5cGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNQcm90b3R5cGVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzcyX19pc19wcm90b3R5cGVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNzNfX2lzX3JlZ19leHBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODcpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNSZWdFeHBcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzczX19pc19yZWdfZXhwX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzc0X19pc19zdHJpbmdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc1N0cmluZ1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNzRfX2lzX3N0cmluZ19fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83NV9faXNfdHlwZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzVHlwZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNzVfX2lzX3R5cGVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNzZfX2lzX3VuZGVmaW5lZF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4OCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc1VuZGVmaW5lZFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNzZfX2lzX3VuZGVmaW5lZF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83N19faXNfZWxlbWVudF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4OSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc0VsZW1lbnRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzc3X19pc19lbGVtZW50X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzc4X19yZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5MCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzc4X19yZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83OV9fY2xlYXJfYW5pbWF0aW9uX2ZyYW1lX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkxKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImNsZWFyQW5pbWF0aW9uRnJhbWVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzc5X19jbGVhcl9hbmltYXRpb25fZnJhbWVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODBfX2F1Z21lbnRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiYXVnbWVudFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODBfX2F1Z21lbnRfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODFfX2Nsb25lX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkzKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImNsb25lXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84MV9fY2xvbmVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODJfX2RlYm91bmNlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk0KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImRlYm91bmNlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84Ml9fZGVib3VuY2VfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODNfX21lbW9pemVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOTUpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwibWVtb2l6ZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODNfX21lbW9pemVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODRfX2RlZXBfbWl4X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk2KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImRlZXBNaXhcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzg0X19kZWVwX21peF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84NV9fZWFjaF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImVhY2hcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzg1X19lYWNoX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzg2X19leHRlbmRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOTcpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZXh0ZW5kXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84Nl9fZXh0ZW5kX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzg3X19pbmRleF9vZl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5OCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpbmRleE9mXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84N19faW5kZXhfb2ZfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODhfX2lzX2VtcHR5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk5KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzRW1wdHlcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzg4X19pc19lbXB0eV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84OV9faXNfZXF1YWxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNFcXVhbFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODlfX2lzX2VxdWFsX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzkwX19pc19lcXVhbF93aXRoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc0VxdWFsV2l0aFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTBfX2lzX2VxdWFsX3dpdGhfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTFfX21hcF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDEpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwibWFwXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85MV9fbWFwX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzkyX19tYXBfdmFsdWVzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJtYXBWYWx1ZXNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzkyX19tYXBfdmFsdWVzX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzkzX19taXhfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwibWl4XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85M19fbWl4X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImFzc2lnblwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTNfX21peF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85NF9fZ2V0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMyk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJnZXRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzk0X19nZXRfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTVfX3NldF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDQpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwic2V0XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85NV9fc2V0X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzk2X19waWNrX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJwaWNrXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85Nl9fcGlja19fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85N19fdGhyb3R0bGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTA2KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInRocm90dGxlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85N19fdGhyb3R0bGVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOThfX3RvX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNyk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ0b0FycmF5XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85OF9fdG9fYXJyYXlfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTlfX3RvX3N0cmluZ19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ0b1N0cmluZ1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTlfX3RvX3N0cmluZ19fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMDBfX3VuaXF1ZV9pZF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDgpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidW5pcXVlSWRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwMF9fdW5pcXVlX2lkX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwMV9fbm9vcF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDkpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwibm9vcFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTAxX19ub29wX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwMl9faWRlbnRpdHlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTEwKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlkZW50aXR5XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMDJfX2lkZW50aXR5X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwM19fc2l6ZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTEpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwic2l6ZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTAzX19zaXplX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwNF9fY2FjaGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTEyKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcIkNhY2hlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMDRfX2NhY2hlX19bXCJhXCJdOyB9KTtcbi8vIGFycmF5XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAvLyBldmVudFxuXG5cbiAvLyBmb3JtYXRcblxuXG4gLy8gbWF0aFxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuIC8vIG9iamVjdFxuXG5cblxuXG5cblxuXG4gLy8gc3RyaW5nXG5cblxuXG5cblxuIC8vIHR5cGVcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gLy8gb3RoZXJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAvLyDkuI3nn6XpgZPkuLrku4DkuYjvvIzpnIDopoHmiorov5nkuKogZXhwb3J077yM5LiN54S2IHRzIOS8muaKpeexu+Wei+mUmeivr1xuXG5cblxuLyoqKi8gfSksXG4vKiAzNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2ZpbHRlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19jb250YWluc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cblxuLyoqXG4gKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJyIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqIGRpZmZlcmVuY2UoWzIsIDFdLCBbMiwgM10pOyAgLy8gPT4gWzFdXG4gKi9cblxudmFyIGRpZmZlcmVuY2UgPSBmdW5jdGlvbiAoYXJyLCB2YWx1ZXMpIHtcbiAgaWYgKHZhbHVlcyA9PT0gdm9pZCAwKSB7XG4gICAgdmFsdWVzID0gW107XG4gIH1cblxuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZmlsdGVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFyciwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuICFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19jb250YWluc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZXMsIHZhbHVlKTtcbiAgfSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGRpZmZlcmVuY2UpO1xuXG4vKioqLyB9KSxcbi8qIDM1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfZnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19tYXRjaF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19hcnJheV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2lzX3BsYWluX29iamVjdF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcblxuXG5cblxuXG5mdW5jdGlvbiBmaW5kKGFyciwgcHJlZGljYXRlKSB7XG4gIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyKSkgcmV0dXJuIG51bGw7XG5cbiAgdmFyIF9wcmVkaWNhdGU7XG5cbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2Z1bmN0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHByZWRpY2F0ZSkpIHtcbiAgICBfcHJlZGljYXRlID0gcHJlZGljYXRlO1xuICB9XG5cbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2lzX3BsYWluX29iamVjdF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShwcmVkaWNhdGUpKSB7XG4gICAgX3ByZWRpY2F0ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfbWF0Y2hfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYSwgcHJlZGljYXRlKTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKF9wcmVkaWNhdGUpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKF9wcmVkaWNhdGUoYXJyW2ldKSkge1xuICAgICAgICByZXR1cm4gYXJyW2ldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZpbmQpO1xuXG4vKioqLyB9KSxcbi8qIDM2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZnVuY3Rpb24gZmluZEluZGV4KGFyciwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgaWYgKGZyb21JbmRleCA9PT0gdm9pZCAwKSB7XG4gICAgZnJvbUluZGV4ID0gMDtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSBmcm9tSW5kZXg7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocHJlZGljYXRlKGFycltpXSwgaSkpIHtcbiAgICAgIC8vIOaJvuWIsOe7iOatouW+queOr1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZpbmRJbmRleCk7XG5cbi8qKiovIH0pLFxuLyogMzcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19uaWxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5cbnZhciBmaXJzdFZhbHVlID0gZnVuY3Rpb24gKGRhdGEsIG5hbWUpIHtcbiAgdmFyIHJzdCA9IG51bGw7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG9iaiA9IGRhdGFbaV07XG4gICAgdmFyIHZhbHVlID0gb2JqW25hbWVdO1xuXG4gICAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19uaWxfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpKSB7XG4gICAgICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpKSB7XG4gICAgICAgIHJzdCA9IHZhbHVlWzBdOyAvLyB0b2RvIOi/memHjOaYr+WQpuW6lOivpeS9v+eUqOmAkuW9ku+8jOiwg+eUqCBmaXJzdFZhbHVlIEDnu53kupFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzdCA9IHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcnN0O1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmaXJzdFZhbHVlKTtcblxuLyoqKi8gfSksXG4vKiAzOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vKipcbiAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnIgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pOyAgLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICovXG5cbnZhciBmbGF0dGVuID0gZnVuY3Rpb24gKGFycikge1xuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgcnN0ID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICByc3QgPSByc3QuY29uY2F0KGFycltpXSk7XG4gIH1cblxuICByZXR1cm4gcnN0O1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmbGF0dGVuKTtcblxuLyoqKi8gfSksXG4vKiAzOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG4vKipcbiAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnIgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcGFyYW0ge0FycmF5fSByZXN1bHQgVGhlIGFycmF5IHRvIHJldHVybi5cbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmbGF0dGVuRGVlcChbMSwgWzIsIFszLCBbNF1dLCA1XV0pOyAgLy8gPT4gWzEsIDIsIDMsIDQsIDVdXG4gKi9cblxudmFyIGZsYXR0ZW5EZWVwID0gZnVuY3Rpb24gKGFyciwgcmVzdWx0KSB7XG4gIGlmIChyZXN1bHQgPT09IHZvaWQgMCkge1xuICAgIHJlc3VsdCA9IFtdO1xuICB9XG5cbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpKSB7XG4gICAgcmVzdWx0LnB1c2goYXJyKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgZmxhdHRlbkRlZXAoYXJyW2ldLCByZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZsYXR0ZW5EZWVwKTtcblxuLyoqKi8gfSksXG4vKiA0MCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZmlsdGVyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblxuXG5cbnZhciBnZXRSYW5nZSA9IGZ1bmN0aW9uICh2YWx1ZXMpIHtcbiAgLy8g5a2Y5ZyoIE5hTiDml7bvvIxtaW4sbWF4IOWIpOWumuS8muWHuumXrumimFxuICB2YWx1ZXMgPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19maWx0ZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWVzLCBmdW5jdGlvbiAodikge1xuICAgIHJldHVybiAhaXNOYU4odik7XG4gIH0pO1xuXG4gIGlmICghdmFsdWVzLmxlbmd0aCkge1xuICAgIC8vIOWmguaenOayoeacieaVsOWAvOWImeebtOaOpei/lOWbnjBcbiAgICByZXR1cm4ge1xuICAgICAgbWluOiAwLFxuICAgICAgbWF4OiAwXG4gICAgfTtcbiAgfVxuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZXNbMF0pKSB7XG4gICAgdmFyIHRtcCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRtcCA9IHRtcC5jb25jYXQodmFsdWVzW2ldKTtcbiAgICB9XG5cbiAgICB2YWx1ZXMgPSB0bXA7XG4gIH1cblxuICB2YXIgbWF4ID0gTWF0aC5tYXguYXBwbHkobnVsbCwgdmFsdWVzKTtcbiAgdmFyIG1pbiA9IE1hdGgubWluLmFwcGx5KG51bGwsIHZhbHVlcyk7XG4gIHJldHVybiB7XG4gICAgbWluOiBtaW4sXG4gICAgbWF4OiBtYXhcbiAgfTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZ2V0UmFuZ2UpO1xuXG4vKioqLyB9KSxcbi8qIDQxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xudmFyIGFyclByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcbnZhciBzcGxpY2UgPSBhcnJQcm90b3R5cGUuc3BsaWNlO1xudmFyIGluZGV4T2YgPSBhcnJQcm90b3R5cGUuaW5kZXhPZjtcblxudmFyIHB1bGwgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIHZhciB2YWx1ZXMgPSBbXTtcblxuICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgIHZhbHVlc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHZhbHVlID0gdmFsdWVzW2ldO1xuICAgIHZhciBmcm9tSW5kZXggPSAtMTtcblxuICAgIHdoaWxlICgoZnJvbUluZGV4ID0gaW5kZXhPZi5jYWxsKGFyciwgdmFsdWUpKSA+IC0xKSB7XG4gICAgICBzcGxpY2UuY2FsbChhcnIsIGZyb21JbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFycjtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAocHVsbCk7XG5cbi8qKiovIH0pLFxuLyogNDIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19wbGFpbl9vYmplY3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cblxuXG5cbnZhciByZWR1Y2UgPSBmdW5jdGlvbiAoYXJyLCBmbiwgaW5pdCkge1xuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikgJiYgIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX3BsYWluX29iamVjdF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuXG4gIHZhciByZXN1bHQgPSBpbml0O1xuICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFyciwgZnVuY3Rpb24gKGRhdGEsIGkpIHtcbiAgICByZXN1bHQgPSBmbihyZXN1bHQsIGRhdGEsIGkpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAocmVkdWNlKTtcblxuLyoqKi8gfSksXG4vKiA0MyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19wdWxsX2F0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTtcblxuXG5cbnZhciByZW1vdmUgPSBmdW5jdGlvbiAoYXJyLCBwcmVkaWNhdGUpIHtcbiAgLyoqXG4gICAqIGNvbnN0IGFyciA9IFsxLCAyLCAzLCA0XVxuICAgKiBjb25zdCBldmVucyA9IHJlbW92ZShhcnIsIG4gPT4gbiAlIDIgPT0gMClcbiAgICogY29uc29sZS5sb2coYXJyKSAvLyA9PiBbMSwgM11cbiAgICogY29uc29sZS5sb2coZXZlbnMpIC8vID0+IFsyLCA0XVxuICAgKi9cbiAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZhciBpID0gLTE7XG4gIHZhciBpbmRleGVzID0gW107XG4gIHZhciBsZW5ndGggPSBhcnIubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2kgPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJbaV07XG5cbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpLCBhcnIpKSB7XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICBpbmRleGVzLnB1c2goaSk7XG4gICAgfVxuICB9XG5cbiAgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fcHVsbF9hdF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIsIGluZGV4ZXMpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChyZW1vdmUpO1xuXG4vKioqLyB9KSxcbi8qIDQ0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19zdHJpbmdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19mdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuXG5cblxuZnVuY3Rpb24gc29ydEJ5KGFyciwga2V5KSB7XG4gIHZhciBjb21wYXJlcjtcblxuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfZnVuY3Rpb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoa2V5KSkge1xuICAgIGNvbXBhcmVyID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBrZXkoYSkgLSBrZXkoYik7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICB2YXIga2V5c18xID0gW107XG5cbiAgICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfc3RyaW5nX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGtleSkpIHtcbiAgICAgIGtleXNfMS5wdXNoKGtleSk7XG4gICAgfSBlbHNlIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShrZXkpKSB7XG4gICAgICBrZXlzXzEgPSBrZXk7XG4gICAgfVxuXG4gICAgY29tcGFyZXIgPSBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzXzEubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIHByb3AgPSBrZXlzXzFbaV07XG5cbiAgICAgICAgaWYgKGFbcHJvcF0gPiBiW3Byb3BdKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYVtwcm9wXSA8IGJbcHJvcF0pIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDA7XG4gICAgfTtcbiAgfVxuXG4gIGFyci5zb3J0KGNvbXBhcmVyKTtcbiAgcmV0dXJuIGFycjtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChzb3J0QnkpO1xuXG4vKioqLyB9KSxcbi8qIDQ1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fdW5pcV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMik7XG5cblxudmFyIHVuaW9uID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc291cmNlcyA9IFtdO1xuXG4gIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgc291cmNlc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3VuaXFfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoW10uY29uY2F0LmFwcGx5KFtdLCBzb3VyY2VzKSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHVuaW9uKTtcblxuLyoqKi8gfSksXG4vKiA0NiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2VhY2hfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX25pbF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblxuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKGRhdGEsIG5hbWUpIHtcbiAgdmFyIHJzdCA9IFtdO1xuICB2YXIgdG1wTWFwID0ge307XG4gIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAob2JqKSB7XG4gICAgdmFyIHZhbHVlID0gb2JqW25hbWVdO1xuXG4gICAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19uaWxfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpKSB7XG4gICAgICAvLyBmbGF0dGVuXG4gICAgICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2VhY2hfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUsIGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgLy8gdW5pcXVlXG4gICAgICAgIGlmICghdG1wTWFwW3ZhbF0pIHtcbiAgICAgICAgICByc3QucHVzaCh2YWwpO1xuICAgICAgICAgIHRtcE1hcFt2YWxdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJzdDtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDQ3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSBoZWFkO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfbGlrZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxuZnVuY3Rpb24gaGVhZChvKSB7XG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9saWtlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG8pKSB7XG4gICAgcmV0dXJuIG9bMF07XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKioqLyB9KSxcbi8qIDQ4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSBsYXN0O1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfbGlrZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxuZnVuY3Rpb24gbGFzdChvKSB7XG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9saWtlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG8pKSB7XG4gICAgdmFyIGFyciA9IG87XG4gICAgcmV0dXJuIGFyclthcnIubGVuZ3RoIC0gMV07XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKioqLyB9KSxcbi8qIDQ5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19zdHJpbmdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cblxuXG5mdW5jdGlvbiBzdGFydHNXaXRoKGFyciwgZSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyKSB8fCBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19zdHJpbmdfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyKSA/IGFyclswXSA9PT0gZSA6IGZhbHNlO1xufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHN0YXJ0c1dpdGgpO1xuXG4vKioqLyB9KSxcbi8qIDUwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19zdHJpbmdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cblxuXG5mdW5jdGlvbiBlbmRzV2l0aChhcnIsIGUpIHtcbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikgfHwgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfc3RyaW5nX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikgPyBhcnJbYXJyLmxlbmd0aCAtIDFdID09PSBlIDogZmFsc2U7XG59XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZW5kc1dpdGgpO1xuXG4vKioqLyB9KSxcbi8qIDUxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiDlj6ropoHmnInkuIDkuKrkuI3mu6HotrPmnaHku7blsLHov5Tlm54gZmFsc2VcbiAqIEBwYXJhbSBhcnJcbiAqIEBwYXJhbSBmdW5jXG4gKi9cbnZhciBldmVyeSA9IGZ1bmN0aW9uIChhcnIsIGZ1bmMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIWZ1bmMoYXJyW2ldLCBpKSkgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGV2ZXJ5KTtcblxuLyoqKi8gfSksXG4vKiA1MiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICog5Y+q6KaB5pyJ5LiA5Liq5ruh6Laz5p2h5Lu25bCx6L+U5ZueIHRydWVcbiAqIEBwYXJhbSBhcnJcbiAqIEBwYXJhbSBmdW5jXG4gKi9cbnZhciBzb21lID0gZnVuY3Rpb24gKGFyciwgZnVuYykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChmdW5jKGFycltpXSwgaSkpIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChzb21lKTtcblxuLyoqKi8gfSksXG4vKiA1MyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2dyb3VwX3RvX21hcF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKGRhdGEsIGNvbmRpdGlvbikge1xuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIC8vIOayoeacieadoeS7tu+8jOWImeiHqui6q+aUueaIkOaVsOe7hFxuICAgIHJldHVybiBbZGF0YV07XG4gIH1cblxuICB2YXIgZ3JvdXBzID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZ3JvdXBfdG9fbWFwX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGRhdGEsIGNvbmRpdGlvbik7XG4gIHZhciBhcnJheSA9IFtdO1xuXG4gIGZvciAodmFyIGkgaW4gZ3JvdXBzKSB7XG4gICAgYXJyYXkucHVzaChncm91cHNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufSk7XG5cbi8qKiovIH0pLFxuLyogNTQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIOiOt+WPluWwgeijheeahOS6i+S7tlxuICogQHByb3RlY3RlZFxuICogQHBhcmFtICB7T2JqZWN0fSBvYmogICDlr7nosaFcbiAqIEBwYXJhbSAge1N0cmluZ30gYWN0aW9uIOS6i+S7tuWQjeensFxuICogQHJldHVybiB7RnVuY3Rpb259ICAgICAgICDov5Tlm57kuovku7blpITnkIblh73mlbBcbiAqL1xuZnVuY3Rpb24gZ2V0V3JhcEJlaGF2aW9yKG9iaiwgYWN0aW9uKSB7XG4gIHJldHVybiBvYmpbJ193cmFwXycgKyBhY3Rpb25dO1xufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGdldFdyYXBCZWhhdmlvcik7XG5cbi8qKiovIH0pLFxuLyogNTUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIOWwgeijheS6i+S7tu+8jOS+v+S6juS9v+eUqOS4iuS4i+aWh3RoaXMs5ZKM5L6/5LqO6Kej6Zmk5LqL5Lu25pe25L2/55SoXG4gKiBAcHJvdGVjdGVkXG4gKiBAcGFyYW0gIHtPYmplY3R9IG9iaiAgIOWvueixoVxuICogQHBhcmFtICB7U3RyaW5nfSBhY3Rpb24g5LqL5Lu25ZCN56ewXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gICAgICAgIOi/lOWbnuS6i+S7tuWkhOeQhuWHveaVsFxuICovXG5mdW5jdGlvbiB3cmFwQmVoYXZpb3Iob2JqLCBhY3Rpb24pIHtcbiAgaWYgKG9ialsnX3dyYXBfJyArIGFjdGlvbl0pIHtcbiAgICByZXR1cm4gb2JqWydfd3JhcF8nICsgYWN0aW9uXTtcbiAgfVxuXG4gIHZhciBtZXRob2QgPSBmdW5jdGlvbiAoZSkge1xuICAgIG9ialthY3Rpb25dKGUpO1xuICB9O1xuXG4gIG9ialsnX3dyYXBfJyArIGFjdGlvbl0gPSBtZXRob2Q7XG4gIHJldHVybiBtZXRob2Q7XG59XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAod3JhcEJlaGF2aW9yKTtcblxuLyoqKi8gfSksXG4vKiA1NiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBudW1Db2xvckNhY2hlID0ge307XG5cbmZ1bmN0aW9uIG51bWJlclRvQ29sb3IobnVtKSB7XG4gIC8vIOWinuWKoOe8k+WtmFxuICB2YXIgY29sb3IgPSBudW1Db2xvckNhY2hlW251bV07XG5cbiAgaWYgKCFjb2xvcikge1xuICAgIHZhciBzdHIgPSBudW0udG9TdHJpbmcoMTYpO1xuXG4gICAgZm9yICh2YXIgaSA9IHN0ci5sZW5ndGg7IGkgPCA2OyBpKyspIHtcbiAgICAgIHN0ciA9ICcwJyArIHN0cjtcbiAgICB9XG5cbiAgICBjb2xvciA9ICcjJyArIHN0cjtcbiAgICBudW1Db2xvckNhY2hlW251bV0gPSBjb2xvcjtcbiAgfVxuXG4gIHJldHVybiBjb2xvcjtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChudW1iZXJUb0NvbG9yKTtcblxuLyoqKi8gfSksXG4vKiA1NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cbmZ1bmN0aW9uIHBhcnNlUmFkaXVzKHJhZGl1cykge1xuICB2YXIgcjEgPSAwLFxuICAgICAgcjIgPSAwLFxuICAgICAgcjMgPSAwLFxuICAgICAgcjQgPSAwO1xuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShyYWRpdXMpKSB7XG4gICAgaWYgKHJhZGl1cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHIxID0gcjIgPSByMyA9IHI0ID0gcmFkaXVzWzBdO1xuICAgIH0gZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcjEgPSByMyA9IHJhZGl1c1swXTtcbiAgICAgIHIyID0gcjQgPSByYWRpdXNbMV07XG4gICAgfSBlbHNlIGlmIChyYWRpdXMubGVuZ3RoID09PSAzKSB7XG4gICAgICByMSA9IHJhZGl1c1swXTtcbiAgICAgIHIyID0gcjQgPSByYWRpdXNbMV07XG4gICAgICByMyA9IHJhZGl1c1syXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcjEgPSByYWRpdXNbMF07XG4gICAgICByMiA9IHJhZGl1c1sxXTtcbiAgICAgIHIzID0gcmFkaXVzWzJdO1xuICAgICAgcjQgPSByYWRpdXNbM107XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHIxID0gcjIgPSByMyA9IHI0ID0gcmFkaXVzO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByMTogcjEsXG4gICAgcjI6IHIyLFxuICAgIHIzOiByMyxcbiAgICByNDogcjRcbiAgfTtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChwYXJzZVJhZGl1cyk7XG5cbi8qKiovIH0pLFxuLyogNTggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgY2xhbXAgPSBmdW5jdGlvbiAoYSwgbWluLCBtYXgpIHtcbiAgaWYgKGEgPCBtaW4pIHtcbiAgICByZXR1cm4gbWluO1xuICB9IGVsc2UgaWYgKGEgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGE7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGNsYW1wKTtcblxuLyoqKi8gfSksXG4vKiA1OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBmaXhlZEJhc2UgPSBmdW5jdGlvbiAodiwgYmFzZSkge1xuICB2YXIgc3RyID0gYmFzZS50b1N0cmluZygpO1xuICB2YXIgaW5kZXggPSBzdHIuaW5kZXhPZignLicpO1xuXG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2KTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzdHIuc3Vic3RyKGluZGV4ICsgMSkubGVuZ3RoO1xuXG4gIGlmIChsZW5ndGggPiAyMCkge1xuICAgIGxlbmd0aCA9IDIwO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlRmxvYXQodi50b0ZpeGVkKGxlbmd0aCkpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmaXhlZEJhc2UpO1xuXG4vKioqLyB9KSxcbi8qIDYwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXG5cbnZhciBpc0RlY2ltYWwgPSBmdW5jdGlvbiAobnVtKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19udW1iZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkobnVtKSAmJiBudW0gJSAxICE9PSAwO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc0RlY2ltYWwpO1xuXG4vKioqLyB9KSxcbi8qIDYxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXG5cbnZhciBpc0V2ZW4gPSBmdW5jdGlvbiAobnVtKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19udW1iZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkobnVtKSAmJiBudW0gJSAyID09PSAwO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc0V2ZW4pO1xuXG4vKioqLyB9KSxcbi8qIDYyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXG52YXIgaXNJbnRlZ2VyID0gTnVtYmVyLmlzSW50ZWdlciA/IE51bWJlci5pc0ludGVnZXIgOiBmdW5jdGlvbiAobnVtKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19udW1iZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkobnVtKSAmJiBudW0gJSAxID09PSAwO1xufTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNJbnRlZ2VyKTtcblxuLyoqKi8gfSksXG4vKiA2MyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX251bWJlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblxuXG52YXIgaXNOZWdhdGl2ZSA9IGZ1bmN0aW9uIChudW0pIHtcbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX251bWJlcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShudW0pICYmIG51bSA8IDA7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzTmVnYXRpdmUpO1xuXG4vKioqLyB9KSxcbi8qIDY0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSBpc051bWJlckVxdWFsO1xudmFyIFBSRUNJU0lPTiA9IDAuMDAwMDE7IC8vIG51bWJlcnMgbGVzcyB0aGFuIHRoaXMgaXMgY29uc2lkZXJlZCBhcyAwXG5cbmZ1bmN0aW9uIGlzTnVtYmVyRXF1YWwoYSwgYiwgcHJlY2lzaW9uKSB7XG4gIGlmIChwcmVjaXNpb24gPT09IHZvaWQgMCkge1xuICAgIHByZWNpc2lvbiA9IFBSRUNJU0lPTjtcbiAgfVxuXG4gIHJldHVybiBNYXRoLmFicyhhIC0gYikgPCBwcmVjaXNpb247XG59XG47XG5cbi8qKiovIH0pLFxuLyogNjUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19udW1iZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cblxudmFyIGlzT2RkID0gZnVuY3Rpb24gKG51bSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG51bSkgJiYgbnVtICUgMiAhPT0gMDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNPZGQpO1xuXG4vKioqLyB9KSxcbi8qIDY2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXG5cbnZhciBpc1Bvc2l0aXZlID0gZnVuY3Rpb24gKG51bSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG51bSkgJiYgbnVtID4gMDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNQb3NpdGl2ZSk7XG5cbi8qKiovIH0pLFxuLyogNjcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19mdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuXG5cbi8qKlxuICogQHBhcmFtIHtBcnJheX0gYXJyIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybiB7Kn0gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDEgfSwgeyAnbic6IDIgfV07XG4gKlxuICogbWF4Qnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAqIC8vID0+IHsgJ24nOiAyIH1cbiAqXG4gKiBtYXhCeShvYmplY3RzLCAnbicpO1xuICogLy8gPT4geyAnbic6IDIgfVxuICovXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKGFyciwgZm4pIHtcbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHZhciBtYXggPSBhcnJbMF07XG4gIHZhciBtYXhEYXRhO1xuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShmbikpIHtcbiAgICBtYXhEYXRhID0gZm4oYXJyWzBdKTtcbiAgfSBlbHNlIHtcbiAgICBtYXhEYXRhID0gYXJyWzBdW2ZuXTtcbiAgfVxuXG4gIHZhciBkYXRhO1xuICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFyciwgZnVuY3Rpb24gKHZhbCkge1xuICAgIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShmbikpIHtcbiAgICAgIGRhdGEgPSBmbih2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhID0gdmFsW2ZuXTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YSA+IG1heERhdGEpIHtcbiAgICAgIG1heCA9IHZhbDtcbiAgICAgIG1heERhdGEgPSBkYXRhO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBtYXg7XG59KTtcblxuLyoqKi8gfSksXG4vKiA2OCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2VhY2hfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX2Z1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG5cblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnIgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJuIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAqXG4gKiBtaW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICogLy8gPT4geyAnbic6IDEgfVxuICpcbiAqIG1pbkJ5KG9iamVjdHMsICduJyk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKi9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbiAoYXJyLCBmbikge1xuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgdmFyIG1pbiA9IGFyclswXTtcbiAgdmFyIG1pbkRhdGE7XG5cbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX2Z1bmN0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGZuKSkge1xuICAgIG1pbkRhdGEgPSBmbihhcnJbMF0pO1xuICB9IGVsc2Uge1xuICAgIG1pbkRhdGEgPSBhcnJbMF1bZm5dO1xuICB9XG5cbiAgdmFyIGRhdGE7XG4gIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2VhY2hfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyLCBmdW5jdGlvbiAodmFsKSB7XG4gICAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX2Z1bmN0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGZuKSkge1xuICAgICAgZGF0YSA9IGZuKHZhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGEgPSB2YWxbZm5dO1xuICAgIH1cblxuICAgIGlmIChkYXRhIDwgbWluRGF0YSkge1xuICAgICAgbWluID0gdmFsO1xuICAgICAgbWluRGF0YSA9IGRhdGE7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG1pbjtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDY5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xudmFyIG1vZCA9IGZ1bmN0aW9uIChuLCBtKSB7XG4gIHJldHVybiAobiAlIG0gKyBtKSAlIG07XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKG1vZCk7XG5cbi8qKiovIH0pLFxuLyogNzAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgREVHUkVFID0gMTgwIC8gTWF0aC5QSTtcblxudmFyIHRvRGVncmVlID0gZnVuY3Rpb24gKHJhZGlhbikge1xuICByZXR1cm4gREVHUkVFICogcmFkaWFuO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh0b0RlZ3JlZSk7XG5cbi8qKiovIH0pLFxuLyogNzEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHBhcnNlSW50KTtcblxuLyoqKi8gfSksXG4vKiA3MiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBSQURJQU4gPSBNYXRoLlBJIC8gMTgwO1xuXG52YXIgdG9SYWRpYW4gPSBmdW5jdGlvbiAoZGVncmVlKSB7XG4gIHJldHVybiBSQURJQU4gKiBkZWdyZWU7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHRvUmFkaWFuKTtcblxuLyoqKi8gfSksXG4vKiA3MyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2VhY2hfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pO1xuXG4vKioqLyB9KSxcbi8qIDc0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGFzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hhc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKTtcblxuLyoqKi8gfSksXG4vKiA3NSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbnRhaW5zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX3ZhbHVlc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNik7XG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbiAob2JqLCB2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fY29udGFpbnNfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fdmFsdWVzX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG9iaiksIHZhbHVlKTtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDc2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fdG9fc3RyaW5nX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblxuXG52YXIgbG93ZXJDYXNlID0gZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fdG9fc3RyaW5nX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHN0cikudG9Mb3dlckNhc2UoKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAobG93ZXJDYXNlKTtcblxuLyoqKi8gfSksXG4vKiA3NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3RvX3N0cmluZ19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cblxudmFyIGxvd2VyRmlyc3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHN0ciA9IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3RvX3N0cmluZ19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSk7XG4gIHJldHVybiBzdHIuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBzdHIuc3Vic3RyaW5nKDEpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChsb3dlckZpcnN0KTtcblxuLyoqKi8gfSksXG4vKiA3OCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbmZ1bmN0aW9uIHN1YnN0aXR1dGUoc3RyLCBvKSB7XG4gIGlmICghc3RyIHx8ICFvKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxcXD9cXHsoW157fV0rKVxcfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG5hbWUpIHtcbiAgICBpZiAobWF0Y2guY2hhckF0KDApID09PSAnXFxcXCcpIHtcbiAgICAgIHJldHVybiBtYXRjaC5zbGljZSgxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb1tuYW1lXSA9PT0gdW5kZWZpbmVkID8gJycgOiBvW25hbWVdO1xuICB9KTtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChzdWJzdGl0dXRlKTtcblxuLyoqKi8gfSksXG4vKiA3OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3RvX3N0cmluZ19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cblxudmFyIHVwcGVyQ2FzZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3RvX3N0cmluZ19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShzdHIpLnRvVXBwZXJDYXNlKCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHVwcGVyQ2FzZSk7XG5cbi8qKiovIH0pLFxuLyogODAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX190b19zdHJpbmdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXG5cbnZhciB1cHBlckZpcnN0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBzdHIgPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX190b19zdHJpbmdfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpO1xuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAodXBwZXJGaXJzdCk7XG5cbi8qKiovIH0pLFxuLyogODEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyoqXG4gKiDmmK/lkKbmmK/lj4LmlbDnsbvlnotcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsdWUg5rWL6K+V55qE5YC8XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5cblxudmFyIGlzQXJndW1lbnRzID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlLCAnQXJndW1lbnRzJyk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzQXJndW1lbnRzKTtcblxuLyoqKi8gfSksXG4vKiA4MiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX3R5cGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4vKipcbiAqIOaYr+WQpuaYr+W4g+WwlOexu+Wei1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZSDmtYvor5XnmoTlgLxcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cblxuXG52YXIgaXNCb29sZWFuID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlLCAnQm9vbGVhbicpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc0Jvb2xlYW4pO1xuXG4vKioqLyB9KSxcbi8qIDgzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblxuXG52YXIgaXNEYXRlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlLCAnRGF0ZScpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc0RhdGUpO1xuXG4vKioqLyB9KSxcbi8qIDg0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qKlxuICog5piv5ZCm5piv5Y+C5pWw57G75Z6LXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbHVlIOa1i+ivleeahOWAvFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuXG5cbnZhciBpc0Vycm9yID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlLCAnRXJyb3InKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNFcnJvcik7XG5cbi8qKiovIH0pLFxuLyogODUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19udW1iZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG4vKipcbiAqIOWIpOaWreaYr+WQpuS4uuaciemZkOaVsFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKSAmJiBpc0Zpbml0ZSh2YWx1ZSk7XG59KTtcblxuLyoqKi8gfSksXG4vKiA4NiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBpc051bGwgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc051bGwpO1xuXG4vKioqLyB9KSxcbi8qIDg3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblxuXG52YXIgaXNSZWdFeHAgPSBmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHN0ciwgJ1JlZ0V4cCcpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc1JlZ0V4cCk7XG5cbi8qKiovIH0pLFxuLyogODggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNVbmRlZmluZWQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzVW5kZWZpbmVkKTtcblxuLyoqKi8gfSksXG4vKiA4OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICog5Yik5pat5piv5ZCmSFRNTOWFg+e0oFxuICogQHJldHVybiB7Qm9vbGVhbn0g5piv5ZCmSFRNTOWFg+e0oFxuICovXG52YXIgaXNFbGVtZW50ID0gZnVuY3Rpb24gKG8pIHtcbiAgcmV0dXJuIG8gaW5zdGFuY2VvZiBFbGVtZW50IHx8IG8gaW5zdGFuY2VvZiBIVE1MRG9jdW1lbnQ7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzRWxlbWVudCk7XG5cbi8qKiovIH0pLFxuLyogOTAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoaW1tdXRhYmxlKSAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZTtcbmZ1bmN0aW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZShmbikge1xuICB2YXIgbWV0aG9kID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IC8vIEB0cy1pZ25vcmVcbiAgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCAvLyBAdHMtaWdub3JlXG4gIHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSB8fCBmdW5jdGlvbiAoZikge1xuICAgIHJldHVybiBzZXRUaW1lb3V0KGYsIDE2KTtcbiAgfTtcblxuICByZXR1cm4gbWV0aG9kKGZuKTtcbn1cbjtcblxuLyoqKi8gfSksXG4vKiA5MSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChpbW11dGFibGUpICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gY2FuY2VsQW5pbWF0aW9uRnJhbWU7XG5mdW5jdGlvbiBjYW5jZWxBbmltYXRpb25GcmFtZShoYW5kbGVyKSB7XG4gIHZhciBtZXRob2QgPSB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgfHwgd2luZG93LndlYmtpdENhbmNlbEFuaW1hdGlvbkZyYW1lIHx8IC8vIEB0cy1pZ25vcmVcbiAgd2luZG93Lm1vekNhbmNlbEFuaW1hdGlvbkZyYW1lIHx8IC8vIEB0cy1pZ25vcmVcbiAgd2luZG93Lm1zQ2FuY2VsQW5pbWF0aW9uRnJhbWUgfHwgY2xlYXJUaW1lb3V0O1xuICBtZXRob2QoaGFuZGxlcik7XG59XG47XG5cbi8qKiovIH0pLFxuLyogOTIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19taXhfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfZnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cblxuXG52YXIgYXVnbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGFyZ3MgPSBbXTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgfVxuXG4gIHZhciBjID0gYXJnc1swXTtcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb2JqID0gYXJnc1tpXTtcblxuICAgIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvYmopKSB7XG4gICAgICBvYmogPSBvYmoucHJvdG90eXBlO1xuICAgIH1cblxuICAgIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX21peF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShjLnByb3RvdHlwZSwgb2JqKTtcbiAgfVxufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChhdWdtZW50KTtcblxuLyoqKi8gfSksXG4vKiA5MyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cbnZhciBjbG9uZSA9IGZ1bmN0aW9uIChvYmopIHtcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIgcnN0O1xuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvYmopKSB7XG4gICAgcnN0ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IG9iai5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0eXBlb2Ygb2JqW2ldID09PSAnb2JqZWN0JyAmJiBvYmpbaV0gIT0gbnVsbCkge1xuICAgICAgICByc3RbaV0gPSBjbG9uZShvYmpbaV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcnN0W2ldID0gb2JqW2ldO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByc3QgPSB7fTtcblxuICAgIGZvciAodmFyIGsgaW4gb2JqKSB7XG4gICAgICBpZiAodHlwZW9mIG9ialtrXSA9PT0gJ29iamVjdCcgJiYgb2JqW2tdICE9IG51bGwpIHtcbiAgICAgICAgcnN0W2tdID0gY2xvbmUob2JqW2tdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzdFtrXSA9IG9ialtrXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcnN0O1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChjbG9uZSk7XG5cbi8qKiovIH0pLFxuLyogOTQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5mdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBpbW1lZGlhdGUpIHtcbiAgdmFyIHRpbWVvdXQ7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvbnRleHQgPSB0aGlzLFxuICAgICAgICBhcmdzID0gYXJndW1lbnRzO1xuXG4gICAgdmFyIGxhdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgdGltZW91dCA9IG51bGw7XG5cbiAgICAgIGlmICghaW1tZWRpYXRlKSB7XG4gICAgICAgIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0O1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCk7XG5cbiAgICBpZiAoY2FsbE5vdykge1xuICAgICAgZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICB9XG4gIH07XG59XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZGVib3VuY2UpO1xuXG4vKioqLyB9KSxcbi8qIDk1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfZnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cbi8qKlxuICogXy5tZW1vaXplKGNhbENvbG9yKTtcbiAqIF8ubWVtb2l6ZShjYWxDb2xvciwgKC4uLmFyZ3MpID0+IGFyZ3NbMF0pO1xuICogQHBhcmFtIGZcbiAqIEBwYXJhbSByZXNvbHZlclxuICovXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKGYsIHJlc29sdmVyKSB7XG4gIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfZnVuY3Rpb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoZikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfSAvLyDkvb/nlKjmlrnms5XmnoTpgKAga2V577yM5aaC5p6c5LiN5a2Y5ZyoIHJlc29sdmVy77yM5YiZ55u05o6l5Y+W56ys5LiA5Liq5Y+C5pWw5L2c5Li6IGtleVxuXG5cbiAgICB2YXIga2V5ID0gcmVzb2x2ZXIgPyByZXNvbHZlci5hcHBseSh0aGlzLCBhcmdzKSA6IGFyZ3NbMF07XG4gICAgdmFyIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0ID0gZi5hcHBseSh0aGlzLCBhcmdzKTsgLy8g57yT5a2Y6LW35p2lXG5cbiAgICBjYWNoZS5zZXQoa2V5LCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgbWVtb2l6ZWQuY2FjaGUgPSBuZXcgTWFwKCk7XG4gIHJldHVybiBtZW1vaXplZDtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDk2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19wbGFpbl9vYmplY3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cblxudmFyIE1BWF9NSVhfTEVWRUwgPSA1O1xuXG5mdW5jdGlvbiBfZGVlcE1peChkaXN0LCBzcmMsIGxldmVsLCBtYXhMZXZlbCkge1xuICBsZXZlbCA9IGxldmVsIHx8IDA7XG4gIG1heExldmVsID0gbWF4TGV2ZWwgfHwgTUFYX01JWF9MRVZFTDtcblxuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgaWYgKHNyYy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICB2YXIgdmFsdWUgPSBzcmNba2V5XTtcblxuICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX3BsYWluX29iamVjdF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19wbGFpbl9vYmplY3RfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoZGlzdFtrZXldKSkge1xuICAgICAgICAgIGRpc3Rba2V5XSA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxldmVsIDwgbWF4TGV2ZWwpIHtcbiAgICAgICAgICBfZGVlcE1peChkaXN0W2tleV0sIHZhbHVlLCBsZXZlbCArIDEsIG1heExldmVsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXN0W2tleV0gPSBzcmNba2V5XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkpIHtcbiAgICAgICAgZGlzdFtrZXldID0gW107XG4gICAgICAgIGRpc3Rba2V5XSA9IGRpc3Rba2V5XS5jb25jYXQodmFsdWUpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRpc3Rba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSAvLyB0b2RvIOmHjeWGmVxuXG5cbnZhciBkZWVwTWl4ID0gZnVuY3Rpb24gKHJzdCkge1xuICB2YXIgYXJncyA9IFtdO1xuXG4gIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIF9kZWVwTWl4KHJzdCwgYXJnc1tpXSk7XG4gIH1cblxuICByZXR1cm4gcnN0O1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChkZWVwTWl4KTtcblxuLyoqKi8gfSksXG4vKiA5NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX21peF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19mdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuXG5cbnZhciBleHRlbmQgPSBmdW5jdGlvbiAoc3ViY2xhc3MsIHN1cGVyY2xhc3MsIG92ZXJyaWRlcywgc3RhdGljT3ZlcnJpZGVzKSB7XG4gIC8vIOWmguaenOWPquaPkOS+m+eItuexu+aehOmAoOWHveaVsO+8jOWImeiHquWKqOeUn+aIkOWtkOexu+aehOmAoOWHveaVsFxuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2Z1bmN0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHN1cGVyY2xhc3MpKSB7XG4gICAgb3ZlcnJpZGVzID0gc3VwZXJjbGFzcztcbiAgICBzdXBlcmNsYXNzID0gc3ViY2xhc3M7XG5cbiAgICBzdWJjbGFzcyA9IGZ1bmN0aW9uICgpIHt9O1xuICB9XG5cbiAgdmFyIGNyZWF0ZSA9IE9iamVjdC5jcmVhdGUgPyBmdW5jdGlvbiAocHJvdG8sIGMpIHtcbiAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShwcm90bywge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IGNcbiAgICAgIH1cbiAgICB9KTtcbiAgfSA6IGZ1bmN0aW9uIChwcm90bywgYykge1xuICAgIGZ1bmN0aW9uIFRtcCgpIHt9XG5cbiAgICBUbXAucHJvdG90eXBlID0gcHJvdG87XG4gICAgdmFyIG8gPSBuZXcgVG1wKCk7XG4gICAgby5jb25zdHJ1Y3RvciA9IGM7XG4gICAgcmV0dXJuIG87XG4gIH07XG4gIHZhciBzdXBlck9iaiA9IGNyZWF0ZShzdXBlcmNsYXNzLnByb3RvdHlwZSwgc3ViY2xhc3MpOyAvLyBuZXcgc3VwZXJjbGFzcygpLC8v5a6e5L6L5YyW54i257G75L2c5Li65a2Q57G755qEcHJvdG90eXBlXG5cbiAgc3ViY2xhc3MucHJvdG90eXBlID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fbWl4X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHN1cGVyT2JqLCBzdWJjbGFzcy5wcm90b3R5cGUpOyAvLyDmjIflrprlrZDnsbvnmoRwcm90b3R5cGVcblxuICBzdWJjbGFzcy5zdXBlcmNsYXNzID0gY3JlYXRlKHN1cGVyY2xhc3MucHJvdG90eXBlLCBzdXBlcmNsYXNzKTtcbiAgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fbWl4X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHN1cGVyT2JqLCBvdmVycmlkZXMpO1xuICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19taXhfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoc3ViY2xhc3MsIHN0YXRpY092ZXJyaWRlcyk7XG4gIHJldHVybiBzdWJjbGFzcztcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZXh0ZW5kKTtcblxuLyoqKi8gfSksXG4vKiA5OCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cblxudmFyIGluZGV4T2YgPSBmdW5jdGlvbiAoYXJyLCBvYmopIHtcbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9saWtlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB2YXIgbSA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mO1xuXG4gIGlmIChtKSB7XG4gICAgcmV0dXJuIG0uY2FsbChhcnIsIG9iaik7XG4gIH1cblxuICB2YXIgaW5kZXggPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnJbaV0gPT09IG9iaikge1xuICAgICAgaW5kZXggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGluZGV4O1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpbmRleE9mKTtcblxuLyoqKi8gfSksXG4vKiA5OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX25pbF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19nZXRfdHlwZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19pc19wcm90b3R5cGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpO1xuXG5cblxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gIC8qKlxuICAgKiBpc0VtcHR5KG51bGwpID0+IHRydWVcbiAgICogaXNFbXB0eSgpID0+IHRydWVcbiAgICogaXNFbXB0eSh0cnVlKSA9PiB0cnVlXG4gICAqIGlzRW1wdHkoMSkgPT4gdHJ1ZVxuICAgKiBpc0VtcHR5KFsxLCAyLCAzXSkgPT4gZmFsc2VcbiAgICogaXNFbXB0eSgnYWJjJykgPT4gZmFsc2VcbiAgICogaXNFbXB0eSh7IGE6IDEgfSkgPT4gZmFsc2VcbiAgICovXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19uaWxfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDtcbiAgfVxuXG4gIHZhciB0eXBlID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZ2V0X3R5cGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpO1xuXG4gIGlmICh0eXBlID09PSAnTWFwJyB8fCB0eXBlID09PSAnU2V0Jykge1xuICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgfVxuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19pc19wcm90b3R5cGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpKSB7XG4gICAgcmV0dXJuICFPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoO1xuICB9XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc0VtcHR5KTtcblxuLyoqKi8gfSksXG4vKiAxMDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19mdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2VxdWFsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTtcblxuXG4vKipcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gaXNHcmVldGluZyh2YWx1ZSkge1xuICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICogfVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlKSB7XG4gKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKG90aFZhbHVlKSkge1xuICogICAgIHJldHVybiB0cnVlO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIGFycmF5ID0gWydoZWxsbycsICdnb29kYnllJ107XG4gKiB2YXIgb3RoZXIgPSBbJ2hpJywgJ2dvb2RieWUnXTtcbiAqXG4gKiBpc0VxdWFsV2l0aChhcnJheSwgb3RoZXIsIGN1c3RvbWl6ZXIpOyAgLy8gPT4gdHJ1ZVxuICovXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKHZhbHVlLCBvdGhlciwgZm4pIHtcbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShmbikpIHtcbiAgICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfZXF1YWxfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUsIG90aGVyKTtcbiAgfVxuXG4gIHJldHVybiAhIWZuKHZhbHVlLCBvdGhlcik7XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfbGlrZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxuXG5cbnZhciBtYXAgPSBmdW5jdGlvbiAoYXJyLCBmdW5jKSB7XG4gIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBhcnI7XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gW107XG4gIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2VhY2hfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyLCBmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgcmVzdWx0LnB1c2goZnVuYyh2YWx1ZSwgaW5kZXgpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKG1hcCk7XG5cbi8qKiovIH0pLFxuLyogMTAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbmlsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfb2JqZWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcblxuXG5cbnZhciBpZGVudGl0eSA9IGZ1bmN0aW9uICh2KSB7XG4gIHJldHVybiB2O1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbiAob2JqZWN0LCBmdW5jKSB7XG4gIGlmIChmdW5jID09PSB2b2lkIDApIHtcbiAgICBmdW5jID0gaWRlbnRpdHk7XG4gIH1cblxuICB2YXIgciA9IHt9O1xuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19vYmplY3RfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkob2JqZWN0KSAmJiAhT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbmlsX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG9iamVjdCkpIHtcbiAgICBPYmplY3Qua2V5cyhvYmplY3QpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcltrZXldID0gZnVuYyhvYmplY3Rba2V5XSwga2V5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByO1xufSk7XG5cbi8qKiovIH0pLFxuLyogMTAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfc3RyaW5nX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXG4vKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9kZXZlbG9waXQvZGx2L2Jsb2IvbWFzdGVyL2luZGV4LmpzXG4gKiBAcGFyYW0gb2JqXG4gKiBAcGFyYW0ga2V5XG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlXG4gKi9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbiAob2JqLCBrZXksIGRlZmF1bHRWYWx1ZSkge1xuICB2YXIgcCA9IDA7XG4gIHZhciBrZXlBcnIgPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19zdHJpbmdfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoa2V5KSA/IGtleS5zcGxpdCgnLicpIDoga2V5O1xuXG4gIHdoaWxlIChvYmogJiYgcCA8IGtleUFyci5sZW5ndGgpIHtcbiAgICBvYmogPSBvYmpba2V5QXJyW3ArK11dO1xuICB9XG5cbiAgcmV0dXJuIG9iaiA9PT0gdW5kZWZpbmVkIHx8IHAgPCBrZXlBcnIubGVuZ3RoID8gZGVmYXVsdFZhbHVlIDogb2JqO1xufSk7XG5cbi8qKiovIH0pLFxuLyogMTA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfb2JqZWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX3N0cmluZ19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX251bWJlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblxuXG5cbi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2RldmVsb3BpdC9kbHYvYmxvYi9tYXN0ZXIvaW5kZXguanNcbiAqIEBwYXJhbSBvYmpcbiAqIEBwYXJhbSBwYXRoXG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uIChvYmosIHBhdGgsIHZhbHVlKSB7XG4gIHZhciBvID0gb2JqO1xuICB2YXIga2V5QXJyID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfc3RyaW5nX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHBhdGgpID8gcGF0aC5zcGxpdCgnLicpIDogcGF0aDtcbiAga2V5QXJyLmZvckVhY2goZnVuY3Rpb24gKGtleSwgaWR4KSB7XG4gICAgLy8g5LiN5piv5pyA5ZCO5LiA5LiqXG4gICAgaWYgKGlkeCA8IGtleUFyci5sZW5ndGggLSAxKSB7XG4gICAgICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX29iamVjdF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvW2tleV0pKSB7XG4gICAgICAgIG9ba2V5XSA9IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX251bWJlcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShrZXlBcnJbaWR4ICsgMV0pID8gW10gOiB7fTtcbiAgICAgIH1cblxuICAgICAgbyA9IG9ba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgb1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG9iajtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEwNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2VhY2hfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19wbGFpbl9vYmplY3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKG9iamVjdCwga2V5cykge1xuICBpZiAob2JqZWN0ID09PSBudWxsIHx8ICFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19wbGFpbl9vYmplY3RfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkob2JqZWN0KSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHZhciByZXN1bHQgPSB7fTtcbiAgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShrZXlzLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG9iamVjdFtrZXldO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uIChmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gIHZhciB0aW1lb3V0LCBjb250ZXh0LCBhcmdzLCByZXN1bHQ7XG4gIHZhciBwcmV2aW91cyA9IDA7XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuXG4gIHZhciBsYXRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICBwcmV2aW91cyA9IG9wdGlvbnMubGVhZGluZyA9PT0gZmFsc2UgPyAwIDogRGF0ZS5ub3coKTtcbiAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgIGlmICghdGltZW91dCkgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICB9O1xuXG4gIHZhciB0aHJvdHRsZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKCFwcmV2aW91cyAmJiBvcHRpb25zLmxlYWRpbmcgPT09IGZhbHNlKSBwcmV2aW91cyA9IG5vdztcbiAgICB2YXIgcmVtYWluaW5nID0gd2FpdCAtIChub3cgLSBwcmV2aW91cyk7XG4gICAgY29udGV4dCA9IHRoaXM7XG4gICAgYXJncyA9IGFyZ3VtZW50cztcblxuICAgIGlmIChyZW1haW5pbmcgPD0gMCB8fCByZW1haW5pbmcgPiB3YWl0KSB7XG4gICAgICBpZiAodGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBwcmV2aW91cyA9IG5vdztcbiAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICBpZiAoIXRpbWVvdXQpIGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKCF0aW1lb3V0ICYmIG9wdGlvbnMudHJhaWxpbmcgIT09IGZhbHNlKSB7XG4gICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgcmVtYWluaW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHRocm90dGxlZC5jYW5jZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHByZXZpb3VzID0gMDtcbiAgICB0aW1lb3V0ID0gY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICB9O1xuXG4gIHJldHVybiB0aHJvdHRsZWQ7XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMDcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9saWtlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkgPyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh2YWx1ZSkgOiBbXTtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEwOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBtYXAgPSB7fTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKHByZWZpeCkge1xuICBwcmVmaXggPSBwcmVmaXggfHwgJ2cnO1xuXG4gIGlmICghbWFwW3ByZWZpeF0pIHtcbiAgICBtYXBbcHJlZml4XSA9IDE7XG4gIH0gZWxzZSB7XG4gICAgbWFwW3ByZWZpeF0gKz0gMTtcbiAgfVxuXG4gIHJldHVybiBwcmVmaXggKyBtYXBbcHJlZml4XTtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEwOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKCkge30pO1xuXG4vKioqLyB9KSxcbi8qIDExMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKHYpIHtcbiAgcmV0dXJuIHY7XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMTEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoaW1tdXRhYmxlKSAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IHNpemU7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19uaWxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9saWtlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG5cbmZ1bmN0aW9uIHNpemUobykge1xuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbmlsX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG8pKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvKSkge1xuICAgIHJldHVybiBvLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBPYmplY3Qua2V5cyhvKS5sZW5ndGg7XG59XG5cbi8qKiovIH0pLFxuLyogMTEyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBrLXYg5a2Y5YKoXG4gKi9cbnZhciBkZWZhdWx0XzEgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZhdWx0XzEoKSB7XG4gICAgdGhpcy5tYXAgPSB7fTtcbiAgfVxuXG4gIGRlZmF1bHRfMS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiB0aGlzLm1hcFtrZXldICE9PSB1bmRlZmluZWQ7XG4gIH07XG5cbiAgZGVmYXVsdF8xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5LCBkZWYpIHtcbiAgICB2YXIgdiA9IHRoaXMubWFwW2tleV07XG4gICAgcmV0dXJuIHYgPT09IHVuZGVmaW5lZCA/IGRlZiA6IHY7XG4gIH07XG5cbiAgZGVmYXVsdF8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgIHRoaXMubWFwW2tleV0gPSB2YWx1ZTtcbiAgfTtcblxuICBkZWZhdWx0XzEucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMubWFwID0ge307XG4gIH07XG5cbiAgZGVmYXVsdF8xLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgZGVsZXRlIHRoaXMubWFwW2tleV07XG4gIH07XG5cbiAgZGVmYXVsdF8xLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1hcCkubGVuZ3RoO1xuICB9O1xuXG4gIHJldHVybiBkZWZhdWx0XzE7XG59KCk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZGVmYXVsdF8xKTtcblxuLyoqKi8gfSksXG4vKiAxMTMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gd3JhcCB0cmVlIG5vZGVcbmZ1bmN0aW9uIFdyYXBwZWRUcmVlKHcsIGgsIHksIGMpIHtcbiAgaWYgKGMgPT09IHZvaWQgMCkge1xuICAgIGMgPSBbXTtcbiAgfVxuXG4gIHZhciBtZSA9IHRoaXM7IC8vIHNpemVcblxuICBtZS53ID0gdyB8fCAwO1xuICBtZS5oID0gaCB8fCAwOyAvLyBwb3NpdGlvblxuXG4gIG1lLnkgPSB5IHx8IDA7XG4gIG1lLnggPSAwOyAvLyBjaGlsZHJlblxuXG4gIG1lLmMgPSBjIHx8IFtdO1xuICBtZS5jcyA9IGMubGVuZ3RoOyAvLyBtb2RpZmllZFxuXG4gIG1lLnByZWxpbSA9IDA7XG4gIG1lLm1vZCA9IDA7XG4gIG1lLnNoaWZ0ID0gMDtcbiAgbWUuY2hhbmdlID0gMDsgLy8gbGVmdC9yaWdodCB0cmVlXG5cbiAgbWUudGwgPSBudWxsO1xuICBtZS50ciA9IG51bGw7IC8vIGV4dHJlbWUgbGVmdC9yaWdodCB0cmVlXG5cbiAgbWUuZWwgPSBudWxsO1xuICBtZS5lciA9IG51bGw7IC8vIG1vZGlmaWVkIGxlZnQvcmlnaHQgdHJlZVxuXG4gIG1lLm1zZWwgPSAwO1xuICBtZS5tc2VyID0gMDtcbn1cblxuV3JhcHBlZFRyZWUuZnJvbU5vZGUgPSBmdW5jdGlvbiAocm9vdCwgaXNIb3Jpem9udGFsKSB7XG4gIGlmICghcm9vdCkgcmV0dXJuIG51bGw7XG4gIHZhciBjaGlsZHJlbiA9IFtdO1xuICByb290LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgY2hpbGRyZW4ucHVzaChXcmFwcGVkVHJlZS5mcm9tTm9kZShjaGlsZCwgaXNIb3Jpem9udGFsKSk7XG4gIH0pO1xuICBpZiAoaXNIb3Jpem9udGFsKSByZXR1cm4gbmV3IFdyYXBwZWRUcmVlKHJvb3QuaGVpZ2h0LCByb290LndpZHRoLCByb290LngsIGNoaWxkcmVuKTtcbiAgcmV0dXJuIG5ldyBXcmFwcGVkVHJlZShyb290LndpZHRoLCByb290LmhlaWdodCwgcm9vdC55LCBjaGlsZHJlbik7XG59OyAvLyBub2RlIHV0aWxzXG5cblxuZnVuY3Rpb24gbW92ZVJpZ2h0KG5vZGUsIG1vdmUsIGlzSG9yaXpvbnRhbCkge1xuICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgbm9kZS55ICs9IG1vdmU7XG4gIH0gZWxzZSB7XG4gICAgbm9kZS54ICs9IG1vdmU7XG4gIH1cblxuICBub2RlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgbW92ZVJpZ2h0KGNoaWxkLCBtb3ZlLCBpc0hvcml6b250YWwpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0TWluKG5vZGUsIGlzSG9yaXpvbnRhbCkge1xuICB2YXIgcmVzID0gaXNIb3Jpem9udGFsID8gbm9kZS55IDogbm9kZS54O1xuICBub2RlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmVzID0gTWF0aC5taW4oZ2V0TWluKGNoaWxkLCBpc0hvcml6b250YWwpLCByZXMpO1xuICB9KTtcbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplKG5vZGUsIGlzSG9yaXpvbnRhbCkge1xuICB2YXIgbWluID0gZ2V0TWluKG5vZGUsIGlzSG9yaXpvbnRhbCk7XG4gIG1vdmVSaWdodChub2RlLCAtbWluLCBpc0hvcml6b250YWwpO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0QmFjayhjb252ZXJ0ZWRcbi8qIFdyYXBwZWRUcmVlICovXG4sIHJvb3Rcbi8qIFRyZWVOb2RlICovXG4sIGlzSG9yaXpvbnRhbCkge1xuICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgcm9vdC55ID0gY29udmVydGVkLng7XG4gIH0gZWxzZSB7XG4gICAgcm9vdC54ID0gY29udmVydGVkLng7XG4gIH1cblxuICBjb252ZXJ0ZWQuYy5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCwgaSkge1xuICAgIGNvbnZlcnRCYWNrKGNoaWxkLCByb290LmNoaWxkcmVuW2ldLCBpc0hvcml6b250YWwpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbGF5ZXIobm9kZSwgaXNIb3Jpem9udGFsLCBkKSB7XG4gIGlmIChkID09PSB2b2lkIDApIHtcbiAgICBkID0gMDtcbiAgfVxuXG4gIGlmIChpc0hvcml6b250YWwpIHtcbiAgICBub2RlLnggPSBkO1xuICAgIGQgKz0gbm9kZS53aWR0aDtcbiAgfSBlbHNlIHtcbiAgICBub2RlLnkgPSBkO1xuICAgIGQgKz0gbm9kZS5oZWlnaHQ7XG4gIH1cblxuICBub2RlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgbGF5ZXIoY2hpbGQsIGlzSG9yaXpvbnRhbCwgZCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChyb290LCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgaXNIb3Jpem9udGFsID0gb3B0aW9ucy5pc0hvcml6b250YWw7XG5cbiAgZnVuY3Rpb24gZmlyc3RXYWxrKHQpIHtcbiAgICBpZiAodC5jcyA9PT0gMCkge1xuICAgICAgc2V0RXh0cmVtZXModCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZmlyc3RXYWxrKHQuY1swXSk7XG4gICAgdmFyIGloID0gdXBkYXRlSVlMKGJvdHRvbSh0LmNbMF0uZWwpLCAwLCBudWxsKTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdC5jczsgKytpKSB7XG4gICAgICBmaXJzdFdhbGsodC5jW2ldKTtcbiAgICAgIHZhciBtaW4gPSBib3R0b20odC5jW2ldLmVyKTtcbiAgICAgIHNlcGFyYXRlKHQsIGksIGloKTtcbiAgICAgIGloID0gdXBkYXRlSVlMKG1pbiwgaSwgaWgpO1xuICAgIH1cblxuICAgIHBvc2l0aW9uUm9vdCh0KTtcbiAgICBzZXRFeHRyZW1lcyh0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldEV4dHJlbWVzKHQpIHtcbiAgICBpZiAodC5jcyA9PT0gMCkge1xuICAgICAgdC5lbCA9IHQ7XG4gICAgICB0LmVyID0gdDtcbiAgICAgIHQubXNlbCA9IHQubXNlciA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQuZWwgPSB0LmNbMF0uZWw7XG4gICAgICB0Lm1zZWwgPSB0LmNbMF0ubXNlbDtcbiAgICAgIHQuZXIgPSB0LmNbdC5jcyAtIDFdLmVyO1xuICAgICAgdC5tc2VyID0gdC5jW3QuY3MgLSAxXS5tc2VyO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNlcGFyYXRlKHQsIGksIGloKSB7XG4gICAgdmFyIHNyID0gdC5jW2kgLSAxXTtcbiAgICB2YXIgbXNzciA9IHNyLm1vZDtcbiAgICB2YXIgY2wgPSB0LmNbaV07XG4gICAgdmFyIG1zY2wgPSBjbC5tb2Q7XG5cbiAgICB3aGlsZSAoc3IgIT09IG51bGwgJiYgY2wgIT09IG51bGwpIHtcbiAgICAgIGlmIChib3R0b20oc3IpID4gaWgubG93KSBpaCA9IGloLm54dDtcbiAgICAgIHZhciBkaXN0ID0gbXNzciArIHNyLnByZWxpbSArIHNyLncgLSAobXNjbCArIGNsLnByZWxpbSk7XG5cbiAgICAgIGlmIChkaXN0ID4gMCkge1xuICAgICAgICBtc2NsICs9IGRpc3Q7XG4gICAgICAgIG1vdmVTdWJ0cmVlKHQsIGksIGloLmluZGV4LCBkaXN0KTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN5ID0gYm90dG9tKHNyKTtcbiAgICAgIHZhciBjeSA9IGJvdHRvbShjbCk7XG5cbiAgICAgIGlmIChzeSA8PSBjeSkge1xuICAgICAgICBzciA9IG5leHRSaWdodENvbnRvdXIoc3IpO1xuICAgICAgICBpZiAoc3IgIT09IG51bGwpIG1zc3IgKz0gc3IubW9kO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3kgPj0gY3kpIHtcbiAgICAgICAgY2wgPSBuZXh0TGVmdENvbnRvdXIoY2wpO1xuICAgICAgICBpZiAoY2wgIT09IG51bGwpIG1zY2wgKz0gY2wubW9kO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghc3IgJiYgISFjbCkge1xuICAgICAgc2V0TGVmdFRocmVhZCh0LCBpLCBjbCwgbXNjbCk7XG4gICAgfSBlbHNlIGlmICghIXNyICYmICFjbCkge1xuICAgICAgc2V0UmlnaHRUaHJlYWQodCwgaSwgc3IsIG1zc3IpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdmVTdWJ0cmVlKHQsIGksIHNpLCBkaXN0KSB7XG4gICAgdC5jW2ldLm1vZCArPSBkaXN0O1xuICAgIHQuY1tpXS5tc2VsICs9IGRpc3Q7XG4gICAgdC5jW2ldLm1zZXIgKz0gZGlzdDtcbiAgICBkaXN0cmlidXRlRXh0cmEodCwgaSwgc2ksIGRpc3QpO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV4dExlZnRDb250b3VyKHQpIHtcbiAgICByZXR1cm4gdC5jcyA9PT0gMCA/IHQudGwgOiB0LmNbMF07XG4gIH1cblxuICBmdW5jdGlvbiBuZXh0UmlnaHRDb250b3VyKHQpIHtcbiAgICByZXR1cm4gdC5jcyA9PT0gMCA/IHQudHIgOiB0LmNbdC5jcyAtIDFdO1xuICB9XG5cbiAgZnVuY3Rpb24gYm90dG9tKHQpIHtcbiAgICByZXR1cm4gdC55ICsgdC5oO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0TGVmdFRocmVhZCh0LCBpLCBjbCwgbW9kc3VtY2wpIHtcbiAgICB2YXIgbGkgPSB0LmNbMF0uZWw7XG4gICAgbGkudGwgPSBjbDtcbiAgICB2YXIgZGlmZiA9IG1vZHN1bWNsIC0gY2wubW9kIC0gdC5jWzBdLm1zZWw7XG4gICAgbGkubW9kICs9IGRpZmY7XG4gICAgbGkucHJlbGltIC09IGRpZmY7XG4gICAgdC5jWzBdLmVsID0gdC5jW2ldLmVsO1xuICAgIHQuY1swXS5tc2VsID0gdC5jW2ldLm1zZWw7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRSaWdodFRocmVhZCh0LCBpLCBzciwgbW9kc3Vtc3IpIHtcbiAgICB2YXIgcmkgPSB0LmNbaV0uZXI7XG4gICAgcmkudHIgPSBzcjtcbiAgICB2YXIgZGlmZiA9IG1vZHN1bXNyIC0gc3IubW9kIC0gdC5jW2ldLm1zZXI7XG4gICAgcmkubW9kICs9IGRpZmY7XG4gICAgcmkucHJlbGltIC09IGRpZmY7XG4gICAgdC5jW2ldLmVyID0gdC5jW2kgLSAxXS5lcjtcbiAgICB0LmNbaV0ubXNlciA9IHQuY1tpIC0gMV0ubXNlcjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBvc2l0aW9uUm9vdCh0KSB7XG4gICAgdC5wcmVsaW0gPSAodC5jWzBdLnByZWxpbSArIHQuY1swXS5tb2QgKyB0LmNbdC5jcyAtIDFdLm1vZCArIHQuY1t0LmNzIC0gMV0ucHJlbGltICsgdC5jW3QuY3MgLSAxXS53KSAvIDIgLSB0LncgLyAyO1xuICB9XG5cbiAgZnVuY3Rpb24gc2Vjb25kV2Fsayh0LCBtb2RzdW0pIHtcbiAgICBtb2RzdW0gKz0gdC5tb2Q7XG4gICAgdC54ID0gdC5wcmVsaW0gKyBtb2RzdW07XG4gICAgYWRkQ2hpbGRTcGFjaW5nKHQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0LmNzOyBpKyspIHtcbiAgICAgIHNlY29uZFdhbGsodC5jW2ldLCBtb2RzdW0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc3RyaWJ1dGVFeHRyYSh0LCBpLCBzaSwgZGlzdCkge1xuICAgIGlmIChzaSAhPT0gaSAtIDEpIHtcbiAgICAgIHZhciBuciA9IGkgLSBzaTtcbiAgICAgIHQuY1tzaSArIDFdLnNoaWZ0ICs9IGRpc3QgLyBucjtcbiAgICAgIHQuY1tpXS5zaGlmdCAtPSBkaXN0IC8gbnI7XG4gICAgICB0LmNbaV0uY2hhbmdlIC09IGRpc3QgLSBkaXN0IC8gbnI7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkQ2hpbGRTcGFjaW5nKHQpIHtcbiAgICB2YXIgZCA9IDA7XG4gICAgdmFyIG1vZHN1bWRlbHRhID0gMDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdC5jczsgaSsrKSB7XG4gICAgICBkICs9IHQuY1tpXS5zaGlmdDtcbiAgICAgIG1vZHN1bWRlbHRhICs9IGQgKyB0LmNbaV0uY2hhbmdlO1xuICAgICAgdC5jW2ldLm1vZCArPSBtb2RzdW1kZWx0YTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVJWUwobG93LCBpbmRleCwgaWgpIHtcbiAgICB3aGlsZSAoaWggIT09IG51bGwgJiYgbG93ID49IGloLmxvdykge1xuICAgICAgaWggPSBpaC5ueHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxvdzogbG93LFxuICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgbnh0OiBpaFxuICAgIH07XG4gIH0gLy8gZG8gbGF5b3V0XG5cblxuICBsYXllcihyb290LCBpc0hvcml6b250YWwpO1xuICB2YXIgd3QgPSBXcmFwcGVkVHJlZS5mcm9tTm9kZShyb290LCBpc0hvcml6b250YWwpO1xuICBmaXJzdFdhbGsod3QpO1xuICBzZWNvbmRXYWxrKHd0LCAwKTtcbiAgY29udmVydEJhY2sod3QsIHJvb3QsIGlzSG9yaXpvbnRhbCk7XG4gIG5vcm1hbGl6ZShyb290LCBpc0hvcml6b250YWwpO1xuICByZXR1cm4gcm9vdDtcbn07XG5cbi8qKiovIH0pLFxuLyogMTE0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbmZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcy5wcm90b3R5cGUpOyBzdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzdWJDbGFzczsgc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgVHJlZUxheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXG52YXIgZGVuZHJvZ3JhbSA9IF9fd2VicGFja19yZXF1aXJlX18oMTE1KTtcblxudmFyIGRvVHJlZUxheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpO1xuXG52YXIgdXRpbCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cbnZhciBEZW5kcm9ncmFtTGF5b3V0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfVHJlZUxheW91dCkge1xuICBfaW5oZXJpdHNMb29zZShEZW5kcm9ncmFtTGF5b3V0LCBfVHJlZUxheW91dCk7XG5cbiAgZnVuY3Rpb24gRGVuZHJvZ3JhbUxheW91dCgpIHtcbiAgICByZXR1cm4gX1RyZWVMYXlvdXQuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IERlbmRyb2dyYW1MYXlvdXQucHJvdG90eXBlO1xuXG4gIF9wcm90by5leGVjdXRlID0gZnVuY3Rpb24gZXhlY3V0ZSgpIHtcbiAgICB2YXIgbWUgPSB0aGlzO1xuICAgIG1lLnJvb3ROb2RlLndpZHRoID0gMDtcbiAgICByZXR1cm4gZG9UcmVlTGF5b3V0KG1lLnJvb3ROb2RlLCBtZS5vcHRpb25zLCBkZW5kcm9ncmFtKTtcbiAgfTtcblxuICByZXR1cm4gRGVuZHJvZ3JhbUxheW91dDtcbn0oVHJlZUxheW91dCk7XG5cbnZhciBERUZBVUxUX09QVElPTlMgPSB7fTtcblxuZnVuY3Rpb24gZGVuZHJvZ3JhbUxheW91dChyb290LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSB1dGlsLmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TLCBvcHRpb25zKTtcbiAgcmV0dXJuIG5ldyBEZW5kcm9ncmFtTGF5b3V0KHJvb3QsIG9wdGlvbnMpLmV4ZWN1dGUoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkZW5kcm9ncmFtTGF5b3V0O1xuXG4vKioqLyB9KSxcbi8qIDExNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyB3cmFwIHRyZWUgbm9kZVxuLy8gVE9ETyBjb25zaWRlcmluZyBzaXplXG52YXIgdXRpbCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cbmZ1bmN0aW9uIFdyYXBwZWRUcmVlKGhlaWdodCwgY2hpbGRyZW4pIHtcbiAgaWYgKGhlaWdodCA9PT0gdm9pZCAwKSB7XG4gICAgaGVpZ2h0ID0gMDtcbiAgfVxuXG4gIGlmIChjaGlsZHJlbiA9PT0gdm9pZCAwKSB7XG4gICAgY2hpbGRyZW4gPSBbXTtcbiAgfVxuXG4gIHZhciBtZSA9IHRoaXM7XG4gIG1lLnggPSBtZS55ID0gMDtcbiAgbWUubGVmdENoaWxkID0gbWUucmlnaHRDaGlsZCA9IG51bGw7XG4gIG1lLmhlaWdodCA9IDA7XG4gIG1lLmNoaWxkcmVuID0gY2hpbGRyZW47XG59XG5cbnZhciBERUZBVUxUX09QVElPTlMgPSB7XG4gIGlzSG9yaXpvbnRhbDogdHJ1ZSxcbiAgbm9kZVNlcDogMjAsXG4gIG5vZGVTaXplOiAyMCxcbiAgcmFua1NlcDogMjAwLFxuICBzdWJUcmVlU2VwOiAxMFxufTtcblxuZnVuY3Rpb24gY29udmVydEJhY2soY29udmVydGVkXG4vKiBXcmFwcGVkVHJlZSAqL1xuLCByb290XG4vKiBUcmVlTm9kZSAqL1xuLCBpc0hvcml6b250YWwpIHtcbiAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgIHJvb3QueCA9IGNvbnZlcnRlZC54O1xuICAgIHJvb3QueSA9IGNvbnZlcnRlZC55O1xuICB9IGVsc2Uge1xuICAgIHJvb3QueCA9IGNvbnZlcnRlZC55O1xuICAgIHJvb3QueSA9IGNvbnZlcnRlZC54O1xuICB9XG5cbiAgY29udmVydGVkLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkLCBpKSB7XG4gICAgY29udmVydEJhY2soY2hpbGQsIHJvb3QuY2hpbGRyZW5baV0sIGlzSG9yaXpvbnRhbCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChyb290LCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICBvcHRpb25zID0gdXRpbC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucyk7XG4gIHZhciBtYXhEZXB0aCA9IDA7XG5cbiAgZnVuY3Rpb24gd3JhcHBlZFRyZWVGcm9tTm9kZShuKSB7XG4gICAgaWYgKCFuKSByZXR1cm4gbnVsbDtcbiAgICBuLndpZHRoID0gMDtcblxuICAgIGlmIChuLmRlcHRoICYmIG4uZGVwdGggPiBtYXhEZXB0aCkge1xuICAgICAgbWF4RGVwdGggPSBuLmRlcHRoOyAvLyBnZXQgdGhlIG1heCBkZXB0aFxuICAgIH1cblxuICAgIHZhciBjaGlsZHJlbiA9IG4uY2hpbGRyZW47XG4gICAgdmFyIGNoaWxkcmVuQ291bnQgPSBjaGlsZHJlbi5sZW5ndGg7XG4gICAgdmFyIHQgPSBuZXcgV3JhcHBlZFRyZWUobi5oZWlnaHQsIFtdKTtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCwgaSkge1xuICAgICAgdmFyIGNoaWxkV1QgPSB3cmFwcGVkVHJlZUZyb21Ob2RlKGNoaWxkKTtcbiAgICAgIHQuY2hpbGRyZW4ucHVzaChjaGlsZFdUKTtcblxuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgLy8gdC5sZWZ0Q2hpbGQgPSBjaGlsZFdULmxlZnRDaGlsZCA/IGNoaWxkV1QubGVmdENoaWxkIDogY2hpbGRXVFxuICAgICAgICB0LmxlZnRDaGlsZCA9IGNoaWxkV1Q7XG4gICAgICB9XG5cbiAgICAgIGlmIChpID09PSBjaGlsZHJlbkNvdW50IC0gMSkge1xuICAgICAgICAvLyB0LnJpZ2h0Q2hpbGQgPSBjaGlsZFdULnJpZ2h0Q2hpbGQgPyBjaGlsZFdULnJpZ2h0Q2hpbGQgOiBjaGlsZFdUXG4gICAgICAgIHQucmlnaHRDaGlsZCA9IGNoaWxkV1Q7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdC5vcmlnaW5Ob2RlID0gbjtcbiAgICB0LmlzTGVhZiA9IG4uaXNMZWFmKCk7XG4gICAgcmV0dXJuIHQ7XG4gIH1cblxuICBmdW5jdGlvbiBnZXREcmF3aW5nRGVwdGgodCkge1xuICAgIGlmICh0LmlzTGVhZiB8fCB0LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdC5kcmF3aW5nRGVwdGggPSBtYXhEZXB0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGRlcHRocyA9IHQuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICByZXR1cm4gZ2V0RHJhd2luZ0RlcHRoKGNoaWxkKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIG1pbkNoaWxkRGVwdGggPSBNYXRoLm1pbi5hcHBseShudWxsLCBkZXB0aHMpO1xuICAgICAgdC5kcmF3aW5nRGVwdGggPSBtaW5DaGlsZERlcHRoIC0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdC5kcmF3aW5nRGVwdGg7XG4gIH1cblxuICB2YXIgcHJldkxlYWY7XG5cbiAgZnVuY3Rpb24gcG9zaXRpb24odCkge1xuICAgIHQueCA9IHQuZHJhd2luZ0RlcHRoICogb3B0aW9ucy5yYW5rU2VwO1xuXG4gICAgaWYgKHQuaXNMZWFmKSB7XG4gICAgICB0LnkgPSAwO1xuXG4gICAgICBpZiAocHJldkxlYWYpIHtcbiAgICAgICAgdC55ID0gcHJldkxlYWYueSArIHByZXZMZWFmLmhlaWdodCArIG9wdGlvbnMubm9kZVNlcDtcblxuICAgICAgICBpZiAodC5vcmlnaW5Ob2RlLnBhcmVudCAhPT0gcHJldkxlYWYub3JpZ2luTm9kZS5wYXJlbnQpIHtcbiAgICAgICAgICB0LnkgKz0gb3B0aW9ucy5zdWJUcmVlU2VwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHByZXZMZWFmID0gdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBwb3NpdGlvbihjaGlsZCk7XG4gICAgICB9KTtcbiAgICAgIHQueSA9ICh0LmxlZnRDaGlsZC55ICsgdC5yaWdodENoaWxkLnkpIC8gMjtcbiAgICB9XG4gIH0gLy8gd3JhcCBub2RlXG5cblxuICB2YXIgd3QgPSB3cmFwcGVkVHJlZUZyb21Ob2RlKHJvb3QpOyAvLyBnZXQgZGVwdGggZm9yIGRyYXdpbmdcblxuICBnZXREcmF3aW5nRGVwdGgod3QpOyAvLyBnZXQgcG9zaXRpb25cblxuICBwb3NpdGlvbih3dCk7IC8vIGdldCB4LCB5XG5cbiAgY29udmVydEJhY2sod3QsIHJvb3QsIG9wdGlvbnMuaXNIb3Jpem9udGFsKTtcbiAgcmV0dXJuIHJvb3Q7XG59O1xuXG4vKioqLyB9KSxcbi8qIDExNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5mdW5jdGlvbiBfaW5oZXJpdHNMb29zZShzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MucHJvdG90eXBlKTsgc3ViQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc3ViQ2xhc3M7IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIFRyZWVMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblxudmFyIGluZGVudGVkVHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTE3KTtcblxudmFyIHNlcGFyYXRlVHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oMzApO1xuXG52YXIgdXRpbCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cbnZhciBWQUxJRF9ESVJFQ1RJT05TID0gWydMUicsIC8vIGxlZnQgdG8gcmlnaHRcbidSTCcsIC8vIHJpZ2h0IHRvIGxlZnRcbidIJyAvLyBob3Jpem9udGFsXG5dO1xudmFyIERFRkFVTFRfRElSRUNUSU9OID0gVkFMSURfRElSRUNUSU9OU1swXTtcblxudmFyIEluZGVudGVkTGF5b3V0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfVHJlZUxheW91dCkge1xuICBfaW5oZXJpdHNMb29zZShJbmRlbnRlZExheW91dCwgX1RyZWVMYXlvdXQpO1xuXG4gIGZ1bmN0aW9uIEluZGVudGVkTGF5b3V0KCkge1xuICAgIHJldHVybiBfVHJlZUxheW91dC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gSW5kZW50ZWRMYXlvdXQucHJvdG90eXBlO1xuXG4gIF9wcm90by5leGVjdXRlID0gZnVuY3Rpb24gZXhlY3V0ZSgpIHtcbiAgICB2YXIgbWUgPSB0aGlzO1xuICAgIHZhciBvcHRpb25zID0gbWUub3B0aW9ucztcbiAgICB2YXIgcm9vdCA9IG1lLnJvb3ROb2RlO1xuICAgIG9wdGlvbnMuaXNIb3Jpem9udGFsID0gdHJ1ZTsgLy8gZGVmYXVsdCBpbmRlbnQgMjAgYW5kIHNpbmsgZmlyc3QgY2hpbGRyZW47XG5cbiAgICB2YXIgX29wdGlvbnMkaW5kZW50ID0gb3B0aW9ucy5pbmRlbnQsXG4gICAgICAgIGluZGVudCA9IF9vcHRpb25zJGluZGVudCA9PT0gdm9pZCAwID8gMjAgOiBfb3B0aW9ucyRpbmRlbnQsXG4gICAgICAgIF9vcHRpb25zJGRyb3BDYXAgPSBvcHRpb25zLmRyb3BDYXAsXG4gICAgICAgIGRyb3BDYXAgPSBfb3B0aW9ucyRkcm9wQ2FwID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZHJvcENhcDtcbiAgICB2YXIgZGlyZWN0aW9uID0gb3B0aW9ucy5kaXJlY3Rpb24gfHwgREVGQVVMVF9ESVJFQ1RJT047XG5cbiAgICBpZiAoZGlyZWN0aW9uICYmIFZBTElEX0RJUkVDVElPTlMuaW5kZXhPZihkaXJlY3Rpb24pID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgZGlyZWN0aW9uOiBcIiArIGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gVkFMSURfRElSRUNUSU9OU1swXSkge1xuICAgICAgLy8gTFJcbiAgICAgIGluZGVudGVkVHJlZShyb290LCBpbmRlbnQsIGRyb3BDYXApO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSBWQUxJRF9ESVJFQ1RJT05TWzFdKSB7XG4gICAgICAvLyBSTFxuICAgICAgaW5kZW50ZWRUcmVlKHJvb3QsIGluZGVudCwgZHJvcENhcCk7XG4gICAgICByb290LnJpZ2h0MmxlZnQoKTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gVkFMSURfRElSRUNUSU9OU1syXSkge1xuICAgICAgLy8gSFxuICAgICAgLy8gc2VwYXJhdGUgaW50byBsZWZ0IGFuZCByaWdodCB0cmVlc1xuICAgICAgdmFyIF9zZXBhcmF0ZVRyZWUgPSBzZXBhcmF0ZVRyZWUocm9vdCwgb3B0aW9ucyksXG4gICAgICAgICAgbGVmdCA9IF9zZXBhcmF0ZVRyZWUubGVmdCxcbiAgICAgICAgICByaWdodCA9IF9zZXBhcmF0ZVRyZWUucmlnaHQ7XG5cbiAgICAgIGluZGVudGVkVHJlZShsZWZ0LCBpbmRlbnQsIGRyb3BDYXApO1xuICAgICAgbGVmdC5yaWdodDJsZWZ0KCk7XG4gICAgICBpbmRlbnRlZFRyZWUocmlnaHQsIGluZGVudCwgZHJvcENhcCk7XG4gICAgICB2YXIgYmJveCA9IGxlZnQuZ2V0Qm91bmRpbmdCb3goKTtcbiAgICAgIHJpZ2h0LnRyYW5zbGF0ZShiYm94LndpZHRoLCAwKTtcbiAgICAgIHJvb3QueCA9IHJpZ2h0LnggLSByb290LndpZHRoIC8gMjtcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdDtcbiAgfTtcblxuICByZXR1cm4gSW5kZW50ZWRMYXlvdXQ7XG59KFRyZWVMYXlvdXQpO1xuXG52YXIgREVGQVVMVF9PUFRJT05TID0ge307XG5cbmZ1bmN0aW9uIGluZGVudGVkTGF5b3V0KHJvb3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IHV0aWwuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIG9wdGlvbnMpO1xuICByZXR1cm4gbmV3IEluZGVudGVkTGF5b3V0KHJvb3QsIG9wdGlvbnMpLmV4ZWN1dGUoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbmRlbnRlZExheW91dDtcblxuLyoqKi8gfSksXG4vKiAxMTcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuZnVuY3Rpb24gcG9zaXRpb25Ob2RlKG5vZGUsIHByZXZpb3VzTm9kZSwgaW5kZW50LCBkcm9wQ2FwKSB7XG4gIC8vICBjYWN1bGF0ZSB0aGUgbm9kZSdzIGhvcml6b250YWwgb2Zmc2V0IERYLCBkeCdzIHR5cGUgbWlnaHQgYmUgbnVtYmVyIG9yIGZ1bmN0aW9uXG4gIHZhciBkaXNwbGFjZW1lbnRYID0gdHlwZW9mIGluZGVudCA9PT0gJ2Z1bmN0aW9uJyA/IGluZGVudChub2RlKSA6IGluZGVudCAqIG5vZGUuZGVwdGg7XG5cbiAgaWYgKCFkcm9wQ2FwKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChub2RlLmlkID09PSBub2RlLnBhcmVudC5jaGlsZHJlblswXS5pZCkge1xuICAgICAgICBub2RlLnggKz0gZGlzcGxhY2VtZW50WDtcbiAgICAgICAgbm9kZS55ID0gcHJldmlvdXNOb2RlID8gcHJldmlvdXNOb2RlLnkgOiAwO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkgey8vIHNraXAgdG8gbm9ybWFsIHdoZW4gYSBub2RlIGhhcyBubyBwYXJlbnRcbiAgICB9XG4gIH1cblxuICBub2RlLnggKz0gZGlzcGxhY2VtZW50WDtcbiAgbm9kZS55ID0gcHJldmlvdXNOb2RlID8gcHJldmlvdXNOb2RlLnkgKyBwcmV2aW91c05vZGUuaGVpZ2h0IDogMDtcbiAgcmV0dXJuO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChyb290LCBpbmRlbnQsIGRyb3BDYXApIHtcbiAgdmFyIHByZXZpb3VzTm9kZSA9IG51bGw7XG4gIHJvb3QuZWFjaE5vZGUoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBwb3NpdGlvbk5vZGUobm9kZSwgcHJldmlvdXNOb2RlLCBpbmRlbnQsIGRyb3BDYXApO1xuICAgIHByZXZpb3VzTm9kZSA9IG5vZGU7XG4gIH0pO1xufTtcblxuLyoqKi8gfSksXG4vKiAxMTggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7IHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzOyBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBUcmVlTGF5b3V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbnZhciBtaW5kbWFwID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTkpO1xuXG52YXIgZG9UcmVlTGF5b3V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG5cbnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblxudmFyIE1pbmRtYXBMYXlvdXQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9UcmVlTGF5b3V0KSB7XG4gIF9pbmhlcml0c0xvb3NlKE1pbmRtYXBMYXlvdXQsIF9UcmVlTGF5b3V0KTtcblxuICBmdW5jdGlvbiBNaW5kbWFwTGF5b3V0KCkge1xuICAgIHJldHVybiBfVHJlZUxheW91dC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gTWluZG1hcExheW91dC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmV4ZWN1dGUgPSBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgIHZhciBtZSA9IHRoaXM7XG4gICAgcmV0dXJuIGRvVHJlZUxheW91dChtZS5yb290Tm9kZSwgbWUub3B0aW9ucywgbWluZG1hcCk7XG4gIH07XG5cbiAgcmV0dXJuIE1pbmRtYXBMYXlvdXQ7XG59KFRyZWVMYXlvdXQpO1xuXG52YXIgREVGQVVMVF9PUFRJT05TID0ge307XG5cbmZ1bmN0aW9uIG1pbmRtYXBMYXlvdXQocm9vdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gdXRpbC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucyk7XG4gIHJldHVybiBuZXcgTWluZG1hcExheW91dChyb290LCBvcHRpb25zKS5leGVjdXRlKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWluZG1hcExheW91dDtcblxuLyoqKi8gfSksXG4vKiAxMTkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHV0aWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXG5mdW5jdGlvbiBzZWNvbmRXYWxrKG5vZGUsIG9wdGlvbnMpIHtcbiAgdmFyIHRvdGFsSGVpZ2h0ID0gMDtcblxuICBpZiAoIW5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgdG90YWxIZWlnaHQgPSBub2RlLmhlaWdodDtcbiAgfSBlbHNlIHtcbiAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcbiAgICAgIHRvdGFsSGVpZ2h0ICs9IHNlY29uZFdhbGsoYywgb3B0aW9ucyk7XG4gICAgfSk7XG4gIH1cblxuICBub2RlLl9zdWJUcmVlU2VwID0gb3B0aW9ucy5nZXRTdWJUcmVlU2VwKG5vZGUuZGF0YSk7XG4gIG5vZGUudG90YWxIZWlnaHQgPSBNYXRoLm1heChub2RlLmhlaWdodCwgdG90YWxIZWlnaHQpICsgMiAqIG5vZGUuX3N1YlRyZWVTZXA7XG4gIHJldHVybiBub2RlLnRvdGFsSGVpZ2h0O1xufVxuXG5mdW5jdGlvbiB0aGlyZFdhbGsobm9kZSkge1xuICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuICB2YXIgbGVuID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gIGlmIChsZW4pIHtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICB0aGlyZFdhbGsoYyk7XG4gICAgfSk7XG4gICAgdmFyIGZpcnN0ID0gY2hpbGRyZW5bMF07XG4gICAgdmFyIGxhc3QgPSBjaGlsZHJlbltsZW4gLSAxXTtcbiAgICB2YXIgY2hpbGRyZW5IZWlnaHQgPSBsYXN0LnkgLSBmaXJzdC55ICsgbGFzdC5oZWlnaHQ7XG4gICAgdmFyIGNoaWxkcmVuVG90YWxIZWlnaHQgPSAwO1xuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBjaGlsZHJlblRvdGFsSGVpZ2h0ICs9IGNoaWxkLnRvdGFsSGVpZ2h0O1xuICAgIH0pO1xuXG4gICAgaWYgKGNoaWxkcmVuSGVpZ2h0ID4gbm9kZS5oZWlnaHQpIHtcbiAgICAgIC8vIOW9k+WtkOiKgueCueaAu+mrmOW6puWkp+S6jueItuiKgueCuemrmOW6plxuICAgICAgbm9kZS55ID0gZmlyc3QueSArIGNoaWxkcmVuSGVpZ2h0IC8gMiAtIG5vZGUuaGVpZ2h0IC8gMjtcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuLmxlbmd0aCAhPT0gMSB8fCBub2RlLmhlaWdodCA+IGNoaWxkcmVuVG90YWxIZWlnaHQpIHtcbiAgICAgIC8vIOWkmuS6juS4gOS4quWtkOiKgueCueaIluiAheeItuiKgueCueWkp+S6juaJgOacieWtkOiKgueCueeahOaAu+mrmOW6plxuICAgICAgdmFyIG9mZnNldCA9IG5vZGUueSArIChub2RlLmhlaWdodCAtIGNoaWxkcmVuSGVpZ2h0KSAvIDIgLSBmaXJzdC55O1xuICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgICBjLnRyYW5zbGF0ZSgwLCBvZmZzZXQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOWPquacieS4gOS4quWtkOiKgueCuVxuICAgICAgbm9kZS55ID0gKGZpcnN0LnkgKyBmaXJzdC5oZWlnaHQgLyAyICsgbGFzdC55ICsgbGFzdC5oZWlnaHQgLyAyKSAvIDIgLSBub2RlLmhlaWdodCAvIDI7XG4gICAgfVxuICB9XG59XG5cbnZhciBERUZBVUxUX09QVElPTlMgPSB7XG4gIGdldFN1YlRyZWVTZXA6IGZ1bmN0aW9uIGdldFN1YlRyZWVTZXAoKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHJvb3QsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIG9wdGlvbnMgPSB1dGlsLmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TLCBvcHRpb25zKTtcbiAgcm9vdC5wYXJlbnQgPSB7XG4gICAgeDogMCxcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAgeTogMFxuICB9OyAvLyBmaXJzdCB3YWxrXG5cbiAgcm9vdC5CRlRyYXZlcnNlKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgbm9kZS54ID0gbm9kZS5wYXJlbnQueCArIG5vZGUucGFyZW50LndpZHRoOyAvLyBzaW1wbHkgZ2V0IHhcbiAgfSk7XG4gIHJvb3QucGFyZW50ID0gbnVsbDsgLy8gc2Vjb25kIHdhbGtcblxuICBzZWNvbmRXYWxrKHJvb3QsIG9wdGlvbnMpOyAvLyBhc3NpZ24gc3ViIHRyZWUgdG90YWxIZWlnaHRcbiAgLy8gYWRqdXN0aW5nXG4gIC8vIHNlcGFyYXRpbmcgbm9kZXNcblxuICByb290LnN0YXJ0WSA9IDA7XG4gIHJvb3QueSA9IHJvb3QudG90YWxIZWlnaHQgLyAyIC0gcm9vdC5oZWlnaHQgLyAyO1xuICByb290LmVhY2hOb2RlKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcbiAgICB2YXIgbGVuID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgaWYgKGxlbikge1xuICAgICAgdmFyIGZpcnN0ID0gY2hpbGRyZW5bMF07XG4gICAgICBmaXJzdC5zdGFydFkgPSBub2RlLnN0YXJ0WSArIG5vZGUuX3N1YlRyZWVTZXA7XG5cbiAgICAgIGlmIChsZW4gPT09IDEpIHtcbiAgICAgICAgZmlyc3QueSA9IG5vZGUueSArIG5vZGUuaGVpZ2h0IC8gMiAtIGZpcnN0LmhlaWdodCAvIDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaXJzdC55ID0gZmlyc3Quc3RhcnRZICsgZmlyc3QudG90YWxIZWlnaHQgLyAyIC0gZmlyc3QuaGVpZ2h0IC8gMjtcblxuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgdmFyIGMgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgICBjLnN0YXJ0WSA9IGNoaWxkcmVuW2kgLSAxXS5zdGFydFkgKyBjaGlsZHJlbltpIC0gMV0udG90YWxIZWlnaHQ7XG4gICAgICAgICAgYy55ID0gYy5zdGFydFkgKyBjLnRvdGFsSGVpZ2h0IC8gMiAtIGMuaGVpZ2h0IC8gMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7IC8vIHRoaXJkIHdhbGtcblxuICB0aGlyZFdhbGsocm9vdCk7XG59O1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhpZXJhcmNoeS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/hierarchy/build/hierarchy.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/index.js": /*!***********************************************!*\ !*** ./node_modules/@antv/layout/es/index.js ***! \***********************************************/ /*! exports provided: registerLayout, unRegisterLayout, getLayoutByName, Layout, Layouts, GridLayout, RandomLayout, GForceLayout, ForceLayout, CircularLayout, DagreLayout, RadialLayout, ConcentricLayout, MDSLayout, FruchtermanLayout, FruchtermanGPULayout, GForceGPULayout, ComboForceLayout, ForceAtlas2Layout, ERLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _registy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./registy */ \"./node_modules/@antv/layout/es/registy/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerLayout\", function() { return _registy__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unRegisterLayout\", function() { return _registy__WEBPACK_IMPORTED_MODULE_0__[\"unRegisterLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayoutByName\", function() { return _registy__WEBPACK_IMPORTED_MODULE_0__[\"getLayoutByName\"]; });\n\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layout */ \"./node_modules/@antv/layout/es/layout/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"Layout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layouts\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"Layouts\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GridLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"GridLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RandomLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"RandomLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GForceLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"GForceLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ForceLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"ForceLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CircularLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"CircularLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DagreLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"DagreLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RadialLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"RadialLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConcentricLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"ConcentricLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MDSLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"MDSLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"FruchtermanLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanGPULayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"FruchtermanGPULayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GForceGPULayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"GForceGPULayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ComboForceLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"ComboForceLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ForceAtlas2Layout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"ForceAtlas2Layout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ERLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"ERLayout\"]; });\n\n\n// register layout\n\n// layout, layout types file, worker\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2luZGV4LmpzPzMyZDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBOEU7QUFDOUU7QUFDNkQ7QUFDN0Q7QUFDeUI7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXJMYXlvdXQsIHVuUmVnaXN0ZXJMYXlvdXQsIGdldExheW91dEJ5TmFtZSB9IGZyb20gXCIuL3JlZ2lzdHlcIjtcbi8vIHJlZ2lzdGVyIGxheW91dFxuZXhwb3J0IHsgcmVnaXN0ZXJMYXlvdXQsIHVuUmVnaXN0ZXJMYXlvdXQsIGdldExheW91dEJ5TmFtZSB9O1xuLy8gbGF5b3V0LCBsYXlvdXQgdHlwZXMgZmlsZSwgd29ya2VyXG5leHBvcnQgKiBmcm9tIFwiLi9sYXlvdXRcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/base.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/base.js ***! \*****************************************************/ /*! exports provided: Base */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return Base; });\nclass Base {\n constructor() {\n this.nodes = [];\n this.edges = [];\n this.combos = [];\n this.positions = [];\n this.destroyed = false;\n this.onLayoutEnd = () => { };\n }\n layout(data) {\n this.init(data);\n return this.execute(true);\n }\n init(data) {\n this.nodes = data.nodes || [];\n this.edges = data.edges || [];\n this.combos = data.combos || [];\n }\n execute(reloadData) { }\n executeWithWorker() { }\n getDefaultCfg() {\n return {};\n }\n updateCfg(cfg) {\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n getType() {\n return 'base';\n }\n destroy() {\n this.nodes = null;\n this.edges = null;\n this.combos = null;\n this.positions = null;\n this.destroyed = true;\n }\n}\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9iYXNlLmpzP2JlMDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvYmFzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgICAgIHRoaXMuY29tYm9zID0gW107XG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gW107XG4gICAgICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25MYXlvdXRFbmQgPSAoKSA9PiB7IH07XG4gICAgfVxuICAgIGxheW91dChkYXRhKSB7XG4gICAgICAgIHRoaXMuaW5pdChkYXRhKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZSh0cnVlKTtcbiAgICB9XG4gICAgaW5pdChkYXRhKSB7XG4gICAgICAgIHRoaXMubm9kZXMgPSBkYXRhLm5vZGVzIHx8IFtdO1xuICAgICAgICB0aGlzLmVkZ2VzID0gZGF0YS5lZGdlcyB8fCBbXTtcbiAgICAgICAgdGhpcy5jb21ib3MgPSBkYXRhLmNvbWJvcyB8fCBbXTtcbiAgICB9XG4gICAgZXhlY3V0ZShyZWxvYWREYXRhKSB7IH1cbiAgICBleGVjdXRlV2l0aFdvcmtlcigpIHsgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgdXBkYXRlQ2ZnKGNmZykge1xuICAgICAgICBpZiAoY2ZnKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGNmZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuICdiYXNlJztcbiAgICB9XG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5ub2RlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuZWRnZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbWJvcyA9IG51bGw7XG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gbnVsbDtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/base.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/circular.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/circular.js ***! \*********************************************************/ /*! exports provided: CircularLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CircularLayout\", function() { return CircularLayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\n\nfunction initHierarchy(nodes, edges, nodeMap, directed) {\n nodes.forEach((_, i) => {\n nodes[i].children = [];\n nodes[i].parent = [];\n });\n if (directed) {\n edges.forEach((e) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n let sourceIdx = 0;\n if (source) {\n sourceIdx = nodeMap[source];\n }\n let targetIdx = 0;\n if (target) {\n targetIdx = nodeMap[target];\n }\n const child = nodes[sourceIdx].children;\n const parent = nodes[targetIdx].parent;\n child.push(nodes[targetIdx].id);\n parent.push(nodes[sourceIdx].id);\n });\n }\n else {\n edges.forEach((e) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n let sourceIdx = 0;\n if (source) {\n sourceIdx = nodeMap[source];\n }\n let targetIdx = 0;\n if (target) {\n targetIdx = nodeMap[target];\n }\n const sourceChildren = nodes[sourceIdx].children;\n const targetChildren = nodes[targetIdx].children;\n sourceChildren.push(nodes[targetIdx].id);\n targetChildren.push(nodes[sourceIdx].id);\n });\n }\n}\nfunction connect(a, b, edges) {\n const m = edges.length;\n for (let i = 0; i < m; i++) {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'target');\n if ((a.id === source && b.id === target) ||\n (b.id === source && a.id === target)) {\n return true;\n }\n }\n return false;\n}\nfunction compareDegree(a, b) {\n const aDegree = a.degree;\n const bDegree = b.degree;\n if (aDegree < bDegree) {\n return -1;\n }\n if (aDegree > bDegree) {\n return 1;\n }\n return 0;\n}\n/**\n * 圆形布局\n */\nclass CircularLayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 固定半径,若设置了 radius,则 startRadius 与 endRadius 不起效 */\n this.radius = null;\n /** 起始半径 */\n this.startRadius = null;\n /** 终止半径 */\n this.endRadius = null;\n /** 起始角度 */\n this.startAngle = 0;\n /** 终止角度 */\n this.endAngle = 2 * Math.PI;\n /** 是否顺时针 */\n this.clockwise = true;\n /** 节点在环上分成段数(几个段将均匀分布),在 endRadius - startRadius != 0 时生效 */\n this.divisions = 1;\n /** 节点在环上排序的依据,可选: 'topology', 'degree', 'null' */\n this.ordering = null;\n /** how many 2*pi from first to last nodes */\n this.angleRatio = 1;\n this.nodes = [];\n this.edges = [];\n this.nodeMap = {};\n this.degrees = [];\n this.width = 300;\n this.height = 300;\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n radius: null,\n startRadius: null,\n endRadius: null,\n startAngle: 0,\n endAngle: 2 * Math.PI,\n clockwise: true,\n divisions: 1,\n ordering: null,\n angleRatio: 1\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const n = nodes.length;\n if (n === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (n === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n let radius = self.radius;\n let startRadius = self.startRadius;\n let endRadius = self.endRadius;\n const divisions = self.divisions;\n const startAngle = self.startAngle;\n const endAngle = self.endAngle;\n const angleStep = (endAngle - startAngle) / n;\n // layout\n const nodeMap = {};\n nodes.forEach((node, i) => {\n nodeMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n const degrees = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getDegree\"])(nodes.length, nodeMap, edges);\n self.degrees = degrees;\n if (!radius && !startRadius && !endRadius) {\n radius = self.height > self.width ? self.width / 2 : self.height / 2;\n }\n else if (!startRadius && endRadius) {\n startRadius = endRadius;\n }\n else if (startRadius && !endRadius) {\n endRadius = startRadius;\n }\n const angleRatio = self.angleRatio;\n const astep = angleStep * angleRatio;\n const ordering = self.ordering;\n let layoutNodes = [];\n if (ordering === \"topology\") {\n // layout according to the topology\n layoutNodes = self.topologyOrdering();\n }\n else if (ordering === \"topology-directed\") {\n // layout according to the topology\n layoutNodes = self.topologyOrdering(true);\n }\n else if (ordering === \"degree\") {\n // layout according to the descent order of degrees\n layoutNodes = self.degreeOrdering();\n }\n else {\n // layout according to the original order in the data.nodes\n layoutNodes = nodes;\n }\n const clockwise = self.clockwise;\n const divN = Math.ceil(n / divisions); // node number in each division\n for (let i = 0; i < n; ++i) {\n let r = radius;\n if (!r && startRadius !== null && endRadius !== null) {\n r = startRadius + (i * (endRadius - startRadius)) / (n - 1);\n }\n if (!r) {\n r = 10 + (i * 100) / (n - 1);\n }\n let angle = startAngle +\n (i % divN) * astep +\n ((2 * Math.PI) / divisions) * Math.floor(i / divN);\n if (!clockwise) {\n angle =\n endAngle -\n (i % divN) * astep -\n ((2 * Math.PI) / divisions) * Math.floor(i / divN);\n }\n layoutNodes[i].x = center[0] + Math.cos(angle) * r;\n layoutNodes[i].y = center[1] + Math.sin(angle) * r;\n layoutNodes[i].weight = degrees[i];\n }\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes: layoutNodes,\n edges: this.edges\n };\n }\n /**\n * 根据节点的拓扑结构排序\n * @return {array} orderedNodes 排序后的结果\n */\n topologyOrdering(directed = false) {\n const self = this;\n const degrees = self.degrees;\n const edges = self.edges;\n const nodes = self.nodes;\n const cnodes = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(nodes);\n const nodeMap = self.nodeMap;\n const orderedCNodes = [cnodes[0]];\n const resNodes = [nodes[0]];\n const pickFlags = [];\n const n = nodes.length;\n pickFlags[0] = true;\n initHierarchy(cnodes, edges, nodeMap, directed);\n let k = 0;\n cnodes.forEach((cnode, i) => {\n if (i !== 0) {\n if ((i === n - 1 ||\n degrees[i] !== degrees[i + 1] ||\n connect(orderedCNodes[k], cnode, edges)) &&\n !pickFlags[i]) {\n orderedCNodes.push(cnode);\n resNodes.push(nodes[nodeMap[cnode.id]]);\n pickFlags[i] = true;\n k++;\n }\n else {\n const children = orderedCNodes[k].children;\n let foundChild = false;\n for (let j = 0; j < children.length; j++) {\n const childIdx = nodeMap[children[j]];\n if (degrees[childIdx] === degrees[i] && !pickFlags[childIdx]) {\n orderedCNodes.push(cnodes[childIdx]);\n resNodes.push(nodes[nodeMap[cnodes[childIdx].id]]);\n pickFlags[childIdx] = true;\n foundChild = true;\n break;\n }\n }\n let ii = 0;\n while (!foundChild) {\n if (!pickFlags[ii]) {\n orderedCNodes.push(cnodes[ii]);\n resNodes.push(nodes[nodeMap[cnodes[ii].id]]);\n pickFlags[ii] = true;\n foundChild = true;\n }\n ii++;\n if (ii === n) {\n break;\n }\n }\n }\n }\n });\n return resNodes;\n }\n /**\n * 根据节点度数大小排序\n * @return {array} orderedNodes 排序后的结果\n */\n degreeOrdering() {\n const self = this;\n const nodes = self.nodes;\n const orderedNodes = [];\n const degrees = self.degrees;\n nodes.forEach((node, i) => {\n node.degree = degrees[i];\n orderedNodes.push(node);\n });\n orderedNodes.sort(compareDegree);\n return orderedNodes;\n }\n getType() {\n return \"circular\";\n }\n}\n//# sourceMappingURL=circular.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9jaXJjdWxhci5qcz9hY2IwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDOEI7QUFDOEI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLDJCQUEyQiw2REFBZTtBQUMxQywyQkFBMkIsNkRBQWU7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw2REFBZTtBQUMxQywyQkFBMkIsNkRBQWU7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIsdUJBQXVCLDZEQUFlO0FBQ3RDLHVCQUF1Qiw2REFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyw2QkFBNkIsMENBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSx3QkFBd0IsdURBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUMsdUJBQXVCLE9BQU87QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixNQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixtREFBSztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxxQkFBcUI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE1BQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9jaXJjdWxhci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyByYW5kb20gbGF5b3V0XG4gKiBAYXV0aG9yIHNoaXd1Lnd5eUBhbnRmaW4uY29tXG4gKi9cbmltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi9iYXNlXCI7XG5pbXBvcnQgeyBnZXREZWdyZWUsIGNsb25lLCBnZXRFZGdlVGVybWluYWwgfSBmcm9tIFwiLi4vdXRpbFwiO1xuZnVuY3Rpb24gaW5pdEhpZXJhcmNoeShub2RlcywgZWRnZXMsIG5vZGVNYXAsIGRpcmVjdGVkKSB7XG4gICAgbm9kZXMuZm9yRWFjaCgoXywgaSkgPT4ge1xuICAgICAgICBub2Rlc1tpXS5jaGlsZHJlbiA9IFtdO1xuICAgICAgICBub2Rlc1tpXS5wYXJlbnQgPSBbXTtcbiAgICB9KTtcbiAgICBpZiAoZGlyZWN0ZWQpIHtcbiAgICAgICAgZWRnZXMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gZ2V0RWRnZVRlcm1pbmFsKGUsICdzb3VyY2UnKTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGdldEVkZ2VUZXJtaW5hbChlLCAndGFyZ2V0Jyk7XG4gICAgICAgICAgICBsZXQgc291cmNlSWR4ID0gMDtcbiAgICAgICAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICBzb3VyY2VJZHggPSBub2RlTWFwW3NvdXJjZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdGFyZ2V0SWR4ID0gMDtcbiAgICAgICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRJZHggPSBub2RlTWFwW3RhcmdldF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGVzW3NvdXJjZUlkeF0uY2hpbGRyZW47XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBub2Rlc1t0YXJnZXRJZHhdLnBhcmVudDtcbiAgICAgICAgICAgIGNoaWxkLnB1c2gobm9kZXNbdGFyZ2V0SWR4XS5pZCk7XG4gICAgICAgICAgICBwYXJlbnQucHVzaChub2Rlc1tzb3VyY2VJZHhdLmlkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBlZGdlcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGUsICd0YXJnZXQnKTtcbiAgICAgICAgICAgIGxldCBzb3VyY2VJZHggPSAwO1xuICAgICAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHNvdXJjZUlkeCA9IG5vZGVNYXBbc291cmNlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0YXJnZXRJZHggPSAwO1xuICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgICAgIHRhcmdldElkeCA9IG5vZGVNYXBbdGFyZ2V0XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUNoaWxkcmVuID0gbm9kZXNbc291cmNlSWR4XS5jaGlsZHJlbjtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldENoaWxkcmVuID0gbm9kZXNbdGFyZ2V0SWR4XS5jaGlsZHJlbjtcbiAgICAgICAgICAgIHNvdXJjZUNoaWxkcmVuLnB1c2gobm9kZXNbdGFyZ2V0SWR4XS5pZCk7XG4gICAgICAgICAgICB0YXJnZXRDaGlsZHJlbi5wdXNoKG5vZGVzW3NvdXJjZUlkeF0uaWQpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBjb25uZWN0KGEsIGIsIGVkZ2VzKSB7XG4gICAgY29uc3QgbSA9IGVkZ2VzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFZGdlVGVybWluYWwoZWRnZXNbaV0sICdzb3VyY2UnKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGVkZ2VzW2ldLCAndGFyZ2V0Jyk7XG4gICAgICAgIGlmICgoYS5pZCA9PT0gc291cmNlICYmIGIuaWQgPT09IHRhcmdldCkgfHxcbiAgICAgICAgICAgIChiLmlkID09PSBzb3VyY2UgJiYgYS5pZCA9PT0gdGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gY29tcGFyZURlZ3JlZShhLCBiKSB7XG4gICAgY29uc3QgYURlZ3JlZSA9IGEuZGVncmVlO1xuICAgIGNvbnN0IGJEZWdyZWUgPSBiLmRlZ3JlZTtcbiAgICBpZiAoYURlZ3JlZSA8IGJEZWdyZWUpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoYURlZ3JlZSA+IGJEZWdyZWUpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuLyoqXG4gKiDlnIblvaLluIPlsYBcbiAqL1xuZXhwb3J0IGNsYXNzIENpcmN1bGFyTGF5b3V0IGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvKiog5Zu65a6a5Y2K5b6E77yM6Iul6K6+572u5LqGIHJhZGl1c++8jOWImSBzdGFydFJhZGl1cyDkuI4gZW5kUmFkaXVzIOS4jei1t+aViCAqL1xuICAgICAgICB0aGlzLnJhZGl1cyA9IG51bGw7XG4gICAgICAgIC8qKiDotbflp4vljYrlvoQgKi9cbiAgICAgICAgdGhpcy5zdGFydFJhZGl1cyA9IG51bGw7XG4gICAgICAgIC8qKiDnu4jmraLljYrlvoQgKi9cbiAgICAgICAgdGhpcy5lbmRSYWRpdXMgPSBudWxsO1xuICAgICAgICAvKiog6LW35aeL6KeS5bqmICovXG4gICAgICAgIHRoaXMuc3RhcnRBbmdsZSA9IDA7XG4gICAgICAgIC8qKiDnu4jmraLop5LluqYgKi9cbiAgICAgICAgdGhpcy5lbmRBbmdsZSA9IDIgKiBNYXRoLlBJO1xuICAgICAgICAvKiog5piv5ZCm6aG65pe26ZKIICovXG4gICAgICAgIHRoaXMuY2xvY2t3aXNlID0gdHJ1ZTtcbiAgICAgICAgLyoqIOiKgueCueWcqOeOr+S4iuWIhuaIkOauteaVsO+8iOWHoOS4quauteWwhuWdh+WMgOWIhuW4g++8ie+8jOWcqCBlbmRSYWRpdXMgLSBzdGFydFJhZGl1cyAhPSAwIOaXtueUn+aViCAqL1xuICAgICAgICB0aGlzLmRpdmlzaW9ucyA9IDE7XG4gICAgICAgIC8qKiDoioLngrnlnKjnjq/kuIrmjpLluo/nmoTkvp3mja7vvIzlj6/pgIk6ICd0b3BvbG9neScsICdkZWdyZWUnLCAnbnVsbCcgKi9cbiAgICAgICAgdGhpcy5vcmRlcmluZyA9IG51bGw7XG4gICAgICAgIC8qKiBob3cgbWFueSAyKnBpIGZyb20gZmlyc3QgdG8gbGFzdCBub2RlcyAqL1xuICAgICAgICB0aGlzLmFuZ2xlUmF0aW8gPSAxO1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgdGhpcy5ub2RlTWFwID0ge307XG4gICAgICAgIHRoaXMuZGVncmVlcyA9IFtdO1xuICAgICAgICB0aGlzLndpZHRoID0gMzAwO1xuICAgICAgICB0aGlzLmhlaWdodCA9IDMwMDtcbiAgICAgICAgdGhpcy51cGRhdGVDZmcob3B0aW9ucyk7XG4gICAgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByYWRpdXM6IG51bGwsXG4gICAgICAgICAgICBzdGFydFJhZGl1czogbnVsbCxcbiAgICAgICAgICAgIGVuZFJhZGl1czogbnVsbCxcbiAgICAgICAgICAgIHN0YXJ0QW5nbGU6IDAsXG4gICAgICAgICAgICBlbmRBbmdsZTogMiAqIE1hdGguUEksXG4gICAgICAgICAgICBjbG9ja3dpc2U6IHRydWUsXG4gICAgICAgICAgICBkaXZpc2lvbnM6IDEsXG4gICAgICAgICAgICBvcmRlcmluZzogbnVsbCxcbiAgICAgICAgICAgIGFuZ2xlUmF0aW86IDFcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5omn6KGM5biD5bGAXG4gICAgICovXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgY29uc3QgZWRnZXMgPSBzZWxmLmVkZ2VzO1xuICAgICAgICBjb25zdCBuID0gbm9kZXMubGVuZ3RoO1xuICAgICAgICBpZiAobiA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi53aWR0aCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzZWxmLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLmhlaWdodCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzZWxmLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYuY2VudGVyKSB7XG4gICAgICAgICAgICBzZWxmLmNlbnRlciA9IFtzZWxmLndpZHRoIC8gMiwgc2VsZi5oZWlnaHQgLyAyXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZW50ZXIgPSBzZWxmLmNlbnRlcjtcbiAgICAgICAgaWYgKG4gPT09IDEpIHtcbiAgICAgICAgICAgIG5vZGVzWzBdLnggPSBjZW50ZXJbMF07XG4gICAgICAgICAgICBub2Rlc1swXS55ID0gY2VudGVyWzFdO1xuICAgICAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCByYWRpdXMgPSBzZWxmLnJhZGl1cztcbiAgICAgICAgbGV0IHN0YXJ0UmFkaXVzID0gc2VsZi5zdGFydFJhZGl1cztcbiAgICAgICAgbGV0IGVuZFJhZGl1cyA9IHNlbGYuZW5kUmFkaXVzO1xuICAgICAgICBjb25zdCBkaXZpc2lvbnMgPSBzZWxmLmRpdmlzaW9ucztcbiAgICAgICAgY29uc3Qgc3RhcnRBbmdsZSA9IHNlbGYuc3RhcnRBbmdsZTtcbiAgICAgICAgY29uc3QgZW5kQW5nbGUgPSBzZWxmLmVuZEFuZ2xlO1xuICAgICAgICBjb25zdCBhbmdsZVN0ZXAgPSAoZW5kQW5nbGUgLSBzdGFydEFuZ2xlKSAvIG47XG4gICAgICAgIC8vIGxheW91dFxuICAgICAgICBjb25zdCBub2RlTWFwID0ge307XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5ub2RlTWFwID0gbm9kZU1hcDtcbiAgICAgICAgY29uc3QgZGVncmVlcyA9IGdldERlZ3JlZShub2Rlcy5sZW5ndGgsIG5vZGVNYXAsIGVkZ2VzKTtcbiAgICAgICAgc2VsZi5kZWdyZWVzID0gZGVncmVlcztcbiAgICAgICAgaWYgKCFyYWRpdXMgJiYgIXN0YXJ0UmFkaXVzICYmICFlbmRSYWRpdXMpIHtcbiAgICAgICAgICAgIHJhZGl1cyA9IHNlbGYuaGVpZ2h0ID4gc2VsZi53aWR0aCA/IHNlbGYud2lkdGggLyAyIDogc2VsZi5oZWlnaHQgLyAyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFzdGFydFJhZGl1cyAmJiBlbmRSYWRpdXMpIHtcbiAgICAgICAgICAgIHN0YXJ0UmFkaXVzID0gZW5kUmFkaXVzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXJ0UmFkaXVzICYmICFlbmRSYWRpdXMpIHtcbiAgICAgICAgICAgIGVuZFJhZGl1cyA9IHN0YXJ0UmFkaXVzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFuZ2xlUmF0aW8gPSBzZWxmLmFuZ2xlUmF0aW87XG4gICAgICAgIGNvbnN0IGFzdGVwID0gYW5nbGVTdGVwICogYW5nbGVSYXRpbztcbiAgICAgICAgY29uc3Qgb3JkZXJpbmcgPSBzZWxmLm9yZGVyaW5nO1xuICAgICAgICBsZXQgbGF5b3V0Tm9kZXMgPSBbXTtcbiAgICAgICAgaWYgKG9yZGVyaW5nID09PSBcInRvcG9sb2d5XCIpIHtcbiAgICAgICAgICAgIC8vIGxheW91dCBhY2NvcmRpbmcgdG8gdGhlIHRvcG9sb2d5XG4gICAgICAgICAgICBsYXlvdXROb2RlcyA9IHNlbGYudG9wb2xvZ3lPcmRlcmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9yZGVyaW5nID09PSBcInRvcG9sb2d5LWRpcmVjdGVkXCIpIHtcbiAgICAgICAgICAgIC8vIGxheW91dCBhY2NvcmRpbmcgdG8gdGhlIHRvcG9sb2d5XG4gICAgICAgICAgICBsYXlvdXROb2RlcyA9IHNlbGYudG9wb2xvZ3lPcmRlcmluZyh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcmRlcmluZyA9PT0gXCJkZWdyZWVcIikge1xuICAgICAgICAgICAgLy8gbGF5b3V0IGFjY29yZGluZyB0byB0aGUgZGVzY2VudCBvcmRlciBvZiBkZWdyZWVzXG4gICAgICAgICAgICBsYXlvdXROb2RlcyA9IHNlbGYuZGVncmVlT3JkZXJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGxheW91dCBhY2NvcmRpbmcgdG8gdGhlIG9yaWdpbmFsIG9yZGVyIGluIHRoZSBkYXRhLm5vZGVzXG4gICAgICAgICAgICBsYXlvdXROb2RlcyA9IG5vZGVzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsb2Nrd2lzZSA9IHNlbGYuY2xvY2t3aXNlO1xuICAgICAgICBjb25zdCBkaXZOID0gTWF0aC5jZWlsKG4gLyBkaXZpc2lvbnMpOyAvLyBub2RlIG51bWJlciBpbiBlYWNoIGRpdmlzaW9uXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICAgICAgICBsZXQgciA9IHJhZGl1cztcbiAgICAgICAgICAgIGlmICghciAmJiBzdGFydFJhZGl1cyAhPT0gbnVsbCAmJiBlbmRSYWRpdXMgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByID0gc3RhcnRSYWRpdXMgKyAoaSAqIChlbmRSYWRpdXMgLSBzdGFydFJhZGl1cykpIC8gKG4gLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcikge1xuICAgICAgICAgICAgICAgIHIgPSAxMCArIChpICogMTAwKSAvIChuIC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgYW5nbGUgPSBzdGFydEFuZ2xlICtcbiAgICAgICAgICAgICAgICAoaSAlIGRpdk4pICogYXN0ZXAgK1xuICAgICAgICAgICAgICAgICgoMiAqIE1hdGguUEkpIC8gZGl2aXNpb25zKSAqIE1hdGguZmxvb3IoaSAvIGRpdk4pO1xuICAgICAgICAgICAgaWYgKCFjbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICBhbmdsZSA9XG4gICAgICAgICAgICAgICAgICAgIGVuZEFuZ2xlIC1cbiAgICAgICAgICAgICAgICAgICAgICAgIChpICUgZGl2TikgKiBhc3RlcCAtXG4gICAgICAgICAgICAgICAgICAgICAgICAoKDIgKiBNYXRoLlBJKSAvIGRpdmlzaW9ucykgKiBNYXRoLmZsb29yKGkgLyBkaXZOKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxheW91dE5vZGVzW2ldLnggPSBjZW50ZXJbMF0gKyBNYXRoLmNvcyhhbmdsZSkgKiByO1xuICAgICAgICAgICAgbGF5b3V0Tm9kZXNbaV0ueSA9IGNlbnRlclsxXSArIE1hdGguc2luKGFuZ2xlKSAqIHI7XG4gICAgICAgICAgICBsYXlvdXROb2Rlc1tpXS53ZWlnaHQgPSBkZWdyZWVzW2ldO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZXM6IGxheW91dE5vZGVzLFxuICAgICAgICAgICAgZWRnZXM6IHRoaXMuZWRnZXNcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5qC55o2u6IqC54K555qE5ouT5omR57uT5p6E5o6S5bqPXG4gICAgICogQHJldHVybiB7YXJyYXl9IG9yZGVyZWROb2RlcyDmjpLluo/lkI7nmoTnu5PmnpxcbiAgICAgKi9cbiAgICB0b3BvbG9neU9yZGVyaW5nKGRpcmVjdGVkID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGRlZ3JlZXMgPSBzZWxmLmRlZ3JlZXM7XG4gICAgICAgIGNvbnN0IGVkZ2VzID0gc2VsZi5lZGdlcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBjbm9kZXMgPSBjbG9uZShub2Rlcyk7XG4gICAgICAgIGNvbnN0IG5vZGVNYXAgPSBzZWxmLm5vZGVNYXA7XG4gICAgICAgIGNvbnN0IG9yZGVyZWRDTm9kZXMgPSBbY25vZGVzWzBdXTtcbiAgICAgICAgY29uc3QgcmVzTm9kZXMgPSBbbm9kZXNbMF1dO1xuICAgICAgICBjb25zdCBwaWNrRmxhZ3MgPSBbXTtcbiAgICAgICAgY29uc3QgbiA9IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgcGlja0ZsYWdzWzBdID0gdHJ1ZTtcbiAgICAgICAgaW5pdEhpZXJhcmNoeShjbm9kZXMsIGVkZ2VzLCBub2RlTWFwLCBkaXJlY3RlZCk7XG4gICAgICAgIGxldCBrID0gMDtcbiAgICAgICAgY25vZGVzLmZvckVhY2goKGNub2RlLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmICgoaSA9PT0gbiAtIDEgfHxcbiAgICAgICAgICAgICAgICAgICAgZGVncmVlc1tpXSAhPT0gZGVncmVlc1tpICsgMV0gfHxcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdChvcmRlcmVkQ05vZGVzW2tdLCBjbm9kZSwgZWRnZXMpKSAmJlxuICAgICAgICAgICAgICAgICAgICAhcGlja0ZsYWdzW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIG9yZGVyZWRDTm9kZXMucHVzaChjbm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc05vZGVzLnB1c2gobm9kZXNbbm9kZU1hcFtjbm9kZS5pZF1dKTtcbiAgICAgICAgICAgICAgICAgICAgcGlja0ZsYWdzW2ldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBvcmRlcmVkQ05vZGVzW2tdLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmRDaGlsZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNoaWxkcmVuLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZElkeCA9IG5vZGVNYXBbY2hpbGRyZW5bal1dO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZ3JlZXNbY2hpbGRJZHhdID09PSBkZWdyZWVzW2ldICYmICFwaWNrRmxhZ3NbY2hpbGRJZHhdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJlZENOb2Rlcy5wdXNoKGNub2Rlc1tjaGlsZElkeF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc05vZGVzLnB1c2gobm9kZXNbbm9kZU1hcFtjbm9kZXNbY2hpbGRJZHhdLmlkXV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tGbGFnc1tjaGlsZElkeF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kQ2hpbGQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxldCBpaSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICghZm91bmRDaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwaWNrRmxhZ3NbaWldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJlZENOb2Rlcy5wdXNoKGNub2Rlc1tpaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc05vZGVzLnB1c2gobm9kZXNbbm9kZU1hcFtjbm9kZXNbaWldLmlkXV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tGbGFnc1tpaV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kQ2hpbGQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWkrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpaSA9PT0gbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc05vZGVzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmoLnmja7oioLngrnluqbmlbDlpKflsI/mjpLluo9cbiAgICAgKiBAcmV0dXJuIHthcnJheX0gb3JkZXJlZE5vZGVzIOaOkuW6j+WQjueahOe7k+aenFxuICAgICAqL1xuICAgIGRlZ3JlZU9yZGVyaW5nKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBvcmRlcmVkTm9kZXMgPSBbXTtcbiAgICAgICAgY29uc3QgZGVncmVlcyA9IHNlbGYuZGVncmVlcztcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgbm9kZS5kZWdyZWUgPSBkZWdyZWVzW2ldO1xuICAgICAgICAgICAgb3JkZXJlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBvcmRlcmVkTm9kZXMuc29ydChjb21wYXJlRGVncmVlKTtcbiAgICAgICAgcmV0dXJuIG9yZGVyZWROb2RlcztcbiAgICB9XG4gICAgZ2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIFwiY2lyY3VsYXJcIjtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jaXJjdWxhci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/circular.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/comboForce.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/comboForce.js ***! \***********************************************************/ /*! exports provided: ComboForceLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ComboForceLayout\", function() { return ComboForceLayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/**\n * @fileOverview Combo force layout\n * @author shiwu.wyy@antfin.com\n */\n\n\n/**\n * force layout for graph with combos\n */\nclass ComboForceLayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 布局中心 */\n this.center = [0, 0];\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 100;\n /** 重力大小,影响图的紧凑程度 */\n this.gravity = 10;\n /** 群组中心力大小 */\n this.comboGravity = 10;\n /** 默认边长度 */\n this.linkDistance = 10;\n /** 每次迭代位移的衰减相关参数 */\n this.alpha = 1;\n this.alphaMin = 0.001;\n this.alphaDecay = 1 - Math.pow(this.alphaMin, (1 / 300));\n this.alphaTarget = 0;\n /** 节点运动速度衰减参数 */\n this.velocityDecay = 0.6;\n /** 边引力大小 */\n this.edgeStrength = 0.6;\n /** 节点引力大小 */\n this.nodeStrength = 30;\n /** 是否开启防止重叠 */\n this.preventOverlap = false;\n /** 是否开启节点之间的防止重叠 */\n this.preventNodeOverlap = false;\n /** 是否开启 Combo 之间的防止重叠 */\n this.preventComboOverlap = false;\n /** 防止重叠的碰撞力大小 */\n this.collideStrength = undefined;\n /** 防止重叠的碰撞力大小 */\n this.nodeCollideStrength = 0.5;\n /** 防止重叠的碰撞力大小 */\n this.comboCollideStrength = 0.5;\n /** Combo 最小间距,防止重叠时的间隙 */\n this.comboSpacing = 20;\n /** Combo 内部的 padding */\n this.comboPadding = 10;\n /** 优化计算斥力的速度,两节点间距超过 optimizeRangeFactor * width 则不再计算斥力和重叠斥力 */\n this.optimizeRangeFactor = 1;\n /** 每次迭代的回调函数 */\n this.onTick = () => { };\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n /** 根据边两端节点层级差距的调整引力系数的因子,取值范围 [0, 1]。层级差距越大,引力越小 */\n this.depthAttractiveForceScale = 1;\n /** 根据边两端节点层级差距的调整斥力系数的因子,取值范围 [1, Infinity]。层级差距越大,斥力越大 */\n this.depthRepulsiveForceScale = 2;\n /** 内部计算参数 */\n this.nodes = [];\n this.edges = [];\n this.combos = [];\n this.comboTrees = [];\n this.width = 300;\n this.height = 300;\n this.bias = [];\n this.nodeMap = {};\n this.oriComboMap = {};\n this.indexMap = {};\n this.comboMap = {};\n this.previousLayouted = false;\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 100,\n center: [0, 0],\n gravity: 10,\n speed: 1,\n comboGravity: 30,\n preventOverlap: false,\n preventComboOverlap: true,\n preventNodeOverlap: true,\n nodeSpacing: undefined,\n collideStrength: undefined,\n nodeCollideStrength: 0.5,\n comboCollideStrength: 0.5,\n comboSpacing: 20,\n comboPadding: 10,\n edgeStrength: 0.6,\n nodeStrength: 30,\n linkDistance: 10\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const center = self.center;\n self.comboTree = {\n id: \"comboTreeRoot\",\n depth: -1,\n children: self.comboTrees\n };\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n self.initVals();\n // layout\n self.run();\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n }\n run() {\n const self = this;\n const nodes = self.nodes;\n const maxIteration = self.previousLayouted\n ? self.maxIteration / 5\n : self.maxIteration;\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n const center = self.center;\n const velocityDecay = self.velocityDecay;\n // init the positions to make the nodes with same combo gather around the combo\n const comboMap = self.comboMap;\n if (!self.previousLayouted)\n self.initPos(comboMap);\n // iterate\n for (let i = 0; i < maxIteration; i++) {\n const displacements = [];\n nodes.forEach((_, j) => {\n displacements[j] = { x: 0, y: 0 };\n });\n self.applyCalculate(displacements);\n // gravity for combos\n self.applyComboCenterForce(displacements);\n // move\n nodes.forEach((n, j) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n n.x += displacements[j].x * velocityDecay;\n n.y += displacements[j].y * velocityDecay;\n });\n self.alpha += (self.alphaTarget - self.alpha) * self.alphaDecay;\n self.onTick();\n }\n // move to center\n const meanCenter = [0, 0];\n nodes.forEach((n) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n meanCenter[0] += n.x;\n meanCenter[1] += n.y;\n });\n meanCenter[0] /= nodes.length;\n meanCenter[1] /= nodes.length;\n const centerOffset = [center[0] - meanCenter[0], center[1] - meanCenter[1]];\n nodes.forEach((n, j) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n n.x += centerOffset[0];\n n.y += centerOffset[1];\n });\n // arrange the empty combo\n self.combos.forEach((combo) => {\n const mapped = comboMap[combo.id];\n if (mapped && mapped.empty) {\n combo.x = mapped.cx || combo.x;\n combo.y = mapped.cy || combo.y;\n }\n });\n self.previousLayouted = true;\n }\n initVals() {\n const self = this;\n const edges = self.edges;\n const nodes = self.nodes;\n const combos = self.combos;\n const count = {};\n const nodeMap = {};\n const indexMap = {};\n nodes.forEach((node, i) => {\n nodeMap[node.id] = node;\n indexMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.indexMap = indexMap;\n const oriComboMap = {};\n combos.forEach((combo) => {\n oriComboMap[combo.id] = combo;\n });\n self.oriComboMap = oriComboMap;\n self.comboMap = self.getComboMap();\n const preventOverlap = self.preventOverlap;\n self.preventComboOverlap = self.preventComboOverlap || preventOverlap;\n self.preventNodeOverlap = self.preventNodeOverlap || preventOverlap;\n const collideStrength = self.collideStrength;\n if (collideStrength) {\n self.comboCollideStrength = collideStrength;\n self.nodeCollideStrength = collideStrength;\n }\n self.comboCollideStrength = self.comboCollideStrength\n ? self.comboCollideStrength\n : 0;\n self.nodeCollideStrength = self.nodeCollideStrength\n ? self.nodeCollideStrength\n : 0;\n // get edge bias\n for (let i = 0; i < edges.length; ++i) {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'target');\n if (count[source])\n count[source]++;\n else\n count[source] = 1;\n if (count[target])\n count[target]++;\n else\n count[target] = 1;\n }\n const bias = [];\n for (let i = 0; i < edges.length; ++i) {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'target');\n bias[i] = count[source] / (count[source] + count[target]);\n }\n this.bias = bias;\n const nodeSize = self.nodeSize;\n const nodeSpacing = self.nodeSpacing;\n let nodeSizeFunc;\n let nodeSpacingFunc;\n // nodeSpacing to function\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n }\n else {\n nodeSpacingFunc = () => 0;\n }\n this.nodeSpacing = nodeSpacingFunc;\n // nodeSize to function\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return res / 2;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return res / 2;\n }\n return d.size / 2;\n }\n return 10;\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(nodeSize)) {\n nodeSizeFunc = (d) => {\n return nodeSize(d);\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(nodeSize)) {\n const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n const radius = larger / 2;\n nodeSizeFunc = (d) => radius;\n }\n else {\n // number type\n const radius = nodeSize / 2;\n nodeSizeFunc = (d) => radius;\n }\n this.nodeSize = nodeSizeFunc;\n // comboSpacing to function\n const comboSpacing = self.comboSpacing;\n let comboSpacingFunc;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(comboSpacing)) {\n comboSpacingFunc = () => comboSpacing;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(comboSpacing)) {\n comboSpacingFunc = comboSpacing;\n }\n else {\n // null type\n comboSpacingFunc = () => 0;\n }\n this.comboSpacing = comboSpacingFunc;\n // comboPadding to function\n const comboPadding = self.comboPadding;\n let comboPaddingFunc;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(comboPadding)) {\n comboPaddingFunc = () => comboPadding;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(comboPadding)) {\n comboPaddingFunc = () => Math.max.apply(null, comboPadding);\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(comboPadding)) {\n comboPaddingFunc = comboPadding;\n }\n else {\n // null type\n comboPaddingFunc = () => 0;\n }\n this.comboPadding = comboPaddingFunc;\n // linkDistance to function\n let linkDistance = this.linkDistance;\n let linkDistanceFunc;\n if (!linkDistance) {\n linkDistance = 10;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(linkDistance)) {\n linkDistanceFunc = (d) => {\n return linkDistance;\n };\n }\n else {\n linkDistanceFunc = linkDistance;\n }\n this.linkDistance = linkDistanceFunc;\n // linkStrength to function\n let edgeStrength = this.edgeStrength;\n let edgeStrengthFunc;\n if (!edgeStrength) {\n edgeStrength = 1;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(edgeStrength)) {\n edgeStrengthFunc = (d) => {\n return edgeStrength;\n };\n }\n else {\n edgeStrengthFunc = edgeStrength;\n }\n this.edgeStrength = edgeStrengthFunc;\n // nodeStrength to function\n let nodeStrength = this.nodeStrength;\n let nodeStrengthFunc;\n if (!nodeStrength) {\n nodeStrength = 30;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(nodeStrength)) {\n nodeStrengthFunc = (d) => {\n return nodeStrength;\n };\n }\n else {\n nodeStrengthFunc = nodeStrength;\n }\n this.nodeStrength = nodeStrengthFunc;\n }\n initPos(comboMap) {\n const self = this;\n const nodes = self.nodes;\n nodes.forEach((node, i) => {\n const comboId = node.comboId;\n const combo = comboMap[comboId];\n if (comboId && combo) {\n node.x = combo.cx + 100 / (i + 1);\n node.y = combo.cy + 100 / (i + 1);\n }\n else {\n node.x = 100 / (i + 1);\n node.y = 100 / (i + 1);\n }\n });\n }\n getComboMap() {\n const self = this;\n const nodeMap = self.nodeMap;\n const comboTrees = self.comboTrees;\n const oriComboMap = self.oriComboMap;\n const comboMap = {};\n (comboTrees || []).forEach((ctree) => {\n const treeChildren = [];\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"traverseTreeUp\"])(ctree, (treeNode) => {\n if (treeNode.itemType === \"node\")\n return true; // skip it\n if (!oriComboMap[treeNode.id])\n return true; // means it is hidden, skip it\n if (comboMap[treeNode.id] === undefined) {\n const combo = {\n id: treeNode.id,\n name: treeNode.id,\n cx: 0,\n cy: 0,\n count: 0,\n depth: self.oriComboMap[treeNode.id].depth || 0,\n children: []\n };\n comboMap[treeNode.id] = combo;\n }\n const children = treeNode.children;\n if (children) {\n children.forEach((child) => {\n if (!comboMap[child.id] && !nodeMap[child.id])\n return true; // means it is hidden\n treeChildren.push(child);\n });\n }\n const c = comboMap[treeNode.id];\n c.cx = 0;\n c.cy = 0;\n if (treeChildren.length === 0) {\n c.empty = true;\n const oriCombo = oriComboMap[treeNode.id];\n c.cx = oriCombo.x;\n c.cy = oriCombo.y;\n }\n treeChildren.forEach((child) => {\n c.count++;\n if (child.itemType !== \"node\") {\n const childCombo = comboMap[child.id];\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(childCombo.cx))\n c.cx += childCombo.cx;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(childCombo.cy))\n c.cy += childCombo.cy;\n return;\n }\n const node = nodeMap[child.id];\n // means the node is hidden, skip it\n if (!node)\n return;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x)) {\n c.cx += node.x;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y)) {\n c.cy += node.y;\n }\n });\n c.cx /= (c.count || 1);\n c.cy /= (c.count || 1);\n c.children = treeChildren;\n return true;\n });\n });\n return comboMap;\n }\n applyComboCenterForce(displacements) {\n const self = this;\n const gravity = self.gravity;\n const comboGravity = self.comboGravity || gravity;\n const alpha = this.alpha;\n const comboTrees = self.comboTrees;\n const indexMap = self.indexMap;\n const nodeMap = self.nodeMap;\n const comboMap = self.comboMap;\n (comboTrees || []).forEach((ctree) => {\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"traverseTreeUp\"])(ctree, (treeNode) => {\n if (treeNode.itemType === \"node\")\n return true; // skip it\n const combo = comboMap[treeNode.id];\n // means the combo is hidden, skip it\n if (!combo)\n return true;\n const c = comboMap[treeNode.id];\n // higher depth the combo, larger the gravity\n const gravityScale = ((c.depth + 1) / 10) * 0.5;\n // apply combo center force for all the descend nodes in this combo\n // and update the center position and count for this combo\n const comboX = c.cx;\n const comboY = c.cy;\n c.cx = 0;\n c.cy = 0;\n c.children.forEach((child) => {\n if (child.itemType !== \"node\") {\n const childCombo = comboMap[child.id];\n if (childCombo && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(childCombo.cx))\n c.cx += childCombo.cx;\n if (childCombo && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(childCombo.cy))\n c.cy += childCombo.cy;\n return;\n }\n const node = nodeMap[child.id];\n const vecX = (node.x - comboX) || 0.005;\n const vecY = (node.y - comboY) || 0.005;\n const l = Math.sqrt(vecX * vecX + vecY * vecY);\n const childIdx = indexMap[node.id];\n const params = ((comboGravity * alpha) / l) * gravityScale;\n displacements[childIdx].x -= vecX * params;\n displacements[childIdx].y -= vecY * params;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n c.cx += node.x;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n c.cy += node.y;\n });\n c.cx /= (c.count || 1);\n c.cy /= (c.count || 1);\n return true;\n });\n });\n }\n applyCalculate(displacements) {\n const self = this;\n const comboMap = self.comboMap;\n const nodes = self.nodes;\n // store the vx, vy, and distance to reduce dulplicate calculation\n const vecMap = {};\n nodes.forEach((v, i) => {\n nodes.forEach((u, j) => {\n if (i < j)\n return;\n const vx = (v.x - u.x) || 0.005;\n const vy = (v.y - u.y) || 0.005;\n let vl2 = vx * vx + vy * vy;\n const vl = Math.sqrt(vl2);\n if (vl2 < 1)\n vl2 = vl;\n vecMap[`${v.id}-${u.id}`] = { vx, vy, vl2, vl };\n vecMap[`${u.id}-${v.id}`] = { vl2, vl, vx: -vx, vy: -vy };\n });\n });\n // get the sizes of the combos\n self.updateComboSizes(comboMap);\n self.calRepulsive(displacements, vecMap);\n self.calAttractive(displacements, vecMap);\n const preventComboOverlap = self.preventComboOverlap;\n if (preventComboOverlap)\n self.comboNonOverlapping(displacements, comboMap);\n }\n /**\n * Update the sizes of the combos according to their children\n * Used for combos nonoverlap, but not re-render the combo shapes\n */\n updateComboSizes(comboMap) {\n const self = this;\n const comboTrees = self.comboTrees;\n const nodeMap = self.nodeMap;\n const nodeSize = self.nodeSize;\n const comboSpacing = self.comboSpacing;\n const comboPadding = self.comboPadding;\n (comboTrees || []).forEach((ctree) => {\n const treeChildren = [];\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"traverseTreeUp\"])(ctree, (treeNode) => {\n if (treeNode.itemType === \"node\")\n return true; // skip it\n const c = comboMap[treeNode.id];\n // means the combo is hidden, skip it\n if (!c)\n return false;\n const children = treeNode.children;\n if (children) {\n children.forEach((child) => {\n // means the combo is hidden.\n if (!comboMap[child.id] && !nodeMap[child.id])\n return;\n treeChildren.push(child);\n });\n }\n c.minX = Infinity;\n c.minY = Infinity;\n c.maxX = -Infinity;\n c.maxY = -Infinity;\n treeChildren.forEach((child) => {\n if (child.itemType !== \"node\")\n return true; // skip it\n const node = nodeMap[child.id];\n if (!node)\n return true; // means it is hidden\n const r = nodeSize(node);\n const nodeMinX = node.x - r;\n const nodeMinY = node.y - r;\n const nodeMaxX = node.x + r;\n const nodeMaxY = node.y + r;\n if (c.minX > nodeMinX)\n c.minX = nodeMinX;\n if (c.minY > nodeMinY)\n c.minY = nodeMinY;\n if (c.maxX < nodeMaxX)\n c.maxX = nodeMaxX;\n if (c.maxY < nodeMaxY)\n c.maxY = nodeMaxY;\n });\n let minSize = self.oriComboMap[treeNode.id].size || 10;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(minSize))\n minSize = minSize[0];\n const maxLength = Math.max(c.maxX - c.minX, c.maxY - c.minY, minSize);\n c.r = maxLength / 2 + comboSpacing(c) / 2 + comboPadding(c);\n return true;\n });\n });\n }\n /**\n * prevent the overlappings among combos\n */\n comboNonOverlapping(displacements, comboMap) {\n const self = this;\n const comboTree = self.comboTree;\n const comboCollideStrength = self.comboCollideStrength;\n const indexMap = self.indexMap;\n const nodeMap = self.nodeMap;\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"traverseTreeUp\"])(comboTree, (treeNode) => {\n if (!comboMap[treeNode.id] &&\n !nodeMap[treeNode.id] &&\n treeNode.id !== \"comboTreeRoot\") {\n return false;\n } // means it is hidden\n const children = treeNode.children;\n // 同个子树下的子 combo 间两两对比\n if (children && children.length > 1) {\n children.forEach((v, i) => {\n if (v.itemType === \"node\")\n return false; // skip it\n const cv = comboMap[v.id];\n if (!cv)\n return; // means it is hidden, skip it\n children.forEach((u, j) => {\n if (i <= j)\n return false;\n if (u.itemType === \"node\")\n return false; // skip it\n const cu = comboMap[u.id];\n if (!cu)\n return false; // means it is hidden, skip it\n const vx = (cv.cx - cu.cx) || 0.005;\n const vy = (cv.cy - cu.cy) || 0.005;\n const l = vx * vx + vy * vy;\n const rv = cv.r || 1;\n const ru = cu.r || 1;\n const r = rv + ru;\n const ru2 = ru * ru;\n const rv2 = rv * rv;\n // overlapping\n if (l < r * r) {\n const vnodes = v.children;\n if (!vnodes || vnodes.length === 0)\n return false; // skip it\n const unodes = u.children;\n if (!unodes || unodes.length === 0)\n return false; // skip it\n const sqrtl = Math.sqrt(l);\n const ll = ((r - sqrtl) / sqrtl) * comboCollideStrength;\n const xl = vx * ll;\n const yl = vy * ll;\n const rratio = ru2 / (rv2 + ru2);\n const irratio = 1 - rratio;\n // 两兄弟 combo 的子节点上施加斥力\n vnodes.forEach((vn) => {\n if (vn.itemType !== \"node\")\n return false; // skip it\n if (!nodeMap[vn.id])\n return; // means it is hidden, skip it\n const vindex = indexMap[vn.id];\n unodes.forEach((un) => {\n if (un.itemType !== \"node\")\n return false;\n if (!nodeMap[un.id])\n return false; // means it is hidden, skip it\n const uindex = indexMap[un.id];\n displacements[vindex].x += xl * rratio;\n displacements[vindex].y += yl * rratio;\n displacements[uindex].x -= xl * irratio;\n displacements[uindex].y -= yl * irratio;\n });\n });\n }\n });\n });\n }\n return true;\n });\n }\n /**\n * Calculate the repulsive force between each node pair\n * @param displacements The array stores the displacements for nodes\n * @param vecMap The map stores vector between each node pair\n */\n calRepulsive(displacements, vecMap) {\n const self = this;\n const nodes = self.nodes;\n const max = self.width * self.optimizeRangeFactor;\n const nodeStrength = self.nodeStrength;\n const alpha = self.alpha;\n const nodeCollideStrength = self.nodeCollideStrength;\n const preventNodeOverlap = self.preventNodeOverlap;\n const nodeSizeFunc = self.nodeSize;\n const nodeSpacingFunc = self.nodeSpacing;\n const scale = self.depthRepulsiveForceScale;\n const center = self.center;\n nodes.forEach((v, i) => {\n if (!v.x || !v.y)\n return;\n // center gravity\n if (center) {\n const gravity = self.gravity;\n const vecX = (v.x - center[0]) || 0.005;\n const vecY = (v.y - center[1]) || 0.005;\n const l = Math.sqrt(vecX * vecX + vecY * vecY);\n displacements[i].x -= (vecX * gravity * alpha) / l;\n displacements[i].y -= (vecY * gravity * alpha) / l;\n }\n nodes.forEach((u, j) => {\n if (i === j) {\n return;\n }\n if (!u.x || !u.y)\n return;\n const { vl2, vl } = vecMap[`${v.id}-${u.id}`];\n if (vl > max)\n return;\n const { vx, vy } = vecMap[`${v.id}-${u.id}`];\n let depthDiff = Math.log(Math.abs(u.depth - v.depth) / 10) + 1 || 1;\n depthDiff = depthDiff < 1 ? 1 : depthDiff;\n if (u.comboId !== v.comboId)\n depthDiff += 1;\n const depthParam = depthDiff ? Math.pow(scale, depthDiff) : 1;\n const params = ((nodeStrength(u) * alpha) / vl2) * depthParam;\n displacements[i].x += vx * params;\n displacements[i].y += vy * params;\n // prevent node overlappings\n if (i < j && preventNodeOverlap) {\n const ri = (nodeSizeFunc(v) + nodeSpacingFunc(v)) || 1;\n const rj = (nodeSizeFunc(u) + nodeSpacingFunc(u)) || 1;\n const r = ri + rj;\n if (vl2 < r * r) {\n const ll = ((r - vl) / vl) * nodeCollideStrength;\n const rj2 = rj * rj;\n let rratio = rj2 / (ri * ri + rj2);\n const xl = vx * ll;\n const yl = vy * ll;\n displacements[i].x += xl * rratio;\n displacements[i].y += yl * rratio;\n rratio = 1 - rratio;\n displacements[j].x -= xl * rratio;\n displacements[j].y -= yl * rratio;\n }\n }\n });\n });\n }\n /**\n * Calculate the attractive force between the node pair with edge\n * @param displacements The array stores the displacements for nodes\n * @param vecMap The map stores vector between each node pair\n */\n calAttractive(displacements, vecMap) {\n const self = this;\n const edges = self.edges;\n const linkDistance = self.linkDistance;\n const alpha = self.alpha;\n const edgeStrength = self.edgeStrength;\n const bias = self.bias;\n const scale = self.depthAttractiveForceScale;\n edges.forEach((e, i) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n if (!source || !target || source === target)\n return;\n const uIndex = self.indexMap[source];\n const vIndex = self.indexMap[target];\n const u = self.nodeMap[source];\n const v = self.nodeMap[target];\n if (!u || !v)\n return;\n let depthDiff = u.depth === v.depth ? 0 : Math.log(Math.abs(u.depth - v.depth) / 10);\n if (u.comboId === v.comboId) {\n depthDiff = depthDiff / 2;\n }\n let depthParam = depthDiff ? Math.pow(scale, depthDiff) : 1;\n if (u.comboId !== v.comboId && depthParam === 1) {\n depthParam = scale / 2;\n }\n else if (u.comboId === v.comboId) {\n depthParam = 2;\n }\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.y) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.y)) {\n return;\n }\n const { vl, vx, vy } = vecMap[`${target}-${source}`];\n const l = ((vl - linkDistance(e)) / vl) * alpha * edgeStrength(e) * depthParam;\n const vecX = vx * l;\n const vecY = vy * l;\n const b = bias[i];\n displacements[vIndex].x -= vecX * b;\n displacements[vIndex].y -= vecY * b;\n displacements[uIndex].x += vecX * (1 - b);\n displacements[uIndex].y += vecY * (1 - b);\n });\n }\n getType() {\n return \"comboForce\";\n }\n}\n//# sourceMappingURL=comboForce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9jb21ib0ZvcmNlLmpzP2ViZmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM4QjtBQUNxRTtBQUNuRztBQUNBO0FBQ0E7QUFDTywrQkFBK0IsMENBQUk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsa0JBQWtCO0FBQ3pDO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVEsVUFBVSxzREFBUTtBQUMvQztBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLFVBQVUsc0RBQVE7QUFDM0M7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLFVBQVUsc0RBQVE7QUFDM0M7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQkFBa0I7QUFDekMsMkJBQTJCLDZEQUFlO0FBQzFDLDJCQUEyQiw2REFBZTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQkFBa0I7QUFDekMsMkJBQTJCLDZEQUFlO0FBQzFDLDJCQUEyQiw2REFBZTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzREFBUTtBQUNwQjtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFVO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHFEQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixzREFBUTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFVO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHFEQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzREFBUTtBQUNwQjtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFVO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzREFBUTtBQUNwQjtBQUNBO0FBQ0EsaUJBQWlCLHFEQUFPO0FBQ3hCO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQVU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw0REFBYztBQUMxQjtBQUNBLGdDQUFnQztBQUNoQztBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHNEQUFRO0FBQ3BDO0FBQ0EsNEJBQTRCLHNEQUFRO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHNEQUFRO0FBQ2hDO0FBQ0E7QUFDQSx3QkFBd0Isc0RBQVE7QUFDaEM7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw0REFBYztBQUMxQjtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxzREFBUTtBQUNsRDtBQUNBLDBDQUEwQyxzREFBUTtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHNEQUFRO0FBQ2hDO0FBQ0Esd0JBQXdCLHNEQUFRO0FBQ2hDO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixLQUFLLEdBQUcsS0FBSyxNQUFNO0FBQzdDLDBCQUEwQixLQUFLLEdBQUcsS0FBSyxNQUFNO0FBQzdDLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw0REFBYztBQUMxQjtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxvQkFBb0IscURBQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw0REFBYztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLDZCQUE2QjtBQUM3QjtBQUNBLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsVUFBVSxhQUFhLEtBQUssR0FBRyxLQUFLO0FBQzNEO0FBQ0E7QUFDQSx1QkFBdUIsU0FBUyxhQUFhLEtBQUssR0FBRyxLQUFLO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw2REFBZTtBQUMxQywyQkFBMkIsNkRBQWU7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsVUFBVSxzREFBUSxVQUFVLHNEQUFRLFVBQVUsc0RBQVE7QUFDL0U7QUFDQTtBQUNBLG1CQUFtQixhQUFhLGFBQWEsT0FBTyxHQUFHLE9BQU87QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9jb21ib0ZvcmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IENvbWJvIGZvcmNlIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG5pbXBvcnQgeyBCYXNlIH0gZnJvbSBcIi4vYmFzZVwiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNOdW1iZXIsIGlzRnVuY3Rpb24sIHRyYXZlcnNlVHJlZVVwLCBpc09iamVjdCwgZ2V0RWRnZVRlcm1pbmFsIH0gZnJvbSBcIi4uL3V0aWxcIjtcbi8qKlxuICogZm9yY2UgbGF5b3V0IGZvciBncmFwaCB3aXRoIGNvbWJvc1xuICovXG5leHBvcnQgY2xhc3MgQ29tYm9Gb3JjZUxheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIOW4g+WxgOS4reW/gyAqL1xuICAgICAgICB0aGlzLmNlbnRlciA9IFswLCAwXTtcbiAgICAgICAgLyoqIOWBnOatoui/reS7o+eahOacgOWkp+i/reS7o+aVsCAqL1xuICAgICAgICB0aGlzLm1heEl0ZXJhdGlvbiA9IDEwMDtcbiAgICAgICAgLyoqIOmHjeWKm+Wkp+Wwj++8jOW9seWTjeWbvueahOe0p+WHkeeoi+W6piAqL1xuICAgICAgICB0aGlzLmdyYXZpdHkgPSAxMDtcbiAgICAgICAgLyoqIOe+pOe7hOS4reW/g+WKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLmNvbWJvR3Jhdml0eSA9IDEwO1xuICAgICAgICAvKiog6buY6K6k6L656ZW/5bqmICovXG4gICAgICAgIHRoaXMubGlua0Rpc3RhbmNlID0gMTA7XG4gICAgICAgIC8qKiDmr4/mrKHov63ku6PkvY3np7vnmoToobDlh4/nm7jlhbPlj4LmlbAgKi9cbiAgICAgICAgdGhpcy5hbHBoYSA9IDE7XG4gICAgICAgIHRoaXMuYWxwaGFNaW4gPSAwLjAwMTtcbiAgICAgICAgdGhpcy5hbHBoYURlY2F5ID0gMSAtIE1hdGgucG93KHRoaXMuYWxwaGFNaW4sICgxIC8gMzAwKSk7XG4gICAgICAgIHRoaXMuYWxwaGFUYXJnZXQgPSAwO1xuICAgICAgICAvKiog6IqC54K56L+Q5Yqo6YCf5bqm6KGw5YeP5Y+C5pWwICovXG4gICAgICAgIHRoaXMudmVsb2NpdHlEZWNheSA9IDAuNjtcbiAgICAgICAgLyoqIOi+ueW8leWKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLmVkZ2VTdHJlbmd0aCA9IDAuNjtcbiAgICAgICAgLyoqIOiKgueCueW8leWKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLm5vZGVTdHJlbmd0aCA9IDMwO1xuICAgICAgICAvKiog5piv5ZCm5byA5ZCv6Ziy5q2i6YeN5Y+gICovXG4gICAgICAgIHRoaXMucHJldmVudE92ZXJsYXAgPSBmYWxzZTtcbiAgICAgICAgLyoqIOaYr+WQpuW8gOWQr+iKgueCueS5i+mXtOeahOmYsuatoumHjeWPoCAqL1xuICAgICAgICB0aGlzLnByZXZlbnROb2RlT3ZlcmxhcCA9IGZhbHNlO1xuICAgICAgICAvKiog5piv5ZCm5byA5ZCvIENvbWJvIOS5i+mXtOeahOmYsuatoumHjeWPoCAqL1xuICAgICAgICB0aGlzLnByZXZlbnRDb21ib092ZXJsYXAgPSBmYWxzZTtcbiAgICAgICAgLyoqIOmYsuatoumHjeWPoOeahOeisOaSnuWKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLmNvbGxpZGVTdHJlbmd0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgLyoqIOmYsuatoumHjeWPoOeahOeisOaSnuWKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLm5vZGVDb2xsaWRlU3RyZW5ndGggPSAwLjU7XG4gICAgICAgIC8qKiDpmLLmraLph43lj6DnmoTnorDmkp7lipvlpKflsI8gKi9cbiAgICAgICAgdGhpcy5jb21ib0NvbGxpZGVTdHJlbmd0aCA9IDAuNTtcbiAgICAgICAgLyoqIENvbWJvIOacgOWwj+mXtOi3ne+8jOmYsuatoumHjeWPoOaXtueahOmXtOmamSAqL1xuICAgICAgICB0aGlzLmNvbWJvU3BhY2luZyA9IDIwO1xuICAgICAgICAvKiogQ29tYm8g5YaF6YOo55qEIHBhZGRpbmcgKi9cbiAgICAgICAgdGhpcy5jb21ib1BhZGRpbmcgPSAxMDtcbiAgICAgICAgLyoqIOS8mOWMluiuoeeul+aWpeWKm+eahOmAn+W6pu+8jOS4pOiKgueCuemXtOi3nei2hei/hyBvcHRpbWl6ZVJhbmdlRmFjdG9yICogd2lkdGgg5YiZ5LiN5YaN6K6h566X5pal5Yqb5ZKM6YeN5Y+g5pal5YqbICovXG4gICAgICAgIHRoaXMub3B0aW1pemVSYW5nZUZhY3RvciA9IDE7XG4gICAgICAgIC8qKiDmr4/mrKHov63ku6PnmoTlm57osIPlh73mlbAgKi9cbiAgICAgICAgdGhpcy5vblRpY2sgPSAoKSA9PiB7IH07XG4gICAgICAgIC8qKiDov63ku6Pnu5PmnZ/nmoTlm57osIPlh73mlbAgKi9cbiAgICAgICAgdGhpcy5vbkxheW91dEVuZCA9ICgpID0+IHsgfTtcbiAgICAgICAgLyoqIOagueaNrui+ueS4pOerr+iKgueCueWxgue6p+W3rui3neeahOiwg+aVtOW8leWKm+ezu+aVsOeahOWboOWtkO+8jOWPluWAvOiMg+WbtCBbMCwgMV3jgILlsYLnuqflt67ot53otorlpKfvvIzlvJXlipvotorlsI8gKi9cbiAgICAgICAgdGhpcy5kZXB0aEF0dHJhY3RpdmVGb3JjZVNjYWxlID0gMTtcbiAgICAgICAgLyoqIOagueaNrui+ueS4pOerr+iKgueCueWxgue6p+W3rui3neeahOiwg+aVtOaWpeWKm+ezu+aVsOeahOWboOWtkO+8jOWPluWAvOiMg+WbtCBbMSwgSW5maW5pdHld44CC5bGC57qn5beu6Led6LaK5aSn77yM5pal5Yqb6LaK5aSnICovXG4gICAgICAgIHRoaXMuZGVwdGhSZXB1bHNpdmVGb3JjZVNjYWxlID0gMjtcbiAgICAgICAgLyoqIOWGhemDqOiuoeeul+WPguaVsCAqL1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgdGhpcy5jb21ib3MgPSBbXTtcbiAgICAgICAgdGhpcy5jb21ib1RyZWVzID0gW107XG4gICAgICAgIHRoaXMud2lkdGggPSAzMDA7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMzAwO1xuICAgICAgICB0aGlzLmJpYXMgPSBbXTtcbiAgICAgICAgdGhpcy5ub2RlTWFwID0ge307XG4gICAgICAgIHRoaXMub3JpQ29tYm9NYXAgPSB7fTtcbiAgICAgICAgdGhpcy5pbmRleE1hcCA9IHt9O1xuICAgICAgICB0aGlzLmNvbWJvTWFwID0ge307XG4gICAgICAgIHRoaXMucHJldmlvdXNMYXlvdXRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNmZyhvcHRpb25zKTtcbiAgICB9XG4gICAgZ2V0RGVmYXVsdENmZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1heEl0ZXJhdGlvbjogMTAwLFxuICAgICAgICAgICAgY2VudGVyOiBbMCwgMF0sXG4gICAgICAgICAgICBncmF2aXR5OiAxMCxcbiAgICAgICAgICAgIHNwZWVkOiAxLFxuICAgICAgICAgICAgY29tYm9HcmF2aXR5OiAzMCxcbiAgICAgICAgICAgIHByZXZlbnRPdmVybGFwOiBmYWxzZSxcbiAgICAgICAgICAgIHByZXZlbnRDb21ib092ZXJsYXA6IHRydWUsXG4gICAgICAgICAgICBwcmV2ZW50Tm9kZU92ZXJsYXA6IHRydWUsXG4gICAgICAgICAgICBub2RlU3BhY2luZzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29sbGlkZVN0cmVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBub2RlQ29sbGlkZVN0cmVuZ3RoOiAwLjUsXG4gICAgICAgICAgICBjb21ib0NvbGxpZGVTdHJlbmd0aDogMC41LFxuICAgICAgICAgICAgY29tYm9TcGFjaW5nOiAyMCxcbiAgICAgICAgICAgIGNvbWJvUGFkZGluZzogMTAsXG4gICAgICAgICAgICBlZGdlU3RyZW5ndGg6IDAuNixcbiAgICAgICAgICAgIG5vZGVTdHJlbmd0aDogMzAsXG4gICAgICAgICAgICBsaW5rRGlzdGFuY2U6IDEwXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaJp+ihjOW4g+WxgFxuICAgICAqL1xuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICBzZWxmLmNvbWJvVHJlZSA9IHtcbiAgICAgICAgICAgIGlkOiBcImNvbWJvVHJlZVJvb3RcIixcbiAgICAgICAgICAgIGRlcHRoOiAtMSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBzZWxmLmNvbWJvVHJlZXNcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFub2RlcyB8fCBub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBub2Rlc1swXS54ID0gY2VudGVyWzBdO1xuICAgICAgICAgICAgbm9kZXNbMF0ueSA9IGNlbnRlclsxXTtcbiAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWxmLmluaXRWYWxzKCk7XG4gICAgICAgIC8vIGxheW91dFxuICAgICAgICBzZWxmLnJ1bigpO1xuICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICB9XG4gICAgcnVuKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBtYXhJdGVyYXRpb24gPSBzZWxmLnByZXZpb3VzTGF5b3V0ZWRcbiAgICAgICAgICAgID8gc2VsZi5tYXhJdGVyYXRpb24gLyA1XG4gICAgICAgICAgICA6IHNlbGYubWF4SXRlcmF0aW9uO1xuICAgICAgICBpZiAoIXNlbGYud2lkdGggJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi5oZWlnaHQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgIGNvbnN0IHZlbG9jaXR5RGVjYXkgPSBzZWxmLnZlbG9jaXR5RGVjYXk7XG4gICAgICAgIC8vIGluaXQgdGhlIHBvc2l0aW9ucyB0byBtYWtlIHRoZSBub2RlcyB3aXRoIHNhbWUgY29tYm8gZ2F0aGVyIGFyb3VuZCB0aGUgY29tYm9cbiAgICAgICAgY29uc3QgY29tYm9NYXAgPSBzZWxmLmNvbWJvTWFwO1xuICAgICAgICBpZiAoIXNlbGYucHJldmlvdXNMYXlvdXRlZClcbiAgICAgICAgICAgIHNlbGYuaW5pdFBvcyhjb21ib01hcCk7XG4gICAgICAgIC8vIGl0ZXJhdGVcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhJdGVyYXRpb247IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxhY2VtZW50cyA9IFtdO1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgoXywgaikgPT4ge1xuICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbal0gPSB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VsZi5hcHBseUNhbGN1bGF0ZShkaXNwbGFjZW1lbnRzKTtcbiAgICAgICAgICAgIC8vIGdyYXZpdHkgZm9yIGNvbWJvc1xuICAgICAgICAgICAgc2VsZi5hcHBseUNvbWJvQ2VudGVyRm9yY2UoZGlzcGxhY2VtZW50cyk7XG4gICAgICAgICAgICAvLyBtb3ZlXG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChuLCBqKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcihuLngpIHx8ICFpc051bWJlcihuLnkpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgbi54ICs9IGRpc3BsYWNlbWVudHNbal0ueCAqIHZlbG9jaXR5RGVjYXk7XG4gICAgICAgICAgICAgICAgbi55ICs9IGRpc3BsYWNlbWVudHNbal0ueSAqIHZlbG9jaXR5RGVjYXk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYuYWxwaGEgKz0gKHNlbGYuYWxwaGFUYXJnZXQgLSBzZWxmLmFscGhhKSAqIHNlbGYuYWxwaGFEZWNheTtcbiAgICAgICAgICAgIHNlbGYub25UaWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbW92ZSB0byBjZW50ZXJcbiAgICAgICAgY29uc3QgbWVhbkNlbnRlciA9IFswLCAwXTtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc051bWJlcihuLngpIHx8ICFpc051bWJlcihuLnkpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIG1lYW5DZW50ZXJbMF0gKz0gbi54O1xuICAgICAgICAgICAgbWVhbkNlbnRlclsxXSArPSBuLnk7XG4gICAgICAgIH0pO1xuICAgICAgICBtZWFuQ2VudGVyWzBdIC89IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgbWVhbkNlbnRlclsxXSAvPSBub2Rlcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGNlbnRlck9mZnNldCA9IFtjZW50ZXJbMF0gLSBtZWFuQ2VudGVyWzBdLCBjZW50ZXJbMV0gLSBtZWFuQ2VudGVyWzFdXTtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobiwgaikgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc051bWJlcihuLngpIHx8ICFpc051bWJlcihuLnkpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIG4ueCArPSBjZW50ZXJPZmZzZXRbMF07XG4gICAgICAgICAgICBuLnkgKz0gY2VudGVyT2Zmc2V0WzFdO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gYXJyYW5nZSB0aGUgZW1wdHkgY29tYm9cbiAgICAgICAgc2VsZi5jb21ib3MuZm9yRWFjaCgoY29tYm8pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZCA9IGNvbWJvTWFwW2NvbWJvLmlkXTtcbiAgICAgICAgICAgIGlmIChtYXBwZWQgJiYgbWFwcGVkLmVtcHR5KSB7XG4gICAgICAgICAgICAgICAgY29tYm8ueCA9IG1hcHBlZC5jeCB8fCBjb21iby54O1xuICAgICAgICAgICAgICAgIGNvbWJvLnkgPSBtYXBwZWQuY3kgfHwgY29tYm8ueTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNlbGYucHJldmlvdXNMYXlvdXRlZCA9IHRydWU7XG4gICAgfVxuICAgIGluaXRWYWxzKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgZWRnZXMgPSBzZWxmLmVkZ2VzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IGNvbWJvcyA9IHNlbGYuY29tYm9zO1xuICAgICAgICBjb25zdCBjb3VudCA9IHt9O1xuICAgICAgICBjb25zdCBub2RlTWFwID0ge307XG4gICAgICAgIGNvbnN0IGluZGV4TWFwID0ge307XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICAgICAgICAgICAgaW5kZXhNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5ub2RlTWFwID0gbm9kZU1hcDtcbiAgICAgICAgc2VsZi5pbmRleE1hcCA9IGluZGV4TWFwO1xuICAgICAgICBjb25zdCBvcmlDb21ib01hcCA9IHt9O1xuICAgICAgICBjb21ib3MuZm9yRWFjaCgoY29tYm8pID0+IHtcbiAgICAgICAgICAgIG9yaUNvbWJvTWFwW2NvbWJvLmlkXSA9IGNvbWJvO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5vcmlDb21ib01hcCA9IG9yaUNvbWJvTWFwO1xuICAgICAgICBzZWxmLmNvbWJvTWFwID0gc2VsZi5nZXRDb21ib01hcCgpO1xuICAgICAgICBjb25zdCBwcmV2ZW50T3ZlcmxhcCA9IHNlbGYucHJldmVudE92ZXJsYXA7XG4gICAgICAgIHNlbGYucHJldmVudENvbWJvT3ZlcmxhcCA9IHNlbGYucHJldmVudENvbWJvT3ZlcmxhcCB8fCBwcmV2ZW50T3ZlcmxhcDtcbiAgICAgICAgc2VsZi5wcmV2ZW50Tm9kZU92ZXJsYXAgPSBzZWxmLnByZXZlbnROb2RlT3ZlcmxhcCB8fCBwcmV2ZW50T3ZlcmxhcDtcbiAgICAgICAgY29uc3QgY29sbGlkZVN0cmVuZ3RoID0gc2VsZi5jb2xsaWRlU3RyZW5ndGg7XG4gICAgICAgIGlmIChjb2xsaWRlU3RyZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGYuY29tYm9Db2xsaWRlU3RyZW5ndGggPSBjb2xsaWRlU3RyZW5ndGg7XG4gICAgICAgICAgICBzZWxmLm5vZGVDb2xsaWRlU3RyZW5ndGggPSBjb2xsaWRlU3RyZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5jb21ib0NvbGxpZGVTdHJlbmd0aCA9IHNlbGYuY29tYm9Db2xsaWRlU3RyZW5ndGhcbiAgICAgICAgICAgID8gc2VsZi5jb21ib0NvbGxpZGVTdHJlbmd0aFxuICAgICAgICAgICAgOiAwO1xuICAgICAgICBzZWxmLm5vZGVDb2xsaWRlU3RyZW5ndGggPSBzZWxmLm5vZGVDb2xsaWRlU3RyZW5ndGhcbiAgICAgICAgICAgID8gc2VsZi5ub2RlQ29sbGlkZVN0cmVuZ3RoXG4gICAgICAgICAgICA6IDA7XG4gICAgICAgIC8vIGdldCBlZGdlIGJpYXNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gZ2V0RWRnZVRlcm1pbmFsKGVkZ2VzW2ldLCAnc291cmNlJyk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwoZWRnZXNbaV0sICd0YXJnZXQnKTtcbiAgICAgICAgICAgIGlmIChjb3VudFtzb3VyY2VdKVxuICAgICAgICAgICAgICAgIGNvdW50W3NvdXJjZV0rKztcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjb3VudFtzb3VyY2VdID0gMTtcbiAgICAgICAgICAgIGlmIChjb3VudFt0YXJnZXRdKVxuICAgICAgICAgICAgICAgIGNvdW50W3RhcmdldF0rKztcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjb3VudFt0YXJnZXRdID0gMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBiaWFzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChlZGdlc1tpXSwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGVkZ2VzW2ldLCAndGFyZ2V0Jyk7XG4gICAgICAgICAgICBiaWFzW2ldID0gY291bnRbc291cmNlXSAvIChjb3VudFtzb3VyY2VdICsgY291bnRbdGFyZ2V0XSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iaWFzID0gYmlhcztcbiAgICAgICAgY29uc3Qgbm9kZVNpemUgPSBzZWxmLm5vZGVTaXplO1xuICAgICAgICBjb25zdCBub2RlU3BhY2luZyA9IHNlbGYubm9kZVNwYWNpbmc7XG4gICAgICAgIGxldCBub2RlU2l6ZUZ1bmM7XG4gICAgICAgIGxldCBub2RlU3BhY2luZ0Z1bmM7XG4gICAgICAgIC8vIG5vZGVTcGFjaW5nIHRvIGZ1bmN0aW9uXG4gICAgICAgIGlmIChpc051bWJlcihub2RlU3BhY2luZykpIHtcbiAgICAgICAgICAgIG5vZGVTcGFjaW5nRnVuYyA9ICgpID0+IG5vZGVTcGFjaW5nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24obm9kZVNwYWNpbmcpKSB7XG4gICAgICAgICAgICBub2RlU3BhY2luZ0Z1bmMgPSBub2RlU3BhY2luZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGVTcGFjaW5nRnVuYyA9ICgpID0+IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub2RlU3BhY2luZyA9IG5vZGVTcGFjaW5nRnVuYztcbiAgICAgICAgLy8gbm9kZVNpemUgdG8gZnVuY3Rpb25cbiAgICAgICAgaWYgKCFub2RlU2l6ZSkge1xuICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZC5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGQuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGQuc2l6ZVswXSA+IGQuc2l6ZVsxXSA/IGQuc2l6ZVswXSA6IGQuc2l6ZVsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChkLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBkLnNpemUud2lkdGggPiBkLnNpemUuaGVpZ2h0ID8gZC5zaXplLndpZHRoIDogZC5zaXplLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkLnNpemUgLyAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMTA7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24obm9kZVNpemUpKSB7XG4gICAgICAgICAgICBub2RlU2l6ZUZ1bmMgPSAoZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlU2l6ZShkKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNBcnJheShub2RlU2l6ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhcmdlciA9IG5vZGVTaXplWzBdID4gbm9kZVNpemVbMV0gPyBub2RlU2l6ZVswXSA6IG5vZGVTaXplWzFdO1xuICAgICAgICAgICAgY29uc3QgcmFkaXVzID0gbGFyZ2VyIC8gMjtcbiAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9IChkKSA9PiByYWRpdXM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBudW1iZXIgdHlwZVxuICAgICAgICAgICAgY29uc3QgcmFkaXVzID0gbm9kZVNpemUgLyAyO1xuICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKGQpID0+IHJhZGl1cztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vZGVTaXplID0gbm9kZVNpemVGdW5jO1xuICAgICAgICAvLyBjb21ib1NwYWNpbmcgdG8gZnVuY3Rpb25cbiAgICAgICAgY29uc3QgY29tYm9TcGFjaW5nID0gc2VsZi5jb21ib1NwYWNpbmc7XG4gICAgICAgIGxldCBjb21ib1NwYWNpbmdGdW5jO1xuICAgICAgICBpZiAoaXNOdW1iZXIoY29tYm9TcGFjaW5nKSkge1xuICAgICAgICAgICAgY29tYm9TcGFjaW5nRnVuYyA9ICgpID0+IGNvbWJvU3BhY2luZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKGNvbWJvU3BhY2luZykpIHtcbiAgICAgICAgICAgIGNvbWJvU3BhY2luZ0Z1bmMgPSBjb21ib1NwYWNpbmc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBudWxsIHR5cGVcbiAgICAgICAgICAgIGNvbWJvU3BhY2luZ0Z1bmMgPSAoKSA9PiAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tYm9TcGFjaW5nID0gY29tYm9TcGFjaW5nRnVuYztcbiAgICAgICAgLy8gY29tYm9QYWRkaW5nIHRvIGZ1bmN0aW9uXG4gICAgICAgIGNvbnN0IGNvbWJvUGFkZGluZyA9IHNlbGYuY29tYm9QYWRkaW5nO1xuICAgICAgICBsZXQgY29tYm9QYWRkaW5nRnVuYztcbiAgICAgICAgaWYgKGlzTnVtYmVyKGNvbWJvUGFkZGluZykpIHtcbiAgICAgICAgICAgIGNvbWJvUGFkZGluZ0Z1bmMgPSAoKSA9PiBjb21ib1BhZGRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNBcnJheShjb21ib1BhZGRpbmcpKSB7XG4gICAgICAgICAgICBjb21ib1BhZGRpbmdGdW5jID0gKCkgPT4gTWF0aC5tYXguYXBwbHkobnVsbCwgY29tYm9QYWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKGNvbWJvUGFkZGluZykpIHtcbiAgICAgICAgICAgIGNvbWJvUGFkZGluZ0Z1bmMgPSBjb21ib1BhZGRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBudWxsIHR5cGVcbiAgICAgICAgICAgIGNvbWJvUGFkZGluZ0Z1bmMgPSAoKSA9PiAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tYm9QYWRkaW5nID0gY29tYm9QYWRkaW5nRnVuYztcbiAgICAgICAgLy8gbGlua0Rpc3RhbmNlIHRvIGZ1bmN0aW9uXG4gICAgICAgIGxldCBsaW5rRGlzdGFuY2UgPSB0aGlzLmxpbmtEaXN0YW5jZTtcbiAgICAgICAgbGV0IGxpbmtEaXN0YW5jZUZ1bmM7XG4gICAgICAgIGlmICghbGlua0Rpc3RhbmNlKSB7XG4gICAgICAgICAgICBsaW5rRGlzdGFuY2UgPSAxMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOdW1iZXIobGlua0Rpc3RhbmNlKSkge1xuICAgICAgICAgICAgbGlua0Rpc3RhbmNlRnVuYyA9IChkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmtEaXN0YW5jZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsaW5rRGlzdGFuY2VGdW5jID0gbGlua0Rpc3RhbmNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlua0Rpc3RhbmNlID0gbGlua0Rpc3RhbmNlRnVuYztcbiAgICAgICAgLy8gbGlua1N0cmVuZ3RoIHRvIGZ1bmN0aW9uXG4gICAgICAgIGxldCBlZGdlU3RyZW5ndGggPSB0aGlzLmVkZ2VTdHJlbmd0aDtcbiAgICAgICAgbGV0IGVkZ2VTdHJlbmd0aEZ1bmM7XG4gICAgICAgIGlmICghZWRnZVN0cmVuZ3RoKSB7XG4gICAgICAgICAgICBlZGdlU3RyZW5ndGggPSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihlZGdlU3RyZW5ndGgpKSB7XG4gICAgICAgICAgICBlZGdlU3RyZW5ndGhGdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWRnZVN0cmVuZ3RoO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVkZ2VTdHJlbmd0aEZ1bmMgPSBlZGdlU3RyZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lZGdlU3RyZW5ndGggPSBlZGdlU3RyZW5ndGhGdW5jO1xuICAgICAgICAvLyBub2RlU3RyZW5ndGggdG8gZnVuY3Rpb25cbiAgICAgICAgbGV0IG5vZGVTdHJlbmd0aCA9IHRoaXMubm9kZVN0cmVuZ3RoO1xuICAgICAgICBsZXQgbm9kZVN0cmVuZ3RoRnVuYztcbiAgICAgICAgaWYgKCFub2RlU3RyZW5ndGgpIHtcbiAgICAgICAgICAgIG5vZGVTdHJlbmd0aCA9IDMwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihub2RlU3RyZW5ndGgpKSB7XG4gICAgICAgICAgICBub2RlU3RyZW5ndGhGdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZVN0cmVuZ3RoO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGVTdHJlbmd0aEZ1bmMgPSBub2RlU3RyZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub2RlU3RyZW5ndGggPSBub2RlU3RyZW5ndGhGdW5jO1xuICAgIH1cbiAgICBpbml0UG9zKGNvbWJvTWFwKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbWJvSWQgPSBub2RlLmNvbWJvSWQ7XG4gICAgICAgICAgICBjb25zdCBjb21ibyA9IGNvbWJvTWFwW2NvbWJvSWRdO1xuICAgICAgICAgICAgaWYgKGNvbWJvSWQgJiYgY29tYm8pIHtcbiAgICAgICAgICAgICAgICBub2RlLnggPSBjb21iby5jeCArIDEwMCAvIChpICsgMSk7XG4gICAgICAgICAgICAgICAgbm9kZS55ID0gY29tYm8uY3kgKyAxMDAgLyAoaSArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS54ID0gMTAwIC8gKGkgKyAxKTtcbiAgICAgICAgICAgICAgICBub2RlLnkgPSAxMDAgLyAoaSArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0Q29tYm9NYXAoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlTWFwID0gc2VsZi5ub2RlTWFwO1xuICAgICAgICBjb25zdCBjb21ib1RyZWVzID0gc2VsZi5jb21ib1RyZWVzO1xuICAgICAgICBjb25zdCBvcmlDb21ib01hcCA9IHNlbGYub3JpQ29tYm9NYXA7XG4gICAgICAgIGNvbnN0IGNvbWJvTWFwID0ge307XG4gICAgICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKChjdHJlZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHJlZUNoaWxkcmVuID0gW107XG4gICAgICAgICAgICB0cmF2ZXJzZVRyZWVVcChjdHJlZSwgKHRyZWVOb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRyZWVOb2RlLml0ZW1UeXBlID09PSBcIm5vZGVcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIHNraXAgaXRcbiAgICAgICAgICAgICAgICBpZiAoIW9yaUNvbWJvTWFwW3RyZWVOb2RlLmlkXSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIG1lYW5zIGl0IGlzIGhpZGRlbiwgc2tpcCBpdFxuICAgICAgICAgICAgICAgIGlmIChjb21ib01hcFt0cmVlTm9kZS5pZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21ibyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmVlTm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRyZWVOb2RlLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3g6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjeTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGg6IHNlbGYub3JpQ29tYm9NYXBbdHJlZU5vZGUuaWRdLmRlcHRoIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgY29tYm9NYXBbdHJlZU5vZGUuaWRdID0gY29tYm87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdHJlZU5vZGUuY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbWJvTWFwW2NoaWxkLmlkXSAmJiAhbm9kZU1hcFtjaGlsZC5pZF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIG1lYW5zIGl0IGlzIGhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IGNvbWJvTWFwW3RyZWVOb2RlLmlkXTtcbiAgICAgICAgICAgICAgICBjLmN4ID0gMDtcbiAgICAgICAgICAgICAgICBjLmN5ID0gMDtcbiAgICAgICAgICAgICAgICBpZiAodHJlZUNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjLmVtcHR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JpQ29tYm8gPSBvcmlDb21ib01hcFt0cmVlTm9kZS5pZF07XG4gICAgICAgICAgICAgICAgICAgIGMuY3ggPSBvcmlDb21iby54O1xuICAgICAgICAgICAgICAgICAgICBjLmN5ID0gb3JpQ29tYm8ueTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJlZUNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGMuY291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLml0ZW1UeXBlICE9PSBcIm5vZGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRDb21ibyA9IGNvbWJvTWFwW2NoaWxkLmlkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc051bWJlcihjaGlsZENvbWJvLmN4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmN4ICs9IGNoaWxkQ29tYm8uY3g7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXIoY2hpbGRDb21iby5jeSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5jeSArPSBjaGlsZENvbWJvLmN5O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2RlTWFwW2NoaWxkLmlkXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhlIG5vZGUgaXMgaGlkZGVuLCBza2lwIGl0XG4gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKG5vZGUueCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY3ggKz0gbm9kZS54O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc051bWJlcihub2RlLnkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLmN5ICs9IG5vZGUueTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGMuY3ggLz0gKGMuY291bnQgfHwgMSk7XG4gICAgICAgICAgICAgICAgYy5jeSAvPSAoYy5jb3VudCB8fCAxKTtcbiAgICAgICAgICAgICAgICBjLmNoaWxkcmVuID0gdHJlZUNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29tYm9NYXA7XG4gICAgfVxuICAgIGFwcGx5Q29tYm9DZW50ZXJGb3JjZShkaXNwbGFjZW1lbnRzKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBncmF2aXR5ID0gc2VsZi5ncmF2aXR5O1xuICAgICAgICBjb25zdCBjb21ib0dyYXZpdHkgPSBzZWxmLmNvbWJvR3Jhdml0eSB8fCBncmF2aXR5O1xuICAgICAgICBjb25zdCBhbHBoYSA9IHRoaXMuYWxwaGE7XG4gICAgICAgIGNvbnN0IGNvbWJvVHJlZXMgPSBzZWxmLmNvbWJvVHJlZXM7XG4gICAgICAgIGNvbnN0IGluZGV4TWFwID0gc2VsZi5pbmRleE1hcDtcbiAgICAgICAgY29uc3Qgbm9kZU1hcCA9IHNlbGYubm9kZU1hcDtcbiAgICAgICAgY29uc3QgY29tYm9NYXAgPSBzZWxmLmNvbWJvTWFwO1xuICAgICAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaCgoY3RyZWUpID0+IHtcbiAgICAgICAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCAodHJlZU5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHJlZU5vZGUuaXRlbVR5cGUgPT09IFwibm9kZVwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gc2tpcCBpdFxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbWJvID0gY29tYm9NYXBbdHJlZU5vZGUuaWRdO1xuICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoZSBjb21ibyBpcyBoaWRkZW4sIHNraXAgaXRcbiAgICAgICAgICAgICAgICBpZiAoIWNvbWJvKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjID0gY29tYm9NYXBbdHJlZU5vZGUuaWRdO1xuICAgICAgICAgICAgICAgIC8vIGhpZ2hlciBkZXB0aCB0aGUgY29tYm8sIGxhcmdlciB0aGUgZ3Jhdml0eVxuICAgICAgICAgICAgICAgIGNvbnN0IGdyYXZpdHlTY2FsZSA9ICgoYy5kZXB0aCArIDEpIC8gMTApICogMC41O1xuICAgICAgICAgICAgICAgIC8vIGFwcGx5IGNvbWJvIGNlbnRlciBmb3JjZSBmb3IgYWxsIHRoZSBkZXNjZW5kIG5vZGVzIGluIHRoaXMgY29tYm9cbiAgICAgICAgICAgICAgICAvLyBhbmQgdXBkYXRlIHRoZSBjZW50ZXIgcG9zaXRpb24gYW5kIGNvdW50IGZvciB0aGlzIGNvbWJvXG4gICAgICAgICAgICAgICAgY29uc3QgY29tYm9YID0gYy5jeDtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21ib1kgPSBjLmN5O1xuICAgICAgICAgICAgICAgIGMuY3ggPSAwO1xuICAgICAgICAgICAgICAgIGMuY3kgPSAwO1xuICAgICAgICAgICAgICAgIGMuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLml0ZW1UeXBlICE9PSBcIm5vZGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRDb21ibyA9IGNvbWJvTWFwW2NoaWxkLmlkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZENvbWJvICYmIGlzTnVtYmVyKGNoaWxkQ29tYm8uY3gpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuY3ggKz0gY2hpbGRDb21iby5jeDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZENvbWJvICYmIGlzTnVtYmVyKGNoaWxkQ29tYm8uY3kpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuY3kgKz0gY2hpbGRDb21iby5jeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZU1hcFtjaGlsZC5pZF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY1ggPSAobm9kZS54IC0gY29tYm9YKSB8fCAwLjAwNTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjWSA9IChub2RlLnkgLSBjb21ib1kpIHx8IDAuMDA1O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsID0gTWF0aC5zcXJ0KHZlY1ggKiB2ZWNYICsgdmVjWSAqIHZlY1kpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZElkeCA9IGluZGV4TWFwW25vZGUuaWRdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSAoKGNvbWJvR3Jhdml0eSAqIGFscGhhKSAvIGwpICogZ3Jhdml0eVNjYWxlO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2NoaWxkSWR4XS54IC09IHZlY1ggKiBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbY2hpbGRJZHhdLnkgLT0gdmVjWSAqIHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKG5vZGUueCkpXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmN4ICs9IG5vZGUueDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKG5vZGUueSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmN5ICs9IG5vZGUueTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjLmN4IC89IChjLmNvdW50IHx8IDEpO1xuICAgICAgICAgICAgICAgIGMuY3kgLz0gKGMuY291bnQgfHwgMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFwcGx5Q2FsY3VsYXRlKGRpc3BsYWNlbWVudHMpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGNvbWJvTWFwID0gc2VsZi5jb21ib01hcDtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICAvLyBzdG9yZSB0aGUgdngsIHZ5LCBhbmQgZGlzdGFuY2UgdG8gcmVkdWNlIGR1bHBsaWNhdGUgY2FsY3VsYXRpb25cbiAgICAgICAgY29uc3QgdmVjTWFwID0ge307XG4gICAgICAgIG5vZGVzLmZvckVhY2goKHYsIGkpID0+IHtcbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKHUsIGopID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaSA8IGopXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB2eCA9ICh2LnggLSB1LngpIHx8IDAuMDA1O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZ5ID0gKHYueSAtIHUueSkgfHwgMC4wMDU7XG4gICAgICAgICAgICAgICAgbGV0IHZsMiA9IHZ4ICogdnggKyB2eSAqIHZ5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZsID0gTWF0aC5zcXJ0KHZsMik7XG4gICAgICAgICAgICAgICAgaWYgKHZsMiA8IDEpXG4gICAgICAgICAgICAgICAgICAgIHZsMiA9IHZsO1xuICAgICAgICAgICAgICAgIHZlY01hcFtgJHt2LmlkfS0ke3UuaWR9YF0gPSB7IHZ4LCB2eSwgdmwyLCB2bCB9O1xuICAgICAgICAgICAgICAgIHZlY01hcFtgJHt1LmlkfS0ke3YuaWR9YF0gPSB7IHZsMiwgdmwsIHZ4OiAtdngsIHZ5OiAtdnkgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gZ2V0IHRoZSBzaXplcyBvZiB0aGUgY29tYm9zXG4gICAgICAgIHNlbGYudXBkYXRlQ29tYm9TaXplcyhjb21ib01hcCk7XG4gICAgICAgIHNlbGYuY2FsUmVwdWxzaXZlKGRpc3BsYWNlbWVudHMsIHZlY01hcCk7XG4gICAgICAgIHNlbGYuY2FsQXR0cmFjdGl2ZShkaXNwbGFjZW1lbnRzLCB2ZWNNYXApO1xuICAgICAgICBjb25zdCBwcmV2ZW50Q29tYm9PdmVybGFwID0gc2VsZi5wcmV2ZW50Q29tYm9PdmVybGFwO1xuICAgICAgICBpZiAocHJldmVudENvbWJvT3ZlcmxhcClcbiAgICAgICAgICAgIHNlbGYuY29tYm9Ob25PdmVybGFwcGluZyhkaXNwbGFjZW1lbnRzLCBjb21ib01hcCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgc2l6ZXMgb2YgdGhlIGNvbWJvcyBhY2NvcmRpbmcgdG8gdGhlaXIgY2hpbGRyZW5cbiAgICAgKiBVc2VkIGZvciBjb21ib3Mgbm9ub3ZlcmxhcCwgYnV0IG5vdCByZS1yZW5kZXIgdGhlIGNvbWJvIHNoYXBlc1xuICAgICAqL1xuICAgIHVwZGF0ZUNvbWJvU2l6ZXMoY29tYm9NYXApIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGNvbWJvVHJlZXMgPSBzZWxmLmNvbWJvVHJlZXM7XG4gICAgICAgIGNvbnN0IG5vZGVNYXAgPSBzZWxmLm5vZGVNYXA7XG4gICAgICAgIGNvbnN0IG5vZGVTaXplID0gc2VsZi5ub2RlU2l6ZTtcbiAgICAgICAgY29uc3QgY29tYm9TcGFjaW5nID0gc2VsZi5jb21ib1NwYWNpbmc7XG4gICAgICAgIGNvbnN0IGNvbWJvUGFkZGluZyA9IHNlbGYuY29tYm9QYWRkaW5nO1xuICAgICAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaCgoY3RyZWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRyZWVDaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgdHJhdmVyc2VUcmVlVXAoY3RyZWUsICh0cmVlTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0cmVlTm9kZS5pdGVtVHlwZSA9PT0gXCJub2RlXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBza2lwIGl0XG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IGNvbWJvTWFwW3RyZWVOb2RlLmlkXTtcbiAgICAgICAgICAgICAgICAvLyBtZWFucyB0aGUgY29tYm8gaXMgaGlkZGVuLCBza2lwIGl0XG4gICAgICAgICAgICAgICAgaWYgKCFjKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0cmVlTm9kZS5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoZSBjb21ibyBpcyBoaWRkZW4uXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbWJvTWFwW2NoaWxkLmlkXSAmJiAhbm9kZU1hcFtjaGlsZC5pZF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYy5taW5YID0gSW5maW5pdHk7XG4gICAgICAgICAgICAgICAgYy5taW5ZID0gSW5maW5pdHk7XG4gICAgICAgICAgICAgICAgYy5tYXhYID0gLUluZmluaXR5O1xuICAgICAgICAgICAgICAgIGMubWF4WSA9IC1JbmZpbml0eTtcbiAgICAgICAgICAgICAgICB0cmVlQ2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLml0ZW1UeXBlICE9PSBcIm5vZGVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBza2lwIGl0XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2RlTWFwW2NoaWxkLmlkXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIG1lYW5zIGl0IGlzIGhpZGRlblxuICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gbm9kZVNpemUobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVNaW5YID0gbm9kZS54IC0gcjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZU1pblkgPSBub2RlLnkgLSByO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlTWF4WCA9IG5vZGUueCArIHI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVNYXhZID0gbm9kZS55ICsgcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMubWluWCA+IG5vZGVNaW5YKVxuICAgICAgICAgICAgICAgICAgICAgICAgYy5taW5YID0gbm9kZU1pblg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjLm1pblkgPiBub2RlTWluWSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGMubWluWSA9IG5vZGVNaW5ZO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYy5tYXhYIDwgbm9kZU1heFgpXG4gICAgICAgICAgICAgICAgICAgICAgICBjLm1heFggPSBub2RlTWF4WDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMubWF4WSA8IG5vZGVNYXhZKVxuICAgICAgICAgICAgICAgICAgICAgICAgYy5tYXhZID0gbm9kZU1heFk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbGV0IG1pblNpemUgPSBzZWxmLm9yaUNvbWJvTWFwW3RyZWVOb2RlLmlkXS5zaXplIHx8IDEwO1xuICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KG1pblNpemUpKVxuICAgICAgICAgICAgICAgICAgICBtaW5TaXplID0gbWluU2l6ZVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBNYXRoLm1heChjLm1heFggLSBjLm1pblgsIGMubWF4WSAtIGMubWluWSwgbWluU2l6ZSk7XG4gICAgICAgICAgICAgICAgYy5yID0gbWF4TGVuZ3RoIC8gMiArIGNvbWJvU3BhY2luZyhjKSAvIDIgKyBjb21ib1BhZGRpbmcoYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIHByZXZlbnQgdGhlIG92ZXJsYXBwaW5ncyBhbW9uZyBjb21ib3NcbiAgICAgKi9cbiAgICBjb21ib05vbk92ZXJsYXBwaW5nKGRpc3BsYWNlbWVudHMsIGNvbWJvTWFwKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBjb21ib1RyZWUgPSBzZWxmLmNvbWJvVHJlZTtcbiAgICAgICAgY29uc3QgY29tYm9Db2xsaWRlU3RyZW5ndGggPSBzZWxmLmNvbWJvQ29sbGlkZVN0cmVuZ3RoO1xuICAgICAgICBjb25zdCBpbmRleE1hcCA9IHNlbGYuaW5kZXhNYXA7XG4gICAgICAgIGNvbnN0IG5vZGVNYXAgPSBzZWxmLm5vZGVNYXA7XG4gICAgICAgIHRyYXZlcnNlVHJlZVVwKGNvbWJvVHJlZSwgKHRyZWVOb2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbWJvTWFwW3RyZWVOb2RlLmlkXSAmJlxuICAgICAgICAgICAgICAgICFub2RlTWFwW3RyZWVOb2RlLmlkXSAmJlxuICAgICAgICAgICAgICAgIHRyZWVOb2RlLmlkICE9PSBcImNvbWJvVHJlZVJvb3RcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0gLy8gbWVhbnMgaXQgaXMgaGlkZGVuXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRyZWVOb2RlLmNoaWxkcmVuO1xuICAgICAgICAgICAgLy8g5ZCM5Liq5a2Q5qCR5LiL55qE5a2QIGNvbWJvIOmXtOS4pOS4pOWvueavlFxuICAgICAgICAgICAgaWYgKGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKCh2LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2Lml0ZW1UeXBlID09PSBcIm5vZGVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gc2tpcCBpdFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdiA9IGNvbWJvTWFwW3YuaWRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWN2KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBtZWFucyBpdCBpcyBoaWRkZW4sIHNraXAgaXRcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgodSwgaikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gailcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodS5pdGVtVHlwZSA9PT0gXCJub2RlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBza2lwIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdSA9IGNvbWJvTWFwW3UuaWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG1lYW5zIGl0IGlzIGhpZGRlbiwgc2tpcCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnggPSAoY3YuY3ggLSBjdS5jeCkgfHwgMC4wMDU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2eSA9IChjdi5jeSAtIGN1LmN5KSB8fCAwLjAwNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGwgPSB2eCAqIHZ4ICsgdnkgKiB2eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ2ID0gY3YuciB8fCAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnUgPSBjdS5yIHx8IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcnYgKyBydTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ1MiA9IHJ1ICogcnU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydjIgPSBydiAqIHJ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxhcHBpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsIDwgciAqIHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2bm9kZXMgPSB2LmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdm5vZGVzIHx8IHZub2Rlcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gc2tpcCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVub2RlcyA9IHUuY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1bm9kZXMgfHwgdW5vZGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBza2lwIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3FydGwgPSBNYXRoLnNxcnQobCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGwgPSAoKHIgLSBzcXJ0bCkgLyBzcXJ0bCkgKiBjb21ib0NvbGxpZGVTdHJlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4bCA9IHZ4ICogbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeWwgPSB2eSAqIGxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJyYXRpbyA9IHJ1MiAvIChydjIgKyBydTIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlycmF0aW8gPSAxIC0gcnJhdGlvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS4pOWFhOW8nyBjb21ibyDnmoTlrZDoioLngrnkuIrmlr3liqDmlqXliptcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bm9kZXMuZm9yRWFjaCgodm4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZuLml0ZW1UeXBlICE9PSBcIm5vZGVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gc2tpcCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGVNYXBbdm4uaWRdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBtZWFucyBpdCBpcyBoaWRkZW4sIHNraXAgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmluZGV4ID0gaW5kZXhNYXBbdm4uaWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bm9kZXMuZm9yRWFjaCgodW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bi5pdGVtVHlwZSAhPT0gXCJub2RlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlTWFwW3VuLmlkXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG1lYW5zIGl0IGlzIGhpZGRlbiwgc2tpcCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWluZGV4ID0gaW5kZXhNYXBbdW4uaWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxhY2VtZW50c1t2aW5kZXhdLnggKz0geGwgKiBycmF0aW87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW3ZpbmRleF0ueSArPSB5bCAqIHJyYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbdWluZGV4XS54IC09IHhsICogaXJyYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbdWluZGV4XS55IC09IHlsICogaXJyYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGUgdGhlIHJlcHVsc2l2ZSBmb3JjZSBiZXR3ZWVuIGVhY2ggbm9kZSBwYWlyXG4gICAgICogQHBhcmFtIGRpc3BsYWNlbWVudHMgVGhlIGFycmF5IHN0b3JlcyB0aGUgZGlzcGxhY2VtZW50cyBmb3Igbm9kZXNcbiAgICAgKiBAcGFyYW0gdmVjTWFwIFRoZSBtYXAgc3RvcmVzIHZlY3RvciBiZXR3ZWVuIGVhY2ggbm9kZSBwYWlyXG4gICAgICovXG4gICAgY2FsUmVwdWxzaXZlKGRpc3BsYWNlbWVudHMsIHZlY01hcCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBtYXggPSBzZWxmLndpZHRoICogc2VsZi5vcHRpbWl6ZVJhbmdlRmFjdG9yO1xuICAgICAgICBjb25zdCBub2RlU3RyZW5ndGggPSBzZWxmLm5vZGVTdHJlbmd0aDtcbiAgICAgICAgY29uc3QgYWxwaGEgPSBzZWxmLmFscGhhO1xuICAgICAgICBjb25zdCBub2RlQ29sbGlkZVN0cmVuZ3RoID0gc2VsZi5ub2RlQ29sbGlkZVN0cmVuZ3RoO1xuICAgICAgICBjb25zdCBwcmV2ZW50Tm9kZU92ZXJsYXAgPSBzZWxmLnByZXZlbnROb2RlT3ZlcmxhcDtcbiAgICAgICAgY29uc3Qgbm9kZVNpemVGdW5jID0gc2VsZi5ub2RlU2l6ZTtcbiAgICAgICAgY29uc3Qgbm9kZVNwYWNpbmdGdW5jID0gc2VsZi5ub2RlU3BhY2luZztcbiAgICAgICAgY29uc3Qgc2NhbGUgPSBzZWxmLmRlcHRoUmVwdWxzaXZlRm9yY2VTY2FsZTtcbiAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgIG5vZGVzLmZvckVhY2goKHYsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICghdi54IHx8ICF2LnkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgLy8gY2VudGVyIGdyYXZpdHlcbiAgICAgICAgICAgIGlmIChjZW50ZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncmF2aXR5ID0gc2VsZi5ncmF2aXR5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZlY1ggPSAodi54IC0gY2VudGVyWzBdKSB8fCAwLjAwNTtcbiAgICAgICAgICAgICAgICBjb25zdCB2ZWNZID0gKHYueSAtIGNlbnRlclsxXSkgfHwgMC4wMDU7XG4gICAgICAgICAgICAgICAgY29uc3QgbCA9IE1hdGguc3FydCh2ZWNYICogdmVjWCArIHZlY1kgKiB2ZWNZKTtcbiAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2ldLnggLT0gKHZlY1ggKiBncmF2aXR5ICogYWxwaGEpIC8gbDtcbiAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2ldLnkgLT0gKHZlY1kgKiBncmF2aXR5ICogYWxwaGEpIC8gbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKHUsIGopID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdS54IHx8ICF1LnkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHZsMiwgdmwgfSA9IHZlY01hcFtgJHt2LmlkfS0ke3UuaWR9YF07XG4gICAgICAgICAgICAgICAgaWYgKHZsID4gbWF4KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgeyB2eCwgdnkgfSA9IHZlY01hcFtgJHt2LmlkfS0ke3UuaWR9YF07XG4gICAgICAgICAgICAgICAgbGV0IGRlcHRoRGlmZiA9IE1hdGgubG9nKE1hdGguYWJzKHUuZGVwdGggLSB2LmRlcHRoKSAvIDEwKSArIDEgfHwgMTtcbiAgICAgICAgICAgICAgICBkZXB0aERpZmYgPSBkZXB0aERpZmYgPCAxID8gMSA6IGRlcHRoRGlmZjtcbiAgICAgICAgICAgICAgICBpZiAodS5jb21ib0lkICE9PSB2LmNvbWJvSWQpXG4gICAgICAgICAgICAgICAgICAgIGRlcHRoRGlmZiArPSAxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcHRoUGFyYW0gPSBkZXB0aERpZmYgPyBNYXRoLnBvdyhzY2FsZSwgZGVwdGhEaWZmKSA6IDE7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gKChub2RlU3RyZW5ndGgodSkgKiBhbHBoYSkgLyB2bDIpICogZGVwdGhQYXJhbTtcbiAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2ldLnggKz0gdnggKiBwYXJhbXM7XG4gICAgICAgICAgICAgICAgZGlzcGxhY2VtZW50c1tpXS55ICs9IHZ5ICogcGFyYW1zO1xuICAgICAgICAgICAgICAgIC8vIHByZXZlbnQgbm9kZSBvdmVybGFwcGluZ3NcbiAgICAgICAgICAgICAgICBpZiAoaSA8IGogJiYgcHJldmVudE5vZGVPdmVybGFwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJpID0gKG5vZGVTaXplRnVuYyh2KSArIG5vZGVTcGFjaW5nRnVuYyh2KSkgfHwgMTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmogPSAobm9kZVNpemVGdW5jKHUpICsgbm9kZVNwYWNpbmdGdW5jKHUpKSB8fCAxO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcmkgKyByajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZsMiA8IHIgKiByKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbCA9ICgociAtIHZsKSAvIHZsKSAqIG5vZGVDb2xsaWRlU3RyZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByajIgPSByaiAqIHJqO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJyYXRpbyA9IHJqMiAvIChyaSAqIHJpICsgcmoyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHhsID0gdnggKiBsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHlsID0gdnkgKiBsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbaV0ueCArPSB4bCAqIHJyYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbaV0ueSArPSB5bCAqIHJyYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJyYXRpbyA9IDEgLSBycmF0aW87XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2pdLnggLT0geGwgKiBycmF0aW87XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2pdLnkgLT0geWwgKiBycmF0aW87XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZSB0aGUgYXR0cmFjdGl2ZSBmb3JjZSBiZXR3ZWVuIHRoZSBub2RlIHBhaXIgd2l0aCBlZGdlXG4gICAgICogQHBhcmFtIGRpc3BsYWNlbWVudHMgVGhlIGFycmF5IHN0b3JlcyB0aGUgZGlzcGxhY2VtZW50cyBmb3Igbm9kZXNcbiAgICAgKiBAcGFyYW0gdmVjTWFwIFRoZSBtYXAgc3RvcmVzIHZlY3RvciBiZXR3ZWVuIGVhY2ggbm9kZSBwYWlyXG4gICAgICovXG4gICAgY2FsQXR0cmFjdGl2ZShkaXNwbGFjZW1lbnRzLCB2ZWNNYXApIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGVkZ2VzID0gc2VsZi5lZGdlcztcbiAgICAgICAgY29uc3QgbGlua0Rpc3RhbmNlID0gc2VsZi5saW5rRGlzdGFuY2U7XG4gICAgICAgIGNvbnN0IGFscGhhID0gc2VsZi5hbHBoYTtcbiAgICAgICAgY29uc3QgZWRnZVN0cmVuZ3RoID0gc2VsZi5lZGdlU3RyZW5ndGg7XG4gICAgICAgIGNvbnN0IGJpYXMgPSBzZWxmLmJpYXM7XG4gICAgICAgIGNvbnN0IHNjYWxlID0gc2VsZi5kZXB0aEF0dHJhY3RpdmVGb3JjZVNjYWxlO1xuICAgICAgICBlZGdlcy5mb3JFYWNoKChlLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGUsICd0YXJnZXQnKTtcbiAgICAgICAgICAgIGlmICghc291cmNlIHx8ICF0YXJnZXQgfHwgc291cmNlID09PSB0YXJnZXQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgdUluZGV4ID0gc2VsZi5pbmRleE1hcFtzb3VyY2VdO1xuICAgICAgICAgICAgY29uc3QgdkluZGV4ID0gc2VsZi5pbmRleE1hcFt0YXJnZXRdO1xuICAgICAgICAgICAgY29uc3QgdSA9IHNlbGYubm9kZU1hcFtzb3VyY2VdO1xuICAgICAgICAgICAgY29uc3QgdiA9IHNlbGYubm9kZU1hcFt0YXJnZXRdO1xuICAgICAgICAgICAgaWYgKCF1IHx8ICF2KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGxldCBkZXB0aERpZmYgPSB1LmRlcHRoID09PSB2LmRlcHRoID8gMCA6IE1hdGgubG9nKE1hdGguYWJzKHUuZGVwdGggLSB2LmRlcHRoKSAvIDEwKTtcbiAgICAgICAgICAgIGlmICh1LmNvbWJvSWQgPT09IHYuY29tYm9JZCkge1xuICAgICAgICAgICAgICAgIGRlcHRoRGlmZiA9IGRlcHRoRGlmZiAvIDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZGVwdGhQYXJhbSA9IGRlcHRoRGlmZiA/IE1hdGgucG93KHNjYWxlLCBkZXB0aERpZmYpIDogMTtcbiAgICAgICAgICAgIGlmICh1LmNvbWJvSWQgIT09IHYuY29tYm9JZCAmJiBkZXB0aFBhcmFtID09PSAxKSB7XG4gICAgICAgICAgICAgICAgZGVwdGhQYXJhbSA9IHNjYWxlIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHUuY29tYm9JZCA9PT0gdi5jb21ib0lkKSB7XG4gICAgICAgICAgICAgICAgZGVwdGhQYXJhbSA9IDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzTnVtYmVyKHYueCkgfHwgIWlzTnVtYmVyKHUueCkgfHwgIWlzTnVtYmVyKHYueSkgfHwgIWlzTnVtYmVyKHUueSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IHZsLCB2eCwgdnkgfSA9IHZlY01hcFtgJHt0YXJnZXR9LSR7c291cmNlfWBdO1xuICAgICAgICAgICAgY29uc3QgbCA9ICgodmwgLSBsaW5rRGlzdGFuY2UoZSkpIC8gdmwpICogYWxwaGEgKiBlZGdlU3RyZW5ndGgoZSkgKiBkZXB0aFBhcmFtO1xuICAgICAgICAgICAgY29uc3QgdmVjWCA9IHZ4ICogbDtcbiAgICAgICAgICAgIGNvbnN0IHZlY1kgPSB2eSAqIGw7XG4gICAgICAgICAgICBjb25zdCBiID0gYmlhc1tpXTtcbiAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbdkluZGV4XS54IC09IHZlY1ggKiBiO1xuICAgICAgICAgICAgZGlzcGxhY2VtZW50c1t2SW5kZXhdLnkgLT0gdmVjWSAqIGI7XG4gICAgICAgICAgICBkaXNwbGFjZW1lbnRzW3VJbmRleF0ueCArPSB2ZWNYICogKDEgLSBiKTtcbiAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbdUluZGV4XS55ICs9IHZlY1kgKiAoMSAtIGIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIFwiY29tYm9Gb3JjZVwiO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbWJvRm9yY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/comboForce.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/concentric.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/concentric.js ***! \***********************************************************/ /*! exports provided: ConcentricLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConcentricLayout\", function() { return ConcentricLayout; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/**\n * @fileOverview concentric layout\n * @author shiwu.wyy@antfin.com\n * this algorithm refers to - https://github.com/cytoscape/cytoscape.js/\n */\n\n\n/**\n * 同心圆布局\n */\nclass ConcentricLayout extends _base__WEBPACK_IMPORTED_MODULE_1__[\"Base\"] {\n constructor(options) {\n super();\n this.nodeSize = 30;\n /** min spacing between outside of nodes (used for radius adjustment) */\n this.minNodeSpacing = 10;\n /** prevents node overlap, may overflow boundingBox if not enough space */\n this.preventOverlap = false;\n /** whether levels have an equal radial distance betwen them, may cause bounding box overflow */\n this.equidistant = false;\n /** where nodes start in radians */\n this.startAngle = (3 / 2) * Math.PI;\n /** whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) */\n this.clockwise = true;\n /** 根据 sortBy 指定的属性进行排布,数值高的放在中心,如果是 sortBy 则会计算节点度数,度数最高的放在中心 */\n this.sortBy = \"degree\";\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n nodeSize: 30,\n minNodeSpacing: 10,\n preventOverlap: false,\n sweep: undefined,\n equidistant: false,\n startAngle: (3 / 2) * Math.PI,\n clockwise: true,\n maxLevelDiff: undefined,\n sortBy: \"degree\"\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const n = nodes.length;\n if (n === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (n === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n const layoutNodes = [];\n let maxNodeSize;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(self.nodeSize)) {\n maxNodeSize = Math.max(self.nodeSize[0], self.nodeSize[1]);\n }\n else {\n maxNodeSize = self.nodeSize;\n }\n nodes.forEach((node) => {\n layoutNodes.push(node);\n let nodeSize = maxNodeSize;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(node.size)) {\n nodeSize = Math.max(node.size[0], node.size[1]);\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(node.size)) {\n nodeSize = node.size;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(node.size)) {\n nodeSize = Math.max(node.size.width, node.size.height);\n }\n maxNodeSize = Math.max(maxNodeSize, nodeSize);\n });\n self.clockwise =\n self.counterclockwise !== undefined\n ? !self.counterclockwise\n : self.clockwise;\n // layout\n const nodeMap = {};\n const indexMap = {};\n layoutNodes.forEach((node, i) => {\n nodeMap[node.id] = node;\n indexMap[node.id] = i;\n });\n // get the node degrees\n if (self.sortBy === \"degree\" ||\n !Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(self.sortBy) ||\n layoutNodes[0][self.sortBy] === undefined) {\n self.sortBy = \"degree\";\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(nodes[0].degree)) {\n const values = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getDegree\"])(nodes.length, indexMap, edges);\n layoutNodes.forEach((node, i) => {\n node.degree = values[i];\n });\n }\n }\n // sort nodes by value\n layoutNodes.sort((n1, n2) => n2[self.sortBy] - n1[self.sortBy]);\n self.maxValueNode = layoutNodes[0];\n self.maxLevelDiff =\n self.maxLevelDiff || self.maxValueNode[self.sortBy] / 4;\n // put the values into levels\n const levels = [[]];\n let currentLevel = levels[0];\n layoutNodes.forEach((node) => {\n if (currentLevel.length > 0) {\n const diff = Math.abs(currentLevel[0][self.sortBy] - node[self.sortBy]);\n if (self.maxLevelDiff && diff >= self.maxLevelDiff) {\n currentLevel = [];\n levels.push(currentLevel);\n }\n }\n currentLevel.push(node);\n });\n // create positions for levels\n let minDist = maxNodeSize + self.minNodeSpacing; // min dist between nodes\n if (!self.preventOverlap) {\n // then strictly constrain to bb\n const firstLvlHasMulti = levels.length > 0 && levels[0].length > 1;\n const maxR = Math.min(self.width, self.height) / 2 - minDist;\n const rStep = maxR / (levels.length + (firstLvlHasMulti ? 1 : 0));\n minDist = Math.min(minDist, rStep);\n }\n // find the metrics for each level\n let r = 0;\n levels.forEach((level) => {\n let sweep = self.sweep;\n if (sweep === undefined) {\n sweep = 2 * Math.PI - (2 * Math.PI) / level.length;\n }\n const dTheta = (level.dTheta = sweep / Math.max(1, level.length - 1));\n // calculate the radius\n if (level.length > 1 && self.preventOverlap) {\n // but only if more than one node (can't overlap)\n const dcos = Math.cos(dTheta) - Math.cos(0);\n const dsin = Math.sin(dTheta) - Math.sin(0);\n const rMin = Math.sqrt((minDist * minDist) / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping\n r = Math.max(rMin, r);\n }\n level.r = r;\n r += minDist;\n });\n if (self.equidistant) {\n let rDeltaMax = 0;\n let rr = 0;\n for (let i = 0; i < levels.length; i++) {\n const level = levels[i];\n const rDelta = level.r - rr;\n rDeltaMax = Math.max(rDeltaMax, rDelta);\n }\n rr = 0;\n levels.forEach((level, i) => {\n if (i === 0) {\n rr = level.r;\n }\n level.r = rr;\n rr += rDeltaMax;\n });\n }\n // calculate the node positions\n levels.forEach((level) => {\n const dTheta = level.dTheta;\n const rr = level.r;\n level.forEach((node, j) => {\n const theta = self.startAngle + (self.clockwise ? 1 : -1) * dTheta * j;\n node.x = center[0] + rr * Math.cos(theta);\n node.y = center[1] + rr * Math.sin(theta);\n });\n });\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges\n };\n }\n getType() {\n return \"concentric\";\n }\n}\n//# sourceMappingURL=concentric.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9jb25jZW50cmljLmpzPzEzNzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzJFO0FBQzdDO0FBQzlCO0FBQ0E7QUFDQTtBQUNPLCtCQUErQiwwQ0FBSTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscURBQU87QUFDdkI7QUFDQTtBQUNBLHFCQUFxQixzREFBUTtBQUM3QjtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsYUFBYSxzREFBUTtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCLCtCQUErQix1REFBUztBQUN4QztBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0Esd0RBQXdEO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRkFBMEY7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG1CQUFtQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvY29uY2VudHJpYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBjb25jZW50cmljIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICogdGhpcyBhbGdvcml0aG0gcmVmZXJzIHRvIDxjeXRvc2NhcGUuanM+IC0gaHR0cHM6Ly9naXRodWIuY29tL2N5dG9zY2FwZS9jeXRvc2NhcGUuanMvXG4gKi9cbmltcG9ydCB7IGlzU3RyaW5nLCBpc0FycmF5LCBpc051bWJlciwgZ2V0RGVncmVlLCBpc09iamVjdCB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSBcIi4vYmFzZVwiO1xuLyoqXG4gKiDlkIzlv4PlnIbluIPlsYBcbiAqL1xuZXhwb3J0IGNsYXNzIENvbmNlbnRyaWNMYXlvdXQgZXh0ZW5kcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubm9kZVNpemUgPSAzMDtcbiAgICAgICAgLyoqIG1pbiBzcGFjaW5nIGJldHdlZW4gb3V0c2lkZSBvZiBub2RlcyAodXNlZCBmb3IgcmFkaXVzIGFkanVzdG1lbnQpICovXG4gICAgICAgIHRoaXMubWluTm9kZVNwYWNpbmcgPSAxMDtcbiAgICAgICAgLyoqIHByZXZlbnRzIG5vZGUgb3ZlcmxhcCwgbWF5IG92ZXJmbG93IGJvdW5kaW5nQm94IGlmIG5vdCBlbm91Z2ggc3BhY2UgKi9cbiAgICAgICAgdGhpcy5wcmV2ZW50T3ZlcmxhcCA9IGZhbHNlO1xuICAgICAgICAvKiogd2hldGhlciBsZXZlbHMgaGF2ZSBhbiBlcXVhbCByYWRpYWwgZGlzdGFuY2UgYmV0d2VuIHRoZW0sIG1heSBjYXVzZSBib3VuZGluZyBib3ggb3ZlcmZsb3cgKi9cbiAgICAgICAgdGhpcy5lcXVpZGlzdGFudCA9IGZhbHNlO1xuICAgICAgICAvKiogd2hlcmUgbm9kZXMgc3RhcnQgaW4gcmFkaWFucyAqL1xuICAgICAgICB0aGlzLnN0YXJ0QW5nbGUgPSAoMyAvIDIpICogTWF0aC5QSTtcbiAgICAgICAgLyoqIHdoZXRoZXIgdGhlIGxheW91dCBzaG91bGQgZ28gY2xvY2t3aXNlICh0cnVlKSBvciBjb3VudGVyY2xvY2t3aXNlL2FudGljbG9ja3dpc2UgKGZhbHNlKSAqL1xuICAgICAgICB0aGlzLmNsb2Nrd2lzZSA9IHRydWU7XG4gICAgICAgIC8qKiDmoLnmja4gc29ydEJ5IOaMh+WumueahOWxnuaAp+i/m+ihjOaOkuW4g++8jOaVsOWAvOmrmOeahOaUvuWcqOS4reW/g++8jOWmguaenOaYryBzb3J0Qnkg5YiZ5Lya6K6h566X6IqC54K55bqm5pWw77yM5bqm5pWw5pyA6auY55qE5pS+5Zyo5Lit5b+DICovXG4gICAgICAgIHRoaXMuc29ydEJ5ID0gXCJkZWdyZWVcIjtcbiAgICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgICAgIHRoaXMud2lkdGggPSAzMDA7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMzAwO1xuICAgICAgICAvKiog6L+t5Luj57uT5p2f55qE5Zue6LCD5Ye95pWwICovXG4gICAgICAgIHRoaXMub25MYXlvdXRFbmQgPSAoKSA9PiB7IH07XG4gICAgICAgIHRoaXMudXBkYXRlQ2ZnKG9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZVNpemU6IDMwLFxuICAgICAgICAgICAgbWluTm9kZVNwYWNpbmc6IDEwLFxuICAgICAgICAgICAgcHJldmVudE92ZXJsYXA6IGZhbHNlLFxuICAgICAgICAgICAgc3dlZXA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGVxdWlkaXN0YW50OiBmYWxzZSxcbiAgICAgICAgICAgIHN0YXJ0QW5nbGU6ICgzIC8gMikgKiBNYXRoLlBJLFxuICAgICAgICAgICAgY2xvY2t3aXNlOiB0cnVlLFxuICAgICAgICAgICAgbWF4TGV2ZWxEaWZmOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzb3J0Qnk6IFwiZGVncmVlXCJcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5omn6KGM5biD5bGAXG4gICAgICovXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgY29uc3QgZWRnZXMgPSBzZWxmLmVkZ2VzO1xuICAgICAgICBjb25zdCBuID0gbm9kZXMubGVuZ3RoO1xuICAgICAgICBpZiAobiA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi53aWR0aCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzZWxmLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLmhlaWdodCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzZWxmLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYuY2VudGVyKSB7XG4gICAgICAgICAgICBzZWxmLmNlbnRlciA9IFtzZWxmLndpZHRoIC8gMiwgc2VsZi5oZWlnaHQgLyAyXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZW50ZXIgPSBzZWxmLmNlbnRlcjtcbiAgICAgICAgaWYgKG4gPT09IDEpIHtcbiAgICAgICAgICAgIG5vZGVzWzBdLnggPSBjZW50ZXJbMF07XG4gICAgICAgICAgICBub2Rlc1swXS55ID0gY2VudGVyWzFdO1xuICAgICAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxheW91dE5vZGVzID0gW107XG4gICAgICAgIGxldCBtYXhOb2RlU2l6ZTtcbiAgICAgICAgaWYgKGlzQXJyYXkoc2VsZi5ub2RlU2l6ZSkpIHtcbiAgICAgICAgICAgIG1heE5vZGVTaXplID0gTWF0aC5tYXgoc2VsZi5ub2RlU2l6ZVswXSwgc2VsZi5ub2RlU2l6ZVsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtYXhOb2RlU2l6ZSA9IHNlbGYubm9kZVNpemU7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbGF5b3V0Tm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgICAgIGxldCBub2RlU2l6ZSA9IG1heE5vZGVTaXplO1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkobm9kZS5zaXplKSkge1xuICAgICAgICAgICAgICAgIG5vZGVTaXplID0gTWF0aC5tYXgobm9kZS5zaXplWzBdLCBub2RlLnNpemVbMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIobm9kZS5zaXplKSkge1xuICAgICAgICAgICAgICAgIG5vZGVTaXplID0gbm9kZS5zaXplO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNPYmplY3Qobm9kZS5zaXplKSkge1xuICAgICAgICAgICAgICAgIG5vZGVTaXplID0gTWF0aC5tYXgobm9kZS5zaXplLndpZHRoLCBub2RlLnNpemUuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1heE5vZGVTaXplID0gTWF0aC5tYXgobWF4Tm9kZVNpemUsIG5vZGVTaXplKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNlbGYuY2xvY2t3aXNlID1cbiAgICAgICAgICAgIHNlbGYuY291bnRlcmNsb2Nrd2lzZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyAhc2VsZi5jb3VudGVyY2xvY2t3aXNlXG4gICAgICAgICAgICAgICAgOiBzZWxmLmNsb2Nrd2lzZTtcbiAgICAgICAgLy8gbGF5b3V0XG4gICAgICAgIGNvbnN0IG5vZGVNYXAgPSB7fTtcbiAgICAgICAgY29uc3QgaW5kZXhNYXAgPSB7fTtcbiAgICAgICAgbGF5b3V0Tm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IG5vZGU7XG4gICAgICAgICAgICBpbmRleE1hcFtub2RlLmlkXSA9IGk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBnZXQgdGhlIG5vZGUgZGVncmVlc1xuICAgICAgICBpZiAoc2VsZi5zb3J0QnkgPT09IFwiZGVncmVlXCIgfHxcbiAgICAgICAgICAgICFpc1N0cmluZyhzZWxmLnNvcnRCeSkgfHxcbiAgICAgICAgICAgIGxheW91dE5vZGVzWzBdW3NlbGYuc29ydEJ5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZWxmLnNvcnRCeSA9IFwiZGVncmVlXCI7XG4gICAgICAgICAgICBpZiAoIWlzTnVtYmVyKG5vZGVzWzBdLmRlZ3JlZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBnZXREZWdyZWUobm9kZXMubGVuZ3RoLCBpbmRleE1hcCwgZWRnZXMpO1xuICAgICAgICAgICAgICAgIGxheW91dE5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5kZWdyZWUgPSB2YWx1ZXNbaV07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gc29ydCBub2RlcyBieSB2YWx1ZVxuICAgICAgICBsYXlvdXROb2Rlcy5zb3J0KChuMSwgbjIpID0+IG4yW3NlbGYuc29ydEJ5XSAtIG4xW3NlbGYuc29ydEJ5XSk7XG4gICAgICAgIHNlbGYubWF4VmFsdWVOb2RlID0gbGF5b3V0Tm9kZXNbMF07XG4gICAgICAgIHNlbGYubWF4TGV2ZWxEaWZmID1cbiAgICAgICAgICAgIHNlbGYubWF4TGV2ZWxEaWZmIHx8IHNlbGYubWF4VmFsdWVOb2RlW3NlbGYuc29ydEJ5XSAvIDQ7XG4gICAgICAgIC8vIHB1dCB0aGUgdmFsdWVzIGludG8gbGV2ZWxzXG4gICAgICAgIGNvbnN0IGxldmVscyA9IFtbXV07XG4gICAgICAgIGxldCBjdXJyZW50TGV2ZWwgPSBsZXZlbHNbMF07XG4gICAgICAgIGxheW91dE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50TGV2ZWwubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhjdXJyZW50TGV2ZWxbMF1bc2VsZi5zb3J0QnldIC0gbm9kZVtzZWxmLnNvcnRCeV0pO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLm1heExldmVsRGlmZiAmJiBkaWZmID49IHNlbGYubWF4TGV2ZWxEaWZmKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRMZXZlbCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBsZXZlbHMucHVzaChjdXJyZW50TGV2ZWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRMZXZlbC5wdXNoKG5vZGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gY3JlYXRlIHBvc2l0aW9ucyBmb3IgbGV2ZWxzXG4gICAgICAgIGxldCBtaW5EaXN0ID0gbWF4Tm9kZVNpemUgKyBzZWxmLm1pbk5vZGVTcGFjaW5nOyAvLyBtaW4gZGlzdCBiZXR3ZWVuIG5vZGVzXG4gICAgICAgIGlmICghc2VsZi5wcmV2ZW50T3ZlcmxhcCkge1xuICAgICAgICAgICAgLy8gdGhlbiBzdHJpY3RseSBjb25zdHJhaW4gdG8gYmJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0THZsSGFzTXVsdGkgPSBsZXZlbHMubGVuZ3RoID4gMCAmJiBsZXZlbHNbMF0ubGVuZ3RoID4gMTtcbiAgICAgICAgICAgIGNvbnN0IG1heFIgPSBNYXRoLm1pbihzZWxmLndpZHRoLCBzZWxmLmhlaWdodCkgLyAyIC0gbWluRGlzdDtcbiAgICAgICAgICAgIGNvbnN0IHJTdGVwID0gbWF4UiAvIChsZXZlbHMubGVuZ3RoICsgKGZpcnN0THZsSGFzTXVsdGkgPyAxIDogMCkpO1xuICAgICAgICAgICAgbWluRGlzdCA9IE1hdGgubWluKG1pbkRpc3QsIHJTdGVwKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBmaW5kIHRoZSBtZXRyaWNzIGZvciBlYWNoIGxldmVsXG4gICAgICAgIGxldCByID0gMDtcbiAgICAgICAgbGV2ZWxzLmZvckVhY2goKGxldmVsKSA9PiB7XG4gICAgICAgICAgICBsZXQgc3dlZXAgPSBzZWxmLnN3ZWVwO1xuICAgICAgICAgICAgaWYgKHN3ZWVwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzd2VlcCA9IDIgKiBNYXRoLlBJIC0gKDIgKiBNYXRoLlBJKSAvIGxldmVsLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRUaGV0YSA9IChsZXZlbC5kVGhldGEgPSBzd2VlcCAvIE1hdGgubWF4KDEsIGxldmVsLmxlbmd0aCAtIDEpKTtcbiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgcmFkaXVzXG4gICAgICAgICAgICBpZiAobGV2ZWwubGVuZ3RoID4gMSAmJiBzZWxmLnByZXZlbnRPdmVybGFwKSB7XG4gICAgICAgICAgICAgICAgLy8gYnV0IG9ubHkgaWYgbW9yZSB0aGFuIG9uZSBub2RlIChjYW4ndCBvdmVybGFwKVxuICAgICAgICAgICAgICAgIGNvbnN0IGRjb3MgPSBNYXRoLmNvcyhkVGhldGEpIC0gTWF0aC5jb3MoMCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZHNpbiA9IE1hdGguc2luKGRUaGV0YSkgLSBNYXRoLnNpbigwKTtcbiAgICAgICAgICAgICAgICBjb25zdCByTWluID0gTWF0aC5zcXJ0KChtaW5EaXN0ICogbWluRGlzdCkgLyAoZGNvcyAqIGRjb3MgKyBkc2luICogZHNpbikpOyAvLyBzLnQuIG5vIG5vZGVzIG92ZXJsYXBwaW5nXG4gICAgICAgICAgICAgICAgciA9IE1hdGgubWF4KHJNaW4sIHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV2ZWwuciA9IHI7XG4gICAgICAgICAgICByICs9IG1pbkRpc3Q7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoc2VsZi5lcXVpZGlzdGFudCkge1xuICAgICAgICAgICAgbGV0IHJEZWx0YU1heCA9IDA7XG4gICAgICAgICAgICBsZXQgcnIgPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZXZlbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZXZlbCA9IGxldmVsc1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCByRGVsdGEgPSBsZXZlbC5yIC0gcnI7XG4gICAgICAgICAgICAgICAgckRlbHRhTWF4ID0gTWF0aC5tYXgockRlbHRhTWF4LCByRGVsdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcnIgPSAwO1xuICAgICAgICAgICAgbGV2ZWxzLmZvckVhY2goKGxldmVsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcnIgPSBsZXZlbC5yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXZlbC5yID0gcnI7XG4gICAgICAgICAgICAgICAgcnIgKz0gckRlbHRhTWF4O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBub2RlIHBvc2l0aW9uc1xuICAgICAgICBsZXZlbHMuZm9yRWFjaCgobGV2ZWwpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRUaGV0YSA9IGxldmVsLmRUaGV0YTtcbiAgICAgICAgICAgIGNvbnN0IHJyID0gbGV2ZWwucjtcbiAgICAgICAgICAgIGxldmVsLmZvckVhY2goKG5vZGUsIGopID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGV0YSA9IHNlbGYuc3RhcnRBbmdsZSArIChzZWxmLmNsb2Nrd2lzZSA/IDEgOiAtMSkgKiBkVGhldGEgKiBqO1xuICAgICAgICAgICAgICAgIG5vZGUueCA9IGNlbnRlclswXSArIHJyICogTWF0aC5jb3ModGhldGEpO1xuICAgICAgICAgICAgICAgIG5vZGUueSA9IGNlbnRlclsxXSArIHJyICogTWF0aC5zaW4odGhldGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5vZGVzLFxuICAgICAgICAgICAgZWRnZXNcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIFwiY29uY2VudHJpY1wiO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbmNlbnRyaWMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/concentric.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/constants.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/constants.js ***! \**********************************************************/ /*! exports provided: LAYOUT_MESSAGE */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LAYOUT_MESSAGE\", function() { return LAYOUT_MESSAGE; });\n/** layout message type */\nconst LAYOUT_MESSAGE = {\n // run layout\n RUN: \"LAYOUT_RUN\",\n // layout ended with success\n END: \"LAYOUT_END\",\n // layout error\n ERROR: \"LAYOUT_ERROR\",\n // layout tick, used in force directed layout\n TICK: \"LAYOUT_TICK\",\n GPURUN: \"GPU_LAYOUT_RUN\",\n GPUEND: \"GPU_LAYOUT_END\"\n};\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9jb25zdGFudHMuanM/YzAwMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2NvbnN0YW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBsYXlvdXQgbWVzc2FnZSB0eXBlICovXG5leHBvcnQgY29uc3QgTEFZT1VUX01FU1NBR0UgPSB7XG4gICAgLy8gcnVuIGxheW91dFxuICAgIFJVTjogXCJMQVlPVVRfUlVOXCIsXG4gICAgLy8gbGF5b3V0IGVuZGVkIHdpdGggc3VjY2Vzc1xuICAgIEVORDogXCJMQVlPVVRfRU5EXCIsXG4gICAgLy8gbGF5b3V0IGVycm9yXG4gICAgRVJST1I6IFwiTEFZT1VUX0VSUk9SXCIsXG4gICAgLy8gbGF5b3V0IHRpY2ssIHVzZWQgaW4gZm9yY2UgZGlyZWN0ZWQgbGF5b3V0XG4gICAgVElDSzogXCJMQVlPVVRfVElDS1wiLFxuICAgIEdQVVJVTjogXCJHUFVfTEFZT1VUX1JVTlwiLFxuICAgIEdQVUVORDogXCJHUFVfTEFZT1VUX0VORFwiXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/constants.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre.js": /*!******************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre.js ***! \******************************************************/ /*! exports provided: DagreLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DagreLayout\", function() { return DagreLayout; });\n/* harmony import */ var _dagre_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dagre/index */ \"./node_modules/@antv/layout/es/layout/dagre/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\n\n\n/**\n * 层次布局\n */\nclass DagreLayout extends _base__WEBPACK_IMPORTED_MODULE_2__[\"Base\"] {\n constructor(options) {\n super();\n /** layout 方向, 可选 TB, BT, LR, RL */\n this.rankdir = \"TB\";\n /** 节点水平间距(px) */\n this.nodesep = 50;\n /** 每一层节点之间间距 */\n this.ranksep = 50;\n /** 是否保留布局连线的控制点 */\n this.controlPoints = false;\n /** 每层节点是否根据节点数据中的 comboId 进行排序,以防止同层 combo 重叠 */\n this.sortByCombo = false;\n /** 是否保留每条边上的dummy node */\n this.edgeLabelSpace = true;\n this.nodes = [];\n this.edges = [];\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n this.layoutNode = (nodeId) => {\n const self = this;\n const { nodes } = self;\n const node = nodes.find((node) => node.id === nodeId);\n if (node) {\n const layout = node.layout !== false;\n return layout;\n }\n return true;\n };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n rankdir: \"TB\",\n align: undefined,\n nodeSize: undefined,\n nodesepFunc: undefined,\n ranksepFunc: undefined,\n nodesep: 50,\n ranksep: 50,\n controlPoints: false, // 是否保留布局连线的控制点\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const { nodes, nodeSize, rankdir, combos, begin } = self;\n if (!nodes)\n return;\n const edges = self.edges || [];\n const g = new _dagre_index__WEBPACK_IMPORTED_MODULE_0__[\"default\"].graphlib.Graph({\n multigraph: true,\n compound: true,\n });\n let nodeSizeFunc;\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(d.size)) {\n return d.size;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(d.size)) {\n return [d.size.width || 40, d.size.height || 40];\n }\n return [d.size, d.size];\n }\n return [40, 40];\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(nodeSize)) {\n nodeSizeFunc = () => nodeSize;\n }\n else {\n nodeSizeFunc = () => [nodeSize, nodeSize];\n }\n let horisep = getFunc(self.nodesepFunc, self.nodesep, 50);\n let vertisep = getFunc(self.ranksepFunc, self.ranksep, 50);\n if (rankdir === \"LR\" || rankdir === \"RL\") {\n horisep = getFunc(self.ranksepFunc, self.ranksep, 50);\n vertisep = getFunc(self.nodesepFunc, self.nodesep, 50);\n }\n g.setDefaultEdgeLabel(() => ({}));\n g.setGraph(self);\n const comboMap = {};\n nodes.filter((node) => node.layout !== false).forEach((node) => {\n const size = nodeSizeFunc(node);\n const verti = vertisep(node);\n const hori = horisep(node);\n const width = size[0] + 2 * hori;\n const height = size[1] + 2 * verti;\n const layer = node.layer;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(layer)) {\n // 如果有layer属性,加入到node的label中\n g.setNode(node.id, { width, height, layer });\n }\n else {\n g.setNode(node.id, { width, height });\n }\n if (this.sortByCombo && node.comboId) {\n if (!comboMap[node.comboId]) {\n comboMap[node.comboId] = true;\n g.setNode(node.comboId, {});\n }\n g.setParent(node.id, node.comboId);\n }\n });\n if (this.sortByCombo && combos) {\n combos.forEach((combo) => {\n if (!combo.parentId)\n return;\n if (!comboMap[combo.parentId]) {\n comboMap[combo.parentId] = true;\n g.setNode(combo.parentId, {});\n }\n g.setParent(combo.id, combo.parentId);\n });\n }\n edges.forEach((edge) => {\n // dagrejs Wiki https://github.com/dagrejs/dagre/wiki#configuring-the-layout\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'target');\n if (this.layoutNode(source) && this.layoutNode(target)) {\n g.setEdge(source, target, {\n weight: edge.weight || 1,\n });\n }\n });\n // 考虑增量图中的原始图\n let prevGraph = undefined;\n if (self.preset) {\n prevGraph = new _dagre_index__WEBPACK_IMPORTED_MODULE_0__[\"default\"].graphlib.Graph({\n multigraph: true,\n compound: true,\n });\n self.preset.nodes.forEach((node) => {\n prevGraph === null || prevGraph === void 0 ? void 0 : prevGraph.setNode(node.id, node);\n });\n }\n _dagre_index__WEBPACK_IMPORTED_MODULE_0__[\"default\"].layout(g, {\n prevGraph,\n edgeLabelSpace: self.edgeLabelSpace,\n keepNodeOrder: Boolean(!!self.nodeOrder),\n nodeOrder: self.nodeOrder,\n });\n const dBegin = [0, 0];\n if (begin) {\n let minX = Infinity;\n let minY = Infinity;\n g.nodes().forEach((node) => {\n const coord = g.node(node);\n if (minX > coord.x)\n minX = coord.x;\n if (minY > coord.y)\n minY = coord.y;\n });\n g.edges().forEach((edge) => {\n const coord = g.edge(edge);\n coord.points.forEach((point) => {\n if (minX > point.x)\n minX = point.x;\n if (minY > point.y)\n minY = point.y;\n });\n });\n dBegin[0] = begin[0] - minX;\n dBegin[1] = begin[1] - minY;\n }\n g.nodes().forEach((node) => {\n const coord = g.node(node);\n const i = nodes.findIndex((it) => it.id === node);\n if (!nodes[i])\n return;\n nodes[i].x = coord.x + dBegin[0];\n nodes[i].y = coord.y + dBegin[1];\n // @ts-ignore: pass layer order to data for increment layout use\n nodes[i]._order = coord._order;\n });\n g.edges().forEach((edge) => {\n const coord = g.edge(edge);\n const i = edges.findIndex((it) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(it, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(it, 'target');\n return source === edge.v && target === edge.w;\n });\n if ((self.edgeLabelSpace) && self.controlPoints && edges[i].type !== \"loop\") {\n edges[i].controlPoints = coord.points.slice(1, coord.points.length - 1);\n edges[i].controlPoints.forEach((point) => {\n point.x += dBegin[0];\n point.y += dBegin[1];\n });\n }\n });\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges,\n };\n }\n getType() {\n return \"dagre\";\n }\n}\nfunction getFunc(func, value, defaultValue) {\n let resultFunc;\n if (func) {\n resultFunc = func;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value)) {\n resultFunc = () => value;\n }\n else {\n resultFunc = () => defaultValue;\n }\n return resultFunc;\n}\n//# sourceMappingURL=dagre.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS5qcz9hZGMyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNrQztBQUNxQztBQUN6QztBQUM5QjtBQUNBO0FBQ0E7QUFDTywwQkFBMEIsMENBQUk7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMENBQTBDO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixvREFBSztBQUMzQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHFEQUFPO0FBQy9CO0FBQ0E7QUFDQSx3QkFBd0Isc0RBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIscURBQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQVE7QUFDeEI7QUFDQSxvQ0FBb0MsdUJBQXVCO0FBQzNEO0FBQ0E7QUFDQSxvQ0FBb0MsZ0JBQWdCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNkRBQWU7QUFDMUMsMkJBQTJCLDZEQUFlO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsb0RBQUs7QUFDakM7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsUUFBUSxvREFBSztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDZEQUFlO0FBQzlDLCtCQUErQiw2REFBZTtBQUM5QztBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxzREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZGFncmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlT3ZlcnZpZXcgcmFuZG9tIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG5pbXBvcnQgZGFncmUgZnJvbSBcIi4vZGFncmUvaW5kZXhcIjtcbmltcG9ydCB7IGlzQXJyYXksIGlzTnVtYmVyLCBpc09iamVjdCwgZ2V0RWRnZVRlcm1pbmFsIH0gZnJvbSBcIi4uL3V0aWxcIjtcbmltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi9iYXNlXCI7XG4vKipcbiAqIOWxguasoeW4g+WxgFxuICovXG5leHBvcnQgY2xhc3MgRGFncmVMYXlvdXQgZXh0ZW5kcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8qKiBsYXlvdXQg5pa55ZCRLCDlj6/pgIkgVEIsIEJULCBMUiwgUkwgKi9cbiAgICAgICAgdGhpcy5yYW5rZGlyID0gXCJUQlwiO1xuICAgICAgICAvKiog6IqC54K55rC05bmz6Ze06LedKHB4KSAqL1xuICAgICAgICB0aGlzLm5vZGVzZXAgPSA1MDtcbiAgICAgICAgLyoqIOavj+S4gOWxguiKgueCueS5i+mXtOmXtOi3nSAqL1xuICAgICAgICB0aGlzLnJhbmtzZXAgPSA1MDtcbiAgICAgICAgLyoqIOaYr+WQpuS/neeVmeW4g+WxgOi/nue6v+eahOaOp+WItueCuSAqL1xuICAgICAgICB0aGlzLmNvbnRyb2xQb2ludHMgPSBmYWxzZTtcbiAgICAgICAgLyoqIOavj+WxguiKgueCueaYr+WQpuagueaNruiKgueCueaVsOaNruS4reeahCBjb21ib0lkIOi/m+ihjOaOkuW6j++8jOS7pemYsuatouWQjOWxgiBjb21ibyDph43lj6AgKi9cbiAgICAgICAgdGhpcy5zb3J0QnlDb21ibyA9IGZhbHNlO1xuICAgICAgICAvKiog5piv5ZCm5L+d55WZ5q+P5p2h6L655LiK55qEZHVtbXkgbm9kZSAqL1xuICAgICAgICB0aGlzLmVkZ2VMYWJlbFNwYWNlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgICAgIC8qKiDov63ku6Pnu5PmnZ/nmoTlm57osIPlh73mlbAgKi9cbiAgICAgICAgdGhpcy5vbkxheW91dEVuZCA9ICgpID0+IHsgfTtcbiAgICAgICAgdGhpcy5sYXlvdXROb2RlID0gKG5vZGVJZCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICBjb25zdCB7IG5vZGVzIH0gPSBzZWxmO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGUuaWQgPT09IG5vZGVJZCk7XG4gICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxheW91dCA9IG5vZGUubGF5b3V0ICE9PSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGF5b3V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBkYXRlQ2ZnKG9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmFua2RpcjogXCJUQlwiLFxuICAgICAgICAgICAgYWxpZ246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5vZGVTaXplOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBub2Rlc2VwRnVuYzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcmFua3NlcEZ1bmM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5vZGVzZXA6IDUwLFxuICAgICAgICAgICAgcmFua3NlcDogNTAsXG4gICAgICAgICAgICBjb250cm9sUG9pbnRzOiBmYWxzZSwgLy8g5piv5ZCm5L+d55WZ5biD5bGA6L+e57q/55qE5o6n5Yi254K5XG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaJp+ihjOW4g+WxgFxuICAgICAqL1xuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB7IG5vZGVzLCBub2RlU2l6ZSwgcmFua2RpciwgY29tYm9zLCBiZWdpbiB9ID0gc2VsZjtcbiAgICAgICAgaWYgKCFub2RlcylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZWRnZXMgPSBzZWxmLmVkZ2VzIHx8IFtdO1xuICAgICAgICBjb25zdCBnID0gbmV3IGRhZ3JlLmdyYXBobGliLkdyYXBoKHtcbiAgICAgICAgICAgIG11bHRpZ3JhcGg6IHRydWUsXG4gICAgICAgICAgICBjb21wb3VuZDogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBub2RlU2l6ZUZ1bmM7XG4gICAgICAgIGlmICghbm9kZVNpemUpIHtcbiAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9IChkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGQuc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShkLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5zaXplO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChkLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2Quc2l6ZS53aWR0aCB8fCA0MCwgZC5zaXplLmhlaWdodCB8fCA0MF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtkLnNpemUsIGQuc2l6ZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbNDAsIDQwXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNBcnJheShub2RlU2l6ZSkpIHtcbiAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9ICgpID0+IG5vZGVTaXplO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKCkgPT4gW25vZGVTaXplLCBub2RlU2l6ZV07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGhvcmlzZXAgPSBnZXRGdW5jKHNlbGYubm9kZXNlcEZ1bmMsIHNlbGYubm9kZXNlcCwgNTApO1xuICAgICAgICBsZXQgdmVydGlzZXAgPSBnZXRGdW5jKHNlbGYucmFua3NlcEZ1bmMsIHNlbGYucmFua3NlcCwgNTApO1xuICAgICAgICBpZiAocmFua2RpciA9PT0gXCJMUlwiIHx8IHJhbmtkaXIgPT09IFwiUkxcIikge1xuICAgICAgICAgICAgaG9yaXNlcCA9IGdldEZ1bmMoc2VsZi5yYW5rc2VwRnVuYywgc2VsZi5yYW5rc2VwLCA1MCk7XG4gICAgICAgICAgICB2ZXJ0aXNlcCA9IGdldEZ1bmMoc2VsZi5ub2Rlc2VwRnVuYywgc2VsZi5ub2Rlc2VwLCA1MCk7XG4gICAgICAgIH1cbiAgICAgICAgZy5zZXREZWZhdWx0RWRnZUxhYmVsKCgpID0+ICh7fSkpO1xuICAgICAgICBnLnNldEdyYXBoKHNlbGYpO1xuICAgICAgICBjb25zdCBjb21ib01hcCA9IHt9O1xuICAgICAgICBub2Rlcy5maWx0ZXIoKG5vZGUpID0+IG5vZGUubGF5b3V0ICE9PSBmYWxzZSkuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IG5vZGVTaXplRnVuYyhub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHZlcnRpID0gdmVydGlzZXAobm9kZSk7XG4gICAgICAgICAgICBjb25zdCBob3JpID0gaG9yaXNlcChub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gc2l6ZVswXSArIDIgKiBob3JpO1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gc2l6ZVsxXSArIDIgKiB2ZXJ0aTtcbiAgICAgICAgICAgIGNvbnN0IGxheWVyID0gbm9kZS5sYXllcjtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihsYXllcikpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzmnIlsYXllcuWxnuaAp++8jOWKoOWFpeWIsG5vZGXnmoRsYWJlbOS4rVxuICAgICAgICAgICAgICAgIGcuc2V0Tm9kZShub2RlLmlkLCB7IHdpZHRoLCBoZWlnaHQsIGxheWVyIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZy5zZXROb2RlKG5vZGUuaWQsIHsgd2lkdGgsIGhlaWdodCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNvcnRCeUNvbWJvICYmIG5vZGUuY29tYm9JZCkge1xuICAgICAgICAgICAgICAgIGlmICghY29tYm9NYXBbbm9kZS5jb21ib0lkXSkge1xuICAgICAgICAgICAgICAgICAgICBjb21ib01hcFtub2RlLmNvbWJvSWRdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZy5zZXROb2RlKG5vZGUuY29tYm9JZCwge30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBnLnNldFBhcmVudChub2RlLmlkLCBub2RlLmNvbWJvSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuc29ydEJ5Q29tYm8gJiYgY29tYm9zKSB7XG4gICAgICAgICAgICBjb21ib3MuZm9yRWFjaCgoY29tYm8pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbWJvLnBhcmVudElkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgaWYgKCFjb21ib01hcFtjb21iby5wYXJlbnRJZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29tYm9NYXBbY29tYm8ucGFyZW50SWRdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZy5zZXROb2RlKGNvbWJvLnBhcmVudElkLCB7fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGcuc2V0UGFyZW50KGNvbWJvLmlkLCBjb21iby5wYXJlbnRJZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlZGdlcy5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgICAgICAgICAvLyBkYWdyZWpzIFdpa2kgaHR0cHM6Ly9naXRodWIuY29tL2RhZ3JlanMvZGFncmUvd2lraSNjb25maWd1cmluZy10aGUtbGF5b3V0XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFZGdlVGVybWluYWwoZWRnZSwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGVkZ2UsICd0YXJnZXQnKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmxheW91dE5vZGUoc291cmNlKSAmJiB0aGlzLmxheW91dE5vZGUodGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIGcuc2V0RWRnZShzb3VyY2UsIHRhcmdldCwge1xuICAgICAgICAgICAgICAgICAgICB3ZWlnaHQ6IGVkZ2Uud2VpZ2h0IHx8IDEsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyDogIPomZHlop7ph4/lm77kuK3nmoTljp/lp4vlm75cbiAgICAgICAgbGV0IHByZXZHcmFwaCA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHNlbGYucHJlc2V0KSB7XG4gICAgICAgICAgICBwcmV2R3JhcGggPSBuZXcgZGFncmUuZ3JhcGhsaWIuR3JhcGgoe1xuICAgICAgICAgICAgICAgIG11bHRpZ3JhcGg6IHRydWUsXG4gICAgICAgICAgICAgICAgY29tcG91bmQ6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYucHJlc2V0Lm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBwcmV2R3JhcGggPT09IG51bGwgfHwgcHJldkdyYXBoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmV2R3JhcGguc2V0Tm9kZShub2RlLmlkLCBub2RlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGRhZ3JlLmxheW91dChnLCB7XG4gICAgICAgICAgICBwcmV2R3JhcGgsXG4gICAgICAgICAgICBlZGdlTGFiZWxTcGFjZTogc2VsZi5lZGdlTGFiZWxTcGFjZSxcbiAgICAgICAgICAgIGtlZXBOb2RlT3JkZXI6IEJvb2xlYW4oISFzZWxmLm5vZGVPcmRlciksXG4gICAgICAgICAgICBub2RlT3JkZXI6IHNlbGYubm9kZU9yZGVyLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZEJlZ2luID0gWzAsIDBdO1xuICAgICAgICBpZiAoYmVnaW4pIHtcbiAgICAgICAgICAgIGxldCBtaW5YID0gSW5maW5pdHk7XG4gICAgICAgICAgICBsZXQgbWluWSA9IEluZmluaXR5O1xuICAgICAgICAgICAgZy5ub2RlcygpLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb29yZCA9IGcubm9kZShub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAobWluWCA+IGNvb3JkLngpXG4gICAgICAgICAgICAgICAgICAgIG1pblggPSBjb29yZC54O1xuICAgICAgICAgICAgICAgIGlmIChtaW5ZID4gY29vcmQueSlcbiAgICAgICAgICAgICAgICAgICAgbWluWSA9IGNvb3JkLnk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGcuZWRnZXMoKS5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29vcmQgPSBnLmVkZ2UoZWRnZSk7XG4gICAgICAgICAgICAgICAgY29vcmQucG9pbnRzLmZvckVhY2goKHBvaW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtaW5YID4gcG9pbnQueClcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pblggPSBwb2ludC54O1xuICAgICAgICAgICAgICAgICAgICBpZiAobWluWSA+IHBvaW50LnkpXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5ZID0gcG9pbnQueTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZEJlZ2luWzBdID0gYmVnaW5bMF0gLSBtaW5YO1xuICAgICAgICAgICAgZEJlZ2luWzFdID0gYmVnaW5bMV0gLSBtaW5ZO1xuICAgICAgICB9XG4gICAgICAgIGcubm9kZXMoKS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb29yZCA9IGcubm9kZShub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGkgPSBub2Rlcy5maW5kSW5kZXgoKGl0KSA9PiBpdC5pZCA9PT0gbm9kZSk7XG4gICAgICAgICAgICBpZiAoIW5vZGVzW2ldKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIG5vZGVzW2ldLnggPSBjb29yZC54ICsgZEJlZ2luWzBdO1xuICAgICAgICAgICAgbm9kZXNbaV0ueSA9IGNvb3JkLnkgKyBkQmVnaW5bMV07XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlOiBwYXNzIGxheWVyIG9yZGVyIHRvIGRhdGEgZm9yIGluY3JlbWVudCBsYXlvdXQgdXNlXG4gICAgICAgICAgICBub2Rlc1tpXS5fb3JkZXIgPSBjb29yZC5fb3JkZXI7XG4gICAgICAgIH0pO1xuICAgICAgICBnLmVkZ2VzKCkuZm9yRWFjaCgoZWRnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29vcmQgPSBnLmVkZ2UoZWRnZSk7XG4gICAgICAgICAgICBjb25zdCBpID0gZWRnZXMuZmluZEluZGV4KChpdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChpdCwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGdldEVkZ2VUZXJtaW5hbChpdCwgJ3RhcmdldCcpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2UgPT09IGVkZ2UudiAmJiB0YXJnZXQgPT09IGVkZ2UudztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKChzZWxmLmVkZ2VMYWJlbFNwYWNlKSAmJiBzZWxmLmNvbnRyb2xQb2ludHMgJiYgZWRnZXNbaV0udHlwZSAhPT0gXCJsb29wXCIpIHtcbiAgICAgICAgICAgICAgICBlZGdlc1tpXS5jb250cm9sUG9pbnRzID0gY29vcmQucG9pbnRzLnNsaWNlKDEsIGNvb3JkLnBvaW50cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICBlZGdlc1tpXS5jb250cm9sUG9pbnRzLmZvckVhY2goKHBvaW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50LnggKz0gZEJlZ2luWzBdO1xuICAgICAgICAgICAgICAgICAgICBwb2ludC55ICs9IGRCZWdpblsxXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZXMsXG4gICAgICAgICAgICBlZGdlcyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIFwiZGFncmVcIjtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRGdW5jKGZ1bmMsIHZhbHVlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICBsZXQgcmVzdWx0RnVuYztcbiAgICBpZiAoZnVuYykge1xuICAgICAgICByZXN1bHRGdW5jID0gZnVuYztcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdEZ1bmMgPSAoKSA9PiB2YWx1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlc3VsdEZ1bmMgPSAoKSA9PiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRGdW5jO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGFncmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/index.js": /*!************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/index.js ***! \************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _src_graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/graphlib */ \"./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js\");\n/* harmony import */ var _src_layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./src/layout */ \"./node_modules/@antv/layout/es/layout/dagre/src/layout.js\");\n/* harmony import */ var _src_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./src/util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n/*\nCopyright (c) 2012-2014 Chris Pettitt\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\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n graphlib: _src_graphlib__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n layout: _src_layout__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n util: {\n time: _src_util__WEBPACK_IMPORTED_MODULE_2__[\"time\"],\n notime: _src_util__WEBPACK_IMPORTED_MODULE_2__[\"notime\"]\n },\n});\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9pbmRleC5qcz9hZWJlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3NDO0FBQ0o7QUFDUTtBQUMzQjtBQUNmLElBQUksK0RBQVE7QUFDWixJQUFJLDJEQUFNO0FBQ1Y7QUFDQSxRQUFRLG9EQUFJO0FBQ1osUUFBUSx3REFBTTtBQUNkLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2RhZ3JlL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAoYykgMjAxMi0yMDE0IENocmlzIFBldHRpdHRcblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxub2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xudG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG5mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG5BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG5MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuVEhFIFNPRlRXQVJFLlxuKi9cbmltcG9ydCBncmFwaGxpYiBmcm9tICcuL3NyYy9ncmFwaGxpYic7XG5pbXBvcnQgbGF5b3V0IGZyb20gJy4vc3JjL2xheW91dCc7XG5pbXBvcnQgeyB0aW1lLCBub3RpbWUgfSBmcm9tICcuL3NyYy91dGlsJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBncmFwaGxpYixcbiAgICBsYXlvdXQsXG4gICAgdXRpbDoge1xuICAgICAgICB0aW1lLFxuICAgICAgICBub3RpbWVcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/acyclic.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/acyclic.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _greedy_fas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./greedy-fas */ \"./node_modules/@antv/layout/es/layout/dagre/src/greedy-fas.js\");\n\nconst run = (g) => {\n const weightFn = (g) => {\n return (e) => g.edge(e).weight;\n };\n const fas = (g.graph().acyclicer === \"greedy\" ? Object(_greedy_fas__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(g, weightFn(g)) : dfsFAS(g));\n fas === null || fas === void 0 ? void 0 : fas.forEach((e) => {\n const label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, `rev-${Math.random()}`);\n });\n};\nconst dfsFAS = (g) => {\n const fas = [];\n const stack = {};\n const visited = {};\n const dfs = (v) => {\n var _a;\n if (visited.hasOwnProperty(v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n (_a = g.outEdges(v)) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n if (stack.hasOwnProperty(e.w)) {\n fas.push(e);\n }\n else {\n dfs(e.w);\n }\n });\n delete stack[v];\n };\n g.nodes().forEach(dfs);\n return fas;\n};\nconst undo = (g) => {\n g.edges().forEach((e) => {\n const label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n const forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({ run, undo });\n//# sourceMappingURL=acyclic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvYWN5Y2xpYy5qcz9mNzU0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsMkRBQVM7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxjQUFjO0FBQ3hELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDZSxnRUFBQyxZQUFZLEVBQUM7QUFDN0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvYWN5Y2xpYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBncmVlZHlGQVMgZnJvbSAnLi9ncmVlZHktZmFzJztcbmNvbnN0IHJ1biA9IChnKSA9PiB7XG4gICAgY29uc3Qgd2VpZ2h0Rm4gPSAoZykgPT4ge1xuICAgICAgICByZXR1cm4gKGUpID0+IGcuZWRnZShlKS53ZWlnaHQ7XG4gICAgfTtcbiAgICBjb25zdCBmYXMgPSAoZy5ncmFwaCgpLmFjeWNsaWNlciA9PT0gXCJncmVlZHlcIiA/IGdyZWVkeUZBUyhnLCB3ZWlnaHRGbihnKSkgOiBkZnNGQVMoZykpO1xuICAgIGZhcyA9PT0gbnVsbCB8fCBmYXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZhcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gZy5lZGdlKGUpO1xuICAgICAgICBnLnJlbW92ZUVkZ2UoZSk7XG4gICAgICAgIGxhYmVsLmZvcndhcmROYW1lID0gZS5uYW1lO1xuICAgICAgICBsYWJlbC5yZXZlcnNlZCA9IHRydWU7XG4gICAgICAgIGcuc2V0RWRnZShlLncsIGUudiwgbGFiZWwsIGByZXYtJHtNYXRoLnJhbmRvbSgpfWApO1xuICAgIH0pO1xufTtcbmNvbnN0IGRmc0ZBUyA9IChnKSA9PiB7XG4gICAgY29uc3QgZmFzID0gW107XG4gICAgY29uc3Qgc3RhY2sgPSB7fTtcbiAgICBjb25zdCB2aXNpdGVkID0ge307XG4gICAgY29uc3QgZGZzID0gKHYpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodmlzaXRlZC5oYXNPd25Qcm9wZXJ0eSh2KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgICAgICBzdGFja1t2XSA9IHRydWU7XG4gICAgICAgIChfYSA9IGcub3V0RWRnZXModikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhY2suaGFzT3duUHJvcGVydHkoZS53KSkge1xuICAgICAgICAgICAgICAgIGZhcy5wdXNoKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZGZzKGUudyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBkZWxldGUgc3RhY2tbdl07XG4gICAgfTtcbiAgICBnLm5vZGVzKCkuZm9yRWFjaChkZnMpO1xuICAgIHJldHVybiBmYXM7XG59O1xuY29uc3QgdW5kbyA9IChnKSA9PiB7XG4gICAgZy5lZGdlcygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBnLmVkZ2UoZSk7XG4gICAgICAgIGlmIChsYWJlbC5yZXZlcnNlZCkge1xuICAgICAgICAgICAgZy5yZW1vdmVFZGdlKGUpO1xuICAgICAgICAgICAgY29uc3QgZm9yd2FyZE5hbWUgPSBsYWJlbC5mb3J3YXJkTmFtZTtcbiAgICAgICAgICAgIGRlbGV0ZSBsYWJlbC5yZXZlcnNlZDtcbiAgICAgICAgICAgIGRlbGV0ZSBsYWJlbC5mb3J3YXJkTmFtZTtcbiAgICAgICAgICAgIGcuc2V0RWRnZShlLncsIGUudiwgbGFiZWwsIGZvcndhcmROYW1lKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IHsgcnVuLCB1bmRvIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hY3ljbGljLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/acyclic.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/add-border-segments.js": /*!******************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/add-border-segments.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n\nconst addBorderSegments = (g) => {\n var _a;\n const dfs = (v) => {\n const children = g.children(v);\n const node = g.node(v);\n if (children === null || children === void 0 ? void 0 : children.length) {\n children.forEach((child) => dfs(child));\n }\n if (node.hasOwnProperty('minRank')) {\n node.borderLeft = [];\n node.borderRight = [];\n for (let rank = node.minRank, maxRank = node.maxRank + 1; rank < maxRank; ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n };\n (_a = g.children()) === null || _a === void 0 ? void 0 : _a.forEach((child) => dfs(child));\n};\nconst addBorderNode = (g, prop, prefix, sg, sgNode, rank) => {\n const label = { rank, width: 0, height: 0, borderType: prop };\n const prev = sgNode[prop][rank - 1];\n const curr = _util__WEBPACK_IMPORTED_MODULE_0__[\"default\"].addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (addBorderSegments);\n//# sourceMappingURL=add-border-segments.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvYWRkLWJvcmRlci1zZWdtZW50cy5qcz82YjAzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFFQUFxRSxnQkFBZ0I7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLGlCQUFpQiw2Q0FBSTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsWUFBWTtBQUMzQztBQUNBO0FBQ2UsZ0ZBQWlCLEVBQUM7QUFDakMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvYWRkLWJvcmRlci1zZWdtZW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1dGlsIGZyb20gJy4vdXRpbCc7XG5jb25zdCBhZGRCb3JkZXJTZWdtZW50cyA9IChnKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IGRmcyA9ICh2KSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZy5jaGlsZHJlbih2KTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgICAgaWYgKGNoaWxkcmVuID09PSBudWxsIHx8IGNoaWxkcmVuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiBkZnMoY2hpbGQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5oYXNPd25Qcm9wZXJ0eSgnbWluUmFuaycpKSB7XG4gICAgICAgICAgICBub2RlLmJvcmRlckxlZnQgPSBbXTtcbiAgICAgICAgICAgIG5vZGUuYm9yZGVyUmlnaHQgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IHJhbmsgPSBub2RlLm1pblJhbmssIG1heFJhbmsgPSBub2RlLm1heFJhbmsgKyAxOyByYW5rIDwgbWF4UmFuazsgKytyYW5rKSB7XG4gICAgICAgICAgICAgICAgYWRkQm9yZGVyTm9kZShnLCBcImJvcmRlckxlZnRcIiwgXCJfYmxcIiwgdiwgbm9kZSwgcmFuayk7XG4gICAgICAgICAgICAgICAgYWRkQm9yZGVyTm9kZShnLCBcImJvcmRlclJpZ2h0XCIsIFwiX2JyXCIsIHYsIG5vZGUsIHJhbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICAoX2EgPSBnLmNoaWxkcmVuKCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKChjaGlsZCkgPT4gZGZzKGNoaWxkKSk7XG59O1xuY29uc3QgYWRkQm9yZGVyTm9kZSA9IChnLCBwcm9wLCBwcmVmaXgsIHNnLCBzZ05vZGUsIHJhbmspID0+IHtcbiAgICBjb25zdCBsYWJlbCA9IHsgcmFuaywgd2lkdGg6IDAsIGhlaWdodDogMCwgYm9yZGVyVHlwZTogcHJvcCB9O1xuICAgIGNvbnN0IHByZXYgPSBzZ05vZGVbcHJvcF1bcmFuayAtIDFdO1xuICAgIGNvbnN0IGN1cnIgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcImJvcmRlclwiLCBsYWJlbCwgcHJlZml4KTtcbiAgICBzZ05vZGVbcHJvcF1bcmFua10gPSBjdXJyO1xuICAgIGcuc2V0UGFyZW50KGN1cnIsIHNnKTtcbiAgICBpZiAocHJldikge1xuICAgICAgICBnLnNldEVkZ2UocHJldiwgY3VyciwgeyB3ZWlnaHQ6IDEgfSk7XG4gICAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGFkZEJvcmRlclNlZ21lbnRzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWRkLWJvcmRlci1zZWdtZW50cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/add-border-segments.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/coordinate-system.js": /*!****************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/coordinate-system.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nconst adjust = (g) => {\n var _a;\n const rankDir = (_a = g.graph().rankdir) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n};\nconst undo = (g) => {\n var _a;\n const rankDir = (_a = g.graph().rankdir) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n};\nconst swapWidthHeight = (g) => {\n g.nodes().forEach((v) => { swapWidthHeightOne(g.node(v)); });\n g.edges().forEach((e) => { swapWidthHeightOne(g.edge(e)); });\n};\nconst swapWidthHeightOne = (attrs) => {\n const w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n};\nconst reverseY = (g) => {\n g.nodes().forEach((v) => { reverseYOne(g.node(v)); });\n g.edges().forEach((e) => {\n var _a;\n const edge = g.edge(e);\n (_a = edge.points) === null || _a === void 0 ? void 0 : _a.forEach((point) => reverseYOne(point));\n if (edge.hasOwnProperty(\"y\")) {\n reverseYOne(edge);\n }\n });\n};\nconst reverseYOne = (attrs) => {\n attrs.y = -attrs.y;\n};\nconst swapXY = (g) => {\n g.nodes().forEach((v) => { swapXYOne(g.node(v)); });\n g.edges().forEach((e) => {\n var _a;\n const edge = g.edge(e);\n (_a = edge.points) === null || _a === void 0 ? void 0 : _a.forEach((point) => swapXYOne(point));\n if (edge.hasOwnProperty(\"x\")) {\n swapXYOne(edge);\n }\n });\n};\nconst swapXYOne = (attrs) => {\n const x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({ adjust, undo });\n//# sourceMappingURL=coordinate-system.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvY29vcmRpbmF0ZS1zeXN0ZW0uanM/YzA2ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLCtCQUErQixFQUFFO0FBQy9ELDhCQUE4QiwrQkFBK0IsRUFBRTtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qix3QkFBd0IsRUFBRTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLHNCQUFzQixFQUFFO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLGdFQUFDLGVBQWUsRUFBQztBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2RhZ3JlL3NyYy9jb29yZGluYXRlLXN5c3RlbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGFkanVzdCA9IChnKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHJhbmtEaXIgPSAoX2EgPSBnLmdyYXBoKCkucmFua2RpcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHJhbmtEaXIgPT09IFwibHJcIiB8fCByYW5rRGlyID09PSBcInJsXCIpIHtcbiAgICAgICAgc3dhcFdpZHRoSGVpZ2h0KGcpO1xuICAgIH1cbn07XG5jb25zdCB1bmRvID0gKGcpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgcmFua0RpciA9IChfYSA9IGcuZ3JhcGgoKS5yYW5rZGlyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAocmFua0RpciA9PT0gXCJidFwiIHx8IHJhbmtEaXIgPT09IFwicmxcIikge1xuICAgICAgICByZXZlcnNlWShnKTtcbiAgICB9XG4gICAgaWYgKHJhbmtEaXIgPT09IFwibHJcIiB8fCByYW5rRGlyID09PSBcInJsXCIpIHtcbiAgICAgICAgc3dhcFhZKGcpO1xuICAgICAgICBzd2FwV2lkdGhIZWlnaHQoZyk7XG4gICAgfVxufTtcbmNvbnN0IHN3YXBXaWR0aEhlaWdodCA9IChnKSA9PiB7XG4gICAgZy5ub2RlcygpLmZvckVhY2goKHYpID0+IHsgc3dhcFdpZHRoSGVpZ2h0T25lKGcubm9kZSh2KSk7IH0pO1xuICAgIGcuZWRnZXMoKS5mb3JFYWNoKChlKSA9PiB7IHN3YXBXaWR0aEhlaWdodE9uZShnLmVkZ2UoZSkpOyB9KTtcbn07XG5jb25zdCBzd2FwV2lkdGhIZWlnaHRPbmUgPSAoYXR0cnMpID0+IHtcbiAgICBjb25zdCB3ID0gYXR0cnMud2lkdGg7XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy5oZWlnaHQ7XG4gICAgYXR0cnMuaGVpZ2h0ID0gdztcbn07XG5jb25zdCByZXZlcnNlWSA9IChnKSA9PiB7XG4gICAgZy5ub2RlcygpLmZvckVhY2goKHYpID0+IHsgcmV2ZXJzZVlPbmUoZy5ub2RlKHYpKTsgfSk7XG4gICAgZy5lZGdlcygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBlZGdlID0gZy5lZGdlKGUpO1xuICAgICAgICAoX2EgPSBlZGdlLnBvaW50cykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKHBvaW50KSA9PiByZXZlcnNlWU9uZShwb2ludCkpO1xuICAgICAgICBpZiAoZWRnZS5oYXNPd25Qcm9wZXJ0eShcInlcIikpIHtcbiAgICAgICAgICAgIHJldmVyc2VZT25lKGVkZ2UpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuY29uc3QgcmV2ZXJzZVlPbmUgPSAoYXR0cnMpID0+IHtcbiAgICBhdHRycy55ID0gLWF0dHJzLnk7XG59O1xuY29uc3Qgc3dhcFhZID0gKGcpID0+IHtcbiAgICBnLm5vZGVzKCkuZm9yRWFjaCgodikgPT4geyBzd2FwWFlPbmUoZy5ub2RlKHYpKTsgfSk7XG4gICAgZy5lZGdlcygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBlZGdlID0gZy5lZGdlKGUpO1xuICAgICAgICAoX2EgPSBlZGdlLnBvaW50cykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKHBvaW50KSA9PiBzd2FwWFlPbmUocG9pbnQpKTtcbiAgICAgICAgaWYgKGVkZ2UuaGFzT3duUHJvcGVydHkoXCJ4XCIpKSB7XG4gICAgICAgICAgICBzd2FwWFlPbmUoZWRnZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5jb25zdCBzd2FwWFlPbmUgPSAoYXR0cnMpID0+IHtcbiAgICBjb25zdCB4ID0gYXR0cnMueDtcbiAgICBhdHRycy54ID0gYXR0cnMueTtcbiAgICBhdHRycy55ID0geDtcbn07XG5leHBvcnQgZGVmYXVsdCB7IGFkanVzdCwgdW5kbyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29vcmRpbmF0ZS1zeXN0ZW0uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/coordinate-system.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/data/list.js": /*!********************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/data/list.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\nconst unlink = (entry) => {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n};\nconst filterOutLinks = (k, v) => {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n};\nclass List {\n constructor() {\n const sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this.isentinel = sentinel;\n }\n dequeue() {\n const sentinel = this.isentinel;\n const entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n }\n enqueue() {\n const sentinel = this.isentinel;\n const entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n }\n toString() {\n const strs = [];\n const sentinel = this.isentinel;\n let curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return `[${strs.join(\", \")}]`;\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (List);\n//# sourceMappingURL=list.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvZGF0YS9saXN0LmpzP2YyNTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDZSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZGFncmUvc3JjL2RhdGEvbGlzdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBTaW1wbGUgZG91Ymx5IGxpbmtlZCBsaXN0IGltcGxlbWVudGF0aW9uIGRlcml2ZWQgZnJvbSBDb3JtZW4sIGV0IGFsLixcbiAqIFwiSW50cm9kdWN0aW9uIHRvIEFsZ29yaXRobXNcIi5cbiAqL1xuY29uc3QgdW5saW5rID0gKGVudHJ5KSA9PiB7XG4gICAgZW50cnkuX3ByZXYuX25leHQgPSBlbnRyeS5fbmV4dDtcbiAgICBlbnRyeS5fbmV4dC5fcHJldiA9IGVudHJ5Ll9wcmV2O1xuICAgIGRlbGV0ZSBlbnRyeS5fbmV4dDtcbiAgICBkZWxldGUgZW50cnkuX3ByZXY7XG59O1xuY29uc3QgZmlsdGVyT3V0TGlua3MgPSAoaywgdikgPT4ge1xuICAgIGlmIChrICE9PSBcIl9uZXh0XCIgJiYgayAhPT0gXCJfcHJldlwiKSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbn07XG5jbGFzcyBMaXN0IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3Qgc2VudGluZWwgPSB7fTtcbiAgICAgICAgc2VudGluZWwuX25leHQgPSBzZW50aW5lbC5fcHJldiA9IHNlbnRpbmVsO1xuICAgICAgICB0aGlzLmlzZW50aW5lbCA9IHNlbnRpbmVsO1xuICAgIH1cbiAgICBkZXF1ZXVlKCkge1xuICAgICAgICBjb25zdCBzZW50aW5lbCA9IHRoaXMuaXNlbnRpbmVsO1xuICAgICAgICBjb25zdCBlbnRyeSA9IHNlbnRpbmVsLl9wcmV2O1xuICAgICAgICBpZiAoZW50cnkgIT09IHNlbnRpbmVsKSB7XG4gICAgICAgICAgICB1bmxpbmsoZW50cnkpO1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgICB9XG4gICAgfVxuICAgIGVucXVldWUoKSB7XG4gICAgICAgIGNvbnN0IHNlbnRpbmVsID0gdGhpcy5pc2VudGluZWw7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gc2VudGluZWwuX3ByZXY7XG4gICAgICAgIGlmIChlbnRyeSAhPT0gc2VudGluZWwpIHtcbiAgICAgICAgICAgIHVubGluayhlbnRyeSk7XG4gICAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIGNvbnN0IHN0cnMgPSBbXTtcbiAgICAgICAgY29uc3Qgc2VudGluZWwgPSB0aGlzLmlzZW50aW5lbDtcbiAgICAgICAgbGV0IGN1cnIgPSBzZW50aW5lbC5fcHJldjtcbiAgICAgICAgd2hpbGUgKGN1cnIgIT09IHNlbnRpbmVsKSB7XG4gICAgICAgICAgICBzdHJzLnB1c2goSlNPTi5zdHJpbmdpZnkoY3VyciwgZmlsdGVyT3V0TGlua3MpKTtcbiAgICAgICAgICAgIGN1cnIgPSBjdXJyLl9wcmV2O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgWyR7c3Rycy5qb2luKFwiLCBcIil9XWA7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgTGlzdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpc3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/data/list.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js": /*!*******************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dagrejs_graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @dagrejs/graphlib */ \"./node_modules/@dagrejs/graphlib/index.js\");\n/* harmony import */ var _dagrejs_graphlib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_dagrejs_graphlib__WEBPACK_IMPORTED_MODULE_0__);\n// @ts-ignore\n\nlet graphlib = _dagrejs_graphlib__WEBPACK_IMPORTED_MODULE_0___default.a;\nif (!graphlib && typeof window !== \"undefined\") {\n graphlib = window.graphlib;\n}\nif (!Array.prototype.flat) {\n // @ts-ignore\n Array.prototype.flat = function (count) {\n let c = count || 1;\n if (!isFinite(c))\n return;\n const len = this.length;\n let ret = [];\n if (this.length === 0)\n return this;\n while (c--) {\n const arr = [];\n let flag = false;\n if (ret.length === 0) {\n flag = true;\n for (let i = 0; i < len; i++) {\n if (this[i] instanceof Array) {\n ret.push(...this[i]);\n }\n else {\n ret.push(this[i]);\n }\n }\n }\n else {\n for (let i = 0; i < ret.length; i++) {\n if (ret[i] instanceof Array) {\n flag = true;\n arr.push(...ret[i]);\n }\n else {\n arr.push(ret[i]);\n }\n }\n ret = arr;\n }\n if (!flag && c === Infinity) {\n break;\n }\n }\n return ret;\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (graphlib);\n//# sourceMappingURL=graphlib.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvZ3JhcGhsaWIuanM/MWRjYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNxQztBQUNyQyxlQUFlLHdEQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixTQUFTO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixnQkFBZ0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvZ3JhcGhsaWIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQgZ2xpYiBmcm9tICdAZGFncmVqcy9ncmFwaGxpYic7XG5sZXQgZ3JhcGhsaWIgPSBnbGliO1xuaWYgKCFncmFwaGxpYiAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgZ3JhcGhsaWIgPSB3aW5kb3cuZ3JhcGhsaWI7XG59XG5pZiAoIUFycmF5LnByb3RvdHlwZS5mbGF0KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIEFycmF5LnByb3RvdHlwZS5mbGF0ID0gZnVuY3Rpb24gKGNvdW50KSB7XG4gICAgICAgIGxldCBjID0gY291bnQgfHwgMTtcbiAgICAgICAgaWYgKCFpc0Zpbml0ZShjKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGg7XG4gICAgICAgIGxldCByZXQgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIHdoaWxlIChjLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICAgICAgbGV0IGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChyZXQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tpXSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaCguLi50aGlzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHRoaXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJldFtpXSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKC4uLnJldFtpXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChyZXRbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldCA9IGFycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZmxhZyAmJiBjID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IGdyYXBobGliO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z3JhcGhsaWIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/greedy-fas.js": /*!*********************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/greedy-fas.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graphlib */ \"./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js\");\n/* harmony import */ var _data_list__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./data/list */ \"./node_modules/@antv/layout/es/layout/dagre/src/data/list.js\");\n\n\nconst Graph = _graphlib__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Graph;\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\n// module.exports = greedyFAS;\nconst DEFAULT_WEIGHT_FN = () => 1;\nconst greedyFAS = (g, weightFn) => {\n var _a;\n if (g.nodeCount() <= 1)\n return [];\n const state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n const results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n // Expand multi-edges\n // @ts-ignore\n return (_a = results.map((e) => g.outEdges(e.v, e.w))) === null || _a === void 0 ? void 0 : _a.flat();\n};\nconst doGreedyFAS = (g, buckets, zeroIdx) => {\n let results = [];\n const sources = buckets[buckets.length - 1];\n const sinks = buckets[0];\n let entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n while ((entry = sources.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n if (g.nodeCount()) {\n for (let i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n return results;\n};\nconst removeNode = (g, buckets, zeroIdx, entry, collectPredecessors) => {\n var _a, _b;\n const results = collectPredecessors ? [] : undefined;\n (_a = g.inEdges(entry.v)) === null || _a === void 0 ? void 0 : _a.forEach((edge) => {\n const weight = g.edge(edge);\n const uEntry = g.node(edge.v);\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n if (uEntry.out === undefined)\n uEntry.out = 0;\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n (_b = g.outEdges(entry.v)) === null || _b === void 0 ? void 0 : _b.forEach((edge) => {\n const weight = g.edge(edge);\n const w = edge.w;\n const wEntry = g.node(w);\n if (wEntry.in === undefined)\n wEntry.in = 0;\n wEntry.in -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n g.removeNode(entry.v);\n return results;\n};\nconst buildState = (g, weightFn) => {\n const fasGraph = new Graph();\n let maxIn = 0;\n let maxOut = 0;\n g.nodes().forEach((v) => {\n fasGraph.setNode(v, { v, \"in\": 0, out: 0 });\n });\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n g.edges().forEach((e) => {\n const prevWeight = fasGraph.edge(e.v, e.w) || 0;\n const weight = weightFn === null || weightFn === void 0 ? void 0 : weightFn(e);\n const edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n const buckets = [];\n const rangeMax = maxOut + maxIn + 3;\n for (let i = 0; i < rangeMax; i++) {\n buckets.push(new _data_list__WEBPACK_IMPORTED_MODULE_1__[\"default\"]());\n }\n const zeroIdx = maxIn + 1;\n fasGraph.nodes().forEach((v) => {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n return { buckets, zeroIdx, graph: fasGraph };\n};\nconst assignBucket = (buckets, zeroIdx, entry) => {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n }\n else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n }\n else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (greedyFAS);\n//# sourceMappingURL=greedy-fas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvZ3JlZWR5LWZhcy5qcz80NDRmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNIO0FBQy9CLGNBQWMsaURBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxPQUFPO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsdUJBQXVCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHFCQUFxQjtBQUNsRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyx5QkFBeUIsa0RBQUk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHdFQUFTLEVBQUM7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvZ3JlZWR5LWZhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBncmFwaGxpYiBmcm9tICcuL2dyYXBobGliJztcbmltcG9ydCBMaXN0IGZyb20gJy4vZGF0YS9saXN0JztcbmNvbnN0IEdyYXBoID0gZ3JhcGhsaWIuR3JhcGg7XG4vKlxuICogQSBncmVlZHkgaGV1cmlzdGljIGZvciBmaW5kaW5nIGEgZmVlZGJhY2sgYXJjIHNldCBmb3IgYSBncmFwaC4gQSBmZWVkYmFja1xuICogYXJjIHNldCBpcyBhIHNldCBvZiBlZGdlcyB0aGF0IGNhbiBiZSByZW1vdmVkIHRvIG1ha2UgYSBncmFwaCBhY3ljbGljLlxuICogVGhlIGFsZ29yaXRobSBjb21lcyBmcm9tOiBQLiBFYWRlcywgWC4gTGluLCBhbmQgVy4gRi4gU215dGgsIFwiQSBmYXN0IGFuZFxuICogZWZmZWN0aXZlIGhldXJpc3RpYyBmb3IgdGhlIGZlZWRiYWNrIGFyYyBzZXQgcHJvYmxlbS5cIiBUaGlzIGltcGxlbWVudGF0aW9uXG4gKiBhZGp1c3RzIHRoYXQgZnJvbSB0aGUgcGFwZXIgdG8gYWxsb3cgZm9yIHdlaWdodGVkIGVkZ2VzLlxuICovXG4vLyBtb2R1bGUuZXhwb3J0cyA9IGdyZWVkeUZBUztcbmNvbnN0IERFRkFVTFRfV0VJR0hUX0ZOID0gKCkgPT4gMTtcbmNvbnN0IGdyZWVkeUZBUyA9IChnLCB3ZWlnaHRGbikgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpZiAoZy5ub2RlQ291bnQoKSA8PSAxKVxuICAgICAgICByZXR1cm4gW107XG4gICAgY29uc3Qgc3RhdGUgPSBidWlsZFN0YXRlKGcsIHdlaWdodEZuIHx8IERFRkFVTFRfV0VJR0hUX0ZOKTtcbiAgICBjb25zdCByZXN1bHRzID0gZG9HcmVlZHlGQVMoc3RhdGUuZ3JhcGgsIHN0YXRlLmJ1Y2tldHMsIHN0YXRlLnplcm9JZHgpO1xuICAgIC8vIEV4cGFuZCBtdWx0aS1lZGdlc1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gKF9hID0gcmVzdWx0cy5tYXAoKGUpID0+IGcub3V0RWRnZXMoZS52LCBlLncpKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZsYXQoKTtcbn07XG5jb25zdCBkb0dyZWVkeUZBUyA9IChnLCBidWNrZXRzLCB6ZXJvSWR4KSA9PiB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICBjb25zdCBzb3VyY2VzID0gYnVja2V0c1tidWNrZXRzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IHNpbmtzID0gYnVja2V0c1swXTtcbiAgICBsZXQgZW50cnk7XG4gICAgd2hpbGUgKGcubm9kZUNvdW50KCkpIHtcbiAgICAgICAgd2hpbGUgKChlbnRyeSA9IHNpbmtzLmRlcXVldWUoKSkpIHtcbiAgICAgICAgICAgIHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlICgoZW50cnkgPSBzb3VyY2VzLmRlcXVldWUoKSkpIHtcbiAgICAgICAgICAgIHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnLm5vZGVDb3VudCgpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gYnVja2V0cy5sZW5ndGggLSAyOyBpID4gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgZW50cnkgPSBidWNrZXRzW2ldLmRlcXVldWUoKTtcbiAgICAgICAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuY29uY2F0KHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnksIHRydWUpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xufTtcbmNvbnN0IHJlbW92ZU5vZGUgPSAoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnksIGNvbGxlY3RQcmVkZWNlc3NvcnMpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBjb2xsZWN0UHJlZGVjZXNzb3JzID8gW10gOiB1bmRlZmluZWQ7XG4gICAgKF9hID0gZy5pbkVkZ2VzKGVudHJ5LnYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgoZWRnZSkgPT4ge1xuICAgICAgICBjb25zdCB3ZWlnaHQgPSBnLmVkZ2UoZWRnZSk7XG4gICAgICAgIGNvbnN0IHVFbnRyeSA9IGcubm9kZShlZGdlLnYpO1xuICAgICAgICBpZiAoY29sbGVjdFByZWRlY2Vzc29ycykge1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHsgdjogZWRnZS52LCB3OiBlZGdlLncgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVFbnRyeS5vdXQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHVFbnRyeS5vdXQgPSAwO1xuICAgICAgICB1RW50cnkub3V0IC09IHdlaWdodDtcbiAgICAgICAgYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIHVFbnRyeSk7XG4gICAgfSk7XG4gICAgKF9iID0gZy5vdXRFZGdlcyhlbnRyeS52KSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICAgICAgY29uc3Qgd2VpZ2h0ID0gZy5lZGdlKGVkZ2UpO1xuICAgICAgICBjb25zdCB3ID0gZWRnZS53O1xuICAgICAgICBjb25zdCB3RW50cnkgPSBnLm5vZGUodyk7XG4gICAgICAgIGlmICh3RW50cnkuaW4gPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHdFbnRyeS5pbiA9IDA7XG4gICAgICAgIHdFbnRyeS5pbiAtPSB3ZWlnaHQ7XG4gICAgICAgIGFzc2lnbkJ1Y2tldChidWNrZXRzLCB6ZXJvSWR4LCB3RW50cnkpO1xuICAgIH0pO1xuICAgIGcucmVtb3ZlTm9kZShlbnRyeS52KTtcbiAgICByZXR1cm4gcmVzdWx0cztcbn07XG5jb25zdCBidWlsZFN0YXRlID0gKGcsIHdlaWdodEZuKSA9PiB7XG4gICAgY29uc3QgZmFzR3JhcGggPSBuZXcgR3JhcGgoKTtcbiAgICBsZXQgbWF4SW4gPSAwO1xuICAgIGxldCBtYXhPdXQgPSAwO1xuICAgIGcubm9kZXMoKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGZhc0dyYXBoLnNldE5vZGUodiwgeyB2LCBcImluXCI6IDAsIG91dDogMCB9KTtcbiAgICB9KTtcbiAgICAvLyBBZ2dyZWdhdGUgd2VpZ2h0cyBvbiBub2RlcywgYnV0IGFsc28gc3VtIHRoZSB3ZWlnaHRzIGFjcm9zcyBtdWx0aS1lZGdlc1xuICAgIC8vIGludG8gYSBzaW5nbGUgZWRnZSBmb3IgdGhlIGZhc0dyYXBoLlxuICAgIGcuZWRnZXMoKS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXZXZWlnaHQgPSBmYXNHcmFwaC5lZGdlKGUudiwgZS53KSB8fCAwO1xuICAgICAgICBjb25zdCB3ZWlnaHQgPSB3ZWlnaHRGbiA9PT0gbnVsbCB8fCB3ZWlnaHRGbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogd2VpZ2h0Rm4oZSk7XG4gICAgICAgIGNvbnN0IGVkZ2VXZWlnaHQgPSBwcmV2V2VpZ2h0ICsgd2VpZ2h0O1xuICAgICAgICBmYXNHcmFwaC5zZXRFZGdlKGUudiwgZS53LCBlZGdlV2VpZ2h0KTtcbiAgICAgICAgbWF4T3V0ID0gTWF0aC5tYXgobWF4T3V0LCBmYXNHcmFwaC5ub2RlKGUudikub3V0ICs9IHdlaWdodCk7XG4gICAgICAgIG1heEluID0gTWF0aC5tYXgobWF4SW4sIGZhc0dyYXBoLm5vZGUoZS53KVtcImluXCJdICs9IHdlaWdodCk7XG4gICAgfSk7XG4gICAgY29uc3QgYnVja2V0cyA9IFtdO1xuICAgIGNvbnN0IHJhbmdlTWF4ID0gbWF4T3V0ICsgbWF4SW4gKyAzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VNYXg7IGkrKykge1xuICAgICAgICBidWNrZXRzLnB1c2gobmV3IExpc3QoKSk7XG4gICAgfVxuICAgIGNvbnN0IHplcm9JZHggPSBtYXhJbiArIDE7XG4gICAgZmFzR3JhcGgubm9kZXMoKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGFzc2lnbkJ1Y2tldChidWNrZXRzLCB6ZXJvSWR4LCBmYXNHcmFwaC5ub2RlKHYpKTtcbiAgICB9KTtcbiAgICByZXR1cm4geyBidWNrZXRzLCB6ZXJvSWR4LCBncmFwaDogZmFzR3JhcGggfTtcbn07XG5jb25zdCBhc3NpZ25CdWNrZXQgPSAoYnVja2V0cywgemVyb0lkeCwgZW50cnkpID0+IHtcbiAgICBpZiAoIWVudHJ5Lm91dCkge1xuICAgICAgICBidWNrZXRzWzBdLmVucXVldWUoZW50cnkpO1xuICAgIH1cbiAgICBlbHNlIGlmICghZW50cnlbXCJpblwiXSkge1xuICAgICAgICBidWNrZXRzW2J1Y2tldHMubGVuZ3RoIC0gMV0uZW5xdWV1ZShlbnRyeSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBidWNrZXRzW2VudHJ5Lm91dCAtIGVudHJ5W1wiaW5cIl0gKyB6ZXJvSWR4XS5lbnF1ZXVlKGVudHJ5KTtcbiAgICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZ3JlZWR5RkFTO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z3JlZWR5LWZhcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/greedy-fas.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/layout.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/layout.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _acyclic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./acyclic */ \"./node_modules/@antv/layout/es/layout/dagre/src/acyclic.js\");\n/* harmony import */ var _normalize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./normalize */ \"./node_modules/@antv/layout/es/layout/dagre/src/normalize.js\");\n/* harmony import */ var _rank__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rank */ \"./node_modules/@antv/layout/es/layout/dagre/src/rank/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n/* harmony import */ var _parent_dummy_chains__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./parent-dummy-chains */ \"./node_modules/@antv/layout/es/layout/dagre/src/parent-dummy-chains.js\");\n/* harmony import */ var _nesting_graph__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./nesting-graph */ \"./node_modules/@antv/layout/es/layout/dagre/src/nesting-graph.js\");\n/* harmony import */ var _add_border_segments__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./add-border-segments */ \"./node_modules/@antv/layout/es/layout/dagre/src/add-border-segments.js\");\n/* harmony import */ var _coordinate_system__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./coordinate-system */ \"./node_modules/@antv/layout/es/layout/dagre/src/coordinate-system.js\");\n/* harmony import */ var _order__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./order */ \"./node_modules/@antv/layout/es/layout/dagre/src/order/index.js\");\n/* harmony import */ var _position__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./position */ \"./node_modules/@antv/layout/es/layout/dagre/src/position/index.js\");\n/* harmony import */ var _graphlib__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./graphlib */ \"./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js\");\n/* harmony import */ var _order_init_data_order__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./order/init-data-order */ \"./node_modules/@antv/layout/es/layout/dagre/src/order/init-data-order.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst Graph = _graphlib__WEBPACK_IMPORTED_MODULE_10__[\"default\"].Graph;\nconst layout = (g, opts) => {\n const time = opts && opts.debugTiming ? _util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].time : _util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].notime;\n time(\"layout\", () => {\n // 如果在原图基础上修改,继承原图的order结果\n if (opts && !opts.keepNodeOrder && opts.prevGraph) {\n time(\" inheritOrder\", () => { inheritOrder(g, opts.prevGraph); });\n }\n const layoutGraph = time(\" buildLayoutGraph\", () => { return buildLayoutGraph(g); });\n // 控制是否为边的label留位置(这会影响是否在边中间添加dummy node)\n if (!(opts && (opts.edgeLabelSpace === false))) {\n time(\" makeSpaceForEdgeLabels\", () => { makeSpaceForEdgeLabels(layoutGraph); });\n }\n // TODO: 暂时处理层级设置不正确时的异常报错,提示设置正确的层级\n try {\n time(\" runLayout\", () => { runLayout(layoutGraph, time, opts); });\n }\n catch (e) {\n if (e.message === \"Not possible to find intersection inside of the rectangle\") {\n console.error('The following error may be caused by improper layer setting, please make sure your manual layer setting does not violate the graph\\'s structure:\\n', e);\n return;\n }\n throw (e);\n }\n time(\" updateInputGraph\", () => { updateInputGraph(g, layoutGraph); });\n });\n};\nconst runLayout = (g, time, opts) => {\n time(\" removeSelfEdges\", () => { removeSelfEdges(g); });\n time(\" acyclic\", () => { _acyclic__WEBPACK_IMPORTED_MODULE_0__[\"default\"].run(g); });\n time(\" nestingGraph.run\", () => { _nesting_graph__WEBPACK_IMPORTED_MODULE_5__[\"default\"].run(g); });\n time(\" rank\", () => { Object(_rank__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", () => { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", () => { Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"removeEmptyRanks\"])(g); });\n time(\" nestingGraph.cleanup\", () => { _nesting_graph__WEBPACK_IMPORTED_MODULE_5__[\"default\"].cleanup(g); });\n time(\" normalizeRanks\", () => { Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"normalizeRanks\"])(g); });\n time(\" assignRankMinMax\", () => { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", () => { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", () => { _normalize__WEBPACK_IMPORTED_MODULE_1__[\"default\"].run(g); });\n time(\" parentDummyChains\", () => { Object(_parent_dummy_chains__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(g); });\n time(\" addBorderSegments\", () => { Object(_add_border_segments__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(g); });\n if (opts && opts.keepNodeOrder) {\n time(\" initDataOrder\", () => { Object(_order_init_data_order__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(g, opts.nodeOrder); });\n }\n time(\" order\", () => { Object(_order__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(g); });\n time(\" insertSelfEdges\", () => { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", () => { _coordinate_system__WEBPACK_IMPORTED_MODULE_7__[\"default\"].adjust(g); });\n time(\" position\", () => { Object(_position__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(g); });\n time(\" positionSelfEdges\", () => { positionSelfEdges(g); });\n time(\" removeBorderNodes\", () => { removeBorderNodes(g); });\n time(\" normalize.undo\", () => { _normalize__WEBPACK_IMPORTED_MODULE_1__[\"default\"].undo(g); });\n time(\" fixupEdgeLabelCoords\", () => { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", () => { _coordinate_system__WEBPACK_IMPORTED_MODULE_7__[\"default\"].undo(g); });\n time(\" translateGraph\", () => { translateGraph(g); });\n time(\" assignNodeIntersects\", () => { assignNodeIntersects(g); });\n time(\" reversePoints\", () => { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", () => { _acyclic__WEBPACK_IMPORTED_MODULE_0__[\"default\"].undo(g); });\n};\n/**\n * 继承上一个布局中的order,防止翻转\n * TODO: 暂时没有考虑涉及层级变动的布局,只保证原来布局层级和相对顺序不变\n */\nconst inheritOrder = (currG, prevG) => {\n const prevNodeMap = prevG._nodes || {};\n currG.nodes().forEach((n) => {\n const node = currG.node(n);\n if (prevNodeMap[n] !== undefined) {\n node.fixorder = prevNodeMap[n]._order;\n delete prevNodeMap[n]._order;\n }\n else {\n delete node.fixorder;\n }\n });\n};\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nconst updateInputGraph = (inputGraph, layoutGraph) => {\n inputGraph.nodes().forEach((v) => {\n var _a;\n const inputLabel = inputGraph.node(v);\n const layoutLabel = layoutGraph.node(v);\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n inputLabel._order = layoutLabel.order;\n inputLabel._rank = layoutLabel.rank;\n if ((_a = layoutGraph.children(v)) === null || _a === void 0 ? void 0 : _a.length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n inputGraph.edges().forEach((e) => {\n const inputLabel = inputGraph.edge(e);\n const layoutLabel = layoutGraph.edge(e);\n inputLabel.points = layoutLabel.points;\n if (layoutLabel.hasOwnProperty(\"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n};\nconst graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nconst graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nconst graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nconst nodeNumAttrs = [\"width\", \"height\", \"layer\", \"fixorder\"]; // 需要传入layer, fixOrder作为参数参考\nconst nodeDefaults = { width: 0, height: 0 };\nconst edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nconst edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n};\nconst edgeAttrs = [\"labelpos\"];\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nconst buildLayoutGraph = (inputGraph) => {\n const g = new Graph({ multigraph: true, compound: true });\n const graph = canonicalize(inputGraph.graph());\n const pickedProperties = {};\n graphAttrs === null || graphAttrs === void 0 ? void 0 : graphAttrs.forEach((key) => {\n if (graph[key] !== undefined)\n pickedProperties[key] = graph[key];\n });\n g.setGraph(Object.assign({}, graphDefaults, selectNumberAttrs(graph, graphNumAttrs), pickedProperties));\n inputGraph.nodes().forEach((v) => {\n const node = canonicalize(inputGraph.node(v));\n const defaultAttrs = selectNumberAttrs(node, nodeNumAttrs);\n Object.keys(nodeDefaults).forEach((key) => {\n if (defaultAttrs[key] === undefined) {\n defaultAttrs[key] = nodeDefaults[key];\n }\n });\n g.setNode(v, defaultAttrs);\n g.setParent(v, inputGraph.parent(v));\n });\n inputGraph.edges().forEach((e) => {\n const edge = canonicalize(inputGraph.edge(e));\n const pickedProperties = {};\n edgeAttrs === null || edgeAttrs === void 0 ? void 0 : edgeAttrs.forEach((key) => {\n if (edge[key] !== undefined)\n pickedProperties[key] = edge[key];\n });\n g.setEdge(e, Object.assign({}, edgeDefaults, selectNumberAttrs(edge, edgeNumAttrs), pickedProperties));\n });\n return g;\n};\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nconst makeSpaceForEdgeLabels = (g) => {\n const graph = g.graph();\n if (!graph.ranksep)\n graph.ranksep = 0;\n graph.ranksep /= 2;\n g.nodes().forEach((n) => {\n const node = g.node(n);\n if (!isNaN(node.layer)) {\n if (!node.layer)\n node.layer = 0;\n else\n node.layer *= 2; // TODO: 因为默认的rank变为两倍,设定的layer也*2\n }\n });\n g.edges().forEach((e) => {\n var _a;\n const edge = g.edge(e);\n edge.minlen *= 2;\n if (((_a = edge.labelpos) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n }\n else {\n edge.height += edge.labeloffset;\n }\n }\n });\n};\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nconst injectEdgeLabelProxies = (g) => {\n g.edges().forEach((e) => {\n const edge = g.edge(e);\n if (edge.width && edge.height) {\n const v = g.node(e.v);\n const w = g.node(e.w);\n const label = { e, rank: (w.rank - v.rank) / 2 + v.rank };\n _util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n};\nconst assignRankMinMax = (g) => {\n let maxRank = 0;\n g.nodes().forEach((v) => {\n const node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = Math.max(maxRank, node.maxRank || -Infinity);\n }\n });\n g.graph().maxRank = maxRank;\n};\nconst removeEdgeLabelProxies = (g) => {\n g.nodes().forEach((v) => {\n const node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n};\nconst translateGraph = (g) => {\n let minX = Number.POSITIVE_INFINITY;\n let maxX = 0;\n let minY = Number.POSITIVE_INFINITY;\n let maxY = 0;\n const graphLabel = g.graph();\n const marginX = graphLabel.marginx || 0;\n const marginY = graphLabel.marginy || 0;\n const getExtremes = (attrs) => {\n if (!attrs)\n return;\n const x = attrs.x;\n const y = attrs.y;\n const w = attrs.width;\n const h = attrs.height;\n if (!isNaN(x) && !isNaN(w)) {\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n }\n if (!isNaN(y) && !isNaN(h)) {\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n };\n g.nodes().forEach((v) => { getExtremes(g.node(v)); });\n g.edges().forEach((e) => {\n const edge = g.edge(e);\n if (edge.hasOwnProperty(\"x\")) {\n getExtremes(edge);\n }\n });\n minX -= marginX;\n minY -= marginY;\n g.nodes().forEach((v) => {\n const node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n g.edges().forEach((e) => {\n var _a;\n const edge = g.edge(e);\n (_a = edge.points) === null || _a === void 0 ? void 0 : _a.forEach((p) => {\n p.x -= minX;\n p.y -= minY;\n });\n if (edge.hasOwnProperty(\"x\")) {\n edge.x -= minX;\n }\n if (edge.hasOwnProperty(\"y\")) {\n edge.y -= minY;\n }\n });\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n};\nconst assignNodeIntersects = (g) => {\n g.edges().forEach((e) => {\n const edge = g.edge(e);\n const nodeV = g.node(e.v);\n const nodeW = g.node(e.w);\n let p1;\n let p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n }\n else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(_util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].intersectRect(nodeV, p1));\n edge.points.push(_util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].intersectRect(nodeW, p2));\n });\n};\nconst fixupEdgeLabelCoords = (g) => {\n g.edges().forEach((e) => {\n const edge = g.edge(e);\n if (edge.hasOwnProperty(\"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\":\n edge.x -= edge.width / 2 + edge.labeloffset;\n break;\n case \"r\":\n edge.x += edge.width / 2 + edge.labeloffset;\n break;\n }\n }\n });\n};\nconst reversePointsForReversedEdges = (g) => {\n g.edges().forEach((e) => {\n const edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n};\nconst removeBorderNodes = (g) => {\n g.nodes().forEach((v) => {\n var _a, _b, _c;\n if ((_a = g.children(v)) === null || _a === void 0 ? void 0 : _a.length) {\n const node = g.node(v);\n const t = g.node(node.borderTop);\n const b = g.node(node.borderBottom);\n const l = g.node(node.borderLeft[((_b = node.borderLeft) === null || _b === void 0 ? void 0 : _b.length) - 1]);\n const r = g.node(node.borderRight[((_c = node.borderRight) === null || _c === void 0 ? void 0 : _c.length) - 1]);\n node.width = Math.abs((r === null || r === void 0 ? void 0 : r.x) - (l === null || l === void 0 ? void 0 : l.x)) || 10;\n node.height = Math.abs((b === null || b === void 0 ? void 0 : b.y) - (t === null || t === void 0 ? void 0 : t.y)) || 10;\n node.x = ((l === null || l === void 0 ? void 0 : l.x) || 0) + node.width / 2;\n node.y = ((t === null || t === void 0 ? void 0 : t.y) || 0) + node.height / 2;\n }\n });\n g.nodes().forEach((v) => {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n};\nconst removeSelfEdges = (g) => {\n g.edges().forEach((e) => {\n if (e.v === e.w) {\n const node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n};\nconst insertSelfEdges = (g) => {\n const layers = _util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].buildLayerMatrix(g);\n layers === null || layers === void 0 ? void 0 : layers.forEach((layer) => {\n let orderShift = 0;\n layer === null || layer === void 0 ? void 0 : layer.forEach((v, i) => {\n var _a;\n const node = g.node(v);\n node.order = i + orderShift;\n (_a = node.selfEdges) === null || _a === void 0 ? void 0 : _a.forEach((selfEdge) => {\n _util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n};\nconst positionSelfEdges = (g) => {\n g.nodes().forEach((v) => {\n const node = g.node(v);\n if (node.dummy === \"selfedge\") {\n const selfNode = g.node(node.e.v);\n const x = selfNode.x + selfNode.width / 2;\n const y = selfNode.y;\n const dx = node.x - x;\n const dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { y, x: x + dx },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n};\nconst selectNumberAttrs = (obj, attrs) => {\n const pickedProperties = {};\n attrs === null || attrs === void 0 ? void 0 : attrs.forEach((key) => {\n if (obj[key] === undefined)\n return;\n pickedProperties[key] = (+obj[key]);\n });\n return pickedProperties;\n};\nconst canonicalize = (attrs) => {\n const newAttrs = {};\n Object.keys(attrs).forEach((k) => {\n const v = attrs[k];\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (layout);\n//# sourceMappingURL=layout.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvbGF5b3V0LmpzPzNmYTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBZ0M7QUFDSTtBQUNWO0FBQ3NDO0FBQ1Y7QUFDWDtBQUNXO0FBQ0g7QUFDdkI7QUFDTTtBQUNBO0FBQ2tCO0FBQ3BELGNBQWMsa0RBQVE7QUFDdEI7QUFDQSw0Q0FBNEMsNkNBQUksUUFBUSw2Q0FBSTtBQUM1RDtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsaUNBQWlDLEVBQUU7QUFDN0U7QUFDQSw4REFBOEQsNEJBQTRCLEVBQUU7QUFDNUY7QUFDQTtBQUNBLG9EQUFvRCxxQ0FBcUMsRUFBRTtBQUMzRjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsb0NBQW9DLEVBQUU7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxrQ0FBa0MsRUFBRTtBQUM5RSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHVDQUF1QyxvQkFBb0IsRUFBRTtBQUM3RCwrQkFBK0IsQ0FBQyxnREFBTyxRQUFRLEVBQUU7QUFDakQsd0NBQXdDLENBQUMsc0RBQVksUUFBUSxFQUFFO0FBQy9ELDRCQUE0QixDQUFDLHFEQUFJLENBQUMsNkNBQUksd0JBQXdCLEVBQUU7QUFDaEUsOENBQThDLDJCQUEyQixFQUFFO0FBQzNFLHdDQUF3QyxDQUFDLDhEQUFnQixJQUFJLEVBQUU7QUFDL0QsNENBQTRDLENBQUMsc0RBQVksWUFBWSxFQUFFO0FBQ3ZFLHNDQUFzQyxDQUFDLDREQUFjLElBQUksRUFBRTtBQUMzRCx3Q0FBd0MscUJBQXFCLEVBQUU7QUFDL0QsOENBQThDLDJCQUEyQixFQUFFO0FBQzNFLHFDQUFxQyxDQUFDLGtEQUFTLFFBQVEsRUFBRTtBQUN6RCx5Q0FBeUMsQ0FBQyxvRUFBaUIsSUFBSSxFQUFFO0FBQ2pFLHlDQUF5QyxDQUFDLG9FQUFpQixJQUFJLEVBQUU7QUFDakU7QUFDQSx5Q0FBeUMsQ0FBQyx1RUFBYSxvQkFBb0IsRUFBRTtBQUM3RTtBQUNBLDZCQUE2QixDQUFDLHNEQUFLLElBQUksRUFBRTtBQUN6Qyx1Q0FBdUMsb0JBQW9CLEVBQUU7QUFDN0QsOENBQThDLENBQUMsMERBQWdCLFdBQVcsRUFBRTtBQUM1RSxnQ0FBZ0MsQ0FBQyx5REFBUSxJQUFJLEVBQUU7QUFDL0MseUNBQXlDLHNCQUFzQixFQUFFO0FBQ2pFLHlDQUF5QyxzQkFBc0IsRUFBRTtBQUNqRSxzQ0FBc0MsQ0FBQyxrREFBUyxTQUFTLEVBQUU7QUFDM0QsNENBQTRDLHlCQUF5QixFQUFFO0FBQ3ZFLDRDQUE0QyxDQUFDLDBEQUFnQixTQUFTLEVBQUU7QUFDeEUsc0NBQXNDLG1CQUFtQixFQUFFO0FBQzNELDRDQUE0Qyx5QkFBeUIsRUFBRTtBQUN2RSxxQ0FBcUMsa0NBQWtDLEVBQUU7QUFDekUsb0NBQW9DLENBQUMsZ0RBQU8sU0FBUyxFQUFFO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQSw4REFBOEQ7QUFDOUQsc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLG1DQUFtQztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxxQ0FBcUM7QUFDckMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0IsWUFBWSw2Q0FBSTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsd0JBQXdCLEVBQUU7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw2Q0FBSTtBQUNoQyx5QkFBeUIsNkNBQUk7QUFDN0IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsc0JBQXNCO0FBQ3ZEO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLG1CQUFtQiw2Q0FBSTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw2Q0FBSTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwrQkFBK0I7QUFDaEQsaUJBQWlCLCtCQUErQjtBQUNoRCxpQkFBaUIsZUFBZTtBQUNoQyxpQkFBaUIsK0JBQStCO0FBQ2hELGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ2UscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2RhZ3JlL3NyYy9sYXlvdXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYWN5Y2xpYyBmcm9tICcuL2FjeWNsaWMnO1xuaW1wb3J0IG5vcm1hbGl6ZSBmcm9tICcuL25vcm1hbGl6ZSc7XG5pbXBvcnQgcmFuayBmcm9tICcuL3JhbmsnO1xuaW1wb3J0IHV0aWwsIHsgbm9ybWFsaXplUmFua3MsIHJlbW92ZUVtcHR5UmFua3MgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHBhcmVudER1bW15Q2hhaW5zIGZyb20gJy4vcGFyZW50LWR1bW15LWNoYWlucyc7XG5pbXBvcnQgbmVzdGluZ0dyYXBoIGZyb20gJy4vbmVzdGluZy1ncmFwaCc7XG5pbXBvcnQgYWRkQm9yZGVyU2VnbWVudHMgZnJvbSAnLi9hZGQtYm9yZGVyLXNlZ21lbnRzJztcbmltcG9ydCBjb29yZGluYXRlU3lzdGVtIGZyb20gJy4vY29vcmRpbmF0ZS1zeXN0ZW0nO1xuaW1wb3J0IG9yZGVyIGZyb20gJy4vb3JkZXInO1xuaW1wb3J0IHBvc2l0aW9uIGZyb20gJy4vcG9zaXRpb24nO1xuaW1wb3J0IGdyYXBobGliIGZyb20gJy4vZ3JhcGhsaWInO1xuaW1wb3J0IGluaXREYXRhT3JkZXIgZnJvbSAnLi9vcmRlci9pbml0LWRhdGEtb3JkZXInO1xuY29uc3QgR3JhcGggPSBncmFwaGxpYi5HcmFwaDtcbmNvbnN0IGxheW91dCA9IChnLCBvcHRzKSA9PiB7XG4gICAgY29uc3QgdGltZSA9IG9wdHMgJiYgb3B0cy5kZWJ1Z1RpbWluZyA/IHV0aWwudGltZSA6IHV0aWwubm90aW1lO1xuICAgIHRpbWUoXCJsYXlvdXRcIiwgKCkgPT4ge1xuICAgICAgICAvLyDlpoLmnpzlnKjljp/lm77ln7rnoYDkuIrkv67mlLnvvIznu6fmib/ljp/lm77nmoRvcmRlcue7k+aenFxuICAgICAgICBpZiAob3B0cyAmJiAhb3B0cy5rZWVwTm9kZU9yZGVyICYmIG9wdHMucHJldkdyYXBoKSB7XG4gICAgICAgICAgICB0aW1lKFwiICBpbmhlcml0T3JkZXJcIiwgKCkgPT4geyBpbmhlcml0T3JkZXIoZywgb3B0cy5wcmV2R3JhcGgpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXlvdXRHcmFwaCA9IHRpbWUoXCIgIGJ1aWxkTGF5b3V0R3JhcGhcIiwgKCkgPT4geyByZXR1cm4gYnVpbGRMYXlvdXRHcmFwaChnKTsgfSk7XG4gICAgICAgIC8vIOaOp+WItuaYr+WQpuS4uui+ueeahGxhYmVs55WZ5L2N572u77yI6L+Z5Lya5b2x5ZON5piv5ZCm5Zyo6L655Lit6Ze05re75YqgZHVtbXkgbm9kZe+8iVxuICAgICAgICBpZiAoIShvcHRzICYmIChvcHRzLmVkZ2VMYWJlbFNwYWNlID09PSBmYWxzZSkpKSB7XG4gICAgICAgICAgICB0aW1lKFwiICBtYWtlU3BhY2VGb3JFZGdlTGFiZWxzXCIsICgpID0+IHsgbWFrZVNwYWNlRm9yRWRnZUxhYmVscyhsYXlvdXRHcmFwaCk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE86IOaaguaXtuWkhOeQhuWxgue6p+iuvue9ruS4jeato+ehruaXtueahOW8guW4uOaKpemUme+8jOaPkOekuuiuvue9ruato+ehrueahOWxgue6p1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGltZShcIiAgcnVuTGF5b3V0XCIsICgpID0+IHsgcnVuTGF5b3V0KGxheW91dEdyYXBoLCB0aW1lLCBvcHRzKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlLm1lc3NhZ2UgPT09IFwiTm90IHBvc3NpYmxlIHRvIGZpbmQgaW50ZXJzZWN0aW9uIGluc2lkZSBvZiB0aGUgcmVjdGFuZ2xlXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgZm9sbG93aW5nIGVycm9yIG1heSBiZSBjYXVzZWQgYnkgaW1wcm9wZXIgbGF5ZXIgc2V0dGluZywgcGxlYXNlIG1ha2Ugc3VyZSB5b3VyIG1hbnVhbCBsYXllciBzZXR0aW5nIGRvZXMgbm90IHZpb2xhdGUgdGhlIGdyYXBoXFwncyBzdHJ1Y3R1cmU6XFxuJywgZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgKGUpO1xuICAgICAgICB9XG4gICAgICAgIHRpbWUoXCIgIHVwZGF0ZUlucHV0R3JhcGhcIiwgKCkgPT4geyB1cGRhdGVJbnB1dEdyYXBoKGcsIGxheW91dEdyYXBoKTsgfSk7XG4gICAgfSk7XG59O1xuY29uc3QgcnVuTGF5b3V0ID0gKGcsIHRpbWUsIG9wdHMpID0+IHtcbiAgICB0aW1lKFwiICAgIHJlbW92ZVNlbGZFZGdlc1wiLCAoKSA9PiB7IHJlbW92ZVNlbGZFZGdlcyhnKTsgfSk7XG4gICAgdGltZShcIiAgICBhY3ljbGljXCIsICgpID0+IHsgYWN5Y2xpYy5ydW4oZyk7IH0pO1xuICAgIHRpbWUoXCIgICAgbmVzdGluZ0dyYXBoLnJ1blwiLCAoKSA9PiB7IG5lc3RpbmdHcmFwaC5ydW4oZyk7IH0pO1xuICAgIHRpbWUoXCIgICAgcmFua1wiLCAoKSA9PiB7IHJhbmsodXRpbC5hc05vbkNvbXBvdW5kR3JhcGgoZykpOyB9KTtcbiAgICB0aW1lKFwiICAgIGluamVjdEVkZ2VMYWJlbFByb3hpZXNcIiwgKCkgPT4geyBpbmplY3RFZGdlTGFiZWxQcm94aWVzKGcpOyB9KTtcbiAgICB0aW1lKFwiICAgIHJlbW92ZUVtcHR5UmFua3NcIiwgKCkgPT4geyByZW1vdmVFbXB0eVJhbmtzKGcpOyB9KTtcbiAgICB0aW1lKFwiICAgIG5lc3RpbmdHcmFwaC5jbGVhbnVwXCIsICgpID0+IHsgbmVzdGluZ0dyYXBoLmNsZWFudXAoZyk7IH0pO1xuICAgIHRpbWUoXCIgICAgbm9ybWFsaXplUmFua3NcIiwgKCkgPT4geyBub3JtYWxpemVSYW5rcyhnKTsgfSk7XG4gICAgdGltZShcIiAgICBhc3NpZ25SYW5rTWluTWF4XCIsICgpID0+IHsgYXNzaWduUmFua01pbk1heChnKTsgfSk7XG4gICAgdGltZShcIiAgICByZW1vdmVFZGdlTGFiZWxQcm94aWVzXCIsICgpID0+IHsgcmVtb3ZlRWRnZUxhYmVsUHJveGllcyhnKTsgfSk7XG4gICAgdGltZShcIiAgICBub3JtYWxpemUucnVuXCIsICgpID0+IHsgbm9ybWFsaXplLnJ1bihnKTsgfSk7XG4gICAgdGltZShcIiAgICBwYXJlbnREdW1teUNoYWluc1wiLCAoKSA9PiB7IHBhcmVudER1bW15Q2hhaW5zKGcpOyB9KTtcbiAgICB0aW1lKFwiICAgIGFkZEJvcmRlclNlZ21lbnRzXCIsICgpID0+IHsgYWRkQm9yZGVyU2VnbWVudHMoZyk7IH0pO1xuICAgIGlmIChvcHRzICYmIG9wdHMua2VlcE5vZGVPcmRlcikge1xuICAgICAgICB0aW1lKFwiICAgIGluaXREYXRhT3JkZXJcIiwgKCkgPT4geyBpbml0RGF0YU9yZGVyKGcsIG9wdHMubm9kZU9yZGVyKTsgfSk7XG4gICAgfVxuICAgIHRpbWUoXCIgICAgb3JkZXJcIiwgKCkgPT4geyBvcmRlcihnKTsgfSk7XG4gICAgdGltZShcIiAgICBpbnNlcnRTZWxmRWRnZXNcIiwgKCkgPT4geyBpbnNlcnRTZWxmRWRnZXMoZyk7IH0pO1xuICAgIHRpbWUoXCIgICAgYWRqdXN0Q29vcmRpbmF0ZVN5c3RlbVwiLCAoKSA9PiB7IGNvb3JkaW5hdGVTeXN0ZW0uYWRqdXN0KGcpOyB9KTtcbiAgICB0aW1lKFwiICAgIHBvc2l0aW9uXCIsICgpID0+IHsgcG9zaXRpb24oZyk7IH0pO1xuICAgIHRpbWUoXCIgICAgcG9zaXRpb25TZWxmRWRnZXNcIiwgKCkgPT4geyBwb3NpdGlvblNlbGZFZGdlcyhnKTsgfSk7XG4gICAgdGltZShcIiAgICByZW1vdmVCb3JkZXJOb2Rlc1wiLCAoKSA9PiB7IHJlbW92ZUJvcmRlck5vZGVzKGcpOyB9KTtcbiAgICB0aW1lKFwiICAgIG5vcm1hbGl6ZS51bmRvXCIsICgpID0+IHsgbm9ybWFsaXplLnVuZG8oZyk7IH0pO1xuICAgIHRpbWUoXCIgICAgZml4dXBFZGdlTGFiZWxDb29yZHNcIiwgKCkgPT4geyBmaXh1cEVkZ2VMYWJlbENvb3JkcyhnKTsgfSk7XG4gICAgdGltZShcIiAgICB1bmRvQ29vcmRpbmF0ZVN5c3RlbVwiLCAoKSA9PiB7IGNvb3JkaW5hdGVTeXN0ZW0udW5kbyhnKTsgfSk7XG4gICAgdGltZShcIiAgICB0cmFuc2xhdGVHcmFwaFwiLCAoKSA9PiB7IHRyYW5zbGF0ZUdyYXBoKGcpOyB9KTtcbiAgICB0aW1lKFwiICAgIGFzc2lnbk5vZGVJbnRlcnNlY3RzXCIsICgpID0+IHsgYXNzaWduTm9kZUludGVyc2VjdHMoZyk7IH0pO1xuICAgIHRpbWUoXCIgICAgcmV2ZXJzZVBvaW50c1wiLCAoKSA9PiB7IHJldmVyc2VQb2ludHNGb3JSZXZlcnNlZEVkZ2VzKGcpOyB9KTtcbiAgICB0aW1lKFwiICAgIGFjeWNsaWMudW5kb1wiLCAoKSA9PiB7IGFjeWNsaWMudW5kbyhnKTsgfSk7XG59O1xuLyoqXG4gKiDnu6fmib/kuIrkuIDkuKrluIPlsYDkuK3nmoRvcmRlcu+8jOmYsuatoue/u+i9rFxuICogVE9ETzog5pqC5pe25rKh5pyJ6ICD6JmR5raJ5Y+K5bGC57qn5Y+Y5Yqo55qE5biD5bGA77yM5Y+q5L+d6K+B5Y6f5p2l5biD5bGA5bGC57qn5ZKM55u45a+56aG65bqP5LiN5Y+YXG4gKi9cbmNvbnN0IGluaGVyaXRPcmRlciA9IChjdXJyRywgcHJldkcpID0+IHtcbiAgICBjb25zdCBwcmV2Tm9kZU1hcCA9IHByZXZHLl9ub2RlcyB8fCB7fTtcbiAgICBjdXJyRy5ub2RlcygpLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGN1cnJHLm5vZGUobik7XG4gICAgICAgIGlmIChwcmV2Tm9kZU1hcFtuXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBub2RlLmZpeG9yZGVyID0gcHJldk5vZGVNYXBbbl0uX29yZGVyO1xuICAgICAgICAgICAgZGVsZXRlIHByZXZOb2RlTWFwW25dLl9vcmRlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBub2RlLmZpeG9yZGVyO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuLypcbiAqIENvcGllcyBmaW5hbCBsYXlvdXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbGF5b3V0IGdyYXBoIGJhY2sgdG8gdGhlIGlucHV0XG4gKiBncmFwaC4gVGhpcyBwcm9jZXNzIG9ubHkgY29waWVzIHdoaXRlbGlzdGVkIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbGF5b3V0IGdyYXBoXG4gKiB0byB0aGUgaW5wdXQgZ3JhcGgsIHNvIGl0IHNlcnZlcyBhcyBhIGdvb2QgcGxhY2UgdG8gZGV0ZXJtaW5lIHdoYXRcbiAqIGF0dHJpYnV0ZXMgY2FuIGluZmx1ZW5jZSBsYXlvdXQuXG4gKi9cbmNvbnN0IHVwZGF0ZUlucHV0R3JhcGggPSAoaW5wdXRHcmFwaCwgbGF5b3V0R3JhcGgpID0+IHtcbiAgICBpbnB1dEdyYXBoLm5vZGVzKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGlucHV0TGFiZWwgPSBpbnB1dEdyYXBoLm5vZGUodik7XG4gICAgICAgIGNvbnN0IGxheW91dExhYmVsID0gbGF5b3V0R3JhcGgubm9kZSh2KTtcbiAgICAgICAgaWYgKGlucHV0TGFiZWwpIHtcbiAgICAgICAgICAgIGlucHV0TGFiZWwueCA9IGxheW91dExhYmVsLng7XG4gICAgICAgICAgICBpbnB1dExhYmVsLnkgPSBsYXlvdXRMYWJlbC55O1xuICAgICAgICAgICAgaW5wdXRMYWJlbC5fb3JkZXIgPSBsYXlvdXRMYWJlbC5vcmRlcjtcbiAgICAgICAgICAgIGlucHV0TGFiZWwuX3JhbmsgPSBsYXlvdXRMYWJlbC5yYW5rO1xuICAgICAgICAgICAgaWYgKChfYSA9IGxheW91dEdyYXBoLmNoaWxkcmVuKHYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaW5wdXRMYWJlbC53aWR0aCA9IGxheW91dExhYmVsLndpZHRoO1xuICAgICAgICAgICAgICAgIGlucHV0TGFiZWwuaGVpZ2h0ID0gbGF5b3V0TGFiZWwuaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgaW5wdXRHcmFwaC5lZGdlcygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXRMYWJlbCA9IGlucHV0R3JhcGguZWRnZShlKTtcbiAgICAgICAgY29uc3QgbGF5b3V0TGFiZWwgPSBsYXlvdXRHcmFwaC5lZGdlKGUpO1xuICAgICAgICBpbnB1dExhYmVsLnBvaW50cyA9IGxheW91dExhYmVsLnBvaW50cztcbiAgICAgICAgaWYgKGxheW91dExhYmVsLmhhc093blByb3BlcnR5KFwieFwiKSkge1xuICAgICAgICAgICAgaW5wdXRMYWJlbC54ID0gbGF5b3V0TGFiZWwueDtcbiAgICAgICAgICAgIGlucHV0TGFiZWwueSA9IGxheW91dExhYmVsLnk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpbnB1dEdyYXBoLmdyYXBoKCkud2lkdGggPSBsYXlvdXRHcmFwaC5ncmFwaCgpLndpZHRoO1xuICAgIGlucHV0R3JhcGguZ3JhcGgoKS5oZWlnaHQgPSBsYXlvdXRHcmFwaC5ncmFwaCgpLmhlaWdodDtcbn07XG5jb25zdCBncmFwaE51bUF0dHJzID0gW1wibm9kZXNlcFwiLCBcImVkZ2VzZXBcIiwgXCJyYW5rc2VwXCIsIFwibWFyZ2lueFwiLCBcIm1hcmdpbnlcIl07XG5jb25zdCBncmFwaERlZmF1bHRzID0geyByYW5rc2VwOiA1MCwgZWRnZXNlcDogMjAsIG5vZGVzZXA6IDUwLCByYW5rZGlyOiBcInRiXCIgfTtcbmNvbnN0IGdyYXBoQXR0cnMgPSBbXCJhY3ljbGljZXJcIiwgXCJyYW5rZXJcIiwgXCJyYW5rZGlyXCIsIFwiYWxpZ25cIl07XG5jb25zdCBub2RlTnVtQXR0cnMgPSBbXCJ3aWR0aFwiLCBcImhlaWdodFwiLCBcImxheWVyXCIsIFwiZml4b3JkZXJcIl07IC8vIOmcgOimgeS8oOWFpWxheWVyLCBmaXhPcmRlcuS9nOS4uuWPguaVsOWPguiAg1xuY29uc3Qgbm9kZURlZmF1bHRzID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XG5jb25zdCBlZGdlTnVtQXR0cnMgPSBbXCJtaW5sZW5cIiwgXCJ3ZWlnaHRcIiwgXCJ3aWR0aFwiLCBcImhlaWdodFwiLCBcImxhYmVsb2Zmc2V0XCJdO1xuY29uc3QgZWRnZURlZmF1bHRzID0ge1xuICAgIG1pbmxlbjogMSwgd2VpZ2h0OiAxLCB3aWR0aDogMCwgaGVpZ2h0OiAwLFxuICAgIGxhYmVsb2Zmc2V0OiAxMCwgbGFiZWxwb3M6IFwiclwiXG59O1xuY29uc3QgZWRnZUF0dHJzID0gW1wibGFiZWxwb3NcIl07XG4vKlxuICogQ29uc3RydWN0cyBhIG5ldyBncmFwaCBmcm9tIHRoZSBpbnB1dCBncmFwaCwgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGxheW91dC5cbiAqIFRoaXMgcHJvY2VzcyBjb3BpZXMgb25seSB3aGl0ZWxpc3RlZCBhdHRyaWJ1dGVzIGZyb20gdGhlIGlucHV0IGdyYXBoIHRvIHRoZVxuICogbGF5b3V0IGdyYXBoLiBUaHVzIHRoaXMgZnVuY3Rpb24gc2VydmVzIGFzIGEgZ29vZCBwbGFjZSB0byBkZXRlcm1pbmUgd2hhdFxuICogYXR0cmlidXRlcyBjYW4gaW5mbHVlbmNlIGxheW91dC5cbiAqL1xuY29uc3QgYnVpbGRMYXlvdXRHcmFwaCA9IChpbnB1dEdyYXBoKSA9PiB7XG4gICAgY29uc3QgZyA9IG5ldyBHcmFwaCh7IG11bHRpZ3JhcGg6IHRydWUsIGNvbXBvdW5kOiB0cnVlIH0pO1xuICAgIGNvbnN0IGdyYXBoID0gY2Fub25pY2FsaXplKGlucHV0R3JhcGguZ3JhcGgoKSk7XG4gICAgY29uc3QgcGlja2VkUHJvcGVydGllcyA9IHt9O1xuICAgIGdyYXBoQXR0cnMgPT09IG51bGwgfHwgZ3JhcGhBdHRycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ3JhcGhBdHRycy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKGdyYXBoW2tleV0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHBpY2tlZFByb3BlcnRpZXNba2V5XSA9IGdyYXBoW2tleV07XG4gICAgfSk7XG4gICAgZy5zZXRHcmFwaChPYmplY3QuYXNzaWduKHt9LCBncmFwaERlZmF1bHRzLCBzZWxlY3ROdW1iZXJBdHRycyhncmFwaCwgZ3JhcGhOdW1BdHRycyksIHBpY2tlZFByb3BlcnRpZXMpKTtcbiAgICBpbnB1dEdyYXBoLm5vZGVzKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICBjb25zdCBub2RlID0gY2Fub25pY2FsaXplKGlucHV0R3JhcGgubm9kZSh2KSk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRBdHRycyA9IHNlbGVjdE51bWJlckF0dHJzKG5vZGUsIG5vZGVOdW1BdHRycyk7XG4gICAgICAgIE9iamVjdC5rZXlzKG5vZGVEZWZhdWx0cykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoZGVmYXVsdEF0dHJzW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRBdHRyc1trZXldID0gbm9kZURlZmF1bHRzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBnLnNldE5vZGUodiwgZGVmYXVsdEF0dHJzKTtcbiAgICAgICAgZy5zZXRQYXJlbnQodiwgaW5wdXRHcmFwaC5wYXJlbnQodikpO1xuICAgIH0pO1xuICAgIGlucHV0R3JhcGguZWRnZXMoKS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIGNvbnN0IGVkZ2UgPSBjYW5vbmljYWxpemUoaW5wdXRHcmFwaC5lZGdlKGUpKTtcbiAgICAgICAgY29uc3QgcGlja2VkUHJvcGVydGllcyA9IHt9O1xuICAgICAgICBlZGdlQXR0cnMgPT09IG51bGwgfHwgZWRnZUF0dHJzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlZGdlQXR0cnMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoZWRnZVtrZXldICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgcGlja2VkUHJvcGVydGllc1trZXldID0gZWRnZVtrZXldO1xuICAgICAgICB9KTtcbiAgICAgICAgZy5zZXRFZGdlKGUsIE9iamVjdC5hc3NpZ24oe30sIGVkZ2VEZWZhdWx0cywgc2VsZWN0TnVtYmVyQXR0cnMoZWRnZSwgZWRnZU51bUF0dHJzKSwgcGlja2VkUHJvcGVydGllcykpO1xuICAgIH0pO1xuICAgIHJldHVybiBnO1xufTtcbi8qXG4gKiBUaGlzIGlkZWEgY29tZXMgZnJvbSB0aGUgR2Fuc25lciBwYXBlcjogdG8gYWNjb3VudCBmb3IgZWRnZSBsYWJlbHMgaW4gb3VyXG4gKiBsYXlvdXQgd2Ugc3BsaXQgZWFjaCByYW5rIGluIGhhbGYgYnkgZG91YmxpbmcgbWlubGVuIGFuZCBoYWx2aW5nIHJhbmtzZXAuXG4gKiBUaGVuIHdlIGNhbiBwbGFjZSBsYWJlbHMgYXQgdGhlc2UgbWlkLXBvaW50cyBiZXR3ZWVuIG5vZGVzLlxuICpcbiAqIFdlIGFsc28gYWRkIHNvbWUgbWluaW1hbCBwYWRkaW5nIHRvIHRoZSB3aWR0aCB0byBwdXNoIHRoZSBsYWJlbCBmb3IgdGhlIGVkZ2VcbiAqIGF3YXkgZnJvbSB0aGUgZWRnZSBpdHNlbGYgYSBiaXQuXG4gKi9cbmNvbnN0IG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMgPSAoZykgPT4ge1xuICAgIGNvbnN0IGdyYXBoID0gZy5ncmFwaCgpO1xuICAgIGlmICghZ3JhcGgucmFua3NlcClcbiAgICAgICAgZ3JhcGgucmFua3NlcCA9IDA7XG4gICAgZ3JhcGgucmFua3NlcCAvPSAyO1xuICAgIGcubm9kZXMoKS5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBnLm5vZGUobik7XG4gICAgICAgIGlmICghaXNOYU4obm9kZS5sYXllcikpIHtcbiAgICAgICAgICAgIGlmICghbm9kZS5sYXllcilcbiAgICAgICAgICAgICAgICBub2RlLmxheWVyID0gMDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBub2RlLmxheWVyICo9IDI7IC8vIFRPRE86IOWboOS4uum7mOiupOeahHJhbmvlj5jkuLrkuKTlgI3vvIzorr7lrprnmoRsYXllcuS5nyoyXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBnLmVkZ2VzKCkuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgICAgIGVkZ2UubWlubGVuICo9IDI7XG4gICAgICAgIGlmICgoKF9hID0gZWRnZS5sYWJlbHBvcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvTG93ZXJDYXNlKCkpICE9PSBcImNcIikge1xuICAgICAgICAgICAgaWYgKGdyYXBoLnJhbmtkaXIgPT09IFwiVEJcIiB8fCBncmFwaC5yYW5rZGlyID09PSBcIkJUXCIpIHtcbiAgICAgICAgICAgICAgICBlZGdlLndpZHRoICs9IGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBlZGdlLmhlaWdodCArPSBlZGdlLmxhYmVsb2Zmc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59O1xuLypcbiAqIENyZWF0ZXMgdGVtcG9yYXJ5IGR1bW15IG5vZGVzIHRoYXQgY2FwdHVyZSB0aGUgcmFuayBpbiB3aGljaCBlYWNoIGVkZ2Unc1xuICogbGFiZWwgaXMgZ29pbmcgdG8sIGlmIGl0IGhhcyBvbmUgb2Ygbm9uLXplcm8gd2lkdGggYW5kIGhlaWdodC4gV2UgZG8gdGhpc1xuICogc28gdGhhdCB3ZSBjYW4gc2FmZWx5IHJlbW92ZSBlbXB0eSByYW5rcyB3aGlsZSBwcmVzZXJ2aW5nIGJhbGFuY2UgZm9yIHRoZVxuICogbGFiZWwncyBwb3NpdGlvbi5cbiAqL1xuY29uc3QgaW5qZWN0RWRnZUxhYmVsUHJveGllcyA9IChnKSA9PiB7XG4gICAgZy5lZGdlcygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgY29uc3QgZWRnZSA9IGcuZWRnZShlKTtcbiAgICAgICAgaWYgKGVkZ2Uud2lkdGggJiYgZWRnZS5oZWlnaHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSBnLm5vZGUoZS52KTtcbiAgICAgICAgICAgIGNvbnN0IHcgPSBnLm5vZGUoZS53KTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0geyBlLCByYW5rOiAody5yYW5rIC0gdi5yYW5rKSAvIDIgKyB2LnJhbmsgfTtcbiAgICAgICAgICAgIHV0aWwuYWRkRHVtbXlOb2RlKGcsIFwiZWRnZS1wcm94eVwiLCBsYWJlbCwgXCJfZXBcIik7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5jb25zdCBhc3NpZ25SYW5rTWluTWF4ID0gKGcpID0+IHtcbiAgICBsZXQgbWF4UmFuayA9IDA7XG4gICAgZy5ub2RlcygpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgICAgaWYgKG5vZGUuYm9yZGVyVG9wKSB7XG4gICAgICAgICAgICBub2RlLm1pblJhbmsgPSBnLm5vZGUobm9kZS5ib3JkZXJUb3ApLnJhbms7XG4gICAgICAgICAgICBub2RlLm1heFJhbmsgPSBnLm5vZGUobm9kZS5ib3JkZXJCb3R0b20pLnJhbms7XG4gICAgICAgICAgICBtYXhSYW5rID0gTWF0aC5tYXgobWF4UmFuaywgbm9kZS5tYXhSYW5rIHx8IC1JbmZpbml0eSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBnLmdyYXBoKCkubWF4UmFuayA9IG1heFJhbms7XG59O1xuY29uc3QgcmVtb3ZlRWRnZUxhYmVsUHJveGllcyA9IChnKSA9PiB7XG4gICAgZy5ub2RlcygpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgICAgaWYgKG5vZGUuZHVtbXkgPT09IFwiZWRnZS1wcm94eVwiKSB7XG4gICAgICAgICAgICBnLmVkZ2Uobm9kZS5lKS5sYWJlbFJhbmsgPSBub2RlLnJhbms7XG4gICAgICAgICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5jb25zdCB0cmFuc2xhdGVHcmFwaCA9IChnKSA9PiB7XG4gICAgbGV0IG1pblggPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgbGV0IG1heFggPSAwO1xuICAgIGxldCBtaW5ZID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgIGxldCBtYXhZID0gMDtcbiAgICBjb25zdCBncmFwaExhYmVsID0gZy5ncmFwaCgpO1xuICAgIGNvbnN0IG1hcmdpblggPSBncmFwaExhYmVsLm1hcmdpbnggfHwgMDtcbiAgICBjb25zdCBtYXJnaW5ZID0gZ3JhcGhMYWJlbC5tYXJnaW55IHx8IDA7XG4gICAgY29uc3QgZ2V0RXh0cmVtZXMgPSAoYXR0cnMpID0+IHtcbiAgICAgICAgaWYgKCFhdHRycylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgeCA9IGF0dHJzLng7XG4gICAgICAgIGNvbnN0IHkgPSBhdHRycy55O1xuICAgICAgICBjb25zdCB3ID0gYXR0cnMud2lkdGg7XG4gICAgICAgIGNvbnN0IGggPSBhdHRycy5oZWlnaHQ7XG4gICAgICAgIGlmICghaXNOYU4oeCkgJiYgIWlzTmFOKHcpKSB7XG4gICAgICAgICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgeCAtIHcgLyAyKTtcbiAgICAgICAgICAgIG1heFggPSBNYXRoLm1heChtYXhYLCB4ICsgdyAvIDIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNOYU4oeSkgJiYgIWlzTmFOKGgpKSB7XG4gICAgICAgICAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgeSAtIGggLyAyKTtcbiAgICAgICAgICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCB5ICsgaCAvIDIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBnLm5vZGVzKCkuZm9yRWFjaCgodikgPT4geyBnZXRFeHRyZW1lcyhnLm5vZGUodikpOyB9KTtcbiAgICBnLmVkZ2VzKCkuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICBjb25zdCBlZGdlID0gZy5lZGdlKGUpO1xuICAgICAgICBpZiAoZWRnZS5oYXNPd25Qcm9wZXJ0eShcInhcIikpIHtcbiAgICAgICAgICAgIGdldEV4dHJlbWVzKGVkZ2UpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgbWluWCAtPSBtYXJnaW5YO1xuICAgIG1pblkgLT0gbWFyZ2luWTtcbiAgICBnLm5vZGVzKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICBjb25zdCBub2RlID0gZy5ub2RlKHYpO1xuICAgICAgICBub2RlLnggLT0gbWluWDtcbiAgICAgICAgbm9kZS55IC09IG1pblk7XG4gICAgfSk7XG4gICAgZy5lZGdlcygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBlZGdlID0gZy5lZGdlKGUpO1xuICAgICAgICAoX2EgPSBlZGdlLnBvaW50cykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgICAgIHAueCAtPSBtaW5YO1xuICAgICAgICAgICAgcC55IC09IG1pblk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZWRnZS5oYXNPd25Qcm9wZXJ0eShcInhcIikpIHtcbiAgICAgICAgICAgIGVkZ2UueCAtPSBtaW5YO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlZGdlLmhhc093blByb3BlcnR5KFwieVwiKSkge1xuICAgICAgICAgICAgZWRnZS55IC09IG1pblk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBncmFwaExhYmVsLndpZHRoID0gbWF4WCAtIG1pblggKyBtYXJnaW5YO1xuICAgIGdyYXBoTGFiZWwuaGVpZ2h0ID0gbWF4WSAtIG1pblkgKyBtYXJnaW5ZO1xufTtcbmNvbnN0IGFzc2lnbk5vZGVJbnRlcnNlY3RzID0gKGcpID0+IHtcbiAgICBnLmVkZ2VzKCkuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICBjb25zdCBlZGdlID0gZy5lZGdlKGUpO1xuICAgICAgICBjb25zdCBub2RlViA9IGcubm9kZShlLnYpO1xuICAgICAgICBjb25zdCBub2RlVyA9IGcubm9kZShlLncpO1xuICAgICAgICBsZXQgcDE7XG4gICAgICAgIGxldCBwMjtcbiAgICAgICAgaWYgKCFlZGdlLnBvaW50cykge1xuICAgICAgICAgICAgZWRnZS5wb2ludHMgPSBbXTtcbiAgICAgICAgICAgIHAxID0gbm9kZVc7XG4gICAgICAgICAgICBwMiA9IG5vZGVWO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcDEgPSBlZGdlLnBvaW50c1swXTtcbiAgICAgICAgICAgIHAyID0gZWRnZS5wb2ludHNbZWRnZS5wb2ludHMubGVuZ3RoIC0gMV07XG4gICAgICAgIH1cbiAgICAgICAgZWRnZS5wb2ludHMudW5zaGlmdCh1dGlsLmludGVyc2VjdFJlY3Qobm9kZVYsIHAxKSk7XG4gICAgICAgIGVkZ2UucG9pbnRzLnB1c2godXRpbC5pbnRlcnNlY3RSZWN0KG5vZGVXLCBwMikpO1xuICAgIH0pO1xufTtcbmNvbnN0IGZpeHVwRWRnZUxhYmVsQ29vcmRzID0gKGcpID0+IHtcbiAgICBnLmVkZ2VzKCkuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICBjb25zdCBlZGdlID0gZy5lZGdlKGUpO1xuICAgICAgICBpZiAoZWRnZS5oYXNPd25Qcm9wZXJ0eShcInhcIikpIHtcbiAgICAgICAgICAgIGlmIChlZGdlLmxhYmVscG9zID09PSBcImxcIiB8fCBlZGdlLmxhYmVscG9zID09PSBcInJcIikge1xuICAgICAgICAgICAgICAgIGVkZ2Uud2lkdGggLT0gZWRnZS5sYWJlbG9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAoZWRnZS5sYWJlbHBvcykge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJsXCI6XG4gICAgICAgICAgICAgICAgICAgIGVkZ2UueCAtPSBlZGdlLndpZHRoIC8gMiArIGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJyXCI6XG4gICAgICAgICAgICAgICAgICAgIGVkZ2UueCArPSBlZGdlLndpZHRoIC8gMiArIGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59O1xuY29uc3QgcmV2ZXJzZVBvaW50c0ZvclJldmVyc2VkRWRnZXMgPSAoZykgPT4ge1xuICAgIGcuZWRnZXMoKS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIGNvbnN0IGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgICAgIGlmIChlZGdlLnJldmVyc2VkKSB7XG4gICAgICAgICAgICBlZGdlLnBvaW50cy5yZXZlcnNlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5jb25zdCByZW1vdmVCb3JkZXJOb2RlcyA9IChnKSA9PiB7XG4gICAgZy5ub2RlcygpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGlmICgoX2EgPSBnLmNoaWxkcmVuKHYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gZy5ub2RlKHYpO1xuICAgICAgICAgICAgY29uc3QgdCA9IGcubm9kZShub2RlLmJvcmRlclRvcCk7XG4gICAgICAgICAgICBjb25zdCBiID0gZy5ub2RlKG5vZGUuYm9yZGVyQm90dG9tKTtcbiAgICAgICAgICAgIGNvbnN0IGwgPSBnLm5vZGUobm9kZS5ib3JkZXJMZWZ0WygoX2IgPSBub2RlLmJvcmRlckxlZnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpIC0gMV0pO1xuICAgICAgICAgICAgY29uc3QgciA9IGcubm9kZShub2RlLmJvcmRlclJpZ2h0WygoX2MgPSBub2RlLmJvcmRlclJpZ2h0KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubGVuZ3RoKSAtIDFdKTtcbiAgICAgICAgICAgIG5vZGUud2lkdGggPSBNYXRoLmFicygociA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLngpIC0gKGwgPT09IG51bGwgfHwgbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogbC54KSkgfHwgMTA7XG4gICAgICAgICAgICBub2RlLmhlaWdodCA9IE1hdGguYWJzKChiID09PSBudWxsIHx8IGIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGIueSkgLSAodCA9PT0gbnVsbCB8fCB0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0LnkpKSB8fCAxMDtcbiAgICAgICAgICAgIG5vZGUueCA9ICgobCA9PT0gbnVsbCB8fCBsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsLngpIHx8IDApICsgbm9kZS53aWR0aCAvIDI7XG4gICAgICAgICAgICBub2RlLnkgPSAoKHQgPT09IG51bGwgfHwgdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdC55KSB8fCAwKSArIG5vZGUuaGVpZ2h0IC8gMjtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGcubm9kZXMoKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGlmIChnLm5vZGUodikuZHVtbXkgPT09IFwiYm9yZGVyXCIpIHtcbiAgICAgICAgICAgIGcucmVtb3ZlTm9kZSh2KTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbmNvbnN0IHJlbW92ZVNlbGZFZGdlcyA9IChnKSA9PiB7XG4gICAgZy5lZGdlcygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgaWYgKGUudiA9PT0gZS53KSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gZy5ub2RlKGUudik7XG4gICAgICAgICAgICBpZiAoIW5vZGUuc2VsZkVkZ2VzKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5zZWxmRWRnZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUuc2VsZkVkZ2VzLnB1c2goeyBlLCBsYWJlbDogZy5lZGdlKGUpIH0pO1xuICAgICAgICAgICAgZy5yZW1vdmVFZGdlKGUpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuY29uc3QgaW5zZXJ0U2VsZkVkZ2VzID0gKGcpID0+IHtcbiAgICBjb25zdCBsYXllcnMgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gICAgbGF5ZXJzID09PSBudWxsIHx8IGxheWVycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICAgIGxldCBvcmRlclNoaWZ0ID0gMDtcbiAgICAgICAgbGF5ZXIgPT09IG51bGwgfHwgbGF5ZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheWVyLmZvckVhY2goKHYsIGkpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBnLm5vZGUodik7XG4gICAgICAgICAgICBub2RlLm9yZGVyID0gaSArIG9yZGVyU2hpZnQ7XG4gICAgICAgICAgICAoX2EgPSBub2RlLnNlbGZFZGdlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKHNlbGZFZGdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdXRpbC5hZGREdW1teU5vZGUoZywgXCJzZWxmZWRnZVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBzZWxmRWRnZS5sYWJlbC53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBzZWxmRWRnZS5sYWJlbC5oZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIHJhbms6IG5vZGUucmFuayxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGkgKyAoKytvcmRlclNoaWZ0KSxcbiAgICAgICAgICAgICAgICAgICAgZTogc2VsZkVkZ2UuZSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHNlbGZFZGdlLmxhYmVsXG4gICAgICAgICAgICAgICAgfSwgXCJfc2VcIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRlbGV0ZSBub2RlLnNlbGZFZGdlcztcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuY29uc3QgcG9zaXRpb25TZWxmRWRnZXMgPSAoZykgPT4ge1xuICAgIGcubm9kZXMoKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBnLm5vZGUodik7XG4gICAgICAgIGlmIChub2RlLmR1bW15ID09PSBcInNlbGZlZGdlXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGZOb2RlID0gZy5ub2RlKG5vZGUuZS52KTtcbiAgICAgICAgICAgIGNvbnN0IHggPSBzZWxmTm9kZS54ICsgc2VsZk5vZGUud2lkdGggLyAyO1xuICAgICAgICAgICAgY29uc3QgeSA9IHNlbGZOb2RlLnk7XG4gICAgICAgICAgICBjb25zdCBkeCA9IG5vZGUueCAtIHg7XG4gICAgICAgICAgICBjb25zdCBkeSA9IHNlbGZOb2RlLmhlaWdodCAvIDI7XG4gICAgICAgICAgICBnLnNldEVkZ2Uobm9kZS5lLCBub2RlLmxhYmVsKTtcbiAgICAgICAgICAgIGcucmVtb3ZlTm9kZSh2KTtcbiAgICAgICAgICAgIG5vZGUubGFiZWwucG9pbnRzID0gW1xuICAgICAgICAgICAgICAgIHsgeDogeCArIDIgKiBkeCAvIDMsIHk6IHkgLSBkeSB9LFxuICAgICAgICAgICAgICAgIHsgeDogeCArIDUgKiBkeCAvIDYsIHk6IHkgLSBkeSB9LFxuICAgICAgICAgICAgICAgIHsgeSwgeDogeCArIGR4IH0sXG4gICAgICAgICAgICAgICAgeyB4OiB4ICsgNSAqIGR4IC8gNiwgeTogeSArIGR5IH0sXG4gICAgICAgICAgICAgICAgeyB4OiB4ICsgMiAqIGR4IC8gMywgeTogeSArIGR5IH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBub2RlLmxhYmVsLnggPSBub2RlLng7XG4gICAgICAgICAgICBub2RlLmxhYmVsLnkgPSBub2RlLnk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5jb25zdCBzZWxlY3ROdW1iZXJBdHRycyA9IChvYmosIGF0dHJzKSA9PiB7XG4gICAgY29uc3QgcGlja2VkUHJvcGVydGllcyA9IHt9O1xuICAgIGF0dHJzID09PSBudWxsIHx8IGF0dHJzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhdHRycy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBpY2tlZFByb3BlcnRpZXNba2V5XSA9ICgrb2JqW2tleV0pO1xuICAgIH0pO1xuICAgIHJldHVybiBwaWNrZWRQcm9wZXJ0aWVzO1xufTtcbmNvbnN0IGNhbm9uaWNhbGl6ZSA9IChhdHRycykgPT4ge1xuICAgIGNvbnN0IG5ld0F0dHJzID0ge307XG4gICAgT2JqZWN0LmtleXMoYXR0cnMpLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgY29uc3QgdiA9IGF0dHJzW2tdO1xuICAgICAgICBuZXdBdHRyc1trLnRvTG93ZXJDYXNlKCldID0gdjtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3QXR0cnM7XG59O1xuZXhwb3J0IGRlZmF1bHQgbGF5b3V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGF5b3V0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/layout.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/nesting-graph.js": /*!************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/nesting-graph.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nconst run = (g) => {\n var _a;\n const root = _util__WEBPACK_IMPORTED_MODULE_0__[\"default\"].addDummyNode(g, \"root\", {}, \"_root\");\n const depths = treeDepths(g);\n // @ts-ignore\n const height = Math.max(...Object.values(depths)) - 1; // Note: depths is an Object not an array\n const nodeSep = 2 * height + 1;\n g.graph().nestingRoot = root;\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n g.edges().forEach((e) => { g.edge(e).minlen *= nodeSep; });\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n const weight = sumWeights(g) + 1;\n // Create border nodes and link them up\n (_a = g.children()) === null || _a === void 0 ? void 0 : _a.forEach((child) => {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n};\nconst dfs = (g, root, nodeSep, weight, height, depths, v) => {\n const children = g.children(v);\n if (!(children === null || children === void 0 ? void 0 : children.length)) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n const top = _util__WEBPACK_IMPORTED_MODULE_0__[\"default\"].addBorderNode(g, \"_bt\");\n const bottom = _util__WEBPACK_IMPORTED_MODULE_0__[\"default\"].addBorderNode(g, \"_bb\");\n const label = g.node(v);\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n children === null || children === void 0 ? void 0 : children.forEach((child) => {\n dfs(g, root, nodeSep, weight, height, depths, child);\n const childNode = g.node(child);\n const childTop = childNode.borderTop ? childNode.borderTop : child;\n const childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n const thisWeight = childNode.borderTop ? weight : 2 * weight;\n const minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n g.setEdge(top, childTop, {\n minlen,\n weight: thisWeight,\n nestingEdge: true\n });\n g.setEdge(childBottom, bottom, {\n minlen,\n weight: thisWeight,\n nestingEdge: true\n });\n });\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n};\nconst treeDepths = (g) => {\n var _a;\n const depths = {};\n const dfs = (v, depth) => {\n const children = g.children(v);\n children === null || children === void 0 ? void 0 : children.forEach((child) => dfs(child, depth + 1));\n depths[v] = depth;\n };\n (_a = g.children()) === null || _a === void 0 ? void 0 : _a.forEach((v) => dfs(v, 1));\n return depths;\n};\nconst sumWeights = (g) => {\n let result = 0;\n g.edges().forEach((e) => {\n result += g.edge(e).weight;\n });\n return result;\n};\nconst cleanup = (g) => {\n const graphLabel = g.graph();\n graphLabel.nestingRoot && g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n g.edges().forEach((e) => {\n const edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({ run, cleanup });\n//# sourceMappingURL=nesting-graph.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvbmVzdGluZy1ncmFwaC5qcz9hODYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNkNBQUksMkJBQTJCO0FBQ2hEO0FBQ0E7QUFDQSwwREFBMEQ7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLDZCQUE2QixFQUFFO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyw2QkFBNkI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDZDQUFJO0FBQ3BCLG1CQUFtQiw2Q0FBSTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQSw4QkFBOEIsd0NBQXdDO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNlLGdFQUFDLGVBQWUsRUFBQztBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2RhZ3JlL3NyYy9uZXN0aW5nLWdyYXBoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHV0aWwgZnJvbSAnLi91dGlsJztcbi8qXG4gKiBBIG5lc3RpbmcgZ3JhcGggY3JlYXRlcyBkdW1teSBub2RlcyBmb3IgdGhlIHRvcHMgYW5kIGJvdHRvbXMgb2Ygc3ViZ3JhcGhzLFxuICogYWRkcyBhcHByb3ByaWF0ZSBlZGdlcyB0byBlbnN1cmUgdGhhdCBhbGwgY2x1c3RlciBub2RlcyBhcmUgcGxhY2VkIGJldHdlZW5cbiAqIHRoZXNlIGJvdW5kcmllcywgYW5kIGVuc3VyZXMgdGhhdCB0aGUgZ3JhcGggaXMgY29ubmVjdGVkLlxuICpcbiAqIEluIGFkZGl0aW9uIHdlIGVuc3VyZSwgdGhyb3VnaCB0aGUgdXNlIG9mIHRoZSBtaW5sZW4gcHJvcGVydHksIHRoYXQgbm9kZXNcbiAqIGFuZCBzdWJncmFwaCBib3JkZXIgbm9kZXMgdG8gbm90IGVuZCB1cCBvbiB0aGUgc2FtZSByYW5rLlxuICpcbiAqIFByZWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggaXMgYSBEQUdcbiAqICAgIDIuIE5vZGVzIGluIHRoZSBpbnB1dCBncmFwaCBoYXMgYSBtaW5sZW4gYXR0cmlidXRlXG4gKlxuICogUG9zdGNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggaXMgY29ubmVjdGVkLlxuICogICAgMi4gRHVtbXkgbm9kZXMgYXJlIGFkZGVkIGZvciB0aGUgdG9wcyBhbmQgYm90dG9tcyBvZiBzdWJncmFwaHMuXG4gKiAgICAzLiBUaGUgbWlubGVuIGF0dHJpYnV0ZSBmb3Igbm9kZXMgaXMgYWRqdXN0ZWQgdG8gZW5zdXJlIG5vZGVzIGRvIG5vdFxuICogICAgICAgZ2V0IHBsYWNlZCBvbiB0aGUgc2FtZSByYW5rIGFzIHN1YmdyYXBoIGJvcmRlciBub2Rlcy5cbiAqXG4gKiBUaGUgbmVzdGluZyBncmFwaCBpZGVhIGNvbWVzIGZyb20gU2FuZGVyLCBcIkxheW91dCBvZiBDb21wb3VuZCBEaXJlY3RlZFxuICogR3JhcGhzLlwiXG4gKi9cbmNvbnN0IHJ1biA9IChnKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHJvb3QgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcInJvb3RcIiwge30sIFwiX3Jvb3RcIik7XG4gICAgY29uc3QgZGVwdGhzID0gdHJlZURlcHRocyhnKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgaGVpZ2h0ID0gTWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhkZXB0aHMpKSAtIDE7IC8vIE5vdGU6IGRlcHRocyBpcyBhbiBPYmplY3Qgbm90IGFuIGFycmF5XG4gICAgY29uc3Qgbm9kZVNlcCA9IDIgKiBoZWlnaHQgKyAxO1xuICAgIGcuZ3JhcGgoKS5uZXN0aW5nUm9vdCA9IHJvb3Q7XG4gICAgLy8gTXVsdGlwbHkgbWlubGVuIGJ5IG5vZGVTZXAgdG8gYWxpZ24gbm9kZXMgb24gbm9uLWJvcmRlciByYW5rcy5cbiAgICBnLmVkZ2VzKCkuZm9yRWFjaCgoZSkgPT4geyBnLmVkZ2UoZSkubWlubGVuICo9IG5vZGVTZXA7IH0pO1xuICAgIC8vIENhbGN1bGF0ZSBhIHdlaWdodCB0aGF0IGlzIHN1ZmZpY2llbnQgdG8ga2VlcCBzdWJncmFwaHMgdmVydGljYWxseSBjb21wYWN0XG4gICAgY29uc3Qgd2VpZ2h0ID0gc3VtV2VpZ2h0cyhnKSArIDE7XG4gICAgLy8gQ3JlYXRlIGJvcmRlciBub2RlcyBhbmQgbGluayB0aGVtIHVwXG4gICAgKF9hID0gZy5jaGlsZHJlbigpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgZGZzKGcsIHJvb3QsIG5vZGVTZXAsIHdlaWdodCwgaGVpZ2h0LCBkZXB0aHMsIGNoaWxkKTtcbiAgICB9KTtcbiAgICAvLyBTYXZlIHRoZSBtdWx0aXBsaWVyIGZvciBub2RlIGxheWVycyBmb3IgbGF0ZXIgcmVtb3ZhbCBvZiBlbXB0eSBib3JkZXJcbiAgICAvLyBsYXllcnMuXG4gICAgZy5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yID0gbm9kZVNlcDtcbn07XG5jb25zdCBkZnMgPSAoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgdikgPT4ge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gZy5jaGlsZHJlbih2KTtcbiAgICBpZiAoIShjaGlsZHJlbiA9PT0gbnVsbCB8fCBjaGlsZHJlbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2hpbGRyZW4ubGVuZ3RoKSkge1xuICAgICAgICBpZiAodiAhPT0gcm9vdCkge1xuICAgICAgICAgICAgZy5zZXRFZGdlKHJvb3QsIHYsIHsgd2VpZ2h0OiAwLCBtaW5sZW46IG5vZGVTZXAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0b3AgPSB1dGlsLmFkZEJvcmRlck5vZGUoZywgXCJfYnRcIik7XG4gICAgY29uc3QgYm90dG9tID0gdXRpbC5hZGRCb3JkZXJOb2RlKGcsIFwiX2JiXCIpO1xuICAgIGNvbnN0IGxhYmVsID0gZy5ub2RlKHYpO1xuICAgIGcuc2V0UGFyZW50KHRvcCwgdik7XG4gICAgbGFiZWwuYm9yZGVyVG9wID0gdG9wO1xuICAgIGcuc2V0UGFyZW50KGJvdHRvbSwgdik7XG4gICAgbGFiZWwuYm9yZGVyQm90dG9tID0gYm90dG9tO1xuICAgIGNoaWxkcmVuID09PSBudWxsIHx8IGNoaWxkcmVuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuICAgICAgICBjb25zdCBjaGlsZE5vZGUgPSBnLm5vZGUoY2hpbGQpO1xuICAgICAgICBjb25zdCBjaGlsZFRvcCA9IGNoaWxkTm9kZS5ib3JkZXJUb3AgPyBjaGlsZE5vZGUuYm9yZGVyVG9wIDogY2hpbGQ7XG4gICAgICAgIGNvbnN0IGNoaWxkQm90dG9tID0gY2hpbGROb2RlLmJvcmRlckJvdHRvbSA/IGNoaWxkTm9kZS5ib3JkZXJCb3R0b20gOiBjaGlsZDtcbiAgICAgICAgY29uc3QgdGhpc1dlaWdodCA9IGNoaWxkTm9kZS5ib3JkZXJUb3AgPyB3ZWlnaHQgOiAyICogd2VpZ2h0O1xuICAgICAgICBjb25zdCBtaW5sZW4gPSBjaGlsZFRvcCAhPT0gY2hpbGRCb3R0b20gPyAxIDogaGVpZ2h0IC0gZGVwdGhzW3ZdICsgMTtcbiAgICAgICAgZy5zZXRFZGdlKHRvcCwgY2hpbGRUb3AsIHtcbiAgICAgICAgICAgIG1pbmxlbixcbiAgICAgICAgICAgIHdlaWdodDogdGhpc1dlaWdodCxcbiAgICAgICAgICAgIG5lc3RpbmdFZGdlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBnLnNldEVkZ2UoY2hpbGRCb3R0b20sIGJvdHRvbSwge1xuICAgICAgICAgICAgbWlubGVuLFxuICAgICAgICAgICAgd2VpZ2h0OiB0aGlzV2VpZ2h0LFxuICAgICAgICAgICAgbmVzdGluZ0VkZ2U6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgaWYgKCFnLnBhcmVudCh2KSkge1xuICAgICAgICBnLnNldEVkZ2Uocm9vdCwgdG9wLCB7IHdlaWdodDogMCwgbWlubGVuOiBoZWlnaHQgKyBkZXB0aHNbdl0gfSk7XG4gICAgfVxufTtcbmNvbnN0IHRyZWVEZXB0aHMgPSAoZykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBkZXB0aHMgPSB7fTtcbiAgICBjb25zdCBkZnMgPSAodiwgZGVwdGgpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICAgICAgICBjaGlsZHJlbiA9PT0gbnVsbCB8fCBjaGlsZHJlbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IGRmcyhjaGlsZCwgZGVwdGggKyAxKSk7XG4gICAgICAgIGRlcHRoc1t2XSA9IGRlcHRoO1xuICAgIH07XG4gICAgKF9hID0gZy5jaGlsZHJlbigpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgodikgPT4gZGZzKHYsIDEpKTtcbiAgICByZXR1cm4gZGVwdGhzO1xufTtcbmNvbnN0IHN1bVdlaWdodHMgPSAoZykgPT4ge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGcuZWRnZXMoKS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIHJlc3VsdCArPSBnLmVkZ2UoZSkud2VpZ2h0O1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuY29uc3QgY2xlYW51cCA9IChnKSA9PiB7XG4gICAgY29uc3QgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKTtcbiAgICBncmFwaExhYmVsLm5lc3RpbmdSb290ICYmIGcucmVtb3ZlTm9kZShncmFwaExhYmVsLm5lc3RpbmdSb290KTtcbiAgICBkZWxldGUgZ3JhcGhMYWJlbC5uZXN0aW5nUm9vdDtcbiAgICBnLmVkZ2VzKCkuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICBjb25zdCBlZGdlID0gZy5lZGdlKGUpO1xuICAgICAgICBpZiAoZWRnZS5uZXN0aW5nRWRnZSkge1xuICAgICAgICAgICAgZy5yZW1vdmVFZGdlKGUpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgeyBydW4sIGNsZWFudXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5lc3RpbmctZ3JhcGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/nesting-graph.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/normalize.js": /*!********************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/normalize.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nconst run = (g) => {\n g.graph().dummyChains = [];\n g.edges().forEach((edge) => normalizeEdge(g, edge));\n};\nconst normalizeEdge = (g, e) => {\n var _a, _b;\n let v = e.v;\n let vRank = g.node(v).rank;\n const w = e.w;\n const wRank = g.node(w).rank;\n const name = e.name;\n const edgeLabel = g.edge(e);\n const labelRank = edgeLabel.labelRank;\n if (wRank === vRank + 1)\n return;\n g.removeEdge(e);\n let dummy;\n let attrs;\n let i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n edgeLabel,\n width: 0,\n height: 0,\n edgeObj: e,\n rank: vRank\n };\n dummy = _util__WEBPACK_IMPORTED_MODULE_0__[\"default\"].addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n if (!g.graph().dummyChains)\n g.graph().dummyChains = [];\n (_b = (_a = g.graph()) === null || _a === void 0 ? void 0 : _a.dummyChains) === null || _b === void 0 ? void 0 : _b.push(dummy);\n }\n v = dummy;\n }\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n};\nconst undo = (g) => {\n var _a;\n (_a = g.graph().dummyChains) === null || _a === void 0 ? void 0 : _a.forEach((v) => {\n var _a;\n let node = g.node(v);\n const origLabel = node.edgeLabel;\n let w;\n node.edgeObj && g.setEdge(node.edgeObj, origLabel);\n let currentV = v;\n while (node.dummy) {\n w = (_a = g.successors(currentV)) === null || _a === void 0 ? void 0 : _a[0];\n g.removeNode(currentV);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n currentV = w;\n node = g.node(currentV);\n }\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({ run, undo });\n//# sourceMappingURL=normalize.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvbm9ybWFsaXplLmpzP2IwM2EiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGVBQWU7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw2Q0FBSTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsMkJBQTJCO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJCQUEyQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx1QkFBdUI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ2UsZ0VBQUMsWUFBWSxFQUFDO0FBQzdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZGFncmUvc3JjL25vcm1hbGl6ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1dGlsIGZyb20gJy4vdXRpbCc7XG4vKlxuICogQnJlYWtzIGFueSBsb25nIGVkZ2VzIGluIHRoZSBncmFwaCBpbnRvIHNob3J0IHNlZ21lbnRzIHRoYXQgc3BhbiAxIGxheWVyXG4gKiBlYWNoLiBUaGlzIG9wZXJhdGlvbiBpcyB1bmRvYWJsZSB3aXRoIHRoZSBkZW5vcm1hbGl6ZSBmdW5jdGlvbi5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBUaGUgaW5wdXQgZ3JhcGggaXMgYSBEQUcuXG4gKiAgICAyLiBFYWNoIG5vZGUgaW4gdGhlIGdyYXBoIGhhcyBhIFwicmFua1wiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uOlxuICpcbiAqICAgIDEuIEFsbCBlZGdlcyBpbiB0aGUgZ3JhcGggaGF2ZSBhIGxlbmd0aCBvZiAxLlxuICogICAgMi4gRHVtbXkgbm9kZXMgYXJlIGFkZGVkIHdoZXJlIGVkZ2VzIGhhdmUgYmVlbiBzcGxpdCBpbnRvIHNlZ21lbnRzLlxuICogICAgMy4gVGhlIGdyYXBoIGlzIGF1Z21lbnRlZCB3aXRoIGEgXCJkdW1teUNoYWluc1wiIGF0dHJpYnV0ZSB3aGljaCBjb250YWluc1xuICogICAgICAgdGhlIGZpcnN0IGR1bW15IGluIGVhY2ggY2hhaW4gb2YgZHVtbXkgbm9kZXMgcHJvZHVjZWQuXG4gKi9cbmNvbnN0IHJ1biA9IChnKSA9PiB7XG4gICAgZy5ncmFwaCgpLmR1bW15Q2hhaW5zID0gW107XG4gICAgZy5lZGdlcygpLmZvckVhY2goKGVkZ2UpID0+IG5vcm1hbGl6ZUVkZ2UoZywgZWRnZSkpO1xufTtcbmNvbnN0IG5vcm1hbGl6ZUVkZ2UgPSAoZywgZSkgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgbGV0IHYgPSBlLnY7XG4gICAgbGV0IHZSYW5rID0gZy5ub2RlKHYpLnJhbms7XG4gICAgY29uc3QgdyA9IGUudztcbiAgICBjb25zdCB3UmFuayA9IGcubm9kZSh3KS5yYW5rO1xuICAgIGNvbnN0IG5hbWUgPSBlLm5hbWU7XG4gICAgY29uc3QgZWRnZUxhYmVsID0gZy5lZGdlKGUpO1xuICAgIGNvbnN0IGxhYmVsUmFuayA9IGVkZ2VMYWJlbC5sYWJlbFJhbms7XG4gICAgaWYgKHdSYW5rID09PSB2UmFuayArIDEpXG4gICAgICAgIHJldHVybjtcbiAgICBnLnJlbW92ZUVkZ2UoZSk7XG4gICAgbGV0IGR1bW15O1xuICAgIGxldCBhdHRycztcbiAgICBsZXQgaTtcbiAgICBmb3IgKGkgPSAwLCArK3ZSYW5rOyB2UmFuayA8IHdSYW5rOyArK2ksICsrdlJhbmspIHtcbiAgICAgICAgZWRnZUxhYmVsLnBvaW50cyA9IFtdO1xuICAgICAgICBhdHRycyA9IHtcbiAgICAgICAgICAgIGVkZ2VMYWJlbCxcbiAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgZWRnZU9iajogZSxcbiAgICAgICAgICAgIHJhbms6IHZSYW5rXG4gICAgICAgIH07XG4gICAgICAgIGR1bW15ID0gdXRpbC5hZGREdW1teU5vZGUoZywgXCJlZGdlXCIsIGF0dHJzLCBcIl9kXCIpO1xuICAgICAgICBpZiAodlJhbmsgPT09IGxhYmVsUmFuaykge1xuICAgICAgICAgICAgYXR0cnMud2lkdGggPSBlZGdlTGFiZWwud2lkdGg7XG4gICAgICAgICAgICBhdHRycy5oZWlnaHQgPSBlZGdlTGFiZWwuaGVpZ2h0O1xuICAgICAgICAgICAgYXR0cnMuZHVtbXkgPSBcImVkZ2UtbGFiZWxcIjtcbiAgICAgICAgICAgIGF0dHJzLmxhYmVscG9zID0gZWRnZUxhYmVsLmxhYmVscG9zO1xuICAgICAgICB9XG4gICAgICAgIGcuc2V0RWRnZSh2LCBkdW1teSwgeyB3ZWlnaHQ6IGVkZ2VMYWJlbC53ZWlnaHQgfSwgbmFtZSk7XG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoIWcuZ3JhcGgoKS5kdW1teUNoYWlucylcbiAgICAgICAgICAgICAgICBnLmdyYXBoKCkuZHVtbXlDaGFpbnMgPSBbXTtcbiAgICAgICAgICAgIChfYiA9IChfYSA9IGcuZ3JhcGgoKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmR1bW15Q2hhaW5zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVzaChkdW1teSk7XG4gICAgICAgIH1cbiAgICAgICAgdiA9IGR1bW15O1xuICAgIH1cbiAgICBnLnNldEVkZ2UodiwgdywgeyB3ZWlnaHQ6IGVkZ2VMYWJlbC53ZWlnaHQgfSwgbmFtZSk7XG59O1xuY29uc3QgdW5kbyA9IChnKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIChfYSA9IGcuZ3JhcGgoKS5kdW1teUNoYWlucykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBsZXQgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgICAgY29uc3Qgb3JpZ0xhYmVsID0gbm9kZS5lZGdlTGFiZWw7XG4gICAgICAgIGxldCB3O1xuICAgICAgICBub2RlLmVkZ2VPYmogJiYgZy5zZXRFZGdlKG5vZGUuZWRnZU9iaiwgb3JpZ0xhYmVsKTtcbiAgICAgICAgbGV0IGN1cnJlbnRWID0gdjtcbiAgICAgICAgd2hpbGUgKG5vZGUuZHVtbXkpIHtcbiAgICAgICAgICAgIHcgPSAoX2EgPSBnLnN1Y2Nlc3NvcnMoY3VycmVudFYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF07XG4gICAgICAgICAgICBnLnJlbW92ZU5vZGUoY3VycmVudFYpO1xuICAgICAgICAgICAgb3JpZ0xhYmVsLnBvaW50cy5wdXNoKHsgeDogbm9kZS54LCB5OiBub2RlLnkgfSk7XG4gICAgICAgICAgICBpZiAobm9kZS5kdW1teSA9PT0gXCJlZGdlLWxhYmVsXCIpIHtcbiAgICAgICAgICAgICAgICBvcmlnTGFiZWwueCA9IG5vZGUueDtcbiAgICAgICAgICAgICAgICBvcmlnTGFiZWwueSA9IG5vZGUueTtcbiAgICAgICAgICAgICAgICBvcmlnTGFiZWwud2lkdGggPSBub2RlLndpZHRoO1xuICAgICAgICAgICAgICAgIG9yaWdMYWJlbC5oZWlnaHQgPSBub2RlLmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRWID0gdztcbiAgICAgICAgICAgIG5vZGUgPSBnLm5vZGUoY3VycmVudFYpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgeyBydW4sIHVuZG8gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vcm1hbGl6ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/normalize.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/order/add-subgraph-constraints.js": /*!*****************************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/order/add-subgraph-constraints.js ***! \*****************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nconst addSubgraphConstraints = (g, cg, vs) => {\n const prev = {};\n let rootPrev;\n vs === null || vs === void 0 ? void 0 : vs.forEach((v) => {\n let child = g.parent(v);\n let parent;\n let prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n }\n else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (addSubgraphConstraints);\n//# sourceMappingURL=add-subgraph-constraints.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvYWRkLXN1YmdyYXBoLWNvbnN0cmFpbnRzLmpzP2Q5MDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ2UscUZBQXNCLEVBQUM7QUFDdEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvYWRkLXN1YmdyYXBoLWNvbnN0cmFpbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgYWRkU3ViZ3JhcGhDb25zdHJhaW50cyA9IChnLCBjZywgdnMpID0+IHtcbiAgICBjb25zdCBwcmV2ID0ge307XG4gICAgbGV0IHJvb3RQcmV2O1xuICAgIHZzID09PSBudWxsIHx8IHZzID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2cy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGxldCBjaGlsZCA9IGcucGFyZW50KHYpO1xuICAgICAgICBsZXQgcGFyZW50O1xuICAgICAgICBsZXQgcHJldkNoaWxkO1xuICAgICAgICB3aGlsZSAoY2hpbGQpIHtcbiAgICAgICAgICAgIHBhcmVudCA9IGcucGFyZW50KGNoaWxkKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBwcmV2Q2hpbGQgPSBwcmV2W3BhcmVudF07XG4gICAgICAgICAgICAgICAgcHJldltwYXJlbnRdID0gY2hpbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwcmV2Q2hpbGQgPSByb290UHJldjtcbiAgICAgICAgICAgICAgICByb290UHJldiA9IGNoaWxkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByZXZDaGlsZCAmJiBwcmV2Q2hpbGQgIT09IGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgY2cuc2V0RWRnZShwcmV2Q2hpbGQsIGNoaWxkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGlsZCA9IHBhcmVudDtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IGFkZFN1YmdyYXBoQ29uc3RyYWludHM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hZGQtc3ViZ3JhcGgtY29uc3RyYWludHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/order/add-subgraph-constraints.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/order/barycenter.js": /*!***************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/order/barycenter.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nconst barycenter = (g, movable) => {\n return movable.map((v) => {\n const inV = g.inEdges(v);\n if (!(inV === null || inV === void 0 ? void 0 : inV.length)) {\n return { v };\n }\n {\n const result = { sum: 0, weight: 0 };\n inV === null || inV === void 0 ? void 0 : inV.forEach((e) => {\n const edge = g.edge(e);\n const nodeU = g.node(e.v);\n result.sum += (edge.weight * nodeU.order);\n result.weight += edge.weight;\n });\n return {\n v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (barycenter);\n//# sourceMappingURL=barycenter.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvYmFyeWNlbnRlci5qcz82ODYxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNlLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvYmFyeWNlbnRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGJhcnljZW50ZXIgPSAoZywgbW92YWJsZSkgPT4ge1xuICAgIHJldHVybiBtb3ZhYmxlLm1hcCgodikgPT4ge1xuICAgICAgICBjb25zdCBpblYgPSBnLmluRWRnZXModik7XG4gICAgICAgIGlmICghKGluViA9PT0gbnVsbCB8fCBpblYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGluVi5sZW5ndGgpKSB7XG4gICAgICAgICAgICByZXR1cm4geyB2IH07XG4gICAgICAgIH1cbiAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geyBzdW06IDAsIHdlaWdodDogMCB9O1xuICAgICAgICAgICAgaW5WID09PSBudWxsIHx8IGluViA9PT0gdm9pZCAwID8gdm9pZCAwIDogaW5WLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlZGdlID0gZy5lZGdlKGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVVID0gZy5ub2RlKGUudik7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnN1bSArPSAoZWRnZS53ZWlnaHQgKiBub2RlVS5vcmRlcik7XG4gICAgICAgICAgICAgICAgcmVzdWx0LndlaWdodCArPSBlZGdlLndlaWdodDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2LFxuICAgICAgICAgICAgICAgIGJhcnljZW50ZXI6IHJlc3VsdC5zdW0gLyByZXN1bHQud2VpZ2h0LFxuICAgICAgICAgICAgICAgIHdlaWdodDogcmVzdWx0LndlaWdodFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IGJhcnljZW50ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iYXJ5Y2VudGVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/order/barycenter.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/order/build-layer-graph.js": /*!**********************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/order/build-layer-graph.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../graphlib */ \"./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js\");\n\nconst Graph = _graphlib__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Graph;\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nconst buildLayerGraph = (g, rank, relationship) => {\n const root = createRootNode(g);\n const result = new Graph({ compound: true }).setGraph({ root })\n .setDefaultNodeLabel((v) => { return g.node(v); });\n g.nodes().forEach((v) => {\n const node = g.node(v);\n const parent = g.parent(v);\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n // This assumes we have only short edges!\n g[relationship](v).forEach((e) => {\n const u = e.v === v ? e.w : e.v;\n const edge = result.edge(u, v);\n const weight = edge !== undefined ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n if (node.hasOwnProperty(\"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n return result;\n};\nconst createRootNode = (g) => {\n let v;\n while (g.hasNode((v = `_root${Math.random()}`)))\n ;\n return v;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (buildLayerGraph);\n//# sourceMappingURL=build-layer-graph.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvYnVpbGQtbGF5ZXItZ3JhcGguanM/NzFmNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW1DO0FBQ25DLGNBQWMsaURBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixpQkFBaUIsWUFBWSxPQUFPO0FBQ2xFLHFDQUFxQyxrQkFBa0IsRUFBRTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLG9DQUFvQztBQUMxRSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxjQUFjO0FBQ2hEO0FBQ0E7QUFDQTtBQUNlLDhFQUFlLEVBQUM7QUFDL0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvYnVpbGQtbGF5ZXItZ3JhcGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ3JhcGhsaWIgZnJvbSAnLi4vZ3JhcGhsaWInO1xuY29uc3QgR3JhcGggPSBncmFwaGxpYi5HcmFwaDtcbi8qXG4gKiBDb25zdHJ1Y3RzIGEgZ3JhcGggdGhhdCBjYW4gYmUgdXNlZCB0byBzb3J0IGEgbGF5ZXIgb2Ygbm9kZXMuIFRoZSBncmFwaCB3aWxsXG4gKiBjb250YWluIGFsbCBiYXNlIGFuZCBzdWJncmFwaCBub2RlcyBmcm9tIHRoZSByZXF1ZXN0IGxheWVyIGluIHRoZWlyIG9yaWdpbmFsXG4gKiBoaWVyYXJjaHkgYW5kIGFueSBlZGdlcyB0aGF0IGFyZSBpbmNpZGVudCBvbiB0aGVzZSBub2RlcyBhbmQgYXJlIG9mIHRoZSB0eXBlXG4gKiByZXF1ZXN0ZWQgYnkgdGhlIFwicmVsYXRpb25zaGlwXCIgcGFyYW1ldGVyLlxuICpcbiAqIE5vZGVzIGZyb20gdGhlIHJlcXVlc3RlZCByYW5rIHRoYXQgZG8gbm90IGhhdmUgcGFyZW50cyBhcmUgYXNzaWduZWQgYSByb290XG4gKiBub2RlIGluIHRoZSBvdXRwdXQgZ3JhcGgsIHdoaWNoIGlzIHNldCBpbiB0aGUgcm9vdCBncmFwaCBhdHRyaWJ1dGUuIFRoaXNcbiAqIG1ha2VzIGl0IGVhc3kgdG8gd2FsayB0aGUgaGllcmFyY2h5IG9mIG1vdmFibGUgbm9kZXMgZHVyaW5nIG9yZGVyaW5nLlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIGlzIGEgREFHXG4gKiAgICAyLiBCYXNlIG5vZGVzIGluIHRoZSBpbnB1dCBncmFwaCBoYXZlIGEgcmFuayBhdHRyaWJ1dGVcbiAqICAgIDMuIFN1YmdyYXBoIG5vZGVzIGluIHRoZSBpbnB1dCBncmFwaCBoYXMgbWluUmFuayBhbmQgbWF4UmFuayBhdHRyaWJ1dGVzXG4gKiAgICA0LiBFZGdlcyBoYXZlIGFuIGFzc2lnbmVkIHdlaWdodFxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBPdXRwdXQgZ3JhcGggaGFzIGFsbCBub2RlcyBpbiB0aGUgbW92YWJsZSByYW5rIHdpdGggcHJlc2VydmVkXG4gKiAgICAgICBoaWVyYXJjaHkuXG4gKiAgICAyLiBSb290IG5vZGVzIGluIHRoZSBtb3ZhYmxlIGxheWVyIGFyZSBtYWRlIGNoaWxkcmVuIG9mIHRoZSBub2RlXG4gKiAgICAgICBpbmRpY2F0ZWQgYnkgdGhlIHJvb3QgYXR0cmlidXRlIG9mIHRoZSBncmFwaC5cbiAqICAgIDMuIE5vbi1tb3ZhYmxlIG5vZGVzIGluY2lkZW50IG9uIG1vdmFibGUgbm9kZXMsIHNlbGVjdGVkIGJ5IHRoZVxuICogICAgICAgcmVsYXRpb25zaGlwIHBhcmFtZXRlciwgYXJlIGluY2x1ZGVkIGluIHRoZSBncmFwaCAod2l0aG91dCBoaWVyYXJjaHkpLlxuICogICAgNC4gRWRnZXMgaW5jaWRlbnQgb24gbW92YWJsZSBub2Rlcywgc2VsZWN0ZWQgYnkgdGhlIHJlbGF0aW9uc2hpcFxuICogICAgICAgcGFyYW1ldGVyLCBhcmUgYWRkZWQgdG8gdGhlIG91dHB1dCBncmFwaC5cbiAqICAgIDUuIFRoZSB3ZWlnaHRzIGZvciBjb3BpZWQgZWRnZXMgYXJlIGFnZ3JlZ2F0ZWQgYXMgbmVlZCwgc2luY2UgdGhlIG91dHB1dFxuICogICAgICAgZ3JhcGggaXMgbm90IGEgbXVsdGktZ3JhcGguXG4gKi9cbmNvbnN0IGJ1aWxkTGF5ZXJHcmFwaCA9IChnLCByYW5rLCByZWxhdGlvbnNoaXApID0+IHtcbiAgICBjb25zdCByb290ID0gY3JlYXRlUm9vdE5vZGUoZyk7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEdyYXBoKHsgY29tcG91bmQ6IHRydWUgfSkuc2V0R3JhcGgoeyByb290IH0pXG4gICAgICAgIC5zZXREZWZhdWx0Tm9kZUxhYmVsKCh2KSA9PiB7IHJldHVybiBnLm5vZGUodik7IH0pO1xuICAgIGcubm9kZXMoKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBnLm5vZGUodik7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGcucGFyZW50KHYpO1xuICAgICAgICBpZiAobm9kZS5yYW5rID09PSByYW5rIHx8IG5vZGUubWluUmFuayA8PSByYW5rICYmIHJhbmsgPD0gbm9kZS5tYXhSYW5rKSB7XG4gICAgICAgICAgICByZXN1bHQuc2V0Tm9kZSh2KTtcbiAgICAgICAgICAgIHJlc3VsdC5zZXRQYXJlbnQodiwgcGFyZW50IHx8IHJvb3QpO1xuICAgICAgICAgICAgLy8gVGhpcyBhc3N1bWVzIHdlIGhhdmUgb25seSBzaG9ydCBlZGdlcyFcbiAgICAgICAgICAgIGdbcmVsYXRpb25zaGlwXSh2KS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdSA9IGUudiA9PT0gdiA/IGUudyA6IGUudjtcbiAgICAgICAgICAgICAgICBjb25zdCBlZGdlID0gcmVzdWx0LmVkZ2UodSwgdik7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2VpZ2h0ID0gZWRnZSAhPT0gdW5kZWZpbmVkID8gZWRnZS53ZWlnaHQgOiAwO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRFZGdlKHUsIHYsIHsgd2VpZ2h0OiBnLmVkZ2UoZSkud2VpZ2h0ICsgd2VpZ2h0IH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAobm9kZS5oYXNPd25Qcm9wZXJ0eShcIm1pblJhbmtcIikpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuc2V0Tm9kZSh2LCB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlckxlZnQ6IG5vZGUuYm9yZGVyTGVmdFtyYW5rXSxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IG5vZGUuYm9yZGVyUmlnaHRbcmFua11cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuY29uc3QgY3JlYXRlUm9vdE5vZGUgPSAoZykgPT4ge1xuICAgIGxldCB2O1xuICAgIHdoaWxlIChnLmhhc05vZGUoKHYgPSBgX3Jvb3Qke01hdGgucmFuZG9tKCl9YCkpKVxuICAgICAgICA7XG4gICAgcmV0dXJuIHY7XG59O1xuZXhwb3J0IGRlZmF1bHQgYnVpbGRMYXllckdyYXBoO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnVpbGQtbGF5ZXItZ3JhcGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/order/build-layer-graph.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/order/cross-count.js": /*!****************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/order/cross-count.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nconst twoLayerCrossCount = (g, northLayer, southLayer) => {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n const southPos = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"zipObject\"])(southLayer, southLayer.map((v, i) => i));\n const unflat = northLayer.map((v) => {\n var _a;\n const unsort = (_a = g.outEdges(v)) === null || _a === void 0 ? void 0 : _a.map((e) => {\n return { pos: southPos[e.w] || 0, weight: g.edge(e).weight };\n });\n return unsort === null || unsort === void 0 ? void 0 : unsort.sort((a, b) => a.pos - b.pos);\n });\n // @ts-ignore\n const southEntries = unflat.flat().filter(entry => entry !== undefined);\n // Build the accumulator tree\n let firstIndex = 1;\n while (firstIndex < southLayer.length)\n firstIndex <<= 1;\n const treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n const tree = Array(treeSize).fill(0, 0, treeSize);\n // Calculate the weighted crossings\n let cc = 0;\n southEntries === null || southEntries === void 0 ? void 0 : southEntries.forEach((entry) => {\n let index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n let weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n });\n return cc;\n};\nconst crossCount = (g, layering) => {\n let cc = 0;\n for (let i = 1; i < (layering === null || layering === void 0 ? void 0 : layering.length); ++i) {\n cc += twoLayerCrossCount(g, layering[i - 1], layering[i]);\n }\n return cc;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (crossCount);\n//# sourceMappingURL=cross-count.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvY3Jvc3MtY291bnQuanM/M2I0OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsdURBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDJFQUEyRTtBQUM5RjtBQUNBO0FBQ0E7QUFDQTtBQUNlLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvY3Jvc3MtY291bnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6aXBPYmplY3QgfSBmcm9tICcuLi91dGlsJztcbi8qXG4gKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBsYXllcmluZyAoYW4gYXJyYXkgb2YgbGF5ZXJzLCBlYWNoIHdpdGggYW4gYXJyYXkgb2ZcbiAqIG9yZGVyZXJkIG5vZGVzKSBhbmQgYSBncmFwaCBhbmQgcmV0dXJucyBhIHdlaWdodGVkIGNyb3NzaW5nIGNvdW50LlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIG11c3QgYmUgc2ltcGxlIChub3QgYSBtdWx0aWdyYXBoKSwgZGlyZWN0ZWQsIGFuZCBpbmNsdWRlXG4gKiAgICAgICBvbmx5IHNpbXBsZSBlZGdlcy5cbiAqICAgIDIuIEVkZ2VzIGluIHRoZSBpbnB1dCBncmFwaCBtdXN0IGhhdmUgYXNzaWduZWQgd2VpZ2h0cy5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGdyYXBoIGFuZCBsYXllcmluZyBtYXRyaXggYXJlIGxlZnQgdW5jaGFuZ2VkLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGlzIGRlcml2ZWQgZnJvbSBCYXJ0aCwgZXQgYWwuLCBcIkJpbGF5ZXIgQ3Jvc3MgQ291bnRpbmcuXCJcbiAqL1xuY29uc3QgdHdvTGF5ZXJDcm9zc0NvdW50ID0gKGcsIG5vcnRoTGF5ZXIsIHNvdXRoTGF5ZXIpID0+IHtcbiAgICAvLyBTb3J0IGFsbCBvZiB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgbm9ydGggYW5kIHNvdXRoIGxheWVycyBieSB0aGVpciBwb3NpdGlvblxuICAgIC8vIGluIHRoZSBub3J0aCBsYXllciBhbmQgdGhlbiB0aGUgc291dGguIE1hcCB0aGVzZSBlZGdlcyB0byB0aGUgcG9zaXRpb24gb2ZcbiAgICAvLyB0aGVpciBoZWFkIGluIHRoZSBzb3V0aCBsYXllci5cbiAgICBjb25zdCBzb3V0aFBvcyA9IHppcE9iamVjdChzb3V0aExheWVyLCBzb3V0aExheWVyLm1hcCgodiwgaSkgPT4gaSkpO1xuICAgIGNvbnN0IHVuZmxhdCA9IG5vcnRoTGF5ZXIubWFwKCh2KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgdW5zb3J0ID0gKF9hID0gZy5vdXRFZGdlcyh2KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgcG9zOiBzb3V0aFBvc1tlLnddIHx8IDAsIHdlaWdodDogZy5lZGdlKGUpLndlaWdodCB9O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVuc29ydCA9PT0gbnVsbCB8fCB1bnNvcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVuc29ydC5zb3J0KChhLCBiKSA9PiBhLnBvcyAtIGIucG9zKTtcbiAgICB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qgc291dGhFbnRyaWVzID0gdW5mbGF0LmZsYXQoKS5maWx0ZXIoZW50cnkgPT4gZW50cnkgIT09IHVuZGVmaW5lZCk7XG4gICAgLy8gQnVpbGQgdGhlIGFjY3VtdWxhdG9yIHRyZWVcbiAgICBsZXQgZmlyc3RJbmRleCA9IDE7XG4gICAgd2hpbGUgKGZpcnN0SW5kZXggPCBzb3V0aExheWVyLmxlbmd0aClcbiAgICAgICAgZmlyc3RJbmRleCA8PD0gMTtcbiAgICBjb25zdCB0cmVlU2l6ZSA9IDIgKiBmaXJzdEluZGV4IC0gMTtcbiAgICBmaXJzdEluZGV4IC09IDE7XG4gICAgY29uc3QgdHJlZSA9IEFycmF5KHRyZWVTaXplKS5maWxsKDAsIDAsIHRyZWVTaXplKTtcbiAgICAvLyBDYWxjdWxhdGUgdGhlIHdlaWdodGVkIGNyb3NzaW5nc1xuICAgIGxldCBjYyA9IDA7XG4gICAgc291dGhFbnRyaWVzID09PSBudWxsIHx8IHNvdXRoRW50cmllcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc291dGhFbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IGVudHJ5LnBvcyArIGZpcnN0SW5kZXg7XG4gICAgICAgIHRyZWVbaW5kZXhdICs9IGVudHJ5LndlaWdodDtcbiAgICAgICAgbGV0IHdlaWdodFN1bSA9IDA7XG4gICAgICAgIHdoaWxlIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIGlmIChpbmRleCAlIDIpIHtcbiAgICAgICAgICAgICAgICB3ZWlnaHRTdW0gKz0gdHJlZVtpbmRleCArIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5kZXggPSAoaW5kZXggLSAxKSA+PiAxO1xuICAgICAgICAgICAgdHJlZVtpbmRleF0gKz0gZW50cnkud2VpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGNjICs9IGVudHJ5LndlaWdodCAqIHdlaWdodFN1bTtcbiAgICB9KTtcbiAgICByZXR1cm4gY2M7XG59O1xuY29uc3QgY3Jvc3NDb3VudCA9IChnLCBsYXllcmluZykgPT4ge1xuICAgIGxldCBjYyA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCAobGF5ZXJpbmcgPT09IG51bGwgfHwgbGF5ZXJpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheWVyaW5nLmxlbmd0aCk7ICsraSkge1xuICAgICAgICBjYyArPSB0d29MYXllckNyb3NzQ291bnQoZywgbGF5ZXJpbmdbaSAtIDFdLCBsYXllcmluZ1tpXSk7XG4gICAgfVxuICAgIHJldHVybiBjYztcbn07XG5leHBvcnQgZGVmYXVsdCBjcm9zc0NvdW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3Jvc3MtY291bnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/order/cross-count.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/order/index.js": /*!**********************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/order/index.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _init_order__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./init-order */ \"./node_modules/@antv/layout/es/layout/dagre/src/order/init-order.js\");\n/* harmony import */ var _cross_count__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cross-count */ \"./node_modules/@antv/layout/es/layout/dagre/src/order/cross-count.js\");\n/* harmony import */ var _build_layer_graph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./build-layer-graph */ \"./node_modules/@antv/layout/es/layout/dagre/src/order/build-layer-graph.js\");\n/* harmony import */ var _add_subgraph_constraints__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./add-subgraph-constraints */ \"./node_modules/@antv/layout/es/layout/dagre/src/order/add-subgraph-constraints.js\");\n/* harmony import */ var _sort_subgraph__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sort-subgraph */ \"./node_modules/@antv/layout/es/layout/dagre/src/order/sort-subgraph.js\");\n/* harmony import */ var _graphlib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../graphlib */ \"./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n\n\n\n\n\n\n\n\nconst Graph = _graphlib__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Graph;\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nconst order = (g) => {\n const maxRank = _util__WEBPACK_IMPORTED_MODULE_6__[\"default\"].maxRank(g);\n const range1 = [];\n const range2 = [];\n for (let i = 1; i < maxRank + 1; i++)\n range1.push(i);\n for (let i = maxRank - 1; i > -1; i--)\n range2.push(i);\n const downLayerGraphs = buildLayerGraphs(g, range1, \"inEdges\");\n const upLayerGraphs = buildLayerGraphs(g, range2, \"outEdges\");\n let layering = Object(_init_order__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(g);\n assignOrder(g, layering);\n let bestCC = Number.POSITIVE_INFINITY;\n let best;\n for (let i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n layering = _util__WEBPACK_IMPORTED_MODULE_6__[\"default\"].buildLayerMatrix(g);\n const cc = Object(_cross_count__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"clone\"])(layering);\n bestCC = cc;\n }\n }\n // consider use previous result, maybe somewhat reduendant\n layering = Object(_init_order__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(g);\n assignOrder(g, layering);\n for (let i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2, true);\n layering = _util__WEBPACK_IMPORTED_MODULE_6__[\"default\"].buildLayerMatrix(g);\n const cc = Object(_cross_count__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = Object(_util__WEBPACK_IMPORTED_MODULE_7__[\"clone\"])(layering);\n bestCC = cc;\n }\n }\n assignOrder(g, best);\n};\nconst buildLayerGraphs = (g, ranks, relationship) => {\n return ranks.map((rank) => {\n return Object(_build_layer_graph__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(g, rank, relationship);\n });\n};\nconst sweepLayerGraphs = (layerGraphs, biasRight, usePrev) => {\n const cg = new Graph();\n layerGraphs === null || layerGraphs === void 0 ? void 0 : layerGraphs.forEach((lg) => {\n var _a;\n const root = lg.graph().root;\n const sorted = Object(_sort_subgraph__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(lg, root, cg, biasRight, usePrev);\n for (let i = 0; i < ((_a = sorted.vs) === null || _a === void 0 ? void 0 : _a.length) || 0; i++) {\n lg.node(sorted.vs[i]).order = i;\n }\n Object(_add_subgraph_constraints__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(lg, cg, sorted.vs);\n });\n};\nconst assignOrder = (g, layering) => {\n layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {\n layer === null || layer === void 0 ? void 0 : layer.forEach((v, i) => {\n g.node(v).order = i;\n });\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (order);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvaW5kZXguanM/ZGM4NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDRTtBQUNXO0FBQ2M7QUFDckI7QUFDUjtBQUNSO0FBQ2M7QUFDekMsY0FBYyxpREFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw2Q0FBSTtBQUN4QjtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBLDZCQUE2QixRQUFRO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwyREFBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsY0FBYztBQUMvQztBQUNBLG1CQUFtQiw2Q0FBSTtBQUN2QixtQkFBbUIsNERBQVU7QUFDN0I7QUFDQTtBQUNBLG1CQUFtQixtREFBSztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMkRBQVM7QUFDeEI7QUFDQSxpQ0FBaUMsY0FBYztBQUMvQztBQUNBLG1CQUFtQiw2Q0FBSTtBQUN2QixtQkFBbUIsNERBQVU7QUFDN0I7QUFDQTtBQUNBLG1CQUFtQixtREFBSztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0VBQWU7QUFDOUIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw4REFBWTtBQUNuQyx1QkFBdUIsNEVBQTRFO0FBQ25HO0FBQ0E7QUFDQSxRQUFRLHlFQUFzQjtBQUM5QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDZSxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZGFncmUvc3JjL29yZGVyL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluaXRPcmRlciBmcm9tICcuL2luaXQtb3JkZXInO1xuaW1wb3J0IGNyb3NzQ291bnQgZnJvbSAnLi9jcm9zcy1jb3VudCc7XG5pbXBvcnQgYnVpbGRMYXllckdyYXBoIGZyb20gJy4vYnVpbGQtbGF5ZXItZ3JhcGgnO1xuaW1wb3J0IGFkZFN1YmdyYXBoQ29uc3RyYWludHMgZnJvbSAnLi9hZGQtc3ViZ3JhcGgtY29uc3RyYWludHMnO1xuaW1wb3J0IHNvcnRTdWJncmFwaCBmcm9tICcuL3NvcnQtc3ViZ3JhcGgnO1xuaW1wb3J0IGdyYXBobGliIGZyb20gJy4uL2dyYXBobGliJztcbmltcG9ydCB1dGlsIGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgY2xvbmUgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsJztcbmNvbnN0IEdyYXBoID0gZ3JhcGhsaWIuR3JhcGg7XG4vKlxuICogQXBwbGllcyBoZXVyaXN0aWNzIHRvIG1pbmltaXplIGVkZ2UgY3Jvc3NpbmdzIGluIHRoZSBncmFwaCBhbmQgc2V0cyB0aGUgYmVzdFxuICogb3JkZXIgc29sdXRpb24gYXMgYW4gb3JkZXIgYXR0cmlidXRlIG9uIGVhY2ggbm9kZS5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIERBR1xuICogICAgMi4gR3JhcGggbm9kZXMgbXVzdCBiZSBvYmplY3RzIHdpdGggYSBcInJhbmtcIiBhdHRyaWJ1dGVcbiAqICAgIDMuIEdyYXBoIGVkZ2VzIG11c3QgaGF2ZSB0aGUgXCJ3ZWlnaHRcIiBhdHRyaWJ1dGVcbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbm9kZXMgd2lsbCBoYXZlIGFuIFwib3JkZXJcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgdGhlXG4gKiAgICAgICBhbGdvcml0aG0uXG4gKi9cbmNvbnN0IG9yZGVyID0gKGcpID0+IHtcbiAgICBjb25zdCBtYXhSYW5rID0gdXRpbC5tYXhSYW5rKGcpO1xuICAgIGNvbnN0IHJhbmdlMSA9IFtdO1xuICAgIGNvbnN0IHJhbmdlMiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbWF4UmFuayArIDE7IGkrKylcbiAgICAgICAgcmFuZ2UxLnB1c2goaSk7XG4gICAgZm9yIChsZXQgaSA9IG1heFJhbmsgLSAxOyBpID4gLTE7IGktLSlcbiAgICAgICAgcmFuZ2UyLnB1c2goaSk7XG4gICAgY29uc3QgZG93bkxheWVyR3JhcGhzID0gYnVpbGRMYXllckdyYXBocyhnLCByYW5nZTEsIFwiaW5FZGdlc1wiKTtcbiAgICBjb25zdCB1cExheWVyR3JhcGhzID0gYnVpbGRMYXllckdyYXBocyhnLCByYW5nZTIsIFwib3V0RWRnZXNcIik7XG4gICAgbGV0IGxheWVyaW5nID0gaW5pdE9yZGVyKGcpO1xuICAgIGFzc2lnbk9yZGVyKGcsIGxheWVyaW5nKTtcbiAgICBsZXQgYmVzdENDID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgIGxldCBiZXN0O1xuICAgIGZvciAobGV0IGkgPSAwLCBsYXN0QmVzdCA9IDA7IGxhc3RCZXN0IDwgNDsgKytpLCArK2xhc3RCZXN0KSB7XG4gICAgICAgIHN3ZWVwTGF5ZXJHcmFwaHMoaSAlIDIgPyBkb3duTGF5ZXJHcmFwaHMgOiB1cExheWVyR3JhcGhzLCBpICUgNCA+PSAyKTtcbiAgICAgICAgbGF5ZXJpbmcgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gICAgICAgIGNvbnN0IGNjID0gY3Jvc3NDb3VudChnLCBsYXllcmluZyk7XG4gICAgICAgIGlmIChjYyA8IGJlc3RDQykge1xuICAgICAgICAgICAgbGFzdEJlc3QgPSAwO1xuICAgICAgICAgICAgYmVzdCA9IGNsb25lKGxheWVyaW5nKTtcbiAgICAgICAgICAgIGJlc3RDQyA9IGNjO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGNvbnNpZGVyIHVzZSBwcmV2aW91cyByZXN1bHQsIG1heWJlIHNvbWV3aGF0IHJlZHVlbmRhbnRcbiAgICBsYXllcmluZyA9IGluaXRPcmRlcihnKTtcbiAgICBhc3NpZ25PcmRlcihnLCBsYXllcmluZyk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxhc3RCZXN0ID0gMDsgbGFzdEJlc3QgPCA0OyArK2ksICsrbGFzdEJlc3QpIHtcbiAgICAgICAgc3dlZXBMYXllckdyYXBocyhpICUgMiA/IGRvd25MYXllckdyYXBocyA6IHVwTGF5ZXJHcmFwaHMsIGkgJSA0ID49IDIsIHRydWUpO1xuICAgICAgICBsYXllcmluZyA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcbiAgICAgICAgY29uc3QgY2MgPSBjcm9zc0NvdW50KGcsIGxheWVyaW5nKTtcbiAgICAgICAgaWYgKGNjIDwgYmVzdENDKSB7XG4gICAgICAgICAgICBsYXN0QmVzdCA9IDA7XG4gICAgICAgICAgICBiZXN0ID0gY2xvbmUobGF5ZXJpbmcpO1xuICAgICAgICAgICAgYmVzdENDID0gY2M7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXNzaWduT3JkZXIoZywgYmVzdCk7XG59O1xuY29uc3QgYnVpbGRMYXllckdyYXBocyA9IChnLCByYW5rcywgcmVsYXRpb25zaGlwKSA9PiB7XG4gICAgcmV0dXJuIHJhbmtzLm1hcCgocmFuaykgPT4ge1xuICAgICAgICByZXR1cm4gYnVpbGRMYXllckdyYXBoKGcsIHJhbmssIHJlbGF0aW9uc2hpcCk7XG4gICAgfSk7XG59O1xuY29uc3Qgc3dlZXBMYXllckdyYXBocyA9IChsYXllckdyYXBocywgYmlhc1JpZ2h0LCB1c2VQcmV2KSA9PiB7XG4gICAgY29uc3QgY2cgPSBuZXcgR3JhcGgoKTtcbiAgICBsYXllckdyYXBocyA9PT0gbnVsbCB8fCBsYXllckdyYXBocyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5ZXJHcmFwaHMuZm9yRWFjaCgobGcpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCByb290ID0gbGcuZ3JhcGgoKS5yb290O1xuICAgICAgICBjb25zdCBzb3J0ZWQgPSBzb3J0U3ViZ3JhcGgobGcsIHJvb3QsIGNnLCBiaWFzUmlnaHQsIHVzZVByZXYpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICgoX2EgPSBzb3J0ZWQudnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHx8IDA7IGkrKykge1xuICAgICAgICAgICAgbGcubm9kZShzb3J0ZWQudnNbaV0pLm9yZGVyID0gaTtcbiAgICAgICAgfVxuICAgICAgICBhZGRTdWJncmFwaENvbnN0cmFpbnRzKGxnLCBjZywgc29ydGVkLnZzKTtcbiAgICB9KTtcbn07XG5jb25zdCBhc3NpZ25PcmRlciA9IChnLCBsYXllcmluZykgPT4ge1xuICAgIGxheWVyaW5nID09PSBudWxsIHx8IGxheWVyaW5nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXllcmluZy5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgICBsYXllciA9PT0gbnVsbCB8fCBsYXllciA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5ZXIuZm9yRWFjaCgodiwgaSkgPT4ge1xuICAgICAgICAgICAgZy5ub2RlKHYpLm9yZGVyID0gaTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgb3JkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/order/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/order/init-data-order.js": /*!********************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/order/init-data-order.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 按照数据中的结果设置fixorder\n */\nconst initDataOrder = (g, nodeOrder) => {\n const simpleNodes = g.nodes().filter((v) => {\n var _a;\n return !((_a = g.children(v)) === null || _a === void 0 ? void 0 : _a.length);\n });\n const ranks = simpleNodes.map((v) => g.node(v).rank);\n const maxRank = Math.max(...ranks);\n const layers = [];\n for (let i = 0; i < maxRank + 1; i++) {\n layers.push([]);\n }\n nodeOrder === null || nodeOrder === void 0 ? void 0 : nodeOrder.forEach((n) => {\n const node = g.node(n);\n // 只考虑原有节点,dummy节点需要按照后续算法排出\n if (!node || node.dummy)\n return;\n if (!isNaN(node.rank)) {\n node.fixorder = layers[node.rank].length; // 设置fixorder为当层的顺序\n layers[node.rank].push(n);\n }\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (initDataOrder);\n//# sourceMappingURL=init-data-order.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvaW5pdC1kYXRhLW9yZGVyLmpzP2YwZGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7QUFDckQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNlLDRFQUFhLEVBQUM7QUFDN0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvaW5pdC1kYXRhLW9yZGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDmjInnhafmlbDmja7kuK3nmoTnu5Pmnpzorr7nva5maXhvcmRlclxuICovXG5jb25zdCBpbml0RGF0YU9yZGVyID0gKGcsIG5vZGVPcmRlcikgPT4ge1xuICAgIGNvbnN0IHNpbXBsZU5vZGVzID0gZy5ub2RlcygpLmZpbHRlcigodikgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAhKChfYSA9IGcuY2hpbGRyZW4odikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJhbmtzID0gc2ltcGxlTm9kZXMubWFwKCh2KSA9PiBnLm5vZGUodikucmFuayk7XG4gICAgY29uc3QgbWF4UmFuayA9IE1hdGgubWF4KC4uLnJhbmtzKTtcbiAgICBjb25zdCBsYXllcnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFJhbmsgKyAxOyBpKyspIHtcbiAgICAgICAgbGF5ZXJzLnB1c2goW10pO1xuICAgIH1cbiAgICBub2RlT3JkZXIgPT09IG51bGwgfHwgbm9kZU9yZGVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlT3JkZXIuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICBjb25zdCBub2RlID0gZy5ub2RlKG4pO1xuICAgICAgICAvLyDlj6rogIPomZHljp/mnInoioLngrnvvIxkdW1teeiKgueCuemcgOimgeaMieeFp+WQjue7reeul+azleaOkuWHulxuICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5kdW1teSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFpc05hTihub2RlLnJhbmspKSB7XG4gICAgICAgICAgICBub2RlLmZpeG9yZGVyID0gbGF5ZXJzW25vZGUucmFua10ubGVuZ3RoOyAvLyDorr7nva5maXhvcmRlcuS4uuW9k+WxgueahOmhuuW6j1xuICAgICAgICAgICAgbGF5ZXJzW25vZGUucmFua10ucHVzaChuKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IGluaXREYXRhT3JkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbml0LWRhdGEtb3JkZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/order/init-data-order.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/order/init-order.js": /*!***************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/order/init-order.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nconst initOrder = (g) => {\n const visited = {};\n const simpleNodes = g.nodes().filter((v) => {\n var _a;\n return !((_a = g.children(v)) === null || _a === void 0 ? void 0 : _a.length);\n });\n const nodeRanks = simpleNodes.map((v) => g.node(v).rank);\n const maxRank = Math.max(...nodeRanks);\n const layers = [];\n for (let i = 0; i < maxRank + 1; i++) {\n layers.push([]);\n }\n // const layers = _.map(_.range(maxRank + 1), function() { return []; });\n const dfs = (v) => {\n var _a;\n if (visited.hasOwnProperty(v))\n return;\n visited[v] = true;\n const node = g.node(v);\n if (!isNaN(node.rank)) {\n layers[node.rank].push(v);\n }\n (_a = g.successors(v)) === null || _a === void 0 ? void 0 : _a.forEach((child) => dfs(child));\n };\n const orderedVs = simpleNodes.sort((a, b) => g.node(a).rank - g.node(b).rank);\n // const orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n // 有fixOrder的,直接排序好放进去\n const beforeSort = orderedVs.filter((n) => {\n return g.node(n).fixorder !== undefined;\n });\n const fixOrderNodes = beforeSort.sort((a, b) => g.node(a).fixorder - g.node(b).fixorder);\n fixOrderNodes === null || fixOrderNodes === void 0 ? void 0 : fixOrderNodes.forEach((n) => {\n if (!isNaN(g.node(n).rank)) {\n layers[g.node(n).rank].push(n);\n }\n visited[n] = true;\n });\n orderedVs === null || orderedVs === void 0 ? void 0 : orderedVs.forEach(dfs);\n return layers;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (initOrder);\n//# sourceMappingURL=init-order.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvaW5pdC1vcmRlci5qcz82ZjliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0EsOERBQThELFdBQVcsRUFBRTtBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQsdUJBQXVCLEVBQUU7QUFDckY7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDZSx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZGFncmUvc3JjL29yZGVyL2luaXQtb3JkZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQXNzaWducyBhbiBpbml0aWFsIG9yZGVyIHZhbHVlIGZvciBlYWNoIG5vZGUgYnkgcGVyZm9ybWluZyBhIERGUyBzZWFyY2hcbiAqIHN0YXJ0aW5nIGZyb20gbm9kZXMgaW4gdGhlIGZpcnN0IHJhbmsuIE5vZGVzIGFyZSBhc3NpZ25lZCBhbiBvcmRlciBpbiB0aGVpclxuICogcmFuayBhcyB0aGV5IGFyZSBmaXJzdCB2aXNpdGVkLlxuICpcbiAqIFRoaXMgYXBwcm9hY2ggY29tZXMgZnJvbSBHYW5zbmVyLCBldCBhbC4sIFwiQSBUZWNobmlxdWUgZm9yIERyYXdpbmcgRGlyZWN0ZWRcbiAqIEdyYXBocy5cIlxuICpcbiAqIFJldHVybnMgYSBsYXllcmluZyBtYXRyaXggd2l0aCBhbiBhcnJheSBwZXIgbGF5ZXIgYW5kIGVhY2ggbGF5ZXIgc29ydGVkIGJ5XG4gKiB0aGUgb3JkZXIgb2YgaXRzIG5vZGVzLlxuICovXG5jb25zdCBpbml0T3JkZXIgPSAoZykgPT4ge1xuICAgIGNvbnN0IHZpc2l0ZWQgPSB7fTtcbiAgICBjb25zdCBzaW1wbGVOb2RlcyA9IGcubm9kZXMoKS5maWx0ZXIoKHYpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gISgoX2EgPSBnLmNoaWxkcmVuKHYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKTtcbiAgICB9KTtcbiAgICBjb25zdCBub2RlUmFua3MgPSBzaW1wbGVOb2Rlcy5tYXAoKHYpID0+IGcubm9kZSh2KS5yYW5rKTtcbiAgICBjb25zdCBtYXhSYW5rID0gTWF0aC5tYXgoLi4ubm9kZVJhbmtzKTtcbiAgICBjb25zdCBsYXllcnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFJhbmsgKyAxOyBpKyspIHtcbiAgICAgICAgbGF5ZXJzLnB1c2goW10pO1xuICAgIH1cbiAgICAvLyBjb25zdCBsYXllcnMgPSBfLm1hcChfLnJhbmdlKG1heFJhbmsgKyAxKSwgZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfSk7XG4gICAgY29uc3QgZGZzID0gKHYpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodmlzaXRlZC5oYXNPd25Qcm9wZXJ0eSh2KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdmlzaXRlZFt2XSA9IHRydWU7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBnLm5vZGUodik7XG4gICAgICAgIGlmICghaXNOYU4obm9kZS5yYW5rKSkge1xuICAgICAgICAgICAgbGF5ZXJzW25vZGUucmFua10ucHVzaCh2KTtcbiAgICAgICAgfVxuICAgICAgICAoX2EgPSBnLnN1Y2Nlc3NvcnModikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKChjaGlsZCkgPT4gZGZzKGNoaWxkKSk7XG4gICAgfTtcbiAgICBjb25zdCBvcmRlcmVkVnMgPSBzaW1wbGVOb2Rlcy5zb3J0KChhLCBiKSA9PiBnLm5vZGUoYSkucmFuayAtIGcubm9kZShiKS5yYW5rKTtcbiAgICAvLyBjb25zdCBvcmRlcmVkVnMgPSBfLnNvcnRCeShzaW1wbGVOb2RlcywgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLnJhbms7IH0pO1xuICAgIC8vIOaciWZpeE9yZGVy55qE77yM55u05o6l5o6S5bqP5aW95pS+6L+b5Y67XG4gICAgY29uc3QgYmVmb3JlU29ydCA9IG9yZGVyZWRWcy5maWx0ZXIoKG4pID0+IHtcbiAgICAgICAgcmV0dXJuIGcubm9kZShuKS5maXhvcmRlciAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpeE9yZGVyTm9kZXMgPSBiZWZvcmVTb3J0LnNvcnQoKGEsIGIpID0+IGcubm9kZShhKS5maXhvcmRlciAtIGcubm9kZShiKS5maXhvcmRlcik7XG4gICAgZml4T3JkZXJOb2RlcyA9PT0gbnVsbCB8fCBmaXhPcmRlck5vZGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmaXhPcmRlck5vZGVzLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgaWYgKCFpc05hTihnLm5vZGUobikucmFuaykpIHtcbiAgICAgICAgICAgIGxheWVyc1tnLm5vZGUobikucmFua10ucHVzaChuKTtcbiAgICAgICAgfVxuICAgICAgICB2aXNpdGVkW25dID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBvcmRlcmVkVnMgPT09IG51bGwgfHwgb3JkZXJlZFZzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcmRlcmVkVnMuZm9yRWFjaChkZnMpO1xuICAgIHJldHVybiBsYXllcnM7XG59O1xuZXhwb3J0IGRlZmF1bHQgaW5pdE9yZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5pdC1vcmRlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/order/init-order.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/order/resolve-conflicts.js": /*!**********************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/order/resolve-conflicts.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nconst resolveConflicts = (entries, cg) => {\n var _a, _b, _c;\n const mappedEntries = {};\n entries === null || entries === void 0 ? void 0 : entries.forEach((entry, i) => {\n const tmp = mappedEntries[entry.v] = {\n i,\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n };\n if (entry.barycenter !== undefined) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n (_a = cg.edges()) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n const entryV = mappedEntries[e.v];\n const entryW = mappedEntries[e.w];\n if (entryV !== undefined && entryW !== undefined) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n // @ts-ignore\n const sourceSet = (_c = (_b = Object.values(mappedEntries)).filter) === null || _c === void 0 ? void 0 : _c.call(_b, (entry) => !entry.indegree);\n return doResolveConflicts(sourceSet);\n};\nconst doResolveConflicts = (sourceSet) => {\n var _a, _b;\n const entries = [];\n const handleIn = (vEntry) => {\n return (uEntry) => {\n if (uEntry.merged)\n return;\n if (uEntry.barycenter === undefined ||\n vEntry.barycenter === undefined ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n };\n const handleOut = (vEntry) => {\n return (wEntry) => {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n };\n while (sourceSet === null || sourceSet === void 0 ? void 0 : sourceSet.length) {\n const entry = sourceSet.pop();\n entries.push(entry);\n (_a = entry[\"in\"].reverse()) === null || _a === void 0 ? void 0 : _a.forEach((e) => handleIn(entry)(e));\n (_b = entry.out) === null || _b === void 0 ? void 0 : _b.forEach((e) => handleOut(entry)(e));\n }\n const filtered = entries.filter((entry) => !entry.merged);\n const keys = [\"vs\", \"i\", \"barycenter\", \"weight\"];\n return filtered.map((entry) => {\n const picked = {};\n keys === null || keys === void 0 ? void 0 : keys.forEach((key) => {\n if (entry[key] === undefined)\n return;\n picked[key] = entry[key];\n });\n return picked;\n });\n};\nconst mergeEntries = (target, source) => {\n var _a;\n let sum = 0;\n let weight = 0;\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n target.vs = (_a = source.vs) === null || _a === void 0 ? void 0 : _a.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (resolveConflicts);\n//# sourceMappingURL=resolve-conflicts.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvcmVzb2x2ZS1jb25mbGljdHMuanM/NzkxYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0Esd0NBQXdDLHNCQUFzQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msc0JBQXNCO0FBQ3hELDhCQUE4QixFQUFFO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QywwQkFBMEI7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLCtFQUFnQixFQUFDO0FBQ2hDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZGFncmUvc3JjL29yZGVyL3Jlc29sdmUtY29uZmxpY3RzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEdpdmVuIGEgbGlzdCBvZiBlbnRyaWVzIG9mIHRoZSBmb3JtIHt2LCBiYXJ5Y2VudGVyLCB3ZWlnaHR9IGFuZCBhXG4gKiBjb25zdHJhaW50IGdyYXBoIHRoaXMgZnVuY3Rpb24gd2lsbCByZXNvbHZlIGFueSBjb25mbGljdHMgYmV0d2VlbiB0aGVcbiAqIGNvbnN0cmFpbnQgZ3JhcGggYW5kIHRoZSBiYXJ5Y2VudGVycyBmb3IgdGhlIGVudHJpZXMuIElmIHRoZSBiYXJ5Y2VudGVycyBmb3JcbiAqIGFuIGVudHJ5IHdvdWxkIHZpb2xhdGUgYSBjb25zdHJhaW50IGluIHRoZSBjb25zdHJhaW50IGdyYXBoIHRoZW4gd2UgY29hbGVzY2VcbiAqIHRoZSBub2RlcyBpbiB0aGUgY29uZmxpY3QgaW50byBhIG5ldyBub2RlIHRoYXQgcmVzcGVjdHMgdGhlIGNvbnRyYWludCBhbmRcbiAqIGFnZ3JlZ2F0ZXMgYmFyeWNlbnRlciBhbmQgd2VpZ2h0IGluZm9ybWF0aW9uLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uIGluIEZvcnN0ZXIsIFwiQSBGYXN0IGFuZFxuICogU2ltcGxlIEh1ZXJpc3RpYyBmb3IgQ29uc3RyYWluZWQgVHdvLUxldmVsIENyb3NzaW5nIFJlZHVjdGlvbixcIiB0aG91Z2h0IGl0XG4gKiBkaWZmZXJzIGluIHNvbWUgc3BlY2lmaWMgZGV0YWlscy5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBFYWNoIGVudHJ5IGhhcyB0aGUgZm9ybSB7diwgYmFyeWNlbnRlciwgd2VpZ2h0fSwgb3IgaWYgdGhlIG5vZGUgaGFzXG4gKiAgICAgICBubyBiYXJ5Y2VudGVyLCB0aGVuIHt2fS5cbiAqXG4gKiBSZXR1cm5zOlxuICpcbiAqICAgIEEgbmV3IGxpc3Qgb2YgZW50cmllcyBvZiB0aGUgZm9ybSB7dnMsIGksIGJhcnljZW50ZXIsIHdlaWdodH0uIFRoZSBsaXN0XG4gKiAgICBgdnNgIG1heSBlaXRoZXIgYmUgYSBzaW5nbGV0b24gb3IgaXQgbWF5IGJlIGFuIGFnZ3JlZ2F0aW9uIG9mIG5vZGVzXG4gKiAgICBvcmRlcmVkIHN1Y2ggdGhhdCB0aGV5IGRvIG5vdCB2aW9sYXRlIGNvbnN0cmFpbnRzIGZyb20gdGhlIGNvbnN0cmFpbnRcbiAqICAgIGdyYXBoLiBUaGUgcHJvcGVydHkgYGlgIGlzIHRoZSBsb3dlc3Qgb3JpZ2luYWwgaW5kZXggb2YgYW55IG9mIHRoZVxuICogICAgZWxlbWVudHMgaW4gYHZzYC5cbiAqL1xuY29uc3QgcmVzb2x2ZUNvbmZsaWN0cyA9IChlbnRyaWVzLCBjZykgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGNvbnN0IG1hcHBlZEVudHJpZXMgPSB7fTtcbiAgICBlbnRyaWVzID09PSBudWxsIHx8IGVudHJpZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVudHJpZXMuZm9yRWFjaCgoZW50cnksIGkpID0+IHtcbiAgICAgICAgY29uc3QgdG1wID0gbWFwcGVkRW50cmllc1tlbnRyeS52XSA9IHtcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBpbmRlZ3JlZTogMCxcbiAgICAgICAgICAgIFwiaW5cIjogW10sXG4gICAgICAgICAgICBvdXQ6IFtdLFxuICAgICAgICAgICAgdnM6IFtlbnRyeS52XSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGVudHJ5LmJhcnljZW50ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdG1wLmJhcnljZW50ZXIgPSBlbnRyeS5iYXJ5Y2VudGVyO1xuICAgICAgICAgICAgdG1wLndlaWdodCA9IGVudHJ5LndlaWdodDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIChfYSA9IGNnLmVkZ2VzKCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5ViA9IG1hcHBlZEVudHJpZXNbZS52XTtcbiAgICAgICAgY29uc3QgZW50cnlXID0gbWFwcGVkRW50cmllc1tlLnddO1xuICAgICAgICBpZiAoZW50cnlWICE9PSB1bmRlZmluZWQgJiYgZW50cnlXICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGVudHJ5Vy5pbmRlZ3JlZSsrO1xuICAgICAgICAgICAgZW50cnlWLm91dC5wdXNoKG1hcHBlZEVudHJpZXNbZS53XSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qgc291cmNlU2V0ID0gKF9jID0gKF9iID0gT2JqZWN0LnZhbHVlcyhtYXBwZWRFbnRyaWVzKSkuZmlsdGVyKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuY2FsbChfYiwgKGVudHJ5KSA9PiAhZW50cnkuaW5kZWdyZWUpO1xuICAgIHJldHVybiBkb1Jlc29sdmVDb25mbGljdHMoc291cmNlU2V0KTtcbn07XG5jb25zdCBkb1Jlc29sdmVDb25mbGljdHMgPSAoc291cmNlU2V0KSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgY29uc3QgaGFuZGxlSW4gPSAodkVudHJ5KSA9PiB7XG4gICAgICAgIHJldHVybiAodUVudHJ5KSA9PiB7XG4gICAgICAgICAgICBpZiAodUVudHJ5Lm1lcmdlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBpZiAodUVudHJ5LmJhcnljZW50ZXIgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgIHZFbnRyeS5iYXJ5Y2VudGVyID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICB1RW50cnkuYmFyeWNlbnRlciA+PSB2RW50cnkuYmFyeWNlbnRlcikge1xuICAgICAgICAgICAgICAgIG1lcmdlRW50cmllcyh2RW50cnksIHVFbnRyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBjb25zdCBoYW5kbGVPdXQgPSAodkVudHJ5KSA9PiB7XG4gICAgICAgIHJldHVybiAod0VudHJ5KSA9PiB7XG4gICAgICAgICAgICB3RW50cnlbXCJpblwiXS5wdXNoKHZFbnRyeSk7XG4gICAgICAgICAgICBpZiAoLS13RW50cnkuaW5kZWdyZWUgPT09IDApIHtcbiAgICAgICAgICAgICAgICBzb3VyY2VTZXQucHVzaCh3RW50cnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG4gICAgd2hpbGUgKHNvdXJjZVNldCA9PT0gbnVsbCB8fCBzb3VyY2VTZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNvdXJjZVNldC5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSBzb3VyY2VTZXQucG9wKCk7XG4gICAgICAgIGVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgICAgIChfYSA9IGVudHJ5W1wiaW5cIl0ucmV2ZXJzZSgpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgoZSkgPT4gaGFuZGxlSW4oZW50cnkpKGUpKTtcbiAgICAgICAgKF9iID0gZW50cnkub3V0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZm9yRWFjaCgoZSkgPT4gaGFuZGxlT3V0KGVudHJ5KShlKSk7XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlcmVkID0gZW50cmllcy5maWx0ZXIoKGVudHJ5KSA9PiAhZW50cnkubWVyZ2VkKTtcbiAgICBjb25zdCBrZXlzID0gW1widnNcIiwgXCJpXCIsIFwiYmFyeWNlbnRlclwiLCBcIndlaWdodFwiXTtcbiAgICByZXR1cm4gZmlsdGVyZWQubWFwKChlbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBwaWNrZWQgPSB7fTtcbiAgICAgICAga2V5cyA9PT0gbnVsbCB8fCBrZXlzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKGVudHJ5W2tleV0gPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBwaWNrZWRba2V5XSA9IGVudHJ5W2tleV07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGlja2VkO1xuICAgIH0pO1xufTtcbmNvbnN0IG1lcmdlRW50cmllcyA9ICh0YXJnZXQsIHNvdXJjZSkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBsZXQgc3VtID0gMDtcbiAgICBsZXQgd2VpZ2h0ID0gMDtcbiAgICBpZiAodGFyZ2V0LndlaWdodCkge1xuICAgICAgICBzdW0gKz0gdGFyZ2V0LmJhcnljZW50ZXIgKiB0YXJnZXQud2VpZ2h0O1xuICAgICAgICB3ZWlnaHQgKz0gdGFyZ2V0LndlaWdodDtcbiAgICB9XG4gICAgaWYgKHNvdXJjZS53ZWlnaHQpIHtcbiAgICAgICAgc3VtICs9IHNvdXJjZS5iYXJ5Y2VudGVyICogc291cmNlLndlaWdodDtcbiAgICAgICAgd2VpZ2h0ICs9IHNvdXJjZS53ZWlnaHQ7XG4gICAgfVxuICAgIHRhcmdldC52cyA9IChfYSA9IHNvdXJjZS52cykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvbmNhdCh0YXJnZXQudnMpO1xuICAgIHRhcmdldC5iYXJ5Y2VudGVyID0gc3VtIC8gd2VpZ2h0O1xuICAgIHRhcmdldC53ZWlnaHQgPSB3ZWlnaHQ7XG4gICAgdGFyZ2V0LmkgPSBNYXRoLm1pbihzb3VyY2UuaSwgdGFyZ2V0LmkpO1xuICAgIHNvdXJjZS5tZXJnZWQgPSB0cnVlO1xufTtcbmV4cG9ydCBkZWZhdWx0IHJlc29sdmVDb25mbGljdHM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXNvbHZlLWNvbmZsaWN0cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/order/resolve-conflicts.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/order/sort-subgraph.js": /*!******************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/order/sort-subgraph.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _barycenter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./barycenter */ \"./node_modules/@antv/layout/es/layout/dagre/src/order/barycenter.js\");\n/* harmony import */ var _resolve_conflicts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resolve-conflicts */ \"./node_modules/@antv/layout/es/layout/dagre/src/order/resolve-conflicts.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sort */ \"./node_modules/@antv/layout/es/layout/dagre/src/order/sort.js\");\n\n\n\nconst sortSubgraph = (g, v, cg, biasRight, usePrev) => {\n var _a, _b, _c, _d;\n let movable = g.children(v);\n // fixorder的点不参与排序(这个方案不合适,只排了新增节点,和原来的分离)\n const node = g.node(v);\n const bl = node ? node.borderLeft : undefined;\n const br = node ? node.borderRight : undefined;\n const subgraphs = {};\n if (bl) {\n movable = movable === null || movable === void 0 ? void 0 : movable.filter((w) => {\n return w !== bl && w !== br;\n });\n }\n const barycenters = Object(_barycenter__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(g, movable || []);\n barycenters === null || barycenters === void 0 ? void 0 : barycenters.forEach((entry) => {\n var _a;\n if ((_a = g.children(entry.v)) === null || _a === void 0 ? void 0 : _a.length) {\n const subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (subgraphResult.hasOwnProperty(\"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n const entries = Object(_resolve_conflicts__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n // 添加fixorder信息到entries里边\n // TODO: 不考虑复合情况,只用第一个点的fixorder信息,后续考虑更完备的实现\n (_a = entries.filter(e => { var _a; return !!e.vs || ((_a = e.vs) === null || _a === void 0 ? void 0 : _a.length) > 0; })) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n const node = g.node(e.vs[0]);\n e.fixorder = node.fixorder;\n e.order = node.order;\n });\n const result = Object(_sort__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(entries, biasRight, usePrev);\n if (bl) {\n // @ts-ignore\n result.vs = [bl, result.vs, br].flat();\n if ((_b = g.predecessors(bl)) === null || _b === void 0 ? void 0 : _b.length) {\n const blPred = g.node(((_c = g.predecessors(bl)) === null || _c === void 0 ? void 0 : _c[0]) || {});\n const brPred = g.node(((_d = g.predecessors(br)) === null || _d === void 0 ? void 0 : _d[0]) || {});\n if (!result.hasOwnProperty(\"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n return result;\n};\nconst expandSubgraphs = (entries, subgraphs) => {\n entries === null || entries === void 0 ? void 0 : entries.forEach((entry) => {\n var _a;\n const vss = (_a = entry.vs) === null || _a === void 0 ? void 0 : _a.map((v) => {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n });\n entry.vs = vss.flat();\n });\n};\nconst mergeBarycenters = (target, other) => {\n if (target.barycenter !== undefined) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n }\n else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (sortSubgraph);\n//# sourceMappingURL=sort-subgraph.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvc29ydC1zdWJncmFwaC5qcz9mMTU3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNDO0FBQ2E7QUFDekI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLHdCQUF3QiwyREFBVTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsb0JBQW9CLGtFQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsUUFBUSxtRkFBbUYsRUFBRTtBQUM1SDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsbUJBQW1CLHFEQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEdBQThHO0FBQzlHLDhHQUE4RztBQUM5RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLDJFQUFZLEVBQUM7QUFDNUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvc29ydC1zdWJncmFwaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXJ5Y2VudGVyIGZyb20gJy4vYmFyeWNlbnRlcic7XG5pbXBvcnQgcmVzb2x2ZUNvbmZsaWN0cyBmcm9tICcuL3Jlc29sdmUtY29uZmxpY3RzJztcbmltcG9ydCBzb3J0IGZyb20gJy4vc29ydCc7XG5jb25zdCBzb3J0U3ViZ3JhcGggPSAoZywgdiwgY2csIGJpYXNSaWdodCwgdXNlUHJldikgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICBsZXQgbW92YWJsZSA9IGcuY2hpbGRyZW4odik7XG4gICAgLy8gZml4b3JkZXLnmoTngrnkuI3lj4LkuI7mjpLluo/vvIjov5nkuKrmlrnmoYjkuI3lkIjpgILvvIzlj6rmjpLkuobmlrDlop7oioLngrnvvIzlkozljp/mnaXnmoTliIbnprvvvIlcbiAgICBjb25zdCBub2RlID0gZy5ub2RlKHYpO1xuICAgIGNvbnN0IGJsID0gbm9kZSA/IG5vZGUuYm9yZGVyTGVmdCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBiciA9IG5vZGUgPyBub2RlLmJvcmRlclJpZ2h0IDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN1YmdyYXBocyA9IHt9O1xuICAgIGlmIChibCkge1xuICAgICAgICBtb3ZhYmxlID0gbW92YWJsZSA9PT0gbnVsbCB8fCBtb3ZhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtb3ZhYmxlLmZpbHRlcigodykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHcgIT09IGJsICYmIHcgIT09IGJyO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgYmFyeWNlbnRlcnMgPSBiYXJ5Y2VudGVyKGcsIG1vdmFibGUgfHwgW10pO1xuICAgIGJhcnljZW50ZXJzID09PSBudWxsIHx8IGJhcnljZW50ZXJzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBiYXJ5Y2VudGVycy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICgoX2EgPSBnLmNoaWxkcmVuKGVudHJ5LnYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJncmFwaFJlc3VsdCA9IHNvcnRTdWJncmFwaChnLCBlbnRyeS52LCBjZywgYmlhc1JpZ2h0KTtcbiAgICAgICAgICAgIHN1YmdyYXBoc1tlbnRyeS52XSA9IHN1YmdyYXBoUmVzdWx0O1xuICAgICAgICAgICAgaWYgKHN1YmdyYXBoUmVzdWx0Lmhhc093blByb3BlcnR5KFwiYmFyeWNlbnRlclwiKSkge1xuICAgICAgICAgICAgICAgIG1lcmdlQmFyeWNlbnRlcnMoZW50cnksIHN1YmdyYXBoUmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGVudHJpZXMgPSByZXNvbHZlQ29uZmxpY3RzKGJhcnljZW50ZXJzLCBjZyk7XG4gICAgZXhwYW5kU3ViZ3JhcGhzKGVudHJpZXMsIHN1YmdyYXBocyk7XG4gICAgLy8g5re75YqgZml4b3JkZXLkv6Hmga/liLBlbnRyaWVz6YeM6L65XG4gICAgLy8gVE9ETzog5LiN6ICD6JmR5aSN5ZCI5oOF5Ya177yM5Y+q55So56ys5LiA5Liq54K555qEZml4b3JkZXLkv6Hmga/vvIzlkI7nu63ogIPomZHmm7TlrozlpIfnmoTlrp7njrBcbiAgICAoX2EgPSBlbnRyaWVzLmZpbHRlcihlID0+IHsgdmFyIF9hOyByZXR1cm4gISFlLnZzIHx8ICgoX2EgPSBlLnZzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDA7IH0pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICBjb25zdCBub2RlID0gZy5ub2RlKGUudnNbMF0pO1xuICAgICAgICBlLmZpeG9yZGVyID0gbm9kZS5maXhvcmRlcjtcbiAgICAgICAgZS5vcmRlciA9IG5vZGUub3JkZXI7XG4gICAgfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gc29ydChlbnRyaWVzLCBiaWFzUmlnaHQsIHVzZVByZXYpO1xuICAgIGlmIChibCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJlc3VsdC52cyA9IFtibCwgcmVzdWx0LnZzLCBicl0uZmxhdCgpO1xuICAgICAgICBpZiAoKF9iID0gZy5wcmVkZWNlc3NvcnMoYmwpKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBibFByZWQgPSBnLm5vZGUoKChfYyA9IGcucHJlZGVjZXNzb3JzKGJsKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jWzBdKSB8fCB7fSk7XG4gICAgICAgICAgICBjb25zdCBiclByZWQgPSBnLm5vZGUoKChfZCA9IGcucHJlZGVjZXNzb3JzKGJyKSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kWzBdKSB8fCB7fSk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNPd25Qcm9wZXJ0eShcImJhcnljZW50ZXJcIikpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuYmFyeWNlbnRlciA9IDA7XG4gICAgICAgICAgICAgICAgcmVzdWx0LndlaWdodCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuYmFyeWNlbnRlciA9IChyZXN1bHQuYmFyeWNlbnRlciAqIHJlc3VsdC53ZWlnaHQgK1xuICAgICAgICAgICAgICAgIGJsUHJlZC5vcmRlciArIGJyUHJlZC5vcmRlcikgLyAocmVzdWx0LndlaWdodCArIDIpO1xuICAgICAgICAgICAgcmVzdWx0LndlaWdodCArPSAyO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuY29uc3QgZXhwYW5kU3ViZ3JhcGhzID0gKGVudHJpZXMsIHN1YmdyYXBocykgPT4ge1xuICAgIGVudHJpZXMgPT09IG51bGwgfHwgZW50cmllcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHZzcyA9IChfYSA9IGVudHJ5LnZzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3ViZ3JhcGhzW3ZdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1YmdyYXBoc1t2XS52cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9KTtcbiAgICAgICAgZW50cnkudnMgPSB2c3MuZmxhdCgpO1xuICAgIH0pO1xufTtcbmNvbnN0IG1lcmdlQmFyeWNlbnRlcnMgPSAodGFyZ2V0LCBvdGhlcikgPT4ge1xuICAgIGlmICh0YXJnZXQuYmFyeWNlbnRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRhcmdldC5iYXJ5Y2VudGVyID0gKHRhcmdldC5iYXJ5Y2VudGVyICogdGFyZ2V0LndlaWdodCArXG4gICAgICAgICAgICBvdGhlci5iYXJ5Y2VudGVyICogb3RoZXIud2VpZ2h0KSAvXG4gICAgICAgICAgICAodGFyZ2V0LndlaWdodCArIG90aGVyLndlaWdodCk7XG4gICAgICAgIHRhcmdldC53ZWlnaHQgKz0gb3RoZXIud2VpZ2h0O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFyZ2V0LmJhcnljZW50ZXIgPSBvdGhlci5iYXJ5Y2VudGVyO1xuICAgICAgICB0YXJnZXQud2VpZ2h0ID0gb3RoZXIud2VpZ2h0O1xuICAgIH1cbn07XG5leHBvcnQgZGVmYXVsdCBzb3J0U3ViZ3JhcGg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zb3J0LXN1YmdyYXBoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/order/sort-subgraph.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/order/sort.js": /*!*********************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/order/sort.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n\nconst sort = (entries, biasRight, usePrev) => {\n const parts = _util__WEBPACK_IMPORTED_MODULE_0__[\"default\"].partition(entries, (entry) => {\n // NOTE: 有fixorder的也可以排\n return (entry.hasOwnProperty(\"fixorder\") && !isNaN(entry.fixorder)) || entry.hasOwnProperty(\"barycenter\");\n });\n const sortable = parts.lhs;\n const unsortable = parts.rhs.sort((a, b) => -a.i - (-b.i));\n const vs = [];\n let sum = 0;\n let weight = 0;\n let vsIndex = 0;\n sortable === null || sortable === void 0 ? void 0 : sortable.sort(compareWithBias(!!biasRight, !!usePrev));\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n sortable === null || sortable === void 0 ? void 0 : sortable.forEach((entry) => {\n var _a;\n vsIndex += (_a = entry.vs) === null || _a === void 0 ? void 0 : _a.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n const result = { vs: vs.flat() };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n};\nconst consumeUnsortable = (vs, unsortable, index) => {\n let iindex = index;\n let last;\n while (unsortable.length && (last = unsortable[unsortable.length - 1]).i <= iindex) {\n unsortable.pop();\n vs === null || vs === void 0 ? void 0 : vs.push(last.vs);\n iindex++;\n }\n return iindex;\n};\n/**\n * 配置是否考虑使用之前的布局结果\n */\nconst compareWithBias = (bias, usePrev) => {\n return (entryV, entryW) => {\n // 排序的时候先判断fixorder,不行再判断重心\n if (entryV.fixorder !== undefined && entryW.fixorder !== undefined) {\n return entryV.fixorder - entryW.fixorder;\n }\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n }\n if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n // 重心相同,考虑之前排好的顺序\n if (usePrev && entryV.order !== undefined && entryW.order !== undefined) {\n if (entryV.order < entryW.order) {\n return -1;\n }\n if (entryV.order > entryW.order) {\n return 1;\n }\n }\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (sort);\n//# sourceMappingURL=sort.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvb3JkZXIvc29ydC5qcz9hYjNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBMkI7QUFDM0I7QUFDQSxrQkFBa0IsNkNBQUk7QUFDdEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2RhZ3JlL3NyYy9vcmRlci9zb3J0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHV0aWwgZnJvbSAnLi4vdXRpbCc7XG5jb25zdCBzb3J0ID0gKGVudHJpZXMsIGJpYXNSaWdodCwgdXNlUHJldikgPT4ge1xuICAgIGNvbnN0IHBhcnRzID0gdXRpbC5wYXJ0aXRpb24oZW50cmllcywgKGVudHJ5KSA9PiB7XG4gICAgICAgIC8vIE5PVEU6IOaciWZpeG9yZGVy55qE5Lmf5Y+v5Lul5o6SXG4gICAgICAgIHJldHVybiAoZW50cnkuaGFzT3duUHJvcGVydHkoXCJmaXhvcmRlclwiKSAmJiAhaXNOYU4oZW50cnkuZml4b3JkZXIpKSB8fCBlbnRyeS5oYXNPd25Qcm9wZXJ0eShcImJhcnljZW50ZXJcIik7XG4gICAgfSk7XG4gICAgY29uc3Qgc29ydGFibGUgPSBwYXJ0cy5saHM7XG4gICAgY29uc3QgdW5zb3J0YWJsZSA9IHBhcnRzLnJocy5zb3J0KChhLCBiKSA9PiAtYS5pIC0gKC1iLmkpKTtcbiAgICBjb25zdCB2cyA9IFtdO1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGxldCB3ZWlnaHQgPSAwO1xuICAgIGxldCB2c0luZGV4ID0gMDtcbiAgICBzb3J0YWJsZSA9PT0gbnVsbCB8fCBzb3J0YWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc29ydGFibGUuc29ydChjb21wYXJlV2l0aEJpYXMoISFiaWFzUmlnaHQsICEhdXNlUHJldikpO1xuICAgIHZzSW5kZXggPSBjb25zdW1lVW5zb3J0YWJsZSh2cywgdW5zb3J0YWJsZSwgdnNJbmRleCk7XG4gICAgc29ydGFibGUgPT09IG51bGwgfHwgc29ydGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNvcnRhYmxlLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdnNJbmRleCArPSAoX2EgPSBlbnRyeS52cykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aDtcbiAgICAgICAgdnMucHVzaChlbnRyeS52cyk7XG4gICAgICAgIHN1bSArPSBlbnRyeS5iYXJ5Y2VudGVyICogZW50cnkud2VpZ2h0O1xuICAgICAgICB3ZWlnaHQgKz0gZW50cnkud2VpZ2h0O1xuICAgICAgICB2c0luZGV4ID0gY29uc3VtZVVuc29ydGFibGUodnMsIHVuc29ydGFibGUsIHZzSW5kZXgpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgdnM6IHZzLmZsYXQoKSB9O1xuICAgIGlmICh3ZWlnaHQpIHtcbiAgICAgICAgcmVzdWx0LmJhcnljZW50ZXIgPSBzdW0gLyB3ZWlnaHQ7XG4gICAgICAgIHJlc3VsdC53ZWlnaHQgPSB3ZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuY29uc3QgY29uc3VtZVVuc29ydGFibGUgPSAodnMsIHVuc29ydGFibGUsIGluZGV4KSA9PiB7XG4gICAgbGV0IGlpbmRleCA9IGluZGV4O1xuICAgIGxldCBsYXN0O1xuICAgIHdoaWxlICh1bnNvcnRhYmxlLmxlbmd0aCAmJiAobGFzdCA9IHVuc29ydGFibGVbdW5zb3J0YWJsZS5sZW5ndGggLSAxXSkuaSA8PSBpaW5kZXgpIHtcbiAgICAgICAgdW5zb3J0YWJsZS5wb3AoKTtcbiAgICAgICAgdnMgPT09IG51bGwgfHwgdnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZzLnB1c2gobGFzdC52cyk7XG4gICAgICAgIGlpbmRleCsrO1xuICAgIH1cbiAgICByZXR1cm4gaWluZGV4O1xufTtcbi8qKlxuICog6YWN572u5piv5ZCm6ICD6JmR5L2/55So5LmL5YmN55qE5biD5bGA57uT5p6cXG4gKi9cbmNvbnN0IGNvbXBhcmVXaXRoQmlhcyA9IChiaWFzLCB1c2VQcmV2KSA9PiB7XG4gICAgcmV0dXJuIChlbnRyeVYsIGVudHJ5VykgPT4ge1xuICAgICAgICAvLyDmjpLluo/nmoTml7blgJnlhYjliKTmlq1maXhvcmRlcu+8jOS4jeihjOWGjeWIpOaWremHjeW/g1xuICAgICAgICBpZiAoZW50cnlWLmZpeG9yZGVyICE9PSB1bmRlZmluZWQgJiYgZW50cnlXLmZpeG9yZGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRyeVYuZml4b3JkZXIgLSBlbnRyeVcuZml4b3JkZXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVudHJ5Vi5iYXJ5Y2VudGVyIDwgZW50cnlXLmJhcnljZW50ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW50cnlWLmJhcnljZW50ZXIgPiBlbnRyeVcuYmFyeWNlbnRlcikge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgLy8g6YeN5b+D55u45ZCM77yM6ICD6JmR5LmL5YmN5o6S5aW955qE6aG65bqPXG4gICAgICAgIGlmICh1c2VQcmV2ICYmIGVudHJ5Vi5vcmRlciAhPT0gdW5kZWZpbmVkICYmIGVudHJ5Vy5vcmRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoZW50cnlWLm9yZGVyIDwgZW50cnlXLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVudHJ5Vi5vcmRlciA+IGVudHJ5Vy5vcmRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhYmlhcyA/IGVudHJ5Vi5pIC0gZW50cnlXLmkgOiBlbnRyeVcuaSAtIGVudHJ5Vi5pO1xuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgc29ydDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNvcnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/order/sort.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/parent-dummy-chains.js": /*!******************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/parent-dummy-chains.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nconst parentDummyChains = (g) => {\n var _a;\n const postorderNums = postorder(g);\n (_a = g.graph().dummyChains) === null || _a === void 0 ? void 0 : _a.forEach((v) => {\n var _a, _b;\n let node = g.node(v);\n const edgeObj = node.edgeObj;\n if (!edgeObj)\n return;\n const pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n const path = pathData.path;\n const lca = pathData.lca;\n let pathIdx = 0;\n let pathV = path[pathIdx];\n let ascending = true;\n while (v !== edgeObj.w) {\n node = g.node(v);\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n if (pathV === lca) {\n ascending = false;\n }\n }\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n ((_a = g.node(pathV = path[pathIdx + 1])) === null || _a === void 0 ? void 0 : _a.minRank) <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n g.setParent(v, pathV);\n // tslint:disable-next-line\n v = (_b = g.successors(v)) === null || _b === void 0 ? void 0 : _b[0];\n }\n });\n};\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nconst findPath = (g, postorderNums, v, w) => {\n const vPath = [];\n const wPath = [];\n const low = Math.min(postorderNums[v].low, postorderNums[w].low);\n const lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n let parent;\n let lca;\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n return { lca, path: vPath.concat(wPath.reverse()) };\n};\nconst postorder = (g) => {\n var _a;\n const result = {};\n let lim = 0;\n const dfs = (v) => {\n var _a;\n const low = lim;\n (_a = g.children(v)) === null || _a === void 0 ? void 0 : _a.forEach(dfs);\n result[v] = { low, lim: lim++ };\n };\n (_a = g.children()) === null || _a === void 0 ? void 0 : _a.forEach(dfs);\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (parentDummyChains);\n//# sourceMappingURL=parent-dummy-chains.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvcGFyZW50LWR1bW15LWNoYWlucy5qcz81ZGQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNlLGdGQUFpQixFQUFDO0FBQ2pDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZGFncmUvc3JjL3BhcmVudC1kdW1teS1jaGFpbnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBwYXJlbnREdW1teUNoYWlucyA9IChnKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHBvc3RvcmRlck51bXMgPSBwb3N0b3JkZXIoZyk7XG4gICAgKF9hID0gZy5ncmFwaCgpLmR1bW15Q2hhaW5zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBsZXQgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgICAgY29uc3QgZWRnZU9iaiA9IG5vZGUuZWRnZU9iajtcbiAgICAgICAgaWYgKCFlZGdlT2JqKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBwYXRoRGF0YSA9IGZpbmRQYXRoKGcsIHBvc3RvcmRlck51bXMsIGVkZ2VPYmoudiwgZWRnZU9iai53KTtcbiAgICAgICAgY29uc3QgcGF0aCA9IHBhdGhEYXRhLnBhdGg7XG4gICAgICAgIGNvbnN0IGxjYSA9IHBhdGhEYXRhLmxjYTtcbiAgICAgICAgbGV0IHBhdGhJZHggPSAwO1xuICAgICAgICBsZXQgcGF0aFYgPSBwYXRoW3BhdGhJZHhdO1xuICAgICAgICBsZXQgYXNjZW5kaW5nID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKHYgIT09IGVkZ2VPYmoudykge1xuICAgICAgICAgICAgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgICAgICAgIGlmIChhc2NlbmRpbmcpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKHBhdGhWID0gcGF0aFtwYXRoSWR4XSkgIT09IGxjYSAmJlxuICAgICAgICAgICAgICAgICAgICBnLm5vZGUocGF0aFYpLm1heFJhbmsgPCBub2RlLnJhbmspIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aElkeCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocGF0aFYgPT09IGxjYSkge1xuICAgICAgICAgICAgICAgICAgICBhc2NlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWFzY2VuZGluZykge1xuICAgICAgICAgICAgICAgIHdoaWxlIChwYXRoSWR4IDwgcGF0aC5sZW5ndGggLSAxICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2EgPSBnLm5vZGUocGF0aFYgPSBwYXRoW3BhdGhJZHggKyAxXSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5taW5SYW5rKSA8PSBub2RlLnJhbmspIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aElkeCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXRoViA9IHBhdGhbcGF0aElkeF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBnLnNldFBhcmVudCh2LCBwYXRoVik7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIHYgPSAoX2IgPSBnLnN1Y2Nlc3NvcnModikpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlswXTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbi8vIEZpbmQgYSBwYXRoIGZyb20gdiB0byB3IHRocm91Z2ggdGhlIGxvd2VzdCBjb21tb24gYW5jZXN0b3IgKExDQSkuIFJldHVybiB0aGVcbi8vIGZ1bGwgcGF0aCBhbmQgdGhlIExDQS5cbmNvbnN0IGZpbmRQYXRoID0gKGcsIHBvc3RvcmRlck51bXMsIHYsIHcpID0+IHtcbiAgICBjb25zdCB2UGF0aCA9IFtdO1xuICAgIGNvbnN0IHdQYXRoID0gW107XG4gICAgY29uc3QgbG93ID0gTWF0aC5taW4ocG9zdG9yZGVyTnVtc1t2XS5sb3csIHBvc3RvcmRlck51bXNbd10ubG93KTtcbiAgICBjb25zdCBsaW0gPSBNYXRoLm1heChwb3N0b3JkZXJOdW1zW3ZdLmxpbSwgcG9zdG9yZGVyTnVtc1t3XS5saW0pO1xuICAgIGxldCBwYXJlbnQ7XG4gICAgbGV0IGxjYTtcbiAgICAvLyBUcmF2ZXJzZSB1cCBmcm9tIHYgdG8gZmluZCB0aGUgTENBXG4gICAgcGFyZW50ID0gdjtcbiAgICBkbyB7XG4gICAgICAgIHBhcmVudCA9IGcucGFyZW50KHBhcmVudCk7XG4gICAgICAgIHZQYXRoLnB1c2gocGFyZW50KTtcbiAgICB9IHdoaWxlIChwYXJlbnQgJiZcbiAgICAgICAgKHBvc3RvcmRlck51bXNbcGFyZW50XS5sb3cgPiBsb3cgfHwgbGltID4gcG9zdG9yZGVyTnVtc1twYXJlbnRdLmxpbSkpO1xuICAgIGxjYSA9IHBhcmVudDtcbiAgICAvLyBUcmF2ZXJzZSBmcm9tIHcgdG8gTENBXG4gICAgcGFyZW50ID0gdztcbiAgICB3aGlsZSAoKHBhcmVudCA9IGcucGFyZW50KHBhcmVudCkpICE9PSBsY2EpIHtcbiAgICAgICAgd1BhdGgucHVzaChwYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4geyBsY2EsIHBhdGg6IHZQYXRoLmNvbmNhdCh3UGF0aC5yZXZlcnNlKCkpIH07XG59O1xuY29uc3QgcG9zdG9yZGVyID0gKGcpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgbGV0IGxpbSA9IDA7XG4gICAgY29uc3QgZGZzID0gKHYpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBsb3cgPSBsaW07XG4gICAgICAgIChfYSA9IGcuY2hpbGRyZW4odikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKGRmcyk7XG4gICAgICAgIHJlc3VsdFt2XSA9IHsgbG93LCBsaW06IGxpbSsrIH07XG4gICAgfTtcbiAgICAoX2EgPSBnLmNoaWxkcmVuKCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKGRmcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCBwYXJlbnREdW1teUNoYWlucztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhcmVudC1kdW1teS1jaGFpbnMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/parent-dummy-chains.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/position/bk.js": /*!**********************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/position/bk.js ***! \**********************************************************************/ /*! exports provided: positionX, findType1Conflicts, findType2Conflicts, addConflict, hasConflict, verticalAlignment, horizontalCompaction, alignCoordinates, findSmallestWidthAlignment, balance, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"positionX\", function() { return positionX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findType1Conflicts\", function() { return findType1Conflicts; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findType2Conflicts\", function() { return findType2Conflicts; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addConflict\", function() { return addConflict; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasConflict\", function() { return hasConflict; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"verticalAlignment\", function() { return verticalAlignment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"horizontalCompaction\", function() { return horizontalCompaction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alignCoordinates\", function() { return alignCoordinates; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findSmallestWidthAlignment\", function() { return findSmallestWidthAlignment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"balance\", function() { return balance; });\n/* harmony import */ var _graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../graphlib */ \"./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n\n\nconst Graph = _graphlib__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Graph;\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nconst findType1Conflicts = (g, layering) => {\n const conflicts = {};\n const visitLayer = (prevLayer, layer) => {\n // last visited node in the previous layer that is incident on an inner\n // segment.\n let k0 = 0;\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n let scanPos = 0;\n const prevLayerLength = prevLayer.length;\n const lastNode = layer === null || layer === void 0 ? void 0 : layer[(layer === null || layer === void 0 ? void 0 : layer.length) - 1];\n layer === null || layer === void 0 ? void 0 : layer.forEach((v, i) => {\n var _a;\n const w = findOtherInnerSegmentNode(g, v);\n const k1 = w ? g.node(w).order : prevLayerLength;\n if (w || v === lastNode) {\n (_a = layer.slice(scanPos, i + 1)) === null || _a === void 0 ? void 0 : _a.forEach((scanNode) => {\n var _a;\n (_a = g.predecessors(scanNode)) === null || _a === void 0 ? void 0 : _a.forEach((u) => {\n const uLabel = g.node(u);\n const uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n return layer;\n };\n if (layering === null || layering === void 0 ? void 0 : layering.length) {\n layering.reduce(visitLayer);\n }\n return conflicts;\n};\nconst findType2Conflicts = (g, layering) => {\n const conflicts = {};\n const scan = (south, southPos, southEnd, prevNorthBorder, nextNorthBorder) => {\n let v;\n const range = [];\n for (let i = southPos; i < southEnd; i++) {\n range.push(i);\n }\n range.forEach((i) => {\n var _a;\n v = south[i];\n if (g.node(v).dummy) {\n (_a = g.predecessors(v)) === null || _a === void 0 ? void 0 : _a.forEach((u) => {\n const uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n };\n const visitLayer = (north, south) => {\n let prevNorthPos = -1;\n let nextNorthPos;\n let southPos = 0;\n south === null || south === void 0 ? void 0 : south.forEach((v, southLookahead) => {\n if (g.node(v).dummy === \"border\") {\n const predecessors = g.predecessors(v) || [];\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n return south;\n };\n if (layering === null || layering === void 0 ? void 0 : layering.length) {\n layering.reduce(visitLayer);\n }\n return conflicts;\n};\nconst findOtherInnerSegmentNode = (g, v) => {\n var _a;\n if (g.node(v).dummy) {\n return (_a = g.predecessors(v)) === null || _a === void 0 ? void 0 : _a.find((u) => g.node(u).dummy);\n }\n};\nconst addConflict = (conflicts, v, w) => {\n let vv = v;\n let ww = w;\n if (vv > ww) {\n const tmp = vv;\n vv = ww;\n ww = tmp;\n }\n let conflictsV = conflicts[vv];\n if (!conflictsV) {\n conflicts[vv] = conflictsV = {};\n }\n conflictsV[ww] = true;\n};\nconst hasConflict = (conflicts, v, w) => {\n let vv = v;\n let ww = w;\n if (vv > ww) {\n const tmp = v;\n vv = ww;\n ww = tmp;\n }\n return conflicts[vv] && conflicts[vv].hasOwnProperty(ww);\n};\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nconst verticalAlignment = (g, layering, conflicts, neighborFn) => {\n const root = {};\n const align = {};\n const pos = {};\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {\n layer === null || layer === void 0 ? void 0 : layer.forEach((v, order) => {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {\n let prevIdx = -1;\n layer === null || layer === void 0 ? void 0 : layer.forEach((v) => {\n let ws = neighborFn(v);\n if (ws.length) {\n ws = ws.sort((a, b) => pos[a] - pos[b]);\n const mp = (ws.length - 1) / 2;\n for (let i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n const w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n return { root, align };\n};\nconst horizontalCompaction = (g, layering, root, align, reverseSep) => {\n var _a;\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n const xs = {};\n const blockG = buildBlockGraph(g, layering, root, reverseSep);\n const borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n const iterate = (setXsFunc, nextNodesFunc) => {\n let stack = blockG.nodes();\n let elem = stack.pop();\n const visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n }\n else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n elem = stack.pop();\n }\n };\n // First pass, assign smallest coordinates\n const pass1 = (elem) => {\n xs[elem] = (blockG.inEdges(elem) || []).reduce((acc, e) => {\n return Math.max(acc, (xs[e.v] || 0) + blockG.edge(e));\n }, 0);\n };\n // Second pass, assign greatest coordinates\n const pass2 = (elem) => {\n const min = (blockG.outEdges(elem) || []).reduce((acc, e) => {\n return Math.min(acc, (xs[e.w] || 0) - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n const node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n };\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n // Assign x coordinates to all nodes\n // @ts-ignore\n (_a = Object.values(align)) === null || _a === void 0 ? void 0 : _a.forEach((v) => {\n xs[v] = xs[root[v]];\n });\n return xs;\n};\nconst buildBlockGraph = (g, layering, root, reverseSep) => {\n const blockGraph = new Graph();\n const graphLabel = g.graph();\n const sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {\n let u;\n layer === null || layer === void 0 ? void 0 : layer.forEach((v) => {\n const vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n const uRoot = root[u];\n const prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n return blockGraph;\n};\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nconst findSmallestWidthAlignment = (g, xss) => {\n // @ts-ignore\n return _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].minBy(Object.values(xss), (xs) => {\n var _a;\n let max = Number.NEGATIVE_INFINITY;\n let min = Number.POSITIVE_INFINITY;\n (_a = Object.keys(xs)) === null || _a === void 0 ? void 0 : _a.forEach((v) => {\n const x = xs[v];\n const halfWidth = width(g, v) / 2;\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n return max - min;\n });\n};\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n // @ts-ignore\n const alignToVals = Object.values(alignTo);\n const alignToMin = Math.min(...alignToVals);\n const alignToMax = Math.max(...alignToVals);\n [\"u\", \"d\"].forEach((vert) => {\n [\"l\", \"r\"].forEach((horiz) => {\n const alignment = vert + horiz;\n const xs = xss[alignment];\n let delta;\n if (xs === alignTo)\n return;\n const xsVals = Object.values(xs);\n delta = horiz === \"l\" ? alignToMin - Math.min(...xsVals) : alignToMax - Math.max(...xsVals);\n if (delta) {\n xss[alignment] = {};\n Object.keys(xs).forEach((key) => {\n xss[alignment][key] = xs[key] + delta;\n });\n }\n });\n });\n}\nconst balance = (xss, align) => {\n const result = {};\n Object.keys(xss.ul).forEach((key) => {\n if (align) {\n result[key] = xss[align.toLowerCase()][key];\n }\n else {\n // @ts-ignore\n const values = Object.values(xss).map((x) => x[key]);\n const xs = values.sort((a, b) => (a - b));\n result[key] = (xs[1] + xs[2]) / 2;\n }\n });\n return result;\n // return _.mapValues(xss.ul, function(ignore, v) {\n // if (align) {\n // return xss[align.toLowerCase()][v];\n // } else {\n // const xs = _.sortBy(_.map(xss, v));\n // return (xs[1] + xs[2]) / 2;\n // }\n // });\n};\nconst positionX = (g) => {\n const layering = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].buildLayerMatrix(g);\n const conflicts = Object.assign(findType1Conflicts(g, layering), findType2Conflicts(g, layering));\n const xss = {};\n let adjustedLayering;\n [\"u\", \"d\"].forEach((vert) => {\n // @ts-ignore\n adjustedLayering = vert === \"u\" ? layering : Object.values(layering).reverse();\n [\"l\", \"r\"].forEach((horiz) => {\n if (horiz === \"r\") {\n // @ts-ignore\n adjustedLayering = adjustedLayering.map((inner) => Object.values(inner).reverse());\n }\n const neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n const align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n let xs = horizontalCompaction(g, adjustedLayering, align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n // @ts-ignore\n xs = Object.values(xs).map((x) => -x);\n }\n xss[vert + horiz] = xs;\n });\n });\n const smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n};\nconst sep = (nodeSep, edgeSep, reverseSep) => {\n return (g, v, w) => {\n const vLabel = g.node(v);\n const wLabel = g.node(w);\n let sum = 0;\n let delta;\n sum += vLabel.width / 2;\n if (vLabel.hasOwnProperty(\"labelpos\")) {\n switch ((vLabel.labelpos || '').toLowerCase()) {\n case \"l\":\n delta = -vLabel.width / 2;\n break;\n case \"r\":\n delta = vLabel.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += wLabel.width / 2;\n if (wLabel.hasOwnProperty(\"labelpos\")) {\n switch ((wLabel.labelpos || '').toLowerCase()) {\n case \"l\":\n delta = wLabel.width / 2;\n break;\n case \"r\":\n delta = -wLabel.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n return sum;\n };\n};\nconst width = (g, v) => { var _a; return ((_a = g.node(v)) === null || _a === void 0 ? void 0 : _a.width) || 0; };\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n positionX,\n findType1Conflicts,\n findType2Conflicts,\n addConflict,\n hasConflict,\n verticalAlignment,\n horizontalCompaction,\n alignCoordinates,\n findSmallestWidthAlignment,\n balance\n});\n//# sourceMappingURL=bk.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvcG9zaXRpb24vYmsuanM/ZDJiOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNSO0FBQzNCLGNBQWMsaURBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsY0FBYztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSxTQUFTO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTCxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw2Q0FBSTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxxQkFBcUIsNkNBQUk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixRQUFRLDhFQUE4RTtBQUN3RTtBQUN4SztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvcG9zaXRpb24vYmsuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ3JhcGhsaWIgZnJvbSAnLi4vZ3JhcGhsaWInO1xuaW1wb3J0IHV0aWwgZnJvbSAnLi4vdXRpbCc7XG5jb25zdCBHcmFwaCA9IGdyYXBobGliLkdyYXBoO1xuLypcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGNvb3JkaW5hdGUgYXNzaWdubWVudCBiYXNlZCBvbiBCcmFuZGVzIGFuZCBLw7ZwZiwgXCJGYXN0XG4gKiBhbmQgU2ltcGxlIEhvcml6b250YWwgQ29vcmRpbmF0ZSBBc3NpZ25tZW50LlwiXG4gKi9cbi8qXG4gKiBNYXJrcyBhbGwgZWRnZXMgaW4gdGhlIGdyYXBoIHdpdGggYSB0eXBlLTEgY29uZmxpY3Qgd2l0aCB0aGUgXCJ0eXBlMUNvbmZsaWN0XCJcbiAqIHByb3BlcnR5LiBBIHR5cGUtMSBjb25mbGljdCBpcyBvbmUgd2hlcmUgYSBub24taW5uZXIgc2VnbWVudCBjcm9zc2VzIGFuXG4gKiBpbm5lciBzZWdtZW50LiBBbiBpbm5lciBzZWdtZW50IGlzIGFuIGVkZ2Ugd2l0aCBib3RoIGluY2lkZW50IG5vZGVzIG1hcmtlZFxuICogd2l0aCB0aGUgXCJkdW1teVwiIHByb3BlcnR5LlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIHNjYW5zIGxheWVyIGJ5IGxheWVyLCBzdGFydGluZyB3aXRoIHRoZSBzZWNvbmQsIGZvciB0eXBlLTFcbiAqIGNvbmZsaWN0cyBiZXR3ZWVuIHRoZSBjdXJyZW50IGxheWVyIGFuZCB0aGUgcHJldmlvdXMgbGF5ZXIuIEZvciBlYWNoIGxheWVyXG4gKiBpdCBzY2FucyB0aGUgbm9kZXMgZnJvbSBsZWZ0IHRvIHJpZ2h0IHVudGlsIGl0IHJlYWNoZXMgb25lIHRoYXQgaXMgaW5jaWRlbnRcbiAqIG9uIGFuIGlubmVyIHNlZ21lbnQuIEl0IHRoZW4gc2NhbnMgcHJlZGVjZXNzb3JzIHRvIGRldGVybWluZSBpZiB0aGV5IGhhdmVcbiAqIGVkZ2VzIHRoYXQgY3Jvc3MgdGhhdCBpbm5lciBzZWdtZW50LiBBdCB0aGUgZW5kIGEgZmluYWwgc2NhbiBpcyBkb25lIGZvciBhbGxcbiAqIG5vZGVzIG9uIHRoZSBjdXJyZW50IHJhbmsgdG8gc2VlIGlmIHRoZXkgY3Jvc3MgdGhlIGxhc3QgdmlzaXRlZCBpbm5lclxuICogc2VnbWVudC5cbiAqXG4gKiBUaGlzIGFsZ29yaXRobSAoc2FmZWx5KSBhc3N1bWVzIHRoYXQgYSBkdW1teSBub2RlIHdpbGwgb25seSBiZSBpbmNpZGVudCBvbiBhXG4gKiBzaW5nbGUgbm9kZSBpbiB0aGUgbGF5ZXJzIGJlaW5nIHNjYW5uZWQuXG4gKi9cbmNvbnN0IGZpbmRUeXBlMUNvbmZsaWN0cyA9IChnLCBsYXllcmluZykgPT4ge1xuICAgIGNvbnN0IGNvbmZsaWN0cyA9IHt9O1xuICAgIGNvbnN0IHZpc2l0TGF5ZXIgPSAocHJldkxheWVyLCBsYXllcikgPT4ge1xuICAgICAgICAvLyBsYXN0IHZpc2l0ZWQgbm9kZSBpbiB0aGUgcHJldmlvdXMgbGF5ZXIgdGhhdCBpcyBpbmNpZGVudCBvbiBhbiBpbm5lclxuICAgICAgICAvLyBzZWdtZW50LlxuICAgICAgICBsZXQgazAgPSAwO1xuICAgICAgICAvLyBUcmFja3MgdGhlIGxhc3Qgbm9kZSBpbiB0aGlzIGxheWVyIHNjYW5uZWQgZm9yIGNyb3NzaW5ncyB3aXRoIGEgdHlwZS0xXG4gICAgICAgIC8vIHNlZ21lbnQuXG4gICAgICAgIGxldCBzY2FuUG9zID0gMDtcbiAgICAgICAgY29uc3QgcHJldkxheWVyTGVuZ3RoID0gcHJldkxheWVyLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbGFzdE5vZGUgPSBsYXllciA9PT0gbnVsbCB8fCBsYXllciA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5ZXJbKGxheWVyID09PSBudWxsIHx8IGxheWVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXllci5sZW5ndGgpIC0gMV07XG4gICAgICAgIGxheWVyID09PSBudWxsIHx8IGxheWVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXllci5mb3JFYWNoKCh2LCBpKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCB3ID0gZmluZE90aGVySW5uZXJTZWdtZW50Tm9kZShnLCB2KTtcbiAgICAgICAgICAgIGNvbnN0IGsxID0gdyA/IGcubm9kZSh3KS5vcmRlciA6IHByZXZMYXllckxlbmd0aDtcbiAgICAgICAgICAgIGlmICh3IHx8IHYgPT09IGxhc3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgKF9hID0gbGF5ZXIuc2xpY2Uoc2NhblBvcywgaSArIDEpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgoc2Nhbk5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBnLnByZWRlY2Vzc29ycyhzY2FuTm9kZSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKCh1KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1TGFiZWwgPSBnLm5vZGUodSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1UG9zID0gdUxhYmVsLm9yZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1UG9zIDwgazAgfHwgazEgPCB1UG9zKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICEodUxhYmVsLmR1bW15ICYmIGcubm9kZShzY2FuTm9kZSkuZHVtbXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29uZmxpY3QoY29uZmxpY3RzLCB1LCBzY2FuTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNjYW5Qb3MgPSBpICsgMTtcbiAgICAgICAgICAgICAgICBrMCA9IGsxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGxheWVyO1xuICAgIH07XG4gICAgaWYgKGxheWVyaW5nID09PSBudWxsIHx8IGxheWVyaW5nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXllcmluZy5sZW5ndGgpIHtcbiAgICAgICAgbGF5ZXJpbmcucmVkdWNlKHZpc2l0TGF5ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmxpY3RzO1xufTtcbmNvbnN0IGZpbmRUeXBlMkNvbmZsaWN0cyA9IChnLCBsYXllcmluZykgPT4ge1xuICAgIGNvbnN0IGNvbmZsaWN0cyA9IHt9O1xuICAgIGNvbnN0IHNjYW4gPSAoc291dGgsIHNvdXRoUG9zLCBzb3V0aEVuZCwgcHJldk5vcnRoQm9yZGVyLCBuZXh0Tm9ydGhCb3JkZXIpID0+IHtcbiAgICAgICAgbGV0IHY7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBzb3V0aFBvczsgaSA8IHNvdXRoRW5kOyBpKyspIHtcbiAgICAgICAgICAgIHJhbmdlLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmFuZ2UuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdiA9IHNvdXRoW2ldO1xuICAgICAgICAgICAgaWYgKGcubm9kZSh2KS5kdW1teSkge1xuICAgICAgICAgICAgICAgIChfYSA9IGcucHJlZGVjZXNzb3JzKHYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgodSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1Tm9kZSA9IGcubm9kZSh1KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVOb2RlLmR1bW15ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAodU5vZGUub3JkZXIgPCBwcmV2Tm9ydGhCb3JkZXIgfHwgdU5vZGUub3JkZXIgPiBuZXh0Tm9ydGhCb3JkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb25mbGljdChjb25mbGljdHMsIHUsIHYpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgY29uc3QgdmlzaXRMYXllciA9IChub3J0aCwgc291dGgpID0+IHtcbiAgICAgICAgbGV0IHByZXZOb3J0aFBvcyA9IC0xO1xuICAgICAgICBsZXQgbmV4dE5vcnRoUG9zO1xuICAgICAgICBsZXQgc291dGhQb3MgPSAwO1xuICAgICAgICBzb3V0aCA9PT0gbnVsbCB8fCBzb3V0aCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc291dGguZm9yRWFjaCgodiwgc291dGhMb29rYWhlYWQpID0+IHtcbiAgICAgICAgICAgIGlmIChnLm5vZGUodikuZHVtbXkgPT09IFwiYm9yZGVyXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmVkZWNlc3NvcnMgPSBnLnByZWRlY2Vzc29ycyh2KSB8fCBbXTtcbiAgICAgICAgICAgICAgICBpZiAocHJlZGVjZXNzb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9ydGhQb3MgPSBnLm5vZGUocHJlZGVjZXNzb3JzWzBdKS5vcmRlcjtcbiAgICAgICAgICAgICAgICAgICAgc2Nhbihzb3V0aCwgc291dGhQb3MsIHNvdXRoTG9va2FoZWFkLCBwcmV2Tm9ydGhQb3MsIG5leHROb3J0aFBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHNvdXRoUG9zID0gc291dGhMb29rYWhlYWQ7XG4gICAgICAgICAgICAgICAgICAgIHByZXZOb3J0aFBvcyA9IG5leHROb3J0aFBvcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzY2FuKHNvdXRoLCBzb3V0aFBvcywgc291dGgubGVuZ3RoLCBuZXh0Tm9ydGhQb3MsIG5vcnRoLmxlbmd0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc291dGg7XG4gICAgfTtcbiAgICBpZiAobGF5ZXJpbmcgPT09IG51bGwgfHwgbGF5ZXJpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheWVyaW5nLmxlbmd0aCkge1xuICAgICAgICBsYXllcmluZy5yZWR1Y2UodmlzaXRMYXllcik7XG4gICAgfVxuICAgIHJldHVybiBjb25mbGljdHM7XG59O1xuY29uc3QgZmluZE90aGVySW5uZXJTZWdtZW50Tm9kZSA9IChnLCB2KSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChnLm5vZGUodikuZHVtbXkpIHtcbiAgICAgICAgcmV0dXJuIChfYSA9IGcucHJlZGVjZXNzb3JzKHYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZmluZCgodSkgPT4gZy5ub2RlKHUpLmR1bW15KTtcbiAgICB9XG59O1xuY29uc3QgYWRkQ29uZmxpY3QgPSAoY29uZmxpY3RzLCB2LCB3KSA9PiB7XG4gICAgbGV0IHZ2ID0gdjtcbiAgICBsZXQgd3cgPSB3O1xuICAgIGlmICh2diA+IHd3KSB7XG4gICAgICAgIGNvbnN0IHRtcCA9IHZ2O1xuICAgICAgICB2diA9IHd3O1xuICAgICAgICB3dyA9IHRtcDtcbiAgICB9XG4gICAgbGV0IGNvbmZsaWN0c1YgPSBjb25mbGljdHNbdnZdO1xuICAgIGlmICghY29uZmxpY3RzVikge1xuICAgICAgICBjb25mbGljdHNbdnZdID0gY29uZmxpY3RzViA9IHt9O1xuICAgIH1cbiAgICBjb25mbGljdHNWW3d3XSA9IHRydWU7XG59O1xuY29uc3QgaGFzQ29uZmxpY3QgPSAoY29uZmxpY3RzLCB2LCB3KSA9PiB7XG4gICAgbGV0IHZ2ID0gdjtcbiAgICBsZXQgd3cgPSB3O1xuICAgIGlmICh2diA+IHd3KSB7XG4gICAgICAgIGNvbnN0IHRtcCA9IHY7XG4gICAgICAgIHZ2ID0gd3c7XG4gICAgICAgIHd3ID0gdG1wO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmxpY3RzW3Z2XSAmJiBjb25mbGljdHNbdnZdLmhhc093blByb3BlcnR5KHd3KTtcbn07XG4vKlxuICogVHJ5IHRvIGFsaWduIG5vZGVzIGludG8gdmVydGljYWwgXCJibG9ja3NcIiB3aGVyZSBwb3NzaWJsZS4gVGhpcyBhbGdvcml0aG1cbiAqIGF0dGVtcHRzIHRvIGFsaWduIGEgbm9kZSB3aXRoIG9uZSBvZiBpdHMgbWVkaWFuIG5laWdoYm9ycy4gSWYgdGhlIGVkZ2VcbiAqIGNvbm5lY3RpbmcgYSBuZWlnaGJvciBpcyBhIHR5cGUtMSBjb25mbGljdCB0aGVuIHdlIGlnbm9yZSB0aGF0IHBvc3NpYmlsaXR5LlxuICogSWYgYSBwcmV2aW91cyBub2RlIGhhcyBhbHJlYWR5IGZvcm1lZCBhIGJsb2NrIHdpdGggYSBub2RlIGFmdGVyIHRoZSBub2RlXG4gKiB3ZSdyZSB0cnlpbmcgdG8gZm9ybSBhIGJsb2NrIHdpdGgsIHdlIGFsc28gaWdub3JlIHRoYXQgcG9zc2liaWxpdHkgLSBvdXJcbiAqIGJsb2NrcyB3b3VsZCBiZSBzcGxpdCBpbiB0aGF0IHNjZW5hcmlvLlxuICovXG5jb25zdCB2ZXJ0aWNhbEFsaWdubWVudCA9IChnLCBsYXllcmluZywgY29uZmxpY3RzLCBuZWlnaGJvckZuKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHt9O1xuICAgIGNvbnN0IGFsaWduID0ge307XG4gICAgY29uc3QgcG9zID0ge307XG4gICAgLy8gV2UgY2FjaGUgdGhlIHBvc2l0aW9uIGhlcmUgYmFzZWQgb24gdGhlIGxheWVyaW5nIGJlY2F1c2UgdGhlIGdyYXBoIGFuZFxuICAgIC8vIGxheWVyaW5nIG1heSBiZSBvdXQgb2Ygc3luYy4gVGhlIGxheWVyaW5nIG1hdHJpeCBpcyBtYW5pcHVsYXRlZCB0b1xuICAgIC8vIGdlbmVyYXRlIGRpZmZlcmVudCBleHRyZW1lIGFsaWdubWVudHMuXG4gICAgbGF5ZXJpbmcgPT09IG51bGwgfHwgbGF5ZXJpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheWVyaW5nLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICAgIGxheWVyID09PSBudWxsIHx8IGxheWVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXllci5mb3JFYWNoKCh2LCBvcmRlcikgPT4ge1xuICAgICAgICAgICAgcm9vdFt2XSA9IHY7XG4gICAgICAgICAgICBhbGlnblt2XSA9IHY7XG4gICAgICAgICAgICBwb3Nbdl0gPSBvcmRlcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgbGF5ZXJpbmcgPT09IG51bGwgfHwgbGF5ZXJpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheWVyaW5nLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICAgIGxldCBwcmV2SWR4ID0gLTE7XG4gICAgICAgIGxheWVyID09PSBudWxsIHx8IGxheWVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXllci5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBsZXQgd3MgPSBuZWlnaGJvckZuKHYpO1xuICAgICAgICAgICAgaWYgKHdzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHdzID0gd3Muc29ydCgoYSwgYikgPT4gcG9zW2FdIC0gcG9zW2JdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtcCA9ICh3cy5sZW5ndGggLSAxKSAvIDI7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IE1hdGguZmxvb3IobXApLCBpbCA9IE1hdGguY2VpbChtcCk7IGkgPD0gaWw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3ID0gd3NbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbGlnblt2XSA9PT0gdiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldklkeCA8IHBvc1t3XSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIWhhc0NvbmZsaWN0KGNvbmZsaWN0cywgdiwgdykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduW3ddID0gdjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduW3ZdID0gcm9vdFt2XSA9IHJvb3Rbd107XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2SWR4ID0gcG9zW3ddO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4geyByb290LCBhbGlnbiB9O1xufTtcbmNvbnN0IGhvcml6b250YWxDb21wYWN0aW9uID0gKGcsIGxheWVyaW5nLCByb290LCBhbGlnbiwgcmV2ZXJzZVNlcCkgPT4ge1xuICAgIHZhciBfYTtcbiAgICAvLyBUaGlzIHBvcnRpb24gb2YgdGhlIGFsZ29yaXRobSBkaWZmZXJzIGZyb20gQksgZHVlIHRvIGEgbnVtYmVyIG9mIHByb2JsZW1zLlxuICAgIC8vIEluc3RlYWQgb2YgdGhlaXIgYWxnb3JpdGhtIHdlIGNvbnN0cnVjdCBhIG5ldyBibG9jayBncmFwaCBhbmQgZG8gdHdvXG4gICAgLy8gc3dlZXBzLiBUaGUgZmlyc3Qgc3dlZXAgcGxhY2VzIGJsb2NrcyB3aXRoIHRoZSBzbWFsbGVzdCBwb3NzaWJsZVxuICAgIC8vIGNvb3JkaW5hdGVzLiBUaGUgc2Vjb25kIHN3ZWVwIHJlbW92ZXMgdW51c2VkIHNwYWNlIGJ5IG1vdmluZyBibG9ja3MgdG8gdGhlXG4gICAgLy8gZ3JlYXRlc3QgY29vcmRpbmF0ZXMgd2l0aG91dCB2aW9sYXRpbmcgc2VwYXJhdGlvbi5cbiAgICBjb25zdCB4cyA9IHt9O1xuICAgIGNvbnN0IGJsb2NrRyA9IGJ1aWxkQmxvY2tHcmFwaChnLCBsYXllcmluZywgcm9vdCwgcmV2ZXJzZVNlcCk7XG4gICAgY29uc3QgYm9yZGVyVHlwZSA9IHJldmVyc2VTZXAgPyBcImJvcmRlckxlZnRcIiA6IFwiYm9yZGVyUmlnaHRcIjtcbiAgICBjb25zdCBpdGVyYXRlID0gKHNldFhzRnVuYywgbmV4dE5vZGVzRnVuYykgPT4ge1xuICAgICAgICBsZXQgc3RhY2sgPSBibG9ja0cubm9kZXMoKTtcbiAgICAgICAgbGV0IGVsZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgY29uc3QgdmlzaXRlZCA9IHt9O1xuICAgICAgICB3aGlsZSAoZWxlbSkge1xuICAgICAgICAgICAgaWYgKHZpc2l0ZWRbZWxlbV0pIHtcbiAgICAgICAgICAgICAgICBzZXRYc0Z1bmMoZWxlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2aXNpdGVkW2VsZW1dID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGVsZW0pO1xuICAgICAgICAgICAgICAgIHN0YWNrID0gc3RhY2suY29uY2F0KG5leHROb2Rlc0Z1bmMoZWxlbSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxlbSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBGaXJzdCBwYXNzLCBhc3NpZ24gc21hbGxlc3QgY29vcmRpbmF0ZXNcbiAgICBjb25zdCBwYXNzMSA9IChlbGVtKSA9PiB7XG4gICAgICAgIHhzW2VsZW1dID0gKGJsb2NrRy5pbkVkZ2VzKGVsZW0pIHx8IFtdKS5yZWR1Y2UoKGFjYywgZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KGFjYywgKHhzW2Uudl0gfHwgMCkgKyBibG9ja0cuZWRnZShlKSk7XG4gICAgICAgIH0sIDApO1xuICAgIH07XG4gICAgLy8gU2Vjb25kIHBhc3MsIGFzc2lnbiBncmVhdGVzdCBjb29yZGluYXRlc1xuICAgIGNvbnN0IHBhc3MyID0gKGVsZW0pID0+IHtcbiAgICAgICAgY29uc3QgbWluID0gKGJsb2NrRy5vdXRFZGdlcyhlbGVtKSB8fCBbXSkucmVkdWNlKChhY2MsIGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbihhY2MsICh4c1tlLnddIHx8IDApIC0gYmxvY2tHLmVkZ2UoZSkpO1xuICAgICAgICB9LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBjb25zdCBub2RlID0gZy5ub2RlKGVsZW0pO1xuICAgICAgICBpZiAobWluICE9PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgJiYgbm9kZS5ib3JkZXJUeXBlICE9PSBib3JkZXJUeXBlKSB7XG4gICAgICAgICAgICB4c1tlbGVtXSA9IE1hdGgubWF4KHhzW2VsZW1dLCBtaW4pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBpdGVyYXRlKHBhc3MxLCBibG9ja0cucHJlZGVjZXNzb3JzLmJpbmQoYmxvY2tHKSk7XG4gICAgaXRlcmF0ZShwYXNzMiwgYmxvY2tHLnN1Y2Nlc3NvcnMuYmluZChibG9ja0cpKTtcbiAgICAvLyBBc3NpZ24geCBjb29yZGluYXRlcyB0byBhbGwgbm9kZXNcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgKF9hID0gT2JqZWN0LnZhbHVlcyhhbGlnbikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIHhzW3ZdID0geHNbcm9vdFt2XV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHhzO1xufTtcbmNvbnN0IGJ1aWxkQmxvY2tHcmFwaCA9IChnLCBsYXllcmluZywgcm9vdCwgcmV2ZXJzZVNlcCkgPT4ge1xuICAgIGNvbnN0IGJsb2NrR3JhcGggPSBuZXcgR3JhcGgoKTtcbiAgICBjb25zdCBncmFwaExhYmVsID0gZy5ncmFwaCgpO1xuICAgIGNvbnN0IHNlcEZuID0gc2VwKGdyYXBoTGFiZWwubm9kZXNlcCwgZ3JhcGhMYWJlbC5lZGdlc2VwLCByZXZlcnNlU2VwKTtcbiAgICBsYXllcmluZyA9PT0gbnVsbCB8fCBsYXllcmluZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5ZXJpbmcuZm9yRWFjaCgobGF5ZXIpID0+IHtcbiAgICAgICAgbGV0IHU7XG4gICAgICAgIGxheWVyID09PSBudWxsIHx8IGxheWVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXllci5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2Um9vdCA9IHJvb3Rbdl07XG4gICAgICAgICAgICBibG9ja0dyYXBoLnNldE5vZGUodlJvb3QpO1xuICAgICAgICAgICAgaWYgKHUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1Um9vdCA9IHJvb3RbdV07XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldk1heCA9IGJsb2NrR3JhcGguZWRnZSh1Um9vdCwgdlJvb3QpO1xuICAgICAgICAgICAgICAgIGJsb2NrR3JhcGguc2V0RWRnZSh1Um9vdCwgdlJvb3QsIE1hdGgubWF4KHNlcEZuKGcsIHYsIHUpLCBwcmV2TWF4IHx8IDApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHUgPSB2O1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYmxvY2tHcmFwaDtcbn07XG4vKlxuICogUmV0dXJucyB0aGUgYWxpZ25tZW50IHRoYXQgaGFzIHRoZSBzbWFsbGVzdCB3aWR0aCBvZiB0aGUgZ2l2ZW4gYWxpZ25tZW50cy5cbiAqL1xuY29uc3QgZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQgPSAoZywgeHNzKSA9PiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB1dGlsLm1pbkJ5KE9iamVjdC52YWx1ZXMoeHNzKSwgKHhzKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgbGV0IG1heCA9IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTtcbiAgICAgICAgbGV0IG1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICAgICAgKF9hID0gT2JqZWN0LmtleXMoeHMpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgY29uc3QgeCA9IHhzW3ZdO1xuICAgICAgICAgICAgY29uc3QgaGFsZldpZHRoID0gd2lkdGgoZywgdikgLyAyO1xuICAgICAgICAgICAgbWF4ID0gTWF0aC5tYXgoeCArIGhhbGZXaWR0aCwgbWF4KTtcbiAgICAgICAgICAgIG1pbiA9IE1hdGgubWluKHggLSBoYWxmV2lkdGgsIG1pbik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWF4IC0gbWluO1xuICAgIH0pO1xufTtcbi8qXG4gKiBBbGlnbiB0aGUgY29vcmRpbmF0ZXMgb2YgZWFjaCBvZiB0aGUgbGF5b3V0IGFsaWdubWVudHMgc3VjaCB0aGF0XG4gKiBsZWZ0LWJpYXNlZCBhbGlnbm1lbnRzIGhhdmUgdGhlaXIgbWluaW11bSBjb29yZGluYXRlIGF0IHRoZSBzYW1lIHBvaW50IGFzXG4gKiB0aGUgbWluaW11bSBjb29yZGluYXRlIG9mIHRoZSBzbWFsbGVzdCB3aWR0aCBhbGlnbm1lbnQgYW5kIHJpZ2h0LWJpYXNlZFxuICogYWxpZ25tZW50cyBoYXZlIHRoZWlyIG1heGltdW0gY29vcmRpbmF0ZSBhdCB0aGUgc2FtZSBwb2ludCBhcyB0aGUgbWF4aW11bVxuICogY29vcmRpbmF0ZSBvZiB0aGUgc21hbGxlc3Qgd2lkdGggYWxpZ25tZW50LlxuICovXG5mdW5jdGlvbiBhbGlnbkNvb3JkaW5hdGVzKHhzcywgYWxpZ25Ubykge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBhbGlnblRvVmFscyA9IE9iamVjdC52YWx1ZXMoYWxpZ25Ubyk7XG4gICAgY29uc3QgYWxpZ25Ub01pbiA9IE1hdGgubWluKC4uLmFsaWduVG9WYWxzKTtcbiAgICBjb25zdCBhbGlnblRvTWF4ID0gTWF0aC5tYXgoLi4uYWxpZ25Ub1ZhbHMpO1xuICAgIFtcInVcIiwgXCJkXCJdLmZvckVhY2goKHZlcnQpID0+IHtcbiAgICAgICAgW1wibFwiLCBcInJcIl0uZm9yRWFjaCgoaG9yaXopID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFsaWdubWVudCA9IHZlcnQgKyBob3JpejtcbiAgICAgICAgICAgIGNvbnN0IHhzID0geHNzW2FsaWdubWVudF07XG4gICAgICAgICAgICBsZXQgZGVsdGE7XG4gICAgICAgICAgICBpZiAoeHMgPT09IGFsaWduVG8pXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgeHNWYWxzID0gT2JqZWN0LnZhbHVlcyh4cyk7XG4gICAgICAgICAgICBkZWx0YSA9IGhvcml6ID09PSBcImxcIiA/IGFsaWduVG9NaW4gLSBNYXRoLm1pbiguLi54c1ZhbHMpIDogYWxpZ25Ub01heCAtIE1hdGgubWF4KC4uLnhzVmFscyk7XG4gICAgICAgICAgICBpZiAoZGVsdGEpIHtcbiAgICAgICAgICAgICAgICB4c3NbYWxpZ25tZW50XSA9IHt9O1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHhzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgeHNzW2FsaWdubWVudF1ba2V5XSA9IHhzW2tleV0gKyBkZWx0YTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5jb25zdCBiYWxhbmNlID0gKHhzcywgYWxpZ24pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBPYmplY3Qua2V5cyh4c3MudWwpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoYWxpZ24pIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0geHNzW2FsaWduLnRvTG93ZXJDYXNlKCldW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKHhzcykubWFwKCh4KSA9PiB4W2tleV0pO1xuICAgICAgICAgICAgY29uc3QgeHMgPSB2YWx1ZXMuc29ydCgoYSwgYikgPT4gKGEgLSBiKSk7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9ICh4c1sxXSArIHhzWzJdKSAvIDI7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICAgIC8vIHJldHVybiBfLm1hcFZhbHVlcyh4c3MudWwsIGZ1bmN0aW9uKGlnbm9yZSwgdikge1xuICAgIC8vICAgaWYgKGFsaWduKSB7XG4gICAgLy8gICAgIHJldHVybiB4c3NbYWxpZ24udG9Mb3dlckNhc2UoKV1bdl07XG4gICAgLy8gICB9IGVsc2Uge1xuICAgIC8vICAgICBjb25zdCB4cyA9IF8uc29ydEJ5KF8ubWFwKHhzcywgdikpO1xuICAgIC8vICAgICByZXR1cm4gKHhzWzFdICsgeHNbMl0pIC8gMjtcbiAgICAvLyAgIH1cbiAgICAvLyB9KTtcbn07XG5jb25zdCBwb3NpdGlvblggPSAoZykgPT4ge1xuICAgIGNvbnN0IGxheWVyaW5nID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICAgIGNvbnN0IGNvbmZsaWN0cyA9IE9iamVjdC5hc3NpZ24oZmluZFR5cGUxQ29uZmxpY3RzKGcsIGxheWVyaW5nKSwgZmluZFR5cGUyQ29uZmxpY3RzKGcsIGxheWVyaW5nKSk7XG4gICAgY29uc3QgeHNzID0ge307XG4gICAgbGV0IGFkanVzdGVkTGF5ZXJpbmc7XG4gICAgW1widVwiLCBcImRcIl0uZm9yRWFjaCgodmVydCkgPT4ge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGFkanVzdGVkTGF5ZXJpbmcgPSB2ZXJ0ID09PSBcInVcIiA/IGxheWVyaW5nIDogT2JqZWN0LnZhbHVlcyhsYXllcmluZykucmV2ZXJzZSgpO1xuICAgICAgICBbXCJsXCIsIFwiclwiXS5mb3JFYWNoKChob3JpeikgPT4ge1xuICAgICAgICAgICAgaWYgKGhvcml6ID09PSBcInJcIikge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBhZGp1c3RlZExheWVyaW5nID0gYWRqdXN0ZWRMYXllcmluZy5tYXAoKGlubmVyKSA9PiBPYmplY3QudmFsdWVzKGlubmVyKS5yZXZlcnNlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmVpZ2hib3JGbiA9ICh2ZXJ0ID09PSBcInVcIiA/IGcucHJlZGVjZXNzb3JzIDogZy5zdWNjZXNzb3JzKS5iaW5kKGcpO1xuICAgICAgICAgICAgY29uc3QgYWxpZ24gPSB2ZXJ0aWNhbEFsaWdubWVudChnLCBhZGp1c3RlZExheWVyaW5nLCBjb25mbGljdHMsIG5laWdoYm9yRm4pO1xuICAgICAgICAgICAgbGV0IHhzID0gaG9yaXpvbnRhbENvbXBhY3Rpb24oZywgYWRqdXN0ZWRMYXllcmluZywgYWxpZ24ucm9vdCwgYWxpZ24uYWxpZ24sIGhvcml6ID09PSBcInJcIik7XG4gICAgICAgICAgICBpZiAoaG9yaXogPT09IFwiclwiKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIHhzID0gT2JqZWN0LnZhbHVlcyh4cykubWFwKCh4KSA9PiAteCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4c3NbdmVydCArIGhvcml6XSA9IHhzO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBzbWFsbGVzdFdpZHRoID0gZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQoZywgeHNzKTtcbiAgICBhbGlnbkNvb3JkaW5hdGVzKHhzcywgc21hbGxlc3RXaWR0aCk7XG4gICAgcmV0dXJuIGJhbGFuY2UoeHNzLCBnLmdyYXBoKCkuYWxpZ24pO1xufTtcbmNvbnN0IHNlcCA9IChub2RlU2VwLCBlZGdlU2VwLCByZXZlcnNlU2VwKSA9PiB7XG4gICAgcmV0dXJuIChnLCB2LCB3KSA9PiB7XG4gICAgICAgIGNvbnN0IHZMYWJlbCA9IGcubm9kZSh2KTtcbiAgICAgICAgY29uc3Qgd0xhYmVsID0gZy5ub2RlKHcpO1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgbGV0IGRlbHRhO1xuICAgICAgICBzdW0gKz0gdkxhYmVsLndpZHRoIC8gMjtcbiAgICAgICAgaWYgKHZMYWJlbC5oYXNPd25Qcm9wZXJ0eShcImxhYmVscG9zXCIpKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKCh2TGFiZWwubGFiZWxwb3MgfHwgJycpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwibFwiOlxuICAgICAgICAgICAgICAgICAgICBkZWx0YSA9IC12TGFiZWwud2lkdGggLyAyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiclwiOlxuICAgICAgICAgICAgICAgICAgICBkZWx0YSA9IHZMYWJlbC53aWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkZWx0YSkge1xuICAgICAgICAgICAgc3VtICs9IHJldmVyc2VTZXAgPyBkZWx0YSA6IC1kZWx0YTtcbiAgICAgICAgfVxuICAgICAgICBkZWx0YSA9IDA7XG4gICAgICAgIHN1bSArPSAodkxhYmVsLmR1bW15ID8gZWRnZVNlcCA6IG5vZGVTZXApIC8gMjtcbiAgICAgICAgc3VtICs9ICh3TGFiZWwuZHVtbXkgPyBlZGdlU2VwIDogbm9kZVNlcCkgLyAyO1xuICAgICAgICBzdW0gKz0gd0xhYmVsLndpZHRoIC8gMjtcbiAgICAgICAgaWYgKHdMYWJlbC5oYXNPd25Qcm9wZXJ0eShcImxhYmVscG9zXCIpKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKCh3TGFiZWwubGFiZWxwb3MgfHwgJycpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwibFwiOlxuICAgICAgICAgICAgICAgICAgICBkZWx0YSA9IHdMYWJlbC53aWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJyXCI6XG4gICAgICAgICAgICAgICAgICAgIGRlbHRhID0gLXdMYWJlbC53aWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkZWx0YSkge1xuICAgICAgICAgICAgc3VtICs9IHJldmVyc2VTZXAgPyBkZWx0YSA6IC1kZWx0YTtcbiAgICAgICAgfVxuICAgICAgICBkZWx0YSA9IDA7XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgfTtcbn07XG5jb25zdCB3aWR0aCA9IChnLCB2KSA9PiB7IHZhciBfYTsgcmV0dXJuICgoX2EgPSBnLm5vZGUodikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS53aWR0aCkgfHwgMDsgfTtcbmV4cG9ydCB7IHBvc2l0aW9uWCwgZmluZFR5cGUxQ29uZmxpY3RzLCBmaW5kVHlwZTJDb25mbGljdHMsIGFkZENvbmZsaWN0LCBoYXNDb25mbGljdCwgdmVydGljYWxBbGlnbm1lbnQsIGhvcml6b250YWxDb21wYWN0aW9uLCBhbGlnbkNvb3JkaW5hdGVzLCBmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudCwgYmFsYW5jZSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICAgIHBvc2l0aW9uWCxcbiAgICBmaW5kVHlwZTFDb25mbGljdHMsXG4gICAgZmluZFR5cGUyQ29uZmxpY3RzLFxuICAgIGFkZENvbmZsaWN0LFxuICAgIGhhc0NvbmZsaWN0LFxuICAgIHZlcnRpY2FsQWxpZ25tZW50LFxuICAgIGhvcml6b250YWxDb21wYWN0aW9uLFxuICAgIGFsaWduQ29vcmRpbmF0ZXMsXG4gICAgZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQsXG4gICAgYmFsYW5jZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJrLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/position/bk.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/position/index.js": /*!*************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/position/index.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n/* harmony import */ var _bk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bk */ \"./node_modules/@antv/layout/es/layout/dagre/src/position/bk.js\");\n\n\nconst positionY = (g) => {\n const layering = _util__WEBPACK_IMPORTED_MODULE_0__[\"default\"].buildLayerMatrix(g);\n const rankSep = g.graph().ranksep;\n let prevY = 0;\n layering === null || layering === void 0 ? void 0 : layering.forEach((layer) => {\n const heights = layer.map((v) => g.node(v).height);\n const maxHeight = Math.max(...heights);\n layer === null || layer === void 0 ? void 0 : layer.forEach((v) => {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n};\nconst positionX = (g) => {\n const layering = _util__WEBPACK_IMPORTED_MODULE_0__[\"default\"].buildLayerMatrix(g);\n const conflicts = Object.assign(Object(_bk__WEBPACK_IMPORTED_MODULE_1__[\"findType1Conflicts\"])(g, layering), Object(_bk__WEBPACK_IMPORTED_MODULE_1__[\"findType2Conflicts\"])(g, layering));\n const xss = {};\n let adjustedLayering;\n [\"u\", \"d\"].forEach((vert) => {\n // @ts-ignore\n adjustedLayering = vert === \"u\" ? layering : Object.values(layering).reverse();\n [\"l\", \"r\"].forEach((horiz) => {\n if (horiz === \"r\") {\n // @ts-ignore\n adjustedLayering = adjustedLayering.map((inner) => Object.values(inner).reverse());\n }\n const neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n const align = Object(_bk__WEBPACK_IMPORTED_MODULE_1__[\"verticalAlignment\"])(g, adjustedLayering, conflicts, neighborFn);\n const xs = Object(_bk__WEBPACK_IMPORTED_MODULE_1__[\"horizontalCompaction\"])(g, adjustedLayering, align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n Object.keys(xs).forEach((xsKey) => xs[xsKey] = -xs[xsKey]);\n }\n xss[vert + horiz] = xs;\n });\n });\n const smallestWidth = Object(_bk__WEBPACK_IMPORTED_MODULE_1__[\"findSmallestWidthAlignment\"])(g, xss);\n smallestWidth && Object(_bk__WEBPACK_IMPORTED_MODULE_1__[\"alignCoordinates\"])(xss, smallestWidth);\n return Object(_bk__WEBPACK_IMPORTED_MODULE_1__[\"balance\"])(xss, g.graph().align);\n};\nconst position = (g) => {\n var _a;\n // tslint:disable-next-line\n g = _util__WEBPACK_IMPORTED_MODULE_0__[\"default\"].asNonCompoundGraph(g);\n positionY(g);\n const xs = positionX(g);\n (_a = Object.keys(xs)) === null || _a === void 0 ? void 0 : _a.forEach((key) => {\n g.node(key).x = xs[key];\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (position);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvcG9zaXRpb24vaW5kZXguanM/OTAyNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBMkI7QUFDbUk7QUFDOUo7QUFDQSxxQkFBcUIsNkNBQUk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHFCQUFxQiw2Q0FBSTtBQUN6QixvQ0FBb0MsOERBQWtCLGVBQWUsOERBQWtCO0FBQ3ZGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsNkRBQWlCO0FBQzNDLHVCQUF1QixnRUFBb0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMLDBCQUEwQixzRUFBMEI7QUFDcEQscUJBQXFCLDREQUFnQjtBQUNyQyxXQUFXLG1EQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw2Q0FBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ2UsdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2RhZ3JlL3NyYy9wb3NpdGlvbi9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1dGlsIGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgYWxpZ25Db29yZGluYXRlcywgYmFsYW5jZSwgZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQsIGZpbmRUeXBlMUNvbmZsaWN0cywgZmluZFR5cGUyQ29uZmxpY3RzLCBob3Jpem9udGFsQ29tcGFjdGlvbiwgdmVydGljYWxBbGlnbm1lbnQgfSBmcm9tICcuL2JrJztcbmNvbnN0IHBvc2l0aW9uWSA9IChnKSA9PiB7XG4gICAgY29uc3QgbGF5ZXJpbmcgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gICAgY29uc3QgcmFua1NlcCA9IGcuZ3JhcGgoKS5yYW5rc2VwO1xuICAgIGxldCBwcmV2WSA9IDA7XG4gICAgbGF5ZXJpbmcgPT09IG51bGwgfHwgbGF5ZXJpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheWVyaW5nLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGhlaWdodHMgPSBsYXllci5tYXAoKHYpID0+IGcubm9kZSh2KS5oZWlnaHQpO1xuICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1heCguLi5oZWlnaHRzKTtcbiAgICAgICAgbGF5ZXIgPT09IG51bGwgfHwgbGF5ZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheWVyLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgIGcubm9kZSh2KS55ID0gcHJldlkgKyBtYXhIZWlnaHQgLyAyO1xuICAgICAgICB9KTtcbiAgICAgICAgcHJldlkgKz0gbWF4SGVpZ2h0ICsgcmFua1NlcDtcbiAgICB9KTtcbn07XG5jb25zdCBwb3NpdGlvblggPSAoZykgPT4ge1xuICAgIGNvbnN0IGxheWVyaW5nID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICAgIGNvbnN0IGNvbmZsaWN0cyA9IE9iamVjdC5hc3NpZ24oZmluZFR5cGUxQ29uZmxpY3RzKGcsIGxheWVyaW5nKSwgZmluZFR5cGUyQ29uZmxpY3RzKGcsIGxheWVyaW5nKSk7XG4gICAgY29uc3QgeHNzID0ge307XG4gICAgbGV0IGFkanVzdGVkTGF5ZXJpbmc7XG4gICAgW1widVwiLCBcImRcIl0uZm9yRWFjaCgodmVydCkgPT4ge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGFkanVzdGVkTGF5ZXJpbmcgPSB2ZXJ0ID09PSBcInVcIiA/IGxheWVyaW5nIDogT2JqZWN0LnZhbHVlcyhsYXllcmluZykucmV2ZXJzZSgpO1xuICAgICAgICBbXCJsXCIsIFwiclwiXS5mb3JFYWNoKChob3JpeikgPT4ge1xuICAgICAgICAgICAgaWYgKGhvcml6ID09PSBcInJcIikge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBhZGp1c3RlZExheWVyaW5nID0gYWRqdXN0ZWRMYXllcmluZy5tYXAoKGlubmVyKSA9PiBPYmplY3QudmFsdWVzKGlubmVyKS5yZXZlcnNlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmVpZ2hib3JGbiA9ICh2ZXJ0ID09PSBcInVcIiA/IGcucHJlZGVjZXNzb3JzIDogZy5zdWNjZXNzb3JzKS5iaW5kKGcpO1xuICAgICAgICAgICAgY29uc3QgYWxpZ24gPSB2ZXJ0aWNhbEFsaWdubWVudChnLCBhZGp1c3RlZExheWVyaW5nLCBjb25mbGljdHMsIG5laWdoYm9yRm4pO1xuICAgICAgICAgICAgY29uc3QgeHMgPSBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBhZGp1c3RlZExheWVyaW5nLCBhbGlnbi5yb290LCBhbGlnbi5hbGlnbiwgaG9yaXogPT09IFwiclwiKTtcbiAgICAgICAgICAgIGlmIChob3JpeiA9PT0gXCJyXCIpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh4cykuZm9yRWFjaCgoeHNLZXkpID0+IHhzW3hzS2V5XSA9IC14c1t4c0tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeHNzW3ZlcnQgKyBob3Jpel0gPSB4cztcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc21hbGxlc3RXaWR0aCA9IGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50KGcsIHhzcyk7XG4gICAgc21hbGxlc3RXaWR0aCAmJiBhbGlnbkNvb3JkaW5hdGVzKHhzcywgc21hbGxlc3RXaWR0aCk7XG4gICAgcmV0dXJuIGJhbGFuY2UoeHNzLCBnLmdyYXBoKCkuYWxpZ24pO1xufTtcbmNvbnN0IHBvc2l0aW9uID0gKGcpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgZyA9IHV0aWwuYXNOb25Db21wb3VuZEdyYXBoKGcpO1xuICAgIHBvc2l0aW9uWShnKTtcbiAgICBjb25zdCB4cyA9IHBvc2l0aW9uWChnKTtcbiAgICAoX2EgPSBPYmplY3Qua2V5cyh4cykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgZy5ub2RlKGtleSkueCA9IHhzW2tleV07XG4gICAgfSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgcG9zaXRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/position/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/rank/feasible-tree.js": /*!*****************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/rank/feasible-tree.js ***! \*****************************************************************************/ /*! exports provided: feasibleTree, feasibleTreeWithLayer, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"feasibleTree\", function() { return feasibleTree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"feasibleTreeWithLayer\", function() { return feasibleTreeWithLayer; });\n/* harmony import */ var _graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../graphlib */ \"./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/layout/es/layout/dagre/src/rank/util.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n\n\n\nconst Graph = _graphlib__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Graph;\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nconst feasibleTree = (g) => {\n const t = new Graph({ directed: false });\n // Choose arbitrary node from which to start our tree\n const start = g.nodes()[0];\n const size = g.nodeCount();\n t.setNode(start, {});\n let edge;\n let delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"slack\"])(g, edge) : -Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"slack\"])(g, edge);\n shiftRanks(t, g, delta);\n }\n return t;\n};\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nconst tightTree = (t, g) => {\n const dfs = (v) => {\n g.nodeEdges(v).forEach((e) => {\n const edgeV = e.v;\n const w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"slack\"])(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n };\n t.nodes().forEach(dfs);\n return t.nodeCount();\n};\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nconst feasibleTreeWithLayer = (g) => {\n const t = new Graph({ directed: false });\n // Choose arbitrary node from which to start our tree\n const start = g.nodes()[0];\n const size = g.nodeCount();\n t.setNode(start, {});\n let edge;\n let delta;\n while (tightTreeWithLayer(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"slack\"])(g, edge) : -Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"slack\"])(g, edge);\n shiftRanks(t, g, delta);\n }\n return t;\n};\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nconst tightTreeWithLayer = (t, g) => {\n const dfs = (v) => {\n var _a;\n (_a = g.nodeEdges(v)) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n const edgeV = e.v;\n const w = (v === edgeV) ? e.w : edgeV;\n // 对于指定layer的,直接加入tight-tree,不参与调整\n if (!t.hasNode(w) && (g.node(w).layer !== undefined || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"slack\"])(g, e))) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n };\n t.nodes().forEach(dfs);\n return t.nodeCount();\n};\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nconst findMinSlackEdge = (t, g) => {\n return Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"minBy\"])(g.edges(), (e) => {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"slack\"])(g, e);\n }\n return Infinity;\n });\n};\nconst shiftRanks = (t, g, delta) => {\n t.nodes().forEach((v) => {\n if (!g.node(v).rank)\n g.node(v).rank = 0;\n g.node(v).rank += delta;\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n feasibleTree,\n feasibleTreeWithLayer\n});\n//# sourceMappingURL=feasible-tree.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvcmFuay9mZWFzaWJsZS10cmVlLmpzPzA5ZDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ0o7QUFDQztBQUNoQyxjQUFjLGlEQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsa0JBQWtCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxtREFBSyxhQUFhLG1EQUFLO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLG1EQUFLO0FBQ3ZDLCtCQUErQjtBQUMvQixrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsa0JBQWtCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxtREFBSyxhQUFhLG1EQUFLO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSxtREFBSztBQUN6RSwrQkFBK0I7QUFDL0Isa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxtREFBSztBQUNoQjtBQUNBLG1CQUFtQixtREFBSztBQUN4QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUMrQztBQUNoQztBQUNmO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2RhZ3JlL3NyYy9yYW5rL2ZlYXNpYmxlLXRyZWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ3JhcGhsaWIgZnJvbSAnLi4vZ3JhcGhsaWInO1xuaW1wb3J0IHsgc2xhY2sgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgbWluQnkgfSBmcm9tICcuLi91dGlsJztcbmNvbnN0IEdyYXBoID0gZ3JhcGhsaWIuR3JhcGg7XG4vKlxuICogQ29uc3RydWN0cyBhIHNwYW5uaW5nIHRyZWUgd2l0aCB0aWdodCBlZGdlcyBhbmQgYWRqdXN0ZWQgdGhlIGlucHV0IG5vZGUnc1xuICogcmFua3MgdG8gYWNoaWV2ZSB0aGlzLiBBIHRpZ2h0IGVkZ2UgaXMgb25lIHRoYXQgaXMgaGFzIGEgbGVuZ3RoIHRoYXQgbWF0Y2hlc1xuICogaXRzIFwibWlubGVuXCIgYXR0cmlidXRlLlxuICpcbiAqIFRoZSBiYXNpYyBzdHJ1Y3R1cmUgZm9yIHRoaXMgZnVuY3Rpb24gaXMgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBXG4gKiBUZWNobmlxdWUgZm9yIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbXVzdCBiZSBhIERBRy5cbiAqICAgIDIuIEdyYXBoIG11c3QgYmUgY29ubmVjdGVkLlxuICogICAgMy4gR3JhcGggbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBub2RlLlxuICogICAgNS4gR3JhcGggbm9kZXMgbXVzdCBoYXZlIGJlZW4gcHJldmlvdXNseSBhc3NpZ25lZCBhIFwicmFua1wiIHByb3BlcnR5IHRoYXRcbiAqICAgICAgIHJlc3BlY3RzIHRoZSBcIm1pbmxlblwiIHByb3BlcnR5IG9mIGluY2lkZW50IGVkZ2VzLlxuICogICAgNi4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIGEgXCJtaW5sZW5cIiBwcm9wZXJ0eS5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgLSBHcmFwaCBub2RlcyB3aWxsIGhhdmUgdGhlaXIgcmFuayBhZGp1c3RlZCB0byBlbnN1cmUgdGhhdCBhbGwgZWRnZXMgYXJlXG4gKiAgICAgIHRpZ2h0LlxuICpcbiAqIFJldHVybnMgYSB0cmVlICh1bmRpcmVjdGVkIGdyYXBoKSB0aGF0IGlzIGNvbnN0cnVjdGVkIHVzaW5nIG9ubHkgXCJ0aWdodFwiXG4gKiBlZGdlcy5cbiAqL1xuY29uc3QgZmVhc2libGVUcmVlID0gKGcpID0+IHtcbiAgICBjb25zdCB0ID0gbmV3IEdyYXBoKHsgZGlyZWN0ZWQ6IGZhbHNlIH0pO1xuICAgIC8vIENob29zZSBhcmJpdHJhcnkgbm9kZSBmcm9tIHdoaWNoIHRvIHN0YXJ0IG91ciB0cmVlXG4gICAgY29uc3Qgc3RhcnQgPSBnLm5vZGVzKClbMF07XG4gICAgY29uc3Qgc2l6ZSA9IGcubm9kZUNvdW50KCk7XG4gICAgdC5zZXROb2RlKHN0YXJ0LCB7fSk7XG4gICAgbGV0IGVkZ2U7XG4gICAgbGV0IGRlbHRhO1xuICAgIHdoaWxlICh0aWdodFRyZWUodCwgZykgPCBzaXplKSB7XG4gICAgICAgIGVkZ2UgPSBmaW5kTWluU2xhY2tFZGdlKHQsIGcpO1xuICAgICAgICBkZWx0YSA9IHQuaGFzTm9kZShlZGdlLnYpID8gc2xhY2soZywgZWRnZSkgOiAtc2xhY2soZywgZWRnZSk7XG4gICAgICAgIHNoaWZ0UmFua3ModCwgZywgZGVsdGEpO1xuICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG4vKlxuICogRmluZHMgYSBtYXhpbWFsIHRyZWUgb2YgdGlnaHQgZWRnZXMgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBub2RlcyBpbiB0aGVcbiAqIHRyZWUuXG4gKi9cbmNvbnN0IHRpZ2h0VHJlZSA9ICh0LCBnKSA9PiB7XG4gICAgY29uc3QgZGZzID0gKHYpID0+IHtcbiAgICAgICAgZy5ub2RlRWRnZXModikuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWRnZVYgPSBlLnY7XG4gICAgICAgICAgICBjb25zdCB3ID0gKHYgPT09IGVkZ2VWKSA/IGUudyA6IGVkZ2VWO1xuICAgICAgICAgICAgaWYgKCF0Lmhhc05vZGUodykgJiYgIXNsYWNrKGcsIGUpKSB7XG4gICAgICAgICAgICAgICAgdC5zZXROb2RlKHcsIHt9KTtcbiAgICAgICAgICAgICAgICB0LnNldEVkZ2Uodiwgdywge30pO1xuICAgICAgICAgICAgICAgIGRmcyh3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICB0Lm5vZGVzKCkuZm9yRWFjaChkZnMpO1xuICAgIHJldHVybiB0Lm5vZGVDb3VudCgpO1xufTtcbi8qXG4gKiBDb25zdHJ1Y3RzIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIHRpZ2h0IGVkZ2VzIGFuZCBhZGp1c3RlZCB0aGUgaW5wdXQgbm9kZSdzXG4gKiByYW5rcyB0byBhY2hpZXZlIHRoaXMuIEEgdGlnaHQgZWRnZSBpcyBvbmUgdGhhdCBpcyBoYXMgYSBsZW5ndGggdGhhdCBtYXRjaGVzXG4gKiBpdHMgXCJtaW5sZW5cIiBhdHRyaWJ1dGUuXG4gKlxuICogVGhlIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhpcyBmdW5jdGlvbiBpcyBkZXJpdmVkIGZyb20gR2Fuc25lciwgZXQgYWwuLCBcIkFcbiAqIFRlY2huaXF1ZSBmb3IgRHJhd2luZyBEaXJlY3RlZCBHcmFwaHMuXCJcbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIGEgREFHLlxuICogICAgMi4gR3JhcGggbXVzdCBiZSBjb25uZWN0ZWQuXG4gKiAgICAzLiBHcmFwaCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG5vZGUuXG4gKiAgICA1LiBHcmFwaCBub2RlcyBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFzc2lnbmVkIGEgXCJyYW5rXCIgcHJvcGVydHkgdGhhdFxuICogICAgICAgcmVzcGVjdHMgdGhlIFwibWlubGVuXCIgcHJvcGVydHkgb2YgaW5jaWRlbnQgZWRnZXMuXG4gKiAgICA2LiBHcmFwaCBlZGdlcyBtdXN0IGhhdmUgYSBcIm1pbmxlblwiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAtIEdyYXBoIG5vZGVzIHdpbGwgaGF2ZSB0aGVpciByYW5rIGFkanVzdGVkIHRvIGVuc3VyZSB0aGF0IGFsbCBlZGdlcyBhcmVcbiAqICAgICAgdGlnaHQuXG4gKlxuICogUmV0dXJucyBhIHRyZWUgKHVuZGlyZWN0ZWQgZ3JhcGgpIHRoYXQgaXMgY29uc3RydWN0ZWQgdXNpbmcgb25seSBcInRpZ2h0XCJcbiAqIGVkZ2VzLlxuICovXG5jb25zdCBmZWFzaWJsZVRyZWVXaXRoTGF5ZXIgPSAoZykgPT4ge1xuICAgIGNvbnN0IHQgPSBuZXcgR3JhcGgoeyBkaXJlY3RlZDogZmFsc2UgfSk7XG4gICAgLy8gQ2hvb3NlIGFyYml0cmFyeSBub2RlIGZyb20gd2hpY2ggdG8gc3RhcnQgb3VyIHRyZWVcbiAgICBjb25zdCBzdGFydCA9IGcubm9kZXMoKVswXTtcbiAgICBjb25zdCBzaXplID0gZy5ub2RlQ291bnQoKTtcbiAgICB0LnNldE5vZGUoc3RhcnQsIHt9KTtcbiAgICBsZXQgZWRnZTtcbiAgICBsZXQgZGVsdGE7XG4gICAgd2hpbGUgKHRpZ2h0VHJlZVdpdGhMYXllcih0LCBnKSA8IHNpemUpIHtcbiAgICAgICAgZWRnZSA9IGZpbmRNaW5TbGFja0VkZ2UodCwgZyk7XG4gICAgICAgIGRlbHRhID0gdC5oYXNOb2RlKGVkZ2UudikgPyBzbGFjayhnLCBlZGdlKSA6IC1zbGFjayhnLCBlZGdlKTtcbiAgICAgICAgc2hpZnRSYW5rcyh0LCBnLCBkZWx0YSk7XG4gICAgfVxuICAgIHJldHVybiB0O1xufTtcbi8qXG4gKiBGaW5kcyBhIG1heGltYWwgdHJlZSBvZiB0aWdodCBlZGdlcyBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5vZGVzIGluIHRoZVxuICogdHJlZS5cbiAqL1xuY29uc3QgdGlnaHRUcmVlV2l0aExheWVyID0gKHQsIGcpID0+IHtcbiAgICBjb25zdCBkZnMgPSAodikgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIChfYSA9IGcubm9kZUVkZ2VzKHYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWRnZVYgPSBlLnY7XG4gICAgICAgICAgICBjb25zdCB3ID0gKHYgPT09IGVkZ2VWKSA/IGUudyA6IGVkZ2VWO1xuICAgICAgICAgICAgLy8g5a+55LqO5oyH5a6abGF5ZXLnmoTvvIznm7TmjqXliqDlhaV0aWdodC10cmVl77yM5LiN5Y+C5LiO6LCD5pW0XG4gICAgICAgICAgICBpZiAoIXQuaGFzTm9kZSh3KSAmJiAoZy5ub2RlKHcpLmxheWVyICE9PSB1bmRlZmluZWQgfHwgIXNsYWNrKGcsIGUpKSkge1xuICAgICAgICAgICAgICAgIHQuc2V0Tm9kZSh3LCB7fSk7XG4gICAgICAgICAgICAgICAgdC5zZXRFZGdlKHYsIHcsIHt9KTtcbiAgICAgICAgICAgICAgICBkZnModyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgdC5ub2RlcygpLmZvckVhY2goZGZzKTtcbiAgICByZXR1cm4gdC5ub2RlQ291bnQoKTtcbn07XG4vKlxuICogRmluZHMgdGhlIGVkZ2Ugd2l0aCB0aGUgc21hbGxlc3Qgc2xhY2sgdGhhdCBpcyBpbmNpZGVudCBvbiB0cmVlIGFuZCByZXR1cm5zXG4gKiBpdC5cbiAqL1xuY29uc3QgZmluZE1pblNsYWNrRWRnZSA9ICh0LCBnKSA9PiB7XG4gICAgcmV0dXJuIG1pbkJ5KGcuZWRnZXMoKSwgKGUpID0+IHtcbiAgICAgICAgaWYgKHQuaGFzTm9kZShlLnYpICE9PSB0Lmhhc05vZGUoZS53KSkge1xuICAgICAgICAgICAgcmV0dXJuIHNsYWNrKGcsIGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBJbmZpbml0eTtcbiAgICB9KTtcbn07XG5jb25zdCBzaGlmdFJhbmtzID0gKHQsIGcsIGRlbHRhKSA9PiB7XG4gICAgdC5ub2RlcygpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgaWYgKCFnLm5vZGUodikucmFuaylcbiAgICAgICAgICAgIGcubm9kZSh2KS5yYW5rID0gMDtcbiAgICAgICAgZy5ub2RlKHYpLnJhbmsgKz0gZGVsdGE7XG4gICAgfSk7XG59O1xuZXhwb3J0IHsgZmVhc2libGVUcmVlLCBmZWFzaWJsZVRyZWVXaXRoTGF5ZXIgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBmZWFzaWJsZVRyZWUsXG4gICAgZmVhc2libGVUcmVlV2l0aExheWVyXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmVhc2libGUtdHJlZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/rank/feasible-tree.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/rank/index.js": /*!*********************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/rank/index.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/layout/es/layout/dagre/src/rank/util.js\");\n/* harmony import */ var _feasible_tree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./feasible-tree */ \"./node_modules/@antv/layout/es/layout/dagre/src/rank/feasible-tree.js\");\n/* harmony import */ var _network_simplex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./network-simplex */ \"./node_modules/@antv/layout/es/layout/dagre/src/rank/network-simplex.js\");\n// \"use strict\";\n// var rankUtil = require(\"./util\");\n// var longestPath = rankUtil.longestPathWithLayer;\n// var feasibleTree = require(\"./feasible-tree\").feasibleTreeWithLayer;\n// var networkSimplex = require(\"./network-simplex\");\n\n\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nconst rank = (g) => {\n switch (g.graph().ranker) {\n case \"network-simplex\":\n networkSimplexRanker(g);\n break;\n case \"tight-tree\":\n tightTreeRanker(g);\n break;\n case \"longest-path\":\n longestPathRanker(g);\n break;\n // default: networkSimplexRanker(g);\n default: tightTreeRanker(g);\n }\n};\n// A fast and simple ranker, but results are far from optimal.\nconst longestPathRanker = _util__WEBPACK_IMPORTED_MODULE_0__[\"longestPath\"];\nconst tightTreeRanker = (g) => {\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"longestPathWithLayer\"])(g);\n Object(_feasible_tree__WEBPACK_IMPORTED_MODULE_1__[\"feasibleTreeWithLayer\"])(g);\n};\nconst networkSimplexRanker = (g) => {\n Object(_network_simplex__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(g);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (rank);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvcmFuay9pbmRleC5qcz9iNzkyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMyRDtBQUNhO0FBQ3pCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsaURBQVc7QUFDckM7QUFDQSxJQUFJLGtFQUFvQjtBQUN4QixJQUFJLDRFQUFZO0FBQ2hCO0FBQ0E7QUFDQSxJQUFJLGdFQUFjO0FBQ2xCO0FBQ2UsbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2RhZ3JlL3NyYy9yYW5rL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gXCJ1c2Ugc3RyaWN0XCI7XG4vLyB2YXIgcmFua1V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuLy8gdmFyIGxvbmdlc3RQYXRoID0gcmFua1V0aWwubG9uZ2VzdFBhdGhXaXRoTGF5ZXI7XG4vLyB2YXIgZmVhc2libGVUcmVlID0gcmVxdWlyZShcIi4vZmVhc2libGUtdHJlZVwiKS5mZWFzaWJsZVRyZWVXaXRoTGF5ZXI7XG4vLyB2YXIgbmV0d29ya1NpbXBsZXggPSByZXF1aXJlKFwiLi9uZXR3b3JrLXNpbXBsZXhcIik7XG5pbXBvcnQgeyBsb25nZXN0UGF0aCwgbG9uZ2VzdFBhdGhXaXRoTGF5ZXIgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgZmVhc2libGVUcmVlV2l0aExheWVyIGFzIGZlYXNpYmxlVHJlZSB9IGZyb20gJy4vZmVhc2libGUtdHJlZSc7XG5pbXBvcnQgbmV0d29ya1NpbXBsZXggZnJvbSAnLi9uZXR3b3JrLXNpbXBsZXgnO1xuLypcbiAqIEFzc2lnbnMgYSByYW5rIHRvIGVhY2ggbm9kZSBpbiB0aGUgaW5wdXQgZ3JhcGggdGhhdCByZXNwZWN0cyB0aGUgXCJtaW5sZW5cIlxuICogY29uc3RyYWludCBzcGVjaWZpZWQgb24gZWRnZXMgYmV0d2VlbiBub2Rlcy5cbiAqXG4gKiBUaGlzIGJhc2ljIHN0cnVjdHVyZSBpcyBkZXJpdmVkIGZyb20gR2Fuc25lciwgZXQgYWwuLCBcIkEgVGVjaG5pcXVlIGZvclxuICogRHJhd2luZyBEaXJlY3RlZCBHcmFwaHMuXCJcbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIGEgY29ubmVjdGVkIERBR1xuICogICAgMi4gR3JhcGggbm9kZXMgbXVzdCBiZSBvYmplY3RzXG4gKiAgICAzLiBHcmFwaCBlZGdlcyBtdXN0IGhhdmUgXCJ3ZWlnaHRcIiBhbmQgXCJtaW5sZW5cIiBhdHRyaWJ1dGVzXG4gKlxuICogUG9zdC1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEdyYXBoIG5vZGVzIHdpbGwgaGF2ZSBhIFwicmFua1wiIGF0dHJpYnV0ZSBiYXNlZCBvbiB0aGUgcmVzdWx0cyBvZiB0aGVcbiAqICAgICAgIGFsZ29yaXRobS4gUmFua3MgY2FuIHN0YXJ0IGF0IGFueSBpbmRleCAoaW5jbHVkaW5nIG5lZ2F0aXZlKSwgd2UnbGxcbiAqICAgICAgIGZpeCB0aGVtIHVwIGxhdGVyLlxuICovXG5jb25zdCByYW5rID0gKGcpID0+IHtcbiAgICBzd2l0Y2ggKGcuZ3JhcGgoKS5yYW5rZXIpIHtcbiAgICAgICAgY2FzZSBcIm5ldHdvcmstc2ltcGxleFwiOlxuICAgICAgICAgICAgbmV0d29ya1NpbXBsZXhSYW5rZXIoZyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRpZ2h0LXRyZWVcIjpcbiAgICAgICAgICAgIHRpZ2h0VHJlZVJhbmtlcihnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibG9uZ2VzdC1wYXRoXCI6XG4gICAgICAgICAgICBsb25nZXN0UGF0aFJhbmtlcihnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAvLyBkZWZhdWx0OiBuZXR3b3JrU2ltcGxleFJhbmtlcihnKTtcbiAgICAgICAgZGVmYXVsdDogdGlnaHRUcmVlUmFua2VyKGcpO1xuICAgIH1cbn07XG4vLyBBIGZhc3QgYW5kIHNpbXBsZSByYW5rZXIsIGJ1dCByZXN1bHRzIGFyZSBmYXIgZnJvbSBvcHRpbWFsLlxuY29uc3QgbG9uZ2VzdFBhdGhSYW5rZXIgPSBsb25nZXN0UGF0aDtcbmNvbnN0IHRpZ2h0VHJlZVJhbmtlciA9IChnKSA9PiB7XG4gICAgbG9uZ2VzdFBhdGhXaXRoTGF5ZXIoZyk7XG4gICAgZmVhc2libGVUcmVlKGcpO1xufTtcbmNvbnN0IG5ldHdvcmtTaW1wbGV4UmFua2VyID0gKGcpID0+IHtcbiAgICBuZXR3b3JrU2ltcGxleChnKTtcbn07XG5leHBvcnQgZGVmYXVsdCByYW5rO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/rank/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/rank/network-simplex.js": /*!*******************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/rank/network-simplex.js ***! \*******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _feasible_tree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./feasible-tree */ \"./node_modules/@antv/layout/es/layout/dagre/src/rank/feasible-tree.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/@antv/layout/es/layout/dagre/src/rank/util.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/layout/dagre/src/util.js\");\n/* harmony import */ var _graphlib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../graphlib */ \"./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js\");\n\n\n\n\nconst alg = _graphlib__WEBPACK_IMPORTED_MODULE_3__[\"default\"].alg;\nconst { preorder, postorder } = alg;\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nconst networkSimplex = (g) => {\n // tslint:disable-next-line\n g = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"simplify\"])(g);\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"longestPath\"])(g);\n const t = Object(_feasible_tree__WEBPACK_IMPORTED_MODULE_0__[\"feasibleTree\"])(g);\n initLowLimValues(t);\n initCutValues(t, g);\n let e;\n let f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n};\n/*\n * Initializes cut values for all edges in the tree.\n */\nconst initCutValues = (t, g) => {\n let vs = postorder(t, t.nodes());\n vs = vs === null || vs === void 0 ? void 0 : vs.slice(0, (vs === null || vs === void 0 ? void 0 : vs.length) - 1);\n vs === null || vs === void 0 ? void 0 : vs.forEach((v) => {\n assignCutValue(t, g, v);\n });\n};\nconst assignCutValue = (t, g, child) => {\n const childLab = t.node(child);\n const parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n};\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nconst calcCutValue = (t, g, child) => {\n var _a;\n const childLab = t.node(child);\n const parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n let childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n let graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n let cutValue = 0;\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n cutValue = graphEdge.weight;\n (_a = g.nodeEdges(child)) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n const isOutEdge = e.v === child;\n const other = isOutEdge ? e.w : e.v;\n if (other !== parent) {\n const pointsToHead = isOutEdge === childIsTail;\n const otherWeight = g.edge(e).weight;\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n const otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n return cutValue;\n};\nconst initLowLimValues = (tree, root) => {\n if (root !== undefined) {\n // tslint:disable-next-line\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n};\nconst dfsAssignLowLim = (tree, visited, nextLim, v, parent) => {\n var _a;\n const low = nextLim;\n let useNextLim = nextLim;\n const label = tree.node(v);\n visited[v] = true;\n (_a = tree.neighbors(v)) === null || _a === void 0 ? void 0 : _a.forEach((w) => {\n if (!visited.hasOwnProperty(w)) {\n useNextLim = dfsAssignLowLim(tree, visited, useNextLim, w, v);\n }\n });\n label.low = low;\n label.lim = useNextLim++;\n if (parent) {\n label.parent = parent;\n }\n else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n return useNextLim;\n};\nconst leaveEdge = (tree) => {\n return tree.edges().find((e) => {\n return tree.edge(e).cutvalue < 0;\n });\n};\nconst enterEdge = (t, g, edge) => {\n let v = edge.v;\n let w = edge.w;\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n const vLabel = t.node(v);\n const wLabel = t.node(w);\n let tailLabel = vLabel;\n let flip = false;\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n const candidates = g.edges().filter((edge) => {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n return Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"minBy\"])(candidates, (edge) => { return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"slack\"])(g, edge); });\n};\nconst exchangeEdges = (t, g, e, f) => {\n const v = e.v;\n const w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n};\nconst updateRanks = (t, g) => {\n const root = t.nodes().find((v) => { return !g.node(v).parent; });\n let vs = preorder(t, root);\n vs = vs === null || vs === void 0 ? void 0 : vs.slice(1);\n vs === null || vs === void 0 ? void 0 : vs.forEach((v) => {\n const parent = t.node(v).parent;\n let edge = g.edge(v, parent);\n let flipped = false;\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n};\n/*\n * Returns true if the edge is in the tree.\n */\nconst isTreeEdge = (tree, u, v) => {\n return tree.hasEdge(u, v);\n};\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nconst isDescendant = (tree, vLabel, rootLabel) => {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n};\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n/* harmony default export */ __webpack_exports__[\"default\"] = (networkSimplex);\n//# sourceMappingURL=network-simplex.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvcmFuay9uZXR3b3JrLXNpbXBsZXguanM/YmE2NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStDO0FBQ1M7QUFDZDtBQUNQO0FBQ25DLFlBQVksaURBQVE7QUFDcEIsT0FBTyxzQkFBc0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0RBQVE7QUFDaEIsSUFBSSx5REFBUTtBQUNaLGNBQWMsbUVBQVk7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFdBQVcsbURBQUssd0JBQXdCLFFBQVEsbURBQUssVUFBVSxFQUFFO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QywwQkFBMEIsRUFBRTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLDZFQUFjLEVBQUM7QUFDOUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvcmFuay9uZXR3b3JrLXNpbXBsZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmZWFzaWJsZVRyZWUgfSBmcm9tICcuL2ZlYXNpYmxlLXRyZWUnO1xuaW1wb3J0IHsgc2xhY2ssIGxvbmdlc3RQYXRoIGFzIGluaXRSYW5rIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IG1pbkJ5LCBzaW1wbGlmeSB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IGdyYXBobGliIGZyb20gJy4uL2dyYXBobGliJztcbmNvbnN0IGFsZyA9IGdyYXBobGliLmFsZztcbmNvbnN0IHsgcHJlb3JkZXIsIHBvc3RvcmRlciB9ID0gYWxnO1xuLypcbiAqIFRoZSBuZXR3b3JrIHNpbXBsZXggYWxnb3JpdGhtIGFzc2lnbnMgcmFua3MgdG8gZWFjaCBub2RlIGluIHRoZSBpbnB1dCBncmFwaFxuICogYW5kIGl0ZXJhdGl2ZWx5IGltcHJvdmVzIHRoZSByYW5raW5nIHRvIHJlZHVjZSB0aGUgbGVuZ3RoIG9mIGVkZ2VzLlxuICpcbiAqIFByZWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGlucHV0IGdyYXBoIG11c3QgYmUgYSBEQUcuXG4gKiAgICAyLiBBbGwgbm9kZXMgaW4gdGhlIGdyYXBoIG11c3QgaGF2ZSBhbiBvYmplY3QgdmFsdWUuXG4gKiAgICAzLiBBbGwgZWRnZXMgaW4gdGhlIGdyYXBoIG11c3QgaGF2ZSBcIm1pbmxlblwiIGFuZCBcIndlaWdodFwiIGF0dHJpYnV0ZXMuXG4gKlxuICogUG9zdGNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gQWxsIG5vZGVzIGluIHRoZSBncmFwaCB3aWxsIGhhdmUgYW4gYXNzaWduZWQgXCJyYW5rXCIgYXR0cmlidXRlIHRoYXQgaGFzXG4gKiAgICAgICBiZWVuIG9wdGltaXplZCBieSB0aGUgbmV0d29yayBzaW1wbGV4IGFsZ29yaXRobS4gUmFua3Mgc3RhcnQgYXQgMC5cbiAqXG4gKlxuICogQSByb3VnaCBza2V0Y2ggb2YgdGhlIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOlxuICpcbiAqICAgIDEuIEFzc2lnbiBpbml0aWFsIHJhbmtzIHRvIGVhY2ggbm9kZS4gV2UgdXNlIHRoZSBsb25nZXN0IHBhdGggYWxnb3JpdGhtLFxuICogICAgICAgd2hpY2ggYXNzaWducyByYW5rcyB0byB0aGUgbG93ZXN0IHBvc2l0aW9uIHBvc3NpYmxlLiBJbiBnZW5lcmFsIHRoaXNcbiAqICAgICAgIGxlYWRzIHRvIHZlcnkgd2lkZSBib3R0b20gcmFua3MgYW5kIHVubmVjZXNzYXJpbHkgbG9uZyBlZGdlcy5cbiAqICAgIDIuIENvbnN0cnVjdCBhIGZlYXNpYmxlIHRpZ2h0IHRyZWUuIEEgdGlnaHQgdHJlZSBpcyBvbmUgc3VjaCB0aGF0IGFsbFxuICogICAgICAgZWRnZXMgaW4gdGhlIHRyZWUgaGF2ZSBubyBzbGFjayAoZGlmZmVyZW5jZSBiZXR3ZWVuIGxlbmd0aCBvZiBlZGdlXG4gKiAgICAgICBhbmQgbWlubGVuIGZvciB0aGUgZWRnZSkuIFRoaXMgYnkgaXRzZWxmIGdyZWF0bHkgaW1wcm92ZXMgdGhlIGFzc2lnbmVkXG4gKiAgICAgICByYW5raW5ncyBieSBzaG9ydGluZyBlZGdlcy5cbiAqICAgIDMuIEl0ZXJhdGl2ZWx5IGZpbmQgZWRnZXMgdGhhdCBoYXZlIG5lZ2F0aXZlIGN1dCB2YWx1ZXMuIEdlbmVyYWxseSBhXG4gKiAgICAgICBuZWdhdGl2ZSBjdXQgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIGVkZ2UgY291bGQgYmUgcmVtb3ZlZCBhbmQgYSBuZXdcbiAqICAgICAgIHRyZWUgZWRnZSBjb3VsZCBiZSBhZGRlZCB0byBwcm9kdWNlIGEgbW9yZSBjb21wYWN0IGdyYXBoLlxuICpcbiAqIE11Y2ggb2YgdGhlIGFsZ29yaXRobXMgaGVyZSBhcmUgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZVxuICogZm9yIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGZpbGUgcm91Z2hseSBmb2xsb3dzIHRoZVxuICogc3RydWN0dXJlIG9mIHRoZSBvdmVyYWxsIGFsZ29yaXRobS5cbiAqL1xuY29uc3QgbmV0d29ya1NpbXBsZXggPSAoZykgPT4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgIGcgPSBzaW1wbGlmeShnKTtcbiAgICBpbml0UmFuayhnKTtcbiAgICBjb25zdCB0ID0gZmVhc2libGVUcmVlKGcpO1xuICAgIGluaXRMb3dMaW1WYWx1ZXModCk7XG4gICAgaW5pdEN1dFZhbHVlcyh0LCBnKTtcbiAgICBsZXQgZTtcbiAgICBsZXQgZjtcbiAgICB3aGlsZSAoKGUgPSBsZWF2ZUVkZ2UodCkpKSB7XG4gICAgICAgIGYgPSBlbnRlckVkZ2UodCwgZywgZSk7XG4gICAgICAgIGV4Y2hhbmdlRWRnZXModCwgZywgZSwgZik7XG4gICAgfVxufTtcbi8qXG4gKiBJbml0aWFsaXplcyBjdXQgdmFsdWVzIGZvciBhbGwgZWRnZXMgaW4gdGhlIHRyZWUuXG4gKi9cbmNvbnN0IGluaXRDdXRWYWx1ZXMgPSAodCwgZykgPT4ge1xuICAgIGxldCB2cyA9IHBvc3RvcmRlcih0LCB0Lm5vZGVzKCkpO1xuICAgIHZzID0gdnMgPT09IG51bGwgfHwgdnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZzLnNsaWNlKDAsICh2cyA9PT0gbnVsbCB8fCB2cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdnMubGVuZ3RoKSAtIDEpO1xuICAgIHZzID09PSBudWxsIHx8IHZzID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2cy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGFzc2lnbkN1dFZhbHVlKHQsIGcsIHYpO1xuICAgIH0pO1xufTtcbmNvbnN0IGFzc2lnbkN1dFZhbHVlID0gKHQsIGcsIGNoaWxkKSA9PiB7XG4gICAgY29uc3QgY2hpbGRMYWIgPSB0Lm5vZGUoY2hpbGQpO1xuICAgIGNvbnN0IHBhcmVudCA9IGNoaWxkTGFiLnBhcmVudDtcbiAgICB0LmVkZ2UoY2hpbGQsIHBhcmVudCkuY3V0dmFsdWUgPSBjYWxjQ3V0VmFsdWUodCwgZywgY2hpbGQpO1xufTtcbi8qXG4gKiBHaXZlbiB0aGUgdGlnaHQgdHJlZSwgaXRzIGdyYXBoLCBhbmQgYSBjaGlsZCBpbiB0aGUgZ3JhcGggY2FsY3VsYXRlIGFuZFxuICogcmV0dXJuIHRoZSBjdXQgdmFsdWUgZm9yIHRoZSBlZGdlIGJldHdlZW4gdGhlIGNoaWxkIGFuZCBpdHMgcGFyZW50LlxuICovXG5jb25zdCBjYWxjQ3V0VmFsdWUgPSAodCwgZywgY2hpbGQpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgY2hpbGRMYWIgPSB0Lm5vZGUoY2hpbGQpO1xuICAgIGNvbnN0IHBhcmVudCA9IGNoaWxkTGFiLnBhcmVudDtcbiAgICAvLyBUcnVlIGlmIHRoZSBjaGlsZCBpcyBvbiB0aGUgdGFpbCBlbmQgb2YgdGhlIGVkZ2UgaW4gdGhlIGRpcmVjdGVkIGdyYXBoXG4gICAgbGV0IGNoaWxkSXNUYWlsID0gdHJ1ZTtcbiAgICAvLyBUaGUgZ3JhcGgncyB2aWV3IG9mIHRoZSB0cmVlIGVkZ2Ugd2UncmUgaW5zcGVjdGluZ1xuICAgIGxldCBncmFwaEVkZ2UgPSBnLmVkZ2UoY2hpbGQsIHBhcmVudCk7XG4gICAgLy8gVGhlIGFjY3VtdWxhdGVkIGN1dCB2YWx1ZSBmb3IgdGhlIGVkZ2UgYmV0d2VlbiB0aGlzIG5vZGUgYW5kIGl0cyBwYXJlbnRcbiAgICBsZXQgY3V0VmFsdWUgPSAwO1xuICAgIGlmICghZ3JhcGhFZGdlKSB7XG4gICAgICAgIGNoaWxkSXNUYWlsID0gZmFsc2U7XG4gICAgICAgIGdyYXBoRWRnZSA9IGcuZWRnZShwYXJlbnQsIGNoaWxkKTtcbiAgICB9XG4gICAgY3V0VmFsdWUgPSBncmFwaEVkZ2Uud2VpZ2h0O1xuICAgIChfYSA9IGcubm9kZUVkZ2VzKGNoaWxkKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgY29uc3QgaXNPdXRFZGdlID0gZS52ID09PSBjaGlsZDtcbiAgICAgICAgY29uc3Qgb3RoZXIgPSBpc091dEVkZ2UgPyBlLncgOiBlLnY7XG4gICAgICAgIGlmIChvdGhlciAhPT0gcGFyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludHNUb0hlYWQgPSBpc091dEVkZ2UgPT09IGNoaWxkSXNUYWlsO1xuICAgICAgICAgICAgY29uc3Qgb3RoZXJXZWlnaHQgPSBnLmVkZ2UoZSkud2VpZ2h0O1xuICAgICAgICAgICAgY3V0VmFsdWUgKz0gcG9pbnRzVG9IZWFkID8gb3RoZXJXZWlnaHQgOiAtb3RoZXJXZWlnaHQ7XG4gICAgICAgICAgICBpZiAoaXNUcmVlRWRnZSh0LCBjaGlsZCwgb3RoZXIpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3RoZXJDdXRWYWx1ZSA9IHQuZWRnZShjaGlsZCwgb3RoZXIpLmN1dHZhbHVlO1xuICAgICAgICAgICAgICAgIGN1dFZhbHVlICs9IHBvaW50c1RvSGVhZCA/IC1vdGhlckN1dFZhbHVlIDogb3RoZXJDdXRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjdXRWYWx1ZTtcbn07XG5jb25zdCBpbml0TG93TGltVmFsdWVzID0gKHRyZWUsIHJvb3QpID0+IHtcbiAgICBpZiAocm9vdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgICAgICByb290ID0gdHJlZS5ub2RlcygpWzBdO1xuICAgIH1cbiAgICBkZnNBc3NpZ25Mb3dMaW0odHJlZSwge30sIDEsIHJvb3QpO1xufTtcbmNvbnN0IGRmc0Fzc2lnbkxvd0xpbSA9ICh0cmVlLCB2aXNpdGVkLCBuZXh0TGltLCB2LCBwYXJlbnQpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbG93ID0gbmV4dExpbTtcbiAgICBsZXQgdXNlTmV4dExpbSA9IG5leHRMaW07XG4gICAgY29uc3QgbGFiZWwgPSB0cmVlLm5vZGUodik7XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG4gICAgKF9hID0gdHJlZS5uZWlnaGJvcnModikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKCh3KSA9PiB7XG4gICAgICAgIGlmICghdmlzaXRlZC5oYXNPd25Qcm9wZXJ0eSh3KSkge1xuICAgICAgICAgICAgdXNlTmV4dExpbSA9IGRmc0Fzc2lnbkxvd0xpbSh0cmVlLCB2aXNpdGVkLCB1c2VOZXh0TGltLCB3LCB2KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGxhYmVsLmxvdyA9IGxvdztcbiAgICBsYWJlbC5saW0gPSB1c2VOZXh0TGltKys7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgICBsYWJlbC5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBUT0RPIHNob3VsZCBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIHdoZW4gd2UgaW5jcmVtZW50YWxseSB1cGRhdGUgbG93IGxpbVxuICAgICAgICBkZWxldGUgbGFiZWwucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gdXNlTmV4dExpbTtcbn07XG5jb25zdCBsZWF2ZUVkZ2UgPSAodHJlZSkgPT4ge1xuICAgIHJldHVybiB0cmVlLmVkZ2VzKCkuZmluZCgoZSkgPT4ge1xuICAgICAgICByZXR1cm4gdHJlZS5lZGdlKGUpLmN1dHZhbHVlIDwgMDtcbiAgICB9KTtcbn07XG5jb25zdCBlbnRlckVkZ2UgPSAodCwgZywgZWRnZSkgPT4ge1xuICAgIGxldCB2ID0gZWRnZS52O1xuICAgIGxldCB3ID0gZWRnZS53O1xuICAgIC8vIEZvciB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIHdlIGFzc3VtZSB0aGF0IHYgaXMgdGhlIHRhaWwgYW5kIHcgaXMgdGhlXG4gICAgLy8gaGVhZCwgc28gaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIGVkZ2UgaW4gdGhlIGdyYXBoIHdlIHNob3VsZCBmbGlwIGl0IHRvXG4gICAgLy8gbWF0Y2ggdGhlIGNvcnJlY3Qgb3JpZW50YXRpb24uXG4gICAgaWYgKCFnLmhhc0VkZ2UodiwgdykpIHtcbiAgICAgICAgdiA9IGVkZ2UudztcbiAgICAgICAgdyA9IGVkZ2UudjtcbiAgICB9XG4gICAgY29uc3QgdkxhYmVsID0gdC5ub2RlKHYpO1xuICAgIGNvbnN0IHdMYWJlbCA9IHQubm9kZSh3KTtcbiAgICBsZXQgdGFpbExhYmVsID0gdkxhYmVsO1xuICAgIGxldCBmbGlwID0gZmFsc2U7XG4gICAgLy8gSWYgdGhlIHJvb3QgaXMgaW4gdGhlIHRhaWwgb2YgdGhlIGVkZ2UgdGhlbiB3ZSBuZWVkIHRvIGZsaXAgdGhlIGxvZ2ljIHRoYXRcbiAgICAvLyBjaGVja3MgZm9yIHRoZSBoZWFkIGFuZCB0YWlsIG5vZGVzIGluIHRoZSBjYW5kaWRhdGVzIGZ1bmN0aW9uIGJlbG93LlxuICAgIGlmICh2TGFiZWwubGltID4gd0xhYmVsLmxpbSkge1xuICAgICAgICB0YWlsTGFiZWwgPSB3TGFiZWw7XG4gICAgICAgIGZsaXAgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBjYW5kaWRhdGVzID0gZy5lZGdlcygpLmZpbHRlcigoZWRnZSkgPT4ge1xuICAgICAgICByZXR1cm4gZmxpcCA9PT0gaXNEZXNjZW5kYW50KHQsIHQubm9kZShlZGdlLnYpLCB0YWlsTGFiZWwpICYmXG4gICAgICAgICAgICBmbGlwICE9PSBpc0Rlc2NlbmRhbnQodCwgdC5ub2RlKGVkZ2UudyksIHRhaWxMYWJlbCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG1pbkJ5KGNhbmRpZGF0ZXMsIChlZGdlKSA9PiB7IHJldHVybiBzbGFjayhnLCBlZGdlKTsgfSk7XG59O1xuY29uc3QgZXhjaGFuZ2VFZGdlcyA9ICh0LCBnLCBlLCBmKSA9PiB7XG4gICAgY29uc3QgdiA9IGUudjtcbiAgICBjb25zdCB3ID0gZS53O1xuICAgIHQucmVtb3ZlRWRnZSh2LCB3KTtcbiAgICB0LnNldEVkZ2UoZi52LCBmLncsIHt9KTtcbiAgICBpbml0TG93TGltVmFsdWVzKHQpO1xuICAgIGluaXRDdXRWYWx1ZXModCwgZyk7XG4gICAgdXBkYXRlUmFua3ModCwgZyk7XG59O1xuY29uc3QgdXBkYXRlUmFua3MgPSAodCwgZykgPT4ge1xuICAgIGNvbnN0IHJvb3QgPSB0Lm5vZGVzKCkuZmluZCgodikgPT4geyByZXR1cm4gIWcubm9kZSh2KS5wYXJlbnQ7IH0pO1xuICAgIGxldCB2cyA9IHByZW9yZGVyKHQsIHJvb3QpO1xuICAgIHZzID0gdnMgPT09IG51bGwgfHwgdnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZzLnNsaWNlKDEpO1xuICAgIHZzID09PSBudWxsIHx8IHZzID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2cy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHQubm9kZSh2KS5wYXJlbnQ7XG4gICAgICAgIGxldCBlZGdlID0gZy5lZGdlKHYsIHBhcmVudCk7XG4gICAgICAgIGxldCBmbGlwcGVkID0gZmFsc2U7XG4gICAgICAgIGlmICghZWRnZSkge1xuICAgICAgICAgICAgZWRnZSA9IGcuZWRnZShwYXJlbnQsIHYpO1xuICAgICAgICAgICAgZmxpcHBlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZy5ub2RlKHYpLnJhbmsgPSBnLm5vZGUocGFyZW50KS5yYW5rICsgKGZsaXBwZWQgPyBlZGdlLm1pbmxlbiA6IC1lZGdlLm1pbmxlbik7XG4gICAgfSk7XG59O1xuLypcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZWRnZSBpcyBpbiB0aGUgdHJlZS5cbiAqL1xuY29uc3QgaXNUcmVlRWRnZSA9ICh0cmVlLCB1LCB2KSA9PiB7XG4gICAgcmV0dXJuIHRyZWUuaGFzRWRnZSh1LCB2KTtcbn07XG4vKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgbm9kZSBpcyBkZXNjZW5kYW50IG9mIHRoZSByb290IG5vZGUgcGVyIHRoZVxuICogYXNzaWduZWQgbG93IGFuZCBsaW0gYXR0cmlidXRlcyBpbiB0aGUgdHJlZS5cbiAqL1xuY29uc3QgaXNEZXNjZW5kYW50ID0gKHRyZWUsIHZMYWJlbCwgcm9vdExhYmVsKSA9PiB7XG4gICAgcmV0dXJuIHJvb3RMYWJlbC5sb3cgPD0gdkxhYmVsLmxpbSAmJiB2TGFiZWwubGltIDw9IHJvb3RMYWJlbC5saW07XG59O1xuLy8gRXhwb3NlIHNvbWUgaW50ZXJuYWxzIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG5uZXR3b3JrU2ltcGxleC5pbml0TG93TGltVmFsdWVzID0gaW5pdExvd0xpbVZhbHVlcztcbm5ldHdvcmtTaW1wbGV4LmluaXRDdXRWYWx1ZXMgPSBpbml0Q3V0VmFsdWVzO1xubmV0d29ya1NpbXBsZXguY2FsY0N1dFZhbHVlID0gY2FsY0N1dFZhbHVlO1xubmV0d29ya1NpbXBsZXgubGVhdmVFZGdlID0gbGVhdmVFZGdlO1xubmV0d29ya1NpbXBsZXguZW50ZXJFZGdlID0gZW50ZXJFZGdlO1xubmV0d29ya1NpbXBsZXguZXhjaGFuZ2VFZGdlcyA9IGV4Y2hhbmdlRWRnZXM7XG5leHBvcnQgZGVmYXVsdCBuZXR3b3JrU2ltcGxleDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5ldHdvcmstc2ltcGxleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/rank/network-simplex.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/rank/util.js": /*!********************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/rank/util.js ***! \********************************************************************/ /*! exports provided: longestPath, longestPathWithLayer, slack, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"longestPath\", function() { return longestPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"longestPathWithLayer\", function() { return longestPathWithLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slack\", function() { return slack; });\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nconst longestPath = (g) => {\n var _a;\n const visited = {};\n const dfs = (v) => {\n var _a;\n const label = g.node(v);\n if (visited.hasOwnProperty(v)) {\n return label.rank;\n }\n visited[v] = true;\n const lengths = (_a = g.outEdges(v)) === null || _a === void 0 ? void 0 : _a.map((e) => {\n return (dfs(e.w) - g.edge(e).minlen) || Infinity;\n });\n let rank = Math.min(...lengths);\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n label.rank = rank;\n return rank;\n };\n (_a = g.sources()) === null || _a === void 0 ? void 0 : _a.forEach((source) => dfs(source));\n};\nconst longestPathWithLayer = (g) => {\n var _a;\n // 用longest path,找出最深的点\n const visited = {};\n let minRank = 0;\n const dfs = (v) => {\n var _a;\n const label = g.node(v);\n if (visited.hasOwnProperty(v)) {\n return label.rank;\n }\n visited[v] = true;\n const lengths = (_a = g.outEdges(v)) === null || _a === void 0 ? void 0 : _a.map((e) => {\n return (dfs(e.w) - g.edge(e).minlen) || Infinity;\n });\n let rank = Math.min(...lengths);\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n label.rank = rank;\n minRank = Math.min(label.rank, minRank);\n return label.rank;\n };\n (_a = g.sources()) === null || _a === void 0 ? void 0 : _a.forEach((source) => dfs(source));\n minRank += 1; // NOTE: 最小的层级是dummy root,+1\n // forward一遍,赋值层级\n const dfsForward = (v, nextRank) => {\n var _a;\n const label = g.node(v);\n const currRank = (!isNaN(label.layer) ? label.layer : nextRank);\n // 没有指定,取最大值\n if (label.rank === undefined || label.rank < currRank) {\n label.rank = currRank;\n }\n // DFS遍历子节点\n (_a = g.outEdges(v)) === null || _a === void 0 ? void 0 : _a.map((e) => {\n dfsForward(e.w, currRank + g.edge(e).minlen);\n });\n };\n // 指定层级的,更新下游\n g.nodes().forEach((n) => {\n const label = g.node(n);\n if (!isNaN(label.layer)) {\n dfsForward(n, label.layer); // 默认的dummy root所在层的rank是-1\n }\n else {\n label.rank -= minRank;\n }\n });\n};\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nconst slack = (g, e) => {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n longestPath,\n longestPathWithLayer,\n slack,\n});\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvcmFuay91dGlsLmpzPzlmZjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNxRDtBQUN0QztBQUNmO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZGFncmUvc3JjL3JhbmsvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBJbml0aWFsaXplcyByYW5rcyBmb3IgdGhlIGlucHV0IGdyYXBoIHVzaW5nIHRoZSBsb25nZXN0IHBhdGggYWxnb3JpdGhtLiBUaGlzXG4gKiBhbGdvcml0aG0gc2NhbGVzIHdlbGwgYW5kIGlzIGZhc3QgaW4gcHJhY3RpY2UsIGl0IHlpZWxkcyByYXRoZXIgcG9vclxuICogc29sdXRpb25zLiBOb2RlcyBhcmUgcHVzaGVkIHRvIHRoZSBsb3dlc3QgbGF5ZXIgcG9zc2libGUsIGxlYXZpbmcgdGhlIGJvdHRvbVxuICogcmFua3Mgd2lkZSBhbmQgbGVhdmluZyBlZGdlcyBsb25nZXIgdGhhbiBuZWNlc3NhcnkuIEhvd2V2ZXIsIGR1ZSB0byBpdHNcbiAqIHNwZWVkLCB0aGlzIGFsZ29yaXRobSBpcyBnb29kIGZvciBnZXR0aW5nIGFuIGluaXRpYWwgcmFua2luZyB0aGF0IGNhbiBiZSBmZWRcbiAqIGludG8gb3RoZXIgYWxnb3JpdGhtcy5cbiAqXG4gKiBUaGlzIGFsZ29yaXRobSBkb2VzIG5vdCBub3JtYWxpemUgbGF5ZXJzIGJlY2F1c2UgaXQgd2lsbCBiZSB1c2VkIGJ5IG90aGVyXG4gKiBhbGdvcml0aG1zIGluIG1vc3QgY2FzZXMuIElmIHVzaW5nIHRoaXMgYWxnb3JpdGhtIGRpcmVjdGx5LCBiZSBzdXJlIHRvXG4gKiBydW4gbm9ybWFsaXplIGF0IHRoZSBlbmQuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggaXMgYSBEQUcuXG4gKiAgICAyLiBJbnB1dCBncmFwaCBub2RlIGxhYmVscyBjYW4gYmUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gRWFjaCBub2RlIHdpbGwgYmUgYXNzaWduIGFuICh1bm5vcm1hbGl6ZWQpIFwicmFua1wiIHByb3BlcnR5LlxuICovXG5jb25zdCBsb25nZXN0UGF0aCA9IChnKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHZpc2l0ZWQgPSB7fTtcbiAgICBjb25zdCBkZnMgPSAodikgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gZy5ub2RlKHYpO1xuICAgICAgICBpZiAodmlzaXRlZC5oYXNPd25Qcm9wZXJ0eSh2KSkge1xuICAgICAgICAgICAgcmV0dXJuIGxhYmVsLnJhbms7XG4gICAgICAgIH1cbiAgICAgICAgdmlzaXRlZFt2XSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGxlbmd0aHMgPSAoX2EgPSBnLm91dEVkZ2VzKHYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWFwKChlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKGRmcyhlLncpIC0gZy5lZGdlKGUpLm1pbmxlbikgfHwgSW5maW5pdHk7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgcmFuayA9IE1hdGgubWluKC4uLmxlbmd0aHMpO1xuICAgICAgICBpZiAocmFuayA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIHx8IC8vIHJldHVybiB2YWx1ZSBvZiBfLm1hcChbXSkgZm9yIExvZGFzaCAzXG4gICAgICAgICAgICByYW5rID09PSB1bmRlZmluZWQgfHwgLy8gcmV0dXJuIHZhbHVlIG9mIF8ubWFwKFtdKSBmb3IgTG9kYXNoIDRcbiAgICAgICAgICAgIHJhbmsgPT09IG51bGwpIHsgLy8gcmV0dXJuIHZhbHVlIG9mIF8ubWFwKFtudWxsXSlcbiAgICAgICAgICAgIHJhbmsgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGxhYmVsLnJhbmsgPSByYW5rO1xuICAgICAgICByZXR1cm4gcmFuaztcbiAgICB9O1xuICAgIChfYSA9IGcuc291cmNlcygpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgoc291cmNlKSA9PiBkZnMoc291cmNlKSk7XG59O1xuY29uc3QgbG9uZ2VzdFBhdGhXaXRoTGF5ZXIgPSAoZykgPT4ge1xuICAgIHZhciBfYTtcbiAgICAvLyDnlKhsb25nZXN0IHBhdGjvvIzmib7lh7rmnIDmt7HnmoTngrlcbiAgICBjb25zdCB2aXNpdGVkID0ge307XG4gICAgbGV0IG1pblJhbmsgPSAwO1xuICAgIGNvbnN0IGRmcyA9ICh2KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBnLm5vZGUodik7XG4gICAgICAgIGlmICh2aXNpdGVkLmhhc093blByb3BlcnR5KHYpKSB7XG4gICAgICAgICAgICByZXR1cm4gbGFiZWwucmFuaztcbiAgICAgICAgfVxuICAgICAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbGVuZ3RocyA9IChfYSA9IGcub3V0RWRnZXModikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5tYXAoKGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZGZzKGUudykgLSBnLmVkZ2UoZSkubWlubGVuKSB8fCBJbmZpbml0eTtcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCByYW5rID0gTWF0aC5taW4oLi4ubGVuZ3Rocyk7XG4gICAgICAgIGlmIChyYW5rID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfHwgLy8gcmV0dXJuIHZhbHVlIG9mIF8ubWFwKFtdKSBmb3IgTG9kYXNoIDNcbiAgICAgICAgICAgIHJhbmsgPT09IHVuZGVmaW5lZCB8fCAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW10pIGZvciBMb2Rhc2ggNFxuICAgICAgICAgICAgcmFuayA9PT0gbnVsbCkgeyAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW251bGxdKVxuICAgICAgICAgICAgcmFuayA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgbGFiZWwucmFuayA9IHJhbms7XG4gICAgICAgIG1pblJhbmsgPSBNYXRoLm1pbihsYWJlbC5yYW5rLCBtaW5SYW5rKTtcbiAgICAgICAgcmV0dXJuIGxhYmVsLnJhbms7XG4gICAgfTtcbiAgICAoX2EgPSBnLnNvdXJjZXMoKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvckVhY2goKHNvdXJjZSkgPT4gZGZzKHNvdXJjZSkpO1xuICAgIG1pblJhbmsgKz0gMTsgLy8gTk9URTog5pyA5bCP55qE5bGC57qn5pivZHVtbXkgcm9vdO+8jCsxXG4gICAgLy8gZm9yd2FyZOS4gOmBje+8jOi1i+WAvOWxgue6p1xuICAgIGNvbnN0IGRmc0ZvcndhcmQgPSAodiwgbmV4dFJhbmspID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBsYWJlbCA9IGcubm9kZSh2KTtcbiAgICAgICAgY29uc3QgY3VyclJhbmsgPSAoIWlzTmFOKGxhYmVsLmxheWVyKSA/IGxhYmVsLmxheWVyIDogbmV4dFJhbmspO1xuICAgICAgICAvLyDmsqHmnInmjIflrprvvIzlj5bmnIDlpKflgLxcbiAgICAgICAgaWYgKGxhYmVsLnJhbmsgPT09IHVuZGVmaW5lZCB8fCBsYWJlbC5yYW5rIDwgY3VyclJhbmspIHtcbiAgICAgICAgICAgIGxhYmVsLnJhbmsgPSBjdXJyUmFuaztcbiAgICAgICAgfVxuICAgICAgICAvLyBERlPpgY3ljoblrZDoioLngrlcbiAgICAgICAgKF9hID0gZy5vdXRFZGdlcyh2KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgZGZzRm9yd2FyZChlLncsIGN1cnJSYW5rICsgZy5lZGdlKGUpLm1pbmxlbik7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8g5oyH5a6a5bGC57qn55qE77yM5pu05paw5LiL5ri4XG4gICAgZy5ub2RlcygpLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBnLm5vZGUobik7XG4gICAgICAgIGlmICghaXNOYU4obGFiZWwubGF5ZXIpKSB7XG4gICAgICAgICAgICBkZnNGb3J3YXJkKG4sIGxhYmVsLmxheWVyKTsgLy8g6buY6K6k55qEZHVtbXkgcm9vdOaJgOWcqOWxgueahHJhbmvmmK8tMVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGFiZWwucmFuayAtPSBtaW5SYW5rO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuLypcbiAqIFJldHVybnMgdGhlIGFtb3VudCBvZiBzbGFjayBmb3IgdGhlIGdpdmVuIGVkZ2UuIFRoZSBzbGFjayBpcyBkZWZpbmVkIGFzIHRoZVxuICogZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsZW5ndGggb2YgdGhlIGVkZ2UgYW5kIGl0cyBtaW5pbXVtIGxlbmd0aC5cbiAqL1xuY29uc3Qgc2xhY2sgPSAoZywgZSkgPT4ge1xuICAgIHJldHVybiBnLm5vZGUoZS53KS5yYW5rIC0gZy5ub2RlKGUudikucmFuayAtIGcuZWRnZShlKS5taW5sZW47XG59O1xuZXhwb3J0IHsgbG9uZ2VzdFBhdGgsIGxvbmdlc3RQYXRoV2l0aExheWVyLCBzbGFjaywgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBsb25nZXN0UGF0aCxcbiAgICBsb25nZXN0UGF0aFdpdGhMYXllcixcbiAgICBzbGFjayxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/rank/util.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/dagre/src/util.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/dagre/src/util.js ***! \***************************************************************/ /*! exports provided: addDummyNode, simplify, asNonCompoundGraph, successorWeights, predecessorWeights, intersectRect, buildLayerMatrix, normalizeRanks, removeEmptyRanks, addBorderNode, maxRank, partition, time, notime, zipObject, minBy, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addDummyNode\", function() { return addDummyNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"simplify\", function() { return simplify; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asNonCompoundGraph\", function() { return asNonCompoundGraph; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"successorWeights\", function() { return successorWeights; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"predecessorWeights\", function() { return predecessorWeights; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectRect\", function() { return intersectRect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildLayerMatrix\", function() { return buildLayerMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeRanks\", function() { return normalizeRanks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeEmptyRanks\", function() { return removeEmptyRanks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addBorderNode\", function() { return addBorderNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"maxRank\", function() { return maxRank; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"partition\", function() { return partition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"time\", function() { return time; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"notime\", function() { return notime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zipObject\", function() { return zipObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"minBy\", function() { return minBy; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/* harmony import */ var _graphlib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./graphlib */ \"./node_modules/@antv/layout/es/layout/dagre/src/graphlib.js\");\n\n\nconst Graph = _graphlib__WEBPACK_IMPORTED_MODULE_1__[\"default\"].Graph;\n/*\n * Adds a dummy node to the graph and return v.\n */\nconst addDummyNode = (g, type, attrs, name) => {\n let v;\n do {\n v = `${name}${Math.random()}`;\n } while (g.hasNode(v));\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n};\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nconst simplify = (g) => {\n const simplified = new Graph().setGraph(g.graph());\n g.nodes().forEach((v) => { simplified.setNode(v, g.node(v)); });\n g.edges().forEach((e) => {\n const simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n const label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n};\nconst asNonCompoundGraph = (g) => {\n const simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n g.nodes().forEach((v) => {\n var _a;\n if (!((_a = g.children(v)) === null || _a === void 0 ? void 0 : _a.length)) {\n simplified.setNode(v, g.node(v));\n }\n });\n g.edges().forEach((e) => simplified.setEdge(e, g.edge(e)));\n return simplified;\n};\nconst zipObject = (keys, values) => {\n const result = {};\n keys === null || keys === void 0 ? void 0 : keys.forEach((key, i) => {\n result[key] = values[i];\n });\n return result;\n};\nconst successorWeights = (g) => {\n const weightMap = g.nodes().map((v) => {\n var _a;\n const sucs = {};\n (_a = g.outEdges(v)) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return zipObject(g.nodes(), weightMap);\n};\nconst predecessorWeights = (g) => {\n const weightMap = g.nodes().map((v) => {\n var _a;\n const preds = {};\n (_a = g.inEdges(v)) === null || _a === void 0 ? void 0 : _a.forEach((e) => {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return zipObject(g.nodes(), weightMap);\n};\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nconst intersectRect = (rect, point) => {\n const x = rect.x;\n const y = rect.y;\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n const dx = point.x - x;\n const dy = point.y - y;\n let w = rect.width / 2;\n let h = rect.height / 2;\n if (!dx && !dy) {\n // throw new Error(\"Not possible to find intersection inside of the rectangle\");\n // completely overlapped\n return { x: 0, y: 0 };\n }\n let sx;\n let sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n }\n else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n};\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * const will produce a matrix with the ids of each node.\n */\nconst buildLayerMatrix = (g) => {\n const layering = [];\n const layeringNodes = [];\n const rankMax = maxRank(g) + 1;\n for (let i = 0; i < rankMax; i++) {\n layering.push([]);\n layeringNodes.push([]);\n }\n // const layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n g.nodes().forEach((v) => {\n const node = g.node(v);\n const rank = node.rank;\n if (rank !== undefined && layering[rank]) {\n layeringNodes[rank].push(v);\n }\n });\n layeringNodes === null || layeringNodes === void 0 ? void 0 : layeringNodes.forEach((layer, rank) => {\n layer === null || layer === void 0 ? void 0 : layer.sort((va, vb) => { var _a, _b; return ((_a = g.node(va)) === null || _a === void 0 ? void 0 : _a.order) - ((_b = g.node(vb)) === null || _b === void 0 ? void 0 : _b.order); });\n layer.forEach((v) => {\n layering[rank].push(v);\n });\n });\n return layering;\n};\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nconst normalizeRanks = (g) => {\n const nodeRanks = g.nodes().filter(v => g.node(v).rank !== undefined).map((v) => g.node(v).rank);\n const min = Math.min(...nodeRanks);\n g.nodes().forEach((v) => {\n const node = g.node(v);\n if (node.hasOwnProperty(\"rank\")) {\n if (!node.rank)\n node.rank = 0;\n node.rank -= min;\n }\n });\n};\nconst removeEmptyRanks = (g) => {\n // Ranks may not start at 0, so we need to offset them\n const nodeRanks = g.nodes().filter(v => g.node(v).rank !== undefined).map((v) => g.node(v).rank);\n const offset = Math.min(...nodeRanks);\n const layers = [];\n g.nodes().forEach((v) => {\n var _a;\n const rank = (((_a = g.node(v)) === null || _a === void 0 ? void 0 : _a.rank) || 0) - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n let delta = 0;\n const nodeRankFactor = g.graph().nodeRankFactor || 0;\n for (let i = 0; i < layers.length; i++) {\n const vs = layers[i];\n if (vs === undefined && i % nodeRankFactor !== 0) {\n --delta;\n }\n else if (delta) {\n vs === null || vs === void 0 ? void 0 : vs.forEach((v) => {\n if (!g.node(v).rank)\n g.node(v).rank = 0;\n g.node(v).rank += delta;\n });\n }\n }\n};\nconst addBorderNode = (g, prefix, rank, order) => {\n const node = {\n width: 0,\n height: 0\n };\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(rank) && Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(order)) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n};\nconst maxRank = (g) => {\n const nodeRanks = g.nodes().map((v) => {\n const rank = g.node(v).rank;\n if (rank !== undefined) {\n return rank;\n }\n return -Infinity;\n });\n return Math.max(...nodeRanks);\n};\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * const returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nconst partition = (collection, fn) => {\n const result = { lhs: [], rhs: [] };\n collection === null || collection === void 0 ? void 0 : collection.forEach((value) => {\n if (fn(value)) {\n result.lhs.push(value);\n }\n else {\n result.rhs.push(value);\n }\n });\n return result;\n};\n/*\n * Returns a new const that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nconst time = (name, fn) => {\n const start = Date.now();\n try {\n return fn();\n }\n finally {\n console.log(`${name} time: ${(Date.now() - start)}ms`);\n }\n};\nconst notime = (name, fn) => {\n return fn();\n};\nconst minBy = (array, func) => {\n let min = Infinity;\n let minObject;\n array === null || array === void 0 ? void 0 : array.forEach((item) => {\n const value = func(item);\n if (min > value) {\n min = value;\n minObject = item;\n }\n });\n return minObject;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n addDummyNode,\n simplify,\n asNonCompoundGraph,\n successorWeights,\n predecessorWeights,\n intersectRect,\n buildLayerMatrix,\n normalizeRanks,\n removeEmptyRanks,\n addBorderNode,\n maxRank,\n partition,\n time,\n notime,\n zipObject,\n minBy\n});\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvdXRpbC5qcz81M2I0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ1A7QUFDbEMsY0FBYyxpREFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLEtBQUssRUFBRSxjQUFjO0FBQ3BDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixrQ0FBa0MsRUFBRTtBQUNsRTtBQUNBLDBEQUEwRDtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLCtCQUErQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsS0FBSztBQUMvQyxLQUFLLG9CQUFvQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsYUFBYTtBQUNoQztBQUNBO0FBQ0E7QUFDQSxtRUFBbUUsV0FBVyxFQUFFO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLDhFQUE4RSxZQUFZLDhJQUE4SSxFQUFFO0FBQzFPO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxzREFBUSxVQUFVLHNEQUFRO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixLQUFLLFNBQVMscUJBQXFCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNrTztBQUNuTjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS9zcmMvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbCc7XG5pbXBvcnQgZ3JhcGhsaWIgZnJvbSAnLi9ncmFwaGxpYic7XG5jb25zdCBHcmFwaCA9IGdyYXBobGliLkdyYXBoO1xuLypcbiAqIEFkZHMgYSBkdW1teSBub2RlIHRvIHRoZSBncmFwaCBhbmQgcmV0dXJuIHYuXG4gKi9cbmNvbnN0IGFkZER1bW15Tm9kZSA9IChnLCB0eXBlLCBhdHRycywgbmFtZSkgPT4ge1xuICAgIGxldCB2O1xuICAgIGRvIHtcbiAgICAgICAgdiA9IGAke25hbWV9JHtNYXRoLnJhbmRvbSgpfWA7XG4gICAgfSB3aGlsZSAoZy5oYXNOb2RlKHYpKTtcbiAgICBhdHRycy5kdW1teSA9IHR5cGU7XG4gICAgZy5zZXROb2RlKHYsIGF0dHJzKTtcbiAgICByZXR1cm4gdjtcbn07XG4vKlxuICogUmV0dXJucyBhIG5ldyBncmFwaCB3aXRoIG9ubHkgc2ltcGxlIGVkZ2VzLiBIYW5kbGVzIGFnZ3JlZ2F0aW9uIG9mIGRhdGFcbiAqIGFzc29jaWF0ZWQgd2l0aCBtdWx0aS1lZGdlcy5cbiAqL1xuY29uc3Qgc2ltcGxpZnkgPSAoZykgPT4ge1xuICAgIGNvbnN0IHNpbXBsaWZpZWQgPSBuZXcgR3JhcGgoKS5zZXRHcmFwaChnLmdyYXBoKCkpO1xuICAgIGcubm9kZXMoKS5mb3JFYWNoKCh2KSA9PiB7IHNpbXBsaWZpZWQuc2V0Tm9kZSh2LCBnLm5vZGUodikpOyB9KTtcbiAgICBnLmVkZ2VzKCkuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICBjb25zdCBzaW1wbGVMYWJlbCA9IHNpbXBsaWZpZWQuZWRnZShlLnYsIGUudykgfHwgeyB3ZWlnaHQ6IDAsIG1pbmxlbjogMSB9O1xuICAgICAgICBjb25zdCBsYWJlbCA9IGcuZWRnZShlKTtcbiAgICAgICAgc2ltcGxpZmllZC5zZXRFZGdlKGUudiwgZS53LCB7XG4gICAgICAgICAgICB3ZWlnaHQ6IHNpbXBsZUxhYmVsLndlaWdodCArIGxhYmVsLndlaWdodCxcbiAgICAgICAgICAgIG1pbmxlbjogTWF0aC5tYXgoc2ltcGxlTGFiZWwubWlubGVuLCBsYWJlbC5taW5sZW4pXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBzaW1wbGlmaWVkO1xufTtcbmNvbnN0IGFzTm9uQ29tcG91bmRHcmFwaCA9IChnKSA9PiB7XG4gICAgY29uc3Qgc2ltcGxpZmllZCA9IG5ldyBHcmFwaCh7IG11bHRpZ3JhcGg6IGcuaXNNdWx0aWdyYXBoKCkgfSkuc2V0R3JhcGgoZy5ncmFwaCgpKTtcbiAgICBnLm5vZGVzKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghKChfYSA9IGcuY2hpbGRyZW4odikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpKSB7XG4gICAgICAgICAgICBzaW1wbGlmaWVkLnNldE5vZGUodiwgZy5ub2RlKHYpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGcuZWRnZXMoKS5mb3JFYWNoKChlKSA9PiBzaW1wbGlmaWVkLnNldEVkZ2UoZSwgZy5lZGdlKGUpKSk7XG4gICAgcmV0dXJuIHNpbXBsaWZpZWQ7XG59O1xuY29uc3QgemlwT2JqZWN0ID0gKGtleXMsIHZhbHVlcykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGtleXMgPT09IG51bGwgfHwga2V5cyA9PT0gdm9pZCAwID8gdm9pZCAwIDoga2V5cy5mb3JFYWNoKChrZXksIGkpID0+IHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZXNbaV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5jb25zdCBzdWNjZXNzb3JXZWlnaHRzID0gKGcpID0+IHtcbiAgICBjb25zdCB3ZWlnaHRNYXAgPSBnLm5vZGVzKCkubWFwKCh2KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc3VjcyA9IHt9O1xuICAgICAgICAoX2EgPSBnLm91dEVkZ2VzKHYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgc3Vjc1tlLnddID0gKHN1Y3NbZS53XSB8fCAwKSArIGcuZWRnZShlKS53ZWlnaHQ7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3VjcztcbiAgICB9KTtcbiAgICByZXR1cm4gemlwT2JqZWN0KGcubm9kZXMoKSwgd2VpZ2h0TWFwKTtcbn07XG5jb25zdCBwcmVkZWNlc3NvcldlaWdodHMgPSAoZykgPT4ge1xuICAgIGNvbnN0IHdlaWdodE1hcCA9IGcubm9kZXMoKS5tYXAoKHYpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBwcmVkcyA9IHt9O1xuICAgICAgICAoX2EgPSBnLmluRWRnZXModikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICBwcmVkc1tlLnZdID0gKHByZWRzW2Uudl0gfHwgMCkgKyBnLmVkZ2UoZSkud2VpZ2h0O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHByZWRzO1xuICAgIH0pO1xuICAgIHJldHVybiB6aXBPYmplY3QoZy5ub2RlcygpLCB3ZWlnaHRNYXApO1xufTtcbi8qXG4gKiBGaW5kcyB3aGVyZSBhIGxpbmUgc3RhcnRpbmcgYXQgcG9pbnQgKHt4LCB5fSkgd291bGQgaW50ZXJzZWN0IGEgcmVjdGFuZ2xlXG4gKiAoe3gsIHksIHdpZHRoLCBoZWlnaHR9KSBpZiBpdCB3ZXJlIHBvaW50aW5nIGF0IHRoZSByZWN0YW5nbGUncyBjZW50ZXIuXG4gKi9cbmNvbnN0IGludGVyc2VjdFJlY3QgPSAocmVjdCwgcG9pbnQpID0+IHtcbiAgICBjb25zdCB4ID0gcmVjdC54O1xuICAgIGNvbnN0IHkgPSByZWN0Lnk7XG4gICAgLy8gUmVjdGFuZ2xlIGludGVyc2VjdGlvbiBhbGdvcml0aG0gZnJvbTpcbiAgICAvLyBodHRwOi8vbWF0aC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTA4MTEzL2ZpbmQtZWRnZS1iZXR3ZWVuLXR3by1ib3hlc1xuICAgIGNvbnN0IGR4ID0gcG9pbnQueCAtIHg7XG4gICAgY29uc3QgZHkgPSBwb2ludC55IC0geTtcbiAgICBsZXQgdyA9IHJlY3Qud2lkdGggLyAyO1xuICAgIGxldCBoID0gcmVjdC5oZWlnaHQgLyAyO1xuICAgIGlmICghZHggJiYgIWR5KSB7XG4gICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihcIk5vdCBwb3NzaWJsZSB0byBmaW5kIGludGVyc2VjdGlvbiBpbnNpZGUgb2YgdGhlIHJlY3RhbmdsZVwiKTtcbiAgICAgICAgLy8gY29tcGxldGVseSBvdmVybGFwcGVkXG4gICAgICAgIHJldHVybiB7IHg6IDAsIHk6IDAgfTtcbiAgICB9XG4gICAgbGV0IHN4O1xuICAgIGxldCBzeTtcbiAgICBpZiAoTWF0aC5hYnMoZHkpICogdyA+IE1hdGguYWJzKGR4KSAqIGgpIHtcbiAgICAgICAgLy8gSW50ZXJzZWN0aW9uIGlzIHRvcCBvciBib3R0b20gb2YgcmVjdC5cbiAgICAgICAgaWYgKGR5IDwgMCkge1xuICAgICAgICAgICAgaCA9IC1oO1xuICAgICAgICB9XG4gICAgICAgIHN4ID0gaCAqIGR4IC8gZHk7XG4gICAgICAgIHN5ID0gaDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEludGVyc2VjdGlvbiBpcyBsZWZ0IG9yIHJpZ2h0IG9mIHJlY3QuXG4gICAgICAgIGlmIChkeCA8IDApIHtcbiAgICAgICAgICAgIHcgPSAtdztcbiAgICAgICAgfVxuICAgICAgICBzeCA9IHc7XG4gICAgICAgIHN5ID0gdyAqIGR5IC8gZHg7XG4gICAgfVxuICAgIHJldHVybiB7IHg6IHggKyBzeCwgeTogeSArIHN5IH07XG59O1xuLypcbiAqIEdpdmVuIGEgREFHIHdpdGggZWFjaCBub2RlIGFzc2lnbmVkIFwicmFua1wiIGFuZCBcIm9yZGVyXCIgcHJvcGVydGllcywgdGhpc1xuICogY29uc3Qgd2lsbCBwcm9kdWNlIGEgbWF0cml4IHdpdGggdGhlIGlkcyBvZiBlYWNoIG5vZGUuXG4gKi9cbmNvbnN0IGJ1aWxkTGF5ZXJNYXRyaXggPSAoZykgPT4ge1xuICAgIGNvbnN0IGxheWVyaW5nID0gW107XG4gICAgY29uc3QgbGF5ZXJpbmdOb2RlcyA9IFtdO1xuICAgIGNvbnN0IHJhbmtNYXggPSBtYXhSYW5rKGcpICsgMTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmtNYXg7IGkrKykge1xuICAgICAgICBsYXllcmluZy5wdXNoKFtdKTtcbiAgICAgICAgbGF5ZXJpbmdOb2Rlcy5wdXNoKFtdKTtcbiAgICB9XG4gICAgLy8gY29uc3QgbGF5ZXJpbmcgPSBfLm1hcChfLnJhbmdlKG1heFJhbmsoZykgKyAxKSwgZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfSk7XG4gICAgZy5ub2RlcygpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgICAgY29uc3QgcmFuayA9IG5vZGUucmFuaztcbiAgICAgICAgaWYgKHJhbmsgIT09IHVuZGVmaW5lZCAmJiBsYXllcmluZ1tyYW5rXSkge1xuICAgICAgICAgICAgbGF5ZXJpbmdOb2Rlc1tyYW5rXS5wdXNoKHYpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgbGF5ZXJpbmdOb2RlcyA9PT0gbnVsbCB8fCBsYXllcmluZ05vZGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXllcmluZ05vZGVzLmZvckVhY2goKGxheWVyLCByYW5rKSA9PiB7XG4gICAgICAgIGxheWVyID09PSBudWxsIHx8IGxheWVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXllci5zb3J0KCh2YSwgdmIpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuICgoX2EgPSBnLm5vZGUodmEpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub3JkZXIpIC0gKChfYiA9IGcubm9kZSh2YikpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5vcmRlcik7IH0pO1xuICAgICAgICBsYXllci5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBsYXllcmluZ1tyYW5rXS5wdXNoKHYpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbGF5ZXJpbmc7XG59O1xuLypcbiAqIEFkanVzdHMgdGhlIHJhbmtzIGZvciBhbGwgbm9kZXMgaW4gdGhlIGdyYXBoIHN1Y2ggdGhhdCBhbGwgbm9kZXMgdiBoYXZlXG4gKiByYW5rKHYpID49IDAgYW5kIGF0IGxlYXN0IG9uZSBub2RlIHcgaGFzIHJhbmsodykgPSAwLlxuICovXG5jb25zdCBub3JtYWxpemVSYW5rcyA9IChnKSA9PiB7XG4gICAgY29uc3Qgbm9kZVJhbmtzID0gZy5ub2RlcygpLmZpbHRlcih2ID0+IGcubm9kZSh2KS5yYW5rICE9PSB1bmRlZmluZWQpLm1hcCgodikgPT4gZy5ub2RlKHYpLnJhbmspO1xuICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLm5vZGVSYW5rcyk7XG4gICAgZy5ub2RlcygpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgICAgaWYgKG5vZGUuaGFzT3duUHJvcGVydHkoXCJyYW5rXCIpKSB7XG4gICAgICAgICAgICBpZiAoIW5vZGUucmFuaylcbiAgICAgICAgICAgICAgICBub2RlLnJhbmsgPSAwO1xuICAgICAgICAgICAgbm9kZS5yYW5rIC09IG1pbjtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbmNvbnN0IHJlbW92ZUVtcHR5UmFua3MgPSAoZykgPT4ge1xuICAgIC8vIFJhbmtzIG1heSBub3Qgc3RhcnQgYXQgMCwgc28gd2UgbmVlZCB0byBvZmZzZXQgdGhlbVxuICAgIGNvbnN0IG5vZGVSYW5rcyA9IGcubm9kZXMoKS5maWx0ZXIodiA9PiBnLm5vZGUodikucmFuayAhPT0gdW5kZWZpbmVkKS5tYXAoKHYpID0+IGcubm9kZSh2KS5yYW5rKTtcbiAgICBjb25zdCBvZmZzZXQgPSBNYXRoLm1pbiguLi5ub2RlUmFua3MpO1xuICAgIGNvbnN0IGxheWVycyA9IFtdO1xuICAgIGcubm9kZXMoKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgcmFuayA9ICgoKF9hID0gZy5ub2RlKHYpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmFuaykgfHwgMCkgLSBvZmZzZXQ7XG4gICAgICAgIGlmICghbGF5ZXJzW3JhbmtdKSB7XG4gICAgICAgICAgICBsYXllcnNbcmFua10gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBsYXllcnNbcmFua10ucHVzaCh2KTtcbiAgICB9KTtcbiAgICBsZXQgZGVsdGEgPSAwO1xuICAgIGNvbnN0IG5vZGVSYW5rRmFjdG9yID0gZy5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yIHx8IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgdnMgPSBsYXllcnNbaV07XG4gICAgICAgIGlmICh2cyA9PT0gdW5kZWZpbmVkICYmIGkgJSBub2RlUmFua0ZhY3RvciAhPT0gMCkge1xuICAgICAgICAgICAgLS1kZWx0YTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkZWx0YSkge1xuICAgICAgICAgICAgdnMgPT09IG51bGwgfHwgdnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZzLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWcubm9kZSh2KS5yYW5rKVxuICAgICAgICAgICAgICAgICAgICBnLm5vZGUodikucmFuayA9IDA7XG4gICAgICAgICAgICAgICAgZy5ub2RlKHYpLnJhbmsgKz0gZGVsdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5jb25zdCBhZGRCb3JkZXJOb2RlID0gKGcsIHByZWZpeCwgcmFuaywgb3JkZXIpID0+IHtcbiAgICBjb25zdCBub2RlID0ge1xuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICBpZiAoaXNOdW1iZXIocmFuaykgJiYgaXNOdW1iZXIob3JkZXIpKSB7XG4gICAgICAgIG5vZGUucmFuayA9IHJhbms7XG4gICAgICAgIG5vZGUub3JkZXIgPSBvcmRlcjtcbiAgICB9XG4gICAgcmV0dXJuIGFkZER1bW15Tm9kZShnLCBcImJvcmRlclwiLCBub2RlLCBwcmVmaXgpO1xufTtcbmNvbnN0IG1heFJhbmsgPSAoZykgPT4ge1xuICAgIGNvbnN0IG5vZGVSYW5rcyA9IGcubm9kZXMoKS5tYXAoKHYpID0+IHtcbiAgICAgICAgY29uc3QgcmFuayA9IGcubm9kZSh2KS5yYW5rO1xuICAgICAgICBpZiAocmFuayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmFuaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLUluZmluaXR5O1xuICAgIH0pO1xuICAgIHJldHVybiBNYXRoLm1heCguLi5ub2RlUmFua3MpO1xufTtcbi8qXG4gKiBQYXJ0aXRpb24gYSBjb2xsZWN0aW9uIGludG8gdHdvIGdyb3VwczogYGxoc2AgYW5kIGByaHNgLiBJZiB0aGUgc3VwcGxpZWRcbiAqIGNvbnN0IHJldHVybnMgdHJ1ZSBmb3IgYW4gZW50cnkgaXQgZ29lcyBpbnRvIGBsaHNgLiBPdGhlcndpc2UgaXQgZ29lc1xuICogaW50byBgcmhzLlxuICovXG5jb25zdCBwYXJ0aXRpb24gPSAoY29sbGVjdGlvbiwgZm4pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IGxoczogW10sIHJoczogW10gfTtcbiAgICBjb2xsZWN0aW9uID09PSBudWxsIHx8IGNvbGxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbGxlY3Rpb24uZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKGZuKHZhbHVlKSkge1xuICAgICAgICAgICAgcmVzdWx0Lmxocy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5yaHMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbi8qXG4gKiBSZXR1cm5zIGEgbmV3IGNvbnN0IHRoYXQgd3JhcHMgYGZuYCB3aXRoIGEgdGltZXIuIFRoZSB3cmFwcGVyIGxvZ3MgdGhlXG4gKiB0aW1lIGl0IHRha2VzIHRvIGV4ZWN1dGUgdGhlIGZ1bmN0aW9uLlxuICovXG5jb25zdCB0aW1lID0gKG5hbWUsIGZuKSA9PiB7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgY29uc29sZS5sb2coYCR7bmFtZX0gdGltZTogJHsoRGF0ZS5ub3coKSAtIHN0YXJ0KX1tc2ApO1xuICAgIH1cbn07XG5jb25zdCBub3RpbWUgPSAobmFtZSwgZm4pID0+IHtcbiAgICByZXR1cm4gZm4oKTtcbn07XG5jb25zdCBtaW5CeSA9IChhcnJheSwgZnVuYykgPT4ge1xuICAgIGxldCBtaW4gPSBJbmZpbml0eTtcbiAgICBsZXQgbWluT2JqZWN0O1xuICAgIGFycmF5ID09PSBudWxsIHx8IGFycmF5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcnJheS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZnVuYyhpdGVtKTtcbiAgICAgICAgaWYgKG1pbiA+IHZhbHVlKSB7XG4gICAgICAgICAgICBtaW4gPSB2YWx1ZTtcbiAgICAgICAgICAgIG1pbk9iamVjdCA9IGl0ZW07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbWluT2JqZWN0O1xufTtcbmV4cG9ydCB7IGFkZER1bW15Tm9kZSwgc2ltcGxpZnksIGFzTm9uQ29tcG91bmRHcmFwaCwgc3VjY2Vzc29yV2VpZ2h0cywgcHJlZGVjZXNzb3JXZWlnaHRzLCBpbnRlcnNlY3RSZWN0LCBidWlsZExheWVyTWF0cml4LCBub3JtYWxpemVSYW5rcywgcmVtb3ZlRW1wdHlSYW5rcywgYWRkQm9yZGVyTm9kZSwgbWF4UmFuaywgcGFydGl0aW9uLCB0aW1lLCBub3RpbWUsIHppcE9iamVjdCwgbWluQnkgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBhZGREdW1teU5vZGUsXG4gICAgc2ltcGxpZnksXG4gICAgYXNOb25Db21wb3VuZEdyYXBoLFxuICAgIHN1Y2Nlc3NvcldlaWdodHMsXG4gICAgcHJlZGVjZXNzb3JXZWlnaHRzLFxuICAgIGludGVyc2VjdFJlY3QsXG4gICAgYnVpbGRMYXllck1hdHJpeCxcbiAgICBub3JtYWxpemVSYW5rcyxcbiAgICByZW1vdmVFbXB0eVJhbmtzLFxuICAgIGFkZEJvcmRlck5vZGUsXG4gICAgbWF4UmFuayxcbiAgICBwYXJ0aXRpb24sXG4gICAgdGltZSxcbiAgICBub3RpbWUsXG4gICAgemlwT2JqZWN0LFxuICAgIG1pbkJ5XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/dagre/src/util.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/er/core.js": /*!********************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/er/core.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return layout; });\n/* harmony import */ var d3_force__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-force */ \"./node_modules/d3-force/src/index.js\");\n/* harmony import */ var _forceGrid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./forceGrid */ \"./node_modules/@antv/layout/es/layout/er/forceGrid.js\");\n/* harmony import */ var _mysqlWorkbench__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mysqlWorkbench */ \"./node_modules/@antv/layout/es/layout/er/mysqlWorkbench.js\");\n/* harmony import */ var _dagre__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dagre */ \"./node_modules/@antv/layout/es/layout/dagre.js\");\n\n\n\n\nfunction layout(data, options) {\n const { nodes, edges } = data;\n const width = options.width;\n const height = options.height;\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length))\n return Promise.resolve();\n // 筛选非叶子节点,做Dagre布局\n const noLeafNodes = [];\n nodes.forEach((node) => {\n const relateEdges = edges.filter((edge) => {\n return edge.source === node.id || edge.target === node.id;\n });\n if (relateEdges.length > 1) {\n const temp = Object.assign({}, node);\n delete temp.size;\n noLeafNodes.push(temp);\n }\n });\n const noLeafEdge = [];\n edges.forEach((edge) => {\n const sourceNode = noLeafNodes.find((node) => node.id === edge.source);\n const targetNode = noLeafNodes.find((node) => node.id === edge.target);\n if (sourceNode && targetNode) {\n noLeafEdge.push(edge);\n }\n });\n const graphLayout = new _dagre__WEBPACK_IMPORTED_MODULE_3__[\"DagreLayout\"]({\n type: 'dagre',\n ranksep: options.nodeMinGap,\n nodesep: options.nodeMinGap,\n });\n const { nodes: nodesTmp } = graphLayout.layout({\n nodes: noLeafNodes,\n edges: noLeafEdge,\n });\n // 布局后,坐标同步\n nodes.forEach((n) => {\n const found = (nodesTmp || []).find((temp) => temp.id === n.id);\n n.x = (found === null || found === void 0 ? void 0 : found.x) || width / 2;\n n.y = (found === null || found === void 0 ? void 0 : found.y) || height / 2;\n });\n const copyNodes = JSON.parse(JSON.stringify(nodes));\n const copyEdges = JSON.parse(JSON.stringify(edges));\n const simulation = d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceSimulation\"]().nodes(copyNodes)\n .force(\"link\", d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceLink\"](copyEdges).id((d) => d.id).distance((d) => {\n const edgeInfo = noLeafEdge.find((edge) => edge.source === d.source && edge.target === d.target);\n if (edgeInfo) {\n return 30;\n }\n return 20;\n }))\n .force(\"charge\", d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceManyBody\"]())\n .force(\"center\", d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceCenter\"](width / 2, height / 2))\n .force(\"x\", d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceX\"](width / 2))\n .force(\"y\", d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceY\"](height / 2))\n .alpha(0.3)\n .alphaDecay(0.08)\n .alphaMin(0.001);\n const layoutPromise = new Promise((resolve) => {\n simulation.on('end', () => {\n // 坐标信息同步到nodes,edges中\n nodes.forEach((node) => {\n const nodeInfo = copyNodes.find((item) => item.id === node.id);\n if (nodeInfo) {\n node.x = nodeInfo.x;\n node.y = nodeInfo.y;\n }\n });\n const minX = Math.min(...nodes.map((node) => node.x));\n const maxX = Math.max(...nodes.map((node) => node.x));\n const minY = Math.min(...nodes.map((node) => node.y));\n const maxY = Math.max(...nodes.map((node) => node.y));\n const scalex = width / (maxX - minX);\n const scaley = height / (maxY - minY);\n nodes.forEach((node) => {\n if (node.x !== undefined && scalex < 1) {\n node.x = (node.x - minX) * scalex;\n }\n if (node.y !== undefined && scaley < 1) {\n node.y = (node.y - minY) * scaley;\n }\n });\n // 这一步就执行缩小空间。且不考虑节点size\n nodes.forEach((node) => {\n node.sizeTemp = node.size;\n node.size = [10, 10];\n });\n Object(_mysqlWorkbench__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(nodes, edges);\n nodes.forEach((node) => {\n node.size = node.sizeTemp || [];\n delete node.sizeTemp;\n });\n // 进行网格对齐+节点大小扩增\n Object(_forceGrid__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n nodes,\n edges,\n }, options);\n resolve();\n });\n });\n return layoutPromise;\n}\n//# sourceMappingURL=core.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9lci9jb3JlLmpzP2NlY2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9DO0FBQ0E7QUFDVTtBQUNQO0FBQ3hCO0FBQ2YsV0FBVyxlQUFlO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsNEJBQTRCLGtEQUFXO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxXQUFXLGtCQUFrQjtBQUM3QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHVCQUF1Qix3REFBdUI7QUFDOUMsdUJBQXVCLGtEQUFpQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHlCQUF5QixzREFBcUI7QUFDOUMseUJBQXlCLG9EQUFtQjtBQUM1QyxvQkFBb0IsK0NBQWM7QUFDbEMsb0JBQW9CLCtDQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixZQUFZLCtEQUFjO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFlBQVksMERBQVM7QUFDckI7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZXIvY29yZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGQzRm9yY2UgZnJvbSAnZDMtZm9yY2UnO1xuaW1wb3J0IGZvcmNlR3JpZCBmcm9tICcuL2ZvcmNlR3JpZCc7XG5pbXBvcnQgbXlzcWxXb3JrYmVuY2ggZnJvbSAnLi9teXNxbFdvcmtiZW5jaCc7XG5pbXBvcnQgeyBEYWdyZUxheW91dCB9IGZyb20gJy4uL2RhZ3JlJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxheW91dChkYXRhLCBvcHRpb25zKSB7XG4gICAgY29uc3QgeyBub2RlcywgZWRnZXMgfSA9IGRhdGE7XG4gICAgY29uc3Qgd2lkdGggPSBvcHRpb25zLndpZHRoO1xuICAgIGNvbnN0IGhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0O1xuICAgIGlmICghKG5vZGVzID09PSBudWxsIHx8IG5vZGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2Rlcy5sZW5ndGgpKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgLy8g562b6YCJ6Z2e5Y+25a2Q6IqC54K577yM5YGaRGFncmXluIPlsYBcbiAgICBjb25zdCBub0xlYWZOb2RlcyA9IFtdO1xuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgcmVsYXRlRWRnZXMgPSBlZGdlcy5maWx0ZXIoKGVkZ2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZS5pZCB8fCBlZGdlLnRhcmdldCA9PT0gbm9kZS5pZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZWxhdGVFZGdlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBjb25zdCB0ZW1wID0gT2JqZWN0LmFzc2lnbih7fSwgbm9kZSk7XG4gICAgICAgICAgICBkZWxldGUgdGVtcC5zaXplO1xuICAgICAgICAgICAgbm9MZWFmTm9kZXMucHVzaCh0ZW1wKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG5vTGVhZkVkZ2UgPSBbXTtcbiAgICBlZGdlcy5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvdXJjZU5vZGUgPSBub0xlYWZOb2Rlcy5maW5kKChub2RlKSA9PiBub2RlLmlkID09PSBlZGdlLnNvdXJjZSk7XG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSBub0xlYWZOb2Rlcy5maW5kKChub2RlKSA9PiBub2RlLmlkID09PSBlZGdlLnRhcmdldCk7XG4gICAgICAgIGlmIChzb3VyY2VOb2RlICYmIHRhcmdldE5vZGUpIHtcbiAgICAgICAgICAgIG5vTGVhZkVkZ2UucHVzaChlZGdlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGdyYXBoTGF5b3V0ID0gbmV3IERhZ3JlTGF5b3V0KHtcbiAgICAgICAgdHlwZTogJ2RhZ3JlJyxcbiAgICAgICAgcmFua3NlcDogb3B0aW9ucy5ub2RlTWluR2FwLFxuICAgICAgICBub2Rlc2VwOiBvcHRpb25zLm5vZGVNaW5HYXAsXG4gICAgfSk7XG4gICAgY29uc3QgeyBub2Rlczogbm9kZXNUbXAgfSA9IGdyYXBoTGF5b3V0LmxheW91dCh7XG4gICAgICAgIG5vZGVzOiBub0xlYWZOb2RlcyxcbiAgICAgICAgZWRnZXM6IG5vTGVhZkVkZ2UsXG4gICAgfSk7XG4gICAgLy8g5biD5bGA5ZCO77yM5Z2Q5qCH5ZCM5q2lXG4gICAgbm9kZXMuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICBjb25zdCBmb3VuZCA9IChub2Rlc1RtcCB8fCBbXSkuZmluZCgodGVtcCkgPT4gdGVtcC5pZCA9PT0gbi5pZCk7XG4gICAgICAgIG4ueCA9IChmb3VuZCA9PT0gbnVsbCB8fCBmb3VuZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZm91bmQueCkgfHwgd2lkdGggLyAyO1xuICAgICAgICBuLnkgPSAoZm91bmQgPT09IG51bGwgfHwgZm91bmQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZvdW5kLnkpIHx8IGhlaWdodCAvIDI7XG4gICAgfSk7XG4gICAgY29uc3QgY29weU5vZGVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShub2RlcykpO1xuICAgIGNvbnN0IGNvcHlFZGdlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWRnZXMpKTtcbiAgICBjb25zdCBzaW11bGF0aW9uID0gZDNGb3JjZS5mb3JjZVNpbXVsYXRpb24oKS5ub2Rlcyhjb3B5Tm9kZXMpXG4gICAgICAgIC5mb3JjZShcImxpbmtcIiwgZDNGb3JjZS5mb3JjZUxpbmsoY29weUVkZ2VzKS5pZCgoZCkgPT4gZC5pZCkuZGlzdGFuY2UoKGQpID0+IHtcbiAgICAgICAgY29uc3QgZWRnZUluZm8gPSBub0xlYWZFZGdlLmZpbmQoKGVkZ2UpID0+IGVkZ2Uuc291cmNlID09PSBkLnNvdXJjZSAmJiBlZGdlLnRhcmdldCA9PT0gZC50YXJnZXQpO1xuICAgICAgICBpZiAoZWRnZUluZm8pIHtcbiAgICAgICAgICAgIHJldHVybiAzMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMjA7XG4gICAgfSkpXG4gICAgICAgIC5mb3JjZShcImNoYXJnZVwiLCBkM0ZvcmNlLmZvcmNlTWFueUJvZHkoKSlcbiAgICAgICAgLmZvcmNlKFwiY2VudGVyXCIsIGQzRm9yY2UuZm9yY2VDZW50ZXIod2lkdGggLyAyLCBoZWlnaHQgLyAyKSlcbiAgICAgICAgLmZvcmNlKFwieFwiLCBkM0ZvcmNlLmZvcmNlWCh3aWR0aCAvIDIpKVxuICAgICAgICAuZm9yY2UoXCJ5XCIsIGQzRm9yY2UuZm9yY2VZKGhlaWdodCAvIDIpKVxuICAgICAgICAuYWxwaGEoMC4zKVxuICAgICAgICAuYWxwaGFEZWNheSgwLjA4KVxuICAgICAgICAuYWxwaGFNaW4oMC4wMDEpO1xuICAgIGNvbnN0IGxheW91dFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBzaW11bGF0aW9uLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICAvLyDlnZDmoIfkv6Hmga/lkIzmraXliLBub2RlcyxlZGdlc+S4rVxuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVJbmZvID0gY29weU5vZGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG5vZGUuaWQpO1xuICAgICAgICAgICAgICAgIGlmIChub2RlSW5mbykge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnggPSBub2RlSW5mby54O1xuICAgICAgICAgICAgICAgICAgICBub2RlLnkgPSBub2RlSW5mby55O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgbWluWCA9IE1hdGgubWluKC4uLm5vZGVzLm1hcCgobm9kZSkgPT4gbm9kZS54KSk7XG4gICAgICAgICAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgoLi4ubm9kZXMubWFwKChub2RlKSA9PiBub2RlLngpKTtcbiAgICAgICAgICAgIGNvbnN0IG1pblkgPSBNYXRoLm1pbiguLi5ub2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUueSkpO1xuICAgICAgICAgICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KC4uLm5vZGVzLm1hcCgobm9kZSkgPT4gbm9kZS55KSk7XG4gICAgICAgICAgICBjb25zdCBzY2FsZXggPSB3aWR0aCAvIChtYXhYIC0gbWluWCk7XG4gICAgICAgICAgICBjb25zdCBzY2FsZXkgPSBoZWlnaHQgLyAobWF4WSAtIG1pblkpO1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChub2RlLnggIT09IHVuZGVmaW5lZCAmJiBzY2FsZXggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUueCA9IChub2RlLnggLSBtaW5YKSAqIHNjYWxleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUueSAhPT0gdW5kZWZpbmVkICYmIHNjYWxleSA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS55ID0gKG5vZGUueSAtIG1pblkpICogc2NhbGV5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8g6L+Z5LiA5q2l5bCx5omn6KGM57yp5bCP56m66Ze044CC5LiU5LiN6ICD6JmR6IqC54K5c2l6ZVxuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIG5vZGUuc2l6ZVRlbXAgPSBub2RlLnNpemU7XG4gICAgICAgICAgICAgICAgbm9kZS5zaXplID0gWzEwLCAxMF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG15c3FsV29ya2JlbmNoKG5vZGVzLCBlZGdlcyk7XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgbm9kZS5zaXplID0gbm9kZS5zaXplVGVtcCB8fCBbXTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbm9kZS5zaXplVGVtcDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8g6L+b6KGM572R5qC85a+56b2QK+iKgueCueWkp+Wwj+aJqeWinlxuICAgICAgICAgICAgZm9yY2VHcmlkKHtcbiAgICAgICAgICAgICAgICBub2RlcyxcbiAgICAgICAgICAgICAgICBlZGdlcyxcbiAgICAgICAgICAgIH0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbGF5b3V0UHJvbWlzZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvcmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/er/core.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/er/forceGrid.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/er/forceGrid.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return layout; });\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./grid */ \"./node_modules/@antv/layout/es/layout/er/grid.js\");\n\nfunction layout(data, options) {\n if (!data.nodes || data.nodes.length === 0)\n return data;\n const width = options.width;\n const height = options.height;\n const nodeMinGap = options.nodeMinGap;\n // 2. 网格布局\n let CELL_W = 10000;\n let CELL_H = 10000;\n data.nodes.forEach((node) => {\n const nodeWidth = node.size[0] || 50;\n const nodeHeight = node.size[1] || 50;\n CELL_W = Math.min(nodeWidth, CELL_W);\n CELL_H = Math.min(nodeHeight, CELL_H);\n });\n const grid = new _grid__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n grid.init(width, height, {\n CELL_H,\n CELL_W,\n });\n data.nodes.forEach((d) => {\n const gridpoint = grid.occupyNearest(d);\n if (gridpoint) {\n gridpoint.node = {\n id: d.id,\n size: d.size,\n };\n d.x = gridpoint.x;\n d.y = gridpoint.y;\n d.dx = gridpoint.dx;\n d.dy = gridpoint.dy;\n }\n });\n // 加入节点size\n for (let i = 0; i < data.nodes.length; i++) {\n // 节点宽度大于网格宽度,则往当前网格的右边插入列\n const node = data.nodes[i];\n const result = grid.findGridByNodeId(node.id);\n if (!result)\n throw new Error(\"can not find node cell\");\n const { column, row } = result;\n if ((node.size[0] + nodeMinGap) > CELL_W) {\n const addGridSize = Math.ceil((node.size[0] + nodeMinGap) / CELL_W) - 1;\n let realAdd = addGridSize;\n // 优化,假设同一列,不同行存在两个size为2的节点,遍历到第一个节点的时候,会往右插入两列,遍历到第二个节点,又往右插入。就会导致多余的网格\n for (let j = 0; j < addGridSize; j++) {\n const hasColumn = grid.additionColumn.indexOf(column + j + 1) > -1;\n if (hasColumn && !grid.cells[column + j + 1][row].node) {\n realAdd--;\n }\n else {\n break;\n }\n }\n grid.insertColumn(column, realAdd);\n }\n // 节点高度大于网格宽度,则往当前网格的下边插入行\n if ((node.size[1] + nodeMinGap) > CELL_H) {\n const addGridSize = Math.ceil((node.size[1] + nodeMinGap) / CELL_H) - 1;\n let realAdd = addGridSize;\n for (let j = 0; j < addGridSize; j++) {\n const hasColumn = grid.additionRow.indexOf(row + j + 1) > -1;\n if (hasColumn && !grid.cells[column][row + j + 1].node) {\n realAdd--;\n }\n else {\n break;\n }\n }\n grid.insertRow(row, realAdd);\n }\n }\n // 同步节点坐标\n for (let i = 0; i < grid.columnNum; i++) {\n for (let j = 0; j < grid.rowNum; j++) {\n const cell = grid.cells[i][j];\n if (cell.node) {\n const node = data.nodes.find((node) => { var _a; return node.id === ((_a = cell === null || cell === void 0 ? void 0 : cell.node) === null || _a === void 0 ? void 0 : _a.id); });\n if (node) {\n node.x = cell.x + node.size[0] / 2;\n node.y = cell.y + node.size[1] / 2;\n }\n }\n }\n }\n}\n//# sourceMappingURL=forceGrid.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9lci9mb3JjZUdyaWQuanM/MmYyZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBMEI7QUFDWDtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHFCQUFxQiw2Q0FBSTtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUJBQW1CLHVCQUF1QjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxjQUFjO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGlCQUFpQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGlCQUFpQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDLHVCQUF1QixpQkFBaUI7QUFDeEM7QUFDQTtBQUNBLHdEQUF3RCxRQUFRLDhIQUE4SCxFQUFFO0FBQ2hNO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2VyL2ZvcmNlR3JpZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHcmlkIGZyb20gJy4vZ3JpZCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXlvdXQoZGF0YSwgb3B0aW9ucykge1xuICAgIGlmICghZGF0YS5ub2RlcyB8fCBkYXRhLm5vZGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgY29uc3Qgd2lkdGggPSBvcHRpb25zLndpZHRoO1xuICAgIGNvbnN0IGhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0O1xuICAgIGNvbnN0IG5vZGVNaW5HYXAgPSBvcHRpb25zLm5vZGVNaW5HYXA7XG4gICAgLy8gMi4g572R5qC85biD5bGAXG4gICAgbGV0IENFTExfVyA9IDEwMDAwO1xuICAgIGxldCBDRUxMX0ggPSAxMDAwMDtcbiAgICBkYXRhLm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZVdpZHRoID0gbm9kZS5zaXplWzBdIHx8IDUwO1xuICAgICAgICBjb25zdCBub2RlSGVpZ2h0ID0gbm9kZS5zaXplWzFdIHx8IDUwO1xuICAgICAgICBDRUxMX1cgPSBNYXRoLm1pbihub2RlV2lkdGgsIENFTExfVyk7XG4gICAgICAgIENFTExfSCA9IE1hdGgubWluKG5vZGVIZWlnaHQsIENFTExfSCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ3JpZCA9IG5ldyBHcmlkKCk7XG4gICAgZ3JpZC5pbml0KHdpZHRoLCBoZWlnaHQsIHtcbiAgICAgICAgQ0VMTF9ILFxuICAgICAgICBDRUxMX1csXG4gICAgfSk7XG4gICAgZGF0YS5ub2Rlcy5mb3JFYWNoKChkKSA9PiB7XG4gICAgICAgIGNvbnN0IGdyaWRwb2ludCA9IGdyaWQub2NjdXB5TmVhcmVzdChkKTtcbiAgICAgICAgaWYgKGdyaWRwb2ludCkge1xuICAgICAgICAgICAgZ3JpZHBvaW50Lm5vZGUgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IGQuaWQsXG4gICAgICAgICAgICAgICAgc2l6ZTogZC5zaXplLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGQueCA9IGdyaWRwb2ludC54O1xuICAgICAgICAgICAgZC55ID0gZ3JpZHBvaW50Lnk7XG4gICAgICAgICAgICBkLmR4ID0gZ3JpZHBvaW50LmR4O1xuICAgICAgICAgICAgZC5keSA9IGdyaWRwb2ludC5keTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vIOWKoOWFpeiKgueCuXNpemVcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gIOiKgueCueWuveW6puWkp+S6jue9keagvOWuveW6pu+8jOWImeW+gOW9k+WJjee9keagvOeahOWPs+i+ueaPkuWFpeWIl1xuICAgICAgICBjb25zdCBub2RlID0gZGF0YS5ub2Rlc1tpXTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZ3JpZC5maW5kR3JpZEJ5Tm9kZUlkKG5vZGUuaWQpO1xuICAgICAgICBpZiAoIXJlc3VsdClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhbiBub3QgZmluZCBub2RlIGNlbGxcIik7XG4gICAgICAgIGNvbnN0IHsgY29sdW1uLCByb3cgfSA9IHJlc3VsdDtcbiAgICAgICAgaWYgKChub2RlLnNpemVbMF0gKyBub2RlTWluR2FwKSA+IENFTExfVykge1xuICAgICAgICAgICAgY29uc3QgYWRkR3JpZFNpemUgPSBNYXRoLmNlaWwoKG5vZGUuc2l6ZVswXSArIG5vZGVNaW5HYXApIC8gQ0VMTF9XKSAtIDE7XG4gICAgICAgICAgICBsZXQgcmVhbEFkZCA9IGFkZEdyaWRTaXplO1xuICAgICAgICAgICAgLy8g5LyY5YyW77yM5YGH6K6+5ZCM5LiA5YiX77yM5LiN5ZCM6KGM5a2Y5Zyo5Lik5Liqc2l6ZeS4ujLnmoToioLngrnvvIzpgY3ljobliLDnrKzkuIDkuKroioLngrnnmoTml7blgJnvvIzkvJrlvoDlj7Pmj5LlhaXkuKTliJfvvIzpgY3ljobliLDnrKzkuozkuKroioLngrnvvIzlj4jlvoDlj7Pmj5LlhaXjgILlsLHkvJrlr7zoh7TlpJrkvZnnmoTnvZHmoLxcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYWRkR3JpZFNpemU7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0NvbHVtbiA9IGdyaWQuYWRkaXRpb25Db2x1bW4uaW5kZXhPZihjb2x1bW4gKyBqICsgMSkgPiAtMTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzQ29sdW1uICYmICFncmlkLmNlbGxzW2NvbHVtbiArIGogKyAxXVtyb3ddLm5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhbEFkZC0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JpZC5pbnNlcnRDb2x1bW4oY29sdW1uLCByZWFsQWRkKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDoioLngrnpq5jluqblpKfkuo7nvZHmoLzlrr3luqbvvIzliJnlvoDlvZPliY3nvZHmoLznmoTkuIvovrnmj5LlhaXooYxcbiAgICAgICAgaWYgKChub2RlLnNpemVbMV0gKyBub2RlTWluR2FwKSA+IENFTExfSCkge1xuICAgICAgICAgICAgY29uc3QgYWRkR3JpZFNpemUgPSBNYXRoLmNlaWwoKG5vZGUuc2l6ZVsxXSArIG5vZGVNaW5HYXApIC8gQ0VMTF9IKSAtIDE7XG4gICAgICAgICAgICBsZXQgcmVhbEFkZCA9IGFkZEdyaWRTaXplO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhZGRHcmlkU2l6ZTsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzQ29sdW1uID0gZ3JpZC5hZGRpdGlvblJvdy5pbmRleE9mKHJvdyArIGogKyAxKSA+IC0xO1xuICAgICAgICAgICAgICAgIGlmIChoYXNDb2x1bW4gJiYgIWdyaWQuY2VsbHNbY29sdW1uXVtyb3cgKyBqICsgMV0ubm9kZSkge1xuICAgICAgICAgICAgICAgICAgICByZWFsQWRkLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmlkLmluc2VydFJvdyhyb3csIHJlYWxBZGQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIOWQjOatpeiKgueCueWdkOagh1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JpZC5jb2x1bW5OdW07IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGdyaWQucm93TnVtOyBqKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGwgPSBncmlkLmNlbGxzW2ldW2pdO1xuICAgICAgICAgICAgaWYgKGNlbGwubm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkYXRhLm5vZGVzLmZpbmQoKG5vZGUpID0+IHsgdmFyIF9hOyByZXR1cm4gbm9kZS5pZCA9PT0gKChfYSA9IGNlbGwgPT09IG51bGwgfHwgY2VsbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2VsbC5ub2RlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaWQpOyB9KTtcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnggPSBjZWxsLnggKyBub2RlLnNpemVbMF0gLyAyO1xuICAgICAgICAgICAgICAgICAgICBub2RlLnkgPSBjZWxsLnkgKyBub2RlLnNpemVbMV0gLyAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcmNlR3JpZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/er/forceGrid.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/er/grid.js": /*!********************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/er/grid.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Grid; });\nclass Grid {\n constructor() {\n this.cells = [];\n this.columnNum = 0;\n this.rowNum = 0;\n this.additionColumn = [];\n this.additionRow = [];\n }\n init(width, height, gridSize) {\n this.cells = [];\n this.CELL_W = gridSize.CELL_W || Grid.DEFAULT_CELL_W;\n this.CELL_H = gridSize.CELL_H || Grid.DEFAULT_CELL_H;\n this.columnNum = Math.ceil(width / this.CELL_W);\n this.rowNum = Math.ceil(height / this.CELL_H);\n Grid.MIN_DIST = Math.pow(width, 2) + Math.pow(height, 2);\n for (let i = 0; i < this.columnNum; i++) {\n const tmp = [];\n for (let j = 0; j < this.rowNum; j++) {\n const cell = {\n dx: i,\n dy: j,\n x: i * this.CELL_W,\n y: j * this.CELL_H,\n occupied: false\n };\n tmp.push(cell);\n }\n this.cells.push(tmp);\n }\n }\n findGridByNodeId(nodeId) {\n var _a, _b;\n for (let i = 0; i < this.columnNum; i++) {\n for (let j = 0; j < this.rowNum; j++) {\n if (this.cells[i][j].node) {\n if (((_b = (_a = this.cells[i][j]) === null || _a === void 0 ? void 0 : _a.node) === null || _b === void 0 ? void 0 : _b.id) === nodeId) {\n return { column: i, row: j };\n }\n }\n }\n }\n return null;\n }\n sqdist(a, b) {\n return Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2);\n }\n occupyNearest(p) {\n let minDist = Grid.MIN_DIST;\n let d;\n let candidate = null;\n for (let i = 0; i < this.columnNum; i++) {\n for (let j = 0; j < this.rowNum; j++) {\n if (!this.cells[i][j].occupied && (d = this.sqdist(p, this.cells[i][j])) < minDist) {\n minDist = d;\n candidate = this.cells[i][j];\n }\n }\n }\n if (candidate) {\n candidate.occupied = true;\n }\n return candidate;\n }\n insertColumn(columnIndex, length) {\n if (length <= 0)\n return;\n // 插入空列\n for (let i = 0; i < length; i++) {\n this.cells[i + this.columnNum] = [];\n for (let j = 0; j < this.rowNum; j++) {\n this.cells[i + this.columnNum][j] = {\n dx: i,\n dy: j,\n x: i * this.CELL_W,\n y: j * this.CELL_H,\n occupied: false,\n node: null,\n };\n }\n }\n // 交换数据\n for (let i = (this.columnNum - 1); i > columnIndex; i--) {\n for (let j = 0; j < this.rowNum; j++) {\n this.cells[i + length][j] = Object.assign(Object.assign({}, this.cells[i][j]), { x: (i + length) * this.CELL_W, y: j * this.CELL_H });\n this.cells[i][j] = {\n x: i * this.CELL_W,\n y: j * this.CELL_H,\n occupied: true,\n node: null,\n };\n }\n }\n // 已有行列的处理\n for (let j = 0; j < this.additionColumn.length; j++) {\n if (this.additionColumn[j] >= columnIndex) {\n this.additionColumn[j] += length;\n }\n }\n // 记录新增的行列\n for (let i = 0; i < length; i++) {\n this.additionColumn.push(columnIndex + i + 1);\n }\n this.columnNum += length;\n }\n insertRow(rowIndex, length) {\n if (length <= 0)\n return;\n // 插入空行\n for (let j = 0; j < length; j++) {\n for (let i = 0; i < this.columnNum; i++) {\n this.cells[i][j + this.rowNum] = {\n dx: i,\n dy: j,\n x: i * this.CELL_W,\n y: j * this.CELL_H,\n occupied: false,\n node: null,\n };\n }\n }\n // 交换数据\n for (let i = 0; i < this.columnNum; i++) {\n for (let j = (this.rowNum - 1); j > rowIndex; j--) {\n this.cells[i][j + length] = Object.assign(Object.assign({}, this.cells[i][j]), { dx: i, dy: j + length, x: i * this.CELL_W, y: (j + length) * this.CELL_H });\n this.cells[i][j] = {\n dx: i,\n dy: j,\n x: i * this.CELL_W,\n y: j * this.CELL_H,\n occupied: false,\n node: null,\n };\n }\n }\n // 已有行列的处理\n for (let j = 0; j < this.additionRow.length; j++) {\n if (this.additionRow[j] >= rowIndex) {\n this.additionRow[j] += length;\n }\n }\n // 记录新增的行列\n for (let i = 0; i < length; i++) {\n this.additionRow.push(rowIndex + i + 1);\n }\n this.rowNum += length;\n }\n getNodes() {\n const nodes = [];\n for (let i = 0; i < this.columnNum; i++) {\n for (let j = 0; j < this.rowNum; j++) {\n if (this.cells[i][j].node) {\n nodes.push(this.cells[i][j]);\n }\n }\n }\n return nodes;\n }\n}\nGrid.MIN_DIST = 50;\nGrid.DEFAULT_CELL_W = 80;\nGrid.DEFAULT_CELL_H = 80;\n//# sourceMappingURL=grid.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9lci9ncmlkLmpzP2EzNjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixvQkFBb0I7QUFDM0M7QUFDQSwyQkFBMkIsaUJBQWlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsb0JBQW9CO0FBQzNDLDJCQUEyQixpQkFBaUI7QUFDNUM7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixvQkFBb0I7QUFDM0MsMkJBQTJCLGlCQUFpQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsWUFBWTtBQUNuQztBQUNBLDJCQUEyQixpQkFBaUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxpQkFBaUI7QUFDM0QsMkJBQTJCLGlCQUFpQjtBQUM1QywwRUFBMEUsc0JBQXNCLG9EQUFvRDtBQUNwSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZ0NBQWdDO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsWUFBWTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFlBQVk7QUFDbkMsMkJBQTJCLG9CQUFvQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9CQUFvQjtBQUMzQywyQ0FBMkMsY0FBYztBQUN6RCwwRUFBMEUsc0JBQXNCLDJFQUEyRTtBQUMzSztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDZCQUE2QjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFlBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9CQUFvQjtBQUMzQywyQkFBMkIsaUJBQWlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2VyL2dyaWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBHcmlkIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5jZWxscyA9IFtdO1xuICAgICAgICB0aGlzLmNvbHVtbk51bSA9IDA7XG4gICAgICAgIHRoaXMucm93TnVtID0gMDtcbiAgICAgICAgdGhpcy5hZGRpdGlvbkNvbHVtbiA9IFtdO1xuICAgICAgICB0aGlzLmFkZGl0aW9uUm93ID0gW107XG4gICAgfVxuICAgIGluaXQod2lkdGgsIGhlaWdodCwgZ3JpZFNpemUpIHtcbiAgICAgICAgdGhpcy5jZWxscyA9IFtdO1xuICAgICAgICB0aGlzLkNFTExfVyA9IGdyaWRTaXplLkNFTExfVyB8fCBHcmlkLkRFRkFVTFRfQ0VMTF9XO1xuICAgICAgICB0aGlzLkNFTExfSCA9IGdyaWRTaXplLkNFTExfSCB8fCBHcmlkLkRFRkFVTFRfQ0VMTF9IO1xuICAgICAgICB0aGlzLmNvbHVtbk51bSA9IE1hdGguY2VpbCh3aWR0aCAvIHRoaXMuQ0VMTF9XKTtcbiAgICAgICAgdGhpcy5yb3dOdW0gPSBNYXRoLmNlaWwoaGVpZ2h0IC8gdGhpcy5DRUxMX0gpO1xuICAgICAgICBHcmlkLk1JTl9ESVNUID0gTWF0aC5wb3cod2lkdGgsIDIpICsgTWF0aC5wb3coaGVpZ2h0LCAyKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbk51bTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0bXAgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5yb3dOdW07IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGwgPSB7XG4gICAgICAgICAgICAgICAgICAgIGR4OiBpLFxuICAgICAgICAgICAgICAgICAgICBkeTogaixcbiAgICAgICAgICAgICAgICAgICAgeDogaSAqIHRoaXMuQ0VMTF9XLFxuICAgICAgICAgICAgICAgICAgICB5OiBqICogdGhpcy5DRUxMX0gsXG4gICAgICAgICAgICAgICAgICAgIG9jY3VwaWVkOiBmYWxzZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdG1wLnB1c2goY2VsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNlbGxzLnB1c2godG1wKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kR3JpZEJ5Tm9kZUlkKG5vZGVJZCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uTnVtOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5yb3dOdW07IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNlbGxzW2ldW2pdLm5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2IgPSAoX2EgPSB0aGlzLmNlbGxzW2ldW2pdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eubm9kZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmlkKSA9PT0gbm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBjb2x1bW46IGksIHJvdzogaiB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBzcWRpc3QoYSwgYikge1xuICAgICAgICByZXR1cm4gTWF0aC5wb3coYS54IC0gYi54LCAyKSArIE1hdGgucG93KGEueSAtIGIueSwgMik7XG4gICAgfVxuICAgIG9jY3VweU5lYXJlc3QocCkge1xuICAgICAgICBsZXQgbWluRGlzdCA9IEdyaWQuTUlOX0RJU1Q7XG4gICAgICAgIGxldCBkO1xuICAgICAgICBsZXQgY2FuZGlkYXRlID0gbnVsbDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbk51bTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMucm93TnVtOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2VsbHNbaV1bal0ub2NjdXBpZWQgJiYgKGQgPSB0aGlzLnNxZGlzdChwLCB0aGlzLmNlbGxzW2ldW2pdKSkgPCBtaW5EaXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbkRpc3QgPSBkO1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSB0aGlzLmNlbGxzW2ldW2pdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICBjYW5kaWRhdGUub2NjdXBpZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICAgIGluc2VydENvbHVtbihjb2x1bW5JbmRleCwgbGVuZ3RoKSB7XG4gICAgICAgIGlmIChsZW5ndGggPD0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy8g5o+S5YWl56m65YiXXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuY2VsbHNbaSArIHRoaXMuY29sdW1uTnVtXSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLnJvd051bTsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZWxsc1tpICsgdGhpcy5jb2x1bW5OdW1dW2pdID0ge1xuICAgICAgICAgICAgICAgICAgICBkeDogaSxcbiAgICAgICAgICAgICAgICAgICAgZHk6IGosXG4gICAgICAgICAgICAgICAgICAgIHg6IGkgKiB0aGlzLkNFTExfVyxcbiAgICAgICAgICAgICAgICAgICAgeTogaiAqIHRoaXMuQ0VMTF9ILFxuICAgICAgICAgICAgICAgICAgICBvY2N1cGllZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IG51bGwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyDkuqTmjaLmlbDmja5cbiAgICAgICAgZm9yIChsZXQgaSA9ICh0aGlzLmNvbHVtbk51bSAtIDEpOyBpID4gY29sdW1uSW5kZXg7IGktLSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLnJvd051bTsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZWxsc1tpICsgbGVuZ3RoXVtqXSA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jZWxsc1tpXVtqXSksIHsgeDogKGkgKyBsZW5ndGgpICogdGhpcy5DRUxMX1csIHk6IGogKiB0aGlzLkNFTExfSCB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNlbGxzW2ldW2pdID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiBpICogdGhpcy5DRUxMX1csXG4gICAgICAgICAgICAgICAgICAgIHk6IGogKiB0aGlzLkNFTExfSCxcbiAgICAgICAgICAgICAgICAgICAgb2NjdXBpZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IG51bGwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyDlt7LmnInooYzliJfnmoTlpITnkIZcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmFkZGl0aW9uQ29sdW1uLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hZGRpdGlvbkNvbHVtbltqXSA+PSBjb2x1bW5JbmRleCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkaXRpb25Db2x1bW5bal0gKz0gbGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIOiusOW9leaWsOWinueahOihjOWIl1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uQ29sdW1uLnB1c2goY29sdW1uSW5kZXggKyBpICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb2x1bW5OdW0gKz0gbGVuZ3RoO1xuICAgIH1cbiAgICBpbnNlcnRSb3cocm93SW5kZXgsIGxlbmd0aCkge1xuICAgICAgICBpZiAobGVuZ3RoIDw9IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vIOaPkuWFpeepuuihjFxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uTnVtOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNlbGxzW2ldW2ogKyB0aGlzLnJvd051bV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGR4OiBpLFxuICAgICAgICAgICAgICAgICAgICBkeTogaixcbiAgICAgICAgICAgICAgICAgICAgeDogaSAqIHRoaXMuQ0VMTF9XLFxuICAgICAgICAgICAgICAgICAgICB5OiBqICogdGhpcy5DRUxMX0gsXG4gICAgICAgICAgICAgICAgICAgIG9jY3VwaWVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZTogbnVsbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIOS6pOaNouaVsOaNrlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uTnVtOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAodGhpcy5yb3dOdW0gLSAxKTsgaiA+IHJvd0luZGV4OyBqLS0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNlbGxzW2ldW2ogKyBsZW5ndGhdID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNlbGxzW2ldW2pdKSwgeyBkeDogaSwgZHk6IGogKyBsZW5ndGgsIHg6IGkgKiB0aGlzLkNFTExfVywgeTogKGogKyBsZW5ndGgpICogdGhpcy5DRUxMX0ggfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZWxsc1tpXVtqXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZHg6IGksXG4gICAgICAgICAgICAgICAgICAgIGR5OiBqLFxuICAgICAgICAgICAgICAgICAgICB4OiBpICogdGhpcy5DRUxMX1csXG4gICAgICAgICAgICAgICAgICAgIHk6IGogKiB0aGlzLkNFTExfSCxcbiAgICAgICAgICAgICAgICAgICAgb2NjdXBpZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBub2RlOiBudWxsLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8g5bey5pyJ6KGM5YiX55qE5aSE55CGXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5hZGRpdGlvblJvdy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWRkaXRpb25Sb3dbal0gPj0gcm93SW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uUm93W2pdICs9IGxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyDorrDlvZXmlrDlop7nmoTooYzliJdcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvblJvdy5wdXNoKHJvd0luZGV4ICsgaSArIDEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm93TnVtICs9IGxlbmd0aDtcbiAgICB9XG4gICAgZ2V0Tm9kZXMoKSB7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5OdW07IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLnJvd051bTsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2VsbHNbaV1bal0ubm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBub2Rlcy5wdXNoKHRoaXMuY2VsbHNbaV1bal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgfVxufVxuR3JpZC5NSU5fRElTVCA9IDUwO1xuR3JpZC5ERUZBVUxUX0NFTExfVyA9IDgwO1xuR3JpZC5ERUZBVUxUX0NFTExfSCA9IDgwO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z3JpZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/er/grid.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/er/index.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/er/index.js ***! \*********************************************************/ /*! exports provided: ERLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERLayout\", function() { return ERLayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./core */ \"./node_modules/@antv/layout/es/layout/er/core.js\");\n/**\n * @fileOverview Force Layout Grid Align layout\n * @author wenyanqi\n */\n\n\nclass ERLayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n this.width = 300;\n this.height = 300;\n this.nodeMinGap = 50;\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n if (options) {\n this.updateCfg(options);\n }\n }\n getDefaultCfg() {\n return {\n width: 300,\n height: 300,\n nodeMinGap: 50,\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n // 节点初始化,size初始化\n nodes === null || nodes === void 0 ? void 0 : nodes.forEach((node) => {\n if (!node.size) {\n node.size = [50, 50];\n }\n });\n return Object(_core__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n nodes, edges,\n }, {\n width: this.width,\n height: this.height,\n nodeMinGap: this.nodeMinGap,\n }).then(() => {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n });\n }\n getType() {\n return \"er\";\n }\n}\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9lci9pbmRleC5qcz9mNmZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDK0I7QUFDSDtBQUNyQix1QkFBdUIsMENBQUk7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsZUFBZSxxREFBTTtBQUNyQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9lci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBGb3JjZSBMYXlvdXQgR3JpZCBBbGlnbiBsYXlvdXRcbiAqIEBhdXRob3Igd2VueWFucWlcbiAqL1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gXCIuLi9iYXNlXCI7XG5pbXBvcnQgbGF5b3V0IGZyb20gJy4vY29yZSc7XG5leHBvcnQgY2xhc3MgRVJMYXlvdXQgZXh0ZW5kcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMud2lkdGggPSAzMDA7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMzAwO1xuICAgICAgICB0aGlzLm5vZGVNaW5HYXAgPSA1MDtcbiAgICAgICAgLyoqIOi/reS7o+e7k+adn+eahOWbnuiwg+WHveaVsCAqL1xuICAgICAgICB0aGlzLm9uTGF5b3V0RW5kID0gKCkgPT4geyB9O1xuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDZmcob3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0RGVmYXVsdENmZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHdpZHRoOiAzMDAsXG4gICAgICAgICAgICBoZWlnaHQ6IDMwMCxcbiAgICAgICAgICAgIG5vZGVNaW5HYXA6IDUwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiafooYzluIPlsYBcbiAgICAgKi9cbiAgICBleGVjdXRlKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBlZGdlcyA9IHNlbGYuZWRnZXM7XG4gICAgICAgIC8vIOiKgueCueWIneWni+WMlu+8jHNpemXliJ3lp4vljJZcbiAgICAgICAgbm9kZXMgPT09IG51bGwgfHwgbm9kZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIGlmICghbm9kZS5zaXplKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5zaXplID0gWzUwLCA1MF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbGF5b3V0KHtcbiAgICAgICAgICAgIG5vZGVzLCBlZGdlcyxcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxuICAgICAgICAgICAgbm9kZU1pbkdhcDogdGhpcy5ub2RlTWluR2FwLFxuICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldFR5cGUoKSB7XG4gICAgICAgIHJldHVybiBcImVyXCI7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/er/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/er/mysqlWorkbench.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/er/mysqlWorkbench.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nconst graphWidth = 1200;\nconst graphHeight = 800;\nconst OVERLAP_QUOT = 10000000;\nconst MIN_DIST = 10;\nconst M_PI = 3.14159265358979323846;\nconst M_PI_2 = 1.57079632679489661923;\nconst PI_38 = M_PI * 0.375;\nconst PI_58 = M_PI * 0.625;\nconst nodeEdgeMap = new Map();\nconst CELL_W = 10;\nconst CELL_H = 10;\nlet T = 0.8;\nconst T_MIN = 0.1;\nconst R = 0.5;\nfunction distanceToNode(node1, node2, isHoriz) {\n const x11 = node1.x - node1.size[0] / 2;\n const y11 = node1.y - node1.size[1] / 2;\n const x12 = node1.x + node1.size[0] / 2;\n const y12 = node1.y + node1.size[1] / 2;\n const x21 = node2.x - node2.size[0] / 2;\n const y21 = node2.y - node2.size[1] / 2;\n const x22 = node2.x + node2.size[0] / 2;\n const y22 = node2.y + node2.size[1] / 2;\n const cx1 = node1.x;\n const cy1 = node1.y;\n const cx2 = node2.x;\n const cy2 = node2.y;\n const dcx = cx2 - cx1;\n // 两个节点间的方位角 \n const qr = Math.atan2(dcx, (cy2 - cy1));\n let dx = 0;\n let dy = 0;\n let l1 = 0;\n let l2 = 0;\n if (qr > M_PI_2) {\n dy = y11 - y22;\n dx = x21 - x12;\n l1 = parseFloat(dy ? (dy / Math.cos(qr)).toFixed(2) : (dx).toFixed(2));\n l2 = parseFloat(dx ? (dx / Math.sin(qr)).toFixed(2) : (dy).toFixed(2));\n }\n else if (0.0 < qr && qr <= M_PI_2) {\n dy = y21 - y12;\n dx = x21 - x12;\n if (dy > dx) {\n l1 = l2 = parseFloat(dy ? (dy / Math.cos(qr)).toFixed(2) : (dx).toFixed(2));\n }\n else {\n l1 = l2 = parseFloat(dx ? (dx / Math.sin(qr)).toFixed(2) : (dy).toFixed(2));\n }\n }\n else if (qr < -M_PI_2) {\n dy = y11 - y22;\n dx = -(x22 - x11);\n if (dy > dx) {\n l1 = l2 = parseFloat(dy ? (dy / Math.cos(qr)).toFixed(2) : (dx).toFixed(2));\n }\n else {\n l1 = l2 = parseFloat(dx ? (dx / Math.sin(qr)).toFixed(2) : (dy).toFixed(2));\n }\n }\n else {\n dy = y21 - y12;\n if (Math.abs(dcx) > (x12 - x11) / 2) {\n dx = x11 - x22;\n }\n else {\n dx = dcx;\n }\n if (dy > dx) {\n l1 = l2 = parseFloat(dy ? (dy / Math.cos(qr)).toFixed(2) : (dx).toFixed(2));\n }\n else {\n l1 = l2 = parseFloat((dx && qr !== 0.0) ? (dx / Math.sin(qr)).toFixed(2) : (dy).toFixed(2));\n }\n }\n const aqr = parseFloat(qr.toFixed(2));\n // 判断是否水平,角度\n let newHoriz = isHoriz;\n if (isHoriz) {\n newHoriz = PI_38 < aqr && aqr < PI_58;\n }\n return {\n distance: Math.abs(l1 < l2 ? l1 : l2),\n isHoriz: newHoriz,\n };\n}\nfunction calcNodePair(nodeA, nodeB) {\n // 确定两个节点间是否存在连线\n const edges = nodeEdgeMap.get(nodeA.id) || [];\n const isLinked = edges.find((edge) => {\n return edge.source === nodeB.id || edge.target === nodeB.id;\n });\n const areaA = nodeA.size[0] * nodeA.size[1];\n const areaB = nodeB.size[0] * nodeB.size[1];\n const node1 = areaA > areaB ? nodeB : nodeA;\n const node2 = areaA > areaB ? nodeA : nodeB;\n const x11 = node1.x - node1.size[0] / 2;\n const y11 = node1.y - node1.size[1] / 2;\n const x12 = node1.x + node1.size[0] / 2;\n const y12 = node1.y + node1.size[1] / 2;\n const x21 = node2.x - node2.size[0] / 2;\n const y21 = node2.y - node2.size[1] / 2;\n const x22 = node2.x + node2.size[0] / 2;\n const y22 = node2.y + node2.size[1] / 2;\n const cx1 = node1.x;\n const cy1 = node1.y;\n const cx2 = node2.x;\n const cy2 = node2.y;\n // Detect if nodes overlap 检查节点之间是否存在覆盖问题\n const isoverlap = ((x12 >= x21) && (x22 >= x11) && (y12 >= y21) && (y22 >= y11));\n let e = 0;\n let distance = 0;\n if (isoverlap) {\n distance = Math.sqrt(Math.pow((cx2 - cx1), 2) + Math.pow((cy2 - cy1), 2));\n // calc area of overlap 计算重复区域的坐标和面积\n const sx1 = x11 > x21 ? x11 : x21;\n const sy1 = y11 > y21 ? y11 : y21;\n const sx2 = x12 < x22 ? x12 : x22;\n const sy2 = y12 < y22 ? y12 : y22;\n const dsx = sx2 - sx1;\n const dsy = sy2 - sy1;\n const sov = dsx * dsy;\n if (distance === 0.0) {\n distance = 0.0000001;\n }\n e = MIN_DIST * 1 / distance * 100 + sov;\n e *= OVERLAP_QUOT;\n }\n else {\n let isHoriz = false;\n const res = distanceToNode(node1, node2, isHoriz);\n distance = res.distance;\n isHoriz = res.isHoriz;\n if (distance <= MIN_DIST) {\n if (distance !== 0) {\n if (isLinked) {\n e += MIN_DIST + OVERLAP_QUOT * 1 / distance;\n }\n else {\n e += MIN_DIST + OVERLAP_QUOT * MIN_DIST / distance;\n }\n }\n else {\n e += OVERLAP_QUOT;\n }\n }\n else {\n e += distance;\n if (isLinked) {\n e += distance * distance;\n }\n }\n }\n return e;\n}\nfunction calcEnergy(nodes) {\n let energy = 0;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ((node.x < 0) || (node.y < 0) || (node.x > graphWidth) || (node.y > graphHeight)) {\n energy += 1000000000000;\n }\n for (let j = i + 1; j < nodes.length; j++) {\n energy += calcNodePair(node, nodes[j]);\n }\n }\n return energy;\n}\nfunction isCorrectPosition(node, newPosition, nodes, edges) {\n const nodeIdxMap = new Map();\n nodes.forEach((o, i) => {\n nodeIdxMap.set(o.id, o);\n });\n const relateEdges = edges.filter((edge) => edge.source === node.id || edge.target === node.id) || [];\n const relateNodes = [];\n relateEdges.forEach((edge) => {\n const otherNodeId = edge.source === node.id ? edge.target : edge.source;\n const otherNode = nodeIdxMap.get(otherNodeId);\n if (otherNode) {\n relateNodes.push(otherNode);\n }\n });\n let flag = true;\n for (let i = 0; i < relateNodes.length; i++) {\n const item = relateNodes[i];\n // 判断条件调整,节点的坐标不需要完全一致。可以根据节点间的夹角来判断\n const delta = Math.atan((node.y - item.y) / (item.x - node.y)) * 180;\n const newDelta = Math.atan((newPosition.y - item.y) / (item.x - newPosition.y)) * 180;\n const isHor = delta < 30 || delta > 150;\n const newIsHor = newDelta < 30 || newDelta > 150;\n const isVer = delta > 70 && delta < 110;\n const newIsVer = newDelta > 70 && newDelta < 110;\n // 定义四个相似角度区间,0-15度,75-90度,90到105度,165到180度。\n if (isHor && !newIsHor || ((delta * newDelta) < 0)) {\n flag = false;\n break;\n }\n else if (isVer && !newIsVer || ((delta * newDelta) < 0)) {\n flag = false;\n break;\n }\n else if ((item.x - node.x) * (item.x - newPosition.x) < 0) {\n flag = false;\n break;\n }\n else if ((item.y - node.y) * (item.y - newPosition.y) < 0) {\n flag = false;\n break;\n }\n }\n return flag;\n}\nfunction shuffle(nodes, edges) {\n let foundSmallerEnergy = false;\n // 多次测试发现step为1时的效果最佳。\n const step = 1;\n const wstep = CELL_W * step;\n const hstep = CELL_H * step;\n const wsteps = [wstep, -wstep, 0, 0,];\n const hsteps = [0, 0, hstep, -hstep,];\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n let nodeEnergy = calcNodeEnergy(node, nodes);\n for (let ns = 0; ns < wsteps.length; ns++) {\n // 判断新位置与其他连线节点的位置关系是否违规\n const flag = isCorrectPosition(node, { x: node.x + wsteps[ns], y: node.y + hsteps[ns] }, nodes, edges);\n if (flag) {\n // 节点朝上下左右四个方向移动,找到能量最小的那个位置\n node.x += wsteps[ns];\n node.y += hsteps[ns];\n // 计算移动后节点的能量\n const energy = calcNodeEnergy(node, nodes);\n const rdm = Math.random();\n if (energy < nodeEnergy) {\n nodeEnergy = energy;\n foundSmallerEnergy = true;\n }\n else if (rdm < T && rdm > T_MIN) {\n nodeEnergy = energy;\n foundSmallerEnergy = true;\n }\n else {\n // 回归原位\n node.x -= wsteps[ns];\n node.y -= hsteps[ns];\n }\n }\n }\n }\n if (T > T_MIN) {\n T *= R;\n }\n // 重新计算图整体的能量\n if (foundSmallerEnergy) {\n return calcEnergy(nodes);\n }\n return 0;\n}\n// 计算节点的能量,\nfunction calcNodeEnergy(node, nodes) {\n let e = 0.0;\n if ((node.x < 0) || (node.y < 0) ||\n (node.x + node.size[0] + 20 > graphWidth) ||\n (node.y + node.size[1] + 20 > graphHeight)) {\n e += 1000000000000.0;\n }\n for (let i = 0; i < nodes.length; ++i) {\n if (node.id !== nodes[i].id) {\n e += calcNodePair(node, nodes[i]);\n }\n }\n return e;\n}\nfunction layout(nodes, edges) {\n if (nodes.length === 0) {\n return { nodes, edges };\n }\n nodes.forEach((node) => {\n const relateEdge = edges.filter((edge) => edge.source === node.id || edge.target === node.id);\n nodeEdgeMap.set(node, relateEdge);\n });\n // 1. 初始化\n // 将node按照连接数进行排序\n nodes.sort((node1, node2) => {\n var _a, _b;\n return ((_a = nodeEdgeMap.get(node1.id)) === null || _a === void 0 ? void 0 : _a.length) - ((_b = nodeEdgeMap.get(node2.id)) === null || _b === void 0 ? void 0 : _b.length);\n });\n // 2. 计算图能量\n let minEnergy = calcEnergy(nodes);\n let deSameCount = 20; // de=0 count\n let de = 1; // energy delta\n let prevEnergy = 0;\n // 定义总的迭代次数。超过就停掉,防止死循环\n const MAX_COUNT = 50;\n let count = 0;\n while (deSameCount > 0) {\n count++;\n if (count >= MAX_COUNT) {\n break;\n }\n const ea = shuffle(nodes, edges);\n if (ea !== 0) {\n prevEnergy = ea;\n }\n de = prevEnergy - minEnergy;\n minEnergy = prevEnergy;\n if (de === 0) {\n --deSameCount;\n }\n else {\n deSameCount = 20;\n }\n }\n nodes.forEach((node) => {\n node.x = node.x - node.size[0] / 2;\n node.y = node.y - node.size[1] / 2;\n });\n return {\n nodes,\n edges,\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (layout);\n//# sourceMappingURL=mysqlWorkbench.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9lci9teXNxbFdvcmtiZW5jaC5qcz84NmQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsa0JBQWtCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUJBQW1CLHdCQUF3QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQSx3QkFBd0Isb0JBQW9CO0FBQzVDO0FBQ0Esa0RBQWtELGlEQUFpRDtBQUNuRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZXIvbXlzcWxXb3JrYmVuY2guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBncmFwaFdpZHRoID0gMTIwMDtcbmNvbnN0IGdyYXBoSGVpZ2h0ID0gODAwO1xuY29uc3QgT1ZFUkxBUF9RVU9UID0gMTAwMDAwMDA7XG5jb25zdCBNSU5fRElTVCA9IDEwO1xuY29uc3QgTV9QSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7XG5jb25zdCBNX1BJXzIgPSAxLjU3MDc5NjMyNjc5NDg5NjYxOTIzO1xuY29uc3QgUElfMzggPSBNX1BJICogMC4zNzU7XG5jb25zdCBQSV81OCA9IE1fUEkgKiAwLjYyNTtcbmNvbnN0IG5vZGVFZGdlTWFwID0gbmV3IE1hcCgpO1xuY29uc3QgQ0VMTF9XID0gMTA7XG5jb25zdCBDRUxMX0ggPSAxMDtcbmxldCBUID0gMC44O1xuY29uc3QgVF9NSU4gPSAwLjE7XG5jb25zdCBSID0gMC41O1xuZnVuY3Rpb24gZGlzdGFuY2VUb05vZGUobm9kZTEsIG5vZGUyLCBpc0hvcml6KSB7XG4gICAgY29uc3QgeDExID0gbm9kZTEueCAtIG5vZGUxLnNpemVbMF0gLyAyO1xuICAgIGNvbnN0IHkxMSA9IG5vZGUxLnkgLSBub2RlMS5zaXplWzFdIC8gMjtcbiAgICBjb25zdCB4MTIgPSBub2RlMS54ICsgbm9kZTEuc2l6ZVswXSAvIDI7XG4gICAgY29uc3QgeTEyID0gbm9kZTEueSArIG5vZGUxLnNpemVbMV0gLyAyO1xuICAgIGNvbnN0IHgyMSA9IG5vZGUyLnggLSBub2RlMi5zaXplWzBdIC8gMjtcbiAgICBjb25zdCB5MjEgPSBub2RlMi55IC0gbm9kZTIuc2l6ZVsxXSAvIDI7XG4gICAgY29uc3QgeDIyID0gbm9kZTIueCArIG5vZGUyLnNpemVbMF0gLyAyO1xuICAgIGNvbnN0IHkyMiA9IG5vZGUyLnkgKyBub2RlMi5zaXplWzFdIC8gMjtcbiAgICBjb25zdCBjeDEgPSBub2RlMS54O1xuICAgIGNvbnN0IGN5MSA9IG5vZGUxLnk7XG4gICAgY29uc3QgY3gyID0gbm9kZTIueDtcbiAgICBjb25zdCBjeTIgPSBub2RlMi55O1xuICAgIGNvbnN0IGRjeCA9IGN4MiAtIGN4MTtcbiAgICAvLyDkuKTkuKroioLngrnpl7TnmoTmlrnkvY3op5IgIFxuICAgIGNvbnN0IHFyID0gTWF0aC5hdGFuMihkY3gsIChjeTIgLSBjeTEpKTtcbiAgICBsZXQgZHggPSAwO1xuICAgIGxldCBkeSA9IDA7XG4gICAgbGV0IGwxID0gMDtcbiAgICBsZXQgbDIgPSAwO1xuICAgIGlmIChxciA+IE1fUElfMikge1xuICAgICAgICBkeSA9IHkxMSAtIHkyMjtcbiAgICAgICAgZHggPSB4MjEgLSB4MTI7XG4gICAgICAgIGwxID0gcGFyc2VGbG9hdChkeSA/IChkeSAvIE1hdGguY29zKHFyKSkudG9GaXhlZCgyKSA6IChkeCkudG9GaXhlZCgyKSk7XG4gICAgICAgIGwyID0gcGFyc2VGbG9hdChkeCA/IChkeCAvIE1hdGguc2luKHFyKSkudG9GaXhlZCgyKSA6IChkeSkudG9GaXhlZCgyKSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKDAuMCA8IHFyICYmIHFyIDw9IE1fUElfMikge1xuICAgICAgICBkeSA9IHkyMSAtIHkxMjtcbiAgICAgICAgZHggPSB4MjEgLSB4MTI7XG4gICAgICAgIGlmIChkeSA+IGR4KSB7XG4gICAgICAgICAgICBsMSA9IGwyID0gcGFyc2VGbG9hdChkeSA/IChkeSAvIE1hdGguY29zKHFyKSkudG9GaXhlZCgyKSA6IChkeCkudG9GaXhlZCgyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsMSA9IGwyID0gcGFyc2VGbG9hdChkeCA/IChkeCAvIE1hdGguc2luKHFyKSkudG9GaXhlZCgyKSA6IChkeSkudG9GaXhlZCgyKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAocXIgPCAtTV9QSV8yKSB7XG4gICAgICAgIGR5ID0geTExIC0geTIyO1xuICAgICAgICBkeCA9IC0oeDIyIC0geDExKTtcbiAgICAgICAgaWYgKGR5ID4gZHgpIHtcbiAgICAgICAgICAgIGwxID0gbDIgPSBwYXJzZUZsb2F0KGR5ID8gKGR5IC8gTWF0aC5jb3MocXIpKS50b0ZpeGVkKDIpIDogKGR4KS50b0ZpeGVkKDIpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGwxID0gbDIgPSBwYXJzZUZsb2F0KGR4ID8gKGR4IC8gTWF0aC5zaW4ocXIpKS50b0ZpeGVkKDIpIDogKGR5KS50b0ZpeGVkKDIpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZHkgPSB5MjEgLSB5MTI7XG4gICAgICAgIGlmIChNYXRoLmFicyhkY3gpID4gKHgxMiAtIHgxMSkgLyAyKSB7XG4gICAgICAgICAgICBkeCA9IHgxMSAtIHgyMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGR4ID0gZGN4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChkeSA+IGR4KSB7XG4gICAgICAgICAgICBsMSA9IGwyID0gcGFyc2VGbG9hdChkeSA/IChkeSAvIE1hdGguY29zKHFyKSkudG9GaXhlZCgyKSA6IChkeCkudG9GaXhlZCgyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsMSA9IGwyID0gcGFyc2VGbG9hdCgoZHggJiYgcXIgIT09IDAuMCkgPyAoZHggLyBNYXRoLnNpbihxcikpLnRvRml4ZWQoMikgOiAoZHkpLnRvRml4ZWQoMikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGFxciA9IHBhcnNlRmxvYXQocXIudG9GaXhlZCgyKSk7XG4gICAgLy8g5Yik5pat5piv5ZCm5rC05bmz77yM6KeS5bqmXG4gICAgbGV0IG5ld0hvcml6ID0gaXNIb3JpejtcbiAgICBpZiAoaXNIb3Jpeikge1xuICAgICAgICBuZXdIb3JpeiA9IFBJXzM4IDwgYXFyICYmIGFxciA8IFBJXzU4O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBkaXN0YW5jZTogTWF0aC5hYnMobDEgPCBsMiA/IGwxIDogbDIpLFxuICAgICAgICBpc0hvcml6OiBuZXdIb3JpeixcbiAgICB9O1xufVxuZnVuY3Rpb24gY2FsY05vZGVQYWlyKG5vZGVBLCBub2RlQikge1xuICAgIC8vIOehruWumuS4pOS4quiKgueCuemXtOaYr+WQpuWtmOWcqOi/nue6v1xuICAgIGNvbnN0IGVkZ2VzID0gbm9kZUVkZ2VNYXAuZ2V0KG5vZGVBLmlkKSB8fCBbXTtcbiAgICBjb25zdCBpc0xpbmtlZCA9IGVkZ2VzLmZpbmQoKGVkZ2UpID0+IHtcbiAgICAgICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlQi5pZCB8fCBlZGdlLnRhcmdldCA9PT0gbm9kZUIuaWQ7XG4gICAgfSk7XG4gICAgY29uc3QgYXJlYUEgPSBub2RlQS5zaXplWzBdICogbm9kZUEuc2l6ZVsxXTtcbiAgICBjb25zdCBhcmVhQiA9IG5vZGVCLnNpemVbMF0gKiBub2RlQi5zaXplWzFdO1xuICAgIGNvbnN0IG5vZGUxID0gYXJlYUEgPiBhcmVhQiA/IG5vZGVCIDogbm9kZUE7XG4gICAgY29uc3Qgbm9kZTIgPSBhcmVhQSA+IGFyZWFCID8gbm9kZUEgOiBub2RlQjtcbiAgICBjb25zdCB4MTEgPSBub2RlMS54IC0gbm9kZTEuc2l6ZVswXSAvIDI7XG4gICAgY29uc3QgeTExID0gbm9kZTEueSAtIG5vZGUxLnNpemVbMV0gLyAyO1xuICAgIGNvbnN0IHgxMiA9IG5vZGUxLnggKyBub2RlMS5zaXplWzBdIC8gMjtcbiAgICBjb25zdCB5MTIgPSBub2RlMS55ICsgbm9kZTEuc2l6ZVsxXSAvIDI7XG4gICAgY29uc3QgeDIxID0gbm9kZTIueCAtIG5vZGUyLnNpemVbMF0gLyAyO1xuICAgIGNvbnN0IHkyMSA9IG5vZGUyLnkgLSBub2RlMi5zaXplWzFdIC8gMjtcbiAgICBjb25zdCB4MjIgPSBub2RlMi54ICsgbm9kZTIuc2l6ZVswXSAvIDI7XG4gICAgY29uc3QgeTIyID0gbm9kZTIueSArIG5vZGUyLnNpemVbMV0gLyAyO1xuICAgIGNvbnN0IGN4MSA9IG5vZGUxLng7XG4gICAgY29uc3QgY3kxID0gbm9kZTEueTtcbiAgICBjb25zdCBjeDIgPSBub2RlMi54O1xuICAgIGNvbnN0IGN5MiA9IG5vZGUyLnk7XG4gICAgLy8gRGV0ZWN0IGlmIG5vZGVzIG92ZXJsYXAgIOajgOafpeiKgueCueS5i+mXtOaYr+WQpuWtmOWcqOimhueblumXrumimFxuICAgIGNvbnN0IGlzb3ZlcmxhcCA9ICgoeDEyID49IHgyMSkgJiYgKHgyMiA+PSB4MTEpICYmICh5MTIgPj0geTIxKSAmJiAoeTIyID49IHkxMSkpO1xuICAgIGxldCBlID0gMDtcbiAgICBsZXQgZGlzdGFuY2UgPSAwO1xuICAgIGlmIChpc292ZXJsYXApIHtcbiAgICAgICAgZGlzdGFuY2UgPSBNYXRoLnNxcnQoTWF0aC5wb3coKGN4MiAtIGN4MSksIDIpICsgTWF0aC5wb3coKGN5MiAtIGN5MSksIDIpKTtcbiAgICAgICAgLy8gY2FsYyBhcmVhIG9mIG92ZXJsYXAg6K6h566X6YeN5aSN5Yy65Z+f55qE5Z2Q5qCH5ZKM6Z2i56evXG4gICAgICAgIGNvbnN0IHN4MSA9IHgxMSA+IHgyMSA/IHgxMSA6IHgyMTtcbiAgICAgICAgY29uc3Qgc3kxID0geTExID4geTIxID8geTExIDogeTIxO1xuICAgICAgICBjb25zdCBzeDIgPSB4MTIgPCB4MjIgPyB4MTIgOiB4MjI7XG4gICAgICAgIGNvbnN0IHN5MiA9IHkxMiA8IHkyMiA/IHkxMiA6IHkyMjtcbiAgICAgICAgY29uc3QgZHN4ID0gc3gyIC0gc3gxO1xuICAgICAgICBjb25zdCBkc3kgPSBzeTIgLSBzeTE7XG4gICAgICAgIGNvbnN0IHNvdiA9IGRzeCAqIGRzeTtcbiAgICAgICAgaWYgKGRpc3RhbmNlID09PSAwLjApIHtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gMC4wMDAwMDAxO1xuICAgICAgICB9XG4gICAgICAgIGUgPSBNSU5fRElTVCAqIDEgLyBkaXN0YW5jZSAqIDEwMCArIHNvdjtcbiAgICAgICAgZSAqPSBPVkVSTEFQX1FVT1Q7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBsZXQgaXNIb3JpeiA9IGZhbHNlO1xuICAgICAgICBjb25zdCByZXMgPSBkaXN0YW5jZVRvTm9kZShub2RlMSwgbm9kZTIsIGlzSG9yaXopO1xuICAgICAgICBkaXN0YW5jZSA9IHJlcy5kaXN0YW5jZTtcbiAgICAgICAgaXNIb3JpeiA9IHJlcy5pc0hvcml6O1xuICAgICAgICBpZiAoZGlzdGFuY2UgPD0gTUlOX0RJU1QpIHtcbiAgICAgICAgICAgIGlmIChkaXN0YW5jZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChpc0xpbmtlZCkge1xuICAgICAgICAgICAgICAgICAgICBlICs9IE1JTl9ESVNUICsgT1ZFUkxBUF9RVU9UICogMSAvIGRpc3RhbmNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZSArPSBNSU5fRElTVCArIE9WRVJMQVBfUVVPVCAqIE1JTl9ESVNUIC8gZGlzdGFuY2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZSArPSBPVkVSTEFQX1FVT1Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlICs9IGRpc3RhbmNlO1xuICAgICAgICAgICAgaWYgKGlzTGlua2VkKSB7XG4gICAgICAgICAgICAgICAgZSArPSBkaXN0YW5jZSAqIGRpc3RhbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlO1xufVxuZnVuY3Rpb24gY2FsY0VuZXJneShub2Rlcykge1xuICAgIGxldCBlbmVyZ3kgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBpZiAoKG5vZGUueCA8IDApIHx8IChub2RlLnkgPCAwKSB8fCAobm9kZS54ID4gZ3JhcGhXaWR0aCkgfHwgKG5vZGUueSA+IGdyYXBoSGVpZ2h0KSkge1xuICAgICAgICAgICAgZW5lcmd5ICs9IDEwMDAwMDAwMDAwMDA7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbm9kZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGVuZXJneSArPSBjYWxjTm9kZVBhaXIobm9kZSwgbm9kZXNbal0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbmVyZ3k7XG59XG5mdW5jdGlvbiBpc0NvcnJlY3RQb3NpdGlvbihub2RlLCBuZXdQb3NpdGlvbiwgbm9kZXMsIGVkZ2VzKSB7XG4gICAgY29uc3Qgbm9kZUlkeE1hcCA9IG5ldyBNYXAoKTtcbiAgICBub2Rlcy5mb3JFYWNoKChvLCBpKSA9PiB7XG4gICAgICAgIG5vZGVJZHhNYXAuc2V0KG8uaWQsIG8pO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlbGF0ZUVkZ2VzID0gZWRnZXMuZmlsdGVyKChlZGdlKSA9PiBlZGdlLnNvdXJjZSA9PT0gbm9kZS5pZCB8fCBlZGdlLnRhcmdldCA9PT0gbm9kZS5pZCkgfHwgW107XG4gICAgY29uc3QgcmVsYXRlTm9kZXMgPSBbXTtcbiAgICByZWxhdGVFZGdlcy5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgICAgIGNvbnN0IG90aGVyTm9kZUlkID0gZWRnZS5zb3VyY2UgPT09IG5vZGUuaWQgPyBlZGdlLnRhcmdldCA6IGVkZ2Uuc291cmNlO1xuICAgICAgICBjb25zdCBvdGhlck5vZGUgPSBub2RlSWR4TWFwLmdldChvdGhlck5vZGVJZCk7XG4gICAgICAgIGlmIChvdGhlck5vZGUpIHtcbiAgICAgICAgICAgIHJlbGF0ZU5vZGVzLnB1c2gob3RoZXJOb2RlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGxldCBmbGFnID0gdHJ1ZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlbGF0ZU5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSByZWxhdGVOb2Rlc1tpXTtcbiAgICAgICAgLy8g5Yik5pat5p2h5Lu26LCD5pW077yM6IqC54K555qE5Z2Q5qCH5LiN6ZyA6KaB5a6M5YWo5LiA6Ie044CC5Y+v5Lul5qC55o2u6IqC54K56Ze055qE5aS56KeS5p2l5Yik5patXG4gICAgICAgIGNvbnN0IGRlbHRhID0gTWF0aC5hdGFuKChub2RlLnkgLSBpdGVtLnkpIC8gKGl0ZW0ueCAtIG5vZGUueSkpICogMTgwO1xuICAgICAgICBjb25zdCBuZXdEZWx0YSA9IE1hdGguYXRhbigobmV3UG9zaXRpb24ueSAtIGl0ZW0ueSkgLyAoaXRlbS54IC0gbmV3UG9zaXRpb24ueSkpICogMTgwO1xuICAgICAgICBjb25zdCBpc0hvciA9IGRlbHRhIDwgMzAgfHwgZGVsdGEgPiAxNTA7XG4gICAgICAgIGNvbnN0IG5ld0lzSG9yID0gbmV3RGVsdGEgPCAzMCB8fCBuZXdEZWx0YSA+IDE1MDtcbiAgICAgICAgY29uc3QgaXNWZXIgPSBkZWx0YSA+IDcwICYmIGRlbHRhIDwgMTEwO1xuICAgICAgICBjb25zdCBuZXdJc1ZlciA9IG5ld0RlbHRhID4gNzAgJiYgbmV3RGVsdGEgPCAxMTA7XG4gICAgICAgIC8vIOWumuS5ieWbm+S4quebuOS8vOinkuW6puWMuumXtO+8jDAtMTXluqbvvIw3NS05MOW6pu+8jDkw5YiwMTA15bqm77yMMTY15YiwMTgw5bqm44CCXG4gICAgICAgIGlmIChpc0hvciAmJiAhbmV3SXNIb3IgfHwgKChkZWx0YSAqIG5ld0RlbHRhKSA8IDApKSB7XG4gICAgICAgICAgICBmbGFnID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1ZlciAmJiAhbmV3SXNWZXIgfHwgKChkZWx0YSAqIG5ld0RlbHRhKSA8IDApKSB7XG4gICAgICAgICAgICBmbGFnID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoaXRlbS54IC0gbm9kZS54KSAqIChpdGVtLnggLSBuZXdQb3NpdGlvbi54KSA8IDApIHtcbiAgICAgICAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKChpdGVtLnkgLSBub2RlLnkpICogKGl0ZW0ueSAtIG5ld1Bvc2l0aW9uLnkpIDwgMCkge1xuICAgICAgICAgICAgZmxhZyA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZsYWc7XG59XG5mdW5jdGlvbiBzaHVmZmxlKG5vZGVzLCBlZGdlcykge1xuICAgIGxldCBmb3VuZFNtYWxsZXJFbmVyZ3kgPSBmYWxzZTtcbiAgICAvLyDlpJrmrKHmtYvor5Xlj5HnjrBzdGVw5Li6MeaXtueahOaViOaenOacgOS9s+OAglxuICAgIGNvbnN0IHN0ZXAgPSAxO1xuICAgIGNvbnN0IHdzdGVwID0gQ0VMTF9XICogc3RlcDtcbiAgICBjb25zdCBoc3RlcCA9IENFTExfSCAqIHN0ZXA7XG4gICAgY29uc3Qgd3N0ZXBzID0gW3dzdGVwLCAtd3N0ZXAsIDAsIDAsXTtcbiAgICBjb25zdCBoc3RlcHMgPSBbMCwgMCwgaHN0ZXAsIC1oc3RlcCxdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBsZXQgbm9kZUVuZXJneSA9IGNhbGNOb2RlRW5lcmd5KG5vZGUsIG5vZGVzKTtcbiAgICAgICAgZm9yIChsZXQgbnMgPSAwOyBucyA8IHdzdGVwcy5sZW5ndGg7IG5zKyspIHtcbiAgICAgICAgICAgIC8vIOWIpOaWreaWsOS9jee9ruS4juWFtuS7lui/nue6v+iKgueCueeahOS9jee9ruWFs+ezu+aYr+WQpui/neinhFxuICAgICAgICAgICAgY29uc3QgZmxhZyA9IGlzQ29ycmVjdFBvc2l0aW9uKG5vZGUsIHsgeDogbm9kZS54ICsgd3N0ZXBzW25zXSwgeTogbm9kZS55ICsgaHN0ZXBzW25zXSB9LCBub2RlcywgZWRnZXMpO1xuICAgICAgICAgICAgaWYgKGZsYWcpIHtcbiAgICAgICAgICAgICAgICAvLyDoioLngrnmnJ3kuIrkuIvlt6blj7Plm5vkuKrmlrnlkJHnp7vliqjvvIzmib7liLDog73ph4/mnIDlsI/nmoTpgqPkuKrkvY3nva5cbiAgICAgICAgICAgICAgICBub2RlLnggKz0gd3N0ZXBzW25zXTtcbiAgICAgICAgICAgICAgICBub2RlLnkgKz0gaHN0ZXBzW25zXTtcbiAgICAgICAgICAgICAgICAvLyDorqHnrpfnp7vliqjlkI7oioLngrnnmoTog73ph49cbiAgICAgICAgICAgICAgICBjb25zdCBlbmVyZ3kgPSBjYWxjTm9kZUVuZXJneShub2RlLCBub2Rlcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmRtID0gTWF0aC5yYW5kb20oKTtcbiAgICAgICAgICAgICAgICBpZiAoZW5lcmd5IDwgbm9kZUVuZXJneSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlRW5lcmd5ID0gZW5lcmd5O1xuICAgICAgICAgICAgICAgICAgICBmb3VuZFNtYWxsZXJFbmVyZ3kgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZG0gPCBUICYmIHJkbSA+IFRfTUlOKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVFbmVyZ3kgPSBlbmVyZ3k7XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kU21hbGxlckVuZXJneSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyDlm57lvZLljp/kvY1cbiAgICAgICAgICAgICAgICAgICAgbm9kZS54IC09IHdzdGVwc1tuc107XG4gICAgICAgICAgICAgICAgICAgIG5vZGUueSAtPSBoc3RlcHNbbnNdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoVCA+IFRfTUlOKSB7XG4gICAgICAgIFQgKj0gUjtcbiAgICB9XG4gICAgLy8g6YeN5paw6K6h566X5Zu+5pW05L2T55qE6IO96YePXG4gICAgaWYgKGZvdW5kU21hbGxlckVuZXJneSkge1xuICAgICAgICByZXR1cm4gY2FsY0VuZXJneShub2Rlcyk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuLy8g6K6h566X6IqC54K555qE6IO96YeP77yMXG5mdW5jdGlvbiBjYWxjTm9kZUVuZXJneShub2RlLCBub2Rlcykge1xuICAgIGxldCBlID0gMC4wO1xuICAgIGlmICgobm9kZS54IDwgMCkgfHwgKG5vZGUueSA8IDApIHx8XG4gICAgICAgIChub2RlLnggKyBub2RlLnNpemVbMF0gKyAyMCA+IGdyYXBoV2lkdGgpIHx8XG4gICAgICAgIChub2RlLnkgKyBub2RlLnNpemVbMV0gKyAyMCA+IGdyYXBoSGVpZ2h0KSkge1xuICAgICAgICBlICs9IDEwMDAwMDAwMDAwMDAuMDtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAobm9kZS5pZCAhPT0gbm9kZXNbaV0uaWQpIHtcbiAgICAgICAgICAgIGUgKz0gY2FsY05vZGVQYWlyKG5vZGUsIG5vZGVzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZTtcbn1cbmZ1bmN0aW9uIGxheW91dChub2RlcywgZWRnZXMpIHtcbiAgICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7IG5vZGVzLCBlZGdlcyB9O1xuICAgIH1cbiAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGF0ZUVkZ2UgPSBlZGdlcy5maWx0ZXIoKGVkZ2UpID0+IGVkZ2Uuc291cmNlID09PSBub2RlLmlkIHx8IGVkZ2UudGFyZ2V0ID09PSBub2RlLmlkKTtcbiAgICAgICAgbm9kZUVkZ2VNYXAuc2V0KG5vZGUsIHJlbGF0ZUVkZ2UpO1xuICAgIH0pO1xuICAgIC8vIDEuIOWIneWni+WMllxuICAgIC8vIOWwhm5vZGXmjInnhafov57mjqXmlbDov5vooYzmjpLluo9cbiAgICBub2Rlcy5zb3J0KChub2RlMSwgbm9kZTIpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgcmV0dXJuICgoX2EgPSBub2RlRWRnZU1hcC5nZXQobm9kZTEuaWQpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSAtICgoX2IgPSBub2RlRWRnZU1hcC5nZXQobm9kZTIuaWQpKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKTtcbiAgICB9KTtcbiAgICAvLyAyLiDorqHnrpflm77og73ph49cbiAgICBsZXQgbWluRW5lcmd5ID0gY2FsY0VuZXJneShub2Rlcyk7XG4gICAgbGV0IGRlU2FtZUNvdW50ID0gMjA7IC8vIGRlPTAgY291bnRcbiAgICBsZXQgZGUgPSAxOyAvLyBlbmVyZ3kgZGVsdGFcbiAgICBsZXQgcHJldkVuZXJneSA9IDA7XG4gICAgLy8g5a6a5LmJ5oC755qE6L+t5Luj5qyh5pWw44CC6LaF6L+H5bCx5YGc5o6J77yM6Ziy5q2i5q275b6q546vXG4gICAgY29uc3QgTUFYX0NPVU5UID0gNTA7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICB3aGlsZSAoZGVTYW1lQ291bnQgPiAwKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICAgIGlmIChjb3VudCA+PSBNQVhfQ09VTlQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVhID0gc2h1ZmZsZShub2RlcywgZWRnZXMpO1xuICAgICAgICBpZiAoZWEgIT09IDApIHtcbiAgICAgICAgICAgIHByZXZFbmVyZ3kgPSBlYTtcbiAgICAgICAgfVxuICAgICAgICBkZSA9IHByZXZFbmVyZ3kgLSBtaW5FbmVyZ3k7XG4gICAgICAgIG1pbkVuZXJneSA9IHByZXZFbmVyZ3k7XG4gICAgICAgIGlmIChkZSA9PT0gMCkge1xuICAgICAgICAgICAgLS1kZVNhbWVDb3VudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlU2FtZUNvdW50ID0gMjA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICBub2RlLnggPSBub2RlLnggLSBub2RlLnNpemVbMF0gLyAyO1xuICAgICAgICBub2RlLnkgPSBub2RlLnkgLSBub2RlLnNpemVbMV0gLyAyO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVzLFxuICAgICAgICBlZGdlcyxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgbGF5b3V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bXlzcWxXb3JrYmVuY2guanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/er/mysqlWorkbench.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/force/force-in-a-box.js": /*!*********************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/force/force-in-a-box.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return forceInABox; });\n/* harmony import */ var d3_force__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-force */ \"./node_modules/d3-force/src/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n\n\n// https://github.com/john-guerra/forceInABox/blob/master/src/forceInABox.js\nfunction forceInABox() {\n function constant(_) {\n return () => _;\n }\n let groupBy = (d) => {\n return d.cluster;\n };\n let forceNodeSize = constant(1);\n let forceCharge = constant(-1);\n let forceLinkDistance = constant(100);\n let forceLinkStrength = constant(0.1);\n let offset = [0, 0];\n let nodes = [];\n let nodesMap = {};\n let links = [];\n let centerX = 100;\n let centerY = 100;\n let foci = {\n none: {\n x: 0,\n y: 0,\n },\n };\n let templateNodes = [];\n let templateForce;\n let template = 'force';\n let enableGrouping = true;\n let strength = 0.1;\n function force(alpha) {\n if (!enableGrouping) {\n return force;\n }\n templateForce.tick();\n getFocisFromTemplate();\n for (let i = 0, n = nodes.length, node, k = alpha * strength; i < n; ++i) {\n node = nodes[i];\n node.vx += (foci[groupBy(node)].x - node.x) * k;\n node.vy += (foci[groupBy(node)].y - node.y) * k;\n }\n }\n function initialize() {\n if (!nodes)\n return;\n initializeWithForce();\n }\n function initializeWithForce() {\n if (!nodes || !nodes.length) {\n return;\n }\n if (groupBy(nodes[0]) === undefined) {\n throw Error(\"Couldnt find the grouping attribute for the nodes. Make sure to set it up with forceInABox.groupBy('clusterAttr') before calling .links()\");\n }\n // checkLinksAsObjects();\n const net = getGroupsGraph();\n templateForce = d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceSimulation\"](net.nodes)\n .force('x', d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceX\"](centerX).strength(0.1))\n .force('y', d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceY\"](centerY).strength(0.1))\n .force('collide', d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceCollide\"]((d) => d.r).iterations(4))\n .force('charge', d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceManyBody\"]().strength(forceCharge))\n .force('links', d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceLink\"](net.nodes.length ? net.links : [])\n .distance(forceLinkDistance)\n .strength(forceLinkStrength));\n templateNodes = templateForce.nodes();\n getFocisFromTemplate();\n }\n function getGroupsGraph() {\n const gnodes = [];\n const glinks = [];\n const dNodes = {};\n let clustersList = [];\n let clustersCounts = {};\n let clustersLinks = [];\n clustersCounts = computeClustersNodeCounts(nodes);\n clustersLinks = computeClustersLinkCounts(links);\n clustersList = Object.keys(clustersCounts);\n clustersList.forEach((key, index) => {\n const val = clustersCounts[key];\n // Uses approx meta-node size\n gnodes.push({\n id: key,\n size: val.count,\n r: Math.sqrt(val.sumforceNodeSize / Math.PI),\n });\n dNodes[key] = index;\n });\n clustersLinks.forEach((l) => {\n const sourceTerminal = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(l, 'source');\n const targetTerminal = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(l, 'target');\n const source = dNodes[sourceTerminal];\n const target = dNodes[targetTerminal];\n if (source !== undefined && target !== undefined) {\n glinks.push({\n source,\n target,\n count: l.count,\n });\n }\n });\n return {\n nodes: gnodes,\n links: glinks,\n };\n }\n function computeClustersNodeCounts(nodes) {\n const clustersCounts = {};\n nodes.forEach((d) => {\n const key = groupBy(d);\n if (!clustersCounts[key]) {\n clustersCounts[key] = {\n count: 0,\n sumforceNodeSize: 0,\n };\n }\n });\n nodes.forEach((d) => {\n const key = groupBy(d);\n const nodeSize = forceNodeSize(d);\n const tmpCount = clustersCounts[key];\n tmpCount.count = tmpCount.count + 1;\n tmpCount.sumforceNodeSize =\n tmpCount.sumforceNodeSize + Math.PI * (nodeSize * nodeSize) * 1.3;\n clustersCounts[key] = tmpCount;\n });\n return clustersCounts;\n }\n function computeClustersLinkCounts(links) {\n const dClusterLinks = {};\n const clusterLinks = [];\n links.forEach((l) => {\n const key = getLinkKey(l);\n let count = 0;\n if (dClusterLinks[key] !== undefined) {\n count = dClusterLinks[key];\n }\n count += 1;\n dClusterLinks[key] = count;\n });\n // @ts-ignore\n const entries = Object.entries(dClusterLinks);\n entries.forEach(([key, count]) => {\n const source = key.split('~')[0];\n const target = key.split('~')[1];\n if (source !== undefined && target !== undefined) {\n clusterLinks.push({\n source,\n target,\n count,\n });\n }\n });\n return clusterLinks;\n }\n function getFocisFromTemplate() {\n foci = {\n none: {\n x: 0,\n y: 0,\n },\n };\n templateNodes.forEach((d) => {\n foci[d.id] = {\n x: d.x - offset[0],\n y: d.y - offset[1],\n };\n });\n return foci;\n }\n function getLinkKey(l) {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(l, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(l, 'target');\n const sourceID = groupBy(nodesMap[source]);\n const targetID = groupBy(nodesMap[target]);\n return sourceID <= targetID\n ? `${sourceID}~${targetID}`\n : `${targetID}~${sourceID}`;\n }\n function genNodesMap(nodes) {\n nodesMap = {};\n nodes.forEach((node) => {\n nodesMap[node.id] = node;\n });\n }\n function setTemplate(x) {\n if (!arguments.length)\n return template;\n template = x;\n initialize();\n return force;\n }\n function setGroupBy(x) {\n if (!arguments.length)\n return groupBy;\n if (typeof x === 'string') {\n groupBy = (d) => {\n return d[x];\n };\n return force;\n }\n groupBy = x;\n return force;\n }\n function setEnableGrouping(x) {\n if (!arguments.length)\n return enableGrouping;\n enableGrouping = x;\n return force;\n }\n function setStrength(x) {\n if (!arguments.length)\n return strength;\n strength = x;\n return force;\n }\n function setCenterX(_) {\n if (arguments.length) {\n centerX = _;\n return force;\n }\n return centerX;\n }\n function setCenterY(_) {\n if (arguments.length) {\n centerY = _;\n return force;\n }\n return centerY;\n }\n function setNodes(_) {\n if (arguments.length) {\n genNodesMap(_ || []);\n nodes = _ || [];\n return force;\n }\n return nodes;\n }\n function setLinks(_) {\n if (arguments.length) {\n links = _ || [];\n initialize();\n return force;\n }\n return links;\n }\n function setForceNodeSize(_) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceNodeSize = _;\n }\n else {\n forceNodeSize = constant(+_);\n }\n initialize();\n return force;\n }\n return forceNodeSize;\n }\n function setForceCharge(_) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceCharge = _;\n }\n else {\n forceCharge = constant(+_);\n }\n initialize();\n return force;\n }\n return forceCharge;\n }\n function setForceLinkDistance(_) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceLinkDistance = _;\n }\n else {\n forceLinkDistance = constant(+_);\n }\n initialize();\n return force;\n }\n return forceLinkDistance;\n }\n function setForceLinkStrength(_) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceLinkStrength = _;\n }\n else {\n forceLinkStrength = constant(+_);\n }\n initialize();\n return force;\n }\n return forceLinkStrength;\n }\n function setOffset(_) {\n if (arguments.length) {\n offset = _;\n return force;\n }\n return offset;\n }\n force.initialize = (_) => {\n nodes = _;\n initialize();\n };\n force.template = setTemplate;\n force.groupBy = setGroupBy;\n force.enableGrouping = setEnableGrouping;\n force.strength = setStrength;\n force.centerX = setCenterX;\n force.centerY = setCenterY;\n force.nodes = setNodes;\n force.links = setLinks;\n force.forceNodeSize = setForceNodeSize;\n // Legacy support\n force.nodeSize = force.forceNodeSize;\n force.forceCharge = setForceCharge;\n force.forceLinkDistance = setForceLinkDistance;\n force.forceLinkStrength = setForceLinkStrength;\n force.offset = setOffset;\n force.getFocis = getFocisFromTemplate;\n return force;\n}\n//# sourceMappingURL=force-in-a-box.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZS9mb3JjZS1pbi1hLWJveC5qcz81YTAzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9DO0FBQ1M7QUFDN0M7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUVBQXFFLE9BQU87QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isd0RBQ0k7QUFDNUIsd0JBQXdCLCtDQUFjO0FBQ3RDLHdCQUF3QiwrQ0FBYztBQUN0Qyw4QkFBOEIscURBQW9CO0FBQ2xELDZCQUE2QixzREFBcUI7QUFDbEQsNEJBQTRCLGtEQUNOO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0EsbUNBQW1DLDZEQUFlO0FBQ2xELG1DQUFtQyw2REFBZTtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDZEQUFlO0FBQ3RDLHVCQUF1Qiw2REFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsU0FBUyxHQUFHLFNBQVM7QUFDdEMsaUJBQWlCLFNBQVMsR0FBRyxTQUFTO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2UvZm9yY2UtaW4tYS1ib3guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBkM0ZvcmNlIGZyb20gJ2QzLWZvcmNlJztcbmltcG9ydCB7IGdldEVkZ2VUZXJtaW5hbCB9IGZyb20gJy4uLy4uL3V0aWwnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2pvaG4tZ3VlcnJhL2ZvcmNlSW5BQm94L2Jsb2IvbWFzdGVyL3NyYy9mb3JjZUluQUJveC5qc1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9yY2VJbkFCb3goKSB7XG4gICAgZnVuY3Rpb24gY29uc3RhbnQoXykge1xuICAgICAgICByZXR1cm4gKCkgPT4gXztcbiAgICB9XG4gICAgbGV0IGdyb3VwQnkgPSAoZCkgPT4ge1xuICAgICAgICByZXR1cm4gZC5jbHVzdGVyO1xuICAgIH07XG4gICAgbGV0IGZvcmNlTm9kZVNpemUgPSBjb25zdGFudCgxKTtcbiAgICBsZXQgZm9yY2VDaGFyZ2UgPSBjb25zdGFudCgtMSk7XG4gICAgbGV0IGZvcmNlTGlua0Rpc3RhbmNlID0gY29uc3RhbnQoMTAwKTtcbiAgICBsZXQgZm9yY2VMaW5rU3RyZW5ndGggPSBjb25zdGFudCgwLjEpO1xuICAgIGxldCBvZmZzZXQgPSBbMCwgMF07XG4gICAgbGV0IG5vZGVzID0gW107XG4gICAgbGV0IG5vZGVzTWFwID0ge307XG4gICAgbGV0IGxpbmtzID0gW107XG4gICAgbGV0IGNlbnRlclggPSAxMDA7XG4gICAgbGV0IGNlbnRlclkgPSAxMDA7XG4gICAgbGV0IGZvY2kgPSB7XG4gICAgICAgIG5vbmU6IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgIH07XG4gICAgbGV0IHRlbXBsYXRlTm9kZXMgPSBbXTtcbiAgICBsZXQgdGVtcGxhdGVGb3JjZTtcbiAgICBsZXQgdGVtcGxhdGUgPSAnZm9yY2UnO1xuICAgIGxldCBlbmFibGVHcm91cGluZyA9IHRydWU7XG4gICAgbGV0IHN0cmVuZ3RoID0gMC4xO1xuICAgIGZ1bmN0aW9uIGZvcmNlKGFscGhhKSB7XG4gICAgICAgIGlmICghZW5hYmxlR3JvdXBpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JjZTtcbiAgICAgICAgfVxuICAgICAgICB0ZW1wbGF0ZUZvcmNlLnRpY2soKTtcbiAgICAgICAgZ2V0Rm9jaXNGcm9tVGVtcGxhdGUoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBub2Rlcy5sZW5ndGgsIG5vZGUsIGsgPSBhbHBoYSAqIHN0cmVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAgICAgICBub2RlLnZ4ICs9IChmb2NpW2dyb3VwQnkobm9kZSldLnggLSBub2RlLngpICogaztcbiAgICAgICAgICAgIG5vZGUudnkgKz0gKGZvY2lbZ3JvdXBCeShub2RlKV0ueSAtIG5vZGUueSkgKiBrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgICAgIGlmICghbm9kZXMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRpYWxpemVXaXRoRm9yY2UoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdGlhbGl6ZVdpdGhGb3JjZSgpIHtcbiAgICAgICAgaWYgKCFub2RlcyB8fCAhbm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdyb3VwQnkobm9kZXNbMF0pID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwiQ291bGRudCBmaW5kIHRoZSBncm91cGluZyBhdHRyaWJ1dGUgZm9yIHRoZSBub2Rlcy4gTWFrZSBzdXJlIHRvIHNldCBpdCB1cCB3aXRoIGZvcmNlSW5BQm94Lmdyb3VwQnkoJ2NsdXN0ZXJBdHRyJykgYmVmb3JlIGNhbGxpbmcgLmxpbmtzKClcIik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2hlY2tMaW5rc0FzT2JqZWN0cygpO1xuICAgICAgICBjb25zdCBuZXQgPSBnZXRHcm91cHNHcmFwaCgpO1xuICAgICAgICB0ZW1wbGF0ZUZvcmNlID0gZDNGb3JjZVxuICAgICAgICAgICAgLmZvcmNlU2ltdWxhdGlvbihuZXQubm9kZXMpXG4gICAgICAgICAgICAuZm9yY2UoJ3gnLCBkM0ZvcmNlLmZvcmNlWChjZW50ZXJYKS5zdHJlbmd0aCgwLjEpKVxuICAgICAgICAgICAgLmZvcmNlKCd5JywgZDNGb3JjZS5mb3JjZVkoY2VudGVyWSkuc3RyZW5ndGgoMC4xKSlcbiAgICAgICAgICAgIC5mb3JjZSgnY29sbGlkZScsIGQzRm9yY2UuZm9yY2VDb2xsaWRlKChkKSA9PiBkLnIpLml0ZXJhdGlvbnMoNCkpXG4gICAgICAgICAgICAuZm9yY2UoJ2NoYXJnZScsIGQzRm9yY2UuZm9yY2VNYW55Qm9keSgpLnN0cmVuZ3RoKGZvcmNlQ2hhcmdlKSlcbiAgICAgICAgICAgIC5mb3JjZSgnbGlua3MnLCBkM0ZvcmNlXG4gICAgICAgICAgICAuZm9yY2VMaW5rKG5ldC5ub2Rlcy5sZW5ndGggPyBuZXQubGlua3MgOiBbXSlcbiAgICAgICAgICAgIC5kaXN0YW5jZShmb3JjZUxpbmtEaXN0YW5jZSlcbiAgICAgICAgICAgIC5zdHJlbmd0aChmb3JjZUxpbmtTdHJlbmd0aCkpO1xuICAgICAgICB0ZW1wbGF0ZU5vZGVzID0gdGVtcGxhdGVGb3JjZS5ub2RlcygpO1xuICAgICAgICBnZXRGb2Npc0Zyb21UZW1wbGF0ZSgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRHcm91cHNHcmFwaCgpIHtcbiAgICAgICAgY29uc3QgZ25vZGVzID0gW107XG4gICAgICAgIGNvbnN0IGdsaW5rcyA9IFtdO1xuICAgICAgICBjb25zdCBkTm9kZXMgPSB7fTtcbiAgICAgICAgbGV0IGNsdXN0ZXJzTGlzdCA9IFtdO1xuICAgICAgICBsZXQgY2x1c3RlcnNDb3VudHMgPSB7fTtcbiAgICAgICAgbGV0IGNsdXN0ZXJzTGlua3MgPSBbXTtcbiAgICAgICAgY2x1c3RlcnNDb3VudHMgPSBjb21wdXRlQ2x1c3RlcnNOb2RlQ291bnRzKG5vZGVzKTtcbiAgICAgICAgY2x1c3RlcnNMaW5rcyA9IGNvbXB1dGVDbHVzdGVyc0xpbmtDb3VudHMobGlua3MpO1xuICAgICAgICBjbHVzdGVyc0xpc3QgPSBPYmplY3Qua2V5cyhjbHVzdGVyc0NvdW50cyk7XG4gICAgICAgIGNsdXN0ZXJzTGlzdC5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSBjbHVzdGVyc0NvdW50c1trZXldO1xuICAgICAgICAgICAgLy8gVXNlcyBhcHByb3ggbWV0YS1ub2RlIHNpemVcbiAgICAgICAgICAgIGdub2Rlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDoga2V5LFxuICAgICAgICAgICAgICAgIHNpemU6IHZhbC5jb3VudCxcbiAgICAgICAgICAgICAgICByOiBNYXRoLnNxcnQodmFsLnN1bWZvcmNlTm9kZVNpemUgLyBNYXRoLlBJKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZE5vZGVzW2tleV0gPSBpbmRleDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNsdXN0ZXJzTGlua3MuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlVGVybWluYWwgPSBnZXRFZGdlVGVybWluYWwobCwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0VGVybWluYWwgPSBnZXRFZGdlVGVybWluYWwobCwgJ3RhcmdldCcpO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gZE5vZGVzW3NvdXJjZVRlcm1pbmFsXTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGROb2Rlc1t0YXJnZXRUZXJtaW5hbF07XG4gICAgICAgICAgICBpZiAoc291cmNlICE9PSB1bmRlZmluZWQgJiYgdGFyZ2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBnbGlua3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBjb3VudDogbC5jb3VudCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlczogZ25vZGVzLFxuICAgICAgICAgICAgbGlua3M6IGdsaW5rcyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY29tcHV0ZUNsdXN0ZXJzTm9kZUNvdW50cyhub2Rlcykge1xuICAgICAgICBjb25zdCBjbHVzdGVyc0NvdW50cyA9IHt9O1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBncm91cEJ5KGQpO1xuICAgICAgICAgICAgaWYgKCFjbHVzdGVyc0NvdW50c1trZXldKSB7XG4gICAgICAgICAgICAgICAgY2x1c3RlcnNDb3VudHNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHN1bWZvcmNlTm9kZVNpemU6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG5vZGVzLmZvckVhY2goKGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGdyb3VwQnkoZCk7XG4gICAgICAgICAgICBjb25zdCBub2RlU2l6ZSA9IGZvcmNlTm9kZVNpemUoZCk7XG4gICAgICAgICAgICBjb25zdCB0bXBDb3VudCA9IGNsdXN0ZXJzQ291bnRzW2tleV07XG4gICAgICAgICAgICB0bXBDb3VudC5jb3VudCA9IHRtcENvdW50LmNvdW50ICsgMTtcbiAgICAgICAgICAgIHRtcENvdW50LnN1bWZvcmNlTm9kZVNpemUgPVxuICAgICAgICAgICAgICAgIHRtcENvdW50LnN1bWZvcmNlTm9kZVNpemUgKyBNYXRoLlBJICogKG5vZGVTaXplICogbm9kZVNpemUpICogMS4zO1xuICAgICAgICAgICAgY2x1c3RlcnNDb3VudHNba2V5XSA9IHRtcENvdW50O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNsdXN0ZXJzQ291bnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb21wdXRlQ2x1c3RlcnNMaW5rQ291bnRzKGxpbmtzKSB7XG4gICAgICAgIGNvbnN0IGRDbHVzdGVyTGlua3MgPSB7fTtcbiAgICAgICAgY29uc3QgY2x1c3RlckxpbmtzID0gW107XG4gICAgICAgIGxpbmtzLmZvckVhY2goKGwpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldExpbmtLZXkobCk7XG4gICAgICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICAgICAgaWYgKGRDbHVzdGVyTGlua3Nba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY291bnQgPSBkQ2x1c3RlckxpbmtzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3VudCArPSAxO1xuICAgICAgICAgICAgZENsdXN0ZXJMaW5rc1trZXldID0gY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhkQ2x1c3RlckxpbmtzKTtcbiAgICAgICAgZW50cmllcy5mb3JFYWNoKChba2V5LCBjb3VudF0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGtleS5zcGxpdCgnficpWzBdO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0ga2V5LnNwbGl0KCd+JylbMV07XG4gICAgICAgICAgICBpZiAoc291cmNlICE9PSB1bmRlZmluZWQgJiYgdGFyZ2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjbHVzdGVyTGlua3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBjb3VudCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjbHVzdGVyTGlua3M7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEZvY2lzRnJvbVRlbXBsYXRlKCkge1xuICAgICAgICBmb2NpID0ge1xuICAgICAgICAgICAgbm9uZToge1xuICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIHRlbXBsYXRlTm9kZXMuZm9yRWFjaCgoZCkgPT4ge1xuICAgICAgICAgICAgZm9jaVtkLmlkXSA9IHtcbiAgICAgICAgICAgICAgICB4OiBkLnggLSBvZmZzZXRbMF0sXG4gICAgICAgICAgICAgICAgeTogZC55IC0gb2Zmc2V0WzFdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmb2NpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRMaW5rS2V5KGwpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gZ2V0RWRnZVRlcm1pbmFsKGwsICdzb3VyY2UnKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGwsICd0YXJnZXQnKTtcbiAgICAgICAgY29uc3Qgc291cmNlSUQgPSBncm91cEJ5KG5vZGVzTWFwW3NvdXJjZV0pO1xuICAgICAgICBjb25zdCB0YXJnZXRJRCA9IGdyb3VwQnkobm9kZXNNYXBbdGFyZ2V0XSk7XG4gICAgICAgIHJldHVybiBzb3VyY2VJRCA8PSB0YXJnZXRJRFxuICAgICAgICAgICAgPyBgJHtzb3VyY2VJRH1+JHt0YXJnZXRJRH1gXG4gICAgICAgICAgICA6IGAke3RhcmdldElEfX4ke3NvdXJjZUlEfWA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdlbk5vZGVzTWFwKG5vZGVzKSB7XG4gICAgICAgIG5vZGVzTWFwID0ge307XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIG5vZGVzTWFwW25vZGUuaWRdID0gbm9kZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNldFRlbXBsYXRlKHgpIHtcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlO1xuICAgICAgICB0ZW1wbGF0ZSA9IHg7XG4gICAgICAgIGluaXRpYWxpemUoKTtcbiAgICAgICAgcmV0dXJuIGZvcmNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXRHcm91cEJ5KHgpIHtcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIGdyb3VwQnk7XG4gICAgICAgIGlmICh0eXBlb2YgeCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGdyb3VwQnkgPSAoZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBkW3hdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBmb3JjZTtcbiAgICAgICAgfVxuICAgICAgICBncm91cEJ5ID0geDtcbiAgICAgICAgcmV0dXJuIGZvcmNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXRFbmFibGVHcm91cGluZyh4KSB7XG4gICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBlbmFibGVHcm91cGluZztcbiAgICAgICAgZW5hYmxlR3JvdXBpbmcgPSB4O1xuICAgICAgICByZXR1cm4gZm9yY2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNldFN0cmVuZ3RoKHgpIHtcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIHN0cmVuZ3RoO1xuICAgICAgICBzdHJlbmd0aCA9IHg7XG4gICAgICAgIHJldHVybiBmb3JjZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0Q2VudGVyWChfKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjZW50ZXJYID0gXztcbiAgICAgICAgICAgIHJldHVybiBmb3JjZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2VudGVyWDtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0Q2VudGVyWShfKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjZW50ZXJZID0gXztcbiAgICAgICAgICAgIHJldHVybiBmb3JjZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2VudGVyWTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0Tm9kZXMoXykge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgZ2VuTm9kZXNNYXAoXyB8fCBbXSk7XG4gICAgICAgICAgICBub2RlcyA9IF8gfHwgW107XG4gICAgICAgICAgICByZXR1cm4gZm9yY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXRMaW5rcyhfKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBsaW5rcyA9IF8gfHwgW107XG4gICAgICAgICAgICBpbml0aWFsaXplKCk7XG4gICAgICAgICAgICByZXR1cm4gZm9yY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpbmtzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXRGb3JjZU5vZGVTaXplKF8pIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgXyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGZvcmNlTm9kZVNpemUgPSBfO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yY2VOb2RlU2l6ZSA9IGNvbnN0YW50KCtfKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluaXRpYWxpemUoKTtcbiAgICAgICAgICAgIHJldHVybiBmb3JjZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9yY2VOb2RlU2l6ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0Rm9yY2VDaGFyZ2UoXykge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBfID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgZm9yY2VDaGFyZ2UgPSBfO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yY2VDaGFyZ2UgPSBjb25zdGFudCgrXyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbml0aWFsaXplKCk7XG4gICAgICAgICAgICByZXR1cm4gZm9yY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmNlQ2hhcmdlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXRGb3JjZUxpbmtEaXN0YW5jZShfKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIF8gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBmb3JjZUxpbmtEaXN0YW5jZSA9IF87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JjZUxpbmtEaXN0YW5jZSA9IGNvbnN0YW50KCtfKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluaXRpYWxpemUoKTtcbiAgICAgICAgICAgIHJldHVybiBmb3JjZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9yY2VMaW5rRGlzdGFuY2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNldEZvcmNlTGlua1N0cmVuZ3RoKF8pIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgXyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGZvcmNlTGlua1N0cmVuZ3RoID0gXztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcmNlTGlua1N0cmVuZ3RoID0gY29uc3RhbnQoK18pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5pdGlhbGl6ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcmNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JjZUxpbmtTdHJlbmd0aDtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0T2Zmc2V0KF8pIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF87XG4gICAgICAgICAgICByZXR1cm4gZm9yY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG4gICAgZm9yY2UuaW5pdGlhbGl6ZSA9IChfKSA9PiB7XG4gICAgICAgIG5vZGVzID0gXztcbiAgICAgICAgaW5pdGlhbGl6ZSgpO1xuICAgIH07XG4gICAgZm9yY2UudGVtcGxhdGUgPSBzZXRUZW1wbGF0ZTtcbiAgICBmb3JjZS5ncm91cEJ5ID0gc2V0R3JvdXBCeTtcbiAgICBmb3JjZS5lbmFibGVHcm91cGluZyA9IHNldEVuYWJsZUdyb3VwaW5nO1xuICAgIGZvcmNlLnN0cmVuZ3RoID0gc2V0U3RyZW5ndGg7XG4gICAgZm9yY2UuY2VudGVyWCA9IHNldENlbnRlclg7XG4gICAgZm9yY2UuY2VudGVyWSA9IHNldENlbnRlclk7XG4gICAgZm9yY2Uubm9kZXMgPSBzZXROb2RlcztcbiAgICBmb3JjZS5saW5rcyA9IHNldExpbmtzO1xuICAgIGZvcmNlLmZvcmNlTm9kZVNpemUgPSBzZXRGb3JjZU5vZGVTaXplO1xuICAgIC8vIExlZ2FjeSBzdXBwb3J0XG4gICAgZm9yY2Uubm9kZVNpemUgPSBmb3JjZS5mb3JjZU5vZGVTaXplO1xuICAgIGZvcmNlLmZvcmNlQ2hhcmdlID0gc2V0Rm9yY2VDaGFyZ2U7XG4gICAgZm9yY2UuZm9yY2VMaW5rRGlzdGFuY2UgPSBzZXRGb3JjZUxpbmtEaXN0YW5jZTtcbiAgICBmb3JjZS5mb3JjZUxpbmtTdHJlbmd0aCA9IHNldEZvcmNlTGlua1N0cmVuZ3RoO1xuICAgIGZvcmNlLm9mZnNldCA9IHNldE9mZnNldDtcbiAgICBmb3JjZS5nZXRGb2NpcyA9IGdldEZvY2lzRnJvbVRlbXBsYXRlO1xuICAgIHJldHVybiBmb3JjZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcmNlLWluLWEtYm94LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/force/force-in-a-box.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/force/force.js": /*!************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/force/force.js ***! \************************************************************/ /*! exports provided: ForceLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ForceLayout\", function() { return ForceLayout; });\n/* harmony import */ var d3_force__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-force */ \"./node_modules/d3-force/src/index.js\");\n/* harmony import */ var _force_in_a_box__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./force-in-a-box */ \"./node_modules/@antv/layout/es/layout/force/force-in-a-box.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ \"./node_modules/@antv/layout/es/layout/constants.js\");\n/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\n\n\n\n\n/**\n * 经典力导布局 force-directed\n */\nclass ForceLayout extends _base__WEBPACK_IMPORTED_MODULE_3__[\"Base\"] {\n constructor(options) {\n super();\n /** 向心力作用点 */\n this.center = [0, 0];\n /** 节点作用力 */\n this.nodeStrength = null;\n /** 边的作用力, 默认为根据节点的入度出度自适应 */\n this.edgeStrength = null;\n /** 是否防止节点相互覆盖 */\n this.preventOverlap = false;\n /** 聚类节点作用力 */\n this.clusterNodeStrength = null;\n /** 聚类边作用力 */\n this.clusterEdgeStrength = null;\n /** 聚类边长度 */\n this.clusterEdgeDistance = null;\n /** 聚类节点大小 / 直径,直径越大,越分散 */\n this.clusterNodeSize = null;\n /** 用于 foci 的力 */\n this.clusterFociStrength = null;\n /** 默认边长度 */\n this.linkDistance = 50;\n /** 迭代阈值的衰减率 [0, 1],0.028 对应最大迭代数为 300 */\n this.alphaDecay = 0.028;\n /** 停止迭代的阈值 */\n this.alphaMin = 0.001;\n /** 当前阈值 */\n this.alpha = 0.3;\n /** 防止重叠的力强度 */\n this.collideStrength = 1;\n /** 是否启用web worker。前提是在web worker里执行布局,否则无效\t*/\n this.workerEnabled = false;\n this.tick = () => { };\n /** 布局完成回调 */\n this.onLayoutEnd = () => { };\n /** 是否正在布局 */\n this.ticking = undefined;\n if (options) {\n this.updateCfg(options);\n }\n }\n getDefaultCfg() {\n return {\n center: [0, 0],\n nodeStrength: null,\n edgeStrength: null,\n preventOverlap: false,\n nodeSize: undefined,\n nodeSpacing: undefined,\n linkDistance: 50,\n forceSimulation: null,\n alphaDecay: 0.028,\n alphaMin: 0.001,\n alpha: 0.3,\n collideStrength: 1,\n clustering: false,\n clusterNodeStrength: -1,\n clusterEdgeStrength: 0.1,\n clusterEdgeDistance: 100,\n clusterFociStrength: 0.8,\n clusterNodeSize: 10,\n tick() { },\n onLayoutEnd() { },\n // 是否启用web worker。前提是在web worker里执行布局,否则无效\n workerEnabled: false\n };\n }\n /**\n * 初始化\n * @param {object} data 数据\n */\n init(data) {\n const self = this;\n self.nodes = data.nodes || [];\n const edges = data.edges || [];\n self.edges = edges.map((edge) => {\n const res = {};\n const expectKeys = [\"targetNode\", \"sourceNode\", \"startPoint\", \"endPoint\"];\n Object.keys(edge).forEach((key) => {\n if (!(expectKeys.indexOf(key) > -1)) {\n res[key] = edge[key];\n }\n });\n return res;\n });\n self.ticking = false;\n }\n /**\n * 执行布局\n */\n execute(reloadData) {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n // 如果正在布局,忽略布局请求\n if (self.ticking) {\n return;\n }\n let simulation = self.forceSimulation;\n const alphaMin = self.alphaMin;\n const alphaDecay = self.alphaDecay;\n const alpha = self.alpha;\n if (!simulation) {\n try {\n // 定义节点的力\n const nodeForce = d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceManyBody\"]();\n if (self.nodeStrength) {\n nodeForce.strength(self.nodeStrength);\n }\n simulation = d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceSimulation\"]().nodes(nodes);\n if (self.clustering) {\n const clusterForce = Object(_force_in_a_box__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n clusterForce\n .centerX(self.center[0])\n .centerY(self.center[1])\n .template(\"force\")\n .strength(self.clusterFociStrength);\n if (edges) {\n clusterForce.links(edges);\n }\n if (nodes) {\n clusterForce.nodes(nodes);\n }\n clusterForce\n .forceLinkDistance(self.clusterEdgeDistance)\n .forceLinkStrength(self.clusterEdgeStrength)\n .forceCharge(self.clusterNodeStrength)\n .forceNodeSize(self.clusterNodeSize);\n self.clusterForce = clusterForce;\n simulation.force(\"group\", clusterForce);\n }\n simulation\n .force(\"center\", d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceCenter\"](self.center[0], self.center[1]))\n .force(\"charge\", nodeForce)\n .alpha(alpha)\n .alphaDecay(alphaDecay)\n .alphaMin(alphaMin);\n if (self.preventOverlap) {\n self.overlapProcess(simulation);\n }\n // 如果有边,定义边的力\n if (edges) {\n // d3 的 forceLayout 会重新生成边的数据模型,为了避免污染源数据\n const edgeForce = d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceLink\"]()\n .id((d) => d.id)\n .links(edges);\n if (self.edgeStrength) {\n edgeForce.strength(self.edgeStrength);\n }\n if (self.linkDistance) {\n edgeForce.distance(self.linkDistance);\n }\n self.edgeForce = edgeForce;\n simulation.force(\"link\", edgeForce);\n }\n if (self.workerEnabled && !isInWorker()) {\n // 如果不是运行在web worker里,不用web worker布局\n self.workerEnabled = false;\n console.warn(\"workerEnabled option is only supported when running in web worker.\");\n }\n if (!self.workerEnabled) {\n simulation\n .on(\"tick\", () => {\n self.tick();\n })\n .on(\"end\", () => {\n self.ticking = false;\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n });\n self.ticking = true;\n }\n else {\n // worker is enabled\n simulation.stop();\n const totalTicks = getSimulationTicks(simulation);\n for (let currentTick = 1; currentTick <= totalTicks; currentTick++) {\n simulation.tick();\n // currentTick starts from 1.\n postMessage({\n nodes,\n currentTick,\n totalTicks,\n type: _constants__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].TICK\n }, undefined);\n }\n self.ticking = false;\n }\n self.forceSimulation = simulation;\n self.ticking = true;\n }\n catch (e) {\n self.ticking = false;\n console.warn(e);\n }\n }\n else {\n if (reloadData) {\n if (self.clustering && self.clusterForce) {\n self.clusterForce.nodes(nodes);\n self.clusterForce.links(edges);\n }\n simulation.nodes(nodes);\n if (edges && self.edgeForce)\n self.edgeForce.links(edges);\n else if (edges && !self.edgeForce) {\n // d3 的 forceLayout 会重新生成边的数据模型,为了避免污染源数据\n const edgeForce = d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceLink\"]()\n .id((d) => d.id)\n .links(edges);\n if (self.edgeStrength) {\n edgeForce.strength(self.edgeStrength);\n }\n if (self.linkDistance) {\n edgeForce.distance(self.linkDistance);\n }\n self.edgeForce = edgeForce;\n simulation.force(\"link\", edgeForce);\n }\n }\n if (self.preventOverlap) {\n self.overlapProcess(simulation);\n }\n simulation.alpha(alpha).restart();\n this.ticking = true;\n }\n }\n /**\n * 防止重叠\n * @param {object} simulation 力模拟模型\n */\n overlapProcess(simulation) {\n const self = this;\n const nodeSize = self.nodeSize;\n const nodeSpacing = self.nodeSpacing;\n let nodeSizeFunc;\n let nodeSpacingFunc;\n const collideStrength = self.collideStrength;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n }\n else {\n nodeSpacingFunc = () => 0;\n }\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return res / 2 + nodeSpacingFunc(d);\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isObject\"])(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return res / 2 + nodeSpacingFunc(d);\n }\n return d.size / 2 + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(nodeSize)) {\n nodeSizeFunc = (d) => {\n const size = nodeSize(d);\n return size + nodeSpacingFunc(d);\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(nodeSize)) {\n const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n const radius = larger / 2;\n nodeSizeFunc = (d) => radius + nodeSpacingFunc(d);\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(nodeSize)) {\n const radius = nodeSize / 2;\n nodeSizeFunc = (d) => radius + nodeSpacingFunc(d);\n }\n else {\n nodeSizeFunc = () => 10;\n }\n // forceCollide's parameter is a radius\n simulation.force(\"collisionForce\", d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceCollide\"](nodeSizeFunc).strength(collideStrength));\n }\n /**\n * 更新布局配置,但不执行布局\n * @param {object} cfg 需要更新的配置项\n */\n updateCfg(cfg) {\n const self = this;\n if (self.ticking) {\n self.forceSimulation.stop();\n self.ticking = false;\n }\n self.forceSimulation = null;\n Object.assign(self, cfg);\n }\n destroy() {\n const self = this;\n if (self.ticking) {\n self.forceSimulation.stop();\n self.ticking = false;\n }\n self.nodes = null;\n self.edges = null;\n self.destroyed = true;\n }\n}\n// Return total ticks of d3-force simulation\nfunction getSimulationTicks(simulation) {\n const alphaMin = simulation.alphaMin();\n const alphaTarget = simulation.alphaTarget();\n const alpha = simulation.alpha();\n const totalTicksFloat = Math.log((alphaMin - alphaTarget) / (alpha - alphaTarget)) /\n Math.log(1 - simulation.alphaDecay());\n const totalTicks = Math.ceil(totalTicksFloat);\n return totalTicks;\n}\n// 判断是否运行在web worker里\nfunction isInWorker() {\n // eslint-disable-next-line no-undef\n return (typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope);\n}\n//# sourceMappingURL=force.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZS9mb3JjZS5qcz9hMmMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDb0M7QUFDTztBQUMwQjtBQUN0QztBQUNlO0FBQzlDO0FBQ0E7QUFDQTtBQUNPLDBCQUEwQiwwQ0FBSTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsRUFBRTtBQUN0QiwyQkFBMkIsRUFBRTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msc0RBQXFCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qix3REFBdUI7QUFDcEQ7QUFDQSx5Q0FBeUMsK0RBQVc7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxvREFBbUI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0Msa0RBQ0o7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsMkJBQTJCO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyx5REFBYztBQUNoRCx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0Msa0RBQ0o7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNEQUFRO0FBQ3BCO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQVU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixxREFBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isc0RBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix3REFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHFEQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLHFEQUFvQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2ZvcmNlL2ZvcmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IHJhbmRvbSBsYXlvdXRcbiAqIEBhdXRob3Igc2hpd3Uud3l5QGFudGZpbi5jb21cbiAqL1xuaW1wb3J0ICogYXMgZDNGb3JjZSBmcm9tIFwiZDMtZm9yY2VcIjtcbmltcG9ydCBmb3JjZUluQUJveCBmcm9tIFwiLi9mb3JjZS1pbi1hLWJveFwiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNOdW1iZXIsIGlzT2JqZWN0IH0gZnJvbSBcIi4uLy4uL3V0aWxcIjtcbmltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi4vYmFzZVwiO1xuaW1wb3J0IHsgTEFZT1VUX01FU1NBR0UgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG4vKipcbiAqIOe7j+WFuOWKm+WvvOW4g+WxgCBmb3JjZS1kaXJlY3RlZFxuICovXG5leHBvcnQgY2xhc3MgRm9yY2VMYXlvdXQgZXh0ZW5kcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8qKiDlkJHlv4PlipvkvZznlKjngrkgKi9cbiAgICAgICAgdGhpcy5jZW50ZXIgPSBbMCwgMF07XG4gICAgICAgIC8qKiDoioLngrnkvZznlKjlipsgKi9cbiAgICAgICAgdGhpcy5ub2RlU3RyZW5ndGggPSBudWxsO1xuICAgICAgICAvKiog6L6555qE5L2c55So5YqbLCDpu5jorqTkuLrmoLnmja7oioLngrnnmoTlhaXluqblh7rluqboh6rpgILlupQgKi9cbiAgICAgICAgdGhpcy5lZGdlU3RyZW5ndGggPSBudWxsO1xuICAgICAgICAvKiog5piv5ZCm6Ziy5q2i6IqC54K555u45LqS6KaG55uWICovXG4gICAgICAgIHRoaXMucHJldmVudE92ZXJsYXAgPSBmYWxzZTtcbiAgICAgICAgLyoqIOiBmuexu+iKgueCueS9nOeUqOWKmyAqL1xuICAgICAgICB0aGlzLmNsdXN0ZXJOb2RlU3RyZW5ndGggPSBudWxsO1xuICAgICAgICAvKiog6IGa57G76L655L2c55So5YqbICovXG4gICAgICAgIHRoaXMuY2x1c3RlckVkZ2VTdHJlbmd0aCA9IG51bGw7XG4gICAgICAgIC8qKiDogZrnsbvovrnplb/luqYgKi9cbiAgICAgICAgdGhpcy5jbHVzdGVyRWRnZURpc3RhbmNlID0gbnVsbDtcbiAgICAgICAgLyoqIOiBmuexu+iKgueCueWkp+WwjyAvIOebtOW+hO+8jOebtOW+hOi2iuWkp++8jOi2iuWIhuaVoyAqL1xuICAgICAgICB0aGlzLmNsdXN0ZXJOb2RlU2l6ZSA9IG51bGw7XG4gICAgICAgIC8qKiDnlKjkuo4gZm9jaSDnmoTlipsgKi9cbiAgICAgICAgdGhpcy5jbHVzdGVyRm9jaVN0cmVuZ3RoID0gbnVsbDtcbiAgICAgICAgLyoqIOm7mOiupOi+uemVv+W6piAqL1xuICAgICAgICB0aGlzLmxpbmtEaXN0YW5jZSA9IDUwO1xuICAgICAgICAvKiog6L+t5Luj6ZiI5YC855qE6KGw5YeP546HIFswLCAxXe+8jDAuMDI4IOWvueW6lOacgOWkp+i/reS7o+aVsOS4uiAzMDAgKi9cbiAgICAgICAgdGhpcy5hbHBoYURlY2F5ID0gMC4wMjg7XG4gICAgICAgIC8qKiDlgZzmraLov63ku6PnmoTpmIjlgLwgKi9cbiAgICAgICAgdGhpcy5hbHBoYU1pbiA9IDAuMDAxO1xuICAgICAgICAvKiog5b2T5YmN6ZiI5YC8ICovXG4gICAgICAgIHRoaXMuYWxwaGEgPSAwLjM7XG4gICAgICAgIC8qKiDpmLLmraLph43lj6DnmoTlipvlvLrluqYgKi9cbiAgICAgICAgdGhpcy5jb2xsaWRlU3RyZW5ndGggPSAxO1xuICAgICAgICAvKiog5piv5ZCm5ZCv55Sod2ViIHdvcmtlcuOAguWJjeaPkOaYr+WcqHdlYiB3b3JrZXLph4zmiafooYzluIPlsYDvvIzlkKbliJnml6DmlYhcdCovXG4gICAgICAgIHRoaXMud29ya2VyRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRpY2sgPSAoKSA9PiB7IH07XG4gICAgICAgIC8qKiDluIPlsYDlrozmiJDlm57osIMgKi9cbiAgICAgICAgdGhpcy5vbkxheW91dEVuZCA9ICgpID0+IHsgfTtcbiAgICAgICAgLyoqIOaYr+WQpuato+WcqOW4g+WxgCAqL1xuICAgICAgICB0aGlzLnRpY2tpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNmZyhvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2VudGVyOiBbMCwgMF0sXG4gICAgICAgICAgICBub2RlU3RyZW5ndGg6IG51bGwsXG4gICAgICAgICAgICBlZGdlU3RyZW5ndGg6IG51bGwsXG4gICAgICAgICAgICBwcmV2ZW50T3ZlcmxhcDogZmFsc2UsXG4gICAgICAgICAgICBub2RlU2l6ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbm9kZVNwYWNpbmc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxpbmtEaXN0YW5jZTogNTAsXG4gICAgICAgICAgICBmb3JjZVNpbXVsYXRpb246IG51bGwsXG4gICAgICAgICAgICBhbHBoYURlY2F5OiAwLjAyOCxcbiAgICAgICAgICAgIGFscGhhTWluOiAwLjAwMSxcbiAgICAgICAgICAgIGFscGhhOiAwLjMsXG4gICAgICAgICAgICBjb2xsaWRlU3RyZW5ndGg6IDEsXG4gICAgICAgICAgICBjbHVzdGVyaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGNsdXN0ZXJOb2RlU3RyZW5ndGg6IC0xLFxuICAgICAgICAgICAgY2x1c3RlckVkZ2VTdHJlbmd0aDogMC4xLFxuICAgICAgICAgICAgY2x1c3RlckVkZ2VEaXN0YW5jZTogMTAwLFxuICAgICAgICAgICAgY2x1c3RlckZvY2lTdHJlbmd0aDogMC44LFxuICAgICAgICAgICAgY2x1c3Rlck5vZGVTaXplOiAxMCxcbiAgICAgICAgICAgIHRpY2soKSB7IH0sXG4gICAgICAgICAgICBvbkxheW91dEVuZCgpIHsgfSxcbiAgICAgICAgICAgIC8vIOaYr+WQpuWQr+eUqHdlYiB3b3JrZXLjgILliY3mj5DmmK/lnKh3ZWIgd29ya2Vy6YeM5omn6KGM5biD5bGA77yM5ZCm5YiZ5peg5pWIXG4gICAgICAgICAgICB3b3JrZXJFbmFibGVkOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDliJ3lp4vljJZcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSDmlbDmja5cbiAgICAgKi9cbiAgICBpbml0KGRhdGEpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHNlbGYubm9kZXMgPSBkYXRhLm5vZGVzIHx8IFtdO1xuICAgICAgICBjb25zdCBlZGdlcyA9IGRhdGEuZWRnZXMgfHwgW107XG4gICAgICAgIHNlbGYuZWRnZXMgPSBlZGdlcy5tYXAoKGVkZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0S2V5cyA9IFtcInRhcmdldE5vZGVcIiwgXCJzb3VyY2VOb2RlXCIsIFwic3RhcnRQb2ludFwiLCBcImVuZFBvaW50XCJdO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZWRnZSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCEoZXhwZWN0S2V5cy5pbmRleE9mKGtleSkgPiAtMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW2tleV0gPSBlZGdlW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi50aWNraW5nID0gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaJp+ihjOW4g+WxgFxuICAgICAqL1xuICAgIGV4ZWN1dGUocmVsb2FkRGF0YSkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBlZGdlcyA9IHNlbGYuZWRnZXM7XG4gICAgICAgIC8vIOWmguaenOato+WcqOW4g+WxgO+8jOW/veeVpeW4g+WxgOivt+axglxuICAgICAgICBpZiAoc2VsZi50aWNraW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNpbXVsYXRpb24gPSBzZWxmLmZvcmNlU2ltdWxhdGlvbjtcbiAgICAgICAgY29uc3QgYWxwaGFNaW4gPSBzZWxmLmFscGhhTWluO1xuICAgICAgICBjb25zdCBhbHBoYURlY2F5ID0gc2VsZi5hbHBoYURlY2F5O1xuICAgICAgICBjb25zdCBhbHBoYSA9IHNlbGYuYWxwaGE7XG4gICAgICAgIGlmICghc2ltdWxhdGlvbikge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAvLyDlrprkuYnoioLngrnnmoTliptcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlRm9yY2UgPSBkM0ZvcmNlLmZvcmNlTWFueUJvZHkoKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5ub2RlU3RyZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZUZvcmNlLnN0cmVuZ3RoKHNlbGYubm9kZVN0cmVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2ltdWxhdGlvbiA9IGQzRm9yY2UuZm9yY2VTaW11bGF0aW9uKCkubm9kZXMobm9kZXMpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmNsdXN0ZXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2x1c3RlckZvcmNlID0gZm9yY2VJbkFCb3goKTtcbiAgICAgICAgICAgICAgICAgICAgY2x1c3RlckZvcmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2VudGVyWChzZWxmLmNlbnRlclswXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jZW50ZXJZKHNlbGYuY2VudGVyWzFdKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRlbXBsYXRlKFwiZm9yY2VcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdHJlbmd0aChzZWxmLmNsdXN0ZXJGb2NpU3RyZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJGb3JjZS5saW5rcyhlZGdlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyRm9yY2Uubm9kZXMobm9kZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJGb3JjZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvcmNlTGlua0Rpc3RhbmNlKHNlbGYuY2x1c3RlckVkZ2VEaXN0YW5jZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JjZUxpbmtTdHJlbmd0aChzZWxmLmNsdXN0ZXJFZGdlU3RyZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZm9yY2VDaGFyZ2Uoc2VsZi5jbHVzdGVyTm9kZVN0cmVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvcmNlTm9kZVNpemUoc2VsZi5jbHVzdGVyTm9kZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmNsdXN0ZXJGb3JjZSA9IGNsdXN0ZXJGb3JjZTtcbiAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbi5mb3JjZShcImdyb3VwXCIsIGNsdXN0ZXJGb3JjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNpbXVsYXRpb25cbiAgICAgICAgICAgICAgICAgICAgLmZvcmNlKFwiY2VudGVyXCIsIGQzRm9yY2UuZm9yY2VDZW50ZXIoc2VsZi5jZW50ZXJbMF0sIHNlbGYuY2VudGVyWzFdKSlcbiAgICAgICAgICAgICAgICAgICAgLmZvcmNlKFwiY2hhcmdlXCIsIG5vZGVGb3JjZSlcbiAgICAgICAgICAgICAgICAgICAgLmFscGhhKGFscGhhKVxuICAgICAgICAgICAgICAgICAgICAuYWxwaGFEZWNheShhbHBoYURlY2F5KVxuICAgICAgICAgICAgICAgICAgICAuYWxwaGFNaW4oYWxwaGFNaW4pO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLnByZXZlbnRPdmVybGFwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYub3ZlcmxhcFByb2Nlc3Moc2ltdWxhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIOWmguaenOaciei+ue+8jOWumuS5iei+ueeahOWKm1xuICAgICAgICAgICAgICAgIGlmIChlZGdlcykge1xuICAgICAgICAgICAgICAgICAgICAvLyBkMyDnmoQgZm9yY2VMYXlvdXQg5Lya6YeN5paw55Sf5oiQ6L6555qE5pWw5o2u5qih5Z6L77yM5Li65LqG6YG/5YWN5rGh5p+T5rqQ5pWw5o2uXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVkZ2VGb3JjZSA9IGQzRm9yY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JjZUxpbmsoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmlkKChkKSA9PiBkLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmxpbmtzKGVkZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuZWRnZVN0cmVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGdlRm9yY2Uuc3RyZW5ndGgoc2VsZi5lZGdlU3RyZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmxpbmtEaXN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRnZUZvcmNlLmRpc3RhbmNlKHNlbGYubGlua0Rpc3RhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZWxmLmVkZ2VGb3JjZSA9IGVkZ2VGb3JjZTtcbiAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbi5mb3JjZShcImxpbmtcIiwgZWRnZUZvcmNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYud29ya2VyRW5hYmxlZCAmJiAhaXNJbldvcmtlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOS4jeaYr+i/kOihjOWcqHdlYiB3b3JrZXLph4zvvIzkuI3nlKh3ZWIgd29ya2Vy5biD5bGAXG4gICAgICAgICAgICAgICAgICAgIHNlbGYud29ya2VyRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJ3b3JrZXJFbmFibGVkIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHJ1bm5pbmcgaW4gd2ViIHdvcmtlci5cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghc2VsZi53b3JrZXJFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcInRpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50aWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAub24oXCJlbmRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50aWNraW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnRpY2tpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gd29ya2VyIGlzIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbi5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsVGlja3MgPSBnZXRTaW11bGF0aW9uVGlja3Moc2ltdWxhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGN1cnJlbnRUaWNrID0gMTsgY3VycmVudFRpY2sgPD0gdG90YWxUaWNrczsgY3VycmVudFRpY2srKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbi50aWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjdXJyZW50VGljayBzdGFydHMgZnJvbSAxLlxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUaWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsVGlja3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogTEFZT1VUX01FU1NBR0UuVElDS1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZWxmLnRpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2VsZi5mb3JjZVNpbXVsYXRpb24gPSBzaW11bGF0aW9uO1xuICAgICAgICAgICAgICAgIHNlbGYudGlja2luZyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHNlbGYudGlja2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZWxvYWREYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuY2x1c3RlcmluZyAmJiBzZWxmLmNsdXN0ZXJGb3JjZSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmNsdXN0ZXJGb3JjZS5ub2Rlcyhub2Rlcyk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY2x1c3RlckZvcmNlLmxpbmtzKGVkZ2VzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2ltdWxhdGlvbi5ub2Rlcyhub2Rlcyk7XG4gICAgICAgICAgICAgICAgaWYgKGVkZ2VzICYmIHNlbGYuZWRnZUZvcmNlKVxuICAgICAgICAgICAgICAgICAgICBzZWxmLmVkZ2VGb3JjZS5saW5rcyhlZGdlcyk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZWRnZXMgJiYgIXNlbGYuZWRnZUZvcmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGQzIOeahCBmb3JjZUxheW91dCDkvJrph43mlrDnlJ/miJDovrnnmoTmlbDmja7mqKHlnovvvIzkuLrkuobpgb/lhY3msaHmn5PmupDmlbDmja5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWRnZUZvcmNlID0gZDNGb3JjZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvcmNlTGluaygpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaWQoKGQpID0+IGQuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAubGlua3MoZWRnZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5lZGdlU3RyZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2VGb3JjZS5zdHJlbmd0aChzZWxmLmVkZ2VTdHJlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYubGlua0Rpc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGdlRm9yY2UuZGlzdGFuY2Uoc2VsZi5saW5rRGlzdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZWRnZUZvcmNlID0gZWRnZUZvcmNlO1xuICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uLmZvcmNlKFwibGlua1wiLCBlZGdlRm9yY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLnByZXZlbnRPdmVybGFwKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5vdmVybGFwUHJvY2VzcyhzaW11bGF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNpbXVsYXRpb24uYWxwaGEoYWxwaGEpLnJlc3RhcnQoKTtcbiAgICAgICAgICAgIHRoaXMudGlja2luZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICog6Ziy5q2i6YeN5Y+gXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHNpbXVsYXRpb24g5Yqb5qih5ouf5qih5Z6LXG4gICAgICovXG4gICAgb3ZlcmxhcFByb2Nlc3Moc2ltdWxhdGlvbikge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZVNpemUgPSBzZWxmLm5vZGVTaXplO1xuICAgICAgICBjb25zdCBub2RlU3BhY2luZyA9IHNlbGYubm9kZVNwYWNpbmc7XG4gICAgICAgIGxldCBub2RlU2l6ZUZ1bmM7XG4gICAgICAgIGxldCBub2RlU3BhY2luZ0Z1bmM7XG4gICAgICAgIGNvbnN0IGNvbGxpZGVTdHJlbmd0aCA9IHNlbGYuY29sbGlkZVN0cmVuZ3RoO1xuICAgICAgICBpZiAoaXNOdW1iZXIobm9kZVNwYWNpbmcpKSB7XG4gICAgICAgICAgICBub2RlU3BhY2luZ0Z1bmMgPSAoKSA9PiBub2RlU3BhY2luZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKG5vZGVTcGFjaW5nKSkge1xuICAgICAgICAgICAgbm9kZVNwYWNpbmdGdW5jID0gbm9kZVNwYWNpbmc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub2RlU3BhY2luZ0Z1bmMgPSAoKSA9PiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbm9kZVNpemUpIHtcbiAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9IChkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGQuc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShkLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBkLnNpemVbMF0gPiBkLnNpemVbMV0gPyBkLnNpemVbMF0gOiBkLnNpemVbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzIC8gMiArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QoZC5zaXplKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gZC5zaXplLndpZHRoID4gZC5zaXplLmhlaWdodCA/IGQuc2l6ZS53aWR0aCA6IGQuc2l6ZS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzIC8gMiArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5zaXplIC8gMiArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEwICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKG5vZGVTaXplKSkge1xuICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXplID0gbm9kZVNpemUoZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemUgKyBub2RlU3BhY2luZ0Z1bmMoZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzQXJyYXkobm9kZVNpemUpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXJnZXIgPSBub2RlU2l6ZVswXSA+IG5vZGVTaXplWzFdID8gbm9kZVNpemVbMF0gOiBub2RlU2l6ZVsxXTtcbiAgICAgICAgICAgIGNvbnN0IHJhZGl1cyA9IGxhcmdlciAvIDI7XG4gICAgICAgICAgICBub2RlU2l6ZUZ1bmMgPSAoZCkgPT4gcmFkaXVzICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzTnVtYmVyKG5vZGVTaXplKSkge1xuICAgICAgICAgICAgY29uc3QgcmFkaXVzID0gbm9kZVNpemUgLyAyO1xuICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKGQpID0+IHJhZGl1cyArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9ICgpID0+IDEwO1xuICAgICAgICB9XG4gICAgICAgIC8vIGZvcmNlQ29sbGlkZSdzIHBhcmFtZXRlciBpcyBhIHJhZGl1c1xuICAgICAgICBzaW11bGF0aW9uLmZvcmNlKFwiY29sbGlzaW9uRm9yY2VcIiwgZDNGb3JjZS5mb3JjZUNvbGxpZGUobm9kZVNpemVGdW5jKS5zdHJlbmd0aChjb2xsaWRlU3RyZW5ndGgpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5pu05paw5biD5bGA6YWN572u77yM5L2G5LiN5omn6KGM5biD5bGAXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGNmZyDpnIDopoHmm7TmlrDnmoTphY3nva7poblcbiAgICAgKi9cbiAgICB1cGRhdGVDZmcoY2ZnKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoc2VsZi50aWNraW5nKSB7XG4gICAgICAgICAgICBzZWxmLmZvcmNlU2ltdWxhdGlvbi5zdG9wKCk7XG4gICAgICAgICAgICBzZWxmLnRpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzZWxmLmZvcmNlU2ltdWxhdGlvbiA9IG51bGw7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oc2VsZiwgY2ZnKTtcbiAgICB9XG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmIChzZWxmLnRpY2tpbmcpIHtcbiAgICAgICAgICAgIHNlbGYuZm9yY2VTaW11bGF0aW9uLnN0b3AoKTtcbiAgICAgICAgICAgIHNlbGYudGlja2luZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHNlbGYubm9kZXMgPSBudWxsO1xuICAgICAgICBzZWxmLmVkZ2VzID0gbnVsbDtcbiAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cbn1cbi8vIFJldHVybiB0b3RhbCB0aWNrcyBvZiBkMy1mb3JjZSBzaW11bGF0aW9uXG5mdW5jdGlvbiBnZXRTaW11bGF0aW9uVGlja3Moc2ltdWxhdGlvbikge1xuICAgIGNvbnN0IGFscGhhTWluID0gc2ltdWxhdGlvbi5hbHBoYU1pbigpO1xuICAgIGNvbnN0IGFscGhhVGFyZ2V0ID0gc2ltdWxhdGlvbi5hbHBoYVRhcmdldCgpO1xuICAgIGNvbnN0IGFscGhhID0gc2ltdWxhdGlvbi5hbHBoYSgpO1xuICAgIGNvbnN0IHRvdGFsVGlja3NGbG9hdCA9IE1hdGgubG9nKChhbHBoYU1pbiAtIGFscGhhVGFyZ2V0KSAvIChhbHBoYSAtIGFscGhhVGFyZ2V0KSkgL1xuICAgICAgICBNYXRoLmxvZygxIC0gc2ltdWxhdGlvbi5hbHBoYURlY2F5KCkpO1xuICAgIGNvbnN0IHRvdGFsVGlja3MgPSBNYXRoLmNlaWwodG90YWxUaWNrc0Zsb2F0KTtcbiAgICByZXR1cm4gdG90YWxUaWNrcztcbn1cbi8vIOWIpOaWreaYr+WQpui/kOihjOWcqHdlYiB3b3JrZXLph4xcbmZ1bmN0aW9uIGlzSW5Xb3JrZXIoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgcmV0dXJuICh0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUgIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICAgICAgc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcmNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/force/force.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/force/index.js": /*!************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/force/index.js ***! \************************************************************/ /*! exports provided: ForceLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _force__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./force */ \"./node_modules/@antv/layout/es/layout/force/force.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ForceLayout\", function() { return _force__WEBPACK_IMPORTED_MODULE_0__[\"ForceLayout\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZS9pbmRleC5qcz84MDgwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdCO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2UvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZvcmNlJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/force/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/forceAtlas2/body.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/forceAtlas2/body.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Body; });\n// represents a body(a point mass) and its position\nclass Body {\n constructor(params) {\n /**\n * the id of this body, the same with the node id\n * @type {number}\n */\n this.id = params.id || 0;\n /**\n * the position of this body\n * @type {number}\n */\n this.rx = params.rx;\n /**\n * the position of this body\n * @type {number}\n */\n this.ry = params.ry;\n /**\n * the force acting on this body\n * @type {number}\n */\n this.fx = 0;\n /**\n * the force acting on this body\n * @type {number}\n */\n this.fy = 0;\n /**\n * the mass of this body, =1 for a node\n * @type {number}\n */\n this.mass = params.mass;\n /**\n * the degree of the node represented by this body\n * @type {number}\n */\n this.degree = params.degree;\n /**\n * the parameter for repulsive force, = kr\n * @type {number}\n */\n this.g = params.g || 0;\n }\n // returns the euclidean distance\n distanceTo(bo) {\n const dx = this.rx - bo.rx;\n const dy = this.ry - bo.ry;\n return Math.hypot(dx, dy);\n }\n setPos(x, y) {\n this.rx = x;\n this.ry = y;\n }\n // resets the forces\n resetForce() {\n this.fx = 0;\n this.fy = 0;\n }\n addForce(b) {\n const dx = b.rx - this.rx;\n const dy = b.ry - this.ry;\n let dist = Math.hypot(dx, dy);\n dist = dist < 0.0001 ? 0.0001 : dist;\n // the repulsive defined by force atlas 2\n const F = (this.g * (this.degree + 1) * (b.degree + 1)) / dist;\n this.fx += F * dx / dist;\n this.fy += F * dy / dist;\n }\n // if quad contains this body\n in(quad) {\n return quad.contains(this.rx, this.ry);\n }\n // returns a new body\n add(bo) {\n const nenwMass = this.mass + bo.mass;\n const x = (this.rx * this.mass + bo.rx * bo.mass) / nenwMass;\n const y = (this.ry * this.mass + bo.ry * bo.mass) / nenwMass;\n const dg = this.degree + bo.degree;\n const params = {\n rx: x,\n ry: y,\n mass: nenwMass,\n degree: dg\n };\n return new Body(params);\n }\n}\n//# sourceMappingURL=body.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZUF0bGFzMi9ib2R5LmpzP2FkZmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2VBdGxhczIvYm9keS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHJlcHJlc2VudHMgYSBib2R5KGEgcG9pbnQgbWFzcykgYW5kIGl0cyBwb3NpdGlvblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keSB7XG4gICAgY29uc3RydWN0b3IocGFyYW1zKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgaWQgb2YgdGhpcyBib2R5LCB0aGUgc2FtZSB3aXRoIHRoZSBub2RlIGlkXG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5pZCA9IHBhcmFtcy5pZCB8fCAwO1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIHBvc2l0aW9uIG9mIHRoaXMgYm9keVxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucnggPSBwYXJhbXMucng7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgcG9zaXRpb24gb2YgdGhpcyBib2R5XG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yeSA9IHBhcmFtcy5yeTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBmb3JjZSBhY3Rpbmcgb24gdGhpcyBib2R5XG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5meCA9IDA7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgZm9yY2UgYWN0aW5nIG9uIHRoaXMgYm9keVxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZnkgPSAwO1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIG1hc3Mgb2YgdGhpcyBib2R5LCA9MSBmb3IgYSBub2RlXG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5tYXNzID0gcGFyYW1zLm1hc3M7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgZGVncmVlIG9mIHRoZSBub2RlIHJlcHJlc2VudGVkIGJ5IHRoaXMgYm9keVxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZGVncmVlID0gcGFyYW1zLmRlZ3JlZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBwYXJhbWV0ZXIgZm9yIHJlcHVsc2l2ZSBmb3JjZSwgPSBrclxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZyA9IHBhcmFtcy5nIHx8IDA7XG4gICAgfVxuICAgIC8vIHJldHVybnMgdGhlIGV1Y2xpZGVhbiBkaXN0YW5jZVxuICAgIGRpc3RhbmNlVG8oYm8pIHtcbiAgICAgICAgY29uc3QgZHggPSB0aGlzLnJ4IC0gYm8ucng7XG4gICAgICAgIGNvbnN0IGR5ID0gdGhpcy5yeSAtIGJvLnJ5O1xuICAgICAgICByZXR1cm4gTWF0aC5oeXBvdChkeCwgZHkpO1xuICAgIH1cbiAgICBzZXRQb3MoeCwgeSkge1xuICAgICAgICB0aGlzLnJ4ID0geDtcbiAgICAgICAgdGhpcy5yeSA9IHk7XG4gICAgfVxuICAgIC8vIHJlc2V0cyB0aGUgZm9yY2VzXG4gICAgcmVzZXRGb3JjZSgpIHtcbiAgICAgICAgdGhpcy5meCA9IDA7XG4gICAgICAgIHRoaXMuZnkgPSAwO1xuICAgIH1cbiAgICBhZGRGb3JjZShiKSB7XG4gICAgICAgIGNvbnN0IGR4ID0gYi5yeCAtIHRoaXMucng7XG4gICAgICAgIGNvbnN0IGR5ID0gYi5yeSAtIHRoaXMucnk7XG4gICAgICAgIGxldCBkaXN0ID0gTWF0aC5oeXBvdChkeCwgZHkpO1xuICAgICAgICBkaXN0ID0gZGlzdCA8IDAuMDAwMSA/IDAuMDAwMSA6IGRpc3Q7XG4gICAgICAgIC8vIHRoZSByZXB1bHNpdmUgZGVmaW5lZCBieSBmb3JjZSBhdGxhcyAyXG4gICAgICAgIGNvbnN0IEYgPSAodGhpcy5nICogKHRoaXMuZGVncmVlICsgMSkgKiAoYi5kZWdyZWUgKyAxKSkgLyBkaXN0O1xuICAgICAgICB0aGlzLmZ4ICs9IEYgKiBkeCAvIGRpc3Q7XG4gICAgICAgIHRoaXMuZnkgKz0gRiAqIGR5IC8gZGlzdDtcbiAgICB9XG4gICAgLy8gaWYgcXVhZCBjb250YWlucyB0aGlzIGJvZHlcbiAgICBpbihxdWFkKSB7XG4gICAgICAgIHJldHVybiBxdWFkLmNvbnRhaW5zKHRoaXMucngsIHRoaXMucnkpO1xuICAgIH1cbiAgICAvLyByZXR1cm5zIGEgbmV3IGJvZHlcbiAgICBhZGQoYm8pIHtcbiAgICAgICAgY29uc3QgbmVud01hc3MgPSB0aGlzLm1hc3MgKyBiby5tYXNzO1xuICAgICAgICBjb25zdCB4ID0gKHRoaXMucnggKiB0aGlzLm1hc3MgKyBiby5yeCAqIGJvLm1hc3MpIC8gbmVud01hc3M7XG4gICAgICAgIGNvbnN0IHkgPSAodGhpcy5yeSAqIHRoaXMubWFzcyArIGJvLnJ5ICogYm8ubWFzcykgLyBuZW53TWFzcztcbiAgICAgICAgY29uc3QgZGcgPSB0aGlzLmRlZ3JlZSArIGJvLmRlZ3JlZTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgcng6IHgsXG4gICAgICAgICAgICByeTogeSxcbiAgICAgICAgICAgIG1hc3M6IG5lbndNYXNzLFxuICAgICAgICAgICAgZGVncmVlOiBkZ1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV3IEJvZHkocGFyYW1zKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ib2R5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/forceAtlas2/body.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/forceAtlas2/index.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/forceAtlas2/index.js ***! \******************************************************************/ /*! exports provided: ForceAtlas2Layout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ForceAtlas2Layout\", function() { return ForceAtlas2Layout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/* harmony import */ var _body__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./body */ \"./node_modules/@antv/layout/es/layout/forceAtlas2/body.js\");\n/* harmony import */ var _quad__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./quad */ \"./node_modules/@antv/layout/es/layout/forceAtlas2/quad.js\");\n/* harmony import */ var _quadTree__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./quadTree */ \"./node_modules/@antv/layout/es/layout/forceAtlas2/quadTree.js\");\n\n\n\n\n\nclass ForceAtlas2Layout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 布局中心 */\n this.center = [0, 0];\n /** 宽度 */\n this.width = 300;\n /** 高度 */\n this.height = 300;\n this.nodes = [];\n this.edges = [];\n /**\n * the parameter for repulsive forces,\n * it will scale the layout but won't change the layout\n * larger the kr, looser the layout\n * @type {number}\n */\n this.kr = 5;\n /**\n * the parameter for gravity forces\n * @type {number}\n */\n this.kg = 1;\n /**\n * modes:\n * 'normal' for normal using\n * 'linlog' for compact clusters.\n * @type {string}\n */\n this.mode = 'normal';\n /**\n * whether preventing the node overlapping\n * @type {boolean}\n */\n this.preventOverlap = false;\n /**\n * whether active the dissuade hub mode\n * true: grant authorities (nodes with a high indegree)\n * a more central position than hubs (nodes with a high outdegree)\n * @type {boolean}\n */\n this.dissuadeHubs = false;\n /**\n * whether active the barnes hut optimization on computing repulsive forces\n * @type {boolean}\n */\n this.barnesHut = undefined;\n /**\n * the max iteration number\n * @type {number}\n */\n this.maxIteration = 0;\n /**\n * control the global velocity\n * defualt: 0.1(gephi)\n * @type {number}\n */\n this.ks = 0.1;\n /**\n * the max global velocity\n * @type {number}\n */\n this.ksmax = 10;\n /**\n * the tolerance for the global swinging\n * @type {number}\n */\n this.tao = 0.1;\n /**\n * the function of layout complete listener, display the legend and minimap after layout\n * @type {function}\n */\n this.onLayoutEnd = () => { };\n /**\n * activate prune or not.\n * prune the leaves during most iterations, layout the leaves in the last 50 iteraitons.\n * if prune === '', it will be activated when the nodes number > 100\n * note that it will reduce the quality of the layout\n * @type {boolean}\n */\n this.prune = undefined;\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {};\n }\n // execute the layout\n execute() {\n const self = this;\n const { nodes, onLayoutEnd, prune, } = self;\n let maxIteration = self.maxIteration;\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n // the whidth of each nodes\n const sizes = [];\n const nodeNum = nodes.length;\n for (let i = 0; i < nodeNum; i += 1) {\n const node = nodes[i];\n let nodeWidth = 10;\n let nodeHeight = 10;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.size)) {\n nodeWidth = node.size;\n nodeHeight = node.size;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(node.size)) {\n if (!isNaN(node.size[0]))\n nodeWidth = node.size[0];\n if (!isNaN(node.size[1]))\n nodeHeight = node.size[1];\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(node.size)) {\n nodeWidth = node.size.width;\n nodeHeight = node.size.height;\n }\n if (self.getWidth && !isNaN(self.getWidth(node)))\n nodeHeight = self.getWidth(node);\n if (self.getHeight && !isNaN(self.getHeight(node)))\n nodeWidth = self.getHeight(node);\n const maxSize = Math.max(nodeWidth, nodeHeight);\n sizes.push(maxSize);\n }\n if (self.barnesHut === undefined && nodeNum > 250)\n self.barnesHut = true;\n if (self.prune === undefined && nodeNum > 100)\n self.prune = true;\n if (this.maxIteration === 0 && !self.prune) {\n maxIteration = 250;\n if (nodeNum <= 200 && nodeNum > 100)\n maxIteration = 1000;\n else if (nodeNum > 200)\n maxIteration = 1200;\n this.maxIteration = maxIteration;\n }\n else if (this.maxIteration === 0 && prune) {\n maxIteration = 100;\n if (nodeNum <= 200 && nodeNum > 100)\n maxIteration = 500;\n else if (nodeNum > 200)\n maxIteration = 950;\n this.maxIteration = maxIteration;\n }\n if (!self.kr) {\n self.kr = 50;\n if (nodeNum > 100 && nodeNum <= 500)\n self.kr = 20;\n else if (nodeNum > 500)\n self.kr = 1;\n }\n if (!self.kg) {\n self.kg = 20;\n if (nodeNum > 100 && nodeNum <= 500)\n self.kg = 10;\n else if (nodeNum > 500)\n self.kg = 1;\n }\n this.nodes = self.updateNodesByForces(sizes);\n onLayoutEnd();\n }\n updateNodesByForces(sizes) {\n const self = this;\n const { edges, maxIteration } = self;\n let nodes = self.nodes;\n const nonLoopEdges = edges.filter((edge) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'target');\n return source !== target;\n });\n const size = nodes.length;\n const esize = nonLoopEdges.length;\n const degrees = [];\n const idMap = {};\n const edgeEndsIdMap = {};\n // tslint:disable-next-line\n const Es = [];\n for (let i = 0; i < size; i += 1) {\n idMap[nodes[i].id] = i;\n degrees[i] = 0;\n if (nodes[i].x === undefined || isNaN(nodes[i].x)) {\n nodes[i].x = Math.random() * 1000;\n }\n if (nodes[i].y === undefined || isNaN(nodes[i].y)) {\n nodes[i].y = Math.random() * 1000;\n }\n Es.push({ x: nodes[i].x, y: nodes[i].y });\n }\n for (let i = 0; i < esize; i += 1) {\n let node1;\n let node2;\n let sIdx = 0;\n let tIdx = 0;\n for (let j = 0; j < size; j += 1) {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(nonLoopEdges[i], 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(nonLoopEdges[i], 'target');\n if (nodes[j].id === source) {\n node1 = nodes[j];\n sIdx = j;\n }\n else if (nodes[j].id === target) {\n node2 = nodes[j];\n tIdx = j;\n }\n edgeEndsIdMap[i] = { sourceIdx: sIdx, targetIdx: tIdx };\n }\n if (node1)\n degrees[idMap[node1.id]] += 1;\n if (node2)\n degrees[idMap[node2.id]] += 1;\n }\n let iteration = maxIteration;\n nodes = this.iterate(iteration, idMap, edgeEndsIdMap, esize, degrees, sizes);\n // if prune, place the leaves around their parents, and then re-layout for several iterations.\n if (self.prune) {\n for (let j = 0; j < esize; j += 1) {\n if (degrees[edgeEndsIdMap[j].sourceIdx] <= 1) {\n nodes[edgeEndsIdMap[j].sourceIdx].x = nodes[edgeEndsIdMap[j].targetIdx].x;\n nodes[edgeEndsIdMap[j].sourceIdx].y = nodes[edgeEndsIdMap[j].targetIdx].y;\n }\n else if (degrees[edgeEndsIdMap[j].targetIdx] <= 1) {\n nodes[edgeEndsIdMap[j].targetIdx].x = nodes[edgeEndsIdMap[j].sourceIdx].x;\n nodes[edgeEndsIdMap[j].targetIdx].y = nodes[edgeEndsIdMap[j].sourceIdx].y;\n }\n }\n self.prune = false;\n self.barnesHut = false;\n iteration = 100;\n nodes = this.iterate(iteration, idMap, edgeEndsIdMap, esize, degrees, sizes);\n }\n return nodes;\n }\n iterate(iteration, idMap, edgeEndsIdMap, esize, degrees, sizes) {\n const self = this;\n let { nodes } = self;\n const { kr, preventOverlap } = self;\n const { barnesHut } = self;\n const nodeNum = nodes.length;\n let sg = 0;\n const krPrime = 100;\n let iter = iteration;\n const prevoIter = 50;\n let forces = [];\n const preForces = [];\n const bodies = [];\n for (let i = 0; i < nodeNum; i += 1) {\n forces[2 * i] = 0;\n forces[2 * i + 1] = 0;\n if (barnesHut) {\n const params = {\n id: i,\n rx: nodes[i].x,\n ry: nodes[i].y,\n mass: 1,\n g: kr,\n degree: degrees[i]\n };\n bodies[i] = new _body__WEBPACK_IMPORTED_MODULE_2__[\"default\"](params);\n }\n }\n while (iter > 0) {\n for (let i = 0; i < nodeNum; i += 1) {\n preForces[2 * i] = forces[2 * i];\n preForces[2 * i + 1] = forces[2 * i + 1];\n forces[2 * i] = 0;\n forces[2 * i + 1] = 0;\n }\n // attractive forces, existing on every actual edge\n forces = this.getAttrForces(iter, prevoIter, esize, idMap, edgeEndsIdMap, degrees, sizes, forces);\n // repulsive forces and Gravity, existing on every node pair\n // if preventOverlap, using the no-optimized method in the last prevoIter instead.\n if (barnesHut && ((preventOverlap && iter > prevoIter) || !preventOverlap)) {\n forces = this.getOptRepGraForces(forces, bodies, degrees);\n }\n else {\n forces = this.getRepGraForces(iter, prevoIter, forces, krPrime, sizes, degrees);\n }\n // update the positions\n const res = this.updatePos(forces, preForces, sg, degrees);\n nodes = res.nodes;\n sg = res.sg;\n iter--;\n if (self.tick)\n self.tick();\n }\n return nodes;\n }\n getAttrForces(iter, prevoIter, esize, idMap, edgeEndsIdMap, degrees, sizes, forces) {\n const self = this;\n const { nodes, preventOverlap, dissuadeHubs, mode, prune } = self;\n for (let i = 0; i < esize; i += 1) {\n const sourceNode = nodes[edgeEndsIdMap[i].sourceIdx];\n const sourceIdx = edgeEndsIdMap[i].sourceIdx;\n const targetNode = nodes[edgeEndsIdMap[i].targetIdx];\n const targetIdx = edgeEndsIdMap[i].targetIdx;\n if (prune && (degrees[sourceIdx] <= 1 || degrees[targetIdx] <= 1))\n continue;\n const dir = [targetNode.x - sourceNode.x, targetNode.y - sourceNode.y];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n if (preventOverlap && iter < prevoIter)\n eucliDis = eucliDis - sizes[sourceIdx] - sizes[targetIdx];\n let Fa1 = eucliDis; // tslint:disable-line\n let Fa2 = Fa1; // tslint:disable-line\n if (mode === 'linlog') {\n Fa1 = Math.log(1 + eucliDis);\n Fa2 = Fa1;\n }\n if (dissuadeHubs) {\n Fa1 = eucliDis / degrees[sourceIdx];\n Fa2 = eucliDis / degrees[targetIdx];\n }\n if (preventOverlap && iter < prevoIter && eucliDis <= 0) {\n Fa1 = 0;\n Fa2 = 0;\n }\n else if (preventOverlap && iter < prevoIter && eucliDis > 0) {\n Fa1 = eucliDis;\n Fa2 = eucliDis;\n }\n forces[2 * idMap[sourceNode.id]] += Fa1 * dir[0];\n forces[2 * idMap[targetNode.id]] -= Fa2 * dir[0];\n forces[2 * idMap[sourceNode.id] + 1] += Fa1 * dir[1];\n forces[2 * idMap[targetNode.id] + 1] -= Fa2 * dir[1];\n }\n return forces;\n }\n getRepGraForces(iter, prevoIter, forces, krPrime, sizes, degrees) {\n const self = this;\n const { nodes, preventOverlap, kr, kg, center, prune } = self;\n const nodeNum = nodes.length;\n for (let i = 0; i < nodeNum; i += 1) {\n for (let j = i + 1; j < nodeNum; j += 1) {\n if (prune && (degrees[i] <= 1 || degrees[j] <= 1))\n continue;\n const dir = [nodes[j].x - nodes[i].x, nodes[j].y - nodes[i].y];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n if (preventOverlap && iter < prevoIter)\n eucliDis = eucliDis - sizes[i] - sizes[j];\n let Fr = kr * (degrees[i] + 1) * (degrees[j] + 1) / eucliDis; // tslint:disable-line\n if (preventOverlap && iter < prevoIter && eucliDis < 0) {\n Fr = krPrime * (degrees[i] + 1) * (degrees[j] + 1);\n }\n else if (preventOverlap && iter < prevoIter && eucliDis === 0) {\n Fr = 0;\n }\n else if (preventOverlap && iter < prevoIter && eucliDis > 0) {\n Fr = kr * (degrees[i] + 1) * (degrees[j] + 1) / eucliDis;\n }\n forces[2 * i] -= Fr * dir[0];\n forces[2 * j] += Fr * dir[0];\n forces[2 * i + 1] -= Fr * dir[1];\n forces[2 * j + 1] += Fr * dir[1];\n }\n // gravity\n const dir = [nodes[i].x - center[0], nodes[i].y - center[1]];\n const eucliDis = Math.hypot(dir[0], dir[1]);\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n const Fg = kg * (degrees[i] + 1); // tslint:disable-line\n forces[2 * i] -= Fg * dir[0];\n forces[2 * i + 1] -= Fg * dir[1];\n }\n return forces;\n }\n getOptRepGraForces(forces, bodies, degrees) {\n const self = this;\n const { nodes, kg, center, prune } = self;\n const nodeNum = nodes.length;\n let minx = 9e10;\n let maxx = -9e10;\n let miny = 9e10;\n let maxy = -9e10;\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1))\n continue;\n bodies[i].setPos(nodes[i].x, nodes[i].y);\n if (nodes[i].x >= maxx)\n maxx = nodes[i].x;\n if (nodes[i].x <= minx)\n minx = nodes[i].x;\n if (nodes[i].y >= maxy)\n maxy = nodes[i].y;\n if (nodes[i].y <= miny)\n miny = nodes[i].y;\n }\n const width = Math.max(maxx - minx, maxy - miny);\n const quadParams = {\n xmid: (maxx + minx) / 2,\n ymid: (maxy + miny) / 2,\n length: width,\n massCenter: center,\n mass: nodeNum\n };\n const quad = new _quad__WEBPACK_IMPORTED_MODULE_3__[\"default\"](quadParams);\n const quadTree = new _quadTree__WEBPACK_IMPORTED_MODULE_4__[\"default\"](quad);\n // build the tree, insert the nodes(quads) into the tree\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1))\n continue;\n if (bodies[i].in(quad))\n quadTree.insert(bodies[i]);\n }\n // update the repulsive forces and the gravity.\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1))\n continue;\n bodies[i].resetForce();\n quadTree.updateForce(bodies[i]);\n forces[2 * i] -= bodies[i].fx;\n forces[2 * i + 1] -= bodies[i].fy;\n // gravity\n const dir = [nodes[i].x - center[0], nodes[i].y - center[1]];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n const Fg = kg * (degrees[i] + 1); // tslint:disable-line\n forces[2 * i] -= Fg * dir[0];\n forces[2 * i + 1] -= Fg * dir[1];\n }\n return forces;\n }\n updatePos(forces, preForces, sg, degrees) {\n const self = this;\n const { nodes, ks, tao, prune, ksmax } = self;\n const nodeNum = nodes.length;\n const swgns = [];\n const trans = [];\n // swg(G) and tra(G)\n let swgG = 0;\n let traG = 0;\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1))\n continue;\n const minus = [forces[2 * i] - preForces[2 * i],\n forces[2 * i + 1] - preForces[2 * i + 1]\n ];\n const minusNorm = Math.hypot(minus[0], minus[1]);\n const add = [forces[2 * i] + preForces[2 * i],\n forces[2 * i + 1] + preForces[2 * i + 1]\n ];\n const addNorm = Math.hypot(add[0], add[1]);\n swgns[i] = minusNorm;\n trans[i] = addNorm / 2;\n swgG += (degrees[i] + 1) * swgns[i];\n traG += (degrees[i] + 1) * trans[i];\n }\n const preSG = sg;\n sg = tao * traG / swgG; // tslint:disable-line\n if (preSG !== 0) {\n sg = sg > (1.5 * preSG) ? (1.5 * preSG) : sg; // tslint:disable-line\n }\n // update the node positions\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1))\n continue;\n let sn = ks * sg / (1 + sg * Math.sqrt(swgns[i]));\n let absForce = Math.hypot(forces[2 * i], forces[2 * i + 1]);\n absForce = absForce < 0.0001 ? 0.0001 : absForce;\n const max = ksmax / absForce;\n sn = sn > max ? max : sn;\n const dnx = sn * forces[2 * i];\n const dny = sn * forces[2 * i + 1];\n nodes[i].x += dnx;\n nodes[i].y += dny;\n }\n return { nodes, sg };\n }\n}\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZUF0bGFzMi9pbmRleC5qcz9mZGJkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStCO0FBQzJDO0FBQ2hEO0FBQ0E7QUFDUTtBQUMzQixnQ0FBZ0MsMENBQUk7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkJBQTZCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGFBQWE7QUFDcEM7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixxREFBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzQkFBc0I7QUFDckM7QUFDQTtBQUNBLDJCQUEyQiw2REFBZTtBQUMxQywyQkFBMkIsNkRBQWU7QUFDMUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsVUFBVTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtCQUErQjtBQUNwRDtBQUNBLHVCQUF1QixXQUFXO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFVBQVU7QUFDckMsK0JBQStCLDZEQUFlO0FBQzlDLCtCQUErQiw2REFBZTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFdBQVc7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGVBQWUscUJBQXFCO0FBQ3BDLGVBQWUsWUFBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGFBQWE7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyw2Q0FBSTtBQUNwQztBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsYUFBYTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1EQUFtRDtBQUNsRSx1QkFBdUIsV0FBVztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQiwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLCtDQUErQztBQUM5RDtBQUNBLHVCQUF1QixhQUFhO0FBQ3BDLCtCQUErQixhQUFhO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZFQUE2RTtBQUM3RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMkJBQTJCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsYUFBYTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLDZDQUFJO0FBQzdCLDZCQUE2QixpREFBUTtBQUNyQztBQUNBLHVCQUF1QixhQUFhO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixhQUFhO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsK0JBQStCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixhQUFhO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQSx1QkFBdUIsYUFBYTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2VBdGxhczIvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlIH0gZnJvbSBcIi4uL2Jhc2VcIjtcbmltcG9ydCB7IGdldEVkZ2VUZXJtaW5hbCwgaXNBcnJheSwgaXNOdW1iZXIsIGlzT2JqZWN0IH0gZnJvbSBcIi4uLy4uL3V0aWxcIjtcbmltcG9ydCBCb2R5IGZyb20gJy4vYm9keSc7XG5pbXBvcnQgUXVhZCBmcm9tICcuL3F1YWQnO1xuaW1wb3J0IFF1YWRUcmVlIGZyb20gJy4vcXVhZFRyZWUnO1xuZXhwb3J0IGNsYXNzIEZvcmNlQXRsYXMyTGF5b3V0IGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvKiog5biD5bGA5Lit5b+DICovXG4gICAgICAgIHRoaXMuY2VudGVyID0gWzAsIDBdO1xuICAgICAgICAvKiog5a695bqmICovXG4gICAgICAgIHRoaXMud2lkdGggPSAzMDA7XG4gICAgICAgIC8qKiDpq5jluqYgKi9cbiAgICAgICAgdGhpcy5oZWlnaHQgPSAzMDA7XG4gICAgICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICAgICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIHBhcmFtZXRlciBmb3IgcmVwdWxzaXZlIGZvcmNlcyxcbiAgICAgICAgICogaXQgd2lsbCBzY2FsZSB0aGUgbGF5b3V0IGJ1dCB3b24ndCBjaGFuZ2UgdGhlIGxheW91dFxuICAgICAgICAgKiBsYXJnZXIgdGhlIGtyLCBsb29zZXIgdGhlIGxheW91dFxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMua3IgPSA1O1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIHBhcmFtZXRlciBmb3IgZ3Jhdml0eSBmb3JjZXNcbiAgICAgICAgICogQHR5cGUgIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmtnID0gMTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIG1vZGVzOlxuICAgICAgICAgKiAnbm9ybWFsJyBmb3Igbm9ybWFsIHVzaW5nXG4gICAgICAgICAqICdsaW5sb2cnIGZvciBjb21wYWN0IGNsdXN0ZXJzLlxuICAgICAgICAgKiBAdHlwZSAge3N0cmluZ31cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubW9kZSA9ICdub3JtYWwnO1xuICAgICAgICAvKipcbiAgICAgICAgICogd2hldGhlciBwcmV2ZW50aW5nIHRoZSBub2RlIG92ZXJsYXBwaW5nXG4gICAgICAgICAqIEB0eXBlICB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucHJldmVudE92ZXJsYXAgPSBmYWxzZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHdoZXRoZXIgYWN0aXZlIHRoZSBkaXNzdWFkZSBodWIgbW9kZVxuICAgICAgICAgKiB0cnVlOiBncmFudCBhdXRob3JpdGllcyAobm9kZXMgd2l0aCBhIGhpZ2ggaW5kZWdyZWUpXG4gICAgICAgICAqIGEgbW9yZSBjZW50cmFsIHBvc2l0aW9uIHRoYW4gaHVicyAobm9kZXMgd2l0aCBhIGhpZ2ggb3V0ZGVncmVlKVxuICAgICAgICAgKiBAdHlwZSAge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmRpc3N1YWRlSHVicyA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICogd2hldGhlciBhY3RpdmUgdGhlIGJhcm5lcyBodXQgb3B0aW1pemF0aW9uIG9uIGNvbXB1dGluZyByZXB1bHNpdmUgZm9yY2VzXG4gICAgICAgICAqIEB0eXBlICB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYmFybmVzSHV0ID0gdW5kZWZpbmVkO1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIG1heCBpdGVyYXRpb24gbnVtYmVyXG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5tYXhJdGVyYXRpb24gPSAwO1xuICAgICAgICAvKipcbiAgICAgICAgICogY29udHJvbCB0aGUgZ2xvYmFsIHZlbG9jaXR5XG4gICAgICAgICAqIGRlZnVhbHQ6IDAuMShnZXBoaSlcbiAgICAgICAgICogQHR5cGUgIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmtzID0gMC4xO1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIG1heCBnbG9iYWwgdmVsb2NpdHlcbiAgICAgICAgICogQHR5cGUgIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmtzbWF4ID0gMTA7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgdG9sZXJhbmNlIGZvciB0aGUgZ2xvYmFsIHN3aW5naW5nXG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy50YW8gPSAwLjE7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgZnVuY3Rpb24gb2YgbGF5b3V0IGNvbXBsZXRlIGxpc3RlbmVyLCBkaXNwbGF5IHRoZSBsZWdlbmQgYW5kIG1pbmltYXAgYWZ0ZXIgbGF5b3V0XG4gICAgICAgICAqIEB0eXBlICB7ZnVuY3Rpb259XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9uTGF5b3V0RW5kID0gKCkgPT4geyB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogYWN0aXZhdGUgcHJ1bmUgb3Igbm90LlxuICAgICAgICAgKiBwcnVuZSB0aGUgbGVhdmVzIGR1cmluZyBtb3N0IGl0ZXJhdGlvbnMsIGxheW91dCB0aGUgbGVhdmVzIGluIHRoZSBsYXN0IDUwIGl0ZXJhaXRvbnMuXG4gICAgICAgICAqIGlmIHBydW5lID09PSAnJywgaXQgd2lsbCBiZSBhY3RpdmF0ZWQgd2hlbiB0aGUgbm9kZXMgbnVtYmVyID4gMTAwXG4gICAgICAgICAqIG5vdGUgdGhhdCBpdCB3aWxsIHJlZHVjZSB0aGUgcXVhbGl0eSBvZiB0aGUgbGF5b3V0XG4gICAgICAgICAqIEB0eXBlICB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucHJ1bmUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMudXBkYXRlQ2ZnKG9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIC8vIGV4ZWN1dGUgdGhlIGxheW91dFxuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB7IG5vZGVzLCBvbkxheW91dEVuZCwgcHJ1bmUsIH0gPSBzZWxmO1xuICAgICAgICBsZXQgbWF4SXRlcmF0aW9uID0gc2VsZi5tYXhJdGVyYXRpb247XG4gICAgICAgIGlmICghc2VsZi53aWR0aCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzZWxmLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLmhlaWdodCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzZWxmLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgd2hpZHRoIG9mIGVhY2ggbm9kZXNcbiAgICAgICAgY29uc3Qgc2l6ZXMgPSBbXTtcbiAgICAgICAgY29uc3Qgbm9kZU51bSA9IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlTnVtOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgICAgIGxldCBub2RlV2lkdGggPSAxMDtcbiAgICAgICAgICAgIGxldCBub2RlSGVpZ2h0ID0gMTA7XG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIobm9kZS5zaXplKSkge1xuICAgICAgICAgICAgICAgIG5vZGVXaWR0aCA9IG5vZGUuc2l6ZTtcbiAgICAgICAgICAgICAgICBub2RlSGVpZ2h0ID0gbm9kZS5zaXplO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQXJyYXkobm9kZS5zaXplKSkge1xuICAgICAgICAgICAgICAgIGlmICghaXNOYU4obm9kZS5zaXplWzBdKSlcbiAgICAgICAgICAgICAgICAgICAgbm9kZVdpZHRoID0gbm9kZS5zaXplWzBdO1xuICAgICAgICAgICAgICAgIGlmICghaXNOYU4obm9kZS5zaXplWzFdKSlcbiAgICAgICAgICAgICAgICAgICAgbm9kZUhlaWdodCA9IG5vZGUuc2l6ZVsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KG5vZGUuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICBub2RlV2lkdGggPSBub2RlLnNpemUud2lkdGg7XG4gICAgICAgICAgICAgICAgbm9kZUhlaWdodCA9IG5vZGUuc2l6ZS5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZi5nZXRXaWR0aCAmJiAhaXNOYU4oc2VsZi5nZXRXaWR0aChub2RlKSkpXG4gICAgICAgICAgICAgICAgbm9kZUhlaWdodCA9IHNlbGYuZ2V0V2lkdGgobm9kZSk7XG4gICAgICAgICAgICBpZiAoc2VsZi5nZXRIZWlnaHQgJiYgIWlzTmFOKHNlbGYuZ2V0SGVpZ2h0KG5vZGUpKSlcbiAgICAgICAgICAgICAgICBub2RlV2lkdGggPSBzZWxmLmdldEhlaWdodChub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IG1heFNpemUgPSBNYXRoLm1heChub2RlV2lkdGgsIG5vZGVIZWlnaHQpO1xuICAgICAgICAgICAgc2l6ZXMucHVzaChtYXhTaXplKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZi5iYXJuZXNIdXQgPT09IHVuZGVmaW5lZCAmJiBub2RlTnVtID4gMjUwKVxuICAgICAgICAgICAgc2VsZi5iYXJuZXNIdXQgPSB0cnVlO1xuICAgICAgICBpZiAoc2VsZi5wcnVuZSA9PT0gdW5kZWZpbmVkICYmIG5vZGVOdW0gPiAxMDApXG4gICAgICAgICAgICBzZWxmLnBydW5lID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMubWF4SXRlcmF0aW9uID09PSAwICYmICFzZWxmLnBydW5lKSB7XG4gICAgICAgICAgICBtYXhJdGVyYXRpb24gPSAyNTA7XG4gICAgICAgICAgICBpZiAobm9kZU51bSA8PSAyMDAgJiYgbm9kZU51bSA+IDEwMClcbiAgICAgICAgICAgICAgICBtYXhJdGVyYXRpb24gPSAxMDAwO1xuICAgICAgICAgICAgZWxzZSBpZiAobm9kZU51bSA+IDIwMClcbiAgICAgICAgICAgICAgICBtYXhJdGVyYXRpb24gPSAxMjAwO1xuICAgICAgICAgICAgdGhpcy5tYXhJdGVyYXRpb24gPSBtYXhJdGVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5tYXhJdGVyYXRpb24gPT09IDAgJiYgcHJ1bmUpIHtcbiAgICAgICAgICAgIG1heEl0ZXJhdGlvbiA9IDEwMDtcbiAgICAgICAgICAgIGlmIChub2RlTnVtIDw9IDIwMCAmJiBub2RlTnVtID4gMTAwKVxuICAgICAgICAgICAgICAgIG1heEl0ZXJhdGlvbiA9IDUwMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVOdW0gPiAyMDApXG4gICAgICAgICAgICAgICAgbWF4SXRlcmF0aW9uID0gOTUwO1xuICAgICAgICAgICAgdGhpcy5tYXhJdGVyYXRpb24gPSBtYXhJdGVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLmtyKSB7XG4gICAgICAgICAgICBzZWxmLmtyID0gNTA7XG4gICAgICAgICAgICBpZiAobm9kZU51bSA+IDEwMCAmJiBub2RlTnVtIDw9IDUwMClcbiAgICAgICAgICAgICAgICBzZWxmLmtyID0gMjA7XG4gICAgICAgICAgICBlbHNlIGlmIChub2RlTnVtID4gNTAwKVxuICAgICAgICAgICAgICAgIHNlbGYua3IgPSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi5rZykge1xuICAgICAgICAgICAgc2VsZi5rZyA9IDIwO1xuICAgICAgICAgICAgaWYgKG5vZGVOdW0gPiAxMDAgJiYgbm9kZU51bSA8PSA1MDApXG4gICAgICAgICAgICAgICAgc2VsZi5rZyA9IDEwO1xuICAgICAgICAgICAgZWxzZSBpZiAobm9kZU51bSA+IDUwMClcbiAgICAgICAgICAgICAgICBzZWxmLmtnID0gMTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vZGVzID0gc2VsZi51cGRhdGVOb2Rlc0J5Rm9yY2VzKHNpemVzKTtcbiAgICAgICAgb25MYXlvdXRFbmQoKTtcbiAgICB9XG4gICAgdXBkYXRlTm9kZXNCeUZvcmNlcyhzaXplcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgeyBlZGdlcywgbWF4SXRlcmF0aW9uIH0gPSBzZWxmO1xuICAgICAgICBsZXQgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBub25Mb29wRWRnZXMgPSBlZGdlcy5maWx0ZXIoKGVkZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChlZGdlLCAnc291cmNlJyk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwoZWRnZSwgJ3RhcmdldCcpO1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZSAhPT0gdGFyZ2V0O1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZXNpemUgPSBub25Mb29wRWRnZXMubGVuZ3RoO1xuICAgICAgICBjb25zdCBkZWdyZWVzID0gW107XG4gICAgICAgIGNvbnN0IGlkTWFwID0ge307XG4gICAgICAgIGNvbnN0IGVkZ2VFbmRzSWRNYXAgPSB7fTtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIGNvbnN0IEVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAxKSB7XG4gICAgICAgICAgICBpZE1hcFtub2Rlc1tpXS5pZF0gPSBpO1xuICAgICAgICAgICAgZGVncmVlc1tpXSA9IDA7XG4gICAgICAgICAgICBpZiAobm9kZXNbaV0ueCA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKG5vZGVzW2ldLngpKSB7XG4gICAgICAgICAgICAgICAgbm9kZXNbaV0ueCA9IE1hdGgucmFuZG9tKCkgKiAxMDAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vZGVzW2ldLnkgPT09IHVuZGVmaW5lZCB8fCBpc05hTihub2Rlc1tpXS55KSkge1xuICAgICAgICAgICAgICAgIG5vZGVzW2ldLnkgPSBNYXRoLnJhbmRvbSgpICogMTAwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEVzLnB1c2goeyB4OiBub2Rlc1tpXS54LCB5OiBub2Rlc1tpXS55IH0pO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXNpemU7IGkgKz0gMSkge1xuICAgICAgICAgICAgbGV0IG5vZGUxO1xuICAgICAgICAgICAgbGV0IG5vZGUyO1xuICAgICAgICAgICAgbGV0IHNJZHggPSAwO1xuICAgICAgICAgICAgbGV0IHRJZHggPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFZGdlVGVybWluYWwobm9uTG9vcEVkZ2VzW2ldLCAnc291cmNlJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKG5vbkxvb3BFZGdlc1tpXSwgJ3RhcmdldCcpO1xuICAgICAgICAgICAgICAgIGlmIChub2Rlc1tqXS5pZCA9PT0gc291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUxID0gbm9kZXNbal07XG4gICAgICAgICAgICAgICAgICAgIHNJZHggPSBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChub2Rlc1tqXS5pZCA9PT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUyID0gbm9kZXNbal07XG4gICAgICAgICAgICAgICAgICAgIHRJZHggPSBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlZGdlRW5kc0lkTWFwW2ldID0geyBzb3VyY2VJZHg6IHNJZHgsIHRhcmdldElkeDogdElkeCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vZGUxKVxuICAgICAgICAgICAgICAgIGRlZ3JlZXNbaWRNYXBbbm9kZTEuaWRdXSArPSAxO1xuICAgICAgICAgICAgaWYgKG5vZGUyKVxuICAgICAgICAgICAgICAgIGRlZ3JlZXNbaWRNYXBbbm9kZTIuaWRdXSArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpdGVyYXRpb24gPSBtYXhJdGVyYXRpb247XG4gICAgICAgIG5vZGVzID0gdGhpcy5pdGVyYXRlKGl0ZXJhdGlvbiwgaWRNYXAsIGVkZ2VFbmRzSWRNYXAsIGVzaXplLCBkZWdyZWVzLCBzaXplcyk7XG4gICAgICAgIC8vIGlmIHBydW5lLCBwbGFjZSB0aGUgbGVhdmVzIGFyb3VuZCB0aGVpciBwYXJlbnRzLCBhbmQgdGhlbiByZS1sYXlvdXQgZm9yIHNldmVyYWwgaXRlcmF0aW9ucy5cbiAgICAgICAgaWYgKHNlbGYucHJ1bmUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZXNpemU7IGogKz0gMSkge1xuICAgICAgICAgICAgICAgIGlmIChkZWdyZWVzW2VkZ2VFbmRzSWRNYXBbal0uc291cmNlSWR4XSA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzW2VkZ2VFbmRzSWRNYXBbal0uc291cmNlSWR4XS54ID0gbm9kZXNbZWRnZUVuZHNJZE1hcFtqXS50YXJnZXRJZHhdLng7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzW2VkZ2VFbmRzSWRNYXBbal0uc291cmNlSWR4XS55ID0gbm9kZXNbZWRnZUVuZHNJZE1hcFtqXS50YXJnZXRJZHhdLnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRlZ3JlZXNbZWRnZUVuZHNJZE1hcFtqXS50YXJnZXRJZHhdIDw9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXNbZWRnZUVuZHNJZE1hcFtqXS50YXJnZXRJZHhdLnggPSBub2Rlc1tlZGdlRW5kc0lkTWFwW2pdLnNvdXJjZUlkeF0ueDtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXNbZWRnZUVuZHNJZE1hcFtqXS50YXJnZXRJZHhdLnkgPSBub2Rlc1tlZGdlRW5kc0lkTWFwW2pdLnNvdXJjZUlkeF0ueTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLnBydW5lID0gZmFsc2U7XG4gICAgICAgICAgICBzZWxmLmJhcm5lc0h1dCA9IGZhbHNlO1xuICAgICAgICAgICAgaXRlcmF0aW9uID0gMTAwO1xuICAgICAgICAgICAgbm9kZXMgPSB0aGlzLml0ZXJhdGUoaXRlcmF0aW9uLCBpZE1hcCwgZWRnZUVuZHNJZE1hcCwgZXNpemUsIGRlZ3JlZXMsIHNpemVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgfVxuICAgIGl0ZXJhdGUoaXRlcmF0aW9uLCBpZE1hcCwgZWRnZUVuZHNJZE1hcCwgZXNpemUsIGRlZ3JlZXMsIHNpemVzKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBsZXQgeyBub2RlcyB9ID0gc2VsZjtcbiAgICAgICAgY29uc3QgeyBrciwgcHJldmVudE92ZXJsYXAgfSA9IHNlbGY7XG4gICAgICAgIGNvbnN0IHsgYmFybmVzSHV0IH0gPSBzZWxmO1xuICAgICAgICBjb25zdCBub2RlTnVtID0gbm9kZXMubGVuZ3RoO1xuICAgICAgICBsZXQgc2cgPSAwO1xuICAgICAgICBjb25zdCBrclByaW1lID0gMTAwO1xuICAgICAgICBsZXQgaXRlciA9IGl0ZXJhdGlvbjtcbiAgICAgICAgY29uc3QgcHJldm9JdGVyID0gNTA7XG4gICAgICAgIGxldCBmb3JjZXMgPSBbXTtcbiAgICAgICAgY29uc3QgcHJlRm9yY2VzID0gW107XG4gICAgICAgIGNvbnN0IGJvZGllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVOdW07IGkgKz0gMSkge1xuICAgICAgICAgICAgZm9yY2VzWzIgKiBpXSA9IDA7XG4gICAgICAgICAgICBmb3JjZXNbMiAqIGkgKyAxXSA9IDA7XG4gICAgICAgICAgICBpZiAoYmFybmVzSHV0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICBpZDogaSxcbiAgICAgICAgICAgICAgICAgICAgcng6IG5vZGVzW2ldLngsXG4gICAgICAgICAgICAgICAgICAgIHJ5OiBub2Rlc1tpXS55LFxuICAgICAgICAgICAgICAgICAgICBtYXNzOiAxLFxuICAgICAgICAgICAgICAgICAgICBnOiBrcixcbiAgICAgICAgICAgICAgICAgICAgZGVncmVlOiBkZWdyZWVzW2ldXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBib2RpZXNbaV0gPSBuZXcgQm9keShwYXJhbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpdGVyID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlTnVtOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICBwcmVGb3JjZXNbMiAqIGldID0gZm9yY2VzWzIgKiBpXTtcbiAgICAgICAgICAgICAgICBwcmVGb3JjZXNbMiAqIGkgKyAxXSA9IGZvcmNlc1syICogaSArIDFdO1xuICAgICAgICAgICAgICAgIGZvcmNlc1syICogaV0gPSAwO1xuICAgICAgICAgICAgICAgIGZvcmNlc1syICogaSArIDFdID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGF0dHJhY3RpdmUgZm9yY2VzLCBleGlzdGluZyBvbiBldmVyeSBhY3R1YWwgZWRnZVxuICAgICAgICAgICAgZm9yY2VzID0gdGhpcy5nZXRBdHRyRm9yY2VzKGl0ZXIsIHByZXZvSXRlciwgZXNpemUsIGlkTWFwLCBlZGdlRW5kc0lkTWFwLCBkZWdyZWVzLCBzaXplcywgZm9yY2VzKTtcbiAgICAgICAgICAgIC8vIHJlcHVsc2l2ZSBmb3JjZXMgYW5kIEdyYXZpdHksIGV4aXN0aW5nIG9uIGV2ZXJ5IG5vZGUgcGFpclxuICAgICAgICAgICAgLy8gaWYgcHJldmVudE92ZXJsYXAsIHVzaW5nIHRoZSBuby1vcHRpbWl6ZWQgbWV0aG9kIGluIHRoZSBsYXN0IHByZXZvSXRlciBpbnN0ZWFkLlxuICAgICAgICAgICAgaWYgKGJhcm5lc0h1dCAmJiAoKHByZXZlbnRPdmVybGFwICYmIGl0ZXIgPiBwcmV2b0l0ZXIpIHx8ICFwcmV2ZW50T3ZlcmxhcCkpIHtcbiAgICAgICAgICAgICAgICBmb3JjZXMgPSB0aGlzLmdldE9wdFJlcEdyYUZvcmNlcyhmb3JjZXMsIGJvZGllcywgZGVncmVlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JjZXMgPSB0aGlzLmdldFJlcEdyYUZvcmNlcyhpdGVyLCBwcmV2b0l0ZXIsIGZvcmNlcywga3JQcmltZSwgc2l6ZXMsIGRlZ3JlZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBwb3NpdGlvbnNcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudXBkYXRlUG9zKGZvcmNlcywgcHJlRm9yY2VzLCBzZywgZGVncmVlcyk7XG4gICAgICAgICAgICBub2RlcyA9IHJlcy5ub2RlcztcbiAgICAgICAgICAgIHNnID0gcmVzLnNnO1xuICAgICAgICAgICAgaXRlci0tO1xuICAgICAgICAgICAgaWYgKHNlbGYudGljaylcbiAgICAgICAgICAgICAgICBzZWxmLnRpY2soKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgfVxuICAgIGdldEF0dHJGb3JjZXMoaXRlciwgcHJldm9JdGVyLCBlc2l6ZSwgaWRNYXAsIGVkZ2VFbmRzSWRNYXAsIGRlZ3JlZXMsIHNpemVzLCBmb3JjZXMpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgbm9kZXMsIHByZXZlbnRPdmVybGFwLCBkaXNzdWFkZUh1YnMsIG1vZGUsIHBydW5lIH0gPSBzZWxmO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVzaXplOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZU5vZGUgPSBub2Rlc1tlZGdlRW5kc0lkTWFwW2ldLnNvdXJjZUlkeF07XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VJZHggPSBlZGdlRW5kc0lkTWFwW2ldLnNvdXJjZUlkeDtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSBub2Rlc1tlZGdlRW5kc0lkTWFwW2ldLnRhcmdldElkeF07XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRJZHggPSBlZGdlRW5kc0lkTWFwW2ldLnRhcmdldElkeDtcbiAgICAgICAgICAgIGlmIChwcnVuZSAmJiAoZGVncmVlc1tzb3VyY2VJZHhdIDw9IDEgfHwgZGVncmVlc1t0YXJnZXRJZHhdIDw9IDEpKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgZGlyID0gW3RhcmdldE5vZGUueCAtIHNvdXJjZU5vZGUueCwgdGFyZ2V0Tm9kZS55IC0gc291cmNlTm9kZS55XTtcbiAgICAgICAgICAgIGxldCBldWNsaURpcyA9IE1hdGguaHlwb3QoZGlyWzBdLCBkaXJbMV0pO1xuICAgICAgICAgICAgZXVjbGlEaXMgPSBldWNsaURpcyA8IDAuMDAwMSA/IDAuMDAwMSA6IGV1Y2xpRGlzO1xuICAgICAgICAgICAgZGlyWzBdID0gZGlyWzBdIC8gZXVjbGlEaXM7XG4gICAgICAgICAgICBkaXJbMV0gPSBkaXJbMV0gLyBldWNsaURpcztcbiAgICAgICAgICAgIGlmIChwcmV2ZW50T3ZlcmxhcCAmJiBpdGVyIDwgcHJldm9JdGVyKVxuICAgICAgICAgICAgICAgIGV1Y2xpRGlzID0gZXVjbGlEaXMgLSBzaXplc1tzb3VyY2VJZHhdIC0gc2l6ZXNbdGFyZ2V0SWR4XTtcbiAgICAgICAgICAgIGxldCBGYTEgPSBldWNsaURpczsgLy8gdHNsaW50OmRpc2FibGUtbGluZVxuICAgICAgICAgICAgbGV0IEZhMiA9IEZhMTsgLy8gdHNsaW50OmRpc2FibGUtbGluZVxuICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdsaW5sb2cnKSB7XG4gICAgICAgICAgICAgICAgRmExID0gTWF0aC5sb2coMSArIGV1Y2xpRGlzKTtcbiAgICAgICAgICAgICAgICBGYTIgPSBGYTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGlzc3VhZGVIdWJzKSB7XG4gICAgICAgICAgICAgICAgRmExID0gZXVjbGlEaXMgLyBkZWdyZWVzW3NvdXJjZUlkeF07XG4gICAgICAgICAgICAgICAgRmEyID0gZXVjbGlEaXMgLyBkZWdyZWVzW3RhcmdldElkeF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJldmVudE92ZXJsYXAgJiYgaXRlciA8IHByZXZvSXRlciAmJiBldWNsaURpcyA8PSAwKSB7XG4gICAgICAgICAgICAgICAgRmExID0gMDtcbiAgICAgICAgICAgICAgICBGYTIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocHJldmVudE92ZXJsYXAgJiYgaXRlciA8IHByZXZvSXRlciAmJiBldWNsaURpcyA+IDApIHtcbiAgICAgICAgICAgICAgICBGYTEgPSBldWNsaURpcztcbiAgICAgICAgICAgICAgICBGYTIgPSBldWNsaURpcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvcmNlc1syICogaWRNYXBbc291cmNlTm9kZS5pZF1dICs9IEZhMSAqIGRpclswXTtcbiAgICAgICAgICAgIGZvcmNlc1syICogaWRNYXBbdGFyZ2V0Tm9kZS5pZF1dIC09IEZhMiAqIGRpclswXTtcbiAgICAgICAgICAgIGZvcmNlc1syICogaWRNYXBbc291cmNlTm9kZS5pZF0gKyAxXSArPSBGYTEgKiBkaXJbMV07XG4gICAgICAgICAgICBmb3JjZXNbMiAqIGlkTWFwW3RhcmdldE5vZGUuaWRdICsgMV0gLT0gRmEyICogZGlyWzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JjZXM7XG4gICAgfVxuICAgIGdldFJlcEdyYUZvcmNlcyhpdGVyLCBwcmV2b0l0ZXIsIGZvcmNlcywga3JQcmltZSwgc2l6ZXMsIGRlZ3JlZXMpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgbm9kZXMsIHByZXZlbnRPdmVybGFwLCBrciwga2csIGNlbnRlciwgcHJ1bmUgfSA9IHNlbGY7XG4gICAgICAgIGNvbnN0IG5vZGVOdW0gPSBub2Rlcy5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZU51bTsgaSArPSAxKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBub2RlTnVtOyBqICs9IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJ1bmUgJiYgKGRlZ3JlZXNbaV0gPD0gMSB8fCBkZWdyZWVzW2pdIDw9IDEpKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXIgPSBbbm9kZXNbal0ueCAtIG5vZGVzW2ldLngsIG5vZGVzW2pdLnkgLSBub2Rlc1tpXS55XTtcbiAgICAgICAgICAgICAgICBsZXQgZXVjbGlEaXMgPSBNYXRoLmh5cG90KGRpclswXSwgZGlyWzFdKTtcbiAgICAgICAgICAgICAgICBldWNsaURpcyA9IGV1Y2xpRGlzIDwgMC4wMDAxID8gMC4wMDAxIDogZXVjbGlEaXM7XG4gICAgICAgICAgICAgICAgZGlyWzBdID0gZGlyWzBdIC8gZXVjbGlEaXM7XG4gICAgICAgICAgICAgICAgZGlyWzFdID0gZGlyWzFdIC8gZXVjbGlEaXM7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZlbnRPdmVybGFwICYmIGl0ZXIgPCBwcmV2b0l0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGV1Y2xpRGlzID0gZXVjbGlEaXMgLSBzaXplc1tpXSAtIHNpemVzW2pdO1xuICAgICAgICAgICAgICAgIGxldCBGciA9IGtyICogKGRlZ3JlZXNbaV0gKyAxKSAqIChkZWdyZWVzW2pdICsgMSkgLyBldWNsaURpczsgLy8gdHNsaW50OmRpc2FibGUtbGluZVxuICAgICAgICAgICAgICAgIGlmIChwcmV2ZW50T3ZlcmxhcCAmJiBpdGVyIDwgcHJldm9JdGVyICYmIGV1Y2xpRGlzIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBGciA9IGtyUHJpbWUgKiAoZGVncmVlc1tpXSArIDEpICogKGRlZ3JlZXNbal0gKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJldmVudE92ZXJsYXAgJiYgaXRlciA8IHByZXZvSXRlciAmJiBldWNsaURpcyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBGciA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZlbnRPdmVybGFwICYmIGl0ZXIgPCBwcmV2b0l0ZXIgJiYgZXVjbGlEaXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIEZyID0ga3IgKiAoZGVncmVlc1tpXSArIDEpICogKGRlZ3JlZXNbal0gKyAxKSAvIGV1Y2xpRGlzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3JjZXNbMiAqIGldIC09IEZyICogZGlyWzBdO1xuICAgICAgICAgICAgICAgIGZvcmNlc1syICogal0gKz0gRnIgKiBkaXJbMF07XG4gICAgICAgICAgICAgICAgZm9yY2VzWzIgKiBpICsgMV0gLT0gRnIgKiBkaXJbMV07XG4gICAgICAgICAgICAgICAgZm9yY2VzWzIgKiBqICsgMV0gKz0gRnIgKiBkaXJbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBncmF2aXR5XG4gICAgICAgICAgICBjb25zdCBkaXIgPSBbbm9kZXNbaV0ueCAtIGNlbnRlclswXSwgbm9kZXNbaV0ueSAtIGNlbnRlclsxXV07XG4gICAgICAgICAgICBjb25zdCBldWNsaURpcyA9IE1hdGguaHlwb3QoZGlyWzBdLCBkaXJbMV0pO1xuICAgICAgICAgICAgZGlyWzBdID0gZGlyWzBdIC8gZXVjbGlEaXM7XG4gICAgICAgICAgICBkaXJbMV0gPSBkaXJbMV0gLyBldWNsaURpcztcbiAgICAgICAgICAgIGNvbnN0IEZnID0ga2cgKiAoZGVncmVlc1tpXSArIDEpOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG4gICAgICAgICAgICBmb3JjZXNbMiAqIGldIC09IEZnICogZGlyWzBdO1xuICAgICAgICAgICAgZm9yY2VzWzIgKiBpICsgMV0gLT0gRmcgKiBkaXJbMV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmNlcztcbiAgICB9XG4gICAgZ2V0T3B0UmVwR3JhRm9yY2VzKGZvcmNlcywgYm9kaWVzLCBkZWdyZWVzKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB7IG5vZGVzLCBrZywgY2VudGVyLCBwcnVuZSB9ID0gc2VsZjtcbiAgICAgICAgY29uc3Qgbm9kZU51bSA9IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgbGV0IG1pbnggPSA5ZTEwO1xuICAgICAgICBsZXQgbWF4eCA9IC05ZTEwO1xuICAgICAgICBsZXQgbWlueSA9IDllMTA7XG4gICAgICAgIGxldCBtYXh5ID0gLTllMTA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZU51bTsgaSArPSAxKSB7XG4gICAgICAgICAgICBpZiAocHJ1bmUgJiYgKGRlZ3JlZXNbaV0gPD0gMSkpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBib2RpZXNbaV0uc2V0UG9zKG5vZGVzW2ldLngsIG5vZGVzW2ldLnkpO1xuICAgICAgICAgICAgaWYgKG5vZGVzW2ldLnggPj0gbWF4eClcbiAgICAgICAgICAgICAgICBtYXh4ID0gbm9kZXNbaV0ueDtcbiAgICAgICAgICAgIGlmIChub2Rlc1tpXS54IDw9IG1pbngpXG4gICAgICAgICAgICAgICAgbWlueCA9IG5vZGVzW2ldLng7XG4gICAgICAgICAgICBpZiAobm9kZXNbaV0ueSA+PSBtYXh5KVxuICAgICAgICAgICAgICAgIG1heHkgPSBub2Rlc1tpXS55O1xuICAgICAgICAgICAgaWYgKG5vZGVzW2ldLnkgPD0gbWlueSlcbiAgICAgICAgICAgICAgICBtaW55ID0gbm9kZXNbaV0ueTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aWR0aCA9IE1hdGgubWF4KG1heHggLSBtaW54LCBtYXh5IC0gbWlueSk7XG4gICAgICAgIGNvbnN0IHF1YWRQYXJhbXMgPSB7XG4gICAgICAgICAgICB4bWlkOiAobWF4eCArIG1pbngpIC8gMixcbiAgICAgICAgICAgIHltaWQ6IChtYXh5ICsgbWlueSkgLyAyLFxuICAgICAgICAgICAgbGVuZ3RoOiB3aWR0aCxcbiAgICAgICAgICAgIG1hc3NDZW50ZXI6IGNlbnRlcixcbiAgICAgICAgICAgIG1hc3M6IG5vZGVOdW1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcXVhZCA9IG5ldyBRdWFkKHF1YWRQYXJhbXMpO1xuICAgICAgICBjb25zdCBxdWFkVHJlZSA9IG5ldyBRdWFkVHJlZShxdWFkKTtcbiAgICAgICAgLy8gYnVpbGQgdGhlIHRyZWUsIGluc2VydCB0aGUgbm9kZXMocXVhZHMpIGludG8gdGhlIHRyZWVcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlTnVtOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChwcnVuZSAmJiAoZGVncmVlc1tpXSA8PSAxKSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChib2RpZXNbaV0uaW4ocXVhZCkpXG4gICAgICAgICAgICAgICAgcXVhZFRyZWUuaW5zZXJ0KGJvZGllc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdXBkYXRlIHRoZSByZXB1bHNpdmUgZm9yY2VzIGFuZCB0aGUgZ3Jhdml0eS5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlTnVtOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChwcnVuZSAmJiAoZGVncmVlc1tpXSA8PSAxKSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGJvZGllc1tpXS5yZXNldEZvcmNlKCk7XG4gICAgICAgICAgICBxdWFkVHJlZS51cGRhdGVGb3JjZShib2RpZXNbaV0pO1xuICAgICAgICAgICAgZm9yY2VzWzIgKiBpXSAtPSBib2RpZXNbaV0uZng7XG4gICAgICAgICAgICBmb3JjZXNbMiAqIGkgKyAxXSAtPSBib2RpZXNbaV0uZnk7XG4gICAgICAgICAgICAvLyBncmF2aXR5XG4gICAgICAgICAgICBjb25zdCBkaXIgPSBbbm9kZXNbaV0ueCAtIGNlbnRlclswXSwgbm9kZXNbaV0ueSAtIGNlbnRlclsxXV07XG4gICAgICAgICAgICBsZXQgZXVjbGlEaXMgPSBNYXRoLmh5cG90KGRpclswXSwgZGlyWzFdKTtcbiAgICAgICAgICAgIGV1Y2xpRGlzID0gZXVjbGlEaXMgPCAwLjAwMDEgPyAwLjAwMDEgOiBldWNsaURpcztcbiAgICAgICAgICAgIGRpclswXSA9IGRpclswXSAvIGV1Y2xpRGlzO1xuICAgICAgICAgICAgZGlyWzFdID0gZGlyWzFdIC8gZXVjbGlEaXM7XG4gICAgICAgICAgICBjb25zdCBGZyA9IGtnICogKGRlZ3JlZXNbaV0gKyAxKTsgLy8gdHNsaW50OmRpc2FibGUtbGluZVxuICAgICAgICAgICAgZm9yY2VzWzIgKiBpXSAtPSBGZyAqIGRpclswXTtcbiAgICAgICAgICAgIGZvcmNlc1syICogaSArIDFdIC09IEZnICogZGlyWzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JjZXM7XG4gICAgfVxuICAgIHVwZGF0ZVBvcyhmb3JjZXMsIHByZUZvcmNlcywgc2csIGRlZ3JlZXMpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgbm9kZXMsIGtzLCB0YW8sIHBydW5lLCBrc21heCB9ID0gc2VsZjtcbiAgICAgICAgY29uc3Qgbm9kZU51bSA9IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgY29uc3Qgc3dnbnMgPSBbXTtcbiAgICAgICAgY29uc3QgdHJhbnMgPSBbXTtcbiAgICAgICAgLy8gc3dnKEcpIGFuZCB0cmEoRylcbiAgICAgICAgbGV0IHN3Z0cgPSAwO1xuICAgICAgICBsZXQgdHJhRyA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZU51bTsgaSArPSAxKSB7XG4gICAgICAgICAgICBpZiAocHJ1bmUgJiYgKGRlZ3JlZXNbaV0gPD0gMSkpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCBtaW51cyA9IFtmb3JjZXNbMiAqIGldIC0gcHJlRm9yY2VzWzIgKiBpXSxcbiAgICAgICAgICAgICAgICBmb3JjZXNbMiAqIGkgKyAxXSAtIHByZUZvcmNlc1syICogaSArIDFdXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uc3QgbWludXNOb3JtID0gTWF0aC5oeXBvdChtaW51c1swXSwgbWludXNbMV0pO1xuICAgICAgICAgICAgY29uc3QgYWRkID0gW2ZvcmNlc1syICogaV0gKyBwcmVGb3JjZXNbMiAqIGldLFxuICAgICAgICAgICAgICAgIGZvcmNlc1syICogaSArIDFdICsgcHJlRm9yY2VzWzIgKiBpICsgMV1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjb25zdCBhZGROb3JtID0gTWF0aC5oeXBvdChhZGRbMF0sIGFkZFsxXSk7XG4gICAgICAgICAgICBzd2duc1tpXSA9IG1pbnVzTm9ybTtcbiAgICAgICAgICAgIHRyYW5zW2ldID0gYWRkTm9ybSAvIDI7XG4gICAgICAgICAgICBzd2dHICs9IChkZWdyZWVzW2ldICsgMSkgKiBzd2duc1tpXTtcbiAgICAgICAgICAgIHRyYUcgKz0gKGRlZ3JlZXNbaV0gKyAxKSAqIHRyYW5zW2ldO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZVNHID0gc2c7XG4gICAgICAgIHNnID0gdGFvICogdHJhRyAvIHN3Z0c7IC8vIHRzbGludDpkaXNhYmxlLWxpbmVcbiAgICAgICAgaWYgKHByZVNHICE9PSAwKSB7XG4gICAgICAgICAgICBzZyA9IHNnID4gKDEuNSAqIHByZVNHKSA/ICgxLjUgKiBwcmVTRykgOiBzZzsgLy8gdHNsaW50OmRpc2FibGUtbGluZVxuICAgICAgICB9XG4gICAgICAgIC8vIHVwZGF0ZSB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlTnVtOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChwcnVuZSAmJiAoZGVncmVlc1tpXSA8PSAxKSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGxldCBzbiA9IGtzICogc2cgLyAoMSArIHNnICogTWF0aC5zcXJ0KHN3Z25zW2ldKSk7XG4gICAgICAgICAgICBsZXQgYWJzRm9yY2UgPSBNYXRoLmh5cG90KGZvcmNlc1syICogaV0sIGZvcmNlc1syICogaSArIDFdKTtcbiAgICAgICAgICAgIGFic0ZvcmNlID0gYWJzRm9yY2UgPCAwLjAwMDEgPyAwLjAwMDEgOiBhYnNGb3JjZTtcbiAgICAgICAgICAgIGNvbnN0IG1heCA9IGtzbWF4IC8gYWJzRm9yY2U7XG4gICAgICAgICAgICBzbiA9IHNuID4gbWF4ID8gbWF4IDogc247XG4gICAgICAgICAgICBjb25zdCBkbnggPSBzbiAqIGZvcmNlc1syICogaV07XG4gICAgICAgICAgICBjb25zdCBkbnkgPSBzbiAqIGZvcmNlc1syICogaSArIDFdO1xuICAgICAgICAgICAgbm9kZXNbaV0ueCArPSBkbng7XG4gICAgICAgICAgICBub2Rlc1tpXS55ICs9IGRueTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBub2Rlcywgc2cgfTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/forceAtlas2/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/forceAtlas2/quad.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/forceAtlas2/quad.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Quad; });\nclass Quad {\n constructor(params) {\n /**\n * the center position of this quad\n * @type {number}\n */\n this.xmid = params.xmid;\n /**\n * the center position of this quad\n * @type {number}\n */\n this.ymid = params.ymid;\n /**\n * the length of this quad\n * @type {number}\n */\n this.length = params.length;\n /**\n * the mass center of this quad\n * @type {number}\n */\n this.massCenter = params.massCenter || [0, 0];\n /**\n * the mass of this quad\n * @type {number}\n */\n this.mass = params.mass || 1;\n }\n getLength() {\n return this.length;\n }\n contains(x, y) {\n const halfLen = this.length / 2;\n return (x <= this.xmid + halfLen &&\n x >= this.xmid - halfLen &&\n y <= this.ymid + halfLen &&\n y >= this.ymid - halfLen);\n }\n // northwest quadrant\n // tslint:disable-next-line\n NW() {\n const x = this.xmid - this.length / 4;\n const y = this.ymid + this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len\n };\n const NW = new Quad(params);\n return NW;\n }\n // northeast\n // tslint:disable-next-line\n NE() {\n const x = this.xmid + this.length / 4;\n const y = this.ymid + this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len\n };\n const NE = new Quad(params);\n return NE;\n }\n // southwest\n // tslint:disable-next-line\n SW() {\n const x = this.xmid - this.length / 4;\n const y = this.ymid - this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len\n };\n const SW = new Quad(params);\n return SW;\n }\n // southeast\n // tslint:disable-next-line\n SE() {\n const x = this.xmid + this.length / 4;\n const y = this.ymid - this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len\n };\n const SE = new Quad(params);\n return SE;\n }\n}\n//# sourceMappingURL=quad.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZUF0bGFzMi9xdWFkLmpzP2ZhYzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZUF0bGFzMi9xdWFkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgUXVhZCB7XG4gICAgY29uc3RydWN0b3IocGFyYW1zKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgY2VudGVyIHBvc2l0aW9uIG9mIHRoaXMgcXVhZFxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMueG1pZCA9IHBhcmFtcy54bWlkO1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIGNlbnRlciBwb3NpdGlvbiBvZiB0aGlzIHF1YWRcbiAgICAgICAgICogQHR5cGUgIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnltaWQgPSBwYXJhbXMueW1pZDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBsZW5ndGggb2YgdGhpcyBxdWFkXG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5sZW5ndGggPSBwYXJhbXMubGVuZ3RoO1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIG1hc3MgY2VudGVyIG9mIHRoaXMgcXVhZFxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubWFzc0NlbnRlciA9IHBhcmFtcy5tYXNzQ2VudGVyIHx8IFswLCAwXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBtYXNzIG9mIHRoaXMgcXVhZFxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubWFzcyA9IHBhcmFtcy5tYXNzIHx8IDE7XG4gICAgfVxuICAgIGdldExlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoO1xuICAgIH1cbiAgICBjb250YWlucyh4LCB5KSB7XG4gICAgICAgIGNvbnN0IGhhbGZMZW4gPSB0aGlzLmxlbmd0aCAvIDI7XG4gICAgICAgIHJldHVybiAoeCA8PSB0aGlzLnhtaWQgKyBoYWxmTGVuICYmXG4gICAgICAgICAgICB4ID49IHRoaXMueG1pZCAtIGhhbGZMZW4gJiZcbiAgICAgICAgICAgIHkgPD0gdGhpcy55bWlkICsgaGFsZkxlbiAmJlxuICAgICAgICAgICAgeSA+PSB0aGlzLnltaWQgLSBoYWxmTGVuKTtcbiAgICB9XG4gICAgLy8gbm9ydGh3ZXN0IHF1YWRyYW50XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgTlcoKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLnhtaWQgLSB0aGlzLmxlbmd0aCAvIDQ7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLnltaWQgKyB0aGlzLmxlbmd0aCAvIDQ7XG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoIC8gMjtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgeG1pZDogeCxcbiAgICAgICAgICAgIHltaWQ6IHksXG4gICAgICAgICAgICBsZW5ndGg6IGxlblxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBOVyA9IG5ldyBRdWFkKHBhcmFtcyk7XG4gICAgICAgIHJldHVybiBOVztcbiAgICB9XG4gICAgLy8gbm9ydGhlYXN0XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgTkUoKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLnhtaWQgKyB0aGlzLmxlbmd0aCAvIDQ7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLnltaWQgKyB0aGlzLmxlbmd0aCAvIDQ7XG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoIC8gMjtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgeG1pZDogeCxcbiAgICAgICAgICAgIHltaWQ6IHksXG4gICAgICAgICAgICBsZW5ndGg6IGxlblxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBORSA9IG5ldyBRdWFkKHBhcmFtcyk7XG4gICAgICAgIHJldHVybiBORTtcbiAgICB9XG4gICAgLy8gc291dGh3ZXN0XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgU1coKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLnhtaWQgLSB0aGlzLmxlbmd0aCAvIDQ7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLnltaWQgLSB0aGlzLmxlbmd0aCAvIDQ7XG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoIC8gMjtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgeG1pZDogeCxcbiAgICAgICAgICAgIHltaWQ6IHksXG4gICAgICAgICAgICBsZW5ndGg6IGxlblxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBTVyA9IG5ldyBRdWFkKHBhcmFtcyk7XG4gICAgICAgIHJldHVybiBTVztcbiAgICB9XG4gICAgLy8gc291dGhlYXN0XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgU0UoKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLnhtaWQgKyB0aGlzLmxlbmd0aCAvIDQ7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLnltaWQgLSB0aGlzLmxlbmd0aCAvIDQ7XG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoIC8gMjtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgeG1pZDogeCxcbiAgICAgICAgICAgIHltaWQ6IHksXG4gICAgICAgICAgICBsZW5ndGg6IGxlblxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBTRSA9IG5ldyBRdWFkKHBhcmFtcyk7XG4gICAgICAgIHJldHVybiBTRTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1xdWFkLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/forceAtlas2/quad.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/forceAtlas2/quadTree.js": /*!*********************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/forceAtlas2/quadTree.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return QuadTree; });\n/**\n * @fileOverview quadTree\n * @author shiwu.wyy@antfin.com\n */\nclass QuadTree {\n // each quadtree represents a quadrant and an aggregate body\n // that represents all bodies inside the quadrant\n constructor(param) {\n /**\n * (aggregated) body in this quad\n * @type {object}\n */\n this.body = null;\n /**\n * tree representing the northwest quadrant\n * @type {object}\n */\n this.quad = null;\n this.NW = null;\n this.NE = null;\n this.SW = null;\n this.SE = null;\n /**\n * threshold\n * @type {number}\n */\n this.theta = 0.5;\n if (param != null)\n this.quad = param;\n }\n // insert a body(node) into the tree\n insert(bo) {\n // if this node does not contain a body, put the new body bo here\n if (this.body == null) {\n this.body = bo;\n return;\n }\n // internal node\n if (!this._isExternal()) {\n // update mass info\n this.body = this.body.add(bo);\n // insert body into quadrant\n this._putBody(bo);\n }\n else { // external node\n // divide this region into four children\n if (this.quad) {\n this.NW = new QuadTree(this.quad.NW());\n this.NE = new QuadTree(this.quad.NE());\n this.SW = new QuadTree(this.quad.SW());\n this.SE = new QuadTree(this.quad.SE());\n }\n // insert this body and bo\n this._putBody(this.body);\n this._putBody(bo);\n // update the mass info\n this.body = this.body.add(bo);\n }\n }\n // inserts bo into a quad\n // tslint:disable-next-line\n _putBody(bo) {\n if (!this.quad)\n return;\n if (bo.in(this.quad.NW()) && this.NW)\n this.NW.insert(bo);\n else if (bo.in(this.quad.NE()) && this.NE)\n this.NE.insert(bo);\n else if (bo.in(this.quad.SW()) && this.SW)\n this.SW.insert(bo);\n else if (bo.in(this.quad.SE()) && this.SE)\n this.SE.insert(bo);\n }\n // tslint:disable-next-line\n _isExternal() {\n // four children are null\n return (this.NW == null && this.NE == null && this.SW == null && this.SE == null);\n }\n // update the forces\n updateForce(bo) {\n if (this.body == null || bo === this.body) {\n return;\n }\n // if the current node is external\n if (this._isExternal())\n bo.addForce(this.body);\n // internal nodes\n else {\n const s = this.quad ? this.quad.getLength() : 0;\n const d = this.body.distanceTo(bo);\n // b is far enough\n if ((s / d) < this.theta)\n bo.addForce(this.body);\n else {\n this.NW && this.NW.updateForce(bo);\n this.NE && this.NE.updateForce(bo);\n this.SW && this.SW.updateForce(bo);\n this.SE && this.SE.updateForce(bo);\n }\n }\n }\n}\n//# sourceMappingURL=quadTree.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZUF0bGFzMi9xdWFkVHJlZS5qcz80ODFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2VBdGxhczIvcXVhZFRyZWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlT3ZlcnZpZXcgcXVhZFRyZWVcbiAqIEBhdXRob3Igc2hpd3Uud3l5QGFudGZpbi5jb21cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUXVhZFRyZWUge1xuICAgIC8vIGVhY2ggcXVhZHRyZWUgcmVwcmVzZW50cyBhIHF1YWRyYW50IGFuZCBhbiBhZ2dyZWdhdGUgYm9keVxuICAgIC8vIHRoYXQgcmVwcmVzZW50cyBhbGwgYm9kaWVzIGluc2lkZSB0aGUgcXVhZHJhbnRcbiAgICBjb25zdHJ1Y3RvcihwYXJhbSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogKGFnZ3JlZ2F0ZWQpIGJvZHkgaW4gdGhpcyBxdWFkXG4gICAgICAgICAqIEB0eXBlICB7b2JqZWN0fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ib2R5ID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRyZWUgcmVwcmVzZW50aW5nIHRoZSBub3J0aHdlc3QgcXVhZHJhbnRcbiAgICAgICAgICogQHR5cGUgIHtvYmplY3R9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnF1YWQgPSBudWxsO1xuICAgICAgICB0aGlzLk5XID0gbnVsbDtcbiAgICAgICAgdGhpcy5ORSA9IG51bGw7XG4gICAgICAgIHRoaXMuU1cgPSBudWxsO1xuICAgICAgICB0aGlzLlNFID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRocmVzaG9sZFxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudGhldGEgPSAwLjU7XG4gICAgICAgIGlmIChwYXJhbSAhPSBudWxsKVxuICAgICAgICAgICAgdGhpcy5xdWFkID0gcGFyYW07XG4gICAgfVxuICAgIC8vIGluc2VydCBhIGJvZHkobm9kZSkgaW50byB0aGUgdHJlZVxuICAgIGluc2VydChibykge1xuICAgICAgICAvLyBpZiB0aGlzIG5vZGUgZG9lcyBub3QgY29udGFpbiBhIGJvZHksIHB1dCB0aGUgbmV3IGJvZHkgYm8gaGVyZVxuICAgICAgICBpZiAodGhpcy5ib2R5ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuYm9keSA9IGJvO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGludGVybmFsIG5vZGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc0V4dGVybmFsKCkpIHtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBtYXNzIGluZm9cbiAgICAgICAgICAgIHRoaXMuYm9keSA9IHRoaXMuYm9keS5hZGQoYm8pO1xuICAgICAgICAgICAgLy8gaW5zZXJ0IGJvZHkgaW50byBxdWFkcmFudFxuICAgICAgICAgICAgdGhpcy5fcHV0Qm9keShibyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7IC8vIGV4dGVybmFsIG5vZGVcbiAgICAgICAgICAgIC8vIGRpdmlkZSB0aGlzIHJlZ2lvbiBpbnRvIGZvdXIgY2hpbGRyZW5cbiAgICAgICAgICAgIGlmICh0aGlzLnF1YWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLk5XID0gbmV3IFF1YWRUcmVlKHRoaXMucXVhZC5OVygpKTtcbiAgICAgICAgICAgICAgICB0aGlzLk5FID0gbmV3IFF1YWRUcmVlKHRoaXMucXVhZC5ORSgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLlNXID0gbmV3IFF1YWRUcmVlKHRoaXMucXVhZC5TVygpKTtcbiAgICAgICAgICAgICAgICB0aGlzLlNFID0gbmV3IFF1YWRUcmVlKHRoaXMucXVhZC5TRSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGluc2VydCB0aGlzIGJvZHkgYW5kIGJvXG4gICAgICAgICAgICB0aGlzLl9wdXRCb2R5KHRoaXMuYm9keSk7XG4gICAgICAgICAgICB0aGlzLl9wdXRCb2R5KGJvKTtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgbWFzcyBpbmZvXG4gICAgICAgICAgICB0aGlzLmJvZHkgPSB0aGlzLmJvZHkuYWRkKGJvKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBpbnNlcnRzIGJvIGludG8gYSBxdWFkXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgX3B1dEJvZHkoYm8pIHtcbiAgICAgICAgaWYgKCF0aGlzLnF1YWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChiby5pbih0aGlzLnF1YWQuTlcoKSkgJiYgdGhpcy5OVylcbiAgICAgICAgICAgIHRoaXMuTlcuaW5zZXJ0KGJvKTtcbiAgICAgICAgZWxzZSBpZiAoYm8uaW4odGhpcy5xdWFkLk5FKCkpICYmIHRoaXMuTkUpXG4gICAgICAgICAgICB0aGlzLk5FLmluc2VydChibyk7XG4gICAgICAgIGVsc2UgaWYgKGJvLmluKHRoaXMucXVhZC5TVygpKSAmJiB0aGlzLlNXKVxuICAgICAgICAgICAgdGhpcy5TVy5pbnNlcnQoYm8pO1xuICAgICAgICBlbHNlIGlmIChiby5pbih0aGlzLnF1YWQuU0UoKSkgJiYgdGhpcy5TRSlcbiAgICAgICAgICAgIHRoaXMuU0UuaW5zZXJ0KGJvKTtcbiAgICB9XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgX2lzRXh0ZXJuYWwoKSB7XG4gICAgICAgIC8vIGZvdXIgY2hpbGRyZW4gYXJlIG51bGxcbiAgICAgICAgcmV0dXJuICh0aGlzLk5XID09IG51bGwgJiYgdGhpcy5ORSA9PSBudWxsICYmIHRoaXMuU1cgPT0gbnVsbCAmJiB0aGlzLlNFID09IG51bGwpO1xuICAgIH1cbiAgICAvLyB1cGRhdGUgdGhlIGZvcmNlc1xuICAgIHVwZGF0ZUZvcmNlKGJvKSB7XG4gICAgICAgIGlmICh0aGlzLmJvZHkgPT0gbnVsbCB8fCBibyA9PT0gdGhpcy5ib2R5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyBleHRlcm5hbFxuICAgICAgICBpZiAodGhpcy5faXNFeHRlcm5hbCgpKVxuICAgICAgICAgICAgYm8uYWRkRm9yY2UodGhpcy5ib2R5KTtcbiAgICAgICAgLy8gaW50ZXJuYWwgbm9kZXNcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzID0gdGhpcy5xdWFkID8gdGhpcy5xdWFkLmdldExlbmd0aCgpIDogMDtcbiAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLmJvZHkuZGlzdGFuY2VUbyhibyk7XG4gICAgICAgICAgICAvLyBiIGlzIGZhciBlbm91Z2hcbiAgICAgICAgICAgIGlmICgocyAvIGQpIDwgdGhpcy50aGV0YSlcbiAgICAgICAgICAgICAgICBiby5hZGRGb3JjZSh0aGlzLmJvZHkpO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5OVyAmJiB0aGlzLk5XLnVwZGF0ZUZvcmNlKGJvKTtcbiAgICAgICAgICAgICAgICB0aGlzLk5FICYmIHRoaXMuTkUudXBkYXRlRm9yY2UoYm8pO1xuICAgICAgICAgICAgICAgIHRoaXMuU1cgJiYgdGhpcy5TVy51cGRhdGVGb3JjZShibyk7XG4gICAgICAgICAgICAgICAgdGhpcy5TRSAmJiB0aGlzLlNFLnVwZGF0ZUZvcmNlKGJvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXF1YWRUcmVlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/forceAtlas2/quadTree.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/fruchterman.js": /*!************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/fruchterman.js ***! \************************************************************/ /*! exports provided: FruchtermanLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanLayout\", function() { return FruchtermanLayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\n\n\nconst SPEED_DIVISOR = 800;\n/**\n * fruchterman 布局\n */\nclass FruchtermanLayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 1000;\n /** 是否启动 worker */\n this.workerEnabled = false;\n /** 重力大小,影响图的紧凑程度 */\n this.gravity = 10;\n /** 速度 */\n this.speed = 5;\n /** 是否产生聚类力 */\n this.clustering = false;\n /** 聚类力大小 */\n this.clusterGravity = 10;\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n this.nodeMap = {};\n this.nodeIdxMap = {};\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n /** 每次迭代结束的回调函数 */\n this.tick = () => { };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 1000,\n gravity: 10,\n speed: 1,\n clustering: false,\n clusterGravity: 10\n };\n }\n /**\n * 执行布局\n */\n execute() {\n var _a, _b;\n const self = this;\n const nodes = self.nodes;\n if (self.timeInterval !== undefined && typeof window !== \"undefined\") {\n window.clearInterval(self.timeInterval);\n }\n if (!nodes || nodes.length === 0) {\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n (_b = self.onLayoutEnd) === null || _b === void 0 ? void 0 : _b.call(self);\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * this.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * this.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n // layout\n return self.run();\n }\n run() {\n var _a;\n const self = this;\n const nodes = self.nodes;\n if (!nodes)\n return;\n const { edges, maxIteration, workerEnabled, clustering } = self;\n const clusterMap = {};\n if (clustering) {\n nodes.forEach((n) => {\n if (clusterMap[n.cluster] === undefined) {\n clusterMap[n.cluster] = {\n name: n.cluster,\n cx: 0,\n cy: 0,\n count: 0\n };\n }\n });\n }\n if (workerEnabled) {\n for (let i = 0; i < maxIteration; i++) {\n self.runOneStep(clusterMap);\n }\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n }\n else {\n if (typeof window === \"undefined\")\n return;\n let iter = 0;\n // interval for render the result after each iteration\n this.timeInterval = window.setInterval(() => {\n var _a;\n self.runOneStep(clusterMap);\n iter++;\n if (iter >= maxIteration) {\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n window.clearInterval(self.timeInterval);\n }\n }, 0);\n }\n return {\n nodes,\n edges\n };\n }\n runOneStep(clusterMap) {\n var _a;\n const self = this;\n const nodes = self.nodes;\n if (!nodes)\n return;\n const { edges, center, gravity, speed, clustering } = self;\n const area = self.height * self.width;\n const maxDisplace = Math.sqrt(area) / 10;\n const k2 = area / (nodes.length + 1);\n const k = Math.sqrt(k2);\n const displacements = [];\n nodes.forEach((_, j) => {\n displacements[j] = { x: 0, y: 0 };\n });\n self.applyCalculate(nodes, edges, displacements, k, k2);\n // gravity for clusters\n if (clustering) {\n // re-compute the clustering centers\n for (const key in clusterMap) {\n clusterMap[key].cx = 0;\n clusterMap[key].cy = 0;\n clusterMap[key].count = 0;\n }\n nodes.forEach((n) => {\n const c = clusterMap[n.cluster];\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x)) {\n c.cx += n.x;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y)) {\n c.cy += n.y;\n }\n c.count++;\n });\n for (const key in clusterMap) {\n clusterMap[key].cx /= clusterMap[key].count;\n clusterMap[key].cy /= clusterMap[key].count;\n }\n // compute the cluster gravity forces\n const clusterGravity = self.clusterGravity || gravity;\n nodes.forEach((n, j) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n const c = clusterMap[n.cluster];\n const distLength = Math.sqrt((n.x - c.cx) * (n.x - c.cx) + (n.y - c.cy) * (n.y - c.cy));\n const gravityForce = k * clusterGravity;\n displacements[j].x -= (gravityForce * (n.x - c.cx)) / distLength;\n displacements[j].y -= (gravityForce * (n.y - c.cy)) / distLength;\n });\n }\n // gravity\n nodes.forEach((n, j) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n const gravityForce = 0.01 * k * gravity;\n displacements[j].x -= gravityForce * (n.x - center[0]);\n displacements[j].y -= gravityForce * (n.y - center[1]);\n });\n // move\n nodes.forEach((n, j) => {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.fx) && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.fy)) {\n n.x = n.fx;\n n.y = n.fy;\n return;\n }\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n const distLength = Math.sqrt(displacements[j].x * displacements[j].x +\n displacements[j].y * displacements[j].y);\n if (distLength > 0) {\n // && !n.isFixed()\n const limitedDist = Math.min(maxDisplace * (speed / SPEED_DIVISOR), distLength);\n n.x += (displacements[j].x / distLength) * limitedDist;\n n.y += (displacements[j].y / distLength) * limitedDist;\n }\n });\n (_a = self.tick) === null || _a === void 0 ? void 0 : _a.call(self);\n }\n applyCalculate(nodes, edges, displacements, k, k2) {\n const self = this;\n self.calRepulsive(nodes, displacements, k2);\n if (edges)\n self.calAttractive(edges, displacements, k);\n }\n calRepulsive(nodes, displacements, k2) {\n nodes.forEach((v, i) => {\n displacements[i] = { x: 0, y: 0 };\n nodes.forEach((u, j) => {\n if (i === j) {\n return;\n }\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.x) ||\n !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.x) ||\n !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.y) ||\n !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.y)) {\n return;\n }\n let vecX = v.x - u.x;\n let vecY = v.y - u.y;\n let vecLengthSqr = vecX * vecX + vecY * vecY;\n if (vecLengthSqr === 0) {\n vecLengthSqr = 1;\n const sign = i > j ? 1 : -1;\n vecX = 0.01 * sign;\n vecY = 0.01 * sign;\n }\n const common = k2 / vecLengthSqr;\n displacements[i].x += vecX * common;\n displacements[i].y += vecY * common;\n });\n });\n }\n calAttractive(edges, displacements, k) {\n edges.forEach((e) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n if (!source || !target)\n return;\n const uIndex = this.nodeIdxMap[source];\n const vIndex = this.nodeIdxMap[target];\n if (uIndex === vIndex) {\n return;\n }\n const u = this.nodeMap[source];\n const v = this.nodeMap[target];\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.y) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.y)) {\n return;\n }\n const vecX = v.x - u.x;\n const vecY = v.y - u.y;\n const vecLength = Math.sqrt(vecX * vecX + vecY * vecY);\n const common = (vecLength * vecLength) / k;\n displacements[vIndex].x -= (vecX / vecLength) * common;\n displacements[vIndex].y -= (vecY / vecLength) * common;\n displacements[uIndex].x += (vecX / vecLength) * common;\n displacements[uIndex].y += (vecY / vecLength) * common;\n });\n }\n stop() {\n if (this.timeInterval && typeof window !== \"undefined\") {\n window.clearInterval(this.timeInterval);\n }\n }\n destroy() {\n const self = this;\n self.stop();\n self.tick = null;\n self.nodes = null;\n self.edges = null;\n self.destroyed = true;\n }\n getType() {\n return \"fruchterman\";\n }\n}\n//# sourceMappingURL=fruchterman.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9mcnVjaHRlcm1hbi5qcz82MzVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDOEI7QUFDc0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDTyxnQ0FBZ0MsMENBQUk7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlEQUFpRDtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSwyQkFBMkIsa0JBQWtCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSw0Q0FBNEM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNEQUFRO0FBQzVCO0FBQ0E7QUFDQSxvQkFBb0Isc0RBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRLFVBQVUsc0RBQVE7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxVQUFVLHNEQUFRO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQVEsVUFBVSxzREFBUTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxVQUFVLHNEQUFRO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixzREFBUTtBQUM3QixxQkFBcUIsc0RBQVE7QUFDN0IscUJBQXFCLHNEQUFRO0FBQzdCLHFCQUFxQixzREFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNkRBQWU7QUFDMUMsMkJBQTJCLDZEQUFlO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxVQUFVLHNEQUFRLFVBQVUsc0RBQVEsVUFBVSxzREFBUTtBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2ZydWNodGVybWFuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IGZydWNodGVybWFuIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG5pbXBvcnQgeyBCYXNlIH0gZnJvbSBcIi4vYmFzZVwiO1xuaW1wb3J0IHsgZ2V0RWRnZVRlcm1pbmFsLCBpc051bWJlciB9IGZyb20gXCIuLi91dGlsXCI7XG5jb25zdCBTUEVFRF9ESVZJU09SID0gODAwO1xuLyoqXG4gKiBmcnVjaHRlcm1hbiDluIPlsYBcbiAqL1xuZXhwb3J0IGNsYXNzIEZydWNodGVybWFuTGF5b3V0IGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvKiog5YGc5q2i6L+t5Luj55qE5pyA5aSn6L+t5Luj5pWwICovXG4gICAgICAgIHRoaXMubWF4SXRlcmF0aW9uID0gMTAwMDtcbiAgICAgICAgLyoqIOaYr+WQpuWQr+WKqCB3b3JrZXIgKi9cbiAgICAgICAgdGhpcy53b3JrZXJFbmFibGVkID0gZmFsc2U7XG4gICAgICAgIC8qKiDph43lipvlpKflsI/vvIzlvbHlk43lm77nmoTntKflh5HnqIvluqYgKi9cbiAgICAgICAgdGhpcy5ncmF2aXR5ID0gMTA7XG4gICAgICAgIC8qKiDpgJ/luqYgKi9cbiAgICAgICAgdGhpcy5zcGVlZCA9IDU7XG4gICAgICAgIC8qKiDmmK/lkKbkuqfnlJ/ogZrnsbvlipsgKi9cbiAgICAgICAgdGhpcy5jbHVzdGVyaW5nID0gZmFsc2U7XG4gICAgICAgIC8qKiDogZrnsbvlipvlpKflsI8gKi9cbiAgICAgICAgdGhpcy5jbHVzdGVyR3Jhdml0eSA9IDEwO1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgdGhpcy53aWR0aCA9IDMwMDtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSAzMDA7XG4gICAgICAgIHRoaXMubm9kZU1hcCA9IHt9O1xuICAgICAgICB0aGlzLm5vZGVJZHhNYXAgPSB7fTtcbiAgICAgICAgLyoqIOi/reS7o+e7k+adn+eahOWbnuiwg+WHveaVsCAqL1xuICAgICAgICB0aGlzLm9uTGF5b3V0RW5kID0gKCkgPT4geyB9O1xuICAgICAgICAvKiog5q+P5qyh6L+t5Luj57uT5p2f55qE5Zue6LCD5Ye95pWwICovXG4gICAgICAgIHRoaXMudGljayA9ICgpID0+IHsgfTtcbiAgICAgICAgdGhpcy51cGRhdGVDZmcob3B0aW9ucyk7XG4gICAgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXhJdGVyYXRpb246IDEwMDAsXG4gICAgICAgICAgICBncmF2aXR5OiAxMCxcbiAgICAgICAgICAgIHNwZWVkOiAxLFxuICAgICAgICAgICAgY2x1c3RlcmluZzogZmFsc2UsXG4gICAgICAgICAgICBjbHVzdGVyR3Jhdml0eTogMTBcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5omn6KGM5biD5bGAXG4gICAgICovXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgaWYgKHNlbGYudGltZUludGVydmFsICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoc2VsZi50aW1lSW50ZXJ2YWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAoX2EgPSBzZWxmLm9uTGF5b3V0RW5kKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzZWxmKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYud2lkdGggJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi5oZWlnaHQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLmNlbnRlcikge1xuICAgICAgICAgICAgc2VsZi5jZW50ZXIgPSBbc2VsZi53aWR0aCAvIDIsIHNlbGYuaGVpZ2h0IC8gMl07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIG5vZGVzWzBdLnggPSBjZW50ZXJbMF07XG4gICAgICAgICAgICBub2Rlc1swXS55ID0gY2VudGVyWzFdO1xuICAgICAgICAgICAgKF9iID0gc2VsZi5vbkxheW91dEVuZCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoc2VsZik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9kZU1hcCA9IHt9O1xuICAgICAgICBjb25zdCBub2RlSWR4TWFwID0ge307XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS54KSlcbiAgICAgICAgICAgICAgICBub2RlLnggPSBNYXRoLnJhbmRvbSgpICogdGhpcy53aWR0aDtcbiAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS55KSlcbiAgICAgICAgICAgICAgICBub2RlLnkgPSBNYXRoLnJhbmRvbSgpICogdGhpcy5oZWlnaHQ7XG4gICAgICAgICAgICBub2RlTWFwW25vZGUuaWRdID0gbm9kZTtcbiAgICAgICAgICAgIG5vZGVJZHhNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5ub2RlTWFwID0gbm9kZU1hcDtcbiAgICAgICAgc2VsZi5ub2RlSWR4TWFwID0gbm9kZUlkeE1hcDtcbiAgICAgICAgLy8gbGF5b3V0XG4gICAgICAgIHJldHVybiBzZWxmLnJ1bigpO1xuICAgIH1cbiAgICBydW4oKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgaWYgKCFub2RlcylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgeyBlZGdlcywgbWF4SXRlcmF0aW9uLCB3b3JrZXJFbmFibGVkLCBjbHVzdGVyaW5nIH0gPSBzZWxmO1xuICAgICAgICBjb25zdCBjbHVzdGVyTWFwID0ge307XG4gICAgICAgIGlmIChjbHVzdGVyaW5nKSB7XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJNYXBbbi5jbHVzdGVyXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJNYXBbbi5jbHVzdGVyXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG4uY2x1c3RlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGN4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3k6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudDogMFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3b3JrZXJFbmFibGVkKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heEl0ZXJhdGlvbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5ydW5PbmVTdGVwKGNsdXN0ZXJNYXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKF9hID0gc2VsZi5vbkxheW91dEVuZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc2VsZik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBsZXQgaXRlciA9IDA7XG4gICAgICAgICAgICAvLyBpbnRlcnZhbCBmb3IgcmVuZGVyIHRoZSByZXN1bHQgYWZ0ZXIgZWFjaCBpdGVyYXRpb25cbiAgICAgICAgICAgIHRoaXMudGltZUludGVydmFsID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgc2VsZi5ydW5PbmVTdGVwKGNsdXN0ZXJNYXApO1xuICAgICAgICAgICAgICAgIGl0ZXIrKztcbiAgICAgICAgICAgICAgICBpZiAoaXRlciA+PSBtYXhJdGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gc2VsZi5vbkxheW91dEVuZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc2VsZik7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHNlbGYudGltZUludGVydmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZXMsXG4gICAgICAgICAgICBlZGdlc1xuICAgICAgICB9O1xuICAgIH1cbiAgICBydW5PbmVTdGVwKGNsdXN0ZXJNYXApIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBpZiAoIW5vZGVzKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IGVkZ2VzLCBjZW50ZXIsIGdyYXZpdHksIHNwZWVkLCBjbHVzdGVyaW5nIH0gPSBzZWxmO1xuICAgICAgICBjb25zdCBhcmVhID0gc2VsZi5oZWlnaHQgKiBzZWxmLndpZHRoO1xuICAgICAgICBjb25zdCBtYXhEaXNwbGFjZSA9IE1hdGguc3FydChhcmVhKSAvIDEwO1xuICAgICAgICBjb25zdCBrMiA9IGFyZWEgLyAobm9kZXMubGVuZ3RoICsgMSk7XG4gICAgICAgIGNvbnN0IGsgPSBNYXRoLnNxcnQoazIpO1xuICAgICAgICBjb25zdCBkaXNwbGFjZW1lbnRzID0gW107XG4gICAgICAgIG5vZGVzLmZvckVhY2goKF8sIGopID0+IHtcbiAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbal0gPSB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNlbGYuYXBwbHlDYWxjdWxhdGUobm9kZXMsIGVkZ2VzLCBkaXNwbGFjZW1lbnRzLCBrLCBrMik7XG4gICAgICAgIC8vIGdyYXZpdHkgZm9yIGNsdXN0ZXJzXG4gICAgICAgIGlmIChjbHVzdGVyaW5nKSB7XG4gICAgICAgICAgICAvLyByZS1jb21wdXRlIHRoZSBjbHVzdGVyaW5nIGNlbnRlcnNcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGNsdXN0ZXJNYXApIHtcbiAgICAgICAgICAgICAgICBjbHVzdGVyTWFwW2tleV0uY3ggPSAwO1xuICAgICAgICAgICAgICAgIGNsdXN0ZXJNYXBba2V5XS5jeSA9IDA7XG4gICAgICAgICAgICAgICAgY2x1c3Rlck1hcFtrZXldLmNvdW50ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjID0gY2x1c3Rlck1hcFtuLmNsdXN0ZXJdO1xuICAgICAgICAgICAgICAgIGlmIChpc051bWJlcihuLngpKSB7XG4gICAgICAgICAgICAgICAgICAgIGMuY3ggKz0gbi54O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXIobi55KSkge1xuICAgICAgICAgICAgICAgICAgICBjLmN5ICs9IG4ueTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYy5jb3VudCsrO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBjbHVzdGVyTWFwKSB7XG4gICAgICAgICAgICAgICAgY2x1c3Rlck1hcFtrZXldLmN4IC89IGNsdXN0ZXJNYXBba2V5XS5jb3VudDtcbiAgICAgICAgICAgICAgICBjbHVzdGVyTWFwW2tleV0uY3kgLz0gY2x1c3Rlck1hcFtrZXldLmNvdW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gY29tcHV0ZSB0aGUgY2x1c3RlciBncmF2aXR5IGZvcmNlc1xuICAgICAgICAgICAgY29uc3QgY2x1c3RlckdyYXZpdHkgPSBzZWxmLmNsdXN0ZXJHcmF2aXR5IHx8IGdyYXZpdHk7XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChuLCBqKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcihuLngpIHx8ICFpc051bWJlcihuLnkpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IGNsdXN0ZXJNYXBbbi5jbHVzdGVyXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0TGVuZ3RoID0gTWF0aC5zcXJ0KChuLnggLSBjLmN4KSAqIChuLnggLSBjLmN4KSArIChuLnkgLSBjLmN5KSAqIChuLnkgLSBjLmN5KSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3Jhdml0eUZvcmNlID0gayAqIGNsdXN0ZXJHcmF2aXR5O1xuICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbal0ueCAtPSAoZ3Jhdml0eUZvcmNlICogKG4ueCAtIGMuY3gpKSAvIGRpc3RMZW5ndGg7XG4gICAgICAgICAgICAgICAgZGlzcGxhY2VtZW50c1tqXS55IC09IChncmF2aXR5Rm9yY2UgKiAobi55IC0gYy5jeSkpIC8gZGlzdExlbmd0aDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGdyYXZpdHlcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobiwgaikgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc051bWJlcihuLngpIHx8ICFpc051bWJlcihuLnkpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGdyYXZpdHlGb3JjZSA9IDAuMDEgKiBrICogZ3Jhdml0eTtcbiAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbal0ueCAtPSBncmF2aXR5Rm9yY2UgKiAobi54IC0gY2VudGVyWzBdKTtcbiAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbal0ueSAtPSBncmF2aXR5Rm9yY2UgKiAobi55IC0gY2VudGVyWzFdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIG1vdmVcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobiwgaikgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKG4uZngpICYmIGlzTnVtYmVyKG4uZnkpKSB7XG4gICAgICAgICAgICAgICAgbi54ID0gbi5meDtcbiAgICAgICAgICAgICAgICBuLnkgPSBuLmZ5O1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNOdW1iZXIobi54KSB8fCAhaXNOdW1iZXIobi55KSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBkaXN0TGVuZ3RoID0gTWF0aC5zcXJ0KGRpc3BsYWNlbWVudHNbal0ueCAqIGRpc3BsYWNlbWVudHNbal0ueCArXG4gICAgICAgICAgICAgICAgZGlzcGxhY2VtZW50c1tqXS55ICogZGlzcGxhY2VtZW50c1tqXS55KTtcbiAgICAgICAgICAgIGlmIChkaXN0TGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vICYmICFuLmlzRml4ZWQoKVxuICAgICAgICAgICAgICAgIGNvbnN0IGxpbWl0ZWREaXN0ID0gTWF0aC5taW4obWF4RGlzcGxhY2UgKiAoc3BlZWQgLyBTUEVFRF9ESVZJU09SKSwgZGlzdExlbmd0aCk7XG4gICAgICAgICAgICAgICAgbi54ICs9IChkaXNwbGFjZW1lbnRzW2pdLnggLyBkaXN0TGVuZ3RoKSAqIGxpbWl0ZWREaXN0O1xuICAgICAgICAgICAgICAgIG4ueSArPSAoZGlzcGxhY2VtZW50c1tqXS55IC8gZGlzdExlbmd0aCkgKiBsaW1pdGVkRGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIChfYSA9IHNlbGYudGljaykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc2VsZik7XG4gICAgfVxuICAgIGFwcGx5Q2FsY3VsYXRlKG5vZGVzLCBlZGdlcywgZGlzcGxhY2VtZW50cywgaywgazIpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHNlbGYuY2FsUmVwdWxzaXZlKG5vZGVzLCBkaXNwbGFjZW1lbnRzLCBrMik7XG4gICAgICAgIGlmIChlZGdlcylcbiAgICAgICAgICAgIHNlbGYuY2FsQXR0cmFjdGl2ZShlZGdlcywgZGlzcGxhY2VtZW50cywgayk7XG4gICAgfVxuICAgIGNhbFJlcHVsc2l2ZShub2RlcywgZGlzcGxhY2VtZW50cywgazIpIHtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgodiwgaSkgPT4ge1xuICAgICAgICAgICAgZGlzcGxhY2VtZW50c1tpXSA9IHsgeDogMCwgeTogMCB9O1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgodSwgaikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcih2LngpIHx8XG4gICAgICAgICAgICAgICAgICAgICFpc051bWJlcih1LngpIHx8XG4gICAgICAgICAgICAgICAgICAgICFpc051bWJlcih2LnkpIHx8XG4gICAgICAgICAgICAgICAgICAgICFpc051bWJlcih1LnkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHZlY1ggPSB2LnggLSB1Lng7XG4gICAgICAgICAgICAgICAgbGV0IHZlY1kgPSB2LnkgLSB1Lnk7XG4gICAgICAgICAgICAgICAgbGV0IHZlY0xlbmd0aFNxciA9IHZlY1ggKiB2ZWNYICsgdmVjWSAqIHZlY1k7XG4gICAgICAgICAgICAgICAgaWYgKHZlY0xlbmd0aFNxciA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB2ZWNMZW5ndGhTcXIgPSAxO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaWduID0gaSA+IGogPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIHZlY1ggPSAwLjAxICogc2lnbjtcbiAgICAgICAgICAgICAgICAgICAgdmVjWSA9IDAuMDEgKiBzaWduO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjb21tb24gPSBrMiAvIHZlY0xlbmd0aFNxcjtcbiAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2ldLnggKz0gdmVjWCAqIGNvbW1vbjtcbiAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2ldLnkgKz0gdmVjWSAqIGNvbW1vbjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY2FsQXR0cmFjdGl2ZShlZGdlcywgZGlzcGxhY2VtZW50cywgaykge1xuICAgICAgICBlZGdlcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGUsICd0YXJnZXQnKTtcbiAgICAgICAgICAgIGlmICghc291cmNlIHx8ICF0YXJnZXQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgdUluZGV4ID0gdGhpcy5ub2RlSWR4TWFwW3NvdXJjZV07XG4gICAgICAgICAgICBjb25zdCB2SW5kZXggPSB0aGlzLm5vZGVJZHhNYXBbdGFyZ2V0XTtcbiAgICAgICAgICAgIGlmICh1SW5kZXggPT09IHZJbmRleCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHUgPSB0aGlzLm5vZGVNYXBbc291cmNlXTtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLm5vZGVNYXBbdGFyZ2V0XTtcbiAgICAgICAgICAgIGlmICghaXNOdW1iZXIodi54KSB8fCAhaXNOdW1iZXIodS54KSB8fCAhaXNOdW1iZXIodi55KSB8fCAhaXNOdW1iZXIodS55KSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHZlY1ggPSB2LnggLSB1Lng7XG4gICAgICAgICAgICBjb25zdCB2ZWNZID0gdi55IC0gdS55O1xuICAgICAgICAgICAgY29uc3QgdmVjTGVuZ3RoID0gTWF0aC5zcXJ0KHZlY1ggKiB2ZWNYICsgdmVjWSAqIHZlY1kpO1xuICAgICAgICAgICAgY29uc3QgY29tbW9uID0gKHZlY0xlbmd0aCAqIHZlY0xlbmd0aCkgLyBrO1xuICAgICAgICAgICAgZGlzcGxhY2VtZW50c1t2SW5kZXhdLnggLT0gKHZlY1ggLyB2ZWNMZW5ndGgpICogY29tbW9uO1xuICAgICAgICAgICAgZGlzcGxhY2VtZW50c1t2SW5kZXhdLnkgLT0gKHZlY1kgLyB2ZWNMZW5ndGgpICogY29tbW9uO1xuICAgICAgICAgICAgZGlzcGxhY2VtZW50c1t1SW5kZXhdLnggKz0gKHZlY1ggLyB2ZWNMZW5ndGgpICogY29tbW9uO1xuICAgICAgICAgICAgZGlzcGxhY2VtZW50c1t1SW5kZXhdLnkgKz0gKHZlY1kgLyB2ZWNMZW5ndGgpICogY29tbW9uO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZUludGVydmFsICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMudGltZUludGVydmFsKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgc2VsZi5zdG9wKCk7XG4gICAgICAgIHNlbGYudGljayA9IG51bGw7XG4gICAgICAgIHNlbGYubm9kZXMgPSBudWxsO1xuICAgICAgICBzZWxmLmVkZ2VzID0gbnVsbDtcbiAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cbiAgICBnZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gXCJmcnVjaHRlcm1hblwiO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZydWNodGVybWFuLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/fruchterman.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/gForce.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/gForce.js ***! \*******************************************************/ /*! exports provided: GForceLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GForceLayout\", function() { return GForceLayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\n\n\nconst proccessToFunc = (value, defaultV) => {\n let func;\n if (!value) {\n func = (d) => {\n return defaultV || 1;\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value)) {\n func = (d) => {\n return value;\n };\n }\n else {\n func = value;\n }\n return func;\n};\n/**\n * graphin 中的 force 布局\n */\nclass GForceLayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 1000;\n /** 是否启动 worker */\n this.workerEnabled = false;\n /** 弹簧引力系数 */\n this.edgeStrength = 200;\n /** 斥力系数 */\n this.nodeStrength = 1000;\n /** 库伦系数 */\n this.coulombDisScale = 0.005;\n /** 阻尼系数 */\n this.damping = 0.9;\n /** 最大速度 */\n this.maxSpeed = 1000;\n /** 一次迭代的平均移动距离小于该值时停止迭代 */\n this.minMovement = 0.5;\n /** 迭代中衰减 */\n this.interval = 0.02;\n /** 斥力的一个系数 */\n this.factor = 1;\n /** 理想边长 */\n this.linkDistance = 1;\n /** 重力大小 */\n this.gravity = 10;\n /** 是否防止重叠 */\n this.preventOverlap = true;\n /** 每次迭代结束的回调函数 */\n this.tick = () => { };\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n this.nodeMap = {};\n this.nodeIdxMap = {};\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 500,\n gravity: 10,\n enableTick: true\n };\n }\n /**\n * 执行布局\n */\n execute() {\n var _a, _b;\n const self = this;\n const nodes = self.nodes;\n if (self.timeInterval !== undefined && typeof window !== \"undefined\") {\n window.clearInterval(self.timeInterval);\n }\n if (!nodes || nodes.length === 0) {\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n (_b = self.onLayoutEnd) === null || _b === void 0 ? void 0 : _b.call(self);\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * self.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * self.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n self.linkDistance = proccessToFunc(self.linkDistance, 1);\n self.nodeStrength = proccessToFunc(self.nodeStrength, 1);\n self.edgeStrength = proccessToFunc(self.edgeStrength, 1);\n // node size function\n const nodeSize = self.nodeSize;\n let nodeSizeFunc;\n if (self.preventOverlap) {\n const nodeSpacing = self.nodeSpacing;\n let nodeSpacingFunc;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n }\n else {\n nodeSpacingFunc = () => 0;\n }\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return res + nodeSpacingFunc(d);\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return res + nodeSpacingFunc(d);\n }\n return d.size + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(nodeSize)) {\n nodeSizeFunc = (d) => {\n const res = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n return res + nodeSpacingFunc(d);\n };\n }\n else {\n nodeSizeFunc = (d) => nodeSize + nodeSpacingFunc(d);\n }\n }\n self.nodeSize = nodeSizeFunc;\n const edges = self.edges;\n self.degrees = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getDegree\"])(nodes.length, self.nodeIdxMap, edges);\n if (!self.getMass) {\n self.getMass = (d) => {\n const mass = self.degrees[self.nodeIdxMap[d.id]] || 1;\n return mass;\n };\n }\n // layout\n self.run();\n }\n run() {\n var _a;\n const self = this;\n const { maxIteration, nodes, workerEnabled, minMovement } = self;\n if (!nodes)\n return;\n if (workerEnabled) {\n for (let i = 0; i < maxIteration; i++) {\n const previousPos = self.runOneStep(i);\n if (self.reachMoveThreshold(nodes, previousPos, minMovement)) {\n break;\n }\n }\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n }\n else {\n if (typeof window === \"undefined\")\n return;\n let iter = 0;\n // interval for render the result after each iteration\n this.timeInterval = window.setInterval(() => {\n var _a, _b;\n if (!nodes)\n return;\n const previousPos = self.runOneStep(iter) || [];\n if (self.reachMoveThreshold(nodes, previousPos, minMovement)) {\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n window.clearInterval(self.timeInterval);\n }\n iter++;\n if (iter >= maxIteration) {\n (_b = self.onLayoutEnd) === null || _b === void 0 ? void 0 : _b.call(self);\n window.clearInterval(self.timeInterval);\n }\n }, 0);\n }\n }\n reachMoveThreshold(nodes, previousPos, minMovement) {\n // whether to stop the iteration\n let movement = 0;\n nodes.forEach((node, j) => {\n const vx = node.x - previousPos[j].x;\n const vy = node.y - previousPos[j].y;\n movement += Math.sqrt(vx * vx + vy * vy);\n });\n movement /= nodes.length;\n return movement < minMovement;\n }\n runOneStep(iter) {\n var _a;\n const self = this;\n const { nodes, edges } = self;\n const accArray = [];\n const velArray = [];\n if (!nodes)\n return;\n nodes.forEach((_, i) => {\n accArray[2 * i] = 0;\n accArray[2 * i + 1] = 0;\n velArray[2 * i] = 0;\n velArray[2 * i + 1] = 0;\n });\n self.calRepulsive(accArray, nodes);\n if (edges)\n self.calAttractive(accArray, edges);\n self.calGravity(accArray, nodes);\n const stepInterval = Math.max(0.02, self.interval - iter * 0.002);\n self.updateVelocity(accArray, velArray, stepInterval, nodes);\n const previousPos = [];\n nodes.forEach((node) => {\n previousPos.push({\n x: node.x,\n y: node.y\n });\n });\n self.updatePosition(velArray, stepInterval, nodes);\n (_a = self.tick) === null || _a === void 0 ? void 0 : _a.call(self);\n return previousPos;\n }\n calRepulsive(accArray, nodes) {\n const self = this;\n // const nodes = self.nodes;\n const getMass = self.getMass;\n const nodeStrength = self.nodeStrength;\n const factor = self.factor;\n const coulombDisScale = self.coulombDisScale;\n const preventOverlap = self.preventOverlap;\n const nodeSize = self.nodeSize;\n nodes.forEach((ni, i) => {\n const massi = getMass ? getMass(ni) : 1;\n nodes.forEach((nj, j) => {\n if (i >= j)\n return;\n // if (!accArray[j]) accArray[j] = 0;\n const vecX = ni.x - nj.x;\n const vecY = ni.y - nj.y;\n const vecLength = Math.sqrt(vecX * vecX + vecY * vecY) + 0.01;\n const nVecLength = (vecLength + 0.1) * coulombDisScale;\n const direX = vecX / vecLength;\n const direY = vecY / vecLength;\n const param = (((nodeStrength(ni) + nodeStrength(nj)) / 2) * factor) /\n (nVecLength * nVecLength);\n const massj = getMass ? getMass(nj) : 1;\n accArray[2 * i] += (direX * param);\n accArray[2 * i + 1] += (direY * param);\n accArray[2 * j] -= (direX * param);\n accArray[2 * j + 1] -= (direY * param);\n if (preventOverlap && vecLength < (nodeSize(ni) + nodeSize(nj)) / 2) {\n const paramOverlap = (nodeStrength(ni) + nodeStrength(nj)) / 2 / (vecLength * vecLength);\n accArray[2 * i] += (direX * paramOverlap) / massi;\n accArray[2 * i + 1] += (direY * paramOverlap) / massi;\n accArray[2 * j] -= (direX * paramOverlap) / massj;\n accArray[2 * j + 1] -= (direY * paramOverlap) / massj;\n }\n });\n });\n }\n calAttractive(accArray, edges) {\n const self = this;\n // const edges = self.edges;\n const nodeMap = self.nodeMap;\n const nodeIdxMap = self.nodeIdxMap;\n const linkDistance = self.linkDistance;\n const edgeStrength = self.edgeStrength;\n const getMass = self.getMass;\n edges.forEach((edge, i) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'target');\n const sourceNode = nodeMap[source];\n const targetNode = nodeMap[target];\n const vecX = targetNode.x - sourceNode.x;\n const vecY = targetNode.y - sourceNode.y;\n const vecLength = Math.sqrt(vecX * vecX + vecY * vecY) + 0.01;\n const direX = vecX / vecLength;\n const direY = vecY / vecLength;\n const length = linkDistance(edge) || 1;\n const diff = length - vecLength;\n const param = diff * edgeStrength(edge);\n const sourceIdx = nodeIdxMap[source];\n const targetIdx = nodeIdxMap[target];\n const massSource = getMass ? getMass(sourceNode) : 1;\n const massTarget = getMass ? getMass(targetNode) : 1;\n accArray[2 * sourceIdx] -= (direX * param) / massSource;\n accArray[2 * sourceIdx + 1] -= (direY * param) / massSource;\n accArray[2 * targetIdx] += (direX * param) / massTarget;\n accArray[2 * targetIdx + 1] += (direY * param) / massTarget;\n });\n }\n calGravity(accArray, nodes) {\n const self = this;\n // const nodes = self.nodes;\n const center = self.center;\n const defaultGravity = self.gravity;\n const degrees = self.degrees;\n const nodeLength = nodes.length;\n for (let i = 0; i < nodeLength; i++) {\n const node = nodes[i];\n let vecX = node.x - center[0];\n let vecY = node.y - center[1];\n let gravity = defaultGravity;\n if (self.getCenter) {\n const customCenterOpt = self.getCenter(node, degrees[i]);\n if (customCenterOpt &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenterOpt[0]) &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenterOpt[1]) &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenterOpt[2])) {\n vecX = node.x - customCenterOpt[0];\n vecY = node.y - customCenterOpt[1];\n gravity = customCenterOpt[2];\n }\n }\n if (!gravity)\n continue;\n accArray[2 * i] -= gravity * vecX;\n accArray[2 * i + 1] -= gravity * vecY;\n }\n }\n updateVelocity(accArray, velArray, stepInterval, nodes) {\n const self = this;\n const param = stepInterval * self.damping;\n // const nodes = self.nodes;\n nodes.forEach((node, i) => {\n let vx = accArray[2 * i] * param || 0.01;\n let vy = accArray[2 * i + 1] * param || 0.01;\n const vLength = Math.sqrt(vx * vx + vy * vy);\n if (vLength > self.maxSpeed) {\n const param2 = self.maxSpeed / vLength;\n vx = param2 * vx;\n vy = param2 * vy;\n }\n velArray[2 * i] = vx;\n velArray[2 * i + 1] = vy;\n });\n }\n updatePosition(velArray, stepInterval, nodes) {\n nodes.forEach((node, i) => {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fx) && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fy)) {\n node.x = node.fx;\n node.y = node.fy;\n return;\n }\n const distX = velArray[2 * i] * stepInterval;\n const distY = velArray[2 * i + 1] * stepInterval;\n node.x += distX;\n node.y += distY;\n });\n }\n stop() {\n if (this.timeInterval && typeof window !== \"undefined\") {\n window.clearInterval(this.timeInterval);\n }\n }\n destroy() {\n const self = this;\n self.stop();\n self.tick = null;\n self.nodes = null;\n self.edges = null;\n self.destroyed = true;\n }\n getType() {\n return \"gForce\";\n }\n}\n//# sourceMappingURL=gForce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9nRm9yY2UuanM/NzYxOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzhCO0FBQ2dFO0FBQzlGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxzREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTywyQkFBMkIsMENBQUk7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQVE7QUFDeEI7QUFDQTtBQUNBLHFCQUFxQix3REFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHFEQUFPO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixzREFBUTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHFEQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsdURBQVM7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrREFBa0Q7QUFDakU7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGtCQUFrQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGVBQWU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNkRBQWU7QUFDMUMsMkJBQTJCLDZEQUFlO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixzREFBUTtBQUM1QixvQkFBb0Isc0RBQVE7QUFDNUIsb0JBQW9CLHNEQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFRLGFBQWEsc0RBQVE7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2dGb3JjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBmcnVjaHRlcm1hbiBsYXlvdXRcbiAqIEBhdXRob3Igc2hpd3Uud3l5QGFudGZpbi5jb21cbiAqL1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gXCIuL2Jhc2VcIjtcbmltcG9ydCB7IGlzTnVtYmVyLCBpc0Z1bmN0aW9uLCBpc0FycmF5LCBnZXREZWdyZWUsIGlzT2JqZWN0LCBnZXRFZGdlVGVybWluYWwgfSBmcm9tIFwiLi4vdXRpbFwiO1xuY29uc3QgcHJvY2Nlc3NUb0Z1bmMgPSAodmFsdWUsIGRlZmF1bHRWKSA9PiB7XG4gICAgbGV0IGZ1bmM7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICBmdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0ViB8fCAxO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgZnVuYyA9IChkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmdW5jID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBmdW5jO1xufTtcbi8qKlxuICogZ3JhcGhpbiDkuK3nmoQgZm9yY2Ug5biD5bGAXG4gKi9cbmV4cG9ydCBjbGFzcyBHRm9yY2VMYXlvdXQgZXh0ZW5kcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8qKiDlgZzmraLov63ku6PnmoTmnIDlpKfov63ku6PmlbAgKi9cbiAgICAgICAgdGhpcy5tYXhJdGVyYXRpb24gPSAxMDAwO1xuICAgICAgICAvKiog5piv5ZCm5ZCv5YqoIHdvcmtlciAqL1xuICAgICAgICB0aGlzLndvcmtlckVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgLyoqIOW8ueewp+W8leWKm+ezu+aVsCAqL1xuICAgICAgICB0aGlzLmVkZ2VTdHJlbmd0aCA9IDIwMDtcbiAgICAgICAgLyoqIOaWpeWKm+ezu+aVsCAqL1xuICAgICAgICB0aGlzLm5vZGVTdHJlbmd0aCA9IDEwMDA7XG4gICAgICAgIC8qKiDlupPkvKbns7vmlbAgKi9cbiAgICAgICAgdGhpcy5jb3Vsb21iRGlzU2NhbGUgPSAwLjAwNTtcbiAgICAgICAgLyoqIOmYu+WwvOezu+aVsCAqL1xuICAgICAgICB0aGlzLmRhbXBpbmcgPSAwLjk7XG4gICAgICAgIC8qKiDmnIDlpKfpgJ/luqYgKi9cbiAgICAgICAgdGhpcy5tYXhTcGVlZCA9IDEwMDA7XG4gICAgICAgIC8qKiDkuIDmrKHov63ku6PnmoTlubPlnYfnp7vliqjot53nprvlsI/kuo7or6XlgLzml7blgZzmraLov63ku6MgKi9cbiAgICAgICAgdGhpcy5taW5Nb3ZlbWVudCA9IDAuNTtcbiAgICAgICAgLyoqIOi/reS7o+S4reihsOWHjyAqL1xuICAgICAgICB0aGlzLmludGVydmFsID0gMC4wMjtcbiAgICAgICAgLyoqIOaWpeWKm+eahOS4gOS4quezu+aVsCAqL1xuICAgICAgICB0aGlzLmZhY3RvciA9IDE7XG4gICAgICAgIC8qKiDnkIbmg7Povrnplb8gKi9cbiAgICAgICAgdGhpcy5saW5rRGlzdGFuY2UgPSAxO1xuICAgICAgICAvKiog6YeN5Yqb5aSn5bCPICovXG4gICAgICAgIHRoaXMuZ3Jhdml0eSA9IDEwO1xuICAgICAgICAvKiog5piv5ZCm6Ziy5q2i6YeN5Y+gICovXG4gICAgICAgIHRoaXMucHJldmVudE92ZXJsYXAgPSB0cnVlO1xuICAgICAgICAvKiog5q+P5qyh6L+t5Luj57uT5p2f55qE5Zue6LCD5Ye95pWwICovXG4gICAgICAgIHRoaXMudGljayA9ICgpID0+IHsgfTtcbiAgICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgICAgIHRoaXMud2lkdGggPSAzMDA7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMzAwO1xuICAgICAgICB0aGlzLm5vZGVNYXAgPSB7fTtcbiAgICAgICAgdGhpcy5ub2RlSWR4TWFwID0ge307XG4gICAgICAgIHRoaXMudXBkYXRlQ2ZnKG9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWF4SXRlcmF0aW9uOiA1MDAsXG4gICAgICAgICAgICBncmF2aXR5OiAxMCxcbiAgICAgICAgICAgIGVuYWJsZVRpY2s6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5omn6KGM5biD5bGAXG4gICAgICovXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgaWYgKHNlbGYudGltZUludGVydmFsICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoc2VsZi50aW1lSW50ZXJ2YWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAoX2EgPSBzZWxmLm9uTGF5b3V0RW5kKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzZWxmKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYud2lkdGggJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi5oZWlnaHQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLmNlbnRlcikge1xuICAgICAgICAgICAgc2VsZi5jZW50ZXIgPSBbc2VsZi53aWR0aCAvIDIsIHNlbGYuaGVpZ2h0IC8gMl07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIG5vZGVzWzBdLnggPSBjZW50ZXJbMF07XG4gICAgICAgICAgICBub2Rlc1swXS55ID0gY2VudGVyWzFdO1xuICAgICAgICAgICAgKF9iID0gc2VsZi5vbkxheW91dEVuZCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoc2VsZik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9kZU1hcCA9IHt9O1xuICAgICAgICBjb25zdCBub2RlSWR4TWFwID0ge307XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS54KSlcbiAgICAgICAgICAgICAgICBub2RlLnggPSBNYXRoLnJhbmRvbSgpICogc2VsZi53aWR0aDtcbiAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS55KSlcbiAgICAgICAgICAgICAgICBub2RlLnkgPSBNYXRoLnJhbmRvbSgpICogc2VsZi5oZWlnaHQ7XG4gICAgICAgICAgICBub2RlTWFwW25vZGUuaWRdID0gbm9kZTtcbiAgICAgICAgICAgIG5vZGVJZHhNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5ub2RlTWFwID0gbm9kZU1hcDtcbiAgICAgICAgc2VsZi5ub2RlSWR4TWFwID0gbm9kZUlkeE1hcDtcbiAgICAgICAgc2VsZi5saW5rRGlzdGFuY2UgPSBwcm9jY2Vzc1RvRnVuYyhzZWxmLmxpbmtEaXN0YW5jZSwgMSk7XG4gICAgICAgIHNlbGYubm9kZVN0cmVuZ3RoID0gcHJvY2Nlc3NUb0Z1bmMoc2VsZi5ub2RlU3RyZW5ndGgsIDEpO1xuICAgICAgICBzZWxmLmVkZ2VTdHJlbmd0aCA9IHByb2NjZXNzVG9GdW5jKHNlbGYuZWRnZVN0cmVuZ3RoLCAxKTtcbiAgICAgICAgLy8gbm9kZSBzaXplIGZ1bmN0aW9uXG4gICAgICAgIGNvbnN0IG5vZGVTaXplID0gc2VsZi5ub2RlU2l6ZTtcbiAgICAgICAgbGV0IG5vZGVTaXplRnVuYztcbiAgICAgICAgaWYgKHNlbGYucHJldmVudE92ZXJsYXApIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVTcGFjaW5nID0gc2VsZi5ub2RlU3BhY2luZztcbiAgICAgICAgICAgIGxldCBub2RlU3BhY2luZ0Z1bmM7XG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIobm9kZVNwYWNpbmcpKSB7XG4gICAgICAgICAgICAgICAgbm9kZVNwYWNpbmdGdW5jID0gKCkgPT4gbm9kZVNwYWNpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKG5vZGVTcGFjaW5nKSkge1xuICAgICAgICAgICAgICAgIG5vZGVTcGFjaW5nRnVuYyA9IG5vZGVTcGFjaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVNwYWNpbmdGdW5jID0gKCkgPT4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbm9kZVNpemUpIHtcbiAgICAgICAgICAgICAgICBub2RlU2l6ZUZ1bmMgPSAoZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZC5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShkLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gZC5zaXplWzBdID4gZC5zaXplWzFdID8gZC5zaXplWzBdIDogZC5zaXplWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMgKyBub2RlU3BhY2luZ0Z1bmMoZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QoZC5zaXplKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGQuc2l6ZS53aWR0aCA+IGQuc2l6ZS5oZWlnaHQgPyBkLnNpemUud2lkdGggOiBkLnNpemUuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMgKyBub2RlU3BhY2luZ0Z1bmMoZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5zaXplICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxMCArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNBcnJheShub2RlU2l6ZSkpIHtcbiAgICAgICAgICAgICAgICBub2RlU2l6ZUZ1bmMgPSAoZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBub2RlU2l6ZVswXSA+IG5vZGVTaXplWzFdID8gbm9kZVNpemVbMF0gOiBub2RlU2l6ZVsxXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcyArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKGQpID0+IG5vZGVTaXplICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNlbGYubm9kZVNpemUgPSBub2RlU2l6ZUZ1bmM7XG4gICAgICAgIGNvbnN0IGVkZ2VzID0gc2VsZi5lZGdlcztcbiAgICAgICAgc2VsZi5kZWdyZWVzID0gZ2V0RGVncmVlKG5vZGVzLmxlbmd0aCwgc2VsZi5ub2RlSWR4TWFwLCBlZGdlcyk7XG4gICAgICAgIGlmICghc2VsZi5nZXRNYXNzKSB7XG4gICAgICAgICAgICBzZWxmLmdldE1hc3MgPSAoZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hc3MgPSBzZWxmLmRlZ3JlZXNbc2VsZi5ub2RlSWR4TWFwW2QuaWRdXSB8fCAxO1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXNzO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBsYXlvdXRcbiAgICAgICAgc2VsZi5ydW4oKTtcbiAgICB9XG4gICAgcnVuKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB7IG1heEl0ZXJhdGlvbiwgbm9kZXMsIHdvcmtlckVuYWJsZWQsIG1pbk1vdmVtZW50IH0gPSBzZWxmO1xuICAgICAgICBpZiAoIW5vZGVzKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAod29ya2VyRW5hYmxlZCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhJdGVyYXRpb247IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUG9zID0gc2VsZi5ydW5PbmVTdGVwKGkpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLnJlYWNoTW92ZVRocmVzaG9sZChub2RlcywgcHJldmlvdXNQb3MsIG1pbk1vdmVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAoX2EgPSBzZWxmLm9uTGF5b3V0RW5kKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzZWxmKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGxldCBpdGVyID0gMDtcbiAgICAgICAgICAgIC8vIGludGVydmFsIGZvciByZW5kZXIgdGhlIHJlc3VsdCBhZnRlciBlYWNoIGl0ZXJhdGlvblxuICAgICAgICAgICAgdGhpcy50aW1lSW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgaWYgKCFub2RlcylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUG9zID0gc2VsZi5ydW5PbmVTdGVwKGl0ZXIpIHx8IFtdO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLnJlYWNoTW92ZVRocmVzaG9sZChub2RlcywgcHJldmlvdXNQb3MsIG1pbk1vdmVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBzZWxmLm9uTGF5b3V0RW5kKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzZWxmKTtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoc2VsZi50aW1lSW50ZXJ2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpdGVyKys7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZXIgPj0gbWF4SXRlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIChfYiA9IHNlbGYub25MYXlvdXRFbmQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKHNlbGYpO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChzZWxmLnRpbWVJbnRlcnZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVhY2hNb3ZlVGhyZXNob2xkKG5vZGVzLCBwcmV2aW91c1BvcywgbWluTW92ZW1lbnQpIHtcbiAgICAgICAgLy8gd2hldGhlciB0byBzdG9wIHRoZSBpdGVyYXRpb25cbiAgICAgICAgbGV0IG1vdmVtZW50ID0gMDtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdnggPSBub2RlLnggLSBwcmV2aW91c1Bvc1tqXS54O1xuICAgICAgICAgICAgY29uc3QgdnkgPSBub2RlLnkgLSBwcmV2aW91c1Bvc1tqXS55O1xuICAgICAgICAgICAgbW92ZW1lbnQgKz0gTWF0aC5zcXJ0KHZ4ICogdnggKyB2eSAqIHZ5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1vdmVtZW50IC89IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIG1vdmVtZW50IDwgbWluTW92ZW1lbnQ7XG4gICAgfVxuICAgIHJ1bk9uZVN0ZXAoaXRlcikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB7IG5vZGVzLCBlZGdlcyB9ID0gc2VsZjtcbiAgICAgICAgY29uc3QgYWNjQXJyYXkgPSBbXTtcbiAgICAgICAgY29uc3QgdmVsQXJyYXkgPSBbXTtcbiAgICAgICAgaWYgKCFub2RlcylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgoXywgaSkgPT4ge1xuICAgICAgICAgICAgYWNjQXJyYXlbMiAqIGldID0gMDtcbiAgICAgICAgICAgIGFjY0FycmF5WzIgKiBpICsgMV0gPSAwO1xuICAgICAgICAgICAgdmVsQXJyYXlbMiAqIGldID0gMDtcbiAgICAgICAgICAgIHZlbEFycmF5WzIgKiBpICsgMV0gPSAwO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5jYWxSZXB1bHNpdmUoYWNjQXJyYXksIG5vZGVzKTtcbiAgICAgICAgaWYgKGVkZ2VzKVxuICAgICAgICAgICAgc2VsZi5jYWxBdHRyYWN0aXZlKGFjY0FycmF5LCBlZGdlcyk7XG4gICAgICAgIHNlbGYuY2FsR3Jhdml0eShhY2NBcnJheSwgbm9kZXMpO1xuICAgICAgICBjb25zdCBzdGVwSW50ZXJ2YWwgPSBNYXRoLm1heCgwLjAyLCBzZWxmLmludGVydmFsIC0gaXRlciAqIDAuMDAyKTtcbiAgICAgICAgc2VsZi51cGRhdGVWZWxvY2l0eShhY2NBcnJheSwgdmVsQXJyYXksIHN0ZXBJbnRlcnZhbCwgbm9kZXMpO1xuICAgICAgICBjb25zdCBwcmV2aW91c1BvcyA9IFtdO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBwcmV2aW91c1Bvcy5wdXNoKHtcbiAgICAgICAgICAgICAgICB4OiBub2RlLngsXG4gICAgICAgICAgICAgICAgeTogbm9kZS55XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNlbGYudXBkYXRlUG9zaXRpb24odmVsQXJyYXksIHN0ZXBJbnRlcnZhbCwgbm9kZXMpO1xuICAgICAgICAoX2EgPSBzZWxmLnRpY2spID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHNlbGYpO1xuICAgICAgICByZXR1cm4gcHJldmlvdXNQb3M7XG4gICAgfVxuICAgIGNhbFJlcHVsc2l2ZShhY2NBcnJheSwgbm9kZXMpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIC8vIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgY29uc3QgZ2V0TWFzcyA9IHNlbGYuZ2V0TWFzcztcbiAgICAgICAgY29uc3Qgbm9kZVN0cmVuZ3RoID0gc2VsZi5ub2RlU3RyZW5ndGg7XG4gICAgICAgIGNvbnN0IGZhY3RvciA9IHNlbGYuZmFjdG9yO1xuICAgICAgICBjb25zdCBjb3Vsb21iRGlzU2NhbGUgPSBzZWxmLmNvdWxvbWJEaXNTY2FsZTtcbiAgICAgICAgY29uc3QgcHJldmVudE92ZXJsYXAgPSBzZWxmLnByZXZlbnRPdmVybGFwO1xuICAgICAgICBjb25zdCBub2RlU2l6ZSA9IHNlbGYubm9kZVNpemU7XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5pLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXNzaSA9IGdldE1hc3MgPyBnZXRNYXNzKG5pKSA6IDE7XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChuaiwgaikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpID49IGopXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAvLyBpZiAoIWFjY0FycmF5W2pdKSBhY2NBcnJheVtqXSA9IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgdmVjWCA9IG5pLnggLSBuai54O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZlY1kgPSBuaS55IC0gbmoueTtcbiAgICAgICAgICAgICAgICBjb25zdCB2ZWNMZW5ndGggPSBNYXRoLnNxcnQodmVjWCAqIHZlY1ggKyB2ZWNZICogdmVjWSkgKyAwLjAxO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5WZWNMZW5ndGggPSAodmVjTGVuZ3RoICsgMC4xKSAqIGNvdWxvbWJEaXNTY2FsZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXJlWCA9IHZlY1ggLyB2ZWNMZW5ndGg7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlyZVkgPSB2ZWNZIC8gdmVjTGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtID0gKCgobm9kZVN0cmVuZ3RoKG5pKSArIG5vZGVTdHJlbmd0aChuaikpIC8gMikgKiBmYWN0b3IpIC9cbiAgICAgICAgICAgICAgICAgICAgKG5WZWNMZW5ndGggKiBuVmVjTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXNzaiA9IGdldE1hc3MgPyBnZXRNYXNzKG5qKSA6IDE7XG4gICAgICAgICAgICAgICAgYWNjQXJyYXlbMiAqIGldICs9IChkaXJlWCAqIHBhcmFtKTtcbiAgICAgICAgICAgICAgICBhY2NBcnJheVsyICogaSArIDFdICs9IChkaXJlWSAqIHBhcmFtKTtcbiAgICAgICAgICAgICAgICBhY2NBcnJheVsyICogal0gLT0gKGRpcmVYICogcGFyYW0pO1xuICAgICAgICAgICAgICAgIGFjY0FycmF5WzIgKiBqICsgMV0gLT0gKGRpcmVZICogcGFyYW0pO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2ZW50T3ZlcmxhcCAmJiB2ZWNMZW5ndGggPCAobm9kZVNpemUobmkpICsgbm9kZVNpemUobmopKSAvIDIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1PdmVybGFwID0gKG5vZGVTdHJlbmd0aChuaSkgKyBub2RlU3RyZW5ndGgobmopKSAvIDIgLyAodmVjTGVuZ3RoICogdmVjTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgYWNjQXJyYXlbMiAqIGldICs9IChkaXJlWCAqIHBhcmFtT3ZlcmxhcCkgLyBtYXNzaTtcbiAgICAgICAgICAgICAgICAgICAgYWNjQXJyYXlbMiAqIGkgKyAxXSArPSAoZGlyZVkgKiBwYXJhbU92ZXJsYXApIC8gbWFzc2k7XG4gICAgICAgICAgICAgICAgICAgIGFjY0FycmF5WzIgKiBqXSAtPSAoZGlyZVggKiBwYXJhbU92ZXJsYXApIC8gbWFzc2o7XG4gICAgICAgICAgICAgICAgICAgIGFjY0FycmF5WzIgKiBqICsgMV0gLT0gKGRpcmVZICogcGFyYW1PdmVybGFwKSAvIG1hc3NqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY2FsQXR0cmFjdGl2ZShhY2NBcnJheSwgZWRnZXMpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIC8vIGNvbnN0IGVkZ2VzID0gc2VsZi5lZGdlcztcbiAgICAgICAgY29uc3Qgbm9kZU1hcCA9IHNlbGYubm9kZU1hcDtcbiAgICAgICAgY29uc3Qgbm9kZUlkeE1hcCA9IHNlbGYubm9kZUlkeE1hcDtcbiAgICAgICAgY29uc3QgbGlua0Rpc3RhbmNlID0gc2VsZi5saW5rRGlzdGFuY2U7XG4gICAgICAgIGNvbnN0IGVkZ2VTdHJlbmd0aCA9IHNlbGYuZWRnZVN0cmVuZ3RoO1xuICAgICAgICBjb25zdCBnZXRNYXNzID0gc2VsZi5nZXRNYXNzO1xuICAgICAgICBlZGdlcy5mb3JFYWNoKChlZGdlLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFZGdlVGVybWluYWwoZWRnZSwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGVkZ2UsICd0YXJnZXQnKTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZU5vZGUgPSBub2RlTWFwW3NvdXJjZV07XG4gICAgICAgICAgICBjb25zdCB0YXJnZXROb2RlID0gbm9kZU1hcFt0YXJnZXRdO1xuICAgICAgICAgICAgY29uc3QgdmVjWCA9IHRhcmdldE5vZGUueCAtIHNvdXJjZU5vZGUueDtcbiAgICAgICAgICAgIGNvbnN0IHZlY1kgPSB0YXJnZXROb2RlLnkgLSBzb3VyY2VOb2RlLnk7XG4gICAgICAgICAgICBjb25zdCB2ZWNMZW5ndGggPSBNYXRoLnNxcnQodmVjWCAqIHZlY1ggKyB2ZWNZICogdmVjWSkgKyAwLjAxO1xuICAgICAgICAgICAgY29uc3QgZGlyZVggPSB2ZWNYIC8gdmVjTGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgZGlyZVkgPSB2ZWNZIC8gdmVjTGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gbGlua0Rpc3RhbmNlKGVkZ2UpIHx8IDE7XG4gICAgICAgICAgICBjb25zdCBkaWZmID0gbGVuZ3RoIC0gdmVjTGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBkaWZmICogZWRnZVN0cmVuZ3RoKGVkZ2UpO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlSWR4ID0gbm9kZUlkeE1hcFtzb3VyY2VdO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0SWR4ID0gbm9kZUlkeE1hcFt0YXJnZXRdO1xuICAgICAgICAgICAgY29uc3QgbWFzc1NvdXJjZSA9IGdldE1hc3MgPyBnZXRNYXNzKHNvdXJjZU5vZGUpIDogMTtcbiAgICAgICAgICAgIGNvbnN0IG1hc3NUYXJnZXQgPSBnZXRNYXNzID8gZ2V0TWFzcyh0YXJnZXROb2RlKSA6IDE7XG4gICAgICAgICAgICBhY2NBcnJheVsyICogc291cmNlSWR4XSAtPSAoZGlyZVggKiBwYXJhbSkgLyBtYXNzU291cmNlO1xuICAgICAgICAgICAgYWNjQXJyYXlbMiAqIHNvdXJjZUlkeCArIDFdIC09IChkaXJlWSAqIHBhcmFtKSAvIG1hc3NTb3VyY2U7XG4gICAgICAgICAgICBhY2NBcnJheVsyICogdGFyZ2V0SWR4XSArPSAoZGlyZVggKiBwYXJhbSkgLyBtYXNzVGFyZ2V0O1xuICAgICAgICAgICAgYWNjQXJyYXlbMiAqIHRhcmdldElkeCArIDFdICs9IChkaXJlWSAqIHBhcmFtKSAvIG1hc3NUYXJnZXQ7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjYWxHcmF2aXR5KGFjY0FycmF5LCBub2Rlcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgLy8gY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBjZW50ZXIgPSBzZWxmLmNlbnRlcjtcbiAgICAgICAgY29uc3QgZGVmYXVsdEdyYXZpdHkgPSBzZWxmLmdyYXZpdHk7XG4gICAgICAgIGNvbnN0IGRlZ3JlZXMgPSBzZWxmLmRlZ3JlZXM7XG4gICAgICAgIGNvbnN0IG5vZGVMZW5ndGggPSBub2Rlcy5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZUxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XG4gICAgICAgICAgICBsZXQgdmVjWCA9IG5vZGUueCAtIGNlbnRlclswXTtcbiAgICAgICAgICAgIGxldCB2ZWNZID0gbm9kZS55IC0gY2VudGVyWzFdO1xuICAgICAgICAgICAgbGV0IGdyYXZpdHkgPSBkZWZhdWx0R3Jhdml0eTtcbiAgICAgICAgICAgIGlmIChzZWxmLmdldENlbnRlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1c3RvbUNlbnRlck9wdCA9IHNlbGYuZ2V0Q2VudGVyKG5vZGUsIGRlZ3JlZXNbaV0pO1xuICAgICAgICAgICAgICAgIGlmIChjdXN0b21DZW50ZXJPcHQgJiZcbiAgICAgICAgICAgICAgICAgICAgaXNOdW1iZXIoY3VzdG9tQ2VudGVyT3B0WzBdKSAmJlxuICAgICAgICAgICAgICAgICAgICBpc051bWJlcihjdXN0b21DZW50ZXJPcHRbMV0pICYmXG4gICAgICAgICAgICAgICAgICAgIGlzTnVtYmVyKGN1c3RvbUNlbnRlck9wdFsyXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmVjWCA9IG5vZGUueCAtIGN1c3RvbUNlbnRlck9wdFswXTtcbiAgICAgICAgICAgICAgICAgICAgdmVjWSA9IG5vZGUueSAtIGN1c3RvbUNlbnRlck9wdFsxXTtcbiAgICAgICAgICAgICAgICAgICAgZ3Jhdml0eSA9IGN1c3RvbUNlbnRlck9wdFsyXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWdyYXZpdHkpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBhY2NBcnJheVsyICogaV0gLT0gZ3Jhdml0eSAqIHZlY1g7XG4gICAgICAgICAgICBhY2NBcnJheVsyICogaSArIDFdIC09IGdyYXZpdHkgKiB2ZWNZO1xuICAgICAgICB9XG4gICAgfVxuICAgIHVwZGF0ZVZlbG9jaXR5KGFjY0FycmF5LCB2ZWxBcnJheSwgc3RlcEludGVydmFsLCBub2Rlcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgcGFyYW0gPSBzdGVwSW50ZXJ2YWwgKiBzZWxmLmRhbXBpbmc7XG4gICAgICAgIC8vIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgbGV0IHZ4ID0gYWNjQXJyYXlbMiAqIGldICogcGFyYW0gfHwgMC4wMTtcbiAgICAgICAgICAgIGxldCB2eSA9IGFjY0FycmF5WzIgKiBpICsgMV0gKiBwYXJhbSB8fCAwLjAxO1xuICAgICAgICAgICAgY29uc3Qgdkxlbmd0aCA9IE1hdGguc3FydCh2eCAqIHZ4ICsgdnkgKiB2eSk7XG4gICAgICAgICAgICBpZiAodkxlbmd0aCA+IHNlbGYubWF4U3BlZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbTIgPSBzZWxmLm1heFNwZWVkIC8gdkxlbmd0aDtcbiAgICAgICAgICAgICAgICB2eCA9IHBhcmFtMiAqIHZ4O1xuICAgICAgICAgICAgICAgIHZ5ID0gcGFyYW0yICogdnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2ZWxBcnJheVsyICogaV0gPSB2eDtcbiAgICAgICAgICAgIHZlbEFycmF5WzIgKiBpICsgMV0gPSB2eTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHVwZGF0ZVBvc2l0aW9uKHZlbEFycmF5LCBzdGVwSW50ZXJ2YWwsIG5vZGVzKSB7XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihub2RlLmZ4KSAmJiBpc051bWJlcihub2RlLmZ5KSkge1xuICAgICAgICAgICAgICAgIG5vZGUueCA9IG5vZGUuZng7XG4gICAgICAgICAgICAgICAgbm9kZS55ID0gbm9kZS5meTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkaXN0WCA9IHZlbEFycmF5WzIgKiBpXSAqIHN0ZXBJbnRlcnZhbDtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RZID0gdmVsQXJyYXlbMiAqIGkgKyAxXSAqIHN0ZXBJbnRlcnZhbDtcbiAgICAgICAgICAgIG5vZGUueCArPSBkaXN0WDtcbiAgICAgICAgICAgIG5vZGUueSArPSBkaXN0WTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVJbnRlcnZhbCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVJbnRlcnZhbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHNlbGYuc3RvcCgpO1xuICAgICAgICBzZWxmLnRpY2sgPSBudWxsO1xuICAgICAgICBzZWxmLm5vZGVzID0gbnVsbDtcbiAgICAgICAgc2VsZi5lZGdlcyA9IG51bGw7XG4gICAgICAgIHNlbGYuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG4gICAgZ2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIFwiZ0ZvcmNlXCI7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z0ZvcmNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/gForce.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/gpu/fruchterman.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/gpu/fruchterman.js ***! \****************************************************************/ /*! exports provided: FruchtermanGPULayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanGPULayout\", function() { return FruchtermanGPULayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/* harmony import */ var _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu */ \"./node_modules/@antv/g-webgpu/es/index.js\");\n/* harmony import */ var _util_gpu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/gpu */ \"./node_modules/@antv/layout/es/util/gpu.js\");\n/* harmony import */ var _fruchtermanShader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fruchtermanShader */ \"./node_modules/@antv/layout/es/layout/gpu/fruchtermanShader.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ \"./node_modules/@antv/layout/es/layout/constants.js\");\n// @ts-nocheck\n/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n// @ts-ignore\n\n// compile at runtime in dev mode\n\n// use compiled bundle in prod mode\n\n\n/**\n * fruchterman 布局\n */\nclass FruchtermanGPULayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 1000;\n /** 重力大小,影响图的紧凑程度 */\n this.gravity = 10;\n /** 速度 */\n this.speed = 1;\n /** 是否产生聚类力 */\n this.clustering = false;\n /** 根据哪个字段聚类 */\n this.clusterField = \"cluster\";\n /** 聚类力大小 */\n this.clusterGravity = 10;\n /** 是否启用web worker。前提是在web worker里执行布局,否则无效\t*/\n this.workerEnabled = false;\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n this.nodeMap = {};\n this.nodeIdxMap = {};\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 1000,\n gravity: 10,\n speed: 1,\n clustering: false,\n clusterGravity: 10\n };\n }\n /**\n * 执行布局\n */\n execute() {\n return __awaiter(this, void 0, void 0, function* () {\n const self = this;\n const nodes = self.nodes;\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * this.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * this.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n // layout\n yield self.run();\n });\n }\n executeWithWorker(canvas, ctx) {\n return __awaiter(this, void 0, void 0, function* () {\n const self = this;\n const nodes = self.nodes;\n const center = self.center;\n if (!nodes || nodes.length === 0) {\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * this.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * this.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n // layout\n yield self.run(canvas, ctx);\n });\n }\n run(canvas, ctx) {\n return __awaiter(this, void 0, void 0, function* () {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const maxIteration = self.maxIteration;\n const center = self.center;\n const area = self.height * self.width;\n let maxDisplace = Math.sqrt(area) / 10;\n const k2 = area / (nodes.length + 1);\n const k = Math.sqrt(k2);\n const speed = self.speed;\n const clustering = self.clustering;\n const { array: attributeArray, count: clusterCount } = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"attributesToTextureData\"])([self.clusterField], nodes);\n // pushing the fx and fy\n nodes.forEach((node, i) => {\n let fx = 0;\n let fy = 0;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fx) && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fy)) {\n fx = node.fx || 0.001;\n fy = node.fy || 0.001;\n }\n attributeArray[4 * i + 1] = fx;\n attributeArray[4 * i + 2] = fy;\n });\n const numParticles = nodes.length;\n const { maxEdgePerVetex, array: nodesEdgesArray } = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"buildTextureData\"])(nodes, edges);\n const workerEnabled = self.workerEnabled;\n let world;\n if (workerEnabled) {\n world = _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__[\"World\"].create({\n canvas,\n engineOptions: {\n supportCompute: true\n }\n });\n }\n else {\n world = _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__[\"World\"].create({\n engineOptions: {\n supportCompute: true\n }\n });\n }\n // compile at runtime in dev mode\n // const compiler = new Compiler()\n // const fruchtermanBundle = compiler.compileBundle(fruchtermanCode)\n // const clusterBundle = compiler.compileBundle(clusterCode)\n // use compiled bundle in prod mode\n // console.log(fruchtermanBundle.toString())\n // console.log(clusterBundle.toString())\n const onLayoutEnd = self.onLayoutEnd;\n const clusterCenters = [];\n for (let i = 0; i < clusterCount; i++) {\n clusterCenters.push(0, 0, 0, 0);\n }\n const kernelFruchterman = world\n .createKernel(_fruchtermanShader__WEBPACK_IMPORTED_MODULE_4__[\"fruchtermanBundle\"])\n .setDispatch([numParticles, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray,\n u_K: k,\n u_K2: k2,\n u_Gravity: self.gravity,\n u_ClusterGravity: self.clusterGravity || self.gravity || 1,\n u_Speed: speed,\n u_MaxDisplace: maxDisplace,\n u_Clustering: clustering ? 1 : 0,\n u_Center: center,\n u_AttributeArray: attributeArray,\n u_ClusterCenters: clusterCenters,\n MAX_EDGE_PER_VERTEX: maxEdgePerVetex,\n VERTEX_COUNT: numParticles\n });\n let kernelCluster;\n if (clustering) {\n kernelCluster = world\n .createKernel(_fruchtermanShader__WEBPACK_IMPORTED_MODULE_4__[\"clusterBundle\"])\n .setDispatch([clusterCount, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray,\n u_NodeAttributes: attributeArray,\n u_ClusterCenters: clusterCenters,\n VERTEX_COUNT: numParticles,\n CLUSTER_COUNT: clusterCount\n });\n }\n const execute = () => __awaiter(this, void 0, void 0, function* () {\n for (let i = 0; i < maxIteration; i++) {\n // eslint-disable-next-line no-await-in-loop\n yield kernelFruchterman.execute();\n if (clustering) {\n kernelCluster.setBinding({\n u_Data: kernelFruchterman\n });\n // eslint-disable-next-line no-await-in-loop\n yield kernelCluster.execute();\n kernelFruchterman.setBinding({\n u_ClusterCenters: kernelCluster\n });\n }\n kernelFruchterman.setBinding({\n u_MaxDisplace: maxDisplace *= 0.99\n });\n }\n const finalParticleData = yield kernelFruchterman.getOutput();\n if (canvas) {\n // 传递数据给主线程\n ctx.postMessage({\n type: _constants__WEBPACK_IMPORTED_MODULE_5__[\"LAYOUT_MESSAGE\"].GPUEND,\n vertexEdgeData: finalParticleData\n // edgeIndexBufferData,\n });\n }\n else {\n nodes.forEach((node, i) => {\n const x = finalParticleData[4 * i];\n const y = finalParticleData[4 * i + 1];\n node.x = x;\n node.y = y;\n });\n }\n if (onLayoutEnd)\n onLayoutEnd();\n });\n yield execute();\n });\n }\n getType() {\n return \"fruchterman-gpu\";\n }\n}\n//# sourceMappingURL=fruchterman.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9ncHUvZnJ1Y2h0ZXJtYW4uanM/ODY0YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixTQUFJLElBQUksU0FBSTtBQUM3QiwyQkFBMkIsK0RBQStELGdCQUFnQixFQUFFLEVBQUU7QUFDOUc7QUFDQSxtQ0FBbUMsTUFBTSw2QkFBNkIsRUFBRSxZQUFZLFdBQVcsRUFBRTtBQUNqRyxrQ0FBa0MsTUFBTSxpQ0FBaUMsRUFBRSxZQUFZLFdBQVcsRUFBRTtBQUNwRywrQkFBK0IscUZBQXFGO0FBQ3BIO0FBQ0EsS0FBSztBQUNMO0FBQytCO0FBQ087QUFDdEM7QUFDdUM7QUFDdkM7QUFDMkU7QUFDM0U7QUFDdUU7QUFDekI7QUFDOUM7QUFDQTtBQUNBO0FBQ08sbUNBQW1DLDBDQUFJO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVE7QUFDN0I7QUFDQSxxQkFBcUIsc0RBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVE7QUFDN0I7QUFDQSxxQkFBcUIsc0RBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsNkNBQTZDLEdBQUcseUVBQXVCO0FBQzFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNEQUFRLGFBQWEsc0RBQVE7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLG1CQUFtQiwwQ0FBMEMsR0FBRyxrRUFBZ0I7QUFDaEY7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG9EQUFLO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSx3QkFBd0Isb0RBQUs7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGtCQUFrQjtBQUM3QztBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsb0VBQWlCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsZ0VBQWE7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLCtCQUErQixrQkFBa0I7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qix5REFBYztBQUM1QztBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9ncHUvZnJ1Y2h0ZXJtYW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtbm9jaGVja1xuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IGZydWNodGVybWFuIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi4vYmFzZVwiO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tIFwiLi4vLi4vdXRpbFwiO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgV29ybGQgfSBmcm9tIFwiQGFudHYvZy13ZWJncHVcIjtcbi8vIGNvbXBpbGUgYXQgcnVudGltZSBpbiBkZXYgbW9kZVxuaW1wb3J0IHsgYnVpbGRUZXh0dXJlRGF0YSwgYXR0cmlidXRlc1RvVGV4dHVyZURhdGEgfSBmcm9tIFwiLi4vLi4vdXRpbC9ncHVcIjtcbi8vIHVzZSBjb21waWxlZCBidW5kbGUgaW4gcHJvZCBtb2RlXG5pbXBvcnQgeyBmcnVjaHRlcm1hbkJ1bmRsZSwgY2x1c3RlckJ1bmRsZSB9IGZyb20gXCIuL2ZydWNodGVybWFuU2hhZGVyXCI7XG5pbXBvcnQgeyBMQVlPVVRfTUVTU0FHRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbi8qKlxuICogZnJ1Y2h0ZXJtYW4g5biD5bGAXG4gKi9cbmV4cG9ydCBjbGFzcyBGcnVjaHRlcm1hbkdQVUxheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIOWBnOatoui/reS7o+eahOacgOWkp+i/reS7o+aVsCAqL1xuICAgICAgICB0aGlzLm1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gICAgICAgIC8qKiDph43lipvlpKflsI/vvIzlvbHlk43lm77nmoTntKflh5HnqIvluqYgKi9cbiAgICAgICAgdGhpcy5ncmF2aXR5ID0gMTA7XG4gICAgICAgIC8qKiDpgJ/luqYgKi9cbiAgICAgICAgdGhpcy5zcGVlZCA9IDE7XG4gICAgICAgIC8qKiDmmK/lkKbkuqfnlJ/ogZrnsbvlipsgKi9cbiAgICAgICAgdGhpcy5jbHVzdGVyaW5nID0gZmFsc2U7XG4gICAgICAgIC8qKiDmoLnmja7lk6rkuKrlrZfmrrXogZrnsbsgKi9cbiAgICAgICAgdGhpcy5jbHVzdGVyRmllbGQgPSBcImNsdXN0ZXJcIjtcbiAgICAgICAgLyoqIOiBmuexu+WKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLmNsdXN0ZXJHcmF2aXR5ID0gMTA7XG4gICAgICAgIC8qKiDmmK/lkKblkK/nlKh3ZWIgd29ya2Vy44CC5YmN5o+Q5piv5Zyod2ViIHdvcmtlcumHjOaJp+ihjOW4g+WxgO+8jOWQpuWImeaXoOaViFx0Ki9cbiAgICAgICAgdGhpcy53b3JrZXJFbmFibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICAgICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgICAgICB0aGlzLndpZHRoID0gMzAwO1xuICAgICAgICB0aGlzLmhlaWdodCA9IDMwMDtcbiAgICAgICAgdGhpcy5ub2RlTWFwID0ge307XG4gICAgICAgIHRoaXMubm9kZUlkeE1hcCA9IHt9O1xuICAgICAgICB0aGlzLnVwZGF0ZUNmZyhvcHRpb25zKTtcbiAgICB9XG4gICAgZ2V0RGVmYXVsdENmZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1heEl0ZXJhdGlvbjogMTAwMCxcbiAgICAgICAgICAgIGdyYXZpdHk6IDEwLFxuICAgICAgICAgICAgc3BlZWQ6IDEsXG4gICAgICAgICAgICBjbHVzdGVyaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGNsdXN0ZXJHcmF2aXR5OiAxMFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiafooYzluIPlsYBcbiAgICAgKi9cbiAgICBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgICAgICBpZiAoIW5vZGVzIHx8IG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzZWxmLndpZHRoICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXNlbGYuaGVpZ2h0ICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZi5jZW50ZXIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNlbnRlciA9IFtzZWxmLndpZHRoIC8gMiwgc2VsZi5oZWlnaHQgLyAyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIG5vZGVzWzBdLnggPSBjZW50ZXJbMF07XG4gICAgICAgICAgICAgICAgbm9kZXNbMF0ueSA9IGNlbnRlclsxXTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5vZGVNYXAgPSB7fTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZHhNYXAgPSB7fTtcbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTnVtYmVyKG5vZGUueCkpXG4gICAgICAgICAgICAgICAgICAgIG5vZGUueCA9IE1hdGgucmFuZG9tKCkgKiB0aGlzLndpZHRoO1xuICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS55KSlcbiAgICAgICAgICAgICAgICAgICAgbm9kZS55ID0gTWF0aC5yYW5kb20oKSAqIHRoaXMuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICAgICAgICAgICAgICAgIG5vZGVJZHhNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZWxmLm5vZGVNYXAgPSBub2RlTWFwO1xuICAgICAgICAgICAgc2VsZi5ub2RlSWR4TWFwID0gbm9kZUlkeE1hcDtcbiAgICAgICAgICAgIC8vIGxheW91dFxuICAgICAgICAgICAgeWllbGQgc2VsZi5ydW4oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGV4ZWN1dGVXaXRoV29ya2VyKGNhbnZhcywgY3R4KSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICAgICAgaWYgKCFub2RlcyB8fCBub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgbm9kZXNbMF0ueCA9IGNlbnRlclswXTtcbiAgICAgICAgICAgICAgICBub2Rlc1swXS55ID0gY2VudGVyWzFdO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5vZGVNYXAgPSB7fTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZHhNYXAgPSB7fTtcbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTnVtYmVyKG5vZGUueCkpXG4gICAgICAgICAgICAgICAgICAgIG5vZGUueCA9IE1hdGgucmFuZG9tKCkgKiB0aGlzLndpZHRoO1xuICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS55KSlcbiAgICAgICAgICAgICAgICAgICAgbm9kZS55ID0gTWF0aC5yYW5kb20oKSAqIHRoaXMuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICAgICAgICAgICAgICAgIG5vZGVJZHhNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZWxmLm5vZGVNYXAgPSBub2RlTWFwO1xuICAgICAgICAgICAgc2VsZi5ub2RlSWR4TWFwID0gbm9kZUlkeE1hcDtcbiAgICAgICAgICAgIC8vIGxheW91dFxuICAgICAgICAgICAgeWllbGQgc2VsZi5ydW4oY2FudmFzLCBjdHgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcnVuKGNhbnZhcywgY3R4KSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgICAgIGNvbnN0IGVkZ2VzID0gc2VsZi5lZGdlcztcbiAgICAgICAgICAgIGNvbnN0IG1heEl0ZXJhdGlvbiA9IHNlbGYubWF4SXRlcmF0aW9uO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgICAgICBjb25zdCBhcmVhID0gc2VsZi5oZWlnaHQgKiBzZWxmLndpZHRoO1xuICAgICAgICAgICAgbGV0IG1heERpc3BsYWNlID0gTWF0aC5zcXJ0KGFyZWEpIC8gMTA7XG4gICAgICAgICAgICBjb25zdCBrMiA9IGFyZWEgLyAobm9kZXMubGVuZ3RoICsgMSk7XG4gICAgICAgICAgICBjb25zdCBrID0gTWF0aC5zcXJ0KGsyKTtcbiAgICAgICAgICAgIGNvbnN0IHNwZWVkID0gc2VsZi5zcGVlZDtcbiAgICAgICAgICAgIGNvbnN0IGNsdXN0ZXJpbmcgPSBzZWxmLmNsdXN0ZXJpbmc7XG4gICAgICAgICAgICBjb25zdCB7IGFycmF5OiBhdHRyaWJ1dGVBcnJheSwgY291bnQ6IGNsdXN0ZXJDb3VudCB9ID0gYXR0cmlidXRlc1RvVGV4dHVyZURhdGEoW3NlbGYuY2x1c3RlckZpZWxkXSwgbm9kZXMpO1xuICAgICAgICAgICAgLy8gcHVzaGluZyB0aGUgZnggYW5kIGZ5XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZ4ID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgZnkgPSAwO1xuICAgICAgICAgICAgICAgIGlmIChpc051bWJlcihub2RlLmZ4KSAmJiBpc051bWJlcihub2RlLmZ5KSkge1xuICAgICAgICAgICAgICAgICAgICBmeCA9IG5vZGUuZnggfHwgMC4wMDE7XG4gICAgICAgICAgICAgICAgICAgIGZ5ID0gbm9kZS5meSB8fCAwLjAwMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlQXJyYXlbNCAqIGkgKyAxXSA9IGZ4O1xuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUFycmF5WzQgKiBpICsgMl0gPSBmeTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgbnVtUGFydGljbGVzID0gbm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgeyBtYXhFZGdlUGVyVmV0ZXgsIGFycmF5OiBub2Rlc0VkZ2VzQXJyYXkgfSA9IGJ1aWxkVGV4dHVyZURhdGEobm9kZXMsIGVkZ2VzKTtcbiAgICAgICAgICAgIGNvbnN0IHdvcmtlckVuYWJsZWQgPSBzZWxmLndvcmtlckVuYWJsZWQ7XG4gICAgICAgICAgICBsZXQgd29ybGQ7XG4gICAgICAgICAgICBpZiAod29ya2VyRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHdvcmxkID0gV29ybGQuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzLFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0Q29tcHV0ZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB3b3JsZCA9IFdvcmxkLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIGVuZ2luZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRDb21wdXRlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbXBpbGUgYXQgcnVudGltZSBpbiBkZXYgbW9kZVxuICAgICAgICAgICAgLy8gY29uc3QgY29tcGlsZXIgPSBuZXcgQ29tcGlsZXIoKVxuICAgICAgICAgICAgLy8gY29uc3QgZnJ1Y2h0ZXJtYW5CdW5kbGUgPSBjb21waWxlci5jb21waWxlQnVuZGxlKGZydWNodGVybWFuQ29kZSlcbiAgICAgICAgICAgIC8vIGNvbnN0IGNsdXN0ZXJCdW5kbGUgPSBjb21waWxlci5jb21waWxlQnVuZGxlKGNsdXN0ZXJDb2RlKVxuICAgICAgICAgICAgLy8gdXNlIGNvbXBpbGVkIGJ1bmRsZSBpbiBwcm9kIG1vZGVcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGZydWNodGVybWFuQnVuZGxlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhjbHVzdGVyQnVuZGxlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICBjb25zdCBvbkxheW91dEVuZCA9IHNlbGYub25MYXlvdXRFbmQ7XG4gICAgICAgICAgICBjb25zdCBjbHVzdGVyQ2VudGVycyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbHVzdGVyQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGNsdXN0ZXJDZW50ZXJzLnB1c2goMCwgMCwgMCwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBrZXJuZWxGcnVjaHRlcm1hbiA9IHdvcmxkXG4gICAgICAgICAgICAgICAgLmNyZWF0ZUtlcm5lbChmcnVjaHRlcm1hbkJ1bmRsZSlcbiAgICAgICAgICAgICAgICAuc2V0RGlzcGF0Y2goW251bVBhcnRpY2xlcywgMSwgMV0pXG4gICAgICAgICAgICAgICAgLnNldEJpbmRpbmcoe1xuICAgICAgICAgICAgICAgIHVfRGF0YTogbm9kZXNFZGdlc0FycmF5LFxuICAgICAgICAgICAgICAgIHVfSzogayxcbiAgICAgICAgICAgICAgICB1X0syOiBrMixcbiAgICAgICAgICAgICAgICB1X0dyYXZpdHk6IHNlbGYuZ3Jhdml0eSxcbiAgICAgICAgICAgICAgICB1X0NsdXN0ZXJHcmF2aXR5OiBzZWxmLmNsdXN0ZXJHcmF2aXR5IHx8IHNlbGYuZ3Jhdml0eSB8fCAxLFxuICAgICAgICAgICAgICAgIHVfU3BlZWQ6IHNwZWVkLFxuICAgICAgICAgICAgICAgIHVfTWF4RGlzcGxhY2U6IG1heERpc3BsYWNlLFxuICAgICAgICAgICAgICAgIHVfQ2x1c3RlcmluZzogY2x1c3RlcmluZyA/IDEgOiAwLFxuICAgICAgICAgICAgICAgIHVfQ2VudGVyOiBjZW50ZXIsXG4gICAgICAgICAgICAgICAgdV9BdHRyaWJ1dGVBcnJheTogYXR0cmlidXRlQXJyYXksXG4gICAgICAgICAgICAgICAgdV9DbHVzdGVyQ2VudGVyczogY2x1c3RlckNlbnRlcnMsXG4gICAgICAgICAgICAgICAgTUFYX0VER0VfUEVSX1ZFUlRFWDogbWF4RWRnZVBlclZldGV4LFxuICAgICAgICAgICAgICAgIFZFUlRFWF9DT1VOVDogbnVtUGFydGljbGVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxldCBrZXJuZWxDbHVzdGVyO1xuICAgICAgICAgICAgaWYgKGNsdXN0ZXJpbmcpIHtcbiAgICAgICAgICAgICAgICBrZXJuZWxDbHVzdGVyID0gd29ybGRcbiAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZUtlcm5lbChjbHVzdGVyQnVuZGxlKVxuICAgICAgICAgICAgICAgICAgICAuc2V0RGlzcGF0Y2goW2NsdXN0ZXJDb3VudCwgMSwgMV0pXG4gICAgICAgICAgICAgICAgICAgIC5zZXRCaW5kaW5nKHtcbiAgICAgICAgICAgICAgICAgICAgdV9EYXRhOiBub2Rlc0VkZ2VzQXJyYXksXG4gICAgICAgICAgICAgICAgICAgIHVfTm9kZUF0dHJpYnV0ZXM6IGF0dHJpYnV0ZUFycmF5LFxuICAgICAgICAgICAgICAgICAgICB1X0NsdXN0ZXJDZW50ZXJzOiBjbHVzdGVyQ2VudGVycyxcbiAgICAgICAgICAgICAgICAgICAgVkVSVEVYX0NPVU5UOiBudW1QYXJ0aWNsZXMsXG4gICAgICAgICAgICAgICAgICAgIENMVVNURVJfQ09VTlQ6IGNsdXN0ZXJDb3VudFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXhlY3V0ZSA9ICgpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heEl0ZXJhdGlvbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIGtlcm5lbEZydWNodGVybWFuLmV4ZWN1dGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbENsdXN0ZXIuc2V0QmluZGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9EYXRhOiBrZXJuZWxGcnVjaHRlcm1hblxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQga2VybmVsQ2x1c3Rlci5leGVjdXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxGcnVjaHRlcm1hbi5zZXRCaW5kaW5nKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X0NsdXN0ZXJDZW50ZXJzOiBrZXJuZWxDbHVzdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBrZXJuZWxGcnVjaHRlcm1hbi5zZXRCaW5kaW5nKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVfTWF4RGlzcGxhY2U6IG1heERpc3BsYWNlICo9IDAuOTlcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsUGFydGljbGVEYXRhID0geWllbGQga2VybmVsRnJ1Y2h0ZXJtYW4uZ2V0T3V0cHV0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGNhbnZhcykge1xuICAgICAgICAgICAgICAgICAgICAvLyDkvKDpgJLmlbDmja7nu5nkuLvnur/nqItcbiAgICAgICAgICAgICAgICAgICAgY3R4LnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IExBWU9VVF9NRVNTQUdFLkdQVUVORCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEVkZ2VEYXRhOiBmaW5hbFBhcnRpY2xlRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWRnZUluZGV4QnVmZmVyRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4ID0gZmluYWxQYXJ0aWNsZURhdGFbNCAqIGldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9IGZpbmFsUGFydGljbGVEYXRhWzQgKiBpICsgMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLnggPSB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS55ID0geTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICAgICAgb25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgeWllbGQgZXhlY3V0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIFwiZnJ1Y2h0ZXJtYW4tZ3B1XCI7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZnJ1Y2h0ZXJtYW4uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/gpu/fruchterman.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/gpu/fruchtermanShader.js": /*!**********************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/gpu/fruchtermanShader.js ***! \**********************************************************************/ /*! exports provided: fruchtermanCode, fruchtermanBundle, clusterCode, clusterBundle */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fruchtermanCode\", function() { return fruchtermanCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fruchtermanBundle\", function() { return fruchtermanBundle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterCode\", function() { return clusterCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterBundle\", function() { return clusterBundle; });\nconst fruchtermanCode = `\nimport { globalInvocationID } from 'g-webgpu';\nconst MAX_EDGE_PER_VERTEX;\nconst VERTEX_COUNT;\n@numthreads(1, 1, 1)\nclass Fruchterman {\n @in @out\n u_Data: vec4[];\n @in\n u_K: float;\n @in\n u_K2: float;\n \n @in\n u_Center: vec2;\n @in\n u_Gravity: float;\n @in\n u_ClusterGravity: float;\n @in\n u_Speed: float;\n @in\n u_MaxDisplace: float;\n @in\n u_Clustering: float;\n @in\n u_AttributeArray: vec4[];\n @in\n u_ClusterCenters: vec4[];\n calcRepulsive(i: int, currentNode: vec4): vec2 {\n let dx = 0, dy = 0;\n for (let j = 0; j < VERTEX_COUNT; j++) {\n if (i != j) {\n const nextNode = this.u_Data[j];\n const xDist = currentNode[0] - nextNode[0];\n const yDist = currentNode[1] - nextNode[1];\n const dist = (xDist * xDist + yDist * yDist) + 0.01;\n let param = this.u_K2 / dist;\n \n if (dist > 0.0) {\n dx += param * xDist;\n dy += param * yDist;\n if (xDist == 0 && yDist == 0) {\n const sign = i < j ? 1 : -1;\n dx += param * sign;\n dy += param * sign;\n }\n }\n }\n }\n return [dx, dy];\n }\n calcGravity(currentNode: vec4, nodeAttributes: vec4): vec2 { // \n let dx = 0, dy = 0;\n const vx = currentNode[0] - this.u_Center[0];\n const vy = currentNode[1] - this.u_Center[1];\n const gf = 0.01 * this.u_K * this.u_Gravity;\n dx = gf * vx;\n dy = gf * vy;\n if (this.u_Clustering == 1) {\n const clusterIdx = int(nodeAttributes[0]);\n const center = this.u_ClusterCenters[clusterIdx];\n const cvx = currentNode[0] - center[0];\n const cvy = currentNode[1] - center[1];\n const dist = sqrt(cvx * cvx + cvy * cvy) + 0.01;\n const parma = this.u_K * this.u_ClusterGravity / dist;\n dx += parma * cvx;\n dy += parma * cvy;\n }\n return [dx, dy];\n }\n calcAttractive(i: int, currentNode: vec4): vec2 {\n let dx = 0, dy = 0;\n const arr_offset = int(floor(currentNode[2] + 0.5));\n const length = int(floor(currentNode[3] + 0.5));\n const node_buffer: vec4;\n for (let p = 0; p < MAX_EDGE_PER_VERTEX; p++) {\n if (p >= length) break;\n const arr_idx = arr_offset + p;\n // when arr_idx % 4 == 0 update currentNodedx_buffer\n const buf_offset = arr_idx - arr_idx / 4 * 4;\n if (p == 0 || buf_offset == 0) {\n node_buffer = this.u_Data[int(arr_idx / 4)];\n }\n const float_j = buf_offset == 0 ? node_buffer[0] :\n buf_offset == 1 ? node_buffer[1] :\n buf_offset == 2 ? node_buffer[2] :\n node_buffer[3];\n const nextNode = this.u_Data[int(float_j)];\n const xDist = currentNode[0] - nextNode[0];\n const yDist = currentNode[1] - nextNode[1];\n const dist = sqrt(xDist * xDist + yDist * yDist) + 0.01;\n let attractiveF = dist / this.u_K;\n \n if (dist > 0.0) {\n dx -= xDist * attractiveF;\n dy -= yDist * attractiveF;\n if (xDist == 0 && yDist == 0) {\n const sign = i < int(float_j) ? 1 : -1;\n dx -= sign * attractiveF;\n dy -= sign * attractiveF;\n }\n }\n }\n return [dx, dy];\n }\n @main\n compute() {\n const i = globalInvocationID.x;\n const currentNode = this.u_Data[i];\n let dx = 0, dy = 0;\n if (i >= VERTEX_COUNT) {\n this.u_Data[i] = currentNode;\n return;\n }\n\n // [gravity, fx, fy, 0]\n const nodeAttributes = this.u_AttributeArray[i];\n\n if (nodeAttributes[1] != 0 && nodeAttributes[2] != 0) {\n // the node is fixed\n this.u_Data[i] = [\n nodeAttributes[1],\n nodeAttributes[2],\n currentNode[2],\n currentNode[3]\n ];\n return;\n }\n\n // repulsive\n const repulsive = this.calcRepulsive(i, currentNode);\n dx += repulsive[0];\n dy += repulsive[1];\n // attractive\n const attractive = this.calcAttractive(i, currentNode);\n dx += attractive[0];\n dy += attractive[1];\n // gravity\n const gravity = this.calcGravity(currentNode, nodeAttributes);\n dx -= gravity[0];\n dy -= gravity[1];\n // speed\n dx *= this.u_Speed;\n dy *= this.u_Speed;\n\n // move\n const distLength = sqrt(dx * dx + dy * dy);\n if (distLength > 0.0) {\n const limitedDist = min(this.u_MaxDisplace * this.u_Speed, distLength);\n this.u_Data[i] = [\n currentNode[0] + dx / distLength * limitedDist,\n currentNode[1] + dy / distLength * limitedDist,\n currentNode[2],\n currentNode[3]\n ];\n }\n }\n}\n`;\nconst fruchtermanBundle = `{\"shaders\":{\"WGSL\":\"import \\\\\"GLSL.std.450\\\\\" as std;\\\\n\\\\n\\\\n# var gWebGPUDebug : bool = false;\\\\n# var gWebGPUDebugOutput : vec4 = vec4(0.0);\\\\n\\\\n[[builtin global_invocation_id]] var globalInvocationID : vec3;\\\\n# [[builtin work_group_size]] var workGroupSize : vec3;\\\\n# [[builtin work_group_id]] var workGroupID : vec3;\\\\n[[builtin local_invocation_id]] var localInvocationID : vec3;\\\\n# [[builtin num_work_groups]] var numWorkGroups : vec3;\\\\n[[builtin local_invocation_idx]] var localInvocationIndex : u32;\\\\n\\\\ntype GWebGPUParams = [[block]] struct {\\\\n [[offset 0]] u_K : f32;\\\\n [[offset 4]] u_K2 : f32;\\\\n [[offset 8]] u_Center : vec2;\\\\n [[offset 16]] u_Gravity : f32;\\\\n [[offset 20]] u_ClusterGravity : f32;\\\\n [[offset 24]] u_Speed : f32;\\\\n [[offset 28]] u_MaxDisplace : f32;\\\\n [[offset 32]] u_Clustering : f32;\\\\n};\\\\n[[binding 0, set 0]] var gWebGPUUniformParams : GWebGPUParams;\\\\ntype GWebGPUBuffer0 = [[block]] struct {\\\\n [[offset 0]] u_Data : [[stride 16]] array>;\\\\n};\\\\n[[binding 1, set 0]] var gWebGPUBuffer0 : GWebGPUBuffer0;\\\\ntype GWebGPUBuffer1 = [[block]] struct {\\\\n [[offset 0]] u_AttributeArray : [[stride 16]] array>;\\\\n};\\\\n[[binding 2, set 0]] var gWebGPUBuffer1 : GWebGPUBuffer1;\\\\ntype GWebGPUBuffer2 = [[block]] struct {\\\\n [[offset 0]] u_ClusterCenters : [[stride 16]] array>;\\\\n};\\\\n[[binding 3, set 0]] var gWebGPUBuffer2 : GWebGPUBuffer2;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nfn calcRepulsive(i : i32, currentNode : vec4) -> vec2 {var dx : f32 = 0.0;\\\\nvar dy : f32 = 0.0;\\\\nfor (var j : i32 = 0; j < __DefineValuePlaceholder__VERTEX_COUNT; j = j + 1) {if (i != j) {var nextNode : vec4 = gWebGPUBuffer0.u_Data[j];\\\\nvar xDist : f32 = currentNode.x - nextNode.x;\\\\nvar yDist : f32 = currentNode.y - nextNode.y;\\\\nvar dist : f32 = ((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nvar param : f32 = gWebGPUUniformParams.u_K2 / dist;\\\\nif (dist > 0.0) {dx = dx + param * xDist;\\\\ndy = dy + param * yDist;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {var sign : f32 = select(1.0, -1.0, i < j);\\\\ndx = dx + param * std::sign;\\\\ndy = dy + param * std::sign;}}}}\\\\nreturn vec2(dx, dy);}\\\\nfn calcGravity(currentNode : vec4, nodeAttributes : vec4) -> vec2 {var dx : f32 = 0.0;\\\\nvar dy : f32 = 0.0;\\\\nvar vx : f32 = currentNode.x - gWebGPUUniformParams.u_Center.x;\\\\nvar vy : f32 = currentNode.y - gWebGPUUniformParams.u_Center.y;\\\\nvar gf : f32 = (0.01 * gWebGPUUniformParams.u_K) * gWebGPUUniformParams.u_Gravity;\\\\ndx = gf * vx;\\\\ndy = gf * vy;\\\\nif (gWebGPUUniformParams.u_Clustering == 1.0) {var clusterIdx : i32 = i32(nodeAttributes.x);\\\\nvar center : vec4 = gWebGPUBuffer2.u_ClusterCenters[clusterIdx];\\\\nvar cvx : f32 = currentNode.x - center.x;\\\\nvar cvy : f32 = currentNode.y - center.y;\\\\nvar dist : f32 = std::sqrt((cvx * cvx) + (cvy * cvy)) + 0.01;\\\\nvar parma : f32 = (gWebGPUUniformParams.u_K * gWebGPUUniformParams.u_ClusterGravity) / dist;\\\\ndx = dx + parma * cvx;\\\\ndy = dy + parma * cvy;}\\\\nreturn vec2(dx, dy);}\\\\nfn calcAttractive(i : i32, currentNode : vec4) -> vec2 {var dx : f32 = 0.0;\\\\nvar dy : f32 = 0.0;\\\\nvar arr_offset : i32 = i32(std::floor(currentNode.z + 0.5));\\\\nvar length : i32 = i32(std::floor(currentNode.w + 0.5));\\\\nvar node_buffer : vec4;\\\\nfor (var p : i32 = 0; p < __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX; p = p + 1) {if (p >= length) {break;}\\\\nvar arr_idx : i32 = arr_offset + i32(p);\\\\nvar buf_offset : i32 = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = gWebGPUBuffer0.u_Data[i32(arr_idx / 4)];}\\\\nvar float_j : f32 = select(node_buffer.x, select(node_buffer.y, select(node_buffer.z, node_buffer.w, buf_offset == 2), buf_offset == 1), buf_offset == 0);\\\\nvar nextNode : vec4 = gWebGPUBuffer0.u_Data[i32(float_j)];\\\\nvar xDist : f32 = currentNode.x - nextNode.x;\\\\nvar yDist : f32 = currentNode.y - nextNode.y;\\\\nvar dist : f32 = std::sqrt((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nvar attractiveF : f32 = dist / gWebGPUUniformParams.u_K;\\\\nif (dist > 0.0) {dx = dx - xDist * attractiveF;\\\\ndy = dy - yDist * attractiveF;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {var sign : f32 = select(1.0, -1.0, i < i32(float_j));\\\\ndx = dx - std::sign * attractiveF;\\\\ndy = dy - std::sign * attractiveF;}}}\\\\nreturn vec2(dx, dy);}\\\\nfn main() -> void {var i : i32 = globalInvocationID.x;\\\\nvar currentNode : vec4 = gWebGPUBuffer0.u_Data[i];\\\\nvar dx : f32 = 0.0;\\\\nvar dy : f32 = 0.0;\\\\nif (i >= __DefineValuePlaceholder__VERTEX_COUNT) {gWebGPUBuffer0.u_Data[i] = currentNode;\\\\nreturn ;}\\\\nvar nodeAttributes : vec4 = gWebGPUBuffer1.u_AttributeArray[i];\\\\nif ((nodeAttributes.y != 0.0) && (nodeAttributes.z != 0.0)) {gWebGPUBuffer0.u_Data[i] = vec4(nodeAttributes.y, nodeAttributes.z, currentNode.z, currentNode.w);\\\\nreturn ;}\\\\nvar repulsive : vec2 = calcRepulsive(i, currentNode);\\\\ndx = dx + repulsive.x;\\\\ndy = dy + repulsive.y;\\\\nvar attractive : vec2 = calcAttractive(i, currentNode);\\\\ndx = dx + attractive.x;\\\\ndy = dy + attractive.y;\\\\nvar gravity : vec2 = calcGravity(currentNode, nodeAttributes);\\\\ndx = dx - gravity.x;\\\\ndy = dy - gravity.y;\\\\ndx = dx * gWebGPUUniformParams.u_Speed;\\\\ndy = dy * gWebGPUUniformParams.u_Speed;\\\\nvar distLength : f32 = std::sqrt((dx * dx) + (dy * dy));\\\\nif (distLength > 0.0) {var limitedDist : f32 = std::min(gWebGPUUniformParams.u_MaxDisplace * gWebGPUUniformParams.u_Speed, distLength);\\\\ngWebGPUBuffer0.u_Data[i] = vec4(currentNode.x + ((dx / distLength) * limitedDist), currentNode.y + ((dy / distLength) * limitedDist), currentNode.z, currentNode.w);}\\\\nreturn;}\\\\n\\\\nentry_point compute as \\\\\"main\\\\\" = main;\\\\n\",\"GLSL450\":\"\\\\n\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\nivec3 globalInvocationID = ivec3(gl_GlobalInvocationID);\\\\nivec3 workGroupSize = ivec3(1,1,1);\\\\nivec3 workGroupID = ivec3(gl_WorkGroupID);\\\\nivec3 localInvocationID = ivec3(gl_LocalInvocationID);\\\\nivec3 numWorkGroups = ivec3(gl_NumWorkGroups);\\\\nint localInvocationIndex = int(gl_LocalInvocationIndex);\\\\n\\\\nlayout(std140, set = 0, binding = 0) uniform GWebGPUParams {\\\\n float u_K;\\\\n float u_K2;\\\\n vec2 u_Center;\\\\n float u_Gravity;\\\\n float u_ClusterGravity;\\\\n float u_Speed;\\\\n float u_MaxDisplace;\\\\n float u_Clustering;\\\\n} gWebGPUUniformParams;\\\\nlayout(std430, set = 0, binding = 1) buffer GWebGPUBuffer0 {\\\\n vec4 u_Data[];\\\\n} gWebGPUBuffer0;\\\\n\\\\nlayout(std430, set = 0, binding = 2) buffer readonly GWebGPUBuffer1 {\\\\n vec4 u_AttributeArray[];\\\\n} gWebGPUBuffer1;\\\\n\\\\nlayout(std430, set = 0, binding = 3) buffer readonly GWebGPUBuffer2 {\\\\n vec4 u_ClusterCenters[];\\\\n} gWebGPUBuffer2;\\\\n\\\\n\\\\n\\\\n#define MAX_EDGE_PER_VERTEX __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\nlayout (\\\\n local_size_x = 1,\\\\n local_size_y = 1,\\\\n local_size_z = 1\\\\n) in;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nvec2 calcRepulsive(int i, vec4 currentNode) {float dx = 0.0;\\\\nfloat dy = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {if (i != j) {vec4 nextNode = gWebGPUBuffer0.u_Data[j];\\\\nfloat xDist = currentNode.x - nextNode.x;\\\\nfloat yDist = currentNode.y - nextNode.y;\\\\nfloat dist = ((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nfloat param = gWebGPUUniformParams.u_K2 / dist;\\\\nif (dist > 0.0) {dx += param * xDist;\\\\ndy += param * yDist;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {float sign = (i < j) ? (1.0) : (-1.0);\\\\ndx += param * sign;\\\\ndy += param * sign;}}}}\\\\nreturn vec2(dx, dy);}\\\\nvec2 calcGravity(vec4 currentNode, vec4 nodeAttributes) {float dx = 0.0;\\\\nfloat dy = 0.0;\\\\nfloat vx = currentNode.x - gWebGPUUniformParams.u_Center.x;\\\\nfloat vy = currentNode.y - gWebGPUUniformParams.u_Center.y;\\\\nfloat gf = (0.01 * gWebGPUUniformParams.u_K) * gWebGPUUniformParams.u_Gravity;\\\\ndx = gf * vx;\\\\ndy = gf * vy;\\\\nif (gWebGPUUniformParams.u_Clustering == 1.0) {int clusterIdx = int(nodeAttributes.x);\\\\nvec4 center = gWebGPUBuffer2.u_ClusterCenters[clusterIdx];\\\\nfloat cvx = currentNode.x - center.x;\\\\nfloat cvy = currentNode.y - center.y;\\\\nfloat dist = sqrt((cvx * cvx) + (cvy * cvy)) + 0.01;\\\\nfloat parma = (gWebGPUUniformParams.u_K * gWebGPUUniformParams.u_ClusterGravity) / dist;\\\\ndx += parma * cvx;\\\\ndy += parma * cvy;}\\\\nreturn vec2(dx, dy);}\\\\nvec2 calcAttractive(int i, vec4 currentNode) {float dx = 0.0;\\\\nfloat dy = 0.0;\\\\nint arr_offset = int(floor(currentNode.z + 0.5));\\\\nint length = int(floor(currentNode.w + 0.5));\\\\nvec4 node_buffer;\\\\nfor (int p = 0; p < MAX_EDGE_PER_VERTEX; p++) {if (p >= length) {break;}\\\\nint arr_idx = arr_offset + int(p);\\\\nint buf_offset = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = gWebGPUBuffer0.u_Data[int(arr_idx / 4)];}\\\\nfloat float_j = (buf_offset == 0) ? (node_buffer.x) : ((buf_offset == 1) ? (node_buffer.y) : ((buf_offset == 2) ? (node_buffer.z) : (node_buffer.w)));\\\\nvec4 nextNode = gWebGPUBuffer0.u_Data[int(float_j)];\\\\nfloat xDist = currentNode.x - nextNode.x;\\\\nfloat yDist = currentNode.y - nextNode.y;\\\\nfloat dist = sqrt((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nfloat attractiveF = dist / gWebGPUUniformParams.u_K;\\\\nif (dist > 0.0) {dx -= xDist * attractiveF;\\\\ndy -= yDist * attractiveF;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {float sign = (i < int(float_j)) ? (1.0) : (-1.0);\\\\ndx -= sign * attractiveF;\\\\ndy -= sign * attractiveF;}}}\\\\nreturn vec2(dx, dy);}\\\\nvoid main() {int i = globalInvocationID.x;\\\\nvec4 currentNode = gWebGPUBuffer0.u_Data[i];\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nif (i >= VERTEX_COUNT) {gWebGPUBuffer0.u_Data[i] = currentNode;\\\\nreturn ;}\\\\nvec4 nodeAttributes = gWebGPUBuffer1.u_AttributeArray[i];\\\\nif ((nodeAttributes.y != 0.0) && (nodeAttributes.z != 0.0)) {gWebGPUBuffer0.u_Data[i] = vec4(nodeAttributes.y, nodeAttributes.z, currentNode.z, currentNode.w);\\\\nreturn ;}\\\\nvec2 repulsive = calcRepulsive(i, currentNode);\\\\ndx += repulsive.x;\\\\ndy += repulsive.y;\\\\nvec2 attractive = calcAttractive(i, currentNode);\\\\ndx += attractive.x;\\\\ndy += attractive.y;\\\\nvec2 gravity = calcGravity(currentNode, nodeAttributes);\\\\ndx -= gravity.x;\\\\ndy -= gravity.y;\\\\ndx *= gWebGPUUniformParams.u_Speed;\\\\ndy *= gWebGPUUniformParams.u_Speed;\\\\nfloat distLength = sqrt((dx * dx) + (dy * dy));\\\\nif (distLength > 0.0) {float limitedDist = min(gWebGPUUniformParams.u_MaxDisplace * gWebGPUUniformParams.u_Speed, distLength);\\\\ngWebGPUBuffer0.u_Data[i] = vec4(currentNode.x + ((dx / distLength) * limitedDist), currentNode.y + ((dy / distLength) * limitedDist), currentNode.z, currentNode.w);}}\\\\n\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define MAX_EDGE_PER_VERTEX __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform float u_K;\\\\nuniform float u_K2;\\\\nuniform vec2 u_Center;\\\\nuniform float u_Gravity;\\\\nuniform float u_ClusterGravity;\\\\nuniform float u_Speed;\\\\nuniform float u_MaxDisplace;\\\\nuniform float u_Clustering;\\\\nuniform sampler2D u_AttributeArray;\\\\nuniform vec2 u_AttributeArraySize;\\\\nvec4 getDatau_AttributeArray(vec2 address2D) {\\\\n return vec4(texture2D(u_AttributeArray, address2D).rgba);\\\\n}\\\\nvec4 getDatau_AttributeArray(float address1D) {\\\\n return getDatau_AttributeArray(addrTranslation_1Dto2D(address1D, u_AttributeArraySize));\\\\n}\\\\nvec4 getDatau_AttributeArray(int address1D) {\\\\n return getDatau_AttributeArray(float(address1D));\\\\n}\\\\nuniform sampler2D u_ClusterCenters;\\\\nuniform vec2 u_ClusterCentersSize;\\\\nvec4 getDatau_ClusterCenters(vec2 address2D) {\\\\n return vec4(texture2D(u_ClusterCenters, address2D).rgba);\\\\n}\\\\nvec4 getDatau_ClusterCenters(float address1D) {\\\\n return getDatau_ClusterCenters(addrTranslation_1Dto2D(address1D, u_ClusterCentersSize));\\\\n}\\\\nvec4 getDatau_ClusterCenters(int address1D) {\\\\n return getDatau_ClusterCenters(float(address1D));\\\\n}\\\\nvec2 calcRepulsive(int i, vec4 currentNode) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {if (i != j) {vec4 nextNode = getDatau_Data(j);\\\\nfloat xDist = currentNode.x - nextNode.x;\\\\nfloat yDist = currentNode.y - nextNode.y;\\\\nfloat dist = ((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nfloat param = u_K2 / dist;\\\\nif (dist > 0.0) {dx += param * xDist;\\\\ndy += param * yDist;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {float sign = (i < j) ? (1.0) : (-1.0);\\\\ndx += param * sign;\\\\ndy += param * sign;}}}}\\\\nreturn vec2(dx, dy);}\\\\nvec2 calcGravity(vec4 currentNode, vec4 nodeAttributes) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nfloat vx = currentNode.x - u_Center.x;\\\\nfloat vy = currentNode.y - u_Center.y;\\\\nfloat gf = (0.01 * u_K) * u_Gravity;\\\\ndx = gf * vx;\\\\ndy = gf * vy;\\\\nif (u_Clustering == 1.0) {int clusterIdx = int(nodeAttributes.x);\\\\nvec4 center = getDatau_ClusterCenters(clusterIdx);\\\\nfloat cvx = currentNode.x - center.x;\\\\nfloat cvy = currentNode.y - center.y;\\\\nfloat dist = sqrt((cvx * cvx) + (cvy * cvy)) + 0.01;\\\\nfloat parma = (u_K * u_ClusterGravity) / dist;\\\\ndx += parma * cvx;\\\\ndy += parma * cvy;}\\\\nreturn vec2(dx, dy);}\\\\nvec2 calcAttractive(int i, vec4 currentNode) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nint arr_offset = int(floor(currentNode.z + 0.5));\\\\nint length = int(floor(currentNode.w + 0.5));\\\\nvec4 node_buffer;\\\\nfor (int p = 0; p < MAX_EDGE_PER_VERTEX; p++) {if (p >= length) {break;}\\\\nint arr_idx = arr_offset + int(p);\\\\nint buf_offset = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = getDatau_Data(int(arr_idx / 4));}\\\\nfloat float_j = (buf_offset == 0) ? (node_buffer.x) : ((buf_offset == 1) ? (node_buffer.y) : ((buf_offset == 2) ? (node_buffer.z) : (node_buffer.w)));\\\\nvec4 nextNode = getDatau_Data(int(float_j));\\\\nfloat xDist = currentNode.x - nextNode.x;\\\\nfloat yDist = currentNode.y - nextNode.y;\\\\nfloat dist = sqrt((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nfloat attractiveF = dist / u_K;\\\\nif (dist > 0.0) {dx -= xDist * attractiveF;\\\\ndy -= yDist * attractiveF;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {float sign = (i < int(float_j)) ? (1.0) : (-1.0);\\\\ndx -= sign * attractiveF;\\\\ndy -= sign * attractiveF;}}}\\\\nreturn vec2(dx, dy);}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint i = globalInvocationID.x;\\\\nvec4 currentNode = getDatau_Data(i);\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nif (i >= VERTEX_COUNT) {gl_FragColor = vec4(currentNode);\\\\nreturn ;}\\\\nvec4 nodeAttributes = getDatau_AttributeArray(i);\\\\nif ((nodeAttributes.y != 0.0) && (nodeAttributes.z != 0.0)) {gl_FragColor = vec4(vec4(nodeAttributes.y, nodeAttributes.z, currentNode.z, currentNode.w));\\\\nreturn ;}\\\\nvec2 repulsive = calcRepulsive(i, currentNode);\\\\ndx += repulsive.x;\\\\ndy += repulsive.y;\\\\nvec2 attractive = calcAttractive(i, currentNode);\\\\ndx += attractive.x;\\\\ndy += attractive.y;\\\\nvec2 gravity = calcGravity(currentNode, nodeAttributes);\\\\ndx -= gravity.x;\\\\ndy -= gravity.y;\\\\ndx *= u_Speed;\\\\ndy *= u_Speed;\\\\nfloat distLength = sqrt((dx * dx) + (dy * dy));\\\\nif (distLength > 0.0) {float limitedDist = min(u_MaxDisplace * u_Speed, distLength);\\\\ngl_FragColor = vec4(vec4(currentNode.x + ((dx / distLength) * limitedDist), currentNode.y + ((dy / distLength) * limitedDist), currentNode.z, currentNode.w));}if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"MAX_EDGE_PER_VERTEX\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_K\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_K2\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Center\",\"type\":\"vec2\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Gravity\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_ClusterGravity\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Speed\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_MaxDisplace\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Clustering\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_AttributeArray\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_ClusterCenters\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_Data\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\nconst clusterCode = `\nimport { globalInvocationID } from 'g-webgpu';\nconst VERTEX_COUNT;\nconst CLUSTER_COUNT;\n@numthreads(1, 1, 1)\nclass CalcCenter {\n @in\n u_Data: vec4[];\n @in\n u_NodeAttributes: vec4[]; // [[clusterIdx, 0, 0, 0], ...]\n @in @out\n u_ClusterCenters: vec4[]; // [[cx, cy, nodeCount, clusterIdx], ...]\n @main\n compute() {\n const i = globalInvocationID.x;\n const center = this.u_ClusterCenters[i];\n let sumx = 0;\n let sumy = 0;\n let count = 0;\n for (let j = 0; j < VERTEX_COUNT; j++) {\n const attributes = this.u_NodeAttributes[j];\n const clusterIdx = int(attributes[0]);\n const vertex = this.u_Data[j];\n if (clusterIdx == i) {\n sumx += vertex.x;\n sumy += vertex.y;\n count += 1;\n }\n }\n this.u_ClusterCenters[i] = [\n sumx / count,\n sumy / count,\n count,\n i\n ];\n }\n}\n`;\nconst clusterBundle = `{\"shaders\":{\"WGSL\":\"import \\\\\"GLSL.std.450\\\\\" as std;\\\\n\\\\n\\\\n# var gWebGPUDebug : bool = false;\\\\n# var gWebGPUDebugOutput : vec4 = vec4(0.0);\\\\n\\\\n[[builtin global_invocation_id]] var globalInvocationID : vec3;\\\\n# [[builtin work_group_size]] var workGroupSize : vec3;\\\\n# [[builtin work_group_id]] var workGroupID : vec3;\\\\n[[builtin local_invocation_id]] var localInvocationID : vec3;\\\\n# [[builtin num_work_groups]] var numWorkGroups : vec3;\\\\n[[builtin local_invocation_idx]] var localInvocationIndex : u32;\\\\n\\\\n\\\\ntype GWebGPUBuffer0 = [[block]] struct {\\\\n [[offset 0]] u_Data : [[stride 16]] array>;\\\\n};\\\\n[[binding 0, set 0]] var gWebGPUBuffer0 : GWebGPUBuffer0;\\\\ntype GWebGPUBuffer1 = [[block]] struct {\\\\n [[offset 0]] u_NodeAttributes : [[stride 16]] array>;\\\\n};\\\\n[[binding 1, set 0]] var gWebGPUBuffer1 : GWebGPUBuffer1;\\\\ntype GWebGPUBuffer2 = [[block]] struct {\\\\n [[offset 0]] u_ClusterCenters : [[stride 16]] array>;\\\\n};\\\\n[[binding 2, set 0]] var gWebGPUBuffer2 : GWebGPUBuffer2;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nfn main() -> void {var i : i32 = globalInvocationID.x;\\\\nvar center : vec4 = gWebGPUBuffer2.u_ClusterCenters[i];\\\\nvar sumx : f32 = 0.0;\\\\nvar sumy : f32 = 0.0;\\\\nvar count : f32 = 0.0;\\\\nfor (var j : i32 = 0; j < __DefineValuePlaceholder__VERTEX_COUNT; j = j + 1) {var attributes : vec4 = gWebGPUBuffer1.u_NodeAttributes[j];\\\\nvar clusterIdx : i32 = i32(attributes.x);\\\\nvar vertex : vec4 = gWebGPUBuffer0.u_Data[j];\\\\nif (clusterIdx == i) {sumx = sumx + vertex.x;\\\\nsumy = sumy + vertex.y;\\\\ncount = count + 1.0;}}\\\\ngWebGPUBuffer2.u_ClusterCenters[i] = vec4(sumx / count, sumy / count, count, i);\\\\nreturn;}\\\\n\\\\nentry_point compute as \\\\\"main\\\\\" = main;\\\\n\",\"GLSL450\":\"\\\\n\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\nivec3 globalInvocationID = ivec3(gl_GlobalInvocationID);\\\\nivec3 workGroupSize = ivec3(1,1,1);\\\\nivec3 workGroupID = ivec3(gl_WorkGroupID);\\\\nivec3 localInvocationID = ivec3(gl_LocalInvocationID);\\\\nivec3 numWorkGroups = ivec3(gl_NumWorkGroups);\\\\nint localInvocationIndex = int(gl_LocalInvocationIndex);\\\\n\\\\n\\\\nlayout(std430, set = 0, binding = 0) buffer readonly GWebGPUBuffer0 {\\\\n vec4 u_Data[];\\\\n} gWebGPUBuffer0;\\\\n\\\\nlayout(std430, set = 0, binding = 1) buffer readonly GWebGPUBuffer1 {\\\\n vec4 u_NodeAttributes[];\\\\n} gWebGPUBuffer1;\\\\n\\\\nlayout(std430, set = 0, binding = 2) buffer GWebGPUBuffer2 {\\\\n vec4 u_ClusterCenters[];\\\\n} gWebGPUBuffer2;\\\\n\\\\n\\\\n\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n#define CLUSTER_COUNT __DefineValuePlaceholder__CLUSTER_COUNT\\\\nlayout (\\\\n local_size_x = 1,\\\\n local_size_y = 1,\\\\n local_size_z = 1\\\\n) in;\\\\n\\\\n\\\\n\\\\nvoid main() {int i = globalInvocationID.x;\\\\nvec4 center = gWebGPUBuffer2.u_ClusterCenters[i];\\\\nfloat sumx = 0.0;\\\\nfloat sumy = 0.0;\\\\nfloat count = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {vec4 attributes = gWebGPUBuffer1.u_NodeAttributes[j];\\\\nint clusterIdx = int(attributes.x);\\\\nvec4 vertex = gWebGPUBuffer0.u_Data[j];\\\\nif (clusterIdx == i) {sumx += vertex.x;\\\\nsumy += vertex.y;\\\\ncount += 1.0;}}\\\\ngWebGPUBuffer2.u_ClusterCenters[i] = vec4(sumx / count, sumy / count, count, i);}\\\\n\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n#define CLUSTER_COUNT __DefineValuePlaceholder__CLUSTER_COUNT\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform sampler2D u_NodeAttributes;\\\\nuniform vec2 u_NodeAttributesSize;\\\\nvec4 getDatau_NodeAttributes(vec2 address2D) {\\\\n return vec4(texture2D(u_NodeAttributes, address2D).rgba);\\\\n}\\\\nvec4 getDatau_NodeAttributes(float address1D) {\\\\n return getDatau_NodeAttributes(addrTranslation_1Dto2D(address1D, u_NodeAttributesSize));\\\\n}\\\\nvec4 getDatau_NodeAttributes(int address1D) {\\\\n return getDatau_NodeAttributes(float(address1D));\\\\n}\\\\nuniform sampler2D u_ClusterCenters;\\\\nuniform vec2 u_ClusterCentersSize;\\\\nvec4 getDatau_ClusterCenters(vec2 address2D) {\\\\n return vec4(texture2D(u_ClusterCenters, address2D).rgba);\\\\n}\\\\nvec4 getDatau_ClusterCenters(float address1D) {\\\\n return getDatau_ClusterCenters(addrTranslation_1Dto2D(address1D, u_ClusterCentersSize));\\\\n}\\\\nvec4 getDatau_ClusterCenters(int address1D) {\\\\n return getDatau_ClusterCenters(float(address1D));\\\\n}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint i = globalInvocationID.x;\\\\nvec4 center = getDatau_ClusterCenters(i);\\\\nfloat sumx = 0.0;\\\\nfloat sumy = 0.0;\\\\nfloat count = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {vec4 attributes = getDatau_NodeAttributes(j);\\\\nint clusterIdx = int(attributes.x);\\\\nvec4 vertex = getDatau_Data(j);\\\\nif (clusterIdx == i) {sumx += vertex.x;\\\\nsumy += vertex.y;\\\\ncount += 1.0;}}\\\\ngl_FragColor = vec4(vec4(sumx / count, sumy / count, count, i));if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"CLUSTER_COUNT\",\"type\":\"Float\",\"runtime\":true}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_NodeAttributes\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_ClusterCenters\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_ClusterCenters\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\n//# sourceMappingURL=fruchtermanShader.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9ncHUvZnJ1Y2h0ZXJtYW5TaGFkZXIuanM/NzhmZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDUCxRQUFRLHFCQUFxQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHlCQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLDRCQUE0QixXQUFXLHlDQUF5QywyQ0FBMkMseURBQXlELDhFQUE4RSxtRUFBbUUsK0RBQStELHlFQUF5RSxtRUFBbUUsdUVBQXVFLDZDQUE2Qyw0QkFBNEIsNkJBQTZCLHVDQUF1QyxtQ0FBbUMsMENBQTBDLGlDQUFpQyx1Q0FBdUMsc0NBQXNDLEtBQUssMEVBQTBFLDJDQUEyQywwREFBMEQsS0FBSyw0RUFBNEUsMkNBQTJDLG9FQUFvRSxLQUFLLDRFQUE0RSwyQ0FBMkMsb0VBQW9FLEtBQUssNEVBQTRFLHVIQUF1SCxtQkFBbUIsc0JBQXNCLHdCQUF3Qiw0Q0FBNEMsYUFBYSxhQUFhLG9EQUFvRCxnREFBZ0QsZ0RBQWdELCtEQUErRCxzREFBc0Qsb0JBQW9CLHdCQUF3QiwyQkFBMkIsMENBQTBDLDBDQUEwQywrQkFBK0IsbUNBQW1DLDZCQUE2QixxRkFBcUYsbUJBQW1CLHNCQUFzQixrRUFBa0Usa0VBQWtFLHFGQUFxRixnQkFBZ0IsZ0JBQWdCLGtEQUFrRCw2Q0FBNkMsd0VBQXdFLDRDQUE0Qyw0Q0FBNEMsZ0VBQWdFLCtGQUErRix5QkFBeUIsMEJBQTBCLDZCQUE2QixxRUFBcUUsbUJBQW1CLHNCQUFzQiwrREFBK0QsMkRBQTJELCtCQUErQix3QkFBd0IsbURBQW1ELGFBQWEsa0JBQWtCLE9BQU8sMkNBQTJDLHdEQUF3RCx1Q0FBdUMsdURBQXVELDZKQUE2SixrRUFBa0UsZ0RBQWdELGdEQUFnRCx3RUFBd0UsMkRBQTJELG9CQUFvQiw4QkFBOEIsaUNBQWlDLDBDQUEwQyxxREFBcUQscUNBQXFDLHdDQUF3Qyw2QkFBNkIsc0JBQXNCLG1DQUFtQywwREFBMEQsc0JBQXNCLHNCQUFzQixxREFBcUQsdUNBQXVDLFlBQVksdUVBQXVFLGdFQUFnRSx1R0FBdUcsWUFBWSw2REFBNkQseUJBQXlCLHlCQUF5QiwrREFBK0QsMEJBQTBCLDBCQUEwQixzRUFBc0UsdUJBQXVCLHVCQUF1QiwwQ0FBMEMsMENBQTBDLDJEQUEyRCwwQkFBMEIsZ0hBQWdILDZLQUE2SyxXQUFXLCtDQUErQyxtREFBbUQsdUNBQXVDLDhEQUE4RCxzQ0FBc0MsNkNBQTZDLHlEQUF5RCxpREFBaUQsMkRBQTJELGtFQUFrRSxlQUFlLGdCQUFnQixtQkFBbUIscUJBQXFCLDRCQUE0QixtQkFBbUIseUJBQXlCLHdCQUF3QixJQUFJLHNCQUFzQixpRUFBaUUsbUJBQW1CLElBQUksZ0JBQWdCLDRFQUE0RSw2QkFBNkIsSUFBSSxnQkFBZ0IsNEVBQTRFLDZCQUE2QixJQUFJLGdCQUFnQix1T0FBdU8saUZBQWlGLGVBQWUsa0JBQWtCLGtCQUFrQixrQkFBa0IsT0FBTyxhQUFhLHlDQUF5Qyw0Q0FBNEMsNENBQTRDLDJEQUEyRCxrREFBa0Qsb0JBQW9CLG9CQUFvQix1QkFBdUIsMENBQTBDLHNDQUFzQyxzQkFBc0IsMEJBQTBCLHdCQUF3Qiw0REFBNEQsZUFBZSxrQkFBa0IsOERBQThELDhEQUE4RCxpRkFBaUYsZ0JBQWdCLGdCQUFnQixrREFBa0QsdUNBQXVDLDZEQUE2RCx3Q0FBd0Msd0NBQXdDLHVEQUF1RCwyRkFBMkYscUJBQXFCLHNCQUFzQix3QkFBd0IsaURBQWlELGVBQWUsa0JBQWtCLG9EQUFvRCxnREFBZ0Qsb0JBQW9CLGtCQUFrQix5QkFBeUIsT0FBTyxrQkFBa0IsT0FBTyxxQ0FBcUMsa0RBQWtELHVDQUF1Qyx1REFBdUQseUpBQXlKLHVEQUF1RCw0Q0FBNEMsNENBQTRDLCtEQUErRCx1REFBdUQsb0JBQW9CLDBCQUEwQiw2QkFBNkIsMENBQTBDLGlEQUFpRCw0QkFBNEIsK0JBQStCLHdCQUF3QixnQkFBZ0IsNkJBQTZCLCtDQUErQyxrQkFBa0Isa0JBQWtCLDJCQUEyQix1Q0FBdUMsWUFBWSw0REFBNEQsZ0VBQWdFLGtHQUFrRyxZQUFZLGtEQUFrRCxxQkFBcUIscUJBQXFCLG9EQUFvRCxzQkFBc0Isc0JBQXNCLDJEQUEyRCxtQkFBbUIsbUJBQW1CLHNDQUFzQyxzQ0FBc0Msa0RBQWtELDBCQUEwQix1R0FBdUcseUtBQXlLLDhDQUE4QywrREFBK0QsNEVBQTRFLHFEQUFxRCw4REFBOEQsSUFBSSx1QkFBdUIsNENBQTRDLGtDQUFrQywyQkFBMkIsZ0NBQWdDLHVDQUF1Qyw0S0FBNEssMkJBQTJCLHVDQUF1QyxvREFBb0QsSUFBSSx3Q0FBd0MseUVBQXlFLElBQUksc0NBQXNDLDRDQUE0QyxJQUFJLHFCQUFxQixzQkFBc0IseUJBQXlCLDJCQUEyQixrQ0FBa0MseUJBQXlCLCtCQUErQiw4QkFBOEIsc0NBQXNDLHFDQUFxQyxpREFBaUQsOERBQThELElBQUksa0RBQWtELDZGQUE2RixJQUFJLGdEQUFnRCxzREFBc0QsSUFBSSxzQ0FBc0MscUNBQXFDLGlEQUFpRCw4REFBOEQsSUFBSSxrREFBa0QsNkZBQTZGLElBQUksZ0RBQWdELHNEQUFzRCxJQUFJLGdEQUFnRCx3Q0FBd0Msd0NBQXdDLHlLQUF5Syx5R0FBeUcsa01BQWtNLHdGQUF3RiwrSEFBK0gsa0pBQWtKLCtGQUErRiw4RUFBOEUsc0tBQXNLLGtCQUFrQixrQkFBa0Isa0JBQWtCLGtCQUFrQixPQUFPLGFBQWEsaUNBQWlDLDRDQUE0Qyw0Q0FBNEMsMkRBQTJELDZCQUE2QixvQkFBb0Isb0JBQW9CLHVCQUF1QiwwQ0FBMEMsc0NBQXNDLHNCQUFzQiwwQkFBMEIsd0JBQXdCLDREQUE0RCx3Q0FBd0Msd0NBQXdDLHlLQUF5Syx5R0FBeUcsa01BQWtNLHdGQUF3RiwrSEFBK0gsa0pBQWtKLCtGQUErRiw4RUFBOEUsc0tBQXNLLGtCQUFrQixrQkFBa0IseUNBQXlDLHlDQUF5Qyx1Q0FBdUMsZ0JBQWdCLGdCQUFnQiw2QkFBNkIsdUNBQXVDLHFEQUFxRCx3Q0FBd0Msd0NBQXdDLHVEQUF1RCxpREFBaUQscUJBQXFCLHNCQUFzQix3QkFBd0IsaURBQWlELHdDQUF3Qyx3Q0FBd0MseUtBQXlLLHlHQUF5RyxrTUFBa00sd0ZBQXdGLCtIQUErSCxrSkFBa0osK0ZBQStGLDhFQUE4RSxzS0FBc0ssa0JBQWtCLGtCQUFrQixvREFBb0QsZ0RBQWdELG9CQUFvQixrQkFBa0IseUJBQXlCLE9BQU8sa0JBQWtCLE9BQU8scUNBQXFDLGtEQUFrRCx1Q0FBdUMsK0NBQStDLHlKQUF5SiwrQ0FBK0MsNENBQTRDLDRDQUE0QywrREFBK0Qsa0NBQWtDLG9CQUFvQiwwQkFBMEIsNkJBQTZCLDBDQUEwQyxpREFBaUQsNEJBQTRCLCtCQUErQix3QkFBd0IsZ0JBQWdCLHdDQUF3Qyx3Q0FBd0MseUtBQXlLLHlHQUF5RyxrTUFBa00sd0ZBQXdGLCtIQUErSCxrSkFBa0osK0ZBQStGLDhFQUE4RSxzS0FBc0ssZ0NBQWdDLHVDQUF1QyxrQkFBa0Isa0JBQWtCLDJCQUEyQixpQ0FBaUMsWUFBWSxvREFBb0QsZ0VBQWdFLDRGQUE0RixZQUFZLGtEQUFrRCxxQkFBcUIscUJBQXFCLG9EQUFvRCxzQkFBc0Isc0JBQXNCLDJEQUEyRCxtQkFBbUIsbUJBQW1CLGlCQUFpQixpQkFBaUIsa0RBQWtELDBCQUEwQiw2REFBNkQsa0tBQWtLLG1CQUFtQix1Q0FBdUMsS0FBSyxLQUFLLFlBQVksb0ZBQW9GLDJEQUEyRCxFQUFFLG9EQUFvRCxlQUFlLG9IQUFvSCxFQUFFLG9HQUFvRyxFQUFFLHFHQUFxRyxFQUFFLDZHQUE2RyxFQUFFLDBHQUEwRyxFQUFFLGlIQUFpSCxFQUFFLHdHQUF3RyxFQUFFLDhHQUE4RyxFQUFFLDZHQUE2RyxFQUFFLDZIQUE2SCxFQUFFLDZIQUE2SCxvQ0FBb0Msd0NBQXdDLHNCQUFzQjtBQUNoeXNCO0FBQ1AsUUFBUSxxQkFBcUI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLHdCQUF3QixXQUFXLHlDQUF5QywyQ0FBMkMseURBQXlELDhFQUE4RSxtRUFBbUUsK0RBQStELHlFQUF5RSxtRUFBbUUsdUVBQXVFLGlEQUFpRCwwREFBMEQsS0FBSyw0RUFBNEUsMkNBQTJDLG9FQUFvRSxLQUFLLDRFQUE0RSwyQ0FBMkMsb0VBQW9FLEtBQUssNEVBQTRFLGlEQUFpRCxtQ0FBbUMsK0RBQStELHdCQUF3Qix3QkFBd0IseUJBQXlCLHdCQUF3Qiw0Q0FBNEMsYUFBYSxnRUFBZ0UsNENBQTRDLHFEQUFxRCx5QkFBeUIsdUJBQXVCLDBCQUEwQix5QkFBeUIsd0ZBQXdGLFdBQVcsK0NBQStDLG1EQUFtRCx1Q0FBdUMsOERBQThELHNDQUFzQyw2Q0FBNkMseURBQXlELGlEQUFpRCwyREFBMkQsK0VBQStFLG1CQUFtQixJQUFJLGdCQUFnQiw0RUFBNEUsNkJBQTZCLElBQUksZ0JBQWdCLG9FQUFvRSw2QkFBNkIsSUFBSSxnQkFBZ0IsMk5BQTJOLHlCQUF5Qiw2QkFBNkIsb0RBQW9ELG9CQUFvQixvQkFBb0IscUJBQXFCLGtCQUFrQixrQkFBa0IsT0FBTyxxREFBcUQsc0NBQXNDLDBDQUEwQyx5QkFBeUIsaUJBQWlCLG9CQUFvQixrQkFBa0Isb0ZBQW9GLDhDQUE4QywrREFBK0QsNEVBQTRFLHFEQUFxRCw4REFBOEQsSUFBSSx1QkFBdUIsNENBQTRDLGtDQUFrQywyQkFBMkIsZ0NBQWdDLHVDQUF1QyxnS0FBZ0ssMkJBQTJCLHVDQUF1QyxvREFBb0QsSUFBSSx3Q0FBd0MseUVBQXlFLElBQUksc0NBQXNDLDRDQUE0QyxJQUFJLHNDQUFzQyxxQ0FBcUMsaURBQWlELDhEQUE4RCxJQUFJLGtEQUFrRCw2RkFBNkYsSUFBSSxnREFBZ0Qsc0RBQXNELElBQUksc0NBQXNDLHFDQUFxQyxpREFBaUQsOERBQThELElBQUksa0RBQWtELDZGQUE2RixJQUFJLGdEQUFnRCxzREFBc0QsSUFBSSxnQkFBZ0Isd0NBQXdDLHdDQUF3Qyx5S0FBeUsseUdBQXlHLGtNQUFrTSx3RkFBd0YsK0hBQStILGtKQUFrSiwrRkFBK0YsOEVBQThFLHNLQUFzSyxnQ0FBZ0MsNENBQTRDLG9CQUFvQixvQkFBb0IscUJBQXFCLGtCQUFrQixrQkFBa0IsT0FBTyw2Q0FBNkMsc0NBQXNDLGtDQUFrQyx5QkFBeUIsaUJBQWlCLG9CQUFvQixrQkFBa0IsbUVBQW1FLG1CQUFtQix1Q0FBdUMsS0FBSyxLQUFLLFlBQVksb0ZBQW9GLG9EQUFvRCxFQUFFLHFEQUFxRCxlQUFlLG1IQUFtSCxFQUFFLDZIQUE2SCxFQUFFLDhIQUE4SCxvQ0FBb0Msa0RBQWtELHNCQUFzQjtBQUNqaVAiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9ncHUvZnJ1Y2h0ZXJtYW5TaGFkZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZnJ1Y2h0ZXJtYW5Db2RlID0gYFxuaW1wb3J0IHsgZ2xvYmFsSW52b2NhdGlvbklEIH0gZnJvbSAnZy13ZWJncHUnO1xuY29uc3QgTUFYX0VER0VfUEVSX1ZFUlRFWDtcbmNvbnN0IFZFUlRFWF9DT1VOVDtcbkBudW10aHJlYWRzKDEsIDEsIDEpXG5jbGFzcyBGcnVjaHRlcm1hbiB7XG4gIEBpbiBAb3V0XG4gIHVfRGF0YTogdmVjNFtdO1xuICBAaW5cbiAgdV9LOiBmbG9hdDtcbiAgQGluXG4gIHVfSzI6IGZsb2F0O1xuICBcbiAgQGluXG4gIHVfQ2VudGVyOiB2ZWMyO1xuICBAaW5cbiAgdV9HcmF2aXR5OiBmbG9hdDtcbiAgQGluXG4gIHVfQ2x1c3RlckdyYXZpdHk6IGZsb2F0O1xuICBAaW5cbiAgdV9TcGVlZDogZmxvYXQ7XG4gIEBpblxuICB1X01heERpc3BsYWNlOiBmbG9hdDtcbiAgQGluXG4gIHVfQ2x1c3RlcmluZzogZmxvYXQ7XG4gIEBpblxuICB1X0F0dHJpYnV0ZUFycmF5OiB2ZWM0W107XG4gIEBpblxuICB1X0NsdXN0ZXJDZW50ZXJzOiB2ZWM0W107XG4gIGNhbGNSZXB1bHNpdmUoaTogaW50LCBjdXJyZW50Tm9kZTogdmVjNCk6IHZlYzIge1xuICAgIGxldCBkeCA9IDAsIGR5ID0gMDtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IFZFUlRFWF9DT1VOVDsgaisrKSB7XG4gICAgICBpZiAoaSAhPSBqKSB7XG4gICAgICAgIGNvbnN0IG5leHROb2RlID0gdGhpcy51X0RhdGFbal07XG4gICAgICAgIGNvbnN0IHhEaXN0ID0gY3VycmVudE5vZGVbMF0gLSBuZXh0Tm9kZVswXTtcbiAgICAgICAgY29uc3QgeURpc3QgPSBjdXJyZW50Tm9kZVsxXSAtIG5leHROb2RlWzFdO1xuICAgICAgICBjb25zdCBkaXN0ID0gKHhEaXN0ICogeERpc3QgKyB5RGlzdCAqIHlEaXN0KSArIDAuMDE7XG4gICAgICAgIGxldCBwYXJhbSA9IHRoaXMudV9LMiAvIGRpc3Q7XG4gICAgICAgIFxuICAgICAgICBpZiAoZGlzdCA+IDAuMCkge1xuICAgICAgICAgIGR4ICs9IHBhcmFtICogeERpc3Q7XG4gICAgICAgICAgZHkgKz0gcGFyYW0gKiB5RGlzdDtcbiAgICAgICAgICBpZiAoeERpc3QgPT0gMCAmJiB5RGlzdCA9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBzaWduID0gaSA8IGogPyAxIDogLTE7XG4gICAgICAgICAgICBkeCArPSBwYXJhbSAqIHNpZ247XG4gICAgICAgICAgICBkeSArPSBwYXJhbSAqIHNpZ247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbZHgsIGR5XTtcbiAgfVxuICBjYWxjR3Jhdml0eShjdXJyZW50Tm9kZTogdmVjNCwgbm9kZUF0dHJpYnV0ZXM6IHZlYzQpOiB2ZWMyIHsgLy8gXG4gICAgbGV0IGR4ID0gMCwgZHkgPSAwO1xuICAgIGNvbnN0IHZ4ID0gY3VycmVudE5vZGVbMF0gLSB0aGlzLnVfQ2VudGVyWzBdO1xuICAgIGNvbnN0IHZ5ID0gY3VycmVudE5vZGVbMV0gLSB0aGlzLnVfQ2VudGVyWzFdO1xuICAgIGNvbnN0IGdmID0gMC4wMSAqIHRoaXMudV9LICogdGhpcy51X0dyYXZpdHk7XG4gICAgZHggPSBnZiAqIHZ4O1xuICAgIGR5ID0gZ2YgKiB2eTtcbiAgICBpZiAodGhpcy51X0NsdXN0ZXJpbmcgPT0gMSkge1xuICAgICAgY29uc3QgY2x1c3RlcklkeCA9IGludChub2RlQXR0cmlidXRlc1swXSk7XG4gICAgICBjb25zdCBjZW50ZXIgPSB0aGlzLnVfQ2x1c3RlckNlbnRlcnNbY2x1c3RlcklkeF07XG4gICAgICBjb25zdCBjdnggPSBjdXJyZW50Tm9kZVswXSAtIGNlbnRlclswXTtcbiAgICAgIGNvbnN0IGN2eSA9IGN1cnJlbnROb2RlWzFdIC0gY2VudGVyWzFdO1xuICAgICAgY29uc3QgZGlzdCA9IHNxcnQoY3Z4ICogY3Z4ICsgY3Z5ICogY3Z5KSArIDAuMDE7XG4gICAgICBjb25zdCBwYXJtYSA9IHRoaXMudV9LICogdGhpcy51X0NsdXN0ZXJHcmF2aXR5IC8gZGlzdDtcbiAgICAgIGR4ICs9IHBhcm1hICogY3Z4O1xuICAgICAgZHkgKz0gcGFybWEgKiBjdnk7XG4gICAgfVxuICAgIHJldHVybiBbZHgsIGR5XTtcbiAgfVxuICBjYWxjQXR0cmFjdGl2ZShpOiBpbnQsIGN1cnJlbnROb2RlOiB2ZWM0KTogdmVjMiB7XG4gICAgbGV0IGR4ID0gMCwgZHkgPSAwO1xuICAgIGNvbnN0IGFycl9vZmZzZXQgPSBpbnQoZmxvb3IoY3VycmVudE5vZGVbMl0gKyAwLjUpKTtcbiAgICBjb25zdCBsZW5ndGggPSBpbnQoZmxvb3IoY3VycmVudE5vZGVbM10gKyAwLjUpKTtcbiAgICBjb25zdCBub2RlX2J1ZmZlcjogdmVjNDtcbiAgICBmb3IgKGxldCBwID0gMDsgcCA8IE1BWF9FREdFX1BFUl9WRVJURVg7IHArKykge1xuICAgICAgaWYgKHAgPj0gbGVuZ3RoKSBicmVhaztcbiAgICAgIGNvbnN0IGFycl9pZHggPSBhcnJfb2Zmc2V0ICsgcDtcbiAgICAgIC8vIHdoZW4gYXJyX2lkeCAlIDQgPT0gMCB1cGRhdGUgY3VycmVudE5vZGVkeF9idWZmZXJcbiAgICAgIGNvbnN0IGJ1Zl9vZmZzZXQgPSBhcnJfaWR4IC0gYXJyX2lkeCAvIDQgKiA0O1xuICAgICAgaWYgKHAgPT0gMCB8fCBidWZfb2Zmc2V0ID09IDApIHtcbiAgICAgICAgbm9kZV9idWZmZXIgPSB0aGlzLnVfRGF0YVtpbnQoYXJyX2lkeCAvIDQpXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZsb2F0X2ogPSBidWZfb2Zmc2V0ID09IDAgPyBub2RlX2J1ZmZlclswXSA6XG4gICAgICAgICAgICAgICAgICAgICAgYnVmX29mZnNldCA9PSAxID8gbm9kZV9idWZmZXJbMV0gOlxuICAgICAgICAgICAgICAgICAgICAgIGJ1Zl9vZmZzZXQgPT0gMiA/IG5vZGVfYnVmZmVyWzJdIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlX2J1ZmZlclszXTtcbiAgICAgIGNvbnN0IG5leHROb2RlID0gdGhpcy51X0RhdGFbaW50KGZsb2F0X2opXTtcbiAgICAgIGNvbnN0IHhEaXN0ID0gY3VycmVudE5vZGVbMF0gLSBuZXh0Tm9kZVswXTtcbiAgICAgIGNvbnN0IHlEaXN0ID0gY3VycmVudE5vZGVbMV0gLSBuZXh0Tm9kZVsxXTtcbiAgICAgIGNvbnN0IGRpc3QgPSBzcXJ0KHhEaXN0ICogeERpc3QgKyB5RGlzdCAqIHlEaXN0KSArIDAuMDE7XG4gICAgICBsZXQgYXR0cmFjdGl2ZUYgPSBkaXN0IC8gdGhpcy51X0s7XG4gICAgXG4gICAgICBpZiAoZGlzdCA+IDAuMCkge1xuICAgICAgICBkeCAtPSB4RGlzdCAqIGF0dHJhY3RpdmVGO1xuICAgICAgICBkeSAtPSB5RGlzdCAqIGF0dHJhY3RpdmVGO1xuICAgICAgICBpZiAoeERpc3QgPT0gMCAmJiB5RGlzdCA9PSAwKSB7XG4gICAgICAgICAgY29uc3Qgc2lnbiA9IGkgPCBpbnQoZmxvYXRfaikgPyAxIDogLTE7XG4gICAgICAgICAgZHggLT0gc2lnbiAqIGF0dHJhY3RpdmVGO1xuICAgICAgICAgIGR5IC09IHNpZ24gKiBhdHRyYWN0aXZlRjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW2R4LCBkeV07XG4gIH1cbiAgQG1haW5cbiAgY29tcHV0ZSgpIHtcbiAgICBjb25zdCBpID0gZ2xvYmFsSW52b2NhdGlvbklELng7XG4gICAgY29uc3QgY3VycmVudE5vZGUgPSB0aGlzLnVfRGF0YVtpXTtcbiAgICBsZXQgZHggPSAwLCBkeSA9IDA7XG4gICAgaWYgKGkgPj0gVkVSVEVYX0NPVU5UKSB7XG4gICAgICB0aGlzLnVfRGF0YVtpXSA9IGN1cnJlbnROb2RlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFtncmF2aXR5LCBmeCwgZnksIDBdXG4gICAgY29uc3Qgbm9kZUF0dHJpYnV0ZXMgPSB0aGlzLnVfQXR0cmlidXRlQXJyYXlbaV07XG5cbiAgICBpZiAobm9kZUF0dHJpYnV0ZXNbMV0gIT0gMCAmJiBub2RlQXR0cmlidXRlc1syXSAhPSAwKSB7XG4gICAgICAvLyB0aGUgbm9kZSBpcyBmaXhlZFxuICAgICAgdGhpcy51X0RhdGFbaV0gPSBbXG4gICAgICAgIG5vZGVBdHRyaWJ1dGVzWzFdLFxuICAgICAgICBub2RlQXR0cmlidXRlc1syXSxcbiAgICAgICAgY3VycmVudE5vZGVbMl0sXG4gICAgICAgIGN1cnJlbnROb2RlWzNdXG4gICAgICBdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHJlcHVsc2l2ZVxuICAgIGNvbnN0IHJlcHVsc2l2ZSA9IHRoaXMuY2FsY1JlcHVsc2l2ZShpLCBjdXJyZW50Tm9kZSk7XG4gICAgZHggKz0gcmVwdWxzaXZlWzBdO1xuICAgIGR5ICs9IHJlcHVsc2l2ZVsxXTtcbiAgICAvLyBhdHRyYWN0aXZlXG4gICAgY29uc3QgYXR0cmFjdGl2ZSA9IHRoaXMuY2FsY0F0dHJhY3RpdmUoaSwgY3VycmVudE5vZGUpO1xuICAgIGR4ICs9IGF0dHJhY3RpdmVbMF07XG4gICAgZHkgKz0gYXR0cmFjdGl2ZVsxXTtcbiAgICAvLyBncmF2aXR5XG4gICAgY29uc3QgZ3Jhdml0eSA9IHRoaXMuY2FsY0dyYXZpdHkoY3VycmVudE5vZGUsIG5vZGVBdHRyaWJ1dGVzKTtcbiAgICBkeCAtPSBncmF2aXR5WzBdO1xuICAgIGR5IC09IGdyYXZpdHlbMV07XG4gICAgLy8gc3BlZWRcbiAgICBkeCAqPSB0aGlzLnVfU3BlZWQ7XG4gICAgZHkgKj0gdGhpcy51X1NwZWVkO1xuXG4gICAgLy8gbW92ZVxuICAgIGNvbnN0IGRpc3RMZW5ndGggPSBzcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbiAgICBpZiAoZGlzdExlbmd0aCA+IDAuMCkge1xuICAgICAgY29uc3QgbGltaXRlZERpc3QgPSBtaW4odGhpcy51X01heERpc3BsYWNlICogdGhpcy51X1NwZWVkLCBkaXN0TGVuZ3RoKTtcbiAgICAgIHRoaXMudV9EYXRhW2ldID0gW1xuICAgICAgICBjdXJyZW50Tm9kZVswXSArIGR4IC8gZGlzdExlbmd0aCAqIGxpbWl0ZWREaXN0LFxuICAgICAgICBjdXJyZW50Tm9kZVsxXSArIGR5IC8gZGlzdExlbmd0aCAqIGxpbWl0ZWREaXN0LFxuICAgICAgICBjdXJyZW50Tm9kZVsyXSxcbiAgICAgICAgY3VycmVudE5vZGVbM11cbiAgICAgIF07XG4gICAgfVxuICB9XG59XG5gO1xuZXhwb3J0IGNvbnN0IGZydWNodGVybWFuQnVuZGxlID0gYHtcInNoYWRlcnNcIjp7XCJXR1NMXCI6XCJpbXBvcnQgXFxcXFwiR0xTTC5zdGQuNDUwXFxcXFwiIGFzIHN0ZDtcXFxcblxcXFxuXFxcXG4jIHZhciBnV2ViR1BVRGVidWcgOiBib29sID0gZmFsc2U7XFxcXG4jIHZhciBnV2ViR1BVRGVidWdPdXRwdXQgOiB2ZWM0PGYzMj4gPSB2ZWM0PGYzMj4oMC4wKTtcXFxcblxcXFxuW1tidWlsdGluIGdsb2JhbF9pbnZvY2F0aW9uX2lkXV0gdmFyPGluPiBnbG9iYWxJbnZvY2F0aW9uSUQgOiB2ZWMzPHUzMj47XFxcXG4jIFtbYnVpbHRpbiB3b3JrX2dyb3VwX3NpemVdXSB2YXI8aW4+IHdvcmtHcm91cFNpemUgOiB2ZWMzPHUzMj47XFxcXG4jIFtbYnVpbHRpbiB3b3JrX2dyb3VwX2lkXV0gdmFyPGluPiB3b3JrR3JvdXBJRCA6IHZlYzM8dTMyPjtcXFxcbltbYnVpbHRpbiBsb2NhbF9pbnZvY2F0aW9uX2lkXV0gdmFyPGluPiBsb2NhbEludm9jYXRpb25JRCA6IHZlYzM8dTMyPjtcXFxcbiMgW1tidWlsdGluIG51bV93b3JrX2dyb3Vwc11dIHZhcjxpbj4gbnVtV29ya0dyb3VwcyA6IHZlYzM8dTMyPjtcXFxcbltbYnVpbHRpbiBsb2NhbF9pbnZvY2F0aW9uX2lkeF1dIHZhcjxpbj4gbG9jYWxJbnZvY2F0aW9uSW5kZXggOiB1MzI7XFxcXG5cXFxcbnR5cGUgR1dlYkdQVVBhcmFtcyA9IFtbYmxvY2tdXSBzdHJ1Y3Qge1xcXFxuICBbW29mZnNldCAwXV0gdV9LIDogZjMyO1xcXFxuICBbW29mZnNldCA0XV0gdV9LMiA6IGYzMjtcXFxcbiAgW1tvZmZzZXQgOF1dIHVfQ2VudGVyIDogdmVjMjxmMzI+O1xcXFxuICBbW29mZnNldCAxNl1dIHVfR3Jhdml0eSA6IGYzMjtcXFxcbiAgW1tvZmZzZXQgMjBdXSB1X0NsdXN0ZXJHcmF2aXR5IDogZjMyO1xcXFxuICBbW29mZnNldCAyNF1dIHVfU3BlZWQgOiBmMzI7XFxcXG4gIFtbb2Zmc2V0IDI4XV0gdV9NYXhEaXNwbGFjZSA6IGYzMjtcXFxcbiAgW1tvZmZzZXQgMzJdXSB1X0NsdXN0ZXJpbmcgOiBmMzI7XFxcXG59O1xcXFxuW1tiaW5kaW5nIDAsIHNldCAwXV0gdmFyPHVuaWZvcm0+IGdXZWJHUFVVbmlmb3JtUGFyYW1zIDogR1dlYkdQVVBhcmFtcztcXFxcbnR5cGUgR1dlYkdQVUJ1ZmZlcjAgPSBbW2Jsb2NrXV0gc3RydWN0IHtcXFxcbiAgW1tvZmZzZXQgMF1dIHVfRGF0YSA6IFtbc3RyaWRlIDE2XV0gYXJyYXk8dmVjNDxmMzI+PjtcXFxcbn07XFxcXG5bW2JpbmRpbmcgMSwgc2V0IDBdXSB2YXI8c3RvcmFnZV9idWZmZXI+IGdXZWJHUFVCdWZmZXIwIDogR1dlYkdQVUJ1ZmZlcjA7XFxcXG50eXBlIEdXZWJHUFVCdWZmZXIxID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X0F0dHJpYnV0ZUFycmF5IDogW1tzdHJpZGUgMTZdXSBhcnJheTx2ZWM0PGYzMj4+O1xcXFxufTtcXFxcbltbYmluZGluZyAyLCBzZXQgMF1dIHZhcjxzdG9yYWdlX2J1ZmZlcj4gZ1dlYkdQVUJ1ZmZlcjEgOiBHV2ViR1BVQnVmZmVyMTtcXFxcbnR5cGUgR1dlYkdQVUJ1ZmZlcjIgPSBbW2Jsb2NrXV0gc3RydWN0IHtcXFxcbiAgW1tvZmZzZXQgMF1dIHVfQ2x1c3RlckNlbnRlcnMgOiBbW3N0cmlkZSAxNl1dIGFycmF5PHZlYzQ8ZjMyPj47XFxcXG59O1xcXFxuW1tiaW5kaW5nIDMsIHNldCAwXV0gdmFyPHN0b3JhZ2VfYnVmZmVyPiBnV2ViR1BVQnVmZmVyMiA6IEdXZWJHUFVCdWZmZXIyO1xcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcbmZuIGNhbGNSZXB1bHNpdmUoaSA6IGkzMiwgY3VycmVudE5vZGUgOiB2ZWM0PGYzMj4pIC0+IHZlYzI8ZjMyPiB7dmFyIGR4IDogZjMyID0gMC4wO1xcXFxudmFyIGR5IDogZjMyID0gMC4wO1xcXFxuZm9yICh2YXIgaiA6IGkzMiA9IDA7IGogPCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVDsgaiA9IGogKyAxKSB7aWYgKGkgIT0gaikge3ZhciBuZXh0Tm9kZSA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtqXTtcXFxcbnZhciB4RGlzdCA6IGYzMiA9IGN1cnJlbnROb2RlLnggLSBuZXh0Tm9kZS54O1xcXFxudmFyIHlEaXN0IDogZjMyID0gY3VycmVudE5vZGUueSAtIG5leHROb2RlLnk7XFxcXG52YXIgZGlzdCA6IGYzMiA9ICgoeERpc3QgKiB4RGlzdCkgKyAoeURpc3QgKiB5RGlzdCkpICsgMC4wMTtcXFxcbnZhciBwYXJhbSA6IGYzMiA9IGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfSzIgLyBkaXN0O1xcXFxuaWYgKGRpc3QgPiAwLjApIHtkeCA9IGR4ICsgcGFyYW0gKiB4RGlzdDtcXFxcbmR5ID0gZHkgKyBwYXJhbSAqIHlEaXN0O1xcXFxuaWYgKCh4RGlzdCA9PSAwLjApICYmICh5RGlzdCA9PSAwLjApKSB7dmFyIHNpZ24gOiBmMzIgPSBzZWxlY3QoMS4wLCAtMS4wLCBpIDwgaik7XFxcXG5keCA9IGR4ICsgcGFyYW0gKiBzdGQ6OnNpZ247XFxcXG5keSA9IGR5ICsgcGFyYW0gKiBzdGQ6OnNpZ247fX19fVxcXFxucmV0dXJuIHZlYzI8ZjMyPihkeCwgZHkpO31cXFxcbmZuIGNhbGNHcmF2aXR5KGN1cnJlbnROb2RlIDogdmVjNDxmMzI+LCBub2RlQXR0cmlidXRlcyA6IHZlYzQ8ZjMyPikgLT4gdmVjMjxmMzI+IHt2YXIgZHggOiBmMzIgPSAwLjA7XFxcXG52YXIgZHkgOiBmMzIgPSAwLjA7XFxcXG52YXIgdnggOiBmMzIgPSBjdXJyZW50Tm9kZS54IC0gZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9DZW50ZXIueDtcXFxcbnZhciB2eSA6IGYzMiA9IGN1cnJlbnROb2RlLnkgLSBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0NlbnRlci55O1xcXFxudmFyIGdmIDogZjMyID0gKDAuMDEgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0spICogZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9HcmF2aXR5O1xcXFxuZHggPSBnZiAqIHZ4O1xcXFxuZHkgPSBnZiAqIHZ5O1xcXFxuaWYgKGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfQ2x1c3RlcmluZyA9PSAxLjApIHt2YXIgY2x1c3RlcklkeCA6IGkzMiA9IGkzMihub2RlQXR0cmlidXRlcy54KTtcXFxcbnZhciBjZW50ZXIgOiB2ZWM0PGYzMj4gPSBnV2ViR1BVQnVmZmVyMi51X0NsdXN0ZXJDZW50ZXJzW2NsdXN0ZXJJZHhdO1xcXFxudmFyIGN2eCA6IGYzMiA9IGN1cnJlbnROb2RlLnggLSBjZW50ZXIueDtcXFxcbnZhciBjdnkgOiBmMzIgPSBjdXJyZW50Tm9kZS55IC0gY2VudGVyLnk7XFxcXG52YXIgZGlzdCA6IGYzMiA9IHN0ZDo6c3FydCgoY3Z4ICogY3Z4KSArIChjdnkgKiBjdnkpKSArIDAuMDE7XFxcXG52YXIgcGFybWEgOiBmMzIgPSAoZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9LICogZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9DbHVzdGVyR3Jhdml0eSkgLyBkaXN0O1xcXFxuZHggPSBkeCArIHBhcm1hICogY3Z4O1xcXFxuZHkgPSBkeSArIHBhcm1hICogY3Z5O31cXFxcbnJldHVybiB2ZWMyPGYzMj4oZHgsIGR5KTt9XFxcXG5mbiBjYWxjQXR0cmFjdGl2ZShpIDogaTMyLCBjdXJyZW50Tm9kZSA6IHZlYzQ8ZjMyPikgLT4gdmVjMjxmMzI+IHt2YXIgZHggOiBmMzIgPSAwLjA7XFxcXG52YXIgZHkgOiBmMzIgPSAwLjA7XFxcXG52YXIgYXJyX29mZnNldCA6IGkzMiA9IGkzMihzdGQ6OmZsb29yKGN1cnJlbnROb2RlLnogKyAwLjUpKTtcXFxcbnZhciBsZW5ndGggOiBpMzIgPSBpMzIoc3RkOjpmbG9vcihjdXJyZW50Tm9kZS53ICsgMC41KSk7XFxcXG52YXIgbm9kZV9idWZmZXIgOiB2ZWM0PGYzMj47XFxcXG5mb3IgKHZhciBwIDogaTMyID0gMDsgcCA8IF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fTUFYX0VER0VfUEVSX1ZFUlRFWDsgcCA9IHAgKyAxKSB7aWYgKHAgPj0gbGVuZ3RoKSB7YnJlYWs7fVxcXFxudmFyIGFycl9pZHggOiBpMzIgPSBhcnJfb2Zmc2V0ICsgaTMyKHApO1xcXFxudmFyIGJ1Zl9vZmZzZXQgOiBpMzIgPSBhcnJfaWR4IC0gKChhcnJfaWR4IC8gNCkgKiA0KTtcXFxcbmlmICgocCA9PSAwKSB8fCAoYnVmX29mZnNldCA9PSAwKSkge25vZGVfYnVmZmVyID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2kzMihhcnJfaWR4IC8gNCldO31cXFxcbnZhciBmbG9hdF9qIDogZjMyID0gc2VsZWN0KG5vZGVfYnVmZmVyLngsIHNlbGVjdChub2RlX2J1ZmZlci55LCBzZWxlY3Qobm9kZV9idWZmZXIueiwgbm9kZV9idWZmZXIudywgYnVmX29mZnNldCA9PSAyKSwgYnVmX29mZnNldCA9PSAxKSwgYnVmX29mZnNldCA9PSAwKTtcXFxcbnZhciBuZXh0Tm9kZSA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtpMzIoZmxvYXRfaildO1xcXFxudmFyIHhEaXN0IDogZjMyID0gY3VycmVudE5vZGUueCAtIG5leHROb2RlLng7XFxcXG52YXIgeURpc3QgOiBmMzIgPSBjdXJyZW50Tm9kZS55IC0gbmV4dE5vZGUueTtcXFxcbnZhciBkaXN0IDogZjMyID0gc3RkOjpzcXJ0KCh4RGlzdCAqIHhEaXN0KSArICh5RGlzdCAqIHlEaXN0KSkgKyAwLjAxO1xcXFxudmFyIGF0dHJhY3RpdmVGIDogZjMyID0gZGlzdCAvIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfSztcXFxcbmlmIChkaXN0ID4gMC4wKSB7ZHggPSBkeCAtIHhEaXN0ICogYXR0cmFjdGl2ZUY7XFxcXG5keSA9IGR5IC0geURpc3QgKiBhdHRyYWN0aXZlRjtcXFxcbmlmICgoeERpc3QgPT0gMC4wKSAmJiAoeURpc3QgPT0gMC4wKSkge3ZhciBzaWduIDogZjMyID0gc2VsZWN0KDEuMCwgLTEuMCwgaSA8IGkzMihmbG9hdF9qKSk7XFxcXG5keCA9IGR4IC0gc3RkOjpzaWduICogYXR0cmFjdGl2ZUY7XFxcXG5keSA9IGR5IC0gc3RkOjpzaWduICogYXR0cmFjdGl2ZUY7fX19XFxcXG5yZXR1cm4gdmVjMjxmMzI+KGR4LCBkeSk7fVxcXFxuZm4gbWFpbigpIC0+IHZvaWQge3ZhciBpIDogaTMyID0gZ2xvYmFsSW52b2NhdGlvbklELng7XFxcXG52YXIgY3VycmVudE5vZGUgOiB2ZWM0PGYzMj4gPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbaV07XFxcXG52YXIgZHggOiBmMzIgPSAwLjA7XFxcXG52YXIgZHkgOiBmMzIgPSAwLjA7XFxcXG5pZiAoaSA+PSBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVCkge2dXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXSA9IGN1cnJlbnROb2RlO1xcXFxucmV0dXJuIDt9XFxcXG52YXIgbm9kZUF0dHJpYnV0ZXMgOiB2ZWM0PGYzMj4gPSBnV2ViR1BVQnVmZmVyMS51X0F0dHJpYnV0ZUFycmF5W2ldO1xcXFxuaWYgKChub2RlQXR0cmlidXRlcy55ICE9IDAuMCkgJiYgKG5vZGVBdHRyaWJ1dGVzLnogIT0gMC4wKSkge2dXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXSA9IHZlYzQ8ZjMyPihub2RlQXR0cmlidXRlcy55LCBub2RlQXR0cmlidXRlcy56LCBjdXJyZW50Tm9kZS56LCBjdXJyZW50Tm9kZS53KTtcXFxcbnJldHVybiA7fVxcXFxudmFyIHJlcHVsc2l2ZSA6IHZlYzI8ZjMyPiA9IGNhbGNSZXB1bHNpdmUoaSwgY3VycmVudE5vZGUpO1xcXFxuZHggPSBkeCArIHJlcHVsc2l2ZS54O1xcXFxuZHkgPSBkeSArIHJlcHVsc2l2ZS55O1xcXFxudmFyIGF0dHJhY3RpdmUgOiB2ZWMyPGYzMj4gPSBjYWxjQXR0cmFjdGl2ZShpLCBjdXJyZW50Tm9kZSk7XFxcXG5keCA9IGR4ICsgYXR0cmFjdGl2ZS54O1xcXFxuZHkgPSBkeSArIGF0dHJhY3RpdmUueTtcXFxcbnZhciBncmF2aXR5IDogdmVjMjxmMzI+ID0gY2FsY0dyYXZpdHkoY3VycmVudE5vZGUsIG5vZGVBdHRyaWJ1dGVzKTtcXFxcbmR4ID0gZHggLSBncmF2aXR5Lng7XFxcXG5keSA9IGR5IC0gZ3Jhdml0eS55O1xcXFxuZHggPSBkeCAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfU3BlZWQ7XFxcXG5keSA9IGR5ICogZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9TcGVlZDtcXFxcbnZhciBkaXN0TGVuZ3RoIDogZjMyID0gc3RkOjpzcXJ0KChkeCAqIGR4KSArIChkeSAqIGR5KSk7XFxcXG5pZiAoZGlzdExlbmd0aCA+IDAuMCkge3ZhciBsaW1pdGVkRGlzdCA6IGYzMiA9IHN0ZDo6bWluKGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfTWF4RGlzcGxhY2UgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X1NwZWVkLCBkaXN0TGVuZ3RoKTtcXFxcbmdXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXSA9IHZlYzQ8ZjMyPihjdXJyZW50Tm9kZS54ICsgKChkeCAvIGRpc3RMZW5ndGgpICogbGltaXRlZERpc3QpLCBjdXJyZW50Tm9kZS55ICsgKChkeSAvIGRpc3RMZW5ndGgpICogbGltaXRlZERpc3QpLCBjdXJyZW50Tm9kZS56LCBjdXJyZW50Tm9kZS53KTt9XFxcXG5yZXR1cm47fVxcXFxuXFxcXG5lbnRyeV9wb2ludCBjb21wdXRlIGFzIFxcXFxcIm1haW5cXFxcXCIgPSBtYWluO1xcXFxuXCIsXCJHTFNMNDUwXCI6XCJcXFxcblxcXFxuXFxcXG5ib29sIGdXZWJHUFVEZWJ1ZyA9IGZhbHNlO1xcXFxudmVjNCBnV2ViR1BVRGVidWdPdXRwdXQgPSB2ZWM0KDAuMCk7XFxcXG5cXFxcbml2ZWMzIGdsb2JhbEludm9jYXRpb25JRCA9IGl2ZWMzKGdsX0dsb2JhbEludm9jYXRpb25JRCk7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwxLDEpO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyhnbF9Xb3JrR3JvdXBJRCk7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGdsX0xvY2FsSW52b2NhdGlvbklEKTtcXFxcbml2ZWMzIG51bVdvcmtHcm91cHMgPSBpdmVjMyhnbF9OdW1Xb3JrR3JvdXBzKTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JbmRleCA9IGludChnbF9Mb2NhbEludm9jYXRpb25JbmRleCk7XFxcXG5cXFxcbmxheW91dChzdGQxNDAsIHNldCA9IDAsIGJpbmRpbmcgPSAwKSB1bmlmb3JtIEdXZWJHUFVQYXJhbXMge1xcXFxuICBmbG9hdCB1X0s7XFxcXG4gIGZsb2F0IHVfSzI7XFxcXG4gIHZlYzIgdV9DZW50ZXI7XFxcXG4gIGZsb2F0IHVfR3Jhdml0eTtcXFxcbiAgZmxvYXQgdV9DbHVzdGVyR3Jhdml0eTtcXFxcbiAgZmxvYXQgdV9TcGVlZDtcXFxcbiAgZmxvYXQgdV9NYXhEaXNwbGFjZTtcXFxcbiAgZmxvYXQgdV9DbHVzdGVyaW5nO1xcXFxufSBnV2ViR1BVVW5pZm9ybVBhcmFtcztcXFxcbmxheW91dChzdGQ0MzAsIHNldCA9IDAsIGJpbmRpbmcgPSAxKSBidWZmZXIgICBHV2ViR1BVQnVmZmVyMCB7XFxcXG4gIHZlYzQgdV9EYXRhW107XFxcXG59IGdXZWJHUFVCdWZmZXIwO1xcXFxuXFxcXG5sYXlvdXQoc3RkNDMwLCBzZXQgPSAwLCBiaW5kaW5nID0gMikgYnVmZmVyIHJlYWRvbmx5ICBHV2ViR1BVQnVmZmVyMSB7XFxcXG4gIHZlYzQgdV9BdHRyaWJ1dGVBcnJheVtdO1xcXFxufSBnV2ViR1BVQnVmZmVyMTtcXFxcblxcXFxubGF5b3V0KHN0ZDQzMCwgc2V0ID0gMCwgYmluZGluZyA9IDMpIGJ1ZmZlciByZWFkb25seSAgR1dlYkdQVUJ1ZmZlcjIge1xcXFxuICB2ZWM0IHVfQ2x1c3RlckNlbnRlcnNbXTtcXFxcbn0gZ1dlYkdQVUJ1ZmZlcjI7XFxcXG5cXFxcblxcXFxuXFxcXG4jZGVmaW5lIE1BWF9FREdFX1BFUl9WRVJURVggX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19NQVhfRURHRV9QRVJfVkVSVEVYXFxcXG4jZGVmaW5lIFZFUlRFWF9DT1VOVCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVFxcXFxubGF5b3V0IChcXFxcbiAgbG9jYWxfc2l6ZV94ID0gMSxcXFxcbiAgbG9jYWxfc2l6ZV95ID0gMSxcXFxcbiAgbG9jYWxfc2l6ZV96ID0gMVxcXFxuKSBpbjtcXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG52ZWMyIGNhbGNSZXB1bHNpdmUoaW50IGksIHZlYzQgY3VycmVudE5vZGUpIHtmbG9hdCBkeCA9IDAuMDtcXFxcbmZsb2F0IGR5ID0gMC4wO1xcXFxuZm9yIChpbnQgaiA9IDA7IGogPCBWRVJURVhfQ09VTlQ7IGorKykge2lmIChpICE9IGopIHt2ZWM0IG5leHROb2RlID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2pdO1xcXFxuZmxvYXQgeERpc3QgPSBjdXJyZW50Tm9kZS54IC0gbmV4dE5vZGUueDtcXFxcbmZsb2F0IHlEaXN0ID0gY3VycmVudE5vZGUueSAtIG5leHROb2RlLnk7XFxcXG5mbG9hdCBkaXN0ID0gKCh4RGlzdCAqIHhEaXN0KSArICh5RGlzdCAqIHlEaXN0KSkgKyAwLjAxO1xcXFxuZmxvYXQgcGFyYW0gPSBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0syIC8gZGlzdDtcXFxcbmlmIChkaXN0ID4gMC4wKSB7ZHggKz0gcGFyYW0gKiB4RGlzdDtcXFxcbmR5ICs9IHBhcmFtICogeURpc3Q7XFxcXG5pZiAoKHhEaXN0ID09IDAuMCkgJiYgKHlEaXN0ID09IDAuMCkpIHtmbG9hdCBzaWduID0gKGkgPCBqKSA/ICgxLjApIDogKC0xLjApO1xcXFxuZHggKz0gcGFyYW0gKiBzaWduO1xcXFxuZHkgKz0gcGFyYW0gKiBzaWduO319fX1cXFxcbnJldHVybiB2ZWMyKGR4LCBkeSk7fVxcXFxudmVjMiBjYWxjR3Jhdml0eSh2ZWM0IGN1cnJlbnROb2RlLCB2ZWM0IG5vZGVBdHRyaWJ1dGVzKSB7ZmxvYXQgZHggPSAwLjA7XFxcXG5mbG9hdCBkeSA9IDAuMDtcXFxcbmZsb2F0IHZ4ID0gY3VycmVudE5vZGUueCAtIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfQ2VudGVyLng7XFxcXG5mbG9hdCB2eSA9IGN1cnJlbnROb2RlLnkgLSBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0NlbnRlci55O1xcXFxuZmxvYXQgZ2YgPSAoMC4wMSAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfSykgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0dyYXZpdHk7XFxcXG5keCA9IGdmICogdng7XFxcXG5keSA9IGdmICogdnk7XFxcXG5pZiAoZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9DbHVzdGVyaW5nID09IDEuMCkge2ludCBjbHVzdGVySWR4ID0gaW50KG5vZGVBdHRyaWJ1dGVzLngpO1xcXFxudmVjNCBjZW50ZXIgPSBnV2ViR1BVQnVmZmVyMi51X0NsdXN0ZXJDZW50ZXJzW2NsdXN0ZXJJZHhdO1xcXFxuZmxvYXQgY3Z4ID0gY3VycmVudE5vZGUueCAtIGNlbnRlci54O1xcXFxuZmxvYXQgY3Z5ID0gY3VycmVudE5vZGUueSAtIGNlbnRlci55O1xcXFxuZmxvYXQgZGlzdCA9IHNxcnQoKGN2eCAqIGN2eCkgKyAoY3Z5ICogY3Z5KSkgKyAwLjAxO1xcXFxuZmxvYXQgcGFybWEgPSAoZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9LICogZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9DbHVzdGVyR3Jhdml0eSkgLyBkaXN0O1xcXFxuZHggKz0gcGFybWEgKiBjdng7XFxcXG5keSArPSBwYXJtYSAqIGN2eTt9XFxcXG5yZXR1cm4gdmVjMihkeCwgZHkpO31cXFxcbnZlYzIgY2FsY0F0dHJhY3RpdmUoaW50IGksIHZlYzQgY3VycmVudE5vZGUpIHtmbG9hdCBkeCA9IDAuMDtcXFxcbmZsb2F0IGR5ID0gMC4wO1xcXFxuaW50IGFycl9vZmZzZXQgPSBpbnQoZmxvb3IoY3VycmVudE5vZGUueiArIDAuNSkpO1xcXFxuaW50IGxlbmd0aCA9IGludChmbG9vcihjdXJyZW50Tm9kZS53ICsgMC41KSk7XFxcXG52ZWM0IG5vZGVfYnVmZmVyO1xcXFxuZm9yIChpbnQgcCA9IDA7IHAgPCBNQVhfRURHRV9QRVJfVkVSVEVYOyBwKyspIHtpZiAocCA+PSBsZW5ndGgpIHticmVhazt9XFxcXG5pbnQgYXJyX2lkeCA9IGFycl9vZmZzZXQgKyBpbnQocCk7XFxcXG5pbnQgYnVmX29mZnNldCA9IGFycl9pZHggLSAoKGFycl9pZHggLyA0KSAqIDQpO1xcXFxuaWYgKChwID09IDApIHx8IChidWZfb2Zmc2V0ID09IDApKSB7bm9kZV9idWZmZXIgPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbaW50KGFycl9pZHggLyA0KV07fVxcXFxuZmxvYXQgZmxvYXRfaiA9IChidWZfb2Zmc2V0ID09IDApID8gKG5vZGVfYnVmZmVyLngpIDogKChidWZfb2Zmc2V0ID09IDEpID8gKG5vZGVfYnVmZmVyLnkpIDogKChidWZfb2Zmc2V0ID09IDIpID8gKG5vZGVfYnVmZmVyLnopIDogKG5vZGVfYnVmZmVyLncpKSk7XFxcXG52ZWM0IG5leHROb2RlID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ludChmbG9hdF9qKV07XFxcXG5mbG9hdCB4RGlzdCA9IGN1cnJlbnROb2RlLnggLSBuZXh0Tm9kZS54O1xcXFxuZmxvYXQgeURpc3QgPSBjdXJyZW50Tm9kZS55IC0gbmV4dE5vZGUueTtcXFxcbmZsb2F0IGRpc3QgPSBzcXJ0KCh4RGlzdCAqIHhEaXN0KSArICh5RGlzdCAqIHlEaXN0KSkgKyAwLjAxO1xcXFxuZmxvYXQgYXR0cmFjdGl2ZUYgPSBkaXN0IC8gZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9LO1xcXFxuaWYgKGRpc3QgPiAwLjApIHtkeCAtPSB4RGlzdCAqIGF0dHJhY3RpdmVGO1xcXFxuZHkgLT0geURpc3QgKiBhdHRyYWN0aXZlRjtcXFxcbmlmICgoeERpc3QgPT0gMC4wKSAmJiAoeURpc3QgPT0gMC4wKSkge2Zsb2F0IHNpZ24gPSAoaSA8IGludChmbG9hdF9qKSkgPyAoMS4wKSA6ICgtMS4wKTtcXFxcbmR4IC09IHNpZ24gKiBhdHRyYWN0aXZlRjtcXFxcbmR5IC09IHNpZ24gKiBhdHRyYWN0aXZlRjt9fX1cXFxcbnJldHVybiB2ZWMyKGR4LCBkeSk7fVxcXFxudm9pZCBtYWluKCkge2ludCBpID0gZ2xvYmFsSW52b2NhdGlvbklELng7XFxcXG52ZWM0IGN1cnJlbnROb2RlID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ldO1xcXFxuZmxvYXQgZHggPSAwLjA7XFxcXG5mbG9hdCBkeSA9IDAuMDtcXFxcbmlmIChpID49IFZFUlRFWF9DT1VOVCkge2dXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXSA9IGN1cnJlbnROb2RlO1xcXFxucmV0dXJuIDt9XFxcXG52ZWM0IG5vZGVBdHRyaWJ1dGVzID0gZ1dlYkdQVUJ1ZmZlcjEudV9BdHRyaWJ1dGVBcnJheVtpXTtcXFxcbmlmICgobm9kZUF0dHJpYnV0ZXMueSAhPSAwLjApICYmIChub2RlQXR0cmlidXRlcy56ICE9IDAuMCkpIHtnV2ViR1BVQnVmZmVyMC51X0RhdGFbaV0gPSB2ZWM0KG5vZGVBdHRyaWJ1dGVzLnksIG5vZGVBdHRyaWJ1dGVzLnosIGN1cnJlbnROb2RlLnosIGN1cnJlbnROb2RlLncpO1xcXFxucmV0dXJuIDt9XFxcXG52ZWMyIHJlcHVsc2l2ZSA9IGNhbGNSZXB1bHNpdmUoaSwgY3VycmVudE5vZGUpO1xcXFxuZHggKz0gcmVwdWxzaXZlLng7XFxcXG5keSArPSByZXB1bHNpdmUueTtcXFxcbnZlYzIgYXR0cmFjdGl2ZSA9IGNhbGNBdHRyYWN0aXZlKGksIGN1cnJlbnROb2RlKTtcXFxcbmR4ICs9IGF0dHJhY3RpdmUueDtcXFxcbmR5ICs9IGF0dHJhY3RpdmUueTtcXFxcbnZlYzIgZ3Jhdml0eSA9IGNhbGNHcmF2aXR5KGN1cnJlbnROb2RlLCBub2RlQXR0cmlidXRlcyk7XFxcXG5keCAtPSBncmF2aXR5Lng7XFxcXG5keSAtPSBncmF2aXR5Lnk7XFxcXG5keCAqPSBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X1NwZWVkO1xcXFxuZHkgKj0gZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9TcGVlZDtcXFxcbmZsb2F0IGRpc3RMZW5ndGggPSBzcXJ0KChkeCAqIGR4KSArIChkeSAqIGR5KSk7XFxcXG5pZiAoZGlzdExlbmd0aCA+IDAuMCkge2Zsb2F0IGxpbWl0ZWREaXN0ID0gbWluKGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfTWF4RGlzcGxhY2UgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X1NwZWVkLCBkaXN0TGVuZ3RoKTtcXFxcbmdXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXSA9IHZlYzQoY3VycmVudE5vZGUueCArICgoZHggLyBkaXN0TGVuZ3RoKSAqIGxpbWl0ZWREaXN0KSwgY3VycmVudE5vZGUueSArICgoZHkgLyBkaXN0TGVuZ3RoKSAqIGxpbWl0ZWREaXN0KSwgY3VycmVudE5vZGUueiwgY3VycmVudE5vZGUudyk7fX1cXFxcblwiLFwiR0xTTDEwMFwiOlwiXFxcXG5cXFxcbmZsb2F0IGVwc2lsb24gPSAwLjAwMDAxO1xcXFxudmVjMiBhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGZsb2F0IGFkZHJlc3MxRCwgdmVjMiB0ZXhTaXplKSB7XFxcXG4gIHZlYzIgY29udl9jb25zdCA9IHZlYzIoMS4wIC8gdGV4U2l6ZS54LCAxLjAgLyAodGV4U2l6ZS54ICogdGV4U2l6ZS55KSk7XFxcXG4gIHZlYzIgbm9ybUFkZHIyRCA9IGZsb2F0KGFkZHJlc3MxRCkgKiBjb252X2NvbnN0O1xcXFxuICByZXR1cm4gdmVjMihmcmFjdChub3JtQWRkcjJELnggKyBlcHNpbG9uKSwgbm9ybUFkZHIyRC55KTtcXFxcbn1cXFxcblxcXFxudm9pZCBiYXJyaWVyKCkge31cXFxcbiAgXFxcXG5cXFxcbnVuaWZvcm0gdmVjMiB1X091dHB1dFRleHR1cmVTaXplO1xcXFxudW5pZm9ybSBpbnQgdV9PdXRwdXRUZXhlbENvdW50O1xcXFxudmFyeWluZyB2ZWMyIHZfVGV4Q29vcmQ7XFxcXG5cXFxcbmJvb2wgZ1dlYkdQVURlYnVnID0gZmFsc2U7XFxcXG52ZWM0IGdXZWJHUFVEZWJ1Z091dHB1dCA9IHZlYzQoMC4wKTtcXFxcblxcXFxuI2RlZmluZSBNQVhfRURHRV9QRVJfVkVSVEVYIF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fTUFYX0VER0VfUEVSX1ZFUlRFWFxcXFxuI2RlZmluZSBWRVJURVhfQ09VTlQgX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19WRVJURVhfQ09VTlRcXFxcblxcXFxudW5pZm9ybSBzYW1wbGVyMkQgdV9EYXRhO1xcXFxudW5pZm9ybSB2ZWMyIHVfRGF0YVNpemU7XFxcXG52ZWM0IGdldERhdGF1X0RhdGEodmVjMiBhZGRyZXNzMkQpIHtcXFxcbiAgcmV0dXJuIHZlYzQodGV4dHVyZTJEKHVfRGF0YSwgYWRkcmVzczJEKS5yZ2JhKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfRGF0YShmbG9hdCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0RhdGEoYWRkclRyYW5zbGF0aW9uXzFEdG8yRChhZGRyZXNzMUQsIHVfRGF0YVNpemUpKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfRGF0YShpbnQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9EYXRhKGZsb2F0KGFkZHJlc3MxRCkpO1xcXFxufVxcXFxudW5pZm9ybSBmbG9hdCB1X0s7XFxcXG51bmlmb3JtIGZsb2F0IHVfSzI7XFxcXG51bmlmb3JtIHZlYzIgdV9DZW50ZXI7XFxcXG51bmlmb3JtIGZsb2F0IHVfR3Jhdml0eTtcXFxcbnVuaWZvcm0gZmxvYXQgdV9DbHVzdGVyR3Jhdml0eTtcXFxcbnVuaWZvcm0gZmxvYXQgdV9TcGVlZDtcXFxcbnVuaWZvcm0gZmxvYXQgdV9NYXhEaXNwbGFjZTtcXFxcbnVuaWZvcm0gZmxvYXQgdV9DbHVzdGVyaW5nO1xcXFxudW5pZm9ybSBzYW1wbGVyMkQgdV9BdHRyaWJ1dGVBcnJheTtcXFxcbnVuaWZvcm0gdmVjMiB1X0F0dHJpYnV0ZUFycmF5U2l6ZTtcXFxcbnZlYzQgZ2V0RGF0YXVfQXR0cmlidXRlQXJyYXkodmVjMiBhZGRyZXNzMkQpIHtcXFxcbiAgcmV0dXJuIHZlYzQodGV4dHVyZTJEKHVfQXR0cmlidXRlQXJyYXksIGFkZHJlc3MyRCkucmdiYSk7XFxcXG59XFxcXG52ZWM0IGdldERhdGF1X0F0dHJpYnV0ZUFycmF5KGZsb2F0IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfQXR0cmlidXRlQXJyYXkoYWRkclRyYW5zbGF0aW9uXzFEdG8yRChhZGRyZXNzMUQsIHVfQXR0cmlidXRlQXJyYXlTaXplKSk7XFxcXG59XFxcXG52ZWM0IGdldERhdGF1X0F0dHJpYnV0ZUFycmF5KGludCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0F0dHJpYnV0ZUFycmF5KGZsb2F0KGFkZHJlc3MxRCkpO1xcXFxufVxcXFxudW5pZm9ybSBzYW1wbGVyMkQgdV9DbHVzdGVyQ2VudGVycztcXFxcbnVuaWZvcm0gdmVjMiB1X0NsdXN0ZXJDZW50ZXJzU2l6ZTtcXFxcbnZlYzQgZ2V0RGF0YXVfQ2x1c3RlckNlbnRlcnModmVjMiBhZGRyZXNzMkQpIHtcXFxcbiAgcmV0dXJuIHZlYzQodGV4dHVyZTJEKHVfQ2x1c3RlckNlbnRlcnMsIGFkZHJlc3MyRCkucmdiYSk7XFxcXG59XFxcXG52ZWM0IGdldERhdGF1X0NsdXN0ZXJDZW50ZXJzKGZsb2F0IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfQ2x1c3RlckNlbnRlcnMoYWRkclRyYW5zbGF0aW9uXzFEdG8yRChhZGRyZXNzMUQsIHVfQ2x1c3RlckNlbnRlcnNTaXplKSk7XFxcXG59XFxcXG52ZWM0IGdldERhdGF1X0NsdXN0ZXJDZW50ZXJzKGludCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0NsdXN0ZXJDZW50ZXJzKGZsb2F0KGFkZHJlc3MxRCkpO1xcXFxufVxcXFxudmVjMiBjYWxjUmVwdWxzaXZlKGludCBpLCB2ZWM0IGN1cnJlbnROb2RlKSB7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwgMSwgMSk7XFxcXG5pdmVjMyBudW1Xb3JrR3JvdXBzID0gaXZlYzMoMSwgMSwgMSk7ICAgICBcXFxcbmludCBnbG9iYWxJbnZvY2F0aW9uSW5kZXggPSBpbnQoZmxvb3Iodl9UZXhDb29yZC54ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS54KSlcXFxcbiAgKyBpbnQoZmxvb3Iodl9UZXhDb29yZC55ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS55KSkgKiBpbnQodV9PdXRwdXRUZXh0dXJlU2l6ZS54KTtcXFxcbmludCB3b3JrR3JvdXBJRExlbmd0aCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgKiB3b3JrR3JvdXBTaXplLnopO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyh3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueSAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFogPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFkgPSAoZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KSAvIHdvcmtHcm91cFNpemUueDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgLSBsb2NhbEludm9jYXRpb25JRFkgKiB3b3JrR3JvdXBTaXplLng7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGxvY2FsSW52b2NhdGlvbklEWCwgbG9jYWxJbnZvY2F0aW9uSURZLCBsb2NhbEludm9jYXRpb25JRFopO1xcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gd29ya0dyb3VwSUQgKiB3b3JrR3JvdXBTaXplICsgbG9jYWxJbnZvY2F0aW9uSUQ7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSW5kZXggPSBsb2NhbEludm9jYXRpb25JRC56ICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55XFxcXG4gICAgICAgICAgICAgICAgKyBsb2NhbEludm9jYXRpb25JRC55ICogd29ya0dyb3VwU2l6ZS54ICsgbG9jYWxJbnZvY2F0aW9uSUQueDtcXFxcbmZsb2F0IGR4ID0gMC4wO1xcXFxuZmxvYXQgZHkgPSAwLjA7XFxcXG5mb3IgKGludCBqID0gMDsgaiA8IFZFUlRFWF9DT1VOVDsgaisrKSB7aWYgKGkgIT0gaikge3ZlYzQgbmV4dE5vZGUgPSBnZXREYXRhdV9EYXRhKGopO1xcXFxuZmxvYXQgeERpc3QgPSBjdXJyZW50Tm9kZS54IC0gbmV4dE5vZGUueDtcXFxcbmZsb2F0IHlEaXN0ID0gY3VycmVudE5vZGUueSAtIG5leHROb2RlLnk7XFxcXG5mbG9hdCBkaXN0ID0gKCh4RGlzdCAqIHhEaXN0KSArICh5RGlzdCAqIHlEaXN0KSkgKyAwLjAxO1xcXFxuZmxvYXQgcGFyYW0gPSB1X0syIC8gZGlzdDtcXFxcbmlmIChkaXN0ID4gMC4wKSB7ZHggKz0gcGFyYW0gKiB4RGlzdDtcXFxcbmR5ICs9IHBhcmFtICogeURpc3Q7XFxcXG5pZiAoKHhEaXN0ID09IDAuMCkgJiYgKHlEaXN0ID09IDAuMCkpIHtmbG9hdCBzaWduID0gKGkgPCBqKSA/ICgxLjApIDogKC0xLjApO1xcXFxuZHggKz0gcGFyYW0gKiBzaWduO1xcXFxuZHkgKz0gcGFyYW0gKiBzaWduO319fX1cXFxcbnJldHVybiB2ZWMyKGR4LCBkeSk7fVxcXFxudmVjMiBjYWxjR3Jhdml0eSh2ZWM0IGN1cnJlbnROb2RlLCB2ZWM0IG5vZGVBdHRyaWJ1dGVzKSB7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwgMSwgMSk7XFxcXG5pdmVjMyBudW1Xb3JrR3JvdXBzID0gaXZlYzMoMSwgMSwgMSk7ICAgICBcXFxcbmludCBnbG9iYWxJbnZvY2F0aW9uSW5kZXggPSBpbnQoZmxvb3Iodl9UZXhDb29yZC54ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS54KSlcXFxcbiAgKyBpbnQoZmxvb3Iodl9UZXhDb29yZC55ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS55KSkgKiBpbnQodV9PdXRwdXRUZXh0dXJlU2l6ZS54KTtcXFxcbmludCB3b3JrR3JvdXBJRExlbmd0aCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgKiB3b3JrR3JvdXBTaXplLnopO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyh3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueSAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFogPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFkgPSAoZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KSAvIHdvcmtHcm91cFNpemUueDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgLSBsb2NhbEludm9jYXRpb25JRFkgKiB3b3JrR3JvdXBTaXplLng7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGxvY2FsSW52b2NhdGlvbklEWCwgbG9jYWxJbnZvY2F0aW9uSURZLCBsb2NhbEludm9jYXRpb25JRFopO1xcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gd29ya0dyb3VwSUQgKiB3b3JrR3JvdXBTaXplICsgbG9jYWxJbnZvY2F0aW9uSUQ7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSW5kZXggPSBsb2NhbEludm9jYXRpb25JRC56ICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55XFxcXG4gICAgICAgICAgICAgICAgKyBsb2NhbEludm9jYXRpb25JRC55ICogd29ya0dyb3VwU2l6ZS54ICsgbG9jYWxJbnZvY2F0aW9uSUQueDtcXFxcbmZsb2F0IGR4ID0gMC4wO1xcXFxuZmxvYXQgZHkgPSAwLjA7XFxcXG5mbG9hdCB2eCA9IGN1cnJlbnROb2RlLnggLSB1X0NlbnRlci54O1xcXFxuZmxvYXQgdnkgPSBjdXJyZW50Tm9kZS55IC0gdV9DZW50ZXIueTtcXFxcbmZsb2F0IGdmID0gKDAuMDEgKiB1X0spICogdV9HcmF2aXR5O1xcXFxuZHggPSBnZiAqIHZ4O1xcXFxuZHkgPSBnZiAqIHZ5O1xcXFxuaWYgKHVfQ2x1c3RlcmluZyA9PSAxLjApIHtpbnQgY2x1c3RlcklkeCA9IGludChub2RlQXR0cmlidXRlcy54KTtcXFxcbnZlYzQgY2VudGVyID0gZ2V0RGF0YXVfQ2x1c3RlckNlbnRlcnMoY2x1c3RlcklkeCk7XFxcXG5mbG9hdCBjdnggPSBjdXJyZW50Tm9kZS54IC0gY2VudGVyLng7XFxcXG5mbG9hdCBjdnkgPSBjdXJyZW50Tm9kZS55IC0gY2VudGVyLnk7XFxcXG5mbG9hdCBkaXN0ID0gc3FydCgoY3Z4ICogY3Z4KSArIChjdnkgKiBjdnkpKSArIDAuMDE7XFxcXG5mbG9hdCBwYXJtYSA9ICh1X0sgKiB1X0NsdXN0ZXJHcmF2aXR5KSAvIGRpc3Q7XFxcXG5keCArPSBwYXJtYSAqIGN2eDtcXFxcbmR5ICs9IHBhcm1hICogY3Z5O31cXFxcbnJldHVybiB2ZWMyKGR4LCBkeSk7fVxcXFxudmVjMiBjYWxjQXR0cmFjdGl2ZShpbnQgaSwgdmVjNCBjdXJyZW50Tm9kZSkge1xcXFxuaXZlYzMgd29ya0dyb3VwU2l6ZSA9IGl2ZWMzKDEsIDEsIDEpO1xcXFxuaXZlYzMgbnVtV29ya0dyb3VwcyA9IGl2ZWMzKDEsIDEsIDEpOyAgICAgXFxcXG5pbnQgZ2xvYmFsSW52b2NhdGlvbkluZGV4ID0gaW50KGZsb29yKHZfVGV4Q29vcmQueCAqIHVfT3V0cHV0VGV4dHVyZVNpemUueCkpXFxcXG4gICsgaW50KGZsb29yKHZfVGV4Q29vcmQueSAqIHVfT3V0cHV0VGV4dHVyZVNpemUueSkpICogaW50KHVfT3V0cHV0VGV4dHVyZVNpemUueCk7XFxcXG5pbnQgd29ya0dyb3VwSURMZW5ndGggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55ICogd29ya0dyb3VwU2l6ZS56KTtcXFxcbml2ZWMzIHdvcmtHcm91cElEID0gaXZlYzMod29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnkgLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueSk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURaID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURZID0gKGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSkgLyB3b3JrR3JvdXBTaXplLng7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURYID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55IC0gbG9jYWxJbnZvY2F0aW9uSURZICogd29ya0dyb3VwU2l6ZS54O1xcXFxuaXZlYzMgbG9jYWxJbnZvY2F0aW9uSUQgPSBpdmVjMyhsb2NhbEludm9jYXRpb25JRFgsIGxvY2FsSW52b2NhdGlvbklEWSwgbG9jYWxJbnZvY2F0aW9uSURaKTtcXFxcbml2ZWMzIGdsb2JhbEludm9jYXRpb25JRCA9IHdvcmtHcm91cElEICogd29ya0dyb3VwU2l6ZSArIGxvY2FsSW52b2NhdGlvbklEO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbkluZGV4ID0gbG9jYWxJbnZvY2F0aW9uSUQueiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueVxcXFxuICAgICAgICAgICAgICAgICsgbG9jYWxJbnZvY2F0aW9uSUQueSAqIHdvcmtHcm91cFNpemUueCArIGxvY2FsSW52b2NhdGlvbklELng7XFxcXG5mbG9hdCBkeCA9IDAuMDtcXFxcbmZsb2F0IGR5ID0gMC4wO1xcXFxuaW50IGFycl9vZmZzZXQgPSBpbnQoZmxvb3IoY3VycmVudE5vZGUueiArIDAuNSkpO1xcXFxuaW50IGxlbmd0aCA9IGludChmbG9vcihjdXJyZW50Tm9kZS53ICsgMC41KSk7XFxcXG52ZWM0IG5vZGVfYnVmZmVyO1xcXFxuZm9yIChpbnQgcCA9IDA7IHAgPCBNQVhfRURHRV9QRVJfVkVSVEVYOyBwKyspIHtpZiAocCA+PSBsZW5ndGgpIHticmVhazt9XFxcXG5pbnQgYXJyX2lkeCA9IGFycl9vZmZzZXQgKyBpbnQocCk7XFxcXG5pbnQgYnVmX29mZnNldCA9IGFycl9pZHggLSAoKGFycl9pZHggLyA0KSAqIDQpO1xcXFxuaWYgKChwID09IDApIHx8IChidWZfb2Zmc2V0ID09IDApKSB7bm9kZV9idWZmZXIgPSBnZXREYXRhdV9EYXRhKGludChhcnJfaWR4IC8gNCkpO31cXFxcbmZsb2F0IGZsb2F0X2ogPSAoYnVmX29mZnNldCA9PSAwKSA/IChub2RlX2J1ZmZlci54KSA6ICgoYnVmX29mZnNldCA9PSAxKSA/IChub2RlX2J1ZmZlci55KSA6ICgoYnVmX29mZnNldCA9PSAyKSA/IChub2RlX2J1ZmZlci56KSA6IChub2RlX2J1ZmZlci53KSkpO1xcXFxudmVjNCBuZXh0Tm9kZSA9IGdldERhdGF1X0RhdGEoaW50KGZsb2F0X2opKTtcXFxcbmZsb2F0IHhEaXN0ID0gY3VycmVudE5vZGUueCAtIG5leHROb2RlLng7XFxcXG5mbG9hdCB5RGlzdCA9IGN1cnJlbnROb2RlLnkgLSBuZXh0Tm9kZS55O1xcXFxuZmxvYXQgZGlzdCA9IHNxcnQoKHhEaXN0ICogeERpc3QpICsgKHlEaXN0ICogeURpc3QpKSArIDAuMDE7XFxcXG5mbG9hdCBhdHRyYWN0aXZlRiA9IGRpc3QgLyB1X0s7XFxcXG5pZiAoZGlzdCA+IDAuMCkge2R4IC09IHhEaXN0ICogYXR0cmFjdGl2ZUY7XFxcXG5keSAtPSB5RGlzdCAqIGF0dHJhY3RpdmVGO1xcXFxuaWYgKCh4RGlzdCA9PSAwLjApICYmICh5RGlzdCA9PSAwLjApKSB7ZmxvYXQgc2lnbiA9IChpIDwgaW50KGZsb2F0X2opKSA/ICgxLjApIDogKC0xLjApO1xcXFxuZHggLT0gc2lnbiAqIGF0dHJhY3RpdmVGO1xcXFxuZHkgLT0gc2lnbiAqIGF0dHJhY3RpdmVGO319fVxcXFxucmV0dXJuIHZlYzIoZHgsIGR5KTt9XFxcXG52b2lkIG1haW4oKSB7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwgMSwgMSk7XFxcXG5pdmVjMyBudW1Xb3JrR3JvdXBzID0gaXZlYzMoMSwgMSwgMSk7ICAgICBcXFxcbmludCBnbG9iYWxJbnZvY2F0aW9uSW5kZXggPSBpbnQoZmxvb3Iodl9UZXhDb29yZC54ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS54KSlcXFxcbiAgKyBpbnQoZmxvb3Iodl9UZXhDb29yZC55ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS55KSkgKiBpbnQodV9PdXRwdXRUZXh0dXJlU2l6ZS54KTtcXFxcbmludCB3b3JrR3JvdXBJRExlbmd0aCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgKiB3b3JrR3JvdXBTaXplLnopO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyh3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueSAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFogPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFkgPSAoZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KSAvIHdvcmtHcm91cFNpemUueDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgLSBsb2NhbEludm9jYXRpb25JRFkgKiB3b3JrR3JvdXBTaXplLng7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGxvY2FsSW52b2NhdGlvbklEWCwgbG9jYWxJbnZvY2F0aW9uSURZLCBsb2NhbEludm9jYXRpb25JRFopO1xcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gd29ya0dyb3VwSUQgKiB3b3JrR3JvdXBTaXplICsgbG9jYWxJbnZvY2F0aW9uSUQ7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSW5kZXggPSBsb2NhbEludm9jYXRpb25JRC56ICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55XFxcXG4gICAgICAgICAgICAgICAgKyBsb2NhbEludm9jYXRpb25JRC55ICogd29ya0dyb3VwU2l6ZS54ICsgbG9jYWxJbnZvY2F0aW9uSUQueDtcXFxcbmludCBpID0gZ2xvYmFsSW52b2NhdGlvbklELng7XFxcXG52ZWM0IGN1cnJlbnROb2RlID0gZ2V0RGF0YXVfRGF0YShpKTtcXFxcbmZsb2F0IGR4ID0gMC4wO1xcXFxuZmxvYXQgZHkgPSAwLjA7XFxcXG5pZiAoaSA+PSBWRVJURVhfQ09VTlQpIHtnbF9GcmFnQ29sb3IgPSB2ZWM0KGN1cnJlbnROb2RlKTtcXFxcbnJldHVybiA7fVxcXFxudmVjNCBub2RlQXR0cmlidXRlcyA9IGdldERhdGF1X0F0dHJpYnV0ZUFycmF5KGkpO1xcXFxuaWYgKChub2RlQXR0cmlidXRlcy55ICE9IDAuMCkgJiYgKG5vZGVBdHRyaWJ1dGVzLnogIT0gMC4wKSkge2dsX0ZyYWdDb2xvciA9IHZlYzQodmVjNChub2RlQXR0cmlidXRlcy55LCBub2RlQXR0cmlidXRlcy56LCBjdXJyZW50Tm9kZS56LCBjdXJyZW50Tm9kZS53KSk7XFxcXG5yZXR1cm4gO31cXFxcbnZlYzIgcmVwdWxzaXZlID0gY2FsY1JlcHVsc2l2ZShpLCBjdXJyZW50Tm9kZSk7XFxcXG5keCArPSByZXB1bHNpdmUueDtcXFxcbmR5ICs9IHJlcHVsc2l2ZS55O1xcXFxudmVjMiBhdHRyYWN0aXZlID0gY2FsY0F0dHJhY3RpdmUoaSwgY3VycmVudE5vZGUpO1xcXFxuZHggKz0gYXR0cmFjdGl2ZS54O1xcXFxuZHkgKz0gYXR0cmFjdGl2ZS55O1xcXFxudmVjMiBncmF2aXR5ID0gY2FsY0dyYXZpdHkoY3VycmVudE5vZGUsIG5vZGVBdHRyaWJ1dGVzKTtcXFxcbmR4IC09IGdyYXZpdHkueDtcXFxcbmR5IC09IGdyYXZpdHkueTtcXFxcbmR4ICo9IHVfU3BlZWQ7XFxcXG5keSAqPSB1X1NwZWVkO1xcXFxuZmxvYXQgZGlzdExlbmd0aCA9IHNxcnQoKGR4ICogZHgpICsgKGR5ICogZHkpKTtcXFxcbmlmIChkaXN0TGVuZ3RoID4gMC4wKSB7ZmxvYXQgbGltaXRlZERpc3QgPSBtaW4odV9NYXhEaXNwbGFjZSAqIHVfU3BlZWQsIGRpc3RMZW5ndGgpO1xcXFxuZ2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWM0KGN1cnJlbnROb2RlLnggKyAoKGR4IC8gZGlzdExlbmd0aCkgKiBsaW1pdGVkRGlzdCksIGN1cnJlbnROb2RlLnkgKyAoKGR5IC8gZGlzdExlbmd0aCkgKiBsaW1pdGVkRGlzdCksIGN1cnJlbnROb2RlLnosIGN1cnJlbnROb2RlLncpKTt9aWYgKGdXZWJHUFVEZWJ1Zykge1xcXFxuICBnbF9GcmFnQ29sb3IgPSBnV2ViR1BVRGVidWdPdXRwdXQ7XFxcXG59fVxcXFxuXCJ9LFwiY29udGV4dFwiOntcIm5hbWVcIjpcIlwiLFwiZGlzcGF0Y2hcIjpbMSwxLDFdLFwidGhyZWFkR3JvdXBTaXplXCI6WzEsMSwxXSxcIm1heEl0ZXJhdGlvblwiOjEsXCJkZWZpbmVzXCI6W3tcIm5hbWVcIjpcIk1BWF9FREdFX1BFUl9WRVJURVhcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJydW50aW1lXCI6dHJ1ZX0se1wibmFtZVwiOlwiVkVSVEVYX0NPVU5UXCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwicnVudGltZVwiOnRydWV9XSxcInVuaWZvcm1zXCI6W3tcIm5hbWVcIjpcInVfRGF0YVwiLFwidHlwZVwiOlwidmVjNDxmMzI+W11cIixcInN0b3JhZ2VDbGFzc1wiOlwiU3RvcmFnZUJ1ZmZlclwiLFwicmVhZG9ubHlcIjpmYWxzZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X0tcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X0syXCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwic3RvcmFnZUNsYXNzXCI6XCJVbmlmb3JtXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9DZW50ZXJcIixcInR5cGVcIjpcInZlYzI8ZjMyPlwiLFwic3RvcmFnZUNsYXNzXCI6XCJVbmlmb3JtXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9HcmF2aXR5XCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwic3RvcmFnZUNsYXNzXCI6XCJVbmlmb3JtXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9DbHVzdGVyR3Jhdml0eVwiLFwidHlwZVwiOlwiRmxvYXRcIixcInN0b3JhZ2VDbGFzc1wiOlwiVW5pZm9ybVwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfU3BlZWRcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X01heERpc3BsYWNlXCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwic3RvcmFnZUNsYXNzXCI6XCJVbmlmb3JtXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9DbHVzdGVyaW5nXCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwic3RvcmFnZUNsYXNzXCI6XCJVbmlmb3JtXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9BdHRyaWJ1dGVBcnJheVwiLFwidHlwZVwiOlwidmVjNDxmMzI+W11cIixcInN0b3JhZ2VDbGFzc1wiOlwiU3RvcmFnZUJ1ZmZlclwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfQ2x1c3RlckNlbnRlcnNcIixcInR5cGVcIjpcInZlYzQ8ZjMyPltdXCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlN0b3JhZ2VCdWZmZXJcIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfV0sXCJnbG9iYWxEZWNsYXJhdGlvbnNcIjpbXSxcIm91dHB1dFwiOntcIm5hbWVcIjpcInVfRGF0YVwiLFwic2l6ZVwiOlsxLDFdLFwibGVuZ3RoXCI6MX0sXCJuZWVkUGluZ3BvbmdcIjp0cnVlfX1gO1xuZXhwb3J0IGNvbnN0IGNsdXN0ZXJDb2RlID0gYFxuaW1wb3J0IHsgZ2xvYmFsSW52b2NhdGlvbklEIH0gZnJvbSAnZy13ZWJncHUnO1xuY29uc3QgVkVSVEVYX0NPVU5UO1xuY29uc3QgQ0xVU1RFUl9DT1VOVDtcbkBudW10aHJlYWRzKDEsIDEsIDEpXG5jbGFzcyBDYWxjQ2VudGVyIHtcbiAgQGluXG4gIHVfRGF0YTogdmVjNFtdO1xuICBAaW5cbiAgdV9Ob2RlQXR0cmlidXRlczogdmVjNFtdOyAvLyBbW2NsdXN0ZXJJZHgsIDAsIDAsIDBdLCAuLi5dXG4gIEBpbiBAb3V0XG4gIHVfQ2x1c3RlckNlbnRlcnM6IHZlYzRbXTsgLy8gW1tjeCwgY3ksIG5vZGVDb3VudCwgY2x1c3RlcklkeF0sIC4uLl1cbiAgQG1haW5cbiAgY29tcHV0ZSgpIHtcbiAgICBjb25zdCBpID0gZ2xvYmFsSW52b2NhdGlvbklELng7XG4gICAgY29uc3QgY2VudGVyID0gdGhpcy51X0NsdXN0ZXJDZW50ZXJzW2ldO1xuICAgIGxldCBzdW14ID0gMDtcbiAgICBsZXQgc3VteSA9IDA7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IFZFUlRFWF9DT1VOVDsgaisrKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy51X05vZGVBdHRyaWJ1dGVzW2pdO1xuICAgICAgY29uc3QgY2x1c3RlcklkeCA9IGludChhdHRyaWJ1dGVzWzBdKTtcbiAgICAgIGNvbnN0IHZlcnRleCA9IHRoaXMudV9EYXRhW2pdO1xuICAgICAgaWYgKGNsdXN0ZXJJZHggPT0gaSkge1xuICAgICAgICBzdW14ICs9IHZlcnRleC54O1xuICAgICAgICBzdW15ICs9IHZlcnRleC55O1xuICAgICAgICBjb3VudCArPSAxO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnVfQ2x1c3RlckNlbnRlcnNbaV0gPSBbXG4gICAgICBzdW14IC8gY291bnQsXG4gICAgICBzdW15IC8gY291bnQsXG4gICAgICBjb3VudCxcbiAgICAgIGlcbiAgICBdO1xuICB9XG59XG5gO1xuZXhwb3J0IGNvbnN0IGNsdXN0ZXJCdW5kbGUgPSBge1wic2hhZGVyc1wiOntcIldHU0xcIjpcImltcG9ydCBcXFxcXCJHTFNMLnN0ZC40NTBcXFxcXCIgYXMgc3RkO1xcXFxuXFxcXG5cXFxcbiMgdmFyIGdXZWJHUFVEZWJ1ZyA6IGJvb2wgPSBmYWxzZTtcXFxcbiMgdmFyIGdXZWJHUFVEZWJ1Z091dHB1dCA6IHZlYzQ8ZjMyPiA9IHZlYzQ8ZjMyPigwLjApO1xcXFxuXFxcXG5bW2J1aWx0aW4gZ2xvYmFsX2ludm9jYXRpb25faWRdXSB2YXI8aW4+IGdsb2JhbEludm9jYXRpb25JRCA6IHZlYzM8dTMyPjtcXFxcbiMgW1tidWlsdGluIHdvcmtfZ3JvdXBfc2l6ZV1dIHZhcjxpbj4gd29ya0dyb3VwU2l6ZSA6IHZlYzM8dTMyPjtcXFxcbiMgW1tidWlsdGluIHdvcmtfZ3JvdXBfaWRdXSB2YXI8aW4+IHdvcmtHcm91cElEIDogdmVjMzx1MzI+O1xcXFxuW1tidWlsdGluIGxvY2FsX2ludm9jYXRpb25faWRdXSB2YXI8aW4+IGxvY2FsSW52b2NhdGlvbklEIDogdmVjMzx1MzI+O1xcXFxuIyBbW2J1aWx0aW4gbnVtX3dvcmtfZ3JvdXBzXV0gdmFyPGluPiBudW1Xb3JrR3JvdXBzIDogdmVjMzx1MzI+O1xcXFxuW1tidWlsdGluIGxvY2FsX2ludm9jYXRpb25faWR4XV0gdmFyPGluPiBsb2NhbEludm9jYXRpb25JbmRleCA6IHUzMjtcXFxcblxcXFxuXFxcXG50eXBlIEdXZWJHUFVCdWZmZXIwID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X0RhdGEgOiBbW3N0cmlkZSAxNl1dIGFycmF5PHZlYzQ8ZjMyPj47XFxcXG59O1xcXFxuW1tiaW5kaW5nIDAsIHNldCAwXV0gdmFyPHN0b3JhZ2VfYnVmZmVyPiBnV2ViR1BVQnVmZmVyMCA6IEdXZWJHUFVCdWZmZXIwO1xcXFxudHlwZSBHV2ViR1BVQnVmZmVyMSA9IFtbYmxvY2tdXSBzdHJ1Y3Qge1xcXFxuICBbW29mZnNldCAwXV0gdV9Ob2RlQXR0cmlidXRlcyA6IFtbc3RyaWRlIDE2XV0gYXJyYXk8dmVjNDxmMzI+PjtcXFxcbn07XFxcXG5bW2JpbmRpbmcgMSwgc2V0IDBdXSB2YXI8c3RvcmFnZV9idWZmZXI+IGdXZWJHUFVCdWZmZXIxIDogR1dlYkdQVUJ1ZmZlcjE7XFxcXG50eXBlIEdXZWJHUFVCdWZmZXIyID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X0NsdXN0ZXJDZW50ZXJzIDogW1tzdHJpZGUgMTZdXSBhcnJheTx2ZWM0PGYzMj4+O1xcXFxufTtcXFxcbltbYmluZGluZyAyLCBzZXQgMF1dIHZhcjxzdG9yYWdlX2J1ZmZlcj4gZ1dlYkdQVUJ1ZmZlcjIgOiBHV2ViR1BVQnVmZmVyMjtcXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcbmZuIG1haW4oKSAtPiB2b2lkIHt2YXIgaSA6IGkzMiA9IGdsb2JhbEludm9jYXRpb25JRC54O1xcXFxudmFyIGNlbnRlciA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIyLnVfQ2x1c3RlckNlbnRlcnNbaV07XFxcXG52YXIgc3VteCA6IGYzMiA9IDAuMDtcXFxcbnZhciBzdW15IDogZjMyID0gMC4wO1xcXFxudmFyIGNvdW50IDogZjMyID0gMC4wO1xcXFxuZm9yICh2YXIgaiA6IGkzMiA9IDA7IGogPCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVDsgaiA9IGogKyAxKSB7dmFyIGF0dHJpYnV0ZXMgOiB2ZWM0PGYzMj4gPSBnV2ViR1BVQnVmZmVyMS51X05vZGVBdHRyaWJ1dGVzW2pdO1xcXFxudmFyIGNsdXN0ZXJJZHggOiBpMzIgPSBpMzIoYXR0cmlidXRlcy54KTtcXFxcbnZhciB2ZXJ0ZXggOiB2ZWM0PGYzMj4gPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbal07XFxcXG5pZiAoY2x1c3RlcklkeCA9PSBpKSB7c3VteCA9IHN1bXggKyB2ZXJ0ZXgueDtcXFxcbnN1bXkgPSBzdW15ICsgdmVydGV4Lnk7XFxcXG5jb3VudCA9IGNvdW50ICsgMS4wO319XFxcXG5nV2ViR1BVQnVmZmVyMi51X0NsdXN0ZXJDZW50ZXJzW2ldID0gdmVjNDxmMzI+KHN1bXggLyBjb3VudCwgc3VteSAvIGNvdW50LCBjb3VudCwgaSk7XFxcXG5yZXR1cm47fVxcXFxuXFxcXG5lbnRyeV9wb2ludCBjb21wdXRlIGFzIFxcXFxcIm1haW5cXFxcXCIgPSBtYWluO1xcXFxuXCIsXCJHTFNMNDUwXCI6XCJcXFxcblxcXFxuXFxcXG5ib29sIGdXZWJHUFVEZWJ1ZyA9IGZhbHNlO1xcXFxudmVjNCBnV2ViR1BVRGVidWdPdXRwdXQgPSB2ZWM0KDAuMCk7XFxcXG5cXFxcbml2ZWMzIGdsb2JhbEludm9jYXRpb25JRCA9IGl2ZWMzKGdsX0dsb2JhbEludm9jYXRpb25JRCk7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwxLDEpO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyhnbF9Xb3JrR3JvdXBJRCk7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGdsX0xvY2FsSW52b2NhdGlvbklEKTtcXFxcbml2ZWMzIG51bVdvcmtHcm91cHMgPSBpdmVjMyhnbF9OdW1Xb3JrR3JvdXBzKTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JbmRleCA9IGludChnbF9Mb2NhbEludm9jYXRpb25JbmRleCk7XFxcXG5cXFxcblxcXFxubGF5b3V0KHN0ZDQzMCwgc2V0ID0gMCwgYmluZGluZyA9IDApIGJ1ZmZlciByZWFkb25seSAgR1dlYkdQVUJ1ZmZlcjAge1xcXFxuICB2ZWM0IHVfRGF0YVtdO1xcXFxufSBnV2ViR1BVQnVmZmVyMDtcXFxcblxcXFxubGF5b3V0KHN0ZDQzMCwgc2V0ID0gMCwgYmluZGluZyA9IDEpIGJ1ZmZlciByZWFkb25seSAgR1dlYkdQVUJ1ZmZlcjEge1xcXFxuICB2ZWM0IHVfTm9kZUF0dHJpYnV0ZXNbXTtcXFxcbn0gZ1dlYkdQVUJ1ZmZlcjE7XFxcXG5cXFxcbmxheW91dChzdGQ0MzAsIHNldCA9IDAsIGJpbmRpbmcgPSAyKSBidWZmZXIgICBHV2ViR1BVQnVmZmVyMiB7XFxcXG4gIHZlYzQgdV9DbHVzdGVyQ2VudGVyc1tdO1xcXFxufSBnV2ViR1BVQnVmZmVyMjtcXFxcblxcXFxuXFxcXG5cXFxcbiNkZWZpbmUgVkVSVEVYX0NPVU5UIF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fVkVSVEVYX0NPVU5UXFxcXG4jZGVmaW5lIENMVVNURVJfQ09VTlQgX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19DTFVTVEVSX0NPVU5UXFxcXG5sYXlvdXQgKFxcXFxuICBsb2NhbF9zaXplX3ggPSAxLFxcXFxuICBsb2NhbF9zaXplX3kgPSAxLFxcXFxuICBsb2NhbF9zaXplX3ogPSAxXFxcXG4pIGluO1xcXFxuXFxcXG5cXFxcblxcXFxudm9pZCBtYWluKCkge2ludCBpID0gZ2xvYmFsSW52b2NhdGlvbklELng7XFxcXG52ZWM0IGNlbnRlciA9IGdXZWJHUFVCdWZmZXIyLnVfQ2x1c3RlckNlbnRlcnNbaV07XFxcXG5mbG9hdCBzdW14ID0gMC4wO1xcXFxuZmxvYXQgc3VteSA9IDAuMDtcXFxcbmZsb2F0IGNvdW50ID0gMC4wO1xcXFxuZm9yIChpbnQgaiA9IDA7IGogPCBWRVJURVhfQ09VTlQ7IGorKykge3ZlYzQgYXR0cmlidXRlcyA9IGdXZWJHUFVCdWZmZXIxLnVfTm9kZUF0dHJpYnV0ZXNbal07XFxcXG5pbnQgY2x1c3RlcklkeCA9IGludChhdHRyaWJ1dGVzLngpO1xcXFxudmVjNCB2ZXJ0ZXggPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbal07XFxcXG5pZiAoY2x1c3RlcklkeCA9PSBpKSB7c3VteCArPSB2ZXJ0ZXgueDtcXFxcbnN1bXkgKz0gdmVydGV4Lnk7XFxcXG5jb3VudCArPSAxLjA7fX1cXFxcbmdXZWJHUFVCdWZmZXIyLnVfQ2x1c3RlckNlbnRlcnNbaV0gPSB2ZWM0KHN1bXggLyBjb3VudCwgc3VteSAvIGNvdW50LCBjb3VudCwgaSk7fVxcXFxuXCIsXCJHTFNMMTAwXCI6XCJcXFxcblxcXFxuZmxvYXQgZXBzaWxvbiA9IDAuMDAwMDE7XFxcXG52ZWMyIGFkZHJUcmFuc2xhdGlvbl8xRHRvMkQoZmxvYXQgYWRkcmVzczFELCB2ZWMyIHRleFNpemUpIHtcXFxcbiAgdmVjMiBjb252X2NvbnN0ID0gdmVjMigxLjAgLyB0ZXhTaXplLngsIDEuMCAvICh0ZXhTaXplLnggKiB0ZXhTaXplLnkpKTtcXFxcbiAgdmVjMiBub3JtQWRkcjJEID0gZmxvYXQoYWRkcmVzczFEKSAqIGNvbnZfY29uc3Q7XFxcXG4gIHJldHVybiB2ZWMyKGZyYWN0KG5vcm1BZGRyMkQueCArIGVwc2lsb24pLCBub3JtQWRkcjJELnkpO1xcXFxufVxcXFxuXFxcXG52b2lkIGJhcnJpZXIoKSB7fVxcXFxuICBcXFxcblxcXFxudW5pZm9ybSB2ZWMyIHVfT3V0cHV0VGV4dHVyZVNpemU7XFxcXG51bmlmb3JtIGludCB1X091dHB1dFRleGVsQ291bnQ7XFxcXG52YXJ5aW5nIHZlYzIgdl9UZXhDb29yZDtcXFxcblxcXFxuYm9vbCBnV2ViR1BVRGVidWcgPSBmYWxzZTtcXFxcbnZlYzQgZ1dlYkdQVURlYnVnT3V0cHV0ID0gdmVjNCgwLjApO1xcXFxuXFxcXG4jZGVmaW5lIFZFUlRFWF9DT1VOVCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVFxcXFxuI2RlZmluZSBDTFVTVEVSX0NPVU5UIF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fQ0xVU1RFUl9DT1VOVFxcXFxuXFxcXG51bmlmb3JtIHNhbXBsZXIyRCB1X0RhdGE7XFxcXG51bmlmb3JtIHZlYzIgdV9EYXRhU2l6ZTtcXFxcbnZlYzQgZ2V0RGF0YXVfRGF0YSh2ZWMyIGFkZHJlc3MyRCkge1xcXFxuICByZXR1cm4gdmVjNCh0ZXh0dXJlMkQodV9EYXRhLCBhZGRyZXNzMkQpLnJnYmEpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9EYXRhKGZsb2F0IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfRGF0YShhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGFkZHJlc3MxRCwgdV9EYXRhU2l6ZSkpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9EYXRhKGludCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0RhdGEoZmxvYXQoYWRkcmVzczFEKSk7XFxcXG59XFxcXG51bmlmb3JtIHNhbXBsZXIyRCB1X05vZGVBdHRyaWJ1dGVzO1xcXFxudW5pZm9ybSB2ZWMyIHVfTm9kZUF0dHJpYnV0ZXNTaXplO1xcXFxudmVjNCBnZXREYXRhdV9Ob2RlQXR0cmlidXRlcyh2ZWMyIGFkZHJlc3MyRCkge1xcXFxuICByZXR1cm4gdmVjNCh0ZXh0dXJlMkQodV9Ob2RlQXR0cmlidXRlcywgYWRkcmVzczJEKS5yZ2JhKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZXMoZmxvYXQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9Ob2RlQXR0cmlidXRlcyhhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGFkZHJlc3MxRCwgdV9Ob2RlQXR0cmlidXRlc1NpemUpKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZXMoaW50IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZXMoZmxvYXQoYWRkcmVzczFEKSk7XFxcXG59XFxcXG51bmlmb3JtIHNhbXBsZXIyRCB1X0NsdXN0ZXJDZW50ZXJzO1xcXFxudW5pZm9ybSB2ZWMyIHVfQ2x1c3RlckNlbnRlcnNTaXplO1xcXFxudmVjNCBnZXREYXRhdV9DbHVzdGVyQ2VudGVycyh2ZWMyIGFkZHJlc3MyRCkge1xcXFxuICByZXR1cm4gdmVjNCh0ZXh0dXJlMkQodV9DbHVzdGVyQ2VudGVycywgYWRkcmVzczJEKS5yZ2JhKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfQ2x1c3RlckNlbnRlcnMoZmxvYXQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9DbHVzdGVyQ2VudGVycyhhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGFkZHJlc3MxRCwgdV9DbHVzdGVyQ2VudGVyc1NpemUpKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfQ2x1c3RlckNlbnRlcnMoaW50IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfQ2x1c3RlckNlbnRlcnMoZmxvYXQoYWRkcmVzczFEKSk7XFxcXG59XFxcXG52b2lkIG1haW4oKSB7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwgMSwgMSk7XFxcXG5pdmVjMyBudW1Xb3JrR3JvdXBzID0gaXZlYzMoMSwgMSwgMSk7ICAgICBcXFxcbmludCBnbG9iYWxJbnZvY2F0aW9uSW5kZXggPSBpbnQoZmxvb3Iodl9UZXhDb29yZC54ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS54KSlcXFxcbiAgKyBpbnQoZmxvb3Iodl9UZXhDb29yZC55ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS55KSkgKiBpbnQodV9PdXRwdXRUZXh0dXJlU2l6ZS54KTtcXFxcbmludCB3b3JrR3JvdXBJRExlbmd0aCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgKiB3b3JrR3JvdXBTaXplLnopO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyh3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueSAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFogPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFkgPSAoZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KSAvIHdvcmtHcm91cFNpemUueDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgLSBsb2NhbEludm9jYXRpb25JRFkgKiB3b3JrR3JvdXBTaXplLng7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGxvY2FsSW52b2NhdGlvbklEWCwgbG9jYWxJbnZvY2F0aW9uSURZLCBsb2NhbEludm9jYXRpb25JRFopO1xcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gd29ya0dyb3VwSUQgKiB3b3JrR3JvdXBTaXplICsgbG9jYWxJbnZvY2F0aW9uSUQ7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSW5kZXggPSBsb2NhbEludm9jYXRpb25JRC56ICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55XFxcXG4gICAgICAgICAgICAgICAgKyBsb2NhbEludm9jYXRpb25JRC55ICogd29ya0dyb3VwU2l6ZS54ICsgbG9jYWxJbnZvY2F0aW9uSUQueDtcXFxcbmludCBpID0gZ2xvYmFsSW52b2NhdGlvbklELng7XFxcXG52ZWM0IGNlbnRlciA9IGdldERhdGF1X0NsdXN0ZXJDZW50ZXJzKGkpO1xcXFxuZmxvYXQgc3VteCA9IDAuMDtcXFxcbmZsb2F0IHN1bXkgPSAwLjA7XFxcXG5mbG9hdCBjb3VudCA9IDAuMDtcXFxcbmZvciAoaW50IGogPSAwOyBqIDwgVkVSVEVYX0NPVU5UOyBqKyspIHt2ZWM0IGF0dHJpYnV0ZXMgPSBnZXREYXRhdV9Ob2RlQXR0cmlidXRlcyhqKTtcXFxcbmludCBjbHVzdGVySWR4ID0gaW50KGF0dHJpYnV0ZXMueCk7XFxcXG52ZWM0IHZlcnRleCA9IGdldERhdGF1X0RhdGEoaik7XFxcXG5pZiAoY2x1c3RlcklkeCA9PSBpKSB7c3VteCArPSB2ZXJ0ZXgueDtcXFxcbnN1bXkgKz0gdmVydGV4Lnk7XFxcXG5jb3VudCArPSAxLjA7fX1cXFxcbmdsX0ZyYWdDb2xvciA9IHZlYzQodmVjNChzdW14IC8gY291bnQsIHN1bXkgLyBjb3VudCwgY291bnQsIGkpKTtpZiAoZ1dlYkdQVURlYnVnKSB7XFxcXG4gIGdsX0ZyYWdDb2xvciA9IGdXZWJHUFVEZWJ1Z091dHB1dDtcXFxcbn19XFxcXG5cIn0sXCJjb250ZXh0XCI6e1wibmFtZVwiOlwiXCIsXCJkaXNwYXRjaFwiOlsxLDEsMV0sXCJ0aHJlYWRHcm91cFNpemVcIjpbMSwxLDFdLFwibWF4SXRlcmF0aW9uXCI6MSxcImRlZmluZXNcIjpbe1wibmFtZVwiOlwiVkVSVEVYX0NPVU5UXCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwicnVudGltZVwiOnRydWV9LHtcIm5hbWVcIjpcIkNMVVNURVJfQ09VTlRcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJydW50aW1lXCI6dHJ1ZX1dLFwidW5pZm9ybXNcIjpbe1wibmFtZVwiOlwidV9EYXRhXCIsXCJ0eXBlXCI6XCJ2ZWM0PGYzMj5bXVwiLFwic3RvcmFnZUNsYXNzXCI6XCJTdG9yYWdlQnVmZmVyXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9Ob2RlQXR0cmlidXRlc1wiLFwidHlwZVwiOlwidmVjNDxmMzI+W11cIixcInN0b3JhZ2VDbGFzc1wiOlwiU3RvcmFnZUJ1ZmZlclwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfQ2x1c3RlckNlbnRlcnNcIixcInR5cGVcIjpcInZlYzQ8ZjMyPltdXCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlN0b3JhZ2VCdWZmZXJcIixcInJlYWRvbmx5XCI6ZmFsc2UsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX1dLFwiZ2xvYmFsRGVjbGFyYXRpb25zXCI6W10sXCJvdXRwdXRcIjp7XCJuYW1lXCI6XCJ1X0NsdXN0ZXJDZW50ZXJzXCIsXCJzaXplXCI6WzEsMV0sXCJsZW5ndGhcIjoxfSxcIm5lZWRQaW5ncG9uZ1wiOnRydWV9fWA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mcnVjaHRlcm1hblNoYWRlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/gpu/fruchtermanShader.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/gpu/gForce.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/gpu/gForce.js ***! \***********************************************************/ /*! exports provided: GForceGPULayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GForceGPULayout\", function() { return GForceGPULayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/* harmony import */ var _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu */ \"./node_modules/@antv/g-webgpu/es/index.js\");\n/* harmony import */ var _util_gpu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/gpu */ \"./node_modules/@antv/layout/es/util/gpu.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/math */ \"./node_modules/@antv/layout/es/util/math.js\");\n/* harmony import */ var _gForceShader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./gForceShader */ \"./node_modules/@antv/layout/es/layout/gpu/gForceShader.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ \"./node_modules/@antv/layout/es/layout/constants.js\");\n// @ts-nocheck\n/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n// @ts-ignore\n\n\n\n\n\n/**\n * graphin 中的 force 布局\n */\nclass GForceGPULayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 1000;\n /** 弹簧引力系数 */\n this.edgeStrength = 200;\n /** 斥力系数 */\n this.nodeStrength = 1000;\n /** 库伦系数 */\n this.coulombDisScale = 0.005;\n /** 阻尼系数 */\n this.damping = 0.9;\n /** 最大速度 */\n this.maxSpeed = 1000;\n /** 一次迭代的平均移动距离小于该值时停止迭代 */\n this.minMovement = 0.5;\n /** 迭代中衰减 */\n this.interval = 0.02;\n /** 斥力的一个系数 */\n this.factor = 1;\n /** 理想边长 */\n this.linkDistance = 1;\n /** 重力大小 */\n this.gravity = 10;\n /** 是否启用web worker。前提是在web worker里执行布局,否则无效\t*/\n this.workerEnabled = false;\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n this.nodeMap = {};\n this.nodeIdxMap = {};\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 2000,\n gravity: 10,\n clustering: false,\n clusterGravity: 10\n };\n }\n /**\n * 执行布局\n */\n execute() {\n return __awaiter(this, void 0, void 0, function* () {\n const self = this;\n const nodes = self.nodes;\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * self.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * self.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n self.nodeStrength = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.nodeStrength, 1);\n self.edgeStrength = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.edgeStrength, 1);\n // layout\n yield self.run();\n });\n }\n executeWithWorker(canvas, ctx) {\n const self = this;\n const nodes = self.nodes;\n const center = self.center;\n if (!nodes || nodes.length === 0) {\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * self.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * self.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n self.nodeStrength = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.nodeStrength, 1);\n self.edgeStrength = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.edgeStrength, 1);\n // layout\n self.run(canvas, ctx);\n }\n run(canvas, ctx) {\n return __awaiter(this, void 0, void 0, function* () {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const maxIteration = self.maxIteration;\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n const numParticles = nodes.length;\n self.linkDistance = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.linkDistance);\n self.edgeStrength = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.edgeStrength);\n const { maxEdgePerVetex, array: nodesEdgesArray } = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"buildTextureDataWithTwoEdgeAttr\"])(nodes, edges, self.linkDistance, self.edgeStrength);\n // init degree for mass\n self.degrees = Object(_util_math__WEBPACK_IMPORTED_MODULE_4__[\"getDegree\"])(nodes.length, self.nodeIdxMap, edges);\n const masses = [];\n const nodeStrengths = [];\n const centerXs = [];\n const centerYs = [];\n const centerGravities = [];\n const fxs = [];\n const fys = [];\n if (!self.getMass) {\n self.getMass = (d) => {\n return self.degrees[self.nodeIdxMap[d.id]] || 1;\n };\n }\n const gravity = self.gravity;\n const center = self.center;\n nodes.forEach((node, i) => {\n masses.push(self.getMass(node));\n nodeStrengths.push(self.nodeStrength(node));\n if (!self.degrees[i])\n self.degrees[i] = 0;\n let nodeGravity = [center[0], center[1], gravity];\n if (self.getCenter) {\n const customCenter = self.getCenter(node, self.degrees[i]);\n if (customCenter &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenter[0]) &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenter[1]) &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenter[2])) {\n nodeGravity = customCenter;\n }\n }\n centerXs.push(nodeGravity[0]);\n centerYs.push(nodeGravity[1]);\n centerGravities.push(nodeGravity[2]);\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fx) && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fy)) {\n fxs.push(node.fx || 0.001);\n fys.push(node.fy || 0.001);\n }\n else {\n fxs.push(0);\n fys.push(0);\n }\n });\n // 每个节点的额外属性占两个数组各一格,nodeAttributeArray1 中是:mass, degree, nodeSterngth, 0\n const nodeAttributeArray1 = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"arrayToTextureData\"])([\n masses,\n self.degrees,\n nodeStrengths,\n fxs\n ]);\n // nodeAttributeArray2 中是:centerX, centerY, gravity, 0,\n const nodeAttributeArray2 = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"arrayToTextureData\"])([\n centerXs,\n centerYs,\n centerGravities,\n fys\n ]);\n const workerEnabled = self.workerEnabled;\n let world;\n if (workerEnabled) {\n world = _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__[\"World\"].create({\n canvas,\n engineOptions: {\n supportCompute: true\n }\n });\n }\n else {\n world = _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__[\"World\"].create({\n engineOptions: {\n supportCompute: true\n }\n });\n }\n // TODO: 最终的预编译代码放入到 gForceShader.ts 中直接引入,不再需要下面三行\n // const compiler = new Compiler();\n // const gForceBundle = compiler.compileBundle(gForceCode);\n // console.log(gForceBundle.toString());\n const onLayoutEnd = self.onLayoutEnd;\n const initPreviousData = [];\n nodesEdgesArray.forEach((value) => {\n initPreviousData.push(value);\n });\n for (let i = 0; i < 4; i++) {\n initPreviousData.push(0);\n }\n const kernelGForce = world\n .createKernel(_gForceShader__WEBPACK_IMPORTED_MODULE_5__[\"gForceBundle\"])\n .setDispatch([numParticles, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray,\n u_damping: self.damping,\n u_maxSpeed: self.maxSpeed,\n u_minMovement: self.minMovement,\n u_coulombDisScale: self.coulombDisScale,\n u_factor: self.factor,\n u_NodeAttributeArray1: nodeAttributeArray1,\n u_NodeAttributeArray2: nodeAttributeArray2,\n MAX_EDGE_PER_VERTEX: maxEdgePerVetex,\n VERTEX_COUNT: numParticles,\n u_AveMovement: initPreviousData,\n u_interval: self.interval // 每次迭代更新,首次设置为 interval,在 onIterationCompleted 中更新\n });\n // const aveMovementBundle = compiler.compileBundle(aveMovementCode);\n // console.log(aveMovementBundle.toString());\n const kernelAveMovement = world\n .createKernel(_gForceShader__WEBPACK_IMPORTED_MODULE_5__[\"aveMovementBundle\"])\n .setDispatch([1, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray,\n VERTEX_COUNT: numParticles,\n u_AveMovement: [0, 0, 0, 0]\n });\n // 执行迭代\n // let midRes = nodesEdgesArray;\n const execute = () => __awaiter(this, void 0, void 0, function* () {\n for (let i = 0; i < maxIteration; i++) {\n // TODO: 似乎都来自 kernelGForce 是一个引用\n // 当前坐标作为下一次迭代的 PreviousData\n // if (i > 0) {\n // kernelAveMovement.setBinding({\n // u_PreviousData: kernelGForce\n // });\n // }\n // eslint-disable-next-line no-await-in-loop\n yield kernelGForce.execute();\n // midRes = await kernelGForce.getOutput();\n // 每次迭代完成后\n // 计算平均位移,用于提前终止迭代\n kernelAveMovement.setBinding({\n u_Data: kernelGForce\n });\n // eslint-disable-next-line no-await-in-loop\n yield kernelAveMovement.execute();\n // 更新衰减函数\n const stepInterval = Math.max(0.02, self.interval - i * 0.002);\n kernelGForce.setBinding({\n u_interval: stepInterval,\n u_AveMovement: kernelAveMovement\n });\n }\n const finalParticleData = yield kernelGForce.getOutput();\n // 所有迭代完成后\n if (canvas) {\n // 传递数据给主线程\n ctx.postMessage({\n type: _constants__WEBPACK_IMPORTED_MODULE_6__[\"LAYOUT_MESSAGE\"].GPUEND,\n vertexEdgeData: finalParticleData\n // edgeIndexBufferData,\n });\n }\n else {\n nodes.forEach((node, i) => {\n const x = finalParticleData[4 * i];\n const y = finalParticleData[4 * i + 1];\n node.x = x;\n node.y = y;\n });\n }\n if (onLayoutEnd)\n onLayoutEnd();\n });\n yield execute();\n });\n }\n getType() {\n return \"gForce-gpu\";\n }\n}\n//# sourceMappingURL=gForce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9ncHUvZ0ZvcmNlLmpzPzgzOTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixTQUFJLElBQUksU0FBSTtBQUM3QiwyQkFBMkIsK0RBQStELGdCQUFnQixFQUFFLEVBQUU7QUFDOUc7QUFDQSxtQ0FBbUMsTUFBTSw2QkFBNkIsRUFBRSxZQUFZLFdBQVcsRUFBRTtBQUNqRyxrQ0FBa0MsTUFBTSxpQ0FBaUMsRUFBRSxZQUFZLFdBQVcsRUFBRTtBQUNwRywrQkFBK0IscUZBQXFGO0FBQ3BIO0FBQ0EsS0FBSztBQUNMO0FBQytCO0FBQ087QUFDdEM7QUFDdUM7QUFDOEQ7QUFDekQ7QUFDcUI7QUFDbkI7QUFDOUM7QUFDQTtBQUNBO0FBQ08sOEJBQThCLDBDQUFJO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVE7QUFDN0I7QUFDQSxxQkFBcUIsc0RBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxnQ0FBZ0MsZ0VBQWM7QUFDOUMsZ0NBQWdDLGdFQUFjO0FBQzlDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSw0QkFBNEIsZ0VBQWM7QUFDMUMsNEJBQTRCLGdFQUFjO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLGdFQUFjO0FBQzlDLGdDQUFnQyxnRUFBYztBQUM5QyxtQkFBbUIsMENBQTBDLEdBQUcsaUZBQStCO0FBQy9GO0FBQ0EsMkJBQTJCLDREQUFTO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isc0RBQVE7QUFDaEMsd0JBQXdCLHNEQUFRO0FBQ2hDLHdCQUF3QixzREFBUTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isc0RBQVEsYUFBYSxzREFBUTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHdDQUF3QyxvRUFBa0I7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLG9FQUFrQjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG9EQUFLO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSx3QkFBd0Isb0RBQUs7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYiwyQkFBMkIsT0FBTztBQUNsQztBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsMERBQVk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsK0RBQWlCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGtCQUFrQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLHlEQUFjO0FBQzVDO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L2dwdS9nRm9yY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtbm9jaGVja1xuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IGZydWNodGVybWFuIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi4vYmFzZVwiO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tIFwiLi4vLi4vdXRpbFwiO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgV29ybGQgfSBmcm9tIFwiQGFudHYvZy13ZWJncHVcIjtcbmltcG9ydCB7IHByb2NjZXNzVG9GdW5jLCBidWlsZFRleHR1cmVEYXRhV2l0aFR3b0VkZ2VBdHRyLCBhcnJheVRvVGV4dHVyZURhdGEgfSBmcm9tIFwiLi4vLi4vdXRpbC9ncHVcIjtcbmltcG9ydCB7IGdldERlZ3JlZSB9IGZyb20gXCIuLi8uLi91dGlsL21hdGhcIjtcbmltcG9ydCB7IGdGb3JjZUJ1bmRsZSwgYXZlTW92ZW1lbnRCdW5kbGUgfSBmcm9tIFwiLi9nRm9yY2VTaGFkZXJcIjtcbmltcG9ydCB7IExBWU9VVF9NRVNTQUdFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuLyoqXG4gKiBncmFwaGluIOS4reeahCBmb3JjZSDluIPlsYBcbiAqL1xuZXhwb3J0IGNsYXNzIEdGb3JjZUdQVUxheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIOWBnOatoui/reS7o+eahOacgOWkp+i/reS7o+aVsCAqL1xuICAgICAgICB0aGlzLm1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gICAgICAgIC8qKiDlvLnnsKflvJXlipvns7vmlbAgKi9cbiAgICAgICAgdGhpcy5lZGdlU3RyZW5ndGggPSAyMDA7XG4gICAgICAgIC8qKiDmlqXlipvns7vmlbAgKi9cbiAgICAgICAgdGhpcy5ub2RlU3RyZW5ndGggPSAxMDAwO1xuICAgICAgICAvKiog5bqT5Lym57O75pWwICovXG4gICAgICAgIHRoaXMuY291bG9tYkRpc1NjYWxlID0gMC4wMDU7XG4gICAgICAgIC8qKiDpmLvlsLzns7vmlbAgKi9cbiAgICAgICAgdGhpcy5kYW1waW5nID0gMC45O1xuICAgICAgICAvKiog5pyA5aSn6YCf5bqmICovXG4gICAgICAgIHRoaXMubWF4U3BlZWQgPSAxMDAwO1xuICAgICAgICAvKiog5LiA5qyh6L+t5Luj55qE5bmz5Z2H56e75Yqo6Led56a75bCP5LqO6K+l5YC85pe25YGc5q2i6L+t5LujICovXG4gICAgICAgIHRoaXMubWluTW92ZW1lbnQgPSAwLjU7XG4gICAgICAgIC8qKiDov63ku6PkuK3oobDlh48gKi9cbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IDAuMDI7XG4gICAgICAgIC8qKiDmlqXlipvnmoTkuIDkuKrns7vmlbAgKi9cbiAgICAgICAgdGhpcy5mYWN0b3IgPSAxO1xuICAgICAgICAvKiog55CG5oOz6L656ZW/ICovXG4gICAgICAgIHRoaXMubGlua0Rpc3RhbmNlID0gMTtcbiAgICAgICAgLyoqIOmHjeWKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLmdyYXZpdHkgPSAxMDtcbiAgICAgICAgLyoqIOaYr+WQpuWQr+eUqHdlYiB3b3JrZXLjgILliY3mj5DmmK/lnKh3ZWIgd29ya2Vy6YeM5omn6KGM5biD5bGA77yM5ZCm5YiZ5peg5pWIXHQqL1xuICAgICAgICB0aGlzLndvcmtlckVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgICAgIHRoaXMud2lkdGggPSAzMDA7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMzAwO1xuICAgICAgICB0aGlzLm5vZGVNYXAgPSB7fTtcbiAgICAgICAgdGhpcy5ub2RlSWR4TWFwID0ge307XG4gICAgICAgIHRoaXMudXBkYXRlQ2ZnKG9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWF4SXRlcmF0aW9uOiAyMDAwLFxuICAgICAgICAgICAgZ3Jhdml0eTogMTAsXG4gICAgICAgICAgICBjbHVzdGVyaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGNsdXN0ZXJHcmF2aXR5OiAxMFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiafooYzluIPlsYBcbiAgICAgKi9cbiAgICBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgICAgICBpZiAoIW5vZGVzIHx8IG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzZWxmLndpZHRoICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXNlbGYuaGVpZ2h0ICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZi5jZW50ZXIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNlbnRlciA9IFtzZWxmLndpZHRoIC8gMiwgc2VsZi5oZWlnaHQgLyAyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIG5vZGVzWzBdLnggPSBjZW50ZXJbMF07XG4gICAgICAgICAgICAgICAgbm9kZXNbMF0ueSA9IGNlbnRlclsxXTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5vZGVNYXAgPSB7fTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZHhNYXAgPSB7fTtcbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTnVtYmVyKG5vZGUueCkpXG4gICAgICAgICAgICAgICAgICAgIG5vZGUueCA9IE1hdGgucmFuZG9tKCkgKiBzZWxmLndpZHRoO1xuICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS55KSlcbiAgICAgICAgICAgICAgICAgICAgbm9kZS55ID0gTWF0aC5yYW5kb20oKSAqIHNlbGYuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICAgICAgICAgICAgICAgIG5vZGVJZHhNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZWxmLm5vZGVNYXAgPSBub2RlTWFwO1xuICAgICAgICAgICAgc2VsZi5ub2RlSWR4TWFwID0gbm9kZUlkeE1hcDtcbiAgICAgICAgICAgIHNlbGYubm9kZVN0cmVuZ3RoID0gcHJvY2Nlc3NUb0Z1bmMoc2VsZi5ub2RlU3RyZW5ndGgsIDEpO1xuICAgICAgICAgICAgc2VsZi5lZGdlU3RyZW5ndGggPSBwcm9jY2Vzc1RvRnVuYyhzZWxmLmVkZ2VTdHJlbmd0aCwgMSk7XG4gICAgICAgICAgICAvLyBsYXlvdXRcbiAgICAgICAgICAgIHlpZWxkIHNlbGYucnVuKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBleGVjdXRlV2l0aFdvcmtlcihjYW52YXMsIGN0eCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBjZW50ZXIgPSBzZWxmLmNlbnRlcjtcbiAgICAgICAgaWYgKCFub2RlcyB8fCBub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBub2Rlc1swXS54ID0gY2VudGVyWzBdO1xuICAgICAgICAgICAgbm9kZXNbMF0ueSA9IGNlbnRlclsxXTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub2RlTWFwID0ge307XG4gICAgICAgIGNvbnN0IG5vZGVJZHhNYXAgPSB7fTtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc051bWJlcihub2RlLngpKVxuICAgICAgICAgICAgICAgIG5vZGUueCA9IE1hdGgucmFuZG9tKCkgKiBzZWxmLndpZHRoO1xuICAgICAgICAgICAgaWYgKCFpc051bWJlcihub2RlLnkpKVxuICAgICAgICAgICAgICAgIG5vZGUueSA9IE1hdGgucmFuZG9tKCkgKiBzZWxmLmhlaWdodDtcbiAgICAgICAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICAgICAgICAgICAgbm9kZUlkeE1hcFtub2RlLmlkXSA9IGk7XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLm5vZGVNYXAgPSBub2RlTWFwO1xuICAgICAgICBzZWxmLm5vZGVJZHhNYXAgPSBub2RlSWR4TWFwO1xuICAgICAgICBzZWxmLm5vZGVTdHJlbmd0aCA9IHByb2NjZXNzVG9GdW5jKHNlbGYubm9kZVN0cmVuZ3RoLCAxKTtcbiAgICAgICAgc2VsZi5lZGdlU3RyZW5ndGggPSBwcm9jY2Vzc1RvRnVuYyhzZWxmLmVkZ2VTdHJlbmd0aCwgMSk7XG4gICAgICAgIC8vIGxheW91dFxuICAgICAgICBzZWxmLnJ1bihjYW52YXMsIGN0eCk7XG4gICAgfVxuICAgIHJ1bihjYW52YXMsIGN0eCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgICAgICBjb25zdCBlZGdlcyA9IHNlbGYuZWRnZXM7XG4gICAgICAgICAgICBjb25zdCBtYXhJdGVyYXRpb24gPSBzZWxmLm1heEl0ZXJhdGlvbjtcbiAgICAgICAgICAgIGlmICghc2VsZi53aWR0aCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgc2VsZi53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzZWxmLmhlaWdodCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBudW1QYXJ0aWNsZXMgPSBub2Rlcy5sZW5ndGg7XG4gICAgICAgICAgICBzZWxmLmxpbmtEaXN0YW5jZSA9IHByb2NjZXNzVG9GdW5jKHNlbGYubGlua0Rpc3RhbmNlKTtcbiAgICAgICAgICAgIHNlbGYuZWRnZVN0cmVuZ3RoID0gcHJvY2Nlc3NUb0Z1bmMoc2VsZi5lZGdlU3RyZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgeyBtYXhFZGdlUGVyVmV0ZXgsIGFycmF5OiBub2Rlc0VkZ2VzQXJyYXkgfSA9IGJ1aWxkVGV4dHVyZURhdGFXaXRoVHdvRWRnZUF0dHIobm9kZXMsIGVkZ2VzLCBzZWxmLmxpbmtEaXN0YW5jZSwgc2VsZi5lZGdlU3RyZW5ndGgpO1xuICAgICAgICAgICAgLy8gaW5pdCBkZWdyZWUgZm9yIG1hc3NcbiAgICAgICAgICAgIHNlbGYuZGVncmVlcyA9IGdldERlZ3JlZShub2Rlcy5sZW5ndGgsIHNlbGYubm9kZUlkeE1hcCwgZWRnZXMpO1xuICAgICAgICAgICAgY29uc3QgbWFzc2VzID0gW107XG4gICAgICAgICAgICBjb25zdCBub2RlU3RyZW5ndGhzID0gW107XG4gICAgICAgICAgICBjb25zdCBjZW50ZXJYcyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyWXMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlckdyYXZpdGllcyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgZnhzID0gW107XG4gICAgICAgICAgICBjb25zdCBmeXMgPSBbXTtcbiAgICAgICAgICAgIGlmICghc2VsZi5nZXRNYXNzKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5nZXRNYXNzID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVncmVlc1tzZWxmLm5vZGVJZHhNYXBbZC5pZF1dIHx8IDE7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGdyYXZpdHkgPSBzZWxmLmdyYXZpdHk7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBzZWxmLmNlbnRlcjtcbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBtYXNzZXMucHVzaChzZWxmLmdldE1hc3Mobm9kZSkpO1xuICAgICAgICAgICAgICAgIG5vZGVTdHJlbmd0aHMucHVzaChzZWxmLm5vZGVTdHJlbmd0aChub2RlKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFzZWxmLmRlZ3JlZXNbaV0pXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZGVncmVlc1tpXSA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IG5vZGVHcmF2aXR5ID0gW2NlbnRlclswXSwgY2VudGVyWzFdLCBncmF2aXR5XTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5nZXRDZW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tQ2VudGVyID0gc2VsZi5nZXRDZW50ZXIobm9kZSwgc2VsZi5kZWdyZWVzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1c3RvbUNlbnRlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaXNOdW1iZXIoY3VzdG9tQ2VudGVyWzBdKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaXNOdW1iZXIoY3VzdG9tQ2VudGVyWzFdKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaXNOdW1iZXIoY3VzdG9tQ2VudGVyWzJdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUdyYXZpdHkgPSBjdXN0b21DZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2VudGVyWHMucHVzaChub2RlR3Jhdml0eVswXSk7XG4gICAgICAgICAgICAgICAgY2VudGVyWXMucHVzaChub2RlR3Jhdml0eVsxXSk7XG4gICAgICAgICAgICAgICAgY2VudGVyR3Jhdml0aWVzLnB1c2gobm9kZUdyYXZpdHlbMl0pO1xuICAgICAgICAgICAgICAgIGlmIChpc051bWJlcihub2RlLmZ4KSAmJiBpc051bWJlcihub2RlLmZ5KSkge1xuICAgICAgICAgICAgICAgICAgICBmeHMucHVzaChub2RlLmZ4IHx8IDAuMDAxKTtcbiAgICAgICAgICAgICAgICAgICAgZnlzLnB1c2gobm9kZS5meSB8fCAwLjAwMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmeHMucHVzaCgwKTtcbiAgICAgICAgICAgICAgICAgICAgZnlzLnB1c2goMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyDmr4/kuKroioLngrnnmoTpop3lpJblsZ7mgKfljaDkuKTkuKrmlbDnu4TlkITkuIDmoLzvvIxub2RlQXR0cmlidXRlQXJyYXkxIOS4reaYr++8mm1hc3MsIGRlZ3JlZSwgbm9kZVN0ZXJuZ3RoLCAwXG4gICAgICAgICAgICBjb25zdCBub2RlQXR0cmlidXRlQXJyYXkxID0gYXJyYXlUb1RleHR1cmVEYXRhKFtcbiAgICAgICAgICAgICAgICBtYXNzZXMsXG4gICAgICAgICAgICAgICAgc2VsZi5kZWdyZWVzLFxuICAgICAgICAgICAgICAgIG5vZGVTdHJlbmd0aHMsXG4gICAgICAgICAgICAgICAgZnhzXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIC8vIG5vZGVBdHRyaWJ1dGVBcnJheTIg5Lit5piv77yaY2VudGVyWCwgY2VudGVyWSwgZ3Jhdml0eSwgMCxcbiAgICAgICAgICAgIGNvbnN0IG5vZGVBdHRyaWJ1dGVBcnJheTIgPSBhcnJheVRvVGV4dHVyZURhdGEoW1xuICAgICAgICAgICAgICAgIGNlbnRlclhzLFxuICAgICAgICAgICAgICAgIGNlbnRlcllzLFxuICAgICAgICAgICAgICAgIGNlbnRlckdyYXZpdGllcyxcbiAgICAgICAgICAgICAgICBmeXNcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyRW5hYmxlZCA9IHNlbGYud29ya2VyRW5hYmxlZDtcbiAgICAgICAgICAgIGxldCB3b3JsZDtcbiAgICAgICAgICAgIGlmICh3b3JrZXJFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgd29ybGQgPSBXb3JsZC5jcmVhdGUoe1xuICAgICAgICAgICAgICAgICAgICBjYW52YXMsXG4gICAgICAgICAgICAgICAgICAgIGVuZ2luZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRDb21wdXRlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHdvcmxkID0gV29ybGQuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydENvbXB1dGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVE9ETzog5pyA57uI55qE6aKE57yW6K+R5Luj56CB5pS+5YWl5YiwIGdGb3JjZVNoYWRlci50cyDkuK3nm7TmjqXlvJXlhaXvvIzkuI3lho3pnIDopoHkuIvpnaLkuInooYxcbiAgICAgICAgICAgIC8vIGNvbnN0IGNvbXBpbGVyID0gbmV3IENvbXBpbGVyKCk7XG4gICAgICAgICAgICAvLyBjb25zdCBnRm9yY2VCdW5kbGUgPSBjb21waWxlci5jb21waWxlQnVuZGxlKGdGb3JjZUNvZGUpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZ0ZvcmNlQnVuZGxlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgY29uc3Qgb25MYXlvdXRFbmQgPSBzZWxmLm9uTGF5b3V0RW5kO1xuICAgICAgICAgICAgY29uc3QgaW5pdFByZXZpb3VzRGF0YSA9IFtdO1xuICAgICAgICAgICAgbm9kZXNFZGdlc0FycmF5LmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaW5pdFByZXZpb3VzRGF0YS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgICAgICAgICBpbml0UHJldmlvdXNEYXRhLnB1c2goMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBrZXJuZWxHRm9yY2UgPSB3b3JsZFxuICAgICAgICAgICAgICAgIC5jcmVhdGVLZXJuZWwoZ0ZvcmNlQnVuZGxlKVxuICAgICAgICAgICAgICAgIC5zZXREaXNwYXRjaChbbnVtUGFydGljbGVzLCAxLCAxXSlcbiAgICAgICAgICAgICAgICAuc2V0QmluZGluZyh7XG4gICAgICAgICAgICAgICAgdV9EYXRhOiBub2Rlc0VkZ2VzQXJyYXksXG4gICAgICAgICAgICAgICAgdV9kYW1waW5nOiBzZWxmLmRhbXBpbmcsXG4gICAgICAgICAgICAgICAgdV9tYXhTcGVlZDogc2VsZi5tYXhTcGVlZCxcbiAgICAgICAgICAgICAgICB1X21pbk1vdmVtZW50OiBzZWxmLm1pbk1vdmVtZW50LFxuICAgICAgICAgICAgICAgIHVfY291bG9tYkRpc1NjYWxlOiBzZWxmLmNvdWxvbWJEaXNTY2FsZSxcbiAgICAgICAgICAgICAgICB1X2ZhY3Rvcjogc2VsZi5mYWN0b3IsXG4gICAgICAgICAgICAgICAgdV9Ob2RlQXR0cmlidXRlQXJyYXkxOiBub2RlQXR0cmlidXRlQXJyYXkxLFxuICAgICAgICAgICAgICAgIHVfTm9kZUF0dHJpYnV0ZUFycmF5Mjogbm9kZUF0dHJpYnV0ZUFycmF5MixcbiAgICAgICAgICAgICAgICBNQVhfRURHRV9QRVJfVkVSVEVYOiBtYXhFZGdlUGVyVmV0ZXgsXG4gICAgICAgICAgICAgICAgVkVSVEVYX0NPVU5UOiBudW1QYXJ0aWNsZXMsXG4gICAgICAgICAgICAgICAgdV9BdmVNb3ZlbWVudDogaW5pdFByZXZpb3VzRGF0YSxcbiAgICAgICAgICAgICAgICB1X2ludGVydmFsOiBzZWxmLmludGVydmFsIC8vIOavj+asoei/reS7o+abtOaWsO+8jOmmluasoeiuvue9ruS4uiBpbnRlcnZhbO+8jOWcqCBvbkl0ZXJhdGlvbkNvbXBsZXRlZCDkuK3mm7TmlrBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gY29uc3QgYXZlTW92ZW1lbnRCdW5kbGUgPSBjb21waWxlci5jb21waWxlQnVuZGxlKGF2ZU1vdmVtZW50Q29kZSk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhhdmVNb3ZlbWVudEJ1bmRsZS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGNvbnN0IGtlcm5lbEF2ZU1vdmVtZW50ID0gd29ybGRcbiAgICAgICAgICAgICAgICAuY3JlYXRlS2VybmVsKGF2ZU1vdmVtZW50QnVuZGxlKVxuICAgICAgICAgICAgICAgIC5zZXREaXNwYXRjaChbMSwgMSwgMV0pXG4gICAgICAgICAgICAgICAgLnNldEJpbmRpbmcoe1xuICAgICAgICAgICAgICAgIHVfRGF0YTogbm9kZXNFZGdlc0FycmF5LFxuICAgICAgICAgICAgICAgIFZFUlRFWF9DT1VOVDogbnVtUGFydGljbGVzLFxuICAgICAgICAgICAgICAgIHVfQXZlTW92ZW1lbnQ6IFswLCAwLCAwLCAwXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyDmiafooYzov63ku6NcbiAgICAgICAgICAgIC8vIGxldCBtaWRSZXMgPSBub2Rlc0VkZ2VzQXJyYXk7XG4gICAgICAgICAgICBjb25zdCBleGVjdXRlID0gKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4SXRlcmF0aW9uOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzog5Ly85LmO6YO95p2l6IeqIGtlcm5lbEdGb3JjZSDmmK/kuIDkuKrlvJXnlKhcbiAgICAgICAgICAgICAgICAgICAgLy8g5b2T5YmN5Z2Q5qCH5L2c5Li65LiL5LiA5qyh6L+t5Luj55qEIFByZXZpb3VzRGF0YVxuICAgICAgICAgICAgICAgICAgICAvLyBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICBrZXJuZWxBdmVNb3ZlbWVudC5zZXRCaW5kaW5nKHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIHVfUHJldmlvdXNEYXRhOiBrZXJuZWxHRm9yY2VcbiAgICAgICAgICAgICAgICAgICAgLy8gICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgICAgICAgICAgICAgICB5aWVsZCBrZXJuZWxHRm9yY2UuZXhlY3V0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBtaWRSZXMgPSBhd2FpdCBrZXJuZWxHRm9yY2UuZ2V0T3V0cHV0KCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIOavj+asoei/reS7o+WujOaIkOWQjlxuICAgICAgICAgICAgICAgICAgICAvLyDorqHnrpflubPlnYfkvY3np7vvvIznlKjkuo7mj5DliY3nu4jmraLov63ku6NcbiAgICAgICAgICAgICAgICAgICAga2VybmVsQXZlTW92ZW1lbnQuc2V0QmluZGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICB1X0RhdGE6IGtlcm5lbEdGb3JjZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgICAgICAgICAgICAgeWllbGQga2VybmVsQXZlTW92ZW1lbnQuZXhlY3V0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyDmm7TmlrDoobDlh4/lh73mlbBcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RlcEludGVydmFsID0gTWF0aC5tYXgoMC4wMiwgc2VsZi5pbnRlcnZhbCAtIGkgKiAwLjAwMik7XG4gICAgICAgICAgICAgICAgICAgIGtlcm5lbEdGb3JjZS5zZXRCaW5kaW5nKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50ZXJ2YWw6IHN0ZXBJbnRlcnZhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVfQXZlTW92ZW1lbnQ6IGtlcm5lbEF2ZU1vdmVtZW50XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFBhcnRpY2xlRGF0YSA9IHlpZWxkIGtlcm5lbEdGb3JjZS5nZXRPdXRwdXQoKTtcbiAgICAgICAgICAgICAgICAvLyDmiYDmnInov63ku6PlrozmiJDlkI5cbiAgICAgICAgICAgICAgICBpZiAoY2FudmFzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOS8oOmAkuaVsOaNrue7meS4u+e6v+eoi1xuICAgICAgICAgICAgICAgICAgICBjdHgucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogTEFZT1VUX01FU1NBR0UuR1BVRU5ELFxuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4RWRnZURhdGE6IGZpbmFsUGFydGljbGVEYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlZGdlSW5kZXhCdWZmZXJEYXRhLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHggPSBmaW5hbFBhcnRpY2xlRGF0YVs0ICogaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gZmluYWxQYXJ0aWNsZURhdGFbNCAqIGkgKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUueCA9IHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLnkgPSB5O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgICAgICBvbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB5aWVsZCBleGVjdXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gXCJnRm9yY2UtZ3B1XCI7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z0ZvcmNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/gpu/gForce.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/gpu/gForceShader.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/gpu/gForceShader.js ***! \*****************************************************************/ /*! exports provided: gForceCode, gForceBundle, aveMovementCode, aveMovementBundle */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gForceCode\", function() { return gForceCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gForceBundle\", function() { return gForceBundle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"aveMovementCode\", function() { return aveMovementCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"aveMovementBundle\", function() { return aveMovementBundle; });\nconst gForceCode = `\nimport { globalInvocationID } from 'g-webgpu';\n\nconst MAX_EDGE_PER_VERTEX;\nconst VERTEX_COUNT;\nconst SHIFT_20 = 1048576;\n\n@numthreads(1, 1, 1)\nclass GGForce {\n @in @out\n u_Data: vec4[];\n\n @in\n u_damping: float;\n \n @in\n u_maxSpeed: float;\n\n @in\n u_minMovement: float;\n\n @in\n u_AveMovement: vec4[];\n\n @in\n u_coulombDisScale: float;\n\n @in\n u_factor: float;\n\n @in\n u_NodeAttributeArray1: vec4[];\n\n @in\n u_NodeAttributeArray2: vec4[];\n\n @in\n u_interval: float;\n\n unpack_float(packedValue: float): ivec2 {\n const packedIntValue = int(packedValue);\n const v0 = packedIntValue / SHIFT_20;\n return [v0, packedIntValue - v0 * SHIFT_20];\n }\n\n calcRepulsive(i: int, currentNode: vec4): vec2 {\n let ax = 0, ay = 0;\n for (let j: int = 0; j < VERTEX_COUNT; j++) {\n if (i != j) {\n const nextNode = this.u_Data[j];\n const vx = currentNode[0] - nextNode[0];\n const vy = currentNode[1] - nextNode[1];\n const dist = sqrt(vx * vx + vy * vy) + 0.01;\n const n_dist = (dist + 0.1) * this.u_coulombDisScale;\n const direx = vx / dist;\n const direy = vy / dist;\n const attributesi = this.u_NodeAttributeArray1[i];\n const attributesj = this.u_NodeAttributeArray1[j];\n const massi = attributesi[0];\n const nodeStrengthi = attributesi[2];\n const nodeStrengthj = attributesj[2];\n const nodeStrength = (nodeStrengthi + nodeStrengthj) / 2;\n // const param = nodeStrength * this.u_factor / (n_dist * n_dist * massi);\n const param = nodeStrength * this.u_factor / (n_dist * n_dist);\n ax += direx * param;\n ay += direy * param;\n }\n }\n return [ax, ay];\n }\n\n calcGravity(i: int, currentNode: vec4, attributes2: vec4): vec2 {\n // note: attributes2 = [centerX, centerY, gravity, 0]\n\n const vx = currentNode[0] - attributes2[0];\n const vy = currentNode[1] - attributes2[1];\n \n const ax = vx * attributes2[2];\n const ay = vy * attributes2[2];\n \n return [ax, ay];\n }\n\n calcAttractive(i: int, currentNode: vec4, attributes1: vec4): vec2 {\n // note: attributes1 = [mass, degree, nodeSterngth, 0]\n\n const mass = attributes1[0];\n let ax = 0, ay = 0;\n // const arr_offset = int(floor(currentNode[2] + 0.5));\n // const length = int(floor(currentNode[3] + 0.5));\n\n const compressed = this.unpack_float(currentNode[2]);\n const length = compressed[0];\n const arr_offset = compressed[1];\n\n const node_buffer: vec4;\n for (let p: int = 0; p < MAX_EDGE_PER_VERTEX; p++) {\n if (p >= length) break;\n const arr_idx = arr_offset + 4 * p; // i 节点的第 p 条边开始的小格子位置\n const buf_offset = arr_idx - arr_idx / 4 * 4;\n if (p == 0 || buf_offset == 0) {\n node_buffer = this.u_Data[int(arr_idx / 4)]; // 大格子,大格子位置=小个子位置 / 4,\n }\n\n let float_j: float = node_buffer[0];\n\n const nextNode = this.u_Data[int(float_j)];\n const vx = nextNode[0] - currentNode[0];\n const vy = nextNode[1] - currentNode[1];\n const dist = sqrt(vx * vx + vy * vy) + 0.01;\n const direx = vx / dist;\n const direy = vy / dist;\n const edgeLength = node_buffer[1];\n const edgeStrength = node_buffer[2];\n const diff: float = edgeLength - dist;//edgeLength\n // const param = diff * this.u_stiffness / mass; //\n const param = diff * edgeStrength / mass; // \n ax -= direx * param;\n ay -= direy * param;\n }\n return [ax, ay];\n }\n\n @main\n compute() {\n const i = globalInvocationID.x;\n const currentNode = this.u_Data[i];\n const movement = u_AveMovement[0];\n let ax = 0, ay = 0;\n\n if (i >= VERTEX_COUNT || movement.x < u_minMovement) {\n this.u_Data[i] = currentNode;\n return;\n }\n\n // 每个节点属性占两个数组中各一格\n // [mass, degree, nodeStrength, fx]\n const nodeAttributes1 = this.u_NodeAttributeArray1[i];\n // [centerX, centerY, centerGravity, fy]\n const nodeAttributes2 = this.u_NodeAttributeArray2[i];\n\n // repulsive\n const repulsive = this.calcRepulsive(i, currentNode);\n ax += repulsive[0];\n ay += repulsive[1];\n\n // attractive\n const attractive = this.calcAttractive(i, currentNode, nodeAttributes1);\n ax += attractive[0];\n ay += attractive[1];\n\n // gravity\n const gravity = this.calcGravity(i, currentNode, nodeAttributes2);\n ax -= gravity[0];\n ay -= gravity[1];\n\n // speed\n const param = this.u_interval * this.u_damping;\n let vx = ax * param;\n let vy = ay * param;\n const vlength = sqrt(vx * vx + vy * vy) + 0.0001;\n if (vlength > this.u_maxSpeed) {\n const param2 = this.u_maxSpeed / vlength;\n vx = param2 * vx;\n vy = param2 * vy;\n }\n\n // move\n if (nodeAttributes1[3] != 0 && nodeAttributes2[3] != 0) {\n this.u_Data[i] = [\n nodeAttributes1[3],\n nodeAttributes2[3],\n currentNode[2],\n 0\n ];\n } else {\n const distx = vx * this.u_interval;\n const disty = vy * this.u_interval;\n const distLength = sqrt(distx * distx + disty * disty);\n this.u_Data[i] = [\n currentNode[0] + distx,\n currentNode[1] + disty,\n currentNode[2],\n distLength\n ];\n }\n \n // the avarage move distance\n // need to share memory\n \n }\n}\n`;\nconst gForceBundle = `{\"shaders\":{\"WGSL\":\"import \\\\\"GLSL.std.450\\\\\" as std;\\\\n\\\\n\\\\n# var gWebGPUDebug : bool = false;\\\\n# var gWebGPUDebugOutput : vec4 = vec4(0.0);\\\\n\\\\n[[builtin global_invocation_id]] var globalInvocationID : vec3;\\\\n# [[builtin work_group_size]] var workGroupSize : vec3;\\\\n# [[builtin work_group_id]] var workGroupID : vec3;\\\\n[[builtin local_invocation_id]] var localInvocationID : vec3;\\\\n# [[builtin num_work_groups]] var numWorkGroups : vec3;\\\\n[[builtin local_invocation_idx]] var localInvocationIndex : u32;\\\\n\\\\ntype GWebGPUParams = [[block]] struct {\\\\n [[offset 0]] u_damping : f32;\\\\n [[offset 4]] u_maxSpeed : f32;\\\\n [[offset 8]] u_minMovement : f32;\\\\n \\\\n [[offset 12]] u_coulombDisScale : f32;\\\\n [[offset 16]] u_factor : f32;\\\\n \\\\n \\\\n [[offset 20]] u_interval : f32;\\\\n};\\\\n[[binding 0, set 0]] var gWebGPUUniformParams : GWebGPUParams;\\\\ntype GWebGPUBuffer0 = [[block]] struct {\\\\n [[offset 0]] u_Data : [[stride 16]] array>;\\\\n};\\\\n[[binding 1, set 0]] var gWebGPUBuffer0 : GWebGPUBuffer0;\\\\ntype GWebGPUBuffer1 = [[block]] struct {\\\\n [[offset 0]] u_AveMovement : [[stride 16]] array>;\\\\n};\\\\n[[binding 2, set 0]] var gWebGPUBuffer1 : GWebGPUBuffer1;\\\\ntype GWebGPUBuffer2 = [[block]] struct {\\\\n [[offset 0]] u_NodeAttributeArray1 : [[stride 16]] array>;\\\\n};\\\\n[[binding 3, set 0]] var gWebGPUBuffer2 : GWebGPUBuffer2;\\\\ntype GWebGPUBuffer3 = [[block]] struct {\\\\n [[offset 0]] u_NodeAttributeArray2 : [[stride 16]] array>;\\\\n};\\\\n[[binding 4, set 0]] var gWebGPUBuffer3 : GWebGPUBuffer3;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nfn unpack_float(packedValue : f32) -> vec2 {var packedIntValue : i32 = i32(packedValue);\\\\nvar v0 : i32 = packedIntValue / 1048576;\\\\nreturn vec2(v0, packedIntValue - (v0 * 1048576));}\\\\nfn calcRepulsive(i : i32, currentNode : vec4) -> vec2 {var ax : f32 = 0.0;\\\\nvar ay : f32 = 0.0;\\\\nfor (var j : i32 = 0; j < __DefineValuePlaceholder__VERTEX_COUNT; j = j + 1) {if (i != j) {var nextNode : vec4 = gWebGPUBuffer0.u_Data[j];\\\\nvar vx : f32 = currentNode.x - nextNode.x;\\\\nvar vy : f32 = currentNode.y - nextNode.y;\\\\nvar dist : f32 = std::sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nvar n_dist : f32 = (dist + 0.1) * gWebGPUUniformParams.u_coulombDisScale;\\\\nvar direx : f32 = vx / dist;\\\\nvar direy : f32 = vy / dist;\\\\nvar attributesi : vec4 = gWebGPUBuffer2.u_NodeAttributeArray1[i];\\\\nvar attributesj : vec4 = gWebGPUBuffer2.u_NodeAttributeArray1[j];\\\\nvar massi : f32 = attributesi.x;\\\\nvar nodeStrengthi : f32 = attributesi.z;\\\\nvar nodeStrengthj : f32 = attributesj.z;\\\\nvar nodeStrength : f32 = (nodeStrengthi + nodeStrengthj) / 2.0;\\\\nvar param : f32 = (nodeStrength * gWebGPUUniformParams.u_factor) / (n_dist * n_dist);\\\\nax = ax + direx * param;\\\\nay = ay + direy * param;}}\\\\nreturn vec2(ax, ay);}\\\\nfn calcGravity(i : i32, currentNode : vec4, attributes2 : vec4) -> vec2 {var vx : f32 = currentNode.x - attributes2.x;\\\\nvar vy : f32 = currentNode.y - attributes2.y;\\\\nvar ax : f32 = vx * attributes2.z;\\\\nvar ay : f32 = vy * attributes2.z;\\\\nreturn vec2(ax, ay);}\\\\nfn calcAttractive(i : i32, currentNode : vec4, attributes1 : vec4) -> vec2 {var mass : f32 = attributes1.x;\\\\nvar ax : f32 = 0.0;\\\\nvar ay : f32 = 0.0;\\\\nvar compressed : vec2 = unpack_float(currentNode.z);\\\\nvar length : i32 = compressed.x;\\\\nvar arr_offset : i32 = compressed.y;\\\\nvar node_buffer : vec4;\\\\nfor (var p : i32 = 0; p < __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX; p = p + 1) {if (p >= length) {break;}\\\\nvar arr_idx : i32 = arr_offset + (4 * p);\\\\nvar buf_offset : i32 = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = gWebGPUBuffer0.u_Data[i32(arr_idx / 4)];}\\\\nvar float_j : f32 = node_buffer.x;\\\\nvar nextNode : vec4 = gWebGPUBuffer0.u_Data[i32(float_j)];\\\\nvar vx : f32 = nextNode.x - currentNode.x;\\\\nvar vy : f32 = nextNode.y - currentNode.y;\\\\nvar dist : f32 = std::sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nvar direx : f32 = vx / dist;\\\\nvar direy : f32 = vy / dist;\\\\nvar edgeLength : f32 = node_buffer.y;\\\\nvar edgeStrength : f32 = node_buffer.z;\\\\nvar diff : f32 = edgeLength - dist;\\\\nvar param : f32 = (diff * edgeStrength) / mass;\\\\nax = ax - direx * param;\\\\nay = ay - direy * param;}\\\\nreturn vec2(ax, ay);}\\\\nfn main() -> void {var i : i32 = globalInvocationID.x;\\\\nvar currentNode : vec4 = gWebGPUBuffer0.u_Data[i];\\\\nvar movement : vec4 = gWebGPUBuffer1.u_AveMovement[0];\\\\nvar ax : f32 = 0.0;\\\\nvar ay : f32 = 0.0;\\\\nif ((i >= __DefineValuePlaceholder__VERTEX_COUNT) || (movement.x < gWebGPUUniformParams.u_minMovement)) {gWebGPUBuffer0.u_Data[i] = currentNode;\\\\nreturn ;}\\\\nvar nodeAttributes1 : vec4 = gWebGPUBuffer2.u_NodeAttributeArray1[i];\\\\nvar nodeAttributes2 : vec4 = gWebGPUBuffer3.u_NodeAttributeArray2[i];\\\\nvar repulsive : vec2 = calcRepulsive(i, currentNode);\\\\nax = ax + repulsive.x;\\\\nay = ay + repulsive.y;\\\\nvar attractive : vec2 = calcAttractive(i, currentNode, nodeAttributes1);\\\\nax = ax + attractive.x;\\\\nay = ay + attractive.y;\\\\nvar gravity : vec2 = calcGravity(i, currentNode, nodeAttributes2);\\\\nax = ax - gravity.x;\\\\nay = ay - gravity.y;\\\\nvar param : f32 = gWebGPUUniformParams.u_interval * gWebGPUUniformParams.u_damping;\\\\nvar vx : f32 = ax * param;\\\\nvar vy : f32 = ay * param;\\\\nvar vlength : f32 = std::sqrt((vx * vx) + (vy * vy)) + 0.0001;\\\\nif (vlength > gWebGPUUniformParams.u_maxSpeed) {var param2 : f32 = gWebGPUUniformParams.u_maxSpeed / vlength;\\\\nvx = param2 * vx;\\\\nvy = param2 * vy;}\\\\nvar distx : f32 = vx * gWebGPUUniformParams.u_interval;\\\\nvar disty : f32 = vy * gWebGPUUniformParams.u_interval;\\\\nvar distLength : f32 = std::sqrt((distx * distx) + (disty * disty));\\\\nif ((nodeAttributes1.w != 0.0) && (nodeAttributes2.w != 0.0)) {gWebGPUBuffer0.u_Data[i] = vec4(nodeAttributes1.w, nodeAttributes2.w, currentNode.z, 0.0);}else {gWebGPUBuffer0.u_Data[i] = vec4(currentNode.x + distx, currentNode.y + disty, currentNode.z, distLength);}\\\\nreturn;}\\\\n\\\\nentry_point compute as \\\\\"main\\\\\" = main;\\\\n\",\"GLSL450\":\"\\\\n\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\nivec3 globalInvocationID = ivec3(gl_GlobalInvocationID);\\\\nivec3 workGroupSize = ivec3(1,1,1);\\\\nivec3 workGroupID = ivec3(gl_WorkGroupID);\\\\nivec3 localInvocationID = ivec3(gl_LocalInvocationID);\\\\nivec3 numWorkGroups = ivec3(gl_NumWorkGroups);\\\\nint localInvocationIndex = int(gl_LocalInvocationIndex);\\\\n\\\\nlayout(std140, set = 0, binding = 0) uniform GWebGPUParams {\\\\n float u_damping;\\\\n float u_maxSpeed;\\\\n float u_minMovement;\\\\n \\\\n float u_coulombDisScale;\\\\n float u_factor;\\\\n \\\\n \\\\n float u_interval;\\\\n} gWebGPUUniformParams;\\\\nlayout(std430, set = 0, binding = 1) buffer GWebGPUBuffer0 {\\\\n vec4 u_Data[];\\\\n} gWebGPUBuffer0;\\\\n\\\\nlayout(std430, set = 0, binding = 2) buffer readonly GWebGPUBuffer1 {\\\\n vec4 u_AveMovement[];\\\\n} gWebGPUBuffer1;\\\\n\\\\nlayout(std430, set = 0, binding = 3) buffer readonly GWebGPUBuffer2 {\\\\n vec4 u_NodeAttributeArray1[];\\\\n} gWebGPUBuffer2;\\\\n\\\\nlayout(std430, set = 0, binding = 4) buffer readonly GWebGPUBuffer3 {\\\\n vec4 u_NodeAttributeArray2[];\\\\n} gWebGPUBuffer3;\\\\n\\\\n\\\\n\\\\n#define MAX_EDGE_PER_VERTEX __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n#define SHIFT_20 1048576.0\\\\nlayout (\\\\n local_size_x = 1,\\\\n local_size_y = 1,\\\\n local_size_z = 1\\\\n) in;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nivec2 unpack_float(float packedValue) {int packedIntValue = int(packedValue);\\\\nint v0 = packedIntValue / int(SHIFT_20);\\\\nreturn ivec2(v0, packedIntValue - (v0 * int(SHIFT_20)));}\\\\nvec2 calcRepulsive(int i, vec4 currentNode) {float ax = 0.0;\\\\nfloat ay = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {if (i != j) {vec4 nextNode = gWebGPUBuffer0.u_Data[j];\\\\nfloat vx = currentNode.x - nextNode.x;\\\\nfloat vy = currentNode.y - nextNode.y;\\\\nfloat dist = sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nfloat n_dist = (dist + 0.1) * gWebGPUUniformParams.u_coulombDisScale;\\\\nfloat direx = vx / dist;\\\\nfloat direy = vy / dist;\\\\nvec4 attributesi = gWebGPUBuffer2.u_NodeAttributeArray1[i];\\\\nvec4 attributesj = gWebGPUBuffer2.u_NodeAttributeArray1[j];\\\\nfloat massi = attributesi.x;\\\\nfloat nodeStrengthi = attributesi.z;\\\\nfloat nodeStrengthj = attributesj.z;\\\\nfloat nodeStrength = (nodeStrengthi + nodeStrengthj) / 2.0;\\\\nfloat param = (nodeStrength * gWebGPUUniformParams.u_factor) / (n_dist * n_dist);\\\\nax += direx * param;\\\\nay += direy * param;}}\\\\nreturn vec2(ax, ay);}\\\\nvec2 calcGravity(int i, vec4 currentNode, vec4 attributes2) {float vx = currentNode.x - attributes2.x;\\\\nfloat vy = currentNode.y - attributes2.y;\\\\nfloat ax = vx * attributes2.z;\\\\nfloat ay = vy * attributes2.z;\\\\nreturn vec2(ax, ay);}\\\\nvec2 calcAttractive(int i, vec4 currentNode, vec4 attributes1) {float mass = attributes1.x;\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nivec2 compressed = unpack_float(currentNode.z);\\\\nint length = compressed.x;\\\\nint arr_offset = compressed.y;\\\\nvec4 node_buffer;\\\\nfor (int p = 0; p < MAX_EDGE_PER_VERTEX; p++) {if (p >= length) {break;}\\\\nint arr_idx = arr_offset + (4 * p);\\\\nint buf_offset = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = gWebGPUBuffer0.u_Data[int(arr_idx / 4)];}\\\\nfloat float_j = node_buffer.x;\\\\nvec4 nextNode = gWebGPUBuffer0.u_Data[int(float_j)];\\\\nfloat vx = nextNode.x - currentNode.x;\\\\nfloat vy = nextNode.y - currentNode.y;\\\\nfloat dist = sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nfloat direx = vx / dist;\\\\nfloat direy = vy / dist;\\\\nfloat edgeLength = node_buffer.y;\\\\nfloat edgeStrength = node_buffer.z;\\\\nfloat diff = edgeLength - dist;\\\\nfloat param = (diff * edgeStrength) / mass;\\\\nax -= direx * param;\\\\nay -= direy * param;}\\\\nreturn vec2(ax, ay);}\\\\nvoid main() {int i = globalInvocationID.x;\\\\nvec4 currentNode = gWebGPUBuffer0.u_Data[i];\\\\nvec4 movement = gWebGPUBuffer1.u_AveMovement[0];\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nif ((i >= VERTEX_COUNT) || (movement.x < gWebGPUUniformParams.u_minMovement)) {gWebGPUBuffer0.u_Data[i] = currentNode;\\\\nreturn ;}\\\\nvec4 nodeAttributes1 = gWebGPUBuffer2.u_NodeAttributeArray1[i];\\\\nvec4 nodeAttributes2 = gWebGPUBuffer3.u_NodeAttributeArray2[i];\\\\nvec2 repulsive = calcRepulsive(i, currentNode);\\\\nax += repulsive.x;\\\\nay += repulsive.y;\\\\nvec2 attractive = calcAttractive(i, currentNode, nodeAttributes1);\\\\nax += attractive.x;\\\\nay += attractive.y;\\\\nvec2 gravity = calcGravity(i, currentNode, nodeAttributes2);\\\\nax -= gravity.x;\\\\nay -= gravity.y;\\\\nfloat param = gWebGPUUniformParams.u_interval * gWebGPUUniformParams.u_damping;\\\\nfloat vx = ax * param;\\\\nfloat vy = ay * param;\\\\nfloat vlength = sqrt((vx * vx) + (vy * vy)) + 0.0001;\\\\nif (vlength > gWebGPUUniformParams.u_maxSpeed) {float param2 = gWebGPUUniformParams.u_maxSpeed / vlength;\\\\nvx = param2 * vx;\\\\nvy = param2 * vy;}\\\\nfloat distx = vx * gWebGPUUniformParams.u_interval;\\\\nfloat disty = vy * gWebGPUUniformParams.u_interval;\\\\nfloat distLength = sqrt((distx * distx) + (disty * disty));\\\\nif ((nodeAttributes1.w != 0.0) && (nodeAttributes2.w != 0.0)) {gWebGPUBuffer0.u_Data[i] = vec4(nodeAttributes1.w, nodeAttributes2.w, currentNode.z, 0.0);}else {gWebGPUBuffer0.u_Data[i] = vec4(currentNode.x + distx, currentNode.y + disty, currentNode.z, distLength);}}\\\\n\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define MAX_EDGE_PER_VERTEX __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n#define SHIFT_20 1048576.0\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform float u_damping;\\\\nuniform float u_maxSpeed;\\\\nuniform float u_minMovement;\\\\nuniform sampler2D u_AveMovement;\\\\nuniform vec2 u_AveMovementSize;\\\\nvec4 getDatau_AveMovement(vec2 address2D) {\\\\n return vec4(texture2D(u_AveMovement, address2D).rgba);\\\\n}\\\\nvec4 getDatau_AveMovement(float address1D) {\\\\n return getDatau_AveMovement(addrTranslation_1Dto2D(address1D, u_AveMovementSize));\\\\n}\\\\nvec4 getDatau_AveMovement(int address1D) {\\\\n return getDatau_AveMovement(float(address1D));\\\\n}\\\\nuniform float u_coulombDisScale;\\\\nuniform float u_factor;\\\\nuniform sampler2D u_NodeAttributeArray1;\\\\nuniform vec2 u_NodeAttributeArray1Size;\\\\nvec4 getDatau_NodeAttributeArray1(vec2 address2D) {\\\\n return vec4(texture2D(u_NodeAttributeArray1, address2D).rgba);\\\\n}\\\\nvec4 getDatau_NodeAttributeArray1(float address1D) {\\\\n return getDatau_NodeAttributeArray1(addrTranslation_1Dto2D(address1D, u_NodeAttributeArray1Size));\\\\n}\\\\nvec4 getDatau_NodeAttributeArray1(int address1D) {\\\\n return getDatau_NodeAttributeArray1(float(address1D));\\\\n}\\\\nuniform sampler2D u_NodeAttributeArray2;\\\\nuniform vec2 u_NodeAttributeArray2Size;\\\\nvec4 getDatau_NodeAttributeArray2(vec2 address2D) {\\\\n return vec4(texture2D(u_NodeAttributeArray2, address2D).rgba);\\\\n}\\\\nvec4 getDatau_NodeAttributeArray2(float address1D) {\\\\n return getDatau_NodeAttributeArray2(addrTranslation_1Dto2D(address1D, u_NodeAttributeArray2Size));\\\\n}\\\\nvec4 getDatau_NodeAttributeArray2(int address1D) {\\\\n return getDatau_NodeAttributeArray2(float(address1D));\\\\n}\\\\nuniform float u_interval;\\\\nivec2 unpack_float(float packedValue) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint packedIntValue = int(packedValue);\\\\nint v0 = packedIntValue / int(SHIFT_20);\\\\nreturn ivec2(v0, packedIntValue - (v0 * int(SHIFT_20)));}\\\\nvec2 calcRepulsive(int i, vec4 currentNode) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {if (i != j) {vec4 nextNode = getDatau_Data(j);\\\\nfloat vx = currentNode.x - nextNode.x;\\\\nfloat vy = currentNode.y - nextNode.y;\\\\nfloat dist = sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nfloat n_dist = (dist + 0.1) * u_coulombDisScale;\\\\nfloat direx = vx / dist;\\\\nfloat direy = vy / dist;\\\\nvec4 attributesi = getDatau_NodeAttributeArray1(i);\\\\nvec4 attributesj = getDatau_NodeAttributeArray1(j);\\\\nfloat massi = attributesi.x;\\\\nfloat nodeStrengthi = attributesi.z;\\\\nfloat nodeStrengthj = attributesj.z;\\\\nfloat nodeStrength = (nodeStrengthi + nodeStrengthj) / 2.0;\\\\nfloat param = (nodeStrength * u_factor) / (n_dist * n_dist);\\\\nax += direx * param;\\\\nay += direy * param;}}\\\\nreturn vec2(ax, ay);}\\\\nvec2 calcGravity(int i, vec4 currentNode, vec4 attributes2) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat vx = currentNode.x - attributes2.x;\\\\nfloat vy = currentNode.y - attributes2.y;\\\\nfloat ax = vx * attributes2.z;\\\\nfloat ay = vy * attributes2.z;\\\\nreturn vec2(ax, ay);}\\\\nvec2 calcAttractive(int i, vec4 currentNode, vec4 attributes1) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat mass = attributes1.x;\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nivec2 compressed = unpack_float(currentNode.z);\\\\nint length = compressed.x;\\\\nint arr_offset = compressed.y;\\\\nvec4 node_buffer;\\\\nfor (int p = 0; p < MAX_EDGE_PER_VERTEX; p++) {if (p >= length) {break;}\\\\nint arr_idx = arr_offset + (4 * p);\\\\nint buf_offset = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = getDatau_Data(int(arr_idx / 4));}\\\\nfloat float_j = node_buffer.x;\\\\nvec4 nextNode = getDatau_Data(int(float_j));\\\\nfloat vx = nextNode.x - currentNode.x;\\\\nfloat vy = nextNode.y - currentNode.y;\\\\nfloat dist = sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nfloat direx = vx / dist;\\\\nfloat direy = vy / dist;\\\\nfloat edgeLength = node_buffer.y;\\\\nfloat edgeStrength = node_buffer.z;\\\\nfloat diff = edgeLength - dist;\\\\nfloat param = (diff * edgeStrength) / mass;\\\\nax -= direx * param;\\\\nay -= direy * param;}\\\\nreturn vec2(ax, ay);}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint i = globalInvocationID.x;\\\\nvec4 currentNode = getDatau_Data(i);\\\\nvec4 movement = getDatau_AveMovement(0.0);\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nif ((i >= VERTEX_COUNT) || (movement.x < u_minMovement)) {gl_FragColor = vec4(currentNode);\\\\nreturn ;}\\\\nvec4 nodeAttributes1 = getDatau_NodeAttributeArray1(i);\\\\nvec4 nodeAttributes2 = getDatau_NodeAttributeArray2(i);\\\\nvec2 repulsive = calcRepulsive(i, currentNode);\\\\nax += repulsive.x;\\\\nay += repulsive.y;\\\\nvec2 attractive = calcAttractive(i, currentNode, nodeAttributes1);\\\\nax += attractive.x;\\\\nay += attractive.y;\\\\nvec2 gravity = calcGravity(i, currentNode, nodeAttributes2);\\\\nax -= gravity.x;\\\\nay -= gravity.y;\\\\nfloat param = u_interval * u_damping;\\\\nfloat vx = ax * param;\\\\nfloat vy = ay * param;\\\\nfloat vlength = sqrt((vx * vx) + (vy * vy)) + 0.0001;\\\\nif (vlength > u_maxSpeed) {float param2 = u_maxSpeed / vlength;\\\\nvx = param2 * vx;\\\\nvy = param2 * vy;}\\\\nfloat distx = vx * u_interval;\\\\nfloat disty = vy * u_interval;\\\\nfloat distLength = sqrt((distx * distx) + (disty * disty));\\\\nif ((nodeAttributes1.w != 0.0) && (nodeAttributes2.w != 0.0)) {gl_FragColor = vec4(vec4(nodeAttributes1.w, nodeAttributes2.w, currentNode.z, 0.0));}else {gl_FragColor = vec4(vec4(currentNode.x + distx, currentNode.y + disty, currentNode.z, distLength));}if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"MAX_EDGE_PER_VERTEX\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"SHIFT_20\",\"type\":\"Float\",\"value\":1048576,\"runtime\":false}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_damping\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_maxSpeed\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_minMovement\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_AveMovement\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_coulombDisScale\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_factor\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_NodeAttributeArray1\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_NodeAttributeArray2\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_interval\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_Data\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\nconst aveMovementCode = `\nconst VERTEX_COUNT;\n@numthreads(1, 1, 1)\nclass CalcAveMovement {\n @in\n u_Data: vec4[];\n @in\n u_iter: float;\n @in @out\n u_AveMovement: vec4[];\n @main\n compute() {\n let movement = 0;\n for (let j: int = 0; j < VERTEX_COUNT; j++) {\n const vertex = this.u_Data[j];\n movement += vertex[3];\n }\n movement = movement / float(VERTEX_COUNT);\n this.u_AveMovement[0] = [movement, 0, 0, 0];\n }\n}\n`;\nconst aveMovementBundle = `{\"shaders\":{\"WGSL\":\"import \\\\\"GLSL.std.450\\\\\" as std;\\\\n\\\\n\\\\n# var gWebGPUDebug : bool = false;\\\\n# var gWebGPUDebugOutput : vec4 = vec4(0.0);\\\\n\\\\n[[builtin global_invocation_id]] var globalInvocationID : vec3;\\\\n# [[builtin work_group_size]] var workGroupSize : vec3;\\\\n# [[builtin work_group_id]] var workGroupID : vec3;\\\\n[[builtin local_invocation_id]] var localInvocationID : vec3;\\\\n# [[builtin num_work_groups]] var numWorkGroups : vec3;\\\\n[[builtin local_invocation_idx]] var localInvocationIndex : u32;\\\\n\\\\ntype GWebGPUParams = [[block]] struct {\\\\n [[offset 0]] u_iter : f32;\\\\n};\\\\n[[binding 0, set 0]] var gWebGPUUniformParams : GWebGPUParams;\\\\ntype GWebGPUBuffer0 = [[block]] struct {\\\\n [[offset 0]] u_Data : [[stride 16]] array>;\\\\n};\\\\n[[binding 1, set 0]] var gWebGPUBuffer0 : GWebGPUBuffer0;\\\\ntype GWebGPUBuffer1 = [[block]] struct {\\\\n [[offset 0]] u_AveMovement : [[stride 16]] array>;\\\\n};\\\\n[[binding 2, set 0]] var gWebGPUBuffer1 : GWebGPUBuffer1;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nfn main() -> void {var movement : f32 = 0.0;\\\\nfor (var j : i32 = 0; j < __DefineValuePlaceholder__VERTEX_COUNT; j = j + 1) {var vertex : vec4 = gWebGPUBuffer0.u_Data[j];\\\\nmovement = movement + vertex.w;}\\\\nmovement = movement / f32(__DefineValuePlaceholder__VERTEX_COUNT);\\\\ngWebGPUBuffer1.u_AveMovement[0] = vec4(movement, 0.0, 0.0, 0.0);\\\\nreturn;}\\\\n\\\\nentry_point compute as \\\\\"main\\\\\" = main;\\\\n\",\"GLSL450\":\"\\\\n\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\nivec3 globalInvocationID = ivec3(gl_GlobalInvocationID);\\\\nivec3 workGroupSize = ivec3(1,1,1);\\\\nivec3 workGroupID = ivec3(gl_WorkGroupID);\\\\nivec3 localInvocationID = ivec3(gl_LocalInvocationID);\\\\nivec3 numWorkGroups = ivec3(gl_NumWorkGroups);\\\\nint localInvocationIndex = int(gl_LocalInvocationIndex);\\\\n\\\\nlayout(std140, set = 0, binding = 0) uniform GWebGPUParams {\\\\n float u_iter;\\\\n} gWebGPUUniformParams;\\\\nlayout(std430, set = 0, binding = 1) buffer readonly GWebGPUBuffer0 {\\\\n vec4 u_Data[];\\\\n} gWebGPUBuffer0;\\\\n\\\\nlayout(std430, set = 0, binding = 2) buffer GWebGPUBuffer1 {\\\\n vec4 u_AveMovement[];\\\\n} gWebGPUBuffer1;\\\\n\\\\n\\\\n\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\nlayout (\\\\n local_size_x = 1,\\\\n local_size_y = 1,\\\\n local_size_z = 1\\\\n) in;\\\\n\\\\n\\\\n\\\\nvoid main() {float movement = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {vec4 vertex = gWebGPUBuffer0.u_Data[j];\\\\nmovement += vertex.w;}\\\\nmovement = movement / float(VERTEX_COUNT);\\\\ngWebGPUBuffer1.u_AveMovement[0] = vec4(movement, 0.0, 0.0, 0.0);}\\\\n\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform float u_iter;\\\\nuniform sampler2D u_AveMovement;\\\\nuniform vec2 u_AveMovementSize;\\\\nvec4 getDatau_AveMovement(vec2 address2D) {\\\\n return vec4(texture2D(u_AveMovement, address2D).rgba);\\\\n}\\\\nvec4 getDatau_AveMovement(float address1D) {\\\\n return getDatau_AveMovement(addrTranslation_1Dto2D(address1D, u_AveMovementSize));\\\\n}\\\\nvec4 getDatau_AveMovement(int address1D) {\\\\n return getDatau_AveMovement(float(address1D));\\\\n}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat movement = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {vec4 vertex = getDatau_Data(j);\\\\nmovement += vertex.w;}\\\\nmovement = movement / float(VERTEX_COUNT);\\\\ngl_FragColor = vec4(vec4(movement, 0.0, 0.0, 0.0));if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_iter\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_AveMovement\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_AveMovement\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\n//# sourceMappingURL=gForceShader.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9ncHUvZ0ZvcmNlU2hhZGVyLmpzP2E5N2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1AsUUFBUSxxQkFBcUI7O0FBRTdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IseUJBQXlCO0FBQ2pEO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQSxvREFBb0Q7QUFDcEQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QyxzREFBc0Q7QUFDdEQsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPLHVCQUF1QixXQUFXLHlDQUF5QywyQ0FBMkMseURBQXlELDhFQUE4RSxtRUFBbUUsK0RBQStELHlFQUF5RSxtRUFBbUUsdUVBQXVFLDZDQUE2QyxrQ0FBa0MsbUNBQW1DLHNDQUFzQyxnREFBZ0Qsa0NBQWtDLDhDQUE4QyxLQUFLLDBFQUEwRSwyQ0FBMkMsMERBQTBELEtBQUssNEVBQTRFLDJDQUEyQyxpRUFBaUUsS0FBSyw0RUFBNEUsMkNBQTJDLHlFQUF5RSxLQUFLLDRFQUE0RSwyQ0FBMkMseUVBQXlFLEtBQUssNEVBQTRFLHVHQUF1Ryw0Q0FBNEMsMkNBQTJDLDBEQUEwRCxvRUFBb0UsbUJBQW1CLHNCQUFzQix3QkFBd0IsNENBQTRDLGFBQWEsYUFBYSxvREFBb0QsNkNBQTZDLDZDQUE2Qyw0REFBNEQsNEVBQTRFLCtCQUErQiwrQkFBK0IseUVBQXlFLHlFQUF5RSxtQ0FBbUMsMkNBQTJDLDJDQUEyQyxrRUFBa0Usd0ZBQXdGLDJCQUEyQiw2QkFBNkIsNkJBQTZCLDJGQUEyRiw2Q0FBNkMsZ0RBQWdELHFDQUFxQyxxQ0FBcUMsNkJBQTZCLDhGQUE4RiwrQkFBK0Isc0JBQXNCLHNCQUFzQiw0REFBNEQsbUNBQW1DLHVDQUF1QywrQkFBK0Isd0JBQXdCLG1EQUFtRCxhQUFhLGtCQUFrQixPQUFPLDRDQUE0Qyx3REFBd0QsdUNBQXVDLHVEQUF1RCxxQ0FBcUMsa0VBQWtFLDZDQUE2Qyw2Q0FBNkMsNERBQTRELCtCQUErQiwrQkFBK0Isd0NBQXdDLDBDQUEwQyxzQ0FBc0Msa0RBQWtELDJCQUEyQiw0QkFBNEIsNkJBQTZCLHNCQUFzQixtQ0FBbUMsMERBQTBELDhEQUE4RCxzQkFBc0Isc0JBQXNCLDRHQUE0Ryx1Q0FBdUMsWUFBWSw2RUFBNkUsNkVBQTZFLDZEQUE2RCx5QkFBeUIseUJBQXlCLGdGQUFnRiwwQkFBMEIsMEJBQTBCLDBFQUEwRSx1QkFBdUIsdUJBQXVCLHNGQUFzRiw2QkFBNkIsNkJBQTZCLGlFQUFpRSxtREFBbUQsNkRBQTZELG9CQUFvQixxQkFBcUIsMERBQTBELDBEQUEwRCx1RUFBdUUsa0VBQWtFLGdHQUFnRyxNQUFNLCtHQUErRyxXQUFXLCtDQUErQyxtREFBbUQsdUNBQXVDLDhEQUE4RCxzQ0FBc0MsNkNBQTZDLHlEQUF5RCxpREFBaUQsMkRBQTJELGtFQUFrRSxxQkFBcUIsc0JBQXNCLHlCQUF5QixrQ0FBa0Msb0JBQW9CLGdDQUFnQyxJQUFJLHNCQUFzQixpRUFBaUUsbUJBQW1CLElBQUksZ0JBQWdCLDRFQUE0RSwwQkFBMEIsSUFBSSxnQkFBZ0IsNEVBQTRFLGtDQUFrQyxJQUFJLGdCQUFnQiw0RUFBNEUsa0NBQWtDLElBQUksZ0JBQWdCLG9RQUFvUSx3RUFBd0Usc0NBQXNDLDJDQUEyQyw0REFBNEQsZ0RBQWdELGVBQWUsa0JBQWtCLGtCQUFrQixrQkFBa0IsT0FBTyxhQUFhLHlDQUF5Qyx5Q0FBeUMseUNBQXlDLG1EQUFtRCx3RUFBd0UsMkJBQTJCLDJCQUEyQiw4REFBOEQsOERBQThELCtCQUErQix1Q0FBdUMsdUNBQXVDLDhEQUE4RCxvRkFBb0YsdUJBQXVCLHlCQUF5Qix3QkFBd0IsZ0VBQWdFLHlDQUF5Qyw0Q0FBNEMsaUNBQWlDLGlDQUFpQyx3QkFBd0IsbUVBQW1FLDJCQUEyQixrQkFBa0Isa0JBQWtCLGtEQUFrRCw2QkFBNkIsaUNBQWlDLG9CQUFvQixrQkFBa0IseUJBQXlCLE9BQU8sa0JBQWtCLE9BQU8sc0NBQXNDLGtEQUFrRCx1Q0FBdUMsdURBQXVELGlDQUFpQyx1REFBdUQseUNBQXlDLHlDQUF5QyxtREFBbUQsMkJBQTJCLDJCQUEyQixvQ0FBb0Msc0NBQXNDLGtDQUFrQyw4Q0FBOEMsdUJBQXVCLHdCQUF3Qix3QkFBd0IsZ0JBQWdCLDZCQUE2QiwrQ0FBK0MsbURBQW1ELGtCQUFrQixrQkFBa0Isa0ZBQWtGLHVDQUF1QyxZQUFZLGtFQUFrRSxrRUFBa0Usa0RBQWtELHFCQUFxQixxQkFBcUIscUVBQXFFLHNCQUFzQixzQkFBc0IsK0RBQStELG1CQUFtQixtQkFBbUIsa0ZBQWtGLHlCQUF5Qix5QkFBeUIsd0RBQXdELG1EQUFtRCx5REFBeUQsb0JBQW9CLHFCQUFxQixzREFBc0Qsc0RBQXNELDhEQUE4RCxrRUFBa0UsMkZBQTJGLE1BQU0sMkdBQTJHLDhDQUE4QywrREFBK0QsNEVBQTRFLHFEQUFxRCw4REFBOEQsSUFBSSx1QkFBdUIsNENBQTRDLGtDQUFrQywyQkFBMkIsZ0NBQWdDLHVDQUF1Qyx5TUFBeU0sMkJBQTJCLHVDQUF1QyxvREFBb0QsSUFBSSx3Q0FBd0MseUVBQXlFLElBQUksc0NBQXNDLDRDQUE0QyxJQUFJLDJCQUEyQiw0QkFBNEIsK0JBQStCLG1DQUFtQyxrQ0FBa0MsOENBQThDLDJEQUEyRCxJQUFJLCtDQUErQyx1RkFBdUYsSUFBSSw2Q0FBNkMsbURBQW1ELElBQUksbUNBQW1DLDBCQUEwQiwyQ0FBMkMsMENBQTBDLHNEQUFzRCxtRUFBbUUsSUFBSSx1REFBdUQsdUdBQXVHLElBQUkscURBQXFELDJEQUEyRCxJQUFJLDJDQUEyQywwQ0FBMEMsc0RBQXNELG1FQUFtRSxJQUFJLHVEQUF1RCx1R0FBdUcsSUFBSSxxREFBcUQsMkRBQTJELElBQUksNEJBQTRCLDBDQUEwQyx3Q0FBd0Msd0NBQXdDLHlLQUF5Syx5R0FBeUcsa01BQWtNLHdGQUF3RiwrSEFBK0gsa0pBQWtKLCtGQUErRiw4RUFBOEUsc0tBQXNLLHlDQUF5QywyQ0FBMkMsNERBQTRELGdEQUFnRCx3Q0FBd0Msd0NBQXdDLHlLQUF5Syx5R0FBeUcsa01BQWtNLHdGQUF3RiwrSEFBK0gsa0pBQWtKLCtGQUErRiw4RUFBOEUsc0tBQXNLLGtCQUFrQixrQkFBa0Isa0JBQWtCLGtCQUFrQixPQUFPLGFBQWEsaUNBQWlDLHlDQUF5Qyx5Q0FBeUMsbURBQW1ELG1EQUFtRCwyQkFBMkIsMkJBQTJCLHNEQUFzRCxzREFBc0QsK0JBQStCLHVDQUF1Qyx1Q0FBdUMsOERBQThELCtEQUErRCx1QkFBdUIseUJBQXlCLHdCQUF3QixnRUFBZ0Usd0NBQXdDLHdDQUF3Qyx5S0FBeUsseUdBQXlHLGtNQUFrTSx3RkFBd0YsK0hBQStILGtKQUFrSiwrRkFBK0YsOEVBQThFLHNLQUFzSyw0Q0FBNEMsNENBQTRDLGlDQUFpQyxpQ0FBaUMsd0JBQXdCLG1FQUFtRSx3Q0FBd0Msd0NBQXdDLHlLQUF5Syx5R0FBeUcsa01BQWtNLHdGQUF3RiwrSEFBK0gsa0pBQWtKLCtGQUErRiw4RUFBOEUsc0tBQXNLLDhCQUE4QixrQkFBa0Isa0JBQWtCLGtEQUFrRCw2QkFBNkIsaUNBQWlDLG9CQUFvQixrQkFBa0IseUJBQXlCLE9BQU8sa0JBQWtCLE9BQU8sc0NBQXNDLGtEQUFrRCx1Q0FBdUMsK0NBQStDLGlDQUFpQywrQ0FBK0MseUNBQXlDLHlDQUF5QyxtREFBbUQsMkJBQTJCLDJCQUEyQixvQ0FBb0Msc0NBQXNDLGtDQUFrQyw4Q0FBOEMsdUJBQXVCLHdCQUF3Qix3QkFBd0IsZ0JBQWdCLHdDQUF3Qyx3Q0FBd0MseUtBQXlLLHlHQUF5RyxrTUFBa00sd0ZBQXdGLCtIQUErSCxrSkFBa0osK0ZBQStGLDhFQUE4RSxzS0FBc0ssZ0NBQWdDLHVDQUF1Qyw2Q0FBNkMsa0JBQWtCLGtCQUFrQiw2REFBNkQsaUNBQWlDLFlBQVksMERBQTBELDBEQUEwRCxrREFBa0QscUJBQXFCLHFCQUFxQixxRUFBcUUsc0JBQXNCLHNCQUFzQiwrREFBK0QsbUJBQW1CLG1CQUFtQix3Q0FBd0MseUJBQXlCLHlCQUF5Qix3REFBd0QsOEJBQThCLG9DQUFvQyxvQkFBb0IscUJBQXFCLGlDQUFpQyxpQ0FBaUMsOERBQThELGtFQUFrRSxxRkFBcUYsTUFBTSxvR0FBb0csbUJBQW1CLHVDQUF1QyxLQUFLLEtBQUssWUFBWSxvRkFBb0YsMkRBQTJELEVBQUUsb0RBQW9ELEVBQUUsaUVBQWlFLGVBQWUsb0hBQW9ILEVBQUUsMEdBQTBHLEVBQUUsMkdBQTJHLEVBQUUsOEdBQThHLEVBQUUsMEhBQTBILEVBQUUsa0hBQWtILEVBQUUseUdBQXlHLEVBQUUsa0lBQWtJLEVBQUUsa0lBQWtJLEVBQUUsMkdBQTJHLG9DQUFvQyx3Q0FBd0Msc0JBQXNCO0FBQ3hoeUI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyw0QkFBNEIsV0FBVyx5Q0FBeUMsMkNBQTJDLHlEQUF5RCw4RUFBOEUsbUVBQW1FLCtEQUErRCx5RUFBeUUsbUVBQW1FLHVFQUF1RSw2Q0FBNkMsK0JBQStCLEtBQUssMEVBQTBFLDJDQUEyQywwREFBMEQsS0FBSyw0RUFBNEUsMkNBQTJDLGlFQUFpRSxLQUFLLDRFQUE0RSw4Q0FBOEMseUJBQXlCLHdCQUF3Qiw0Q0FBNEMsYUFBYSxrREFBa0QsbUNBQW1DLHFFQUFxRSx3RUFBd0UsV0FBVywrQ0FBK0MsbURBQW1ELHVDQUF1Qyw4REFBOEQsc0NBQXNDLDZDQUE2Qyx5REFBeUQsaURBQWlELDJEQUEyRCxrRUFBa0Usa0JBQWtCLElBQUksc0JBQXNCLHlFQUF5RSxtQkFBbUIsSUFBSSxnQkFBZ0Isb0VBQW9FLDBCQUEwQixJQUFJLGdCQUFnQiwySkFBMkoseUJBQXlCLHFCQUFxQixrQkFBa0Isa0JBQWtCLE9BQU8sdUNBQXVDLHlCQUF5Qiw2Q0FBNkMsb0VBQW9FLDhDQUE4QywrREFBK0QsNEVBQTRFLHFEQUFxRCw4REFBOEQsSUFBSSx1QkFBdUIsNENBQTRDLGtDQUFrQywyQkFBMkIsZ0NBQWdDLHVDQUF1QyxnR0FBZ0csMkJBQTJCLHVDQUF1QyxvREFBb0QsSUFBSSx3Q0FBd0MseUVBQXlFLElBQUksc0NBQXNDLDRDQUE0QyxJQUFJLHdCQUF3QixtQ0FBbUMsa0NBQWtDLDhDQUE4QywyREFBMkQsSUFBSSwrQ0FBK0MsdUZBQXVGLElBQUksNkNBQTZDLG1EQUFtRCxJQUFJLGdCQUFnQix3Q0FBd0Msd0NBQXdDLHlLQUF5Syx5R0FBeUcsa01BQWtNLHdGQUF3RiwrSEFBK0gsa0pBQWtKLCtGQUErRiw4RUFBOEUsc0tBQXNLLHdCQUF3QixrQkFBa0Isa0JBQWtCLE9BQU8sK0JBQStCLHlCQUF5Qiw2Q0FBNkMsc0RBQXNELG1CQUFtQix1Q0FBdUMsS0FBSyxLQUFLLFlBQVksb0ZBQW9GLG9EQUFvRCxlQUFlLG1IQUFtSCxFQUFFLHVHQUF1RyxFQUFFLDJIQUEySCxvQ0FBb0MsK0NBQStDLHNCQUFzQjtBQUNobk0iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9ncHUvZ0ZvcmNlU2hhZGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGdGb3JjZUNvZGUgPSBgXG5pbXBvcnQgeyBnbG9iYWxJbnZvY2F0aW9uSUQgfSBmcm9tICdnLXdlYmdwdSc7XG5cbmNvbnN0IE1BWF9FREdFX1BFUl9WRVJURVg7XG5jb25zdCBWRVJURVhfQ09VTlQ7XG5jb25zdCBTSElGVF8yMCA9IDEwNDg1NzY7XG5cbkBudW10aHJlYWRzKDEsIDEsIDEpXG5jbGFzcyBHR0ZvcmNlIHtcbiAgQGluIEBvdXRcbiAgdV9EYXRhOiB2ZWM0W107XG5cbiAgQGluXG4gIHVfZGFtcGluZzogZmxvYXQ7XG4gIFxuICBAaW5cbiAgdV9tYXhTcGVlZDogZmxvYXQ7XG5cbiAgQGluXG4gIHVfbWluTW92ZW1lbnQ6IGZsb2F0O1xuXG4gIEBpblxuICB1X0F2ZU1vdmVtZW50OiB2ZWM0W107XG5cbiAgQGluXG4gIHVfY291bG9tYkRpc1NjYWxlOiBmbG9hdDtcblxuICBAaW5cbiAgdV9mYWN0b3I6IGZsb2F0O1xuXG4gIEBpblxuICB1X05vZGVBdHRyaWJ1dGVBcnJheTE6IHZlYzRbXTtcblxuICBAaW5cbiAgdV9Ob2RlQXR0cmlidXRlQXJyYXkyOiB2ZWM0W107XG5cbiAgQGluXG4gIHVfaW50ZXJ2YWw6IGZsb2F0O1xuXG4gIHVucGFja19mbG9hdChwYWNrZWRWYWx1ZTogZmxvYXQpOiBpdmVjMiB7XG4gICAgY29uc3QgcGFja2VkSW50VmFsdWUgPSBpbnQocGFja2VkVmFsdWUpO1xuICAgIGNvbnN0IHYwID0gcGFja2VkSW50VmFsdWUgLyBTSElGVF8yMDtcbiAgICByZXR1cm4gW3YwLCBwYWNrZWRJbnRWYWx1ZSAtIHYwICogU0hJRlRfMjBdO1xuICB9XG5cbiAgY2FsY1JlcHVsc2l2ZShpOiBpbnQsIGN1cnJlbnROb2RlOiB2ZWM0KTogdmVjMiB7XG4gICAgbGV0IGF4ID0gMCwgYXkgPSAwO1xuICAgIGZvciAobGV0IGo6IGludCA9IDA7IGogPCBWRVJURVhfQ09VTlQ7IGorKykge1xuICAgICAgaWYgKGkgIT0gaikge1xuICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IHRoaXMudV9EYXRhW2pdO1xuICAgICAgICBjb25zdCB2eCA9IGN1cnJlbnROb2RlWzBdIC0gbmV4dE5vZGVbMF07XG4gICAgICAgIGNvbnN0IHZ5ID0gY3VycmVudE5vZGVbMV0gLSBuZXh0Tm9kZVsxXTtcbiAgICAgICAgY29uc3QgZGlzdCA9IHNxcnQodnggKiB2eCArIHZ5ICogdnkpICsgMC4wMTtcbiAgICAgICAgY29uc3Qgbl9kaXN0ID0gKGRpc3QgKyAwLjEpICogdGhpcy51X2NvdWxvbWJEaXNTY2FsZTtcbiAgICAgICAgY29uc3QgZGlyZXggPSB2eCAvIGRpc3Q7XG4gICAgICAgIGNvbnN0IGRpcmV5ID0gdnkgLyBkaXN0O1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzaSA9IHRoaXMudV9Ob2RlQXR0cmlidXRlQXJyYXkxW2ldO1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzaiA9IHRoaXMudV9Ob2RlQXR0cmlidXRlQXJyYXkxW2pdO1xuICAgICAgICBjb25zdCBtYXNzaSA9IGF0dHJpYnV0ZXNpWzBdO1xuICAgICAgICBjb25zdCBub2RlU3RyZW5ndGhpID0gYXR0cmlidXRlc2lbMl07XG4gICAgICAgIGNvbnN0IG5vZGVTdHJlbmd0aGogPSBhdHRyaWJ1dGVzalsyXTtcbiAgICAgICAgY29uc3Qgbm9kZVN0cmVuZ3RoID0gKG5vZGVTdHJlbmd0aGkgKyBub2RlU3RyZW5ndGhqKSAvIDI7XG4gICAgICAgIC8vIGNvbnN0IHBhcmFtID0gbm9kZVN0cmVuZ3RoICogdGhpcy51X2ZhY3RvciAvIChuX2Rpc3QgKiBuX2Rpc3QgKiBtYXNzaSk7XG4gICAgICAgIGNvbnN0IHBhcmFtID0gbm9kZVN0cmVuZ3RoICogdGhpcy51X2ZhY3RvciAvIChuX2Rpc3QgKiBuX2Rpc3QpO1xuICAgICAgICBheCArPSBkaXJleCAqIHBhcmFtO1xuICAgICAgICBheSArPSBkaXJleSAqIHBhcmFtO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW2F4LCBheV07XG4gIH1cblxuICBjYWxjR3Jhdml0eShpOiBpbnQsIGN1cnJlbnROb2RlOiB2ZWM0LCBhdHRyaWJ1dGVzMjogdmVjNCk6IHZlYzIge1xuICAgIC8vIG5vdGU6IGF0dHJpYnV0ZXMyID0gW2NlbnRlclgsIGNlbnRlclksIGdyYXZpdHksIDBdXG5cbiAgICBjb25zdCB2eCA9IGN1cnJlbnROb2RlWzBdIC0gYXR0cmlidXRlczJbMF07XG4gICAgY29uc3QgdnkgPSBjdXJyZW50Tm9kZVsxXSAtIGF0dHJpYnV0ZXMyWzFdO1xuICAgIFxuICAgIGNvbnN0IGF4ID0gdnggKiBhdHRyaWJ1dGVzMlsyXTtcbiAgICBjb25zdCBheSA9IHZ5ICogYXR0cmlidXRlczJbMl07XG4gICAgXG4gICAgcmV0dXJuIFtheCwgYXldO1xuICB9XG5cbiAgY2FsY0F0dHJhY3RpdmUoaTogaW50LCBjdXJyZW50Tm9kZTogdmVjNCwgYXR0cmlidXRlczE6IHZlYzQpOiB2ZWMyIHtcbiAgICAvLyBub3RlOiBhdHRyaWJ1dGVzMSA9IFttYXNzLCBkZWdyZWUsIG5vZGVTdGVybmd0aCwgMF1cblxuICAgIGNvbnN0IG1hc3MgPSBhdHRyaWJ1dGVzMVswXTtcbiAgICBsZXQgYXggPSAwLCBheSA9IDA7XG4gICAgLy8gY29uc3QgYXJyX29mZnNldCA9IGludChmbG9vcihjdXJyZW50Tm9kZVsyXSArIDAuNSkpO1xuICAgIC8vIGNvbnN0IGxlbmd0aCA9IGludChmbG9vcihjdXJyZW50Tm9kZVszXSArIDAuNSkpO1xuXG4gICAgY29uc3QgY29tcHJlc3NlZCA9IHRoaXMudW5wYWNrX2Zsb2F0KGN1cnJlbnROb2RlWzJdKTtcbiAgICBjb25zdCBsZW5ndGggPSBjb21wcmVzc2VkWzBdO1xuICAgIGNvbnN0IGFycl9vZmZzZXQgPSBjb21wcmVzc2VkWzFdO1xuXG4gICAgY29uc3Qgbm9kZV9idWZmZXI6IHZlYzQ7XG4gICAgZm9yIChsZXQgcDogaW50ID0gMDsgcCA8IE1BWF9FREdFX1BFUl9WRVJURVg7IHArKykge1xuICAgICAgaWYgKHAgPj0gbGVuZ3RoKSBicmVhaztcbiAgICAgIGNvbnN0IGFycl9pZHggPSBhcnJfb2Zmc2V0ICsgNCAqIHA7IC8vIGkg6IqC54K555qE56ysIHAg5p2h6L655byA5aeL55qE5bCP5qC85a2Q5L2N572uXG4gICAgICBjb25zdCBidWZfb2Zmc2V0ID0gYXJyX2lkeCAtIGFycl9pZHggLyA0ICogNDtcbiAgICAgIGlmIChwID09IDAgfHwgYnVmX29mZnNldCA9PSAwKSB7XG4gICAgICAgIG5vZGVfYnVmZmVyID0gdGhpcy51X0RhdGFbaW50KGFycl9pZHggLyA0KV07IC8vIOWkp+agvOWtkO+8jOWkp+agvOWtkOS9jee9rj3lsI/kuKrlrZDkvY3nva4gLyA077yMXG4gICAgICB9XG5cbiAgICAgIGxldCBmbG9hdF9qOiBmbG9hdCA9IG5vZGVfYnVmZmVyWzBdO1xuXG4gICAgICBjb25zdCBuZXh0Tm9kZSA9IHRoaXMudV9EYXRhW2ludChmbG9hdF9qKV07XG4gICAgICBjb25zdCB2eCA9IG5leHROb2RlWzBdIC0gY3VycmVudE5vZGVbMF07XG4gICAgICBjb25zdCB2eSA9IG5leHROb2RlWzFdIC0gY3VycmVudE5vZGVbMV07XG4gICAgICBjb25zdCBkaXN0ID0gc3FydCh2eCAqIHZ4ICsgdnkgKiB2eSkgKyAwLjAxO1xuICAgICAgY29uc3QgZGlyZXggPSB2eCAvIGRpc3Q7XG4gICAgICBjb25zdCBkaXJleSA9IHZ5IC8gZGlzdDtcbiAgICAgIGNvbnN0IGVkZ2VMZW5ndGggPSBub2RlX2J1ZmZlclsxXTtcbiAgICAgIGNvbnN0IGVkZ2VTdHJlbmd0aCA9IG5vZGVfYnVmZmVyWzJdO1xuICAgICAgY29uc3QgZGlmZjogZmxvYXQgPSBlZGdlTGVuZ3RoIC0gZGlzdDsvL2VkZ2VMZW5ndGhcbiAgICAgIC8vIGNvbnN0IHBhcmFtID0gZGlmZiAqIHRoaXMudV9zdGlmZm5lc3MgLyBtYXNzOyAvL1xuICAgICAgY29uc3QgcGFyYW0gPSBkaWZmICogZWRnZVN0cmVuZ3RoIC8gbWFzczsgLy8gXG4gICAgICBheCAtPSBkaXJleCAqIHBhcmFtO1xuICAgICAgYXkgLT0gZGlyZXkgKiBwYXJhbTtcbiAgICB9XG4gICAgcmV0dXJuIFtheCwgYXldO1xuICB9XG5cbiAgQG1haW5cbiAgY29tcHV0ZSgpIHtcbiAgICBjb25zdCBpID0gZ2xvYmFsSW52b2NhdGlvbklELng7XG4gICAgY29uc3QgY3VycmVudE5vZGUgPSB0aGlzLnVfRGF0YVtpXTtcbiAgICBjb25zdCBtb3ZlbWVudCA9IHVfQXZlTW92ZW1lbnRbMF07XG4gICAgbGV0IGF4ID0gMCwgYXkgPSAwO1xuXG4gICAgaWYgKGkgPj0gVkVSVEVYX0NPVU5UIHx8IG1vdmVtZW50LnggPCB1X21pbk1vdmVtZW50KSB7XG4gICAgICB0aGlzLnVfRGF0YVtpXSA9IGN1cnJlbnROb2RlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIOavj+S4quiKgueCueWxnuaAp+WNoOS4pOS4quaVsOe7hOS4reWQhOS4gOagvFxuICAgIC8vIFttYXNzLCBkZWdyZWUsIG5vZGVTdHJlbmd0aCwgZnhdXG4gICAgY29uc3Qgbm9kZUF0dHJpYnV0ZXMxID0gdGhpcy51X05vZGVBdHRyaWJ1dGVBcnJheTFbaV07XG4gICAgLy8gW2NlbnRlclgsIGNlbnRlclksIGNlbnRlckdyYXZpdHksIGZ5XVxuICAgIGNvbnN0IG5vZGVBdHRyaWJ1dGVzMiA9IHRoaXMudV9Ob2RlQXR0cmlidXRlQXJyYXkyW2ldO1xuXG4gICAgLy8gcmVwdWxzaXZlXG4gICAgY29uc3QgcmVwdWxzaXZlID0gdGhpcy5jYWxjUmVwdWxzaXZlKGksIGN1cnJlbnROb2RlKTtcbiAgICBheCArPSByZXB1bHNpdmVbMF07XG4gICAgYXkgKz0gcmVwdWxzaXZlWzFdO1xuXG4gICAgLy8gYXR0cmFjdGl2ZVxuICAgIGNvbnN0IGF0dHJhY3RpdmUgPSB0aGlzLmNhbGNBdHRyYWN0aXZlKGksIGN1cnJlbnROb2RlLCBub2RlQXR0cmlidXRlczEpO1xuICAgIGF4ICs9IGF0dHJhY3RpdmVbMF07XG4gICAgYXkgKz0gYXR0cmFjdGl2ZVsxXTtcblxuICAgIC8vIGdyYXZpdHlcbiAgICBjb25zdCBncmF2aXR5ID0gdGhpcy5jYWxjR3Jhdml0eShpLCBjdXJyZW50Tm9kZSwgbm9kZUF0dHJpYnV0ZXMyKTtcbiAgICBheCAtPSBncmF2aXR5WzBdO1xuICAgIGF5IC09IGdyYXZpdHlbMV07XG5cbiAgICAvLyBzcGVlZFxuICAgIGNvbnN0IHBhcmFtID0gdGhpcy51X2ludGVydmFsICogdGhpcy51X2RhbXBpbmc7XG4gICAgbGV0IHZ4ID0gYXggKiBwYXJhbTtcbiAgICBsZXQgdnkgPSBheSAqIHBhcmFtO1xuICAgIGNvbnN0IHZsZW5ndGggPSBzcXJ0KHZ4ICogdnggKyB2eSAqIHZ5KSArIDAuMDAwMTtcbiAgICBpZiAodmxlbmd0aCA+IHRoaXMudV9tYXhTcGVlZCkge1xuICAgICAgY29uc3QgcGFyYW0yID0gdGhpcy51X21heFNwZWVkIC8gdmxlbmd0aDtcbiAgICAgIHZ4ID0gcGFyYW0yICogdng7XG4gICAgICB2eSA9IHBhcmFtMiAqIHZ5O1xuICAgIH1cblxuICAgIC8vIG1vdmVcbiAgICBpZiAobm9kZUF0dHJpYnV0ZXMxWzNdICE9IDAgJiYgbm9kZUF0dHJpYnV0ZXMyWzNdICE9IDApIHtcbiAgICAgIHRoaXMudV9EYXRhW2ldID0gW1xuICAgICAgICBub2RlQXR0cmlidXRlczFbM10sXG4gICAgICAgIG5vZGVBdHRyaWJ1dGVzMlszXSxcbiAgICAgICAgY3VycmVudE5vZGVbMl0sXG4gICAgICAgIDBcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRpc3R4ID0gdnggKiB0aGlzLnVfaW50ZXJ2YWw7XG4gICAgICBjb25zdCBkaXN0eSA9IHZ5ICogdGhpcy51X2ludGVydmFsO1xuICAgICAgY29uc3QgZGlzdExlbmd0aCA9IHNxcnQoZGlzdHggKiBkaXN0eCArIGRpc3R5ICogZGlzdHkpO1xuICAgICAgdGhpcy51X0RhdGFbaV0gPSBbXG4gICAgICAgIGN1cnJlbnROb2RlWzBdICsgZGlzdHgsXG4gICAgICAgIGN1cnJlbnROb2RlWzFdICsgZGlzdHksXG4gICAgICAgIGN1cnJlbnROb2RlWzJdLFxuICAgICAgICBkaXN0TGVuZ3RoXG4gICAgICBdO1xuICAgIH1cbiAgICBcbiAgICAvLyB0aGUgYXZhcmFnZSBtb3ZlIGRpc3RhbmNlXG4gICAgLy8gbmVlZCB0byBzaGFyZSBtZW1vcnlcbiAgICBcbiAgfVxufVxuYDtcbmV4cG9ydCBjb25zdCBnRm9yY2VCdW5kbGUgPSBge1wic2hhZGVyc1wiOntcIldHU0xcIjpcImltcG9ydCBcXFxcXCJHTFNMLnN0ZC40NTBcXFxcXCIgYXMgc3RkO1xcXFxuXFxcXG5cXFxcbiMgdmFyIGdXZWJHUFVEZWJ1ZyA6IGJvb2wgPSBmYWxzZTtcXFxcbiMgdmFyIGdXZWJHUFVEZWJ1Z091dHB1dCA6IHZlYzQ8ZjMyPiA9IHZlYzQ8ZjMyPigwLjApO1xcXFxuXFxcXG5bW2J1aWx0aW4gZ2xvYmFsX2ludm9jYXRpb25faWRdXSB2YXI8aW4+IGdsb2JhbEludm9jYXRpb25JRCA6IHZlYzM8dTMyPjtcXFxcbiMgW1tidWlsdGluIHdvcmtfZ3JvdXBfc2l6ZV1dIHZhcjxpbj4gd29ya0dyb3VwU2l6ZSA6IHZlYzM8dTMyPjtcXFxcbiMgW1tidWlsdGluIHdvcmtfZ3JvdXBfaWRdXSB2YXI8aW4+IHdvcmtHcm91cElEIDogdmVjMzx1MzI+O1xcXFxuW1tidWlsdGluIGxvY2FsX2ludm9jYXRpb25faWRdXSB2YXI8aW4+IGxvY2FsSW52b2NhdGlvbklEIDogdmVjMzx1MzI+O1xcXFxuIyBbW2J1aWx0aW4gbnVtX3dvcmtfZ3JvdXBzXV0gdmFyPGluPiBudW1Xb3JrR3JvdXBzIDogdmVjMzx1MzI+O1xcXFxuW1tidWlsdGluIGxvY2FsX2ludm9jYXRpb25faWR4XV0gdmFyPGluPiBsb2NhbEludm9jYXRpb25JbmRleCA6IHUzMjtcXFxcblxcXFxudHlwZSBHV2ViR1BVUGFyYW1zID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X2RhbXBpbmcgOiBmMzI7XFxcXG4gIFtbb2Zmc2V0IDRdXSB1X21heFNwZWVkIDogZjMyO1xcXFxuICBbW29mZnNldCA4XV0gdV9taW5Nb3ZlbWVudCA6IGYzMjtcXFxcbiAgXFxcXG4gIFtbb2Zmc2V0IDEyXV0gdV9jb3Vsb21iRGlzU2NhbGUgOiBmMzI7XFxcXG4gIFtbb2Zmc2V0IDE2XV0gdV9mYWN0b3IgOiBmMzI7XFxcXG4gIFxcXFxuICBcXFxcbiAgW1tvZmZzZXQgMjBdXSB1X2ludGVydmFsIDogZjMyO1xcXFxufTtcXFxcbltbYmluZGluZyAwLCBzZXQgMF1dIHZhcjx1bmlmb3JtPiBnV2ViR1BVVW5pZm9ybVBhcmFtcyA6IEdXZWJHUFVQYXJhbXM7XFxcXG50eXBlIEdXZWJHUFVCdWZmZXIwID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X0RhdGEgOiBbW3N0cmlkZSAxNl1dIGFycmF5PHZlYzQ8ZjMyPj47XFxcXG59O1xcXFxuW1tiaW5kaW5nIDEsIHNldCAwXV0gdmFyPHN0b3JhZ2VfYnVmZmVyPiBnV2ViR1BVQnVmZmVyMCA6IEdXZWJHUFVCdWZmZXIwO1xcXFxudHlwZSBHV2ViR1BVQnVmZmVyMSA9IFtbYmxvY2tdXSBzdHJ1Y3Qge1xcXFxuICBbW29mZnNldCAwXV0gdV9BdmVNb3ZlbWVudCA6IFtbc3RyaWRlIDE2XV0gYXJyYXk8dmVjNDxmMzI+PjtcXFxcbn07XFxcXG5bW2JpbmRpbmcgMiwgc2V0IDBdXSB2YXI8c3RvcmFnZV9idWZmZXI+IGdXZWJHUFVCdWZmZXIxIDogR1dlYkdQVUJ1ZmZlcjE7XFxcXG50eXBlIEdXZWJHUFVCdWZmZXIyID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X05vZGVBdHRyaWJ1dGVBcnJheTEgOiBbW3N0cmlkZSAxNl1dIGFycmF5PHZlYzQ8ZjMyPj47XFxcXG59O1xcXFxuW1tiaW5kaW5nIDMsIHNldCAwXV0gdmFyPHN0b3JhZ2VfYnVmZmVyPiBnV2ViR1BVQnVmZmVyMiA6IEdXZWJHUFVCdWZmZXIyO1xcXFxudHlwZSBHV2ViR1BVQnVmZmVyMyA9IFtbYmxvY2tdXSBzdHJ1Y3Qge1xcXFxuICBbW29mZnNldCAwXV0gdV9Ob2RlQXR0cmlidXRlQXJyYXkyIDogW1tzdHJpZGUgMTZdXSBhcnJheTx2ZWM0PGYzMj4+O1xcXFxufTtcXFxcbltbYmluZGluZyA0LCBzZXQgMF1dIHZhcjxzdG9yYWdlX2J1ZmZlcj4gZ1dlYkdQVUJ1ZmZlcjMgOiBHV2ViR1BVQnVmZmVyMztcXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5mbiB1bnBhY2tfZmxvYXQocGFja2VkVmFsdWUgOiBmMzIpIC0+IHZlYzI8aTMyPiB7dmFyIHBhY2tlZEludFZhbHVlIDogaTMyID0gaTMyKHBhY2tlZFZhbHVlKTtcXFxcbnZhciB2MCA6IGkzMiA9IHBhY2tlZEludFZhbHVlIC8gMTA0ODU3NjtcXFxcbnJldHVybiB2ZWMyPGkzMj4odjAsIHBhY2tlZEludFZhbHVlIC0gKHYwICogMTA0ODU3NikpO31cXFxcbmZuIGNhbGNSZXB1bHNpdmUoaSA6IGkzMiwgY3VycmVudE5vZGUgOiB2ZWM0PGYzMj4pIC0+IHZlYzI8ZjMyPiB7dmFyIGF4IDogZjMyID0gMC4wO1xcXFxudmFyIGF5IDogZjMyID0gMC4wO1xcXFxuZm9yICh2YXIgaiA6IGkzMiA9IDA7IGogPCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVDsgaiA9IGogKyAxKSB7aWYgKGkgIT0gaikge3ZhciBuZXh0Tm9kZSA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtqXTtcXFxcbnZhciB2eCA6IGYzMiA9IGN1cnJlbnROb2RlLnggLSBuZXh0Tm9kZS54O1xcXFxudmFyIHZ5IDogZjMyID0gY3VycmVudE5vZGUueSAtIG5leHROb2RlLnk7XFxcXG52YXIgZGlzdCA6IGYzMiA9IHN0ZDo6c3FydCgodnggKiB2eCkgKyAodnkgKiB2eSkpICsgMC4wMTtcXFxcbnZhciBuX2Rpc3QgOiBmMzIgPSAoZGlzdCArIDAuMSkgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X2NvdWxvbWJEaXNTY2FsZTtcXFxcbnZhciBkaXJleCA6IGYzMiA9IHZ4IC8gZGlzdDtcXFxcbnZhciBkaXJleSA6IGYzMiA9IHZ5IC8gZGlzdDtcXFxcbnZhciBhdHRyaWJ1dGVzaSA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIyLnVfTm9kZUF0dHJpYnV0ZUFycmF5MVtpXTtcXFxcbnZhciBhdHRyaWJ1dGVzaiA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIyLnVfTm9kZUF0dHJpYnV0ZUFycmF5MVtqXTtcXFxcbnZhciBtYXNzaSA6IGYzMiA9IGF0dHJpYnV0ZXNpLng7XFxcXG52YXIgbm9kZVN0cmVuZ3RoaSA6IGYzMiA9IGF0dHJpYnV0ZXNpLno7XFxcXG52YXIgbm9kZVN0cmVuZ3RoaiA6IGYzMiA9IGF0dHJpYnV0ZXNqLno7XFxcXG52YXIgbm9kZVN0cmVuZ3RoIDogZjMyID0gKG5vZGVTdHJlbmd0aGkgKyBub2RlU3RyZW5ndGhqKSAvIDIuMDtcXFxcbnZhciBwYXJhbSA6IGYzMiA9IChub2RlU3RyZW5ndGggKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X2ZhY3RvcikgLyAobl9kaXN0ICogbl9kaXN0KTtcXFxcbmF4ID0gYXggKyBkaXJleCAqIHBhcmFtO1xcXFxuYXkgPSBheSArIGRpcmV5ICogcGFyYW07fX1cXFxcbnJldHVybiB2ZWMyPGYzMj4oYXgsIGF5KTt9XFxcXG5mbiBjYWxjR3Jhdml0eShpIDogaTMyLCBjdXJyZW50Tm9kZSA6IHZlYzQ8ZjMyPiwgYXR0cmlidXRlczIgOiB2ZWM0PGYzMj4pIC0+IHZlYzI8ZjMyPiB7dmFyIHZ4IDogZjMyID0gY3VycmVudE5vZGUueCAtIGF0dHJpYnV0ZXMyLng7XFxcXG52YXIgdnkgOiBmMzIgPSBjdXJyZW50Tm9kZS55IC0gYXR0cmlidXRlczIueTtcXFxcbnZhciBheCA6IGYzMiA9IHZ4ICogYXR0cmlidXRlczIuejtcXFxcbnZhciBheSA6IGYzMiA9IHZ5ICogYXR0cmlidXRlczIuejtcXFxcbnJldHVybiB2ZWMyPGYzMj4oYXgsIGF5KTt9XFxcXG5mbiBjYWxjQXR0cmFjdGl2ZShpIDogaTMyLCBjdXJyZW50Tm9kZSA6IHZlYzQ8ZjMyPiwgYXR0cmlidXRlczEgOiB2ZWM0PGYzMj4pIC0+IHZlYzI8ZjMyPiB7dmFyIG1hc3MgOiBmMzIgPSBhdHRyaWJ1dGVzMS54O1xcXFxudmFyIGF4IDogZjMyID0gMC4wO1xcXFxudmFyIGF5IDogZjMyID0gMC4wO1xcXFxudmFyIGNvbXByZXNzZWQgOiB2ZWMyPGkzMj4gPSB1bnBhY2tfZmxvYXQoY3VycmVudE5vZGUueik7XFxcXG52YXIgbGVuZ3RoIDogaTMyID0gY29tcHJlc3NlZC54O1xcXFxudmFyIGFycl9vZmZzZXQgOiBpMzIgPSBjb21wcmVzc2VkLnk7XFxcXG52YXIgbm9kZV9idWZmZXIgOiB2ZWM0PGYzMj47XFxcXG5mb3IgKHZhciBwIDogaTMyID0gMDsgcCA8IF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fTUFYX0VER0VfUEVSX1ZFUlRFWDsgcCA9IHAgKyAxKSB7aWYgKHAgPj0gbGVuZ3RoKSB7YnJlYWs7fVxcXFxudmFyIGFycl9pZHggOiBpMzIgPSBhcnJfb2Zmc2V0ICsgKDQgKiBwKTtcXFxcbnZhciBidWZfb2Zmc2V0IDogaTMyID0gYXJyX2lkeCAtICgoYXJyX2lkeCAvIDQpICogNCk7XFxcXG5pZiAoKHAgPT0gMCkgfHwgKGJ1Zl9vZmZzZXQgPT0gMCkpIHtub2RlX2J1ZmZlciA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtpMzIoYXJyX2lkeCAvIDQpXTt9XFxcXG52YXIgZmxvYXRfaiA6IGYzMiA9IG5vZGVfYnVmZmVyLng7XFxcXG52YXIgbmV4dE5vZGUgOiB2ZWM0PGYzMj4gPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbaTMyKGZsb2F0X2opXTtcXFxcbnZhciB2eCA6IGYzMiA9IG5leHROb2RlLnggLSBjdXJyZW50Tm9kZS54O1xcXFxudmFyIHZ5IDogZjMyID0gbmV4dE5vZGUueSAtIGN1cnJlbnROb2RlLnk7XFxcXG52YXIgZGlzdCA6IGYzMiA9IHN0ZDo6c3FydCgodnggKiB2eCkgKyAodnkgKiB2eSkpICsgMC4wMTtcXFxcbnZhciBkaXJleCA6IGYzMiA9IHZ4IC8gZGlzdDtcXFxcbnZhciBkaXJleSA6IGYzMiA9IHZ5IC8gZGlzdDtcXFxcbnZhciBlZGdlTGVuZ3RoIDogZjMyID0gbm9kZV9idWZmZXIueTtcXFxcbnZhciBlZGdlU3RyZW5ndGggOiBmMzIgPSBub2RlX2J1ZmZlci56O1xcXFxudmFyIGRpZmYgOiBmMzIgPSBlZGdlTGVuZ3RoIC0gZGlzdDtcXFxcbnZhciBwYXJhbSA6IGYzMiA9IChkaWZmICogZWRnZVN0cmVuZ3RoKSAvIG1hc3M7XFxcXG5heCA9IGF4IC0gZGlyZXggKiBwYXJhbTtcXFxcbmF5ID0gYXkgLSBkaXJleSAqIHBhcmFtO31cXFxcbnJldHVybiB2ZWMyPGYzMj4oYXgsIGF5KTt9XFxcXG5mbiBtYWluKCkgLT4gdm9pZCB7dmFyIGkgOiBpMzIgPSBnbG9iYWxJbnZvY2F0aW9uSUQueDtcXFxcbnZhciBjdXJyZW50Tm9kZSA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXTtcXFxcbnZhciBtb3ZlbWVudCA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIxLnVfQXZlTW92ZW1lbnRbMF07XFxcXG52YXIgYXggOiBmMzIgPSAwLjA7XFxcXG52YXIgYXkgOiBmMzIgPSAwLjA7XFxcXG5pZiAoKGkgPj0gX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19WRVJURVhfQ09VTlQpIHx8IChtb3ZlbWVudC54IDwgZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9taW5Nb3ZlbWVudCkpIHtnV2ViR1BVQnVmZmVyMC51X0RhdGFbaV0gPSBjdXJyZW50Tm9kZTtcXFxcbnJldHVybiA7fVxcXFxudmFyIG5vZGVBdHRyaWJ1dGVzMSA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIyLnVfTm9kZUF0dHJpYnV0ZUFycmF5MVtpXTtcXFxcbnZhciBub2RlQXR0cmlidXRlczIgOiB2ZWM0PGYzMj4gPSBnV2ViR1BVQnVmZmVyMy51X05vZGVBdHRyaWJ1dGVBcnJheTJbaV07XFxcXG52YXIgcmVwdWxzaXZlIDogdmVjMjxmMzI+ID0gY2FsY1JlcHVsc2l2ZShpLCBjdXJyZW50Tm9kZSk7XFxcXG5heCA9IGF4ICsgcmVwdWxzaXZlLng7XFxcXG5heSA9IGF5ICsgcmVwdWxzaXZlLnk7XFxcXG52YXIgYXR0cmFjdGl2ZSA6IHZlYzI8ZjMyPiA9IGNhbGNBdHRyYWN0aXZlKGksIGN1cnJlbnROb2RlLCBub2RlQXR0cmlidXRlczEpO1xcXFxuYXggPSBheCArIGF0dHJhY3RpdmUueDtcXFxcbmF5ID0gYXkgKyBhdHRyYWN0aXZlLnk7XFxcXG52YXIgZ3Jhdml0eSA6IHZlYzI8ZjMyPiA9IGNhbGNHcmF2aXR5KGksIGN1cnJlbnROb2RlLCBub2RlQXR0cmlidXRlczIpO1xcXFxuYXggPSBheCAtIGdyYXZpdHkueDtcXFxcbmF5ID0gYXkgLSBncmF2aXR5Lnk7XFxcXG52YXIgcGFyYW0gOiBmMzIgPSBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X2ludGVydmFsICogZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9kYW1waW5nO1xcXFxudmFyIHZ4IDogZjMyID0gYXggKiBwYXJhbTtcXFxcbnZhciB2eSA6IGYzMiA9IGF5ICogcGFyYW07XFxcXG52YXIgdmxlbmd0aCA6IGYzMiA9IHN0ZDo6c3FydCgodnggKiB2eCkgKyAodnkgKiB2eSkpICsgMC4wMDAxO1xcXFxuaWYgKHZsZW5ndGggPiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X21heFNwZWVkKSB7dmFyIHBhcmFtMiA6IGYzMiA9IGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfbWF4U3BlZWQgLyB2bGVuZ3RoO1xcXFxudnggPSBwYXJhbTIgKiB2eDtcXFxcbnZ5ID0gcGFyYW0yICogdnk7fVxcXFxudmFyIGRpc3R4IDogZjMyID0gdnggKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X2ludGVydmFsO1xcXFxudmFyIGRpc3R5IDogZjMyID0gdnkgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X2ludGVydmFsO1xcXFxudmFyIGRpc3RMZW5ndGggOiBmMzIgPSBzdGQ6OnNxcnQoKGRpc3R4ICogZGlzdHgpICsgKGRpc3R5ICogZGlzdHkpKTtcXFxcbmlmICgobm9kZUF0dHJpYnV0ZXMxLncgIT0gMC4wKSAmJiAobm9kZUF0dHJpYnV0ZXMyLncgIT0gMC4wKSkge2dXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXSA9IHZlYzQ8ZjMyPihub2RlQXR0cmlidXRlczEudywgbm9kZUF0dHJpYnV0ZXMyLncsIGN1cnJlbnROb2RlLnosIDAuMCk7fWVsc2Uge2dXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXSA9IHZlYzQ8ZjMyPihjdXJyZW50Tm9kZS54ICsgZGlzdHgsIGN1cnJlbnROb2RlLnkgKyBkaXN0eSwgY3VycmVudE5vZGUueiwgZGlzdExlbmd0aCk7fVxcXFxucmV0dXJuO31cXFxcblxcXFxuZW50cnlfcG9pbnQgY29tcHV0ZSBhcyBcXFxcXCJtYWluXFxcXFwiID0gbWFpbjtcXFxcblwiLFwiR0xTTDQ1MFwiOlwiXFxcXG5cXFxcblxcXFxuYm9vbCBnV2ViR1BVRGVidWcgPSBmYWxzZTtcXFxcbnZlYzQgZ1dlYkdQVURlYnVnT3V0cHV0ID0gdmVjNCgwLjApO1xcXFxuXFxcXG5pdmVjMyBnbG9iYWxJbnZvY2F0aW9uSUQgPSBpdmVjMyhnbF9HbG9iYWxJbnZvY2F0aW9uSUQpO1xcXFxuaXZlYzMgd29ya0dyb3VwU2l6ZSA9IGl2ZWMzKDEsMSwxKTtcXFxcbml2ZWMzIHdvcmtHcm91cElEID0gaXZlYzMoZ2xfV29ya0dyb3VwSUQpO1xcXFxuaXZlYzMgbG9jYWxJbnZvY2F0aW9uSUQgPSBpdmVjMyhnbF9Mb2NhbEludm9jYXRpb25JRCk7XFxcXG5pdmVjMyBudW1Xb3JrR3JvdXBzID0gaXZlYzMoZ2xfTnVtV29ya0dyb3Vwcyk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSW5kZXggPSBpbnQoZ2xfTG9jYWxJbnZvY2F0aW9uSW5kZXgpO1xcXFxuXFxcXG5sYXlvdXQoc3RkMTQwLCBzZXQgPSAwLCBiaW5kaW5nID0gMCkgdW5pZm9ybSBHV2ViR1BVUGFyYW1zIHtcXFxcbiAgZmxvYXQgdV9kYW1waW5nO1xcXFxuICBmbG9hdCB1X21heFNwZWVkO1xcXFxuICBmbG9hdCB1X21pbk1vdmVtZW50O1xcXFxuICBcXFxcbiAgZmxvYXQgdV9jb3Vsb21iRGlzU2NhbGU7XFxcXG4gIGZsb2F0IHVfZmFjdG9yO1xcXFxuICBcXFxcbiAgXFxcXG4gIGZsb2F0IHVfaW50ZXJ2YWw7XFxcXG59IGdXZWJHUFVVbmlmb3JtUGFyYW1zO1xcXFxubGF5b3V0KHN0ZDQzMCwgc2V0ID0gMCwgYmluZGluZyA9IDEpIGJ1ZmZlciAgIEdXZWJHUFVCdWZmZXIwIHtcXFxcbiAgdmVjNCB1X0RhdGFbXTtcXFxcbn0gZ1dlYkdQVUJ1ZmZlcjA7XFxcXG5cXFxcbmxheW91dChzdGQ0MzAsIHNldCA9IDAsIGJpbmRpbmcgPSAyKSBidWZmZXIgcmVhZG9ubHkgIEdXZWJHUFVCdWZmZXIxIHtcXFxcbiAgdmVjNCB1X0F2ZU1vdmVtZW50W107XFxcXG59IGdXZWJHUFVCdWZmZXIxO1xcXFxuXFxcXG5sYXlvdXQoc3RkNDMwLCBzZXQgPSAwLCBiaW5kaW5nID0gMykgYnVmZmVyIHJlYWRvbmx5ICBHV2ViR1BVQnVmZmVyMiB7XFxcXG4gIHZlYzQgdV9Ob2RlQXR0cmlidXRlQXJyYXkxW107XFxcXG59IGdXZWJHUFVCdWZmZXIyO1xcXFxuXFxcXG5sYXlvdXQoc3RkNDMwLCBzZXQgPSAwLCBiaW5kaW5nID0gNCkgYnVmZmVyIHJlYWRvbmx5ICBHV2ViR1BVQnVmZmVyMyB7XFxcXG4gIHZlYzQgdV9Ob2RlQXR0cmlidXRlQXJyYXkyW107XFxcXG59IGdXZWJHUFVCdWZmZXIzO1xcXFxuXFxcXG5cXFxcblxcXFxuI2RlZmluZSBNQVhfRURHRV9QRVJfVkVSVEVYIF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fTUFYX0VER0VfUEVSX1ZFUlRFWFxcXFxuI2RlZmluZSBWRVJURVhfQ09VTlQgX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19WRVJURVhfQ09VTlRcXFxcbiNkZWZpbmUgU0hJRlRfMjAgMTA0ODU3Ni4wXFxcXG5sYXlvdXQgKFxcXFxuICBsb2NhbF9zaXplX3ggPSAxLFxcXFxuICBsb2NhbF9zaXplX3kgPSAxLFxcXFxuICBsb2NhbF9zaXplX3ogPSAxXFxcXG4pIGluO1xcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5pdmVjMiB1bnBhY2tfZmxvYXQoZmxvYXQgcGFja2VkVmFsdWUpIHtpbnQgcGFja2VkSW50VmFsdWUgPSBpbnQocGFja2VkVmFsdWUpO1xcXFxuaW50IHYwID0gcGFja2VkSW50VmFsdWUgLyBpbnQoU0hJRlRfMjApO1xcXFxucmV0dXJuIGl2ZWMyKHYwLCBwYWNrZWRJbnRWYWx1ZSAtICh2MCAqIGludChTSElGVF8yMCkpKTt9XFxcXG52ZWMyIGNhbGNSZXB1bHNpdmUoaW50IGksIHZlYzQgY3VycmVudE5vZGUpIHtmbG9hdCBheCA9IDAuMDtcXFxcbmZsb2F0IGF5ID0gMC4wO1xcXFxuZm9yIChpbnQgaiA9IDA7IGogPCBWRVJURVhfQ09VTlQ7IGorKykge2lmIChpICE9IGopIHt2ZWM0IG5leHROb2RlID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2pdO1xcXFxuZmxvYXQgdnggPSBjdXJyZW50Tm9kZS54IC0gbmV4dE5vZGUueDtcXFxcbmZsb2F0IHZ5ID0gY3VycmVudE5vZGUueSAtIG5leHROb2RlLnk7XFxcXG5mbG9hdCBkaXN0ID0gc3FydCgodnggKiB2eCkgKyAodnkgKiB2eSkpICsgMC4wMTtcXFxcbmZsb2F0IG5fZGlzdCA9IChkaXN0ICsgMC4xKSAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfY291bG9tYkRpc1NjYWxlO1xcXFxuZmxvYXQgZGlyZXggPSB2eCAvIGRpc3Q7XFxcXG5mbG9hdCBkaXJleSA9IHZ5IC8gZGlzdDtcXFxcbnZlYzQgYXR0cmlidXRlc2kgPSBnV2ViR1BVQnVmZmVyMi51X05vZGVBdHRyaWJ1dGVBcnJheTFbaV07XFxcXG52ZWM0IGF0dHJpYnV0ZXNqID0gZ1dlYkdQVUJ1ZmZlcjIudV9Ob2RlQXR0cmlidXRlQXJyYXkxW2pdO1xcXFxuZmxvYXQgbWFzc2kgPSBhdHRyaWJ1dGVzaS54O1xcXFxuZmxvYXQgbm9kZVN0cmVuZ3RoaSA9IGF0dHJpYnV0ZXNpLno7XFxcXG5mbG9hdCBub2RlU3RyZW5ndGhqID0gYXR0cmlidXRlc2ouejtcXFxcbmZsb2F0IG5vZGVTdHJlbmd0aCA9IChub2RlU3RyZW5ndGhpICsgbm9kZVN0cmVuZ3RoaikgLyAyLjA7XFxcXG5mbG9hdCBwYXJhbSA9IChub2RlU3RyZW5ndGggKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X2ZhY3RvcikgLyAobl9kaXN0ICogbl9kaXN0KTtcXFxcbmF4ICs9IGRpcmV4ICogcGFyYW07XFxcXG5heSArPSBkaXJleSAqIHBhcmFtO319XFxcXG5yZXR1cm4gdmVjMihheCwgYXkpO31cXFxcbnZlYzIgY2FsY0dyYXZpdHkoaW50IGksIHZlYzQgY3VycmVudE5vZGUsIHZlYzQgYXR0cmlidXRlczIpIHtmbG9hdCB2eCA9IGN1cnJlbnROb2RlLnggLSBhdHRyaWJ1dGVzMi54O1xcXFxuZmxvYXQgdnkgPSBjdXJyZW50Tm9kZS55IC0gYXR0cmlidXRlczIueTtcXFxcbmZsb2F0IGF4ID0gdnggKiBhdHRyaWJ1dGVzMi56O1xcXFxuZmxvYXQgYXkgPSB2eSAqIGF0dHJpYnV0ZXMyLno7XFxcXG5yZXR1cm4gdmVjMihheCwgYXkpO31cXFxcbnZlYzIgY2FsY0F0dHJhY3RpdmUoaW50IGksIHZlYzQgY3VycmVudE5vZGUsIHZlYzQgYXR0cmlidXRlczEpIHtmbG9hdCBtYXNzID0gYXR0cmlidXRlczEueDtcXFxcbmZsb2F0IGF4ID0gMC4wO1xcXFxuZmxvYXQgYXkgPSAwLjA7XFxcXG5pdmVjMiBjb21wcmVzc2VkID0gdW5wYWNrX2Zsb2F0KGN1cnJlbnROb2RlLnopO1xcXFxuaW50IGxlbmd0aCA9IGNvbXByZXNzZWQueDtcXFxcbmludCBhcnJfb2Zmc2V0ID0gY29tcHJlc3NlZC55O1xcXFxudmVjNCBub2RlX2J1ZmZlcjtcXFxcbmZvciAoaW50IHAgPSAwOyBwIDwgTUFYX0VER0VfUEVSX1ZFUlRFWDsgcCsrKSB7aWYgKHAgPj0gbGVuZ3RoKSB7YnJlYWs7fVxcXFxuaW50IGFycl9pZHggPSBhcnJfb2Zmc2V0ICsgKDQgKiBwKTtcXFxcbmludCBidWZfb2Zmc2V0ID0gYXJyX2lkeCAtICgoYXJyX2lkeCAvIDQpICogNCk7XFxcXG5pZiAoKHAgPT0gMCkgfHwgKGJ1Zl9vZmZzZXQgPT0gMCkpIHtub2RlX2J1ZmZlciA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtpbnQoYXJyX2lkeCAvIDQpXTt9XFxcXG5mbG9hdCBmbG9hdF9qID0gbm9kZV9idWZmZXIueDtcXFxcbnZlYzQgbmV4dE5vZGUgPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbaW50KGZsb2F0X2opXTtcXFxcbmZsb2F0IHZ4ID0gbmV4dE5vZGUueCAtIGN1cnJlbnROb2RlLng7XFxcXG5mbG9hdCB2eSA9IG5leHROb2RlLnkgLSBjdXJyZW50Tm9kZS55O1xcXFxuZmxvYXQgZGlzdCA9IHNxcnQoKHZ4ICogdngpICsgKHZ5ICogdnkpKSArIDAuMDE7XFxcXG5mbG9hdCBkaXJleCA9IHZ4IC8gZGlzdDtcXFxcbmZsb2F0IGRpcmV5ID0gdnkgLyBkaXN0O1xcXFxuZmxvYXQgZWRnZUxlbmd0aCA9IG5vZGVfYnVmZmVyLnk7XFxcXG5mbG9hdCBlZGdlU3RyZW5ndGggPSBub2RlX2J1ZmZlci56O1xcXFxuZmxvYXQgZGlmZiA9IGVkZ2VMZW5ndGggLSBkaXN0O1xcXFxuZmxvYXQgcGFyYW0gPSAoZGlmZiAqIGVkZ2VTdHJlbmd0aCkgLyBtYXNzO1xcXFxuYXggLT0gZGlyZXggKiBwYXJhbTtcXFxcbmF5IC09IGRpcmV5ICogcGFyYW07fVxcXFxucmV0dXJuIHZlYzIoYXgsIGF5KTt9XFxcXG52b2lkIG1haW4oKSB7aW50IGkgPSBnbG9iYWxJbnZvY2F0aW9uSUQueDtcXFxcbnZlYzQgY3VycmVudE5vZGUgPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbaV07XFxcXG52ZWM0IG1vdmVtZW50ID0gZ1dlYkdQVUJ1ZmZlcjEudV9BdmVNb3ZlbWVudFswXTtcXFxcbmZsb2F0IGF4ID0gMC4wO1xcXFxuZmxvYXQgYXkgPSAwLjA7XFxcXG5pZiAoKGkgPj0gVkVSVEVYX0NPVU5UKSB8fCAobW92ZW1lbnQueCA8IGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfbWluTW92ZW1lbnQpKSB7Z1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ldID0gY3VycmVudE5vZGU7XFxcXG5yZXR1cm4gO31cXFxcbnZlYzQgbm9kZUF0dHJpYnV0ZXMxID0gZ1dlYkdQVUJ1ZmZlcjIudV9Ob2RlQXR0cmlidXRlQXJyYXkxW2ldO1xcXFxudmVjNCBub2RlQXR0cmlidXRlczIgPSBnV2ViR1BVQnVmZmVyMy51X05vZGVBdHRyaWJ1dGVBcnJheTJbaV07XFxcXG52ZWMyIHJlcHVsc2l2ZSA9IGNhbGNSZXB1bHNpdmUoaSwgY3VycmVudE5vZGUpO1xcXFxuYXggKz0gcmVwdWxzaXZlLng7XFxcXG5heSArPSByZXB1bHNpdmUueTtcXFxcbnZlYzIgYXR0cmFjdGl2ZSA9IGNhbGNBdHRyYWN0aXZlKGksIGN1cnJlbnROb2RlLCBub2RlQXR0cmlidXRlczEpO1xcXFxuYXggKz0gYXR0cmFjdGl2ZS54O1xcXFxuYXkgKz0gYXR0cmFjdGl2ZS55O1xcXFxudmVjMiBncmF2aXR5ID0gY2FsY0dyYXZpdHkoaSwgY3VycmVudE5vZGUsIG5vZGVBdHRyaWJ1dGVzMik7XFxcXG5heCAtPSBncmF2aXR5Lng7XFxcXG5heSAtPSBncmF2aXR5Lnk7XFxcXG5mbG9hdCBwYXJhbSA9IGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfaW50ZXJ2YWwgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X2RhbXBpbmc7XFxcXG5mbG9hdCB2eCA9IGF4ICogcGFyYW07XFxcXG5mbG9hdCB2eSA9IGF5ICogcGFyYW07XFxcXG5mbG9hdCB2bGVuZ3RoID0gc3FydCgodnggKiB2eCkgKyAodnkgKiB2eSkpICsgMC4wMDAxO1xcXFxuaWYgKHZsZW5ndGggPiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X21heFNwZWVkKSB7ZmxvYXQgcGFyYW0yID0gZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9tYXhTcGVlZCAvIHZsZW5ndGg7XFxcXG52eCA9IHBhcmFtMiAqIHZ4O1xcXFxudnkgPSBwYXJhbTIgKiB2eTt9XFxcXG5mbG9hdCBkaXN0eCA9IHZ4ICogZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9pbnRlcnZhbDtcXFxcbmZsb2F0IGRpc3R5ID0gdnkgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X2ludGVydmFsO1xcXFxuZmxvYXQgZGlzdExlbmd0aCA9IHNxcnQoKGRpc3R4ICogZGlzdHgpICsgKGRpc3R5ICogZGlzdHkpKTtcXFxcbmlmICgobm9kZUF0dHJpYnV0ZXMxLncgIT0gMC4wKSAmJiAobm9kZUF0dHJpYnV0ZXMyLncgIT0gMC4wKSkge2dXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXSA9IHZlYzQobm9kZUF0dHJpYnV0ZXMxLncsIG5vZGVBdHRyaWJ1dGVzMi53LCBjdXJyZW50Tm9kZS56LCAwLjApO31lbHNlIHtnV2ViR1BVQnVmZmVyMC51X0RhdGFbaV0gPSB2ZWM0KGN1cnJlbnROb2RlLnggKyBkaXN0eCwgY3VycmVudE5vZGUueSArIGRpc3R5LCBjdXJyZW50Tm9kZS56LCBkaXN0TGVuZ3RoKTt9fVxcXFxuXCIsXCJHTFNMMTAwXCI6XCJcXFxcblxcXFxuZmxvYXQgZXBzaWxvbiA9IDAuMDAwMDE7XFxcXG52ZWMyIGFkZHJUcmFuc2xhdGlvbl8xRHRvMkQoZmxvYXQgYWRkcmVzczFELCB2ZWMyIHRleFNpemUpIHtcXFxcbiAgdmVjMiBjb252X2NvbnN0ID0gdmVjMigxLjAgLyB0ZXhTaXplLngsIDEuMCAvICh0ZXhTaXplLnggKiB0ZXhTaXplLnkpKTtcXFxcbiAgdmVjMiBub3JtQWRkcjJEID0gZmxvYXQoYWRkcmVzczFEKSAqIGNvbnZfY29uc3Q7XFxcXG4gIHJldHVybiB2ZWMyKGZyYWN0KG5vcm1BZGRyMkQueCArIGVwc2lsb24pLCBub3JtQWRkcjJELnkpO1xcXFxufVxcXFxuXFxcXG52b2lkIGJhcnJpZXIoKSB7fVxcXFxuICBcXFxcblxcXFxudW5pZm9ybSB2ZWMyIHVfT3V0cHV0VGV4dHVyZVNpemU7XFxcXG51bmlmb3JtIGludCB1X091dHB1dFRleGVsQ291bnQ7XFxcXG52YXJ5aW5nIHZlYzIgdl9UZXhDb29yZDtcXFxcblxcXFxuYm9vbCBnV2ViR1BVRGVidWcgPSBmYWxzZTtcXFxcbnZlYzQgZ1dlYkdQVURlYnVnT3V0cHV0ID0gdmVjNCgwLjApO1xcXFxuXFxcXG4jZGVmaW5lIE1BWF9FREdFX1BFUl9WRVJURVggX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19NQVhfRURHRV9QRVJfVkVSVEVYXFxcXG4jZGVmaW5lIFZFUlRFWF9DT1VOVCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVFxcXFxuI2RlZmluZSBTSElGVF8yMCAxMDQ4NTc2LjBcXFxcblxcXFxudW5pZm9ybSBzYW1wbGVyMkQgdV9EYXRhO1xcXFxudW5pZm9ybSB2ZWMyIHVfRGF0YVNpemU7XFxcXG52ZWM0IGdldERhdGF1X0RhdGEodmVjMiBhZGRyZXNzMkQpIHtcXFxcbiAgcmV0dXJuIHZlYzQodGV4dHVyZTJEKHVfRGF0YSwgYWRkcmVzczJEKS5yZ2JhKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfRGF0YShmbG9hdCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0RhdGEoYWRkclRyYW5zbGF0aW9uXzFEdG8yRChhZGRyZXNzMUQsIHVfRGF0YVNpemUpKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfRGF0YShpbnQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9EYXRhKGZsb2F0KGFkZHJlc3MxRCkpO1xcXFxufVxcXFxudW5pZm9ybSBmbG9hdCB1X2RhbXBpbmc7XFxcXG51bmlmb3JtIGZsb2F0IHVfbWF4U3BlZWQ7XFxcXG51bmlmb3JtIGZsb2F0IHVfbWluTW92ZW1lbnQ7XFxcXG51bmlmb3JtIHNhbXBsZXIyRCB1X0F2ZU1vdmVtZW50O1xcXFxudW5pZm9ybSB2ZWMyIHVfQXZlTW92ZW1lbnRTaXplO1xcXFxudmVjNCBnZXREYXRhdV9BdmVNb3ZlbWVudCh2ZWMyIGFkZHJlc3MyRCkge1xcXFxuICByZXR1cm4gdmVjNCh0ZXh0dXJlMkQodV9BdmVNb3ZlbWVudCwgYWRkcmVzczJEKS5yZ2JhKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfQXZlTW92ZW1lbnQoZmxvYXQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9BdmVNb3ZlbWVudChhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGFkZHJlc3MxRCwgdV9BdmVNb3ZlbWVudFNpemUpKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfQXZlTW92ZW1lbnQoaW50IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfQXZlTW92ZW1lbnQoZmxvYXQoYWRkcmVzczFEKSk7XFxcXG59XFxcXG51bmlmb3JtIGZsb2F0IHVfY291bG9tYkRpc1NjYWxlO1xcXFxudW5pZm9ybSBmbG9hdCB1X2ZhY3RvcjtcXFxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfTm9kZUF0dHJpYnV0ZUFycmF5MTtcXFxcbnVuaWZvcm0gdmVjMiB1X05vZGVBdHRyaWJ1dGVBcnJheTFTaXplO1xcXFxudmVjNCBnZXREYXRhdV9Ob2RlQXR0cmlidXRlQXJyYXkxKHZlYzIgYWRkcmVzczJEKSB7XFxcXG4gIHJldHVybiB2ZWM0KHRleHR1cmUyRCh1X05vZGVBdHRyaWJ1dGVBcnJheTEsIGFkZHJlc3MyRCkucmdiYSk7XFxcXG59XFxcXG52ZWM0IGdldERhdGF1X05vZGVBdHRyaWJ1dGVBcnJheTEoZmxvYXQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9Ob2RlQXR0cmlidXRlQXJyYXkxKGFkZHJUcmFuc2xhdGlvbl8xRHRvMkQoYWRkcmVzczFELCB1X05vZGVBdHRyaWJ1dGVBcnJheTFTaXplKSk7XFxcXG59XFxcXG52ZWM0IGdldERhdGF1X05vZGVBdHRyaWJ1dGVBcnJheTEoaW50IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZUFycmF5MShmbG9hdChhZGRyZXNzMUQpKTtcXFxcbn1cXFxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfTm9kZUF0dHJpYnV0ZUFycmF5MjtcXFxcbnVuaWZvcm0gdmVjMiB1X05vZGVBdHRyaWJ1dGVBcnJheTJTaXplO1xcXFxudmVjNCBnZXREYXRhdV9Ob2RlQXR0cmlidXRlQXJyYXkyKHZlYzIgYWRkcmVzczJEKSB7XFxcXG4gIHJldHVybiB2ZWM0KHRleHR1cmUyRCh1X05vZGVBdHRyaWJ1dGVBcnJheTIsIGFkZHJlc3MyRCkucmdiYSk7XFxcXG59XFxcXG52ZWM0IGdldERhdGF1X05vZGVBdHRyaWJ1dGVBcnJheTIoZmxvYXQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9Ob2RlQXR0cmlidXRlQXJyYXkyKGFkZHJUcmFuc2xhdGlvbl8xRHRvMkQoYWRkcmVzczFELCB1X05vZGVBdHRyaWJ1dGVBcnJheTJTaXplKSk7XFxcXG59XFxcXG52ZWM0IGdldERhdGF1X05vZGVBdHRyaWJ1dGVBcnJheTIoaW50IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZUFycmF5MihmbG9hdChhZGRyZXNzMUQpKTtcXFxcbn1cXFxcbnVuaWZvcm0gZmxvYXQgdV9pbnRlcnZhbDtcXFxcbml2ZWMyIHVucGFja19mbG9hdChmbG9hdCBwYWNrZWRWYWx1ZSkge1xcXFxuaXZlYzMgd29ya0dyb3VwU2l6ZSA9IGl2ZWMzKDEsIDEsIDEpO1xcXFxuaXZlYzMgbnVtV29ya0dyb3VwcyA9IGl2ZWMzKDEsIDEsIDEpOyAgICAgXFxcXG5pbnQgZ2xvYmFsSW52b2NhdGlvbkluZGV4ID0gaW50KGZsb29yKHZfVGV4Q29vcmQueCAqIHVfT3V0cHV0VGV4dHVyZVNpemUueCkpXFxcXG4gICsgaW50KGZsb29yKHZfVGV4Q29vcmQueSAqIHVfT3V0cHV0VGV4dHVyZVNpemUueSkpICogaW50KHVfT3V0cHV0VGV4dHVyZVNpemUueCk7XFxcXG5pbnQgd29ya0dyb3VwSURMZW5ndGggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55ICogd29ya0dyb3VwU2l6ZS56KTtcXFxcbml2ZWMzIHdvcmtHcm91cElEID0gaXZlYzMod29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnkgLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueSk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURaID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURZID0gKGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSkgLyB3b3JrR3JvdXBTaXplLng7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURYID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55IC0gbG9jYWxJbnZvY2F0aW9uSURZICogd29ya0dyb3VwU2l6ZS54O1xcXFxuaXZlYzMgbG9jYWxJbnZvY2F0aW9uSUQgPSBpdmVjMyhsb2NhbEludm9jYXRpb25JRFgsIGxvY2FsSW52b2NhdGlvbklEWSwgbG9jYWxJbnZvY2F0aW9uSURaKTtcXFxcbml2ZWMzIGdsb2JhbEludm9jYXRpb25JRCA9IHdvcmtHcm91cElEICogd29ya0dyb3VwU2l6ZSArIGxvY2FsSW52b2NhdGlvbklEO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbkluZGV4ID0gbG9jYWxJbnZvY2F0aW9uSUQueiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueVxcXFxuICAgICAgICAgICAgICAgICsgbG9jYWxJbnZvY2F0aW9uSUQueSAqIHdvcmtHcm91cFNpemUueCArIGxvY2FsSW52b2NhdGlvbklELng7XFxcXG5pbnQgcGFja2VkSW50VmFsdWUgPSBpbnQocGFja2VkVmFsdWUpO1xcXFxuaW50IHYwID0gcGFja2VkSW50VmFsdWUgLyBpbnQoU0hJRlRfMjApO1xcXFxucmV0dXJuIGl2ZWMyKHYwLCBwYWNrZWRJbnRWYWx1ZSAtICh2MCAqIGludChTSElGVF8yMCkpKTt9XFxcXG52ZWMyIGNhbGNSZXB1bHNpdmUoaW50IGksIHZlYzQgY3VycmVudE5vZGUpIHtcXFxcbml2ZWMzIHdvcmtHcm91cFNpemUgPSBpdmVjMygxLCAxLCAxKTtcXFxcbml2ZWMzIG51bVdvcmtHcm91cHMgPSBpdmVjMygxLCAxLCAxKTsgICAgIFxcXFxuaW50IGdsb2JhbEludm9jYXRpb25JbmRleCA9IGludChmbG9vcih2X1RleENvb3JkLnggKiB1X091dHB1dFRleHR1cmVTaXplLngpKVxcXFxuICArIGludChmbG9vcih2X1RleENvb3JkLnkgKiB1X091dHB1dFRleHR1cmVTaXplLnkpKSAqIGludCh1X091dHB1dFRleHR1cmVTaXplLngpO1xcXFxuaW50IHdvcmtHcm91cElETGVuZ3RoID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAqIHdvcmtHcm91cFNpemUueik7XFxcXG5pdmVjMyB3b3JrR3JvdXBJRCA9IGl2ZWMzKHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy55IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWiA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWSA9IChnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpIC8gd29ya0dyb3VwU2l6ZS54O1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAtIGxvY2FsSW52b2NhdGlvbklEWSAqIHdvcmtHcm91cFNpemUueDtcXFxcbml2ZWMzIGxvY2FsSW52b2NhdGlvbklEID0gaXZlYzMobG9jYWxJbnZvY2F0aW9uSURYLCBsb2NhbEludm9jYXRpb25JRFksIGxvY2FsSW52b2NhdGlvbklEWik7XFxcXG5pdmVjMyBnbG9iYWxJbnZvY2F0aW9uSUQgPSB3b3JrR3JvdXBJRCAqIHdvcmtHcm91cFNpemUgKyBsb2NhbEludm9jYXRpb25JRDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JbmRleCA9IGxvY2FsSW52b2NhdGlvbklELnogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnlcXFxcbiAgICAgICAgICAgICAgICArIGxvY2FsSW52b2NhdGlvbklELnkgKiB3b3JrR3JvdXBTaXplLnggKyBsb2NhbEludm9jYXRpb25JRC54O1xcXFxuZmxvYXQgYXggPSAwLjA7XFxcXG5mbG9hdCBheSA9IDAuMDtcXFxcbmZvciAoaW50IGogPSAwOyBqIDwgVkVSVEVYX0NPVU5UOyBqKyspIHtpZiAoaSAhPSBqKSB7dmVjNCBuZXh0Tm9kZSA9IGdldERhdGF1X0RhdGEoaik7XFxcXG5mbG9hdCB2eCA9IGN1cnJlbnROb2RlLnggLSBuZXh0Tm9kZS54O1xcXFxuZmxvYXQgdnkgPSBjdXJyZW50Tm9kZS55IC0gbmV4dE5vZGUueTtcXFxcbmZsb2F0IGRpc3QgPSBzcXJ0KCh2eCAqIHZ4KSArICh2eSAqIHZ5KSkgKyAwLjAxO1xcXFxuZmxvYXQgbl9kaXN0ID0gKGRpc3QgKyAwLjEpICogdV9jb3Vsb21iRGlzU2NhbGU7XFxcXG5mbG9hdCBkaXJleCA9IHZ4IC8gZGlzdDtcXFxcbmZsb2F0IGRpcmV5ID0gdnkgLyBkaXN0O1xcXFxudmVjNCBhdHRyaWJ1dGVzaSA9IGdldERhdGF1X05vZGVBdHRyaWJ1dGVBcnJheTEoaSk7XFxcXG52ZWM0IGF0dHJpYnV0ZXNqID0gZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZUFycmF5MShqKTtcXFxcbmZsb2F0IG1hc3NpID0gYXR0cmlidXRlc2kueDtcXFxcbmZsb2F0IG5vZGVTdHJlbmd0aGkgPSBhdHRyaWJ1dGVzaS56O1xcXFxuZmxvYXQgbm9kZVN0cmVuZ3RoaiA9IGF0dHJpYnV0ZXNqLno7XFxcXG5mbG9hdCBub2RlU3RyZW5ndGggPSAobm9kZVN0cmVuZ3RoaSArIG5vZGVTdHJlbmd0aGopIC8gMi4wO1xcXFxuZmxvYXQgcGFyYW0gPSAobm9kZVN0cmVuZ3RoICogdV9mYWN0b3IpIC8gKG5fZGlzdCAqIG5fZGlzdCk7XFxcXG5heCArPSBkaXJleCAqIHBhcmFtO1xcXFxuYXkgKz0gZGlyZXkgKiBwYXJhbTt9fVxcXFxucmV0dXJuIHZlYzIoYXgsIGF5KTt9XFxcXG52ZWMyIGNhbGNHcmF2aXR5KGludCBpLCB2ZWM0IGN1cnJlbnROb2RlLCB2ZWM0IGF0dHJpYnV0ZXMyKSB7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwgMSwgMSk7XFxcXG5pdmVjMyBudW1Xb3JrR3JvdXBzID0gaXZlYzMoMSwgMSwgMSk7ICAgICBcXFxcbmludCBnbG9iYWxJbnZvY2F0aW9uSW5kZXggPSBpbnQoZmxvb3Iodl9UZXhDb29yZC54ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS54KSlcXFxcbiAgKyBpbnQoZmxvb3Iodl9UZXhDb29yZC55ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS55KSkgKiBpbnQodV9PdXRwdXRUZXh0dXJlU2l6ZS54KTtcXFxcbmludCB3b3JrR3JvdXBJRExlbmd0aCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgKiB3b3JrR3JvdXBTaXplLnopO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyh3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueSAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFogPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFkgPSAoZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KSAvIHdvcmtHcm91cFNpemUueDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgLSBsb2NhbEludm9jYXRpb25JRFkgKiB3b3JrR3JvdXBTaXplLng7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGxvY2FsSW52b2NhdGlvbklEWCwgbG9jYWxJbnZvY2F0aW9uSURZLCBsb2NhbEludm9jYXRpb25JRFopO1xcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gd29ya0dyb3VwSUQgKiB3b3JrR3JvdXBTaXplICsgbG9jYWxJbnZvY2F0aW9uSUQ7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSW5kZXggPSBsb2NhbEludm9jYXRpb25JRC56ICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55XFxcXG4gICAgICAgICAgICAgICAgKyBsb2NhbEludm9jYXRpb25JRC55ICogd29ya0dyb3VwU2l6ZS54ICsgbG9jYWxJbnZvY2F0aW9uSUQueDtcXFxcbmZsb2F0IHZ4ID0gY3VycmVudE5vZGUueCAtIGF0dHJpYnV0ZXMyLng7XFxcXG5mbG9hdCB2eSA9IGN1cnJlbnROb2RlLnkgLSBhdHRyaWJ1dGVzMi55O1xcXFxuZmxvYXQgYXggPSB2eCAqIGF0dHJpYnV0ZXMyLno7XFxcXG5mbG9hdCBheSA9IHZ5ICogYXR0cmlidXRlczIuejtcXFxcbnJldHVybiB2ZWMyKGF4LCBheSk7fVxcXFxudmVjMiBjYWxjQXR0cmFjdGl2ZShpbnQgaSwgdmVjNCBjdXJyZW50Tm9kZSwgdmVjNCBhdHRyaWJ1dGVzMSkge1xcXFxuaXZlYzMgd29ya0dyb3VwU2l6ZSA9IGl2ZWMzKDEsIDEsIDEpO1xcXFxuaXZlYzMgbnVtV29ya0dyb3VwcyA9IGl2ZWMzKDEsIDEsIDEpOyAgICAgXFxcXG5pbnQgZ2xvYmFsSW52b2NhdGlvbkluZGV4ID0gaW50KGZsb29yKHZfVGV4Q29vcmQueCAqIHVfT3V0cHV0VGV4dHVyZVNpemUueCkpXFxcXG4gICsgaW50KGZsb29yKHZfVGV4Q29vcmQueSAqIHVfT3V0cHV0VGV4dHVyZVNpemUueSkpICogaW50KHVfT3V0cHV0VGV4dHVyZVNpemUueCk7XFxcXG5pbnQgd29ya0dyb3VwSURMZW5ndGggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55ICogd29ya0dyb3VwU2l6ZS56KTtcXFxcbml2ZWMzIHdvcmtHcm91cElEID0gaXZlYzMod29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnkgLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueSk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURaID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURZID0gKGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSkgLyB3b3JrR3JvdXBTaXplLng7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURYID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55IC0gbG9jYWxJbnZvY2F0aW9uSURZICogd29ya0dyb3VwU2l6ZS54O1xcXFxuaXZlYzMgbG9jYWxJbnZvY2F0aW9uSUQgPSBpdmVjMyhsb2NhbEludm9jYXRpb25JRFgsIGxvY2FsSW52b2NhdGlvbklEWSwgbG9jYWxJbnZvY2F0aW9uSURaKTtcXFxcbml2ZWMzIGdsb2JhbEludm9jYXRpb25JRCA9IHdvcmtHcm91cElEICogd29ya0dyb3VwU2l6ZSArIGxvY2FsSW52b2NhdGlvbklEO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbkluZGV4ID0gbG9jYWxJbnZvY2F0aW9uSUQueiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueVxcXFxuICAgICAgICAgICAgICAgICsgbG9jYWxJbnZvY2F0aW9uSUQueSAqIHdvcmtHcm91cFNpemUueCArIGxvY2FsSW52b2NhdGlvbklELng7XFxcXG5mbG9hdCBtYXNzID0gYXR0cmlidXRlczEueDtcXFxcbmZsb2F0IGF4ID0gMC4wO1xcXFxuZmxvYXQgYXkgPSAwLjA7XFxcXG5pdmVjMiBjb21wcmVzc2VkID0gdW5wYWNrX2Zsb2F0KGN1cnJlbnROb2RlLnopO1xcXFxuaW50IGxlbmd0aCA9IGNvbXByZXNzZWQueDtcXFxcbmludCBhcnJfb2Zmc2V0ID0gY29tcHJlc3NlZC55O1xcXFxudmVjNCBub2RlX2J1ZmZlcjtcXFxcbmZvciAoaW50IHAgPSAwOyBwIDwgTUFYX0VER0VfUEVSX1ZFUlRFWDsgcCsrKSB7aWYgKHAgPj0gbGVuZ3RoKSB7YnJlYWs7fVxcXFxuaW50IGFycl9pZHggPSBhcnJfb2Zmc2V0ICsgKDQgKiBwKTtcXFxcbmludCBidWZfb2Zmc2V0ID0gYXJyX2lkeCAtICgoYXJyX2lkeCAvIDQpICogNCk7XFxcXG5pZiAoKHAgPT0gMCkgfHwgKGJ1Zl9vZmZzZXQgPT0gMCkpIHtub2RlX2J1ZmZlciA9IGdldERhdGF1X0RhdGEoaW50KGFycl9pZHggLyA0KSk7fVxcXFxuZmxvYXQgZmxvYXRfaiA9IG5vZGVfYnVmZmVyLng7XFxcXG52ZWM0IG5leHROb2RlID0gZ2V0RGF0YXVfRGF0YShpbnQoZmxvYXRfaikpO1xcXFxuZmxvYXQgdnggPSBuZXh0Tm9kZS54IC0gY3VycmVudE5vZGUueDtcXFxcbmZsb2F0IHZ5ID0gbmV4dE5vZGUueSAtIGN1cnJlbnROb2RlLnk7XFxcXG5mbG9hdCBkaXN0ID0gc3FydCgodnggKiB2eCkgKyAodnkgKiB2eSkpICsgMC4wMTtcXFxcbmZsb2F0IGRpcmV4ID0gdnggLyBkaXN0O1xcXFxuZmxvYXQgZGlyZXkgPSB2eSAvIGRpc3Q7XFxcXG5mbG9hdCBlZGdlTGVuZ3RoID0gbm9kZV9idWZmZXIueTtcXFxcbmZsb2F0IGVkZ2VTdHJlbmd0aCA9IG5vZGVfYnVmZmVyLno7XFxcXG5mbG9hdCBkaWZmID0gZWRnZUxlbmd0aCAtIGRpc3Q7XFxcXG5mbG9hdCBwYXJhbSA9IChkaWZmICogZWRnZVN0cmVuZ3RoKSAvIG1hc3M7XFxcXG5heCAtPSBkaXJleCAqIHBhcmFtO1xcXFxuYXkgLT0gZGlyZXkgKiBwYXJhbTt9XFxcXG5yZXR1cm4gdmVjMihheCwgYXkpO31cXFxcbnZvaWQgbWFpbigpIHtcXFxcbml2ZWMzIHdvcmtHcm91cFNpemUgPSBpdmVjMygxLCAxLCAxKTtcXFxcbml2ZWMzIG51bVdvcmtHcm91cHMgPSBpdmVjMygxLCAxLCAxKTsgICAgIFxcXFxuaW50IGdsb2JhbEludm9jYXRpb25JbmRleCA9IGludChmbG9vcih2X1RleENvb3JkLnggKiB1X091dHB1dFRleHR1cmVTaXplLngpKVxcXFxuICArIGludChmbG9vcih2X1RleENvb3JkLnkgKiB1X091dHB1dFRleHR1cmVTaXplLnkpKSAqIGludCh1X091dHB1dFRleHR1cmVTaXplLngpO1xcXFxuaW50IHdvcmtHcm91cElETGVuZ3RoID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAqIHdvcmtHcm91cFNpemUueik7XFxcXG5pdmVjMyB3b3JrR3JvdXBJRCA9IGl2ZWMzKHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy55IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWiA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWSA9IChnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpIC8gd29ya0dyb3VwU2l6ZS54O1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAtIGxvY2FsSW52b2NhdGlvbklEWSAqIHdvcmtHcm91cFNpemUueDtcXFxcbml2ZWMzIGxvY2FsSW52b2NhdGlvbklEID0gaXZlYzMobG9jYWxJbnZvY2F0aW9uSURYLCBsb2NhbEludm9jYXRpb25JRFksIGxvY2FsSW52b2NhdGlvbklEWik7XFxcXG5pdmVjMyBnbG9iYWxJbnZvY2F0aW9uSUQgPSB3b3JrR3JvdXBJRCAqIHdvcmtHcm91cFNpemUgKyBsb2NhbEludm9jYXRpb25JRDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JbmRleCA9IGxvY2FsSW52b2NhdGlvbklELnogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnlcXFxcbiAgICAgICAgICAgICAgICArIGxvY2FsSW52b2NhdGlvbklELnkgKiB3b3JrR3JvdXBTaXplLnggKyBsb2NhbEludm9jYXRpb25JRC54O1xcXFxuaW50IGkgPSBnbG9iYWxJbnZvY2F0aW9uSUQueDtcXFxcbnZlYzQgY3VycmVudE5vZGUgPSBnZXREYXRhdV9EYXRhKGkpO1xcXFxudmVjNCBtb3ZlbWVudCA9IGdldERhdGF1X0F2ZU1vdmVtZW50KDAuMCk7XFxcXG5mbG9hdCBheCA9IDAuMDtcXFxcbmZsb2F0IGF5ID0gMC4wO1xcXFxuaWYgKChpID49IFZFUlRFWF9DT1VOVCkgfHwgKG1vdmVtZW50LnggPCB1X21pbk1vdmVtZW50KSkge2dsX0ZyYWdDb2xvciA9IHZlYzQoY3VycmVudE5vZGUpO1xcXFxucmV0dXJuIDt9XFxcXG52ZWM0IG5vZGVBdHRyaWJ1dGVzMSA9IGdldERhdGF1X05vZGVBdHRyaWJ1dGVBcnJheTEoaSk7XFxcXG52ZWM0IG5vZGVBdHRyaWJ1dGVzMiA9IGdldERhdGF1X05vZGVBdHRyaWJ1dGVBcnJheTIoaSk7XFxcXG52ZWMyIHJlcHVsc2l2ZSA9IGNhbGNSZXB1bHNpdmUoaSwgY3VycmVudE5vZGUpO1xcXFxuYXggKz0gcmVwdWxzaXZlLng7XFxcXG5heSArPSByZXB1bHNpdmUueTtcXFxcbnZlYzIgYXR0cmFjdGl2ZSA9IGNhbGNBdHRyYWN0aXZlKGksIGN1cnJlbnROb2RlLCBub2RlQXR0cmlidXRlczEpO1xcXFxuYXggKz0gYXR0cmFjdGl2ZS54O1xcXFxuYXkgKz0gYXR0cmFjdGl2ZS55O1xcXFxudmVjMiBncmF2aXR5ID0gY2FsY0dyYXZpdHkoaSwgY3VycmVudE5vZGUsIG5vZGVBdHRyaWJ1dGVzMik7XFxcXG5heCAtPSBncmF2aXR5Lng7XFxcXG5heSAtPSBncmF2aXR5Lnk7XFxcXG5mbG9hdCBwYXJhbSA9IHVfaW50ZXJ2YWwgKiB1X2RhbXBpbmc7XFxcXG5mbG9hdCB2eCA9IGF4ICogcGFyYW07XFxcXG5mbG9hdCB2eSA9IGF5ICogcGFyYW07XFxcXG5mbG9hdCB2bGVuZ3RoID0gc3FydCgodnggKiB2eCkgKyAodnkgKiB2eSkpICsgMC4wMDAxO1xcXFxuaWYgKHZsZW5ndGggPiB1X21heFNwZWVkKSB7ZmxvYXQgcGFyYW0yID0gdV9tYXhTcGVlZCAvIHZsZW5ndGg7XFxcXG52eCA9IHBhcmFtMiAqIHZ4O1xcXFxudnkgPSBwYXJhbTIgKiB2eTt9XFxcXG5mbG9hdCBkaXN0eCA9IHZ4ICogdV9pbnRlcnZhbDtcXFxcbmZsb2F0IGRpc3R5ID0gdnkgKiB1X2ludGVydmFsO1xcXFxuZmxvYXQgZGlzdExlbmd0aCA9IHNxcnQoKGRpc3R4ICogZGlzdHgpICsgKGRpc3R5ICogZGlzdHkpKTtcXFxcbmlmICgobm9kZUF0dHJpYnV0ZXMxLncgIT0gMC4wKSAmJiAobm9kZUF0dHJpYnV0ZXMyLncgIT0gMC4wKSkge2dsX0ZyYWdDb2xvciA9IHZlYzQodmVjNChub2RlQXR0cmlidXRlczEudywgbm9kZUF0dHJpYnV0ZXMyLncsIGN1cnJlbnROb2RlLnosIDAuMCkpO31lbHNlIHtnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzQoY3VycmVudE5vZGUueCArIGRpc3R4LCBjdXJyZW50Tm9kZS55ICsgZGlzdHksIGN1cnJlbnROb2RlLnosIGRpc3RMZW5ndGgpKTt9aWYgKGdXZWJHUFVEZWJ1Zykge1xcXFxuICBnbF9GcmFnQ29sb3IgPSBnV2ViR1BVRGVidWdPdXRwdXQ7XFxcXG59fVxcXFxuXCJ9LFwiY29udGV4dFwiOntcIm5hbWVcIjpcIlwiLFwiZGlzcGF0Y2hcIjpbMSwxLDFdLFwidGhyZWFkR3JvdXBTaXplXCI6WzEsMSwxXSxcIm1heEl0ZXJhdGlvblwiOjEsXCJkZWZpbmVzXCI6W3tcIm5hbWVcIjpcIk1BWF9FREdFX1BFUl9WRVJURVhcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJydW50aW1lXCI6dHJ1ZX0se1wibmFtZVwiOlwiVkVSVEVYX0NPVU5UXCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwicnVudGltZVwiOnRydWV9LHtcIm5hbWVcIjpcIlNISUZUXzIwXCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwidmFsdWVcIjoxMDQ4NTc2LFwicnVudGltZVwiOmZhbHNlfV0sXCJ1bmlmb3Jtc1wiOlt7XCJuYW1lXCI6XCJ1X0RhdGFcIixcInR5cGVcIjpcInZlYzQ8ZjMyPltdXCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlN0b3JhZ2VCdWZmZXJcIixcInJlYWRvbmx5XCI6ZmFsc2UsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9kYW1waW5nXCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwic3RvcmFnZUNsYXNzXCI6XCJVbmlmb3JtXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9tYXhTcGVlZFwiLFwidHlwZVwiOlwiRmxvYXRcIixcInN0b3JhZ2VDbGFzc1wiOlwiVW5pZm9ybVwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfbWluTW92ZW1lbnRcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X0F2ZU1vdmVtZW50XCIsXCJ0eXBlXCI6XCJ2ZWM0PGYzMj5bXVwiLFwic3RvcmFnZUNsYXNzXCI6XCJTdG9yYWdlQnVmZmVyXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9jb3Vsb21iRGlzU2NhbGVcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X2ZhY3RvclwiLFwidHlwZVwiOlwiRmxvYXRcIixcInN0b3JhZ2VDbGFzc1wiOlwiVW5pZm9ybVwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfTm9kZUF0dHJpYnV0ZUFycmF5MVwiLFwidHlwZVwiOlwidmVjNDxmMzI+W11cIixcInN0b3JhZ2VDbGFzc1wiOlwiU3RvcmFnZUJ1ZmZlclwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfTm9kZUF0dHJpYnV0ZUFycmF5MlwiLFwidHlwZVwiOlwidmVjNDxmMzI+W11cIixcInN0b3JhZ2VDbGFzc1wiOlwiU3RvcmFnZUJ1ZmZlclwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfaW50ZXJ2YWxcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfV0sXCJnbG9iYWxEZWNsYXJhdGlvbnNcIjpbXSxcIm91dHB1dFwiOntcIm5hbWVcIjpcInVfRGF0YVwiLFwic2l6ZVwiOlsxLDFdLFwibGVuZ3RoXCI6MX0sXCJuZWVkUGluZ3BvbmdcIjp0cnVlfX1gO1xuZXhwb3J0IGNvbnN0IGF2ZU1vdmVtZW50Q29kZSA9IGBcbmNvbnN0IFZFUlRFWF9DT1VOVDtcbkBudW10aHJlYWRzKDEsIDEsIDEpXG5jbGFzcyBDYWxjQXZlTW92ZW1lbnQge1xuICBAaW5cbiAgdV9EYXRhOiB2ZWM0W107XG4gIEBpblxuICB1X2l0ZXI6IGZsb2F0O1xuICBAaW4gQG91dFxuICB1X0F2ZU1vdmVtZW50OiB2ZWM0W107XG4gIEBtYWluXG4gIGNvbXB1dGUoKSB7XG4gICAgbGV0IG1vdmVtZW50ID0gMDtcbiAgICBmb3IgKGxldCBqOiBpbnQgPSAwOyBqIDwgVkVSVEVYX0NPVU5UOyBqKyspIHtcbiAgICAgIGNvbnN0IHZlcnRleCA9IHRoaXMudV9EYXRhW2pdO1xuICAgICAgbW92ZW1lbnQgKz0gdmVydGV4WzNdO1xuICAgIH1cbiAgICBtb3ZlbWVudCA9IG1vdmVtZW50IC8gZmxvYXQoVkVSVEVYX0NPVU5UKTtcbiAgICB0aGlzLnVfQXZlTW92ZW1lbnRbMF0gPSBbbW92ZW1lbnQsIDAsIDAsIDBdO1xuICB9XG59XG5gO1xuZXhwb3J0IGNvbnN0IGF2ZU1vdmVtZW50QnVuZGxlID0gYHtcInNoYWRlcnNcIjp7XCJXR1NMXCI6XCJpbXBvcnQgXFxcXFwiR0xTTC5zdGQuNDUwXFxcXFwiIGFzIHN0ZDtcXFxcblxcXFxuXFxcXG4jIHZhciBnV2ViR1BVRGVidWcgOiBib29sID0gZmFsc2U7XFxcXG4jIHZhciBnV2ViR1BVRGVidWdPdXRwdXQgOiB2ZWM0PGYzMj4gPSB2ZWM0PGYzMj4oMC4wKTtcXFxcblxcXFxuW1tidWlsdGluIGdsb2JhbF9pbnZvY2F0aW9uX2lkXV0gdmFyPGluPiBnbG9iYWxJbnZvY2F0aW9uSUQgOiB2ZWMzPHUzMj47XFxcXG4jIFtbYnVpbHRpbiB3b3JrX2dyb3VwX3NpemVdXSB2YXI8aW4+IHdvcmtHcm91cFNpemUgOiB2ZWMzPHUzMj47XFxcXG4jIFtbYnVpbHRpbiB3b3JrX2dyb3VwX2lkXV0gdmFyPGluPiB3b3JrR3JvdXBJRCA6IHZlYzM8dTMyPjtcXFxcbltbYnVpbHRpbiBsb2NhbF9pbnZvY2F0aW9uX2lkXV0gdmFyPGluPiBsb2NhbEludm9jYXRpb25JRCA6IHZlYzM8dTMyPjtcXFxcbiMgW1tidWlsdGluIG51bV93b3JrX2dyb3Vwc11dIHZhcjxpbj4gbnVtV29ya0dyb3VwcyA6IHZlYzM8dTMyPjtcXFxcbltbYnVpbHRpbiBsb2NhbF9pbnZvY2F0aW9uX2lkeF1dIHZhcjxpbj4gbG9jYWxJbnZvY2F0aW9uSW5kZXggOiB1MzI7XFxcXG5cXFxcbnR5cGUgR1dlYkdQVVBhcmFtcyA9IFtbYmxvY2tdXSBzdHJ1Y3Qge1xcXFxuICBbW29mZnNldCAwXV0gdV9pdGVyIDogZjMyO1xcXFxufTtcXFxcbltbYmluZGluZyAwLCBzZXQgMF1dIHZhcjx1bmlmb3JtPiBnV2ViR1BVVW5pZm9ybVBhcmFtcyA6IEdXZWJHUFVQYXJhbXM7XFxcXG50eXBlIEdXZWJHUFVCdWZmZXIwID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X0RhdGEgOiBbW3N0cmlkZSAxNl1dIGFycmF5PHZlYzQ8ZjMyPj47XFxcXG59O1xcXFxuW1tiaW5kaW5nIDEsIHNldCAwXV0gdmFyPHN0b3JhZ2VfYnVmZmVyPiBnV2ViR1BVQnVmZmVyMCA6IEdXZWJHUFVCdWZmZXIwO1xcXFxudHlwZSBHV2ViR1BVQnVmZmVyMSA9IFtbYmxvY2tdXSBzdHJ1Y3Qge1xcXFxuICBbW29mZnNldCAwXV0gdV9BdmVNb3ZlbWVudCA6IFtbc3RyaWRlIDE2XV0gYXJyYXk8dmVjNDxmMzI+PjtcXFxcbn07XFxcXG5bW2JpbmRpbmcgMiwgc2V0IDBdXSB2YXI8c3RvcmFnZV9idWZmZXI+IGdXZWJHUFVCdWZmZXIxIDogR1dlYkdQVUJ1ZmZlcjE7XFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuZm4gbWFpbigpIC0+IHZvaWQge3ZhciBtb3ZlbWVudCA6IGYzMiA9IDAuMDtcXFxcbmZvciAodmFyIGogOiBpMzIgPSAwOyBqIDwgX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19WRVJURVhfQ09VTlQ7IGogPSBqICsgMSkge3ZhciB2ZXJ0ZXggOiB2ZWM0PGYzMj4gPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbal07XFxcXG5tb3ZlbWVudCA9IG1vdmVtZW50ICsgdmVydGV4Lnc7fVxcXFxubW92ZW1lbnQgPSBtb3ZlbWVudCAvIGYzMihfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVCk7XFxcXG5nV2ViR1BVQnVmZmVyMS51X0F2ZU1vdmVtZW50WzBdID0gdmVjNDxmMzI+KG1vdmVtZW50LCAwLjAsIDAuMCwgMC4wKTtcXFxcbnJldHVybjt9XFxcXG5cXFxcbmVudHJ5X3BvaW50IGNvbXB1dGUgYXMgXFxcXFwibWFpblxcXFxcIiA9IG1haW47XFxcXG5cIixcIkdMU0w0NTBcIjpcIlxcXFxuXFxcXG5cXFxcbmJvb2wgZ1dlYkdQVURlYnVnID0gZmFsc2U7XFxcXG52ZWM0IGdXZWJHUFVEZWJ1Z091dHB1dCA9IHZlYzQoMC4wKTtcXFxcblxcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gaXZlYzMoZ2xfR2xvYmFsSW52b2NhdGlvbklEKTtcXFxcbml2ZWMzIHdvcmtHcm91cFNpemUgPSBpdmVjMygxLDEsMSk7XFxcXG5pdmVjMyB3b3JrR3JvdXBJRCA9IGl2ZWMzKGdsX1dvcmtHcm91cElEKTtcXFxcbml2ZWMzIGxvY2FsSW52b2NhdGlvbklEID0gaXZlYzMoZ2xfTG9jYWxJbnZvY2F0aW9uSUQpO1xcXFxuaXZlYzMgbnVtV29ya0dyb3VwcyA9IGl2ZWMzKGdsX051bVdvcmtHcm91cHMpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbkluZGV4ID0gaW50KGdsX0xvY2FsSW52b2NhdGlvbkluZGV4KTtcXFxcblxcXFxubGF5b3V0KHN0ZDE0MCwgc2V0ID0gMCwgYmluZGluZyA9IDApIHVuaWZvcm0gR1dlYkdQVVBhcmFtcyB7XFxcXG4gIGZsb2F0IHVfaXRlcjtcXFxcbn0gZ1dlYkdQVVVuaWZvcm1QYXJhbXM7XFxcXG5sYXlvdXQoc3RkNDMwLCBzZXQgPSAwLCBiaW5kaW5nID0gMSkgYnVmZmVyIHJlYWRvbmx5ICBHV2ViR1BVQnVmZmVyMCB7XFxcXG4gIHZlYzQgdV9EYXRhW107XFxcXG59IGdXZWJHUFVCdWZmZXIwO1xcXFxuXFxcXG5sYXlvdXQoc3RkNDMwLCBzZXQgPSAwLCBiaW5kaW5nID0gMikgYnVmZmVyICAgR1dlYkdQVUJ1ZmZlcjEge1xcXFxuICB2ZWM0IHVfQXZlTW92ZW1lbnRbXTtcXFxcbn0gZ1dlYkdQVUJ1ZmZlcjE7XFxcXG5cXFxcblxcXFxuXFxcXG4jZGVmaW5lIFZFUlRFWF9DT1VOVCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVFxcXFxubGF5b3V0IChcXFxcbiAgbG9jYWxfc2l6ZV94ID0gMSxcXFxcbiAgbG9jYWxfc2l6ZV95ID0gMSxcXFxcbiAgbG9jYWxfc2l6ZV96ID0gMVxcXFxuKSBpbjtcXFxcblxcXFxuXFxcXG5cXFxcbnZvaWQgbWFpbigpIHtmbG9hdCBtb3ZlbWVudCA9IDAuMDtcXFxcbmZvciAoaW50IGogPSAwOyBqIDwgVkVSVEVYX0NPVU5UOyBqKyspIHt2ZWM0IHZlcnRleCA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtqXTtcXFxcbm1vdmVtZW50ICs9IHZlcnRleC53O31cXFxcbm1vdmVtZW50ID0gbW92ZW1lbnQgLyBmbG9hdChWRVJURVhfQ09VTlQpO1xcXFxuZ1dlYkdQVUJ1ZmZlcjEudV9BdmVNb3ZlbWVudFswXSA9IHZlYzQobW92ZW1lbnQsIDAuMCwgMC4wLCAwLjApO31cXFxcblwiLFwiR0xTTDEwMFwiOlwiXFxcXG5cXFxcbmZsb2F0IGVwc2lsb24gPSAwLjAwMDAxO1xcXFxudmVjMiBhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGZsb2F0IGFkZHJlc3MxRCwgdmVjMiB0ZXhTaXplKSB7XFxcXG4gIHZlYzIgY29udl9jb25zdCA9IHZlYzIoMS4wIC8gdGV4U2l6ZS54LCAxLjAgLyAodGV4U2l6ZS54ICogdGV4U2l6ZS55KSk7XFxcXG4gIHZlYzIgbm9ybUFkZHIyRCA9IGZsb2F0KGFkZHJlc3MxRCkgKiBjb252X2NvbnN0O1xcXFxuICByZXR1cm4gdmVjMihmcmFjdChub3JtQWRkcjJELnggKyBlcHNpbG9uKSwgbm9ybUFkZHIyRC55KTtcXFxcbn1cXFxcblxcXFxudm9pZCBiYXJyaWVyKCkge31cXFxcbiAgXFxcXG5cXFxcbnVuaWZvcm0gdmVjMiB1X091dHB1dFRleHR1cmVTaXplO1xcXFxudW5pZm9ybSBpbnQgdV9PdXRwdXRUZXhlbENvdW50O1xcXFxudmFyeWluZyB2ZWMyIHZfVGV4Q29vcmQ7XFxcXG5cXFxcbmJvb2wgZ1dlYkdQVURlYnVnID0gZmFsc2U7XFxcXG52ZWM0IGdXZWJHUFVEZWJ1Z091dHB1dCA9IHZlYzQoMC4wKTtcXFxcblxcXFxuI2RlZmluZSBWRVJURVhfQ09VTlQgX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19WRVJURVhfQ09VTlRcXFxcblxcXFxudW5pZm9ybSBzYW1wbGVyMkQgdV9EYXRhO1xcXFxudW5pZm9ybSB2ZWMyIHVfRGF0YVNpemU7XFxcXG52ZWM0IGdldERhdGF1X0RhdGEodmVjMiBhZGRyZXNzMkQpIHtcXFxcbiAgcmV0dXJuIHZlYzQodGV4dHVyZTJEKHVfRGF0YSwgYWRkcmVzczJEKS5yZ2JhKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfRGF0YShmbG9hdCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0RhdGEoYWRkclRyYW5zbGF0aW9uXzFEdG8yRChhZGRyZXNzMUQsIHVfRGF0YVNpemUpKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfRGF0YShpbnQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9EYXRhKGZsb2F0KGFkZHJlc3MxRCkpO1xcXFxufVxcXFxudW5pZm9ybSBmbG9hdCB1X2l0ZXI7XFxcXG51bmlmb3JtIHNhbXBsZXIyRCB1X0F2ZU1vdmVtZW50O1xcXFxudW5pZm9ybSB2ZWMyIHVfQXZlTW92ZW1lbnRTaXplO1xcXFxudmVjNCBnZXREYXRhdV9BdmVNb3ZlbWVudCh2ZWMyIGFkZHJlc3MyRCkge1xcXFxuICByZXR1cm4gdmVjNCh0ZXh0dXJlMkQodV9BdmVNb3ZlbWVudCwgYWRkcmVzczJEKS5yZ2JhKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfQXZlTW92ZW1lbnQoZmxvYXQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9BdmVNb3ZlbWVudChhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGFkZHJlc3MxRCwgdV9BdmVNb3ZlbWVudFNpemUpKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfQXZlTW92ZW1lbnQoaW50IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfQXZlTW92ZW1lbnQoZmxvYXQoYWRkcmVzczFEKSk7XFxcXG59XFxcXG52b2lkIG1haW4oKSB7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwgMSwgMSk7XFxcXG5pdmVjMyBudW1Xb3JrR3JvdXBzID0gaXZlYzMoMSwgMSwgMSk7ICAgICBcXFxcbmludCBnbG9iYWxJbnZvY2F0aW9uSW5kZXggPSBpbnQoZmxvb3Iodl9UZXhDb29yZC54ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS54KSlcXFxcbiAgKyBpbnQoZmxvb3Iodl9UZXhDb29yZC55ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS55KSkgKiBpbnQodV9PdXRwdXRUZXh0dXJlU2l6ZS54KTtcXFxcbmludCB3b3JrR3JvdXBJRExlbmd0aCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgKiB3b3JrR3JvdXBTaXplLnopO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyh3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueSAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFogPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFkgPSAoZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KSAvIHdvcmtHcm91cFNpemUueDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgLSBsb2NhbEludm9jYXRpb25JRFkgKiB3b3JrR3JvdXBTaXplLng7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGxvY2FsSW52b2NhdGlvbklEWCwgbG9jYWxJbnZvY2F0aW9uSURZLCBsb2NhbEludm9jYXRpb25JRFopO1xcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gd29ya0dyb3VwSUQgKiB3b3JrR3JvdXBTaXplICsgbG9jYWxJbnZvY2F0aW9uSUQ7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSW5kZXggPSBsb2NhbEludm9jYXRpb25JRC56ICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55XFxcXG4gICAgICAgICAgICAgICAgKyBsb2NhbEludm9jYXRpb25JRC55ICogd29ya0dyb3VwU2l6ZS54ICsgbG9jYWxJbnZvY2F0aW9uSUQueDtcXFxcbmZsb2F0IG1vdmVtZW50ID0gMC4wO1xcXFxuZm9yIChpbnQgaiA9IDA7IGogPCBWRVJURVhfQ09VTlQ7IGorKykge3ZlYzQgdmVydGV4ID0gZ2V0RGF0YXVfRGF0YShqKTtcXFxcbm1vdmVtZW50ICs9IHZlcnRleC53O31cXFxcbm1vdmVtZW50ID0gbW92ZW1lbnQgLyBmbG9hdChWRVJURVhfQ09VTlQpO1xcXFxuZ2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWM0KG1vdmVtZW50LCAwLjAsIDAuMCwgMC4wKSk7aWYgKGdXZWJHUFVEZWJ1Zykge1xcXFxuICBnbF9GcmFnQ29sb3IgPSBnV2ViR1BVRGVidWdPdXRwdXQ7XFxcXG59fVxcXFxuXCJ9LFwiY29udGV4dFwiOntcIm5hbWVcIjpcIlwiLFwiZGlzcGF0Y2hcIjpbMSwxLDFdLFwidGhyZWFkR3JvdXBTaXplXCI6WzEsMSwxXSxcIm1heEl0ZXJhdGlvblwiOjEsXCJkZWZpbmVzXCI6W3tcIm5hbWVcIjpcIlZFUlRFWF9DT1VOVFwiLFwidHlwZVwiOlwiRmxvYXRcIixcInJ1bnRpbWVcIjp0cnVlfV0sXCJ1bmlmb3Jtc1wiOlt7XCJuYW1lXCI6XCJ1X0RhdGFcIixcInR5cGVcIjpcInZlYzQ8ZjMyPltdXCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlN0b3JhZ2VCdWZmZXJcIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X2l0ZXJcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X0F2ZU1vdmVtZW50XCIsXCJ0eXBlXCI6XCJ2ZWM0PGYzMj5bXVwiLFwic3RvcmFnZUNsYXNzXCI6XCJTdG9yYWdlQnVmZmVyXCIsXCJyZWFkb25seVwiOmZhbHNlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19XSxcImdsb2JhbERlY2xhcmF0aW9uc1wiOltdLFwib3V0cHV0XCI6e1wibmFtZVwiOlwidV9BdmVNb3ZlbWVudFwiLFwic2l6ZVwiOlsxLDFdLFwibGVuZ3RoXCI6MX0sXCJuZWVkUGluZ3BvbmdcIjp0cnVlfX1gO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z0ZvcmNlU2hhZGVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/gpu/gForceShader.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/grid.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/grid.js ***! \*****************************************************/ /*! exports provided: GridLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GridLayout\", function() { return GridLayout; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/**\n * @fileOverview grid layout\n * @author shiwu.wyy@antfin.com\n * this algorithm refers to - https://github.com/cytoscape/cytoscape.js/\n */\n\n\n/**\n * 网格布局\n */\nclass GridLayout extends _base__WEBPACK_IMPORTED_MODULE_1__[\"Base\"] {\n constructor(options) {\n super();\n /** 布局起始点 */\n this.begin = [0, 0];\n /** prevents node overlap, may overflow boundingBox if not enough space */\n this.preventOverlap = true;\n /** extra spacing around nodes when preventOverlap: true */\n this.preventOverlapPadding = 10;\n /** uses all available space on false, uses minimal space on true */\n this.condense = false;\n /** a sorting function to order the nodes; e.g. function(a, b){ return a.datapublic ('weight') - b.data('weight') } */\n this.sortBy = \"degree\";\n this.nodeSize = 30;\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n this.row = 0;\n this.col = 0;\n this.cellWidth = 0;\n this.cellHeight = 0;\n this.cellUsed = {};\n this.id2manPos = {};\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n begin: [0, 0],\n preventOverlap: true,\n preventOverlapPadding: 10,\n condense: false,\n rows: undefined,\n cols: undefined,\n position: undefined,\n sortBy: \"degree\",\n nodeSize: 30\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const n = nodes.length;\n const begin = self.begin;\n if (n === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges\n };\n }\n if (n === 1) {\n nodes[0].x = begin[0];\n nodes[0].y = begin[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges,\n };\n }\n const layoutNodes = [];\n nodes.forEach((node) => {\n layoutNodes.push(node);\n });\n const nodeIdxMap = {};\n layoutNodes.forEach((node, i) => {\n nodeIdxMap[node.id] = i;\n });\n if (self.sortBy === \"degree\" ||\n !Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(self.sortBy) ||\n layoutNodes[0][self.sortBy] === undefined) {\n self.sortBy = \"degree\";\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNaN\"])(nodes[0].degree)) {\n const values = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getDegree\"])(layoutNodes.length, nodeIdxMap, edges);\n layoutNodes.forEach((node, i) => {\n node.degree = values[i];\n });\n }\n }\n // sort nodes by value\n layoutNodes.sort((n1, n2) => n2[self.sortBy] - n1[self.sortBy]);\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n const oRows = self.rows;\n const oCols = self.cols != null ? self.cols : self.columns;\n self.cells = n;\n // if rows or columns were set in self, use those values\n if (oRows != null && oCols != null) {\n self.rows = oRows;\n self.cols = oCols;\n }\n else if (oRows != null && oCols == null) {\n self.rows = oRows;\n self.cols = Math.ceil(self.cells / self.rows);\n }\n else if (oRows == null && oCols != null) {\n self.cols = oCols;\n self.rows = Math.ceil(self.cells / self.cols);\n }\n else {\n // otherwise use the automatic values and adjust accordingly\t // otherwise use the automatic values and adjust accordingly\n // width/height * splits^2 = cells where splits is number of times to split width\n self.splits = Math.sqrt((self.cells * self.height) / self.width);\n self.rows = Math.round(self.splits);\n self.cols = Math.round((self.width / self.height) * self.splits);\n }\n if (self.cols * self.rows > self.cells) {\n // otherwise use the automatic values and adjust accordingly\n // if rounding was up, see if we can reduce rows or columns\n const sm = self.small();\n const lg = self.large();\n // reducing the small side takes away the most cells, so try it first\n if ((sm - 1) * lg >= self.cells) {\n self.small(sm - 1);\n }\n else if ((lg - 1) * sm >= self.cells) {\n self.large(lg - 1);\n }\n }\n else {\n // if rounding was too low, add rows or columns\n while (self.cols * self.rows < self.cells) {\n const sm = self.small();\n const lg = self.large();\n // try to add to larger side first (adds less in multiplication)\n if ((lg + 1) * sm >= self.cells) {\n self.large(lg + 1);\n }\n else {\n self.small(sm + 1);\n }\n }\n }\n self.cellWidth = self.width / self.cols;\n self.cellHeight = self.height / self.rows;\n if (self.condense) {\n self.cellWidth = 0;\n self.cellHeight = 0;\n }\n if (self.preventOverlap) {\n layoutNodes.forEach((node) => {\n if (!node.x || !node.y) {\n // for bb\n node.x = 0;\n node.y = 0;\n }\n let nodew;\n let nodeh;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(node.size)) {\n nodew = node.size[0];\n nodeh = node.size[1];\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(node.size)) {\n nodew = node.size;\n nodeh = node.size;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(node.size)) {\n nodew = node.size.width;\n nodeh = node.size.height;\n }\n if (nodew === undefined || nodeh === undefined) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(self.nodeSize)) {\n nodew = self.nodeSize[0];\n nodeh = self.nodeSize[1];\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(self.nodeSize)) {\n nodew = self.nodeSize;\n nodeh = self.nodeSize;\n }\n else {\n nodew = 30;\n nodeh = 30;\n }\n }\n const p = self.preventOverlapPadding;\n const w = nodew + p;\n const h = nodeh + p;\n self.cellWidth = Math.max(self.cellWidth, w);\n self.cellHeight = Math.max(self.cellHeight, h);\n });\n }\n self.cellUsed = {}; // e.g. 'c-0-2' => true\n // to keep track of current cell position\n self.row = 0;\n self.col = 0;\n // get a cache of all the manual positions\n self.id2manPos = {};\n for (let i = 0; i < layoutNodes.length; i++) {\n const node = layoutNodes[i];\n let rcPos;\n if (self.position) {\n rcPos = self.position(node);\n }\n if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) {\n // must have at least row or col def'd\n const pos = {\n row: rcPos.row,\n col: rcPos.col\n };\n if (pos.col === undefined) {\n // find unused col\n pos.col = 0;\n while (self.used(pos.row, pos.col)) {\n pos.col++;\n }\n }\n else if (pos.row === undefined) {\n // find unused row\n pos.row = 0;\n while (self.used(pos.row, pos.col)) {\n pos.row++;\n }\n }\n self.id2manPos[node.id] = pos;\n self.use(pos.row, pos.col);\n }\n self.getPos(node);\n }\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n edges,\n nodes: layoutNodes\n };\n }\n small(val) {\n const self = this;\n let res;\n const rows = self.rows || 5;\n const cols = self.cols || 5;\n if (val == null) {\n res = Math.min(rows, cols);\n }\n else {\n const min = Math.min(rows, cols);\n if (min === self.rows) {\n self.rows = val;\n }\n else {\n self.cols = val;\n }\n }\n return res;\n }\n large(val) {\n const self = this;\n let res;\n const rows = self.rows || 5;\n const cols = self.cols || 5;\n if (val == null) {\n res = Math.max(rows, cols);\n }\n else {\n const max = Math.max(rows, cols);\n if (max === self.rows) {\n self.rows = val;\n }\n else {\n self.cols = val;\n }\n }\n return res;\n }\n used(row, col) {\n const self = this;\n return self.cellUsed[`c-${row}-${col}`] || false;\n }\n use(row, col) {\n const self = this;\n self.cellUsed[`c-${row}-${col}`] = true;\n }\n moveToNextCell() {\n const self = this;\n const cols = self.cols || 5;\n self.col++;\n if (self.col >= cols) {\n self.col = 0;\n self.row++;\n }\n }\n getPos(node) {\n const self = this;\n const begin = self.begin;\n const cellWidth = self.cellWidth;\n const cellHeight = self.cellHeight;\n let x;\n let y;\n // see if we have a manual position set\n const rcPos = self.id2manPos[node.id];\n if (rcPos) {\n x = rcPos.col * cellWidth + cellWidth / 2 + begin[0];\n y = rcPos.row * cellHeight + cellHeight / 2 + begin[1];\n }\n else {\n // otherwise set automatically\n while (self.used(self.row, self.col)) {\n self.moveToNextCell();\n }\n x = self.col * cellWidth + cellWidth / 2 + begin[0];\n y = self.row * cellHeight + cellHeight / 2 + begin[1];\n self.use(self.row, self.col);\n self.moveToNextCell();\n }\n node.x = x;\n node.y = y;\n }\n getType() {\n return \"grid\";\n }\n}\n//# sourceMappingURL=grid.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9ncmlkLmpzP2UwNGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2tGO0FBQ3BEO0FBQzlCO0FBQ0E7QUFDQTtBQUNPLHlCQUF5QiwwQ0FBSTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxxQkFBcUIsb0RBQW9EO0FBQzNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxhQUFhLHNEQUFRO0FBQ3JCO0FBQ0E7QUFDQSxnQkFBZ0IsbURBQUs7QUFDckIsK0JBQStCLHVEQUFTO0FBQ3hDO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHFEQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixzREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsc0RBQVE7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IscURBQU87QUFDL0I7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHNEQUFRO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsd0JBQXdCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsSUFBSSxHQUFHLElBQUk7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLElBQUksR0FBRyxJQUFJO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9ncmlkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IGdyaWQgbGF5b3V0XG4gKiBAYXV0aG9yIHNoaXd1Lnd5eUBhbnRmaW4uY29tXG4gKiB0aGlzIGFsZ29yaXRobSByZWZlcnMgdG8gPGN5dG9zY2FwZS5qcz4gLSBodHRwczovL2dpdGh1Yi5jb20vY3l0b3NjYXBlL2N5dG9zY2FwZS5qcy9cbiAqL1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzQXJyYXksIGlzTnVtYmVyLCBnZXREZWdyZWUsIGlzTmFOLCBpc09iamVjdCB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSBcIi4vYmFzZVwiO1xuLyoqXG4gKiDnvZHmoLzluIPlsYBcbiAqL1xuZXhwb3J0IGNsYXNzIEdyaWRMYXlvdXQgZXh0ZW5kcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8qKiDluIPlsYDotbflp4vngrkgKi9cbiAgICAgICAgdGhpcy5iZWdpbiA9IFswLCAwXTtcbiAgICAgICAgLyoqIHByZXZlbnRzIG5vZGUgb3ZlcmxhcCwgbWF5IG92ZXJmbG93IGJvdW5kaW5nQm94IGlmIG5vdCBlbm91Z2ggc3BhY2UgKi9cbiAgICAgICAgdGhpcy5wcmV2ZW50T3ZlcmxhcCA9IHRydWU7XG4gICAgICAgIC8qKiBleHRyYSBzcGFjaW5nIGFyb3VuZCBub2RlcyB3aGVuIHByZXZlbnRPdmVybGFwOiB0cnVlICovXG4gICAgICAgIHRoaXMucHJldmVudE92ZXJsYXBQYWRkaW5nID0gMTA7XG4gICAgICAgIC8qKiB1c2VzIGFsbCBhdmFpbGFibGUgc3BhY2Ugb24gZmFsc2UsIHVzZXMgbWluaW1hbCBzcGFjZSBvbiB0cnVlICovXG4gICAgICAgIHRoaXMuY29uZGVuc2UgPSBmYWxzZTtcbiAgICAgICAgLyoqIGEgc29ydGluZyBmdW5jdGlvbiB0byBvcmRlciB0aGUgbm9kZXM7IGUuZy4gZnVuY3Rpb24oYSwgYil7IHJldHVybiBhLmRhdGFwdWJsaWMgKCd3ZWlnaHQnKSAtIGIuZGF0YSgnd2VpZ2h0JykgfSAqL1xuICAgICAgICB0aGlzLnNvcnRCeSA9IFwiZGVncmVlXCI7XG4gICAgICAgIHRoaXMubm9kZVNpemUgPSAzMDtcbiAgICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgICAgIHRoaXMud2lkdGggPSAzMDA7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMzAwO1xuICAgICAgICB0aGlzLnJvdyA9IDA7XG4gICAgICAgIHRoaXMuY29sID0gMDtcbiAgICAgICAgdGhpcy5jZWxsV2lkdGggPSAwO1xuICAgICAgICB0aGlzLmNlbGxIZWlnaHQgPSAwO1xuICAgICAgICB0aGlzLmNlbGxVc2VkID0ge307XG4gICAgICAgIHRoaXMuaWQybWFuUG9zID0ge307XG4gICAgICAgIC8qKiDov63ku6Pnu5PmnZ/nmoTlm57osIPlh73mlbAgKi9cbiAgICAgICAgdGhpcy5vbkxheW91dEVuZCA9ICgpID0+IHsgfTtcbiAgICAgICAgdGhpcy51cGRhdGVDZmcob3B0aW9ucyk7XG4gICAgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiZWdpbjogWzAsIDBdLFxuICAgICAgICAgICAgcHJldmVudE92ZXJsYXA6IHRydWUsXG4gICAgICAgICAgICBwcmV2ZW50T3ZlcmxhcFBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgY29uZGVuc2U6IGZhbHNlLFxuICAgICAgICAgICAgcm93czogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29sczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcG9zaXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNvcnRCeTogXCJkZWdyZWVcIixcbiAgICAgICAgICAgIG5vZGVTaXplOiAzMFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiafooYzluIPlsYBcbiAgICAgKi9cbiAgICBleGVjdXRlKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBlZGdlcyA9IHNlbGYuZWRnZXM7XG4gICAgICAgIGNvbnN0IG4gPSBub2Rlcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGJlZ2luID0gc2VsZi5iZWdpbjtcbiAgICAgICAgaWYgKG4gPT09IDApIHtcbiAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbm9kZXMsXG4gICAgICAgICAgICAgICAgZWRnZXNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPT09IDEpIHtcbiAgICAgICAgICAgIG5vZGVzWzBdLnggPSBiZWdpblswXTtcbiAgICAgICAgICAgIG5vZGVzWzBdLnkgPSBiZWdpblsxXTtcbiAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbm9kZXMsXG4gICAgICAgICAgICAgICAgZWRnZXMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxheW91dE5vZGVzID0gW107XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIGxheW91dE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBub2RlSWR4TWFwID0ge307XG4gICAgICAgIGxheW91dE5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIG5vZGVJZHhNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHNlbGYuc29ydEJ5ID09PSBcImRlZ3JlZVwiIHx8XG4gICAgICAgICAgICAhaXNTdHJpbmcoc2VsZi5zb3J0QnkpIHx8XG4gICAgICAgICAgICBsYXlvdXROb2Rlc1swXVtzZWxmLnNvcnRCeV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2VsZi5zb3J0QnkgPSBcImRlZ3JlZVwiO1xuICAgICAgICAgICAgaWYgKGlzTmFOKG5vZGVzWzBdLmRlZ3JlZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBnZXREZWdyZWUobGF5b3V0Tm9kZXMubGVuZ3RoLCBub2RlSWR4TWFwLCBlZGdlcyk7XG4gICAgICAgICAgICAgICAgbGF5b3V0Tm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBub2RlLmRlZ3JlZSA9IHZhbHVlc1tpXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBzb3J0IG5vZGVzIGJ5IHZhbHVlXG4gICAgICAgIGxheW91dE5vZGVzLnNvcnQoKG4xLCBuMikgPT4gbjJbc2VsZi5zb3J0QnldIC0gbjFbc2VsZi5zb3J0QnldKTtcbiAgICAgICAgaWYgKCFzZWxmLndpZHRoICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYuaGVpZ2h0ICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9Sb3dzID0gc2VsZi5yb3dzO1xuICAgICAgICBjb25zdCBvQ29scyA9IHNlbGYuY29scyAhPSBudWxsID8gc2VsZi5jb2xzIDogc2VsZi5jb2x1bW5zO1xuICAgICAgICBzZWxmLmNlbGxzID0gbjtcbiAgICAgICAgLy8gaWYgcm93cyBvciBjb2x1bW5zIHdlcmUgc2V0IGluIHNlbGYsIHVzZSB0aG9zZSB2YWx1ZXNcbiAgICAgICAgaWYgKG9Sb3dzICE9IG51bGwgJiYgb0NvbHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2VsZi5yb3dzID0gb1Jvd3M7XG4gICAgICAgICAgICBzZWxmLmNvbHMgPSBvQ29scztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvUm93cyAhPSBudWxsICYmIG9Db2xzID09IG51bGwpIHtcbiAgICAgICAgICAgIHNlbGYucm93cyA9IG9Sb3dzO1xuICAgICAgICAgICAgc2VsZi5jb2xzID0gTWF0aC5jZWlsKHNlbGYuY2VsbHMgLyBzZWxmLnJvd3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9Sb3dzID09IG51bGwgJiYgb0NvbHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2VsZi5jb2xzID0gb0NvbHM7XG4gICAgICAgICAgICBzZWxmLnJvd3MgPSBNYXRoLmNlaWwoc2VsZi5jZWxscyAvIHNlbGYuY29scyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBvdGhlcndpc2UgdXNlIHRoZSBhdXRvbWF0aWMgdmFsdWVzIGFuZCBhZGp1c3QgYWNjb3JkaW5nbHlcdCAgICAgIC8vIG90aGVyd2lzZSB1c2UgdGhlIGF1dG9tYXRpYyB2YWx1ZXMgYW5kIGFkanVzdCBhY2NvcmRpbmdseVxuICAgICAgICAgICAgLy8gd2lkdGgvaGVpZ2h0ICogc3BsaXRzXjIgPSBjZWxscyB3aGVyZSBzcGxpdHMgaXMgbnVtYmVyIG9mIHRpbWVzIHRvIHNwbGl0IHdpZHRoXG4gICAgICAgICAgICBzZWxmLnNwbGl0cyA9IE1hdGguc3FydCgoc2VsZi5jZWxscyAqIHNlbGYuaGVpZ2h0KSAvIHNlbGYud2lkdGgpO1xuICAgICAgICAgICAgc2VsZi5yb3dzID0gTWF0aC5yb3VuZChzZWxmLnNwbGl0cyk7XG4gICAgICAgICAgICBzZWxmLmNvbHMgPSBNYXRoLnJvdW5kKChzZWxmLndpZHRoIC8gc2VsZi5oZWlnaHQpICogc2VsZi5zcGxpdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxmLmNvbHMgKiBzZWxmLnJvd3MgPiBzZWxmLmNlbGxzKSB7XG4gICAgICAgICAgICAvLyBvdGhlcndpc2UgdXNlIHRoZSBhdXRvbWF0aWMgdmFsdWVzIGFuZCBhZGp1c3QgYWNjb3JkaW5nbHlcbiAgICAgICAgICAgIC8vIGlmIHJvdW5kaW5nIHdhcyB1cCwgc2VlIGlmIHdlIGNhbiByZWR1Y2Ugcm93cyBvciBjb2x1bW5zXG4gICAgICAgICAgICBjb25zdCBzbSA9IHNlbGYuc21hbGwoKTtcbiAgICAgICAgICAgIGNvbnN0IGxnID0gc2VsZi5sYXJnZSgpO1xuICAgICAgICAgICAgLy8gcmVkdWNpbmcgdGhlIHNtYWxsIHNpZGUgdGFrZXMgYXdheSB0aGUgbW9zdCBjZWxscywgc28gdHJ5IGl0IGZpcnN0XG4gICAgICAgICAgICBpZiAoKHNtIC0gMSkgKiBsZyA+PSBzZWxmLmNlbGxzKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5zbWFsbChzbSAtIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoKGxnIC0gMSkgKiBzbSA+PSBzZWxmLmNlbGxzKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5sYXJnZShsZyAtIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgcm91bmRpbmcgd2FzIHRvbyBsb3csIGFkZCByb3dzIG9yIGNvbHVtbnNcbiAgICAgICAgICAgIHdoaWxlIChzZWxmLmNvbHMgKiBzZWxmLnJvd3MgPCBzZWxmLmNlbGxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc20gPSBzZWxmLnNtYWxsKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGcgPSBzZWxmLmxhcmdlKCk7XG4gICAgICAgICAgICAgICAgLy8gdHJ5IHRvIGFkZCB0byBsYXJnZXIgc2lkZSBmaXJzdCAoYWRkcyBsZXNzIGluIG11bHRpcGxpY2F0aW9uKVxuICAgICAgICAgICAgICAgIGlmICgobGcgKyAxKSAqIHNtID49IHNlbGYuY2VsbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5sYXJnZShsZyArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zbWFsbChzbSArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZWxmLmNlbGxXaWR0aCA9IHNlbGYud2lkdGggLyBzZWxmLmNvbHM7XG4gICAgICAgIHNlbGYuY2VsbEhlaWdodCA9IHNlbGYuaGVpZ2h0IC8gc2VsZi5yb3dzO1xuICAgICAgICBpZiAoc2VsZi5jb25kZW5zZSkge1xuICAgICAgICAgICAgc2VsZi5jZWxsV2lkdGggPSAwO1xuICAgICAgICAgICAgc2VsZi5jZWxsSGVpZ2h0ID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZi5wcmV2ZW50T3ZlcmxhcCkge1xuICAgICAgICAgICAgbGF5b3V0Tm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghbm9kZS54IHx8ICFub2RlLnkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGJiXG4gICAgICAgICAgICAgICAgICAgIG5vZGUueCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUueSA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBub2RldztcbiAgICAgICAgICAgICAgICBsZXQgbm9kZWg7XG4gICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkobm9kZS5zaXplKSkge1xuICAgICAgICAgICAgICAgICAgICBub2RldyA9IG5vZGUuc2l6ZVswXTtcbiAgICAgICAgICAgICAgICAgICAgbm9kZWggPSBub2RlLnNpemVbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzTnVtYmVyKG5vZGUuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXcgPSBub2RlLnNpemU7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVoID0gbm9kZS5zaXplO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc09iamVjdChub2RlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGV3ID0gbm9kZS5zaXplLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICBub2RlaCA9IG5vZGUuc2l6ZS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChub2RldyA9PT0gdW5kZWZpbmVkIHx8IG5vZGVoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoc2VsZi5ub2RlU2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGV3ID0gc2VsZi5ub2RlU2l6ZVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVoID0gc2VsZi5ub2RlU2l6ZVsxXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc051bWJlcihzZWxmLm5vZGVTaXplKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXcgPSBzZWxmLm5vZGVTaXplO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZWggPSBzZWxmLm5vZGVTaXplO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXcgPSAzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVoID0gMzA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IHNlbGYucHJldmVudE92ZXJsYXBQYWRkaW5nO1xuICAgICAgICAgICAgICAgIGNvbnN0IHcgPSBub2RldyArIHA7XG4gICAgICAgICAgICAgICAgY29uc3QgaCA9IG5vZGVoICsgcDtcbiAgICAgICAgICAgICAgICBzZWxmLmNlbGxXaWR0aCA9IE1hdGgubWF4KHNlbGYuY2VsbFdpZHRoLCB3KTtcbiAgICAgICAgICAgICAgICBzZWxmLmNlbGxIZWlnaHQgPSBNYXRoLm1heChzZWxmLmNlbGxIZWlnaHQsIGgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5jZWxsVXNlZCA9IHt9OyAvLyBlLmcuICdjLTAtMicgPT4gdHJ1ZVxuICAgICAgICAvLyB0byBrZWVwIHRyYWNrIG9mIGN1cnJlbnQgY2VsbCBwb3NpdGlvblxuICAgICAgICBzZWxmLnJvdyA9IDA7XG4gICAgICAgIHNlbGYuY29sID0gMDtcbiAgICAgICAgLy8gZ2V0IGEgY2FjaGUgb2YgYWxsIHRoZSBtYW51YWwgcG9zaXRpb25zXG4gICAgICAgIHNlbGYuaWQybWFuUG9zID0ge307XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGF5b3V0Tm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBsYXlvdXROb2Rlc1tpXTtcbiAgICAgICAgICAgIGxldCByY1BvcztcbiAgICAgICAgICAgIGlmIChzZWxmLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmNQb3MgPSBzZWxmLnBvc2l0aW9uKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJjUG9zICYmIChyY1Bvcy5yb3cgIT09IHVuZGVmaW5lZCB8fCByY1Bvcy5jb2wgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgICAgICAvLyBtdXN0IGhhdmUgYXQgbGVhc3Qgcm93IG9yIGNvbCBkZWYnZFxuICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgcm93OiByY1Bvcy5yb3csXG4gICAgICAgICAgICAgICAgICAgIGNvbDogcmNQb3MuY29sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAocG9zLmNvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZpbmQgdW51c2VkIGNvbFxuICAgICAgICAgICAgICAgICAgICBwb3MuY29sID0gMDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHNlbGYudXNlZChwb3Mucm93LCBwb3MuY29sKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zLmNvbCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBvcy5yb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBmaW5kIHVudXNlZCByb3dcbiAgICAgICAgICAgICAgICAgICAgcG9zLnJvdyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChzZWxmLnVzZWQocG9zLnJvdywgcG9zLmNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5yb3crKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZWxmLmlkMm1hblBvc1tub2RlLmlkXSA9IHBvcztcbiAgICAgICAgICAgICAgICBzZWxmLnVzZShwb3Mucm93LCBwb3MuY29sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuZ2V0UG9zKG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZWRnZXMsXG4gICAgICAgICAgICBub2RlczogbGF5b3V0Tm9kZXNcbiAgICAgICAgfTtcbiAgICB9XG4gICAgc21hbGwodmFsKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBsZXQgcmVzO1xuICAgICAgICBjb25zdCByb3dzID0gc2VsZi5yb3dzIHx8IDU7XG4gICAgICAgIGNvbnN0IGNvbHMgPSBzZWxmLmNvbHMgfHwgNTtcbiAgICAgICAgaWYgKHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXMgPSBNYXRoLm1pbihyb3dzLCBjb2xzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKHJvd3MsIGNvbHMpO1xuICAgICAgICAgICAgaWYgKG1pbiA9PT0gc2VsZi5yb3dzKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5yb3dzID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jb2xzID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIGxhcmdlKHZhbCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgbGV0IHJlcztcbiAgICAgICAgY29uc3Qgcm93cyA9IHNlbGYucm93cyB8fCA1O1xuICAgICAgICBjb25zdCBjb2xzID0gc2VsZi5jb2xzIHx8IDU7XG4gICAgICAgIGlmICh2YWwgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzID0gTWF0aC5tYXgocm93cywgY29scyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBtYXggPSBNYXRoLm1heChyb3dzLCBjb2xzKTtcbiAgICAgICAgICAgIGlmIChtYXggPT09IHNlbGYucm93cykge1xuICAgICAgICAgICAgICAgIHNlbGYucm93cyA9IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGYuY29scyA9IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICB1c2VkKHJvdywgY29sKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gc2VsZi5jZWxsVXNlZFtgYy0ke3Jvd30tJHtjb2x9YF0gfHwgZmFsc2U7XG4gICAgfVxuICAgIHVzZShyb3csIGNvbCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgc2VsZi5jZWxsVXNlZFtgYy0ke3Jvd30tJHtjb2x9YF0gPSB0cnVlO1xuICAgIH1cbiAgICBtb3ZlVG9OZXh0Q2VsbCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGNvbHMgPSBzZWxmLmNvbHMgfHwgNTtcbiAgICAgICAgc2VsZi5jb2wrKztcbiAgICAgICAgaWYgKHNlbGYuY29sID49IGNvbHMpIHtcbiAgICAgICAgICAgIHNlbGYuY29sID0gMDtcbiAgICAgICAgICAgIHNlbGYucm93Kys7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0UG9zKG5vZGUpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGJlZ2luID0gc2VsZi5iZWdpbjtcbiAgICAgICAgY29uc3QgY2VsbFdpZHRoID0gc2VsZi5jZWxsV2lkdGg7XG4gICAgICAgIGNvbnN0IGNlbGxIZWlnaHQgPSBzZWxmLmNlbGxIZWlnaHQ7XG4gICAgICAgIGxldCB4O1xuICAgICAgICBsZXQgeTtcbiAgICAgICAgLy8gc2VlIGlmIHdlIGhhdmUgYSBtYW51YWwgcG9zaXRpb24gc2V0XG4gICAgICAgIGNvbnN0IHJjUG9zID0gc2VsZi5pZDJtYW5Qb3Nbbm9kZS5pZF07XG4gICAgICAgIGlmIChyY1Bvcykge1xuICAgICAgICAgICAgeCA9IHJjUG9zLmNvbCAqIGNlbGxXaWR0aCArIGNlbGxXaWR0aCAvIDIgKyBiZWdpblswXTtcbiAgICAgICAgICAgIHkgPSByY1Bvcy5yb3cgKiBjZWxsSGVpZ2h0ICsgY2VsbEhlaWdodCAvIDIgKyBiZWdpblsxXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBzZXQgYXV0b21hdGljYWxseVxuICAgICAgICAgICAgd2hpbGUgKHNlbGYudXNlZChzZWxmLnJvdywgc2VsZi5jb2wpKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5tb3ZlVG9OZXh0Q2VsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeCA9IHNlbGYuY29sICogY2VsbFdpZHRoICsgY2VsbFdpZHRoIC8gMiArIGJlZ2luWzBdO1xuICAgICAgICAgICAgeSA9IHNlbGYucm93ICogY2VsbEhlaWdodCArIGNlbGxIZWlnaHQgLyAyICsgYmVnaW5bMV07XG4gICAgICAgICAgICBzZWxmLnVzZShzZWxmLnJvdywgc2VsZi5jb2wpO1xuICAgICAgICAgICAgc2VsZi5tb3ZlVG9OZXh0Q2VsbCgpO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUueCA9IHg7XG4gICAgICAgIG5vZGUueSA9IHk7XG4gICAgfVxuICAgIGdldFR5cGUoKSB7XG4gICAgICAgIHJldHVybiBcImdyaWRcIjtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncmlkLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/grid.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/index.js": /*!******************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/index.js ***! \******************************************************/ /*! exports provided: Layout, Layouts, GridLayout, RandomLayout, GForceLayout, ForceLayout, CircularLayout, DagreLayout, RadialLayout, ConcentricLayout, MDSLayout, FruchtermanLayout, FruchtermanGPULayout, GForceGPULayout, ComboForceLayout, ForceAtlas2Layout, ERLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./grid */ \"./node_modules/@antv/layout/es/layout/grid.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GridLayout\", function() { return _grid__WEBPACK_IMPORTED_MODULE_0__[\"GridLayout\"]; });\n\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./random */ \"./node_modules/@antv/layout/es/layout/random.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RandomLayout\", function() { return _random__WEBPACK_IMPORTED_MODULE_1__[\"RandomLayout\"]; });\n\n/* harmony import */ var _gForce__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gForce */ \"./node_modules/@antv/layout/es/layout/gForce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GForceLayout\", function() { return _gForce__WEBPACK_IMPORTED_MODULE_2__[\"GForceLayout\"]; });\n\n/* harmony import */ var _force__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./force */ \"./node_modules/@antv/layout/es/layout/force/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ForceLayout\", function() { return _force__WEBPACK_IMPORTED_MODULE_3__[\"ForceLayout\"]; });\n\n/* harmony import */ var _circular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./circular */ \"./node_modules/@antv/layout/es/layout/circular.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CircularLayout\", function() { return _circular__WEBPACK_IMPORTED_MODULE_4__[\"CircularLayout\"]; });\n\n/* harmony import */ var _dagre__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dagre */ \"./node_modules/@antv/layout/es/layout/dagre.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DagreLayout\", function() { return _dagre__WEBPACK_IMPORTED_MODULE_5__[\"DagreLayout\"]; });\n\n/* harmony import */ var _radial__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./radial */ \"./node_modules/@antv/layout/es/layout/radial/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RadialLayout\", function() { return _radial__WEBPACK_IMPORTED_MODULE_6__[\"RadialLayout\"]; });\n\n/* harmony import */ var _concentric__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./concentric */ \"./node_modules/@antv/layout/es/layout/concentric.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConcentricLayout\", function() { return _concentric__WEBPACK_IMPORTED_MODULE_7__[\"ConcentricLayout\"]; });\n\n/* harmony import */ var _mds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./mds */ \"./node_modules/@antv/layout/es/layout/mds.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MDSLayout\", function() { return _mds__WEBPACK_IMPORTED_MODULE_8__[\"MDSLayout\"]; });\n\n/* harmony import */ var _fruchterman__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./fruchterman */ \"./node_modules/@antv/layout/es/layout/fruchterman.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanLayout\", function() { return _fruchterman__WEBPACK_IMPORTED_MODULE_9__[\"FruchtermanLayout\"]; });\n\n/* harmony import */ var _gpu_fruchterman__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./gpu/fruchterman */ \"./node_modules/@antv/layout/es/layout/gpu/fruchterman.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanGPULayout\", function() { return _gpu_fruchterman__WEBPACK_IMPORTED_MODULE_10__[\"FruchtermanGPULayout\"]; });\n\n/* harmony import */ var _gpu_gForce__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./gpu/gForce */ \"./node_modules/@antv/layout/es/layout/gpu/gForce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GForceGPULayout\", function() { return _gpu_gForce__WEBPACK_IMPORTED_MODULE_11__[\"GForceGPULayout\"]; });\n\n/* harmony import */ var _comboForce__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./comboForce */ \"./node_modules/@antv/layout/es/layout/comboForce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ComboForceLayout\", function() { return _comboForce__WEBPACK_IMPORTED_MODULE_12__[\"ComboForceLayout\"]; });\n\n/* harmony import */ var _forceAtlas2__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./forceAtlas2 */ \"./node_modules/@antv/layout/es/layout/forceAtlas2/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ForceAtlas2Layout\", function() { return _forceAtlas2__WEBPACK_IMPORTED_MODULE_13__[\"ForceAtlas2Layout\"]; });\n\n/* harmony import */ var _er__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./er */ \"./node_modules/@antv/layout/es/layout/er/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ERLayout\", function() { return _er__WEBPACK_IMPORTED_MODULE_14__[\"ERLayout\"]; });\n\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./layout */ \"./node_modules/@antv/layout/es/layout/layout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_15__[\"Layout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layouts\", function() { return _layout__WEBPACK_IMPORTED_MODULE_15__[\"Layouts\"]; });\n\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./types */ \"./node_modules/@antv/layout/es/layout/types.js\");\n/* empty/unused harmony star reexport */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// layout\n\n// types file\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9pbmRleC5qcz82YTY0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsd0NBQW9DO0FBQ0k7QUFDQTtBQUNGO0FBQ007QUFDTjtBQUNFO0FBQ1E7QUFDZDtBQUNnQjtBQUNPO0FBQ1Y7QUFDQztBQUNFO0FBQ2xCO0FBQ1c7QUFDaEI7QUFDM0I7QUFDZ1A7QUFDaFA7QUFDd0I7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyaWRMYXlvdXQgfSBmcm9tIFwiLi9ncmlkXCI7XG5pbXBvcnQgeyBSYW5kb21MYXlvdXQgfSBmcm9tIFwiLi9yYW5kb21cIjtcbmltcG9ydCB7IEdGb3JjZUxheW91dCB9IGZyb20gXCIuL2dGb3JjZVwiO1xuaW1wb3J0IHsgRm9yY2VMYXlvdXQgfSBmcm9tIFwiLi9mb3JjZVwiO1xuaW1wb3J0IHsgQ2lyY3VsYXJMYXlvdXQgfSBmcm9tIFwiLi9jaXJjdWxhclwiO1xuaW1wb3J0IHsgRGFncmVMYXlvdXQgfSBmcm9tIFwiLi9kYWdyZVwiO1xuaW1wb3J0IHsgUmFkaWFsTGF5b3V0IH0gZnJvbSBcIi4vcmFkaWFsXCI7XG5pbXBvcnQgeyBDb25jZW50cmljTGF5b3V0IH0gZnJvbSBcIi4vY29uY2VudHJpY1wiO1xuaW1wb3J0IHsgTURTTGF5b3V0IH0gZnJvbSBcIi4vbWRzXCI7XG5pbXBvcnQgeyBGcnVjaHRlcm1hbkxheW91dCB9IGZyb20gXCIuL2ZydWNodGVybWFuXCI7XG5pbXBvcnQgeyBGcnVjaHRlcm1hbkdQVUxheW91dCB9IGZyb20gXCIuL2dwdS9mcnVjaHRlcm1hblwiO1xuaW1wb3J0IHsgR0ZvcmNlR1BVTGF5b3V0IH0gZnJvbSBcIi4vZ3B1L2dGb3JjZVwiO1xuaW1wb3J0IHsgQ29tYm9Gb3JjZUxheW91dCB9IGZyb20gXCIuL2NvbWJvRm9yY2VcIjtcbmltcG9ydCB7IEZvcmNlQXRsYXMyTGF5b3V0IH0gZnJvbSBcIi4vZm9yY2VBdGxhczJcIjtcbmltcG9ydCB7IEVSTGF5b3V0IH0gZnJvbSAnLi9lcic7XG5pbXBvcnQgeyBMYXlvdXQsIExheW91dHMgfSBmcm9tIFwiLi9sYXlvdXRcIjtcbmV4cG9ydCB7IExheW91dCwgTGF5b3V0cyB9O1xuLy8gbGF5b3V0XG5leHBvcnQgeyBHcmlkTGF5b3V0LCBSYW5kb21MYXlvdXQsIEdGb3JjZUxheW91dCwgRm9yY2VMYXlvdXQsIENpcmN1bGFyTGF5b3V0LCBEYWdyZUxheW91dCwgUmFkaWFsTGF5b3V0LCBDb25jZW50cmljTGF5b3V0LCBNRFNMYXlvdXQsIEZydWNodGVybWFuTGF5b3V0LCBGcnVjaHRlcm1hbkdQVUxheW91dCwgR0ZvcmNlR1BVTGF5b3V0LCBDb21ib0ZvcmNlTGF5b3V0LCBGb3JjZUF0bGFzMkxheW91dCwgRVJMYXlvdXQgfTtcbi8vIHR5cGVzIGZpbGVcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/layout.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/layout.js ***! \*******************************************************/ /*! exports provided: Layout, Layouts */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return Layout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Layouts\", function() { return Layouts; });\n/* harmony import */ var _registy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../registy */ \"./node_modules/@antv/layout/es/registy/index.js\");\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./grid */ \"./node_modules/@antv/layout/es/layout/grid.js\");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./random */ \"./node_modules/@antv/layout/es/layout/random.js\");\n/* harmony import */ var _gForce__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./gForce */ \"./node_modules/@antv/layout/es/layout/gForce.js\");\n/* harmony import */ var _force__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./force */ \"./node_modules/@antv/layout/es/layout/force/index.js\");\n/* harmony import */ var _circular__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./circular */ \"./node_modules/@antv/layout/es/layout/circular.js\");\n/* harmony import */ var _dagre__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dagre */ \"./node_modules/@antv/layout/es/layout/dagre.js\");\n/* harmony import */ var _radial__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./radial */ \"./node_modules/@antv/layout/es/layout/radial/index.js\");\n/* harmony import */ var _concentric__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./concentric */ \"./node_modules/@antv/layout/es/layout/concentric.js\");\n/* harmony import */ var _mds__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./mds */ \"./node_modules/@antv/layout/es/layout/mds.js\");\n/* harmony import */ var _fruchterman__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./fruchterman */ \"./node_modules/@antv/layout/es/layout/fruchterman.js\");\n/* harmony import */ var _gpu_fruchterman__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./gpu/fruchterman */ \"./node_modules/@antv/layout/es/layout/gpu/fruchterman.js\");\n/* harmony import */ var _gpu_gForce__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./gpu/gForce */ \"./node_modules/@antv/layout/es/layout/gpu/gForce.js\");\n/* harmony import */ var _comboForce__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./comboForce */ \"./node_modules/@antv/layout/es/layout/comboForce.js\");\n/* harmony import */ var _forceAtlas2__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./forceAtlas2 */ \"./node_modules/@antv/layout/es/layout/forceAtlas2/index.js\");\n/* harmony import */ var _er__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./er */ \"./node_modules/@antv/layout/es/layout/er/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass Layout {\n constructor(options) {\n const layoutClass = Object(_registy__WEBPACK_IMPORTED_MODULE_0__[\"getLayoutByName\"])(options.type);\n this.layoutInstance = new layoutClass(options);\n }\n layout(data) {\n return this.layoutInstance.layout(data);\n }\n updateCfg(cfg) {\n this.layoutInstance.updateCfg(cfg);\n }\n init(data) {\n this.layoutInstance.init(data);\n }\n execute() {\n this.layoutInstance.execute();\n }\n getDefaultCfg() {\n return this.layoutInstance.getDefaultCfg();\n }\n destroy() {\n return this.layoutInstance.destroy();\n }\n}\n// FIXME\n// FOR G6\n// tslint:disable-next-line\nconst Layouts = {\n force: _force__WEBPACK_IMPORTED_MODULE_4__[\"ForceLayout\"],\n fruchterman: _fruchterman__WEBPACK_IMPORTED_MODULE_10__[\"FruchtermanLayout\"],\n forceAtlas2: _forceAtlas2__WEBPACK_IMPORTED_MODULE_14__[\"ForceAtlas2Layout\"],\n gForce: _gForce__WEBPACK_IMPORTED_MODULE_3__[\"GForceLayout\"],\n dagre: _dagre__WEBPACK_IMPORTED_MODULE_6__[\"DagreLayout\"],\n circular: _circular__WEBPACK_IMPORTED_MODULE_5__[\"CircularLayout\"],\n radial: _radial__WEBPACK_IMPORTED_MODULE_7__[\"RadialLayout\"],\n concentric: _concentric__WEBPACK_IMPORTED_MODULE_8__[\"ConcentricLayout\"],\n grid: _grid__WEBPACK_IMPORTED_MODULE_1__[\"GridLayout\"],\n mds: _mds__WEBPACK_IMPORTED_MODULE_9__[\"MDSLayout\"],\n comboForce: _comboForce__WEBPACK_IMPORTED_MODULE_13__[\"ComboForceLayout\"],\n random: _random__WEBPACK_IMPORTED_MODULE_2__[\"RandomLayout\"],\n 'gForce-gpu': _gpu_gForce__WEBPACK_IMPORTED_MODULE_12__[\"GForceGPULayout\"],\n 'fruchterman-gpu': _gpu_fruchterman__WEBPACK_IMPORTED_MODULE_11__[\"FruchtermanGPULayout\"],\n er: _er__WEBPACK_IMPORTED_MODULE_15__[\"ERLayout\"],\n};\n//# sourceMappingURL=layout.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9sYXlvdXQuanM/NjAxZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QztBQUNUO0FBQ0k7QUFDQTtBQUNGO0FBQ007QUFDTjtBQUNFO0FBQ1E7QUFDZDtBQUNnQjtBQUNPO0FBQ1Y7QUFDQztBQUNFO0FBQ2xCO0FBQ3pCO0FBQ1A7QUFDQSw0QkFBNEIsZ0VBQWU7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxXQUFXLGtEQUFXO0FBQ3RCLGlCQUFpQiwrREFBaUI7QUFDbEMsaUJBQWlCLCtEQUFpQjtBQUNsQyxZQUFZLG9EQUFZO0FBQ3hCLFdBQVcsa0RBQVc7QUFDdEIsY0FBYyx3REFBYztBQUM1QixZQUFZLG9EQUFZO0FBQ3hCLGdCQUFnQiw0REFBZ0I7QUFDaEMsVUFBVSxnREFBVTtBQUNwQixTQUFTLDhDQUFTO0FBQ2xCLGdCQUFnQiw2REFBZ0I7QUFDaEMsWUFBWSxvREFBWTtBQUN4QixrQkFBa0IsNERBQWU7QUFDakMsdUJBQXVCLHNFQUFvQjtBQUMzQyxRQUFRLDZDQUFRO0FBQ2hCO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9sYXlvdXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMYXlvdXRCeU5hbWUgfSBmcm9tIFwiLi4vcmVnaXN0eVwiO1xuaW1wb3J0IHsgR3JpZExheW91dCB9IGZyb20gXCIuL2dyaWRcIjtcbmltcG9ydCB7IFJhbmRvbUxheW91dCB9IGZyb20gXCIuL3JhbmRvbVwiO1xuaW1wb3J0IHsgR0ZvcmNlTGF5b3V0IH0gZnJvbSBcIi4vZ0ZvcmNlXCI7XG5pbXBvcnQgeyBGb3JjZUxheW91dCB9IGZyb20gXCIuL2ZvcmNlXCI7XG5pbXBvcnQgeyBDaXJjdWxhckxheW91dCB9IGZyb20gXCIuL2NpcmN1bGFyXCI7XG5pbXBvcnQgeyBEYWdyZUxheW91dCB9IGZyb20gXCIuL2RhZ3JlXCI7XG5pbXBvcnQgeyBSYWRpYWxMYXlvdXQgfSBmcm9tIFwiLi9yYWRpYWxcIjtcbmltcG9ydCB7IENvbmNlbnRyaWNMYXlvdXQgfSBmcm9tIFwiLi9jb25jZW50cmljXCI7XG5pbXBvcnQgeyBNRFNMYXlvdXQgfSBmcm9tIFwiLi9tZHNcIjtcbmltcG9ydCB7IEZydWNodGVybWFuTGF5b3V0IH0gZnJvbSBcIi4vZnJ1Y2h0ZXJtYW5cIjtcbmltcG9ydCB7IEZydWNodGVybWFuR1BVTGF5b3V0IH0gZnJvbSBcIi4vZ3B1L2ZydWNodGVybWFuXCI7XG5pbXBvcnQgeyBHRm9yY2VHUFVMYXlvdXQgfSBmcm9tIFwiLi9ncHUvZ0ZvcmNlXCI7XG5pbXBvcnQgeyBDb21ib0ZvcmNlTGF5b3V0IH0gZnJvbSBcIi4vY29tYm9Gb3JjZVwiO1xuaW1wb3J0IHsgRm9yY2VBdGxhczJMYXlvdXQgfSBmcm9tIFwiLi9mb3JjZUF0bGFzMlwiO1xuaW1wb3J0IHsgRVJMYXlvdXQgfSBmcm9tIFwiLi9lclwiO1xuZXhwb3J0IGNsYXNzIExheW91dCB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBjb25zdCBsYXlvdXRDbGFzcyA9IGdldExheW91dEJ5TmFtZShvcHRpb25zLnR5cGUpO1xuICAgICAgICB0aGlzLmxheW91dEluc3RhbmNlID0gbmV3IGxheW91dENsYXNzKG9wdGlvbnMpO1xuICAgIH1cbiAgICBsYXlvdXQoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRJbnN0YW5jZS5sYXlvdXQoZGF0YSk7XG4gICAgfVxuICAgIHVwZGF0ZUNmZyhjZmcpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRJbnN0YW5jZS51cGRhdGVDZmcoY2ZnKTtcbiAgICB9XG4gICAgaW5pdChkYXRhKSB7XG4gICAgICAgIHRoaXMubGF5b3V0SW5zdGFuY2UuaW5pdChkYXRhKTtcbiAgICB9XG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRJbnN0YW5jZS5leGVjdXRlKCk7XG4gICAgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dEluc3RhbmNlLmdldERlZmF1bHRDZmcoKTtcbiAgICB9XG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0SW5zdGFuY2UuZGVzdHJveSgpO1xuICAgIH1cbn1cbi8vIEZJWE1FXG4vLyBGT1IgRzZcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuZXhwb3J0IGNvbnN0IExheW91dHMgPSB7XG4gICAgZm9yY2U6IEZvcmNlTGF5b3V0LFxuICAgIGZydWNodGVybWFuOiBGcnVjaHRlcm1hbkxheW91dCxcbiAgICBmb3JjZUF0bGFzMjogRm9yY2VBdGxhczJMYXlvdXQsXG4gICAgZ0ZvcmNlOiBHRm9yY2VMYXlvdXQsXG4gICAgZGFncmU6IERhZ3JlTGF5b3V0LFxuICAgIGNpcmN1bGFyOiBDaXJjdWxhckxheW91dCxcbiAgICByYWRpYWw6IFJhZGlhbExheW91dCxcbiAgICBjb25jZW50cmljOiBDb25jZW50cmljTGF5b3V0LFxuICAgIGdyaWQ6IEdyaWRMYXlvdXQsXG4gICAgbWRzOiBNRFNMYXlvdXQsXG4gICAgY29tYm9Gb3JjZTogQ29tYm9Gb3JjZUxheW91dCxcbiAgICByYW5kb206IFJhbmRvbUxheW91dCxcbiAgICAnZ0ZvcmNlLWdwdSc6IEdGb3JjZUdQVUxheW91dCxcbiAgICAnZnJ1Y2h0ZXJtYW4tZ3B1JzogRnJ1Y2h0ZXJtYW5HUFVMYXlvdXQsXG4gICAgZXI6IEVSTGF5b3V0LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxheW91dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/layout.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/mds.js": /*!****************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/mds.js ***! \****************************************************/ /*! exports provided: MDSLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDSLayout\", function() { return MDSLayout; });\n/* harmony import */ var ml_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ml-matrix */ \"./node_modules/ml-matrix/src/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/**\n * @fileOverview MDS layout\n * @author shiwu.wyy@antfin.com\n */\n\n\n\n/**\n * mds 布局\n */\nclass MDSLayout extends _base__WEBPACK_IMPORTED_MODULE_2__[\"Base\"] {\n constructor(options) {\n super();\n /** 布局中心 */\n this.center = [0, 0];\n /** 边长度 */\n this.linkDistance = 50;\n this.nodes = [];\n this.edges = [];\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n center: [0, 0],\n linkDistance: 50\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const { nodes, edges = [] } = self;\n const center = self.center;\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n const linkDistance = self.linkDistance;\n // the graph-theoretic distance (shortest path distance) matrix\n const adjMatrix = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getAdjMatrix\"])({ nodes, edges }, false);\n const distances = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"floydWarshall\"])(adjMatrix);\n self.handleInfinity(distances);\n // scale the ideal edge length acoording to linkDistance\n const scaledD = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"scaleMatrix\"])(distances, linkDistance);\n self.scaledDistances = scaledD;\n // get positions by MDS\n const positions = self.runMDS();\n self.positions = positions;\n positions.forEach((p, i) => {\n nodes[i].x = p[0] + center[0];\n nodes[i].y = p[1] + center[1];\n });\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges\n };\n }\n /**\n * mds 算法\n * @return {array} positions 计算后的节点位置数组\n */\n runMDS() {\n const self = this;\n const dimension = 2;\n const distances = self.scaledDistances;\n // square distances\n const M = ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].mul(ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].pow(distances, 2), -0.5);\n // double centre the rows/columns\n const rowMeans = M.mean(\"row\");\n const colMeans = M.mean(\"column\");\n const totalMean = M.mean();\n M.add(totalMean)\n .subRowVector(rowMeans)\n .subColumnVector(colMeans);\n // take the SVD of the double centred matrix, and return the\n // points from it\n const ret = new ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"SingularValueDecomposition\"](M);\n const eigenValues = ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].sqrt(ret.diagonalMatrix).diagonal();\n return ret.leftSingularVectors.toJSON().map((row) => {\n return ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].mul([row], [eigenValues])\n .toJSON()[0]\n .splice(0, dimension);\n });\n }\n handleInfinity(distances) {\n let maxDistance = -999999;\n distances.forEach((row) => {\n row.forEach((value) => {\n if (value === Infinity) {\n return;\n }\n if (maxDistance < value) {\n maxDistance = value;\n }\n });\n });\n distances.forEach((row, i) => {\n row.forEach((value, j) => {\n if (value === Infinity) {\n distances[i][j] = maxDistance;\n }\n });\n });\n }\n getType() {\n return \"mds\";\n }\n}\n//# sourceMappingURL=mds.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9tZHMuanM/NzQ0MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDMkU7QUFDUjtBQUNyQztBQUM5QjtBQUNBO0FBQ0E7QUFDTyx3QkFBd0IsMENBQUk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxvQkFBb0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDBEQUFZLEVBQUUsZUFBZTtBQUN2RCwwQkFBMEIsMkRBQWE7QUFDdkM7QUFDQTtBQUNBLHdCQUF3Qix5REFBVztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsZ0RBQVEsS0FBSyxnREFBUTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0VBQTBCO0FBQ2xELDRCQUE0QixnREFBUTtBQUNwQztBQUNBLG1CQUFtQixnREFBUTtBQUMzQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L21kcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBNRFMgbGF5b3V0XG4gKiBAYXV0aG9yIHNoaXd1Lnd5eUBhbnRmaW4uY29tXG4gKi9cbmltcG9ydCB7IE1hdHJpeCBhcyBNTE1hdHJpeCwgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24gfSBmcm9tIFwibWwtbWF0cml4XCI7XG5pbXBvcnQgeyBmbG95ZFdhcnNoYWxsLCBnZXRBZGpNYXRyaXgsIHNjYWxlTWF0cml4IH0gZnJvbSBcIi4uL3V0aWxcIjtcbmltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi9iYXNlXCI7XG4vKipcbiAqIG1kcyDluIPlsYBcbiAqL1xuZXhwb3J0IGNsYXNzIE1EU0xheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIOW4g+WxgOS4reW/gyAqL1xuICAgICAgICB0aGlzLmNlbnRlciA9IFswLCAwXTtcbiAgICAgICAgLyoqIOi+uemVv+W6piAqL1xuICAgICAgICB0aGlzLmxpbmtEaXN0YW5jZSA9IDUwO1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgLyoqIOi/reS7o+e7k+adn+eahOWbnuiwg+WHveaVsCAqL1xuICAgICAgICB0aGlzLm9uTGF5b3V0RW5kID0gKCkgPT4geyB9O1xuICAgICAgICB0aGlzLnVwZGF0ZUNmZyhvcHRpb25zKTtcbiAgICB9XG4gICAgZ2V0RGVmYXVsdENmZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNlbnRlcjogWzAsIDBdLFxuICAgICAgICAgICAgbGlua0Rpc3RhbmNlOiA1MFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiafooYzluIPlsYBcbiAgICAgKi9cbiAgICBleGVjdXRlKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgeyBub2RlcywgZWRnZXMgPSBbXSB9ID0gc2VsZjtcbiAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgbm9kZXNbMF0ueCA9IGNlbnRlclswXTtcbiAgICAgICAgICAgIG5vZGVzWzBdLnkgPSBjZW50ZXJbMV07XG4gICAgICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGlua0Rpc3RhbmNlID0gc2VsZi5saW5rRGlzdGFuY2U7XG4gICAgICAgIC8vIHRoZSBncmFwaC10aGVvcmV0aWMgZGlzdGFuY2UgKHNob3J0ZXN0IHBhdGggZGlzdGFuY2UpIG1hdHJpeFxuICAgICAgICBjb25zdCBhZGpNYXRyaXggPSBnZXRBZGpNYXRyaXgoeyBub2RlcywgZWRnZXMgfSwgZmFsc2UpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBmbG95ZFdhcnNoYWxsKGFkak1hdHJpeCk7XG4gICAgICAgIHNlbGYuaGFuZGxlSW5maW5pdHkoZGlzdGFuY2VzKTtcbiAgICAgICAgLy8gc2NhbGUgdGhlIGlkZWFsIGVkZ2UgbGVuZ3RoIGFjb29yZGluZyB0byBsaW5rRGlzdGFuY2VcbiAgICAgICAgY29uc3Qgc2NhbGVkRCA9IHNjYWxlTWF0cml4KGRpc3RhbmNlcywgbGlua0Rpc3RhbmNlKTtcbiAgICAgICAgc2VsZi5zY2FsZWREaXN0YW5jZXMgPSBzY2FsZWREO1xuICAgICAgICAvLyBnZXQgcG9zaXRpb25zIGJ5IE1EU1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBzZWxmLnJ1bk1EUygpO1xuICAgICAgICBzZWxmLnBvc2l0aW9ucyA9IHBvc2l0aW9ucztcbiAgICAgICAgcG9zaXRpb25zLmZvckVhY2goKHAsIGkpID0+IHtcbiAgICAgICAgICAgIG5vZGVzW2ldLnggPSBwWzBdICsgY2VudGVyWzBdO1xuICAgICAgICAgICAgbm9kZXNbaV0ueSA9IHBbMV0gKyBjZW50ZXJbMV07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5vZGVzLFxuICAgICAgICAgICAgZWRnZXNcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogbWRzIOeul+azlVxuICAgICAqIEByZXR1cm4ge2FycmF5fSBwb3NpdGlvbnMg6K6h566X5ZCO55qE6IqC54K55L2N572u5pWw57uEXG4gICAgICovXG4gICAgcnVuTURTKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgZGltZW5zaW9uID0gMjtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VzID0gc2VsZi5zY2FsZWREaXN0YW5jZXM7XG4gICAgICAgIC8vIHNxdWFyZSBkaXN0YW5jZXNcbiAgICAgICAgY29uc3QgTSA9IE1MTWF0cml4Lm11bChNTE1hdHJpeC5wb3coZGlzdGFuY2VzLCAyKSwgLTAuNSk7XG4gICAgICAgIC8vIGRvdWJsZSBjZW50cmUgdGhlIHJvd3MvY29sdW1uc1xuICAgICAgICBjb25zdCByb3dNZWFucyA9IE0ubWVhbihcInJvd1wiKTtcbiAgICAgICAgY29uc3QgY29sTWVhbnMgPSBNLm1lYW4oXCJjb2x1bW5cIik7XG4gICAgICAgIGNvbnN0IHRvdGFsTWVhbiA9IE0ubWVhbigpO1xuICAgICAgICBNLmFkZCh0b3RhbE1lYW4pXG4gICAgICAgICAgICAuc3ViUm93VmVjdG9yKHJvd01lYW5zKVxuICAgICAgICAgICAgLnN1YkNvbHVtblZlY3Rvcihjb2xNZWFucyk7XG4gICAgICAgIC8vIHRha2UgdGhlIFNWRCBvZiB0aGUgZG91YmxlIGNlbnRyZWQgbWF0cml4LCBhbmQgcmV0dXJuIHRoZVxuICAgICAgICAvLyBwb2ludHMgZnJvbSBpdFxuICAgICAgICBjb25zdCByZXQgPSBuZXcgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24oTSk7XG4gICAgICAgIGNvbnN0IGVpZ2VuVmFsdWVzID0gTUxNYXRyaXguc3FydChyZXQuZGlhZ29uYWxNYXRyaXgpLmRpYWdvbmFsKCk7XG4gICAgICAgIHJldHVybiByZXQubGVmdFNpbmd1bGFyVmVjdG9ycy50b0pTT04oKS5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIE1MTWF0cml4Lm11bChbcm93XSwgW2VpZ2VuVmFsdWVzXSlcbiAgICAgICAgICAgICAgICAudG9KU09OKClbMF1cbiAgICAgICAgICAgICAgICAuc3BsaWNlKDAsIGRpbWVuc2lvbik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBoYW5kbGVJbmZpbml0eShkaXN0YW5jZXMpIHtcbiAgICAgICAgbGV0IG1heERpc3RhbmNlID0gLTk5OTk5OTtcbiAgICAgICAgZGlzdGFuY2VzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgcm93LmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtYXhEaXN0YW5jZSA8IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG1heERpc3RhbmNlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBkaXN0YW5jZXMuZm9yRWFjaCgocm93LCBpKSA9PiB7XG4gICAgICAgICAgICByb3cuZm9yRWFjaCgodmFsdWUsIGopID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlc1tpXVtqXSA9IG1heERpc3RhbmNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIFwibWRzXCI7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWRzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/mds.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/radial/index.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/radial/index.js ***! \*************************************************************/ /*! exports provided: RadialLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _radial__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./radial */ \"./node_modules/@antv/layout/es/layout/radial/radial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RadialLayout\", function() { return _radial__WEBPACK_IMPORTED_MODULE_0__[\"RadialLayout\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9yYWRpYWwvaW5kZXguanM/ZjcxMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QjtBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L3JhZGlhbC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcmFkaWFsJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/radial/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/radial/mds.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/radial/mds.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MDS; });\n/* harmony import */ var ml_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ml-matrix */ \"./node_modules/ml-matrix/src/index.js\");\n\nclass MDS {\n constructor(params) {\n this.distances = params.distances;\n this.dimension = params.dimension || 2;\n this.linkDistance = params.linkDistance;\n }\n layout() {\n const self = this;\n const { dimension, distances, linkDistance } = self;\n try {\n // square distances\n const M = ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].mul(ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].pow(distances, 2), -0.5);\n // double centre the rows/columns\n const rowMeans = M.mean('row');\n const colMeans = M.mean('column');\n const totalMean = M.mean();\n M.add(totalMean).subRowVector(rowMeans).subColumnVector(colMeans);\n // take the SVD of the double centred matrix, and return the\n // points from it\n const ret = new ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"SingularValueDecomposition\"](M);\n const eigenValues = ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].sqrt(ret.diagonalMatrix).diagonal();\n return ret.leftSingularVectors.toJSON().map((row) => {\n return ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].mul([row], [eigenValues]).toJSON()[0].splice(0, dimension);\n });\n }\n catch (_a) {\n const res = [];\n for (let i = 0; i < distances.length; i++) {\n const x = Math.random() * linkDistance;\n const y = Math.random() * linkDistance;\n res.push([x, y]);\n }\n return res;\n }\n }\n}\n//# sourceMappingURL=mds.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9yYWRpYWwvbWRzLmpzPzczODAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTJFO0FBQzVEO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFDQUFxQztBQUNwRDtBQUNBO0FBQ0Esc0JBQXNCLGdEQUFRLEtBQUssZ0RBQVE7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsb0VBQTBCO0FBQ3RELGdDQUFnQyxnREFBUTtBQUN4QztBQUNBLHVCQUF1QixnREFBUTtBQUMvQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHNCQUFzQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9yYWRpYWwvbWRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0cml4IGFzIE1MTWF0cml4LCBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbiB9IGZyb20gJ21sLW1hdHJpeCc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNRFMge1xuICAgIGNvbnN0cnVjdG9yKHBhcmFtcykge1xuICAgICAgICB0aGlzLmRpc3RhbmNlcyA9IHBhcmFtcy5kaXN0YW5jZXM7XG4gICAgICAgIHRoaXMuZGltZW5zaW9uID0gcGFyYW1zLmRpbWVuc2lvbiB8fCAyO1xuICAgICAgICB0aGlzLmxpbmtEaXN0YW5jZSA9IHBhcmFtcy5saW5rRGlzdGFuY2U7XG4gICAgfVxuICAgIGxheW91dCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgZGltZW5zaW9uLCBkaXN0YW5jZXMsIGxpbmtEaXN0YW5jZSB9ID0gc2VsZjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIHNxdWFyZSBkaXN0YW5jZXNcbiAgICAgICAgICAgIGNvbnN0IE0gPSBNTE1hdHJpeC5tdWwoTUxNYXRyaXgucG93KGRpc3RhbmNlcywgMiksIC0wLjUpO1xuICAgICAgICAgICAgLy8gZG91YmxlIGNlbnRyZSB0aGUgcm93cy9jb2x1bW5zXG4gICAgICAgICAgICBjb25zdCByb3dNZWFucyA9IE0ubWVhbigncm93Jyk7XG4gICAgICAgICAgICBjb25zdCBjb2xNZWFucyA9IE0ubWVhbignY29sdW1uJyk7XG4gICAgICAgICAgICBjb25zdCB0b3RhbE1lYW4gPSBNLm1lYW4oKTtcbiAgICAgICAgICAgIE0uYWRkKHRvdGFsTWVhbikuc3ViUm93VmVjdG9yKHJvd01lYW5zKS5zdWJDb2x1bW5WZWN0b3IoY29sTWVhbnMpO1xuICAgICAgICAgICAgLy8gdGFrZSB0aGUgU1ZEIG9mIHRoZSBkb3VibGUgY2VudHJlZCBtYXRyaXgsIGFuZCByZXR1cm4gdGhlXG4gICAgICAgICAgICAvLyBwb2ludHMgZnJvbSBpdFxuICAgICAgICAgICAgY29uc3QgcmV0ID0gbmV3IFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uKE0pO1xuICAgICAgICAgICAgY29uc3QgZWlnZW5WYWx1ZXMgPSBNTE1hdHJpeC5zcXJ0KHJldC5kaWFnb25hbE1hdHJpeCkuZGlhZ29uYWwoKTtcbiAgICAgICAgICAgIHJldHVybiByZXQubGVmdFNpbmd1bGFyVmVjdG9ycy50b0pTT04oKS5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBNTE1hdHJpeC5tdWwoW3Jvd10sIFtlaWdlblZhbHVlc10pLnRvSlNPTigpWzBdLnNwbGljZSgwLCBkaW1lbnNpb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzdGFuY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IE1hdGgucmFuZG9tKCkgKiBsaW5rRGlzdGFuY2U7XG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IE1hdGgucmFuZG9tKCkgKiBsaW5rRGlzdGFuY2U7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goW3gsIHldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/radial/mds.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/radial/radial.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/radial/radial.js ***! \**************************************************************/ /*! exports provided: RadialLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RadialLayout\", function() { return RadialLayout; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/* harmony import */ var _mds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mds */ \"./node_modules/@antv/layout/es/layout/radial/mds.js\");\n/* harmony import */ var _radialNonoverlapForce__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./radialNonoverlapForce */ \"./node_modules/@antv/layout/es/layout/radial/radialNonoverlapForce.js\");\n/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\n\n\n\nfunction getWeightMatrix(M) {\n const rows = M.length;\n const cols = M[0].length;\n const result = [];\n for (let i = 0; i < rows; i++) {\n const row = [];\n for (let j = 0; j < cols; j++) {\n if (M[i][j] !== 0) {\n row.push(1 / (M[i][j] * M[i][j]));\n }\n else {\n row.push(0);\n }\n }\n result.push(row);\n }\n return result;\n}\nfunction getIndexById(array, id) {\n let index = -1;\n array.forEach((a, i) => {\n if (a.id === id) {\n index = i;\n }\n });\n return index;\n}\nfunction getEDistance(p1, p2) {\n return Math.sqrt((p1[0] - p2[0]) * (p1[0] - p2[0]) + (p1[1] - p2[1]) * (p1[1] - p2[1]));\n}\n/**\n * 辐射状布局\n */\nclass RadialLayout extends _base__WEBPACK_IMPORTED_MODULE_1__[\"Base\"] {\n constructor(options) {\n super();\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 1000;\n /** 中心点,默认为数据中第一个点 */\n this.focusNode = null;\n /** 每一圈半径 */\n this.unitRadius = null;\n /** 默认边长度 */\n this.linkDistance = 50;\n /** 是否防止重叠 */\n this.preventOverlap = false;\n /** 是否必须是严格的 radial 布局,即每一层的节点严格布局在一个环上。preventOverlap 为 true 时生效 */\n this.strictRadial = true;\n /** 防止重叠步骤的最大迭代次数 */\n this.maxPreventOverlapIteration = 200;\n this.sortStrength = 10;\n this.nodes = [];\n this.edges = [];\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 1000,\n focusNode: null,\n unitRadius: null,\n linkDistance: 50,\n preventOverlap: false,\n nodeSize: undefined,\n nodeSpacing: undefined,\n strictRadial: true,\n maxPreventOverlapIteration: 200,\n sortBy: undefined,\n sortStrength: 10\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges || [];\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n const linkDistance = self.linkDistance;\n // layout\n let focusNode = null;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(self.focusNode)) {\n let found = false;\n for (let i = 0; i < nodes.length; i++) {\n if (nodes[i].id === self.focusNode) {\n focusNode = nodes[i];\n self.focusNode = focusNode;\n found = true;\n i = nodes.length;\n }\n }\n if (!found) {\n focusNode = null;\n }\n }\n else {\n focusNode = self.focusNode;\n }\n // default focus node\n if (!focusNode) {\n focusNode = nodes[0];\n self.focusNode = focusNode;\n }\n // the index of the focusNode in data\n const focusIndex = getIndexById(nodes, focusNode.id);\n self.focusIndex = focusIndex;\n // the graph-theoretic distance (shortest path distance) matrix\n const adjMatrix = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getAdjMatrix\"])({ nodes, edges }, false);\n const D = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"floydWarshall\"])(adjMatrix);\n const maxDistance = self.maxToFocus(D, focusIndex);\n // replace first node in unconnected component to the circle at (maxDistance + 1)\n self.handleInfinity(D, focusIndex, maxDistance + 1);\n self.distances = D;\n // the shortest path distance from each node to focusNode\n const focusNodeD = D[focusIndex];\n const width = self.width || 500;\n const height = self.height || 500;\n let semiWidth = width - center[0] > center[0] ? center[0] : width - center[0];\n let semiHeight = height - center[1] > center[1] ? center[1] : height - center[1];\n if (semiWidth === 0) {\n semiWidth = width / 2;\n }\n if (semiHeight === 0) {\n semiHeight = height / 2;\n }\n // the maxRadius of the graph\n const maxRadius = semiHeight > semiWidth ? semiWidth : semiHeight;\n const maxD = Math.max(...focusNodeD);\n // the radius for each nodes away from focusNode\n const radii = [];\n focusNodeD.forEach((value, i) => {\n if (!self.unitRadius) {\n self.unitRadius = maxRadius / maxD;\n }\n radii[i] = value * self.unitRadius;\n });\n self.radii = radii;\n const eIdealD = self.eIdealDisMatrix();\n // const eIdealD = scaleMatrix(D, linkDistance);\n self.eIdealDistances = eIdealD;\n // the weight matrix, Wij = 1 / dij^(-2)\n const W = getWeightMatrix(eIdealD);\n self.weights = W;\n // the initial positions from mds\n const mds = new _mds__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({ linkDistance, distances: eIdealD });\n let positions = mds.layout();\n positions.forEach((p) => {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNaN\"])(p[0])) {\n p[0] = Math.random() * linkDistance;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNaN\"])(p[1])) {\n p[1] = Math.random() * linkDistance;\n }\n });\n self.positions = positions;\n positions.forEach((p, i) => {\n nodes[i].x = p[0] + center[0];\n nodes[i].y = p[1] + center[1];\n });\n // move the graph to origin, centered at focusNode\n positions.forEach((p) => {\n p[0] -= positions[focusIndex][0];\n p[1] -= positions[focusIndex][1];\n });\n self.run();\n const preventOverlap = self.preventOverlap;\n const nodeSize = self.nodeSize;\n let nodeSizeFunc;\n const strictRadial = self.strictRadial;\n // stagger the overlapped nodes\n if (preventOverlap) {\n const nodeSpacing = self.nodeSpacing;\n let nodeSpacingFunc;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n }\n else {\n nodeSpacingFunc = () => 0;\n }\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return res + nodeSpacingFunc(d);\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return res + nodeSpacingFunc(d);\n }\n return d.size + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(nodeSize)) {\n nodeSizeFunc = (d) => {\n const res = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n return res + nodeSpacingFunc(d);\n };\n }\n else {\n nodeSizeFunc = (d) => nodeSize + nodeSpacingFunc(d);\n }\n const nonoverlapForceParams = {\n nodes,\n nodeSizeFunc,\n adjMatrix,\n positions,\n radii,\n height,\n width,\n strictRadial,\n focusID: focusIndex,\n iterations: self.maxPreventOverlapIteration || 200,\n k: positions.length / 4.5\n };\n const nonoverlapForce = new _radialNonoverlapForce__WEBPACK_IMPORTED_MODULE_3__[\"default\"](nonoverlapForceParams);\n positions = nonoverlapForce.layout();\n }\n // move the graph to center\n positions.forEach((p, i) => {\n nodes[i].x = p[0] + center[0];\n nodes[i].y = p[1] + center[1];\n });\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges\n };\n }\n run() {\n const self = this;\n const maxIteration = self.maxIteration;\n const positions = self.positions || [];\n const W = self.weights || [];\n const eIdealDis = self.eIdealDistances || [];\n const radii = self.radii || [];\n for (let i = 0; i <= maxIteration; i++) {\n const param = i / maxIteration;\n self.oneIteration(param, positions, radii, eIdealDis, W);\n }\n }\n oneIteration(param, positions, radii, D, W) {\n const self = this;\n const vparam = 1 - param;\n const focusIndex = self.focusIndex;\n positions.forEach((v, i) => {\n // v\n const originDis = getEDistance(v, [0, 0]);\n const reciODis = originDis === 0 ? 0 : 1 / originDis;\n if (i === focusIndex) {\n return;\n }\n let xMolecule = 0;\n let yMolecule = 0;\n let denominator = 0;\n positions.forEach((u, j) => {\n // u\n if (i === j) {\n return;\n }\n // the euclidean distance between v and u\n const edis = getEDistance(v, u);\n const reciEdis = edis === 0 ? 0 : 1 / edis;\n const idealDis = D[j][i];\n // same for x and y\n denominator += W[i][j];\n // x\n xMolecule += W[i][j] * (u[0] + idealDis * (v[0] - u[0]) * reciEdis);\n // y\n yMolecule += W[i][j] * (u[1] + idealDis * (v[1] - u[1]) * reciEdis);\n });\n const reciR = radii[i] === 0 ? 0 : 1 / radii[i];\n denominator *= vparam;\n denominator += param * reciR * reciR;\n // x\n xMolecule *= vparam;\n xMolecule += param * reciR * v[0] * reciODis;\n v[0] = xMolecule / denominator;\n // y\n yMolecule *= vparam;\n yMolecule += param * reciR * v[1] * reciODis;\n v[1] = yMolecule / denominator;\n });\n }\n eIdealDisMatrix() {\n const self = this;\n const nodes = self.nodes;\n if (!nodes)\n return [];\n const D = self.distances;\n const linkDis = self.linkDistance;\n const radii = self.radii || [];\n const unitRadius = self.unitRadius || 50;\n const result = [];\n if (D) {\n D.forEach((row, i) => {\n const newRow = [];\n row.forEach((v, j) => {\n if (i === j) {\n newRow.push(0);\n }\n else if (radii[i] === radii[j]) {\n // i and j are on the same circle\n if (self.sortBy === \"data\") {\n // sort the nodes on the same circle according to the ordering of the data\n newRow.push((v * (Math.abs(i - j) * self.sortStrength)) /\n (radii[i] / unitRadius));\n }\n else if (self.sortBy) {\n // sort the nodes on the same circle according to the attributes\n let iValue = nodes[i][self.sortBy] || 0;\n let jValue = nodes[j][self.sortBy] || 0;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(iValue)) {\n iValue = iValue.charCodeAt(0);\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(jValue)) {\n jValue = jValue.charCodeAt(0);\n }\n newRow.push((v * (Math.abs(iValue - jValue) * self.sortStrength)) /\n (radii[i] / unitRadius));\n }\n else {\n newRow.push((v * linkDis) / (radii[i] / unitRadius));\n }\n }\n else {\n // i and j are on different circle\n // i and j are on different circle\n const link = (linkDis + unitRadius) / 2;\n newRow.push(v * link);\n }\n });\n result.push(newRow);\n });\n }\n return result;\n }\n handleInfinity(matrix, focusIndex, step) {\n const length = matrix.length;\n // 遍历 matrix 中遍历 focus 对应行\n for (let i = 0; i < length; i++) {\n // matrix 关注点对应行的 Inf 项\n if (matrix[focusIndex][i] === Infinity) {\n matrix[focusIndex][i] = step;\n matrix[i][focusIndex] = step;\n // 遍历 matrix 中的 i 行,i 行中非 Inf 项若在 focus 行为 Inf,则替换 focus 行的那个 Inf\n for (let j = 0; j < length; j++) {\n if (matrix[i][j] !== Infinity && matrix[focusIndex][j] === Infinity) {\n matrix[focusIndex][j] = step + matrix[i][j];\n matrix[j][focusIndex] = step + matrix[i][j];\n }\n }\n }\n }\n // 处理其他行的 Inf。根据该行对应点与 focus 距离以及 Inf 项点 与 focus 距离,决定替换值\n for (let i = 0; i < length; i++) {\n if (i === focusIndex) {\n continue;\n }\n for (let j = 0; j < length; j++) {\n if (matrix[i][j] === Infinity) {\n let minus = Math.abs(matrix[focusIndex][i] - matrix[focusIndex][j]);\n minus = minus === 0 ? 1 : minus;\n matrix[i][j] = minus;\n }\n }\n }\n }\n maxToFocus(matrix, focusIndex) {\n let max = 0;\n for (let i = 0; i < matrix[focusIndex].length; i++) {\n if (matrix[focusIndex][i] === Infinity) {\n continue;\n }\n max = matrix[focusIndex][i] > max ? matrix[focusIndex][i] : max;\n }\n return max;\n }\n getType() {\n return \"radial\";\n }\n}\n//# sourceMappingURL=radial.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9yYWRpYWwvcmFkaWFsLmpzPzY1MzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDbUg7QUFDcEY7QUFDUDtBQUNvQztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0EsdUJBQXVCLFVBQVU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sMkJBQTJCLDBDQUFJO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNEQUFRO0FBQ3BCO0FBQ0EsMkJBQTJCLGtCQUFrQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDBEQUFZLEVBQUUsZUFBZTtBQUN2RCxrQkFBa0IsMkRBQWE7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDRDQUFHLEVBQUUsbUNBQW1DO0FBQ2hFO0FBQ0E7QUFDQSxnQkFBZ0IsbURBQUs7QUFDckI7QUFDQTtBQUNBLGdCQUFnQixtREFBSztBQUNyQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBUTtBQUN4QjtBQUNBO0FBQ0EscUJBQXFCLHdEQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscURBQU87QUFDbkM7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHNEQUFRO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscURBQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLDhEQUFxQjtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixtQkFBbUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxzREFBUTtBQUN4QztBQUNBO0FBQ0EsZ0NBQWdDLHNEQUFRO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsWUFBWTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLFlBQVk7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixZQUFZO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixZQUFZO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLCtCQUErQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9yYWRpYWwvcmFkaWFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IHJhbmRvbSBsYXlvdXRcbiAqIEBhdXRob3Igc2hpd3Uud3l5QGFudGZpbi5jb21cbiAqL1xuaW1wb3J0IHsgaXNOYU4sIGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzTnVtYmVyLCBpc1N0cmluZywgZmxveWRXYXJzaGFsbCwgZ2V0QWRqTWF0cml4LCBpc09iamVjdCB9IGZyb20gXCIuLi8uLi91dGlsXCI7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSBcIi4uL2Jhc2VcIjtcbmltcG9ydCBNRFMgZnJvbSBcIi4vbWRzXCI7XG5pbXBvcnQgUmFkaWFsTm9ub3ZlcmxhcEZvcmNlIGZyb20gXCIuL3JhZGlhbE5vbm92ZXJsYXBGb3JjZVwiO1xuZnVuY3Rpb24gZ2V0V2VpZ2h0TWF0cml4KE0pIHtcbiAgICBjb25zdCByb3dzID0gTS5sZW5ndGg7XG4gICAgY29uc3QgY29scyA9IE1bMF0ubGVuZ3RoO1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHM7IGorKykge1xuICAgICAgICAgICAgaWYgKE1baV1bal0gIT09IDApIHtcbiAgICAgICAgICAgICAgICByb3cucHVzaCgxIC8gKE1baV1bal0gKiBNW2ldW2pdKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByb3cucHVzaCgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChyb3cpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkKGFycmF5LCBpZCkge1xuICAgIGxldCBpbmRleCA9IC0xO1xuICAgIGFycmF5LmZvckVhY2goKGEsIGkpID0+IHtcbiAgICAgICAgaWYgKGEuaWQgPT09IGlkKSB7XG4gICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaW5kZXg7XG59XG5mdW5jdGlvbiBnZXRFRGlzdGFuY2UocDEsIHAyKSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCgocDFbMF0gLSBwMlswXSkgKiAocDFbMF0gLSBwMlswXSkgKyAocDFbMV0gLSBwMlsxXSkgKiAocDFbMV0gLSBwMlsxXSkpO1xufVxuLyoqXG4gKiDovpDlsITnirbluIPlsYBcbiAqL1xuZXhwb3J0IGNsYXNzIFJhZGlhbExheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIOWBnOatoui/reS7o+eahOacgOWkp+i/reS7o+aVsCAqL1xuICAgICAgICB0aGlzLm1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gICAgICAgIC8qKiDkuK3lv4PngrnvvIzpu5jorqTkuLrmlbDmja7kuK3nrKzkuIDkuKrngrkgKi9cbiAgICAgICAgdGhpcy5mb2N1c05vZGUgPSBudWxsO1xuICAgICAgICAvKiog5q+P5LiA5ZyI5Y2K5b6EICovXG4gICAgICAgIHRoaXMudW5pdFJhZGl1cyA9IG51bGw7XG4gICAgICAgIC8qKiDpu5jorqTovrnplb/luqYgKi9cbiAgICAgICAgdGhpcy5saW5rRGlzdGFuY2UgPSA1MDtcbiAgICAgICAgLyoqIOaYr+WQpumYsuatoumHjeWPoCAqL1xuICAgICAgICB0aGlzLnByZXZlbnRPdmVybGFwID0gZmFsc2U7XG4gICAgICAgIC8qKiDmmK/lkKblv4XpobvmmK/kuKXmoLznmoQgcmFkaWFsIOW4g+WxgO+8jOWNs+avj+S4gOWxgueahOiKgueCueS4peagvOW4g+WxgOWcqOS4gOS4queOr+S4iuOAgnByZXZlbnRPdmVybGFwIOS4uiB0cnVlIOaXtueUn+aViCAqL1xuICAgICAgICB0aGlzLnN0cmljdFJhZGlhbCA9IHRydWU7XG4gICAgICAgIC8qKiDpmLLmraLph43lj6DmraXpqqTnmoTmnIDlpKfov63ku6PmrKHmlbAgKi9cbiAgICAgICAgdGhpcy5tYXhQcmV2ZW50T3ZlcmxhcEl0ZXJhdGlvbiA9IDIwMDtcbiAgICAgICAgdGhpcy5zb3J0U3RyZW5ndGggPSAxMDtcbiAgICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgICAgIHRoaXMudXBkYXRlQ2ZnKG9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWF4SXRlcmF0aW9uOiAxMDAwLFxuICAgICAgICAgICAgZm9jdXNOb2RlOiBudWxsLFxuICAgICAgICAgICAgdW5pdFJhZGl1czogbnVsbCxcbiAgICAgICAgICAgIGxpbmtEaXN0YW5jZTogNTAsXG4gICAgICAgICAgICBwcmV2ZW50T3ZlcmxhcDogZmFsc2UsXG4gICAgICAgICAgICBub2RlU2l6ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbm9kZVNwYWNpbmc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHN0cmljdFJhZGlhbDogdHJ1ZSxcbiAgICAgICAgICAgIG1heFByZXZlbnRPdmVybGFwSXRlcmF0aW9uOiAyMDAsXG4gICAgICAgICAgICBzb3J0Qnk6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNvcnRTdHJlbmd0aDogMTBcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5omn6KGM5biD5bGAXG4gICAgICovXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgY29uc3QgZWRnZXMgPSBzZWxmLmVkZ2VzIHx8IFtdO1xuICAgICAgICBpZiAoIW5vZGVzIHx8IG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi53aWR0aCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzZWxmLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLmhlaWdodCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzZWxmLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYuY2VudGVyKSB7XG4gICAgICAgICAgICBzZWxmLmNlbnRlciA9IFtzZWxmLndpZHRoIC8gMiwgc2VsZi5oZWlnaHQgLyAyXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZW50ZXIgPSBzZWxmLmNlbnRlcjtcbiAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgbm9kZXNbMF0ueCA9IGNlbnRlclswXTtcbiAgICAgICAgICAgIG5vZGVzWzBdLnkgPSBjZW50ZXJbMV07XG4gICAgICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGlua0Rpc3RhbmNlID0gc2VsZi5saW5rRGlzdGFuY2U7XG4gICAgICAgIC8vIGxheW91dFxuICAgICAgICBsZXQgZm9jdXNOb2RlID0gbnVsbDtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHNlbGYuZm9jdXNOb2RlKSkge1xuICAgICAgICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGVzW2ldLmlkID09PSBzZWxmLmZvY3VzTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBmb2N1c05vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5mb2N1c05vZGUgPSBmb2N1c05vZGU7XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaSA9IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgZm9jdXNOb2RlID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvY3VzTm9kZSA9IHNlbGYuZm9jdXNOb2RlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGRlZmF1bHQgZm9jdXMgbm9kZVxuICAgICAgICBpZiAoIWZvY3VzTm9kZSkge1xuICAgICAgICAgICAgZm9jdXNOb2RlID0gbm9kZXNbMF07XG4gICAgICAgICAgICBzZWxmLmZvY3VzTm9kZSA9IGZvY3VzTm9kZTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgaW5kZXggb2YgdGhlIGZvY3VzTm9kZSBpbiBkYXRhXG4gICAgICAgIGNvbnN0IGZvY3VzSW5kZXggPSBnZXRJbmRleEJ5SWQobm9kZXMsIGZvY3VzTm9kZS5pZCk7XG4gICAgICAgIHNlbGYuZm9jdXNJbmRleCA9IGZvY3VzSW5kZXg7XG4gICAgICAgIC8vIHRoZSBncmFwaC10aGVvcmV0aWMgZGlzdGFuY2UgKHNob3J0ZXN0IHBhdGggZGlzdGFuY2UpIG1hdHJpeFxuICAgICAgICBjb25zdCBhZGpNYXRyaXggPSBnZXRBZGpNYXRyaXgoeyBub2RlcywgZWRnZXMgfSwgZmFsc2UpO1xuICAgICAgICBjb25zdCBEID0gZmxveWRXYXJzaGFsbChhZGpNYXRyaXgpO1xuICAgICAgICBjb25zdCBtYXhEaXN0YW5jZSA9IHNlbGYubWF4VG9Gb2N1cyhELCBmb2N1c0luZGV4KTtcbiAgICAgICAgLy8gcmVwbGFjZSBmaXJzdCBub2RlIGluIHVuY29ubmVjdGVkIGNvbXBvbmVudCB0byB0aGUgY2lyY2xlIGF0IChtYXhEaXN0YW5jZSArIDEpXG4gICAgICAgIHNlbGYuaGFuZGxlSW5maW5pdHkoRCwgZm9jdXNJbmRleCwgbWF4RGlzdGFuY2UgKyAxKTtcbiAgICAgICAgc2VsZi5kaXN0YW5jZXMgPSBEO1xuICAgICAgICAvLyB0aGUgc2hvcnRlc3QgcGF0aCBkaXN0YW5jZSBmcm9tIGVhY2ggbm9kZSB0byBmb2N1c05vZGVcbiAgICAgICAgY29uc3QgZm9jdXNOb2RlRCA9IERbZm9jdXNJbmRleF07XG4gICAgICAgIGNvbnN0IHdpZHRoID0gc2VsZi53aWR0aCB8fCA1MDA7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHNlbGYuaGVpZ2h0IHx8IDUwMDtcbiAgICAgICAgbGV0IHNlbWlXaWR0aCA9IHdpZHRoIC0gY2VudGVyWzBdID4gY2VudGVyWzBdID8gY2VudGVyWzBdIDogd2lkdGggLSBjZW50ZXJbMF07XG4gICAgICAgIGxldCBzZW1pSGVpZ2h0ID0gaGVpZ2h0IC0gY2VudGVyWzFdID4gY2VudGVyWzFdID8gY2VudGVyWzFdIDogaGVpZ2h0IC0gY2VudGVyWzFdO1xuICAgICAgICBpZiAoc2VtaVdpZHRoID09PSAwKSB7XG4gICAgICAgICAgICBzZW1pV2lkdGggPSB3aWR0aCAvIDI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbWlIZWlnaHQgPT09IDApIHtcbiAgICAgICAgICAgIHNlbWlIZWlnaHQgPSBoZWlnaHQgLyAyO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoZSBtYXhSYWRpdXMgb2YgdGhlIGdyYXBoXG4gICAgICAgIGNvbnN0IG1heFJhZGl1cyA9IHNlbWlIZWlnaHQgPiBzZW1pV2lkdGggPyBzZW1pV2lkdGggOiBzZW1pSGVpZ2h0O1xuICAgICAgICBjb25zdCBtYXhEID0gTWF0aC5tYXgoLi4uZm9jdXNOb2RlRCk7XG4gICAgICAgIC8vIHRoZSByYWRpdXMgZm9yIGVhY2ggbm9kZXMgYXdheSBmcm9tIGZvY3VzTm9kZVxuICAgICAgICBjb25zdCByYWRpaSA9IFtdO1xuICAgICAgICBmb2N1c05vZGVELmZvckVhY2goKHZhbHVlLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXNlbGYudW5pdFJhZGl1cykge1xuICAgICAgICAgICAgICAgIHNlbGYudW5pdFJhZGl1cyA9IG1heFJhZGl1cyAvIG1heEQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByYWRpaVtpXSA9IHZhbHVlICogc2VsZi51bml0UmFkaXVzO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5yYWRpaSA9IHJhZGlpO1xuICAgICAgICBjb25zdCBlSWRlYWxEID0gc2VsZi5lSWRlYWxEaXNNYXRyaXgoKTtcbiAgICAgICAgLy8gY29uc3QgZUlkZWFsRCA9IHNjYWxlTWF0cml4KEQsIGxpbmtEaXN0YW5jZSk7XG4gICAgICAgIHNlbGYuZUlkZWFsRGlzdGFuY2VzID0gZUlkZWFsRDtcbiAgICAgICAgLy8gdGhlIHdlaWdodCBtYXRyaXgsIFdpaiA9IDEgLyBkaWpeKC0yKVxuICAgICAgICBjb25zdCBXID0gZ2V0V2VpZ2h0TWF0cml4KGVJZGVhbEQpO1xuICAgICAgICBzZWxmLndlaWdodHMgPSBXO1xuICAgICAgICAvLyB0aGUgaW5pdGlhbCBwb3NpdGlvbnMgZnJvbSBtZHNcbiAgICAgICAgY29uc3QgbWRzID0gbmV3IE1EUyh7IGxpbmtEaXN0YW5jZSwgZGlzdGFuY2VzOiBlSWRlYWxEIH0pO1xuICAgICAgICBsZXQgcG9zaXRpb25zID0gbWRzLmxheW91dCgpO1xuICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTmFOKHBbMF0pKSB7XG4gICAgICAgICAgICAgICAgcFswXSA9IE1hdGgucmFuZG9tKCkgKiBsaW5rRGlzdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNOYU4ocFsxXSkpIHtcbiAgICAgICAgICAgICAgICBwWzFdID0gTWF0aC5yYW5kb20oKSAqIGxpbmtEaXN0YW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNlbGYucG9zaXRpb25zID0gcG9zaXRpb25zO1xuICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaCgocCwgaSkgPT4ge1xuICAgICAgICAgICAgbm9kZXNbaV0ueCA9IHBbMF0gKyBjZW50ZXJbMF07XG4gICAgICAgICAgICBub2Rlc1tpXS55ID0gcFsxXSArIGNlbnRlclsxXTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIG1vdmUgdGhlIGdyYXBoIHRvIG9yaWdpbiwgY2VudGVyZWQgYXQgZm9jdXNOb2RlXG4gICAgICAgIHBvc2l0aW9ucy5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgICBwWzBdIC09IHBvc2l0aW9uc1tmb2N1c0luZGV4XVswXTtcbiAgICAgICAgICAgIHBbMV0gLT0gcG9zaXRpb25zW2ZvY3VzSW5kZXhdWzFdO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5ydW4oKTtcbiAgICAgICAgY29uc3QgcHJldmVudE92ZXJsYXAgPSBzZWxmLnByZXZlbnRPdmVybGFwO1xuICAgICAgICBjb25zdCBub2RlU2l6ZSA9IHNlbGYubm9kZVNpemU7XG4gICAgICAgIGxldCBub2RlU2l6ZUZ1bmM7XG4gICAgICAgIGNvbnN0IHN0cmljdFJhZGlhbCA9IHNlbGYuc3RyaWN0UmFkaWFsO1xuICAgICAgICAvLyBzdGFnZ2VyIHRoZSBvdmVybGFwcGVkIG5vZGVzXG4gICAgICAgIGlmIChwcmV2ZW50T3ZlcmxhcCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZVNwYWNpbmcgPSBzZWxmLm5vZGVTcGFjaW5nO1xuICAgICAgICAgICAgbGV0IG5vZGVTcGFjaW5nRnVuYztcbiAgICAgICAgICAgIGlmIChpc051bWJlcihub2RlU3BhY2luZykpIHtcbiAgICAgICAgICAgICAgICBub2RlU3BhY2luZ0Z1bmMgPSAoKSA9PiBub2RlU3BhY2luZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24obm9kZVNwYWNpbmcpKSB7XG4gICAgICAgICAgICAgICAgbm9kZVNwYWNpbmdGdW5jID0gbm9kZVNwYWNpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlU3BhY2luZ0Z1bmMgPSAoKSA9PiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFub2RlU2l6ZSkge1xuICAgICAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9IChkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkLnNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGQuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBkLnNpemVbMF0gPiBkLnNpemVbMV0gPyBkLnNpemVbMF0gOiBkLnNpemVbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcyArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChkLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gZC5zaXplLndpZHRoID4gZC5zaXplLmhlaWdodCA/IGQuc2l6ZS53aWR0aCA6IGQuc2l6ZS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcyArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkLnNpemUgKyBub2RlU3BhY2luZ0Z1bmMoZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEwICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KG5vZGVTaXplKSkge1xuICAgICAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9IChkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5vZGVTaXplWzBdID4gbm9kZVNpemVbMV0gPyBub2RlU2l6ZVswXSA6IG5vZGVTaXplWzFdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlU2l6ZUZ1bmMgPSAoZCkgPT4gbm9kZVNpemUgKyBub2RlU3BhY2luZ0Z1bmMoZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBub25vdmVybGFwRm9yY2VQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgbm9kZXMsXG4gICAgICAgICAgICAgICAgbm9kZVNpemVGdW5jLFxuICAgICAgICAgICAgICAgIGFkak1hdHJpeCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnMsXG4gICAgICAgICAgICAgICAgcmFkaWksXG4gICAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICAgIHN0cmljdFJhZGlhbCxcbiAgICAgICAgICAgICAgICBmb2N1c0lEOiBmb2N1c0luZGV4LFxuICAgICAgICAgICAgICAgIGl0ZXJhdGlvbnM6IHNlbGYubWF4UHJldmVudE92ZXJsYXBJdGVyYXRpb24gfHwgMjAwLFxuICAgICAgICAgICAgICAgIGs6IHBvc2l0aW9ucy5sZW5ndGggLyA0LjVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBub25vdmVybGFwRm9yY2UgPSBuZXcgUmFkaWFsTm9ub3ZlcmxhcEZvcmNlKG5vbm92ZXJsYXBGb3JjZVBhcmFtcyk7XG4gICAgICAgICAgICBwb3NpdGlvbnMgPSBub25vdmVybGFwRm9yY2UubGF5b3V0KCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbW92ZSB0aGUgZ3JhcGggdG8gY2VudGVyXG4gICAgICAgIHBvc2l0aW9ucy5mb3JFYWNoKChwLCBpKSA9PiB7XG4gICAgICAgICAgICBub2Rlc1tpXS54ID0gcFswXSArIGNlbnRlclswXTtcbiAgICAgICAgICAgIG5vZGVzW2ldLnkgPSBwWzFdICsgY2VudGVyWzFdO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlcyxcbiAgICAgICAgICAgIGVkZ2VzXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJ1bigpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG1heEl0ZXJhdGlvbiA9IHNlbGYubWF4SXRlcmF0aW9uO1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBzZWxmLnBvc2l0aW9ucyB8fCBbXTtcbiAgICAgICAgY29uc3QgVyA9IHNlbGYud2VpZ2h0cyB8fCBbXTtcbiAgICAgICAgY29uc3QgZUlkZWFsRGlzID0gc2VsZi5lSWRlYWxEaXN0YW5jZXMgfHwgW107XG4gICAgICAgIGNvbnN0IHJhZGlpID0gc2VsZi5yYWRpaSB8fCBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbWF4SXRlcmF0aW9uOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtID0gaSAvIG1heEl0ZXJhdGlvbjtcbiAgICAgICAgICAgIHNlbGYub25lSXRlcmF0aW9uKHBhcmFtLCBwb3NpdGlvbnMsIHJhZGlpLCBlSWRlYWxEaXMsIFcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uZUl0ZXJhdGlvbihwYXJhbSwgcG9zaXRpb25zLCByYWRpaSwgRCwgVykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgdnBhcmFtID0gMSAtIHBhcmFtO1xuICAgICAgICBjb25zdCBmb2N1c0luZGV4ID0gc2VsZi5mb2N1c0luZGV4O1xuICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaCgodiwgaSkgPT4ge1xuICAgICAgICAgICAgLy8gdlxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luRGlzID0gZ2V0RURpc3RhbmNlKHYsIFswLCAwXSk7XG4gICAgICAgICAgICBjb25zdCByZWNpT0RpcyA9IG9yaWdpbkRpcyA9PT0gMCA/IDAgOiAxIC8gb3JpZ2luRGlzO1xuICAgICAgICAgICAgaWYgKGkgPT09IGZvY3VzSW5kZXgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgeE1vbGVjdWxlID0gMDtcbiAgICAgICAgICAgIGxldCB5TW9sZWN1bGUgPSAwO1xuICAgICAgICAgICAgbGV0IGRlbm9taW5hdG9yID0gMDtcbiAgICAgICAgICAgIHBvc2l0aW9ucy5mb3JFYWNoKCh1LCBqKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gdVxuICAgICAgICAgICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gdGhlIGV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHYgYW5kIHVcbiAgICAgICAgICAgICAgICBjb25zdCBlZGlzID0gZ2V0RURpc3RhbmNlKHYsIHUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2lFZGlzID0gZWRpcyA9PT0gMCA/IDAgOiAxIC8gZWRpcztcbiAgICAgICAgICAgICAgICBjb25zdCBpZGVhbERpcyA9IERbal1baV07XG4gICAgICAgICAgICAgICAgLy8gc2FtZSBmb3IgeCBhbmQgeVxuICAgICAgICAgICAgICAgIGRlbm9taW5hdG9yICs9IFdbaV1bal07XG4gICAgICAgICAgICAgICAgLy8geFxuICAgICAgICAgICAgICAgIHhNb2xlY3VsZSArPSBXW2ldW2pdICogKHVbMF0gKyBpZGVhbERpcyAqICh2WzBdIC0gdVswXSkgKiByZWNpRWRpcyk7XG4gICAgICAgICAgICAgICAgLy8geVxuICAgICAgICAgICAgICAgIHlNb2xlY3VsZSArPSBXW2ldW2pdICogKHVbMV0gKyBpZGVhbERpcyAqICh2WzFdIC0gdVsxXSkgKiByZWNpRWRpcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHJlY2lSID0gcmFkaWlbaV0gPT09IDAgPyAwIDogMSAvIHJhZGlpW2ldO1xuICAgICAgICAgICAgZGVub21pbmF0b3IgKj0gdnBhcmFtO1xuICAgICAgICAgICAgZGVub21pbmF0b3IgKz0gcGFyYW0gKiByZWNpUiAqIHJlY2lSO1xuICAgICAgICAgICAgLy8geFxuICAgICAgICAgICAgeE1vbGVjdWxlICo9IHZwYXJhbTtcbiAgICAgICAgICAgIHhNb2xlY3VsZSArPSBwYXJhbSAqIHJlY2lSICogdlswXSAqIHJlY2lPRGlzO1xuICAgICAgICAgICAgdlswXSA9IHhNb2xlY3VsZSAvIGRlbm9taW5hdG9yO1xuICAgICAgICAgICAgLy8geVxuICAgICAgICAgICAgeU1vbGVjdWxlICo9IHZwYXJhbTtcbiAgICAgICAgICAgIHlNb2xlY3VsZSArPSBwYXJhbSAqIHJlY2lSICogdlsxXSAqIHJlY2lPRGlzO1xuICAgICAgICAgICAgdlsxXSA9IHlNb2xlY3VsZSAvIGRlbm9taW5hdG9yO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZUlkZWFsRGlzTWF0cml4KCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBpZiAoIW5vZGVzKVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCBEID0gc2VsZi5kaXN0YW5jZXM7XG4gICAgICAgIGNvbnN0IGxpbmtEaXMgPSBzZWxmLmxpbmtEaXN0YW5jZTtcbiAgICAgICAgY29uc3QgcmFkaWkgPSBzZWxmLnJhZGlpIHx8IFtdO1xuICAgICAgICBjb25zdCB1bml0UmFkaXVzID0gc2VsZi51bml0UmFkaXVzIHx8IDUwO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgaWYgKEQpIHtcbiAgICAgICAgICAgIEQuZm9yRWFjaCgocm93LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Um93ID0gW107XG4gICAgICAgICAgICAgICAgcm93LmZvckVhY2goKHYsIGopID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Jvdy5wdXNoKDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJhZGlpW2ldID09PSByYWRpaVtqXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaSBhbmQgaiBhcmUgb24gdGhlIHNhbWUgY2lyY2xlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5zb3J0QnkgPT09IFwiZGF0YVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc29ydCB0aGUgbm9kZXMgb24gdGhlIHNhbWUgY2lyY2xlIGFjY29yZGluZyB0byB0aGUgb3JkZXJpbmcgb2YgdGhlIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSb3cucHVzaCgodiAqIChNYXRoLmFicyhpIC0gaikgKiBzZWxmLnNvcnRTdHJlbmd0aCkpIC9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhZGlpW2ldIC8gdW5pdFJhZGl1cykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2VsZi5zb3J0QnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb3J0IHRoZSBub2RlcyBvbiB0aGUgc2FtZSBjaXJjbGUgYWNjb3JkaW5nIHRvIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlWYWx1ZSA9IG5vZGVzW2ldW3NlbGYuc29ydEJ5XSB8fCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqVmFsdWUgPSBub2Rlc1tqXVtzZWxmLnNvcnRCeV0gfHwgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTdHJpbmcoaVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpVmFsdWUgPSBpVmFsdWUuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKGpWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalZhbHVlID0galZhbHVlLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Jvdy5wdXNoKCh2ICogKE1hdGguYWJzKGlWYWx1ZSAtIGpWYWx1ZSkgKiBzZWxmLnNvcnRTdHJlbmd0aCkpIC9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhZGlpW2ldIC8gdW5pdFJhZGl1cykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Um93LnB1c2goKHYgKiBsaW5rRGlzKSAvIChyYWRpaVtpXSAvIHVuaXRSYWRpdXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGkgYW5kIGogYXJlIG9uIGRpZmZlcmVudCBjaXJjbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGkgYW5kIGogYXJlIG9uIGRpZmZlcmVudCBjaXJjbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmsgPSAobGlua0RpcyArIHVuaXRSYWRpdXMpIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Jvdy5wdXNoKHYgKiBsaW5rKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld1Jvdyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBoYW5kbGVJbmZpbml0eShtYXRyaXgsIGZvY3VzSW5kZXgsIHN0ZXApIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gbWF0cml4Lmxlbmd0aDtcbiAgICAgICAgLy8g6YGN5Y6GIG1hdHJpeCDkuK3pgY3ljoYgZm9jdXMg5a+55bqU6KGMXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1hdHJpeCDlhbPms6jngrnlr7nlupTooYznmoQgSW5mIOmhuVxuICAgICAgICAgICAgaWYgKG1hdHJpeFtmb2N1c0luZGV4XVtpXSA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICBtYXRyaXhbZm9jdXNJbmRleF1baV0gPSBzdGVwO1xuICAgICAgICAgICAgICAgIG1hdHJpeFtpXVtmb2N1c0luZGV4XSA9IHN0ZXA7XG4gICAgICAgICAgICAgICAgLy8g6YGN5Y6GIG1hdHJpeCDkuK3nmoQgaSDooYzvvIxpIOihjOS4remdniBJbmYg6aG56Iul5ZyoIGZvY3VzIOihjOS4uiBJbmbvvIzliJnmm7/mjaIgZm9jdXMg6KGM55qE6YKj5LiqIEluZlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdHJpeFtpXVtqXSAhPT0gSW5maW5pdHkgJiYgbWF0cml4W2ZvY3VzSW5kZXhdW2pdID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4W2ZvY3VzSW5kZXhdW2pdID0gc3RlcCArIG1hdHJpeFtpXVtqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeFtqXVtmb2N1c0luZGV4XSA9IHN0ZXAgKyBtYXRyaXhbaV1bal07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8g5aSE55CG5YW25LuW6KGM55qEIEluZuOAguagueaNruivpeihjOWvueW6lOeCueS4jiBmb2N1cyDot53nprvku6Xlj4ogSW5mIOmhueeCuSDkuI4gZm9jdXMg6Led56a777yM5Yaz5a6a5pu/5o2i5YC8XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChpID09PSBmb2N1c0luZGV4KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1hdHJpeFtpXVtqXSA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1pbnVzID0gTWF0aC5hYnMobWF0cml4W2ZvY3VzSW5kZXhdW2ldIC0gbWF0cml4W2ZvY3VzSW5kZXhdW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgbWludXMgPSBtaW51cyA9PT0gMCA/IDEgOiBtaW51cztcbiAgICAgICAgICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWludXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG1heFRvRm9jdXMobWF0cml4LCBmb2N1c0luZGV4KSB7XG4gICAgICAgIGxldCBtYXggPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeFtmb2N1c0luZGV4XS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKG1hdHJpeFtmb2N1c0luZGV4XVtpXSA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1heCA9IG1hdHJpeFtmb2N1c0luZGV4XVtpXSA+IG1heCA/IG1hdHJpeFtmb2N1c0luZGV4XVtpXSA6IG1heDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4O1xuICAgIH1cbiAgICBnZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gXCJyYWRpYWxcIjtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yYWRpYWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/radial/radial.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/radial/radialNonoverlapForce.js": /*!*****************************************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/radial/radialNonoverlapForce.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return RadialNonoverlapForce; });\nconst SPEED_DIVISOR = 800;\nclass RadialNonoverlapForce {\n constructor(params) {\n this.disp = [];\n this.positions = params.positions;\n this.adjMatrix = params.adjMatrix;\n this.focusID = params.focusID;\n this.radii = params.radii;\n this.iterations = params.iterations || 10;\n this.height = params.height || 10;\n this.width = params.width || 10;\n this.speed = params.speed || 100;\n this.gravity = params.gravity || 10;\n this.nodeSizeFunc = params.nodeSizeFunc;\n this.k = params.k || 5;\n this.strictRadial = params.strictRadial;\n this.nodes = params.nodes;\n }\n layout() {\n const self = this;\n const positions = self.positions;\n const disp = [];\n const iterations = self.iterations;\n const maxDisplace = self.width / 10;\n self.maxDisplace = maxDisplace;\n self.disp = disp;\n for (let i = 0; i < iterations; i++) {\n positions.forEach((_, k) => {\n disp[k] = { x: 0, y: 0 };\n });\n // 给重叠的节点增加斥力\n self.getRepulsion();\n self.updatePositions();\n }\n return positions;\n }\n getRepulsion() {\n const self = this;\n const positions = self.positions;\n const nodes = self.nodes;\n const disp = self.disp;\n const k = self.k;\n const radii = self.radii || [];\n positions.forEach((v, i) => {\n disp[i] = { x: 0, y: 0 };\n positions.forEach((u, j) => {\n if (i === j) {\n return;\n }\n // v and u are not on the same circle, return\n if (radii[i] !== radii[j]) {\n return;\n }\n let vecx = v[0] - u[0];\n let vecy = v[1] - u[1];\n let vecLength = Math.sqrt(vecx * vecx + vecy * vecy);\n if (vecLength === 0) {\n vecLength = 1;\n const sign = i > j ? 1 : -1;\n vecx = 0.01 * sign;\n vecy = 0.01 * sign;\n }\n // these two nodes overlap\n if (vecLength < self.nodeSizeFunc(nodes[i]) / 2 + self.nodeSizeFunc(nodes[j]) / 2) {\n const common = (k * k) / vecLength;\n disp[i].x += (vecx / vecLength) * common;\n disp[i].y += (vecy / vecLength) * common;\n }\n });\n });\n }\n updatePositions() {\n const self = this;\n const positions = self.positions;\n const disp = self.disp;\n const speed = self.speed;\n const strictRadial = self.strictRadial;\n const f = self.focusID;\n const maxDisplace = self.maxDisplace || self.width / 10;\n if (strictRadial) {\n disp.forEach((di, i) => {\n const vx = positions[i][0] - positions[f][0];\n const vy = positions[i][1] - positions[f][1];\n const vLength = Math.sqrt(vx * vx + vy * vy);\n let vpx = vy / vLength;\n let vpy = -vx / vLength;\n const diLength = Math.sqrt(di.x * di.x + di.y * di.y);\n let alpha = Math.acos((vpx * di.x + vpy * di.y) / diLength);\n if (alpha > Math.PI / 2) {\n alpha -= Math.PI / 2;\n vpx *= -1;\n vpy *= -1;\n }\n const tdispLength = Math.cos(alpha) * diLength;\n di.x = vpx * tdispLength;\n di.y = vpy * tdispLength;\n });\n }\n // move\n const radii = self.radii;\n positions.forEach((n, i) => {\n if (i === f) {\n return;\n }\n const distLength = Math.sqrt(disp[i].x * disp[i].x + disp[i].y * disp[i].y);\n if (distLength > 0 && i !== f) {\n const limitedDist = Math.min(maxDisplace * (speed / SPEED_DIVISOR), distLength);\n n[0] += (disp[i].x / distLength) * limitedDist;\n n[1] += (disp[i].y / distLength) * limitedDist;\n if (strictRadial) {\n let vx = n[0] - positions[f][0];\n let vy = n[1] - positions[f][1];\n const nfDis = Math.sqrt(vx * vx + vy * vy);\n vx = (vx / nfDis) * radii[i];\n vy = (vy / nfDis) * radii[i];\n n[0] = positions[f][0] + vx;\n n[1] = positions[f][1] + vy;\n }\n }\n });\n }\n}\n//# sourceMappingURL=radialNonoverlapForce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9yYWRpYWwvcmFkaWFsTm9ub3ZlcmxhcEZvcmNlLmpzPzYyMzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZ0JBQWdCO0FBQ3ZDO0FBQ0EsMkJBQTJCO0FBQzNCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy9sYXlvdXQvcmFkaWFsL3JhZGlhbE5vbm92ZXJsYXBGb3JjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNQRUVEX0RJVklTT1IgPSA4MDA7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYWRpYWxOb25vdmVybGFwRm9yY2Uge1xuICAgIGNvbnN0cnVjdG9yKHBhcmFtcykge1xuICAgICAgICB0aGlzLmRpc3AgPSBbXTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBwYXJhbXMucG9zaXRpb25zO1xuICAgICAgICB0aGlzLmFkak1hdHJpeCA9IHBhcmFtcy5hZGpNYXRyaXg7XG4gICAgICAgIHRoaXMuZm9jdXNJRCA9IHBhcmFtcy5mb2N1c0lEO1xuICAgICAgICB0aGlzLnJhZGlpID0gcGFyYW1zLnJhZGlpO1xuICAgICAgICB0aGlzLml0ZXJhdGlvbnMgPSBwYXJhbXMuaXRlcmF0aW9ucyB8fCAxMDtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSBwYXJhbXMuaGVpZ2h0IHx8IDEwO1xuICAgICAgICB0aGlzLndpZHRoID0gcGFyYW1zLndpZHRoIHx8IDEwO1xuICAgICAgICB0aGlzLnNwZWVkID0gcGFyYW1zLnNwZWVkIHx8IDEwMDtcbiAgICAgICAgdGhpcy5ncmF2aXR5ID0gcGFyYW1zLmdyYXZpdHkgfHwgMTA7XG4gICAgICAgIHRoaXMubm9kZVNpemVGdW5jID0gcGFyYW1zLm5vZGVTaXplRnVuYztcbiAgICAgICAgdGhpcy5rID0gcGFyYW1zLmsgfHwgNTtcbiAgICAgICAgdGhpcy5zdHJpY3RSYWRpYWwgPSBwYXJhbXMuc3RyaWN0UmFkaWFsO1xuICAgICAgICB0aGlzLm5vZGVzID0gcGFyYW1zLm5vZGVzO1xuICAgIH1cbiAgICBsYXlvdXQoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBzZWxmLnBvc2l0aW9ucztcbiAgICAgICAgY29uc3QgZGlzcCA9IFtdO1xuICAgICAgICBjb25zdCBpdGVyYXRpb25zID0gc2VsZi5pdGVyYXRpb25zO1xuICAgICAgICBjb25zdCBtYXhEaXNwbGFjZSA9IHNlbGYud2lkdGggLyAxMDtcbiAgICAgICAgc2VsZi5tYXhEaXNwbGFjZSA9IG1heERpc3BsYWNlO1xuICAgICAgICBzZWxmLmRpc3AgPSBkaXNwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJhdGlvbnM7IGkrKykge1xuICAgICAgICAgICAgcG9zaXRpb25zLmZvckVhY2goKF8sIGspID0+IHtcbiAgICAgICAgICAgICAgICBkaXNwW2tdID0geyB4OiAwLCB5OiAwIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIOe7memHjeWPoOeahOiKgueCueWinuWKoOaWpeWKm1xuICAgICAgICAgICAgc2VsZi5nZXRSZXB1bHNpb24oKTtcbiAgICAgICAgICAgIHNlbGYudXBkYXRlUG9zaXRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBvc2l0aW9ucztcbiAgICB9XG4gICAgZ2V0UmVwdWxzaW9uKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0gc2VsZi5wb3NpdGlvbnM7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgY29uc3QgZGlzcCA9IHNlbGYuZGlzcDtcbiAgICAgICAgY29uc3QgayA9IHNlbGYuaztcbiAgICAgICAgY29uc3QgcmFkaWkgPSBzZWxmLnJhZGlpIHx8IFtdO1xuICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaCgodiwgaSkgPT4ge1xuICAgICAgICAgICAgZGlzcFtpXSA9IHsgeDogMCwgeTogMCB9O1xuICAgICAgICAgICAgcG9zaXRpb25zLmZvckVhY2goKHUsIGopID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHYgYW5kIHUgYXJlIG5vdCBvbiB0aGUgc2FtZSBjaXJjbGUsIHJldHVyblxuICAgICAgICAgICAgICAgIGlmIChyYWRpaVtpXSAhPT0gcmFkaWlbal0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgdmVjeCA9IHZbMF0gLSB1WzBdO1xuICAgICAgICAgICAgICAgIGxldCB2ZWN5ID0gdlsxXSAtIHVbMV07XG4gICAgICAgICAgICAgICAgbGV0IHZlY0xlbmd0aCA9IE1hdGguc3FydCh2ZWN4ICogdmVjeCArIHZlY3kgKiB2ZWN5KTtcbiAgICAgICAgICAgICAgICBpZiAodmVjTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZlY0xlbmd0aCA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZ24gPSBpID4gaiA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgdmVjeCA9IDAuMDEgKiBzaWduO1xuICAgICAgICAgICAgICAgICAgICB2ZWN5ID0gMC4wMSAqIHNpZ247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHRoZXNlIHR3byBub2RlcyBvdmVybGFwXG4gICAgICAgICAgICAgICAgaWYgKHZlY0xlbmd0aCA8IHNlbGYubm9kZVNpemVGdW5jKG5vZGVzW2ldKSAvIDIgKyBzZWxmLm5vZGVTaXplRnVuYyhub2Rlc1tqXSkgLyAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1vbiA9IChrICogaykgLyB2ZWNMZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BbaV0ueCArPSAodmVjeCAvIHZlY0xlbmd0aCkgKiBjb21tb247XG4gICAgICAgICAgICAgICAgICAgIGRpc3BbaV0ueSArPSAodmVjeSAvIHZlY0xlbmd0aCkgKiBjb21tb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB1cGRhdGVQb3NpdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBzZWxmLnBvc2l0aW9ucztcbiAgICAgICAgY29uc3QgZGlzcCA9IHNlbGYuZGlzcDtcbiAgICAgICAgY29uc3Qgc3BlZWQgPSBzZWxmLnNwZWVkO1xuICAgICAgICBjb25zdCBzdHJpY3RSYWRpYWwgPSBzZWxmLnN0cmljdFJhZGlhbDtcbiAgICAgICAgY29uc3QgZiA9IHNlbGYuZm9jdXNJRDtcbiAgICAgICAgY29uc3QgbWF4RGlzcGxhY2UgPSBzZWxmLm1heERpc3BsYWNlIHx8IHNlbGYud2lkdGggLyAxMDtcbiAgICAgICAgaWYgKHN0cmljdFJhZGlhbCkge1xuICAgICAgICAgICAgZGlzcC5mb3JFYWNoKChkaSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZ4ID0gcG9zaXRpb25zW2ldWzBdIC0gcG9zaXRpb25zW2ZdWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZ5ID0gcG9zaXRpb25zW2ldWzFdIC0gcG9zaXRpb25zW2ZdWzFdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZMZW5ndGggPSBNYXRoLnNxcnQodnggKiB2eCArIHZ5ICogdnkpO1xuICAgICAgICAgICAgICAgIGxldCB2cHggPSB2eSAvIHZMZW5ndGg7XG4gICAgICAgICAgICAgICAgbGV0IHZweSA9IC12eCAvIHZMZW5ndGg7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlMZW5ndGggPSBNYXRoLnNxcnQoZGkueCAqIGRpLnggKyBkaS55ICogZGkueSk7XG4gICAgICAgICAgICAgICAgbGV0IGFscGhhID0gTWF0aC5hY29zKCh2cHggKiBkaS54ICsgdnB5ICogZGkueSkgLyBkaUxlbmd0aCk7XG4gICAgICAgICAgICAgICAgaWYgKGFscGhhID4gTWF0aC5QSSAvIDIpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxwaGEgLT0gTWF0aC5QSSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIHZweCAqPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgdnB5ICo9IC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0ZGlzcExlbmd0aCA9IE1hdGguY29zKGFscGhhKSAqIGRpTGVuZ3RoO1xuICAgICAgICAgICAgICAgIGRpLnggPSB2cHggKiB0ZGlzcExlbmd0aDtcbiAgICAgICAgICAgICAgICBkaS55ID0gdnB5ICogdGRpc3BMZW5ndGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtb3ZlXG4gICAgICAgIGNvbnN0IHJhZGlpID0gc2VsZi5yYWRpaTtcbiAgICAgICAgcG9zaXRpb25zLmZvckVhY2goKG4sIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpID09PSBmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGlzdExlbmd0aCA9IE1hdGguc3FydChkaXNwW2ldLnggKiBkaXNwW2ldLnggKyBkaXNwW2ldLnkgKiBkaXNwW2ldLnkpO1xuICAgICAgICAgICAgaWYgKGRpc3RMZW5ndGggPiAwICYmIGkgIT09IGYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW1pdGVkRGlzdCA9IE1hdGgubWluKG1heERpc3BsYWNlICogKHNwZWVkIC8gU1BFRURfRElWSVNPUiksIGRpc3RMZW5ndGgpO1xuICAgICAgICAgICAgICAgIG5bMF0gKz0gKGRpc3BbaV0ueCAvIGRpc3RMZW5ndGgpICogbGltaXRlZERpc3Q7XG4gICAgICAgICAgICAgICAgblsxXSArPSAoZGlzcFtpXS55IC8gZGlzdExlbmd0aCkgKiBsaW1pdGVkRGlzdDtcbiAgICAgICAgICAgICAgICBpZiAoc3RyaWN0UmFkaWFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB2eCA9IG5bMF0gLSBwb3NpdGlvbnNbZl1bMF07XG4gICAgICAgICAgICAgICAgICAgIGxldCB2eSA9IG5bMV0gLSBwb3NpdGlvbnNbZl1bMV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5mRGlzID0gTWF0aC5zcXJ0KHZ4ICogdnggKyB2eSAqIHZ5KTtcbiAgICAgICAgICAgICAgICAgICAgdnggPSAodnggLyBuZkRpcykgKiByYWRpaVtpXTtcbiAgICAgICAgICAgICAgICAgICAgdnkgPSAodnkgLyBuZkRpcykgKiByYWRpaVtpXTtcbiAgICAgICAgICAgICAgICAgICAgblswXSA9IHBvc2l0aW9uc1tmXVswXSArIHZ4O1xuICAgICAgICAgICAgICAgICAgICBuWzFdID0gcG9zaXRpb25zW2ZdWzFdICsgdnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yYWRpYWxOb25vdmVybGFwRm9yY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/radial/radialNonoverlapForce.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/random.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/random.js ***! \*******************************************************/ /*! exports provided: RandomLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RandomLayout\", function() { return RandomLayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\n/**\n * 随机布局\n */\nclass RandomLayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 布局中心 */\n this.center = [0, 0];\n /** 宽度 */\n this.width = 300;\n /** 高度 */\n this.height = 300;\n this.nodes = [];\n this.edges = [];\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n center: [0, 0],\n width: 300,\n height: 300\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const layoutScale = 0.9;\n const center = self.center;\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (nodes) {\n nodes.forEach((node) => {\n node.x = (Math.random() - 0.5) * layoutScale * self.width + center[0];\n node.y = (Math.random() - 0.5) * layoutScale * self.height + center[1];\n });\n }\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges: this.edges\n };\n }\n getType() {\n return \"random\";\n }\n}\n//# sourceMappingURL=random.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9yYW5kb20uanM/MWEyMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDTywyQkFBMkIsMENBQUk7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC9yYW5kb20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlT3ZlcnZpZXcgcmFuZG9tIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG5pbXBvcnQgeyBCYXNlIH0gZnJvbSBcIi4vYmFzZVwiO1xuLyoqXG4gKiDpmo/mnLrluIPlsYBcbiAqL1xuZXhwb3J0IGNsYXNzIFJhbmRvbUxheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIOW4g+WxgOS4reW/gyAqL1xuICAgICAgICB0aGlzLmNlbnRlciA9IFswLCAwXTtcbiAgICAgICAgLyoqIOWuveW6piAqL1xuICAgICAgICB0aGlzLndpZHRoID0gMzAwO1xuICAgICAgICAvKiog6auY5bqmICovXG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMzAwO1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgLyoqIOi/reS7o+e7k+adn+eahOWbnuiwg+WHveaVsCAqL1xuICAgICAgICB0aGlzLm9uTGF5b3V0RW5kID0gKCkgPT4geyB9O1xuICAgICAgICB0aGlzLnVwZGF0ZUNmZyhvcHRpb25zKTtcbiAgICB9XG4gICAgZ2V0RGVmYXVsdENmZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNlbnRlcjogWzAsIDBdLFxuICAgICAgICAgICAgd2lkdGg6IDMwMCxcbiAgICAgICAgICAgIGhlaWdodDogMzAwXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaJp+ihjOW4g+WxgFxuICAgICAqL1xuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IGxheW91dFNjYWxlID0gMC45O1xuICAgICAgICBjb25zdCBjZW50ZXIgPSBzZWxmLmNlbnRlcjtcbiAgICAgICAgaWYgKCFzZWxmLndpZHRoICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYuaGVpZ2h0ICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2Rlcykge1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIG5vZGUueCA9IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIGxheW91dFNjYWxlICogc2VsZi53aWR0aCArIGNlbnRlclswXTtcbiAgICAgICAgICAgICAgICBub2RlLnkgPSAoTWF0aC5yYW5kb20oKSAtIDAuNSkgKiBsYXlvdXRTY2FsZSAqIHNlbGYuaGVpZ2h0ICsgY2VudGVyWzFdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlcyxcbiAgICAgICAgICAgIGVkZ2VzOiB0aGlzLmVkZ2VzXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldFR5cGUoKSB7XG4gICAgICAgIHJldHVybiBcInJhbmRvbVwiO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJhbmRvbS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/random.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/layout/types.js": /*!******************************************************!*\ !*** ./node_modules/@antv/layout/es/layout/types.js ***! \******************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL2xheW91dC90eXBlcy5qcz84ZjVkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQVU7QUFDViIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvbGF5b3V0L3R5cGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHlwZXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/layout/types.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/registy/index.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/layout/es/registy/index.js ***! \*******************************************************/ /*! exports provided: registerLayout, unRegisterLayout, getLayoutByName */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerLayout\", function() { return registerLayout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegisterLayout\", function() { return unRegisterLayout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayoutByName\", function() { return getLayoutByName; });\n/* harmony import */ var _layout_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../layout/base */ \"./node_modules/@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/@antv/layout/es/util/index.js\");\n\n\nconst map = new Map();\nconst registerLayout = (name, layoutOverride) => {\n if (map.get(name)) {\n console.warn(`The layout with the name ${name} exists already, it will be overridden`);\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(layoutOverride)) {\n // tslint:disable-next-line: max-classes-per-file\n class GLayout extends _layout_base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(cfg) {\n super();\n const self = this;\n const props = {};\n const defaultCfg = self.getDefaultCfg();\n Object.assign(props, defaultCfg, layoutOverride, cfg);\n Object.keys(props).forEach((key) => {\n const value = props[key];\n self[key] = value;\n });\n }\n }\n map.set(name, GLayout);\n }\n else {\n map.set(name, layoutOverride);\n }\n return map.get(name);\n};\nconst unRegisterLayout = (name) => {\n if (map.has(name)) {\n map.delete(name);\n }\n};\nconst getLayoutByName = (name) => {\n if (map.has(name)) {\n return map.get(name);\n }\n return null;\n};\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3JlZ2lzdHkvaW5kZXguanM/OGM1NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDSDtBQUNuQztBQUNPO0FBQ1A7QUFDQSxpREFBaUQsS0FBSztBQUN0RDtBQUNBLFFBQVEsc0RBQVE7QUFDaEI7QUFDQSw4QkFBOEIsaURBQUk7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvcmVnaXN0eS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi4vbGF5b3V0L2Jhc2VcIjtcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSBcIi4uL3V0aWxcIjtcbmNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbmV4cG9ydCBjb25zdCByZWdpc3RlckxheW91dCA9IChuYW1lLCBsYXlvdXRPdmVycmlkZSkgPT4ge1xuICAgIGlmIChtYXAuZ2V0KG5hbWUpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgVGhlIGxheW91dCB3aXRoIHRoZSBuYW1lICR7bmFtZX0gZXhpc3RzIGFscmVhZHksIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbmApO1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3QobGF5b3V0T3ZlcnJpZGUpKSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWNsYXNzZXMtcGVyLWZpbGVcbiAgICAgICAgY2xhc3MgR0xheW91dCBleHRlbmRzIEJhc2Uge1xuICAgICAgICAgICAgY29uc3RydWN0b3IoY2ZnKSB7XG4gICAgICAgICAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wcyA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDZmcgPSBzZWxmLmdldERlZmF1bHRDZmcoKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHByb3BzLCBkZWZhdWx0Q2ZnLCBsYXlvdXRPdmVycmlkZSwgY2ZnKTtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcHJvcHNba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZltrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWFwLnNldChuYW1lLCBHTGF5b3V0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG1hcC5zZXQobmFtZSwgbGF5b3V0T3ZlcnJpZGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWFwLmdldChuYW1lKTtcbn07XG5leHBvcnQgY29uc3QgdW5SZWdpc3RlckxheW91dCA9IChuYW1lKSA9PiB7XG4gICAgaWYgKG1hcC5oYXMobmFtZSkpIHtcbiAgICAgICAgbWFwLmRlbGV0ZShuYW1lKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldExheW91dEJ5TmFtZSA9IChuYW1lKSA9PiB7XG4gICAgaWYgKG1hcC5oYXMobmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIG1hcC5nZXQobmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/registy/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/util/array.js": /*!****************************************************!*\ !*** ./node_modules/@antv/layout/es/util/array.js ***! \****************************************************/ /*! exports provided: isArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\nconst isArray = Array.isArray;\n//# sourceMappingURL=array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3V0aWwvYXJyYXkuanM/NThjMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvdXRpbC9hcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFycmF5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/util/array.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/util/function.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/layout/es/util/function.js ***! \*******************************************************/ /*! exports provided: isFunction */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\nconst isFunction = (val) => typeof val === 'function';\n//# sourceMappingURL=function.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3V0aWwvZnVuY3Rpb24uanM/YjY0YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvdXRpbC9mdW5jdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBpc0Z1bmN0aW9uID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZ1bmN0aW9uLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/util/function.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/util/gpu.js": /*!**************************************************!*\ !*** ./node_modules/@antv/layout/es/util/gpu.js ***! \**************************************************/ /*! exports provided: proccessToFunc, buildTextureData, buildTextureDataWithTwoEdgeAttr, attributesToTextureData, arrayToTextureData */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"proccessToFunc\", function() { return proccessToFunc; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildTextureData\", function() { return buildTextureData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildTextureDataWithTwoEdgeAttr\", function() { return buildTextureDataWithTwoEdgeAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"attributesToTextureData\", function() { return attributesToTextureData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"arrayToTextureData\", function() { return arrayToTextureData; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ */ \"./node_modules/@antv/layout/es/util/index.js\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math */ \"./node_modules/@antv/layout/es/util/math.js\");\n\n\n/**\n * 将 number | Function 类型的参数转换为 return number 的 Function\n * @param {number | Function} value 需要被转换的值\n * @param {number} defaultV 返回函数的默认返回值\n * @return {Function} 转换后的函数\n */\nconst proccessToFunc = (value, defaultV) => {\n let func;\n if (!value) {\n func = () => {\n return defaultV || 1;\n };\n }\n else if (Object(___WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(value)) {\n func = () => {\n return value;\n };\n }\n else {\n func = value;\n }\n return func;\n};\n/**\n * 将节点和边数据转换为 GPU 可读的数组。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 需要被转换的值\n * @param {EdgeConfig[]} edges 返回函数的默认返回值\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\nconst buildTextureData = (nodes, edges) => {\n const dataArray = [];\n const nodeDict = [];\n const mapIdPos = {};\n let i = 0;\n for (i = 0; i < nodes.length; i++) {\n const n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n for (i = 0; i < edges.length; i++) {\n const e = edges[i];\n const source = Object(_math__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_math__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n nodeDict[mapIdPos[source]].push(mapIdPos[target]);\n nodeDict[mapIdPos[target]].push(mapIdPos[source]);\n }\n let maxEdgePerVetex = 0;\n for (i = 0; i < nodes.length; i++) {\n const offset = dataArray.length;\n const dests = nodeDict[i];\n const len = dests.length;\n dataArray[i * 4 + 2] = offset;\n dataArray[i * 4 + 3] = dests.length;\n maxEdgePerVetex = Math.max(maxEdgePerVetex, dests.length);\n for (let j = 0; j < len; ++j) {\n const dest = dests[j];\n dataArray.push(+dest);\n }\n }\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n return {\n maxEdgePerVetex,\n array: new Float32Array(dataArray),\n };\n};\n/**\n* 将节点和边数据转换为 GPU 可读的数组,每条边带有一个属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n* @param {NodeConfig[]} nodes 节点数组\n* @param {EdgeConfig[]} edges 边数组\n* @param {Function} attrs 读取边属性的函数\n* @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n*/\n// export const buildTextureDataWithOneEdgeAttr = (nodes: OutNode[], edges: Edge[], attrs: Function): {\n// array: Float32Array,\n// maxEdgePerVetex: number\n// } => {\n// const dataArray = [];\n// const nodeDict: any = [];\n// const mapIdPos: IndexMap = {};\n// let i = 0;\n// for (i = 0; i < nodes.length; i++) {\n// const n = nodes[i];\n// mapIdPos[n.id] = i;\n// dataArray.push(n.x);\n// dataArray.push(n.y);\n// dataArray.push(0);\n// dataArray.push(0);\n// nodeDict.push([]);\n// }\n// for (i = 0; i < edges.length; i++) {\n// const e = edges[i];\n// nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n// nodeDict[mapIdPos[e.source]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n// nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n// nodeDict[mapIdPos[e.target]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n// }\n// let maxEdgePerVetex = 0;\n// for (i = 0; i < nodes.length; i++) {\n// const offset: number = dataArray.length;\n// const dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n// const len = dests.length;\n// dataArray[i * 4 + 2] = offset;\n// dataArray[i * 4 + 3] = len / 2; // 第四位存储与该节点相关的所有节点个数\n// maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 2);\n// for (let j = 0; j < len; ++j) {\n// const dest = dests[j];\n// dataArray.push(+dest);\n// }\n// }\n// // 不是 4 的倍数,填充 0\n// while (dataArray.length % 4 !== 0) {\n// dataArray.push(0);\n// }\n// return {\n// array: new Float32Array(dataArray),\n// maxEdgePerVetex\n// }\n// }\n/**\n* 将节点和边数据转换为 GPU 可读的数组,每条边带有一个以上属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n* @param {NodeConfig[]} nodes 节点数组\n* @param {EdgeConfig[]} edges 边数组\n* @param {Function} attrs 读取边属性的函数\n* @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n*/\nconst buildTextureDataWithTwoEdgeAttr = (nodes, edges, attrs1, attrs2) => {\n const dataArray = [];\n const nodeDict = [];\n const mapIdPos = {};\n let i = 0;\n for (i = 0; i < nodes.length; i++) {\n const n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n for (i = 0; i < edges.length; i++) {\n const e = edges[i];\n const source = Object(_math__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_math__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n nodeDict[mapIdPos[source]].push(mapIdPos[target]);\n nodeDict[mapIdPos[source]].push(attrs1(e));\n nodeDict[mapIdPos[source]].push(attrs2(e));\n nodeDict[mapIdPos[source]].push(0);\n nodeDict[mapIdPos[target]].push(mapIdPos[source]);\n nodeDict[mapIdPos[target]].push(attrs1(e));\n nodeDict[mapIdPos[target]].push(attrs2(e));\n nodeDict[mapIdPos[target]].push(0);\n }\n let maxEdgePerVetex = 0;\n for (i = 0; i < nodes.length; i++) {\n const offset = dataArray.length;\n const dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n const len = dests.length;\n // dataArray[i * 4 + 2] = offset;\n // dataArray[i * 4 + 3] = len / 4; // 第四位存储与该节点相关的所有节点个数\n // pack offset & length into float32: offset 20bit, length 12bit\n dataArray[i * 4 + 2] = offset + 1048576 * len / 4;\n dataArray[i * 4 + 3] = 0; // 第四位存储与上一次的距离差值\n maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 4);\n for (let j = 0; j < len; ++j) {\n const dest = dests[j];\n dataArray.push(+dest);\n }\n }\n // 不是 4 的倍数,填充 0\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n return {\n maxEdgePerVetex,\n array: new Float32Array(dataArray),\n };\n};\n/**\n* transform the extended attributes of nodes or edges to a texture array\n* @param {string[]} attributeNames attributes' name to be read from items and put into output array\n* @param {ModelConfig[]} items the items to be read\n* @return {Float32Array} the attributes' value array to be read by GPU\n*/\nconst attributesToTextureData = (attributeNames, items) => {\n const dataArray = [];\n const attributeNum = attributeNames.length;\n const attributteStringMap = {};\n items.forEach((item) => {\n attributeNames.forEach((name, i) => {\n if (attributteStringMap[item[name]] === undefined) {\n attributteStringMap[item[name]] = Object.keys(attributteStringMap).length;\n }\n dataArray.push(attributteStringMap[item[name]]);\n // insure each node's attributes take inter number of grids\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n });\n return {\n array: new Float32Array(dataArray),\n count: Object.keys(attributteStringMap).length\n };\n};\n/**\n* transform the number array format of extended attributes of nodes or edges to a texture array\n* @param {string[]} attributeNames attributes' name to be read from items and put into output array\n* @return {Float32Array} the attributes' value array to be read by GPU\n*/\nconst arrayToTextureData = (valueArrays) => {\n const dataArray = [];\n const attributeNum = valueArrays.length;\n const itemNum = valueArrays[0].length;\n for (let j = 0; j < itemNum; j++) {\n valueArrays.forEach((valueArray, i) => {\n dataArray.push(valueArray[j]);\n // insure each node's attributes take inter number of grids\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n }\n return new Float32Array(dataArray);\n};\n//# sourceMappingURL=gpu.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3V0aWwvZ3B1LmpzPzVjZTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE4QjtBQUNXO0FBQ3pDO0FBQ0E7QUFDQSxZQUFZLGtCQUFrQjtBQUM5QixZQUFZLE9BQU87QUFDbkIsWUFBWSxTQUFTO0FBQ3JCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGtEQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGFBQWE7QUFDekIsWUFBWSxhQUFhO0FBQ3pCLFlBQVksT0FBTztBQUNuQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGtCQUFrQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrQkFBa0I7QUFDakM7QUFDQSx1QkFBdUIsNkRBQWU7QUFDdEMsdUJBQXVCLDZEQUFlO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrQkFBa0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFNBQVM7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixrQkFBa0I7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixrQkFBa0I7QUFDbEM7QUFDQTtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0EsZ0JBQWdCLGtCQUFrQjtBQUNsQztBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0Esd0JBQXdCLFNBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0JBQWtCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGtCQUFrQjtBQUNqQztBQUNBLHVCQUF1Qiw2REFBZTtBQUN0Qyx1QkFBdUIsNkRBQWU7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGtCQUFrQjtBQUNqQztBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQSx1QkFBdUIsU0FBUztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsYUFBYTtBQUN4QjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLGFBQWE7QUFDeEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixhQUFhO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3V0aWwvZ3B1LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLyc7XG5pbXBvcnQgeyBnZXRFZGdlVGVybWluYWwgfSBmcm9tICcuL21hdGgnO1xuLyoqXG4gKiDlsIYgbnVtYmVyIHwgRnVuY3Rpb24g57G75Z6L55qE5Y+C5pWw6L2s5o2i5Li6IHJldHVybiBudW1iZXIg55qEIEZ1bmN0aW9uXG4gKiBAcGFyYW0gIHtudW1iZXIgfCBGdW5jdGlvbn0gIHZhbHVlIOmcgOimgeiiq+i9rOaNoueahOWAvFxuICogQHBhcmFtICB7bnVtYmVyfSAgZGVmYXVsdFYg6L+U5Zue5Ye95pWw55qE6buY6K6k6L+U5Zue5YC8XG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0g6L2s5o2i5ZCO55qE5Ye95pWwXG4gKi9cbmV4cG9ydCBjb25zdCBwcm9jY2Vzc1RvRnVuYyA9ICh2YWx1ZSwgZGVmYXVsdFYpID0+IHtcbiAgICBsZXQgZnVuYztcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIGZ1bmMgPSAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFYgfHwgMTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgIGZ1bmMgPSAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmdW5jID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBmdW5jO1xufTtcbi8qKlxuICog5bCG6IqC54K55ZKM6L655pWw5o2u6L2s5o2i5Li6IEdQVSDlj6/or7vnmoTmlbDnu4TjgILlubbov5Tlm54gbWF4RWRnZVBlclZldGV477yM5q+P5Liq6IqC54K55LiK5pyA5aSa55qE6L655pWwXG4gKiBAcGFyYW0gIHtOb2RlQ29uZmlnW119ICBub2RlcyDpnIDopoHooqvovazmjaLnmoTlgLxcbiAqIEBwYXJhbSAge0VkZ2VDb25maWdbXX0gIGVkZ2VzIOi/lOWbnuWHveaVsOeahOm7mOiupOi/lOWbnuWAvFxuICogQHJldHVybiB7T2JqZWN0fSDovazmjaLlkI7nmoTmlbDnu4Tlj4ogbWF4RWRnZVBlclZldGV4IOe7hOaIkOeahOWvueixoVxuICovXG5leHBvcnQgY29uc3QgYnVpbGRUZXh0dXJlRGF0YSA9IChub2RlcywgZWRnZXMpID0+IHtcbiAgICBjb25zdCBkYXRhQXJyYXkgPSBbXTtcbiAgICBjb25zdCBub2RlRGljdCA9IFtdO1xuICAgIGNvbnN0IG1hcElkUG9zID0ge307XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBuID0gbm9kZXNbaV07XG4gICAgICAgIG1hcElkUG9zW24uaWRdID0gaTtcbiAgICAgICAgZGF0YUFycmF5LnB1c2gobi54KTtcbiAgICAgICAgZGF0YUFycmF5LnB1c2gobi55KTtcbiAgICAgICAgZGF0YUFycmF5LnB1c2goMCk7XG4gICAgICAgIGRhdGFBcnJheS5wdXNoKDApO1xuICAgICAgICBub2RlRGljdC5wdXNoKFtdKTtcbiAgICB9XG4gICAgZm9yIChpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGUgPSBlZGdlc1tpXTtcbiAgICAgICAgY29uc3Qgc291cmNlID0gZ2V0RWRnZVRlcm1pbmFsKGUsICdzb3VyY2UnKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGUsICd0YXJnZXQnKTtcbiAgICAgICAgbm9kZURpY3RbbWFwSWRQb3Nbc291cmNlXV0ucHVzaChtYXBJZFBvc1t0YXJnZXRdKTtcbiAgICAgICAgbm9kZURpY3RbbWFwSWRQb3NbdGFyZ2V0XV0ucHVzaChtYXBJZFBvc1tzb3VyY2VdKTtcbiAgICB9XG4gICAgbGV0IG1heEVkZ2VQZXJWZXRleCA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGRhdGFBcnJheS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRlc3RzID0gbm9kZURpY3RbaV07XG4gICAgICAgIGNvbnN0IGxlbiA9IGRlc3RzLmxlbmd0aDtcbiAgICAgICAgZGF0YUFycmF5W2kgKiA0ICsgMl0gPSBvZmZzZXQ7XG4gICAgICAgIGRhdGFBcnJheVtpICogNCArIDNdID0gZGVzdHMubGVuZ3RoO1xuICAgICAgICBtYXhFZGdlUGVyVmV0ZXggPSBNYXRoLm1heChtYXhFZGdlUGVyVmV0ZXgsIGRlc3RzLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgIGNvbnN0IGRlc3QgPSBkZXN0c1tqXTtcbiAgICAgICAgICAgIGRhdGFBcnJheS5wdXNoKCtkZXN0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB3aGlsZSAoZGF0YUFycmF5Lmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICAgICAgZGF0YUFycmF5LnB1c2goMCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1heEVkZ2VQZXJWZXRleCxcbiAgICAgICAgYXJyYXk6IG5ldyBGbG9hdDMyQXJyYXkoZGF0YUFycmF5KSxcbiAgICB9O1xufTtcbi8qKlxuKiDlsIboioLngrnlkozovrnmlbDmja7ovazmjaLkuLogR1BVIOWPr+ivu+eahOaVsOe7hO+8jOavj+adoei+ueW4puacieS4gOS4quWxnuaAp+OAguW5tui/lOWbniBtYXhFZGdlUGVyVmV0ZXjvvIzmr4/kuKroioLngrnkuIrmnIDlpJrnmoTovrnmlbBcbiogQHBhcmFtICB7Tm9kZUNvbmZpZ1tdfSAgbm9kZXMg6IqC54K55pWw57uEXG4qIEBwYXJhbSAge0VkZ2VDb25maWdbXX0gIGVkZ2VzIOi+ueaVsOe7hFxuKiBAcGFyYW0gIHtGdW5jdGlvbn0gIGF0dHJzIOivu+WPlui+ueWxnuaAp+eahOWHveaVsFxuKiBAcmV0dXJuIHtPYmplY3R9IOi9rOaNouWQjueahOaVsOe7hOWPiiBtYXhFZGdlUGVyVmV0ZXgg57uE5oiQ55qE5a+56LGhXG4qL1xuLy8gZXhwb3J0IGNvbnN0IGJ1aWxkVGV4dHVyZURhdGFXaXRoT25lRWRnZUF0dHIgPSAobm9kZXM6IE91dE5vZGVbXSwgZWRnZXM6IEVkZ2VbXSwgYXR0cnM6IEZ1bmN0aW9uKToge1xuLy8gICBhcnJheTogRmxvYXQzMkFycmF5LFxuLy8gICBtYXhFZGdlUGVyVmV0ZXg6IG51bWJlclxuLy8gfSA9PiB7XG4vLyAgIGNvbnN0IGRhdGFBcnJheSA9IFtdO1xuLy8gICBjb25zdCBub2RlRGljdDogYW55ID0gW107XG4vLyAgIGNvbnN0IG1hcElkUG9zOiBJbmRleE1hcCA9IHt9O1xuLy8gICBsZXQgaSA9IDA7XG4vLyAgIGZvciAoaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuLy8gICAgICAgY29uc3QgbiA9IG5vZGVzW2ldO1xuLy8gICAgICAgbWFwSWRQb3Nbbi5pZF0gPSBpO1xuLy8gICAgICAgZGF0YUFycmF5LnB1c2gobi54KTtcbi8vICAgICAgIGRhdGFBcnJheS5wdXNoKG4ueSk7XG4vLyAgICAgICBkYXRhQXJyYXkucHVzaCgwKTtcbi8vICAgICAgIGRhdGFBcnJheS5wdXNoKDApO1xuLy8gICAgICAgbm9kZURpY3QucHVzaChbXSk7XG4vLyAgIH1cbi8vICAgZm9yIChpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4vLyAgICAgICBjb25zdCBlID0gZWRnZXNbaV07XG4vLyAgICAgICBub2RlRGljdFttYXBJZFBvc1tlLnNvdXJjZV1dLnB1c2gobWFwSWRQb3NbZS50YXJnZXRdKTtcbi8vICAgICAgIG5vZGVEaWN0W21hcElkUG9zW2Uuc291cmNlXV0ucHVzaChhdHRycyhlKSk7IC8vIOeQhuaDs+i+uemVv++8jOWQjue7reWPr+S7peaUueaIkOavj+adoei+ueS4jeWQjFxuLy8gICAgICAgbm9kZURpY3RbbWFwSWRQb3NbZS50YXJnZXRdXS5wdXNoKG1hcElkUG9zW2Uuc291cmNlXSk7XG4vLyAgICAgICBub2RlRGljdFttYXBJZFBvc1tlLnRhcmdldF1dLnB1c2goYXR0cnMoZSkpOyAvLyDnkIbmg7Povrnplb/vvIzlkI7nu63lj6/ku6XmlLnmiJDmr4/mnaHovrnkuI3lkIxcbi8vICAgfVxuLy8gICBsZXQgbWF4RWRnZVBlclZldGV4ID0gMDtcbi8vICAgZm9yIChpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4vLyAgICAgICBjb25zdCBvZmZzZXQ6IG51bWJlciA9IGRhdGFBcnJheS5sZW5ndGg7XG4vLyAgICAgICBjb25zdCBkZXN0cyA9IG5vZGVEaWN0W2ldOyAvLyBkZXN0IOS4reiKgueCuSBpZCDkuI7ovrnplb/pl7TpmpTlrZjlgqjvvIzljbPkuIDkvY3oioLngrkgaWTvvIzkuIDkvY3ovrnplb/igKbigKZcbi8vICAgICAgIGNvbnN0IGxlbiA9IGRlc3RzLmxlbmd0aDtcbi8vICAgICAgIGRhdGFBcnJheVtpICogNCArIDJdID0gb2Zmc2V0O1xuLy8gICAgICAgZGF0YUFycmF5W2kgKiA0ICsgM10gPSBsZW4gLyAyOyAvLyDnrKzlm5vkvY3lrZjlgqjkuI7or6XoioLngrnnm7jlhbPnmoTmiYDmnInoioLngrnkuKrmlbBcbi8vICAgICAgIG1heEVkZ2VQZXJWZXRleCA9IE1hdGgubWF4KG1heEVkZ2VQZXJWZXRleCwgbGVuIC8gMik7XG4vLyAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxlbjsgKytqKSB7XG4vLyAgICAgICAgICAgY29uc3QgZGVzdCA9IGRlc3RzW2pdO1xuLy8gICAgICAgICAgIGRhdGFBcnJheS5wdXNoKCtkZXN0KTtcbi8vICAgICAgIH1cbi8vICAgfVxuLy8gICAvLyDkuI3mmK8gNCDnmoTlgI3mlbDvvIzloavlhYUgMFxuLy8gICB3aGlsZSAoZGF0YUFycmF5Lmxlbmd0aCAlIDQgIT09IDApIHtcbi8vICAgICAgIGRhdGFBcnJheS5wdXNoKDApO1xuLy8gICB9XG4vLyAgIHJldHVybiB7XG4vLyAgICAgICBhcnJheTogbmV3IEZsb2F0MzJBcnJheShkYXRhQXJyYXkpLFxuLy8gICAgICAgbWF4RWRnZVBlclZldGV4XG4vLyAgIH1cbi8vIH1cbi8qKlxuKiDlsIboioLngrnlkozovrnmlbDmja7ovazmjaLkuLogR1BVIOWPr+ivu+eahOaVsOe7hO+8jOavj+adoei+ueW4puacieS4gOS4quS7peS4iuWxnuaAp+OAguW5tui/lOWbniBtYXhFZGdlUGVyVmV0ZXjvvIzmr4/kuKroioLngrnkuIrmnIDlpJrnmoTovrnmlbBcbiogQHBhcmFtICB7Tm9kZUNvbmZpZ1tdfSAgbm9kZXMg6IqC54K55pWw57uEXG4qIEBwYXJhbSAge0VkZ2VDb25maWdbXX0gIGVkZ2VzIOi+ueaVsOe7hFxuKiBAcGFyYW0gIHtGdW5jdGlvbn0gIGF0dHJzIOivu+WPlui+ueWxnuaAp+eahOWHveaVsFxuKiBAcmV0dXJuIHtPYmplY3R9IOi9rOaNouWQjueahOaVsOe7hOWPiiBtYXhFZGdlUGVyVmV0ZXgg57uE5oiQ55qE5a+56LGhXG4qL1xuZXhwb3J0IGNvbnN0IGJ1aWxkVGV4dHVyZURhdGFXaXRoVHdvRWRnZUF0dHIgPSAobm9kZXMsIGVkZ2VzLCBhdHRyczEsIGF0dHJzMikgPT4ge1xuICAgIGNvbnN0IGRhdGFBcnJheSA9IFtdO1xuICAgIGNvbnN0IG5vZGVEaWN0ID0gW107XG4gICAgY29uc3QgbWFwSWRQb3MgPSB7fTtcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG4gPSBub2Rlc1tpXTtcbiAgICAgICAgbWFwSWRQb3Nbbi5pZF0gPSBpO1xuICAgICAgICBkYXRhQXJyYXkucHVzaChuLngpO1xuICAgICAgICBkYXRhQXJyYXkucHVzaChuLnkpO1xuICAgICAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICAgICAgZGF0YUFycmF5LnB1c2goMCk7XG4gICAgICAgIG5vZGVEaWN0LnB1c2goW10pO1xuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZSA9IGVkZ2VzW2ldO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3NvdXJjZScpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3RhcmdldCcpO1xuICAgICAgICBub2RlRGljdFttYXBJZFBvc1tzb3VyY2VdXS5wdXNoKG1hcElkUG9zW3RhcmdldF0pO1xuICAgICAgICBub2RlRGljdFttYXBJZFBvc1tzb3VyY2VdXS5wdXNoKGF0dHJzMShlKSk7XG4gICAgICAgIG5vZGVEaWN0W21hcElkUG9zW3NvdXJjZV1dLnB1c2goYXR0cnMyKGUpKTtcbiAgICAgICAgbm9kZURpY3RbbWFwSWRQb3Nbc291cmNlXV0ucHVzaCgwKTtcbiAgICAgICAgbm9kZURpY3RbbWFwSWRQb3NbdGFyZ2V0XV0ucHVzaChtYXBJZFBvc1tzb3VyY2VdKTtcbiAgICAgICAgbm9kZURpY3RbbWFwSWRQb3NbdGFyZ2V0XV0ucHVzaChhdHRyczEoZSkpO1xuICAgICAgICBub2RlRGljdFttYXBJZFBvc1t0YXJnZXRdXS5wdXNoKGF0dHJzMihlKSk7XG4gICAgICAgIG5vZGVEaWN0W21hcElkUG9zW3RhcmdldF1dLnB1c2goMCk7XG4gICAgfVxuICAgIGxldCBtYXhFZGdlUGVyVmV0ZXggPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBkYXRhQXJyYXkubGVuZ3RoO1xuICAgICAgICBjb25zdCBkZXN0cyA9IG5vZGVEaWN0W2ldOyAvLyBkZXN0IOS4reiKgueCuSBpZCDkuI7ovrnplb/pl7TpmpTlrZjlgqjvvIzljbPkuIDkvY3oioLngrkgaWTvvIzkuIDkvY3ovrnplb/igKbigKZcbiAgICAgICAgY29uc3QgbGVuID0gZGVzdHMubGVuZ3RoO1xuICAgICAgICAvLyBkYXRhQXJyYXlbaSAqIDQgKyAyXSA9IG9mZnNldDtcbiAgICAgICAgLy8gZGF0YUFycmF5W2kgKiA0ICsgM10gPSBsZW4gLyA0OyAvLyDnrKzlm5vkvY3lrZjlgqjkuI7or6XoioLngrnnm7jlhbPnmoTmiYDmnInoioLngrnkuKrmlbBcbiAgICAgICAgLy8gcGFjayBvZmZzZXQgJiBsZW5ndGggaW50byBmbG9hdDMyOiBvZmZzZXQgMjBiaXQsIGxlbmd0aCAxMmJpdFxuICAgICAgICBkYXRhQXJyYXlbaSAqIDQgKyAyXSA9IG9mZnNldCArIDEwNDg1NzYgKiBsZW4gLyA0O1xuICAgICAgICBkYXRhQXJyYXlbaSAqIDQgKyAzXSA9IDA7IC8vIOesrOWbm+S9jeWtmOWCqOS4juS4iuS4gOasoeeahOi3neemu+W3ruWAvFxuICAgICAgICBtYXhFZGdlUGVyVmV0ZXggPSBNYXRoLm1heChtYXhFZGdlUGVyVmV0ZXgsIGxlbiAvIDQpO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkZXN0ID0gZGVzdHNbal07XG4gICAgICAgICAgICBkYXRhQXJyYXkucHVzaCgrZGVzdCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8g5LiN5pivIDQg55qE5YCN5pWw77yM5aGr5YWFIDBcbiAgICB3aGlsZSAoZGF0YUFycmF5Lmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICAgICAgZGF0YUFycmF5LnB1c2goMCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1heEVkZ2VQZXJWZXRleCxcbiAgICAgICAgYXJyYXk6IG5ldyBGbG9hdDMyQXJyYXkoZGF0YUFycmF5KSxcbiAgICB9O1xufTtcbi8qKlxuKiB0cmFuc2Zvcm0gdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb2Ygbm9kZXMgb3IgZWRnZXMgdG8gYSB0ZXh0dXJlIGFycmF5XG4qIEBwYXJhbSAge3N0cmluZ1tdfSAgYXR0cmlidXRlTmFtZXMgYXR0cmlidXRlcycgbmFtZSB0byBiZSByZWFkIGZyb20gaXRlbXMgYW5kIHB1dCBpbnRvIG91dHB1dCBhcnJheVxuKiBAcGFyYW0gIHtNb2RlbENvbmZpZ1tdfSAgaXRlbXMgdGhlIGl0ZW1zIHRvIGJlIHJlYWRcbiogQHJldHVybiB7RmxvYXQzMkFycmF5fSB0aGUgYXR0cmlidXRlcycgdmFsdWUgYXJyYXkgdG8gYmUgcmVhZCBieSBHUFVcbiovXG5leHBvcnQgY29uc3QgYXR0cmlidXRlc1RvVGV4dHVyZURhdGEgPSAoYXR0cmlidXRlTmFtZXMsIGl0ZW1zKSA9PiB7XG4gICAgY29uc3QgZGF0YUFycmF5ID0gW107XG4gICAgY29uc3QgYXR0cmlidXRlTnVtID0gYXR0cmlidXRlTmFtZXMubGVuZ3RoO1xuICAgIGNvbnN0IGF0dHJpYnV0dGVTdHJpbmdNYXAgPSB7fTtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGF0dHJpYnV0ZU5hbWVzLmZvckVhY2goKG5hbWUsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dHRlU3RyaW5nTWFwW2l0ZW1bbmFtZV1dID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dHRlU3RyaW5nTWFwW2l0ZW1bbmFtZV1dID0gT2JqZWN0LmtleXMoYXR0cmlidXR0ZVN0cmluZ01hcCkubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YUFycmF5LnB1c2goYXR0cmlidXR0ZVN0cmluZ01hcFtpdGVtW25hbWVdXSk7XG4gICAgICAgICAgICAvLyBpbnN1cmUgZWFjaCBub2RlJ3MgYXR0cmlidXRlcyB0YWtlIGludGVyIG51bWJlciBvZiBncmlkc1xuICAgICAgICAgICAgaWYgKGkgPT09IGF0dHJpYnV0ZU51bSAtIDEpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoZGF0YUFycmF5Lmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YUFycmF5LnB1c2goMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBhcnJheTogbmV3IEZsb2F0MzJBcnJheShkYXRhQXJyYXkpLFxuICAgICAgICBjb3VudDogT2JqZWN0LmtleXMoYXR0cmlidXR0ZVN0cmluZ01hcCkubGVuZ3RoXG4gICAgfTtcbn07XG4vKipcbiogdHJhbnNmb3JtIHRoZSBudW1iZXIgYXJyYXkgZm9ybWF0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb2Ygbm9kZXMgb3IgZWRnZXMgdG8gYSB0ZXh0dXJlIGFycmF5XG4qIEBwYXJhbSAge3N0cmluZ1tdfSAgYXR0cmlidXRlTmFtZXMgYXR0cmlidXRlcycgbmFtZSB0byBiZSByZWFkIGZyb20gaXRlbXMgYW5kIHB1dCBpbnRvIG91dHB1dCBhcnJheVxuKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IHRoZSBhdHRyaWJ1dGVzJyB2YWx1ZSBhcnJheSB0byBiZSByZWFkIGJ5IEdQVVxuKi9cbmV4cG9ydCBjb25zdCBhcnJheVRvVGV4dHVyZURhdGEgPSAodmFsdWVBcnJheXMpID0+IHtcbiAgICBjb25zdCBkYXRhQXJyYXkgPSBbXTtcbiAgICBjb25zdCBhdHRyaWJ1dGVOdW0gPSB2YWx1ZUFycmF5cy5sZW5ndGg7XG4gICAgY29uc3QgaXRlbU51bSA9IHZhbHVlQXJyYXlzWzBdLmxlbmd0aDtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGl0ZW1OdW07IGorKykge1xuICAgICAgICB2YWx1ZUFycmF5cy5mb3JFYWNoKCh2YWx1ZUFycmF5LCBpKSA9PiB7XG4gICAgICAgICAgICBkYXRhQXJyYXkucHVzaCh2YWx1ZUFycmF5W2pdKTtcbiAgICAgICAgICAgIC8vIGluc3VyZSBlYWNoIG5vZGUncyBhdHRyaWJ1dGVzIHRha2UgaW50ZXIgbnVtYmVyIG9mIGdyaWRzXG4gICAgICAgICAgICBpZiAoaSA9PT0gYXR0cmlidXRlTnVtIC0gMSkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChkYXRhQXJyYXkubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEZsb2F0MzJBcnJheShkYXRhQXJyYXkpO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdwdS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/util/gpu.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/util/index.js": /*!****************************************************!*\ !*** ./node_modules/@antv/layout/es/util/index.js ***! \****************************************************/ /*! exports provided: isString, camelize, isArray, isNumber, isNaN, toNumber, getEdgeTerminal, getDegree, floydWarshall, getAdjMatrix, scaleMatrix, traverseTreeUp, isObject, clone, isFunction */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./string */ \"./node_modules/@antv/layout/es/util/string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _string__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"camelize\", function() { return _string__WEBPACK_IMPORTED_MODULE_0__[\"camelize\"]; });\n\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ \"./node_modules/@antv/layout/es/util/array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _array__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"]; });\n\n/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./number */ \"./node_modules/@antv/layout/es/util/number.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return _number__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return _number__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return _number__WEBPACK_IMPORTED_MODULE_2__[\"toNumber\"]; });\n\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math */ \"./node_modules/@antv/layout/es/util/math.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEdgeTerminal\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"getEdgeTerminal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"getDegree\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"floydWarshall\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"getAdjMatrix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleMatrix\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"scaleMatrix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"traverseTreeUp\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"traverseTreeUp\"]; });\n\n/* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./object */ \"./node_modules/@antv/layout/es/util/object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return _object__WEBPACK_IMPORTED_MODULE_4__[\"isObject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return _object__WEBPACK_IMPORTED_MODULE_4__[\"clone\"]; });\n\n/* harmony import */ var _function__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./function */ \"./node_modules/@antv/layout/es/util/function.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _function__WEBPACK_IMPORTED_MODULE_5__[\"isFunction\"]; });\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3V0aWwvaW5kZXguanM/MzUyMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QjtBQUNEO0FBQ0M7QUFDRjtBQUNFO0FBQ0U7QUFDM0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3V0aWwvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3N0cmluZyc7XG5leHBvcnQgKiBmcm9tICcuL2FycmF5JztcbmV4cG9ydCAqIGZyb20gJy4vbnVtYmVyJztcbmV4cG9ydCAqIGZyb20gJy4vbWF0aCc7XG5leHBvcnQgKiBmcm9tICcuL29iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9uJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/util/index.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/util/math.js": /*!***************************************************!*\ !*** ./node_modules/@antv/layout/es/util/math.js ***! \***************************************************/ /*! exports provided: getEdgeTerminal, getDegree, floydWarshall, getAdjMatrix, scaleMatrix, traverseTreeUp */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEdgeTerminal\", function() { return getEdgeTerminal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return getDegree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return floydWarshall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return getAdjMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleMatrix\", function() { return scaleMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverseTreeUp\", function() { return traverseTreeUp; });\n/* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./object */ \"./node_modules/@antv/layout/es/util/object.js\");\n\nconst getEdgeTerminal = (edge, type) => {\n const terminal = edge[type];\n if (Object(_object__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(terminal)) {\n return terminal.cell;\n }\n return terminal;\n};\nconst getDegree = (n, nodeIdxMap, edges) => {\n const degrees = [];\n for (let i = 0; i < n; i++) {\n degrees[i] = 0;\n }\n if (!edges)\n return degrees;\n edges.forEach((e) => {\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n if (source) {\n degrees[nodeIdxMap[source]] += 1;\n }\n if (target) {\n degrees[nodeIdxMap[target]] += 1;\n }\n });\n return degrees;\n};\nconst floydWarshall = (adjMatrix) => {\n // initialize\n const dist = [];\n const size = adjMatrix.length;\n for (let i = 0; i < size; i += 1) {\n dist[i] = [];\n for (let j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n }\n else if (adjMatrix[i][j] === 0 || !adjMatrix[i][j]) {\n dist[i][j] = Infinity;\n }\n else {\n dist[i][j] = adjMatrix[i][j];\n }\n }\n }\n // floyd\n for (let k = 0; k < size; k += 1) {\n for (let i = 0; i < size; i += 1) {\n for (let j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n return dist;\n};\nconst getAdjMatrix = (data, directed) => {\n const { nodes, edges } = data;\n const matrix = [];\n // map node with index in data.nodes\n const nodeMap = {};\n if (!nodes) {\n throw new Error('invalid nodes data!');\n }\n if (nodes) {\n nodes.forEach((node, i) => {\n nodeMap[node.id] = i;\n const row = [];\n matrix.push(row);\n });\n }\n if (edges) {\n edges.forEach((e) => {\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n const sIndex = nodeMap[source];\n const tIndex = nodeMap[target];\n matrix[sIndex][tIndex] = 1;\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n return matrix;\n};\n/**\n * scale matrix\n * @param matrix [ [], [], [] ]\n * @param ratio\n */\nconst scaleMatrix = (matrix, ratio) => {\n const result = [];\n matrix.forEach((row) => {\n const newRow = [];\n row.forEach((v) => {\n newRow.push(v * ratio);\n });\n result.push(newRow);\n });\n return result;\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\nconst traverseUp = (data, fn) => {\n if (data && data.children) {\n for (let i = data.children.length - 1; i >= 0; i--) {\n if (!traverseUp(data.children[i], fn))\n return;\n }\n }\n if (!fn(data)) {\n return false;\n }\n return true;\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\nconst traverseTreeUp = (data, fn) => {\n if (typeof fn !== 'function') {\n return;\n }\n traverseUp(data, fn);\n};\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3V0aWwvbWF0aC5qcz9kOTFlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0M7QUFDN0I7QUFDUDtBQUNBLFFBQVEsd0RBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0I7QUFDQSx1QkFBdUIsVUFBVTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3Qix1QkFBdUIsVUFBVTtBQUNqQywyQkFBMkIsVUFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxXQUFXLGVBQWU7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3V0aWwvbWF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi9vYmplY3QnO1xuZXhwb3J0IGNvbnN0IGdldEVkZ2VUZXJtaW5hbCA9IChlZGdlLCB0eXBlKSA9PiB7XG4gICAgY29uc3QgdGVybWluYWwgPSBlZGdlW3R5cGVdO1xuICAgIGlmIChpc09iamVjdCh0ZXJtaW5hbCkpIHtcbiAgICAgICAgcmV0dXJuIHRlcm1pbmFsLmNlbGw7XG4gICAgfVxuICAgIHJldHVybiB0ZXJtaW5hbDtcbn07XG5leHBvcnQgY29uc3QgZ2V0RGVncmVlID0gKG4sIG5vZGVJZHhNYXAsIGVkZ2VzKSA9PiB7XG4gICAgY29uc3QgZGVncmVlcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGRlZ3JlZXNbaV0gPSAwO1xuICAgIH1cbiAgICBpZiAoIWVkZ2VzKVxuICAgICAgICByZXR1cm4gZGVncmVlcztcbiAgICBlZGdlcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChlLCAnc291cmNlJyk7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGdldEVkZ2VUZXJtaW5hbChlLCAndGFyZ2V0Jyk7XG4gICAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgICAgIGRlZ3JlZXNbbm9kZUlkeE1hcFtzb3VyY2VdXSArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGRlZ3JlZXNbbm9kZUlkeE1hcFt0YXJnZXRdXSArPSAxO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRlZ3JlZXM7XG59O1xuZXhwb3J0IGNvbnN0IGZsb3lkV2Fyc2hhbGwgPSAoYWRqTWF0cml4KSA9PiB7XG4gICAgLy8gaW5pdGlhbGl6ZVxuICAgIGNvbnN0IGRpc3QgPSBbXTtcbiAgICBjb25zdCBzaXplID0gYWRqTWF0cml4Lmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgICAgICBkaXN0W2ldID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2l6ZTsgaiArPSAxKSB7XG4gICAgICAgICAgICBpZiAoaSA9PT0gaikge1xuICAgICAgICAgICAgICAgIGRpc3RbaV1bal0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYWRqTWF0cml4W2ldW2pdID09PSAwIHx8ICFhZGpNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgICAgICAgICBkaXN0W2ldW2pdID0gSW5maW5pdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXN0W2ldW2pdID0gYWRqTWF0cml4W2ldW2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGZsb3lkXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBzaXplOyBrICs9IDEpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2l6ZTsgaiArPSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RbaV1bal0gPiBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXSkge1xuICAgICAgICAgICAgICAgICAgICBkaXN0W2ldW2pdID0gZGlzdFtpXVtrXSArIGRpc3Rba11bal07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkaXN0O1xufTtcbmV4cG9ydCBjb25zdCBnZXRBZGpNYXRyaXggPSAoZGF0YSwgZGlyZWN0ZWQpID0+IHtcbiAgICBjb25zdCB7IG5vZGVzLCBlZGdlcyB9ID0gZGF0YTtcbiAgICBjb25zdCBtYXRyaXggPSBbXTtcbiAgICAvLyBtYXAgbm9kZSB3aXRoIGluZGV4IGluIGRhdGEubm9kZXNcbiAgICBjb25zdCBub2RlTWFwID0ge307XG4gICAgaWYgKCFub2Rlcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbm9kZXMgZGF0YSEnKTtcbiAgICB9XG4gICAgaWYgKG5vZGVzKSB7XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gW107XG4gICAgICAgICAgICBtYXRyaXgucHVzaChyb3cpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGVkZ2VzKSB7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChlLCAnc291cmNlJyk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3RhcmdldCcpO1xuICAgICAgICAgICAgY29uc3Qgc0luZGV4ID0gbm9kZU1hcFtzb3VyY2VdO1xuICAgICAgICAgICAgY29uc3QgdEluZGV4ID0gbm9kZU1hcFt0YXJnZXRdO1xuICAgICAgICAgICAgbWF0cml4W3NJbmRleF1bdEluZGV4XSA9IDE7XG4gICAgICAgICAgICBpZiAoIWRpcmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4W3RJbmRleF1bc0luZGV4XSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufTtcbi8qKlxuICogc2NhbGUgbWF0cml4XG4gKiBAcGFyYW0gbWF0cml4IFsgW10sIFtdLCBbXSBdXG4gKiBAcGFyYW0gcmF0aW9cbiAqL1xuZXhwb3J0IGNvbnN0IHNjYWxlTWF0cml4ID0gKG1hdHJpeCwgcmF0aW8pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBtYXRyaXguZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1JvdyA9IFtdO1xuICAgICAgICByb3cuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgbmV3Um93LnB1c2godiAqIHJhdGlvKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKG5ld1Jvdyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG4vKipcbiAqIGRlcHRoIGZpcnN0IHRyYXZlcnNlLCBmcm9tIGxlYXZlcyB0byByb290LCBjaGlsZHJlbiBpbiBpbnZlcnNlIG9yZGVyXG4gKiAgaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuY29uc3QgdHJhdmVyc2VVcCA9IChkYXRhLCBmbikgPT4ge1xuICAgIGlmIChkYXRhICYmIGRhdGEuY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGRhdGEuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghdHJhdmVyc2VVcChkYXRhLmNoaWxkcmVuW2ldLCBmbikpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICghZm4oZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIGRlcHRoIGZpcnN0IHRyYXZlcnNlLCBmcm9tIGxlYXZlcyB0byByb290LCBjaGlsZHJlbiBpbiBpbnZlcnNlIG9yZGVyXG4gKiBpZiB0aGUgZm4gcmV0dXJucyBmYWxzZSwgdGVybWluYXRlIHRoZSB0cmF2ZXJzZVxuICovXG5leHBvcnQgY29uc3QgdHJhdmVyc2VUcmVlVXAgPSAoZGF0YSwgZm4pID0+IHtcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJhdmVyc2VVcChkYXRhLCBmbik7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/util/math.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/util/number.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/layout/es/util/number.js ***! \*****************************************************/ /*! exports provided: isNumber, isNaN, toNumber */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return isNaN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\nconst isNumber = (val) => typeof val === 'number';\nconst isNaN = (num) => Number.isNaN(Number(num));\nconst toNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\n//# sourceMappingURL=number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3V0aWwvbnVtYmVyLmpzP2I2ZTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBTztBQUNBO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvdXRpbC9udW1iZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNOdW1iZXIgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJztcbmV4cG9ydCBjb25zdCBpc05hTiA9IChudW0pID0+IE51bWJlci5pc05hTihOdW1iZXIobnVtKSk7XG5leHBvcnQgY29uc3QgdG9OdW1iZXIgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgbiA9IHBhcnNlRmxvYXQodmFsKTtcbiAgICByZXR1cm4gaXNOYU4obikgPyB2YWwgOiBuO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW51bWJlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/util/number.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/util/object.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/layout/es/util/object.js ***! \*****************************************************/ /*! exports provided: isObject, clone */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\nconst isObject = (val) => val !== null && typeof val === 'object';\nconst clone = (target) => {\n if (target === null) {\n return target;\n }\n if (target instanceof Date) {\n return new Date(target.getTime());\n }\n if (target instanceof Array) {\n const cp = [];\n target.forEach((v) => {\n cp.push(v);\n });\n return cp.map((n) => clone(n));\n }\n if (typeof target === 'object' && target !== {}) {\n const cp = Object.assign({}, target);\n Object.keys(cp).forEach((k) => {\n cp[k] = clone(cp[k]);\n });\n return cp;\n }\n return target;\n};\n//# sourceMappingURL=object.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3V0aWwvb2JqZWN0LmpzPzk1N2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU87QUFDQTtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9sYXlvdXQvZXMvdXRpbC9vYmplY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNPYmplY3QgPSAodmFsKSA9PiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XG5leHBvcnQgY29uc3QgY2xvbmUgPSAodGFyZ2V0KSA9PiB7XG4gICAgaWYgKHRhcmdldCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGFyZ2V0LmdldFRpbWUoKSk7XG4gICAgfVxuICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBjb25zdCBjcCA9IFtdO1xuICAgICAgICB0YXJnZXQuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgY3AucHVzaCh2KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjcC5tYXAoKG4pID0+IGNsb25lKG4pKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmIHRhcmdldCAhPT0ge30pIHtcbiAgICAgICAgY29uc3QgY3AgPSBPYmplY3QuYXNzaWduKHt9LCB0YXJnZXQpO1xuICAgICAgICBPYmplY3Qua2V5cyhjcCkuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgY3Bba10gPSBjbG9uZShjcFtrXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY3A7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b2JqZWN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/util/object.js\n"); /***/ }), /***/ "./node_modules/@antv/layout/es/util/string.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/layout/es/util/string.js ***! \*****************************************************/ /*! exports provided: isString, camelize */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"camelize\", function() { return camelize; });\nconst isString = (val) => typeof val === 'string';\nconst cacheStringFunction = (fn) => {\n const cache = Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\n});\n// export const capitalize = cacheStringFunction(\n// (str: string) => str.charAt(0).toUpperCase() + str.slice(1),\n// )\n//# sourceMappingURL=string.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbGF5b3V0L2VzL3V0aWwvc3RyaW5nLmpzPzYwNWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L2xheW91dC9lcy91dGlsL3N0cmluZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBpc1N0cmluZyA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xuY29uc3QgY2FjaGVTdHJpbmdGdW5jdGlvbiA9IChmbikgPT4ge1xuICAgIGNvbnN0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICByZXR1cm4gKChzdHIpID0+IHtcbiAgICAgICAgY29uc3QgaGl0ID0gY2FjaGVbc3RyXTtcbiAgICAgICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpO1xuICAgIH0pO1xufTtcbmNvbnN0IGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XG5leHBvcnQgY29uc3QgY2FtZWxpemUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgKF8sIGMpID0+IChjID8gYy50b1VwcGVyQ2FzZSgpIDogJycpKTtcbn0pO1xuLy8gZXhwb3J0IGNvbnN0IGNhcGl0YWxpemUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKFxuLy8gICAoc3RyOiBzdHJpbmcpID0+IHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKSxcbi8vIClcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0cmluZy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/layout/es/util/string.js\n"); /***/ }), /***/ "./node_modules/@antv/matrix-util/esm/ext.js": /*!***************************************************!*\ !*** ./node_modules/@antv/matrix-util/esm/ext.js ***! \***************************************************/ /*! exports provided: leftTranslate, leftRotate, leftScale, transform, direction, angleTo, vertical */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftTranslate\", function() { return leftTranslate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftRotate\", function() { return leftRotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftScale\", function() { return leftScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"direction\", function() { return direction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angleTo\", function() { return angleTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vertical\", function() { return vertical; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/**\n * @description 扩展方法,提供 gl-matrix 为提供的方法\n * */\n\nfunction leftTranslate(out, a, v) {\n var transMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromTranslation(transMat, v);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, transMat, a);\n}\nfunction leftRotate(out, a, rad) {\n var rotateMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromRotation(rotateMat, rad);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, rotateMat, a);\n}\nfunction leftScale(out, a, v) {\n var scaleMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromScaling(scaleMat, v);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, scaleMat, a);\n}\nfunction leftMultiply(out, a, a1) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, a1, a);\n}\n/**\n * 根据 actions 来做 transform\n * @param m\n * @param actions\n */\nfunction transform(m, actions) {\n var matrix = m ? [].concat(m) : [1, 0, 0, 0, 1, 0, 0, 0, 1];\n for (var i = 0, len = actions.length; i < len; i++) {\n var action = actions[i];\n switch (action[0]) {\n case 't':\n leftTranslate(matrix, matrix, [action[1], action[2]]);\n break;\n case 's':\n leftScale(matrix, matrix, [action[1], action[2]]);\n break;\n case 'r':\n leftRotate(matrix, matrix, action[1]);\n break;\n case 'm':\n leftMultiply(matrix, matrix, action[1]);\n break;\n default:\n break;\n }\n }\n return matrix;\n}\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nfunction direction(v1, v2) {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nfunction angleTo(v1, v2, direct) {\n var ang = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].angle(v1, v2);\n var angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n/**\n * 计算二维向量的垂直向量\n * @param out\n * @param v\n * @param flag\n */\nfunction vertical(out, v, flag) {\n if (flag) {\n out[0] = v[1];\n out[1] = -1 * v[0];\n }\n else {\n out[0] = -1 * v[1];\n out[1] = v[0];\n }\n return out;\n}\n//# sourceMappingURL=ext.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbWF0cml4LXV0aWwvZXNtL2V4dC5qcz9iZmU2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUN1QztBQUNoQztBQUNQO0FBQ0EsSUFBSSw4Q0FBSTtBQUNSLFdBQVcsOENBQUk7QUFDZjtBQUNPO0FBQ1A7QUFDQSxJQUFJLDhDQUFJO0FBQ1IsV0FBVyw4Q0FBSTtBQUNmO0FBQ087QUFDUDtBQUNBLElBQUksOENBQUk7QUFDUixXQUFXLDhDQUFJO0FBQ2Y7QUFDQTtBQUNBLFdBQVcsOENBQUk7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EseUNBQXlDLFNBQVM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCLFlBQVksUUFBUTtBQUNwQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsY0FBYyw4Q0FBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvbWF0cml4LXV0aWwvZXNtL2V4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIOaJqeWxleaWueazle+8jOaPkOS+myBnbC1tYXRyaXgg5Li65o+Q5L6b55qE5pa55rOVXG4gKiAqL1xuaW1wb3J0IHsgbWF0MywgdmVjMiB9IGZyb20gJ2dsLW1hdHJpeCc7XG5leHBvcnQgZnVuY3Rpb24gbGVmdFRyYW5zbGF0ZShvdXQsIGEsIHYpIHtcbiAgICB2YXIgdHJhbnNNYXQgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG4gICAgbWF0My5mcm9tVHJhbnNsYXRpb24odHJhbnNNYXQsIHYpO1xuICAgIHJldHVybiBtYXQzLm11bHRpcGx5KG91dCwgdHJhbnNNYXQsIGEpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxlZnRSb3RhdGUob3V0LCBhLCByYWQpIHtcbiAgICB2YXIgcm90YXRlTWF0ID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdO1xuICAgIG1hdDMuZnJvbVJvdGF0aW9uKHJvdGF0ZU1hdCwgcmFkKTtcbiAgICByZXR1cm4gbWF0My5tdWx0aXBseShvdXQsIHJvdGF0ZU1hdCwgYSk7XG59XG5leHBvcnQgZnVuY3Rpb24gbGVmdFNjYWxlKG91dCwgYSwgdikge1xuICAgIHZhciBzY2FsZU1hdCA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbiAgICBtYXQzLmZyb21TY2FsaW5nKHNjYWxlTWF0LCB2KTtcbiAgICByZXR1cm4gbWF0My5tdWx0aXBseShvdXQsIHNjYWxlTWF0LCBhKTtcbn1cbmZ1bmN0aW9uIGxlZnRNdWx0aXBseShvdXQsIGEsIGExKSB7XG4gICAgcmV0dXJuIG1hdDMubXVsdGlwbHkob3V0LCBhMSwgYSk7XG59XG4vKipcbiAqIOagueaNriBhY3Rpb25zIOadpeWBmiB0cmFuc2Zvcm1cbiAqIEBwYXJhbSBtXG4gKiBAcGFyYW0gYWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtKG0sIGFjdGlvbnMpIHtcbiAgICB2YXIgbWF0cml4ID0gbSA/IFtdLmNvbmNhdChtKSA6IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYWN0aW9ucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9uc1tpXTtcbiAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHtcbiAgICAgICAgICAgIGNhc2UgJ3QnOlxuICAgICAgICAgICAgICAgIGxlZnRUcmFuc2xhdGUobWF0cml4LCBtYXRyaXgsIFthY3Rpb25bMV0sIGFjdGlvblsyXV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgbGVmdFNjYWxlKG1hdHJpeCwgbWF0cml4LCBbYWN0aW9uWzFdLCBhY3Rpb25bMl1dKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3InOlxuICAgICAgICAgICAgICAgIGxlZnRSb3RhdGUobWF0cml4LCBtYXRyaXgsIGFjdGlvblsxXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICBsZWZ0TXVsdGlwbHkobWF0cml4LCBtYXRyaXgsIGFjdGlvblsxXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKipcbiAqIOWQkemHjyB2MSDliLAg5ZCR6YePIHYyIOWkueinkueahOaWueWQkVxuICogQHBhcmFtICB7QXJyYXl9IHYxIOWQkemHj1xuICogQHBhcmFtICB7QXJyYXl9IHYyIOWQkemHj1xuICogQHJldHVybiB7Qm9vbGVhbn0gPj0gMCDpobrml7bpkoggPCAwIOmAhuaXtumSiFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlyZWN0aW9uKHYxLCB2Mikge1xuICAgIHJldHVybiB2MVswXSAqIHYyWzFdIC0gdjJbMF0gKiB2MVsxXTtcbn1cbi8qKlxuICog5LqM57u05ZCR6YePIHYxIOWIsCB2MiDnmoTlpLnop5JcbiAqIEBwYXJhbSB2MVxuICogQHBhcmFtIHYyXG4gKiBAcGFyYW0gZGlyZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbmdsZVRvKHYxLCB2MiwgZGlyZWN0KSB7XG4gICAgdmFyIGFuZyA9IHZlYzIuYW5nbGUodjEsIHYyKTtcbiAgICB2YXIgYW5nbGVMYXJnZVRoYW5QSSA9IGRpcmVjdGlvbih2MSwgdjIpID49IDA7XG4gICAgaWYgKGRpcmVjdCkge1xuICAgICAgICBpZiAoYW5nbGVMYXJnZVRoYW5QSSkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguUEkgKiAyIC0gYW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhbmc7XG4gICAgfVxuICAgIGlmIChhbmdsZUxhcmdlVGhhblBJKSB7XG4gICAgICAgIHJldHVybiBhbmc7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLlBJICogMiAtIGFuZztcbn1cbi8qKlxuICog6K6h566X5LqM57u05ZCR6YeP55qE5Z6C55u05ZCR6YePXG4gKiBAcGFyYW0gb3V0XG4gKiBAcGFyYW0gdlxuICogQHBhcmFtIGZsYWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcnRpY2FsKG91dCwgdiwgZmxhZykge1xuICAgIGlmIChmbGFnKSB7XG4gICAgICAgIG91dFswXSA9IHZbMV07XG4gICAgICAgIG91dFsxXSA9IC0xICogdlswXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG91dFswXSA9IC0xICogdlsxXTtcbiAgICAgICAgb3V0WzFdID0gdlswXTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWV4dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/matrix-util/esm/ext.js\n"); /***/ }), /***/ "./node_modules/@antv/matrix-util/esm/index.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/matrix-util/esm/index.js ***! \*****************************************************/ /*! exports provided: mat3, vec2, vec3, ext */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mat3\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vec2\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vec3\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"]; });\n\n/* harmony import */ var _ext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ext */ \"./node_modules/@antv/matrix-util/esm/ext.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"ext\", function() { return _ext__WEBPACK_IMPORTED_MODULE_1__; });\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvbWF0cml4LXV0aWwvZXNtL2luZGV4LmpzP2U4OTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkM7QUFDaEI7QUFDSTtBQUNqQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9tYXRyaXgtdXRpbC9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXQzLCB2ZWMyLCB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCAqIGFzIGV4dCBmcm9tICcuL2V4dCc7XG5leHBvcnQgeyBtYXQzLCB2ZWMyLCB2ZWMzLCBleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/matrix-util/esm/index.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/catmull-rom-2-bezier.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/catmull-rom-2-bezier.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/@antv/path-util/node_modules/@antv/matrix-util/esm/index.js\");\n\nfunction smoothBezier(points, smooth, isLoop, constraint) {\n var cps = [];\n var hasConstraint = !!constraint;\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n var nextCp0;\n var cp1;\n var cp0;\n if (hasConstraint) {\n min = constraint[0], max = constraint[1];\n for (var i = 0, l = points.length; i < l; i += 1) {\n var point = points[i];\n min = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], min, point);\n max = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], max, point);\n }\n }\n for (var i = 0, len = points.length; i < len; i += 1) {\n var point = points[i];\n if (i === 0 && !isLoop) {\n cp0 = point;\n }\n else if (i === len - 1 && !isLoop) {\n cp1 = point;\n cps.push(cp0);\n cps.push(cp1);\n }\n else {\n var prevIdx = [i ? i - 1 : len - 1, i - 1][isLoop ? 0 : 1];\n prevPoint = points[prevIdx];\n nextPoint = points[isLoop ? (i + 1) % len : i + 1];\n var v = [0, 0];\n v = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].sub(v, nextPoint, prevPoint);\n v = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale(v, v, smooth);\n var d0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].distance(point, prevPoint);\n var d1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n var v1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], v, -d0);\n var v2 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], v, d1);\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], point, v1);\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], point, v2);\n // 下一个控制点必须在这个点和下一个点之间\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], nextCp0, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], nextPoint, point));\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], nextCp0, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], nextPoint, point));\n // 重新计算 cp1 的值\n v1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].sub([0, 0], nextCp0, point);\n v1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], v1, -d0 / d1);\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], point, v1);\n // 上一个控制点必须要在上一个点和这一个点之间\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], cp1, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], prevPoint, point));\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], cp1, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], prevPoint, point));\n // 重新计算 nextCp0 的值\n v2 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].sub([0, 0], point, cp1);\n v2 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], v2, d1 / d0);\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], point, v2);\n if (hasConstraint) {\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], cp1, min);\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], cp1, max);\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], nextCp0, min);\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], nextCp0, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n cp0 = nextCp0;\n }\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n}\n/**\n * create bezier spline from catmull rom spline\n * @param {Array} crp Catmull Rom Points\n * @param {boolean} z Spline is loop\n * @param {Array} constraint Constraint\n */\nfunction catmullRom2Bezier(crp, z, constraint) {\n if (z === void 0) { z = false; }\n if (constraint === void 0) { constraint = [\n [0, 0],\n [1, 1],\n ]; }\n var isLoop = !!z;\n var pointList = [];\n for (var i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([crp[i], crp[i + 1]]);\n }\n var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n var len = pointList.length;\n var d1 = [];\n var cp1;\n var cp2;\n var p;\n for (var i = 0; i < len - 1; i += 1) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n p = pointList[0];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n return d1;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (catmullRom2Bezier);\n//# sourceMappingURL=catmull-rom-2-bezier.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9jYXRtdWxsLXJvbS0yLWJlemllci5qcz83YTE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLE9BQU87QUFDakQ7QUFDQSxrQkFBa0Isc0RBQUk7QUFDdEIsa0JBQWtCLHNEQUFJO0FBQ3RCO0FBQ0E7QUFDQSx3Q0FBd0MsU0FBUztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFJO0FBQ3BCLGdCQUFnQixzREFBSTtBQUNwQixxQkFBcUIsc0RBQUk7QUFDekIscUJBQXFCLHNEQUFJO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQUk7QUFDekIscUJBQXFCLHNEQUFJO0FBQ3pCLGtCQUFrQixzREFBSTtBQUN0QixzQkFBc0Isc0RBQUk7QUFDMUI7QUFDQSxzQkFBc0Isc0RBQUksc0JBQXNCLHNEQUFJO0FBQ3BELHNCQUFzQixzREFBSSxzQkFBc0Isc0RBQUk7QUFDcEQ7QUFDQSxpQkFBaUIsc0RBQUk7QUFDckIsaUJBQWlCLHNEQUFJO0FBQ3JCLGtCQUFrQixzREFBSTtBQUN0QjtBQUNBLGtCQUFrQixzREFBSSxrQkFBa0Isc0RBQUk7QUFDNUMsa0JBQWtCLHNEQUFJLGtCQUFrQixzREFBSTtBQUM1QztBQUNBLGlCQUFpQixzREFBSTtBQUNyQixpQkFBaUIsc0RBQUk7QUFDckIsc0JBQXNCLHNEQUFJO0FBQzFCO0FBQ0Esc0JBQXNCLHNEQUFJO0FBQzFCLHNCQUFzQixzREFBSTtBQUMxQiwwQkFBMEIsc0RBQUk7QUFDOUIsMEJBQTBCLHNEQUFJO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsUUFBUTtBQUNuQixXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBLHVCQUF1QixXQUFXO0FBQ2xDLGdDQUFnQztBQUNoQztBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGFBQWE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxnRkFBaUIsRUFBQztBQUNqQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9wYXRoLXV0aWwvZXNtL2NhdG11bGwtcm9tLTItYmV6aWVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmVjMiB9IGZyb20gJ0BhbnR2L21hdHJpeC11dGlsJztcbmZ1bmN0aW9uIHNtb290aEJlemllcihwb2ludHMsIHNtb290aCwgaXNMb29wLCBjb25zdHJhaW50KSB7XG4gICAgdmFyIGNwcyA9IFtdO1xuICAgIHZhciBoYXNDb25zdHJhaW50ID0gISFjb25zdHJhaW50O1xuICAgIHZhciBwcmV2UG9pbnQ7XG4gICAgdmFyIG5leHRQb2ludDtcbiAgICB2YXIgbWluO1xuICAgIHZhciBtYXg7XG4gICAgdmFyIG5leHRDcDA7XG4gICAgdmFyIGNwMTtcbiAgICB2YXIgY3AwO1xuICAgIGlmIChoYXNDb25zdHJhaW50KSB7XG4gICAgICAgIG1pbiA9IGNvbnN0cmFpbnRbMF0sIG1heCA9IGNvbnN0cmFpbnRbMV07XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcG9pbnRzLmxlbmd0aDsgaSA8IGw7IGkgKz0gMSkge1xuICAgICAgICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgICAgICAgbWluID0gdmVjMi5taW4oWzAsIDBdLCBtaW4sIHBvaW50KTtcbiAgICAgICAgICAgIG1heCA9IHZlYzIubWF4KFswLCAwXSwgbWF4LCBwb2ludCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHBvaW50cy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgIGlmIChpID09PSAwICYmICFpc0xvb3ApIHtcbiAgICAgICAgICAgIGNwMCA9IHBvaW50O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGkgPT09IGxlbiAtIDEgJiYgIWlzTG9vcCkge1xuICAgICAgICAgICAgY3AxID0gcG9pbnQ7XG4gICAgICAgICAgICBjcHMucHVzaChjcDApO1xuICAgICAgICAgICAgY3BzLnB1c2goY3AxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBwcmV2SWR4ID0gW2kgPyBpIC0gMSA6IGxlbiAtIDEsIGkgLSAxXVtpc0xvb3AgPyAwIDogMV07XG4gICAgICAgICAgICBwcmV2UG9pbnQgPSBwb2ludHNbcHJldklkeF07XG4gICAgICAgICAgICBuZXh0UG9pbnQgPSBwb2ludHNbaXNMb29wID8gKGkgKyAxKSAlIGxlbiA6IGkgKyAxXTtcbiAgICAgICAgICAgIHZhciB2ID0gWzAsIDBdO1xuICAgICAgICAgICAgdiA9IHZlYzIuc3ViKHYsIG5leHRQb2ludCwgcHJldlBvaW50KTtcbiAgICAgICAgICAgIHYgPSB2ZWMyLnNjYWxlKHYsIHYsIHNtb290aCk7XG4gICAgICAgICAgICB2YXIgZDAgPSB2ZWMyLmRpc3RhbmNlKHBvaW50LCBwcmV2UG9pbnQpO1xuICAgICAgICAgICAgdmFyIGQxID0gdmVjMi5kaXN0YW5jZShwb2ludCwgbmV4dFBvaW50KTtcbiAgICAgICAgICAgIHZhciBzdW0gPSBkMCArIGQxO1xuICAgICAgICAgICAgaWYgKHN1bSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGQwIC89IHN1bTtcbiAgICAgICAgICAgICAgICBkMSAvPSBzdW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdjEgPSB2ZWMyLnNjYWxlKFswLCAwXSwgdiwgLWQwKTtcbiAgICAgICAgICAgIHZhciB2MiA9IHZlYzIuc2NhbGUoWzAsIDBdLCB2LCBkMSk7XG4gICAgICAgICAgICBjcDEgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50LCB2MSk7XG4gICAgICAgICAgICBuZXh0Q3AwID0gdmVjMi5hZGQoWzAsIDBdLCBwb2ludCwgdjIpO1xuICAgICAgICAgICAgLy8g5LiL5LiA5Liq5o6n5Yi254K55b+F6aG75Zyo6L+Z5Liq54K55ZKM5LiL5LiA5Liq54K55LmL6Ze0XG4gICAgICAgICAgICBuZXh0Q3AwID0gdmVjMi5taW4oWzAsIDBdLCBuZXh0Q3AwLCB2ZWMyLm1heChbMCwgMF0sIG5leHRQb2ludCwgcG9pbnQpKTtcbiAgICAgICAgICAgIG5leHRDcDAgPSB2ZWMyLm1heChbMCwgMF0sIG5leHRDcDAsIHZlYzIubWluKFswLCAwXSwgbmV4dFBvaW50LCBwb2ludCkpO1xuICAgICAgICAgICAgLy8g6YeN5paw6K6h566XIGNwMSDnmoTlgLxcbiAgICAgICAgICAgIHYxID0gdmVjMi5zdWIoWzAsIDBdLCBuZXh0Q3AwLCBwb2ludCk7XG4gICAgICAgICAgICB2MSA9IHZlYzIuc2NhbGUoWzAsIDBdLCB2MSwgLWQwIC8gZDEpO1xuICAgICAgICAgICAgY3AxID0gdmVjMi5hZGQoWzAsIDBdLCBwb2ludCwgdjEpO1xuICAgICAgICAgICAgLy8g5LiK5LiA5Liq5o6n5Yi254K55b+F6aG76KaB5Zyo5LiK5LiA5Liq54K55ZKM6L+Z5LiA5Liq54K55LmL6Ze0XG4gICAgICAgICAgICBjcDEgPSB2ZWMyLm1pbihbMCwgMF0sIGNwMSwgdmVjMi5tYXgoWzAsIDBdLCBwcmV2UG9pbnQsIHBvaW50KSk7XG4gICAgICAgICAgICBjcDEgPSB2ZWMyLm1heChbMCwgMF0sIGNwMSwgdmVjMi5taW4oWzAsIDBdLCBwcmV2UG9pbnQsIHBvaW50KSk7XG4gICAgICAgICAgICAvLyDph43mlrDorqHnrpcgbmV4dENwMCDnmoTlgLxcbiAgICAgICAgICAgIHYyID0gdmVjMi5zdWIoWzAsIDBdLCBwb2ludCwgY3AxKTtcbiAgICAgICAgICAgIHYyID0gdmVjMi5zY2FsZShbMCwgMF0sIHYyLCBkMSAvIGQwKTtcbiAgICAgICAgICAgIG5leHRDcDAgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50LCB2Mik7XG4gICAgICAgICAgICBpZiAoaGFzQ29uc3RyYWludCkge1xuICAgICAgICAgICAgICAgIGNwMSA9IHZlYzIubWF4KFswLCAwXSwgY3AxLCBtaW4pO1xuICAgICAgICAgICAgICAgIGNwMSA9IHZlYzIubWluKFswLCAwXSwgY3AxLCBtYXgpO1xuICAgICAgICAgICAgICAgIG5leHRDcDAgPSB2ZWMyLm1heChbMCwgMF0sIG5leHRDcDAsIG1pbik7XG4gICAgICAgICAgICAgICAgbmV4dENwMCA9IHZlYzIubWluKFswLCAwXSwgbmV4dENwMCwgbWF4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNwcy5wdXNoKGNwMCk7XG4gICAgICAgICAgICBjcHMucHVzaChjcDEpO1xuICAgICAgICAgICAgY3AwID0gbmV4dENwMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNMb29wKSB7XG4gICAgICAgIGNwcy5wdXNoKGNwcy5zaGlmdCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNwcztcbn1cbi8qKlxuICogY3JlYXRlIGJlemllciBzcGxpbmUgZnJvbSBjYXRtdWxsIHJvbSBzcGxpbmVcbiAqIEBwYXJhbSB7QXJyYXl9IGNycCBDYXRtdWxsIFJvbSBQb2ludHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0geiBTcGxpbmUgaXMgbG9vcFxuICogQHBhcmFtIHtBcnJheX0gY29uc3RyYWludCBDb25zdHJhaW50XG4gKi9cbmZ1bmN0aW9uIGNhdG11bGxSb20yQmV6aWVyKGNycCwgeiwgY29uc3RyYWludCkge1xuICAgIGlmICh6ID09PSB2b2lkIDApIHsgeiA9IGZhbHNlOyB9XG4gICAgaWYgKGNvbnN0cmFpbnQgPT09IHZvaWQgMCkgeyBjb25zdHJhaW50ID0gW1xuICAgICAgICBbMCwgMF0sXG4gICAgICAgIFsxLCAxXSxcbiAgICBdOyB9XG4gICAgdmFyIGlzTG9vcCA9ICEhejtcbiAgICB2YXIgcG9pbnRMaXN0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjcnAubGVuZ3RoOyBpIDwgbDsgaSArPSAyKSB7XG4gICAgICAgIHBvaW50TGlzdC5wdXNoKFtjcnBbaV0sIGNycFtpICsgMV1dKTtcbiAgICB9XG4gICAgdmFyIGNvbnRyb2xQb2ludExpc3QgPSBzbW9vdGhCZXppZXIocG9pbnRMaXN0LCAwLjQsIGlzTG9vcCwgY29uc3RyYWludCk7XG4gICAgdmFyIGxlbiA9IHBvaW50TGlzdC5sZW5ndGg7XG4gICAgdmFyIGQxID0gW107XG4gICAgdmFyIGNwMTtcbiAgICB2YXIgY3AyO1xuICAgIHZhciBwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuIC0gMTsgaSArPSAxKSB7XG4gICAgICAgIGNwMSA9IGNvbnRyb2xQb2ludExpc3RbaSAqIDJdO1xuICAgICAgICBjcDIgPSBjb250cm9sUG9pbnRMaXN0W2kgKiAyICsgMV07XG4gICAgICAgIHAgPSBwb2ludExpc3RbaSArIDFdO1xuICAgICAgICBkMS5wdXNoKFsnQycsIGNwMVswXSwgY3AxWzFdLCBjcDJbMF0sIGNwMlsxXSwgcFswXSwgcFsxXV0pO1xuICAgIH1cbiAgICBpZiAoaXNMb29wKSB7XG4gICAgICAgIGNwMSA9IGNvbnRyb2xQb2ludExpc3RbbGVuXTtcbiAgICAgICAgY3AyID0gY29udHJvbFBvaW50TGlzdFtsZW4gKyAxXTtcbiAgICAgICAgcCA9IHBvaW50TGlzdFswXTtcbiAgICAgICAgZDEucHVzaChbJ0MnLCBjcDFbMF0sIGNwMVsxXSwgY3AyWzBdLCBjcDJbMV0sIHBbMF0sIHBbMV1dKTtcbiAgICB9XG4gICAgcmV0dXJuIGQxO1xufVxuZXhwb3J0IGRlZmF1bHQgY2F0bXVsbFJvbTJCZXppZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYXRtdWxsLXJvbS0yLWJlemllci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/catmull-rom-2-bezier.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/fill-path-by-diff.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/fill-path-by-diff.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fillPathByDiff; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nfunction getMinDiff(del, add, modify) {\n var type = null;\n var min = modify;\n if (add < min) {\n min = add;\n type = 'add';\n }\n if (del < min) {\n min = del;\n type = 'del';\n }\n return {\n type: type,\n min: min,\n };\n}\n/*\n * https://en.wikipedia.org/wiki/Levenshtein_distance\n * 计算两条path的编辑距离\n */\nvar levenshteinDistance = function (source, target) {\n var sourceLen = source.length;\n var targetLen = target.length;\n var sourceSegment, targetSegment;\n var temp = 0;\n if (sourceLen === 0 || targetLen === 0) {\n return null;\n }\n var dist = [];\n for (var i = 0; i <= sourceLen; i++) {\n dist[i] = [];\n dist[i][0] = { min: i };\n }\n for (var j = 0; j <= targetLen; j++) {\n dist[0][j] = { min: j };\n }\n for (var i = 1; i <= sourceLen; i++) {\n sourceSegment = source[i - 1];\n for (var j = 1; j <= targetLen; j++) {\n targetSegment = target[j - 1];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isEqual\"])(sourceSegment, targetSegment)) {\n temp = 0;\n }\n else {\n temp = 1;\n }\n var del = dist[i - 1][j].min + 1;\n var add = dist[i][j - 1].min + 1;\n var modify = dist[i - 1][j - 1].min + temp;\n dist[i][j] = getMinDiff(del, add, modify);\n }\n }\n return dist;\n};\nfunction fillPathByDiff(source, target) {\n var diffMatrix = levenshteinDistance(source, target);\n var sourceLen = source.length;\n var targetLen = target.length;\n var changes = [];\n var index = 1;\n var minPos = 1;\n // 如果source和target不是完全不相等\n // @ts-ignore\n if (diffMatrix[sourceLen][targetLen] !== sourceLen) {\n // 获取从source到target所需改动\n for (var i = 1; i <= sourceLen; i++) {\n var min = diffMatrix[i][i].min;\n minPos = i;\n for (var j = index; j <= targetLen; j++) {\n if (diffMatrix[i][j].min < min) {\n min = diffMatrix[i][j].min;\n minPos = j;\n }\n }\n index = minPos;\n if (diffMatrix[i][index].type) {\n changes.push({ index: i - 1, type: diffMatrix[i][index].type });\n }\n }\n // 对source进行增删path\n for (var i = changes.length - 1; i >= 0; i--) {\n index = changes[i].index;\n if (changes[i].type === 'add') {\n // @ts-ignore\n source.splice(index, 0, [].concat(source[index]));\n }\n else {\n // @ts-ignore\n source.splice(index, 1);\n }\n }\n }\n // source尾部补齐\n sourceLen = source.length;\n if (sourceLen < targetLen) {\n for (var i = 0; i < (targetLen - sourceLen); i++) {\n if (source[sourceLen - 1][0] === 'z' || source[sourceLen - 1][0] === 'Z') {\n // @ts-ignore\n source.splice(sourceLen - 2, 0, source[sourceLen - 2]);\n }\n else {\n // @ts-ignore\n source.push(source[sourceLen - 1]);\n }\n }\n }\n return source;\n}\n//# sourceMappingURL=fill-path-by-diff.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9maWxsLXBhdGgtYnktZGlmZi5qcz9lMzEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBLHNCQUFzQjtBQUN0QjtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkMsc0JBQXNCO0FBQ3RCO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBLHVCQUF1QixnQkFBZ0I7QUFDdkM7QUFDQSxnQkFBZ0IsMERBQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0EsK0JBQStCLGdCQUFnQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixnREFBZ0Q7QUFDOUU7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLFFBQVE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw2QkFBNkI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9maWxsLXBhdGgtYnktZGlmZi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAYW50di91dGlsJztcbmZ1bmN0aW9uIGdldE1pbkRpZmYoZGVsLCBhZGQsIG1vZGlmeSkge1xuICAgIHZhciB0eXBlID0gbnVsbDtcbiAgICB2YXIgbWluID0gbW9kaWZ5O1xuICAgIGlmIChhZGQgPCBtaW4pIHtcbiAgICAgICAgbWluID0gYWRkO1xuICAgICAgICB0eXBlID0gJ2FkZCc7XG4gICAgfVxuICAgIGlmIChkZWwgPCBtaW4pIHtcbiAgICAgICAgbWluID0gZGVsO1xuICAgICAgICB0eXBlID0gJ2RlbCc7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIG1pbjogbWluLFxuICAgIH07XG59XG4vKlxuICogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV2ZW5zaHRlaW5fZGlzdGFuY2VcbiAqIOiuoeeul+S4pOadoXBhdGjnmoTnvJbovpHot53nprtcbiAqL1xudmFyIGxldmVuc2h0ZWluRGlzdGFuY2UgPSBmdW5jdGlvbiAoc291cmNlLCB0YXJnZXQpIHtcbiAgICB2YXIgc291cmNlTGVuID0gc291cmNlLmxlbmd0aDtcbiAgICB2YXIgdGFyZ2V0TGVuID0gdGFyZ2V0Lmxlbmd0aDtcbiAgICB2YXIgc291cmNlU2VnbWVudCwgdGFyZ2V0U2VnbWVudDtcbiAgICB2YXIgdGVtcCA9IDA7XG4gICAgaWYgKHNvdXJjZUxlbiA9PT0gMCB8fCB0YXJnZXRMZW4gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBkaXN0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gc291cmNlTGVuOyBpKyspIHtcbiAgICAgICAgZGlzdFtpXSA9IFtdO1xuICAgICAgICBkaXN0W2ldWzBdID0geyBtaW46IGkgfTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gdGFyZ2V0TGVuOyBqKyspIHtcbiAgICAgICAgZGlzdFswXVtqXSA9IHsgbWluOiBqIH07XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgIHNvdXJjZVNlZ21lbnQgPSBzb3VyY2VbaSAtIDFdO1xuICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8PSB0YXJnZXRMZW47IGorKykge1xuICAgICAgICAgICAgdGFyZ2V0U2VnbWVudCA9IHRhcmdldFtqIC0gMV07XG4gICAgICAgICAgICBpZiAoaXNFcXVhbChzb3VyY2VTZWdtZW50LCB0YXJnZXRTZWdtZW50KSkge1xuICAgICAgICAgICAgICAgIHRlbXAgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGVtcCA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZGVsID0gZGlzdFtpIC0gMV1bal0ubWluICsgMTtcbiAgICAgICAgICAgIHZhciBhZGQgPSBkaXN0W2ldW2ogLSAxXS5taW4gKyAxO1xuICAgICAgICAgICAgdmFyIG1vZGlmeSA9IGRpc3RbaSAtIDFdW2ogLSAxXS5taW4gKyB0ZW1wO1xuICAgICAgICAgICAgZGlzdFtpXVtqXSA9IGdldE1pbkRpZmYoZGVsLCBhZGQsIG1vZGlmeSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRpc3Q7XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmlsbFBhdGhCeURpZmYoc291cmNlLCB0YXJnZXQpIHtcbiAgICB2YXIgZGlmZk1hdHJpeCA9IGxldmVuc2h0ZWluRGlzdGFuY2Uoc291cmNlLCB0YXJnZXQpO1xuICAgIHZhciBzb3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoO1xuICAgIHZhciB0YXJnZXRMZW4gPSB0YXJnZXQubGVuZ3RoO1xuICAgIHZhciBjaGFuZ2VzID0gW107XG4gICAgdmFyIGluZGV4ID0gMTtcbiAgICB2YXIgbWluUG9zID0gMTtcbiAgICAvLyDlpoLmnpxzb3VyY2Xlkox0YXJnZXTkuI3mmK/lrozlhajkuI3nm7jnrYlcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKGRpZmZNYXRyaXhbc291cmNlTGVuXVt0YXJnZXRMZW5dICE9PSBzb3VyY2VMZW4pIHtcbiAgICAgICAgLy8g6I635Y+W5LuOc291cmNl5YiwdGFyZ2V05omA6ZyA5pS55YqoXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgbWluID0gZGlmZk1hdHJpeFtpXVtpXS5taW47XG4gICAgICAgICAgICBtaW5Qb3MgPSBpO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGluZGV4OyBqIDw9IHRhcmdldExlbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpZmZNYXRyaXhbaV1bal0ubWluIDwgbWluKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGRpZmZNYXRyaXhbaV1bal0ubWluO1xuICAgICAgICAgICAgICAgICAgICBtaW5Qb3MgPSBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluZGV4ID0gbWluUG9zO1xuICAgICAgICAgICAgaWYgKGRpZmZNYXRyaXhbaV1baW5kZXhdLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VzLnB1c2goeyBpbmRleDogaSAtIDEsIHR5cGU6IGRpZmZNYXRyaXhbaV1baW5kZXhdLnR5cGUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8g5a+5c291cmNl6L+b6KGM5aKe5YigcGF0aFxuICAgICAgICBmb3IgKHZhciBpID0gY2hhbmdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaW5kZXggPSBjaGFuZ2VzW2ldLmluZGV4O1xuICAgICAgICAgICAgaWYgKGNoYW5nZXNbaV0udHlwZSA9PT0gJ2FkZCcpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgc291cmNlLnNwbGljZShpbmRleCwgMCwgW10uY29uY2F0KHNvdXJjZVtpbmRleF0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBzb3VyY2Uuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBzb3VyY2XlsL7pg6jooaXpvZBcbiAgICBzb3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoO1xuICAgIGlmIChzb3VyY2VMZW4gPCB0YXJnZXRMZW4pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAodGFyZ2V0TGVuIC0gc291cmNlTGVuKTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoc291cmNlW3NvdXJjZUxlbiAtIDFdWzBdID09PSAneicgfHwgc291cmNlW3NvdXJjZUxlbiAtIDFdWzBdID09PSAnWicpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgc291cmNlLnNwbGljZShzb3VyY2VMZW4gLSAyLCAwLCBzb3VyY2Vbc291cmNlTGVuIC0gMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIHNvdXJjZS5wdXNoKHNvdXJjZVtzb3VyY2VMZW4gLSAxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZpbGwtcGF0aC1ieS1kaWZmLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/fill-path-by-diff.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/fill-path.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/path-util/esm/fill-path.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fillPath; });\nfunction decasteljau(points, t) {\n var left = [];\n var right = [];\n function recurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n }\n else {\n var middlePoints = [];\n for (var i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n if (i === points.length - 2) {\n right.push(points[i + 1]);\n }\n middlePoints[i] = [(1 - t) * points[i][0] + t * points[i + 1][0], (1 - t) * points[i][1] + t * points[i + 1][1]];\n }\n recurse(middlePoints, t);\n }\n }\n if (points.length) {\n recurse(points, t);\n }\n return { left: left, right: right.reverse() };\n}\nfunction splitCurve(start, end, count) {\n var points = [[start[1], start[2]]];\n count = count || 2;\n var segments = [];\n if (end[0] === 'A') {\n points.push(end[6]);\n points.push(end[7]);\n }\n else if (end[0] === 'C') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n points.push([end[5], end[6]]);\n }\n else if (end[0] === 'S' || end[0] === 'Q') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n }\n else {\n points.push([end[1], end[2]]);\n }\n var leftSegments = points;\n var t = 1 / count;\n for (var i = 0; i < count - 1; i++) {\n var rt = t / (1 - t * i);\n var split = decasteljau(leftSegments, rt);\n segments.push(split.left);\n leftSegments = split.right;\n }\n segments.push(leftSegments);\n var result = segments.map(function (segment) {\n var cmd = [];\n if (segment.length === 4) {\n cmd.push('C');\n cmd = cmd.concat(segment[2]);\n }\n if (segment.length >= 3) {\n if (segment.length === 3) {\n cmd.push('Q');\n }\n cmd = cmd.concat(segment[1]);\n }\n if (segment.length === 2) {\n cmd.push('L');\n }\n cmd = cmd.concat(segment[segment.length - 1]);\n return cmd;\n });\n return result;\n}\nfunction splitSegment(start, end, count) {\n if (count === 1) {\n return [[].concat(start)];\n }\n var segments = [];\n if (end[0] === 'L' || end[0] === 'C' || end[0] === 'Q') {\n segments = segments.concat(splitCurve(start, end, count));\n }\n else {\n var temp = [].concat(start);\n if (temp[0] === 'M') {\n temp[0] = 'L';\n }\n for (var i = 0; i <= count - 1; i++) {\n segments.push(temp);\n }\n }\n return segments;\n}\nfunction fillPath(source, target) {\n if (source.length === 1) {\n return source;\n }\n var sourceLen = source.length - 1;\n var targetLen = target.length - 1;\n var ratio = sourceLen / targetLen;\n var segmentsToFill = [];\n if (source.length === 1 && source[0][0] === 'M') {\n for (var i = 0; i < targetLen - sourceLen; i++) {\n source.push(source[0]);\n }\n return source;\n }\n for (var i = 0; i < targetLen; i++) {\n var index = Math.floor(ratio * i);\n segmentsToFill[index] = (segmentsToFill[index] || 0) + 1;\n }\n var filled = segmentsToFill.reduce(function (filled, count, i) {\n if (i === sourceLen) {\n return filled.concat(source[sourceLen]);\n }\n return filled.concat(splitSegment(source[i], source[i + 1], count));\n }, []);\n filled.unshift(source[0]);\n if (target[targetLen] === 'Z' || target[targetLen] === 'z') {\n filled.push('Z');\n }\n return filled;\n}\n//# sourceMappingURL=fill-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9maWxsLXBhdGguanM/YzNiNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsdUJBQXVCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDJCQUEyQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9maWxsLXBhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBkZWNhc3RlbGphdShwb2ludHMsIHQpIHtcbiAgICB2YXIgbGVmdCA9IFtdO1xuICAgIHZhciByaWdodCA9IFtdO1xuICAgIGZ1bmN0aW9uIHJlY3Vyc2UocG9pbnRzLCB0KSB7XG4gICAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBsZWZ0LnB1c2gocG9pbnRzWzBdKTtcbiAgICAgICAgICAgIHJpZ2h0LnB1c2gocG9pbnRzWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBtaWRkbGVQb2ludHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQucHVzaChwb2ludHNbMF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gcG9pbnRzLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQucHVzaChwb2ludHNbaSArIDFdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWlkZGxlUG9pbnRzW2ldID0gWygxIC0gdCkgKiBwb2ludHNbaV1bMF0gKyB0ICogcG9pbnRzW2kgKyAxXVswXSwgKDEgLSB0KSAqIHBvaW50c1tpXVsxXSArIHQgKiBwb2ludHNbaSArIDFdWzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlY3Vyc2UobWlkZGxlUG9pbnRzLCB0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZWN1cnNlKHBvaW50cywgdCk7XG4gICAgfVxuICAgIHJldHVybiB7IGxlZnQ6IGxlZnQsIHJpZ2h0OiByaWdodC5yZXZlcnNlKCkgfTtcbn1cbmZ1bmN0aW9uIHNwbGl0Q3VydmUoc3RhcnQsIGVuZCwgY291bnQpIHtcbiAgICB2YXIgcG9pbnRzID0gW1tzdGFydFsxXSwgc3RhcnRbMl1dXTtcbiAgICBjb3VudCA9IGNvdW50IHx8IDI7XG4gICAgdmFyIHNlZ21lbnRzID0gW107XG4gICAgaWYgKGVuZFswXSA9PT0gJ0EnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKGVuZFs2XSk7XG4gICAgICAgIHBvaW50cy5wdXNoKGVuZFs3XSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGVuZFswXSA9PT0gJ0MnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzNdLCBlbmRbNF1dKTtcbiAgICAgICAgcG9pbnRzLnB1c2goW2VuZFs1XSwgZW5kWzZdXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGVuZFswXSA9PT0gJ1MnIHx8IGVuZFswXSA9PT0gJ1EnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzNdLCBlbmRbNF1dKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgIH1cbiAgICB2YXIgbGVmdFNlZ21lbnRzID0gcG9pbnRzO1xuICAgIHZhciB0ID0gMSAvIGNvdW50O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICAgICAgdmFyIHJ0ID0gdCAvICgxIC0gdCAqIGkpO1xuICAgICAgICB2YXIgc3BsaXQgPSBkZWNhc3RlbGphdShsZWZ0U2VnbWVudHMsIHJ0KTtcbiAgICAgICAgc2VnbWVudHMucHVzaChzcGxpdC5sZWZ0KTtcbiAgICAgICAgbGVmdFNlZ21lbnRzID0gc3BsaXQucmlnaHQ7XG4gICAgfVxuICAgIHNlZ21lbnRzLnB1c2gobGVmdFNlZ21lbnRzKTtcbiAgICB2YXIgcmVzdWx0ID0gc2VnbWVudHMubWFwKGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gICAgICAgIHZhciBjbWQgPSBbXTtcbiAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSA0KSB7XG4gICAgICAgICAgICBjbWQucHVzaCgnQycpO1xuICAgICAgICAgICAgY21kID0gY21kLmNvbmNhdChzZWdtZW50WzJdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPj0gMykge1xuICAgICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICAgICAgY21kLnB1c2goJ1EnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNtZCA9IGNtZC5jb25jYXQoc2VnbWVudFsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBjbWQucHVzaCgnTCcpO1xuICAgICAgICB9XG4gICAgICAgIGNtZCA9IGNtZC5jb25jYXQoc2VnbWVudFtzZWdtZW50Lmxlbmd0aCAtIDFdKTtcbiAgICAgICAgcmV0dXJuIGNtZDtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gc3BsaXRTZWdtZW50KHN0YXJ0LCBlbmQsIGNvdW50KSB7XG4gICAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICAgIHJldHVybiBbW10uY29uY2F0KHN0YXJ0KV07XG4gICAgfVxuICAgIHZhciBzZWdtZW50cyA9IFtdO1xuICAgIGlmIChlbmRbMF0gPT09ICdMJyB8fCBlbmRbMF0gPT09ICdDJyB8fCBlbmRbMF0gPT09ICdRJykge1xuICAgICAgICBzZWdtZW50cyA9IHNlZ21lbnRzLmNvbmNhdChzcGxpdEN1cnZlKHN0YXJ0LCBlbmQsIGNvdW50KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgdGVtcCA9IFtdLmNvbmNhdChzdGFydCk7XG4gICAgICAgIGlmICh0ZW1wWzBdID09PSAnTScpIHtcbiAgICAgICAgICAgIHRlbXBbMF0gPSAnTCc7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gY291bnQgLSAxOyBpKyspIHtcbiAgICAgICAgICAgIHNlZ21lbnRzLnB1c2godGVtcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNlZ21lbnRzO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmlsbFBhdGgoc291cmNlLCB0YXJnZXQpIHtcbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH1cbiAgICB2YXIgc291cmNlTGVuID0gc291cmNlLmxlbmd0aCAtIDE7XG4gICAgdmFyIHRhcmdldExlbiA9IHRhcmdldC5sZW5ndGggLSAxO1xuICAgIHZhciByYXRpbyA9IHNvdXJjZUxlbiAvIHRhcmdldExlbjtcbiAgICB2YXIgc2VnbWVudHNUb0ZpbGwgPSBbXTtcbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMSAmJiBzb3VyY2VbMF1bMF0gPT09ICdNJykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldExlbiAtIHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgICAgICBzb3VyY2UucHVzaChzb3VyY2VbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFyZ2V0TGVuOyBpKyspIHtcbiAgICAgICAgdmFyIGluZGV4ID0gTWF0aC5mbG9vcihyYXRpbyAqIGkpO1xuICAgICAgICBzZWdtZW50c1RvRmlsbFtpbmRleF0gPSAoc2VnbWVudHNUb0ZpbGxbaW5kZXhdIHx8IDApICsgMTtcbiAgICB9XG4gICAgdmFyIGZpbGxlZCA9IHNlZ21lbnRzVG9GaWxsLnJlZHVjZShmdW5jdGlvbiAoZmlsbGVkLCBjb3VudCwgaSkge1xuICAgICAgICBpZiAoaSA9PT0gc291cmNlTGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsbGVkLmNvbmNhdChzb3VyY2Vbc291cmNlTGVuXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGxlZC5jb25jYXQoc3BsaXRTZWdtZW50KHNvdXJjZVtpXSwgc291cmNlW2kgKyAxXSwgY291bnQpKTtcbiAgICB9LCBbXSk7XG4gICAgZmlsbGVkLnVuc2hpZnQoc291cmNlWzBdKTtcbiAgICBpZiAodGFyZ2V0W3RhcmdldExlbl0gPT09ICdaJyB8fCB0YXJnZXRbdGFyZ2V0TGVuXSA9PT0gJ3onKSB7XG4gICAgICAgIGZpbGxlZC5wdXNoKCdaJyk7XG4gICAgfVxuICAgIHJldHVybiBmaWxsZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1maWxsLXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/fill-path.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/format-path.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/path-util/esm/format-path.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatPath; });\n/*\n * 抽取pathSegment中的关键点\n * M,L,A,Q,H,V一个端点\n * Q, S抽取一个端点,一个控制点\n * C抽取一个端点,两个控制点\n */\nfunction _getSegmentPoints(segment) {\n var points = [];\n switch (segment[0]) {\n case 'M':\n points.push([segment[1], segment[2]]);\n break;\n case 'L':\n points.push([segment[1], segment[2]]);\n break;\n case 'A':\n points.push([segment[6], segment[7]]);\n break;\n case 'Q':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'T':\n points.push([segment[1], segment[2]]);\n break;\n case 'C':\n points.push([segment[5], segment[6]]);\n points.push([segment[1], segment[2]]);\n points.push([segment[3], segment[4]]);\n break;\n case 'S':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'H':\n points.push([segment[1], segment[1]]);\n break;\n case 'V':\n points.push([segment[1], segment[1]]);\n break;\n default:\n }\n return points;\n}\n// 将两个点均分成count个点\nfunction _splitPoints(points, former, count) {\n var result = [].concat(points);\n var index;\n var t = 1 / (count + 1);\n var formerEnd = _getSegmentPoints(former)[0];\n for (var i = 1; i <= count; i++) {\n t *= i;\n index = Math.floor(points.length * t);\n if (index === 0) {\n result.unshift([formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n }\n else {\n result.splice(index, 0, [formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n }\n }\n return result;\n}\nfunction formatPath(fromPath, toPath) {\n if (fromPath.length <= 1) {\n return fromPath;\n }\n var points;\n for (var i = 0; i < toPath.length; i++) {\n if (fromPath[i][0] !== toPath[i][0]) {\n // 获取fromPath的pathSegment的端点,根据toPath的指令对其改造\n points = _getSegmentPoints(fromPath[i]);\n switch (toPath[i][0]) {\n case 'M':\n fromPath[i] = ['M'].concat(points[0]);\n break;\n case 'L':\n fromPath[i] = ['L'].concat(points[0]);\n break;\n case 'A':\n fromPath[i] = [].concat(toPath[i]);\n fromPath[i][6] = points[0][0];\n fromPath[i][7] = points[0][1];\n break;\n case 'Q':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['Q'].concat(points.reduce(function (arr, i) { return arr.concat(i); }, []));\n break;\n case 'T':\n fromPath[i] = ['T'].concat(points[0]);\n break;\n case 'C':\n if (points.length < 3) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 2);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['C'].concat(points.reduce(function (arr, i) { return arr.concat(i); }, []));\n break;\n case 'S':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['S'].concat(points.reduce(function (arr, i) { return arr.concat(i); }, []));\n break;\n default:\n fromPath[i] = toPath[i];\n }\n }\n }\n return fromPath;\n}\n//# sourceMappingURL=format-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9mb3JtYXQtcGF0aC5qcz82ODExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0ZBQWdGLHNCQUFzQixFQUFFO0FBQ3hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRkFBZ0Ysc0JBQXNCLEVBQUU7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdGQUFnRixzQkFBc0IsRUFBRTtBQUN4RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9mb3JtYXQtcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiDmir3lj5ZwYXRoU2VnbWVudOS4reeahOWFs+mUrueCuVxuICogTSxMLEEsUSxILFbkuIDkuKrnq6/ngrlcbiAqIFEsIFPmir3lj5bkuIDkuKrnq6/ngrnvvIzkuIDkuKrmjqfliLbngrlcbiAqIEPmir3lj5bkuIDkuKrnq6/ngrnvvIzkuKTkuKrmjqfliLbngrlcbiAqL1xuZnVuY3Rpb24gX2dldFNlZ21lbnRQb2ludHMoc2VnbWVudCkge1xuICAgIHZhciBwb2ludHMgPSBbXTtcbiAgICBzd2l0Y2ggKHNlZ21lbnRbMF0pIHtcbiAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0wnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzZdLCBzZWdtZW50WzddXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFszXSwgc2VnbWVudFs0XV0pO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdUJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQyc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFs1XSwgc2VnbWVudFs2XV0pO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzNdLCBzZWdtZW50WzRdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUyc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFszXSwgc2VnbWVudFs0XV0pO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzFdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVic6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsxXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICAgIHJldHVybiBwb2ludHM7XG59XG4vLyDlsIbkuKTkuKrngrnlnYfliIbmiJBjb3VudOS4queCuVxuZnVuY3Rpb24gX3NwbGl0UG9pbnRzKHBvaW50cywgZm9ybWVyLCBjb3VudCkge1xuICAgIHZhciByZXN1bHQgPSBbXS5jb25jYXQocG9pbnRzKTtcbiAgICB2YXIgaW5kZXg7XG4gICAgdmFyIHQgPSAxIC8gKGNvdW50ICsgMSk7XG4gICAgdmFyIGZvcm1lckVuZCA9IF9nZXRTZWdtZW50UG9pbnRzKGZvcm1lcilbMF07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gY291bnQ7IGkrKykge1xuICAgICAgICB0ICo9IGk7XG4gICAgICAgIGluZGV4ID0gTWF0aC5mbG9vcihwb2ludHMubGVuZ3RoICogdCk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmVzdWx0LnVuc2hpZnQoW2Zvcm1lckVuZFswXSAqIHQgKyBwb2ludHNbaW5kZXhdWzBdICogKDEgLSB0KSwgZm9ybWVyRW5kWzFdICogdCArIHBvaW50c1tpbmRleF1bMV0gKiAoMSAtIHQpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQuc3BsaWNlKGluZGV4LCAwLCBbZm9ybWVyRW5kWzBdICogdCArIHBvaW50c1tpbmRleF1bMF0gKiAoMSAtIHQpLCBmb3JtZXJFbmRbMV0gKiB0ICsgcG9pbnRzW2luZGV4XVsxXSAqICgxIC0gdCldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0UGF0aChmcm9tUGF0aCwgdG9QYXRoKSB7XG4gICAgaWYgKGZyb21QYXRoLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIHJldHVybiBmcm9tUGF0aDtcbiAgICB9XG4gICAgdmFyIHBvaW50cztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvUGF0aC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZnJvbVBhdGhbaV1bMF0gIT09IHRvUGF0aFtpXVswXSkge1xuICAgICAgICAgICAgLy8g6I635Y+WZnJvbVBhdGjnmoRwYXRoU2VnbWVudOeahOerr+eCue+8jOagueaNrnRvUGF0aOeahOaMh+S7pOWvueWFtuaUuemAoFxuICAgICAgICAgICAgcG9pbnRzID0gX2dldFNlZ21lbnRQb2ludHMoZnJvbVBhdGhbaV0pO1xuICAgICAgICAgICAgc3dpdGNoICh0b1BhdGhbaV1bMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ00nXS5jb25jYXQocG9pbnRzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gWydMJ10uY29uY2F0KHBvaW50c1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFtdLmNvbmNhdCh0b1BhdGhbaV0pO1xuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXVs2XSA9IHBvaW50c1swXVswXTtcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV1bN10gPSBwb2ludHNbMF1bMV07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IF9zcGxpdFBvaW50cyhwb2ludHMsIGZyb21QYXRoW2kgLSAxXSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IHRvUGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnUSddLmNvbmNhdChwb2ludHMucmVkdWNlKGZ1bmN0aW9uIChhcnIsIGkpIHsgcmV0dXJuIGFyci5jb25jYXQoaSk7IH0sIFtdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnVCddLmNvbmNhdChwb2ludHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBfc3BsaXRQb2ludHMocG9pbnRzLCBmcm9tUGF0aFtpIC0gMV0sIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ0MnXS5jb25jYXQocG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYXJyLCBpKSB7IHJldHVybiBhcnIuY29uY2F0KGkpOyB9LCBbXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBfc3BsaXRQb2ludHMocG9pbnRzLCBmcm9tUGF0aFtpIC0gMV0sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ1MnXS5jb25jYXQocG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYXJyLCBpKSB7IHJldHVybiBhcnIuY29uY2F0KGkpOyB9LCBbXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IHRvUGF0aFtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZnJvbVBhdGg7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3JtYXQtcGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/format-path.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/get-arc-params.js": /*!************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/get-arc-params.js ***! \************************************************************/ /*! exports provided: isSamePoint, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSamePoint\", function() { return isSamePoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getArcParams; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nfunction isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nfunction getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"])(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"])(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? (f * rx * yp) / ry : 0;\n var cyp = rx ? (f * -ry * xp) / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [x2, y2]) ? 0 : rx,\n ry: isSamePoint(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag,\n };\n}\n//# sourceMappingURL=get-arc-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9nZXQtYXJjLXBhcmFtcy5qcz9hNThmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBLG9CQUFvQixzREFBRyxDQUFDLDJEQUFRO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9wYXRoLXV0aWwvZXNtL2dldC1hcmMtcGFyYW1zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kLCB0b1JhZGlhbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuLy8g5ZCR6YeP6ZW/5bqmXG5mdW5jdGlvbiB2TWFnKHYpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHZbMF0gKiB2WzBdICsgdlsxXSAqIHZbMV0pO1xufVxuLy8gdS52L3x1fHx2fO+8jOiuoeeul+WkueinkueahOS9meW8puWAvFxuZnVuY3Rpb24gdlJhdGlvKHUsIHYpIHtcbiAgICAvLyDlvZPlrZjlnKjkuIDkuKrlkJHph4/nmoTplb/luqbkuLogMCDml7bvvIzlpLnop5LkuZ/kuLogMO+8jOWNs+WkueinkueahOS9meW8puWAvOS4uiAxXG4gICAgcmV0dXJuIHZNYWcodSkgKiB2TWFnKHYpID8gKHVbMF0gKiB2WzBdICsgdVsxXSAqIHZbMV0pIC8gKHZNYWcodSkgKiB2TWFnKHYpKSA6IDE7XG59XG4vLyDlkJHph4/op5LluqZcbmZ1bmN0aW9uIHZBbmdsZSh1LCB2KSB7XG4gICAgcmV0dXJuICh1WzBdICogdlsxXSA8IHVbMV0gKiB2WzBdID8gLTEgOiAxKSAqIE1hdGguYWNvcyh2UmF0aW8odSwgdikpO1xufVxuLyoqXG4gKiDliKTmlq3kuKTkuKrngrnmmK/lkKbph43lkIjvvIzngrnlnZDmoIfnmoTmoLzlvI/kuLogW3gsIHldXG4gKiBAcGFyYW0ge0FycmF5fSBwb2ludDEg56ys5LiA5Liq54K5XG4gKiBAcGFyYW0ge0FycmF5fSBwb2ludDIg56ys5LqM5Liq54K5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVQb2ludChwb2ludDEsIHBvaW50Mikge1xuICAgIHJldHVybiBwb2ludDFbMF0gPT09IHBvaW50MlswXSAmJiBwb2ludDFbMV0gPT09IHBvaW50MlsxXTtcbn1cbi8vIEEgMDpyeCAxOnJ5IDI6eC1heGlzLXJvdGF0aW9uIDM6bGFyZ2UtYXJjLWZsYWcgNDpzd2VlcC1mbGFnIDU6IHggNjogeVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QXJjUGFyYW1zKHN0YXJ0UG9pbnQsIHBhcmFtcykge1xuICAgIHZhciByeCA9IHBhcmFtc1sxXTtcbiAgICB2YXIgcnkgPSBwYXJhbXNbMl07XG4gICAgdmFyIHhSb3RhdGlvbiA9IG1vZCh0b1JhZGlhbihwYXJhbXNbM10pLCBNYXRoLlBJICogMik7XG4gICAgdmFyIGFyY0ZsYWcgPSBwYXJhbXNbNF07XG4gICAgdmFyIHN3ZWVwRmxhZyA9IHBhcmFtc1s1XTtcbiAgICAvLyDlvKflvaLotbfngrnlnZDmoIdcbiAgICB2YXIgeDEgPSBzdGFydFBvaW50WzBdO1xuICAgIHZhciB5MSA9IHN0YXJ0UG9pbnRbMV07XG4gICAgLy8g5byn5b2i57uI54K55Z2Q5qCHXG4gICAgdmFyIHgyID0gcGFyYW1zWzZdO1xuICAgIHZhciB5MiA9IHBhcmFtc1s3XTtcbiAgICB2YXIgeHAgPSAoTWF0aC5jb3MoeFJvdGF0aW9uKSAqICh4MSAtIHgyKSkgLyAyLjAgKyAoTWF0aC5zaW4oeFJvdGF0aW9uKSAqICh5MSAtIHkyKSkgLyAyLjA7XG4gICAgdmFyIHlwID0gKC0xICogTWF0aC5zaW4oeFJvdGF0aW9uKSAqICh4MSAtIHgyKSkgLyAyLjAgKyAoTWF0aC5jb3MoeFJvdGF0aW9uKSAqICh5MSAtIHkyKSkgLyAyLjA7XG4gICAgdmFyIGxhbWJkYSA9ICh4cCAqIHhwKSAvIChyeCAqIHJ4KSArICh5cCAqIHlwKSAvIChyeSAqIHJ5KTtcbiAgICBpZiAobGFtYmRhID4gMSkge1xuICAgICAgICByeCAqPSBNYXRoLnNxcnQobGFtYmRhKTtcbiAgICAgICAgcnkgKj0gTWF0aC5zcXJ0KGxhbWJkYSk7XG4gICAgfVxuICAgIHZhciBkaWZmID0gcnggKiByeCAqICh5cCAqIHlwKSArIHJ5ICogcnkgKiAoeHAgKiB4cCk7XG4gICAgdmFyIGYgPSBkaWZmID8gTWF0aC5zcXJ0KChyeCAqIHJ4ICogKHJ5ICogcnkpIC0gZGlmZikgLyBkaWZmKSA6IDE7XG4gICAgaWYgKGFyY0ZsYWcgPT09IHN3ZWVwRmxhZykge1xuICAgICAgICBmICo9IC0xO1xuICAgIH1cbiAgICBpZiAoaXNOYU4oZikpIHtcbiAgICAgICAgZiA9IDA7XG4gICAgfVxuICAgIC8vIOaXi+i9rOWJjeeahOi1t+eCueWdkOagh++8jOS4lOW9k+mVv+WNiui9tOWSjOefreWNiui9tOeahOmVv+W6puS4uiAwIOaXtu+8jOWdkOagh+aMiSAoMCwgMCkg5aSE55CGXG4gICAgdmFyIGN4cCA9IHJ5ID8gKGYgKiByeCAqIHlwKSAvIHJ5IDogMDtcbiAgICB2YXIgY3lwID0gcnggPyAoZiAqIC1yeSAqIHhwKSAvIHJ4IDogMDtcbiAgICAvLyDmpK3lnIblnIblv4PlnZDmoIdcbiAgICB2YXIgY3ggPSAoeDEgKyB4MikgLyAyLjAgKyBNYXRoLmNvcyh4Um90YXRpb24pICogY3hwIC0gTWF0aC5zaW4oeFJvdGF0aW9uKSAqIGN5cDtcbiAgICB2YXIgY3kgPSAoeTEgKyB5MikgLyAyLjAgKyBNYXRoLnNpbih4Um90YXRpb24pICogY3hwICsgTWF0aC5jb3MoeFJvdGF0aW9uKSAqIGN5cDtcbiAgICAvLyDotbflp4vngrnnmoTljZXkvY3lkJHph49cbiAgICB2YXIgdSA9IFsoeHAgLSBjeHApIC8gcngsICh5cCAtIGN5cCkgLyByeV07XG4gICAgLy8g57uI5q2i54K555qE5Y2V5L2N5ZCR6YePXG4gICAgdmFyIHYgPSBbKC0xICogeHAgLSBjeHApIC8gcngsICgtMSAqIHlwIC0gY3lwKSAvIHJ5XTtcbiAgICAvLyDorqHnrpfotbflp4vngrnlkozlnIblv4PnmoTov57nur/vvIzkuI4geCDovbTmraPmlrnlkJHnmoTlpLnop5JcbiAgICB2YXIgdGhldGEgPSB2QW5nbGUoWzEsIDBdLCB1KTtcbiAgICAvLyDorqHnrpflnIblvKfotbflp4vngrnlkoznu4jmraLngrnkuI7mpK3lnIblnIblv4Pov57nur/nmoTlpLnop5JcbiAgICB2YXIgZFRoZXRhID0gdkFuZ2xlKHUsIHYpO1xuICAgIGlmICh2UmF0aW8odSwgdikgPD0gLTEpIHtcbiAgICAgICAgZFRoZXRhID0gTWF0aC5QSTtcbiAgICB9XG4gICAgaWYgKHZSYXRpbyh1LCB2KSA+PSAxKSB7XG4gICAgICAgIGRUaGV0YSA9IDA7XG4gICAgfVxuICAgIGlmIChzd2VlcEZsYWcgPT09IDAgJiYgZFRoZXRhID4gMCkge1xuICAgICAgICBkVGhldGEgPSBkVGhldGEgLSAyICogTWF0aC5QSTtcbiAgICB9XG4gICAgaWYgKHN3ZWVwRmxhZyA9PT0gMSAmJiBkVGhldGEgPCAwKSB7XG4gICAgICAgIGRUaGV0YSA9IGRUaGV0YSArIDIgKiBNYXRoLlBJO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBjeDogY3gsXG4gICAgICAgIGN5OiBjeSxcbiAgICAgICAgLy8g5byn5b2i55qE6LW354K55ZKM57uI54K555u45ZCM5pe277yM6ZW/6L205ZKM55+t6L2055qE6ZW/5bqm5oyJIDAg5aSE55CGXG4gICAgICAgIHJ4OiBpc1NhbWVQb2ludChzdGFydFBvaW50LCBbeDIsIHkyXSkgPyAwIDogcngsXG4gICAgICAgIHJ5OiBpc1NhbWVQb2ludChzdGFydFBvaW50LCBbeDIsIHkyXSkgPyAwIDogcnksXG4gICAgICAgIHN0YXJ0QW5nbGU6IHRoZXRhLFxuICAgICAgICBlbmRBbmdsZTogdGhldGEgKyBkVGhldGEsXG4gICAgICAgIHhSb3RhdGlvbjogeFJvdGF0aW9uLFxuICAgICAgICBhcmNGbGFnOiBhcmNGbGFnLFxuICAgICAgICBzd2VlcEZsYWc6IHN3ZWVwRmxhZyxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LWFyYy1wYXJhbXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/get-arc-params.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/get-line-intersect.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/get-line-intersect.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getLineIntersect; });\nvar isBetween = function (value, min, max) { return value >= min && value <= max; };\nfunction getLineIntersect(p0, p1, p2, p3) {\n var tolerance = 0.001;\n var E = {\n x: p2.x - p0.x,\n y: p2.y - p0.y,\n };\n var D0 = {\n x: p1.x - p0.x,\n y: p1.y - p0.y,\n };\n var D1 = {\n x: p3.x - p2.x,\n y: p3.y - p2.y,\n };\n var kross = D0.x * D1.y - D0.y * D1.x;\n var sqrKross = kross * kross;\n var sqrLen0 = D0.x * D0.x + D0.y * D0.y;\n var sqrLen1 = D1.x * D1.x + D1.y * D1.y;\n var point = null;\n if (sqrKross > tolerance * sqrLen0 * sqrLen1) {\n var s = (E.x * D1.y - E.y * D1.x) / kross;\n var t = (E.x * D0.y - E.y * D0.x) / kross;\n if (isBetween(s, 0, 1) && isBetween(t, 0, 1)) {\n point = {\n x: p0.x + s * D0.x,\n y: p0.y + s * D0.y,\n };\n }\n }\n return point;\n}\n;\n//# sourceMappingURL=get-line-intersect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9nZXQtbGluZS1pbnRlcnNlY3QuanM/OTU1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEsNENBQTRDLHFDQUFxQztBQUNsRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9nZXQtbGluZS1pbnRlcnNlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNCZXR3ZWVuID0gZnVuY3Rpb24gKHZhbHVlLCBtaW4sIG1heCkgeyByZXR1cm4gdmFsdWUgPj0gbWluICYmIHZhbHVlIDw9IG1heDsgfTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExpbmVJbnRlcnNlY3QocDAsIHAxLCBwMiwgcDMpIHtcbiAgICB2YXIgdG9sZXJhbmNlID0gMC4wMDE7XG4gICAgdmFyIEUgPSB7XG4gICAgICAgIHg6IHAyLnggLSBwMC54LFxuICAgICAgICB5OiBwMi55IC0gcDAueSxcbiAgICB9O1xuICAgIHZhciBEMCA9IHtcbiAgICAgICAgeDogcDEueCAtIHAwLngsXG4gICAgICAgIHk6IHAxLnkgLSBwMC55LFxuICAgIH07XG4gICAgdmFyIEQxID0ge1xuICAgICAgICB4OiBwMy54IC0gcDIueCxcbiAgICAgICAgeTogcDMueSAtIHAyLnksXG4gICAgfTtcbiAgICB2YXIga3Jvc3MgPSBEMC54ICogRDEueSAtIEQwLnkgKiBEMS54O1xuICAgIHZhciBzcXJLcm9zcyA9IGtyb3NzICoga3Jvc3M7XG4gICAgdmFyIHNxckxlbjAgPSBEMC54ICogRDAueCArIEQwLnkgKiBEMC55O1xuICAgIHZhciBzcXJMZW4xID0gRDEueCAqIEQxLnggKyBEMS55ICogRDEueTtcbiAgICB2YXIgcG9pbnQgPSBudWxsO1xuICAgIGlmIChzcXJLcm9zcyA+IHRvbGVyYW5jZSAqIHNxckxlbjAgKiBzcXJMZW4xKSB7XG4gICAgICAgIHZhciBzID0gKEUueCAqIEQxLnkgLSBFLnkgKiBEMS54KSAvIGtyb3NzO1xuICAgICAgICB2YXIgdCA9IChFLnggKiBEMC55IC0gRS55ICogRDAueCkgLyBrcm9zcztcbiAgICAgICAgaWYgKGlzQmV0d2VlbihzLCAwLCAxKSAmJiBpc0JldHdlZW4odCwgMCwgMSkpIHtcbiAgICAgICAgICAgIHBvaW50ID0ge1xuICAgICAgICAgICAgICAgIHg6IHAwLnggKyBzICogRDAueCxcbiAgICAgICAgICAgICAgICB5OiBwMC55ICsgcyAqIEQwLnksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwb2ludDtcbn1cbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC1saW5lLWludGVyc2VjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/get-line-intersect.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/index.js": /*!***************************************************!*\ !*** ./node_modules/@antv/path-util/esm/index.js ***! \***************************************************/ /*! exports provided: parsePath, catmullRom2Bezier, fillPath, fillPathByDiff, formatPath, pathIntersection, parsePathArray, parsePathString, path2Curve, path2Absolute, reactPath, getArcParams, path2Segments, getLineIntersect, isPolygonsIntersect, isPointInPolygon */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _parse_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parse-path */ \"./node_modules/@antv/path-util/esm/parse-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parsePath\", function() { return _parse_path__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _catmull_rom_2_bezier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./catmull-rom-2-bezier */ \"./node_modules/@antv/path-util/esm/catmull-rom-2-bezier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"catmullRom2Bezier\", function() { return _catmull_rom_2_bezier__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _fill_path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fill-path */ \"./node_modules/@antv/path-util/esm/fill-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fillPath\", function() { return _fill_path__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _fill_path_by_diff__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fill-path-by-diff */ \"./node_modules/@antv/path-util/esm/fill-path-by-diff.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fillPathByDiff\", function() { return _fill_path_by_diff__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _format_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./format-path */ \"./node_modules/@antv/path-util/esm/format-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatPath\", function() { return _format_path__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _path_intersection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./path-intersection */ \"./node_modules/@antv/path-util/esm/path-intersection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pathIntersection\", function() { return _path_intersection__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _parse_path_array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parse-path-array */ \"./node_modules/@antv/path-util/esm/parse-path-array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parsePathArray\", function() { return _parse_path_array__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _parse_path_string__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./parse-path-string */ \"./node_modules/@antv/path-util/esm/parse-path-string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parsePathString\", function() { return _parse_path_string__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _path_2_curve__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./path-2-curve */ \"./node_modules/@antv/path-util/esm/path-2-curve.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"path2Curve\", function() { return _path_2_curve__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _path_2_absolute__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./path-2-absolute */ \"./node_modules/@antv/path-util/esm/path-2-absolute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"path2Absolute\", function() { return _path_2_absolute__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _rect_path__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rect-path */ \"./node_modules/@antv/path-util/esm/rect-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reactPath\", function() { return _rect_path__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _get_arc_params__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./get-arc-params */ \"./node_modules/@antv/path-util/esm/get-arc-params.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getArcParams\", function() { return _get_arc_params__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _path_2_segments__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./path-2-segments */ \"./node_modules/@antv/path-util/esm/path-2-segments.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"path2Segments\", function() { return _path_2_segments__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _get_line_intersect__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./get-line-intersect */ \"./node_modules/@antv/path-util/esm/get-line-intersect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLineIntersect\", function() { return _get_line_intersect__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _is_polygons_intersect__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./is-polygons-intersect */ \"./node_modules/@antv/path-util/esm/is-polygons-intersect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPolygonsIntersect\", function() { return _is_polygons_intersect__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _point_in_polygon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./point-in-polygon */ \"./node_modules/@antv/path-util/esm/point-in-polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPointInPolygon\", function() { return _point_in_polygon__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9pbmRleC5qcz8yZWYxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9EO0FBQ2tCO0FBQ3BCO0FBQ2M7QUFDVjtBQUNZO0FBQ0g7QUFDRTtBQUNWO0FBQ007QUFDVjtBQUNRO0FBQ0U7QUFDTTtBQUNNO0FBQ1I7QUFDakUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgcGFyc2VQYXRoIH0gZnJvbSAnLi9wYXJzZS1wYXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY2F0bXVsbFJvbTJCZXppZXIgfSBmcm9tICcuL2NhdG11bGwtcm9tLTItYmV6aWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsbFBhdGggfSBmcm9tICcuL2ZpbGwtcGF0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZpbGxQYXRoQnlEaWZmIH0gZnJvbSAnLi9maWxsLXBhdGgtYnktZGlmZic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdFBhdGggfSBmcm9tICcuL2Zvcm1hdC1wYXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGF0aEludGVyc2VjdGlvbiB9IGZyb20gJy4vcGF0aC1pbnRlcnNlY3Rpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJzZVBhdGhBcnJheSB9IGZyb20gJy4vcGFyc2UtcGF0aC1hcnJheSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBhcnNlUGF0aFN0cmluZyB9IGZyb20gJy4vcGFyc2UtcGF0aC1zdHJpbmcnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXRoMkN1cnZlIH0gZnJvbSAnLi9wYXRoLTItY3VydmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXRoMkFic29sdXRlIH0gZnJvbSAnLi9wYXRoLTItYWJzb2x1dGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZWFjdFBhdGggfSBmcm9tICcuL3JlY3QtcGF0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldEFyY1BhcmFtcyB9IGZyb20gJy4vZ2V0LWFyYy1wYXJhbXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXRoMlNlZ21lbnRzIH0gZnJvbSAnLi9wYXRoLTItc2VnbWVudHMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRMaW5lSW50ZXJzZWN0IH0gZnJvbSAnLi9nZXQtbGluZS1pbnRlcnNlY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1BvbHlnb25zSW50ZXJzZWN0IH0gZnJvbSAnLi9pcy1wb2x5Z29ucy1pbnRlcnNlY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1BvaW50SW5Qb2x5Z29uIH0gZnJvbSAnLi9wb2ludC1pbi1wb2x5Z29uJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/index.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/is-polygons-intersect.js": /*!*******************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/is-polygons-intersect.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isPolygonsIntersect; });\n/* harmony import */ var _point_in_polygon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./point-in-polygon */ \"./node_modules/@antv/path-util/esm/point-in-polygon.js\");\n/* harmony import */ var _get_line_intersect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-line-intersect */ \"./node_modules/@antv/path-util/esm/get-line-intersect.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n\n\nfunction parseToLines(points) {\n var lines = [];\n var count = points.length;\n for (var i = 0; i < count - 1; i++) {\n var point = points[i];\n var next = points[i + 1];\n lines.push({\n from: {\n x: point[0],\n y: point[1]\n },\n to: {\n x: next[0],\n y: next[1]\n }\n });\n }\n if (lines.length > 1) {\n var first = points[0];\n var last = points[count - 1];\n lines.push({\n from: {\n x: last[0],\n y: last[1]\n },\n to: {\n x: first[0],\n y: first[1]\n }\n });\n }\n return lines;\n}\nfunction lineIntersectPolygon(lines, line) {\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(lines, function (l) {\n if (Object(_get_line_intersect__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(l.from, l.to, line.from, line.to)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}\nfunction getBBox(points) {\n var xArr = points.map(function (p) { return p[0]; });\n var yArr = points.map(function (p) { return p[1]; });\n return {\n minX: Math.min.apply(null, xArr),\n maxX: Math.max.apply(null, xArr),\n minY: Math.min.apply(null, yArr),\n maxY: Math.max.apply(null, yArr)\n };\n}\nfunction intersectBBox(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\nfunction isPolygonsIntersect(points1, points2) {\n // 空数组,或者一个点返回 false\n if (points1.length < 2 || points2.length < 2) {\n return false;\n }\n var bbox1 = getBBox(points1);\n var bbox2 = getBBox(points2);\n // 判定包围盒是否相交,比判定点是否在多边形内要快的多,可以筛选掉大多数情况\n if (!intersectBBox(bbox1, bbox2)) {\n return false;\n }\n var isIn = false;\n // 判定点是否在多边形内部,一旦有一个点在另一个多边形内,则返回\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points2, function (point) {\n if (Object(_point_in_polygon__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(points1, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n // 两个多边形都需要判定\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points1, function (point) {\n if (Object(_point_in_polygon__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(points2, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n var lines1 = parseToLines(points1);\n var lines2 = parseToLines(points2);\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(lines2, function (line) {\n if (lineIntersectPolygon(lines1, line)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}\n//# sourceMappingURL=is-polygons-intersect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9pcy1wb2x5Z29ucy1pbnRlcnNlY3QuanM/YWJkZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ0U7QUFDbEI7QUFDbEM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUixZQUFZLG1FQUFnQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGFBQWEsRUFBRTtBQUN2RCx3Q0FBd0MsYUFBYSxFQUFFO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1IsWUFBWSxpRUFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSLFlBQVksaUVBQWdCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3BhdGgtdXRpbC9lc20vaXMtcG9seWdvbnMtaW50ZXJzZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzUG9pbnRJblBvbHlnb24gZnJvbSAnLi9wb2ludC1pbi1wb2x5Z29uJztcbmltcG9ydCBnZXRMaW5lSW50ZXJzZWN0IGZyb20gJy4vZ2V0LWxpbmUtaW50ZXJzZWN0JztcbmltcG9ydCB7IGVhY2ggfSBmcm9tICdAYW50di91dGlsJztcbmZ1bmN0aW9uIHBhcnNlVG9MaW5lcyhwb2ludHMpIHtcbiAgICB2YXIgbGluZXMgPSBbXTtcbiAgICB2YXIgY291bnQgPSBwb2ludHMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgICB2YXIgbmV4dCA9IHBvaW50c1tpICsgMV07XG4gICAgICAgIGxpbmVzLnB1c2goe1xuICAgICAgICAgICAgZnJvbToge1xuICAgICAgICAgICAgICAgIHg6IHBvaW50WzBdLFxuICAgICAgICAgICAgICAgIHk6IHBvaW50WzFdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdG86IHtcbiAgICAgICAgICAgICAgICB4OiBuZXh0WzBdLFxuICAgICAgICAgICAgICAgIHk6IG5leHRbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChsaW5lcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHZhciBmaXJzdCA9IHBvaW50c1swXTtcbiAgICAgICAgdmFyIGxhc3QgPSBwb2ludHNbY291bnQgLSAxXTtcbiAgICAgICAgbGluZXMucHVzaCh7XG4gICAgICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgICAgICAgeDogbGFzdFswXSxcbiAgICAgICAgICAgICAgICB5OiBsYXN0WzFdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdG86IHtcbiAgICAgICAgICAgICAgICB4OiBmaXJzdFswXSxcbiAgICAgICAgICAgICAgICB5OiBmaXJzdFsxXVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzO1xufVxuZnVuY3Rpb24gbGluZUludGVyc2VjdFBvbHlnb24obGluZXMsIGxpbmUpIHtcbiAgICB2YXIgaXNJbnRlcnNlY3QgPSBmYWxzZTtcbiAgICBlYWNoKGxpbmVzLCBmdW5jdGlvbiAobCkge1xuICAgICAgICBpZiAoZ2V0TGluZUludGVyc2VjdChsLmZyb20sIGwudG8sIGxpbmUuZnJvbSwgbGluZS50bykpIHtcbiAgICAgICAgICAgIGlzSW50ZXJzZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc0ludGVyc2VjdDtcbn1cbmZ1bmN0aW9uIGdldEJCb3gocG9pbnRzKSB7XG4gICAgdmFyIHhBcnIgPSBwb2ludHMubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBwWzBdOyB9KTtcbiAgICB2YXIgeUFyciA9IHBvaW50cy5tYXAoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHBbMV07IH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IE1hdGgubWluLmFwcGx5KG51bGwsIHhBcnIpLFxuICAgICAgICBtYXhYOiBNYXRoLm1heC5hcHBseShudWxsLCB4QXJyKSxcbiAgICAgICAgbWluWTogTWF0aC5taW4uYXBwbHkobnVsbCwgeUFyciksXG4gICAgICAgIG1heFk6IE1hdGgubWF4LmFwcGx5KG51bGwsIHlBcnIpXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGludGVyc2VjdEJCb3goYm94MSwgYm94Mikge1xuICAgIHJldHVybiAhKGJveDIubWluWCA+IGJveDEubWF4WCB8fCBib3gyLm1heFggPCBib3gxLm1pblggfHwgYm94Mi5taW5ZID4gYm94MS5tYXhZIHx8IGJveDIubWF4WSA8IGJveDEubWluWSk7XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1BvbHlnb25zSW50ZXJzZWN0KHBvaW50czEsIHBvaW50czIpIHtcbiAgICAvLyDnqbrmlbDnu4TvvIzmiJbogIXkuIDkuKrngrnov5Tlm54gZmFsc2VcbiAgICBpZiAocG9pbnRzMS5sZW5ndGggPCAyIHx8IHBvaW50czIubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBiYm94MSA9IGdldEJCb3gocG9pbnRzMSk7XG4gICAgdmFyIGJib3gyID0gZ2V0QkJveChwb2ludHMyKTtcbiAgICAvLyDliKTlrprljIXlm7Tnm5LmmK/lkKbnm7jkuqTvvIzmr5TliKTlrprngrnmmK/lkKblnKjlpJrovrnlvaLlhoXopoHlv6vnmoTlpJrvvIzlj6/ku6XnrZvpgInmjonlpKflpJrmlbDmg4XlhrVcbiAgICBpZiAoIWludGVyc2VjdEJCb3goYmJveDEsIGJib3gyKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBpc0luID0gZmFsc2U7XG4gICAgLy8g5Yik5a6a54K55piv5ZCm5Zyo5aSa6L655b2i5YaF6YOo77yM5LiA5pem5pyJ5LiA5Liq54K55Zyo5Y+m5LiA5Liq5aSa6L655b2i5YaF77yM5YiZ6L+U5ZueXG4gICAgZWFjaChwb2ludHMyLCBmdW5jdGlvbiAocG9pbnQpIHtcbiAgICAgICAgaWYgKGlzUG9pbnRJblBvbHlnb24ocG9pbnRzMSwgcG9pbnRbMF0sIHBvaW50WzFdKSkge1xuICAgICAgICAgICAgaXNJbiA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoaXNJbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8g5Lik5Liq5aSa6L655b2i6YO96ZyA6KaB5Yik5a6aXG4gICAgZWFjaChwb2ludHMxLCBmdW5jdGlvbiAocG9pbnQpIHtcbiAgICAgICAgaWYgKGlzUG9pbnRJblBvbHlnb24ocG9pbnRzMiwgcG9pbnRbMF0sIHBvaW50WzFdKSkge1xuICAgICAgICAgICAgaXNJbiA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoaXNJbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGxpbmVzMSA9IHBhcnNlVG9MaW5lcyhwb2ludHMxKTtcbiAgICB2YXIgbGluZXMyID0gcGFyc2VUb0xpbmVzKHBvaW50czIpO1xuICAgIHZhciBpc0ludGVyc2VjdCA9IGZhbHNlO1xuICAgIGVhY2gobGluZXMyLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgICBpZiAobGluZUludGVyc2VjdFBvbHlnb24obGluZXMxLCBsaW5lKSkge1xuICAgICAgICAgICAgaXNJbnRlcnNlY3QgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzSW50ZXJzZWN0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtcG9seWdvbnMtaW50ZXJzZWN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/is-polygons-intersect.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/parse-path-array.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/parse-path-array.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return parsePathArray; });\nvar p2s = /,?([a-z]),?/gi;\nfunction parsePathArray(path) {\n return path.join(',').replace(p2s, '$1');\n}\n//# sourceMappingURL=parse-path-array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wYXJzZS1wYXRoLWFycmF5LmpzP2JjNjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wYXJzZS1wYXRoLWFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHAycyA9IC8sPyhbYS16XSksPy9naTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlUGF0aEFycmF5KHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKCcsJykucmVwbGFjZShwMnMsICckMScpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UtcGF0aC1hcnJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/parse-path-array.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/parse-path-string.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/parse-path-string.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return parsePathString; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nvar PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nvar PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n// Parses given path string into an array of arrays of path segments\nfunction parsePathString(pathString) {\n if (!pathString) {\n return null;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n }\n else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n return data;\n}\n//# sourceMappingURL=parse-path-string.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wYXJzZS1wYXRoLXN0cmluZy5qcz8wYmMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wYXJzZS1wYXRoLXN0cmluZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBTUEFDRVMgPSAnXFx4MDlcXHgwYVxceDBiXFx4MGNcXHgwZFxceDIwXFx4YTBcXHUxNjgwXFx1MTgwZVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDNcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBhXFx1MjAyZlxcdTIwNWZcXHUzMDAwXFx1MjAyOFxcdTIwMjknO1xudmFyIFBBVEhfQ09NTUFORCA9IG5ldyBSZWdFeHAoJyhbYS16XSlbJyArIFNQQUNFUyArICcsXSooKC0/XFxcXGQqXFxcXC4/XFxcXGQqKD86ZVtcXFxcLStdP1xcXFxkKyk/WycgKyBTUEFDRVMgKyAnXSosP1snICsgU1BBQ0VTICsgJ10qKSspJywgJ2lnJyk7XG52YXIgUEFUSF9WQUxVRVMgPSBuZXcgUmVnRXhwKCcoLT9cXFxcZCpcXFxcLj9cXFxcZCooPzplW1xcXFwtK10/XFxcXGQrKT8pWycgKyBTUEFDRVMgKyAnXSosP1snICsgU1BBQ0VTICsgJ10qJywgJ2lnJyk7XG4vLyBQYXJzZXMgZ2l2ZW4gcGF0aCBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBhcnJheXMgb2YgcGF0aCBzZWdtZW50c1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VQYXRoU3RyaW5nKHBhdGhTdHJpbmcpIHtcbiAgICBpZiAoIXBhdGhTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChpc0FycmF5KHBhdGhTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiBwYXRoU3RyaW5nO1xuICAgIH1cbiAgICB2YXIgcGFyYW1Db3VudHMgPSB7XG4gICAgICAgIGE6IDcsXG4gICAgICAgIGM6IDYsXG4gICAgICAgIG86IDIsXG4gICAgICAgIGg6IDEsXG4gICAgICAgIGw6IDIsXG4gICAgICAgIG06IDIsXG4gICAgICAgIHI6IDQsXG4gICAgICAgIHE6IDQsXG4gICAgICAgIHM6IDQsXG4gICAgICAgIHQ6IDIsXG4gICAgICAgIHY6IDEsXG4gICAgICAgIHU6IDMsXG4gICAgICAgIHo6IDAsXG4gICAgfTtcbiAgICB2YXIgZGF0YSA9IFtdO1xuICAgIFN0cmluZyhwYXRoU3RyaW5nKS5yZXBsYWNlKFBBVEhfQ09NTUFORCwgZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgICAgdmFyIHBhcmFtcyA9IFtdO1xuICAgICAgICB2YXIgbmFtZSA9IGIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgYy5yZXBsYWNlKFBBVEhfVkFMVUVTLCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgYiAmJiBwYXJhbXMucHVzaCgrYik7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ20nICYmIHBhcmFtcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBkYXRhLnB1c2goW2JdLmNvbmNhdChwYXJhbXMuc3BsaWNlKDAsIDIpKSk7XG4gICAgICAgICAgICBuYW1lID0gJ2wnO1xuICAgICAgICAgICAgYiA9IGIgPT09ICdtJyA/ICdsJyA6ICdMJztcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZSA9PT0gJ28nICYmIHBhcmFtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGRhdGEucHVzaChbYiwgcGFyYW1zWzBdXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUgPT09ICdyJykge1xuICAgICAgICAgICAgZGF0YS5wdXNoKFtiXS5jb25jYXQocGFyYW1zKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB3aGlsZSAocGFyYW1zLmxlbmd0aCA+PSBwYXJhbUNvdW50c1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIGRhdGEucHVzaChbYl0uY29uY2F0KHBhcmFtcy5zcGxpY2UoMCwgcGFyYW1Db3VudHNbbmFtZV0pKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJhbUNvdW50c1tuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UtcGF0aC1zdHJpbmcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/parse-path-string.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/parse-path.js": /*!********************************************************!*\ !*** ./node_modules/@antv/path-util/esm/parse-path.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nvar regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/ig;\nvar regexDot = /[^\\s\\,]+/ig;\nfunction parsePath(p) {\n var path = p || [];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(path)) {\n return path;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(path)) {\n path = path.match(regexTags);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(path, function (item, index) {\n // @ts-ignore\n item = item.match(regexDot);\n if (item[0].length > 1) {\n var tag = item[0].charAt(0);\n // @ts-ignore\n item.splice(1, 0, item[0].substr(1));\n // @ts-ignore\n item[0] = tag;\n }\n // @ts-ignore\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(item, function (sub, i) {\n if (!isNaN(sub)) {\n // @ts-ignore\n item[i] = +sub;\n }\n });\n // @ts-ignore\n path[index] = item;\n });\n return path;\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (parsePath);\n//# sourceMappingURL=parse-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wYXJzZS1wYXRoLmpzP2ViMjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMERBQU87QUFDZjtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdURBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDZSx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3BhdGgtdXRpbC9lc20vcGFyc2UtcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVhY2gsIGlzQXJyYXksIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgcmVnZXhUYWdzID0gL1tNTEhWUVRDU0FaXShbXk1MSFZRVENTQVpdKikvaWc7XG52YXIgcmVnZXhEb3QgPSAvW15cXHNcXCxdKy9pZztcbmZ1bmN0aW9uIHBhcnNlUGF0aChwKSB7XG4gICAgdmFyIHBhdGggPSBwIHx8IFtdO1xuICAgIGlmIChpc0FycmF5KHBhdGgpKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcocGF0aCkpIHtcbiAgICAgICAgcGF0aCA9IHBhdGgubWF0Y2gocmVnZXhUYWdzKTtcbiAgICAgICAgZWFjaChwYXRoLCBmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtLm1hdGNoKHJlZ2V4RG90KTtcbiAgICAgICAgICAgIGlmIChpdGVtWzBdLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFnID0gaXRlbVswXS5jaGFyQXQoMCk7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGl0ZW0uc3BsaWNlKDEsIDAsIGl0ZW1bMF0uc3Vic3RyKDEpKTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgaXRlbVswXSA9IHRhZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGVhY2goaXRlbSwgZnVuY3Rpb24gKHN1YiwgaSkge1xuICAgICAgICAgICAgICAgIGlmICghaXNOYU4oc3ViKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1baV0gPSArc3ViO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcGF0aFtpbmRleF0gPSBpdGVtO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgcGFyc2VQYXRoO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UtcGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/parse-path.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/path-2-absolute.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/path-2-absolute.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pathToAbsolute; });\n/* harmony import */ var _parse_path_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parse-path-string */ \"./node_modules/@antv/path-util/esm/parse-path-string.js\");\n\nvar REGEX_MD = /[a-z]/;\nfunction toSymmetry(p, c) {\n return [\n c[0] + (c[0] - p[0]),\n c[1] + (c[1] - p[1]),\n ];\n}\nfunction pathToAbsolute(pathString) {\n var pathArray = Object(_parse_path_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(pathString);\n if (!pathArray || !pathArray.length) {\n return [\n ['M', 0, 0],\n ];\n }\n var needProcess = false; // 如果存在小写的命令或者 V,H,T,S 则需要处理\n for (var i = 0; i < pathArray.length; i++) {\n var cmd = pathArray[i][0];\n // 如果存在相对位置的命令,则中断返回\n if (REGEX_MD.test(cmd) || ['V', 'H', 'T', 'S'].indexOf(cmd) >= 0) {\n needProcess = true;\n break;\n }\n }\n // 如果不存在相对命令,则直接返回\n // 如果在业务上都写绝对路径,这种方式最快,仅做了一次检测\n if (!needProcess) {\n return pathArray;\n }\n var res = [];\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var start = 0;\n var pa0;\n var dots;\n var first = pathArray[0];\n if (first[0] === 'M' || first[0] === 'm') {\n x = +first[1];\n y = +first[2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n for (var i = start, ii = pathArray.length; i < ii; i++) {\n var pa = pathArray[i];\n var preParams = res[i - 1]; // 取前一个已经处理后的节点,否则会出现问题\n var r = [];\n var cmd = pa[0];\n var upCmd = cmd.toUpperCase();\n if (cmd !== upCmd) {\n r[0] = upCmd;\n switch (upCmd) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n r[1] = mx;\n r[2] = my;\n break; // for lint\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + ((j % 2) ? x : y);\n }\n }\n }\n else { // 如果本来已经大写,则不处理\n r = pathArray[i];\n }\n // 需要在外面统一做,同时处理 V,H,S,T 等特殊指令\n switch (upCmd) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n r = ['L', x, y];\n break;\n case 'V':\n y = r[1];\n r = ['L', x, y];\n break;\n case 'T':\n x = r[1];\n y = r[2];\n // 以 x, y 为中心的,上一个控制点的对称点\n // 需要假设上一个节点的命令为 Q\n var symetricT = toSymmetry([preParams[1], preParams[2]], [preParams[3], preParams[4]]);\n r = ['Q', symetricT[0], symetricT[1], x, y];\n break;\n case 'S':\n x = r[r.length - 2];\n y = r[r.length - 1];\n // 以 x,y 为中心,取上一个控制点,\n // 需要假设上一个线段为 C 或者 S\n var length_1 = preParams.length;\n var symetricS = toSymmetry([preParams[length_1 - 4], preParams[length_1 - 3]], [preParams[length_1 - 2], preParams[length_1 - 1]]);\n r = ['C', symetricS[0], symetricS[1], r[1], r[2], x, y];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break; // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n res.push(r);\n }\n return res;\n}\n//# sourceMappingURL=path-2-absolute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLTItYWJzb2x1dGUuanM/YTRhMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLG9CQUFvQixrRUFBZTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQSxtREFBbUQsUUFBUTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3BhdGgtdXRpbC9lc20vcGF0aC0yLWFic29sdXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhcnNlUGF0aFN0cmluZyBmcm9tICcuL3BhcnNlLXBhdGgtc3RyaW5nJztcbnZhciBSRUdFWF9NRCA9IC9bYS16XS87XG5mdW5jdGlvbiB0b1N5bW1ldHJ5KHAsIGMpIHtcbiAgICByZXR1cm4gW1xuICAgICAgICBjWzBdICsgKGNbMF0gLSBwWzBdKSxcbiAgICAgICAgY1sxXSArIChjWzFdIC0gcFsxXSksXG4gICAgXTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhdGhUb0Fic29sdXRlKHBhdGhTdHJpbmcpIHtcbiAgICB2YXIgcGF0aEFycmF5ID0gcGFyc2VQYXRoU3RyaW5nKHBhdGhTdHJpbmcpO1xuICAgIGlmICghcGF0aEFycmF5IHx8ICFwYXRoQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbJ00nLCAwLCAwXSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgdmFyIG5lZWRQcm9jZXNzID0gZmFsc2U7IC8vIOWmguaenOWtmOWcqOWwj+WGmeeahOWRveS7pOaIluiAhSBWLEgsVCxTIOWImemcgOimgeWkhOeQhlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjbWQgPSBwYXRoQXJyYXlbaV1bMF07XG4gICAgICAgIC8vIOWmguaenOWtmOWcqOebuOWvueS9jee9rueahOWRveS7pO+8jOWImeS4reaWrei/lOWbnlxuICAgICAgICBpZiAoUkVHRVhfTUQudGVzdChjbWQpIHx8IFsnVicsICdIJywgJ1QnLCAnUyddLmluZGV4T2YoY21kKSA+PSAwKSB7XG4gICAgICAgICAgICBuZWVkUHJvY2VzcyA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDlpoLmnpzkuI3lrZjlnKjnm7jlr7nlkb3ku6TvvIzliJnnm7TmjqXov5Tlm55cbiAgICAvLyDlpoLmnpzlnKjkuJrliqHkuIrpg73lhpnnu53lr7not6/lvoTvvIzov5nnp43mlrnlvI/mnIDlv6vvvIzku4XlgZrkuobkuIDmrKHmo4DmtYtcbiAgICBpZiAoIW5lZWRQcm9jZXNzKSB7XG4gICAgICAgIHJldHVybiBwYXRoQXJyYXk7XG4gICAgfVxuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgeCA9IDA7XG4gICAgdmFyIHkgPSAwO1xuICAgIHZhciBteCA9IDA7XG4gICAgdmFyIG15ID0gMDtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIHZhciBwYTA7XG4gICAgdmFyIGRvdHM7XG4gICAgdmFyIGZpcnN0ID0gcGF0aEFycmF5WzBdO1xuICAgIGlmIChmaXJzdFswXSA9PT0gJ00nIHx8IGZpcnN0WzBdID09PSAnbScpIHtcbiAgICAgICAgeCA9ICtmaXJzdFsxXTtcbiAgICAgICAgeSA9ICtmaXJzdFsyXTtcbiAgICAgICAgbXggPSB4O1xuICAgICAgICBteSA9IHk7XG4gICAgICAgIHN0YXJ0Kys7XG4gICAgICAgIHJlc1swXSA9IFsnTScsIHgsIHldO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gc3RhcnQsIGlpID0gcGF0aEFycmF5Lmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgICAgdmFyIHBhID0gcGF0aEFycmF5W2ldO1xuICAgICAgICB2YXIgcHJlUGFyYW1zID0gcmVzW2kgLSAxXTsgLy8g5Y+W5YmN5LiA5Liq5bey57uP5aSE55CG5ZCO55qE6IqC54K577yM5ZCm5YiZ5Lya5Ye6546w6Zeu6aKYXG4gICAgICAgIHZhciByID0gW107XG4gICAgICAgIHZhciBjbWQgPSBwYVswXTtcbiAgICAgICAgdmFyIHVwQ21kID0gY21kLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGlmIChjbWQgIT09IHVwQ21kKSB7XG4gICAgICAgICAgICByWzBdID0gdXBDbWQ7XG4gICAgICAgICAgICBzd2l0Y2ggKHVwQ21kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgICAgIHJbMV0gPSBwYVsxXTtcbiAgICAgICAgICAgICAgICAgICAgclsyXSA9IHBhWzJdO1xuICAgICAgICAgICAgICAgICAgICByWzNdID0gcGFbM107XG4gICAgICAgICAgICAgICAgICAgIHJbNF0gPSBwYVs0XTtcbiAgICAgICAgICAgICAgICAgICAgcls1XSA9IHBhWzVdO1xuICAgICAgICAgICAgICAgICAgICByWzZdID0gK3BhWzZdICsgeDtcbiAgICAgICAgICAgICAgICAgICAgcls3XSA9ICtwYVs3XSArIHk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1YnOlxuICAgICAgICAgICAgICAgICAgICByWzFdID0gK3BhWzFdICsgeTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICAgICAgICAgIHJbMV0gPSArcGFbMV0gKyB4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgbXggPSArcGFbMV0gKyB4O1xuICAgICAgICAgICAgICAgICAgICBteSA9ICtwYVsyXSArIHk7XG4gICAgICAgICAgICAgICAgICAgIHJbMV0gPSBteDtcbiAgICAgICAgICAgICAgICAgICAgclsyXSA9IG15O1xuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gZm9yIGxpbnRcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMSwgamogPSBwYS5sZW5ndGg7IGogPCBqajsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByW2pdID0gK3BhW2pdICsgKChqICUgMikgPyB4IDogeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHsgLy8g5aaC5p6c5pys5p2l5bey57uP5aSn5YaZ77yM5YiZ5LiN5aSE55CGXG4gICAgICAgICAgICByID0gcGF0aEFycmF5W2ldO1xuICAgICAgICB9XG4gICAgICAgIC8vIOmcgOimgeWcqOWklumdoue7n+S4gOWBmu+8jOWQjOaXtuWkhOeQhiBWLEgsUyxUIOetieeJueauiuaMh+S7pFxuICAgICAgICBzd2l0Y2ggKHVwQ21kKSB7XG4gICAgICAgICAgICBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICB4ID0gK214O1xuICAgICAgICAgICAgICAgIHkgPSArbXk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICB4ID0gclsxXTtcbiAgICAgICAgICAgICAgICByID0gWydMJywgeCwgeV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgICAgICB5ID0gclsxXTtcbiAgICAgICAgICAgICAgICByID0gWydMJywgeCwgeV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdUJzpcbiAgICAgICAgICAgICAgICB4ID0gclsxXTtcbiAgICAgICAgICAgICAgICB5ID0gclsyXTtcbiAgICAgICAgICAgICAgICAvLyDku6UgeCwgeSDkuLrkuK3lv4PnmoTvvIzkuIrkuIDkuKrmjqfliLbngrnnmoTlr7nnp7DngrlcbiAgICAgICAgICAgICAgICAvLyDpnIDopoHlgYforr7kuIrkuIDkuKroioLngrnnmoTlkb3ku6TkuLogUVxuICAgICAgICAgICAgICAgIHZhciBzeW1ldHJpY1QgPSB0b1N5bW1ldHJ5KFtwcmVQYXJhbXNbMV0sIHByZVBhcmFtc1syXV0sIFtwcmVQYXJhbXNbM10sIHByZVBhcmFtc1s0XV0pO1xuICAgICAgICAgICAgICAgIHIgPSBbJ1EnLCBzeW1ldHJpY1RbMF0sIHN5bWV0cmljVFsxXSwgeCwgeV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICB4ID0gcltyLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgICAgIHkgPSByW3IubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgLy8g5LulIHgseSDkuLrkuK3lv4PvvIzlj5bkuIrkuIDkuKrmjqfliLbngrnvvIxcbiAgICAgICAgICAgICAgICAvLyDpnIDopoHlgYforr7kuIrkuIDkuKrnur/mrrXkuLogQyDmiJbogIUgU1xuICAgICAgICAgICAgICAgIHZhciBsZW5ndGhfMSA9IHByZVBhcmFtcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdmFyIHN5bWV0cmljUyA9IHRvU3ltbWV0cnkoW3ByZVBhcmFtc1tsZW5ndGhfMSAtIDRdLCBwcmVQYXJhbXNbbGVuZ3RoXzEgLSAzXV0sIFtwcmVQYXJhbXNbbGVuZ3RoXzEgLSAyXSwgcHJlUGFyYW1zW2xlbmd0aF8xIC0gMV1dKTtcbiAgICAgICAgICAgICAgICByID0gWydDJywgc3ltZXRyaWNTWzBdLCBzeW1ldHJpY1NbMV0sIHJbMV0sIHJbMl0sIHgsIHldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgbXggPSByW3IubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICAgICAgbXkgPSByW3IubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZvciBsaW50XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHggPSByW3IubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICAgICAgeSA9IHJbci5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaChyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGgtMi1hYnNvbHV0ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/path-2-absolute.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/path-2-curve.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/path-util/esm/path-2-curve.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pathToCurve; });\n/* harmony import */ var _path_2_absolute__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path-2-absolute */ \"./node_modules/@antv/path-util/esm/path-2-absolute.js\");\n/* harmony import */ var _process_segment_2_cubic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./process/segment-2-cubic */ \"./node_modules/@antv/path-util/esm/process/segment-2-cubic.js\");\n\n\nfunction pathToCurve(path, needZCommandIndexes) {\n if (needZCommandIndexes === void 0) { needZCommandIndexes = false; }\n var pathArray = Object(_path_2_absolute__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(path);\n var params = {\n x1: 0, y1: 0, x2: 0, y2: 0, x: 0, y: 0, qx: null, qy: null,\n };\n var allPathCommands = [];\n var pathCommand = '';\n var ii = pathArray.length;\n var segment;\n var seglen;\n var zCommandIndexes = [];\n for (var i = 0; i < ii; i += 1) {\n if (pathArray[i])\n pathCommand = pathArray[i][0];\n allPathCommands[i] = pathCommand;\n pathArray[i] = Object(_process_segment_2_cubic__WEBPACK_IMPORTED_MODULE_1__[\"segmentToCubic\"])(pathArray[i], params);\n fixArc(pathArray, allPathCommands, i);\n ii = pathArray.length; // solves curveArrays ending in Z\n // keep Z command account for lineJoin\n // @see https://github.com/antvis/util/issues/68\n if (pathCommand === 'Z') {\n zCommandIndexes.push(i);\n }\n segment = pathArray[i];\n seglen = segment.length;\n params.x1 = +segment[seglen - 2];\n params.y1 = +segment[seglen - 1];\n params.x2 = +(segment[seglen - 4]) || params.x1;\n params.y2 = +(segment[seglen - 3]) || params.y1;\n }\n if (needZCommandIndexes) {\n return [pathArray, zCommandIndexes];\n }\n else {\n return pathArray;\n }\n}\nfunction fixArc(pathArray, allPathCommands, i) {\n if (pathArray[i].length > 7) {\n pathArray[i].shift();\n var pi = pathArray[i];\n // const ni = i + 1;\n var ni = i;\n while (pi.length) {\n // if created multiple C:s, their original seg is saved\n allPathCommands[i] = 'A';\n // @ts-ignore\n pathArray.splice(ni += 1, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pathArray.splice(i, 1);\n }\n}\n//# sourceMappingURL=path-2-curve.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLTItY3VydmUuanM/NTZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE4QztBQUNhO0FBQzVDO0FBQ2YseUNBQXlDLDZCQUE2QjtBQUN0RSxvQkFBb0IsZ0VBQWE7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLCtFQUFjO0FBQ3JDO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLTItY3VydmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aDJBYnNvbHV0ZSBmcm9tICcuL3BhdGgtMi1hYnNvbHV0ZSc7XG5pbXBvcnQgeyBzZWdtZW50VG9DdWJpYyB9IGZyb20gJy4vcHJvY2Vzcy9zZWdtZW50LTItY3ViaWMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGF0aFRvQ3VydmUocGF0aCwgbmVlZFpDb21tYW5kSW5kZXhlcykge1xuICAgIGlmIChuZWVkWkNvbW1hbmRJbmRleGVzID09PSB2b2lkIDApIHsgbmVlZFpDb21tYW5kSW5kZXhlcyA9IGZhbHNlOyB9XG4gICAgdmFyIHBhdGhBcnJheSA9IHBhdGgyQWJzb2x1dGUocGF0aCk7XG4gICAgdmFyIHBhcmFtcyA9IHtcbiAgICAgICAgeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDAsIHg6IDAsIHk6IDAsIHF4OiBudWxsLCBxeTogbnVsbCxcbiAgICB9O1xuICAgIHZhciBhbGxQYXRoQ29tbWFuZHMgPSBbXTtcbiAgICB2YXIgcGF0aENvbW1hbmQgPSAnJztcbiAgICB2YXIgaWkgPSBwYXRoQXJyYXkubGVuZ3RoO1xuICAgIHZhciBzZWdtZW50O1xuICAgIHZhciBzZWdsZW47XG4gICAgdmFyIHpDb21tYW5kSW5kZXhlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWk7IGkgKz0gMSkge1xuICAgICAgICBpZiAocGF0aEFycmF5W2ldKVxuICAgICAgICAgICAgcGF0aENvbW1hbmQgPSBwYXRoQXJyYXlbaV1bMF07XG4gICAgICAgIGFsbFBhdGhDb21tYW5kc1tpXSA9IHBhdGhDb21tYW5kO1xuICAgICAgICBwYXRoQXJyYXlbaV0gPSBzZWdtZW50VG9DdWJpYyhwYXRoQXJyYXlbaV0sIHBhcmFtcyk7XG4gICAgICAgIGZpeEFyYyhwYXRoQXJyYXksIGFsbFBhdGhDb21tYW5kcywgaSk7XG4gICAgICAgIGlpID0gcGF0aEFycmF5Lmxlbmd0aDsgLy8gc29sdmVzIGN1cnZlQXJyYXlzIGVuZGluZyBpbiBaXG4gICAgICAgIC8vIGtlZXAgWiBjb21tYW5kIGFjY291bnQgZm9yIGxpbmVKb2luXG4gICAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy91dGlsL2lzc3Vlcy82OFxuICAgICAgICBpZiAocGF0aENvbW1hbmQgPT09ICdaJykge1xuICAgICAgICAgICAgekNvbW1hbmRJbmRleGVzLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgc2VnbWVudCA9IHBhdGhBcnJheVtpXTtcbiAgICAgICAgc2VnbGVuID0gc2VnbWVudC5sZW5ndGg7XG4gICAgICAgIHBhcmFtcy54MSA9ICtzZWdtZW50W3NlZ2xlbiAtIDJdO1xuICAgICAgICBwYXJhbXMueTEgPSArc2VnbWVudFtzZWdsZW4gLSAxXTtcbiAgICAgICAgcGFyYW1zLngyID0gKyhzZWdtZW50W3NlZ2xlbiAtIDRdKSB8fCBwYXJhbXMueDE7XG4gICAgICAgIHBhcmFtcy55MiA9ICsoc2VnbWVudFtzZWdsZW4gLSAzXSkgfHwgcGFyYW1zLnkxO1xuICAgIH1cbiAgICBpZiAobmVlZFpDb21tYW5kSW5kZXhlcykge1xuICAgICAgICByZXR1cm4gW3BhdGhBcnJheSwgekNvbW1hbmRJbmRleGVzXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXRoQXJyYXk7XG4gICAgfVxufVxuZnVuY3Rpb24gZml4QXJjKHBhdGhBcnJheSwgYWxsUGF0aENvbW1hbmRzLCBpKSB7XG4gICAgaWYgKHBhdGhBcnJheVtpXS5sZW5ndGggPiA3KSB7XG4gICAgICAgIHBhdGhBcnJheVtpXS5zaGlmdCgpO1xuICAgICAgICB2YXIgcGkgPSBwYXRoQXJyYXlbaV07XG4gICAgICAgIC8vIGNvbnN0IG5pID0gaSArIDE7XG4gICAgICAgIHZhciBuaSA9IGk7XG4gICAgICAgIHdoaWxlIChwaS5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGlmIGNyZWF0ZWQgbXVsdGlwbGUgQzpzLCB0aGVpciBvcmlnaW5hbCBzZWcgaXMgc2F2ZWRcbiAgICAgICAgICAgIGFsbFBhdGhDb21tYW5kc1tpXSA9ICdBJztcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHBhdGhBcnJheS5zcGxpY2UobmkgKz0gMSwgMCwgWydDJ10uY29uY2F0KHBpLnNwbGljZSgwLCA2KSkpO1xuICAgICAgICB9XG4gICAgICAgIHBhdGhBcnJheS5zcGxpY2UoaSwgMSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC0yLWN1cnZlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/path-2-curve.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/path-2-segments.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/path-2-segments.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getSegments; });\n/* harmony import */ var _get_arc_params__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-arc-params */ \"./node_modules/@antv/path-util/esm/get-arc-params.js\");\n/* harmony import */ var _parse_path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse-path */ \"./node_modules/@antv/path-util/esm/parse-path.js\");\n\n\n\n// 点对称\nfunction toSymmetry(point, center) {\n return [center[0] + (center[0] - point[0]), center[1] + (center[1] - point[1])];\n}\nfunction getSegments(path) {\n path = Object(_parse_path__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(path);\n var segments = [];\n var currentPoint = null; // 当前图形\n var nextParams = null; // 下一节点的 path 参数\n var startMovePoint = null; // 开始 M 的点,可能会有多个\n var lastStartMovePointIndex = 0; // 最近一个开始点 M 的索引\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n nextParams = path[i + 1];\n var command = params[0];\n // 数学定义上的参数,便于后面的计算\n var segment = {\n command: command,\n prePoint: currentPoint,\n params: params,\n startTangent: null,\n endTangent: null,\n };\n switch (command) {\n case 'M':\n startMovePoint = [params[1], params[2]];\n lastStartMovePointIndex = i;\n break;\n case 'A':\n var arcParams = Object(_get_arc_params__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(currentPoint, params);\n segment['arcParams'] = arcParams;\n break;\n default:\n break;\n }\n if (command === 'Z') {\n // 有了 Z 后,当前节点从开始 M 的点开始\n currentPoint = startMovePoint;\n // 如果当前点的命令为 Z,相当于当前点为最近一个 M 点,则下一个点直接指向最近一个 M 点的下一个点\n nextParams = path[lastStartMovePointIndex + 1];\n }\n else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n if (nextParams && nextParams[0] === 'Z') {\n // 如果下一个点的命令为 Z,则下一个点直接指向最近一个 M 点\n nextParams = path[lastStartMovePointIndex];\n if (segments[lastStartMovePointIndex]) {\n // 如果下一个点的命令为 Z,则最近一个 M 点的前一个点为当前点\n segments[lastStartMovePointIndex].prePoint = currentPoint;\n }\n }\n segment['currentPoint'] = currentPoint;\n // 如果当前点与最近一个 M 点相同,则最近一个 M 点的前一个点为当前点的前一个点\n if (segments[lastStartMovePointIndex] &&\n Object(_get_arc_params__WEBPACK_IMPORTED_MODULE_0__[\"isSamePoint\"])(currentPoint, segments[lastStartMovePointIndex].currentPoint)) {\n segments[lastStartMovePointIndex].prePoint = segment.prePoint;\n }\n var nextPoint = nextParams ? [nextParams[nextParams.length - 2], nextParams[nextParams.length - 1]] : null;\n segment['nextPoint'] = nextPoint;\n // Add startTangent and endTangent\n var prePoint = segment.prePoint;\n if (['L', 'H', 'V'].includes(command)) {\n segment.startTangent = [prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1]];\n segment.endTangent = [currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1]];\n }\n else if (command === 'Q') {\n // 二次贝塞尔曲线只有一个控制点\n var cp = [params[1], params[2]];\n // 二次贝塞尔曲线的终点为 currentPoint\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n }\n else if (command === 'T') {\n var preSegment = segments[i - 1];\n var cp = toSymmetry(preSegment.currentPoint, prePoint);\n if (preSegment.command === 'Q') {\n segment.command = 'Q';\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n }\n else {\n segment.command = 'TL';\n segment.startTangent = [prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1]];\n segment.endTangent = [currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1]];\n }\n }\n else if (command === 'C') {\n // 三次贝塞尔曲线有两个控制点\n var cp1 = [params[1], params[2]];\n var cp2 = [params[3], params[4]];\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n // horizontal line, eg. ['C', 100, 100, 100, 100, 200, 200]\n if (segment.startTangent[0] === 0 && segment.startTangent[1] === 0) {\n segment.startTangent = [cp1[0] - cp2[0], cp1[1] - cp2[1]];\n }\n if (segment.endTangent[0] === 0 && segment.endTangent[1] === 0) {\n segment.endTangent = [cp2[0] - cp1[0], cp2[1] - cp1[1]];\n }\n }\n else if (command === 'S') {\n var preSegment = segments[i - 1];\n var cp1 = toSymmetry(preSegment.currentPoint, prePoint);\n var cp2 = [params[1], params[2]];\n if (preSegment.command === 'C') {\n segment.command = 'C'; // 将 S 命令变换为 C 命令\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n }\n else {\n segment.command = 'SQ'; // 将 S 命令变换为 SQ 命令\n segment.startTangent = [prePoint[0] - cp2[0], prePoint[1] - cp2[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n }\n }\n else if (command === 'A') {\n var d = 0.001;\n var _a = segment['arcParams'] || {}, _b = _a.cx, cx = _b === void 0 ? 0 : _b, _c = _a.cy, cy = _c === void 0 ? 0 : _c, _d = _a.rx, rx = _d === void 0 ? 0 : _d, _e = _a.ry, ry = _e === void 0 ? 0 : _e, _f = _a.sweepFlag, sweepFlag = _f === void 0 ? 0 : _f, _g = _a.startAngle, startAngle = _g === void 0 ? 0 : _g, _h = _a.endAngle, endAngle = _h === void 0 ? 0 : _h;\n if (sweepFlag === 0) {\n d *= -1;\n }\n var dx1 = rx * Math.cos(startAngle - d) + cx;\n var dy1 = ry * Math.sin(startAngle - d) + cy;\n segment.startTangent = [dx1 - startMovePoint[0], dy1 - startMovePoint[1]];\n var dx2 = rx * Math.cos(startAngle + endAngle + d) + cx;\n var dy2 = ry * Math.sin(startAngle + endAngle - d) + cy;\n segment.endTangent = [prePoint[0] - dx2, prePoint[1] - dy2];\n }\n segments.push(segment);\n }\n return segments;\n}\n//# sourceMappingURL=path-2-segments.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLTItc2VnbWVudHMuanM/Y2YyZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNHO0FBQ1Y7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLFdBQVcsMkRBQVM7QUFDcEI7QUFDQSw0QkFBNEI7QUFDNUIsMEJBQTBCO0FBQzFCLDhCQUE4QjtBQUM5QixvQ0FBb0M7QUFDcEM7QUFDQSxtQkFBbUIsV0FBVztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLCtEQUFZO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG1FQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9wYXRoLXV0aWwvZXNtL3BhdGgtMi1zZWdtZW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRBcmNQYXJhbXMgZnJvbSAnLi9nZXQtYXJjLXBhcmFtcyc7XG5pbXBvcnQgeyBpc1NhbWVQb2ludCB9IGZyb20gJy4vZ2V0LWFyYy1wYXJhbXMnO1xuaW1wb3J0IHBhcnNlUGF0aCBmcm9tICcuL3BhcnNlLXBhdGgnO1xuLy8g54K55a+556ewXG5mdW5jdGlvbiB0b1N5bW1ldHJ5KHBvaW50LCBjZW50ZXIpIHtcbiAgICByZXR1cm4gW2NlbnRlclswXSArIChjZW50ZXJbMF0gLSBwb2ludFswXSksIGNlbnRlclsxXSArIChjZW50ZXJbMV0gLSBwb2ludFsxXSldO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0U2VnbWVudHMocGF0aCkge1xuICAgIHBhdGggPSBwYXJzZVBhdGgocGF0aCk7XG4gICAgdmFyIHNlZ21lbnRzID0gW107XG4gICAgdmFyIGN1cnJlbnRQb2ludCA9IG51bGw7IC8vIOW9k+WJjeWbvuW9olxuICAgIHZhciBuZXh0UGFyYW1zID0gbnVsbDsgLy8g5LiL5LiA6IqC54K555qEIHBhdGgg5Y+C5pWwXG4gICAgdmFyIHN0YXJ0TW92ZVBvaW50ID0gbnVsbDsgLy8g5byA5aeLIE0g55qE54K577yM5Y+v6IO95Lya5pyJ5aSa5LiqXG4gICAgdmFyIGxhc3RTdGFydE1vdmVQb2ludEluZGV4ID0gMDsgLy8g5pyA6L+R5LiA5Liq5byA5aeL54K5IE0g55qE57Si5byVXG4gICAgdmFyIGNvdW50ID0gcGF0aC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSBwYXRoW2ldO1xuICAgICAgICBuZXh0UGFyYW1zID0gcGF0aFtpICsgMV07XG4gICAgICAgIHZhciBjb21tYW5kID0gcGFyYW1zWzBdO1xuICAgICAgICAvLyDmlbDlrablrprkuYnkuIrnmoTlj4LmlbDvvIzkvr/kuo7lkI7pnaLnmoTorqHnrpdcbiAgICAgICAgdmFyIHNlZ21lbnQgPSB7XG4gICAgICAgICAgICBjb21tYW5kOiBjb21tYW5kLFxuICAgICAgICAgICAgcHJlUG9pbnQ6IGN1cnJlbnRQb2ludCxcbiAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICAgICAgc3RhcnRUYW5nZW50OiBudWxsLFxuICAgICAgICAgICAgZW5kVGFuZ2VudDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBzdGFydE1vdmVQb2ludCA9IFtwYXJhbXNbMV0sIHBhcmFtc1syXV07XG4gICAgICAgICAgICAgICAgbGFzdFN0YXJ0TW92ZVBvaW50SW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgdmFyIGFyY1BhcmFtcyA9IGdldEFyY1BhcmFtcyhjdXJyZW50UG9pbnQsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgc2VnbWVudFsnYXJjUGFyYW1zJ10gPSBhcmNQYXJhbXM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21tYW5kID09PSAnWicpIHtcbiAgICAgICAgICAgIC8vIOacieS6hiBaIOWQju+8jOW9k+WJjeiKgueCueS7juW8gOWniyBNIOeahOeCueW8gOWni1xuICAgICAgICAgICAgY3VycmVudFBvaW50ID0gc3RhcnRNb3ZlUG9pbnQ7XG4gICAgICAgICAgICAvLyDlpoLmnpzlvZPliY3ngrnnmoTlkb3ku6TkuLogWu+8jOebuOW9k+S6juW9k+WJjeeCueS4uuacgOi/keS4gOS4qiBNIOeCue+8jOWImeS4i+S4gOS4queCueebtOaOpeaMh+WQkeacgOi/keS4gOS4qiBNIOeCueeahOS4i+S4gOS4queCuVxuICAgICAgICAgICAgbmV4dFBhcmFtcyA9IHBhdGhbbGFzdFN0YXJ0TW92ZVBvaW50SW5kZXggKyAxXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsZW4gPSBwYXJhbXMubGVuZ3RoO1xuICAgICAgICAgICAgY3VycmVudFBvaW50ID0gW3BhcmFtc1tsZW4gLSAyXSwgcGFyYW1zW2xlbiAtIDFdXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dFBhcmFtcyAmJiBuZXh0UGFyYW1zWzBdID09PSAnWicpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOS4i+S4gOS4queCueeahOWRveS7pOS4uiBa77yM5YiZ5LiL5LiA5Liq54K555u05o6l5oyH5ZCR5pyA6L+R5LiA5LiqIE0g54K5XG4gICAgICAgICAgICBuZXh0UGFyYW1zID0gcGF0aFtsYXN0U3RhcnRNb3ZlUG9pbnRJbmRleF07XG4gICAgICAgICAgICBpZiAoc2VnbWVudHNbbGFzdFN0YXJ0TW92ZVBvaW50SW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5LiL5LiA5Liq54K555qE5ZG95Luk5Li6IFrvvIzliJnmnIDov5HkuIDkuKogTSDngrnnmoTliY3kuIDkuKrngrnkuLrlvZPliY3ngrlcbiAgICAgICAgICAgICAgICBzZWdtZW50c1tsYXN0U3RhcnRNb3ZlUG9pbnRJbmRleF0ucHJlUG9pbnQgPSBjdXJyZW50UG9pbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2VnbWVudFsnY3VycmVudFBvaW50J10gPSBjdXJyZW50UG9pbnQ7XG4gICAgICAgIC8vIOWmguaenOW9k+WJjeeCueS4juacgOi/keS4gOS4qiBNIOeCueebuOWQjO+8jOWImeacgOi/keS4gOS4qiBNIOeCueeahOWJjeS4gOS4queCueS4uuW9k+WJjeeCueeahOWJjeS4gOS4queCuVxuICAgICAgICBpZiAoc2VnbWVudHNbbGFzdFN0YXJ0TW92ZVBvaW50SW5kZXhdICYmXG4gICAgICAgICAgICBpc1NhbWVQb2ludChjdXJyZW50UG9pbnQsIHNlZ21lbnRzW2xhc3RTdGFydE1vdmVQb2ludEluZGV4XS5jdXJyZW50UG9pbnQpKSB7XG4gICAgICAgICAgICBzZWdtZW50c1tsYXN0U3RhcnRNb3ZlUG9pbnRJbmRleF0ucHJlUG9pbnQgPSBzZWdtZW50LnByZVBvaW50O1xuICAgICAgICB9XG4gICAgICAgIHZhciBuZXh0UG9pbnQgPSBuZXh0UGFyYW1zID8gW25leHRQYXJhbXNbbmV4dFBhcmFtcy5sZW5ndGggLSAyXSwgbmV4dFBhcmFtc1tuZXh0UGFyYW1zLmxlbmd0aCAtIDFdXSA6IG51bGw7XG4gICAgICAgIHNlZ21lbnRbJ25leHRQb2ludCddID0gbmV4dFBvaW50O1xuICAgICAgICAvLyBBZGQgc3RhcnRUYW5nZW50IGFuZCBlbmRUYW5nZW50XG4gICAgICAgIHZhciBwcmVQb2ludCA9IHNlZ21lbnQucHJlUG9pbnQ7XG4gICAgICAgIGlmIChbJ0wnLCAnSCcsICdWJ10uaW5jbHVkZXMoY29tbWFuZCkpIHtcbiAgICAgICAgICAgIHNlZ21lbnQuc3RhcnRUYW5nZW50ID0gW3ByZVBvaW50WzBdIC0gY3VycmVudFBvaW50WzBdLCBwcmVQb2ludFsxXSAtIGN1cnJlbnRQb2ludFsxXV07XG4gICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbY3VycmVudFBvaW50WzBdIC0gcHJlUG9pbnRbMF0sIGN1cnJlbnRQb2ludFsxXSAtIHByZVBvaW50WzFdXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb21tYW5kID09PSAnUScpIHtcbiAgICAgICAgICAgIC8vIOS6jOasoei0neWhnuWwlOabsue6v+WPquacieS4gOS4quaOp+WItueCuVxuICAgICAgICAgICAgdmFyIGNwID0gW3BhcmFtc1sxXSwgcGFyYW1zWzJdXTtcbiAgICAgICAgICAgIC8vIOS6jOasoei0neWhnuWwlOabsue6v+eahOe7iOeCueS4uiBjdXJyZW50UG9pbnRcbiAgICAgICAgICAgIHNlZ21lbnQuc3RhcnRUYW5nZW50ID0gW3ByZVBvaW50WzBdIC0gY3BbMF0sIHByZVBvaW50WzFdIC0gY3BbMV1dO1xuICAgICAgICAgICAgc2VnbWVudC5lbmRUYW5nZW50ID0gW2N1cnJlbnRQb2ludFswXSAtIGNwWzBdLCBjdXJyZW50UG9pbnRbMV0gLSBjcFsxXV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29tbWFuZCA9PT0gJ1QnKSB7XG4gICAgICAgICAgICB2YXIgcHJlU2VnbWVudCA9IHNlZ21lbnRzW2kgLSAxXTtcbiAgICAgICAgICAgIHZhciBjcCA9IHRvU3ltbWV0cnkocHJlU2VnbWVudC5jdXJyZW50UG9pbnQsIHByZVBvaW50KTtcbiAgICAgICAgICAgIGlmIChwcmVTZWdtZW50LmNvbW1hbmQgPT09ICdRJykge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQuY29tbWFuZCA9ICdRJztcbiAgICAgICAgICAgICAgICBzZWdtZW50LnN0YXJ0VGFuZ2VudCA9IFtwcmVQb2ludFswXSAtIGNwWzBdLCBwcmVQb2ludFsxXSAtIGNwWzFdXTtcbiAgICAgICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbY3VycmVudFBvaW50WzBdIC0gY3BbMF0sIGN1cnJlbnRQb2ludFsxXSAtIGNwWzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQuY29tbWFuZCA9ICdUTCc7XG4gICAgICAgICAgICAgICAgc2VnbWVudC5zdGFydFRhbmdlbnQgPSBbcHJlUG9pbnRbMF0gLSBjdXJyZW50UG9pbnRbMF0sIHByZVBvaW50WzFdIC0gY3VycmVudFBvaW50WzFdXTtcbiAgICAgICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbY3VycmVudFBvaW50WzBdIC0gcHJlUG9pbnRbMF0sIGN1cnJlbnRQb2ludFsxXSAtIHByZVBvaW50WzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb21tYW5kID09PSAnQycpIHtcbiAgICAgICAgICAgIC8vIOS4ieasoei0neWhnuWwlOabsue6v+acieS4pOS4quaOp+WItueCuVxuICAgICAgICAgICAgdmFyIGNwMSA9IFtwYXJhbXNbMV0sIHBhcmFtc1syXV07XG4gICAgICAgICAgICB2YXIgY3AyID0gW3BhcmFtc1szXSwgcGFyYW1zWzRdXTtcbiAgICAgICAgICAgIHNlZ21lbnQuc3RhcnRUYW5nZW50ID0gW3ByZVBvaW50WzBdIC0gY3AxWzBdLCBwcmVQb2ludFsxXSAtIGNwMVsxXV07XG4gICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbY3VycmVudFBvaW50WzBdIC0gY3AyWzBdLCBjdXJyZW50UG9pbnRbMV0gLSBjcDJbMV1dO1xuICAgICAgICAgICAgLy8gaG9yaXpvbnRhbCBsaW5lLCBlZy4gWydDJywgMTAwLCAxMDAsIDEwMCwgMTAwLCAyMDAsIDIwMF1cbiAgICAgICAgICAgIGlmIChzZWdtZW50LnN0YXJ0VGFuZ2VudFswXSA9PT0gMCAmJiBzZWdtZW50LnN0YXJ0VGFuZ2VudFsxXSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQuc3RhcnRUYW5nZW50ID0gW2NwMVswXSAtIGNwMlswXSwgY3AxWzFdIC0gY3AyWzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWdtZW50LmVuZFRhbmdlbnRbMF0gPT09IDAgJiYgc2VnbWVudC5lbmRUYW5nZW50WzFdID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc2VnbWVudC5lbmRUYW5nZW50ID0gW2NwMlswXSAtIGNwMVswXSwgY3AyWzFdIC0gY3AxWzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb21tYW5kID09PSAnUycpIHtcbiAgICAgICAgICAgIHZhciBwcmVTZWdtZW50ID0gc2VnbWVudHNbaSAtIDFdO1xuICAgICAgICAgICAgdmFyIGNwMSA9IHRvU3ltbWV0cnkocHJlU2VnbWVudC5jdXJyZW50UG9pbnQsIHByZVBvaW50KTtcbiAgICAgICAgICAgIHZhciBjcDIgPSBbcGFyYW1zWzFdLCBwYXJhbXNbMl1dO1xuICAgICAgICAgICAgaWYgKHByZVNlZ21lbnQuY29tbWFuZCA9PT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgc2VnbWVudC5jb21tYW5kID0gJ0MnOyAvLyDlsIYgUyDlkb3ku6Tlj5jmjaLkuLogQyDlkb3ku6RcbiAgICAgICAgICAgICAgICBzZWdtZW50LnN0YXJ0VGFuZ2VudCA9IFtwcmVQb2ludFswXSAtIGNwMVswXSwgcHJlUG9pbnRbMV0gLSBjcDFbMV1dO1xuICAgICAgICAgICAgICAgIHNlZ21lbnQuZW5kVGFuZ2VudCA9IFtjdXJyZW50UG9pbnRbMF0gLSBjcDJbMF0sIGN1cnJlbnRQb2ludFsxXSAtIGNwMlsxXV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWdtZW50LmNvbW1hbmQgPSAnU1EnOyAvLyDlsIYgUyDlkb3ku6Tlj5jmjaLkuLogU1Eg5ZG95LukXG4gICAgICAgICAgICAgICAgc2VnbWVudC5zdGFydFRhbmdlbnQgPSBbcHJlUG9pbnRbMF0gLSBjcDJbMF0sIHByZVBvaW50WzFdIC0gY3AyWzFdXTtcbiAgICAgICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbY3VycmVudFBvaW50WzBdIC0gY3AyWzBdLCBjdXJyZW50UG9pbnRbMV0gLSBjcDJbMV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbW1hbmQgPT09ICdBJykge1xuICAgICAgICAgICAgdmFyIGQgPSAwLjAwMTtcbiAgICAgICAgICAgIHZhciBfYSA9IHNlZ21lbnRbJ2FyY1BhcmFtcyddIHx8IHt9LCBfYiA9IF9hLmN4LCBjeCA9IF9iID09PSB2b2lkIDAgPyAwIDogX2IsIF9jID0gX2EuY3ksIGN5ID0gX2MgPT09IHZvaWQgMCA/IDAgOiBfYywgX2QgPSBfYS5yeCwgcnggPSBfZCA9PT0gdm9pZCAwID8gMCA6IF9kLCBfZSA9IF9hLnJ5LCByeSA9IF9lID09PSB2b2lkIDAgPyAwIDogX2UsIF9mID0gX2Euc3dlZXBGbGFnLCBzd2VlcEZsYWcgPSBfZiA9PT0gdm9pZCAwID8gMCA6IF9mLCBfZyA9IF9hLnN0YXJ0QW5nbGUsIHN0YXJ0QW5nbGUgPSBfZyA9PT0gdm9pZCAwID8gMCA6IF9nLCBfaCA9IF9hLmVuZEFuZ2xlLCBlbmRBbmdsZSA9IF9oID09PSB2b2lkIDAgPyAwIDogX2g7XG4gICAgICAgICAgICBpZiAoc3dlZXBGbGFnID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZCAqPSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBkeDEgPSByeCAqIE1hdGguY29zKHN0YXJ0QW5nbGUgLSBkKSArIGN4O1xuICAgICAgICAgICAgdmFyIGR5MSA9IHJ5ICogTWF0aC5zaW4oc3RhcnRBbmdsZSAtIGQpICsgY3k7XG4gICAgICAgICAgICBzZWdtZW50LnN0YXJ0VGFuZ2VudCA9IFtkeDEgLSBzdGFydE1vdmVQb2ludFswXSwgZHkxIC0gc3RhcnRNb3ZlUG9pbnRbMV1dO1xuICAgICAgICAgICAgdmFyIGR4MiA9IHJ4ICogTWF0aC5jb3Moc3RhcnRBbmdsZSArIGVuZEFuZ2xlICsgZCkgKyBjeDtcbiAgICAgICAgICAgIHZhciBkeTIgPSByeSAqIE1hdGguc2luKHN0YXJ0QW5nbGUgKyBlbmRBbmdsZSAtIGQpICsgY3k7XG4gICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbcHJlUG9pbnRbMF0gLSBkeDIsIHByZVBvaW50WzFdIC0gZHkyXTtcbiAgICAgICAgfVxuICAgICAgICBzZWdtZW50cy5wdXNoKHNlZ21lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gc2VnbWVudHM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXRoLTItc2VnbWVudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/path-2-segments.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/path-intersection.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/path-intersection.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pathIntersection; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _rect_path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect-path */ \"./node_modules/@antv/path-util/esm/rect-path.js\");\n/* harmony import */ var _path_2_curve__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path-2-curve */ \"./node_modules/@antv/path-util/esm/path-2-curve.js\");\n\n\n\nvar base3 = function (t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4;\n var t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n};\nvar bezlen = function (x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z === null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2;\n var n = 12;\n var Tvalues = [-0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816, 0.9816];\n var Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];\n var sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2;\n var xbase = base3(ct, x1, x2, x3, x4);\n var ybase = base3(ct, y1, y2, y3, y4);\n var comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * Math.sqrt(comb);\n }\n return z2 * sum;\n};\nvar curveDim = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [];\n var bounds = [\n [],\n [],\n ];\n var a;\n var b;\n var c;\n var t;\n for (var i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n }\n else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n var b2ac = b * b - 4 * c * a;\n var sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n var t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1) {\n tvalues.push(t1);\n }\n var t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n var j = tvalues.length;\n var jlen = j;\n var mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3);\n bounds[1][j] = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3);\n }\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return {\n min: {\n x: Math.min.apply(0, bounds[0]),\n y: Math.min.apply(0, bounds[1]),\n },\n max: {\n x: Math.max.apply(0, bounds[0]),\n y: Math.max.apply(0, bounds[1]),\n },\n };\n};\nvar intersect = function (x1, y1, x2, y2, x3, y3, x4, y4) {\n if (Math.max(x1, x2) < Math.min(x3, x4) ||\n Math.min(x1, x2) > Math.max(x3, x4) ||\n Math.max(y1, y2) < Math.min(y3, y4) ||\n Math.min(y1, y2) > Math.max(y3, y4)) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n var ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n var denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (!denominator) {\n return;\n }\n var px = nx / denominator;\n var py = ny / denominator;\n var px2 = +px.toFixed(2);\n var py2 = +py.toFixed(2);\n if (px2 < +Math.min(x1, x2).toFixed(2) ||\n px2 > +Math.max(x1, x2).toFixed(2) ||\n px2 < +Math.min(x3, x4).toFixed(2) ||\n px2 > +Math.max(x3, x4).toFixed(2) ||\n py2 < +Math.min(y1, y2).toFixed(2) ||\n py2 > +Math.max(y1, y2).toFixed(2) ||\n py2 < +Math.min(y3, y4).toFixed(2) ||\n py2 > +Math.max(y3, y4).toFixed(2)) {\n return;\n }\n return {\n x: px,\n y: py,\n };\n};\nvar isPointInsideBBox = function (bbox, x, y) {\n return x >= bbox.x &&\n x <= bbox.x + bbox.width &&\n y >= bbox.y &&\n y <= bbox.y + bbox.height;\n};\nvar box = function (x, y, width, height) {\n if (x === null) {\n x = y = width = height = 0;\n }\n if (y === null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x: x,\n y: y,\n width: width,\n w: width,\n height: height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: Math.min(width, height) / 2,\n r2: Math.max(width, height) / 2,\n r0: Math.sqrt(width * width + height * height) / 2,\n path: Object(_rect_path__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(x, y, width, height),\n vb: [x, y, width, height].join(' '),\n };\n};\nvar isBBoxIntersect = function (bbox1, bbox2) {\n // @ts-ignore\n bbox1 = box(bbox1);\n // @ts-ignore\n bbox2 = box(bbox2);\n return isPointInsideBBox(bbox2, bbox1.x, bbox1.y) || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) || isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) || isPointInsideBBox(bbox1, bbox2.x, bbox2.y) || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) || isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) || (bbox1.x < bbox2.x2 && bbox1.x > bbox2.x || bbox2.x < bbox1.x2 && bbox2.x > bbox1.x) && (bbox1.y < bbox2.y2 && bbox1.y > bbox2.y || bbox2.y < bbox1.y2 && bbox2.y > bbox1.y);\n};\nvar bezierBBox = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(p1x)) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return box(bbox.min.x, bbox.min.y, bbox.max.x - bbox.min.x, bbox.max.y - bbox.min.y);\n};\nvar findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n var t13 = Math.pow(t1, 3);\n var t12 = Math.pow(t1, 2);\n var t2 = t * t;\n var t3 = t2 * t;\n var x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x;\n var y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y;\n var mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x);\n var my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y);\n var nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x);\n var ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y);\n var ax = t1 * p1x + t * c1x;\n var ay = t1 * p1y + t * c1y;\n var cx = t1 * c2x + t * p2x;\n var cy = t1 * c2y + t * p2y;\n var alpha = (90 - Math.atan2(mx - nx, my - ny) * 180 / Math.PI);\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {\n x: mx,\n y: my,\n },\n n: {\n x: nx,\n y: ny,\n },\n start: {\n x: ax,\n y: ay,\n },\n end: {\n x: cx,\n y: cy,\n },\n alpha: alpha,\n };\n};\nvar interHelper = function (bez1, bez2, justCount) {\n // @ts-ignore\n var bbox1 = bezierBBox(bez1);\n // @ts-ignore\n var bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1);\n var l2 = bezlen.apply(0, bez2);\n var n1 = ~~(l1 / 8);\n var n2 = ~~(l2 / 8);\n var dots1 = [];\n var dots2 = [];\n var xy = {};\n var res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({\n x: d.x,\n y: d.y,\n t: i / n1,\n });\n }\n for (var i = 0; i < n2 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({\n x: d.x,\n y: d.y,\n t: i / n2,\n });\n }\n for (var i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i];\n var di1 = dots1[i + 1];\n var dj = dots2[j];\n var dj1 = dots2[j + 1];\n var ci = Math.abs(di1.x - di.x) < 0.001 ? 'y' : 'x';\n var cj = Math.abs(dj1.x - dj.x) < 0.001 ? 'y' : 'x';\n var is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] === is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + Math.abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t);\n var t2 = dj.t + Math.abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n // @ts-ignore\n res++;\n }\n else {\n // @ts-ignore\n res.push({\n x: is.x,\n y: is.y,\n t1: t1,\n t2: t2,\n });\n }\n }\n }\n }\n }\n return res;\n};\nvar interPathHelper = function (path1, path2, justCount) {\n // @ts-ignore\n path1 = Object(_path_2_curve__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(path1);\n // @ts-ignore\n path2 = Object(_path_2_curve__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(path2);\n var x1;\n var y1;\n var x2;\n var y2;\n var x1m;\n var y1m;\n var x2m;\n var y2m;\n var bez1;\n var bez2;\n var res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] === 'M') {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n }\n else {\n if (pi[0] === 'C') {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n }\n else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] === 'M') {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n }\n else {\n if (pj[0] === 'C') {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n }\n else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n // @ts-ignore\n res += intr;\n }\n else {\n // @ts-ignore\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n // @ts-ignore\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n};\nfunction pathIntersection(path1, path2) {\n // @ts-ignore\n return interPathHelper(path1, path2);\n}\n//# sourceMappingURL=path-intersection.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLWludGVyc2VjdGlvbi5qcz8xZWI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDRjtBQUNLO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsMERBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMERBQU87QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxtQkFBbUIsWUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsdUJBQXVCLFFBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDZEQUFVO0FBQ3RCO0FBQ0EsWUFBWSw2REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLFFBQVE7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsUUFBUTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELFFBQVE7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLWludGVyc2VjdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCByZWN0UGF0aCBmcm9tICcuL3JlY3QtcGF0aCc7XG5pbXBvcnQgcGF0aDJDdXJ2ZSBmcm9tICcuL3BhdGgtMi1jdXJ2ZSc7XG52YXIgYmFzZTMgPSBmdW5jdGlvbiAodCwgcDEsIHAyLCBwMywgcDQpIHtcbiAgICB2YXIgdDEgPSAtMyAqIHAxICsgOSAqIHAyIC0gOSAqIHAzICsgMyAqIHA0O1xuICAgIHZhciB0MiA9IHQgKiB0MSArIDYgKiBwMSAtIDEyICogcDIgKyA2ICogcDM7XG4gICAgcmV0dXJuIHQgKiB0MiAtIDMgKiBwMSArIDMgKiBwMjtcbn07XG52YXIgYmV6bGVuID0gZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgeikge1xuICAgIGlmICh6ID09PSBudWxsKSB7XG4gICAgICAgIHogPSAxO1xuICAgIH1cbiAgICB6ID0geiA+IDEgPyAxIDogeiA8IDAgPyAwIDogejtcbiAgICB2YXIgejIgPSB6IC8gMjtcbiAgICB2YXIgbiA9IDEyO1xuICAgIHZhciBUdmFsdWVzID0gWy0wLjEyNTIsIDAuMTI1MiwgLTAuMzY3OCwgMC4zNjc4LCAtMC41ODczLCAwLjU4NzMsIC0wLjc2OTksIDAuNzY5OSwgLTAuOTA0MSwgMC45MDQxLCAtMC45ODE2LCAwLjk4MTZdO1xuICAgIHZhciBDdmFsdWVzID0gWzAuMjQ5MSwgMC4yNDkxLCAwLjIzMzUsIDAuMjMzNSwgMC4yMDMyLCAwLjIwMzIsIDAuMTYwMSwgMC4xNjAxLCAwLjEwNjksIDAuMTA2OSwgMC4wNDcyLCAwLjA0NzJdO1xuICAgIHZhciBzdW0gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIHZhciBjdCA9IHoyICogVHZhbHVlc1tpXSArIHoyO1xuICAgICAgICB2YXIgeGJhc2UgPSBiYXNlMyhjdCwgeDEsIHgyLCB4MywgeDQpO1xuICAgICAgICB2YXIgeWJhc2UgPSBiYXNlMyhjdCwgeTEsIHkyLCB5MywgeTQpO1xuICAgICAgICB2YXIgY29tYiA9IHhiYXNlICogeGJhc2UgKyB5YmFzZSAqIHliYXNlO1xuICAgICAgICBzdW0gKz0gQ3ZhbHVlc1tpXSAqIE1hdGguc3FydChjb21iKTtcbiAgICB9XG4gICAgcmV0dXJuIHoyICogc3VtO1xufTtcbnZhciBjdXJ2ZURpbSA9IGZ1bmN0aW9uICh4MCwgeTAsIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgICB2YXIgdHZhbHVlcyA9IFtdO1xuICAgIHZhciBib3VuZHMgPSBbXG4gICAgICAgIFtdLFxuICAgICAgICBbXSxcbiAgICBdO1xuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIHZhciBjO1xuICAgIHZhciB0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKSB7XG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICBiID0gNiAqIHgwIC0gMTIgKiB4MSArIDYgKiB4MjtcbiAgICAgICAgICAgIGEgPSAtMyAqIHgwICsgOSAqIHgxIC0gOSAqIHgyICsgMyAqIHgzO1xuICAgICAgICAgICAgYyA9IDMgKiB4MSAtIDMgKiB4MDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGIgPSA2ICogeTAgLSAxMiAqIHkxICsgNiAqIHkyO1xuICAgICAgICAgICAgYSA9IC0zICogeTAgKyA5ICogeTEgLSA5ICogeTIgKyAzICogeTM7XG4gICAgICAgICAgICBjID0gMyAqIHkxIC0gMyAqIHkwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyhhKSA8IDFlLTEyKSB7XG4gICAgICAgICAgICBpZiAoTWF0aC5hYnMoYikgPCAxZS0xMikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdCA9IC1jIC8gYjtcbiAgICAgICAgICAgIGlmICh0ID4gMCAmJiB0IDwgMSkge1xuICAgICAgICAgICAgICAgIHR2YWx1ZXMucHVzaCh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiMmFjID0gYiAqIGIgLSA0ICogYyAqIGE7XG4gICAgICAgIHZhciBzcXJ0YjJhYyA9IE1hdGguc3FydChiMmFjKTtcbiAgICAgICAgaWYgKGIyYWMgPCAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdDEgPSAoLWIgKyBzcXJ0YjJhYykgLyAoMiAqIGEpO1xuICAgICAgICBpZiAodDEgPiAwICYmIHQxIDwgMSkge1xuICAgICAgICAgICAgdHZhbHVlcy5wdXNoKHQxKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdDIgPSAoLWIgLSBzcXJ0YjJhYykgLyAoMiAqIGEpO1xuICAgICAgICBpZiAodDIgPiAwICYmIHQyIDwgMSkge1xuICAgICAgICAgICAgdHZhbHVlcy5wdXNoKHQyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgaiA9IHR2YWx1ZXMubGVuZ3RoO1xuICAgIHZhciBqbGVuID0gajtcbiAgICB2YXIgbXQ7XG4gICAgd2hpbGUgKGotLSkge1xuICAgICAgICB0ID0gdHZhbHVlc1tqXTtcbiAgICAgICAgbXQgPSAxIC0gdDtcbiAgICAgICAgYm91bmRzWzBdW2pdID0gKG10ICogbXQgKiBtdCAqIHgwKSArICgzICogbXQgKiBtdCAqIHQgKiB4MSkgKyAoMyAqIG10ICogdCAqIHQgKiB4MikgKyAodCAqIHQgKiB0ICogeDMpO1xuICAgICAgICBib3VuZHNbMV1bal0gPSAobXQgKiBtdCAqIG10ICogeTApICsgKDMgKiBtdCAqIG10ICogdCAqIHkxKSArICgzICogbXQgKiB0ICogdCAqIHkyKSArICh0ICogdCAqIHQgKiB5Myk7XG4gICAgfVxuICAgIGJvdW5kc1swXVtqbGVuXSA9IHgwO1xuICAgIGJvdW5kc1sxXVtqbGVuXSA9IHkwO1xuICAgIGJvdW5kc1swXVtqbGVuICsgMV0gPSB4MztcbiAgICBib3VuZHNbMV1bamxlbiArIDFdID0geTM7XG4gICAgYm91bmRzWzBdLmxlbmd0aCA9IGJvdW5kc1sxXS5sZW5ndGggPSBqbGVuICsgMjtcbiAgICByZXR1cm4ge1xuICAgICAgICBtaW46IHtcbiAgICAgICAgICAgIHg6IE1hdGgubWluLmFwcGx5KDAsIGJvdW5kc1swXSksXG4gICAgICAgICAgICB5OiBNYXRoLm1pbi5hcHBseSgwLCBib3VuZHNbMV0pLFxuICAgICAgICB9LFxuICAgICAgICBtYXg6IHtcbiAgICAgICAgICAgIHg6IE1hdGgubWF4LmFwcGx5KDAsIGJvdW5kc1swXSksXG4gICAgICAgICAgICB5OiBNYXRoLm1heC5hcHBseSgwLCBib3VuZHNbMV0pLFxuICAgICAgICB9LFxuICAgIH07XG59O1xudmFyIGludGVyc2VjdCA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQpIHtcbiAgICBpZiAoTWF0aC5tYXgoeDEsIHgyKSA8IE1hdGgubWluKHgzLCB4NCkgfHxcbiAgICAgICAgTWF0aC5taW4oeDEsIHgyKSA+IE1hdGgubWF4KHgzLCB4NCkgfHxcbiAgICAgICAgTWF0aC5tYXgoeTEsIHkyKSA8IE1hdGgubWluKHkzLCB5NCkgfHxcbiAgICAgICAgTWF0aC5taW4oeTEsIHkyKSA+IE1hdGgubWF4KHkzLCB5NCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbnggPSAoeDEgKiB5MiAtIHkxICogeDIpICogKHgzIC0geDQpIC0gKHgxIC0geDIpICogKHgzICogeTQgLSB5MyAqIHg0KTtcbiAgICB2YXIgbnkgPSAoeDEgKiB5MiAtIHkxICogeDIpICogKHkzIC0geTQpIC0gKHkxIC0geTIpICogKHgzICogeTQgLSB5MyAqIHg0KTtcbiAgICB2YXIgZGVub21pbmF0b3IgPSAoeDEgLSB4MikgKiAoeTMgLSB5NCkgLSAoeTEgLSB5MikgKiAoeDMgLSB4NCk7XG4gICAgaWYgKCFkZW5vbWluYXRvcikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBweCA9IG54IC8gZGVub21pbmF0b3I7XG4gICAgdmFyIHB5ID0gbnkgLyBkZW5vbWluYXRvcjtcbiAgICB2YXIgcHgyID0gK3B4LnRvRml4ZWQoMik7XG4gICAgdmFyIHB5MiA9ICtweS50b0ZpeGVkKDIpO1xuICAgIGlmIChweDIgPCArTWF0aC5taW4oeDEsIHgyKS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB4MiA+ICtNYXRoLm1heCh4MSwgeDIpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHgyIDwgK01hdGgubWluKHgzLCB4NCkudG9GaXhlZCgyKSB8fFxuICAgICAgICBweDIgPiArTWF0aC5tYXgoeDMsIHg0KS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB5MiA8ICtNYXRoLm1pbih5MSwgeTIpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHkyID4gK01hdGgubWF4KHkxLCB5MikudG9GaXhlZCgyKSB8fFxuICAgICAgICBweTIgPCArTWF0aC5taW4oeTMsIHk0KS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB5MiA+ICtNYXRoLm1heCh5MywgeTQpLnRvRml4ZWQoMikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBweCxcbiAgICAgICAgeTogcHksXG4gICAgfTtcbn07XG52YXIgaXNQb2ludEluc2lkZUJCb3ggPSBmdW5jdGlvbiAoYmJveCwgeCwgeSkge1xuICAgIHJldHVybiB4ID49IGJib3gueCAmJlxuICAgICAgICB4IDw9IGJib3gueCArIGJib3gud2lkdGggJiZcbiAgICAgICAgeSA+PSBiYm94LnkgJiZcbiAgICAgICAgeSA8PSBiYm94LnkgKyBiYm94LmhlaWdodDtcbn07XG52YXIgYm94ID0gZnVuY3Rpb24gKHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICBpZiAoeCA9PT0gbnVsbCkge1xuICAgICAgICB4ID0geSA9IHdpZHRoID0gaGVpZ2h0ID0gMDtcbiAgICB9XG4gICAgaWYgKHkgPT09IG51bGwpIHtcbiAgICAgICAgeSA9IHgueTtcbiAgICAgICAgd2lkdGggPSB4LndpZHRoO1xuICAgICAgICBoZWlnaHQgPSB4LmhlaWdodDtcbiAgICAgICAgeCA9IHgueDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICB3OiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIGg6IGhlaWdodCxcbiAgICAgICAgeDI6IHggKyB3aWR0aCxcbiAgICAgICAgeTI6IHkgKyBoZWlnaHQsXG4gICAgICAgIGN4OiB4ICsgd2lkdGggLyAyLFxuICAgICAgICBjeTogeSArIGhlaWdodCAvIDIsXG4gICAgICAgIHIxOiBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KSAvIDIsXG4gICAgICAgIHIyOiBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KSAvIDIsXG4gICAgICAgIHIwOiBNYXRoLnNxcnQod2lkdGggKiB3aWR0aCArIGhlaWdodCAqIGhlaWdodCkgLyAyLFxuICAgICAgICBwYXRoOiByZWN0UGF0aCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSxcbiAgICAgICAgdmI6IFt4LCB5LCB3aWR0aCwgaGVpZ2h0XS5qb2luKCcgJyksXG4gICAgfTtcbn07XG52YXIgaXNCQm94SW50ZXJzZWN0ID0gZnVuY3Rpb24gKGJib3gxLCBiYm94Mikge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBiYm94MSA9IGJveChiYm94MSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGJib3gyID0gYm94KGJib3gyKTtcbiAgICByZXR1cm4gaXNQb2ludEluc2lkZUJCb3goYmJveDIsIGJib3gxLngsIGJib3gxLnkpIHx8IGlzUG9pbnRJbnNpZGVCQm94KGJib3gyLCBiYm94MS54MiwgYmJveDEueSkgfHwgaXNQb2ludEluc2lkZUJCb3goYmJveDIsIGJib3gxLngsIGJib3gxLnkyKSB8fCBpc1BvaW50SW5zaWRlQkJveChiYm94MiwgYmJveDEueDIsIGJib3gxLnkyKSB8fCBpc1BvaW50SW5zaWRlQkJveChiYm94MSwgYmJveDIueCwgYmJveDIueSkgfHwgaXNQb2ludEluc2lkZUJCb3goYmJveDEsIGJib3gyLngyLCBiYm94Mi55KSB8fCBpc1BvaW50SW5zaWRlQkJveChiYm94MSwgYmJveDIueCwgYmJveDIueTIpIHx8IGlzUG9pbnRJbnNpZGVCQm94KGJib3gxLCBiYm94Mi54MiwgYmJveDIueTIpIHx8IChiYm94MS54IDwgYmJveDIueDIgJiYgYmJveDEueCA+IGJib3gyLnggfHwgYmJveDIueCA8IGJib3gxLngyICYmIGJib3gyLnggPiBiYm94MS54KSAmJiAoYmJveDEueSA8IGJib3gyLnkyICYmIGJib3gxLnkgPiBiYm94Mi55IHx8IGJib3gyLnkgPCBiYm94MS55MiAmJiBiYm94Mi55ID4gYmJveDEueSk7XG59O1xudmFyIGJlemllckJCb3ggPSBmdW5jdGlvbiAocDF4LCBwMXksIGMxeCwgYzF5LCBjMngsIGMyeSwgcDJ4LCBwMnkpIHtcbiAgICBpZiAoIWlzQXJyYXkocDF4KSkge1xuICAgICAgICBwMXggPSBbcDF4LCBwMXksIGMxeCwgYzF5LCBjMngsIGMyeSwgcDJ4LCBwMnldO1xuICAgIH1cbiAgICB2YXIgYmJveCA9IGN1cnZlRGltLmFwcGx5KG51bGwsIHAxeCk7XG4gICAgcmV0dXJuIGJveChiYm94Lm1pbi54LCBiYm94Lm1pbi55LCBiYm94Lm1heC54IC0gYmJveC5taW4ueCwgYmJveC5tYXgueSAtIGJib3gubWluLnkpO1xufTtcbnZhciBmaW5kRG90c0F0U2VnbWVudCA9IGZ1bmN0aW9uIChwMXgsIHAxeSwgYzF4LCBjMXksIGMyeCwgYzJ5LCBwMngsIHAyeSwgdCkge1xuICAgIHZhciB0MSA9IDEgLSB0O1xuICAgIHZhciB0MTMgPSBNYXRoLnBvdyh0MSwgMyk7XG4gICAgdmFyIHQxMiA9IE1hdGgucG93KHQxLCAyKTtcbiAgICB2YXIgdDIgPSB0ICogdDtcbiAgICB2YXIgdDMgPSB0MiAqIHQ7XG4gICAgdmFyIHggPSB0MTMgKiBwMXggKyB0MTIgKiAzICogdCAqIGMxeCArIHQxICogMyAqIHQgKiB0ICogYzJ4ICsgdDMgKiBwMng7XG4gICAgdmFyIHkgPSB0MTMgKiBwMXkgKyB0MTIgKiAzICogdCAqIGMxeSArIHQxICogMyAqIHQgKiB0ICogYzJ5ICsgdDMgKiBwMnk7XG4gICAgdmFyIG14ID0gcDF4ICsgMiAqIHQgKiAoYzF4IC0gcDF4KSArIHQyICogKGMyeCAtIDIgKiBjMXggKyBwMXgpO1xuICAgIHZhciBteSA9IHAxeSArIDIgKiB0ICogKGMxeSAtIHAxeSkgKyB0MiAqIChjMnkgLSAyICogYzF5ICsgcDF5KTtcbiAgICB2YXIgbnggPSBjMXggKyAyICogdCAqIChjMnggLSBjMXgpICsgdDIgKiAocDJ4IC0gMiAqIGMyeCArIGMxeCk7XG4gICAgdmFyIG55ID0gYzF5ICsgMiAqIHQgKiAoYzJ5IC0gYzF5KSArIHQyICogKHAyeSAtIDIgKiBjMnkgKyBjMXkpO1xuICAgIHZhciBheCA9IHQxICogcDF4ICsgdCAqIGMxeDtcbiAgICB2YXIgYXkgPSB0MSAqIHAxeSArIHQgKiBjMXk7XG4gICAgdmFyIGN4ID0gdDEgKiBjMnggKyB0ICogcDJ4O1xuICAgIHZhciBjeSA9IHQxICogYzJ5ICsgdCAqIHAyeTtcbiAgICB2YXIgYWxwaGEgPSAoOTAgLSBNYXRoLmF0YW4yKG14IC0gbngsIG15IC0gbnkpICogMTgwIC8gTWF0aC5QSSk7XG4gICAgLy8gKG14ID4gbnggfHwgbXkgPCBueSkgJiYgKGFscGhhICs9IDE4MCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgbToge1xuICAgICAgICAgICAgeDogbXgsXG4gICAgICAgICAgICB5OiBteSxcbiAgICAgICAgfSxcbiAgICAgICAgbjoge1xuICAgICAgICAgICAgeDogbngsXG4gICAgICAgICAgICB5OiBueSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgIHg6IGF4LFxuICAgICAgICAgICAgeTogYXksXG4gICAgICAgIH0sXG4gICAgICAgIGVuZDoge1xuICAgICAgICAgICAgeDogY3gsXG4gICAgICAgICAgICB5OiBjeSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxwaGE6IGFscGhhLFxuICAgIH07XG59O1xudmFyIGludGVySGVscGVyID0gZnVuY3Rpb24gKGJlejEsIGJlejIsIGp1c3RDb3VudCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgYmJveDEgPSBiZXppZXJCQm94KGJlejEpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgYmJveDIgPSBiZXppZXJCQm94KGJlejIpO1xuICAgIGlmICghaXNCQm94SW50ZXJzZWN0KGJib3gxLCBiYm94MikpIHtcbiAgICAgICAgcmV0dXJuIGp1c3RDb3VudCA/IDAgOiBbXTtcbiAgICB9XG4gICAgdmFyIGwxID0gYmV6bGVuLmFwcGx5KDAsIGJlejEpO1xuICAgIHZhciBsMiA9IGJlemxlbi5hcHBseSgwLCBiZXoyKTtcbiAgICB2YXIgbjEgPSB+fihsMSAvIDgpO1xuICAgIHZhciBuMiA9IH5+KGwyIC8gOCk7XG4gICAgdmFyIGRvdHMxID0gW107XG4gICAgdmFyIGRvdHMyID0gW107XG4gICAgdmFyIHh5ID0ge307XG4gICAgdmFyIHJlcyA9IGp1c3RDb3VudCA/IDAgOiBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4xICsgMTsgaSsrKSB7XG4gICAgICAgIHZhciBkID0gZmluZERvdHNBdFNlZ21lbnQuYXBwbHkoMCwgYmV6MS5jb25jYXQoaSAvIG4xKSk7XG4gICAgICAgIGRvdHMxLnB1c2goe1xuICAgICAgICAgICAgeDogZC54LFxuICAgICAgICAgICAgeTogZC55LFxuICAgICAgICAgICAgdDogaSAvIG4xLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuMiArIDE7IGkrKykge1xuICAgICAgICB2YXIgZCA9IGZpbmREb3RzQXRTZWdtZW50LmFwcGx5KDAsIGJlejIuY29uY2F0KGkgLyBuMikpO1xuICAgICAgICBkb3RzMi5wdXNoKHtcbiAgICAgICAgICAgIHg6IGQueCxcbiAgICAgICAgICAgIHk6IGQueSxcbiAgICAgICAgICAgIHQ6IGkgLyBuMixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjE7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG4yOyBqKyspIHtcbiAgICAgICAgICAgIHZhciBkaSA9IGRvdHMxW2ldO1xuICAgICAgICAgICAgdmFyIGRpMSA9IGRvdHMxW2kgKyAxXTtcbiAgICAgICAgICAgIHZhciBkaiA9IGRvdHMyW2pdO1xuICAgICAgICAgICAgdmFyIGRqMSA9IGRvdHMyW2ogKyAxXTtcbiAgICAgICAgICAgIHZhciBjaSA9IE1hdGguYWJzKGRpMS54IC0gZGkueCkgPCAwLjAwMSA/ICd5JyA6ICd4JztcbiAgICAgICAgICAgIHZhciBjaiA9IE1hdGguYWJzKGRqMS54IC0gZGoueCkgPCAwLjAwMSA/ICd5JyA6ICd4JztcbiAgICAgICAgICAgIHZhciBpcyA9IGludGVyc2VjdChkaS54LCBkaS55LCBkaTEueCwgZGkxLnksIGRqLngsIGRqLnksIGRqMS54LCBkajEueSk7XG4gICAgICAgICAgICBpZiAoaXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoeHlbaXMueC50b0ZpeGVkKDQpXSA9PT0gaXMueS50b0ZpeGVkKDQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4eVtpcy54LnRvRml4ZWQoNCldID0gaXMueS50b0ZpeGVkKDQpO1xuICAgICAgICAgICAgICAgIHZhciB0MSA9IGRpLnQgKyBNYXRoLmFicygoaXNbY2ldIC0gZGlbY2ldKSAvIChkaTFbY2ldIC0gZGlbY2ldKSkgKiAoZGkxLnQgLSBkaS50KTtcbiAgICAgICAgICAgICAgICB2YXIgdDIgPSBkai50ICsgTWF0aC5hYnMoKGlzW2NqXSAtIGRqW2NqXSkgLyAoZGoxW2NqXSAtIGRqW2NqXSkpICogKGRqMS50IC0gZGoudCk7XG4gICAgICAgICAgICAgICAgaWYgKHQxID49IDAgJiYgdDEgPD0gMSAmJiB0MiA+PSAwICYmIHQyIDw9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGp1c3RDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaXMueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBpcy55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQxOiB0MSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0MjogdDIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBpbnRlclBhdGhIZWxwZXIgPSBmdW5jdGlvbiAocGF0aDEsIHBhdGgyLCBqdXN0Q291bnQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcGF0aDEgPSBwYXRoMkN1cnZlKHBhdGgxKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcGF0aDIgPSBwYXRoMkN1cnZlKHBhdGgyKTtcbiAgICB2YXIgeDE7XG4gICAgdmFyIHkxO1xuICAgIHZhciB4MjtcbiAgICB2YXIgeTI7XG4gICAgdmFyIHgxbTtcbiAgICB2YXIgeTFtO1xuICAgIHZhciB4Mm07XG4gICAgdmFyIHkybTtcbiAgICB2YXIgYmV6MTtcbiAgICB2YXIgYmV6MjtcbiAgICB2YXIgcmVzID0ganVzdENvdW50ID8gMCA6IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHBhdGgxLmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgICAgdmFyIHBpID0gcGF0aDFbaV07XG4gICAgICAgIGlmIChwaVswXSA9PT0gJ00nKSB7XG4gICAgICAgICAgICB4MSA9IHgxbSA9IHBpWzFdO1xuICAgICAgICAgICAgeTEgPSB5MW0gPSBwaVsyXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwaVswXSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgYmV6MSA9IFt4MSwgeTFdLmNvbmNhdChwaS5zbGljZSgxKSk7XG4gICAgICAgICAgICAgICAgeDEgPSBiZXoxWzZdO1xuICAgICAgICAgICAgICAgIHkxID0gYmV6MVs3XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJlejEgPSBbeDEsIHkxLCB4MSwgeTEsIHgxbSwgeTFtLCB4MW0sIHkxbV07XG4gICAgICAgICAgICAgICAgeDEgPSB4MW07XG4gICAgICAgICAgICAgICAgeTEgPSB5MW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMCwgamogPSBwYXRoMi5sZW5ndGg7IGogPCBqajsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBqID0gcGF0aDJbal07XG4gICAgICAgICAgICAgICAgaWYgKHBqWzBdID09PSAnTScpIHtcbiAgICAgICAgICAgICAgICAgICAgeDIgPSB4Mm0gPSBwalsxXTtcbiAgICAgICAgICAgICAgICAgICAgeTIgPSB5Mm0gPSBwalsyXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwalswXSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXoyID0gW3gyLCB5Ml0uY29uY2F0KHBqLnNsaWNlKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHgyID0gYmV6Mls2XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkyID0gYmV6Mls3XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlejIgPSBbeDIsIHkyLCB4MiwgeTIsIHgybSwgeTJtLCB4Mm0sIHkybV07XG4gICAgICAgICAgICAgICAgICAgICAgICB4MiA9IHgybTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkyID0geTJtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnRyID0gaW50ZXJIZWxwZXIoYmV6MSwgYmV6MiwganVzdENvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGp1c3RDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IGludHI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMCwga2sgPSBpbnRyLmxlbmd0aDsgayA8IGtrOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLnNlZ21lbnQxID0gaTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLnNlZ21lbnQyID0gajtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLmJlejEgPSBiZXoxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJba10uYmV6MiA9IGJlejI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGludHIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGF0aEludGVyc2VjdGlvbihwYXRoMSwgcGF0aDIpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGludGVyUGF0aEhlbHBlcihwYXRoMSwgcGF0aDIpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC1pbnRlcnNlY3Rpb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/path-intersection.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/point-in-polygon.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/point-in-polygon.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isInPolygon; });\n/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nfunction isInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 &&\n dcmp(x - ((y - p1[1]) * (p1[0] - p2[0])) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}\n//# sourceMappingURL=point-in-polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wb2ludC1pbi1wb2x5Z29uLmpzPzIyMmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9wYXRoLXV0aWwvZXNtL3BvaW50LWluLXBvbHlnb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5Yik5pat54K55piv5ZCm5Zyo5aSa6L655b2i5YaFXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuLy8g5aSa6L655b2i55qE5bCE57q/5qOA5rWL77yM5Y+C6ICD77yaaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dpbGxpYW1TdW4wMTIyL2FydGljbGUvZGV0YWlscy83Nzk5NDUyNlxudmFyIHRvbGVyYW5jZSA9IDFlLTY7XG4vLyDkuInmgIHlh73mlbDvvIzliKTmlq3kuKTkuKpkb3VibGXlnKhlcHPnsr7luqbkuIvnmoTlpKflsI/lhbPns7tcbmZ1bmN0aW9uIGRjbXAoeCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IHRvbGVyYW5jZSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHggPCAwID8gLTEgOiAxO1xufVxuLy8g5Yik5pat54K5UeaYr+WQpuWcqHAx5ZKMcDLnmoTnur/mrrXkuIpcbmZ1bmN0aW9uIG9uU2VnbWVudChwMSwgcDIsIHEpIHtcbiAgICBpZiAoKHFbMF0gLSBwMVswXSkgKiAocDJbMV0gLSBwMVsxXSkgPT09IChwMlswXSAtIHAxWzBdKSAqIChxWzFdIC0gcDFbMV0pICYmXG4gICAgICAgIE1hdGgubWluKHAxWzBdLCBwMlswXSkgPD0gcVswXSAmJlxuICAgICAgICBxWzBdIDw9IE1hdGgubWF4KHAxWzBdLCBwMlswXSkgJiZcbiAgICAgICAgTWF0aC5taW4ocDFbMV0sIHAyWzFdKSA8PSBxWzFdICYmXG4gICAgICAgIHFbMV0gPD0gTWF0aC5tYXgocDFbMV0sIHAyWzFdKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLy8g5Yik5pat54K5UOWcqOWkmui+ueW9ouWGhS3lsITnur/ms5VcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzSW5Qb2x5Z29uKHBvaW50cywgeCwgeSkge1xuICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgIHZhciBuID0gcG9pbnRzLmxlbmd0aDtcbiAgICBpZiAobiA8PSAyKSB7XG4gICAgICAgIC8vIHN2ZyDkuK3ngrnlsI/kuo4gMyDkuKrml7bvvIzkuI3mmL7npLrvvIzkuZ/ml6Dms5Xooqvmi77lj5ZcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICB2YXIgcDEgPSBwb2ludHNbaV07XG4gICAgICAgIHZhciBwMiA9IHBvaW50c1soaSArIDEpICUgbl07XG4gICAgICAgIGlmIChvblNlZ21lbnQocDEsIHAyLCBbeCwgeV0pKSB7XG4gICAgICAgICAgICAvLyDngrnlnKjlpJrovrnlvaLkuIDmnaHovrnkuIpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWJjeS4gOS4quWIpOaWrW1pbihwMVsxXSxwMlsxXSk8UC55PD1tYXgocDFbMV0scDJbMV0pXG4gICAgICAgIC8vIOWQjuS4gOS4quWIpOaWreiiq+a1i+eCuSDlnKgg5bCE57q/5LiO6L655Lqk54K5IOeahOW3pui+uVxuICAgICAgICBpZiAoZGNtcChwMVsxXSAtIHkpID4gMCAhPT0gZGNtcChwMlsxXSAtIHkpID4gMCAmJlxuICAgICAgICAgICAgZGNtcCh4IC0gKCh5IC0gcDFbMV0pICogKHAxWzBdIC0gcDJbMF0pKSAvIChwMVsxXSAtIHAyWzFdKSAtIHAxWzBdKSA8IDApIHtcbiAgICAgICAgICAgIGlzSGl0ID0gIWlzSGl0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc0hpdDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvaW50LWluLXBvbHlnb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/point-in-polygon.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/process/arc-2-cubic.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/process/arc-2-cubic.js ***! \*****************************************************************/ /*! exports provided: arcToCubic */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"arcToCubic\", function() { return arcToCubic; });\nvar TAU = Math.PI * 2;\nvar mapToEllipse = function (_a, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _a.x, y = _a.y;\n x *= rx;\n y *= ry;\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\nvar approxUnitArc = function (ang1, ang2) {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n var a = ang2 === 1.5707963267948966\n ? 0.551915024494\n : ang2 === -1.5707963267948966\n ? -0.551915024494\n : 4 / 3 * Math.tan(ang2 / 4);\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n return [\n {\n x: x1 - y1 * a,\n y: y1 + x1 * a\n },\n {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n },\n {\n x: x2,\n y: y2\n }\n ];\n};\nvar vectorAngle = function (ux, uy, vx, vy) {\n var sign = (ux * vy - uy * vx < 0) ? -1 : 1;\n var dot = ux * vx + uy * vy;\n if (dot > 1) {\n dot = 1;\n }\n if (dot < -1) {\n dot = -1;\n }\n return sign * Math.acos(dot);\n};\nvar getArcCenter = function (px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n var radicant = (rxsq * rysq) - (rxsq * pypsq) - (rysq * pxpsq);\n if (radicant < 0) {\n radicant = 0;\n }\n radicant /= (rxsq * pypsq) + (rysq * pxpsq);\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n return [centerx, centery, ang1, ang2];\n};\nvar arcToBezier = function (_a) {\n var px = _a.px, py = _a.py, cx = _a.cx, cy = _a.cy, rx = _a.rx, ry = _a.ry, _b = _a.xAxisRotation, xAxisRotation = _b === void 0 ? 0 : _b, _c = _a.largeArcFlag, largeArcFlag = _c === void 0 ? 0 : _c, _d = _a.sweepFlag, sweepFlag = _d === void 0 ? 0 : _d;\n var curves = [];\n if (rx === 0 || ry === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n if (pxp === 0 && pyp === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) +\n Math.pow(pyp, 2) / Math.pow(ry, 2);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var _e = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp), centerx = _e[0], centery = _e[1], ang1 = _e[2], ang2 = _e[3];\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0;\n }\n var segments = Math.max(Math.ceil(ratio), 1);\n ang2 /= segments;\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n return curves.map(function (curve) {\n var _a = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery), x1 = _a.x, y1 = _a.y;\n var _b = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery), x2 = _b.x, y2 = _b.y;\n var _c = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery), x = _c.x, y = _c.y;\n return { x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y };\n });\n};\nfunction arcToCubic(x1, y1, rx, ry, angle, LAF, SF, x2, y2) {\n var curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx: rx,\n ry: ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF,\n });\n return curves.reduce(function (prev, cur) {\n var x1 = cur.x1, y1 = cur.y1, x2 = cur.x2, y2 = cur.y2, x = cur.x, y = cur.y;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, []);\n}\n//# sourceMappingURL=arc-2-cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL2FyYy0yLWN1YmljLmpzP2FmMjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJDQUEyQztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkNBQTJDO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQixLQUFLO0FBQ0w7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL2FyYy0yLWN1YmljLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFRBVSA9IE1hdGguUEkgKiAyO1xudmFyIG1hcFRvRWxsaXBzZSA9IGZ1bmN0aW9uIChfYSwgcngsIHJ5LCBjb3NwaGksIHNpbnBoaSwgY2VudGVyeCwgY2VudGVyeSkge1xuICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgeCAqPSByeDtcbiAgICB5ICo9IHJ5O1xuICAgIHZhciB4cCA9IGNvc3BoaSAqIHggLSBzaW5waGkgKiB5O1xuICAgIHZhciB5cCA9IHNpbnBoaSAqIHggKyBjb3NwaGkgKiB5O1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHhwICsgY2VudGVyeCxcbiAgICAgICAgeTogeXAgKyBjZW50ZXJ5XG4gICAgfTtcbn07XG52YXIgYXBwcm94VW5pdEFyYyA9IGZ1bmN0aW9uIChhbmcxLCBhbmcyKSB7XG4gICAgLy8gSWYgOTAgZGVncmVlIGNpcmN1bGFyIGFyYywgdXNlIGEgY29uc3RhbnRcbiAgICAvLyBhcyBkZXJpdmVkIGZyb20gaHR0cDovL3NwZW5jZXJtb3J0ZW5zZW4uY29tL2FydGljbGVzL2Jlemllci1jaXJjbGVcbiAgICB2YXIgYSA9IGFuZzIgPT09IDEuNTcwNzk2MzI2Nzk0ODk2NlxuICAgICAgICA/IDAuNTUxOTE1MDI0NDk0XG4gICAgICAgIDogYW5nMiA9PT0gLTEuNTcwNzk2MzI2Nzk0ODk2NlxuICAgICAgICAgICAgPyAtMC41NTE5MTUwMjQ0OTRcbiAgICAgICAgICAgIDogNCAvIDMgKiBNYXRoLnRhbihhbmcyIC8gNCk7XG4gICAgdmFyIHgxID0gTWF0aC5jb3MoYW5nMSk7XG4gICAgdmFyIHkxID0gTWF0aC5zaW4oYW5nMSk7XG4gICAgdmFyIHgyID0gTWF0aC5jb3MoYW5nMSArIGFuZzIpO1xuICAgIHZhciB5MiA9IE1hdGguc2luKGFuZzEgKyBhbmcyKTtcbiAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgICB4OiB4MSAtIHkxICogYSxcbiAgICAgICAgICAgIHk6IHkxICsgeDEgKiBhXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHg6IHgyICsgeTIgKiBhLFxuICAgICAgICAgICAgeTogeTIgLSB4MiAqIGFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgeDogeDIsXG4gICAgICAgICAgICB5OiB5MlxuICAgICAgICB9XG4gICAgXTtcbn07XG52YXIgdmVjdG9yQW5nbGUgPSBmdW5jdGlvbiAodXgsIHV5LCB2eCwgdnkpIHtcbiAgICB2YXIgc2lnbiA9ICh1eCAqIHZ5IC0gdXkgKiB2eCA8IDApID8gLTEgOiAxO1xuICAgIHZhciBkb3QgPSB1eCAqIHZ4ICsgdXkgKiB2eTtcbiAgICBpZiAoZG90ID4gMSkge1xuICAgICAgICBkb3QgPSAxO1xuICAgIH1cbiAgICBpZiAoZG90IDwgLTEpIHtcbiAgICAgICAgZG90ID0gLTE7XG4gICAgfVxuICAgIHJldHVybiBzaWduICogTWF0aC5hY29zKGRvdCk7XG59O1xudmFyIGdldEFyY0NlbnRlciA9IGZ1bmN0aW9uIChweCwgcHksIGN4LCBjeSwgcngsIHJ5LCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZywgc2lucGhpLCBjb3NwaGksIHB4cCwgcHlwKSB7XG4gICAgdmFyIHJ4c3EgPSBNYXRoLnBvdyhyeCwgMik7XG4gICAgdmFyIHJ5c3EgPSBNYXRoLnBvdyhyeSwgMik7XG4gICAgdmFyIHB4cHNxID0gTWF0aC5wb3cocHhwLCAyKTtcbiAgICB2YXIgcHlwc3EgPSBNYXRoLnBvdyhweXAsIDIpO1xuICAgIHZhciByYWRpY2FudCA9IChyeHNxICogcnlzcSkgLSAocnhzcSAqIHB5cHNxKSAtIChyeXNxICogcHhwc3EpO1xuICAgIGlmIChyYWRpY2FudCA8IDApIHtcbiAgICAgICAgcmFkaWNhbnQgPSAwO1xuICAgIH1cbiAgICByYWRpY2FudCAvPSAocnhzcSAqIHB5cHNxKSArIChyeXNxICogcHhwc3EpO1xuICAgIHJhZGljYW50ID0gTWF0aC5zcXJ0KHJhZGljYW50KSAqIChsYXJnZUFyY0ZsYWcgPT09IHN3ZWVwRmxhZyA/IC0xIDogMSk7XG4gICAgdmFyIGNlbnRlcnhwID0gcmFkaWNhbnQgKiByeCAvIHJ5ICogcHlwO1xuICAgIHZhciBjZW50ZXJ5cCA9IHJhZGljYW50ICogLXJ5IC8gcnggKiBweHA7XG4gICAgdmFyIGNlbnRlcnggPSBjb3NwaGkgKiBjZW50ZXJ4cCAtIHNpbnBoaSAqIGNlbnRlcnlwICsgKHB4ICsgY3gpIC8gMjtcbiAgICB2YXIgY2VudGVyeSA9IHNpbnBoaSAqIGNlbnRlcnhwICsgY29zcGhpICogY2VudGVyeXAgKyAocHkgKyBjeSkgLyAyO1xuICAgIHZhciB2eDEgPSAocHhwIC0gY2VudGVyeHApIC8gcng7XG4gICAgdmFyIHZ5MSA9IChweXAgLSBjZW50ZXJ5cCkgLyByeTtcbiAgICB2YXIgdngyID0gKC1weHAgLSBjZW50ZXJ4cCkgLyByeDtcbiAgICB2YXIgdnkyID0gKC1weXAgLSBjZW50ZXJ5cCkgLyByeTtcbiAgICB2YXIgYW5nMSA9IHZlY3RvckFuZ2xlKDEsIDAsIHZ4MSwgdnkxKTtcbiAgICB2YXIgYW5nMiA9IHZlY3RvckFuZ2xlKHZ4MSwgdnkxLCB2eDIsIHZ5Mik7XG4gICAgaWYgKHN3ZWVwRmxhZyA9PT0gMCAmJiBhbmcyID4gMCkge1xuICAgICAgICBhbmcyIC09IFRBVTtcbiAgICB9XG4gICAgaWYgKHN3ZWVwRmxhZyA9PT0gMSAmJiBhbmcyIDwgMCkge1xuICAgICAgICBhbmcyICs9IFRBVTtcbiAgICB9XG4gICAgcmV0dXJuIFtjZW50ZXJ4LCBjZW50ZXJ5LCBhbmcxLCBhbmcyXTtcbn07XG52YXIgYXJjVG9CZXppZXIgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgcHggPSBfYS5weCwgcHkgPSBfYS5weSwgY3ggPSBfYS5jeCwgY3kgPSBfYS5jeSwgcnggPSBfYS5yeCwgcnkgPSBfYS5yeSwgX2IgPSBfYS54QXhpc1JvdGF0aW9uLCB4QXhpc1JvdGF0aW9uID0gX2IgPT09IHZvaWQgMCA/IDAgOiBfYiwgX2MgPSBfYS5sYXJnZUFyY0ZsYWcsIGxhcmdlQXJjRmxhZyA9IF9jID09PSB2b2lkIDAgPyAwIDogX2MsIF9kID0gX2Euc3dlZXBGbGFnLCBzd2VlcEZsYWcgPSBfZCA9PT0gdm9pZCAwID8gMCA6IF9kO1xuICAgIHZhciBjdXJ2ZXMgPSBbXTtcbiAgICBpZiAocnggPT09IDAgfHwgcnkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFt7IHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAwLCB4OiBjeCwgeTogY3kgfV07XG4gICAgfVxuICAgIHZhciBzaW5waGkgPSBNYXRoLnNpbih4QXhpc1JvdGF0aW9uICogVEFVIC8gMzYwKTtcbiAgICB2YXIgY29zcGhpID0gTWF0aC5jb3MoeEF4aXNSb3RhdGlvbiAqIFRBVSAvIDM2MCk7XG4gICAgdmFyIHB4cCA9IGNvc3BoaSAqIChweCAtIGN4KSAvIDIgKyBzaW5waGkgKiAocHkgLSBjeSkgLyAyO1xuICAgIHZhciBweXAgPSAtc2lucGhpICogKHB4IC0gY3gpIC8gMiArIGNvc3BoaSAqIChweSAtIGN5KSAvIDI7XG4gICAgaWYgKHB4cCA9PT0gMCAmJiBweXAgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFt7IHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAwLCB4OiBjeCwgeTogY3kgfV07XG4gICAgfVxuICAgIHJ4ID0gTWF0aC5hYnMocngpO1xuICAgIHJ5ID0gTWF0aC5hYnMocnkpO1xuICAgIHZhciBsYW1iZGEgPSBNYXRoLnBvdyhweHAsIDIpIC8gTWF0aC5wb3cocngsIDIpICtcbiAgICAgICAgTWF0aC5wb3cocHlwLCAyKSAvIE1hdGgucG93KHJ5LCAyKTtcbiAgICBpZiAobGFtYmRhID4gMSkge1xuICAgICAgICByeCAqPSBNYXRoLnNxcnQobGFtYmRhKTtcbiAgICAgICAgcnkgKj0gTWF0aC5zcXJ0KGxhbWJkYSk7XG4gICAgfVxuICAgIHZhciBfZSA9IGdldEFyY0NlbnRlcihweCwgcHksIGN4LCBjeSwgcngsIHJ5LCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZywgc2lucGhpLCBjb3NwaGksIHB4cCwgcHlwKSwgY2VudGVyeCA9IF9lWzBdLCBjZW50ZXJ5ID0gX2VbMV0sIGFuZzEgPSBfZVsyXSwgYW5nMiA9IF9lWzNdO1xuICAgIC8vIElmICdhbmcyJyA9PSA5MC4wMDAwMDAwMDAxLCB0aGVuIGByYXRpb2Agd2lsbCBldmFsdWF0ZSB0b1xuICAgIC8vIDEuMDAwMDAwMDAwMS4gVGhpcyBjYXVzZXMgYHNlZ21lbnRzYCB0byBiZSBncmVhdGVyIHRoYW4gb25lLCB3aGljaCBpcyBhblxuICAgIC8vIHVuZWNlc3Nhcnkgc3BsaXQsIGFuZCBhZGRzIGV4dHJhIHBvaW50cyB0byB0aGUgYmV6aWVyIGN1cnZlLiBUbyBhbGxldmlhdGVcbiAgICAvLyB0aGlzIGlzc3VlLCB3ZSByb3VuZCB0byAxLjAgd2hlbiB0aGUgcmF0aW8gaXMgY2xvc2UgdG8gMS4wLlxuICAgIHZhciByYXRpbyA9IE1hdGguYWJzKGFuZzIpIC8gKFRBVSAvIDQpO1xuICAgIGlmIChNYXRoLmFicygxLjAgLSByYXRpbykgPCAwLjAwMDAwMDEpIHtcbiAgICAgICAgcmF0aW8gPSAxLjA7XG4gICAgfVxuICAgIHZhciBzZWdtZW50cyA9IE1hdGgubWF4KE1hdGguY2VpbChyYXRpbyksIDEpO1xuICAgIGFuZzIgLz0gc2VnbWVudHM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50czsgaSsrKSB7XG4gICAgICAgIGN1cnZlcy5wdXNoKGFwcHJveFVuaXRBcmMoYW5nMSwgYW5nMikpO1xuICAgICAgICBhbmcxICs9IGFuZzI7XG4gICAgfVxuICAgIHJldHVybiBjdXJ2ZXMubWFwKGZ1bmN0aW9uIChjdXJ2ZSkge1xuICAgICAgICB2YXIgX2EgPSBtYXBUb0VsbGlwc2UoY3VydmVbMF0sIHJ4LCByeSwgY29zcGhpLCBzaW5waGksIGNlbnRlcngsIGNlbnRlcnkpLCB4MSA9IF9hLngsIHkxID0gX2EueTtcbiAgICAgICAgdmFyIF9iID0gbWFwVG9FbGxpcHNlKGN1cnZlWzFdLCByeCwgcnksIGNvc3BoaSwgc2lucGhpLCBjZW50ZXJ4LCBjZW50ZXJ5KSwgeDIgPSBfYi54LCB5MiA9IF9iLnk7XG4gICAgICAgIHZhciBfYyA9IG1hcFRvRWxsaXBzZShjdXJ2ZVsyXSwgcngsIHJ5LCBjb3NwaGksIHNpbnBoaSwgY2VudGVyeCwgY2VudGVyeSksIHggPSBfYy54LCB5ID0gX2MueTtcbiAgICAgICAgcmV0dXJuIHsgeDE6IHgxLCB5MTogeTEsIHgyOiB4MiwgeTI6IHkyLCB4OiB4LCB5OiB5IH07XG4gICAgfSk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGFyY1RvQ3ViaWMoeDEsIHkxLCByeCwgcnksIGFuZ2xlLCBMQUYsIFNGLCB4MiwgeTIpIHtcbiAgICB2YXIgY3VydmVzID0gYXJjVG9CZXppZXIoe1xuICAgICAgICBweDogeDEsXG4gICAgICAgIHB5OiB5MSxcbiAgICAgICAgY3g6IHgyLFxuICAgICAgICBjeTogeTIsXG4gICAgICAgIHJ4OiByeCxcbiAgICAgICAgcnk6IHJ5LFxuICAgICAgICB4QXhpc1JvdGF0aW9uOiBhbmdsZSxcbiAgICAgICAgbGFyZ2VBcmNGbGFnOiBMQUYsXG4gICAgICAgIHN3ZWVwRmxhZzogU0YsXG4gICAgfSk7XG4gICAgcmV0dXJuIGN1cnZlcy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICB2YXIgeDEgPSBjdXIueDEsIHkxID0gY3VyLnkxLCB4MiA9IGN1ci54MiwgeTIgPSBjdXIueTIsIHggPSBjdXIueCwgeSA9IGN1ci55O1xuICAgICAgICBwcmV2LnB1c2goeDEsIHkxLCB4MiwgeTIsIHgsIHkpO1xuICAgICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcmMtMi1jdWJpYy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/process/arc-2-cubic.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/process/line-2-cubic.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/process/line-2-cubic.js ***! \******************************************************************/ /*! exports provided: lineToCubic */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineToCubic\", function() { return lineToCubic; });\n// export function getPointAtSegLength(p1x: number, p1y: number, c1x: number, c1y: number, c2x: number, c2y: number, p2x: number, p2y: number, t: number) {\n// const t1 = 1 - t;\n// return {\n// x: (t1 ** 3) * p1x\n// + t1 * t1 * 3 * t * c1x\n// + t1 * 3 * t * t * c2x\n// + (t ** 3) * p2x,\n// y: (t1 ** 3) * p1y\n// + t1 * t1 * 3 * t * c1y\n// + t1 * 3 * t * t * c2y\n// + (t ** 3) * p2y,\n// };\n// }\n// export function midPoint(a: number[], b: number[], t: number) {\n// const ax = a[0];\n// const ay = a[1];\n// const bx = b[0];\n// const by = b[1];\n// return [ax + (bx - ax) * t, ay + (by - ay) * t];\n// }\nfunction lineToCubic(x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n // const t = 0.5;\n // const p0 = [x1, y1];\n // const p1 = [x2, y2];\n // const p2 = midPoint(p0, p1, t);\n // const p3 = midPoint(p1, p2, t);\n // const p4 = midPoint(p2, p3, t);\n // const p5 = midPoint(p3, p4, t);\n // const p6 = midPoint(p4, p5, t);\n // const cp1 = getPointAtSegLength.apply(0, p0.concat(p2, p4, p6, t));\n // const cp2 = getPointAtSegLength.apply(0, p6.concat(p5, p3, p1, 0));\n // return [cp1.x, cp1.y, cp2.x, cp2.y, x2, y2];\n}\n//# sourceMappingURL=line-2-cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL2xpbmUtMi1jdWJpYy5qcz82NWI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3BhdGgtdXRpbC9lc20vcHJvY2Vzcy9saW5lLTItY3ViaWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHBvcnQgZnVuY3Rpb24gZ2V0UG9pbnRBdFNlZ0xlbmd0aChwMXg6IG51bWJlciwgcDF5OiBudW1iZXIsIGMxeDogbnVtYmVyLCBjMXk6IG51bWJlciwgYzJ4OiBudW1iZXIsIGMyeTogbnVtYmVyLCBwMng6IG51bWJlciwgcDJ5OiBudW1iZXIsIHQ6IG51bWJlcikge1xuLy8gICBjb25zdCB0MSA9IDEgLSB0O1xuLy8gICByZXR1cm4ge1xuLy8gICAgIHg6ICh0MSAqKiAzKSAqIHAxeFxuLy8gICAgICAgKyB0MSAqIHQxICogMyAqIHQgKiBjMXhcbi8vICAgICAgICsgdDEgKiAzICogdCAqIHQgKiBjMnhcbi8vICAgICAgICsgKHQgKiogMykgKiBwMngsXG4vLyAgICAgeTogKHQxICoqIDMpICogcDF5XG4vLyAgICAgICArIHQxICogdDEgKiAzICogdCAqIGMxeVxuLy8gICAgICAgKyB0MSAqIDMgKiB0ICogdCAqIGMyeVxuLy8gICAgICAgKyAodCAqKiAzKSAqIHAyeSxcbi8vICAgfTtcbi8vIH1cbi8vIGV4cG9ydCBmdW5jdGlvbiBtaWRQb2ludChhOiBudW1iZXJbXSwgYjogbnVtYmVyW10sIHQ6IG51bWJlcikge1xuLy8gICBjb25zdCBheCA9IGFbMF07XG4vLyAgIGNvbnN0IGF5ID0gYVsxXTtcbi8vICAgY29uc3QgYnggPSBiWzBdO1xuLy8gICBjb25zdCBieSA9IGJbMV07XG4vLyAgIHJldHVybiBbYXggKyAoYnggLSBheCkgKiB0LCBheSArIChieSAtIGF5KSAqIHRdO1xuLy8gfVxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVUb0N1YmljKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgcmV0dXJuIFt4MSwgeTEsIHgyLCB5MiwgeDIsIHkyXTtcbiAgICAvLyBjb25zdCB0ID0gMC41O1xuICAgIC8vIGNvbnN0IHAwID0gW3gxLCB5MV07XG4gICAgLy8gY29uc3QgcDEgPSBbeDIsIHkyXTtcbiAgICAvLyBjb25zdCBwMiA9IG1pZFBvaW50KHAwLCBwMSwgdCk7XG4gICAgLy8gY29uc3QgcDMgPSBtaWRQb2ludChwMSwgcDIsIHQpO1xuICAgIC8vIGNvbnN0IHA0ID0gbWlkUG9pbnQocDIsIHAzLCB0KTtcbiAgICAvLyBjb25zdCBwNSA9IG1pZFBvaW50KHAzLCBwNCwgdCk7XG4gICAgLy8gY29uc3QgcDYgPSBtaWRQb2ludChwNCwgcDUsIHQpO1xuICAgIC8vIGNvbnN0IGNwMSA9IGdldFBvaW50QXRTZWdMZW5ndGguYXBwbHkoMCwgcDAuY29uY2F0KHAyLCBwNCwgcDYsIHQpKTtcbiAgICAvLyBjb25zdCBjcDIgPSBnZXRQb2ludEF0U2VnTGVuZ3RoLmFwcGx5KDAsIHA2LmNvbmNhdChwNSwgcDMsIHAxLCAwKSk7XG4gICAgLy8gcmV0dXJuIFtjcDEueCwgY3AxLnksIGNwMi54LCBjcDIueSwgeDIsIHkyXTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmUtMi1jdWJpYy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/process/line-2-cubic.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/process/quad-2-cubic.js": /*!******************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/process/quad-2-cubic.js ***! \******************************************************************/ /*! exports provided: quadToCubic */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadToCubic\", function() { return quadToCubic; });\nfunction quadToCubic(x1, y1, qx, qy, x2, y2) {\n var r13 = 1 / 3;\n var r23 = 2 / 3;\n return [\n r13 * x1 + r23 * qx,\n r13 * y1 + r23 * qy,\n r13 * x2 + r23 * qx,\n r13 * y2 + r23 * qy,\n x2, y2, // x,y\n ];\n}\n//# sourceMappingURL=quad-2-cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL3F1YWQtMi1jdWJpYy5qcz8xMDRjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL3F1YWQtMi1jdWJpYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBxdWFkVG9DdWJpYyh4MSwgeTEsIHF4LCBxeSwgeDIsIHkyKSB7XG4gICAgdmFyIHIxMyA9IDEgLyAzO1xuICAgIHZhciByMjMgPSAyIC8gMztcbiAgICByZXR1cm4gW1xuICAgICAgICByMTMgKiB4MSArIHIyMyAqIHF4LFxuICAgICAgICByMTMgKiB5MSArIHIyMyAqIHF5LFxuICAgICAgICByMTMgKiB4MiArIHIyMyAqIHF4LFxuICAgICAgICByMTMgKiB5MiArIHIyMyAqIHF5LFxuICAgICAgICB4MiwgeTIsIC8vIHgseVxuICAgIF07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1xdWFkLTItY3ViaWMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/process/quad-2-cubic.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/process/segment-2-cubic.js": /*!*********************************************************************!*\ !*** ./node_modules/@antv/path-util/esm/process/segment-2-cubic.js ***! \*********************************************************************/ /*! exports provided: segmentToCubic */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"segmentToCubic\", function() { return segmentToCubic; });\n/* harmony import */ var _arc_2_cubic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arc-2-cubic */ \"./node_modules/@antv/path-util/esm/process/arc-2-cubic.js\");\n/* harmony import */ var _quad_2_cubic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quad-2-cubic */ \"./node_modules/@antv/path-util/esm/process/quad-2-cubic.js\");\n/* harmony import */ var _line_2_cubic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line-2-cubic */ \"./node_modules/@antv/path-util/esm/process/line-2-cubic.js\");\n\n\n\nfunction segmentToCubic(segment, params) {\n if ('TQ'.indexOf(segment[0]) < 0) {\n params.qx = null;\n params.qy = null;\n }\n var _a = segment.slice(1), s1 = _a[0], s2 = _a[1];\n switch (segment[0]) {\n case 'M':\n params.x = s1;\n params.y = s2;\n return segment;\n case 'A':\n return ['C'].concat(_arc_2_cubic__WEBPACK_IMPORTED_MODULE_0__[\"arcToCubic\"].apply(0, [params.x1, params.y1].concat(segment.slice(1))));\n case 'Q':\n params.qx = s1;\n params.qy = s2;\n return ['C'].concat(_quad_2_cubic__WEBPACK_IMPORTED_MODULE_1__[\"quadToCubic\"].apply(0, [params.x1, params.y1].concat(segment.slice(1))));\n case 'L':\n // @ts-ignore\n return ['C'].concat(Object(_line_2_cubic__WEBPACK_IMPORTED_MODULE_2__[\"lineToCubic\"])(params.x1, params.y1, segment[1], segment[2]));\n case 'H':\n // @ts-ignore\n return ['C'].concat(Object(_line_2_cubic__WEBPACK_IMPORTED_MODULE_2__[\"lineToCubic\"])(params.x1, params.y1, segment[1], params.y1));\n case 'V':\n // @ts-ignore\n return ['C'].concat(Object(_line_2_cubic__WEBPACK_IMPORTED_MODULE_2__[\"lineToCubic\"])(params.x1, params.y1, params.x1, segment[1]));\n case 'Z':\n // @ts-ignore\n return ['C'].concat(Object(_line_2_cubic__WEBPACK_IMPORTED_MODULE_2__[\"lineToCubic\"])(params.x1, params.y1, params.x, params.y));\n default:\n }\n return segment;\n}\n//# sourceMappingURL=segment-2-cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL3NlZ21lbnQtMi1jdWJpYy5qcz80OWZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkM7QUFDRTtBQUNBO0FBQ3RDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx1REFBVTtBQUMxQztBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MseURBQVc7QUFDM0M7QUFDQTtBQUNBLGdDQUFnQyxpRUFBVztBQUMzQztBQUNBO0FBQ0EsZ0NBQWdDLGlFQUFXO0FBQzNDO0FBQ0E7QUFDQSxnQ0FBZ0MsaUVBQVc7QUFDM0M7QUFDQTtBQUNBLGdDQUFnQyxpRUFBVztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3BhdGgtdXRpbC9lc20vcHJvY2Vzcy9zZWdtZW50LTItY3ViaWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhcmNUb0N1YmljIH0gZnJvbSAnLi9hcmMtMi1jdWJpYyc7XG5pbXBvcnQgeyBxdWFkVG9DdWJpYyB9IGZyb20gJy4vcXVhZC0yLWN1YmljJztcbmltcG9ydCB7IGxpbmVUb0N1YmljIH0gZnJvbSAnLi9saW5lLTItY3ViaWMnO1xuZXhwb3J0IGZ1bmN0aW9uIHNlZ21lbnRUb0N1YmljKHNlZ21lbnQsIHBhcmFtcykge1xuICAgIGlmICgnVFEnLmluZGV4T2Yoc2VnbWVudFswXSkgPCAwKSB7XG4gICAgICAgIHBhcmFtcy5xeCA9IG51bGw7XG4gICAgICAgIHBhcmFtcy5xeSA9IG51bGw7XG4gICAgfVxuICAgIHZhciBfYSA9IHNlZ21lbnQuc2xpY2UoMSksIHMxID0gX2FbMF0sIHMyID0gX2FbMV07XG4gICAgc3dpdGNoIChzZWdtZW50WzBdKSB7XG4gICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgcGFyYW1zLnggPSBzMTtcbiAgICAgICAgICAgIHBhcmFtcy55ID0gczI7XG4gICAgICAgICAgICByZXR1cm4gc2VnbWVudDtcbiAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICByZXR1cm4gWydDJ10uY29uY2F0KGFyY1RvQ3ViaWMuYXBwbHkoMCwgW3BhcmFtcy54MSwgcGFyYW1zLnkxXS5jb25jYXQoc2VnbWVudC5zbGljZSgxKSkpKTtcbiAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICBwYXJhbXMucXggPSBzMTtcbiAgICAgICAgICAgIHBhcmFtcy5xeSA9IHMyO1xuICAgICAgICAgICAgcmV0dXJuIFsnQyddLmNvbmNhdChxdWFkVG9DdWJpYy5hcHBseSgwLCBbcGFyYW1zLngxLCBwYXJhbXMueTFdLmNvbmNhdChzZWdtZW50LnNsaWNlKDEpKSkpO1xuICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiBbJ0MnXS5jb25jYXQobGluZVRvQ3ViaWMocGFyYW1zLngxLCBwYXJhbXMueTEsIHNlZ21lbnRbMV0sIHNlZ21lbnRbMl0pKTtcbiAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gWydDJ10uY29uY2F0KGxpbmVUb0N1YmljKHBhcmFtcy54MSwgcGFyYW1zLnkxLCBzZWdtZW50WzFdLCBwYXJhbXMueTEpKTtcbiAgICAgICAgY2FzZSAnVic6XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gWydDJ10uY29uY2F0KGxpbmVUb0N1YmljKHBhcmFtcy54MSwgcGFyYW1zLnkxLCBwYXJhbXMueDEsIHNlZ21lbnRbMV0pKTtcbiAgICAgICAgY2FzZSAnWic6XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gWydDJ10uY29uY2F0KGxpbmVUb0N1YmljKHBhcmFtcy54MSwgcGFyYW1zLnkxLCBwYXJhbXMueCwgcGFyYW1zLnkpKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICB9XG4gICAgcmV0dXJuIHNlZ21lbnQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZWdtZW50LTItY3ViaWMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/process/segment-2-cubic.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/esm/rect-path.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/path-util/esm/rect-path.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return rectPath; });\nfunction rectPath(x, y, w, h, r) {\n if (r) {\n return [\n ['M', +x + (+r), y],\n ['l', w - r * 2, 0],\n ['a', r, r, 0, 0, 1, r, r],\n ['l', 0, h - r * 2],\n ['a', r, r, 0, 0, 1, -r, r],\n ['l', r * 2 - w, 0],\n ['a', r, r, 0, 0, 1, -r, -r],\n ['l', 0, r * 2 - h],\n ['a', r, r, 0, 0, 1, r, -r],\n ['z'],\n ];\n }\n return [\n ['M', x, y],\n ['l', w, 0],\n ['l', 0, h],\n ['l', -w, 0],\n ['z'],\n ];\n // res.parsePathArray = parsePathArray;\n}\n//# sourceMappingURL=rect-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9yZWN0LXBhdGguanM/MjIwZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL2VzbS9yZWN0LXBhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWN0UGF0aCh4LCB5LCB3LCBoLCByKSB7XG4gICAgaWYgKHIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFsnTScsICt4ICsgKCtyKSwgeV0sXG4gICAgICAgICAgICBbJ2wnLCB3IC0gciAqIDIsIDBdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgciwgcl0sXG4gICAgICAgICAgICBbJ2wnLCAwLCBoIC0gciAqIDJdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgLXIsIHJdLFxuICAgICAgICAgICAgWydsJywgciAqIDIgLSB3LCAwXSxcbiAgICAgICAgICAgIFsnYScsIHIsIHIsIDAsIDAsIDEsIC1yLCAtcl0sXG4gICAgICAgICAgICBbJ2wnLCAwLCByICogMiAtIGhdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgciwgLXJdLFxuICAgICAgICAgICAgWyd6J10sXG4gICAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAgIFsnTScsIHgsIHldLFxuICAgICAgICBbJ2wnLCB3LCAwXSxcbiAgICAgICAgWydsJywgMCwgaF0sXG4gICAgICAgIFsnbCcsIC13LCAwXSxcbiAgICAgICAgWyd6J10sXG4gICAgXTtcbiAgICAvLyByZXMucGFyc2VQYXRoQXJyYXkgPSBwYXJzZVBhdGhBcnJheTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlY3QtcGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/esm/rect-path.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/node_modules/@antv/matrix-util/esm/ext.js": /*!********************************************************************************!*\ !*** ./node_modules/@antv/path-util/node_modules/@antv/matrix-util/esm/ext.js ***! \********************************************************************************/ /*! exports provided: leftTranslate, leftRotate, leftScale, transform, direction, angleTo, vertical */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftTranslate\", function() { return leftTranslate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftRotate\", function() { return leftRotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftScale\", function() { return leftScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"direction\", function() { return direction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angleTo\", function() { return angleTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vertical\", function() { return vertical; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/**\n * @description 扩展方法,提供 gl-matrix 为提供的方法\n * */\n\nfunction leftTranslate(out, a, v) {\n var transMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromTranslation(transMat, v);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, transMat, a);\n}\nfunction leftRotate(out, a, rad) {\n var rotateMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromRotation(rotateMat, rad);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, rotateMat, a);\n}\nfunction leftScale(out, a, v) {\n var scaleMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromScaling(scaleMat, v);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, scaleMat, a);\n}\nfunction leftMultiply(out, a, a1) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, a1, a);\n}\n/**\n * 根据 actions 来做 transform\n * @param m\n * @param actions\n */\nfunction transform(m, actions) {\n var matrix = m ? [].concat(m) : [1, 0, 0, 0, 1, 0, 0, 0, 1];\n for (var i = 0, len = actions.length; i < len; i++) {\n var action = actions[i];\n switch (action[0]) {\n case 't':\n leftTranslate(matrix, matrix, [action[1], action[2]]);\n break;\n case 's':\n leftScale(matrix, matrix, [action[1], action[2]]);\n break;\n case 'r':\n leftRotate(matrix, matrix, action[1]);\n break;\n case 'm':\n leftMultiply(matrix, matrix, action[1]);\n break;\n default:\n break;\n }\n }\n return matrix;\n}\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nfunction direction(v1, v2) {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nfunction angleTo(v1, v2, direct) {\n var ang = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].angle(v1, v2);\n var angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n/**\n * 计算二维向量的垂直向量\n * @param out\n * @param v\n * @param flag\n */\nfunction vertical(out, v, flag) {\n if (flag) {\n out[0] = v[1];\n out[1] = -1 * v[0];\n }\n else {\n out[0] = -1 * v[1];\n out[1] = v[0];\n }\n return out;\n}\n//# sourceMappingURL=ext.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL25vZGVfbW9kdWxlcy9AYW50di9tYXRyaXgtdXRpbC9lc20vZXh0LmpzPzJkNTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ3VDO0FBQ2hDO0FBQ1A7QUFDQSxJQUFJLDhDQUFJO0FBQ1IsV0FBVyw4Q0FBSTtBQUNmO0FBQ087QUFDUDtBQUNBLElBQUksOENBQUk7QUFDUixXQUFXLDhDQUFJO0FBQ2Y7QUFDTztBQUNQO0FBQ0EsSUFBSSw4Q0FBSTtBQUNSLFdBQVcsOENBQUk7QUFDZjtBQUNBO0FBQ0EsV0FBVyw4Q0FBSTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSx5Q0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksTUFBTTtBQUNsQixZQUFZLE1BQU07QUFDbEIsWUFBWSxRQUFRO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxjQUFjLDhDQUFJO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9wYXRoLXV0aWwvbm9kZV9tb2R1bGVzL0BhbnR2L21hdHJpeC11dGlsL2VzbS9leHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiDmianlsZXmlrnms5XvvIzmj5DkvpsgZ2wtbWF0cml4IOS4uuaPkOS+m+eahOaWueazlVxuICogKi9cbmltcG9ydCB7IG1hdDMsIHZlYzIgfSBmcm9tICdnbC1tYXRyaXgnO1xuZXhwb3J0IGZ1bmN0aW9uIGxlZnRUcmFuc2xhdGUob3V0LCBhLCB2KSB7XG4gICAgdmFyIHRyYW5zTWF0ID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdO1xuICAgIG1hdDMuZnJvbVRyYW5zbGF0aW9uKHRyYW5zTWF0LCB2KTtcbiAgICByZXR1cm4gbWF0My5tdWx0aXBseShvdXQsIHRyYW5zTWF0LCBhKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsZWZ0Um90YXRlKG91dCwgYSwgcmFkKSB7XG4gICAgdmFyIHJvdGF0ZU1hdCA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbiAgICBtYXQzLmZyb21Sb3RhdGlvbihyb3RhdGVNYXQsIHJhZCk7XG4gICAgcmV0dXJuIG1hdDMubXVsdGlwbHkob3V0LCByb3RhdGVNYXQsIGEpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxlZnRTY2FsZShvdXQsIGEsIHYpIHtcbiAgICB2YXIgc2NhbGVNYXQgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG4gICAgbWF0My5mcm9tU2NhbGluZyhzY2FsZU1hdCwgdik7XG4gICAgcmV0dXJuIG1hdDMubXVsdGlwbHkob3V0LCBzY2FsZU1hdCwgYSk7XG59XG5mdW5jdGlvbiBsZWZ0TXVsdGlwbHkob3V0LCBhLCBhMSkge1xuICAgIHJldHVybiBtYXQzLm11bHRpcGx5KG91dCwgYTEsIGEpO1xufVxuLyoqXG4gKiDmoLnmja4gYWN0aW9ucyDmnaXlgZogdHJhbnNmb3JtXG4gKiBAcGFyYW0gbVxuICogQHBhcmFtIGFjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybShtLCBhY3Rpb25zKSB7XG4gICAgdmFyIG1hdHJpeCA9IG0gPyBbXS5jb25jYXQobSkgOiBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFjdGlvbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIGFjdGlvbiA9IGFjdGlvbnNbaV07XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uWzBdKSB7XG4gICAgICAgICAgICBjYXNlICd0JzpcbiAgICAgICAgICAgICAgICBsZWZ0VHJhbnNsYXRlKG1hdHJpeCwgbWF0cml4LCBbYWN0aW9uWzFdLCBhY3Rpb25bMl1dKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIGxlZnRTY2FsZShtYXRyaXgsIG1hdHJpeCwgW2FjdGlvblsxXSwgYWN0aW9uWzJdXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyJzpcbiAgICAgICAgICAgICAgICBsZWZ0Um90YXRlKG1hdHJpeCwgbWF0cml4LCBhY3Rpb25bMV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgbGVmdE11bHRpcGx5KG1hdHJpeCwgbWF0cml4LCBhY3Rpb25bMV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiDlkJHph48gdjEg5YiwIOWQkemHjyB2MiDlpLnop5LnmoTmlrnlkJFcbiAqIEBwYXJhbSAge0FycmF5fSB2MSDlkJHph49cbiAqIEBwYXJhbSAge0FycmF5fSB2MiDlkJHph49cbiAqIEByZXR1cm4ge0Jvb2xlYW59ID49IDAg6aG65pe26ZKIIDwgMCDpgIbml7bpkohcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpcmVjdGlvbih2MSwgdjIpIHtcbiAgICByZXR1cm4gdjFbMF0gKiB2MlsxXSAtIHYyWzBdICogdjFbMV07XG59XG4vKipcbiAqIOS6jOe7tOWQkemHjyB2MSDliLAgdjIg55qE5aS56KeSXG4gKiBAcGFyYW0gdjFcbiAqIEBwYXJhbSB2MlxuICogQHBhcmFtIGRpcmVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gYW5nbGVUbyh2MSwgdjIsIGRpcmVjdCkge1xuICAgIHZhciBhbmcgPSB2ZWMyLmFuZ2xlKHYxLCB2Mik7XG4gICAgdmFyIGFuZ2xlTGFyZ2VUaGFuUEkgPSBkaXJlY3Rpb24odjEsIHYyKSA+PSAwO1xuICAgIGlmIChkaXJlY3QpIHtcbiAgICAgICAgaWYgKGFuZ2xlTGFyZ2VUaGFuUEkpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLlBJICogMiAtIGFuZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYW5nO1xuICAgIH1cbiAgICBpZiAoYW5nbGVMYXJnZVRoYW5QSSkge1xuICAgICAgICByZXR1cm4gYW5nO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5QSSAqIDIgLSBhbmc7XG59XG4vKipcbiAqIOiuoeeul+S6jOe7tOWQkemHj+eahOWeguebtOWQkemHj1xuICogQHBhcmFtIG91dFxuICogQHBhcmFtIHZcbiAqIEBwYXJhbSBmbGFnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJ0aWNhbChvdXQsIHYsIGZsYWcpIHtcbiAgICBpZiAoZmxhZykge1xuICAgICAgICBvdXRbMF0gPSB2WzFdO1xuICAgICAgICBvdXRbMV0gPSAtMSAqIHZbMF07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBvdXRbMF0gPSAtMSAqIHZbMV07XG4gICAgICAgIG91dFsxXSA9IHZbMF07XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1leHQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/node_modules/@antv/matrix-util/esm/ext.js\n"); /***/ }), /***/ "./node_modules/@antv/path-util/node_modules/@antv/matrix-util/esm/index.js": /*!**********************************************************************************!*\ !*** ./node_modules/@antv/path-util/node_modules/@antv/matrix-util/esm/index.js ***! \**********************************************************************************/ /*! exports provided: mat3, vec2, vec3, ext */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mat3\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vec2\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vec3\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"]; });\n\n/* harmony import */ var _ext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ext */ \"./node_modules/@antv/path-util/node_modules/@antv/matrix-util/esm/ext.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"ext\", function() { return _ext__WEBPACK_IMPORTED_MODULE_1__; });\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvcGF0aC11dGlsL25vZGVfbW9kdWxlcy9AYW50di9tYXRyaXgtdXRpbC9lc20vaW5kZXguanM/ZDU0MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QztBQUNoQjtBQUNJO0FBQ2pDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3BhdGgtdXRpbC9ub2RlX21vZHVsZXMvQGFudHYvbWF0cml4LXV0aWwvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWF0MywgdmVjMiwgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgKiBhcyBleHQgZnJvbSAnLi9leHQnO1xuZXhwb3J0IHsgbWF0MywgdmVjMiwgdmVjMywgZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/path-util/node_modules/@antv/matrix-util/esm/index.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/base.js": /*!**********************************************!*\ !*** ./node_modules/@antv/scale/esm/base.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _tick_method_register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tick-method/register */ \"./node_modules/@antv/scale/esm/tick-method/register.js\");\n\n\nvar Scale = /** @class */ (function () {\n function Scale(cfg) {\n /**\n * 度量的类型\n */\n this.type = 'base';\n /**\n * 是否分类类型的度量\n */\n this.isCategory = false;\n /**\n * 是否线性度量,有linear, time 度量\n */\n this.isLinear = false;\n /**\n * 是否连续类型的度量,linear,time,log, pow, quantile, quantize 都支持\n */\n this.isContinuous = false;\n /**\n * 是否是常量的度量,传入和传出一致\n */\n this.isIdentity = false;\n this.values = [];\n this.range = [0, 1];\n this.ticks = [];\n this.__cfg__ = cfg;\n this.initCfg();\n this.init();\n }\n // 对于原始值的必要转换,如分类、时间字段需转换成数值,用transform/map命名可能更好\n Scale.prototype.translate = function (v) {\n return v;\n };\n /** 重新初始化 */\n Scale.prototype.change = function (cfg) {\n // 覆盖配置项,而不替代\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])(this.__cfg__, cfg);\n this.init();\n };\n Scale.prototype.clone = function () {\n return this.constructor(this.__cfg__);\n };\n /** 获取坐标轴需要的ticks */\n Scale.prototype.getTicks = function () {\n var _this = this;\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"map\"])(this.ticks, function (tick, idx) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(tick)) {\n // 仅当符合Tick类型时才有意义\n return tick;\n }\n return {\n text: _this.getText(tick, idx),\n tickValue: tick,\n value: _this.scale(tick), // scaled\n };\n });\n };\n /** 获取Tick的格式化结果 */\n Scale.prototype.getText = function (value, key) {\n var formatter = this.formatter;\n var res = formatter ? formatter(value, key) : value;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(res) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(res.toString)) {\n return '';\n }\n return res.toString();\n };\n // 获取配置项中的值,当前 scale 上的值可能会被修改\n Scale.prototype.getConfig = function (key) {\n return this.__cfg__[key];\n };\n // scale初始化\n Scale.prototype.init = function () {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])(this, this.__cfg__);\n this.setDomain();\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isEmpty\"])(this.getConfig('ticks'))) {\n this.ticks = this.calculateTicks();\n }\n };\n // 子类上覆盖某些属性,不能直接在类上声明,否则会被覆盖\n Scale.prototype.initCfg = function () { };\n Scale.prototype.setDomain = function () { };\n Scale.prototype.calculateTicks = function () {\n var tickMethod = this.tickMethod;\n var ticks = [];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(tickMethod)) {\n var method = Object(_tick_method_register__WEBPACK_IMPORTED_MODULE_1__[\"getTickMethod\"])(tickMethod);\n if (!method) {\n throw new Error('There is no method to to calculate ticks!');\n }\n ticks = method(this);\n }\n else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(tickMethod)) {\n ticks = tickMethod(this);\n }\n return ticks;\n };\n // range 的最小值\n Scale.prototype.rangeMin = function () {\n return this.range[0];\n };\n // range 的最大值\n Scale.prototype.rangeMax = function () {\n return this.range[1];\n };\n /** 定义域转 0~1 */\n Scale.prototype.calcPercent = function (value, min, max) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(value)) {\n return (value - min) / (max - min);\n }\n return NaN;\n };\n /** 0~1转定义域 */\n Scale.prototype.calcValue = function (percent, min, max) {\n return min + percent * (max - min);\n };\n return Scale;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Scale);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2Jhc2UuanM/YmFmNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBbUc7QUFDNUM7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx5REFBTTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFHO0FBQ2xCLGdCQUFnQiwyREFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdEQUFLLFVBQVUsNkRBQVU7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlEQUFNO0FBQ2Q7QUFDQSxZQUFZLDBEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCLHlCQUF5QiwyRUFBYTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDZEQUFVO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDYyxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS9iYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzaWduLCBpc0VtcHR5LCBpc0Z1bmN0aW9uLCBpc05pbCwgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1N0cmluZywgbWFwIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBnZXRUaWNrTWV0aG9kIH0gZnJvbSAnLi90aWNrLW1ldGhvZC9yZWdpc3Rlcic7XG52YXIgU2NhbGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2NhbGUoY2ZnKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDluqbph4/nmoTnsbvlnotcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudHlwZSA9ICdiYXNlJztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaYr+WQpuWIhuexu+exu+Wei+eahOW6pumHj1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5pc0NhdGVnb3J5ID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmmK/lkKbnur/mgKfluqbph4/vvIzmnIlsaW5lYXIsIHRpbWUg5bqm6YePXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmlzTGluZWFyID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmmK/lkKbov57nu63nsbvlnovnmoTluqbph4/vvIxsaW5lYXIsdGltZSxsb2csIHBvdywgcXVhbnRpbGUsIHF1YW50aXplIOmDveaUr+aMgVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5pc0NvbnRpbnVvdXMgPSBmYWxzZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaYr+WQpuaYr+W4uOmHj+eahOW6pumHj++8jOS8oOWFpeWSjOS8oOWHuuS4gOiHtFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5pc0lkZW50aXR5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmFsdWVzID0gW107XG4gICAgICAgIHRoaXMucmFuZ2UgPSBbMCwgMV07XG4gICAgICAgIHRoaXMudGlja3MgPSBbXTtcbiAgICAgICAgdGhpcy5fX2NmZ19fID0gY2ZnO1xuICAgICAgICB0aGlzLmluaXRDZmcoKTtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICAgIC8vIOWvueS6juWOn+Wni+WAvOeahOW/heimgei9rOaNou+8jOWmguWIhuexu+OAgeaXtumXtOWtl+autemcgOi9rOaNouaIkOaVsOWAvO+8jOeUqHRyYW5zZm9ybS9tYXDlkb3lkI3lj6/og73mm7Tlpb1cbiAgICBTY2FsZS5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfTtcbiAgICAvKiog6YeN5paw5Yid5aeL5YyWICovXG4gICAgU2NhbGUucHJvdG90eXBlLmNoYW5nZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICAgICAgLy8g6KaG55uW6YWN572u6aG577yM6ICM5LiN5pu/5LujXG4gICAgICAgIGFzc2lnbih0aGlzLl9fY2ZnX18sIGNmZyk7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH07XG4gICAgU2NhbGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl9fY2ZnX18pO1xuICAgIH07XG4gICAgLyoqIOiOt+WPluWdkOagh+i9tOmcgOimgeeahHRpY2tzICovXG4gICAgU2NhbGUucHJvdG90eXBlLmdldFRpY2tzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gbWFwKHRoaXMudGlja3MsIGZ1bmN0aW9uICh0aWNrLCBpZHgpIHtcbiAgICAgICAgICAgIGlmIChpc09iamVjdCh0aWNrKSkge1xuICAgICAgICAgICAgICAgIC8vIOS7heW9k+espuWQiFRpY2vnsbvlnovml7bmiY3mnInmhI/kuYlcbiAgICAgICAgICAgICAgICByZXR1cm4gdGljaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGV4dDogX3RoaXMuZ2V0VGV4dCh0aWNrLCBpZHgpLFxuICAgICAgICAgICAgICAgIHRpY2tWYWx1ZTogdGljayxcbiAgICAgICAgICAgICAgICB2YWx1ZTogX3RoaXMuc2NhbGUodGljayksIC8vIHNjYWxlZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKiog6I635Y+WVGlja+eahOagvOW8j+WMlue7k+aenCAqL1xuICAgIFNjYWxlLnByb3RvdHlwZS5nZXRUZXh0ID0gZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdHRlciA9IHRoaXMuZm9ybWF0dGVyO1xuICAgICAgICB2YXIgcmVzID0gZm9ybWF0dGVyID8gZm9ybWF0dGVyKHZhbHVlLCBrZXkpIDogdmFsdWU7XG4gICAgICAgIGlmIChpc05pbChyZXMpIHx8ICFpc0Z1bmN0aW9uKHJlcy50b1N0cmluZykpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzLnRvU3RyaW5nKCk7XG4gICAgfTtcbiAgICAvLyDojrflj5bphY3nva7pobnkuK3nmoTlgLzvvIzlvZPliY0gc2NhbGUg5LiK55qE5YC85Y+v6IO95Lya6KKr5L+u5pS5XG4gICAgU2NhbGUucHJvdG90eXBlLmdldENvbmZpZyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX19jZmdfX1trZXldO1xuICAgIH07XG4gICAgLy8gc2NhbGXliJ3lp4vljJZcbiAgICBTY2FsZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzaWduKHRoaXMsIHRoaXMuX19jZmdfXyk7XG4gICAgICAgIHRoaXMuc2V0RG9tYWluKCk7XG4gICAgICAgIGlmIChpc0VtcHR5KHRoaXMuZ2V0Q29uZmlnKCd0aWNrcycpKSkge1xuICAgICAgICAgICAgdGhpcy50aWNrcyA9IHRoaXMuY2FsY3VsYXRlVGlja3MoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5a2Q57G75LiK6KaG55uW5p+Q5Lqb5bGe5oCn77yM5LiN6IO955u05o6l5Zyo57G75LiK5aOw5piO77yM5ZCm5YiZ5Lya6KKr6KaG55uWXG4gICAgU2NhbGUucHJvdG90eXBlLmluaXRDZmcgPSBmdW5jdGlvbiAoKSB7IH07XG4gICAgU2NhbGUucHJvdG90eXBlLnNldERvbWFpbiA9IGZ1bmN0aW9uICgpIHsgfTtcbiAgICBTY2FsZS5wcm90b3R5cGUuY2FsY3VsYXRlVGlja3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0aWNrTWV0aG9kID0gdGhpcy50aWNrTWV0aG9kO1xuICAgICAgICB2YXIgdGlja3MgPSBbXTtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHRpY2tNZXRob2QpKSB7XG4gICAgICAgICAgICB2YXIgbWV0aG9kID0gZ2V0VGlja01ldGhvZCh0aWNrTWV0aG9kKTtcbiAgICAgICAgICAgIGlmICghbWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSBpcyBubyBtZXRob2QgdG8gdG8gY2FsY3VsYXRlIHRpY2tzIScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGlja3MgPSBtZXRob2QodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNGdW5jdGlvbih0aWNrTWV0aG9kKSkge1xuICAgICAgICAgICAgdGlja3MgPSB0aWNrTWV0aG9kKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aWNrcztcbiAgICB9O1xuICAgIC8vIHJhbmdlIOeahOacgOWwj+WAvFxuICAgIFNjYWxlLnByb3RvdHlwZS5yYW5nZU1pbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VbMF07XG4gICAgfTtcbiAgICAvLyByYW5nZSDnmoTmnIDlpKflgLxcbiAgICBTY2FsZS5wcm90b3R5cGUucmFuZ2VNYXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlWzFdO1xuICAgIH07XG4gICAgLyoqIOWumuS5ieWfn+i9rCAwfjEgKi9cbiAgICBTY2FsZS5wcm90b3R5cGUuY2FsY1BlcmNlbnQgPSBmdW5jdGlvbiAodmFsdWUsIG1pbiwgbWF4KSB7XG4gICAgICAgIGlmIChpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUgLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE5hTjtcbiAgICB9O1xuICAgIC8qKiAwfjHovazlrprkuYnln58gKi9cbiAgICBTY2FsZS5wcm90b3R5cGUuY2FsY1ZhbHVlID0gZnVuY3Rpb24gKHBlcmNlbnQsIG1pbiwgbWF4KSB7XG4gICAgICAgIHJldHVybiBtaW4gKyBwZXJjZW50ICogKG1heCAtIG1pbik7XG4gICAgfTtcbiAgICByZXR1cm4gU2NhbGU7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgU2NhbGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iYXNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/base.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/category/base.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/scale/esm/category/base.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/scale/esm/base.js\");\n\n\n\n/**\n * 分类度量\n * @class\n */\nvar Category = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Category, _super);\n function Category() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'cat';\n _this.isCategory = true;\n return _this;\n }\n Category.prototype.buildIndexMap = function () {\n if (!this.translateIndexMap) {\n this.translateIndexMap = new Map();\n // 重新构建缓存\n for (var i = 0; i < this.values.length; i++) {\n this.translateIndexMap.set(this.values[i], i);\n }\n }\n };\n Category.prototype.translate = function (value) {\n // 按需构建 map\n this.buildIndexMap();\n // 找得到\n var idx = this.translateIndexMap.get(value);\n if (idx === undefined) {\n idx = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value) ? value : NaN;\n }\n return idx;\n };\n Category.prototype.scale = function (value) {\n var order = this.translate(value);\n // 分类数据允许 0.5 范围内调整\n // if (order < this.min - 0.5 || order > this.max + 0.5) {\n // return NaN;\n // }\n var percent = this.calcPercent(order, this.min, this.max);\n return this.calcValue(percent, this.rangeMin(), this.rangeMax());\n };\n Category.prototype.invert = function (scaledValue) {\n var domainRange = this.max - this.min;\n var percent = this.calcPercent(scaledValue, this.rangeMin(), this.rangeMax());\n var idx = Math.round(domainRange * percent) + this.min;\n if (idx < this.min || idx > this.max) {\n return NaN;\n }\n return this.values[idx];\n };\n Category.prototype.getText = function (value) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var v = value;\n // value为index\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value) && !this.values.includes(value)) {\n v = this.values[v];\n }\n return _super.prototype.getText.apply(this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([v], args, false));\n };\n // 复写属性\n Category.prototype.initCfg = function () {\n this.tickMethod = 'cat';\n };\n // 设置 min, max\n Category.prototype.setDomain = function () {\n // 用户有可能设置 min\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.getConfig('min'))) {\n this.min = 0;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.getConfig('max'))) {\n var size = this.values.length;\n this.max = size > 1 ? size - 1 : size;\n }\n // scale.init 的时候清除缓存\n if (this.translateIndexMap) {\n this.translateIndexMap = undefined;\n }\n };\n return Category;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Category);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NhdGVnb3J5L2Jhc2UuanM/NmYwYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpRDtBQUNKO0FBQ2xCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsd0JBQXdCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJEQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBUTtBQUNwQjtBQUNBO0FBQ0Esb0RBQW9ELDJEQUFhO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdEQUFLO0FBQ2pCO0FBQ0E7QUFDQSxZQUFZLHdEQUFLO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTtBQUNTLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NhdGVnb3J5L2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMsIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzTmlsLCBpc051bWJlciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEJhc2UgZnJvbSAnLi4vYmFzZSc7XG4vKipcbiAqIOWIhuexu+W6pumHj1xuICogQGNsYXNzXG4gKi9cbnZhciBDYXRlZ29yeSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2F0ZWdvcnksIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2F0ZWdvcnkoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ2NhdCc7XG4gICAgICAgIF90aGlzLmlzQ2F0ZWdvcnkgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIENhdGVnb3J5LnByb3RvdHlwZS5idWlsZEluZGV4TWFwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRoaXMudHJhbnNsYXRlSW5kZXhNYXApIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlSW5kZXhNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAvLyDph43mlrDmnoTlu7rnvJPlrZhcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZUluZGV4TWFwLnNldCh0aGlzLnZhbHVlc1tpXSwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENhdGVnb3J5LnByb3RvdHlwZS50cmFuc2xhdGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgLy8g5oyJ6ZyA5p6E5bu6IG1hcFxuICAgICAgICB0aGlzLmJ1aWxkSW5kZXhNYXAoKTtcbiAgICAgICAgLy8g5om+5b6X5YiwXG4gICAgICAgIHZhciBpZHggPSB0aGlzLnRyYW5zbGF0ZUluZGV4TWFwLmdldCh2YWx1ZSk7XG4gICAgICAgIGlmIChpZHggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWR4ID0gaXNOdW1iZXIodmFsdWUpID8gdmFsdWUgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlkeDtcbiAgICB9O1xuICAgIENhdGVnb3J5LnByb3RvdHlwZS5zY2FsZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgb3JkZXIgPSB0aGlzLnRyYW5zbGF0ZSh2YWx1ZSk7XG4gICAgICAgIC8vIOWIhuexu+aVsOaNruWFgeiuuCAwLjUg6IyD5Zu05YaF6LCD5pW0XG4gICAgICAgIC8vIGlmIChvcmRlciA8IHRoaXMubWluIC0gMC41IHx8IG9yZGVyID4gdGhpcy5tYXggKyAwLjUpIHtcbiAgICAgICAgLy8gICByZXR1cm4gTmFOO1xuICAgICAgICAvLyB9XG4gICAgICAgIHZhciBwZXJjZW50ID0gdGhpcy5jYWxjUGVyY2VudChvcmRlciwgdGhpcy5taW4sIHRoaXMubWF4KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY1ZhbHVlKHBlcmNlbnQsIHRoaXMucmFuZ2VNaW4oKSwgdGhpcy5yYW5nZU1heCgpKTtcbiAgICB9O1xuICAgIENhdGVnb3J5LnByb3RvdHlwZS5pbnZlcnQgPSBmdW5jdGlvbiAoc2NhbGVkVmFsdWUpIHtcbiAgICAgICAgdmFyIGRvbWFpblJhbmdlID0gdGhpcy5tYXggLSB0aGlzLm1pbjtcbiAgICAgICAgdmFyIHBlcmNlbnQgPSB0aGlzLmNhbGNQZXJjZW50KHNjYWxlZFZhbHVlLCB0aGlzLnJhbmdlTWluKCksIHRoaXMucmFuZ2VNYXgoKSk7XG4gICAgICAgIHZhciBpZHggPSBNYXRoLnJvdW5kKGRvbWFpblJhbmdlICogcGVyY2VudCkgKyB0aGlzLm1pbjtcbiAgICAgICAgaWYgKGlkeCA8IHRoaXMubWluIHx8IGlkeCA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlc1tpZHhdO1xuICAgIH07XG4gICAgQ2F0ZWdvcnkucHJvdG90eXBlLmdldFRleHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHYgPSB2YWx1ZTtcbiAgICAgICAgLy8gdmFsdWXkuLppbmRleFxuICAgICAgICBpZiAoaXNOdW1iZXIodmFsdWUpICYmICF0aGlzLnZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHYgPSB0aGlzLnZhbHVlc1t2XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5nZXRUZXh0LmFwcGx5KHRoaXMsIF9fc3ByZWFkQXJyYXkoW3ZdLCBhcmdzLCBmYWxzZSkpO1xuICAgIH07XG4gICAgLy8g5aSN5YaZ5bGe5oCnXG4gICAgQ2F0ZWdvcnkucHJvdG90eXBlLmluaXRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMudGlja01ldGhvZCA9ICdjYXQnO1xuICAgIH07XG4gICAgLy8g6K6+572uIG1pbiwgbWF4XG4gICAgQ2F0ZWdvcnkucHJvdG90eXBlLnNldERvbWFpbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8g55So5oi35pyJ5Y+v6IO96K6+572uIG1pblxuICAgICAgICBpZiAoaXNOaWwodGhpcy5nZXRDb25maWcoJ21pbicpKSkge1xuICAgICAgICAgICAgdGhpcy5taW4gPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc05pbCh0aGlzLmdldENvbmZpZygnbWF4JykpKSB7XG4gICAgICAgICAgICB2YXIgc2l6ZSA9IHRoaXMudmFsdWVzLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMubWF4ID0gc2l6ZSA+IDEgPyBzaXplIC0gMSA6IHNpemU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2NhbGUuaW5pdCDnmoTml7blgJnmuIXpmaTnvJPlrZhcbiAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRlSW5kZXhNYXApIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlSW5kZXhNYXAgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBDYXRlZ29yeTtcbn0oQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgQ2F0ZWdvcnk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iYXNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/category/base.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/category/time.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/scale/esm/category/time.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/time */ \"./node_modules/@antv/scale/esm/util/time.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/scale/esm/category/base.js\");\n\n\n\n\n/**\n * 时间分类度量\n * @class\n */\nvar TimeCat = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(TimeCat, _super);\n function TimeCat() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'timeCat';\n return _this;\n }\n /**\n * @override\n */\n TimeCat.prototype.translate = function (value) {\n value = Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"toTimeStamp\"])(value);\n var index = this.values.indexOf(value);\n if (index === -1) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value) && value < this.values.length) {\n index = value;\n }\n else {\n index = NaN;\n }\n }\n return index;\n };\n /**\n * 由于时间类型数据需要转换一下,所以复写 getText\n * @override\n */\n TimeCat.prototype.getText = function (value, tickIndex) {\n var index = this.translate(value);\n if (index > -1) {\n var result = this.values[index];\n var formatter = this.formatter;\n result = formatter ? formatter(result, tickIndex) : Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"timeFormat\"])(result, this.mask);\n return result;\n }\n return value;\n };\n TimeCat.prototype.initCfg = function () {\n this.tickMethod = 'time-cat';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7; // 一般时间数据会显示 7, 14, 30 天的数字\n };\n TimeCat.prototype.setDomain = function () {\n var values = this.values;\n // 针对时间分类类型,会将时间统一转换为时间戳\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(values, function (v, i) {\n values[i] = Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"toTimeStamp\"])(v);\n });\n values.sort(function (v1, v2) {\n return v1 - v2;\n });\n _super.prototype.setDomain.call(this);\n };\n return TimeCat;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimeCat);\n//# sourceMappingURL=time.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NhdGVnb3J5L3RpbWUuanM/ZWUyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ1U7QUFDVztBQUN6QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4REFBVztBQUMzQjtBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0UsNkRBQVU7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1osd0JBQXdCLDhEQUFXO0FBQ25DLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUTtBQUNLLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NhdGVnb3J5L3RpbWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzTnVtYmVyIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyB0aW1lRm9ybWF0LCB0b1RpbWVTdGFtcCB9IGZyb20gJy4uL3V0aWwvdGltZSc7XG5pbXBvcnQgQ2F0ZWdvcnkgZnJvbSAnLi9iYXNlJztcbi8qKlxuICog5pe26Ze05YiG57G75bqm6YePXG4gKiBAY2xhc3NcbiAqL1xudmFyIFRpbWVDYXQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFRpbWVDYXQsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVGltZUNhdCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAndGltZUNhdCc7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgVGltZUNhdC5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhbHVlID0gdG9UaW1lU3RhbXAodmFsdWUpO1xuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLnZhbHVlcy5pbmRleE9mKHZhbHVlKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKHZhbHVlKSAmJiB2YWx1ZSA8IHRoaXMudmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IE5hTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnlLHkuo7ml7bpl7TnsbvlnovmlbDmja7pnIDopoHovazmjaLkuIDkuIvvvIzmiYDku6XlpI3lhpkgZ2V0VGV4dFxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIFRpbWVDYXQucHJvdG90eXBlLmdldFRleHQgPSBmdW5jdGlvbiAodmFsdWUsIHRpY2tJbmRleCkge1xuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLnRyYW5zbGF0ZSh2YWx1ZSk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy52YWx1ZXNbaW5kZXhdO1xuICAgICAgICAgICAgdmFyIGZvcm1hdHRlciA9IHRoaXMuZm9ybWF0dGVyO1xuICAgICAgICAgICAgcmVzdWx0ID0gZm9ybWF0dGVyID8gZm9ybWF0dGVyKHJlc3VsdCwgdGlja0luZGV4KSA6IHRpbWVGb3JtYXQocmVzdWx0LCB0aGlzLm1hc2spO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBUaW1lQ2F0LnByb3RvdHlwZS5pbml0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRpY2tNZXRob2QgPSAndGltZS1jYXQnO1xuICAgICAgICB0aGlzLm1hc2sgPSAnWVlZWS1NTS1ERCc7XG4gICAgICAgIHRoaXMudGlja0NvdW50ID0gNzsgLy8g5LiA6Iis5pe26Ze05pWw5o2u5Lya5pi+56S6IDfvvIwgMTTvvIwgMzAg5aSp55qE5pWw5a2XXG4gICAgfTtcbiAgICBUaW1lQ2F0LnByb3RvdHlwZS5zZXREb21haW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLnZhbHVlcztcbiAgICAgICAgLy8g6ZKI5a+55pe26Ze05YiG57G757G75Z6L77yM5Lya5bCG5pe26Ze057uf5LiA6L2s5o2i5Li65pe26Ze05oizXG4gICAgICAgIGVhY2godmFsdWVzLCBmdW5jdGlvbiAodiwgaSkge1xuICAgICAgICAgICAgdmFsdWVzW2ldID0gdG9UaW1lU3RhbXAodik7XG4gICAgICAgIH0pO1xuICAgICAgICB2YWx1ZXMuc29ydChmdW5jdGlvbiAodjEsIHYyKSB7XG4gICAgICAgICAgICByZXR1cm4gdjEgLSB2MjtcbiAgICAgICAgfSk7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuc2V0RG9tYWluLmNhbGwodGhpcyk7XG4gICAgfTtcbiAgICByZXR1cm4gVGltZUNhdDtcbn0oQ2F0ZWdvcnkpKTtcbmV4cG9ydCBkZWZhdWx0IFRpbWVDYXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aW1lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/category/time.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/continuous/base.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/scale/esm/continuous/base.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/scale/esm/base.js\");\n\n\n\n/**\n * 连续度量的基类\n * @class\n */\nvar Continuous = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Continuous, _super);\n function Continuous() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isContinuous = true;\n return _this;\n }\n Continuous.prototype.scale = function (value) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(value)) {\n return NaN;\n }\n var rangeMin = this.rangeMin();\n var rangeMax = this.rangeMax();\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return rangeMin;\n }\n var percent = this.getScalePercent(value);\n return rangeMin + percent * (rangeMax - rangeMin);\n };\n Continuous.prototype.init = function () {\n _super.prototype.init.call(this);\n // init 完成后保证 min, max 包含 ticks 的范围\n var ticks = this.ticks;\n var firstTick = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"head\"])(ticks);\n var lastTick = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"last\"])(ticks);\n if (firstTick < this.min) {\n this.min = firstTick;\n }\n if (lastTick > this.max) {\n this.max = lastTick;\n }\n // strict-limit 方式\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.minLimit)) {\n this.min = firstTick;\n }\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.maxLimit)) {\n this.max = lastTick;\n }\n };\n Continuous.prototype.setDomain = function () {\n var _a = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"getRange\"])(this.values), min = _a.min, max = _a.max;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.min)) {\n this.min = min;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.max)) {\n this.max = max;\n }\n if (this.min > this.max) {\n this.min = min;\n this.max = max;\n }\n };\n Continuous.prototype.calculateTicks = function () {\n var _this = this;\n var ticks = _super.prototype.calculateTicks.call(this);\n if (!this.nice) {\n ticks = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"filter\"])(ticks, function (tick) {\n return tick >= _this.min && tick <= _this.max;\n });\n }\n return ticks;\n };\n // 计算原始值值占的百分比\n Continuous.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n return (value - min) / (max - min);\n };\n Continuous.prototype.getInvertPercent = function (value) {\n return (value - this.rangeMin()) / (this.rangeMax() - this.rangeMin());\n };\n return Continuous;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Continuous);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NvbnRpbnVvdXMvYmFzZS5qcz9lYmVkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQytCO0FBQ3RDO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBSztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1REFBSTtBQUM1Qix1QkFBdUIsdURBQUk7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdEQUFLO0FBQ2xCO0FBQ0E7QUFDQSxhQUFhLHdEQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJEQUFRO0FBQ3pCLFlBQVksd0RBQUs7QUFDakI7QUFDQTtBQUNBLFlBQVksd0RBQUs7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix5REFBTTtBQUMxQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTtBQUNTLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NvbnRpbnVvdXMvYmFzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZmlsdGVyLCBnZXRSYW5nZSwgaGVhZCwgaXNOaWwsIGxhc3QgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBCYXNlIGZyb20gJy4uL2Jhc2UnO1xuLyoqXG4gKiDov57nu63luqbph4/nmoTln7rnsbtcbiAqIEBjbGFzc1xuICovXG52YXIgQ29udGludW91cyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ29udGludW91cywgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDb250aW51b3VzKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuaXNDb250aW51b3VzID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDb250aW51b3VzLnByb3RvdHlwZS5zY2FsZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciByYW5nZU1pbiA9IHRoaXMucmFuZ2VNaW4oKTtcbiAgICAgICAgdmFyIHJhbmdlTWF4ID0gdGhpcy5yYW5nZU1heCgpO1xuICAgICAgICB2YXIgbWF4ID0gdGhpcy5tYXg7XG4gICAgICAgIHZhciBtaW4gPSB0aGlzLm1pbjtcbiAgICAgICAgaWYgKG1heCA9PT0gbWluKSB7XG4gICAgICAgICAgICByZXR1cm4gcmFuZ2VNaW47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBlcmNlbnQgPSB0aGlzLmdldFNjYWxlUGVyY2VudCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiByYW5nZU1pbiArIHBlcmNlbnQgKiAocmFuZ2VNYXggLSByYW5nZU1pbik7XG4gICAgfTtcbiAgICBDb250aW51b3VzLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmluaXQuY2FsbCh0aGlzKTtcbiAgICAgICAgLy8gaW5pdCDlrozmiJDlkI7kv53or4EgbWluLCBtYXgg5YyF5ZCrIHRpY2tzIOeahOiMg+WbtFxuICAgICAgICB2YXIgdGlja3MgPSB0aGlzLnRpY2tzO1xuICAgICAgICB2YXIgZmlyc3RUaWNrID0gaGVhZCh0aWNrcyk7XG4gICAgICAgIHZhciBsYXN0VGljayA9IGxhc3QodGlja3MpO1xuICAgICAgICBpZiAoZmlyc3RUaWNrIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICAgIHRoaXMubWluID0gZmlyc3RUaWNrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYXN0VGljayA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICB0aGlzLm1heCA9IGxhc3RUaWNrO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0cmljdC1saW1pdCDmlrnlvI9cbiAgICAgICAgaWYgKCFpc05pbCh0aGlzLm1pbkxpbWl0KSkge1xuICAgICAgICAgICAgdGhpcy5taW4gPSBmaXJzdFRpY2s7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc05pbCh0aGlzLm1heExpbWl0KSkge1xuICAgICAgICAgICAgdGhpcy5tYXggPSBsYXN0VGljaztcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ29udGludW91cy5wcm90b3R5cGUuc2V0RG9tYWluID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSBnZXRSYW5nZSh0aGlzLnZhbHVlcyksIG1pbiA9IF9hLm1pbiwgbWF4ID0gX2EubWF4O1xuICAgICAgICBpZiAoaXNOaWwodGhpcy5taW4pKSB7XG4gICAgICAgICAgICB0aGlzLm1pbiA9IG1pbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOaWwodGhpcy5tYXgpKSB7XG4gICAgICAgICAgICB0aGlzLm1heCA9IG1heDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5taW4gPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgdGhpcy5taW4gPSBtaW47XG4gICAgICAgICAgICB0aGlzLm1heCA9IG1heDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ29udGludW91cy5wcm90b3R5cGUuY2FsY3VsYXRlVGlja3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciB0aWNrcyA9IF9zdXBlci5wcm90b3R5cGUuY2FsY3VsYXRlVGlja3MuY2FsbCh0aGlzKTtcbiAgICAgICAgaWYgKCF0aGlzLm5pY2UpIHtcbiAgICAgICAgICAgIHRpY2tzID0gZmlsdGVyKHRpY2tzLCBmdW5jdGlvbiAodGljaykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aWNrID49IF90aGlzLm1pbiAmJiB0aWNrIDw9IF90aGlzLm1heDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aWNrcztcbiAgICB9O1xuICAgIC8vIOiuoeeul+WOn+Wni+WAvOWAvOWNoOeahOeZvuWIhuavlFxuICAgIENvbnRpbnVvdXMucHJvdG90eXBlLmdldFNjYWxlUGVyY2VudCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgbWF4ID0gdGhpcy5tYXg7XG4gICAgICAgIHZhciBtaW4gPSB0aGlzLm1pbjtcbiAgICAgICAgcmV0dXJuICh2YWx1ZSAtIG1pbikgLyAobWF4IC0gbWluKTtcbiAgICB9O1xuICAgIENvbnRpbnVvdXMucHJvdG90eXBlLmdldEludmVydFBlcmNlbnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZSAtIHRoaXMucmFuZ2VNaW4oKSkgLyAodGhpcy5yYW5nZU1heCgpIC0gdGhpcy5yYW5nZU1pbigpKTtcbiAgICB9O1xuICAgIHJldHVybiBDb250aW51b3VzO1xufShCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBDb250aW51b3VzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/continuous/base.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/continuous/linear.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/scale/esm/continuous/linear.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/scale/esm/continuous/base.js\");\n\n\n/**\n * 线性度量\n * @class\n */\nvar Linear = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Linear, _super);\n function Linear() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'linear';\n _this.isLinear = true;\n return _this;\n }\n Linear.prototype.invert = function (value) {\n var percent = this.getInvertPercent(value);\n return this.min + percent * (this.max - this.min);\n };\n Linear.prototype.initCfg = function () {\n this.tickMethod = 'wilkinson-extended';\n this.nice = false;\n };\n return Linear;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Linear);\n//# sourceMappingURL=linear.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NvbnRpbnVvdXMvbGluZWFyLmpzPzY5MTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0Y7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVU7QUFDRyxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS9jb250aW51b3VzL2xpbmVhci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IENvbnRpbnVvdXMgZnJvbSAnLi9iYXNlJztcbi8qKlxuICog57q/5oCn5bqm6YePXG4gKiBAY2xhc3NcbiAqL1xudmFyIExpbmVhciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTGluZWFyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIExpbmVhcigpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAnbGluZWFyJztcbiAgICAgICAgX3RoaXMuaXNMaW5lYXIgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIExpbmVhci5wcm90b3R5cGUuaW52ZXJ0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBwZXJjZW50ID0gdGhpcy5nZXRJbnZlcnRQZXJjZW50KHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluICsgcGVyY2VudCAqICh0aGlzLm1heCAtIHRoaXMubWluKTtcbiAgICB9O1xuICAgIExpbmVhci5wcm90b3R5cGUuaW5pdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy50aWNrTWV0aG9kID0gJ3dpbGtpbnNvbi1leHRlbmRlZCc7XG4gICAgICAgIHRoaXMubmljZSA9IGZhbHNlO1xuICAgIH07XG4gICAgcmV0dXJuIExpbmVhcjtcbn0oQ29udGludW91cykpO1xuZXhwb3J0IGRlZmF1bHQgTGluZWFyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGluZWFyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/continuous/linear.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/continuous/log.js": /*!********************************************************!*\ !*** ./node_modules/@antv/scale/esm/continuous/log.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/scale/esm/util/math.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/scale/esm/continuous/base.js\");\n\n\n\n/**\n * Log 度量,处理非均匀分布\n */\nvar Log = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Log, _super);\n function Log() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'log';\n return _this;\n }\n /**\n * @override\n */\n Log.prototype.invert = function (value) {\n var base = this.base;\n var max = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, this.max);\n var rangeMin = this.rangeMin();\n var range = this.rangeMax() - rangeMin;\n var min;\n var positiveMin = this.positiveMin;\n if (positiveMin) {\n if (value === 0) {\n return 0;\n }\n min = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, positiveMin / base);\n var appendPercent = (1 / (max - min)) * range; // 0 到 positiveMin的占比\n if (value < appendPercent) {\n // 落到 0 - positiveMin 之间\n return (value / appendPercent) * positiveMin;\n }\n }\n else {\n min = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, this.min);\n }\n var percent = (value - rangeMin) / range;\n var tmp = percent * (max - min) + min;\n return Math.pow(base, tmp);\n };\n Log.prototype.initCfg = function () {\n this.tickMethod = 'log';\n this.base = 10;\n this.tickCount = 6;\n this.nice = true;\n };\n // 设置\n Log.prototype.setDomain = function () {\n _super.prototype.setDomain.call(this);\n var min = this.min;\n if (min < 0) {\n throw new Error('When you use log scale, the minimum value must be greater than zero!');\n }\n if (min === 0) {\n this.positiveMin = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"getLogPositiveMin\"])(this.values, this.base, this.max);\n }\n };\n // 根据当前值获取占比\n Log.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return 0;\n }\n // 如果值小于等于0,则按照0处理\n if (value <= 0) {\n return 0;\n }\n var base = this.base;\n var positiveMin = this.positiveMin;\n // 如果min == 0, 则根据比0大的最小值,计算比例关系。这个最小值作为坐标轴上的第二个tick,第一个是0但是不显示\n if (positiveMin) {\n min = (positiveMin * 1) / base;\n }\n var percent;\n // 如果数值小于次小值,那么就计算 value / 次小值 占整体的比例\n if (value < positiveMin) {\n percent = value / positiveMin / (Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, max) - Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, min));\n }\n else {\n percent = (Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, value) - Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, min)) / (Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, max) - Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, min));\n }\n return percent;\n };\n return Log;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Log);\n//# sourceMappingURL=log.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NvbnRpbnVvdXMvbG9nLmpzP2IzM2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDb0I7QUFDdEI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0Isc0RBQUc7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixzREFBRztBQUNyQiwwREFBMEQ7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHNEQUFHO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLG9FQUFpQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxzREFBRyxjQUFjLHNEQUFHO0FBQ2pFO0FBQ0E7QUFDQSx1QkFBdUIsc0RBQUcsZ0JBQWdCLHNEQUFHLGdCQUFnQixzREFBRyxjQUFjLHNEQUFHO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFVO0FBQ0csa0VBQUcsRUFBQztBQUNuQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9zY2FsZS9lc20vY29udGludW91cy9sb2cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGdldExvZ1Bvc2l0aXZlTWluLCBsb2cgfSBmcm9tICcuLi91dGlsL21hdGgnO1xuaW1wb3J0IENvbnRpbnVvdXMgZnJvbSAnLi9iYXNlJztcbi8qKlxuICogTG9nIOW6pumHj++8jOWkhOeQhumdnuWdh+WMgOWIhuW4g1xuICovXG52YXIgTG9nID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhMb2csIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTG9nKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdsb2cnO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIExvZy5wcm90b3R5cGUuaW52ZXJ0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBiYXNlID0gdGhpcy5iYXNlO1xuICAgICAgICB2YXIgbWF4ID0gbG9nKGJhc2UsIHRoaXMubWF4KTtcbiAgICAgICAgdmFyIHJhbmdlTWluID0gdGhpcy5yYW5nZU1pbigpO1xuICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLnJhbmdlTWF4KCkgLSByYW5nZU1pbjtcbiAgICAgICAgdmFyIG1pbjtcbiAgICAgICAgdmFyIHBvc2l0aXZlTWluID0gdGhpcy5wb3NpdGl2ZU1pbjtcbiAgICAgICAgaWYgKHBvc2l0aXZlTWluKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1pbiA9IGxvZyhiYXNlLCBwb3NpdGl2ZU1pbiAvIGJhc2UpO1xuICAgICAgICAgICAgdmFyIGFwcGVuZFBlcmNlbnQgPSAoMSAvIChtYXggLSBtaW4pKSAqIHJhbmdlOyAvLyAwIOWIsCBwb3NpdGl2ZU1pbueahOWNoOavlFxuICAgICAgICAgICAgaWYgKHZhbHVlIDwgYXBwZW5kUGVyY2VudCkge1xuICAgICAgICAgICAgICAgIC8vIOiQveWIsCAwIC0gcG9zaXRpdmVNaW4g5LmL6Ze0XG4gICAgICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSAvIGFwcGVuZFBlcmNlbnQpICogcG9zaXRpdmVNaW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtaW4gPSBsb2coYmFzZSwgdGhpcy5taW4pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwZXJjZW50ID0gKHZhbHVlIC0gcmFuZ2VNaW4pIC8gcmFuZ2U7XG4gICAgICAgIHZhciB0bXAgPSBwZXJjZW50ICogKG1heCAtIG1pbikgKyBtaW47XG4gICAgICAgIHJldHVybiBNYXRoLnBvdyhiYXNlLCB0bXApO1xuICAgIH07XG4gICAgTG9nLnByb3RvdHlwZS5pbml0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRpY2tNZXRob2QgPSAnbG9nJztcbiAgICAgICAgdGhpcy5iYXNlID0gMTA7XG4gICAgICAgIHRoaXMudGlja0NvdW50ID0gNjtcbiAgICAgICAgdGhpcy5uaWNlID0gdHJ1ZTtcbiAgICB9O1xuICAgIC8vIOiuvue9rlxuICAgIExvZy5wcm90b3R5cGUuc2V0RG9tYWluID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLnNldERvbWFpbi5jYWxsKHRoaXMpO1xuICAgICAgICB2YXIgbWluID0gdGhpcy5taW47XG4gICAgICAgIGlmIChtaW4gPCAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1doZW4geW91IHVzZSBsb2cgc2NhbGUsIHRoZSBtaW5pbXVtIHZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8hJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pbiA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGl2ZU1pbiA9IGdldExvZ1Bvc2l0aXZlTWluKHRoaXMudmFsdWVzLCB0aGlzLmJhc2UsIHRoaXMubWF4KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5qC55o2u5b2T5YmN5YC86I635Y+W5Y2g5q+UXG4gICAgTG9nLnByb3RvdHlwZS5nZXRTY2FsZVBlcmNlbnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIG1heCA9IHRoaXMubWF4O1xuICAgICAgICB2YXIgbWluID0gdGhpcy5taW47XG4gICAgICAgIGlmIChtYXggPT09IG1pbikge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5aaC5p6c5YC85bCP5LqO562J5LqOMO+8jOWImeaMieeFpzDlpITnkIZcbiAgICAgICAgaWYgKHZhbHVlIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiYXNlID0gdGhpcy5iYXNlO1xuICAgICAgICB2YXIgcG9zaXRpdmVNaW4gPSB0aGlzLnBvc2l0aXZlTWluO1xuICAgICAgICAvLyDlpoLmnpxtaW4gPT0gMCwg5YiZ5qC55o2u5q+UMOWkp+eahOacgOWwj+WAvO+8jOiuoeeul+avlOS+i+WFs+ezu+OAgui/meS4quacgOWwj+WAvOS9nOS4uuWdkOagh+i9tOS4iueahOesrOS6jOS4qnRpY2vvvIznrKzkuIDkuKrmmK8w5L2G5piv5LiN5pi+56S6XG4gICAgICAgIGlmIChwb3NpdGl2ZU1pbikge1xuICAgICAgICAgICAgbWluID0gKHBvc2l0aXZlTWluICogMSkgLyBiYXNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwZXJjZW50O1xuICAgICAgICAvLyDlpoLmnpzmlbDlgLzlsI/kuo7mrKHlsI/lgLzvvIzpgqPkuYjlsLHorqHnrpcgdmFsdWUgLyDmrKHlsI/lgLwg5Y2g5pW05L2T55qE5q+U5L6LXG4gICAgICAgIGlmICh2YWx1ZSA8IHBvc2l0aXZlTWluKSB7XG4gICAgICAgICAgICBwZXJjZW50ID0gdmFsdWUgLyBwb3NpdGl2ZU1pbiAvIChsb2coYmFzZSwgbWF4KSAtIGxvZyhiYXNlLCBtaW4pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlcmNlbnQgPSAobG9nKGJhc2UsIHZhbHVlKSAtIGxvZyhiYXNlLCBtaW4pKSAvIChsb2coYmFzZSwgbWF4KSAtIGxvZyhiYXNlLCBtaW4pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGVyY2VudDtcbiAgICB9O1xuICAgIHJldHVybiBMb2c7XG59KENvbnRpbnVvdXMpKTtcbmV4cG9ydCBkZWZhdWx0IExvZztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvZy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/continuous/log.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/continuous/pow.js": /*!********************************************************!*\ !*** ./node_modules/@antv/scale/esm/continuous/pow.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/scale/esm/util/math.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/scale/esm/continuous/base.js\");\n\n\n\n/**\n * Pow 度量,处理非均匀分布\n */\nvar Pow = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Pow, _super);\n function Pow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'pow';\n return _this;\n }\n /**\n * @override\n */\n Pow.prototype.invert = function (value) {\n var percent = this.getInvertPercent(value);\n var exponent = this.exponent;\n var max = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, this.max);\n var min = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, this.min);\n var tmp = percent * (max - min) + min;\n var factor = tmp >= 0 ? 1 : -1;\n return Math.pow(tmp, exponent) * factor;\n };\n Pow.prototype.initCfg = function () {\n this.tickMethod = 'pow';\n this.exponent = 2;\n this.tickCount = 5;\n this.nice = true;\n };\n // 获取度量计算时,value占的定义域百分比\n Pow.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return 0;\n }\n var exponent = this.exponent;\n var percent = (Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, value) - Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, min)) / (Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, max) - Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, min));\n return percent;\n };\n return Pow;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Pow);\n//# sourceMappingURL=pow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NvbnRpbnVvdXMvcG93LmpzP2Y4Y2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSztBQUNQO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsMERBQU87QUFDekIsa0JBQWtCLDBEQUFPO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwwREFBTyxvQkFBb0IsMERBQU8sb0JBQW9CLDBEQUFPLGtCQUFrQiwwREFBTztBQUM3RztBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVU7QUFDRyxrRUFBRyxFQUFDO0FBQ25CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS9jb250aW51b3VzL3Bvdy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgY2FsQmFzZSB9IGZyb20gJy4uL3V0aWwvbWF0aCc7XG5pbXBvcnQgQ29udGludW91cyBmcm9tICcuL2Jhc2UnO1xuLyoqXG4gKiBQb3cg5bqm6YeP77yM5aSE55CG6Z2e5Z2H5YyA5YiG5biDXG4gKi9cbnZhciBQb3cgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBvdywgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQb3coKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ3Bvdyc7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgUG93LnByb3RvdHlwZS5pbnZlcnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHBlcmNlbnQgPSB0aGlzLmdldEludmVydFBlcmNlbnQodmFsdWUpO1xuICAgICAgICB2YXIgZXhwb25lbnQgPSB0aGlzLmV4cG9uZW50O1xuICAgICAgICB2YXIgbWF4ID0gY2FsQmFzZShleHBvbmVudCwgdGhpcy5tYXgpO1xuICAgICAgICB2YXIgbWluID0gY2FsQmFzZShleHBvbmVudCwgdGhpcy5taW4pO1xuICAgICAgICB2YXIgdG1wID0gcGVyY2VudCAqIChtYXggLSBtaW4pICsgbWluO1xuICAgICAgICB2YXIgZmFjdG9yID0gdG1wID49IDAgPyAxIDogLTE7XG4gICAgICAgIHJldHVybiBNYXRoLnBvdyh0bXAsIGV4cG9uZW50KSAqIGZhY3RvcjtcbiAgICB9O1xuICAgIFBvdy5wcm90b3R5cGUuaW5pdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy50aWNrTWV0aG9kID0gJ3Bvdyc7XG4gICAgICAgIHRoaXMuZXhwb25lbnQgPSAyO1xuICAgICAgICB0aGlzLnRpY2tDb3VudCA9IDU7XG4gICAgICAgIHRoaXMubmljZSA9IHRydWU7XG4gICAgfTtcbiAgICAvLyDojrflj5bluqbph4/orqHnrpfml7bvvIx2YWx1ZeWNoOeahOWumuS5ieWfn+eZvuWIhuavlFxuICAgIFBvdy5wcm90b3R5cGUuZ2V0U2NhbGVQZXJjZW50ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBtYXggPSB0aGlzLm1heDtcbiAgICAgICAgdmFyIG1pbiA9IHRoaXMubWluO1xuICAgICAgICBpZiAobWF4ID09PSBtaW4pIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHZhciBleHBvbmVudCA9IHRoaXMuZXhwb25lbnQ7XG4gICAgICAgIHZhciBwZXJjZW50ID0gKGNhbEJhc2UoZXhwb25lbnQsIHZhbHVlKSAtIGNhbEJhc2UoZXhwb25lbnQsIG1pbikpIC8gKGNhbEJhc2UoZXhwb25lbnQsIG1heCkgLSBjYWxCYXNlKGV4cG9uZW50LCBtaW4pKTtcbiAgICAgICAgcmV0dXJuIHBlcmNlbnQ7XG4gICAgfTtcbiAgICByZXR1cm4gUG93O1xufShDb250aW51b3VzKSk7XG5leHBvcnQgZGVmYXVsdCBQb3c7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb3cuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/continuous/pow.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/continuous/quantile.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/scale/esm/continuous/quantile.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _quantize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quantize */ \"./node_modules/@antv/scale/esm/continuous/quantize.js\");\n\n\nvar Quantile = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Quantile, _super);\n function Quantile() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'quantile';\n return _this;\n }\n Quantile.prototype.initCfg = function () {\n this.tickMethod = 'quantile';\n this.tickCount = 5;\n this.nice = true;\n };\n return Quantile;\n}(_quantize__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Quantile);\n//# sourceMappingURL=quantile.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NvbnRpbnVvdXMvcXVhbnRpbGUuanM/NDJiYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDQTtBQUNsQztBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLGlEQUFRO0FBQ0ssdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9zY2FsZS9lc20vY29udGludW91cy9xdWFudGlsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFF1YW50aXplIGZyb20gJy4vcXVhbnRpemUnO1xudmFyIFF1YW50aWxlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhRdWFudGlsZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBRdWFudGlsZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAncXVhbnRpbGUnO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFF1YW50aWxlLnByb3RvdHlwZS5pbml0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRpY2tNZXRob2QgPSAncXVhbnRpbGUnO1xuICAgICAgICB0aGlzLnRpY2tDb3VudCA9IDU7XG4gICAgICAgIHRoaXMubmljZSA9IHRydWU7XG4gICAgfTtcbiAgICByZXR1cm4gUXVhbnRpbGU7XG59KFF1YW50aXplKSk7XG5leHBvcnQgZGVmYXVsdCBRdWFudGlsZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXF1YW50aWxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/continuous/quantile.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/continuous/quantize.js": /*!*************************************************************!*\ !*** ./node_modules/@antv/scale/esm/continuous/quantize.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/scale/esm/continuous/base.js\");\n\n\n\n/**\n * 分段度量\n */\nvar Quantize = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Quantize, _super);\n function Quantize() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'quantize';\n return _this;\n }\n Quantize.prototype.invert = function (value) {\n var ticks = this.ticks;\n var length = ticks.length;\n var percent = this.getInvertPercent(value);\n var minIndex = Math.floor(percent * (length - 1));\n // 最后一个\n if (minIndex >= length - 1) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"last\"])(ticks);\n }\n // 超出左边界, 则取第一个\n if (minIndex < 0) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"head\"])(ticks);\n }\n var minTick = ticks[minIndex];\n var nextTick = ticks[minIndex + 1];\n // 比当前值小的 tick 在度量上的占比\n var minIndexPercent = minIndex / (length - 1);\n var maxIndexPercent = (minIndex + 1) / (length - 1);\n return minTick + (percent - minIndexPercent) / (maxIndexPercent - minIndexPercent) * (nextTick - minTick);\n };\n Quantize.prototype.initCfg = function () {\n this.tickMethod = 'r-pretty';\n this.tickCount = 5;\n this.nice = true;\n };\n Quantize.prototype.calculateTicks = function () {\n var ticks = _super.prototype.calculateTicks.call(this);\n if (!this.nice) { // 如果 nice = false ,补充 min, max\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"last\"])(ticks) !== this.max) {\n ticks.push(this.max);\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"head\"])(ticks) !== this.min) {\n ticks.unshift(this.min);\n }\n }\n return ticks;\n };\n // 计算当前值在刻度中的占比\n Quantize.prototype.getScalePercent = function (value) {\n var ticks = this.ticks;\n // 超出左边界\n if (value < Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"head\"])(ticks)) {\n return 0;\n }\n // 超出右边界\n if (value > Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"last\"])(ticks)) {\n return 1;\n }\n var minIndex = 0;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(ticks, function (tick, index) {\n if (value >= tick) {\n minIndex = index;\n }\n else {\n return false;\n }\n });\n return minIndex / (ticks.length - 1);\n };\n return Quantize;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Quantize);\n//# sourceMappingURL=quantize.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NvbnRpbnVvdXMvcXVhbnRpemUuanM/ZjY2ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNZO0FBQ2Q7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHVEQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix1REFBSTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsZ0JBQWdCLHVEQUFJO0FBQ3BCO0FBQ0E7QUFDQSxnQkFBZ0IsdURBQUk7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVEQUFJO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1REFBSTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBVTtBQUNHLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NvbnRpbnVvdXMvcXVhbnRpemUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGhlYWQsIGxhc3QgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBDb250aW51b3VzIGZyb20gJy4vYmFzZSc7XG4vKipcbiAqIOWIhuauteW6pumHj1xuICovXG52YXIgUXVhbnRpemUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFF1YW50aXplLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFF1YW50aXplKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdxdWFudGl6ZSc7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgUXVhbnRpemUucHJvdG90eXBlLmludmVydCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgdGlja3MgPSB0aGlzLnRpY2tzO1xuICAgICAgICB2YXIgbGVuZ3RoID0gdGlja3MubGVuZ3RoO1xuICAgICAgICB2YXIgcGVyY2VudCA9IHRoaXMuZ2V0SW52ZXJ0UGVyY2VudCh2YWx1ZSk7XG4gICAgICAgIHZhciBtaW5JbmRleCA9IE1hdGguZmxvb3IocGVyY2VudCAqIChsZW5ndGggLSAxKSk7XG4gICAgICAgIC8vIOacgOWQjuS4gOS4qlxuICAgICAgICBpZiAobWluSW5kZXggPj0gbGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGxhc3QodGlja3MpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOi2heWHuuW3pui+ueeVjO+8jCDliJnlj5bnrKzkuIDkuKpcbiAgICAgICAgaWYgKG1pbkluZGV4IDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIGhlYWQodGlja3MpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtaW5UaWNrID0gdGlja3NbbWluSW5kZXhdO1xuICAgICAgICB2YXIgbmV4dFRpY2sgPSB0aWNrc1ttaW5JbmRleCArIDFdO1xuICAgICAgICAvLyDmr5TlvZPliY3lgLzlsI/nmoQgdGljayDlnKjluqbph4/kuIrnmoTljaDmr5RcbiAgICAgICAgdmFyIG1pbkluZGV4UGVyY2VudCA9IG1pbkluZGV4IC8gKGxlbmd0aCAtIDEpO1xuICAgICAgICB2YXIgbWF4SW5kZXhQZXJjZW50ID0gKG1pbkluZGV4ICsgMSkgLyAobGVuZ3RoIC0gMSk7XG4gICAgICAgIHJldHVybiBtaW5UaWNrICsgKHBlcmNlbnQgLSBtaW5JbmRleFBlcmNlbnQpIC8gKG1heEluZGV4UGVyY2VudCAtIG1pbkluZGV4UGVyY2VudCkgKiAobmV4dFRpY2sgLSBtaW5UaWNrKTtcbiAgICB9O1xuICAgIFF1YW50aXplLnByb3RvdHlwZS5pbml0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRpY2tNZXRob2QgPSAnci1wcmV0dHknO1xuICAgICAgICB0aGlzLnRpY2tDb3VudCA9IDU7XG4gICAgICAgIHRoaXMubmljZSA9IHRydWU7XG4gICAgfTtcbiAgICBRdWFudGl6ZS5wcm90b3R5cGUuY2FsY3VsYXRlVGlja3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0aWNrcyA9IF9zdXBlci5wcm90b3R5cGUuY2FsY3VsYXRlVGlja3MuY2FsbCh0aGlzKTtcbiAgICAgICAgaWYgKCF0aGlzLm5pY2UpIHsgLy8g5aaC5p6cIG5pY2UgPSBmYWxzZSAs6KGl5YWFIG1pbiwgbWF4XG4gICAgICAgICAgICBpZiAobGFzdCh0aWNrcykgIT09IHRoaXMubWF4KSB7XG4gICAgICAgICAgICAgICAgdGlja3MucHVzaCh0aGlzLm1heCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGVhZCh0aWNrcykgIT09IHRoaXMubWluKSB7XG4gICAgICAgICAgICAgICAgdGlja3MudW5zaGlmdCh0aGlzLm1pbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRpY2tzO1xuICAgIH07XG4gICAgLy8g6K6h566X5b2T5YmN5YC85Zyo5Yi75bqm5Lit55qE5Y2g5q+UXG4gICAgUXVhbnRpemUucHJvdG90eXBlLmdldFNjYWxlUGVyY2VudCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgdGlja3MgPSB0aGlzLnRpY2tzO1xuICAgICAgICAvLyDotoXlh7rlt6bovrnnlYxcbiAgICAgICAgaWYgKHZhbHVlIDwgaGVhZCh0aWNrcykpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIOi2heWHuuWPs+i+ueeVjFxuICAgICAgICBpZiAodmFsdWUgPiBsYXN0KHRpY2tzKSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1pbkluZGV4ID0gMDtcbiAgICAgICAgZWFjaCh0aWNrcywgZnVuY3Rpb24gKHRpY2ssIGluZGV4KSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPj0gdGljaykge1xuICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWluSW5kZXggLyAodGlja3MubGVuZ3RoIC0gMSk7XG4gICAgfTtcbiAgICByZXR1cm4gUXVhbnRpemU7XG59KENvbnRpbnVvdXMpKTtcbmV4cG9ydCBkZWZhdWx0IFF1YW50aXplO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cXVhbnRpemUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/continuous/quantize.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/continuous/time.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/scale/esm/continuous/time.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/time */ \"./node_modules/@antv/scale/esm/util/time.js\");\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./linear */ \"./node_modules/@antv/scale/esm/continuous/linear.js\");\n\n\n\n\n/**\n * 时间度量\n * @class\n */\nvar Time = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Time, _super);\n function Time() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'time';\n return _this;\n }\n /**\n * @override\n */\n Time.prototype.getText = function (value, index) {\n var numberValue = this.translate(value);\n var formatter = this.formatter;\n return formatter ? formatter(numberValue, index) : Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"timeFormat\"])(numberValue, this.mask);\n };\n /**\n * @override\n */\n Time.prototype.scale = function (value) {\n var v = value;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(v) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isDate\"])(v)) {\n v = this.translate(v);\n }\n return _super.prototype.scale.call(this, v);\n };\n /**\n * 将时间转换成数字\n * @override\n */\n Time.prototype.translate = function (v) {\n return Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"toTimeStamp\"])(v);\n };\n Time.prototype.initCfg = function () {\n this.tickMethod = 'time-pretty';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7;\n this.nice = false;\n };\n Time.prototype.setDomain = function () {\n var values = this.values;\n // 是否设置了 min, max,而不是直接取 this.min, this.max\n var minConfig = this.getConfig('min');\n var maxConfig = this.getConfig('max');\n // 如果设置了 min,max 则转换成时间戳\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(minConfig) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(minConfig)) {\n this.min = this.translate(this.min);\n }\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(maxConfig) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(maxConfig)) {\n this.max = this.translate(this.max);\n }\n // 没有设置 min, max 时\n if (values && values.length) {\n // 重新计算最大最小值\n var timeStamps_1 = [];\n var min_1 = Infinity; // 最小值\n var secondMin_1 = min_1; // 次小值\n var max_1 = 0;\n // 使用一个循环,计算min,max,secondMin\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(values, function (v) {\n var timeStamp = Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"toTimeStamp\"])(v);\n if (isNaN(timeStamp)) {\n throw new TypeError(\"Invalid Time: \" + v + \" in time scale!\");\n }\n if (min_1 > timeStamp) {\n secondMin_1 = min_1;\n min_1 = timeStamp;\n }\n else if (secondMin_1 > timeStamp) {\n secondMin_1 = timeStamp;\n }\n if (max_1 < timeStamp) {\n max_1 = timeStamp;\n }\n timeStamps_1.push(timeStamp);\n });\n // 存在多个值时,设置最小间距\n if (values.length > 1) {\n this.minTickInterval = secondMin_1 - min_1;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(minConfig)) {\n this.min = min_1;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(maxConfig)) {\n this.max = max_1;\n }\n }\n };\n return Time;\n}(_linear__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Time);\n//# sourceMappingURL=time.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2NvbnRpbnVvdXMvdGltZS5qcz8zNDIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDbUM7QUFDZDtBQUN6QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsNkRBQVU7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBUSxPQUFPLHlEQUFNO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsOERBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdEQUFLLGdCQUFnQiwyREFBUTtBQUMxQztBQUNBO0FBQ0EsYUFBYSx3REFBSyxnQkFBZ0IsMkRBQVE7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLG9DQUFvQztBQUNwQztBQUNBO0FBQ0EsWUFBWSx1REFBSTtBQUNoQixnQ0FBZ0MsOERBQVc7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix3REFBSztBQUNyQjtBQUNBO0FBQ0EsZ0JBQWdCLHdEQUFLO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsK0NBQU07QUFDTyxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS9jb250aW51b3VzL3RpbWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzRGF0ZSwgaXNOaWwsIGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgdGltZUZvcm1hdCwgdG9UaW1lU3RhbXAgfSBmcm9tICcuLi91dGlsL3RpbWUnO1xuaW1wb3J0IExpbmVhciBmcm9tICcuL2xpbmVhcic7XG4vKipcbiAqIOaXtumXtOW6pumHj1xuICogQGNsYXNzXG4gKi9cbnZhciBUaW1lID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhUaW1lLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRpbWUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ3RpbWUnO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIFRpbWUucHJvdG90eXBlLmdldFRleHQgPSBmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgICAgIHZhciBudW1iZXJWYWx1ZSA9IHRoaXMudHJhbnNsYXRlKHZhbHVlKTtcbiAgICAgICAgdmFyIGZvcm1hdHRlciA9IHRoaXMuZm9ybWF0dGVyO1xuICAgICAgICByZXR1cm4gZm9ybWF0dGVyID8gZm9ybWF0dGVyKG51bWJlclZhbHVlLCBpbmRleCkgOiB0aW1lRm9ybWF0KG51bWJlclZhbHVlLCB0aGlzLm1hc2spO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgVGltZS5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHYgPSB2YWx1ZTtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHYpIHx8IGlzRGF0ZSh2KSkge1xuICAgICAgICAgICAgdiA9IHRoaXMudHJhbnNsYXRlKHYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfc3VwZXIucHJvdG90eXBlLnNjYWxlLmNhbGwodGhpcywgdik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlsIbml7bpl7TovazmjaLmiJDmlbDlrZdcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBUaW1lLnByb3RvdHlwZS50cmFuc2xhdGUgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdG9UaW1lU3RhbXAodik7XG4gICAgfTtcbiAgICBUaW1lLnByb3RvdHlwZS5pbml0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRpY2tNZXRob2QgPSAndGltZS1wcmV0dHknO1xuICAgICAgICB0aGlzLm1hc2sgPSAnWVlZWS1NTS1ERCc7XG4gICAgICAgIHRoaXMudGlja0NvdW50ID0gNztcbiAgICAgICAgdGhpcy5uaWNlID0gZmFsc2U7XG4gICAgfTtcbiAgICBUaW1lLnByb3RvdHlwZS5zZXREb21haW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLnZhbHVlcztcbiAgICAgICAgLy8g5piv5ZCm6K6+572u5LqGIG1pbiwgbWF477yM6ICM5LiN5piv55u05o6l5Y+WIHRoaXMubWluLCB0aGlzLm1heFxuICAgICAgICB2YXIgbWluQ29uZmlnID0gdGhpcy5nZXRDb25maWcoJ21pbicpO1xuICAgICAgICB2YXIgbWF4Q29uZmlnID0gdGhpcy5nZXRDb25maWcoJ21heCcpO1xuICAgICAgICAvLyDlpoLmnpzorr7nva7kuoYgbWluLG1heCDliJnovazmjaLmiJDml7bpl7TmiLNcbiAgICAgICAgaWYgKCFpc05pbChtaW5Db25maWcpIHx8ICFpc051bWJlcihtaW5Db25maWcpKSB7XG4gICAgICAgICAgICB0aGlzLm1pbiA9IHRoaXMudHJhbnNsYXRlKHRoaXMubWluKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzTmlsKG1heENvbmZpZykgfHwgIWlzTnVtYmVyKG1heENvbmZpZykpIHtcbiAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy50cmFuc2xhdGUodGhpcy5tYXgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOayoeacieiuvue9riBtaW4sIG1heCDml7ZcbiAgICAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyDph43mlrDorqHnrpfmnIDlpKfmnIDlsI/lgLxcbiAgICAgICAgICAgIHZhciB0aW1lU3RhbXBzXzEgPSBbXTtcbiAgICAgICAgICAgIHZhciBtaW5fMSA9IEluZmluaXR5OyAvLyDmnIDlsI/lgLxcbiAgICAgICAgICAgIHZhciBzZWNvbmRNaW5fMSA9IG1pbl8xOyAvLyDmrKHlsI/lgLxcbiAgICAgICAgICAgIHZhciBtYXhfMSA9IDA7XG4gICAgICAgICAgICAvLyDkvb/nlKjkuIDkuKrlvqrnjq/vvIzorqHnrpdtaW4sbWF4LHNlY29uZE1pblxuICAgICAgICAgICAgZWFjaCh2YWx1ZXMsIGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRpbWVTdGFtcCA9IHRvVGltZVN0YW1wKHYpO1xuICAgICAgICAgICAgICAgIGlmIChpc05hTih0aW1lU3RhbXApKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIFRpbWU6IFwiICsgdiArIFwiIGluIHRpbWUgc2NhbGUhXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobWluXzEgPiB0aW1lU3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kTWluXzEgPSBtaW5fMTtcbiAgICAgICAgICAgICAgICAgICAgbWluXzEgPSB0aW1lU3RhbXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNlY29uZE1pbl8xID4gdGltZVN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlY29uZE1pbl8xID0gdGltZVN0YW1wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobWF4XzEgPCB0aW1lU3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4XzEgPSB0aW1lU3RhbXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRpbWVTdGFtcHNfMS5wdXNoKHRpbWVTdGFtcCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIOWtmOWcqOWkmuS4quWAvOaXtu+8jOiuvue9ruacgOWwj+mXtOi3nVxuICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5taW5UaWNrSW50ZXJ2YWwgPSBzZWNvbmRNaW5fMSAtIG1pbl8xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzTmlsKG1pbkNvbmZpZykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1pbiA9IG1pbl8xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzTmlsKG1heENvbmZpZykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1heCA9IG1heF8xO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gVGltZTtcbn0oTGluZWFyKSk7XG5leHBvcnQgZGVmYXVsdCBUaW1lO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGltZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/continuous/time.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/factory.js": /*!*************************************************!*\ !*** ./node_modules/@antv/scale/esm/factory.js ***! \*************************************************/ /*! exports provided: Scale, getScale, registerScale */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getScale\", function() { return getClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerScale\", function() { return registerClass; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/scale/esm/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Scale\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\nvar map = {};\nfunction getClass(key) {\n return map[key];\n}\nfunction registerClass(key, cls) {\n if (getClass(key)) {\n throw new Error(\"type '\" + key + \"' existed.\");\n }\n map[key] = cls;\n}\n\n//# sourceMappingURL=factory.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2ZhY3RvcnkuanM/NmZlNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDdUU7QUFDdkUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2ZhY3RvcnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2NhbGUgZnJvbSAnLi9iYXNlJztcbnZhciBtYXAgPSB7fTtcbmZ1bmN0aW9uIGdldENsYXNzKGtleSkge1xuICAgIHJldHVybiBtYXBba2V5XTtcbn1cbmZ1bmN0aW9uIHJlZ2lzdGVyQ2xhc3Moa2V5LCBjbHMpIHtcbiAgICBpZiAoZ2V0Q2xhc3Moa2V5KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0eXBlICdcIiArIGtleSArIFwiJyBleGlzdGVkLlwiKTtcbiAgICB9XG4gICAgbWFwW2tleV0gPSBjbHM7XG59XG5leHBvcnQgeyBTY2FsZSwgZ2V0Q2xhc3MgYXMgZ2V0U2NhbGUsIHJlZ2lzdGVyQ2xhc3MgYXMgcmVnaXN0ZXJTY2FsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmFjdG9yeS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/factory.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/identity/index.js": /*!********************************************************!*\ !*** ./node_modules/@antv/scale/esm/identity/index.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/@antv/scale/esm/base.js\");\n\n\n\n/**\n * identity scale原则上是定义域和值域一致,scale/invert方法也是一致的\n * 参考R的实现:https://github.com/r-lib/scales/blob/master/R/pal-identity.r\n * 参考d3的实现(做了下转型):https://github.com/d3/d3-scale/blob/master/src/identity.js\n */\nvar Identity = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Identity, _super);\n function Identity() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'identity';\n _this.isIdentity = true;\n return _this;\n }\n Identity.prototype.calculateTicks = function () {\n return this.values;\n };\n Identity.prototype.scale = function (value) {\n // 如果传入的值不等于 identity 的值,则直接返回,用于一维图时的 dodge\n if (this.values[0] !== value && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value)) {\n return value;\n }\n return this.range[0];\n };\n Identity.prototype.invert = function (value) {\n var range = this.range;\n if (value < range[0] || value > range[1]) {\n return NaN;\n }\n return this.values[0];\n };\n return Identity;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Identity);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2lkZW50aXR5L2luZGV4LmpzPzU2ZDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUNYO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLDJEQUFRO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTtBQUNTLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2lkZW50aXR5L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEJhc2UgZnJvbSAnLi4vYmFzZSc7XG4vKipcbiAqIGlkZW50aXR5IHNjYWxl5Y6f5YiZ5LiK5piv5a6a5LmJ5Z+f5ZKM5YC85Z+f5LiA6Ie077yMc2NhbGUvaW52ZXJ05pa55rOV5Lmf5piv5LiA6Ie055qEXG4gKiDlj4LogINS55qE5a6e546w77yaaHR0cHM6Ly9naXRodWIuY29tL3ItbGliL3NjYWxlcy9ibG9iL21hc3Rlci9SL3BhbC1pZGVudGl0eS5yXG4gKiDlj4LogINkM+eahOWunueOsO+8iOWBmuS6huS4i+i9rOWei++8ie+8mmh0dHBzOi8vZ2l0aHViLmNvbS9kMy9kMy1zY2FsZS9ibG9iL21hc3Rlci9zcmMvaWRlbnRpdHkuanNcbiAqL1xudmFyIElkZW50aXR5ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJZGVudGl0eSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBJZGVudGl0eSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAnaWRlbnRpdHknO1xuICAgICAgICBfdGhpcy5pc0lkZW50aXR5ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBJZGVudGl0eS5wcm90b3R5cGUuY2FsY3VsYXRlVGlja3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcztcbiAgICB9O1xuICAgIElkZW50aXR5LnByb3RvdHlwZS5zY2FsZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAvLyDlpoLmnpzkvKDlhaXnmoTlgLzkuI3nrYnkuo4gaWRlbnRpdHkg55qE5YC877yM5YiZ55u05o6l6L+U5Zue77yM55So5LqO5LiA57u05Zu+5pe255qEIGRvZGdlXG4gICAgICAgIGlmICh0aGlzLnZhbHVlc1swXSAhPT0gdmFsdWUgJiYgaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VbMF07XG4gICAgfTtcbiAgICBJZGVudGl0eS5wcm90b3R5cGUuaW52ZXJ0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciByYW5nZSA9IHRoaXMucmFuZ2U7XG4gICAgICAgIGlmICh2YWx1ZSA8IHJhbmdlWzBdIHx8IHZhbHVlID4gcmFuZ2VbMV0pIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzWzBdO1xuICAgIH07XG4gICAgcmV0dXJuIElkZW50aXR5O1xufShCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBJZGVudGl0eTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/identity/index.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/index.js": /*!***********************************************!*\ !*** ./node_modules/@antv/scale/esm/index.js ***! \***********************************************/ /*! exports provided: Category, Identity, Linear, Log, Pow, Time, TimeCat, Quantile, Quantize, Scale, getScale, registerScale, getTickMethod, registerTickMethod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/@antv/scale/esm/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Scale\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _category_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./category/base */ \"./node_modules/@antv/scale/esm/category/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Category\", function() { return _category_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _category_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./category/time */ \"./node_modules/@antv/scale/esm/category/time.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TimeCat\", function() { return _category_time__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _continuous_linear__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./continuous/linear */ \"./node_modules/@antv/scale/esm/continuous/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Linear\", function() { return _continuous_linear__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _continuous_log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./continuous/log */ \"./node_modules/@antv/scale/esm/continuous/log.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Log\", function() { return _continuous_log__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _continuous_pow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./continuous/pow */ \"./node_modules/@antv/scale/esm/continuous/pow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Pow\", function() { return _continuous_pow__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _continuous_time__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./continuous/time */ \"./node_modules/@antv/scale/esm/continuous/time.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Time\", function() { return _continuous_time__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _continuous_quantize__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./continuous/quantize */ \"./node_modules/@antv/scale/esm/continuous/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Quantize\", function() { return _continuous_quantize__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _continuous_quantile__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./continuous/quantile */ \"./node_modules/@antv/scale/esm/continuous/quantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Quantile\", function() { return _continuous_quantile__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _factory__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./factory */ \"./node_modules/@antv/scale/esm/factory.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getScale\", function() { return _factory__WEBPACK_IMPORTED_MODULE_9__[\"getScale\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerScale\", function() { return _factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"]; });\n\n/* harmony import */ var _identity_index__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./identity/index */ \"./node_modules/@antv/scale/esm/identity/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Identity\", function() { return _identity_index__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _tick_method_index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./tick-method/index */ \"./node_modules/@antv/scale/esm/tick-method/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTickMethod\", function() { return _tick_method_index__WEBPACK_IMPORTED_MODULE_11__[\"getTickMethod\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerTickMethod\", function() { return _tick_method_index__WEBPACK_IMPORTED_MODULE_11__[\"registerTickMethod\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('cat', _category_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('category', _category_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('identity', _identity_index__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('linear', _continuous_linear__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('log', _continuous_log__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('pow', _continuous_pow__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('time', _continuous_time__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('timeCat', _category_time__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('quantize', _continuous_quantize__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('quantile', _continuous_quantile__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2luZGV4LmpzP2YyZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQjtBQUNZO0FBQ0Q7QUFDRztBQUNOO0FBQ0E7QUFDRTtBQUNRO0FBQ0E7QUFDTztBQUNaO0FBQ2dDO0FBQ3hFLDhEQUFhLFFBQVEsc0RBQVE7QUFDN0IsOERBQWEsYUFBYSxzREFBUTtBQUNsQyw4REFBYSxhQUFhLHdEQUFRO0FBQ2xDLDhEQUFhLFdBQVcsMERBQU07QUFDOUIsOERBQWEsUUFBUSx1REFBRztBQUN4Qiw4REFBYSxRQUFRLHVEQUFHO0FBQ3hCLDhEQUFhLFNBQVMsd0RBQUk7QUFDMUIsOERBQWEsWUFBWSxzREFBTztBQUNoQyw4REFBYSxhQUFhLDREQUFRO0FBQ2xDLDhEQUFhLGFBQWEsNERBQVE7QUFDcUg7QUFDdkoiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNjYWxlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgQ2F0ZWdvcnkgZnJvbSAnLi9jYXRlZ29yeS9iYXNlJztcbmltcG9ydCBUaW1lQ2F0IGZyb20gJy4vY2F0ZWdvcnkvdGltZSc7XG5pbXBvcnQgTGluZWFyIGZyb20gJy4vY29udGludW91cy9saW5lYXInO1xuaW1wb3J0IExvZyBmcm9tICcuL2NvbnRpbnVvdXMvbG9nJztcbmltcG9ydCBQb3cgZnJvbSAnLi9jb250aW51b3VzL3Bvdyc7XG5pbXBvcnQgVGltZSBmcm9tICcuL2NvbnRpbnVvdXMvdGltZSc7XG5pbXBvcnQgUXVhbnRpemUgZnJvbSAnLi9jb250aW51b3VzL3F1YW50aXplJztcbmltcG9ydCBRdWFudGlsZSBmcm9tICcuL2NvbnRpbnVvdXMvcXVhbnRpbGUnO1xuaW1wb3J0IHsgZ2V0U2NhbGUsIHJlZ2lzdGVyU2NhbGUgfSBmcm9tICcuL2ZhY3RvcnknO1xuaW1wb3J0IElkZW50aXR5IGZyb20gJy4vaWRlbnRpdHkvaW5kZXgnO1xuaW1wb3J0IHsgZ2V0VGlja01ldGhvZCwgcmVnaXN0ZXJUaWNrTWV0aG9kIH0gZnJvbSAnLi90aWNrLW1ldGhvZC9pbmRleCc7XG5yZWdpc3RlclNjYWxlKCdjYXQnLCBDYXRlZ29yeSk7XG5yZWdpc3RlclNjYWxlKCdjYXRlZ29yeScsIENhdGVnb3J5KTtcbnJlZ2lzdGVyU2NhbGUoJ2lkZW50aXR5JywgSWRlbnRpdHkpO1xucmVnaXN0ZXJTY2FsZSgnbGluZWFyJywgTGluZWFyKTtcbnJlZ2lzdGVyU2NhbGUoJ2xvZycsIExvZyk7XG5yZWdpc3RlclNjYWxlKCdwb3cnLCBQb3cpO1xucmVnaXN0ZXJTY2FsZSgndGltZScsIFRpbWUpO1xucmVnaXN0ZXJTY2FsZSgndGltZUNhdCcsIFRpbWVDYXQpO1xucmVnaXN0ZXJTY2FsZSgncXVhbnRpemUnLCBRdWFudGl6ZSk7XG5yZWdpc3RlclNjYWxlKCdxdWFudGlsZScsIFF1YW50aWxlKTtcbmV4cG9ydCB7IENhdGVnb3J5LCBJZGVudGl0eSwgTGluZWFyLCBMb2csIFBvdywgVGltZSwgVGltZUNhdCwgUXVhbnRpbGUsIFF1YW50aXplLCBTY2FsZSwgZ2V0U2NhbGUsIHJlZ2lzdGVyU2NhbGUsIGdldFRpY2tNZXRob2QsIHJlZ2lzdGVyVGlja01ldGhvZCwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/index.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/cat.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/cat.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculateCatTicks; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_extended__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/extended */ \"./node_modules/@antv/scale/esm/util/extended.js\");\n\n\n/**\n * 计算分类 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction calculateCatTicks(cfg) {\n var values = cfg.values, tickInterval = cfg.tickInterval, tickCount = cfg.tickCount;\n var ticks = values;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(tickInterval)) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"filter\"])(ticks, function (__, i) { return i % tickInterval === 0; });\n }\n var min = cfg.min, max = cfg.max;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(min)) {\n min = 0;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(max)) {\n max = values.length - 1;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(tickCount) && tickCount < max - min) {\n // 简单过滤,部分情况下小数的倍数也可以是整数\n // tslint:disable-next-line: no-shadowed-variable\n var ticks_1 = Object(_util_extended__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(min, max, tickCount, false, [1, 2, 5, 3, 4, 7, 6, 8, 9]).ticks;\n var valid = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"filter\"])(ticks_1, function (tick) { return tick >= min && tick <= max; });\n return valid.map(function (index) { return values[index]; });\n }\n return values.slice(min, max + 1);\n}\n//# sourceMappingURL=cat.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL2NhdC5qcz82NWZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFEO0FBQ2I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEIsZUFBZSx5REFBTSwwQkFBMEIsK0JBQStCLEVBQUU7QUFDaEY7QUFDQTtBQUNBLFFBQVEsd0RBQUs7QUFDYjtBQUNBO0FBQ0EsUUFBUSx3REFBSztBQUNiO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7QUFDQSxzQkFBc0IsOERBQVE7QUFDOUIsb0JBQW9CLHlEQUFNLDJCQUEyQixtQ0FBbUMsRUFBRTtBQUMxRiwyQ0FBMkMsc0JBQXNCLEVBQUU7QUFDbkU7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL2NhdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbHRlciwgaXNOaWwsIGlzTnVtYmVyIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgZXh0ZW5kZWQgZnJvbSAnLi4vdXRpbC9leHRlbmRlZCc7XG4vKipcbiAqIOiuoeeul+WIhuexuyB0aWNrc1xuICogQHBhcmFtIGNmZyDluqbph4/nmoTphY3nva7poblcbiAqIEByZXR1cm5zIOiuoeeul+WQjueahCB0aWNrc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjYWxjdWxhdGVDYXRUaWNrcyhjZmcpIHtcbiAgICB2YXIgdmFsdWVzID0gY2ZnLnZhbHVlcywgdGlja0ludGVydmFsID0gY2ZnLnRpY2tJbnRlcnZhbCwgdGlja0NvdW50ID0gY2ZnLnRpY2tDb3VudDtcbiAgICB2YXIgdGlja3MgPSB2YWx1ZXM7XG4gICAgaWYgKGlzTnVtYmVyKHRpY2tJbnRlcnZhbCkpIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlcih0aWNrcywgZnVuY3Rpb24gKF9fLCBpKSB7IHJldHVybiBpICUgdGlja0ludGVydmFsID09PSAwOyB9KTtcbiAgICB9XG4gICAgdmFyIG1pbiA9IGNmZy5taW4sIG1heCA9IGNmZy5tYXg7XG4gICAgaWYgKGlzTmlsKG1pbikpIHtcbiAgICAgICAgbWluID0gMDtcbiAgICB9XG4gICAgaWYgKGlzTmlsKG1heCkpIHtcbiAgICAgICAgbWF4ID0gdmFsdWVzLmxlbmd0aCAtIDE7XG4gICAgfVxuICAgIGlmIChpc051bWJlcih0aWNrQ291bnQpICYmIHRpY2tDb3VudCA8IG1heCAtIG1pbikge1xuICAgICAgICAvLyDnroDljZXov4fmu6TvvIzpg6jliIbmg4XlhrXkuIvlsI/mlbDnmoTlgI3mlbDkuZ/lj6/ku6XmmK/mlbTmlbBcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1zaGFkb3dlZC12YXJpYWJsZVxuICAgICAgICB2YXIgdGlja3NfMSA9IGV4dGVuZGVkKG1pbiwgbWF4LCB0aWNrQ291bnQsIGZhbHNlLCBbMSwgMiwgNSwgMywgNCwgNywgNiwgOCwgOV0pLnRpY2tzO1xuICAgICAgICB2YXIgdmFsaWQgPSBmaWx0ZXIodGlja3NfMSwgZnVuY3Rpb24gKHRpY2spIHsgcmV0dXJuIHRpY2sgPj0gbWluICYmIHRpY2sgPD0gbWF4OyB9KTtcbiAgICAgICAgcmV0dXJuIHZhbGlkLm1hcChmdW5jdGlvbiAoaW5kZXgpIHsgcmV0dXJuIHZhbHVlc1tpbmRleF07IH0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzLnNsaWNlKG1pbiwgbWF4ICsgMSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYXQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/cat.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/d3-linear.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/d3-linear.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return d3LinearTickMethod; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_d3_linear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/d3-linear */ \"./node_modules/@antv/scale/esm/util/d3-linear.js\");\n/* harmony import */ var _util_interval__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/interval */ \"./node_modules/@antv/scale/esm/util/interval.js\");\n/* harmony import */ var _util_strict_limit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/strict-limit */ \"./node_modules/@antv/scale/esm/util/strict-limit.js\");\n\n\n\n\nfunction d3LinearTickMethod(cfg) {\n var min = cfg.min, max = cfg.max, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit;\n var ticks = Object(_util_d3_linear__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(cfg);\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(minLimit) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(maxLimit)) {\n return Object(_util_strict_limit__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(cfg, Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"head\"])(ticks), Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(ticks));\n }\n if (tickInterval) {\n return Object(_util_interval__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n//# sourceMappingURL=d3-linear.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL2QzLWxpbmVhci5qcz8wMjRjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErQztBQUNOO0FBQ0Q7QUFDTztBQUNoQztBQUNmO0FBQ0EsZ0JBQWdCLCtEQUFRO0FBQ3hCLFNBQVMsd0RBQUssZUFBZSx3REFBSztBQUNsQyxlQUFlLGtFQUFXLE1BQU0sdURBQUksU0FBUyx1REFBSTtBQUNqRDtBQUNBO0FBQ0EsZUFBZSw4REFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvZDMtbGluZWFyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGVhZCwgaXNOaWwsIGxhc3QgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBkM0xpbmVhciBmcm9tICcuLi91dGlsL2QzLWxpbmVhcic7XG5pbXBvcnQgaW50ZXJ2YWwgZnJvbSAnLi4vdXRpbC9pbnRlcnZhbCc7XG5pbXBvcnQgc3RyaWN0TGltaXQgZnJvbSAnLi4vdXRpbC9zdHJpY3QtbGltaXQnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZDNMaW5lYXJUaWNrTWV0aG9kKGNmZykge1xuICAgIHZhciBtaW4gPSBjZmcubWluLCBtYXggPSBjZmcubWF4LCB0aWNrSW50ZXJ2YWwgPSBjZmcudGlja0ludGVydmFsLCBtaW5MaW1pdCA9IGNmZy5taW5MaW1pdCwgbWF4TGltaXQgPSBjZmcubWF4TGltaXQ7XG4gICAgdmFyIHRpY2tzID0gZDNMaW5lYXIoY2ZnKTtcbiAgICBpZiAoIWlzTmlsKG1pbkxpbWl0KSB8fCAhaXNOaWwobWF4TGltaXQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpY3RMaW1pdChjZmcsIGhlYWQodGlja3MpLCBsYXN0KHRpY2tzKSk7XG4gICAgfVxuICAgIGlmICh0aWNrSW50ZXJ2YWwpIHtcbiAgICAgICAgcmV0dXJuIGludGVydmFsKG1pbiwgbWF4LCB0aWNrSW50ZXJ2YWwpLnRpY2tzO1xuICAgIH1cbiAgICByZXR1cm4gdGlja3M7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kMy1saW5lYXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/d3-linear.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/index.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/index.js ***! \***********************************************************/ /*! exports provided: getTickMethod, registerTickMethod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cat */ \"./node_modules/@antv/scale/esm/tick-method/cat.js\");\n/* harmony import */ var _d3_linear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./d3-linear */ \"./node_modules/@antv/scale/esm/tick-method/d3-linear.js\");\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear */ \"./node_modules/@antv/scale/esm/tick-method/linear.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log */ \"./node_modules/@antv/scale/esm/tick-method/log.js\");\n/* harmony import */ var _pow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pow */ \"./node_modules/@antv/scale/esm/tick-method/pow.js\");\n/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./quantile */ \"./node_modules/@antv/scale/esm/tick-method/quantile.js\");\n/* harmony import */ var _r_prettry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./r-prettry */ \"./node_modules/@antv/scale/esm/tick-method/r-prettry.js\");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./register */ \"./node_modules/@antv/scale/esm/tick-method/register.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTickMethod\", function() { return _register__WEBPACK_IMPORTED_MODULE_7__[\"getTickMethod\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerTickMethod\", function() { return _register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"]; });\n\n/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./time */ \"./node_modules/@antv/scale/esm/tick-method/time.js\");\n/* harmony import */ var _time_cat__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./time-cat */ \"./node_modules/@antv/scale/esm/tick-method/time-cat.js\");\n/* harmony import */ var _time_pretty__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./time-pretty */ \"./node_modules/@antv/scale/esm/tick-method/time-pretty.js\");\n\n\n\n\n\n\n\n\n\n\n\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('cat', _cat__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('time-cat', _time_cat__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('wilkinson-extended', _linear__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('r-pretty', _r_prettry__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('time', _time__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('time-pretty', _time_pretty__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('log', _log__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('pow', _pow__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('quantile', _quantile__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('d3-linear', _d3_linear__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL2luZGV4LmpzP2RiOTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBd0I7QUFDVztBQUNMO0FBQ047QUFDQTtBQUNVO0FBQ0E7QUFDNkI7QUFDckM7QUFDTztBQUNNO0FBQ3ZDLG9FQUFrQixRQUFRLDRDQUFHO0FBQzdCLG9FQUFrQixhQUFhLGlEQUFPO0FBQ3RDLG9FQUFrQix1QkFBdUIsK0NBQU07QUFDL0Msb0VBQWtCLGFBQWEsa0RBQU87QUFDdEMsb0VBQWtCLFNBQVMsNkNBQUk7QUFDL0Isb0VBQWtCLGdCQUFnQixxREFBVTtBQUM1QyxvRUFBa0IsUUFBUSw0Q0FBRztBQUM3QixvRUFBa0IsUUFBUSw0Q0FBRztBQUM3QixvRUFBa0IsYUFBYSxpREFBUTtBQUN2QyxvRUFBa0IsY0FBYyxrREFBUTtBQUNLO0FBQzdDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS90aWNrLW1ldGhvZC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjYXQgZnJvbSAnLi9jYXQnO1xuaW1wb3J0IGQzTGluZWFyIGZyb20gJy4vZDMtbGluZWFyJztcbmltcG9ydCBsaW5lYXIgZnJvbSAnLi9saW5lYXInO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZyc7XG5pbXBvcnQgcG93IGZyb20gJy4vcG93JztcbmltcG9ydCBxdWFudGlsZSBmcm9tICcuL3F1YW50aWxlJztcbmltcG9ydCByUHJldHR5IGZyb20gJy4vci1wcmV0dHJ5JztcbmltcG9ydCB7IGdldFRpY2tNZXRob2QsIHJlZ2lzdGVyVGlja01ldGhvZCB9IGZyb20gJy4vcmVnaXN0ZXInO1xuaW1wb3J0IHRpbWUgZnJvbSAnLi90aW1lJztcbmltcG9ydCB0aW1lQ2F0IGZyb20gJy4vdGltZS1jYXQnO1xuaW1wb3J0IHRpbWVQcmV0dHkgZnJvbSAnLi90aW1lLXByZXR0eSc7XG5yZWdpc3RlclRpY2tNZXRob2QoJ2NhdCcsIGNhdCk7XG5yZWdpc3RlclRpY2tNZXRob2QoJ3RpbWUtY2F0JywgdGltZUNhdCk7XG5yZWdpc3RlclRpY2tNZXRob2QoJ3dpbGtpbnNvbi1leHRlbmRlZCcsIGxpbmVhcik7XG5yZWdpc3RlclRpY2tNZXRob2QoJ3ItcHJldHR5JywgclByZXR0eSk7XG5yZWdpc3RlclRpY2tNZXRob2QoJ3RpbWUnLCB0aW1lKTtcbnJlZ2lzdGVyVGlja01ldGhvZCgndGltZS1wcmV0dHknLCB0aW1lUHJldHR5KTtcbnJlZ2lzdGVyVGlja01ldGhvZCgnbG9nJywgbG9nKTtcbnJlZ2lzdGVyVGlja01ldGhvZCgncG93JywgcG93KTtcbnJlZ2lzdGVyVGlja01ldGhvZCgncXVhbnRpbGUnLCBxdWFudGlsZSk7XG5yZWdpc3RlclRpY2tNZXRob2QoJ2QzLWxpbmVhcicsIGQzTGluZWFyKTtcbmV4cG9ydCB7IGdldFRpY2tNZXRob2QsIHJlZ2lzdGVyVGlja01ldGhvZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/index.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/linear.js": /*!************************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/linear.js ***! \************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return linear; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_extended__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/extended */ \"./node_modules/@antv/scale/esm/util/extended.js\");\n/* harmony import */ var _util_interval__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/interval */ \"./node_modules/@antv/scale/esm/util/interval.js\");\n/* harmony import */ var _util_strict_limit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/strict-limit */ \"./node_modules/@antv/scale/esm/util/strict-limit.js\");\n\n\n\n\n/**\n * 计算线性的 ticks,使用 wilkinson extended 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction linear(cfg) {\n var min = cfg.min, max = cfg.max, tickCount = cfg.tickCount, nice = cfg.nice, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit;\n var ticks = Object(_util_extended__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(min, max, tickCount, nice).ticks;\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(minLimit) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(maxLimit)) {\n return Object(_util_strict_limit__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(cfg, Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"head\"])(ticks), Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(ticks));\n }\n if (tickInterval) {\n return Object(_util_interval__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n//# sourceMappingURL=linear.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL2xpbmVhci5qcz9hOTlhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErQztBQUNQO0FBQ0E7QUFDTztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBLGdCQUFnQiw4REFBUTtBQUN4QixTQUFTLHdEQUFLLGVBQWUsd0RBQUs7QUFDbEMsZUFBZSxrRUFBVyxNQUFNLHVEQUFJLFNBQVMsdURBQUk7QUFDakQ7QUFDQTtBQUNBLGVBQWUsOERBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL2xpbmVhci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhlYWQsIGlzTmlsLCBsYXN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgZXh0ZW5kZWQgZnJvbSAnLi4vdXRpbC9leHRlbmRlZCc7XG5pbXBvcnQgaW50ZXJ2YWwgZnJvbSAnLi4vdXRpbC9pbnRlcnZhbCc7XG5pbXBvcnQgc3RyaWN0TGltaXQgZnJvbSAnLi4vdXRpbC9zdHJpY3QtbGltaXQnO1xuLyoqXG4gKiDorqHnrpfnur/mgKfnmoQgdGlja3PvvIzkvb/nlKggd2lsa2luc29uIGV4dGVuZGVkIOaWueazlVxuICogQHBhcmFtIGNmZyDluqbph4/nmoTphY3nva7poblcbiAqIEByZXR1cm5zIOiuoeeul+WQjueahCB0aWNrc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaW5lYXIoY2ZnKSB7XG4gICAgdmFyIG1pbiA9IGNmZy5taW4sIG1heCA9IGNmZy5tYXgsIHRpY2tDb3VudCA9IGNmZy50aWNrQ291bnQsIG5pY2UgPSBjZmcubmljZSwgdGlja0ludGVydmFsID0gY2ZnLnRpY2tJbnRlcnZhbCwgbWluTGltaXQgPSBjZmcubWluTGltaXQsIG1heExpbWl0ID0gY2ZnLm1heExpbWl0O1xuICAgIHZhciB0aWNrcyA9IGV4dGVuZGVkKG1pbiwgbWF4LCB0aWNrQ291bnQsIG5pY2UpLnRpY2tzO1xuICAgIGlmICghaXNOaWwobWluTGltaXQpIHx8ICFpc05pbChtYXhMaW1pdCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmljdExpbWl0KGNmZywgaGVhZCh0aWNrcyksIGxhc3QodGlja3MpKTtcbiAgICB9XG4gICAgaWYgKHRpY2tJbnRlcnZhbCkge1xuICAgICAgICByZXR1cm4gaW50ZXJ2YWwobWluLCBtYXgsIHRpY2tJbnRlcnZhbCkudGlja3M7XG4gICAgfVxuICAgIHJldHVybiB0aWNrcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmVhci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/linear.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/log.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/log.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculateLogTicks; });\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/scale/esm/util/math.js\");\n\n/**\n * 计算 log 的 ticks,考虑 min = 0 的场景\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction calculateLogTicks(cfg) {\n var base = cfg.base, tickCount = cfg.tickCount, min = cfg.min, max = cfg.max, values = cfg.values;\n var minTick;\n var maxTick = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(base, max);\n if (min > 0) {\n minTick = Math.floor(Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(base, min));\n }\n else {\n var positiveMin = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"getLogPositiveMin\"])(values, base, max);\n minTick = Math.floor(Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(base, positiveMin));\n }\n var count = maxTick - minTick;\n var avg = Math.ceil(count / tickCount);\n var ticks = [];\n for (var i = minTick; i < maxTick + avg; i = i + avg) {\n ticks.push(Math.pow(base, i));\n }\n if (min <= 0) {\n // 最小值 <= 0 时显示 0\n ticks.unshift(0);\n }\n return ticks;\n}\n//# sourceMappingURL=log.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL2xvZy5qcz9iNTQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFzRDtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0Esa0JBQWtCLHNEQUFHO0FBQ3JCO0FBQ0EsNkJBQTZCLHNEQUFHO0FBQ2hDO0FBQ0E7QUFDQSwwQkFBMEIsb0VBQWlCO0FBQzNDLDZCQUE2QixzREFBRztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixtQkFBbUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS90aWNrLW1ldGhvZC9sb2cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dQb3NpdGl2ZU1pbiwgbG9nIH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbi8qKlxuICog6K6h566XIGxvZyDnmoQgdGlja3PvvIzogIPomZEgbWluID0gMCDnmoTlnLrmma9cbiAqIEBwYXJhbSBjZmcg5bqm6YeP55qE6YWN572u6aG5XG4gKiBAcmV0dXJucyDorqHnrpflkI7nmoQgdGlja3NcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2FsY3VsYXRlTG9nVGlja3MoY2ZnKSB7XG4gICAgdmFyIGJhc2UgPSBjZmcuYmFzZSwgdGlja0NvdW50ID0gY2ZnLnRpY2tDb3VudCwgbWluID0gY2ZnLm1pbiwgbWF4ID0gY2ZnLm1heCwgdmFsdWVzID0gY2ZnLnZhbHVlcztcbiAgICB2YXIgbWluVGljaztcbiAgICB2YXIgbWF4VGljayA9IGxvZyhiYXNlLCBtYXgpO1xuICAgIGlmIChtaW4gPiAwKSB7XG4gICAgICAgIG1pblRpY2sgPSBNYXRoLmZsb29yKGxvZyhiYXNlLCBtaW4pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBwb3NpdGl2ZU1pbiA9IGdldExvZ1Bvc2l0aXZlTWluKHZhbHVlcywgYmFzZSwgbWF4KTtcbiAgICAgICAgbWluVGljayA9IE1hdGguZmxvb3IobG9nKGJhc2UsIHBvc2l0aXZlTWluKSk7XG4gICAgfVxuICAgIHZhciBjb3VudCA9IG1heFRpY2sgLSBtaW5UaWNrO1xuICAgIHZhciBhdmcgPSBNYXRoLmNlaWwoY291bnQgLyB0aWNrQ291bnQpO1xuICAgIHZhciB0aWNrcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSBtaW5UaWNrOyBpIDwgbWF4VGljayArIGF2ZzsgaSA9IGkgKyBhdmcpIHtcbiAgICAgICAgdGlja3MucHVzaChNYXRoLnBvdyhiYXNlLCBpKSk7XG4gICAgfVxuICAgIGlmIChtaW4gPD0gMCkge1xuICAgICAgICAvLyDmnIDlsI/lgLwgPD0gMCDml7bmmL7npLogMFxuICAgICAgICB0aWNrcy51bnNoaWZ0KDApO1xuICAgIH1cbiAgICByZXR1cm4gdGlja3M7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1sb2cuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/log.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/pow.js": /*!*********************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/pow.js ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculatePowTicks; });\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/math */ \"./node_modules/@antv/scale/esm/util/math.js\");\n/* harmony import */ var _util_pretty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/pretty */ \"./node_modules/@antv/scale/esm/util/pretty.js\");\n\n\n/**\n * 计算 Pow 的 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction calculatePowTicks(cfg) {\n var exponent = cfg.exponent, tickCount = cfg.tickCount;\n var max = Math.ceil(Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"calBase\"])(exponent, cfg.max));\n var min = Math.floor(Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"calBase\"])(exponent, cfg.min));\n var ticks = Object(_util_pretty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(min, max, tickCount).ticks;\n return ticks.map(function (tick) {\n var factor = tick >= 0 ? 1 : -1;\n return Math.pow(tick, exponent) * factor;\n });\n}\n//# sourceMappingURL=pow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3Bvdy5qcz8wNGY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXVDO0FBQ0g7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQSx3QkFBd0IsMERBQU87QUFDL0IseUJBQXlCLDBEQUFPO0FBQ2hDLGdCQUFnQiw0REFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvcG93LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FsQmFzZSB9IGZyb20gJy4uL3V0aWwvbWF0aCc7XG5pbXBvcnQgcHJldHR5IGZyb20gJy4uL3V0aWwvcHJldHR5Jztcbi8qKlxuICog6K6h566XIFBvdyDnmoQgdGlja3NcbiAqIEBwYXJhbSBjZmcg5bqm6YeP55qE6YWN572u6aG5XG4gKiBAcmV0dXJucyDorqHnrpflkI7nmoQgdGlja3NcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2FsY3VsYXRlUG93VGlja3MoY2ZnKSB7XG4gICAgdmFyIGV4cG9uZW50ID0gY2ZnLmV4cG9uZW50LCB0aWNrQ291bnQgPSBjZmcudGlja0NvdW50O1xuICAgIHZhciBtYXggPSBNYXRoLmNlaWwoY2FsQmFzZShleHBvbmVudCwgY2ZnLm1heCkpO1xuICAgIHZhciBtaW4gPSBNYXRoLmZsb29yKGNhbEJhc2UoZXhwb25lbnQsIGNmZy5taW4pKTtcbiAgICB2YXIgdGlja3MgPSBwcmV0dHkobWluLCBtYXgsIHRpY2tDb3VudCkudGlja3M7XG4gICAgcmV0dXJuIHRpY2tzLm1hcChmdW5jdGlvbiAodGljaykge1xuICAgICAgICB2YXIgZmFjdG9yID0gdGljayA+PSAwID8gMSA6IC0xO1xuICAgICAgICByZXR1cm4gTWF0aC5wb3codGljaywgZXhwb25lbnQpICogZmFjdG9yO1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG93LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/pow.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/quantile.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/quantile.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculateTicks; });\n/**\n * 计算几分位 https://github.com/simple-statistics/simple-statistics/blob/master/src/quantile_sorted.js\n * @param x 数组\n * @param p 百分比\n */\nfunction quantileSorted(x, p) {\n var idx = x.length * p;\n /*if (x.length === 0) { // 当前场景这些条件不可能命中\n throw new Error('quantile requires at least one value.');\n } else if (p < 0 || p > 1) {\n throw new Error('quantiles must be between 0 and 1');\n } else */\n if (p === 1) {\n // If p is 1, directly return the last element\n return x[x.length - 1];\n }\n else if (p === 0) {\n // If p is 0, directly return the first element\n return x[0];\n }\n else if (idx % 1 !== 0) {\n // If p is not integer, return the next element in array\n return x[Math.ceil(idx) - 1];\n }\n else if (x.length % 2 === 0) {\n // If the list has even-length, we'll take the average of this number\n // and the next value, if there is one\n return (x[idx - 1] + x[idx]) / 2;\n }\n else {\n // Finally, in the simple case of an integer value\n // with an odd-length list, return the x value at the index.\n return x[idx];\n }\n}\nfunction calculateTicks(cfg) {\n var tickCount = cfg.tickCount, values = cfg.values;\n if (!values || !values.length) {\n return [];\n }\n var sorted = values.slice().sort(function (a, b) {\n return a - b;\n });\n var ticks = [];\n for (var i = 0; i < tickCount; i++) {\n var p = i / (tickCount - 1);\n ticks.push(quantileSorted(sorted, p));\n }\n return ticks;\n}\n//# sourceMappingURL=quantile.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3F1YW50aWxlLmpzPzg3OTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvcXVhbnRpbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOiuoeeul+WHoOWIhuS9jSBodHRwczovL2dpdGh1Yi5jb20vc2ltcGxlLXN0YXRpc3RpY3Mvc2ltcGxlLXN0YXRpc3RpY3MvYmxvYi9tYXN0ZXIvc3JjL3F1YW50aWxlX3NvcnRlZC5qc1xuICogQHBhcmFtIHggIOaVsOe7hFxuICogQHBhcmFtIHAgIOeZvuWIhuavlFxuICovXG5mdW5jdGlvbiBxdWFudGlsZVNvcnRlZCh4LCBwKSB7XG4gICAgdmFyIGlkeCA9IHgubGVuZ3RoICogcDtcbiAgICAvKmlmICh4Lmxlbmd0aCA9PT0gMCkgeyAvLyDlvZPliY3lnLrmma/ov5nkupvmnaHku7bkuI3lj6/og73lkb3kuK1cbiAgICAgIHRocm93IG5ldyBFcnJvcigncXVhbnRpbGUgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHZhbHVlLicpO1xuICAgIH0gZWxzZSBpZiAocCA8IDAgfHwgcCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncXVhbnRpbGVzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxJyk7XG4gICAgfSBlbHNlICovXG4gICAgaWYgKHAgPT09IDEpIHtcbiAgICAgICAgLy8gSWYgcCBpcyAxLCBkaXJlY3RseSByZXR1cm4gdGhlIGxhc3QgZWxlbWVudFxuICAgICAgICByZXR1cm4geFt4Lmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICBlbHNlIGlmIChwID09PSAwKSB7XG4gICAgICAgIC8vIElmIHAgaXMgMCwgZGlyZWN0bHkgcmV0dXJuIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICAgIHJldHVybiB4WzBdO1xuICAgIH1cbiAgICBlbHNlIGlmIChpZHggJSAxICE9PSAwKSB7XG4gICAgICAgIC8vIElmIHAgaXMgbm90IGludGVnZXIsIHJldHVybiB0aGUgbmV4dCBlbGVtZW50IGluIGFycmF5XG4gICAgICAgIHJldHVybiB4W01hdGguY2VpbChpZHgpIC0gMV07XG4gICAgfVxuICAgIGVsc2UgaWYgKHgubGVuZ3RoICUgMiA9PT0gMCkge1xuICAgICAgICAvLyBJZiB0aGUgbGlzdCBoYXMgZXZlbi1sZW5ndGgsIHdlJ2xsIHRha2UgdGhlIGF2ZXJhZ2Ugb2YgdGhpcyBudW1iZXJcbiAgICAgICAgLy8gYW5kIHRoZSBuZXh0IHZhbHVlLCBpZiB0aGVyZSBpcyBvbmVcbiAgICAgICAgcmV0dXJuICh4W2lkeCAtIDFdICsgeFtpZHhdKSAvIDI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBGaW5hbGx5LCBpbiB0aGUgc2ltcGxlIGNhc2Ugb2YgYW4gaW50ZWdlciB2YWx1ZVxuICAgICAgICAvLyB3aXRoIGFuIG9kZC1sZW5ndGggbGlzdCwgcmV0dXJuIHRoZSB4IHZhbHVlIGF0IHRoZSBpbmRleC5cbiAgICAgICAgcmV0dXJuIHhbaWR4XTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjYWxjdWxhdGVUaWNrcyhjZmcpIHtcbiAgICB2YXIgdGlja0NvdW50ID0gY2ZnLnRpY2tDb3VudCwgdmFsdWVzID0gY2ZnLnZhbHVlcztcbiAgICBpZiAoIXZhbHVlcyB8fCAhdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHZhciBzb3J0ZWQgPSB2YWx1ZXMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTtcbiAgICB2YXIgdGlja3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRpY2tDb3VudDsgaSsrKSB7XG4gICAgICAgIHZhciBwID0gaSAvICh0aWNrQ291bnQgLSAxKTtcbiAgICAgICAgdGlja3MucHVzaChxdWFudGlsZVNvcnRlZChzb3J0ZWQsIHApKTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cXVhbnRpbGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/quantile.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/r-prettry.js": /*!***************************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/r-prettry.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return linearPretty; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _util_interval__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/interval */ \"./node_modules/@antv/scale/esm/util/interval.js\");\n/* harmony import */ var _util_pretty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/pretty */ \"./node_modules/@antv/scale/esm/util/pretty.js\");\n/* harmony import */ var _util_strict_limit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/strict-limit */ \"./node_modules/@antv/scale/esm/util/strict-limit.js\");\n\n\n\n\n/**\n * 计算线性的 ticks,使用 R's pretty 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction linearPretty(cfg) {\n var min = cfg.min, max = cfg.max, tickCount = cfg.tickCount, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit;\n var ticks = Object(_util_pretty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(min, max, tickCount).ticks;\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(minLimit) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(maxLimit)) {\n return Object(_util_strict_limit__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(cfg, Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"head\"])(ticks), Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(ticks));\n }\n if (tickInterval) {\n return Object(_util_interval__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n//# sourceMappingURL=r-prettry.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3ItcHJldHRyeS5qcz9jNmI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErQztBQUNQO0FBQ0o7QUFDVztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBLGdCQUFnQiw0REFBTTtBQUN0QixTQUFTLHdEQUFLLGVBQWUsd0RBQUs7QUFDbEMsZUFBZSxrRUFBVyxNQUFNLHVEQUFJLFNBQVMsdURBQUk7QUFDakQ7QUFDQTtBQUNBLGVBQWUsOERBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3ItcHJldHRyeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhlYWQsIGlzTmlsLCBsYXN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgaW50ZXJ2YWwgZnJvbSAnLi4vdXRpbC9pbnRlcnZhbCc7XG5pbXBvcnQgcHJldHR5IGZyb20gJy4uL3V0aWwvcHJldHR5JztcbmltcG9ydCBzdHJpY3RMaW1pdCBmcm9tICcuLi91dGlsL3N0cmljdC1saW1pdCc7XG4vKipcbiAqIOiuoeeul+e6v+aAp+eahCB0aWNrc++8jOS9v+eUqCBSJ3MgcHJldHR5IOaWueazlVxuICogQHBhcmFtIGNmZyDluqbph4/nmoTphY3nva7poblcbiAqIEByZXR1cm5zIOiuoeeul+WQjueahCB0aWNrc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaW5lYXJQcmV0dHkoY2ZnKSB7XG4gICAgdmFyIG1pbiA9IGNmZy5taW4sIG1heCA9IGNmZy5tYXgsIHRpY2tDb3VudCA9IGNmZy50aWNrQ291bnQsIHRpY2tJbnRlcnZhbCA9IGNmZy50aWNrSW50ZXJ2YWwsIG1pbkxpbWl0ID0gY2ZnLm1pbkxpbWl0LCBtYXhMaW1pdCA9IGNmZy5tYXhMaW1pdDtcbiAgICB2YXIgdGlja3MgPSBwcmV0dHkobWluLCBtYXgsIHRpY2tDb3VudCkudGlja3M7XG4gICAgaWYgKCFpc05pbChtaW5MaW1pdCkgfHwgIWlzTmlsKG1heExpbWl0KSkge1xuICAgICAgICByZXR1cm4gc3RyaWN0TGltaXQoY2ZnLCBoZWFkKHRpY2tzKSwgbGFzdCh0aWNrcykpO1xuICAgIH1cbiAgICBpZiAodGlja0ludGVydmFsKSB7XG4gICAgICAgIHJldHVybiBpbnRlcnZhbChtaW4sIG1heCwgdGlja0ludGVydmFsKS50aWNrcztcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ci1wcmV0dHJ5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/r-prettry.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/register.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/register.js ***! \**************************************************************/ /*! exports provided: getTickMethod, registerTickMethod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTickMethod\", function() { return getTickMethod; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerTickMethod\", function() { return registerTickMethod; });\nvar methodCache = {};\n/**\n * 获取计算 ticks 的方法\n * @param key 键值\n * @returns 计算 ticks 的方法\n */\nfunction getTickMethod(key) {\n return methodCache[key];\n}\n/**\n * 注册计算 ticks 的方法\n * @param key 键值\n * @param method 方法\n */\nfunction registerTickMethod(key, method) {\n methodCache[key] = method;\n}\n//# sourceMappingURL=register.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3JlZ2lzdGVyLmpzPzEwNjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS90aWNrLW1ldGhvZC9yZWdpc3Rlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBtZXRob2RDYWNoZSA9IHt9O1xuLyoqXG4gKiDojrflj5borqHnrpcgdGlja3Mg55qE5pa55rOVXG4gKiBAcGFyYW0ga2V5IOmUruWAvFxuICogQHJldHVybnMg6K6h566XIHRpY2tzIOeahOaWueazlVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGlja01ldGhvZChrZXkpIHtcbiAgICByZXR1cm4gbWV0aG9kQ2FjaGVba2V5XTtcbn1cbi8qKlxuICog5rOo5YaM6K6h566XIHRpY2tzIOeahOaWueazlVxuICogQHBhcmFtIGtleSDplK7lgLxcbiAqIEBwYXJhbSBtZXRob2Qg5pa55rOVXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclRpY2tNZXRob2Qoa2V5LCBtZXRob2QpIHtcbiAgICBtZXRob2RDYWNoZVtrZXldID0gbWV0aG9kO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVnaXN0ZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/register.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/time-cat.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/time-cat.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculateTimeCatTicks; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _cat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cat */ \"./node_modules/@antv/scale/esm/tick-method/cat.js\");\n\n\n/**\n * 计算时间分类的 ticks, 保头,保尾\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction calculateTimeCatTicks(cfg) {\n var ticks = Object(_cat__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(cfg);\n var lastValue = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(cfg.values);\n if (lastValue !== Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(ticks)) {\n ticks.push(lastValue);\n }\n return ticks;\n}\n//# sourceMappingURL=time-cat.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3RpbWUtY2F0LmpzP2FmMzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDTDtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZixnQkFBZ0Isb0RBQVE7QUFDeEIsb0JBQW9CLHVEQUFJO0FBQ3hCLHNCQUFzQix1REFBSTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS90aWNrLW1ldGhvZC90aW1lLWNhdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxhc3QgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBjYXRUaWNrcyBmcm9tICcuL2NhdCc7XG4vKipcbiAqIOiuoeeul+aXtumXtOWIhuexu+eahCB0aWNrcywg5L+d5aS077yM5L+d5bC+XG4gKiBAcGFyYW0gY2ZnIOW6pumHj+eahOmFjee9rumhuVxuICogQHJldHVybnMg6K6h566X5ZCO55qEIHRpY2tzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhbGN1bGF0ZVRpbWVDYXRUaWNrcyhjZmcpIHtcbiAgICB2YXIgdGlja3MgPSBjYXRUaWNrcyhjZmcpO1xuICAgIHZhciBsYXN0VmFsdWUgPSBsYXN0KGNmZy52YWx1ZXMpO1xuICAgIGlmIChsYXN0VmFsdWUgIT09IGxhc3QodGlja3MpKSB7XG4gICAgICAgIHRpY2tzLnB1c2gobGFzdFZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGltZS1jYXQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/time-cat.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/time-pretty.js": /*!*****************************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/time-pretty.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return timePretty; });\n/* harmony import */ var _util_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/time */ \"./node_modules/@antv/scale/esm/util/time.js\");\n\nfunction getYear(date) {\n return new Date(date).getFullYear();\n}\nfunction createYear(year) {\n return new Date(year, 0, 1).getTime();\n}\nfunction getMonth(date) {\n return new Date(date).getMonth();\n}\nfunction diffMonth(min, max) {\n var minYear = getYear(min);\n var maxYear = getYear(max);\n var minMonth = getMonth(min);\n var maxMonth = getMonth(max);\n return (maxYear - minYear) * 12 + ((maxMonth - minMonth) % 12);\n}\nfunction creatMonth(year, month) {\n return new Date(year, month, 1).getTime();\n}\nfunction diffDay(min, max) {\n return Math.ceil((max - min) / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"DAY\"]);\n}\nfunction diffHour(min, max) {\n return Math.ceil((max - min) / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"HOUR\"]);\n}\nfunction diffMinus(min, max) {\n return Math.ceil((max - min) / (60 * 1000));\n}\n/**\n * 计算 time 的 ticks,对 month, year 进行 pretty 处理\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction timePretty(cfg) {\n var min = cfg.min, max = cfg.max, minTickInterval = cfg.minTickInterval, tickCount = cfg.tickCount;\n var tickInterval = cfg.tickInterval;\n var ticks = [];\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (!tickInterval) {\n tickInterval = (max - min) / tickCount;\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n var minYear = getYear(min);\n // 如果间距大于 1 年,则将开始日期从整年开始\n if (tickInterval > _util_time__WEBPACK_IMPORTED_MODULE_0__[\"YEAR\"]) {\n var maxYear = getYear(max);\n var yearInterval = Math.ceil(tickInterval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"YEAR\"]);\n for (var i = minYear; i <= maxYear + yearInterval; i = i + yearInterval) {\n ticks.push(createYear(i));\n }\n }\n else if (tickInterval > _util_time__WEBPACK_IMPORTED_MODULE_0__[\"MONTH\"]) {\n // 大于月时\n var monthInterval = Math.ceil(tickInterval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"MONTH\"]);\n var mmMoth = getMonth(min);\n var dMonths = diffMonth(min, max);\n for (var i = 0; i <= dMonths + monthInterval; i = i + monthInterval) {\n ticks.push(creatMonth(minYear, i + mmMoth));\n }\n }\n else if (tickInterval > _util_time__WEBPACK_IMPORTED_MODULE_0__[\"DAY\"]) {\n // 大于天\n var date = new Date(min);\n var year = date.getFullYear();\n var month = date.getMonth();\n var mday = date.getDate();\n var day = Math.ceil(tickInterval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"DAY\"]);\n var ddays = diffDay(min, max);\n for (var i = 0; i < ddays + day; i = i + day) {\n ticks.push(new Date(year, month, mday + i).getTime());\n }\n }\n else if (tickInterval > _util_time__WEBPACK_IMPORTED_MODULE_0__[\"HOUR\"]) {\n // 大于小时\n var date = new Date(min);\n var year = date.getFullYear();\n var month = date.getMonth();\n var day = date.getDate();\n var hour = date.getHours();\n var hours = Math.ceil(tickInterval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"HOUR\"]);\n var dHours = diffHour(min, max);\n for (var i = 0; i <= dHours + hours; i = i + hours) {\n ticks.push(new Date(year, month, day, hour + i).getTime());\n }\n }\n else if (tickInterval > _util_time__WEBPACK_IMPORTED_MODULE_0__[\"MINUTE\"]) {\n // 大于分钟\n var dMinus = diffMinus(min, max);\n var minutes = Math.ceil(tickInterval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"MINUTE\"]);\n for (var i = 0; i <= dMinus + minutes; i = i + minutes) {\n ticks.push(min + i * _util_time__WEBPACK_IMPORTED_MODULE_0__[\"MINUTE\"]);\n }\n }\n else {\n // 小于分钟\n var interval = tickInterval;\n if (interval < _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"]) {\n interval = _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"];\n }\n var minSecond = Math.floor(min / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"]) * _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"];\n var dSeconds = Math.ceil((max - min) / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"]);\n var seconds = Math.ceil(interval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"]);\n for (var i = 0; i < dSeconds + seconds; i = i + seconds) {\n ticks.push(minSecond + i * _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"]);\n }\n }\n // 最好是能从算法能解决这个问题,但是如果指定了 tickInterval,计算 ticks,也只能这么算,所以\n // 打印警告提示\n if (ticks.length >= 512) {\n console.warn(\"Notice: current ticks length(\" + ticks.length + \") >= 512, may cause performance issues, even out of memory. Because of the configure \\\"tickInterval\\\"(in milliseconds, current is \" + tickInterval + \") is too small, increase the value to solve the problem!\");\n }\n return ticks;\n}\n//# sourceMappingURL=time-pretty.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3RpbWUtcHJldHR5LmpzP2JiMTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXNFO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsOENBQUc7QUFDdEM7QUFDQTtBQUNBLG1DQUFtQywrQ0FBSTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLCtDQUFJO0FBQzNCO0FBQ0Esb0RBQW9ELCtDQUFJO0FBQ3hELDZCQUE2Qiw2QkFBNkI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGdEQUFLO0FBQ2pDO0FBQ0EscURBQXFELGdEQUFLO0FBQzFEO0FBQ0E7QUFDQSx1QkFBdUIsOEJBQThCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw4Q0FBRztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLDhDQUFHO0FBQzlDO0FBQ0EsdUJBQXVCLGlCQUFpQjtBQUN4QztBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsK0NBQUk7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLCtDQUFJO0FBQ2pEO0FBQ0EsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsaURBQU07QUFDbEM7QUFDQTtBQUNBLCtDQUErQyxpREFBTTtBQUNyRCx1QkFBdUIsdUJBQXVCO0FBQzlDLGlDQUFpQyxpREFBTTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGlEQUFNO0FBQzdCLHVCQUF1QixpREFBTTtBQUM3QjtBQUNBLHlDQUF5QyxpREFBTSxJQUFJLGlEQUFNO0FBQ3pELCtDQUErQyxpREFBTTtBQUNyRCwyQ0FBMkMsaURBQU07QUFDakQsdUJBQXVCLHdCQUF3QjtBQUMvQyx1Q0FBdUMsaURBQU07QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3RpbWUtcHJldHR5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREFZLCBIT1VSLCBNSU5VVEUsIE1PTlRILCBTRUNPTkQsIFlFQVIgfSBmcm9tICcuLi91dGlsL3RpbWUnO1xuZnVuY3Rpb24gZ2V0WWVhcihkYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpLmdldEZ1bGxZZWFyKCk7XG59XG5mdW5jdGlvbiBjcmVhdGVZZWFyKHllYXIpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgMCwgMSkuZ2V0VGltZSgpO1xufVxuZnVuY3Rpb24gZ2V0TW9udGgoZGF0ZSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlKS5nZXRNb250aCgpO1xufVxuZnVuY3Rpb24gZGlmZk1vbnRoKG1pbiwgbWF4KSB7XG4gICAgdmFyIG1pblllYXIgPSBnZXRZZWFyKG1pbik7XG4gICAgdmFyIG1heFllYXIgPSBnZXRZZWFyKG1heCk7XG4gICAgdmFyIG1pbk1vbnRoID0gZ2V0TW9udGgobWluKTtcbiAgICB2YXIgbWF4TW9udGggPSBnZXRNb250aChtYXgpO1xuICAgIHJldHVybiAobWF4WWVhciAtIG1pblllYXIpICogMTIgKyAoKG1heE1vbnRoIC0gbWluTW9udGgpICUgMTIpO1xufVxuZnVuY3Rpb24gY3JlYXRNb250aCh5ZWFyLCBtb250aCkge1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0VGltZSgpO1xufVxuZnVuY3Rpb24gZGlmZkRheShtaW4sIG1heCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwoKG1heCAtIG1pbikgLyBEQVkpO1xufVxuZnVuY3Rpb24gZGlmZkhvdXIobWluLCBtYXgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKChtYXggLSBtaW4pIC8gSE9VUik7XG59XG5mdW5jdGlvbiBkaWZmTWludXMobWluLCBtYXgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKChtYXggLSBtaW4pIC8gKDYwICogMTAwMCkpO1xufVxuLyoqXG4gKiDorqHnrpcgdGltZSDnmoQgdGlja3PvvIzlr7kgbW9udGgsIHllYXIg6L+b6KGMIHByZXR0eSDlpITnkIZcbiAqIEBwYXJhbSBjZmcg5bqm6YeP55qE6YWN572u6aG5XG4gKiBAcmV0dXJucyDorqHnrpflkI7nmoQgdGlja3NcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGltZVByZXR0eShjZmcpIHtcbiAgICB2YXIgbWluID0gY2ZnLm1pbiwgbWF4ID0gY2ZnLm1heCwgbWluVGlja0ludGVydmFsID0gY2ZnLm1pblRpY2tJbnRlcnZhbCwgdGlja0NvdW50ID0gY2ZnLnRpY2tDb3VudDtcbiAgICB2YXIgdGlja0ludGVydmFsID0gY2ZnLnRpY2tJbnRlcnZhbDtcbiAgICB2YXIgdGlja3MgPSBbXTtcbiAgICAvLyDmjIflrpogdGlja0ludGVydmFsIOWQjiB0aWNrQ291bnQg5LiN55Sf5pWI77yM6ZyA6KaB6YeN5paw6K6h566XXG4gICAgaWYgKCF0aWNrSW50ZXJ2YWwpIHtcbiAgICAgICAgdGlja0ludGVydmFsID0gKG1heCAtIG1pbikgLyB0aWNrQ291bnQ7XG4gICAgICAgIC8vIOWmguaenOiuvue9ruS6huacgOWwj+mXtOi3ne+8jOWImeS9v+eUqOacgOWwj+mXtOi3nVxuICAgICAgICBpZiAobWluVGlja0ludGVydmFsICYmIHRpY2tJbnRlcnZhbCA8IG1pblRpY2tJbnRlcnZhbCkge1xuICAgICAgICAgICAgdGlja0ludGVydmFsID0gbWluVGlja0ludGVydmFsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBtaW5ZZWFyID0gZ2V0WWVhcihtaW4pO1xuICAgIC8vIOWmguaenOmXtOi3neWkp+S6jiAxIOW5tO+8jOWImeWwhuW8gOWni+aXpeacn+S7juaVtOW5tOW8gOWni1xuICAgIGlmICh0aWNrSW50ZXJ2YWwgPiBZRUFSKSB7XG4gICAgICAgIHZhciBtYXhZZWFyID0gZ2V0WWVhcihtYXgpO1xuICAgICAgICB2YXIgeWVhckludGVydmFsID0gTWF0aC5jZWlsKHRpY2tJbnRlcnZhbCAvIFlFQVIpO1xuICAgICAgICBmb3IgKHZhciBpID0gbWluWWVhcjsgaSA8PSBtYXhZZWFyICsgeWVhckludGVydmFsOyBpID0gaSArIHllYXJJbnRlcnZhbCkge1xuICAgICAgICAgICAgdGlja3MucHVzaChjcmVhdGVZZWFyKGkpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0aWNrSW50ZXJ2YWwgPiBNT05USCkge1xuICAgICAgICAvLyDlpKfkuo7mnIjml7ZcbiAgICAgICAgdmFyIG1vbnRoSW50ZXJ2YWwgPSBNYXRoLmNlaWwodGlja0ludGVydmFsIC8gTU9OVEgpO1xuICAgICAgICB2YXIgbW1Nb3RoID0gZ2V0TW9udGgobWluKTtcbiAgICAgICAgdmFyIGRNb250aHMgPSBkaWZmTW9udGgobWluLCBtYXgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBkTW9udGhzICsgbW9udGhJbnRlcnZhbDsgaSA9IGkgKyBtb250aEludGVydmFsKSB7XG4gICAgICAgICAgICB0aWNrcy5wdXNoKGNyZWF0TW9udGgobWluWWVhciwgaSArIG1tTW90aCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHRpY2tJbnRlcnZhbCA+IERBWSkge1xuICAgICAgICAvLyDlpKfkuo7lpKlcbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShtaW4pO1xuICAgICAgICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgdmFyIG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgICAgICB2YXIgbWRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgICAgICB2YXIgZGF5ID0gTWF0aC5jZWlsKHRpY2tJbnRlcnZhbCAvIERBWSk7XG4gICAgICAgIHZhciBkZGF5cyA9IGRpZmZEYXkobWluLCBtYXgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRkYXlzICsgZGF5OyBpID0gaSArIGRheSkge1xuICAgICAgICAgICAgdGlja3MucHVzaChuZXcgRGF0ZSh5ZWFyLCBtb250aCwgbWRheSArIGkpLmdldFRpbWUoKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodGlja0ludGVydmFsID4gSE9VUikge1xuICAgICAgICAvLyDlpKfkuo7lsI/ml7ZcbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShtaW4pO1xuICAgICAgICB2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgdmFyIG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgICAgICB2YXIgZGF5ID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgICAgIHZhciBob3VyID0gZGF0ZS5nZXRIb3VycygpO1xuICAgICAgICB2YXIgaG91cnMgPSBNYXRoLmNlaWwodGlja0ludGVydmFsIC8gSE9VUik7XG4gICAgICAgIHZhciBkSG91cnMgPSBkaWZmSG91cihtaW4sIG1heCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IGRIb3VycyArIGhvdXJzOyBpID0gaSArIGhvdXJzKSB7XG4gICAgICAgICAgICB0aWNrcy5wdXNoKG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXksIGhvdXIgKyBpKS5nZXRUaW1lKCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHRpY2tJbnRlcnZhbCA+IE1JTlVURSkge1xuICAgICAgICAvLyDlpKfkuo7liIbpkp9cbiAgICAgICAgdmFyIGRNaW51cyA9IGRpZmZNaW51cyhtaW4sIG1heCk7XG4gICAgICAgIHZhciBtaW51dGVzID0gTWF0aC5jZWlsKHRpY2tJbnRlcnZhbCAvIE1JTlVURSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IGRNaW51cyArIG1pbnV0ZXM7IGkgPSBpICsgbWludXRlcykge1xuICAgICAgICAgICAgdGlja3MucHVzaChtaW4gKyBpICogTUlOVVRFKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8g5bCP5LqO5YiG6ZKfXG4gICAgICAgIHZhciBpbnRlcnZhbCA9IHRpY2tJbnRlcnZhbDtcbiAgICAgICAgaWYgKGludGVydmFsIDwgU0VDT05EKSB7XG4gICAgICAgICAgICBpbnRlcnZhbCA9IFNFQ09ORDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWluU2Vjb25kID0gTWF0aC5mbG9vcihtaW4gLyBTRUNPTkQpICogU0VDT05EO1xuICAgICAgICB2YXIgZFNlY29uZHMgPSBNYXRoLmNlaWwoKG1heCAtIG1pbikgLyBTRUNPTkQpO1xuICAgICAgICB2YXIgc2Vjb25kcyA9IE1hdGguY2VpbChpbnRlcnZhbCAvIFNFQ09ORCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZFNlY29uZHMgKyBzZWNvbmRzOyBpID0gaSArIHNlY29uZHMpIHtcbiAgICAgICAgICAgIHRpY2tzLnB1c2gobWluU2Vjb25kICsgaSAqIFNFQ09ORCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8g5pyA5aW95piv6IO95LuO566X5rOV6IO96Kej5Yaz6L+Z5Liq6Zeu6aKY77yM5L2G5piv5aaC5p6c5oyH5a6a5LqGIHRpY2tJbnRlcnZhbO+8jOiuoeeulyB0aWNrc++8jOS5n+WPquiDvei/meS5iOeul++8jOaJgOS7pVxuICAgIC8vIOaJk+WNsOitpuWRiuaPkOekulxuICAgIGlmICh0aWNrcy5sZW5ndGggPj0gNTEyKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIk5vdGljZTogY3VycmVudCB0aWNrcyBsZW5ndGgoXCIgKyB0aWNrcy5sZW5ndGggKyBcIikgPj0gNTEyLCBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWVzLCBldmVuIG91dCBvZiBtZW1vcnkuIEJlY2F1c2Ugb2YgdGhlIGNvbmZpZ3VyZSBcXFwidGlja0ludGVydmFsXFxcIihpbiBtaWxsaXNlY29uZHMsIGN1cnJlbnQgaXMgXCIgKyB0aWNrSW50ZXJ2YWwgKyBcIikgaXMgdG9vIHNtYWxsLCBpbmNyZWFzZSB0aGUgdmFsdWUgdG8gc29sdmUgdGhlIHByb2JsZW0hXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGlja3M7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aW1lLXByZXR0eS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/time-pretty.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/tick-method/time.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/scale/esm/tick-method/time.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculateTimeTicks; });\n/* harmony import */ var _util_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/time */ \"./node_modules/@antv/scale/esm/util/time.js\");\n\nfunction calculateTimeTicks(cfg) {\n var min = cfg.min, max = cfg.max, minTickInterval = cfg.minTickInterval;\n var tickInterval = cfg.tickInterval;\n var tickCount = cfg.tickCount;\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (tickInterval) {\n tickCount = Math.ceil((max - min) / tickInterval);\n }\n else {\n tickInterval = Object(_util_time__WEBPACK_IMPORTED_MODULE_0__[\"getTickInterval\"])(min, max, tickCount)[1];\n var count = (max - min) / tickInterval;\n var ratio = count / tickCount;\n if (ratio > 1) {\n tickInterval = tickInterval * Math.ceil(ratio);\n }\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n var ticks = [];\n for (var i = min; i < max + tickInterval; i += tickInterval) {\n ticks.push(i);\n }\n return ticks;\n}\n//# sourceMappingURL=time.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3RpbWUuanM/NGM2NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBK0M7QUFDaEM7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtFQUFlO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0JBQXdCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3RpbWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRUaWNrSW50ZXJ2YWwgfSBmcm9tICcuLi91dGlsL3RpbWUnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2FsY3VsYXRlVGltZVRpY2tzKGNmZykge1xuICAgIHZhciBtaW4gPSBjZmcubWluLCBtYXggPSBjZmcubWF4LCBtaW5UaWNrSW50ZXJ2YWwgPSBjZmcubWluVGlja0ludGVydmFsO1xuICAgIHZhciB0aWNrSW50ZXJ2YWwgPSBjZmcudGlja0ludGVydmFsO1xuICAgIHZhciB0aWNrQ291bnQgPSBjZmcudGlja0NvdW50O1xuICAgIC8vIOaMh+WumiB0aWNrSW50ZXJ2YWwg5ZCOIHRpY2tDb3VudCDkuI3nlJ/mlYjvvIzpnIDopoHph43mlrDorqHnrpdcbiAgICBpZiAodGlja0ludGVydmFsKSB7XG4gICAgICAgIHRpY2tDb3VudCA9IE1hdGguY2VpbCgobWF4IC0gbWluKSAvIHRpY2tJbnRlcnZhbCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aWNrSW50ZXJ2YWwgPSBnZXRUaWNrSW50ZXJ2YWwobWluLCBtYXgsIHRpY2tDb3VudClbMV07XG4gICAgICAgIHZhciBjb3VudCA9IChtYXggLSBtaW4pIC8gdGlja0ludGVydmFsO1xuICAgICAgICB2YXIgcmF0aW8gPSBjb3VudCAvIHRpY2tDb3VudDtcbiAgICAgICAgaWYgKHJhdGlvID4gMSkge1xuICAgICAgICAgICAgdGlja0ludGVydmFsID0gdGlja0ludGVydmFsICogTWF0aC5jZWlsKHJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDlpoLmnpzorr7nva7kuobmnIDlsI/pl7Tot53vvIzliJnkvb/nlKjmnIDlsI/pl7Tot51cbiAgICAgICAgaWYgKG1pblRpY2tJbnRlcnZhbCAmJiB0aWNrSW50ZXJ2YWwgPCBtaW5UaWNrSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHRpY2tJbnRlcnZhbCA9IG1pblRpY2tJbnRlcnZhbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgdGlja3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gbWluOyBpIDwgbWF4ICsgdGlja0ludGVydmFsOyBpICs9IHRpY2tJbnRlcnZhbCkge1xuICAgICAgICB0aWNrcy5wdXNoKGkpO1xuICAgIH1cbiAgICByZXR1cm4gdGlja3M7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aW1lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/tick-method/time.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/util/bisector.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/scale/esm/util/bisector.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n/**\n * 二分右侧查找\n * https://github.com/d3/d3-array/blob/master/src/bisector.js\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (getter) {\n /**\n * x: 目标值\n * lo: 起始位置\n * hi: 结束位置\n */\n return function (a, x, _lo, _hi) {\n var lo = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(_lo) ? 0 : _lo;\n var hi = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(_hi) ? a.length : _hi;\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (getter(a[mid]) > x) {\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n return lo;\n };\n});\n//# sourceMappingURL=bisector.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3V0aWwvYmlzZWN0b3IuanM/ODIyMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEIsaUJBQWlCLHdEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3V0aWwvYmlzZWN0b3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05pbCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuLyoqXG4gKiDkuozliIblj7Pkvqfmn6Xmib5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9kMy9kMy1hcnJheS9ibG9iL21hc3Rlci9zcmMvYmlzZWN0b3IuanNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGdldHRlcikge1xuICAgIC8qKlxuICAgICAqIHg6IOebruagh+WAvFxuICAgICAqIGxvOiDotbflp4vkvY3nva5cbiAgICAgKiBoaTog57uT5p2f5L2N572uXG4gICAgICovXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhLCB4LCBfbG8sIF9oaSkge1xuICAgICAgICB2YXIgbG8gPSBpc05pbChfbG8pID8gMCA6IF9sbztcbiAgICAgICAgdmFyIGhpID0gaXNOaWwoX2hpKSA/IGEubGVuZ3RoIDogX2hpO1xuICAgICAgICB3aGlsZSAobG8gPCBoaSkge1xuICAgICAgICAgICAgdmFyIG1pZCA9IChsbyArIGhpKSA+Pj4gMTtcbiAgICAgICAgICAgIGlmIChnZXR0ZXIoYVttaWRdKSA+IHgpIHtcbiAgICAgICAgICAgICAgICBoaSA9IG1pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvID0gbWlkICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG87XG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJpc2VjdG9yLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/util/bisector.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/util/d3-linear.js": /*!********************************************************!*\ !*** ./node_modules/@antv/scale/esm/util/d3-linear.js ***! \********************************************************/ /*! exports provided: default, D3Linear */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return d3Linear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"D3Linear\", function() { return D3Linear; });\nfunction d3Linear(cfg) {\n var min = cfg.min, max = cfg.max, nice = cfg.nice, tickCount = cfg.tickCount;\n var linear = new D3Linear();\n linear.domain([min, max]);\n if (nice) {\n linear.nice(tickCount);\n }\n return linear.ticks(tickCount);\n}\nvar DEFAULT_COUNT = 5;\nvar e10 = Math.sqrt(50);\nvar e5 = Math.sqrt(10);\nvar e2 = Math.sqrt(2);\n// https://github.com/d3/d3-scale\nvar D3Linear = /** @class */ (function () {\n function D3Linear() {\n this._domain = [0, 1];\n }\n D3Linear.prototype.domain = function (domain) {\n if (domain) {\n this._domain = Array.from(domain, Number);\n return this;\n }\n return this._domain.slice();\n };\n D3Linear.prototype.nice = function (count) {\n var _a, _b;\n if (count === void 0) { count = DEFAULT_COUNT; }\n var d = this._domain.slice();\n var i0 = 0;\n var i1 = this._domain.length - 1;\n var start = this._domain[i0];\n var stop = this._domain[i1];\n var step;\n if (stop < start) {\n _a = [stop, start], start = _a[0], stop = _a[1];\n _b = [i1, i0], i0 = _b[0], i1 = _b[1];\n }\n step = tickIncrement(start, stop, count);\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n }\n else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain(d);\n }\n else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain(d);\n }\n return this;\n };\n D3Linear.prototype.ticks = function (count) {\n if (count === void 0) { count = DEFAULT_COUNT; }\n return d3ArrayTicks(this._domain[0], this._domain[this._domain.length - 1], count || DEFAULT_COUNT);\n };\n return D3Linear;\n}());\n\nfunction d3ArrayTicks(start, stop, count) {\n var reverse;\n var i = -1;\n var n;\n var ticks;\n var step;\n (stop = +stop), (start = +start), (count = +count);\n if (start === stop && count > 0) {\n return [start];\n }\n // tslint:disable-next-line\n if ((reverse = stop < start)) {\n (n = start), (start = stop), (stop = n);\n }\n // tslint:disable-next-line\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) {\n return [];\n }\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array((n = Math.ceil(stop - start + 1)));\n while (++i < n) {\n ticks[i] = (start + i) * step;\n }\n }\n else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array((n = Math.ceil(start - stop + 1)));\n while (++i < n) {\n ticks[i] = (start - i) / step;\n }\n }\n if (reverse) {\n ticks.reverse();\n }\n return ticks;\n}\nfunction tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count);\n var power = Math.floor(Math.log(step) / Math.LN10);\n var error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n//# sourceMappingURL=d3-linear.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3V0aWwvZDMtbGluZWFyLmpzPzE5NzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHVCQUF1QjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQix1QkFBdUI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNtQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3V0aWwvZDMtbGluZWFyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZDNMaW5lYXIoY2ZnKSB7XG4gICAgdmFyIG1pbiA9IGNmZy5taW4sIG1heCA9IGNmZy5tYXgsIG5pY2UgPSBjZmcubmljZSwgdGlja0NvdW50ID0gY2ZnLnRpY2tDb3VudDtcbiAgICB2YXIgbGluZWFyID0gbmV3IEQzTGluZWFyKCk7XG4gICAgbGluZWFyLmRvbWFpbihbbWluLCBtYXhdKTtcbiAgICBpZiAobmljZSkge1xuICAgICAgICBsaW5lYXIubmljZSh0aWNrQ291bnQpO1xuICAgIH1cbiAgICByZXR1cm4gbGluZWFyLnRpY2tzKHRpY2tDb3VudCk7XG59XG52YXIgREVGQVVMVF9DT1VOVCA9IDU7XG52YXIgZTEwID0gTWF0aC5zcXJ0KDUwKTtcbnZhciBlNSA9IE1hdGguc3FydCgxMCk7XG52YXIgZTIgPSBNYXRoLnNxcnQoMik7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZDMvZDMtc2NhbGVcbnZhciBEM0xpbmVhciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEM0xpbmVhcigpIHtcbiAgICAgICAgdGhpcy5fZG9tYWluID0gWzAsIDFdO1xuICAgIH1cbiAgICBEM0xpbmVhci5wcm90b3R5cGUuZG9tYWluID0gZnVuY3Rpb24gKGRvbWFpbikge1xuICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICB0aGlzLl9kb21haW4gPSBBcnJheS5mcm9tKGRvbWFpbiwgTnVtYmVyKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9kb21haW4uc2xpY2UoKTtcbiAgICB9O1xuICAgIEQzTGluZWFyLnByb3RvdHlwZS5uaWNlID0gZnVuY3Rpb24gKGNvdW50KSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmIChjb3VudCA9PT0gdm9pZCAwKSB7IGNvdW50ID0gREVGQVVMVF9DT1VOVDsgfVxuICAgICAgICB2YXIgZCA9IHRoaXMuX2RvbWFpbi5zbGljZSgpO1xuICAgICAgICB2YXIgaTAgPSAwO1xuICAgICAgICB2YXIgaTEgPSB0aGlzLl9kb21haW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5fZG9tYWluW2kwXTtcbiAgICAgICAgdmFyIHN0b3AgPSB0aGlzLl9kb21haW5baTFdO1xuICAgICAgICB2YXIgc3RlcDtcbiAgICAgICAgaWYgKHN0b3AgPCBzdGFydCkge1xuICAgICAgICAgICAgX2EgPSBbc3RvcCwgc3RhcnRdLCBzdGFydCA9IF9hWzBdLCBzdG9wID0gX2FbMV07XG4gICAgICAgICAgICBfYiA9IFtpMSwgaTBdLCBpMCA9IF9iWzBdLCBpMSA9IF9iWzFdO1xuICAgICAgICB9XG4gICAgICAgIHN0ZXAgPSB0aWNrSW5jcmVtZW50KHN0YXJ0LCBzdG9wLCBjb3VudCk7XG4gICAgICAgIGlmIChzdGVwID4gMCkge1xuICAgICAgICAgICAgc3RhcnQgPSBNYXRoLmZsb29yKHN0YXJ0IC8gc3RlcCkgKiBzdGVwO1xuICAgICAgICAgICAgc3RvcCA9IE1hdGguY2VpbChzdG9wIC8gc3RlcCkgKiBzdGVwO1xuICAgICAgICAgICAgc3RlcCA9IHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGVwIDwgMCkge1xuICAgICAgICAgICAgc3RhcnQgPSBNYXRoLmNlaWwoc3RhcnQgKiBzdGVwKSAvIHN0ZXA7XG4gICAgICAgICAgICBzdG9wID0gTWF0aC5mbG9vcihzdG9wICogc3RlcCkgLyBzdGVwO1xuICAgICAgICAgICAgc3RlcCA9IHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RlcCA+IDApIHtcbiAgICAgICAgICAgIGRbaTBdID0gTWF0aC5mbG9vcihzdGFydCAvIHN0ZXApICogc3RlcDtcbiAgICAgICAgICAgIGRbaTFdID0gTWF0aC5jZWlsKHN0b3AgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICAgICAgICB0aGlzLmRvbWFpbihkKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGVwIDwgMCkge1xuICAgICAgICAgICAgZFtpMF0gPSBNYXRoLmNlaWwoc3RhcnQgKiBzdGVwKSAvIHN0ZXA7XG4gICAgICAgICAgICBkW2kxXSA9IE1hdGguZmxvb3Ioc3RvcCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgICAgICAgIHRoaXMuZG9tYWluKGQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRDNMaW5lYXIucHJvdG90eXBlLnRpY2tzID0gZnVuY3Rpb24gKGNvdW50KSB7XG4gICAgICAgIGlmIChjb3VudCA9PT0gdm9pZCAwKSB7IGNvdW50ID0gREVGQVVMVF9DT1VOVDsgfVxuICAgICAgICByZXR1cm4gZDNBcnJheVRpY2tzKHRoaXMuX2RvbWFpblswXSwgdGhpcy5fZG9tYWluW3RoaXMuX2RvbWFpbi5sZW5ndGggLSAxXSwgY291bnQgfHwgREVGQVVMVF9DT1VOVCk7XG4gICAgfTtcbiAgICByZXR1cm4gRDNMaW5lYXI7XG59KCkpO1xuZXhwb3J0IHsgRDNMaW5lYXIgfTtcbmZ1bmN0aW9uIGQzQXJyYXlUaWNrcyhzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgICB2YXIgcmV2ZXJzZTtcbiAgICB2YXIgaSA9IC0xO1xuICAgIHZhciBuO1xuICAgIHZhciB0aWNrcztcbiAgICB2YXIgc3RlcDtcbiAgICAoc3RvcCA9ICtzdG9wKSwgKHN0YXJ0ID0gK3N0YXJ0KSwgKGNvdW50ID0gK2NvdW50KTtcbiAgICBpZiAoc3RhcnQgPT09IHN0b3AgJiYgY291bnQgPiAwKSB7XG4gICAgICAgIHJldHVybiBbc3RhcnRdO1xuICAgIH1cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBpZiAoKHJldmVyc2UgPSBzdG9wIDwgc3RhcnQpKSB7XG4gICAgICAgIChuID0gc3RhcnQpLCAoc3RhcnQgPSBzdG9wKSwgKHN0b3AgPSBuKTtcbiAgICB9XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgaWYgKChzdGVwID0gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpKSA9PT0gMCB8fCAhaXNGaW5pdGUoc3RlcCkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBpZiAoc3RlcCA+IDApIHtcbiAgICAgICAgc3RhcnQgPSBNYXRoLmNlaWwoc3RhcnQgLyBzdGVwKTtcbiAgICAgICAgc3RvcCA9IE1hdGguZmxvb3Ioc3RvcCAvIHN0ZXApO1xuICAgICAgICB0aWNrcyA9IG5ldyBBcnJheSgobiA9IE1hdGguY2VpbChzdG9wIC0gc3RhcnQgKyAxKSkpO1xuICAgICAgICB3aGlsZSAoKytpIDwgbikge1xuICAgICAgICAgICAgdGlja3NbaV0gPSAoc3RhcnQgKyBpKSAqIHN0ZXA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0gTWF0aC5mbG9vcihzdGFydCAqIHN0ZXApO1xuICAgICAgICBzdG9wID0gTWF0aC5jZWlsKHN0b3AgKiBzdGVwKTtcbiAgICAgICAgdGlja3MgPSBuZXcgQXJyYXkoKG4gPSBNYXRoLmNlaWwoc3RhcnQgLSBzdG9wICsgMSkpKTtcbiAgICAgICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgICAgICAgIHRpY2tzW2ldID0gKHN0YXJ0IC0gaSkgLyBzdGVwO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyZXZlcnNlKSB7XG4gICAgICAgIHRpY2tzLnJldmVyc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tzO1xufVxuZnVuY3Rpb24gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgICB2YXIgc3RlcCA9IChzdG9wIC0gc3RhcnQpIC8gTWF0aC5tYXgoMCwgY291bnQpO1xuICAgIHZhciBwb3dlciA9IE1hdGguZmxvb3IoTWF0aC5sb2coc3RlcCkgLyBNYXRoLkxOMTApO1xuICAgIHZhciBlcnJvciA9IHN0ZXAgLyBNYXRoLnBvdygxMCwgcG93ZXIpO1xuICAgIHJldHVybiBwb3dlciA+PSAwXG4gICAgICAgID8gKGVycm9yID49IGUxMCA/IDEwIDogZXJyb3IgPj0gZTUgPyA1IDogZXJyb3IgPj0gZTIgPyAyIDogMSkgKiBNYXRoLnBvdygxMCwgcG93ZXIpXG4gICAgICAgIDogLU1hdGgucG93KDEwLCAtcG93ZXIpIC8gKGVycm9yID49IGUxMCA/IDEwIDogZXJyb3IgPj0gZTUgPyA1IDogZXJyb3IgPj0gZTIgPyAyIDogMSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kMy1saW5lYXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/util/d3-linear.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/util/extended.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/scale/esm/util/extended.js ***! \*******************************************************/ /*! exports provided: DEFAULT_Q, ALL_Q, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_Q\", function() { return DEFAULT_Q; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ALL_Q\", function() { return ALL_Q; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return extended; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var _pretty_number__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pretty-number */ \"./node_modules/@antv/scale/esm/util/pretty-number.js\");\n\n\nvar DEFAULT_Q = [1, 5, 2, 2.5, 4, 3];\nvar ALL_Q = [1, 5, 2, 2.5, 4, 3, 1.5, 7, 6, 8, 9];\nvar eps = Number.EPSILON * 100;\nfunction mod(n, m) {\n return ((n % m) + m) % m;\n}\nfunction round(n) {\n return Math.round(n * 1e12) / 1e12;\n}\nfunction simplicity(q, Q, j, lmin, lmax, lstep) {\n var n = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"size\"])(Q);\n var i = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"indexOf\"])(Q, q);\n var v = 0;\n var m = mod(lmin, lstep);\n if ((m < eps || lstep - m < eps) && lmin <= 0 && lmax >= 0) {\n v = 1;\n }\n return 1 - i / (n - 1) - j + v;\n}\nfunction simplicityMax(q, Q, j) {\n var n = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"size\"])(Q);\n var i = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"indexOf\"])(Q, q);\n var v = 1;\n return 1 - i / (n - 1) - j + v;\n}\nfunction density(k, m, dMin, dMax, lMin, lMax) {\n var r = (k - 1) / (lMax - lMin);\n var rt = (m - 1) / (Math.max(lMax, dMax) - Math.min(dMin, lMin));\n return 2 - Math.max(r / rt, rt / r);\n}\nfunction densityMax(k, m) {\n if (k >= m) {\n return 2 - (k - 1) / (m - 1);\n }\n return 1;\n}\nfunction coverage(dMin, dMax, lMin, lMax) {\n var range = dMax - dMin;\n return 1 - (0.5 * (Math.pow((dMax - lMax), 2) + Math.pow((dMin - lMin), 2))) / Math.pow((0.1 * range), 2);\n}\nfunction coverageMax(dMin, dMax, span) {\n var range = dMax - dMin;\n if (span > range) {\n var half = (span - range) / 2;\n return 1 - Math.pow(half, 2) / Math.pow((0.1 * range), 2);\n }\n return 1;\n}\nfunction legibility() {\n return 1;\n}\n/**\n * An Extension of Wilkinson's Algorithm for Position Tick Labels on Axes\n * https://www.yuque.com/preview/yuque/0/2019/pdf/185317/1546999150858-45c3b9c2-4e86-4223-bf1a-8a732e8195ed.pdf\n * @param dMin 最小值\n * @param dMax 最大值\n * @param m tick个数\n * @param onlyLoose 是否允许扩展min、max,不绝对强制,例如[3, 97]\n * @param Q nice numbers集合\n * @param w 四个优化组件的权重\n */\nfunction extended(dMin, dMax, n, onlyLoose, Q, w) {\n if (n === void 0) { n = 5; }\n if (onlyLoose === void 0) { onlyLoose = true; }\n if (Q === void 0) { Q = DEFAULT_Q; }\n if (w === void 0) { w = [0.25, 0.2, 0.5, 0.05]; }\n // 处理小于 0 和小数的 tickCount\n var m = n < 0 ? 0 : Math.round(n);\n // nan 也会导致异常\n if (Number.isNaN(dMin) || Number.isNaN(dMax) || typeof dMin !== 'number' || typeof dMax !== 'number' || !m) {\n return {\n min: 0,\n max: 0,\n ticks: [],\n };\n }\n // js 极大值极小值问题,差值小于 1e-15 会导致计算出错\n if (dMax - dMin < 1e-15 || m === 1) {\n return {\n min: dMin,\n max: dMax,\n ticks: [dMin],\n };\n }\n var best = {\n score: -2,\n lmin: 0,\n lmax: 0,\n lstep: 0,\n };\n var j = 1;\n while (j < Infinity) {\n for (var i = 0; i < Q.length; i += 1) {\n var q = Q[i];\n var sm = simplicityMax(q, Q, j);\n if (w[0] * sm + w[1] + w[2] + w[3] < best.score) {\n j = Infinity;\n break;\n }\n var k = 2;\n while (k < Infinity) {\n var dm = densityMax(k, m);\n if (w[0] * sm + w[1] + w[2] * dm + w[3] < best.score) {\n break;\n }\n var delta = (dMax - dMin) / (k + 1) / j / q;\n var z = Math.ceil(Math.log10(delta));\n while (z < Infinity) {\n var step = j * q * Math.pow(10, z);\n var cm = coverageMax(dMin, dMax, step * (k - 1));\n if (w[0] * sm + w[1] * cm + w[2] * dm + w[3] < best.score) {\n break;\n }\n var minStart = Math.floor(dMax / step) * j - (k - 1) * j;\n var maxStart = Math.ceil(dMin / step) * j;\n if (minStart <= maxStart) {\n var count = maxStart - minStart;\n for (var i_1 = 0; i_1 <= count; i_1 += 1) {\n var start = minStart + i_1;\n var lMin = start * (step / j);\n var lMax = lMin + step * (k - 1);\n var lStep = step;\n var s = simplicity(q, Q, j, lMin, lMax, lStep);\n var c = coverage(dMin, dMax, lMin, lMax);\n var g = density(k, m, dMin, dMax, lMin, lMax);\n var l = legibility();\n var score = w[0] * s + w[1] * c + w[2] * g + w[3] * l;\n if (score > best.score && (!onlyLoose || (lMin <= dMin && lMax >= dMax))) {\n best.lmin = lMin;\n best.lmax = lMax;\n best.lstep = lStep;\n best.score = score;\n }\n }\n }\n z += 1;\n }\n k += 1;\n }\n }\n j += 1;\n }\n // 处理精度问题,保证这三个数没有精度问题\n var lmax = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_1__[\"prettyNumber\"])(best.lmax);\n var lmin = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_1__[\"prettyNumber\"])(best.lmin);\n var lstep = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_1__[\"prettyNumber\"])(best.lstep);\n // 加 round 是为处理 extended(0.94, 1, 5)\n // 保证生成的 tickCount 没有精度问题\n var tickCount = Math.floor(round((lmax - lmin) / lstep)) + 1;\n var ticks = new Array(tickCount);\n // 少用乘法:防止出现 -1.2 + 1.2 * 3 = 2.3999999999999995 的情况\n ticks[0] = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_1__[\"prettyNumber\"])(lmin);\n for (var i = 1; i < tickCount; i++) {\n ticks[i] = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_1__[\"prettyNumber\"])(ticks[i - 1] + lstep);\n }\n return {\n min: Math.min(dMin, Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"head\"])(ticks)),\n max: Math.max(dMax, Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(ticks)),\n ticks: ticks,\n };\n}\n//# sourceMappingURL=extended.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3V0aWwvZXh0ZW5kZWQuanM/MjZmNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUQ7QUFDUjtBQUN4QztBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdURBQUk7QUFDaEIsWUFBWSwwREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1REFBSTtBQUNoQixZQUFZLDBEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsdUJBQXVCLE9BQU87QUFDOUIsK0JBQStCLGtCQUFrQjtBQUNqRCx1QkFBdUIsZUFBZTtBQUN0Qyx1QkFBdUIsNEJBQTRCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsY0FBYztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsY0FBYztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUVBQVk7QUFDM0IsZUFBZSxtRUFBWTtBQUMzQixnQkFBZ0IsbUVBQVk7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUVBQVk7QUFDM0IsbUJBQW1CLGVBQWU7QUFDbEMsbUJBQW1CLG1FQUFZO0FBQy9CO0FBQ0E7QUFDQSw0QkFBNEIsdURBQUk7QUFDaEMsNEJBQTRCLHVEQUFJO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS91dGlsL2V4dGVuZGVkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGVhZCwgaW5kZXhPZiwgc2l6ZSwgbGFzdCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcHJldHR5TnVtYmVyIH0gZnJvbSAnLi9wcmV0dHktbnVtYmVyJztcbmV4cG9ydCB2YXIgREVGQVVMVF9RID0gWzEsIDUsIDIsIDIuNSwgNCwgM107XG5leHBvcnQgdmFyIEFMTF9RID0gWzEsIDUsIDIsIDIuNSwgNCwgMywgMS41LCA3LCA2LCA4LCA5XTtcbnZhciBlcHMgPSBOdW1iZXIuRVBTSUxPTiAqIDEwMDtcbmZ1bmN0aW9uIG1vZChuLCBtKSB7XG4gICAgcmV0dXJuICgobiAlIG0pICsgbSkgJSBtO1xufVxuZnVuY3Rpb24gcm91bmQobikge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG4gKiAxZTEyKSAvIDFlMTI7XG59XG5mdW5jdGlvbiBzaW1wbGljaXR5KHEsIFEsIGosIGxtaW4sIGxtYXgsIGxzdGVwKSB7XG4gICAgdmFyIG4gPSBzaXplKFEpO1xuICAgIHZhciBpID0gaW5kZXhPZihRLCBxKTtcbiAgICB2YXIgdiA9IDA7XG4gICAgdmFyIG0gPSBtb2QobG1pbiwgbHN0ZXApO1xuICAgIGlmICgobSA8IGVwcyB8fCBsc3RlcCAtIG0gPCBlcHMpICYmIGxtaW4gPD0gMCAmJiBsbWF4ID49IDApIHtcbiAgICAgICAgdiA9IDE7XG4gICAgfVxuICAgIHJldHVybiAxIC0gaSAvIChuIC0gMSkgLSBqICsgdjtcbn1cbmZ1bmN0aW9uIHNpbXBsaWNpdHlNYXgocSwgUSwgaikge1xuICAgIHZhciBuID0gc2l6ZShRKTtcbiAgICB2YXIgaSA9IGluZGV4T2YoUSwgcSk7XG4gICAgdmFyIHYgPSAxO1xuICAgIHJldHVybiAxIC0gaSAvIChuIC0gMSkgLSBqICsgdjtcbn1cbmZ1bmN0aW9uIGRlbnNpdHkoaywgbSwgZE1pbiwgZE1heCwgbE1pbiwgbE1heCkge1xuICAgIHZhciByID0gKGsgLSAxKSAvIChsTWF4IC0gbE1pbik7XG4gICAgdmFyIHJ0ID0gKG0gLSAxKSAvIChNYXRoLm1heChsTWF4LCBkTWF4KSAtIE1hdGgubWluKGRNaW4sIGxNaW4pKTtcbiAgICByZXR1cm4gMiAtIE1hdGgubWF4KHIgLyBydCwgcnQgLyByKTtcbn1cbmZ1bmN0aW9uIGRlbnNpdHlNYXgoaywgbSkge1xuICAgIGlmIChrID49IG0pIHtcbiAgICAgICAgcmV0dXJuIDIgLSAoayAtIDEpIC8gKG0gLSAxKTtcbiAgICB9XG4gICAgcmV0dXJuIDE7XG59XG5mdW5jdGlvbiBjb3ZlcmFnZShkTWluLCBkTWF4LCBsTWluLCBsTWF4KSB7XG4gICAgdmFyIHJhbmdlID0gZE1heCAtIGRNaW47XG4gICAgcmV0dXJuIDEgLSAoMC41ICogKE1hdGgucG93KChkTWF4IC0gbE1heCksIDIpICsgTWF0aC5wb3coKGRNaW4gLSBsTWluKSwgMikpKSAvIE1hdGgucG93KCgwLjEgKiByYW5nZSksIDIpO1xufVxuZnVuY3Rpb24gY292ZXJhZ2VNYXgoZE1pbiwgZE1heCwgc3Bhbikge1xuICAgIHZhciByYW5nZSA9IGRNYXggLSBkTWluO1xuICAgIGlmIChzcGFuID4gcmFuZ2UpIHtcbiAgICAgICAgdmFyIGhhbGYgPSAoc3BhbiAtIHJhbmdlKSAvIDI7XG4gICAgICAgIHJldHVybiAxIC0gTWF0aC5wb3coaGFsZiwgMikgLyBNYXRoLnBvdygoMC4xICogcmFuZ2UpLCAyKTtcbiAgICB9XG4gICAgcmV0dXJuIDE7XG59XG5mdW5jdGlvbiBsZWdpYmlsaXR5KCkge1xuICAgIHJldHVybiAxO1xufVxuLyoqXG4gKiBBbiBFeHRlbnNpb24gb2YgV2lsa2luc29uJ3MgQWxnb3JpdGhtIGZvciBQb3NpdGlvbiBUaWNrIExhYmVscyBvbiBBeGVzXG4gKiBodHRwczovL3d3dy55dXF1ZS5jb20vcHJldmlldy95dXF1ZS8wLzIwMTkvcGRmLzE4NTMxNy8xNTQ2OTk5MTUwODU4LTQ1YzNiOWMyLTRlODYtNDIyMy1iZjFhLThhNzMyZTgxOTVlZC5wZGZcbiAqIEBwYXJhbSBkTWluIOacgOWwj+WAvFxuICogQHBhcmFtIGRNYXgg5pyA5aSn5YC8XG4gKiBAcGFyYW0gbSB0aWNr5Liq5pWwXG4gKiBAcGFyYW0gb25seUxvb3NlIOaYr+WQpuWFgeiuuOaJqeWxlW1pbuOAgW1heO+8jOS4jee7neWvueW8uuWItu+8jOS+i+WmglszLCA5N11cbiAqIEBwYXJhbSBRIG5pY2UgbnVtYmVyc+mbhuWQiFxuICogQHBhcmFtIHcg5Zub5Liq5LyY5YyW57uE5Lu255qE5p2D6YeNXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV4dGVuZGVkKGRNaW4sIGRNYXgsIG4sIG9ubHlMb29zZSwgUSwgdykge1xuICAgIGlmIChuID09PSB2b2lkIDApIHsgbiA9IDU7IH1cbiAgICBpZiAob25seUxvb3NlID09PSB2b2lkIDApIHsgb25seUxvb3NlID0gdHJ1ZTsgfVxuICAgIGlmIChRID09PSB2b2lkIDApIHsgUSA9IERFRkFVTFRfUTsgfVxuICAgIGlmICh3ID09PSB2b2lkIDApIHsgdyA9IFswLjI1LCAwLjIsIDAuNSwgMC4wNV07IH1cbiAgICAvLyDlpITnkIblsI/kuo4gMCDlkozlsI/mlbDnmoQgdGlja0NvdW50XG4gICAgdmFyIG0gPSBuIDwgMCA/IDAgOiBNYXRoLnJvdW5kKG4pO1xuICAgIC8vIG5hbiDkuZ/kvJrlr7zoh7TlvILluLhcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGRNaW4pIHx8IE51bWJlci5pc05hTihkTWF4KSB8fCB0eXBlb2YgZE1pbiAhPT0gJ251bWJlcicgfHwgdHlwZW9mIGRNYXggIT09ICdudW1iZXInIHx8ICFtKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICBtYXg6IDAsXG4gICAgICAgICAgICB0aWNrczogW10sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIGpzIOaegeWkp+WAvOaegeWwj+WAvOmXrumimO+8jOW3ruWAvOWwj+S6jiAxZS0xNSDkvJrlr7zoh7TorqHnrpflh7rplJlcbiAgICBpZiAoZE1heCAtIGRNaW4gPCAxZS0xNSB8fCBtID09PSAxKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtaW46IGRNaW4sXG4gICAgICAgICAgICBtYXg6IGRNYXgsXG4gICAgICAgICAgICB0aWNrczogW2RNaW5dLFxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgYmVzdCA9IHtcbiAgICAgICAgc2NvcmU6IC0yLFxuICAgICAgICBsbWluOiAwLFxuICAgICAgICBsbWF4OiAwLFxuICAgICAgICBsc3RlcDogMCxcbiAgICB9O1xuICAgIHZhciBqID0gMTtcbiAgICB3aGlsZSAoaiA8IEluZmluaXR5KSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgUS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgdmFyIHEgPSBRW2ldO1xuICAgICAgICAgICAgdmFyIHNtID0gc2ltcGxpY2l0eU1heChxLCBRLCBqKTtcbiAgICAgICAgICAgIGlmICh3WzBdICogc20gKyB3WzFdICsgd1syXSArIHdbM10gPCBiZXN0LnNjb3JlKSB7XG4gICAgICAgICAgICAgICAgaiA9IEluZmluaXR5O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGsgPSAyO1xuICAgICAgICAgICAgd2hpbGUgKGsgPCBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgIHZhciBkbSA9IGRlbnNpdHlNYXgoaywgbSk7XG4gICAgICAgICAgICAgICAgaWYgKHdbMF0gKiBzbSArIHdbMV0gKyB3WzJdICogZG0gKyB3WzNdIDwgYmVzdC5zY29yZSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGRlbHRhID0gKGRNYXggLSBkTWluKSAvIChrICsgMSkgLyBqIC8gcTtcbiAgICAgICAgICAgICAgICB2YXIgeiA9IE1hdGguY2VpbChNYXRoLmxvZzEwKGRlbHRhKSk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHogPCBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RlcCA9IGogKiBxICogTWF0aC5wb3coMTAsIHopO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY20gPSBjb3ZlcmFnZU1heChkTWluLCBkTWF4LCBzdGVwICogKGsgLSAxKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3WzBdICogc20gKyB3WzFdICogY20gKyB3WzJdICogZG0gKyB3WzNdIDwgYmVzdC5zY29yZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIG1pblN0YXJ0ID0gTWF0aC5mbG9vcihkTWF4IC8gc3RlcCkgKiBqIC0gKGsgLSAxKSAqIGo7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXhTdGFydCA9IE1hdGguY2VpbChkTWluIC8gc3RlcCkgKiBqO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWluU3RhcnQgPD0gbWF4U3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IG1heFN0YXJ0IC0gbWluU3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpXzEgPSAwOyBpXzEgPD0gY291bnQ7IGlfMSArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gbWluU3RhcnQgKyBpXzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxNaW4gPSBzdGFydCAqIChzdGVwIC8gaik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxNYXggPSBsTWluICsgc3RlcCAqIChrIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxTdGVwID0gc3RlcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHNpbXBsaWNpdHkocSwgUSwgaiwgbE1pbiwgbE1heCwgbFN0ZXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gY292ZXJhZ2UoZE1pbiwgZE1heCwgbE1pbiwgbE1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBkZW5zaXR5KGssIG0sIGRNaW4sIGRNYXgsIGxNaW4sIGxNYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gbGVnaWJpbGl0eSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY29yZSA9IHdbMF0gKiBzICsgd1sxXSAqIGMgKyB3WzJdICogZyArIHdbM10gKiBsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29yZSA+IGJlc3Quc2NvcmUgJiYgKCFvbmx5TG9vc2UgfHwgKGxNaW4gPD0gZE1pbiAmJiBsTWF4ID49IGRNYXgpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0LmxtaW4gPSBsTWluO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0LmxtYXggPSBsTWF4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0LmxzdGVwID0gbFN0ZXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3Quc2NvcmUgPSBzY29yZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgeiArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBrICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaiArPSAxO1xuICAgIH1cbiAgICAvLyDlpITnkIbnsr7luqbpl67popjvvIzkv53or4Hov5nkuInkuKrmlbDmsqHmnInnsr7luqbpl67pophcbiAgICB2YXIgbG1heCA9IHByZXR0eU51bWJlcihiZXN0LmxtYXgpO1xuICAgIHZhciBsbWluID0gcHJldHR5TnVtYmVyKGJlc3QubG1pbik7XG4gICAgdmFyIGxzdGVwID0gcHJldHR5TnVtYmVyKGJlc3QubHN0ZXApO1xuICAgIC8vIOWKoCByb3VuZCDmmK/kuLrlpITnkIYgZXh0ZW5kZWQoMC45NCwgMSwgNSlcbiAgICAvLyDkv53or4HnlJ/miJDnmoQgdGlja0NvdW50IOayoeacieeyvuW6pumXrumimFxuICAgIHZhciB0aWNrQ291bnQgPSBNYXRoLmZsb29yKHJvdW5kKChsbWF4IC0gbG1pbikgLyBsc3RlcCkpICsgMTtcbiAgICB2YXIgdGlja3MgPSBuZXcgQXJyYXkodGlja0NvdW50KTtcbiAgICAvLyDlsJHnlKjkuZjms5XvvJrpmLLmraLlh7rnjrAgLTEuMiArIDEuMiAqIDMgPSAyLjM5OTk5OTk5OTk5OTk5OTUg55qE5oOF5Ya1XG4gICAgdGlja3NbMF0gPSBwcmV0dHlOdW1iZXIobG1pbik7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aWNrQ291bnQ7IGkrKykge1xuICAgICAgICB0aWNrc1tpXSA9IHByZXR0eU51bWJlcih0aWNrc1tpIC0gMV0gKyBsc3RlcCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1pbjogTWF0aC5taW4oZE1pbiwgaGVhZCh0aWNrcykpLFxuICAgICAgICBtYXg6IE1hdGgubWF4KGRNYXgsIGxhc3QodGlja3MpKSxcbiAgICAgICAgdGlja3M6IHRpY2tzLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1leHRlbmRlZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/util/extended.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/util/interval.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/scale/esm/util/interval.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return intervalTicks; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\nfunction snapMultiple(v, base, snapType) {\n var div;\n if (snapType === 'ceil') {\n div = Math.ceil(v / base);\n }\n else if (snapType === 'floor') {\n div = Math.floor(v / base);\n }\n else {\n div = Math.round(v / base);\n }\n return div * base;\n}\nfunction intervalTicks(min, max, interval) {\n // 变成 interval 的倍数\n var minTick = snapMultiple(min, interval, 'floor');\n var maxTick = snapMultiple(max, interval, 'ceil');\n // 统一小数位数\n minTick = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"fixedBase\"])(minTick, interval);\n maxTick = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"fixedBase\"])(maxTick, interval);\n var ticks = [];\n for (var i = minTick; i <= maxTick; i = i + interval) {\n var tickValue = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"fixedBase\"])(i, interval); // 防止浮点数加法出现问题\n ticks.push(tickValue);\n }\n return {\n min: minTick,\n max: maxTick,\n ticks: ticks\n };\n}\n//# sourceMappingURL=interval.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3V0aWwvaW50ZXJ2YWwuanM/MjdjOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyw0REFBUztBQUN2QixjQUFjLDREQUFTO0FBQ3ZCO0FBQ0EseUJBQXlCLGNBQWM7QUFDdkMsd0JBQXdCLDREQUFTLGNBQWM7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS91dGlsL2ludGVydmFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZml4ZWRCYXNlIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5mdW5jdGlvbiBzbmFwTXVsdGlwbGUodiwgYmFzZSwgc25hcFR5cGUpIHtcbiAgICB2YXIgZGl2O1xuICAgIGlmIChzbmFwVHlwZSA9PT0gJ2NlaWwnKSB7XG4gICAgICAgIGRpdiA9IE1hdGguY2VpbCh2IC8gYmFzZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNuYXBUeXBlID09PSAnZmxvb3InKSB7XG4gICAgICAgIGRpdiA9IE1hdGguZmxvb3IodiAvIGJhc2UpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZGl2ID0gTWF0aC5yb3VuZCh2IC8gYmFzZSk7XG4gICAgfVxuICAgIHJldHVybiBkaXYgKiBiYXNlO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW50ZXJ2YWxUaWNrcyhtaW4sIG1heCwgaW50ZXJ2YWwpIHtcbiAgICAvLyDlj5jmiJAgaW50ZXJ2YWwg55qE5YCN5pWwXG4gICAgdmFyIG1pblRpY2sgPSBzbmFwTXVsdGlwbGUobWluLCBpbnRlcnZhbCwgJ2Zsb29yJyk7XG4gICAgdmFyIG1heFRpY2sgPSBzbmFwTXVsdGlwbGUobWF4LCBpbnRlcnZhbCwgJ2NlaWwnKTtcbiAgICAvLyDnu5/kuIDlsI/mlbDkvY3mlbBcbiAgICBtaW5UaWNrID0gZml4ZWRCYXNlKG1pblRpY2ssIGludGVydmFsKTtcbiAgICBtYXhUaWNrID0gZml4ZWRCYXNlKG1heFRpY2ssIGludGVydmFsKTtcbiAgICB2YXIgdGlja3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gbWluVGljazsgaSA8PSBtYXhUaWNrOyBpID0gaSArIGludGVydmFsKSB7XG4gICAgICAgIHZhciB0aWNrVmFsdWUgPSBmaXhlZEJhc2UoaSwgaW50ZXJ2YWwpOyAvLyDpmLLmraLmta7ngrnmlbDliqDms5Xlh7rnjrDpl67pophcbiAgICAgICAgdGlja3MucHVzaCh0aWNrVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBtaW46IG1pblRpY2ssXG4gICAgICAgIG1heDogbWF4VGljayxcbiAgICAgICAgdGlja3M6IHRpY2tzXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludGVydmFsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/util/interval.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/util/math.js": /*!***************************************************!*\ !*** ./node_modules/@antv/scale/esm/util/math.js ***! \***************************************************/ /*! exports provided: calBase, log, getLogPositiveMin, precisionAdd */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calBase\", function() { return calBase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"log\", function() { return log; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLogPositiveMin\", function() { return getLogPositiveMin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"precisionAdd\", function() { return precisionAdd; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n// 求以a为次幂,结果为b的基数,如 x^^a = b;求x\n// 虽然数学上 b 不支持负数,但是这里需要支持 负数\nfunction calBase(a, b) {\n var e = Math.E;\n var value;\n if (b >= 0) {\n value = Math.pow(e, Math.log(b) / a); // 使用换底公式求底\n }\n else {\n value = Math.pow(e, Math.log(-b) / a) * -1; // 使用换底公式求底\n }\n return value;\n}\nfunction log(a, b) {\n if (a === 1) {\n return 1;\n }\n return Math.log(b) / Math.log(a);\n}\nfunction getLogPositiveMin(values, base, max) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(max)) {\n max = Math.max.apply(null, values);\n }\n var positiveMin = max;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(values, function (value) {\n if (value > 0 && value < positiveMin) {\n positiveMin = value;\n }\n });\n if (positiveMin === max) {\n positiveMin = max / base;\n }\n if (positiveMin > 1) {\n positiveMin = 1;\n }\n return positiveMin;\n}\nfunction digitLength(num) {\n // Get digit length of e\n var eSplit = num.toString().split(/[eE]/);\n var len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);\n return len > 0 ? len : 0;\n}\n/**\n * 高精度加法,解决 0.1 + 0.2 !== 0.3 的经典问题\n *\n * @param num1 加数\n * @param num2 被加数\n * @return {number} 返回值\n */\nfunction precisionAdd(num1, num2) {\n var num1Digits = digitLength(num1);\n var num2Digits = digitLength(num2);\n var baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));\n return (num1 * baseNum + num2 * baseNum) / baseNum;\n}\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3V0aWwvbWF0aC5qcz83YzVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUN6Qyw2QkFBNkI7QUFDN0I7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsUUFBUSx3REFBSztBQUNiO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9zY2FsZS9lc20vdXRpbC9tYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCwgaXNOaWwgfSBmcm9tICdAYW50di91dGlsJztcbi8vIOaxguS7pWHkuLrmrKHluYLvvIznu5PmnpzkuLpi55qE5Z+65pWw77yM5aaCIHheXmEgPSBiO+axgnhcbi8vIOiZveeEtuaVsOWtpuS4iiBiIOS4jeaUr+aMgei0n+aVsO+8jOS9huaYr+i/memHjOmcgOimgeaUr+aMgSDotJ/mlbBcbmV4cG9ydCBmdW5jdGlvbiBjYWxCYXNlKGEsIGIpIHtcbiAgICB2YXIgZSA9IE1hdGguRTtcbiAgICB2YXIgdmFsdWU7XG4gICAgaWYgKGIgPj0gMCkge1xuICAgICAgICB2YWx1ZSA9IE1hdGgucG93KGUsIE1hdGgubG9nKGIpIC8gYSk7IC8vIOS9v+eUqOaNouW6leWFrOW8j+axguW6lVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBNYXRoLnBvdyhlLCBNYXRoLmxvZygtYikgLyBhKSAqIC0xOyAvLyDkvb/nlKjmjaLlupXlhazlvI/msYLlupVcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxvZyhhLCBiKSB7XG4gICAgaWYgKGEgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLmxvZyhiKSAvIE1hdGgubG9nKGEpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ1Bvc2l0aXZlTWluKHZhbHVlcywgYmFzZSwgbWF4KSB7XG4gICAgaWYgKGlzTmlsKG1heCkpIHtcbiAgICAgICAgbWF4ID0gTWF0aC5tYXguYXBwbHkobnVsbCwgdmFsdWVzKTtcbiAgICB9XG4gICAgdmFyIHBvc2l0aXZlTWluID0gbWF4O1xuICAgIGVhY2godmFsdWVzLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID4gMCAmJiB2YWx1ZSA8IHBvc2l0aXZlTWluKSB7XG4gICAgICAgICAgICBwb3NpdGl2ZU1pbiA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHBvc2l0aXZlTWluID09PSBtYXgpIHtcbiAgICAgICAgcG9zaXRpdmVNaW4gPSBtYXggLyBiYXNlO1xuICAgIH1cbiAgICBpZiAocG9zaXRpdmVNaW4gPiAxKSB7XG4gICAgICAgIHBvc2l0aXZlTWluID0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHBvc2l0aXZlTWluO1xufVxuZnVuY3Rpb24gZGlnaXRMZW5ndGgobnVtKSB7XG4gICAgLy8gR2V0IGRpZ2l0IGxlbmd0aCBvZiBlXG4gICAgdmFyIGVTcGxpdCA9IG51bS50b1N0cmluZygpLnNwbGl0KC9bZUVdLyk7XG4gICAgdmFyIGxlbiA9IChlU3BsaXRbMF0uc3BsaXQoJy4nKVsxXSB8fCAnJykubGVuZ3RoIC0gKyhlU3BsaXRbMV0gfHwgMCk7XG4gICAgcmV0dXJuIGxlbiA+IDAgPyBsZW4gOiAwO1xufVxuLyoqXG4gKiDpq5jnsr7luqbliqDms5XvvIzop6PlhrMgMC4xICsgMC4yICE9PSAwLjMg55qE57uP5YW46Zeu6aKYXG4gKlxuICogQHBhcmFtIG51bTEg5Yqg5pWwXG4gKiBAcGFyYW0gbnVtMiDooqvliqDmlbBcbiAqIEByZXR1cm4ge251bWJlcn0g6L+U5Zue5YC8XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVjaXNpb25BZGQobnVtMSwgbnVtMikge1xuICAgIHZhciBudW0xRGlnaXRzID0gZGlnaXRMZW5ndGgobnVtMSk7XG4gICAgdmFyIG51bTJEaWdpdHMgPSBkaWdpdExlbmd0aChudW0yKTtcbiAgICB2YXIgYmFzZU51bSA9IE1hdGgucG93KDEwLCBNYXRoLm1heChudW0xRGlnaXRzLCBudW0yRGlnaXRzKSk7XG4gICAgcmV0dXJuIChudW0xICogYmFzZU51bSArIG51bTIgKiBiYXNlTnVtKSAvIGJhc2VOdW07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tYXRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/util/math.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/util/pretty-number.js": /*!************************************************************!*\ !*** ./node_modules/@antv/scale/esm/util/pretty-number.js ***! \************************************************************/ /*! exports provided: prettyNumber */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prettyNumber\", function() { return prettyNumber; });\n// 为了解决 js 运算的精度问题\nfunction prettyNumber(n) {\n return Math.abs(n) < 1e-15 ? n : parseFloat(n.toFixed(15));\n}\n//# sourceMappingURL=pretty-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3V0aWwvcHJldHR5LW51bWJlci5qcz9lZWFhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNPO0FBQ1A7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS91dGlsL3ByZXR0eS1udW1iZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDkuLrkuobop6PlhrMganMg6L+Q566X55qE57K+5bqm6Zeu6aKYXG5leHBvcnQgZnVuY3Rpb24gcHJldHR5TnVtYmVyKG4pIHtcbiAgICByZXR1cm4gTWF0aC5hYnMobikgPCAxZS0xNSA/IG4gOiBwYXJzZUZsb2F0KG4udG9GaXhlZCgxNSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJldHR5LW51bWJlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/util/pretty-number.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/util/pretty.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/scale/esm/util/pretty.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pretty; });\n/* harmony import */ var _pretty_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pretty-number */ \"./node_modules/@antv/scale/esm/util/pretty-number.js\");\n\nfunction pretty(min, max, m) {\n if (m === void 0) { m = 5; }\n if (min === max) {\n return {\n max: max,\n min: min,\n ticks: [min],\n };\n }\n var n = m < 0 ? 0 : Math.round(m);\n if (n === 0)\n return { max: max, min: min, ticks: [] };\n /*\n R pretty:\n https://svn.r-project.org/R/trunk/src/appl/pretty.c\n https://www.rdocumentation.org/packages/base/versions/3.5.2/topics/pretty\n */\n var h = 1.5; // high.u.bias\n var h5 = 0.5 + 1.5 * h; // u5.bias\n // 反正我也不会调参,跳过所有判断步骤\n var d = max - min;\n var c = d / n;\n // 当d非常小的时候触发,但似乎没什么用\n // const min_n = Math.floor(n / 3);\n // const shrink_sml = Math.pow(2, 5);\n // if (Math.log10(d) < -2) {\n // c = (_.max([ Math.abs(max), Math.abs(min) ]) * shrink_sml) / min_n;\n // }\n var base = Math.pow(10, Math.floor(Math.log10(c)));\n var unit = base;\n if (2 * base - c < h * (c - unit)) {\n unit = 2 * base;\n if (5 * base - c < h5 * (c - unit)) {\n unit = 5 * base;\n if (10 * base - c < h * (c - unit)) {\n unit = 10 * base;\n }\n }\n }\n var nu = Math.ceil(max / unit);\n var ns = Math.floor(min / unit);\n var hi = Math.max(nu * unit, max);\n var lo = Math.min(ns * unit, min);\n var size = Math.floor((hi - lo) / unit) + 1;\n var ticks = new Array(size);\n for (var i = 0; i < size; i++) {\n ticks[i] = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_0__[\"prettyNumber\"])(lo + i * unit);\n }\n return {\n min: lo,\n max: hi,\n ticks: ticks,\n };\n}\n//# sourceMappingURL=pretty.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3V0aWwvcHJldHR5LmpzP2NjZWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQStDO0FBQ2hDO0FBQ2YsdUJBQXVCLE9BQU87QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEIsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixtQkFBbUIsbUVBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9zY2FsZS9lc20vdXRpbC9wcmV0dHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmV0dHlOdW1iZXIgfSBmcm9tICcuL3ByZXR0eS1udW1iZXInO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJldHR5KG1pbiwgbWF4LCBtKSB7XG4gICAgaWYgKG0gPT09IHZvaWQgMCkgeyBtID0gNTsgfVxuICAgIGlmIChtaW4gPT09IG1heCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWF4OiBtYXgsXG4gICAgICAgICAgICBtaW46IG1pbixcbiAgICAgICAgICAgIHRpY2tzOiBbbWluXSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIG4gPSBtIDwgMCA/IDAgOiBNYXRoLnJvdW5kKG0pO1xuICAgIGlmIChuID09PSAwKVxuICAgICAgICByZXR1cm4geyBtYXg6IG1heCwgbWluOiBtaW4sIHRpY2tzOiBbXSB9O1xuICAgIC8qXG4gICAgICBSIHByZXR0eTpcbiAgICAgIGh0dHBzOi8vc3ZuLnItcHJvamVjdC5vcmcvUi90cnVuay9zcmMvYXBwbC9wcmV0dHkuY1xuICAgICAgaHR0cHM6Ly93d3cucmRvY3VtZW50YXRpb24ub3JnL3BhY2thZ2VzL2Jhc2UvdmVyc2lvbnMvMy41LjIvdG9waWNzL3ByZXR0eVxuICAgICAgKi9cbiAgICB2YXIgaCA9IDEuNTsgLy8gaGlnaC51LmJpYXNcbiAgICB2YXIgaDUgPSAwLjUgKyAxLjUgKiBoOyAvLyB1NS5iaWFzXG4gICAgLy8g5Y+N5q2j5oiR5Lmf5LiN5Lya6LCD5Y+C77yM6Lez6L+H5omA5pyJ5Yik5pat5q2l6aqkXG4gICAgdmFyIGQgPSBtYXggLSBtaW47XG4gICAgdmFyIGMgPSBkIC8gbjtcbiAgICAvLyDlvZNk6Z2e5bi45bCP55qE5pe25YCZ6Kem5Y+R77yM5L2G5Ly85LmO5rKh5LuA5LmI55SoXG4gICAgLy8gY29uc3QgbWluX24gPSBNYXRoLmZsb29yKG4gLyAzKTtcbiAgICAvLyBjb25zdCBzaHJpbmtfc21sID0gTWF0aC5wb3coMiwgNSk7XG4gICAgLy8gaWYgKE1hdGgubG9nMTAoZCkgPCAtMikge1xuICAgIC8vICAgYyA9IChfLm1heChbIE1hdGguYWJzKG1heCksIE1hdGguYWJzKG1pbikgXSkgKiBzaHJpbmtfc21sKSAvIG1pbl9uO1xuICAgIC8vIH1cbiAgICB2YXIgYmFzZSA9IE1hdGgucG93KDEwLCBNYXRoLmZsb29yKE1hdGgubG9nMTAoYykpKTtcbiAgICB2YXIgdW5pdCA9IGJhc2U7XG4gICAgaWYgKDIgKiBiYXNlIC0gYyA8IGggKiAoYyAtIHVuaXQpKSB7XG4gICAgICAgIHVuaXQgPSAyICogYmFzZTtcbiAgICAgICAgaWYgKDUgKiBiYXNlIC0gYyA8IGg1ICogKGMgLSB1bml0KSkge1xuICAgICAgICAgICAgdW5pdCA9IDUgKiBiYXNlO1xuICAgICAgICAgICAgaWYgKDEwICogYmFzZSAtIGMgPCBoICogKGMgLSB1bml0KSkge1xuICAgICAgICAgICAgICAgIHVuaXQgPSAxMCAqIGJhc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIG51ID0gTWF0aC5jZWlsKG1heCAvIHVuaXQpO1xuICAgIHZhciBucyA9IE1hdGguZmxvb3IobWluIC8gdW5pdCk7XG4gICAgdmFyIGhpID0gTWF0aC5tYXgobnUgKiB1bml0LCBtYXgpO1xuICAgIHZhciBsbyA9IE1hdGgubWluKG5zICogdW5pdCwgbWluKTtcbiAgICB2YXIgc2l6ZSA9IE1hdGguZmxvb3IoKGhpIC0gbG8pIC8gdW5pdCkgKyAxO1xuICAgIHZhciB0aWNrcyA9IG5ldyBBcnJheShzaXplKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICB0aWNrc1tpXSA9IHByZXR0eU51bWJlcihsbyArIGkgKiB1bml0KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWluOiBsbyxcbiAgICAgICAgbWF4OiBoaSxcbiAgICAgICAgdGlja3M6IHRpY2tzLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wcmV0dHkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/util/pretty.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/util/strict-limit.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/scale/esm/util/strict-limit.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return strictLimit; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n\n/**\n * 按照给定的 minLimit/maxLimit/tickCount 均匀计算出刻度 ticks\n *\n * @param cfg Scale 配置项\n * @return ticks\n */\nfunction strictLimit(cfg, defaultMin, defaultMax) {\n var _a;\n var minLimit = cfg.minLimit, maxLimit = cfg.maxLimit, min = cfg.min, max = cfg.max, _b = cfg.tickCount, tickCount = _b === void 0 ? 5 : _b;\n var tickMin = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(minLimit) ? (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(defaultMin) ? min : defaultMin) : minLimit;\n var tickMax = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(maxLimit) ? (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(defaultMax) ? max : defaultMax) : maxLimit;\n if (tickMin > tickMax) {\n _a = [tickMin, tickMax], tickMax = _a[0], tickMin = _a[1];\n }\n if (tickCount <= 2) {\n return [tickMin, tickMax];\n }\n var step = (tickMax - tickMin) / (tickCount - 1);\n var ticks = [];\n for (var i = 0; i < tickCount; i++) {\n ticks.push(tickMin + step * i);\n }\n return ticks;\n}\n//# sourceMappingURL=strict-limit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3V0aWwvc3RyaWN0LWxpbWl0LmpzP2JkYTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBLGtCQUFrQix3REFBSyxjQUFjLHdEQUFLO0FBQzFDLGtCQUFrQix3REFBSyxjQUFjLHdEQUFLO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3NjYWxlL2VzbS91dGlsL3N0cmljdC1saW1pdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTmlsIH0gZnJvbSAnQGFudHYvdXRpbCc7XG4vKipcbiAqIOaMieeFp+e7meWumueahCBtaW5MaW1pdC9tYXhMaW1pdC90aWNrQ291bnQg5Z2H5YyA6K6h566X5Ye65Yi75bqmIHRpY2tzXG4gKlxuICogQHBhcmFtIGNmZyBTY2FsZSDphY3nva7poblcbiAqIEByZXR1cm4gdGlja3NcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RyaWN0TGltaXQoY2ZnLCBkZWZhdWx0TWluLCBkZWZhdWx0TWF4KSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBtaW5MaW1pdCA9IGNmZy5taW5MaW1pdCwgbWF4TGltaXQgPSBjZmcubWF4TGltaXQsIG1pbiA9IGNmZy5taW4sIG1heCA9IGNmZy5tYXgsIF9iID0gY2ZnLnRpY2tDb3VudCwgdGlja0NvdW50ID0gX2IgPT09IHZvaWQgMCA/IDUgOiBfYjtcbiAgICB2YXIgdGlja01pbiA9IGlzTmlsKG1pbkxpbWl0KSA/IChpc05pbChkZWZhdWx0TWluKSA/IG1pbiA6IGRlZmF1bHRNaW4pIDogbWluTGltaXQ7XG4gICAgdmFyIHRpY2tNYXggPSBpc05pbChtYXhMaW1pdCkgPyAoaXNOaWwoZGVmYXVsdE1heCkgPyBtYXggOiBkZWZhdWx0TWF4KSA6IG1heExpbWl0O1xuICAgIGlmICh0aWNrTWluID4gdGlja01heCkge1xuICAgICAgICBfYSA9IFt0aWNrTWluLCB0aWNrTWF4XSwgdGlja01heCA9IF9hWzBdLCB0aWNrTWluID0gX2FbMV07XG4gICAgfVxuICAgIGlmICh0aWNrQ291bnQgPD0gMikge1xuICAgICAgICByZXR1cm4gW3RpY2tNaW4sIHRpY2tNYXhdO1xuICAgIH1cbiAgICB2YXIgc3RlcCA9ICh0aWNrTWF4IC0gdGlja01pbikgLyAodGlja0NvdW50IC0gMSk7XG4gICAgdmFyIHRpY2tzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aWNrQ291bnQ7IGkrKykge1xuICAgICAgICB0aWNrcy5wdXNoKHRpY2tNaW4gKyBzdGVwICogaSk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0cmljdC1saW1pdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/util/strict-limit.js\n"); /***/ }), /***/ "./node_modules/@antv/scale/esm/util/time.js": /*!***************************************************!*\ !*** ./node_modules/@antv/scale/esm/util/time.js ***! \***************************************************/ /*! exports provided: timeFormat, toTimeStamp, SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, getTickInterval */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return timeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toTimeStamp\", function() { return toTimeStamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SECOND\", function() { return SECOND; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MINUTE\", function() { return MINUTE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HOUR\", function() { return HOUR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAY\", function() { return DAY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MONTH\", function() { return MONTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"YEAR\", function() { return YEAR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTickInterval\", function() { return getTickInterval; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/@antv/util/esm/index.js\");\n/* harmony import */ var fecha__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fecha */ \"./node_modules/fecha/lib/fecha.js\");\n/* harmony import */ var _bisector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bisector */ \"./node_modules/@antv/scale/esm/util/bisector.js\");\n\n\n\n\nvar FORMAT_METHOD = 'format';\nfunction timeFormat(time, mask) {\n var method = fecha__WEBPACK_IMPORTED_MODULE_1__[FORMAT_METHOD] || fecha__WEBPACK_IMPORTED_MODULE_1__[\"default\"][FORMAT_METHOD];\n return method(time, mask);\n}\n/**\n * 转换成时间戳\n * @param value 时间值\n */\nfunction toTimeStamp(value) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(value)) {\n if (value.indexOf('T') > 0) {\n value = new Date(value).getTime();\n }\n else {\n // new Date('2010/01/10') 和 new Date('2010-01-10') 的差别在于:\n // 如果仅有年月日时,前者是带有时区的: Fri Jan 10 2020 02:40:13 GMT+0800 (中国标准时间)\n // 后者会格式化成 Sun Jan 10 2010 08:00:00 GMT+0800 (中国标准时间)\n value = new Date(value.replace(/-/gi, '/')).getTime();\n }\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isDate\"])(value)) {\n value = value.getTime();\n }\n return value;\n}\nvar SECOND = 1000;\nvar MINUTE = 60 * SECOND;\nvar HOUR = 60 * MINUTE;\nvar DAY = 24 * HOUR;\nvar MONTH = DAY * 31;\nvar YEAR = DAY * 365;\n\nvar intervals = [\n ['HH:mm:ss', SECOND],\n ['HH:mm:ss', SECOND * 10],\n ['HH:mm:ss', SECOND * 30],\n ['HH:mm', MINUTE],\n ['HH:mm', MINUTE * 10],\n ['HH:mm', MINUTE * 30],\n ['HH', HOUR],\n ['HH', HOUR * 6],\n ['HH', HOUR * 12],\n ['YYYY-MM-DD', DAY],\n ['YYYY-MM-DD', DAY * 4],\n ['YYYY-WW', DAY * 7],\n ['YYYY-MM', MONTH],\n ['YYYY-MM', MONTH * 4],\n ['YYYY-MM', MONTH * 6],\n ['YYYY', DAY * 380], // 借鉴echarts,保证每个周期累加时不会碰到恰巧不够的问题\n];\nfunction getTickInterval(min, max, tickCount) {\n var target = (max - min) / tickCount;\n var idx = Object(_bisector__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(function (o) { return o[1]; })(intervals, target) - 1;\n var interval = intervals[idx];\n if (idx < 0) {\n interval = intervals[0];\n }\n else if (idx >= intervals.length) {\n interval = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(intervals);\n }\n return interval;\n}\n//# sourceMappingURL=time.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvc2NhbGUvZXNtL3V0aWwvdGltZS5qcz8wMGJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9EO0FBQzFCO0FBQ007QUFDRTtBQUNsQztBQUNPO0FBQ1AsaUJBQWlCLGtDQUFNLG1CQUFtQiw2Q0FBSztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlEQUFNO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLGNBQWMseURBQVEsZUFBZSxhQUFhLEVBQUU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix1REFBSTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di9zY2FsZS9lc20vdXRpbC90aW1lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEYXRlLCBpc1N0cmluZywgbGFzdCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IGZlY2hhIGZyb20gJ2ZlY2hhJztcbmltcG9ydCAqIGFzIGZlY2hhMSBmcm9tICdmZWNoYSc7XG5pbXBvcnQgYmlzZWN0b3IgZnJvbSAnLi9iaXNlY3Rvcic7XG52YXIgRk9STUFUX01FVEhPRCA9ICdmb3JtYXQnO1xuZXhwb3J0IGZ1bmN0aW9uIHRpbWVGb3JtYXQodGltZSwgbWFzaykge1xuICAgIHZhciBtZXRob2QgPSBmZWNoYTFbRk9STUFUX01FVEhPRF0gfHwgZmVjaGFbRk9STUFUX01FVEhPRF07XG4gICAgcmV0dXJuIG1ldGhvZCh0aW1lLCBtYXNrKTtcbn1cbi8qKlxuICog6L2s5o2i5oiQ5pe26Ze05oizXG4gKiBAcGFyYW0gdmFsdWUg5pe26Ze05YC8XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1RpbWVTdGFtcCh2YWx1ZSkge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1QnKSA+IDApIHtcbiAgICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUpLmdldFRpbWUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIG5ldyBEYXRlKCcyMDEwLzAxLzEwJykg5ZKMIG5ldyBEYXRlKCcyMDEwLTAxLTEwJykg55qE5beu5Yir5Zyo5LqOOlxuICAgICAgICAgICAgLy8g5aaC5p6c5LuF5pyJ5bm05pyI5pel5pe277yM5YmN6ICF5piv5bim5pyJ5pe25Yy655qEOiBGcmkgSmFuIDEwIDIwMjAgMDI6NDA6MTMgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAgICAgICAgICAgIC8vIOWQjuiAheS8muagvOW8j+WMluaIkCBTdW4gSmFuIDEwIDIwMTAgMDg6MDA6MDAgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAgICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUucmVwbGFjZSgvLS9naSwgJy8nKSkuZ2V0VGltZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuZ2V0VGltZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG52YXIgU0VDT05EID0gMTAwMDtcbnZhciBNSU5VVEUgPSA2MCAqIFNFQ09ORDtcbnZhciBIT1VSID0gNjAgKiBNSU5VVEU7XG52YXIgREFZID0gMjQgKiBIT1VSO1xudmFyIE1PTlRIID0gREFZICogMzE7XG52YXIgWUVBUiA9IERBWSAqIDM2NTtcbmV4cG9ydCB7IFNFQ09ORCwgTUlOVVRFLCBIT1VSLCBEQVksIE1PTlRILCBZRUFSIH07XG52YXIgaW50ZXJ2YWxzID0gW1xuICAgIFsnSEg6bW06c3MnLCBTRUNPTkRdLFxuICAgIFsnSEg6bW06c3MnLCBTRUNPTkQgKiAxMF0sXG4gICAgWydISDptbTpzcycsIFNFQ09ORCAqIDMwXSxcbiAgICBbJ0hIOm1tJywgTUlOVVRFXSxcbiAgICBbJ0hIOm1tJywgTUlOVVRFICogMTBdLFxuICAgIFsnSEg6bW0nLCBNSU5VVEUgKiAzMF0sXG4gICAgWydISCcsIEhPVVJdLFxuICAgIFsnSEgnLCBIT1VSICogNl0sXG4gICAgWydISCcsIEhPVVIgKiAxMl0sXG4gICAgWydZWVlZLU1NLUREJywgREFZXSxcbiAgICBbJ1lZWVktTU0tREQnLCBEQVkgKiA0XSxcbiAgICBbJ1lZWVktV1cnLCBEQVkgKiA3XSxcbiAgICBbJ1lZWVktTU0nLCBNT05USF0sXG4gICAgWydZWVlZLU1NJywgTU9OVEggKiA0XSxcbiAgICBbJ1lZWVktTU0nLCBNT05USCAqIDZdLFxuICAgIFsnWVlZWScsIERBWSAqIDM4MF0sIC8vIOWAn+mJtGVjaGFydHPvvIzkv53or4Hmr4/kuKrlkajmnJ/ntK/liqDml7bkuI3kvJrnorDliLDmgbDlt6fkuI3lpJ/nmoTpl67pophcbl07XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGlja0ludGVydmFsKG1pbiwgbWF4LCB0aWNrQ291bnQpIHtcbiAgICB2YXIgdGFyZ2V0ID0gKG1heCAtIG1pbikgLyB0aWNrQ291bnQ7XG4gICAgdmFyIGlkeCA9IGJpc2VjdG9yKGZ1bmN0aW9uIChvKSB7IHJldHVybiBvWzFdOyB9KShpbnRlcnZhbHMsIHRhcmdldCkgLSAxO1xuICAgIHZhciBpbnRlcnZhbCA9IGludGVydmFsc1tpZHhdO1xuICAgIGlmIChpZHggPCAwKSB7XG4gICAgICAgIGludGVydmFsID0gaW50ZXJ2YWxzWzBdO1xuICAgIH1cbiAgICBlbHNlIGlmIChpZHggPj0gaW50ZXJ2YWxzLmxlbmd0aCkge1xuICAgICAgICBpbnRlcnZhbCA9IGxhc3QoaW50ZXJ2YWxzKTtcbiAgICB9XG4gICAgcmV0dXJuIGludGVydmFsO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGltZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/scale/esm/util/time.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/augment.js": /*!************************************************!*\ !*** ./node_modules/@antv/util/esm/augment.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mix */ \"./node_modules/@antv/util/esm/mix.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n\n\nvar augment = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var c = args[0];\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n if (Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(obj)) {\n obj = obj.prototype;\n }\n Object(_mix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(c.prototype, obj);\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (augment);\n//# sourceMappingURL=augment.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vYXVnbWVudC5qcz9lNmQ5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUF3QjtBQUNlO0FBQ3ZDO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQSxZQUFZLDREQUFVO0FBQ3RCO0FBQ0E7QUFDQSxRQUFRLG9EQUFHO0FBQ1g7QUFDQTtBQUNlLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vYXVnbWVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtaXggZnJvbSAnLi9taXgnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnLi9pcy1mdW5jdGlvbic7XG52YXIgYXVnbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgdmFyIGMgPSBhcmdzWzBdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgb2JqID0gYXJnc1tpXTtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob2JqKSkge1xuICAgICAgICAgICAgb2JqID0gb2JqLnByb3RvdHlwZTtcbiAgICAgICAgfVxuICAgICAgICBtaXgoYy5wcm90b3R5cGUsIG9iaik7XG4gICAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGF1Z21lbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hdWdtZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/augment.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/cache.js": /*!**********************************************!*\ !*** ./node_modules/@antv/util/esm/cache.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * k-v 存储\n */\nvar default_1 = /** @class */ (function () {\n function default_1() {\n this.map = {};\n }\n default_1.prototype.has = function (key) {\n return this.map[key] !== undefined;\n };\n default_1.prototype.get = function (key, def) {\n var v = this.map[key];\n return v === undefined ? def : v;\n };\n default_1.prototype.set = function (key, value) {\n this.map[key] = value;\n };\n default_1.prototype.clear = function () {\n this.map = {};\n };\n default_1.prototype.delete = function (key) {\n delete this.map[key];\n };\n default_1.prototype.size = function () {\n return Object.keys(this.map).length;\n };\n return default_1;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (default_1);\n//# sourceMappingURL=cache.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vY2FjaGUuanM/ZjA0MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDYyx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2NhY2hlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBrLXYg5a2Y5YKoXG4gKi9cbnZhciBkZWZhdWx0XzEgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gZGVmYXVsdF8xKCkge1xuICAgICAgICB0aGlzLm1hcCA9IHt9O1xuICAgIH1cbiAgICBkZWZhdWx0XzEucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwW2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIGRlZmF1bHRfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSwgZGVmKSB7XG4gICAgICAgIHZhciB2ID0gdGhpcy5tYXBba2V5XTtcbiAgICAgICAgcmV0dXJuIHYgPT09IHVuZGVmaW5lZCA/IGRlZiA6IHY7XG4gICAgfTtcbiAgICBkZWZhdWx0XzEucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgIHRoaXMubWFwW2tleV0gPSB2YWx1ZTtcbiAgICB9O1xuICAgIGRlZmF1bHRfMS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubWFwID0ge307XG4gICAgfTtcbiAgICBkZWZhdWx0XzEucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubWFwW2tleV07XG4gICAgfTtcbiAgICBkZWZhdWx0XzEucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1hcCkubGVuZ3RoO1xuICAgIH07XG4gICAgcmV0dXJuIGRlZmF1bHRfMTtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0XzE7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYWNoZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/cache.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/clamp.js": /*!**********************************************!*\ !*** ./node_modules/@antv/util/esm/clamp.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar clamp = function (a, min, max) {\n if (a < min) {\n return min;\n }\n else if (a > max) {\n return max;\n }\n return a;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (clamp);\n//# sourceMappingURL=clamp.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vY2xhbXAuanM/OTg1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLG9FQUFLLEVBQUM7QUFDckIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vY2xhbXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2xhbXAgPSBmdW5jdGlvbiAoYSwgbWluLCBtYXgpIHtcbiAgICBpZiAoYSA8IG1pbikge1xuICAgICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBlbHNlIGlmIChhID4gbWF4KSB7XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBhO1xufTtcbmV4cG9ydCBkZWZhdWx0IGNsYW1wO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xhbXAuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/clamp.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/clear-animation-frame.js": /*!**************************************************************!*\ !*** ./node_modules/@antv/util/esm/clear-animation-frame.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return cancelAnimationFrame; });\nfunction cancelAnimationFrame(handler) {\n var method = window.cancelAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n // @ts-ignore\n window.mozCancelAnimationFrame ||\n // @ts-ignore\n window.msCancelAnimationFrame ||\n clearTimeout;\n method(handler);\n}\n;\n//# sourceMappingURL=clear-animation-frame.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vY2xlYXItYW5pbWF0aW9uLWZyYW1lLmpzPzViMDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9jbGVhci1hbmltYXRpb24tZnJhbWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjYW5jZWxBbmltYXRpb25GcmFtZShoYW5kbGVyKSB7XG4gICAgdmFyIG1ldGhvZCA9IHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSB8fFxuICAgICAgICB3aW5kb3cud2Via2l0Q2FuY2VsQW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB3aW5kb3cubW96Q2FuY2VsQW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB3aW5kb3cubXNDYW5jZWxBbmltYXRpb25GcmFtZSB8fFxuICAgICAgICBjbGVhclRpbWVvdXQ7XG4gICAgbWV0aG9kKGhhbmRsZXIpO1xufVxuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xlYXItYW5pbWF0aW9uLWZyYW1lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/clear-animation-frame.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/clone.js": /*!**********************************************!*\ !*** ./node_modules/@antv/util/esm/clone.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n\nvar clone = function (obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n var rst;\n if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(obj)) {\n rst = [];\n for (var i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n }\n else {\n rst[i] = obj[i];\n }\n }\n }\n else {\n rst = {};\n for (var k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n }\n else {\n rst[k] = obj[k];\n }\n }\n }\n return rst;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (clone);\n//# sourceMappingURL=clone.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vY2xvbmUuanM/YjAxMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlEQUFPO0FBQ2Y7QUFDQSx1Q0FBdUMsT0FBTztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2Nsb25lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG52YXIgY2xvbmUgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICB2YXIgcnN0O1xuICAgIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAgICAgcnN0ID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpbaV0gPT09ICdvYmplY3QnICYmIG9ialtpXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcnN0W2ldID0gY2xvbmUob2JqW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJzdFtpXSA9IG9ialtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcnN0ID0ge307XG4gICAgICAgIGZvciAodmFyIGsgaW4gb2JqKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9ialtrXSA9PT0gJ29iamVjdCcgJiYgb2JqW2tdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByc3Rba10gPSBjbG9uZShvYmpba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcnN0W2tdID0gb2JqW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByc3Q7XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xvbmU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jbG9uZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/clone.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/contains.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/contains.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n\nvar contains = function (arr, value) {\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return false;\n }\n return arr.indexOf(value) > -1;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (contains);\n//# sourceMappingURL=contains.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vY29udGFpbnMuanM/OGJjOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQTBDO0FBQzFDO0FBQ0EsU0FBUyw4REFBVztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNlLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vY29udGFpbnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pcy1hcnJheS1saWtlJztcbnZhciBjb250YWlucyA9IGZ1bmN0aW9uIChhcnIsIHZhbHVlKSB7XG4gICAgaWYgKCFpc0FycmF5TGlrZShhcnIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGFyci5pbmRleE9mKHZhbHVlKSA+IC0xO1xufTtcbmV4cG9ydCBkZWZhdWx0IGNvbnRhaW5zO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29udGFpbnMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/contains.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/debounce.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/debounce.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (debounce);\n//# sourceMappingURL=debounce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZGVib3VuY2UuanM/OWQ3NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZGVib3VuY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBpbW1lZGlhdGUpIHtcbiAgICB2YXIgdGltZW91dDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHZhciBsYXRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgaWYgKCFpbW1lZGlhdGUpIHtcbiAgICAgICAgICAgICAgICBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgY2FsbE5vdyA9IGltbWVkaWF0ZSAmJiAhdGltZW91dDtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCk7XG4gICAgICAgIGlmIChjYWxsTm93KSB7XG4gICAgICAgICAgICBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IGRlYm91bmNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVib3VuY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/debounce.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/deep-mix.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/deep-mix.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_plain_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-plain-object */ \"./node_modules/@antv/util/esm/is-plain-object.js\");\n\n\nvar MAX_MIX_LEVEL = 5;\nfunction _deepMix(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n var value = src[key];\n if (value !== null && Object(_is_plain_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n if (!Object(_is_plain_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n }\n else {\n dist[key] = src[key];\n }\n }\n else if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n }\n else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n}\n// todo 重写\nvar deepMix = function (rst) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n return rst;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (deepMix);\n//# sourceMappingURL=deep-mix.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZGVlcC1taXguanM/ZTQzNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDYTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxnRUFBYTtBQUMvQyxxQkFBcUIsZ0VBQWE7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHlEQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDZSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2RlZXAtbWl4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5pbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICcuL2lzLXBsYWluLW9iamVjdCc7XG52YXIgTUFYX01JWF9MRVZFTCA9IDU7XG5mdW5jdGlvbiBfZGVlcE1peChkaXN0LCBzcmMsIGxldmVsLCBtYXhMZXZlbCkge1xuICAgIGxldmVsID0gbGV2ZWwgfHwgMDtcbiAgICBtYXhMZXZlbCA9IG1heExldmVsIHx8IE1BWF9NSVhfTEVWRUw7XG4gICAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgICAgICBpZiAoc3JjLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHNyY1trZXldO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KGRpc3Rba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzdFtrZXldID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChsZXZlbCA8IG1heExldmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIF9kZWVwTWl4KGRpc3Rba2V5XSwgdmFsdWUsIGxldmVsICsgMSwgbWF4TGV2ZWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzdFtrZXldID0gc3JjW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBkaXN0W2tleV0gPSBbXTtcbiAgICAgICAgICAgICAgICBkaXN0W2tleV0gPSBkaXN0W2tleV0uY29uY2F0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBkaXN0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIHRvZG8g6YeN5YaZXG52YXIgZGVlcE1peCA9IGZ1bmN0aW9uIChyc3QpIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBfZGVlcE1peChyc3QsIGFyZ3NbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gcnN0O1xufTtcbmV4cG9ydCBkZWZhdWx0IGRlZXBNaXg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWVwLW1peC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/deep-mix.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/difference.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/difference.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filter */ \"./node_modules/@antv/util/esm/filter.js\");\n/* harmony import */ var _contains__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./contains */ \"./node_modules/@antv/util/esm/contains.js\");\n\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to inspect.\n * @param {Array} values The values to exclude.\n * @return {Array} Returns the new array of filtered values.\n * @example\n * difference([2, 1], [2, 3]); // => [1]\n */\nvar difference = function (arr, values) {\n if (values === void 0) { values = []; }\n return Object(_filter__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr, function (value) { return !Object(_contains__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, value); });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (difference);\n//# sourceMappingURL=difference.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZGlmZmVyZW5jZS5qcz8zYTQwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUE4QjtBQUNJO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsWUFBWSxNQUFNO0FBQ2xCO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQSw0QkFBNEIsYUFBYTtBQUN6QyxXQUFXLHVEQUFNLHdCQUF3QixTQUFTLHlEQUFRLGdCQUFnQixFQUFFO0FBQzVFO0FBQ2UseUVBQVUsRUFBQztBQUMxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9kaWZmZXJlbmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZpbHRlciBmcm9tICcuL2ZpbHRlcic7XG5pbXBvcnQgY29udGFpbnMgZnJvbSAnLi9jb250YWlucyc7XG4vKipcbiAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnIgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICogZGlmZmVyZW5jZShbMiwgMV0sIFsyLCAzXSk7ICAvLyA9PiBbMV1cbiAqL1xudmFyIGRpZmZlcmVuY2UgPSBmdW5jdGlvbiAoYXJyLCB2YWx1ZXMpIHtcbiAgICBpZiAodmFsdWVzID09PSB2b2lkIDApIHsgdmFsdWVzID0gW107IH1cbiAgICByZXR1cm4gZmlsdGVyKGFyciwgZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiAhY29udGFpbnModmFsdWVzLCB2YWx1ZSk7IH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IGRpZmZlcmVuY2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kaWZmZXJlbmNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/difference.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/each.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/each.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-object */ \"./node_modules/@antv/util/esm/is-object.js\");\n\n\nfunction each(elements, func) {\n if (!elements) {\n return;\n }\n var rst;\n if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n }\n else if (Object(_is_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (each);\n//# sourceMappingURL=each.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZWFjaC5qcz9iNDE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNFO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlEQUFPO0FBQ2YsOENBQThDLFNBQVM7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSwwREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZWFjaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXMtYXJyYXknO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXMtb2JqZWN0JztcbmZ1bmN0aW9uIGVhY2goZWxlbWVudHMsIGZ1bmMpIHtcbiAgICBpZiAoIWVsZW1lbnRzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHJzdDtcbiAgICBpZiAoaXNBcnJheShlbGVtZW50cykpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGVsZW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICByc3QgPSBmdW5jKGVsZW1lbnRzW2ldLCBpKTtcbiAgICAgICAgICAgIGlmIChyc3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNPYmplY3QoZWxlbWVudHMpKSB7XG4gICAgICAgIGZvciAodmFyIGsgaW4gZWxlbWVudHMpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50cy5oYXNPd25Qcm9wZXJ0eShrKSkge1xuICAgICAgICAgICAgICAgIHJzdCA9IGZ1bmMoZWxlbWVudHNba10sIGspO1xuICAgICAgICAgICAgICAgIGlmIChyc3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGVhY2g7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lYWNoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/each.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/ends-with.js": /*!**************************************************!*\ !*** ./node_modules/@antv/util/esm/ends-with.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-string */ \"./node_modules/@antv/util/esm/is-string.js\");\n\n\nfunction endsWith(arr, e) {\n return (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr) || Object(_is_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arr)) ? arr[arr.length - 1] === e : false;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (endsWith);\n//# sourceMappingURL=ends-with.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZW5kcy13aXRoLmpzP2I4NTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0U7QUFDbkM7QUFDQSxZQUFZLHlEQUFPLFNBQVMsMERBQVE7QUFDcEM7QUFDZSx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2VuZHMtd2l0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXMtYXJyYXknO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJy4vaXMtc3RyaW5nJztcbmZ1bmN0aW9uIGVuZHNXaXRoKGFyciwgZSkge1xuICAgIHJldHVybiAoaXNBcnJheShhcnIpIHx8IGlzU3RyaW5nKGFycikpID8gYXJyW2Fyci5sZW5ndGggLSAxXSA9PT0gZSA6IGZhbHNlO1xufVxuZXhwb3J0IGRlZmF1bHQgZW5kc1dpdGg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbmRzLXdpdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/ends-with.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/every.js": /*!**********************************************!*\ !*** ./node_modules/@antv/util/esm/every.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 只要有一个不满足条件就返回 false\n * @param arr\n * @param func\n */\nvar every = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (!func(arr[i], i))\n return false;\n }\n return true;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (every);\n//# sourceMappingURL=every.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZXZlcnkuanM/NDE0YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLG9FQUFLLEVBQUM7QUFDckIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZXZlcnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOWPquimgeacieS4gOS4quS4jea7oei2s+adoeS7tuWwsei/lOWbniBmYWxzZVxuICogQHBhcmFtIGFyclxuICogQHBhcmFtIGZ1bmNcbiAqL1xudmFyIGV2ZXJ5ID0gZnVuY3Rpb24gKGFyciwgZnVuYykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghZnVuYyhhcnJbaV0sIGkpKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5leHBvcnQgZGVmYXVsdCBldmVyeTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWV2ZXJ5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/every.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/extend.js": /*!***********************************************!*\ !*** ./node_modules/@antv/util/esm/extend.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mix */ \"./node_modules/@antv/util/esm/mix.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n\n\nvar extend = function (subclass, superclass, overrides, staticOverrides) {\n // 如果只提供父类构造函数,则自动生成子类构造函数\n if (!Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(superclass)) {\n overrides = superclass;\n superclass = subclass;\n subclass = function () { };\n }\n var create = Object.create ?\n function (proto, c) {\n return Object.create(proto, {\n constructor: {\n value: c\n }\n });\n } :\n function (proto, c) {\n function Tmp() { }\n Tmp.prototype = proto;\n var o = new Tmp();\n o.constructor = c;\n return o;\n };\n var superObj = create(superclass.prototype, subclass); // new superclass(),//实例化父类作为子类的prototype\n subclass.prototype = Object(_mix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(superObj, subclass.prototype); // 指定子类的prototype\n subclass.superclass = create(superclass.prototype, superclass);\n Object(_mix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(superObj, overrides);\n Object(_mix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(subclass, staticOverrides);\n return subclass;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (extend);\n//# sourceMappingURL=extend.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZXh0ZW5kLmpzPzJiZDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXdCO0FBQ2U7QUFDdkM7QUFDQTtBQUNBLFNBQVMsNERBQVU7QUFDbkI7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRDtBQUMxRCx5QkFBeUIsb0RBQUcsK0JBQStCO0FBQzNEO0FBQ0EsSUFBSSxvREFBRztBQUNQLElBQUksb0RBQUc7QUFDUDtBQUNBO0FBQ2UscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9leHRlbmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWl4IGZyb20gJy4vbWl4JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXMtZnVuY3Rpb24nO1xudmFyIGV4dGVuZCA9IGZ1bmN0aW9uIChzdWJjbGFzcywgc3VwZXJjbGFzcywgb3ZlcnJpZGVzLCBzdGF0aWNPdmVycmlkZXMpIHtcbiAgICAvLyDlpoLmnpzlj6rmj5DkvpvniLbnsbvmnoTpgKDlh73mlbDvvIzliJnoh6rliqjnlJ/miJDlrZDnsbvmnoTpgKDlh73mlbBcbiAgICBpZiAoIWlzRnVuY3Rpb24oc3VwZXJjbGFzcykpIHtcbiAgICAgICAgb3ZlcnJpZGVzID0gc3VwZXJjbGFzcztcbiAgICAgICAgc3VwZXJjbGFzcyA9IHN1YmNsYXNzO1xuICAgICAgICBzdWJjbGFzcyA9IGZ1bmN0aW9uICgpIHsgfTtcbiAgICB9XG4gICAgdmFyIGNyZWF0ZSA9IE9iamVjdC5jcmVhdGUgP1xuICAgICAgICBmdW5jdGlvbiAocHJvdG8sIGMpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKHByb3RvLCB7XG4gICAgICAgICAgICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSA6XG4gICAgICAgIGZ1bmN0aW9uIChwcm90bywgYykge1xuICAgICAgICAgICAgZnVuY3Rpb24gVG1wKCkgeyB9XG4gICAgICAgICAgICBUbXAucHJvdG90eXBlID0gcHJvdG87XG4gICAgICAgICAgICB2YXIgbyA9IG5ldyBUbXAoKTtcbiAgICAgICAgICAgIG8uY29uc3RydWN0b3IgPSBjO1xuICAgICAgICAgICAgcmV0dXJuIG87XG4gICAgICAgIH07XG4gICAgdmFyIHN1cGVyT2JqID0gY3JlYXRlKHN1cGVyY2xhc3MucHJvdG90eXBlLCBzdWJjbGFzcyk7IC8vIG5ldyBzdXBlcmNsYXNzKCksLy/lrp7kvovljJbniLbnsbvkvZzkuLrlrZDnsbvnmoRwcm90b3R5cGVcbiAgICBzdWJjbGFzcy5wcm90b3R5cGUgPSBtaXgoc3VwZXJPYmosIHN1YmNsYXNzLnByb3RvdHlwZSk7IC8vIOaMh+WumuWtkOexu+eahHByb3RvdHlwZVxuICAgIHN1YmNsYXNzLnN1cGVyY2xhc3MgPSBjcmVhdGUoc3VwZXJjbGFzcy5wcm90b3R5cGUsIHN1cGVyY2xhc3MpO1xuICAgIG1peChzdXBlck9iaiwgb3ZlcnJpZGVzKTtcbiAgICBtaXgoc3ViY2xhc3MsIHN0YXRpY092ZXJyaWRlcyk7XG4gICAgcmV0dXJuIHN1YmNsYXNzO1xufTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWV4dGVuZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/extend.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/filter.js": /*!***********************************************!*\ !*** ./node_modules/@antv/util/esm/filter.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n\nvar filter = function (arr, func) {\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n if (func(value, index)) {\n result.push(value);\n }\n }\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (filter);\n//# sourceMappingURL=filter.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZmlsdGVyLmpzPzdmZTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUEwQztBQUMxQztBQUNBLFNBQVMsOERBQVc7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9CQUFvQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZmlsdGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXMtYXJyYXktbGlrZSc7XG52YXIgZmlsdGVyID0gZnVuY3Rpb24gKGFyciwgZnVuYykge1xuICAgIGlmICghaXNBcnJheUxpa2UoYXJyKSkge1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGFyci5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyW2luZGV4XTtcbiAgICAgICAgaWYgKGZ1bmModmFsdWUsIGluZGV4KSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGRlZmF1bHQgZmlsdGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmlsdGVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/filter.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/find-index.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/find-index.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nfunction findIndex(arr, predicate, fromIndex) {\n if (fromIndex === void 0) { fromIndex = 0; }\n for (var i = fromIndex; i < arr.length; i++) {\n if (predicate(arr[i], i)) {\n // 找到终止循环\n return i;\n }\n }\n return -1;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (findIndex);\n//# sourceMappingURL=find-index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZmluZC1pbmRleC5qcz9jNDlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQSwrQkFBK0IsZUFBZTtBQUM5QywyQkFBMkIsZ0JBQWdCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9maW5kLWluZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gZmluZEluZGV4KGFyciwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICBpZiAoZnJvbUluZGV4ID09PSB2b2lkIDApIHsgZnJvbUluZGV4ID0gMDsgfVxuICAgIGZvciAodmFyIGkgPSBmcm9tSW5kZXg7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHByZWRpY2F0ZShhcnJbaV0sIGkpKSB7XG4gICAgICAgICAgICAvLyDmib7liLDnu4jmraLlvqrnjq9cbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZpbmRJbmRleDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZpbmQtaW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/find-index.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/find.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/find.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n/* harmony import */ var _is_match__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-match */ \"./node_modules/@antv/util/esm/is-match.js\");\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_plain_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./is-plain-object */ \"./node_modules/@antv/util/esm/is-plain-object.js\");\n\n\n\n\nfunction find(arr, predicate) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(arr))\n return null;\n var _predicate;\n if (Object(_is_function__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(predicate)) {\n _predicate = predicate;\n }\n if (Object(_is_plain_object__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(predicate)) {\n _predicate = function (a) { return Object(_is_match__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(a, predicate); };\n }\n if (_predicate) {\n for (var i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n return null;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (find);\n//# sourceMappingURL=find.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZmluZC5qcz9mZmQ2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUM7QUFDTjtBQUNBO0FBQ2E7QUFDOUM7QUFDQSxTQUFTLHlEQUFPO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDREQUFVO0FBQ2xCO0FBQ0E7QUFDQSxRQUFRLGdFQUFhO0FBQ3JCLG1DQUFtQyxRQUFRLHlEQUFPLGVBQWU7QUFDakU7QUFDQTtBQUNBLHVCQUF1QixnQkFBZ0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2ZpbmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbmltcG9ydCBpc01hdGNoIGZyb20gJy4vaXMtbWF0Y2gnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5pbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICcuL2lzLXBsYWluLW9iamVjdCc7XG5mdW5jdGlvbiBmaW5kKGFyciwgcHJlZGljYXRlKSB7XG4gICAgaWYgKCFpc0FycmF5KGFycikpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIHZhciBfcHJlZGljYXRlO1xuICAgIGlmIChpc0Z1bmN0aW9uKHByZWRpY2F0ZSkpIHtcbiAgICAgICAgX3ByZWRpY2F0ZSA9IHByZWRpY2F0ZTtcbiAgICB9XG4gICAgaWYgKGlzUGxhaW5PYmplY3QocHJlZGljYXRlKSkge1xuICAgICAgICBfcHJlZGljYXRlID0gZnVuY3Rpb24gKGEpIHsgcmV0dXJuIGlzTWF0Y2goYSwgcHJlZGljYXRlKTsgfTtcbiAgICB9XG4gICAgaWYgKF9wcmVkaWNhdGUpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChfcHJlZGljYXRlKGFycltpXSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZXhwb3J0IGRlZmF1bHQgZmluZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZpbmQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/find.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/first-value.js": /*!****************************************************!*\ !*** ./node_modules/@antv/util/esm/first-value.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/@antv/util/esm/is-nil.js\");\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n\n\nvar firstValue = function (data, name) {\n var rst = null;\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n if (Object(_is_array__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云\n }\n else {\n rst = value;\n }\n break;\n }\n }\n return rst;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (firstValue);\n//# sourceMappingURL=first-value.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZmlyc3QtdmFsdWUuanM/NjExYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBNkI7QUFDSTtBQUNqQztBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0EsYUFBYSx1REFBSztBQUNsQixnQkFBZ0IseURBQU87QUFDdkIsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZmlyc3QtdmFsdWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNOaWwgZnJvbSAnLi9pcy1uaWwnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG52YXIgZmlyc3RWYWx1ZSA9IGZ1bmN0aW9uIChkYXRhLCBuYW1lKSB7XG4gICAgdmFyIHJzdCA9IG51bGw7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBvYmogPSBkYXRhW2ldO1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmpbbmFtZV07XG4gICAgICAgIGlmICghaXNOaWwodmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByc3QgPSB2YWx1ZVswXTsgLy8gdG9kbyDov5nph4zmmK/lkKblupTor6Xkvb/nlKjpgJLlvZLvvIzosIPnlKggZmlyc3RWYWx1ZSBA57ud5LqRXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByc3QgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByc3Q7XG59O1xuZXhwb3J0IGRlZmF1bHQgZmlyc3RWYWx1ZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZpcnN0LXZhbHVlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/first-value.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/fixed-base.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/fixed-base.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar fixedBase = function (v, base) {\n var str = base.toString();\n var index = str.indexOf('.');\n if (index === -1) {\n return Math.round(v);\n }\n var length = str.substr(index + 1).length;\n if (length > 20) {\n length = 20;\n }\n return parseFloat(v.toFixed(length));\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (fixedBase);\n//# sourceMappingURL=fixed-base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZml4ZWQtYmFzZS5qcz8xYjNmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9maXhlZC1iYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGZpeGVkQmFzZSA9IGZ1bmN0aW9uICh2LCBiYXNlKSB7XG4gICAgdmFyIHN0ciA9IGJhc2UudG9TdHJpbmcoKTtcbiAgICB2YXIgaW5kZXggPSBzdHIuaW5kZXhPZignLicpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQodik7XG4gICAgfVxuICAgIHZhciBsZW5ndGggPSBzdHIuc3Vic3RyKGluZGV4ICsgMSkubGVuZ3RoO1xuICAgIGlmIChsZW5ndGggPiAyMCkge1xuICAgICAgICBsZW5ndGggPSAyMDtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQodi50b0ZpeGVkKGxlbmd0aCkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IGZpeGVkQmFzZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZpeGVkLWJhc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/fixed-base.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/flatten-deep.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/util/esm/flatten-deep.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @param {Array} result The array to return.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]\n */\nvar flattenDeep = function (arr, result) {\n if (result === void 0) { result = []; }\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n result.push(arr);\n }\n else {\n for (var i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], result);\n }\n }\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (flattenDeep);\n//# sourceMappingURL=flatten-deep.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZmxhdHRlbi1kZWVwLmpzPzMzODEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCLFlBQVksTUFBTTtBQUNsQjtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQSw0QkFBNEIsYUFBYTtBQUN6QyxTQUFTLHlEQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixnQkFBZ0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLDBFQUFXLEVBQUM7QUFDM0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZmxhdHRlbi1kZWVwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG4vKipcbiAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnIgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcGFyYW0ge0FycmF5fSByZXN1bHQgVGhlIGFycmF5IHRvIHJldHVybi5cbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmbGF0dGVuRGVlcChbMSwgWzIsIFszLCBbNF1dLCA1XV0pOyAgLy8gPT4gWzEsIDIsIDMsIDQsIDVdXG4gKi9cbnZhciBmbGF0dGVuRGVlcCA9IGZ1bmN0aW9uIChhcnIsIHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgeyByZXN1bHQgPSBbXTsgfVxuICAgIGlmICghaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGFycik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgZmxhdHRlbkRlZXAoYXJyW2ldLCByZXN1bHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGRlZmF1bHQgZmxhdHRlbkRlZXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mbGF0dGVuLWRlZXAuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/flatten-deep.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/flatten.js": /*!************************************************!*\ !*** ./node_modules/@antv/util/esm/flatten.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\nvar flatten = function (arr) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return [];\n }\n var rst = [];\n for (var i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n return rst;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (flatten);\n//# sourceMappingURL=flatten.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZmxhdHRlbi5qcz9hZGI3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFlBQVksTUFBTTtBQUNsQjtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQSxTQUFTLHlEQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDZSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2ZsYXR0ZW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5Jztcbi8qKlxuICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyciBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7ICAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gKi9cbnZhciBmbGF0dGVuID0gZnVuY3Rpb24gKGFycikge1xuICAgIGlmICghaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdmFyIHJzdCA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJzdCA9IHJzdC5jb25jYXQoYXJyW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJzdDtcbn07XG5leHBvcnQgZGVmYXVsdCBmbGF0dGVuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmxhdHRlbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/flatten.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/for-in.js": /*!***********************************************!*\ !*** ./node_modules/@antv/util/esm/for-in.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./each */ \"./node_modules/@antv/util/esm/each.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_each__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n//# sourceMappingURL=for-in.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZm9yLWluLmpzPzc4ZTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUEwQjtBQUNYLDRHQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZm9yLWluLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVhY2ggZnJvbSAnLi9lYWNoJztcbmV4cG9ydCBkZWZhdWx0IGVhY2g7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3ItaW4uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/for-in.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/get-ellipsis-text.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/util/esm/get-ellipsis-text.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-string */ \"./node_modules/@antv/util/esm/is-string.js\");\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./to-string */ \"./node_modules/@antv/util/esm/to-string.js\");\n/* harmony import */ var _measure_text_width__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./measure-text-width */ \"./node_modules/@antv/util/esm/measure-text-width.js\");\n\n\n\n/**\n * 获取文本的 ... 文本。\n * 算法(减少每次 measureText 的长度,measureText 的性能跟字符串时间相关):\n * 1. 先通过 STEP 逐步计算,找到最后一个小于 maxWidth 的字符串\n * 2. 然后对最后这个字符串二分计算\n * @param text 需要计算的文本, 由于历史原因 除了支持string,还支持空值,number和数组等\n * @param maxWidth 最大宽度\n * @param font 字体\n * @param str 要替换的文本\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (text, maxWidth, font, str) {\n if (str === void 0) { str = '...'; }\n var STEP = 16; // 每次 16,调参工程师\n var PLACEHOLDER_WIDTH = Object(_measure_text_width__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(str, font);\n var leftText = !Object(_is_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(text) ? Object(_to_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(text) : text;\n var leftWidth = maxWidth;\n var r = []; // 最终的分段字符串\n var currentText;\n var currentWidth;\n if (Object(_measure_text_width__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(text, font) <= maxWidth) {\n return text;\n }\n // 首先通过 step 计算,找出最大的未超出长度的\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, STEP);\n // 计算宽度\n currentWidth = Object(_measure_text_width__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n if (currentWidth > leftWidth) {\n break;\n }\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(STEP);\n // 字符串整体没有超出\n if (!leftText) {\n return r.join('');\n }\n }\n // 最下的最后一个 STEP,使用 1 递增(用二分效果更高)\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, 1);\n // 计算宽度\n currentWidth = Object(_measure_text_width__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n break;\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(1);\n if (!leftText) {\n return r.join('');\n }\n }\n return \"\" + r.join('') + str;\n});\n//# sourceMappingURL=get-ellipsis-text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZ2V0LWVsbGlwc2lzLXRleHQuanM/YzY2NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNBO0FBQ2dDO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dCO0FBQ2hCLHlCQUF5QixhQUFhO0FBQ3RDLGtCQUFrQjtBQUNsQiw0QkFBNEIsbUVBQWdCO0FBQzVDLG9CQUFvQiwwREFBUSxTQUFTLDBEQUFRO0FBQzdDO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQSxRQUFRLG1FQUFnQjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG1FQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUVBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZ2V0LWVsbGlwc2lzLXRleHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNTdHJpbmcgZnJvbSAnLi9pcy1zdHJpbmcnO1xuaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG8tc3RyaW5nJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgbWVhc3VyZVRleHRXaWR0aCB9IGZyb20gJy4vbWVhc3VyZS10ZXh0LXdpZHRoJztcbi8qKlxuICog6I635Y+W5paH5pys55qEIC4uLiDmlofmnKzjgIJcbiAqIOeul+azle+8iOWHj+Wwkeavj+asoSBtZWFzdXJlVGV4dCDnmoTplb/luqbvvIxtZWFzdXJlVGV4dCDnmoTmgKfog73ot5/lrZfnrKbkuLLml7bpl7Tnm7jlhbPvvInvvJpcbiAqIDEuIOWFiOmAmui/hyBTVEVQIOmAkOatpeiuoeeul++8jOaJvuWIsOacgOWQjuS4gOS4quWwj+S6jiBtYXhXaWR0aCDnmoTlrZfnrKbkuLJcbiAqIDIuIOeEtuWQjuWvueacgOWQjui/meS4quWtl+espuS4suS6jOWIhuiuoeeul1xuICogQHBhcmFtIHRleHQg6ZyA6KaB6K6h566X55qE5paH5pysLCDnlLHkuo7ljoblj7Lljp/lm6Ag6Zmk5LqG5pSv5oyBc3RyaW5n77yM6L+Y5pSv5oyB56m65YC8LG51bWJlcuWSjOaVsOe7hOetiVxuICogQHBhcmFtIG1heFdpZHRoIOacgOWkp+WuveW6plxuICogQHBhcmFtIGZvbnQg5a2X5L2TXG4gKiBAcGFyYW0gc3RyIOimgeabv+aNoueahOaWh+acrFxuICovXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKHRleHQsIG1heFdpZHRoLCBmb250LCBzdHIpIHtcbiAgICBpZiAoc3RyID09PSB2b2lkIDApIHsgc3RyID0gJy4uLic7IH1cbiAgICB2YXIgU1RFUCA9IDE2OyAvLyDmr4/mrKEgMTbvvIzosIPlj4Llt6XnqIvluIhcbiAgICB2YXIgUExBQ0VIT0xERVJfV0lEVEggPSBtZWFzdXJlVGV4dFdpZHRoKHN0ciwgZm9udCk7XG4gICAgdmFyIGxlZnRUZXh0ID0gIWlzU3RyaW5nKHRleHQpID8gdG9TdHJpbmcodGV4dCkgOiB0ZXh0O1xuICAgIHZhciBsZWZ0V2lkdGggPSBtYXhXaWR0aDtcbiAgICB2YXIgciA9IFtdOyAvLyDmnIDnu4jnmoTliIbmrrXlrZfnrKbkuLJcbiAgICB2YXIgY3VycmVudFRleHQ7XG4gICAgdmFyIGN1cnJlbnRXaWR0aDtcbiAgICBpZiAobWVhc3VyZVRleHRXaWR0aCh0ZXh0LCBmb250KSA8PSBtYXhXaWR0aCkge1xuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gICAgLy8g6aaW5YWI6YCa6L+HIHN0ZXAg6K6h566X77yM5om+5Ye65pyA5aSn55qE5pyq6LaF5Ye66ZW/5bqm55qEXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIC8vIOabtOaWsOWtl+espuS4slxuICAgICAgICBjdXJyZW50VGV4dCA9IGxlZnRUZXh0LnN1YnN0cigwLCBTVEVQKTtcbiAgICAgICAgLy8g6K6h566X5a695bqmXG4gICAgICAgIGN1cnJlbnRXaWR0aCA9IG1lYXN1cmVUZXh0V2lkdGgoY3VycmVudFRleHQsIGZvbnQpO1xuICAgICAgICAvLyDotoXlh7rliankvZnlrr3luqbvvIzliJnlgZzmraJcbiAgICAgICAgaWYgKGN1cnJlbnRXaWR0aCArIFBMQUNFSE9MREVSX1dJRFRIID4gbGVmdFdpZHRoKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFdpZHRoID4gbGVmdFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgci5wdXNoKGN1cnJlbnRUZXh0KTtcbiAgICAgICAgLy8g5rKh5pyJ6LaF5Ye677yM5YiZ6K6h566X5Ymp5L2Z5a695bqmXG4gICAgICAgIGxlZnRXaWR0aCAtPSBjdXJyZW50V2lkdGg7XG4gICAgICAgIGxlZnRUZXh0ID0gbGVmdFRleHQuc3Vic3RyKFNURVApO1xuICAgICAgICAvLyDlrZfnrKbkuLLmlbTkvZPmsqHmnInotoXlh7pcbiAgICAgICAgaWYgKCFsZWZ0VGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHIuam9pbignJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8g5pyA5LiL55qE5pyA5ZCO5LiA5LiqIFNURVDvvIzkvb/nlKggMSDpgJLlop7vvIjnlKjkuozliIbmlYjmnpzmm7Tpq5jvvIlcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgLy8g5pu05paw5a2X56ym5LiyXG4gICAgICAgIGN1cnJlbnRUZXh0ID0gbGVmdFRleHQuc3Vic3RyKDAsIDEpO1xuICAgICAgICAvLyDorqHnrpflrr3luqZcbiAgICAgICAgY3VycmVudFdpZHRoID0gbWVhc3VyZVRleHRXaWR0aChjdXJyZW50VGV4dCwgZm9udCk7XG4gICAgICAgIC8vIOi2heWHuuWJqeS9meWuveW6pu+8jOWImeWBnOatolxuICAgICAgICBpZiAoY3VycmVudFdpZHRoICsgUExBQ0VIT0xERVJfV0lEVEggPiBsZWZ0V2lkdGgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHIucHVzaChjdXJyZW50VGV4dCk7XG4gICAgICAgIC8vIOayoeaciei2heWHuu+8jOWImeiuoeeul+WJqeS9meWuveW6plxuICAgICAgICBsZWZ0V2lkdGggLT0gY3VycmVudFdpZHRoO1xuICAgICAgICBsZWZ0VGV4dCA9IGxlZnRUZXh0LnN1YnN0cigxKTtcbiAgICAgICAgaWYgKCFsZWZ0VGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHIuam9pbignJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFwiXCIgKyByLmpvaW4oJycpICsgc3RyO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtZWxsaXBzaXMtdGV4dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/get-ellipsis-text.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/get-range.js": /*!**************************************************!*\ !*** ./node_modules/@antv/util/esm/get-range.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _max__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./max */ \"./node_modules/@antv/util/esm/max.js\");\n/* harmony import */ var _min__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./min */ \"./node_modules/@antv/util/esm/min.js\");\n\n\n\nvar getRange = function (values) {\n // 存在 NaN 时,min,max 判定会出问题\n var filterValues = values.filter(function (v) { return !isNaN(v); });\n if (!filterValues.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0,\n };\n }\n if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values[0])) {\n var tmp = [];\n for (var i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n filterValues = tmp;\n }\n var max = Object(_max__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(filterValues);\n var min = Object(_min__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(filterValues);\n return {\n min: min,\n max: max,\n };\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (getRange);\n//# sourceMappingURL=get-range.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZ2V0LXJhbmdlLmpzP2I1ZDgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDUztBQUNBO0FBQzFDO0FBQ0E7QUFDQSxtREFBbUQsa0JBQWtCLEVBQUU7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlEQUFPO0FBQ2Y7QUFDQSx1QkFBdUIsbUJBQW1CO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxvREFBTTtBQUNwQixjQUFjLG9EQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2dldC1yYW5nZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXMtYXJyYXknO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBnZXRNYXggfSBmcm9tICcuL21heCc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGdldE1pbiB9IGZyb20gJy4vbWluJztcbnZhciBnZXRSYW5nZSA9IGZ1bmN0aW9uICh2YWx1ZXMpIHtcbiAgICAvLyDlrZjlnKggTmFOIOaXtu+8jG1pbixtYXgg5Yik5a6a5Lya5Ye66Zeu6aKYXG4gICAgdmFyIGZpbHRlclZhbHVlcyA9IHZhbHVlcy5maWx0ZXIoZnVuY3Rpb24gKHYpIHsgcmV0dXJuICFpc05hTih2KTsgfSk7XG4gICAgaWYgKCFmaWx0ZXJWYWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIOWmguaenOayoeacieaVsOWAvOWImeebtOaOpei/lOWbnjBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgIG1heDogMCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGlzQXJyYXkodmFsdWVzWzBdKSkge1xuICAgICAgICB2YXIgdG1wID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0bXAgPSB0bXAuY29uY2F0KHZhbHVlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZmlsdGVyVmFsdWVzID0gdG1wO1xuICAgIH1cbiAgICB2YXIgbWF4ID0gZ2V0TWF4KGZpbHRlclZhbHVlcyk7XG4gICAgdmFyIG1pbiA9IGdldE1pbihmaWx0ZXJWYWx1ZXMpO1xuICAgIHJldHVybiB7XG4gICAgICAgIG1pbjogbWluLFxuICAgICAgICBtYXg6IG1heCxcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGdldFJhbmdlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LXJhbmdlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/get-range.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/get-type.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/get-type.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar toString = {}.toString;\nvar getType = function (value) {\n return toString.call(value).replace(/^\\[object /, '').replace(/]$/, '');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (getType);\n//# sourceMappingURL=get-type.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZ2V0LXR5cGUuanM/YTJlZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDZSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2dldC10eXBlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG52YXIgZ2V0VHlwZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKS5yZXBsYWNlKC9eXFxbb2JqZWN0IC8sICcnKS5yZXBsYWNlKC9dJC8sICcnKTtcbn07XG5leHBvcnQgZGVmYXVsdCBnZXRUeXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LXR5cGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/get-type.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/get-wrap-behavior.js": /*!**********************************************************!*\ !*** ./node_modules/@antv/util/esm/get-wrap-behavior.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 获取封装的事件\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction getWrapBehavior(obj, action) {\n return obj['_wrap_' + action];\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (getWrapBehavior);\n//# sourceMappingURL=get-wrap-behavior.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZ2V0LXdyYXAtYmVoYXZpb3IuanM/NzA4MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxTQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsOEVBQWUsRUFBQztBQUMvQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9nZXQtd3JhcC1iZWhhdmlvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6I635Y+W5bCB6KOF55qE5LqL5Lu2XG4gKiBAcHJvdGVjdGVkXG4gKiBAcGFyYW0gIHtPYmplY3R9IG9iaiAgIOWvueixoVxuICogQHBhcmFtICB7U3RyaW5nfSBhY3Rpb24g5LqL5Lu25ZCN56ewXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gICAgICAgIOi/lOWbnuS6i+S7tuWkhOeQhuWHveaVsFxuICovXG5mdW5jdGlvbiBnZXRXcmFwQmVoYXZpb3Iob2JqLCBhY3Rpb24pIHtcbiAgICByZXR1cm4gb2JqWydfd3JhcF8nICsgYWN0aW9uXTtcbn1cbmV4cG9ydCBkZWZhdWx0IGdldFdyYXBCZWhhdmlvcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC13cmFwLWJlaGF2aW9yLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/get-wrap-behavior.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/get.js": /*!********************************************!*\ !*** ./node_modules/@antv/util/esm/get.js ***! \********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-string */ \"./node_modules/@antv/util/esm/is-string.js\");\n\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (obj, key, defaultValue) {\n var p = 0;\n var keyArr = Object(_is_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(key) ? key.split('.') : key;\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n return (obj === undefined || p < keyArr.length) ? defaultValue : obj;\n});\n//# sourceMappingURL=get.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZ2V0LmpzPzQzMTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZ0I7QUFDaEI7QUFDQSxpQkFBaUIsMERBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9nZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNTdHJpbmcgZnJvbSAnLi9pcy1zdHJpbmcnO1xuLyoqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZGV2ZWxvcGl0L2Rsdi9ibG9iL21hc3Rlci9pbmRleC5qc1xuICogQHBhcmFtIG9ialxuICogQHBhcmFtIGtleVxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZVxuICovXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKG9iaiwga2V5LCBkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIgcCA9IDA7XG4gICAgdmFyIGtleUFyciA9IGlzU3RyaW5nKGtleSkgPyBrZXkuc3BsaXQoJy4nKSA6IGtleTtcbiAgICB3aGlsZSAob2JqICYmIHAgPCBrZXlBcnIubGVuZ3RoKSB7XG4gICAgICAgIG9iaiA9IG9ialtrZXlBcnJbcCsrXV07XG4gICAgfVxuICAgIHJldHVybiAob2JqID09PSB1bmRlZmluZWQgfHwgcCA8IGtleUFyci5sZW5ndGgpID8gZGVmYXVsdFZhbHVlIDogb2JqO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/get.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/group-by.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/group-by.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction groupBy(data, condition) {\n if (!condition || !Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data)) {\n return {};\n }\n var result = {};\n // 兼容方法和 字符串的写法\n var predicate = Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(condition) ? condition : function (item) { return item[condition]; };\n var key;\n for (var i = 0; i < data.length; i++) {\n var item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n }\n else {\n result[key] = [item];\n }\n }\n return result;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (groupBy);\n//# sourceMappingURL=group-by.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZ3JvdXAtYnkuanM/ODY2ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDTTtBQUN2QztBQUNBO0FBQ0EsdUJBQXVCLHlEQUFPO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDREQUFVLDJDQUEyQyx3QkFBd0I7QUFDakc7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2dyb3VwLWJ5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiBncm91cEJ5KGRhdGEsIGNvbmRpdGlvbikge1xuICAgIGlmICghY29uZGl0aW9uIHx8ICFpc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIC8vIOWFvOWuueaWueazleWSjCDlrZfnrKbkuLLnmoTlhpnms5VcbiAgICB2YXIgcHJlZGljYXRlID0gaXNGdW5jdGlvbihjb25kaXRpb24pID8gY29uZGl0aW9uIDogZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW1bY29uZGl0aW9uXTsgfTtcbiAgICB2YXIga2V5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgaXRlbSA9IGRhdGFbaV07XG4gICAgICAgIGtleSA9IHByZWRpY2F0ZShpdGVtKTtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBbaXRlbV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBkZWZhdWx0IGdyb3VwQnk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncm91cC1ieS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/group-by.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/group-to-map.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/util/esm/group-to-map.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return groupToMap; });\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n/* harmony import */ var _group_by__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./group-by */ \"./node_modules/@antv/util/esm/group-by.js\");\n\n\n\n/**\n * 将数据分组成 map\n * @param data\n * @param condition\n */\nfunction groupToMap(data, condition) {\n if (!condition) {\n return {\n 0: data,\n };\n }\n if (!Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(condition)) {\n // 如果是字符串,则按照 a*b 风格成数组\n var paramscondition_1 = Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n condition = function (row) {\n var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n // 根据字段列表的值,拼接成 key\n for (var i = 0, l = paramscondition_1.length; i < l; i++) {\n unique += row[paramscondition_1[i]] && row[paramscondition_1[i]].toString();\n }\n return unique;\n };\n }\n return Object(_group_by__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(data, condition);\n}\n//# sourceMappingURL=group-to-map.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZ3JvdXAtdG8tbWFwLmpzP2JkZTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNNO0FBQ047QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsNERBQVU7QUFDbkI7QUFDQSxnQ0FBZ0MseURBQU87QUFDdkM7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQSx5REFBeUQsT0FBTztBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx5REFBTztBQUNsQjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2dyb3VwLXRvLW1hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXMtYXJyYXknO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnLi9pcy1mdW5jdGlvbic7XG5pbXBvcnQgZ3JvdXBCeSBmcm9tICcuL2dyb3VwLWJ5Jztcbi8qKlxuICog5bCG5pWw5o2u5YiG57uE5oiQIG1hcFxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSBjb25kaXRpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ3JvdXBUb01hcChkYXRhLCBjb25kaXRpb24pIHtcbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgMDogZGF0YSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKCFpc0Z1bmN0aW9uKGNvbmRpdGlvbikpIHtcbiAgICAgICAgLy8g5aaC5p6c5piv5a2X56ym5Liy77yM5YiZ5oyJ54WnIGEqYiDpo47moLzmiJDmlbDnu4RcbiAgICAgICAgdmFyIHBhcmFtc2NvbmRpdGlvbl8xID0gaXNBcnJheShjb25kaXRpb24pID8gY29uZGl0aW9uIDogY29uZGl0aW9uLnJlcGxhY2UoL1xccysvZywgJycpLnNwbGl0KCcqJyk7XG4gICAgICAgIGNvbmRpdGlvbiA9IGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgICAgIHZhciB1bmlxdWUgPSAnXyc7IC8vIOmBv+WFjeWHuueOsOaVsOWtl+S9nOS4uktleeeahOaDheWGte+8jOS8mui/m+ihjOaMieeFp+aVsOWtl+eahOaOkuW6j1xuICAgICAgICAgICAgLy8g5qC55o2u5a2X5q615YiX6KGo55qE5YC877yM5ou85o6l5oiQIGtleVxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJhbXNjb25kaXRpb25fMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICB1bmlxdWUgKz0gcm93W3BhcmFtc2NvbmRpdGlvbl8xW2ldXSAmJiByb3dbcGFyYW1zY29uZGl0aW9uXzFbaV1dLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdW5pcXVlO1xuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gZ3JvdXBCeShkYXRhLCBjb25kaXRpb24pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z3JvdXAtdG8tbWFwLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/group-to-map.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/group.js": /*!**********************************************!*\ !*** ./node_modules/@antv/util/esm/group.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _group_to_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./group-to-map */ \"./node_modules/@antv/util/esm/group-to-map.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (data, condition) {\n if (!condition) {\n // 没有条件,则自身改成数组\n return [data];\n }\n var groups = Object(_group_to_map__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data, condition);\n var array = [];\n for (var i in groups) {\n array.push(groups[i]);\n }\n return array;\n});\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vZ3JvdXAuanM/NjQyMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXdDO0FBQ3hCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDZEQUFVO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9ncm91cC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBncm91cFRvTWFwIGZyb20gJy4vZ3JvdXAtdG8tbWFwJztcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoZGF0YSwgY29uZGl0aW9uKSB7XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgLy8g5rKh5pyJ5p2h5Lu277yM5YiZ6Ieq6Lqr5pS55oiQ5pWw57uEXG4gICAgICAgIHJldHVybiBbZGF0YV07XG4gICAgfVxuICAgIHZhciBncm91cHMgPSBncm91cFRvTWFwKGRhdGEsIGNvbmRpdGlvbik7XG4gICAgdmFyIGFycmF5ID0gW107XG4gICAgZm9yICh2YXIgaSBpbiBncm91cHMpIHtcbiAgICAgICAgYXJyYXkucHVzaChncm91cHNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdyb3VwLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/group.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/has-key.js": /*!************************************************!*\ !*** ./node_modules/@antv/util/esm/has-key.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _has__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./has */ \"./node_modules/@antv/util/esm/has.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_has__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n//# sourceMappingURL=has-key.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaGFzLWtleS5qcz9lMTZkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBd0I7QUFDVCwyR0FBRyxFQUFDO0FBQ25CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2hhcy1rZXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaGFzIGZyb20gJy4vaGFzJztcbmV4cG9ydCBkZWZhdWx0IGhhcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhhcy1rZXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/has-key.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/has-value.js": /*!**************************************************!*\ !*** ./node_modules/@antv/util/esm/has-value.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contains__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contains */ \"./node_modules/@antv/util/esm/contains.js\");\n/* harmony import */ var _values__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./values */ \"./node_modules/@antv/util/esm/values.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (obj, value) { return Object(_contains__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(_values__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(obj), value); });\n//# sourceMappingURL=has-value.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaGFzLXZhbHVlLmpzPzJhYWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0o7QUFDZCxzRkFBdUIsUUFBUSx5REFBUSxDQUFDLHVEQUFNLGNBQWMsRUFBRSxFQUFFO0FBQ2hGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2hhcy12YWx1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb250YWlucyBmcm9tICcuL2NvbnRhaW5zJztcbmltcG9ydCB2YWx1ZXMgZnJvbSAnLi92YWx1ZXMnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChvYmosIHZhbHVlKSB7IHJldHVybiBjb250YWlucyh2YWx1ZXMob2JqKSwgdmFsdWUpOyB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhhcy12YWx1ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/has-value.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/has.js": /*!********************************************!*\ !*** ./node_modules/@antv/util/esm/has.js ***! \********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (obj, key) { return obj.hasOwnProperty(key); });\n//# sourceMappingURL=has.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaGFzLmpzPzQ2OTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZ0Isb0ZBQXFCLGdDQUFnQyxFQUFFLEVBQUU7QUFDekUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaGFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChvYmosIGtleSkgeyByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KGtleSk7IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGFzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/has.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/head.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/head.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return head; });\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n\nfunction head(o) {\n if (Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(o)) {\n return o[0];\n }\n return undefined;\n}\n//# sourceMappingURL=head.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaGVhZC5qcz9lNTFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUEwQztBQUMzQjtBQUNmLFFBQVEsOERBQVc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9oZWFkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXMtYXJyYXktbGlrZSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoZWFkKG8pIHtcbiAgICBpZiAoaXNBcnJheUxpa2UobykpIHtcbiAgICAgICAgcmV0dXJuIG9bMF07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWFkLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/head.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/identity.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/identity.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (v) { return v; });\n//# sourceMappingURL=identity.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaWRlbnRpdHkuanM/MjlkNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFnQiw2RUFBYyxVQUFVLEVBQUUsRUFBRTtBQUM1QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pZGVudGl0eS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAodikgeyByZXR1cm4gdjsgfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pZGVudGl0eS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/identity.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/index-of.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/index-of.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n\nvar indexOf = function (arr, obj) {\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return -1;\n }\n var m = Array.prototype.indexOf;\n if (m) {\n return m.call(arr, obj);\n }\n var index = -1;\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n return index;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (indexOf);\n//# sourceMappingURL=index-of.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaW5kZXgtb2YuanM/N2FiYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQTBDO0FBQzFDO0FBQ0EsU0FBUyw4REFBVztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2luZGV4LW9mLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXMtYXJyYXktbGlrZSc7XG52YXIgaW5kZXhPZiA9IGZ1bmN0aW9uIChhcnIsIG9iaikge1xuICAgIGlmICghaXNBcnJheUxpa2UoYXJyKSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIHZhciBtID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2Y7XG4gICAgaWYgKG0pIHtcbiAgICAgICAgcmV0dXJuIG0uY2FsbChhcnIsIG9iaik7XG4gICAgfVxuICAgIHZhciBpbmRleCA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJbaV0gPT09IG9iaikge1xuICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGluZGV4O1xufTtcbmV4cG9ydCBkZWZhdWx0IGluZGV4T2Y7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC1vZi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/index-of.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/index.js": /*!**********************************************!*\ !*** ./node_modules/@antv/util/esm/index.js ***! \**********************************************/ /*! exports provided: contains, includes, difference, find, findIndex, firstValue, flatten, flattenDeep, getRange, pull, pullAt, reduce, remove, sortBy, union, uniq, valuesOfKey, head, last, startsWith, endsWith, filter, every, some, group, groupBy, groupToMap, getWrapBehavior, wrapBehavior, number2color, parseRadius, clamp, fixedBase, isDecimal, isEven, isInteger, isNegative, isNumberEqual, isOdd, isPositive, max, maxBy, min, minBy, mod, toDegree, toInteger, toRadian, forIn, has, hasKey, hasValue, keys, isMatch, values, lowerCase, lowerFirst, substitute, upperCase, upperFirst, getType, isArguments, isArray, isArrayLike, isBoolean, isDate, isError, isFunction, isFinite, isNil, isNull, isNumber, isObject, isObjectLike, isPlainObject, isPrototype, isRegExp, isString, isType, isUndefined, isElement, requestAnimationFrame, clearAnimationFrame, augment, clone, debounce, memoize, deepMix, each, extend, indexOf, isEmpty, isEqual, isEqualWith, map, mapValues, mix, assign, get, set, pick, omit, throttle, toArray, toString, uniqueId, noop, identity, size, measureTextWidth, getEllipsisText, Cache */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contains__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contains */ \"./node_modules/@antv/util/esm/contains.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return _contains__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"includes\", function() { return _contains__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _difference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./difference */ \"./node_modules/@antv/util/esm/difference.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"difference\", function() { return _difference__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./find */ \"./node_modules/@antv/util/esm/find.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"find\", function() { return _find__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _find_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./find-index */ \"./node_modules/@antv/util/esm/find-index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findIndex\", function() { return _find_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _first_value__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./first-value */ \"./node_modules/@antv/util/esm/first-value.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"firstValue\", function() { return _first_value__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _flatten__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./flatten */ \"./node_modules/@antv/util/esm/flatten.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"flatten\", function() { return _flatten__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _flatten_deep__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./flatten-deep */ \"./node_modules/@antv/util/esm/flatten-deep.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"flattenDeep\", function() { return _flatten_deep__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _get_range__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./get-range */ \"./node_modules/@antv/util/esm/get-range.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getRange\", function() { return _get_range__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _pull__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pull */ \"./node_modules/@antv/util/esm/pull.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pull\", function() { return _pull__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _pull_at__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./pull-at */ \"./node_modules/@antv/util/esm/pull-at.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pullAt\", function() { return _pull_at__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./reduce */ \"./node_modules/@antv/util/esm/reduce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return _reduce__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _remove__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./remove */ \"./node_modules/@antv/util/esm/remove.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"remove\", function() { return _remove__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _sort_by__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./sort-by */ \"./node_modules/@antv/util/esm/sort-by.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sortBy\", function() { return _sort_by__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _union__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./union */ \"./node_modules/@antv/util/esm/union.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"union\", function() { return _union__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _uniq__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./uniq */ \"./node_modules/@antv/util/esm/uniq.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return _uniq__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _values_of_key__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./values-of-key */ \"./node_modules/@antv/util/esm/values-of-key.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"valuesOfKey\", function() { return _values_of_key__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _head__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./head */ \"./node_modules/@antv/util/esm/head.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"head\", function() { return _head__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _last__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./last */ \"./node_modules/@antv/util/esm/last.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"last\", function() { return _last__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _starts_with__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./starts-with */ \"./node_modules/@antv/util/esm/starts-with.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"startsWith\", function() { return _starts_with__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _ends_with__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./ends-with */ \"./node_modules/@antv/util/esm/ends-with.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"endsWith\", function() { return _ends_with__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./filter */ \"./node_modules/@antv/util/esm/filter.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return _filter__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _every__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./every */ \"./node_modules/@antv/util/esm/every.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return _every__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _some__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./some */ \"./node_modules/@antv/util/esm/some.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return _some__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./group */ \"./node_modules/@antv/util/esm/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"group\", function() { return _group__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _group_by__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./group-by */ \"./node_modules/@antv/util/esm/group-by.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return _group_by__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _group_to_map__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./group-to-map */ \"./node_modules/@antv/util/esm/group-to-map.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"groupToMap\", function() { return _group_to_map__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _get_wrap_behavior__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./get-wrap-behavior */ \"./node_modules/@antv/util/esm/get-wrap-behavior.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getWrapBehavior\", function() { return _get_wrap_behavior__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _wrap_behavior__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./wrap-behavior */ \"./node_modules/@antv/util/esm/wrap-behavior.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"wrapBehavior\", function() { return _wrap_behavior__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _number2color__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./number2color */ \"./node_modules/@antv/util/esm/number2color.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"number2color\", function() { return _number2color__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _parse_radius__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./parse-radius */ \"./node_modules/@antv/util/esm/parse-radius.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return _parse_radius__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony import */ var _clamp__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./clamp */ \"./node_modules/@antv/util/esm/clamp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clamp\", function() { return _clamp__WEBPACK_IMPORTED_MODULE_30__[\"default\"]; });\n\n/* harmony import */ var _fixed_base__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./fixed-base */ \"./node_modules/@antv/util/esm/fixed-base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fixedBase\", function() { return _fixed_base__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _is_decimal__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./is-decimal */ \"./node_modules/@antv/util/esm/is-decimal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDecimal\", function() { return _is_decimal__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _is_even__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./is-even */ \"./node_modules/@antv/util/esm/is-even.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEven\", function() { return _is_even__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _is_integer__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./is-integer */ \"./node_modules/@antv/util/esm/is-integer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInteger\", function() { return _is_integer__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _is_negative__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./is-negative */ \"./node_modules/@antv/util/esm/is-negative.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNegative\", function() { return _is_negative__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _is_number_equal__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./is-number-equal */ \"./node_modules/@antv/util/esm/is-number-equal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return _is_number_equal__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _is_odd__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./is-odd */ \"./node_modules/@antv/util/esm/is-odd.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isOdd\", function() { return _is_odd__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _is_positive__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./is-positive */ \"./node_modules/@antv/util/esm/is-positive.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPositive\", function() { return _is_positive__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _max__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./max */ \"./node_modules/@antv/util/esm/max.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return _max__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _max_by__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./max-by */ \"./node_modules/@antv/util/esm/max-by.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"maxBy\", function() { return _max_by__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _min__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./min */ \"./node_modules/@antv/util/esm/min.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return _min__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _min_by__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./min-by */ \"./node_modules/@antv/util/esm/min-by.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"minBy\", function() { return _min_by__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _mod__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./mod */ \"./node_modules/@antv/util/esm/mod.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mod\", function() { return _mod__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n/* harmony import */ var _to_degree__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./to-degree */ \"./node_modules/@antv/util/esm/to-degree.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toDegree\", function() { return _to_degree__WEBPACK_IMPORTED_MODULE_44__[\"default\"]; });\n\n/* harmony import */ var _to_integer__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./to-integer */ \"./node_modules/@antv/util/esm/to-integer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toInteger\", function() { return _to_integer__WEBPACK_IMPORTED_MODULE_45__[\"default\"]; });\n\n/* harmony import */ var _to_radian__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./to-radian */ \"./node_modules/@antv/util/esm/to-radian.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRadian\", function() { return _to_radian__WEBPACK_IMPORTED_MODULE_46__[\"default\"]; });\n\n/* harmony import */ var _for_in__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./for-in */ \"./node_modules/@antv/util/esm/for-in.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forIn\", function() { return _for_in__WEBPACK_IMPORTED_MODULE_47__[\"default\"]; });\n\n/* harmony import */ var _has__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./has */ \"./node_modules/@antv/util/esm/has.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"has\", function() { return _has__WEBPACK_IMPORTED_MODULE_48__[\"default\"]; });\n\n/* harmony import */ var _has_key__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./has-key */ \"./node_modules/@antv/util/esm/has-key.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hasKey\", function() { return _has_key__WEBPACK_IMPORTED_MODULE_49__[\"default\"]; });\n\n/* harmony import */ var _has_value__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./has-value */ \"./node_modules/@antv/util/esm/has-value.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hasValue\", function() { return _has_value__WEBPACK_IMPORTED_MODULE_50__[\"default\"]; });\n\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./keys */ \"./node_modules/@antv/util/esm/keys.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return _keys__WEBPACK_IMPORTED_MODULE_51__[\"default\"]; });\n\n/* harmony import */ var _is_match__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./is-match */ \"./node_modules/@antv/util/esm/is-match.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isMatch\", function() { return _is_match__WEBPACK_IMPORTED_MODULE_52__[\"default\"]; });\n\n/* harmony import */ var _values__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./values */ \"./node_modules/@antv/util/esm/values.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return _values__WEBPACK_IMPORTED_MODULE_53__[\"default\"]; });\n\n/* harmony import */ var _lower_case__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./lower-case */ \"./node_modules/@antv/util/esm/lower-case.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lowerCase\", function() { return _lower_case__WEBPACK_IMPORTED_MODULE_54__[\"default\"]; });\n\n/* harmony import */ var _lower_first__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./lower-first */ \"./node_modules/@antv/util/esm/lower-first.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lowerFirst\", function() { return _lower_first__WEBPACK_IMPORTED_MODULE_55__[\"default\"]; });\n\n/* harmony import */ var _substitute__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./substitute */ \"./node_modules/@antv/util/esm/substitute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"substitute\", function() { return _substitute__WEBPACK_IMPORTED_MODULE_56__[\"default\"]; });\n\n/* harmony import */ var _upper_case__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./upper-case */ \"./node_modules/@antv/util/esm/upper-case.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upperCase\", function() { return _upper_case__WEBPACK_IMPORTED_MODULE_57__[\"default\"]; });\n\n/* harmony import */ var _upper_first__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./upper-first */ \"./node_modules/@antv/util/esm/upper-first.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upperFirst\", function() { return _upper_first__WEBPACK_IMPORTED_MODULE_58__[\"default\"]; });\n\n/* harmony import */ var _get_type__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./get-type */ \"./node_modules/@antv/util/esm/get-type.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getType\", function() { return _get_type__WEBPACK_IMPORTED_MODULE_59__[\"default\"]; });\n\n/* harmony import */ var _is_arguments__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./is-arguments */ \"./node_modules/@antv/util/esm/is-arguments.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArguments\", function() { return _is_arguments__WEBPACK_IMPORTED_MODULE_60__[\"default\"]; });\n\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _is_array__WEBPACK_IMPORTED_MODULE_61__[\"default\"]; });\n\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArrayLike\", function() { return _is_array_like__WEBPACK_IMPORTED_MODULE_62__[\"default\"]; });\n\n/* harmony import */ var _is_boolean__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./is-boolean */ \"./node_modules/@antv/util/esm/is-boolean.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return _is_boolean__WEBPACK_IMPORTED_MODULE_63__[\"default\"]; });\n\n/* harmony import */ var _is_date__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./is-date */ \"./node_modules/@antv/util/esm/is-date.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return _is_date__WEBPACK_IMPORTED_MODULE_64__[\"default\"]; });\n\n/* harmony import */ var _is_error__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./is-error */ \"./node_modules/@antv/util/esm/is-error.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isError\", function() { return _is_error__WEBPACK_IMPORTED_MODULE_65__[\"default\"]; });\n\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _is_function__WEBPACK_IMPORTED_MODULE_66__[\"default\"]; });\n\n/* harmony import */ var _is_finite__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./is-finite */ \"./node_modules/@antv/util/esm/is-finite.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFinite\", function() { return _is_finite__WEBPACK_IMPORTED_MODULE_67__[\"default\"]; });\n\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/@antv/util/esm/is-nil.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return _is_nil__WEBPACK_IMPORTED_MODULE_68__[\"default\"]; });\n\n/* harmony import */ var _is_null__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./is-null */ \"./node_modules/@antv/util/esm/is-null.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNull\", function() { return _is_null__WEBPACK_IMPORTED_MODULE_69__[\"default\"]; });\n\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/util/esm/is-number.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return _is_number__WEBPACK_IMPORTED_MODULE_70__[\"default\"]; });\n\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./is-object */ \"./node_modules/@antv/util/esm/is-object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return _is_object__WEBPACK_IMPORTED_MODULE_71__[\"default\"]; });\n\n/* harmony import */ var _is_object_like__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./is-object-like */ \"./node_modules/@antv/util/esm/is-object-like.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObjectLike\", function() { return _is_object_like__WEBPACK_IMPORTED_MODULE_72__[\"default\"]; });\n\n/* harmony import */ var _is_plain_object__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./is-plain-object */ \"./node_modules/@antv/util/esm/is-plain-object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPlainObject\", function() { return _is_plain_object__WEBPACK_IMPORTED_MODULE_73__[\"default\"]; });\n\n/* harmony import */ var _is_prototype__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./is-prototype */ \"./node_modules/@antv/util/esm/is-prototype.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPrototype\", function() { return _is_prototype__WEBPACK_IMPORTED_MODULE_74__[\"default\"]; });\n\n/* harmony import */ var _is_reg_exp__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./is-reg-exp */ \"./node_modules/@antv/util/esm/is-reg-exp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return _is_reg_exp__WEBPACK_IMPORTED_MODULE_75__[\"default\"]; });\n\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./is-string */ \"./node_modules/@antv/util/esm/is-string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _is_string__WEBPACK_IMPORTED_MODULE_76__[\"default\"]; });\n\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/util/esm/is-type.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isType\", function() { return _is_type__WEBPACK_IMPORTED_MODULE_77__[\"default\"]; });\n\n/* harmony import */ var _is_undefined__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./is-undefined */ \"./node_modules/@antv/util/esm/is-undefined.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isUndefined\", function() { return _is_undefined__WEBPACK_IMPORTED_MODULE_78__[\"default\"]; });\n\n/* harmony import */ var _is_element__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./is-element */ \"./node_modules/@antv/util/esm/is-element.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isElement\", function() { return _is_element__WEBPACK_IMPORTED_MODULE_79__[\"default\"]; });\n\n/* harmony import */ var _request_animation_frame__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./request-animation-frame */ \"./node_modules/@antv/util/esm/request-animation-frame.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _request_animation_frame__WEBPACK_IMPORTED_MODULE_80__[\"default\"]; });\n\n/* harmony import */ var _clear_animation_frame__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./clear-animation-frame */ \"./node_modules/@antv/util/esm/clear-animation-frame.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clearAnimationFrame\", function() { return _clear_animation_frame__WEBPACK_IMPORTED_MODULE_81__[\"default\"]; });\n\n/* harmony import */ var _augment__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./augment */ \"./node_modules/@antv/util/esm/augment.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"augment\", function() { return _augment__WEBPACK_IMPORTED_MODULE_82__[\"default\"]; });\n\n/* harmony import */ var _clone__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./clone */ \"./node_modules/@antv/util/esm/clone.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return _clone__WEBPACK_IMPORTED_MODULE_83__[\"default\"]; });\n\n/* harmony import */ var _debounce__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./debounce */ \"./node_modules/@antv/util/esm/debounce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return _debounce__WEBPACK_IMPORTED_MODULE_84__[\"default\"]; });\n\n/* harmony import */ var _memoize__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./memoize */ \"./node_modules/@antv/util/esm/memoize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"memoize\", function() { return _memoize__WEBPACK_IMPORTED_MODULE_85__[\"default\"]; });\n\n/* harmony import */ var _deep_mix__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./deep-mix */ \"./node_modules/@antv/util/esm/deep-mix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"deepMix\", function() { return _deep_mix__WEBPACK_IMPORTED_MODULE_86__[\"default\"]; });\n\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./each */ \"./node_modules/@antv/util/esm/each.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return _each__WEBPACK_IMPORTED_MODULE_87__[\"default\"]; });\n\n/* harmony import */ var _extend__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./extend */ \"./node_modules/@antv/util/esm/extend.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return _extend__WEBPACK_IMPORTED_MODULE_88__[\"default\"]; });\n\n/* harmony import */ var _index_of__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./index-of */ \"./node_modules/@antv/util/esm/index-of.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"indexOf\", function() { return _index_of__WEBPACK_IMPORTED_MODULE_89__[\"default\"]; });\n\n/* harmony import */ var _is_empty__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./is-empty */ \"./node_modules/@antv/util/esm/is-empty.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return _is_empty__WEBPACK_IMPORTED_MODULE_90__[\"default\"]; });\n\n/* harmony import */ var _is_equal__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ./is-equal */ \"./node_modules/@antv/util/esm/is-equal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return _is_equal__WEBPACK_IMPORTED_MODULE_91__[\"default\"]; });\n\n/* harmony import */ var _is_equal_with__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ./is-equal-with */ \"./node_modules/@antv/util/esm/is-equal-with.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEqualWith\", function() { return _is_equal_with__WEBPACK_IMPORTED_MODULE_92__[\"default\"]; });\n\n/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ./map */ \"./node_modules/@antv/util/esm/map.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return _map__WEBPACK_IMPORTED_MODULE_93__[\"default\"]; });\n\n/* harmony import */ var _map_values__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ./map-values */ \"./node_modules/@antv/util/esm/map-values.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mapValues\", function() { return _map_values__WEBPACK_IMPORTED_MODULE_94__[\"default\"]; });\n\n/* harmony import */ var _mix__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ./mix */ \"./node_modules/@antv/util/esm/mix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mix\", function() { return _mix__WEBPACK_IMPORTED_MODULE_95__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return _mix__WEBPACK_IMPORTED_MODULE_95__[\"default\"]; });\n\n/* harmony import */ var _get__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ./get */ \"./node_modules/@antv/util/esm/get.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return _get__WEBPACK_IMPORTED_MODULE_96__[\"default\"]; });\n\n/* harmony import */ var _set__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ./set */ \"./node_modules/@antv/util/esm/set.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return _set__WEBPACK_IMPORTED_MODULE_97__[\"default\"]; });\n\n/* harmony import */ var _pick__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ./pick */ \"./node_modules/@antv/util/esm/pick.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return _pick__WEBPACK_IMPORTED_MODULE_98__[\"default\"]; });\n\n/* harmony import */ var _omit__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ./omit */ \"./node_modules/@antv/util/esm/omit.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"omit\", function() { return _omit__WEBPACK_IMPORTED_MODULE_99__[\"default\"]; });\n\n/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ./throttle */ \"./node_modules/@antv/util/esm/throttle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return _throttle__WEBPACK_IMPORTED_MODULE_100__[\"default\"]; });\n\n/* harmony import */ var _to_array__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ./to-array */ \"./node_modules/@antv/util/esm/to-array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toArray\", function() { return _to_array__WEBPACK_IMPORTED_MODULE_101__[\"default\"]; });\n\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ./to-string */ \"./node_modules/@antv/util/esm/to-string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return _to_string__WEBPACK_IMPORTED_MODULE_102__[\"default\"]; });\n\n/* harmony import */ var _unique_id__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ./unique-id */ \"./node_modules/@antv/util/esm/unique-id.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return _unique_id__WEBPACK_IMPORTED_MODULE_103__[\"default\"]; });\n\n/* harmony import */ var _noop__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ./noop */ \"./node_modules/@antv/util/esm/noop.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return _noop__WEBPACK_IMPORTED_MODULE_104__[\"default\"]; });\n\n/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ./identity */ \"./node_modules/@antv/util/esm/identity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return _identity__WEBPACK_IMPORTED_MODULE_105__[\"default\"]; });\n\n/* harmony import */ var _size__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ./size */ \"./node_modules/@antv/util/esm/size.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"size\", function() { return _size__WEBPACK_IMPORTED_MODULE_106__[\"default\"]; });\n\n/* harmony import */ var _measure_text_width__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ./measure-text-width */ \"./node_modules/@antv/util/esm/measure-text-width.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"measureTextWidth\", function() { return _measure_text_width__WEBPACK_IMPORTED_MODULE_107__[\"default\"]; });\n\n/* harmony import */ var _get_ellipsis_text__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ./get-ellipsis-text */ \"./node_modules/@antv/util/esm/get-ellipsis-text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEllipsisText\", function() { return _get_ellipsis_text__WEBPACK_IMPORTED_MODULE_108__[\"default\"]; });\n\n/* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ./cache */ \"./node_modules/@antv/util/esm/cache.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Cache\", function() { return _cache__WEBPACK_IMPORTED_MODULE_109__[\"default\"]; });\n\n// array\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// event\n\n\n// format\n\n\n// math\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// object\n\n\n\n\n\n\n\n// string\n\n\n\n\n\n// type\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// other\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// text\n\n\n// 不知道为什么,需要把这个 export,不然 ts 会报类型错误\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaW5kZXguanM/ODkzNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDc0U7QUFDakI7QUFDWjtBQUNXO0FBQ0U7QUFDUDtBQUNTO0FBQ047QUFDVDtBQUNLO0FBQ0Q7QUFDQTtBQUNDO0FBQ0g7QUFDRjtBQUNnQjtBQUNoQjtBQUNBO0FBQ2E7QUFDSjtBQUNMO0FBQ0Y7QUFDRjtBQUNFO0FBQ0s7QUFDTztBQUN2RDtBQUNpRTtBQUNQO0FBQzFEO0FBQ3lEO0FBQ0Q7QUFDeEQ7QUFDMkM7QUFDUztBQUNBO0FBQ047QUFDTTtBQUNFO0FBQ087QUFDakI7QUFDVTtBQUNmO0FBQ0s7QUFDTDtBQUNLO0FBQ0w7QUFDVztBQUNFO0FBQ0Y7QUFDbEQ7QUFDNEM7QUFDTDtBQUNPO0FBQ0k7QUFDVDtBQUNPO0FBQ0g7QUFDN0M7QUFDb0Q7QUFDRTtBQUNEO0FBQ0Q7QUFDRTtBQUN0RDtBQUNnRDtBQUNRO0FBQ1I7QUFDUztBQUNMO0FBQ047QUFDRTtBQUNNO0FBQ0o7QUFDTjtBQUNFO0FBQ0k7QUFDQTtBQUNTO0FBQ0U7QUFDTDtBQUNMO0FBQ0Q7QUFDSjtBQUNVO0FBQ0o7QUFDeUI7QUFDSjtBQUN6RTtBQUMrQztBQUNKO0FBQ007QUFDRjtBQUNDO0FBQ1A7QUFDSTtBQUNHO0FBQ0E7QUFDQTtBQUNTO0FBQ2xCO0FBQ2E7QUFDTTtBQUNuQjtBQUNBO0FBQ0U7QUFDQTtBQUNRO0FBQ0Q7QUFDRTtBQUNBO0FBQ1Q7QUFDUTtBQUNSO0FBQ3pDO0FBQ21FO0FBQ0Y7QUFDakU7QUFDMkM7QUFDM0MiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhcnJheVxuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb250YWlucywgZGVmYXVsdCBhcyBpbmNsdWRlcyB9IGZyb20gJy4vY29udGFpbnMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaWZmZXJlbmNlIH0gZnJvbSAnLi9kaWZmZXJlbmNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmluZCB9IGZyb20gJy4vZmluZCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZpbmRJbmRleCB9IGZyb20gJy4vZmluZC1pbmRleCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZpcnN0VmFsdWUgfSBmcm9tICcuL2ZpcnN0LXZhbHVlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmxhdHRlbiB9IGZyb20gJy4vZmxhdHRlbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZsYXR0ZW5EZWVwIH0gZnJvbSAnLi9mbGF0dGVuLWRlZXAnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRSYW5nZSB9IGZyb20gJy4vZ2V0LXJhbmdlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHVsbCB9IGZyb20gJy4vcHVsbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHB1bGxBdCB9IGZyb20gJy4vcHVsbC1hdCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlZHVjZSB9IGZyb20gJy4vcmVkdWNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVtb3ZlIH0gZnJvbSAnLi9yZW1vdmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzb3J0QnkgfSBmcm9tICcuL3NvcnQtYnknO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1bmlvbiB9IGZyb20gJy4vdW5pb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1bmlxIH0gZnJvbSAnLi91bmlxJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmFsdWVzT2ZLZXkgfSBmcm9tICcuL3ZhbHVlcy1vZi1rZXknO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoZWFkIH0gZnJvbSAnLi9oZWFkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGFzdCB9IGZyb20gJy4vbGFzdCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0c1dpdGggfSBmcm9tICcuL3N0YXJ0cy13aXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZW5kc1dpdGggfSBmcm9tICcuL2VuZHMtd2l0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZpbHRlciB9IGZyb20gJy4vZmlsdGVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZXZlcnkgfSBmcm9tICcuL2V2ZXJ5JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc29tZSB9IGZyb20gJy4vc29tZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdyb3VwIH0gZnJvbSAnLi9ncm91cCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdyb3VwQnkgfSBmcm9tICcuL2dyb3VwLWJ5JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ3JvdXBUb01hcCB9IGZyb20gJy4vZ3JvdXAtdG8tbWFwJztcbi8vIGV2ZW50XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFdyYXBCZWhhdmlvciB9IGZyb20gJy4vZ2V0LXdyYXAtYmVoYXZpb3InO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB3cmFwQmVoYXZpb3IgfSBmcm9tICcuL3dyYXAtYmVoYXZpb3InO1xuLy8gZm9ybWF0XG5leHBvcnQgeyBkZWZhdWx0IGFzIG51bWJlcjJjb2xvciB9IGZyb20gJy4vbnVtYmVyMmNvbG9yJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFyc2VSYWRpdXMgfSBmcm9tICcuL3BhcnNlLXJhZGl1cyc7XG4vLyBtYXRoXG5leHBvcnQgeyBkZWZhdWx0IGFzIGNsYW1wIH0gZnJvbSAnLi9jbGFtcCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZpeGVkQmFzZSB9IGZyb20gJy4vZml4ZWQtYmFzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRGVjaW1hbCB9IGZyb20gJy4vaXMtZGVjaW1hbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRXZlbiB9IGZyb20gJy4vaXMtZXZlbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzSW50ZWdlciB9IGZyb20gJy4vaXMtaW50ZWdlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTmVnYXRpdmUgfSBmcm9tICcuL2lzLW5lZ2F0aXZlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNOdW1iZXJFcXVhbCB9IGZyb20gJy4vaXMtbnVtYmVyLWVxdWFsJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNPZGQgfSBmcm9tICcuL2lzLW9kZCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzUG9zaXRpdmUgfSBmcm9tICcuL2lzLXBvc2l0aXZlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWF4IH0gZnJvbSAnLi9tYXgnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYXhCeSB9IGZyb20gJy4vbWF4LWJ5JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWluIH0gZnJvbSAnLi9taW4nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaW5CeSB9IGZyb20gJy4vbWluLWJ5JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbW9kIH0gZnJvbSAnLi9tb2QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b0RlZ3JlZSB9IGZyb20gJy4vdG8tZGVncmVlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdG9JbnRlZ2VyIH0gZnJvbSAnLi90by1pbnRlZ2VyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdG9SYWRpYW4gfSBmcm9tICcuL3RvLXJhZGlhbic7XG4vLyBvYmplY3RcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9ySW4gfSBmcm9tICcuL2Zvci1pbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhhcyB9IGZyb20gJy4vaGFzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaGFzS2V5IH0gZnJvbSAnLi9oYXMta2V5JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaGFzVmFsdWUgfSBmcm9tICcuL2hhcy12YWx1ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGtleXMgfSBmcm9tICcuL2tleXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc01hdGNoIH0gZnJvbSAnLi9pcy1tYXRjaCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHZhbHVlcyB9IGZyb20gJy4vdmFsdWVzJztcbi8vIHN0cmluZ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsb3dlckNhc2UgfSBmcm9tICcuL2xvd2VyLWNhc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsb3dlckZpcnN0IH0gZnJvbSAnLi9sb3dlci1maXJzdCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YnN0aXR1dGUgfSBmcm9tICcuL3N1YnN0aXR1dGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1cHBlckNhc2UgfSBmcm9tICcuL3VwcGVyLWNhc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1cHBlckZpcnN0IH0gZnJvbSAnLi91cHBlci1maXJzdCc7XG4vLyB0eXBlXG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFR5cGUgfSBmcm9tICcuL2dldC10eXBlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNBcmd1bWVudHMgfSBmcm9tICcuL2lzLWFyZ3VtZW50cyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzQXJyYXkgfSBmcm9tICcuL2lzLWFycmF5JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNBcnJheUxpa2UgfSBmcm9tICcuL2lzLWFycmF5LWxpa2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0Jvb2xlYW4gfSBmcm9tICcuL2lzLWJvb2xlYW4nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0RhdGUgfSBmcm9tICcuL2lzLWRhdGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0Vycm9yIH0gZnJvbSAnLi9pcy1lcnJvcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRnVuY3Rpb24gfSBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNGaW5pdGUgfSBmcm9tICcuL2lzLWZpbml0ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTmlsIH0gZnJvbSAnLi9pcy1uaWwnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc051bGwgfSBmcm9tICcuL2lzLW51bGwnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc051bWJlciB9IGZyb20gJy4vaXMtbnVtYmVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNPYmplY3QgfSBmcm9tICcuL2lzLW9iamVjdCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzT2JqZWN0TGlrZSB9IGZyb20gJy4vaXMtb2JqZWN0LWxpa2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1BsYWluT2JqZWN0IH0gZnJvbSAnLi9pcy1wbGFpbi1vYmplY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1Byb3RvdHlwZSB9IGZyb20gJy4vaXMtcHJvdG90eXBlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNSZWdFeHAgfSBmcm9tICcuL2lzLXJlZy1leHAnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1N0cmluZyB9IGZyb20gJy4vaXMtc3RyaW5nJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNUeXBlIH0gZnJvbSAnLi9pcy10eXBlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNVbmRlZmluZWQgfSBmcm9tICcuL2lzLXVuZGVmaW5lZCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRWxlbWVudCB9IGZyb20gJy4vaXMtZWxlbWVudCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlcXVlc3RBbmltYXRpb25GcmFtZSB9IGZyb20gJy4vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjbGVhckFuaW1hdGlvbkZyYW1lIH0gZnJvbSAnLi9jbGVhci1hbmltYXRpb24tZnJhbWUnO1xuLy8gb3RoZXJcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXVnbWVudCB9IGZyb20gJy4vYXVnbWVudCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNsb25lIH0gZnJvbSAnLi9jbG9uZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRlYm91bmNlIH0gZnJvbSAnLi9kZWJvdW5jZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1lbW9pemUgfSBmcm9tICcuL21lbW9pemUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkZWVwTWl4IH0gZnJvbSAnLi9kZWVwLW1peCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2ggfSBmcm9tICcuL2VhY2gnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBleHRlbmQgfSBmcm9tICcuL2V4dGVuZCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGluZGV4T2YgfSBmcm9tICcuL2luZGV4LW9mJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNFbXB0eSB9IGZyb20gJy4vaXMtZW1wdHknO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0VxdWFsIH0gZnJvbSAnLi9pcy1lcXVhbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRXF1YWxXaXRoIH0gZnJvbSAnLi9pcy1lcXVhbC13aXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWFwIH0gZnJvbSAnLi9tYXAnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYXBWYWx1ZXMgfSBmcm9tICcuL21hcC12YWx1ZXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaXgsIGRlZmF1bHQgYXMgYXNzaWduIH0gZnJvbSAnLi9taXgnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXQgfSBmcm9tICcuL2dldCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldCB9IGZyb20gJy4vc2V0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGljayB9IGZyb20gJy4vcGljayc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG9taXQgfSBmcm9tICcuL29taXQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0aHJvdHRsZSB9IGZyb20gJy4vdGhyb3R0bGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b0FycmF5IH0gZnJvbSAnLi90by1hcnJheSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRvU3RyaW5nIH0gZnJvbSAnLi90by1zdHJpbmcnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1bmlxdWVJZCB9IGZyb20gJy4vdW5pcXVlLWlkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbm9vcCB9IGZyb20gJy4vbm9vcCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlkZW50aXR5IH0gZnJvbSAnLi9pZGVudGl0eSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNpemUgfSBmcm9tICcuL3NpemUnO1xuLy8gdGV4dFxuZXhwb3J0IHsgZGVmYXVsdCBhcyBtZWFzdXJlVGV4dFdpZHRoIH0gZnJvbSAnLi9tZWFzdXJlLXRleHQtd2lkdGgnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRFbGxpcHNpc1RleHQgfSBmcm9tICcuL2dldC1lbGxpcHNpcy10ZXh0Jztcbi8vIOS4jeefpemBk+S4uuS7gOS5iO+8jOmcgOimgeaKiui/meS4qiBleHBvcnTvvIzkuI3nhLYgdHMg5Lya5oql57G75Z6L6ZSZ6K+vXG5leHBvcnQgeyBkZWZhdWx0IGFzIENhY2hlIH0gZnJvbSAnLi9jYWNoZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/index.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-arguments.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/util/esm/is-arguments.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/util/esm/is-type.js\");\n/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\nvar isArguments = function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Arguments');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isArguments);\n//# sourceMappingURL=is-arguments.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtYXJndW1lbnRzLmpzPzIwNTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDK0I7QUFDL0I7QUFDQSxXQUFXLHdEQUFNO0FBQ2pCO0FBQ2UsMEVBQVcsRUFBQztBQUMzQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1hcmd1bWVudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOaYr+WQpuaYr+WPguaVsOexu+Wei1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZSDmtYvor5XnmoTlgLxcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cbmltcG9ydCBpc1R5cGUgZnJvbSAnLi9pcy10eXBlJztcbnZhciBpc0FyZ3VtZW50cyA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBpc1R5cGUodmFsdWUsICdBcmd1bWVudHMnKTtcbn07XG5leHBvcnQgZGVmYXVsdCBpc0FyZ3VtZW50cztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLWFyZ3VtZW50cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-arguments.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-array-like.js": /*!******************************************************!*\ !*** ./node_modules/@antv/util/esm/is-array-like.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar isArrayLike = function (value) {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isArrayLike);\n//# sourceMappingURL=is-array-like.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtYXJyYXktbGlrZS5qcz9lN2NkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsMEVBQVcsRUFBQztBQUMzQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1hcnJheS1saWtlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzQXJyYXlMaWtlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLyoqXG4gICAgICogaXNBcnJheUxpa2UoWzEsIDIsIDNdKSA9PiB0cnVlXG4gICAgICogaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbikgPT4gdHJ1ZVxuICAgICAqIGlzQXJyYXlMaWtlKCdhYmMnKSA9PiB0cnVlXG4gICAgICogaXNBcnJheUxpa2UoRnVuY3Rpb24pID0+IGZhbHNlXG4gICAgICovXG4gICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJyAmJiBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzQXJyYXlMaWtlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtYXJyYXktbGlrZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-array-like.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-array.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/is-array.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/util/esm/is-type.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Array.isArray ?\n Array.isArray(value) :\n Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Array');\n});\n//# sourceMappingURL=is-array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtYXJyYXkuanM/MjdhMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQStCO0FBQ2Y7QUFDaEI7QUFDQTtBQUNBLFFBQVEsd0RBQU07QUFDZCxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1hcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc1R5cGUgZnJvbSAnLi9pcy10eXBlJztcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSA/XG4gICAgICAgIEFycmF5LmlzQXJyYXkodmFsdWUpIDpcbiAgICAgICAgaXNUeXBlKHZhbHVlLCAnQXJyYXknKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtYXJyYXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-array.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-boolean.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/is-boolean.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/util/esm/is-type.js\");\n/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\nvar isBoolean = function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Boolean');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isBoolean);\n//# sourceMappingURL=is-boolean.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtYm9vbGVhbi5qcz9mMjliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQytCO0FBQy9CO0FBQ0EsV0FBVyx3REFBTTtBQUNqQjtBQUNlLHdFQUFTLEVBQUM7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtYm9vbGVhbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5piv5ZCm5piv5biD5bCU57G75Z6LXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbHVlIOa1i+ivleeahOWAvFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzLXR5cGUnO1xudmFyIGlzQm9vbGVhbiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBpc1R5cGUodmFsdWUsICdCb29sZWFuJyk7XG59O1xuZXhwb3J0IGRlZmF1bHQgaXNCb29sZWFuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtYm9vbGVhbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-boolean.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-date.js": /*!************************************************!*\ !*** ./node_modules/@antv/util/esm/is-date.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/util/esm/is-type.js\");\n\nvar isDate = function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Date');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isDate);\n//# sourceMappingURL=is-date.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZGF0ZS5qcz9kY2MzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBK0I7QUFDL0I7QUFDQSxXQUFXLHdEQUFNO0FBQ2pCO0FBQ2UscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1kYXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzLXR5cGUnO1xudmFyIGlzRGF0ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBpc1R5cGUodmFsdWUsICdEYXRlJyk7XG59O1xuZXhwb3J0IGRlZmF1bHQgaXNEYXRlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtZGF0ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-date.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-decimal.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/is-decimal.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/util/esm/is-number.js\");\n\nvar isDecimal = function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num % 1 !== 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isDecimal);\n//# sourceMappingURL=is-decimal.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZGVjaW1hbC5qcz8xMTBlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBbUM7QUFDbkM7QUFDQSxXQUFXLDBEQUFRO0FBQ25CO0FBQ2Usd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1kZWNpbWFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzTnVtYmVyIGZyb20gJy4vaXMtbnVtYmVyJztcbnZhciBpc0RlY2ltYWwgPSBmdW5jdGlvbiAobnVtKSB7XG4gICAgcmV0dXJuIGlzTnVtYmVyKG51bSkgJiYgbnVtICUgMSAhPT0gMDtcbn07XG5leHBvcnQgZGVmYXVsdCBpc0RlY2ltYWw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1kZWNpbWFsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-decimal.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-element.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/is-element.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 判断是否HTML元素\n * @return {Boolean} 是否HTML元素\n */\nvar isElement = function (o) {\n return o instanceof Element || o instanceof HTMLDocument;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isElement);\n//# sourceMappingURL=is-element.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZWxlbWVudC5qcz9iMGViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBLFlBQVksUUFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNlLHdFQUFTLEVBQUM7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZWxlbWVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5Yik5pat5piv5ZCmSFRNTOWFg+e0oFxuICogQHJldHVybiB7Qm9vbGVhbn0g5piv5ZCmSFRNTOWFg+e0oFxuICovXG52YXIgaXNFbGVtZW50ID0gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgbyBpbnN0YW5jZW9mIEhUTUxEb2N1bWVudDtcbn07XG5leHBvcnQgZGVmYXVsdCBpc0VsZW1lbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1lbGVtZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-element.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-empty.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/is-empty.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/@antv/util/esm/is-nil.js\");\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n/* harmony import */ var _get_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./get-type */ \"./node_modules/@antv/util/esm/get-type.js\");\n/* harmony import */ var _is_prototype__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./is-prototype */ \"./node_modules/@antv/util/esm/is-prototype.js\");\n\n\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction isEmpty(value) {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n return true;\n }\n if (Object(_is_array_like__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n return !value.length;\n }\n var type = Object(_get_type__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (Object(_is_prototype__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(value)) {\n return !Object.keys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (isEmpty);\n//# sourceMappingURL=is-empty.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZW1wdHkuanM/Mzc5ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZCO0FBQ2E7QUFDVDtBQUNRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0EsUUFBUSx1REFBSztBQUNiO0FBQ0E7QUFDQSxRQUFRLDhEQUFXO0FBQ25CO0FBQ0E7QUFDQSxlQUFlLHlEQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNkRBQVc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1lbXB0eS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc05pbCBmcm9tICcuL2lzLW5pbCc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pcy1hcnJheS1saWtlJztcbmltcG9ydCBnZXRUeXBlIGZyb20gJy4vZ2V0LXR5cGUnO1xuaW1wb3J0IGlzUHJvdG90eXBlIGZyb20gJy4vaXMtcHJvdG90eXBlJztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gICAgLyoqXG4gICAgICogaXNFbXB0eShudWxsKSA9PiB0cnVlXG4gICAgICogaXNFbXB0eSgpID0+IHRydWVcbiAgICAgKiBpc0VtcHR5KHRydWUpID0+IHRydWVcbiAgICAgKiBpc0VtcHR5KDEpID0+IHRydWVcbiAgICAgKiBpc0VtcHR5KFsxLCAyLCAzXSkgPT4gZmFsc2VcbiAgICAgKiBpc0VtcHR5KCdhYmMnKSA9PiBmYWxzZVxuICAgICAqIGlzRW1wdHkoeyBhOiAxIH0pID0+IGZhbHNlXG4gICAgICovXG4gICAgaWYgKGlzTmlsKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDtcbiAgICB9XG4gICAgdmFyIHR5cGUgPSBnZXRUeXBlKHZhbHVlKTtcbiAgICBpZiAodHlwZSA9PT0gJ01hcCcgfHwgdHlwZSA9PT0gJ1NldCcpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICAgIH1cbiAgICBpZiAoaXNQcm90b3R5cGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAhT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aDtcbiAgICB9XG4gICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnQgZGVmYXVsdCBpc0VtcHR5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtZW1wdHkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-empty.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-equal-with.js": /*!******************************************************!*\ !*** ./node_modules/@antv/util/esm/is-equal-with.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n/* harmony import */ var _is_equal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-equal */ \"./node_modules/@antv/util/esm/is-equal.js\");\n\n\n/**\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [fn] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * isEqualWith(array, other, customizer); // => true\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value, other, fn) {\n if (!Object(_is_function__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(fn)) {\n return Object(_is_equal__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value, other);\n }\n return !!fn(value, other);\n});\n//# sourceMappingURL=is-equal-with.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZXF1YWwtd2l0aC5qcz8xOTA2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUF1QztBQUNOO0FBQ2pDO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDZ0I7QUFDaEIsU0FBUyw0REFBVTtBQUNuQixlQUFlLHlEQUFPO0FBQ3RCO0FBQ0E7QUFDQSxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1lcXVhbC13aXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnLi9pcy1mdW5jdGlvbic7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICcuL2lzLWVxdWFsJztcbi8qKlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gKiB9XG4gKlxuICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUpIHtcbiAqICAgaWYgKGlzR3JlZXRpbmcob2JqVmFsdWUpICYmIGlzR3JlZXRpbmcob3RoVmFsdWUpKSB7XG4gKiAgICAgcmV0dXJuIHRydWU7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YXIgYXJyYXkgPSBbJ2hlbGxvJywgJ2dvb2RieWUnXTtcbiAqIHZhciBvdGhlciA9IFsnaGknLCAnZ29vZGJ5ZSddO1xuICpcbiAqIGlzRXF1YWxXaXRoKGFycmF5LCBvdGhlciwgY3VzdG9taXplcik7ICAvLyA9PiB0cnVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAodmFsdWUsIG90aGVyLCBmbikge1xuICAgIGlmICghaXNGdW5jdGlvbihmbikpIHtcbiAgICAgICAgcmV0dXJuIGlzRXF1YWwodmFsdWUsIG90aGVyKTtcbiAgICB9XG4gICAgcmV0dXJuICEhZm4odmFsdWUsIG90aGVyKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtZXF1YWwtd2l0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-equal-with.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-equal.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/is-equal.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_object_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-object-like */ \"./node_modules/@antv/util/esm/is-object-like.js\");\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-string */ \"./node_modules/@antv/util/esm/is-string.js\");\n\n\n\nvar isEqual = function (value, other) {\n if (value === other) {\n return true;\n }\n if (!value || !other) {\n return false;\n }\n if (Object(_is_string__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value) || Object(_is_string__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(other)) {\n return false;\n }\n if (Object(_is_array_like__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) || Object(_is_array_like__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(other)) {\n if (value.length !== other.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n if (Object(_is_object_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) || Object(_is_object_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(other)) {\n var valueKeys = Object.keys(value);\n var otherKeys = Object.keys(other);\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n return false;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isEqual);\n//# sourceMappingURL=is-equal.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZXF1YWwuanM/ZDM1ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNGO0FBQ1A7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBEQUFRLFdBQVcsMERBQVE7QUFDbkM7QUFDQTtBQUNBLFFBQVEsOERBQVcsV0FBVyw4REFBVztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQkFBa0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLCtEQUFZLFdBQVcsK0RBQVk7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2lzLWVxdWFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzLW9iamVjdC1saWtlJztcbmltcG9ydCBpc0FycmF5TGlrZSBmcm9tICcuL2lzLWFycmF5LWxpa2UnO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJy4vaXMtc3RyaW5nJztcbnZhciBpc0VxdWFsID0gZnVuY3Rpb24gKHZhbHVlLCBvdGhlcikge1xuICAgIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICghdmFsdWUgfHwgIW90aGVyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSB8fCBpc1N0cmluZyhvdGhlcikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpIHx8IGlzQXJyYXlMaWtlKG90aGVyKSkge1xuICAgICAgICBpZiAodmFsdWUubGVuZ3RoICE9PSBvdGhlci5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnN0ID0gdHJ1ZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcnN0ID0gaXNFcXVhbCh2YWx1ZVtpXSwgb3RoZXJbaV0pO1xuICAgICAgICAgICAgaWYgKCFyc3QpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcnN0O1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBpc09iamVjdExpa2Uob3RoZXIpKSB7XG4gICAgICAgIHZhciB2YWx1ZUtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgICAgIHZhciBvdGhlcktleXMgPSBPYmplY3Qua2V5cyhvdGhlcik7XG4gICAgICAgIGlmICh2YWx1ZUtleXMubGVuZ3RoICE9PSBvdGhlcktleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJzdCA9IHRydWU7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByc3QgPSBpc0VxdWFsKHZhbHVlW3ZhbHVlS2V5c1tpXV0sIG90aGVyW3ZhbHVlS2V5c1tpXV0pO1xuICAgICAgICAgICAgaWYgKCFyc3QpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcnN0O1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuZXhwb3J0IGRlZmF1bHQgaXNFcXVhbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLWVxdWFsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-equal.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-error.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/is-error.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/util/esm/is-type.js\");\n/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\nvar isError = function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Error');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isError);\n//# sourceMappingURL=is-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZXJyb3IuanM/MTE4NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUMrQjtBQUMvQjtBQUNBLFdBQVcsd0RBQU07QUFDakI7QUFDZSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2lzLWVycm9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDmmK/lkKbmmK/lj4LmlbDnsbvlnotcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsdWUg5rWL6K+V55qE5YC8XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5pbXBvcnQgaXNUeXBlIGZyb20gJy4vaXMtdHlwZSc7XG52YXIgaXNFcnJvciA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBpc1R5cGUodmFsdWUsICdFcnJvcicpO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzRXJyb3I7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1lcnJvci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-error.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-even.js": /*!************************************************!*\ !*** ./node_modules/@antv/util/esm/is-even.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/util/esm/is-number.js\");\n\nvar isEven = function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num % 2 === 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isEven);\n//# sourceMappingURL=is-even.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZXZlbi5qcz8xNjliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBbUM7QUFDbkM7QUFDQSxXQUFXLDBEQUFRO0FBQ25CO0FBQ2UscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1ldmVuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzTnVtYmVyIGZyb20gJy4vaXMtbnVtYmVyJztcbnZhciBpc0V2ZW4gPSBmdW5jdGlvbiAobnVtKSB7XG4gICAgcmV0dXJuIGlzTnVtYmVyKG51bSkgJiYgbnVtICUgMiA9PT0gMDtcbn07XG5leHBvcnQgZGVmYXVsdCBpc0V2ZW47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1ldmVuLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-even.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-finite.js": /*!**************************************************!*\ !*** ./node_modules/@antv/util/esm/is-finite.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/util/esm/is-number.js\");\n/**\n * 判断是否为有限数\n * @return {Boolean}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) && isFinite(value);\n});\n//# sourceMappingURL=is-finite.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZmluaXRlLmpzPzgyYTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDbUM7QUFDcEI7QUFDZixXQUFXLDBEQUFRO0FBQ25CLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1maW5pdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOWIpOaWreaYr+WQpuS4uuaciemZkOaVsFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuaW1wb3J0IGlzTnVtYmVyIGZyb20gJy4vaXMtbnVtYmVyJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBpc051bWJlcih2YWx1ZSkgJiYgaXNGaW5pdGUodmFsdWUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtZmluaXRlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-finite.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-function.js": /*!****************************************************!*\ !*** ./node_modules/@antv/util/esm/is-function.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/util/esm/is-type.js\");\n/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Function');\n});\n//# sourceMappingURL=is-function.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZnVuY3Rpb24uanM/MTA4NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBLFlBQVksRUFBRTtBQUNkLFlBQVksUUFBUTtBQUNwQjtBQUMrQjtBQUNmO0FBQ2hCLFdBQVcsd0RBQU07QUFDakIsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtZnVuY3Rpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOaYr+WQpuS4uuWHveaVsFxuICogQHBhcmFtICB7Kn0gZm4g5a+56LGhXG4gKiBAcmV0dXJuIHtCb29sZWFufSAg5piv5ZCm5Ye95pWwXG4gKi9cbmltcG9ydCBpc1R5cGUgZnJvbSAnLi9pcy10eXBlJztcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gaXNUeXBlKHZhbHVlLCAnRnVuY3Rpb24nKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtZnVuY3Rpb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-function.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-integer.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/is-integer.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/util/esm/is-number.js\");\n\nvar isInteger = Number.isInteger ? Number.isInteger : function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num % 1 === 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isInteger);\n//# sourceMappingURL=is-integer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtaW50ZWdlci5qcz9kYWU0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBbUM7QUFDbkM7QUFDQSxXQUFXLDBEQUFRO0FBQ25CO0FBQ2Usd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1pbnRlZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzTnVtYmVyIGZyb20gJy4vaXMtbnVtYmVyJztcbnZhciBpc0ludGVnZXIgPSBOdW1iZXIuaXNJbnRlZ2VyID8gTnVtYmVyLmlzSW50ZWdlciA6IGZ1bmN0aW9uIChudW0pIHtcbiAgICByZXR1cm4gaXNOdW1iZXIobnVtKSAmJiBudW0gJSAxID09PSAwO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzSW50ZWdlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLWludGVnZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-integer.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-match.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/is-match.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/@antv/util/esm/is-nil.js\");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys */ \"./node_modules/@antv/util/esm/keys.js\");\n\n\nfunction isMatch(obj, attrs) {\n var _keys = Object(_keys__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(attrs);\n var length = _keys.length;\n if (Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(obj))\n return !length;\n for (var i = 0; i < length; i += 1) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n return true;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (isMatch);\n//# sourceMappingURL=is-match.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtbWF0Y2guanM/Y2M1NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBNkI7QUFDSDtBQUMxQjtBQUNBLGdCQUFnQixxREFBSTtBQUNwQjtBQUNBLFFBQVEsdURBQUs7QUFDYjtBQUNBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1tYXRjaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc05pbCBmcm9tICcuL2lzLW5pbCc7XG5pbXBvcnQga2V5cyBmcm9tICcuL2tleXMnO1xuZnVuY3Rpb24gaXNNYXRjaChvYmosIGF0dHJzKSB7XG4gICAgdmFyIF9rZXlzID0ga2V5cyhhdHRycyk7XG4gICAgdmFyIGxlbmd0aCA9IF9rZXlzLmxlbmd0aDtcbiAgICBpZiAoaXNOaWwob2JqKSlcbiAgICAgICAgcmV0dXJuICFsZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIga2V5ID0gX2tleXNbaV07XG4gICAgICAgIGlmIChhdHRyc1trZXldICE9PSBvYmpba2V5XSB8fCAhKGtleSBpbiBvYmopKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnQgZGVmYXVsdCBpc01hdGNoO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtbWF0Y2guanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-match.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-negative.js": /*!****************************************************!*\ !*** ./node_modules/@antv/util/esm/is-negative.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/util/esm/is-number.js\");\n\nvar isNegative = function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num < 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isNegative);\n//# sourceMappingURL=is-negative.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtbmVnYXRpdmUuanM/MmE4MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW1DO0FBQ25DO0FBQ0EsV0FBVywwREFBUTtBQUNuQjtBQUNlLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtbmVnYXRpdmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNOdW1iZXIgZnJvbSAnLi9pcy1udW1iZXInO1xudmFyIGlzTmVnYXRpdmUgPSBmdW5jdGlvbiAobnVtKSB7XG4gICAgcmV0dXJuIGlzTnVtYmVyKG51bSkgJiYgbnVtIDwgMDtcbn07XG5leHBvcnQgZGVmYXVsdCBpc05lZ2F0aXZlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtbmVnYXRpdmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-negative.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-nil.js": /*!***********************************************!*\ !*** ./node_modules/@antv/util/esm/is-nil.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n// isFinite,\nvar isNil = function (value) {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isNil);\n//# sourceMappingURL=is-nil.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtbmlsLmpzPzEyYTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usb0VBQUssRUFBQztBQUNyQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1uaWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpc0Zpbml0ZSxcbnZhciBpc05pbCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8qKlxuICAgICAqIGlzTmlsKG51bGwpID0+IHRydWVcbiAgICAgKiBpc05pbCgpID0+IHRydWVcbiAgICAgKi9cbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcbn07XG5leHBvcnQgZGVmYXVsdCBpc05pbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW5pbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-nil.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-null.js": /*!************************************************!*\ !*** ./node_modules/@antv/util/esm/is-null.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar isNull = function (value) {\n return value === null;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isNull);\n//# sourceMappingURL=is-null.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtbnVsbC5qcz9kZGMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ2UscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1udWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzTnVsbCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbn07XG5leHBvcnQgZGVmYXVsdCBpc051bGw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1udWxsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-null.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-number-equal.js": /*!********************************************************!*\ !*** ./node_modules/@antv/util/esm/is-number-equal.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isNumberEqual; });\nvar PRECISION = 0.00001; // numbers less than this is considered as 0\nfunction isNumberEqual(a, b, precision) {\n if (precision === void 0) { precision = PRECISION; }\n return Math.abs((a - b)) < precision;\n}\n;\n//# sourceMappingURL=is-number-equal.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtbnVtYmVyLWVxdWFsLmpzPzdlNDgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBLHdCQUF3QjtBQUNUO0FBQ2YsK0JBQStCLHVCQUF1QjtBQUN0RDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1udW1iZXItZXF1YWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgUFJFQ0lTSU9OID0gMC4wMDAwMTsgLy8gbnVtYmVycyBsZXNzIHRoYW4gdGhpcyBpcyBjb25zaWRlcmVkIGFzIDBcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTnVtYmVyRXF1YWwoYSwgYiwgcHJlY2lzaW9uKSB7XG4gICAgaWYgKHByZWNpc2lvbiA9PT0gdm9pZCAwKSB7IHByZWNpc2lvbiA9IFBSRUNJU0lPTjsgfVxuICAgIHJldHVybiBNYXRoLmFicygoYSAtIGIpKSA8IHByZWNpc2lvbjtcbn1cbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW51bWJlci1lcXVhbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-number-equal.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-number.js": /*!**************************************************!*\ !*** ./node_modules/@antv/util/esm/is-number.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/util/esm/is-type.js\");\n/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\n\nvar isNumber = function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Number');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isNumber);\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtbnVtYmVyLmpzPzcwNTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDK0I7QUFDL0I7QUFDQSxXQUFXLHdEQUFNO0FBQ2pCO0FBQ2UsdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1udW1iZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOWIpOaWreaYr+WQpuaVsOWtl1xuICogQHJldHVybiB7Qm9vbGVhbn0g5piv5ZCm5pWw5a2XXG4gKi9cbmltcG9ydCBpc1R5cGUgZnJvbSAnLi9pcy10eXBlJztcbnZhciBpc051bWJlciA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBpc1R5cGUodmFsdWUsICdOdW1iZXInKTtcbn07XG5leHBvcnQgZGVmYXVsdCBpc051bWJlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW51bWJlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-number.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-object-like.js": /*!*******************************************************!*\ !*** ./node_modules/@antv/util/esm/is-object-like.js ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar isObjectLike = function (value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isObjectLike);\n//# sourceMappingURL=is-object-like.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtb2JqZWN0LWxpa2UuanM/ZjgwZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsMkVBQVksRUFBQztBQUM1QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1vYmplY3QtbGlrZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdExpa2UgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvKipcbiAgICAgKiBpc09iamVjdExpa2Uoe30pID0+IHRydWVcbiAgICAgKiBpc09iamVjdExpa2UoWzEsIDIsIDNdKSA9PiB0cnVlXG4gICAgICogaXNPYmplY3RMaWtlKEZ1bmN0aW9uKSA9PiBmYWxzZVxuICAgICAqIGlzT2JqZWN0TGlrZShudWxsKSA9PiBmYWxzZVxuICAgICAqL1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzT2JqZWN0TGlrZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW9iamVjdC1saWtlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-object-like.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-object.js": /*!**************************************************!*\ !*** ./node_modules/@antv/util/esm/is-object.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n});\n//# sourceMappingURL=is-object.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtb2JqZWN0LmpzP2Q3YTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZ0I7QUFDaEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtb2JqZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8qKlxuICAgICAqIGlzT2JqZWN0KHt9KSA9PiB0cnVlXG4gICAgICogaXNPYmplY3QoWzEsIDIsIDNdKSA9PiB0cnVlXG4gICAgICogaXNPYmplY3QoRnVuY3Rpb24pID0+IHRydWVcbiAgICAgKiBpc09iamVjdChudWxsKSA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1vYmplY3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-object.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-odd.js": /*!***********************************************!*\ !*** ./node_modules/@antv/util/esm/is-odd.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/util/esm/is-number.js\");\n\nvar isOdd = function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num % 2 !== 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isOdd);\n//# sourceMappingURL=is-odd.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtb2RkLmpzPzMxMmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFtQztBQUNuQztBQUNBLFdBQVcsMERBQVE7QUFDbkI7QUFDZSxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2lzLW9kZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc051bWJlciBmcm9tICcuL2lzLW51bWJlcic7XG52YXIgaXNPZGQgPSBmdW5jdGlvbiAobnVtKSB7XG4gICAgcmV0dXJuIGlzTnVtYmVyKG51bSkgJiYgbnVtICUgMiAhPT0gMDtcbn07XG5leHBvcnQgZGVmYXVsdCBpc09kZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW9kZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-odd.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-plain-object.js": /*!********************************************************!*\ !*** ./node_modules/@antv/util/esm/is-plain-object.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_object_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-object-like */ \"./node_modules/@antv/util/esm/is-object-like.js\");\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/util/esm/is-type.js\");\n\n\nvar isPlainObject = function (value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!Object(_is_object_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) || !Object(_is_type__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value, 'Object')) {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n var proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isPlainObject);\n//# sourceMappingURL=is-plain-object.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtcGxhaW4tb2JqZWN0LmpzPzYxMTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ2I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsYUFBYTtBQUNsQztBQUNBO0FBQ0EsU0FBUywrREFBWSxZQUFZLHdEQUFNO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSw0RUFBYSxFQUFDO0FBQzdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2lzLXBsYWluLW9iamVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pcy1vYmplY3QtbGlrZSc7XG5pbXBvcnQgaXNUeXBlIGZyb20gJy4vaXMtdHlwZSc7XG52YXIgaXNQbGFpbk9iamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8qKlxuICAgICAqIGlzT2JqZWN0TGlrZShuZXcgRm9vKSA9PiBmYWxzZVxuICAgICAqIGlzT2JqZWN0TGlrZShbMSwgMiwgM10pID0+IGZhbHNlXG4gICAgICogaXNPYmplY3RMaWtlKHsgeDogMCwgeTogMCB9KSA9PiB0cnVlXG4gICAgICogaXNPYmplY3RMaWtlKE9iamVjdC5jcmVhdGUobnVsbCkpID0+IHRydWVcbiAgICAgKi9cbiAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgIWlzVHlwZSh2YWx1ZSwgJ09iamVjdCcpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHZhciBwcm90byA9IHZhbHVlO1xuICAgIHdoaWxlIChPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pICE9PSBudWxsKSB7XG4gICAgICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgPT09IHByb3RvO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzUGxhaW5PYmplY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1wbGFpbi1vYmplY3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-plain-object.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-positive.js": /*!****************************************************!*\ !*** ./node_modules/@antv/util/esm/is-positive.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/util/esm/is-number.js\");\n\nvar isPositive = function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num > 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isPositive);\n//# sourceMappingURL=is-positive.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtcG9zaXRpdmUuanM/MjJlZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW1DO0FBQ25DO0FBQ0EsV0FBVywwREFBUTtBQUNuQjtBQUNlLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtcG9zaXRpdmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNOdW1iZXIgZnJvbSAnLi9pcy1udW1iZXInO1xudmFyIGlzUG9zaXRpdmUgPSBmdW5jdGlvbiAobnVtKSB7XG4gICAgcmV0dXJuIGlzTnVtYmVyKG51bSkgJiYgbnVtID4gMDtcbn07XG5leHBvcnQgZGVmYXVsdCBpc1Bvc2l0aXZlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtcG9zaXRpdmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-positive.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-prototype.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/util/esm/is-prototype.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar objectProto = Object.prototype;\nvar isPrototype = function (value) {\n var Ctor = value && value.constructor;\n var proto = (typeof Ctor === 'function' && Ctor.prototype) || objectProto;\n return value === proto;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isPrototype);\n//# sourceMappingURL=is-prototype.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtcHJvdG90eXBlLmpzP2M3MDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSwwRUFBVyxFQUFDO0FBQzNCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2lzLXByb3RvdHlwZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG52YXIgaXNQcm90b3R5cGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yO1xuICAgIHZhciBwcm90byA9ICh0eXBlb2YgQ3RvciA9PT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG4gICAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn07XG5leHBvcnQgZGVmYXVsdCBpc1Byb3RvdHlwZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLXByb3RvdHlwZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-prototype.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-reg-exp.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/is-reg-exp.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/util/esm/is-type.js\");\n\nvar isRegExp = function (str) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(str, 'RegExp');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isRegExp);\n//# sourceMappingURL=is-reg-exp.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtcmVnLWV4cC5qcz8yZjYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBK0I7QUFDL0I7QUFDQSxXQUFXLHdEQUFNO0FBQ2pCO0FBQ2UsdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy1yZWctZXhwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzLXR5cGUnO1xudmFyIGlzUmVnRXhwID0gZnVuY3Rpb24gKHN0cikge1xuICAgIHJldHVybiBpc1R5cGUoc3RyLCAnUmVnRXhwJyk7XG59O1xuZXhwb3J0IGRlZmF1bHQgaXNSZWdFeHA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1yZWctZXhwLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-reg-exp.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-string.js": /*!**************************************************!*\ !*** ./node_modules/@antv/util/esm/is-string.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/@antv/util/esm/is-type.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (str) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(str, 'String');\n});\n//# sourceMappingURL=is-string.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtc3RyaW5nLmpzPzE3M2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUErQjtBQUNmO0FBQ2hCLFdBQVcsd0RBQU07QUFDakIsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtc3RyaW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzLXR5cGUnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChzdHIpIHtcbiAgICByZXR1cm4gaXNUeXBlKHN0ciwgJ1N0cmluZycpO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1zdHJpbmcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-string.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-type.js": /*!************************************************!*\ !*** ./node_modules/@antv/util/esm/is-type.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar toString = {}.toString;\nvar isType = function (value, type) { return toString.call(value) === '[object ' + type + ']'; };\n/* harmony default export */ __webpack_exports__[\"default\"] = (isType);\n//# sourceMappingURL=is-type.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtdHlwZS5qcz82MDQ3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEsaUJBQWlCO0FBQ2pCLHFDQUFxQyx5REFBeUQ7QUFDL0UscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9pcy10eXBlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG52YXIgaXNUeXBlID0gZnVuY3Rpb24gKHZhbHVlLCB0eXBlKSB7IHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgJyArIHR5cGUgKyAnXSc7IH07XG5leHBvcnQgZGVmYXVsdCBpc1R5cGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy10eXBlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-type.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/is-undefined.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/util/esm/is-undefined.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar isUndefined = function (value) {\n return value === undefined;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isUndefined);\n//# sourceMappingURL=is-undefined.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vaXMtdW5kZWZpbmVkLmpzP2NhM2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDZSwwRUFBVyxFQUFDO0FBQzNCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2lzLXVuZGVmaW5lZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc1VuZGVmaW5lZCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzVW5kZWZpbmVkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtdW5kZWZpbmVkLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/is-undefined.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/keys.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/keys.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./each */ \"./node_modules/@antv/util/esm/each.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n\n\nvar keys = Object.keys ? function (obj) { return Object.keys(obj); } : function (obj) {\n var result = [];\n Object(_each__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(obj, function (value, key) {\n if (!(Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (keys);\n//# sourceMappingURL=keys.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20va2V5cy5qcz9lODdhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUEwQjtBQUNhO0FBQ3ZDLHlDQUF5Qyx5QkFBeUIsRUFBRTtBQUNwRTtBQUNBLElBQUkscURBQUk7QUFDUixjQUFjLDREQUFVO0FBQ3hCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNlLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20va2V5cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlYWNoIGZyb20gJy4vZWFjaCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbnZhciBrZXlzID0gT2JqZWN0LmtleXMgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBPYmplY3Qua2V5cyhvYmopOyB9IDogZnVuY3Rpb24gKG9iaikge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBlYWNoKG9iaiwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKCEoaXNGdW5jdGlvbihvYmopICYmIGtleSA9PT0gJ3Byb3RvdHlwZScpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCBrZXlzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9a2V5cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/keys.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/last.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/last.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return last; });\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n\nfunction last(o) {\n if (Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(o)) {\n var arr = o;\n return arr[arr.length - 1];\n }\n return undefined;\n}\n//# sourceMappingURL=last.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbGFzdC5qcz9hNWZkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUEwQztBQUMzQjtBQUNmLFFBQVEsOERBQVc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL2xhc3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pcy1hcnJheS1saWtlJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhc3Qobykge1xuICAgIGlmIChpc0FycmF5TGlrZShvKSkge1xuICAgICAgICB2YXIgYXJyID0gbztcbiAgICAgICAgcmV0dXJuIGFyclthcnIubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1sYXN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/last.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/lower-case.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/lower-case.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./to-string */ \"./node_modules/@antv/util/esm/to-string.js\");\n\nvar lowerCase = function (str) {\n return Object(_to_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(str).toLowerCase();\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (lowerCase);\n//# sourceMappingURL=lower-case.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbG93ZXItY2FzZS5qcz9kN2I3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBbUM7QUFDbkM7QUFDQSxXQUFXLDBEQUFRO0FBQ25CO0FBQ2Usd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9sb3dlci1jYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG8tc3RyaW5nJztcbnZhciBsb3dlckNhc2UgPSBmdW5jdGlvbiAoc3RyKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nKHN0cikudG9Mb3dlckNhc2UoKTtcbn07XG5leHBvcnQgZGVmYXVsdCBsb3dlckNhc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1sb3dlci1jYXNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/lower-case.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/lower-first.js": /*!****************************************************!*\ !*** ./node_modules/@antv/util/esm/lower-first.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./to-string */ \"./node_modules/@antv/util/esm/to-string.js\");\n\nvar lowerFirst = function (value) {\n var str = Object(_to_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value);\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (lowerFirst);\n//# sourceMappingURL=lower-first.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbG93ZXItZmlyc3QuanM/YzYwOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW1DO0FBQ25DO0FBQ0EsY0FBYywwREFBUTtBQUN0QjtBQUNBO0FBQ2UseUVBQVUsRUFBQztBQUMxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9sb3dlci1maXJzdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0b1N0cmluZyBmcm9tICcuL3RvLXN0cmluZyc7XG52YXIgbG93ZXJGaXJzdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHZhciBzdHIgPSB0b1N0cmluZyh2YWx1ZSk7XG4gICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIHN0ci5zdWJzdHJpbmcoMSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgbG93ZXJGaXJzdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvd2VyLWZpcnN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/lower-first.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/map-values.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/map-values.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/@antv/util/esm/is-nil.js\");\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-object */ \"./node_modules/@antv/util/esm/is-object.js\");\n\n\nvar identity = function (v) { return v; };\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (object, func) {\n if (func === void 0) { func = identity; }\n var r = {};\n if (Object(_is_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object) && !Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object)) {\n Object.keys(object).forEach(function (key) {\n // @ts-ignore\n r[key] = func(object[key], key);\n });\n }\n return r;\n});\n//# sourceMappingURL=map-values.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbWFwLXZhbHVlcy5qcz9jNzZhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUE2QjtBQUNNO0FBQ25DLDZCQUE2QixVQUFVO0FBQ3ZCO0FBQ2hCLDBCQUEwQixpQkFBaUI7QUFDM0M7QUFDQSxRQUFRLDBEQUFRLGFBQWEsdURBQUs7QUFDbEM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9tYXAtdmFsdWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzTmlsIGZyb20gJy4vaXMtbmlsJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzLW9iamVjdCc7XG52YXIgaWRlbnRpdHkgPSBmdW5jdGlvbiAodikgeyByZXR1cm4gdjsgfTtcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAob2JqZWN0LCBmdW5jKSB7XG4gICAgaWYgKGZ1bmMgPT09IHZvaWQgMCkgeyBmdW5jID0gaWRlbnRpdHk7IH1cbiAgICB2YXIgciA9IHt9O1xuICAgIGlmIChpc09iamVjdChvYmplY3QpICYmICFpc05pbChvYmplY3QpKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKG9iamVjdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByW2tleV0gPSBmdW5jKG9iamVjdFtrZXldLCBrZXkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hcC12YWx1ZXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/map-values.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/map.js": /*!********************************************!*\ !*** ./node_modules/@antv/util/esm/map.js ***! \********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n\nvar map = function (arr, func) {\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n // @ts-ignore\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n result.push(func(value, index));\n }\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (map);\n//# sourceMappingURL=map.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbWFwLmpzP2E2ZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUEwQztBQUMxQztBQUNBLFNBQVMsOERBQVc7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsb0JBQW9CO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxrRUFBRyxFQUFDO0FBQ25CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5TGlrZSBmcm9tICcuL2lzLWFycmF5LWxpa2UnO1xudmFyIG1hcCA9IGZ1bmN0aW9uIChhcnIsIGZ1bmMpIHtcbiAgICBpZiAoIWlzQXJyYXlMaWtlKGFycikpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGFyci5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyW2luZGV4XTtcbiAgICAgICAgcmVzdWx0LnB1c2goZnVuYyh2YWx1ZSwgaW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCBtYXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tYXAuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/map.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/max-by.js": /*!***********************************************!*\ !*** ./node_modules/@antv/util/esm/max-by.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n\n\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (arr, fn) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return undefined;\n }\n var maxItem;\n var max = -Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(fn) ? fn(item) : item[fn];\n if (v > max) {\n maxItem = item;\n max = v;\n }\n }\n return maxItem;\n});\n//# sourceMappingURL=max-by.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbWF4LWJ5LmpzPzI1YzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ007QUFDdkM7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFlBQVksRUFBRTtBQUNkO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUyxHQUFHLFNBQVM7QUFDeEM7QUFDQSwrQkFBK0IsWUFBWSxFQUFFO0FBQzdDLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ2dCO0FBQ2hCLFNBQVMseURBQU87QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0EsZ0JBQWdCLDREQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL21heC1ieS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXMtYXJyYXknO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnLi9pcy1mdW5jdGlvbic7XG4vKipcbiAqIEBwYXJhbSB7QXJyYXl9IGFyciBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm4geyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICpcbiAqIG1heEJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gKiAvLyA9PiB7ICduJzogMiB9XG4gKlxuICogbWF4Qnkob2JqZWN0cywgJ24nKTtcbiAqIC8vID0+IHsgJ24nOiAyIH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChhcnIsIGZuKSB7XG4gICAgaWYgKCFpc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIG1heEl0ZW07XG4gICAgdmFyIG1heCA9IC1JbmZpbml0eTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgaXRlbSA9IGFycltpXTtcbiAgICAgICAgdmFyIHYgPSBpc0Z1bmN0aW9uKGZuKSA/IGZuKGl0ZW0pIDogaXRlbVtmbl07XG4gICAgICAgIGlmICh2ID4gbWF4KSB7XG4gICAgICAgICAgICBtYXhJdGVtID0gaXRlbTtcbiAgICAgICAgICAgIG1heCA9IHY7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1heEl0ZW07XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1heC1ieS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/max-by.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/max.js": /*!********************************************!*\ !*** ./node_modules/@antv/util/esm/max.js ***! \********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the maximum value.\n * @example\n *\n * max([1, 2]);\n * // => 2\n *\n * max([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * max(data);\n * // => 1250010\n * // Math.max(...data) will encounter \"Maximum call stack size exceeded\" error\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (arr) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.max(prev, curr);\n }, arr[0]);\n});\n//# sourceMappingURL=max.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbWF4LmpzPzgyMDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFpQztBQUNqQztBQUNBLFdBQVcsTUFBTTtBQUNqQixZQUFZLEVBQUU7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dCO0FBQ2hCLFNBQVMseURBQU87QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbWF4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG4vKipcbiAqIEBwYXJhbSB7QXJyYXl9IGFyciBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHJldHVybiB7Kn0gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogbWF4KFsxLCAyXSk7XG4gKiAvLyA9PiAyXG4gKlxuICogbWF4KFtdKTtcbiAqIC8vID0+IHVuZGVmaW5lZFxuICpcbiAqIGNvbnN0IGRhdGEgPSBuZXcgQXJyYXkoMTI1MDAxMCkuZmlsbCgxKS5tYXAoKGQsaWR4KSA9PiBpZHgpO1xuICpcbiAqIG1heChkYXRhKTtcbiAqIC8vID0+IDEyNTAwMTBcbiAqIC8vIE1hdGgubWF4KC4uLmRhdGEpIHdpbGwgZW5jb3VudGVyIFwiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIiBlcnJvclxuICovXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGFycikge1xuICAgIGlmICghaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBhcnIucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXJyKSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heChwcmV2LCBjdXJyKTtcbiAgICB9LCBhcnJbMF0pO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tYXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/max.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/measure-text-width.js": /*!***********************************************************!*\ !*** ./node_modules/@antv/util/esm/measure-text-width.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _values__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./values */ \"./node_modules/@antv/util/esm/values.js\");\n/* harmony import */ var _memoize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./memoize */ \"./node_modules/@antv/util/esm/memoize.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./is-string */ \"./node_modules/@antv/util/esm/is-string.js\");\n\n\n\n\nvar ctx;\n/**\n * 计算文本的宽度\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_memoize__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(function (text, font) {\n if (font === void 0) { font = {}; }\n var fontSize = font.fontSize, fontFamily = font.fontFamily, fontWeight = font.fontWeight, fontStyle = font.fontStyle, fontVariant = font.fontVariant;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d');\n }\n ctx.font = [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ');\n return ctx.measureText(Object(_is_string__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(text) ? text : '').width;\n}, function (text, font) {\n if (font === void 0) { font = {}; }\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArrays\"])([text], Object(_values__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(font)).join('');\n}));\n//# sourceMappingURL=measure-text-width.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbWVhc3VyZS10ZXh0LXdpZHRoLmpzPzk0Y2EiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QztBQUNUO0FBQ0U7QUFDRztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNlLHVIQUFPO0FBQ3RCLDBCQUEwQixXQUFXO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsMERBQVE7QUFDbkMsQ0FBQztBQUNELDBCQUEwQixXQUFXO0FBQ3JDLFdBQVcsNERBQWMsU0FBUyx1REFBTTtBQUN4QyxDQUFDLENBQUMsRUFBQztBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL21lYXN1cmUtdGV4dC13aWR0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fc3ByZWFkQXJyYXlzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgdmFsdWVzIGZyb20gJy4vdmFsdWVzJztcbmltcG9ydCBtZW1vaXplIGZyb20gJy4vbWVtb2l6ZSc7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnLi9pcy1zdHJpbmcnO1xudmFyIGN0eDtcbi8qKlxuICog6K6h566X5paH5pys55qE5a695bqmXG4gKi9cbmV4cG9ydCBkZWZhdWx0IG1lbW9pemUoZnVuY3Rpb24gKHRleHQsIGZvbnQpIHtcbiAgICBpZiAoZm9udCA9PT0gdm9pZCAwKSB7IGZvbnQgPSB7fTsgfVxuICAgIHZhciBmb250U2l6ZSA9IGZvbnQuZm9udFNpemUsIGZvbnRGYW1pbHkgPSBmb250LmZvbnRGYW1pbHksIGZvbnRXZWlnaHQgPSBmb250LmZvbnRXZWlnaHQsIGZvbnRTdHlsZSA9IGZvbnQuZm9udFN0eWxlLCBmb250VmFyaWFudCA9IGZvbnQuZm9udFZhcmlhbnQ7XG4gICAgaWYgKCFjdHgpIHtcbiAgICAgICAgY3R4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICB9XG4gICAgY3R4LmZvbnQgPSBbZm9udFN0eWxlLCBmb250VmFyaWFudCwgZm9udFdlaWdodCwgZm9udFNpemUgKyBcInB4XCIsIGZvbnRGYW1pbHldLmpvaW4oJyAnKTtcbiAgICByZXR1cm4gY3R4Lm1lYXN1cmVUZXh0KGlzU3RyaW5nKHRleHQpID8gdGV4dCA6ICcnKS53aWR0aDtcbn0sIGZ1bmN0aW9uICh0ZXh0LCBmb250KSB7XG4gICAgaWYgKGZvbnQgPT09IHZvaWQgMCkgeyBmb250ID0ge307IH1cbiAgICByZXR1cm4gX19zcHJlYWRBcnJheXMoW3RleHRdLCB2YWx1ZXMoZm9udCkpLmpvaW4oJycpO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZWFzdXJlLXRleHQtd2lkdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/measure-text-width.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/memoize.js": /*!************************************************!*\ !*** ./node_modules/@antv/util/esm/memoize.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (f, resolver) {\n if (!Object(_is_function__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(f)) {\n throw new TypeError('Expected a function');\n }\n var memoized = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n var key = resolver ? resolver.apply(this, args) : args[0];\n var cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result;\n };\n memoized.cache = new Map();\n return memoized;\n});\n//# sourceMappingURL=memoize.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbWVtb2l6ZS5qcz85YWUzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dCO0FBQ2hCLFNBQVMsNERBQVU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL21lbW9pemUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbi8qKlxuICogXy5tZW1vaXplKGNhbENvbG9yKTtcbiAqIF8ubWVtb2l6ZShjYWxDb2xvciwgKC4uLmFyZ3MpID0+IGFyZ3NbMF0pO1xuICogQHBhcmFtIGZcbiAqIEBwYXJhbSByZXNvbHZlclxuICovXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGYsIHJlc29sdmVyKSB7XG4gICAgaWYgKCFpc0Z1bmN0aW9uKGYpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgZnVuY3Rpb24nKTtcbiAgICB9XG4gICAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIC8vIOS9v+eUqOaWueazleaehOmAoCBrZXnvvIzlpoLmnpzkuI3lrZjlnKggcmVzb2x2ZXLvvIzliJnnm7TmjqXlj5bnrKzkuIDkuKrlj4LmlbDkvZzkuLoga2V5XG4gICAgICAgIHZhciBrZXkgPSByZXNvbHZlciA/IHJlc29sdmVyLmFwcGx5KHRoaXMsIGFyZ3MpIDogYXJnc1swXTtcbiAgICAgICAgdmFyIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG4gICAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSBmLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAvLyDnvJPlrZjotbfmnaVcbiAgICAgICAgY2FjaGUuc2V0KGtleSwgcmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIG1lbW9pemVkLmNhY2hlID0gbmV3IE1hcCgpO1xuICAgIHJldHVybiBtZW1vaXplZDtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVtb2l6ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/memoize.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/min-by.js": /*!***********************************************!*\ !*** ./node_modules/@antv/util/esm/min-by.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n\n\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (arr, fn) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return undefined;\n }\n var minItem;\n var min = Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(fn) ? fn(item) : item[fn];\n if (v < min) {\n minItem = item;\n min = v;\n }\n }\n return minItem;\n});\n//# sourceMappingURL=min-by.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbWluLWJ5LmpzPzE2OTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ007QUFDdkM7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFlBQVksRUFBRTtBQUNkO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUyxHQUFHLFNBQVM7QUFDeEM7QUFDQSwrQkFBK0IsWUFBWSxFQUFFO0FBQzdDLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ2dCO0FBQ2hCLFNBQVMseURBQU87QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0EsZ0JBQWdCLDREQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL21pbi1ieS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXMtYXJyYXknO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnLi9pcy1mdW5jdGlvbic7XG4vKipcbiAqIEBwYXJhbSB7QXJyYXl9IGFyciBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm4geyp9IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICpcbiAqIG1pbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKlxuICogbWluQnkob2JqZWN0cywgJ24nKTtcbiAqIC8vID0+IHsgJ24nOiAxIH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChhcnIsIGZuKSB7XG4gICAgaWYgKCFpc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIG1pbkl0ZW07XG4gICAgdmFyIG1pbiA9IEluZmluaXR5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBpdGVtID0gYXJyW2ldO1xuICAgICAgICB2YXIgdiA9IGlzRnVuY3Rpb24oZm4pID8gZm4oaXRlbSkgOiBpdGVtW2ZuXTtcbiAgICAgICAgaWYgKHYgPCBtaW4pIHtcbiAgICAgICAgICAgIG1pbkl0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgbWluID0gdjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWluSXRlbTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWluLWJ5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/min-by.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/min.js": /*!********************************************!*\ !*** ./node_modules/@antv/util/esm/min.js ***! \********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (arr) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.min(prev, curr);\n }, arr[0]);\n});\n//# sourceMappingURL=min.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbWluLmpzPzVjMTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFpQztBQUNqQztBQUNBLFdBQVcsTUFBTTtBQUNqQixZQUFZLEVBQUU7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dCO0FBQ2hCLFNBQVMseURBQU87QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbWluLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG4vKipcbiAqIEBwYXJhbSB7QXJyYXl9IGFyciBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHJldHVybiB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogbWluKFsxLCAyXSk7XG4gKiAvLyA9PiAxXG4gKlxuICogbWluKFtdKTtcbiAqIC8vID0+IHVuZGVmaW5lZFxuICpcbiAqIGNvbnN0IGRhdGEgPSBuZXcgQXJyYXkoMTI1MDAxMCkuZmlsbCgxKS5tYXAoKGQsaWR4KSA9PiBpZHgpO1xuICpcbiAqIG1pbihkYXRhKTtcbiAqIC8vID0+IDEyNTAwMTBcbiAqIC8vIE1hdGgubWluKC4uLmRhdGEpIHdpbGwgZW5jb3VudGVyIFwiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIiBlcnJvclxuICovXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGFycikge1xuICAgIGlmICghaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBhcnIucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXJyKSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1pbihwcmV2LCBjdXJyKTtcbiAgICB9LCBhcnJbMF0pO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1taW4uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/min.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/mix.js": /*!********************************************!*\ !*** ./node_modules/@antv/util/esm/mix.js ***! \********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return mix; });\n// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist, obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n dist[key] = obj[key];\n }\n }\n}\nfunction mix(dist, src1, src2, src3) {\n if (src1)\n _mix(dist, src1);\n if (src2)\n _mix(dist, src2);\n if (src3)\n _mix(dist, src3);\n return dist;\n}\n//# sourceMappingURL=mix.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbWl4LmpzPzc1ODMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9taXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBGSVhNRTogTXV0YWJsZSBwYXJhbSBzaG91bGQgYmUgZm9yYmlkZGVuIGluIHN0YXRpYyBsYW5nLlxuZnVuY3Rpb24gX21peChkaXN0LCBvYmopIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSAmJiBrZXkgIT09ICdjb25zdHJ1Y3RvcicgJiYgb2JqW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZGlzdFtrZXldID0gb2JqW2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtaXgoZGlzdCwgc3JjMSwgc3JjMiwgc3JjMykge1xuICAgIGlmIChzcmMxKVxuICAgICAgICBfbWl4KGRpc3QsIHNyYzEpO1xuICAgIGlmIChzcmMyKVxuICAgICAgICBfbWl4KGRpc3QsIHNyYzIpO1xuICAgIGlmIChzcmMzKVxuICAgICAgICBfbWl4KGRpc3QsIHNyYzMpO1xuICAgIHJldHVybiBkaXN0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWl4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/mix.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/mod.js": /*!********************************************!*\ !*** ./node_modules/@antv/util/esm/mod.js ***! \********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar mod = function (n, m) {\n return ((n % m) + m) % m;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (mod);\n//# sourceMappingURL=mod.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbW9kLmpzPzA5MzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDZSxrRUFBRyxFQUFDO0FBQ25CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL21vZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBtb2QgPSBmdW5jdGlvbiAobiwgbSkge1xuICAgIHJldHVybiAoKG4gJSBtKSArIG0pICUgbTtcbn07XG5leHBvcnQgZGVmYXVsdCBtb2Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tb2QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/mod.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/noop.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/noop.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () { });\n//# sourceMappingURL=noop.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbm9vcC5qcz80YTNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWdCLDRFQUFhLEVBQUUsRUFBRTtBQUNqQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9ub29wLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICgpIHsgfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ub29wLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/noop.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/number2color.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/util/esm/number2color.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar numColorCache = {};\nfunction numberToColor(num) {\n // 增加缓存\n var color = numColorCache[num];\n if (!color) {\n var str = num.toString(16);\n for (var i = str.length; i < 6; i++) {\n str = '0' + str;\n }\n color = '#' + str;\n numColorCache[num] = color;\n }\n return color;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (numberToColor);\n//# sourceMappingURL=number2color.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbnVtYmVyMmNvbG9yLmpzPzY5M2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsT0FBTztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLDRFQUFhLEVBQUM7QUFDN0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vbnVtYmVyMmNvbG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG51bUNvbG9yQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIG51bWJlclRvQ29sb3IobnVtKSB7XG4gICAgLy8g5aKe5Yqg57yT5a2YXG4gICAgdmFyIGNvbG9yID0gbnVtQ29sb3JDYWNoZVtudW1dO1xuICAgIGlmICghY29sb3IpIHtcbiAgICAgICAgdmFyIHN0ciA9IG51bS50b1N0cmluZygxNik7XG4gICAgICAgIGZvciAodmFyIGkgPSBzdHIubGVuZ3RoOyBpIDwgNjsgaSsrKSB7XG4gICAgICAgICAgICBzdHIgPSAnMCcgKyBzdHI7XG4gICAgICAgIH1cbiAgICAgICAgY29sb3IgPSAnIycgKyBzdHI7XG4gICAgICAgIG51bUNvbG9yQ2FjaGVbbnVtXSA9IGNvbG9yO1xuICAgIH1cbiAgICByZXR1cm4gY29sb3I7XG59XG5leHBvcnQgZGVmYXVsdCBudW1iZXJUb0NvbG9yO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bnVtYmVyMmNvbG9yLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/number2color.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/omit.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/omit.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduce */ \"./node_modules/@antv/util/esm/reduce.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (obj, keys) {\n return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(obj, function (r, curr, key) {\n if (!keys.includes(key)) {\n r[key] = curr;\n }\n return r;\n }, {});\n});\n//# sourceMappingURL=omit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vb21pdC5qcz8wN2RmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBOEI7QUFDZDtBQUNoQixXQUFXLHVEQUFNO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxJQUFJO0FBQ1QsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vb21pdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZWR1Y2UgZnJvbSAnLi9yZWR1Y2UnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChvYmosIGtleXMpIHtcbiAgICByZXR1cm4gcmVkdWNlKG9iaiwgZnVuY3Rpb24gKHIsIGN1cnIsIGtleSkge1xuICAgICAgICBpZiAoIWtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgcltrZXldID0gY3VycjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICB9LCB7fSk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9taXQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/omit.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/parse-radius.js": /*!*****************************************************!*\ !*** ./node_modules/@antv/util/esm/parse-radius.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n\nfunction parseRadius(radius) {\n var r1 = 0, r2 = 0, r3 = 0, r4 = 0;\n if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (parseRadius);\n//# sourceMappingURL=parse-radius.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vcGFyc2UtcmFkaXVzLmpzPzNkNTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFpQztBQUNqQztBQUNBO0FBQ0EsUUFBUSx5REFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSwwRUFBVyxFQUFDO0FBQzNCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL3BhcnNlLXJhZGl1cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXMtYXJyYXknO1xuZnVuY3Rpb24gcGFyc2VSYWRpdXMocmFkaXVzKSB7XG4gICAgdmFyIHIxID0gMCwgcjIgPSAwLCByMyA9IDAsIHI0ID0gMDtcbiAgICBpZiAoaXNBcnJheShyYWRpdXMpKSB7XG4gICAgICAgIGlmIChyYWRpdXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByMSA9IHIyID0gcjMgPSByNCA9IHJhZGl1c1swXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyYWRpdXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICByMSA9IHIzID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgcjIgPSByNCA9IHJhZGl1c1sxXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyYWRpdXMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICByMSA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIHIyID0gcjQgPSByYWRpdXNbMV07XG4gICAgICAgICAgICByMyA9IHJhZGl1c1syXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHIxID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgcjIgPSByYWRpdXNbMV07XG4gICAgICAgICAgICByMyA9IHJhZGl1c1syXTtcbiAgICAgICAgICAgIHI0ID0gcmFkaXVzWzNdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByMSA9IHIyID0gcjMgPSByNCA9IHJhZGl1cztcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcjE6IHIxLFxuICAgICAgICByMjogcjIsXG4gICAgICAgIHIzOiByMyxcbiAgICAgICAgcjQ6IHI0XG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IHBhcnNlUmFkaXVzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UtcmFkaXVzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/parse-radius.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/pick.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/pick.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./each */ \"./node_modules/@antv/util/esm/each.js\");\n/* harmony import */ var _is_plain_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-plain-object */ \"./node_modules/@antv/util/esm/is-plain-object.js\");\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (object, keys) {\n if (object === null || !Object(_is_plain_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object)) {\n return {};\n }\n var result = {};\n Object(_each__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(keys, function (key) {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n});\n//# sourceMappingURL=pick.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vcGljay5qcz85MTAwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUEwQjtBQUNvQjtBQUM5QztBQUNnQjtBQUNoQiw0QkFBNEIsZ0VBQWE7QUFDekM7QUFDQTtBQUNBO0FBQ0EsSUFBSSxxREFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL3BpY2suanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZWFjaCBmcm9tICcuL2VhY2gnO1xuaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnLi9pcy1wbGFpbi1vYmplY3QnO1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAob2JqZWN0LCBrZXlzKSB7XG4gICAgaWYgKG9iamVjdCA9PT0gbnVsbCB8fCAhaXNQbGFpbk9iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGVhY2goa2V5cywgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gb2JqZWN0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1waWNrLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/pick.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/pull-at.js": /*!************************************************!*\ !*** ./node_modules/@antv/util/esm/pull-at.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n\nvar splice = Array.prototype.splice;\nvar pullAt = function pullAt(arr, indexes) {\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return [];\n }\n var length = arr ? indexes.length : 0;\n var last = length - 1;\n while (length--) {\n var previous = void 0;\n var index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (pullAt);\n//# sourceMappingURL=pull-at.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vcHVsbC1hdC5qcz82NTdhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBMEM7QUFDMUM7QUFDQTtBQUNBLFNBQVMsOERBQVc7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vcHVsbC1hdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5TGlrZSBmcm9tICcuL2lzLWFycmF5LWxpa2UnO1xudmFyIHNwbGljZSA9IEFycmF5LnByb3RvdHlwZS5zcGxpY2U7XG52YXIgcHVsbEF0ID0gZnVuY3Rpb24gcHVsbEF0KGFyciwgaW5kZXhlcykge1xuICAgIGlmICghaXNBcnJheUxpa2UoYXJyKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHZhciBsZW5ndGggPSBhcnIgPyBpbmRleGVzLmxlbmd0aCA6IDA7XG4gICAgdmFyIGxhc3QgPSBsZW5ndGggLSAxO1xuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgcHJldmlvdXMgPSB2b2lkIDA7XG4gICAgICAgIHZhciBpbmRleCA9IGluZGV4ZXNbbGVuZ3RoXTtcbiAgICAgICAgaWYgKGxlbmd0aCA9PT0gbGFzdCB8fCBpbmRleCAhPT0gcHJldmlvdXMpIHtcbiAgICAgICAgICAgIHByZXZpb3VzID0gaW5kZXg7XG4gICAgICAgICAgICBzcGxpY2UuY2FsbChhcnIsIGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyO1xufTtcbmV4cG9ydCBkZWZhdWx0IHB1bGxBdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXB1bGwtYXQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/pull-at.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/pull.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/pull.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar arrPrototype = Array.prototype;\nvar splice = arrPrototype.splice;\nvar indexOf = arrPrototype.indexOf;\nvar pull = function (arr) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (pull);\n//# sourceMappingURL=pull.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vcHVsbC5qcz84ZDJkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vcHVsbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG52YXIgc3BsaWNlID0gYXJyUHJvdG90eXBlLnNwbGljZTtcbnZhciBpbmRleE9mID0gYXJyUHJvdG90eXBlLmluZGV4T2Y7XG52YXIgcHVsbCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFsdWVzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdmFsdWUgPSB2YWx1ZXNbaV07XG4gICAgICAgIHZhciBmcm9tSW5kZXggPSAtMTtcbiAgICAgICAgd2hpbGUgKChmcm9tSW5kZXggPSBpbmRleE9mLmNhbGwoYXJyLCB2YWx1ZSkpID4gLTEpIHtcbiAgICAgICAgICAgIHNwbGljZS5jYWxsKGFyciwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyO1xufTtcbmV4cG9ydCBkZWZhdWx0IHB1bGw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wdWxsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/pull.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/reduce.js": /*!***********************************************!*\ !*** ./node_modules/@antv/util/esm/reduce.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./each */ \"./node_modules/@antv/util/esm/each.js\");\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_plain_object__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-plain-object */ \"./node_modules/@antv/util/esm/is-plain-object.js\");\n\n\n\nvar reduce = function (arr, fn, init) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arr) && !Object(_is_plain_object__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(arr)) {\n return arr;\n }\n var result = init;\n Object(_each__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr, function (data, i) {\n result = fn(result, data, i);\n });\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (reduce);\n//# sourceMappingURL=reduce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vcmVkdWNlLmpzPzkzOTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEI7QUFDTztBQUNhO0FBQzlDO0FBQ0EsU0FBUyx5REFBTyxVQUFVLGdFQUFhO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLElBQUkscURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ2UscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9yZWR1Y2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZWFjaCBmcm9tICcuL2VhY2gnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5pbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICcuL2lzLXBsYWluLW9iamVjdCc7XG52YXIgcmVkdWNlID0gZnVuY3Rpb24gKGFyciwgZm4sIGluaXQpIHtcbiAgICBpZiAoIWlzQXJyYXkoYXJyKSAmJiAhaXNQbGFpbk9iamVjdChhcnIpKSB7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBpbml0O1xuICAgIGVhY2goYXJyLCBmdW5jdGlvbiAoZGF0YSwgaSkge1xuICAgICAgICByZXN1bHQgPSBmbihyZXN1bHQsIGRhdGEsIGkpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGRlZmF1bHQgcmVkdWNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVkdWNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/reduce.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/remove.js": /*!***********************************************!*\ !*** ./node_modules/@antv/util/esm/remove.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n/* harmony import */ var _pull_at__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pull-at */ \"./node_modules/@antv/util/esm/pull-at.js\");\n\n\nvar remove = function (arr, predicate) {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n var result = [];\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return result;\n }\n var i = -1;\n var indexes = [];\n var length = arr.length;\n while (++i < length) {\n var value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n Object(_pull_at__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arr, indexes);\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (remove);\n//# sourceMappingURL=remove.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vcmVtb3ZlLmpzPzMxY2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTBDO0FBQ1g7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsOERBQVc7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx3REFBTTtBQUNWO0FBQ0E7QUFDZSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL3JlbW92ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5TGlrZSBmcm9tICcuL2lzLWFycmF5LWxpa2UnO1xuaW1wb3J0IHB1bGxBdCBmcm9tICcuL3B1bGwtYXQnO1xudmFyIHJlbW92ZSA9IGZ1bmN0aW9uIChhcnIsIHByZWRpY2F0ZSkge1xuICAgIC8qKlxuICAgICAqIGNvbnN0IGFyciA9IFsxLCAyLCAzLCA0XVxuICAgICAqIGNvbnN0IGV2ZW5zID0gcmVtb3ZlKGFyciwgbiA9PiBuICUgMiA9PSAwKVxuICAgICAqIGNvbnNvbGUubG9nKGFycikgLy8gPT4gWzEsIDNdXG4gICAgICogY29uc29sZS5sb2coZXZlbnMpIC8vID0+IFsyLCA0XVxuICAgICAqL1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBpZiAoIWlzQXJyYXlMaWtlKGFycikpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgdmFyIGkgPSAtMTtcbiAgICB2YXIgaW5kZXhlcyA9IFtdO1xuICAgIHZhciBsZW5ndGggPSBhcnIubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyW2ldO1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpLCBhcnIpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICBpbmRleGVzLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVsbEF0KGFyciwgaW5kZXhlcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCByZW1vdmU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZW1vdmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/remove.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/request-animation-frame.js": /*!****************************************************************!*\ !*** ./node_modules/@antv/util/esm/request-animation-frame.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return requestAnimationFrame; });\nfunction requestAnimationFrame(fn) {\n var method = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n // @ts-ignore\n window.mozRequestAnimationFrame ||\n // @ts-ignore\n window.msRequestAnimationFrame ||\n function (f) {\n return setTimeout(f, 16);\n };\n return method(fn);\n}\n;\n//# sourceMappingURL=request-animation-frame.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUuanM/M2U2MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZShmbikge1xuICAgIHZhciBtZXRob2QgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8XG4gICAgICAgIHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB3aW5kb3cubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgd2luZG93Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8XG4gICAgICAgIGZ1bmN0aW9uIChmKSB7XG4gICAgICAgICAgICByZXR1cm4gc2V0VGltZW91dChmLCAxNik7XG4gICAgICAgIH07XG4gICAgcmV0dXJuIG1ldGhvZChmbik7XG59XG47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/request-animation-frame.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/set.js": /*!********************************************!*\ !*** ./node_modules/@antv/util/esm/set.js ***! \********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-object */ \"./node_modules/@antv/util/esm/is-object.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-string */ \"./node_modules/@antv/util/esm/is-string.js\");\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-number */ \"./node_modules/@antv/util/esm/is-number.js\");\n\n\n\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (obj, path, value) {\n var o = obj;\n var keyArr = Object(_is_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(path) ? path.split('.') : path;\n keyArr.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!Object(_is_object__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(o[key])) {\n o[key] = Object(_is_number__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(keyArr[idx + 1]) ? [] : {};\n }\n o = o[key];\n }\n else {\n o[key] = value;\n }\n });\n return obj;\n});\n//# sourceMappingURL=set.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vc2V0LmpzP2Y2NjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDQTtBQUNBO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnQjtBQUNoQjtBQUNBLGlCQUFpQiwwREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMERBQVE7QUFDekIseUJBQXlCLDBEQUFRO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL3NldC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzLW9iamVjdCc7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnLi9pcy1zdHJpbmcnO1xuaW1wb3J0IGlzTnVtYmVyIGZyb20gJy4vaXMtbnVtYmVyJztcbi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2RldmVsb3BpdC9kbHYvYmxvYi9tYXN0ZXIvaW5kZXguanNcbiAqIEBwYXJhbSBvYmpcbiAqIEBwYXJhbSBwYXRoXG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChvYmosIHBhdGgsIHZhbHVlKSB7XG4gICAgdmFyIG8gPSBvYmo7XG4gICAgdmFyIGtleUFyciA9IGlzU3RyaW5nKHBhdGgpID8gcGF0aC5zcGxpdCgnLicpIDogcGF0aDtcbiAgICBrZXlBcnIuZm9yRWFjaChmdW5jdGlvbiAoa2V5LCBpZHgpIHtcbiAgICAgICAgLy8g5LiN5piv5pyA5ZCO5LiA5LiqXG4gICAgICAgIGlmIChpZHggPCBrZXlBcnIubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgaWYgKCFpc09iamVjdChvW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgb1trZXldID0gaXNOdW1iZXIoa2V5QXJyW2lkeCArIDFdKSA/IFtdIDoge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvID0gb1trZXldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZXQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/set.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/size.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/size.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return size; });\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/@antv/util/esm/is-nil.js\");\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n\n\nfunction size(o) {\n if (Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(o)) {\n return 0;\n }\n if (Object(_is_array_like__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(o)) {\n return o.length;\n }\n return Object.keys(o).length;\n}\n//# sourceMappingURL=size.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vc2l6ZS5qcz84MWRmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZCO0FBQ2E7QUFDM0I7QUFDZixRQUFRLHVEQUFLO0FBQ2I7QUFDQTtBQUNBLFFBQVEsOERBQVc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9zaXplLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzTmlsIGZyb20gJy4vaXMtbmlsJztcbmltcG9ydCBpc0FycmF5bGlrZSBmcm9tICcuL2lzLWFycmF5LWxpa2UnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2l6ZShvKSB7XG4gICAgaWYgKGlzTmlsKG8pKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBpZiAoaXNBcnJheWxpa2UobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobykubGVuZ3RoO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2l6ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/size.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/some.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/some.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 只要有一个满足条件就返回 true\n * @param arr\n * @param func\n */\nvar some = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (func(arr[i], i))\n return true;\n }\n return false;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (some);\n//# sourceMappingURL=some.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vc29tZS5qcz83YjMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9zb21lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDlj6ropoHmnInkuIDkuKrmu6HotrPmnaHku7blsLHov5Tlm54gdHJ1ZVxuICogQHBhcmFtIGFyclxuICogQHBhcmFtIGZ1bmNcbiAqL1xudmFyIHNvbWUgPSBmdW5jdGlvbiAoYXJyLCBmdW5jKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGZ1bmMoYXJyW2ldLCBpKSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuZXhwb3J0IGRlZmF1bHQgc29tZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNvbWUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/some.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/sort-by.js": /*!************************************************!*\ !*** ./node_modules/@antv/util/esm/sort-by.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-string */ \"./node_modules/@antv/util/esm/is-string.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n\n\n\nfunction sortBy(arr, key) {\n var comparer;\n if (Object(_is_function__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(key)) {\n comparer = function (a, b) { return key(a) - key(b); };\n }\n else {\n var keys_1 = [];\n if (Object(_is_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(key)) {\n keys_1.push(key);\n }\n else if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(key)) {\n keys_1 = key;\n }\n comparer = function (a, b) {\n for (var i = 0; i < keys_1.length; i += 1) {\n var prop = keys_1[i];\n if (a[prop] > b[prop]) {\n return 1;\n }\n if (a[prop] < b[prop]) {\n return -1;\n }\n }\n return 0;\n };\n }\n arr.sort(comparer);\n return arr;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (sortBy);\n//# sourceMappingURL=sort-by.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vc29ydC1ieS5qcz8wNzQ2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0U7QUFDSTtBQUN2QztBQUNBO0FBQ0EsUUFBUSw0REFBVTtBQUNsQixvQ0FBb0Msd0JBQXdCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLFlBQVksMERBQVE7QUFDcEI7QUFDQTtBQUNBLGlCQUFpQix5REFBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsbUJBQW1CO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL3NvcnQtYnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5JztcbmltcG9ydCBpc1N0cmluZyBmcm9tICcuL2lzLXN0cmluZyc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbmZ1bmN0aW9uIHNvcnRCeShhcnIsIGtleSkge1xuICAgIHZhciBjb21wYXJlcjtcbiAgICBpZiAoaXNGdW5jdGlvbihrZXkpKSB7XG4gICAgICAgIGNvbXBhcmVyID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGtleShhKSAtIGtleShiKTsgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBrZXlzXzEgPSBbXTtcbiAgICAgICAgaWYgKGlzU3RyaW5nKGtleSkpIHtcbiAgICAgICAgICAgIGtleXNfMS5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICBrZXlzXzEgPSBrZXk7XG4gICAgICAgIH1cbiAgICAgICAgY29tcGFyZXIgPSBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzXzEubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcCA9IGtleXNfMVtpXTtcbiAgICAgICAgICAgICAgICBpZiAoYVtwcm9wXSA+IGJbcHJvcF0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhW3Byb3BdIDwgYltwcm9wXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFyci5zb3J0KGNvbXBhcmVyKTtcbiAgICByZXR1cm4gYXJyO1xufVxuZXhwb3J0IGRlZmF1bHQgc29ydEJ5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c29ydC1ieS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/sort-by.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/starts-with.js": /*!****************************************************!*\ !*** ./node_modules/@antv/util/esm/starts-with.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-string */ \"./node_modules/@antv/util/esm/is-string.js\");\n\n\nfunction startsWith(arr, e) {\n return (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr) || Object(_is_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arr)) ? arr[0] === e : false;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (startsWith);\n//# sourceMappingURL=starts-with.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vc3RhcnRzLXdpdGguanM/OTRmYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDRTtBQUNuQztBQUNBLFlBQVkseURBQU8sU0FBUywwREFBUTtBQUNwQztBQUNlLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vc3RhcnRzLXdpdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5JztcbmltcG9ydCBpc1N0cmluZyBmcm9tICcuL2lzLXN0cmluZyc7XG5mdW5jdGlvbiBzdGFydHNXaXRoKGFyciwgZSkge1xuICAgIHJldHVybiAoaXNBcnJheShhcnIpIHx8IGlzU3RyaW5nKGFycikpID8gYXJyWzBdID09PSBlIDogZmFsc2U7XG59XG5leHBvcnQgZGVmYXVsdCBzdGFydHNXaXRoO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RhcnRzLXdpdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/starts-with.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/substitute.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/substitute.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nfunction substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n return (o[name] === undefined) ? '' : o[name];\n });\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (substitute);\n//# sourceMappingURL=substitute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vc3Vic3RpdHV0ZS5qcz8wMjlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsS0FBSyxLQUFLO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ2UseUVBQVUsRUFBQztBQUMxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS9zdWJzdGl0dXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gc3Vic3RpdHV0ZShzdHIsIG8pIHtcbiAgICBpZiAoIXN0ciB8fCAhbykge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcXFw/XFx7KFtee31dKylcXH0vZywgZnVuY3Rpb24gKG1hdGNoLCBuYW1lKSB7XG4gICAgICAgIGlmIChtYXRjaC5jaGFyQXQoMCkgPT09ICdcXFxcJykge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoLnNsaWNlKDEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAob1tuYW1lXSA9PT0gdW5kZWZpbmVkKSA/ICcnIDogb1tuYW1lXTtcbiAgICB9KTtcbn1cbmV4cG9ydCBkZWZhdWx0IHN1YnN0aXR1dGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdWJzdGl0dXRlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/substitute.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/throttle.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/throttle.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options)\n options = {};\n var later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout)\n context = args = null;\n };\n var throttled = function () {\n var now = Date.now();\n if (!previous && options.leading === false)\n previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout)\n context = args = null;\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n return throttled;\n});\n//# sourceMappingURL=throttle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdGhyb3R0bGUuanM/ZjM3NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS90aHJvdHRsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgIHZhciB0aW1lb3V0LCBjb250ZXh0LCBhcmdzLCByZXN1bHQ7XG4gICAgdmFyIHByZXZpb3VzID0gMDtcbiAgICBpZiAoIW9wdGlvbnMpXG4gICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHByZXZpb3VzID0gb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSA/IDAgOiBEYXRlLm5vdygpO1xuICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgaWYgKCF0aW1lb3V0KVxuICAgICAgICAgICAgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgIH07XG4gICAgdmFyIHRocm90dGxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGlmICghcHJldmlvdXMgJiYgb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSlcbiAgICAgICAgICAgIHByZXZpb3VzID0gbm93O1xuICAgICAgICB2YXIgcmVtYWluaW5nID0gd2FpdCAtIChub3cgLSBwcmV2aW91cyk7XG4gICAgICAgIGNvbnRleHQgPSB0aGlzO1xuICAgICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBpZiAocmVtYWluaW5nIDw9IDAgfHwgcmVtYWluaW5nID4gd2FpdCkge1xuICAgICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2aW91cyA9IG5vdztcbiAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgICAgICBpZiAoIXRpbWVvdXQpXG4gICAgICAgICAgICAgICAgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF0aW1lb3V0ICYmIG9wdGlvbnMudHJhaWxpbmcgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgcmVtYWluaW5nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgdGhyb3R0bGVkLmNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICBwcmV2aW91cyA9IDA7XG4gICAgICAgIHRpbWVvdXQgPSBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gdGhyb3R0bGVkO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aHJvdHRsZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/throttle.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/to-array.js": /*!*************************************************!*\ !*** ./node_modules/@antv/util/esm/to-array.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/@antv/util/esm/is-array-like.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) ? Array.prototype.slice.call(value) : [];\n});\n//# sourceMappingURL=to-array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdG8tYXJyYXkuanM/MmYyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQTBDO0FBQzFCO0FBQ2hCLFdBQVcsOERBQVc7QUFDdEIsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdG8tYXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pcy1hcnJheS1saWtlJztcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gaXNBcnJheUxpa2UodmFsdWUpID8gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodmFsdWUpIDogW107XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvLWFycmF5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/to-array.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/to-degree.js": /*!**************************************************!*\ !*** ./node_modules/@antv/util/esm/to-degree.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar DEGREE = 180 / Math.PI;\nvar toDegree = function (radian) {\n return DEGREE * radian;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (toDegree);\n//# sourceMappingURL=to-degree.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdG8tZGVncmVlLmpzPzk5NTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdG8tZGVncmVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIERFR1JFRSA9IDE4MCAvIE1hdGguUEk7XG52YXIgdG9EZWdyZWUgPSBmdW5jdGlvbiAocmFkaWFuKSB7XG4gICAgcmV0dXJuIERFR1JFRSAqIHJhZGlhbjtcbn07XG5leHBvcnQgZGVmYXVsdCB0b0RlZ3JlZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvLWRlZ3JlZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/to-degree.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/to-integer.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/to-integer.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (parseInt);\n//# sourceMappingURL=to-integer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdG8taW50ZWdlci5qcz80MzBhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWUsdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS90by1pbnRlZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgcGFyc2VJbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10by1pbnRlZ2VyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/to-integer.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/to-radian.js": /*!**************************************************!*\ !*** ./node_modules/@antv/util/esm/to-radian.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar RADIAN = Math.PI / 180;\nvar toRadian = function (degree) {\n return RADIAN * degree;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (toRadian);\n//# sourceMappingURL=to-radian.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdG8tcmFkaWFuLmpzP2UxNzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdG8tcmFkaWFuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFJBRElBTiA9IE1hdGguUEkgLyAxODA7XG52YXIgdG9SYWRpYW4gPSBmdW5jdGlvbiAoZGVncmVlKSB7XG4gICAgcmV0dXJuIFJBRElBTiAqIGRlZ3JlZTtcbn07XG5leHBvcnQgZGVmYXVsdCB0b1JhZGlhbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvLXJhZGlhbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/to-radian.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/to-string.js": /*!**************************************************!*\ !*** ./node_modules/@antv/util/esm/to-string.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/@antv/util/esm/is-nil.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n if (Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value))\n return '';\n return value.toString();\n});\n//# sourceMappingURL=to-string.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdG8tc3RyaW5nLmpzPzFiNzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUE2QjtBQUNiO0FBQ2hCLFFBQVEsdURBQUs7QUFDYjtBQUNBO0FBQ0EsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdG8tc3RyaW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzTmlsIGZyb20gJy4vaXMtbmlsJztcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoaXNOaWwodmFsdWUpKVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvLXN0cmluZy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/to-string.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/union.js": /*!**********************************************!*\ !*** ./node_modules/@antv/util/esm/union.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uniq__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uniq */ \"./node_modules/@antv/util/esm/uniq.js\");\n\nvar union = function () {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return Object(_uniq__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([].concat.apply([], sources));\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (union);\n//# sourceMappingURL=union.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdW5pb24uanM/ZDgyZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQTBCO0FBQzFCO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQSxXQUFXLHFEQUFJO0FBQ2Y7QUFDZSxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL3VuaW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHVuaXEgZnJvbSAnLi91bmlxJztcbnZhciB1bmlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHNvdXJjZXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIHVuaXEoW10uY29uY2F0LmFwcGx5KFtdLCBzb3VyY2VzKSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgdW5pb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bmlvbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/union.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/uniq.js": /*!*********************************************!*\ !*** ./node_modules/@antv/util/esm/uniq.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return uniq; });\nfunction uniq(arr, cache) {\n if (cache === void 0) { cache = new Map(); }\n var r = [];\n if (Array.isArray(arr)) {\n for (var i = 0, len = arr.length; i < len; i++) {\n var item = arr[i];\n // 加一个 cache,提升性能\n if (!cache.has(item)) {\n r.push(item);\n cache.set(item, true);\n }\n }\n }\n return r;\n}\n//# sourceMappingURL=uniq.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdW5pcS5qcz8zODdiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmLDJCQUEyQixtQkFBbUI7QUFDOUM7QUFDQTtBQUNBLHlDQUF5QyxTQUFTO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdW5pcS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuaXEoYXJyLCBjYWNoZSkge1xuICAgIGlmIChjYWNoZSA9PT0gdm9pZCAwKSB7IGNhY2hlID0gbmV3IE1hcCgpOyB9XG4gICAgdmFyIHIgPSBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhcnIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBpdGVtID0gYXJyW2ldO1xuICAgICAgICAgICAgLy8g5Yqg5LiA5LiqIGNhY2hl77yM5o+Q5Y2H5oCn6IO9XG4gICAgICAgICAgICBpZiAoIWNhY2hlLmhhcyhpdGVtKSkge1xuICAgICAgICAgICAgICAgIHIucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICBjYWNoZS5zZXQoaXRlbSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bmlxLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/uniq.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/unique-id.js": /*!**************************************************!*\ !*** ./node_modules/@antv/util/esm/unique-id.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar map = {};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (prefix) {\n prefix = prefix || 'g';\n if (!map[prefix]) {\n map[prefix] = 1;\n }\n else {\n map[prefix] += 1;\n }\n return prefix + map[prefix];\n});\n//# sourceMappingURL=unique-id.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdW5pcXVlLWlkLmpzPzkxYjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdW5pcXVlLWlkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG1hcCA9IHt9O1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChwcmVmaXgpIHtcbiAgICBwcmVmaXggPSBwcmVmaXggfHwgJ2cnO1xuICAgIGlmICghbWFwW3ByZWZpeF0pIHtcbiAgICAgICAgbWFwW3ByZWZpeF0gPSAxO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbWFwW3ByZWZpeF0gKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeCArIG1hcFtwcmVmaXhdO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bmlxdWUtaWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/unique-id.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/upper-case.js": /*!***************************************************!*\ !*** ./node_modules/@antv/util/esm/upper-case.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./to-string */ \"./node_modules/@antv/util/esm/to-string.js\");\n\nvar upperCase = function (str) {\n return Object(_to_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(str).toUpperCase();\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (upperCase);\n//# sourceMappingURL=upper-case.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdXBwZXItY2FzZS5qcz9mNjE2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBbUM7QUFDbkM7QUFDQSxXQUFXLDBEQUFRO0FBQ25CO0FBQ2Usd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS91cHBlci1jYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG8tc3RyaW5nJztcbnZhciB1cHBlckNhc2UgPSBmdW5jdGlvbiAoc3RyKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nKHN0cikudG9VcHBlckNhc2UoKTtcbn07XG5leHBvcnQgZGVmYXVsdCB1cHBlckNhc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11cHBlci1jYXNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/upper-case.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/upper-first.js": /*!****************************************************!*\ !*** ./node_modules/@antv/util/esm/upper-first.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./to-string */ \"./node_modules/@antv/util/esm/to-string.js\");\n\nvar upperFirst = function (value) {\n var str = Object(_to_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (upperFirst);\n//# sourceMappingURL=upper-first.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdXBwZXItZmlyc3QuanM/ZDY0YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW1DO0FBQ25DO0FBQ0EsY0FBYywwREFBUTtBQUN0QjtBQUNBO0FBQ2UseUVBQVUsRUFBQztBQUMxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS91cHBlci1maXJzdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0b1N0cmluZyBmcm9tICcuL3RvLXN0cmluZyc7XG52YXIgdXBwZXJGaXJzdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHZhciBzdHIgPSB0b1N0cmluZyh2YWx1ZSk7XG4gICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zdWJzdHJpbmcoMSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgdXBwZXJGaXJzdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVwcGVyLWZpcnN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/upper-first.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/values-of-key.js": /*!******************************************************!*\ !*** ./node_modules/@antv/util/esm/values-of-key.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/@antv/util/esm/is-nil.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (data, name) {\n var rst = [];\n var tmpMap = {};\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!Object(_is_nil__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n // flatten\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n value = [value];\n }\n for (var j = 0; j < value.length; j++) {\n var val = value[j];\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n }\n }\n }\n return rst;\n});\n//# sourceMappingURL=values-of-key.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdmFsdWVzLW9mLWtleS5qcz80NTY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNKO0FBQ2I7QUFDaEI7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBLGFBQWEsdURBQUs7QUFDbEI7QUFDQSxpQkFBaUIseURBQU87QUFDeEI7QUFDQTtBQUNBLDJCQUEyQixrQkFBa0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYW50di91dGlsL2VzbS92YWx1ZXMtb2Yta2V5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnLi9pcy1uaWwnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChkYXRhLCBuYW1lKSB7XG4gICAgdmFyIHJzdCA9IFtdO1xuICAgIHZhciB0bXBNYXAgPSB7fTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG9iaiA9IGRhdGFbaV07XG4gICAgICAgIHZhciB2YWx1ZSA9IG9ialtuYW1lXTtcbiAgICAgICAgaWYgKCFpc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIGZsYXR0ZW5cbiAgICAgICAgICAgIGlmICghaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IFt2YWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbHVlLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbCA9IHZhbHVlW2pdO1xuICAgICAgICAgICAgICAgIC8vIHVuaXF1ZVxuICAgICAgICAgICAgICAgIGlmICghdG1wTWFwW3ZhbF0pIHtcbiAgICAgICAgICAgICAgICAgICAgcnN0LnB1c2godmFsKTtcbiAgICAgICAgICAgICAgICAgICAgdG1wTWFwW3ZhbF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcnN0O1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD12YWx1ZXMtb2Yta2V5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/values-of-key.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/values.js": /*!***********************************************!*\ !*** ./node_modules/@antv/util/esm/values.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./each */ \"./node_modules/@antv/util/esm/each.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/@antv/util/esm/is-function.js\");\n\n\n// @ts-ignore\nvar values = Object.values ? function (obj) { return Object.values(obj); } : function (obj) {\n var result = [];\n Object(_each__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(obj, function (value, key) {\n if (!(Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (values);\n//# sourceMappingURL=values.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vdmFsdWVzLmpzPzZkOTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTBCO0FBQ2E7QUFDdkM7QUFDQSw2Q0FBNkMsMkJBQTJCLEVBQUU7QUFDMUU7QUFDQSxJQUFJLHFEQUFJO0FBQ1IsY0FBYyw0REFBVTtBQUN4QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDZSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BhbnR2L3V0aWwvZXNtL3ZhbHVlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlYWNoIGZyb20gJy4vZWFjaCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbi8vIEB0cy1pZ25vcmVcbnZhciB2YWx1ZXMgPSBPYmplY3QudmFsdWVzID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopOyB9IDogZnVuY3Rpb24gKG9iaikge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBlYWNoKG9iaiwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKCEoaXNGdW5jdGlvbihvYmopICYmIGtleSA9PT0gJ3Byb3RvdHlwZScpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCBkZWZhdWx0IHZhbHVlcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZhbHVlcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/values.js\n"); /***/ }), /***/ "./node_modules/@antv/util/esm/wrap-behavior.js": /*!******************************************************!*\ !*** ./node_modules/@antv/util/esm/wrap-behavior.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 封装事件,便于使用上下文this,和便于解除事件时使用\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction wrapBehavior(obj, action) {\n if (obj['_wrap_' + action]) {\n return obj['_wrap_' + action];\n }\n var method = function (e) {\n obj[action](e);\n };\n obj['_wrap_' + action] = method;\n return method;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (wrapBehavior);\n//# sourceMappingURL=wrap-behavior.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vd3JhcC1iZWhhdmlvci5qcz8wYTQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLFNBQVM7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLDJFQUFZLEVBQUM7QUFDNUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFudHYvdXRpbC9lc20vd3JhcC1iZWhhdmlvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5bCB6KOF5LqL5Lu277yM5L6/5LqO5L2/55So5LiK5LiL5paHdGhpcyzlkozkvr/kuo7op6PpmaTkuovku7bml7bkvb/nlKhcbiAqIEBwcm90ZWN0ZWRcbiAqIEBwYXJhbSAge09iamVjdH0gb2JqICAg5a+56LGhXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGFjdGlvbiDkuovku7blkI3np7BcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSAgICAgICAg6L+U5Zue5LqL5Lu25aSE55CG5Ye95pWwXG4gKi9cbmZ1bmN0aW9uIHdyYXBCZWhhdmlvcihvYmosIGFjdGlvbikge1xuICAgIGlmIChvYmpbJ193cmFwXycgKyBhY3Rpb25dKSB7XG4gICAgICAgIHJldHVybiBvYmpbJ193cmFwXycgKyBhY3Rpb25dO1xuICAgIH1cbiAgICB2YXIgbWV0aG9kID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgb2JqW2FjdGlvbl0oZSk7XG4gICAgfTtcbiAgICBvYmpbJ193cmFwXycgKyBhY3Rpb25dID0gbWV0aG9kO1xuICAgIHJldHVybiBtZXRob2Q7XG59XG5leHBvcnQgZGVmYXVsdCB3cmFwQmVoYXZpb3I7XG4vLyMgc291cmNlTWFwcGluZ1VSTD13cmFwLWJlaGF2aW9yLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@antv/util/esm/wrap-behavior.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js": /*!*************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}\n\nmodule.exports = _applyDecoratedDescriptor, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3IuanM/NTNlYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5LCBkZWNvcmF0b3JzLCBkZXNjcmlwdG9yLCBjb250ZXh0KSB7XG4gIHZhciBkZXNjID0ge307XG4gIE9iamVjdC5rZXlzKGRlc2NyaXB0b3IpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGRlc2Nba2V5XSA9IGRlc2NyaXB0b3Jba2V5XTtcbiAgfSk7XG4gIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlO1xuICBkZXNjLmNvbmZpZ3VyYWJsZSA9ICEhZGVzYy5jb25maWd1cmFibGU7XG5cbiAgaWYgKCd2YWx1ZScgaW4gZGVzYyB8fCBkZXNjLmluaXRpYWxpemVyKSB7XG4gICAgZGVzYy53cml0YWJsZSA9IHRydWU7XG4gIH1cblxuICBkZXNjID0gZGVjb3JhdG9ycy5zbGljZSgpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24gKGRlc2MsIGRlY29yYXRvcikge1xuICAgIHJldHVybiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYykgfHwgZGVzYztcbiAgfSwgZGVzYyk7XG5cbiAgaWYgKGNvbnRleHQgJiYgZGVzYy5pbml0aWFsaXplciAhPT0gdm9pZCAwKSB7XG4gICAgZGVzYy52YWx1ZSA9IGRlc2MuaW5pdGlhbGl6ZXIgPyBkZXNjLmluaXRpYWxpemVyLmNhbGwoY29udGV4dCkgOiB2b2lkIDA7XG4gICAgZGVzYy5pbml0aWFsaXplciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChkZXNjLmluaXRpYWxpemVyID09PSB2b2lkIDApIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYyk7XG4gICAgZGVzYyA9IG51bGw7XG4gIH1cblxuICByZXR1cm4gZGVzYztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/arrayLikeToArray.js": /*!*****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzPzVhNDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQSx3Q0FBd0MsU0FBUztBQUNqRDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJyMltpXSA9IGFycltpXTtcbiAgfVxuXG4gIHJldHVybiBhcnIyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/arrayWithHoles.js": /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhIb2xlcy5qcz9jMTM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js": /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhvdXRIb2xlcy5qcz8yMjM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QixtQkFBTyxDQUFDLHdGQUF1Qjs7QUFFdEQ7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRob3V0SG9sZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkoYXJyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js": /*!**********************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanM/M2M5NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7XG4gIGlmIChzZWxmID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cblxuICByZXR1cm4gc2VsZjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js": /*!*****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzP2M5NzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICB0cnkge1xuICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlamVjdChlcnJvcik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGluZm8uZG9uZSkge1xuICAgIHJlc29sdmUodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcyxcbiAgICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuXG4gICAgICBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhlcnIpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICB9XG5cbiAgICAgIF9uZXh0KHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2FzeW5jVG9HZW5lcmF0b3IsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/classCallCheck.js": /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcz85NzBiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/classCallCheck.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/createClass.js": /*!************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/createClass.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcz81YmMzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KTtcbiAgcmV0dXJuIENvbnN0cnVjdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVDbGFzcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/createClass.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/defineProperty.js": /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcz85NTIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9kZWZpbmVQcm9wZXJ0eSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/defineProperty.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js": /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcz8zNmM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2YuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICBtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzO1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/inherits.js": /*!*********************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/inherits.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"./node_modules/@babel/runtime/helpers/setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcz9lZDZkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFxQixtQkFBTyxDQUFDLG9GQUFxQjs7QUFFbEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB9XG5cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/inherits.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/initializerDefineProperty.js": /*!**************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/initializerDefineProperty.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n}\n\nmodule.exports = _initializerDefineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5LmpzP2M4NmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzY3JpcHRvciwgY29udGV4dCkge1xuICBpZiAoIWRlc2NyaXB0b3IpIHJldHVybjtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHksIHtcbiAgICBlbnVtZXJhYmxlOiBkZXNjcmlwdG9yLmVudW1lcmFibGUsXG4gICAgY29uZmlndXJhYmxlOiBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSxcbiAgICB3cml0YWJsZTogZGVzY3JpcHRvci53cml0YWJsZSxcbiAgICB2YWx1ZTogZGVzY3JpcHRvci5pbml0aWFsaXplciA/IGRlc2NyaXB0b3IuaW5pdGlhbGl6ZXIuY2FsbChjb250ZXh0KSA6IHZvaWQgMFxuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/initializerDefineProperty.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/initializerWarningHelper.js": /*!*************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/initializerWarningHelper.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.');\n}\n\nmodule.exports = _initializerWarningHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIuanM/ZDQwMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyKGRlc2NyaXB0b3IsIGNvbnRleHQpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdEZWNvcmF0aW5nIGNsYXNzIHByb3BlcnR5IGZhaWxlZC4gUGxlYXNlIGVuc3VyZSB0aGF0ICcgKyAncHJvcG9zYWwtY2xhc3MtcHJvcGVydGllcyBpcyBlbmFibGVkIGFuZCBydW5zIGFmdGVyIHRoZSBkZWNvcmF0b3JzIHRyYW5zZm9ybS4nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/initializerWarningHelper.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/iterableToArray.js": /*!****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanM/MTFiMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/iterableToArray.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js": /*!*********************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! \*********************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcz85YjQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSwyQkFBMkIsK0JBQStCO0FBQzFEOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5TGltaXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7XG4gIHZhciBfaSA9IGFyciA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXTtcblxuICBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuO1xuICB2YXIgX2FyciA9IFtdO1xuICB2YXIgX24gPSB0cnVlO1xuICB2YXIgX2QgPSBmYWxzZTtcblxuICB2YXIgX3MsIF9lO1xuXG4gIHRyeSB7XG4gICAgZm9yIChfaSA9IF9pLmNhbGwoYXJyKTsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2QgPSB0cnVlO1xuICAgIF9lID0gZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIF9hcnI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheUxpbWl0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/nonIterableRest.js": /*!****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanM/YzI0MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVJlc3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/nonIterableRest.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js": /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVNwcmVhZC5qcz8wNjc2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js": /*!**************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _typeof = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/typeof.js\")[\"default\"];\n\nvar assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzPzZiNTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLG9FQUFhOztBQUVuQyw0QkFBNEIsbUJBQU8sQ0FBQyxrR0FBNEI7O0FBRWhFO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuXG52YXIgYXNzZXJ0VGhpc0luaXRpYWxpemVkID0gcmVxdWlyZShcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCIpO1xuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7XG4gIGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgcmV0dXJuIGNhbGw7XG4gIH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js": /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcz80YTRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/slicedToArray.js": /*!**************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/slicedToArray.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ \"./node_modules/@babel/runtime/helpers/arrayWithHoles.js\");\n\nvar iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ \"./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\");\n\nvar nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ \"./node_modules/@babel/runtime/helpers/nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzPzI3OGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCLG1CQUFPLENBQUMsb0ZBQXFCOztBQUVsRCwyQkFBMkIsbUJBQU8sQ0FBQyxnR0FBMkI7O0FBRTlELGlDQUFpQyxtQkFBTyxDQUFDLDRHQUFpQzs7QUFFMUUsc0JBQXNCLG1CQUFPLENBQUMsc0ZBQXNCOztBQUVwRDtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5V2l0aEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRoSG9sZXMuanNcIik7XG5cbnZhciBpdGVyYWJsZVRvQXJyYXlMaW1pdCA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCIpO1xuXG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcblxudmFyIG5vbkl0ZXJhYmxlUmVzdCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiKTtcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhhcnIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfc2xpY2VkVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/slicedToArray.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/toConsumableArray.js": /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ \"./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\");\n\nvar iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ \"./node_modules/@babel/runtime/helpers/iterableToArray.js\");\n\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ \"./node_modules/@babel/runtime/helpers/nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcz80NDhhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdCQUF3QixtQkFBTyxDQUFDLDBGQUF3Qjs7QUFFeEQsc0JBQXNCLG1CQUFPLENBQUMsc0ZBQXNCOztBQUVwRCxpQ0FBaUMsbUJBQU8sQ0FBQyw0R0FBaUM7O0FBRTFFLHdCQUF3QixtQkFBTyxDQUFDLDBGQUF3Qjs7QUFFeEQ7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcblxudmFyIGl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiKTtcblxudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG5cbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IGl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/toConsumableArray.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/typeof.js": /*!*******************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/typeof.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanM/NzAzNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gIH0gOiBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3R5cGVvZihvYmopO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/typeof.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": /*!***************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcz82NjEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QixtQkFBTyxDQUFDLHdGQUF1Qjs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\n"); /***/ }), /***/ "./node_modules/@babel/runtime/regenerator/index.js": /*!**********************************************************!*\ !*** ./node_modules/@babel/runtime/regenerator/index.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! regenerator-runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanM/YTM0YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywwRUFBcUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWdlbmVyYXRvci1ydW50aW1lXCIpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/regenerator/index.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/index.js": /*!*************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/index.js ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/**\n * Copyright (c) 2014, Chris Pettitt\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar lib = __webpack_require__(/*! ./lib */ \"./node_modules/@dagrejs/graphlib/lib/index.js\");\n\nmodule.exports = {\n Graph: lib.Graph,\n json: __webpack_require__(/*! ./lib/json */ \"./node_modules/@dagrejs/graphlib/lib/json.js\"),\n alg: __webpack_require__(/*! ./lib/alg */ \"./node_modules/@dagrejs/graphlib/lib/alg/index.js\"),\n version: lib.version\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvaW5kZXguanM/M2ZjZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtCQUErQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLG1CQUFPLENBQUMsNERBQU87O0FBRXpCO0FBQ0E7QUFDQSxRQUFRLG1CQUFPLENBQUMsZ0VBQVk7QUFDNUIsT0FBTyxtQkFBTyxDQUFDLG9FQUFXO0FBQzFCO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNCwgQ2hyaXMgUGV0dGl0dFxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuICpcbiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpc1xuICogbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvblxuICogYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnNcbiAqIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0XG4gKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCIgQU5EXG4gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRVxuICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SXG4gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUlxuICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSxcbiAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG4gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbnZhciBsaWIgPSByZXF1aXJlKFwiLi9saWJcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBHcmFwaDogbGliLkdyYXBoLFxuICBqc29uOiByZXF1aXJlKFwiLi9saWIvanNvblwiKSxcbiAgYWxnOiByZXF1aXJlKFwiLi9saWIvYWxnXCIpLFxuICB2ZXJzaW9uOiBsaWIudmVyc2lvblxufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/index.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/components.js": /*!**************************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/components.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\");\n\nmodule.exports = components;\n\nfunction components(g) {\n var visited = {},\n cmpts = [],\n cmpt;\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n cmpt.push(v);\n _.each(g.successors(v), dfs);\n _.each(g.predecessors(v), dfs);\n }\n\n _.each(g.nodes(), function(v) {\n cmpt = [];\n dfs(v);\n if (cmpt.length) {\n cmpts.push(cmpt);\n }\n });\n\n return cmpts;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9jb21wb25lbnRzLmpzP2I2OTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsUUFBUSxtQkFBTyxDQUFDLGlFQUFXOztBQUUzQjs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AZGFncmVqcy9ncmFwaGxpYi9saWIvYWxnL2NvbXBvbmVudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcG9uZW50cztcblxuZnVuY3Rpb24gY29tcG9uZW50cyhnKSB7XG4gIHZhciB2aXNpdGVkID0ge30sXG4gICAgICBjbXB0cyA9IFtdLFxuICAgICAgY21wdDtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkgcmV0dXJuO1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIGNtcHQucHVzaCh2KTtcbiAgICBfLmVhY2goZy5zdWNjZXNzb3JzKHYpLCBkZnMpO1xuICAgIF8uZWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZGZzKTtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBjbXB0ID0gW107XG4gICAgZGZzKHYpO1xuICAgIGlmIChjbXB0Lmxlbmd0aCkge1xuICAgICAgY21wdHMucHVzaChjbXB0KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjbXB0cztcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/components.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/dfs.js": /*!*******************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/dfs.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\");\n\nmodule.exports = dfs;\n\n/*\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * Order must be one of \"pre\" or \"post\".\n */\nfunction dfs(g, vs, order) {\n if (!_.isArray(vs)) {\n vs = [vs];\n }\n\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n\n var acc = [],\n visited = {};\n _.each(vs, function(v) {\n if (!g.hasNode(v)) {\n throw new Error(\"Graph does not have node: \" + v);\n }\n\n doDfs(g, v, order === \"post\", visited, navigation, acc);\n });\n return acc;\n}\n\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!_.has(visited, v)) {\n visited[v] = true;\n\n if (!postorder) { acc.push(v); }\n _.each(navigation(v), function(w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) { acc.push(v); }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9kZnMuanM/M2U3MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRLG1CQUFPLENBQUMsaUVBQVc7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLGFBQWE7QUFDbEM7QUFDQTtBQUNBLEtBQUs7QUFDTCxvQkFBb0IsYUFBYTtBQUNqQztBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BkYWdyZWpzL2dyYXBobGliL2xpYi9hbGcvZGZzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRmcztcblxuLypcbiAqIEEgaGVscGVyIHRoYXQgcHJlZm9ybXMgYSBwcmUtIG9yIHBvc3Qtb3JkZXIgdHJhdmVyc2FsIG9uIHRoZSBpbnB1dCBncmFwaFxuICogYW5kIHJldHVybnMgdGhlIG5vZGVzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgdmlzaXRlZC4gSWYgdGhlIGdyYXBoIGlzXG4gKiB1bmRpcmVjdGVkIHRoZW4gdGhpcyBhbGdvcml0aG0gd2lsbCBuYXZpZ2F0ZSB1c2luZyBuZWlnaGJvcnMuIElmIHRoZSBncmFwaFxuICogaXMgZGlyZWN0ZWQgdGhlbiB0aGlzIGFsZ29yaXRobSB3aWxsIG5hdmlnYXRlIHVzaW5nIHN1Y2Nlc3NvcnMuXG4gKlxuICogT3JkZXIgbXVzdCBiZSBvbmUgb2YgXCJwcmVcIiBvciBcInBvc3RcIi5cbiAqL1xuZnVuY3Rpb24gZGZzKGcsIHZzLCBvcmRlcikge1xuICBpZiAoIV8uaXNBcnJheSh2cykpIHtcbiAgICB2cyA9IFt2c107XG4gIH1cblxuICB2YXIgbmF2aWdhdGlvbiA9IChnLmlzRGlyZWN0ZWQoKSA/IGcuc3VjY2Vzc29ycyA6IGcubmVpZ2hib3JzKS5iaW5kKGcpO1xuXG4gIHZhciBhY2MgPSBbXSxcbiAgICAgIHZpc2l0ZWQgPSB7fTtcbiAgXy5lYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKCFnLmhhc05vZGUodikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkdyYXBoIGRvZXMgbm90IGhhdmUgbm9kZTogXCIgKyB2KTtcbiAgICB9XG5cbiAgICBkb0RmcyhnLCB2LCBvcmRlciA9PT0gXCJwb3N0XCIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYyk7XG4gIH0pO1xuICByZXR1cm4gYWNjO1xufVxuXG5mdW5jdGlvbiBkb0RmcyhnLCB2LCBwb3N0b3JkZXIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYykge1xuICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHYpKSB7XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG5cbiAgICBpZiAoIXBvc3RvcmRlcikgeyBhY2MucHVzaCh2KTsgfVxuICAgIF8uZWFjaChuYXZpZ2F0aW9uKHYpLCBmdW5jdGlvbih3KSB7XG4gICAgICBkb0RmcyhnLCB3LCBwb3N0b3JkZXIsIHZpc2l0ZWQsIG5hdmlnYXRpb24sIGFjYyk7XG4gICAgfSk7XG4gICAgaWYgKHBvc3RvcmRlcikgeyBhY2MucHVzaCh2KTsgfVxuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/dfs.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/dijkstra-all.js": /*!****************************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/dijkstra-all.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var dijkstra = __webpack_require__(/*! ./dijkstra */ \"./node_modules/@dagrejs/graphlib/lib/alg/dijkstra.js\"),\n _ = __webpack_require__(/*! ../lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\");\n\nmodule.exports = dijkstraAll;\n\nfunction dijkstraAll(g, weightFunc, edgeFunc) {\n return _.transform(g.nodes(), function(acc, v) {\n acc[v] = dijkstra(g, v, weightFunc, edgeFunc);\n }, {});\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS1hbGwuanM/OTQ1NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsd0VBQVk7QUFDbkMsUUFBUSxtQkFBTyxDQUFDLGlFQUFXOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AZGFncmVqcy9ncmFwaGxpYi9saWIvYWxnL2RpamtzdHJhLWFsbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkaWprc3RyYSA9IHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpLFxuICAgIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRpamtzdHJhQWxsO1xuXG5mdW5jdGlvbiBkaWprc3RyYUFsbChnLCB3ZWlnaHRGdW5jLCBlZGdlRnVuYykge1xuICByZXR1cm4gXy50cmFuc2Zvcm0oZy5ub2RlcygpLCBmdW5jdGlvbihhY2MsIHYpIHtcbiAgICBhY2Nbdl0gPSBkaWprc3RyYShnLCB2LCB3ZWlnaHRGdW5jLCBlZGdlRnVuYyk7XG4gIH0sIHt9KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/dijkstra-all.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/dijkstra.js": /*!************************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/dijkstra.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\"),\n PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ \"./node_modules/@dagrejs/graphlib/lib/data/priority-queue.js\");\n\nmodule.exports = dijkstra;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(g, String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n var results = {},\n pq = new PriorityQueue(),\n v, vEntry;\n\n var updateNeighbors = function(edge) {\n var w = edge.v !== v ? edge.v : edge.w,\n wEntry = results[w],\n weight = weightFn(edge),\n distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\"dijkstra does not allow negative edge weights. \" +\n \"Bad edge: \" + edge + \" Weight: \" + weight);\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function(v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS5qcz9iOGZmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyxpRUFBVztBQUMzQixvQkFBb0IsbUJBQU8sQ0FBQywyRkFBd0I7O0FBRXBEOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxzQkFBc0IsRUFBRTtBQUNwRTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKSxcbiAgICBQcmlvcml0eVF1ZXVlID0gcmVxdWlyZShcIi4uL2RhdGEvcHJpb3JpdHktcXVldWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmE7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GVU5DID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZGlqa3N0cmEoZywgc291cmNlLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHJldHVybiBydW5EaWprc3RyYShnLCBTdHJpbmcoc291cmNlKSxcbiAgICAgICAgICAgICAgICAgICAgIHdlaWdodEZuIHx8IERFRkFVTFRfV0VJR0hUX0ZVTkMsXG4gICAgICAgICAgICAgICAgICAgICBlZGdlRm4gfHwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5vdXRFZGdlcyh2KTsgfSk7XG59XG5cbmZ1bmN0aW9uIHJ1bkRpamtzdHJhKGcsIHNvdXJjZSwgd2VpZ2h0Rm4sIGVkZ2VGbikge1xuICB2YXIgcmVzdWx0cyA9IHt9LFxuICAgICAgcHEgPSBuZXcgUHJpb3JpdHlRdWV1ZSgpLFxuICAgICAgdiwgdkVudHJ5O1xuXG4gIHZhciB1cGRhdGVOZWlnaGJvcnMgPSBmdW5jdGlvbihlZGdlKSB7XG4gICAgdmFyIHcgPSBlZGdlLnYgIT09IHYgPyBlZGdlLnYgOiBlZGdlLncsXG4gICAgICAgIHdFbnRyeSA9IHJlc3VsdHNbd10sXG4gICAgICAgIHdlaWdodCA9IHdlaWdodEZuKGVkZ2UpLFxuICAgICAgICBkaXN0YW5jZSA9IHZFbnRyeS5kaXN0YW5jZSArIHdlaWdodDtcblxuICAgIGlmICh3ZWlnaHQgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkaWprc3RyYSBkb2VzIG5vdCBhbGxvdyBuZWdhdGl2ZSBlZGdlIHdlaWdodHMuIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICBcIkJhZCBlZGdlOiBcIiArIGVkZ2UgKyBcIiBXZWlnaHQ6IFwiICsgd2VpZ2h0KTtcbiAgICB9XG5cbiAgICBpZiAoZGlzdGFuY2UgPCB3RW50cnkuZGlzdGFuY2UpIHtcbiAgICAgIHdFbnRyeS5kaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgd0VudHJ5LnByZWRlY2Vzc29yID0gdjtcbiAgICAgIHBxLmRlY3JlYXNlKHcsIGRpc3RhbmNlKTtcbiAgICB9XG4gIH07XG5cbiAgZy5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIHZhciBkaXN0YW5jZSA9IHYgPT09IHNvdXJjZSA/IDAgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgcmVzdWx0c1t2XSA9IHsgZGlzdGFuY2U6IGRpc3RhbmNlIH07XG4gICAgcHEuYWRkKHYsIGRpc3RhbmNlKTtcbiAgfSk7XG5cbiAgd2hpbGUgKHBxLnNpemUoKSA+IDApIHtcbiAgICB2ID0gcHEucmVtb3ZlTWluKCk7XG4gICAgdkVudHJ5ID0gcmVzdWx0c1t2XTtcbiAgICBpZiAodkVudHJ5LmRpc3RhbmNlID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGVkZ2VGbih2KS5mb3JFYWNoKHVwZGF0ZU5laWdoYm9ycyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/dijkstra.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/find-cycles.js": /*!***************************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/find-cycles.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\"),\n tarjan = __webpack_require__(/*! ./tarjan */ \"./node_modules/@dagrejs/graphlib/lib/alg/tarjan.js\");\n\nmodule.exports = findCycles;\n\nfunction findCycles(g) {\n return _.filter(tarjan(g), function(cmpt) {\n return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]));\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9maW5kLWN5Y2xlcy5qcz8wNjMyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyxpRUFBVztBQUMzQixhQUFhLG1CQUFPLENBQUMsb0VBQVU7O0FBRS9COztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AZGFncmVqcy9ncmFwaGxpYi9saWIvYWxnL2ZpbmQtY3ljbGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpLFxuICAgIHRhcmphbiA9IHJlcXVpcmUoXCIuL3RhcmphblwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kQ3ljbGVzO1xuXG5mdW5jdGlvbiBmaW5kQ3ljbGVzKGcpIHtcbiAgcmV0dXJuIF8uZmlsdGVyKHRhcmphbihnKSwgZnVuY3Rpb24oY21wdCkge1xuICAgIHJldHVybiBjbXB0Lmxlbmd0aCA+IDEgfHwgKGNtcHQubGVuZ3RoID09PSAxICYmIGcuaGFzRWRnZShjbXB0WzBdLCBjbXB0WzBdKSk7XG4gIH0pO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/find-cycles.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/floyd-warshall.js": /*!******************************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/floyd-warshall.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\");\n\nmodule.exports = floydWarshall;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n var results = {},\n nodes = g.nodes();\n\n nodes.forEach(function(v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function(w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function(edge) {\n var w = edge.v === v ? edge.w : edge.v,\n d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function(k) {\n var rowK = results[k];\n nodes.forEach(function(i) {\n var rowI = results[i];\n nodes.forEach(function(j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9mbG95ZC13YXJzaGFsbC5qcz9iM2MwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyxpRUFBVzs7QUFFM0I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaURBQWlELHNCQUFzQixFQUFFO0FBQ3pFOztBQUVBO0FBQ0Esa0JBQWtCO0FBQ2xCOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AZGFncmVqcy9ncmFwaGxpYi9saWIvYWxnL2Zsb3lkLXdhcnNoYWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZsb3lkV2Fyc2hhbGw7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GVU5DID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHJldHVybiBydW5GbG95ZFdhcnNoYWxsKGcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodEZuIHx8IERFRkFVTFRfV0VJR0hUX0ZVTkMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2VGbiB8fCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm91dEVkZ2VzKHYpOyB9KTtcbn1cblxuZnVuY3Rpb24gcnVuRmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHZhciByZXN1bHRzID0ge30sXG4gICAgICBub2RlcyA9IGcubm9kZXMoKTtcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICByZXN1bHRzW3ZdID0ge307XG4gICAgcmVzdWx0c1t2XVt2XSA9IHsgZGlzdGFuY2U6IDAgfTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHcpIHtcbiAgICAgIGlmICh2ICE9PSB3KSB7XG4gICAgICAgIHJlc3VsdHNbdl1bd10gPSB7IGRpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBlZGdlRm4odikuZm9yRWFjaChmdW5jdGlvbihlZGdlKSB7XG4gICAgICB2YXIgdyA9IGVkZ2UudiA9PT0gdiA/IGVkZ2UudyA6IGVkZ2UudixcbiAgICAgICAgICBkID0gd2VpZ2h0Rm4oZWRnZSk7XG4gICAgICByZXN1bHRzW3ZdW3ddID0geyBkaXN0YW5jZTogZCwgcHJlZGVjZXNzb3I6IHYgfTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgdmFyIHJvd0sgPSByZXN1bHRzW2tdO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgdmFyIHJvd0kgPSByZXN1bHRzW2ldO1xuICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbihqKSB7XG4gICAgICAgIHZhciBpayA9IHJvd0lba107XG4gICAgICAgIHZhciBraiA9IHJvd0tbal07XG4gICAgICAgIHZhciBpaiA9IHJvd0lbal07XG4gICAgICAgIHZhciBhbHREaXN0YW5jZSA9IGlrLmRpc3RhbmNlICsga2ouZGlzdGFuY2U7XG4gICAgICAgIGlmIChhbHREaXN0YW5jZSA8IGlqLmRpc3RhbmNlKSB7XG4gICAgICAgICAgaWouZGlzdGFuY2UgPSBhbHREaXN0YW5jZTtcbiAgICAgICAgICBpai5wcmVkZWNlc3NvciA9IGtqLnByZWRlY2Vzc29yO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/floyd-warshall.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/index.js": /*!*********************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/index.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = {\n components: __webpack_require__(/*! ./components */ \"./node_modules/@dagrejs/graphlib/lib/alg/components.js\"),\n dijkstra: __webpack_require__(/*! ./dijkstra */ \"./node_modules/@dagrejs/graphlib/lib/alg/dijkstra.js\"),\n dijkstraAll: __webpack_require__(/*! ./dijkstra-all */ \"./node_modules/@dagrejs/graphlib/lib/alg/dijkstra-all.js\"),\n findCycles: __webpack_require__(/*! ./find-cycles */ \"./node_modules/@dagrejs/graphlib/lib/alg/find-cycles.js\"),\n floydWarshall: __webpack_require__(/*! ./floyd-warshall */ \"./node_modules/@dagrejs/graphlib/lib/alg/floyd-warshall.js\"),\n isAcyclic: __webpack_require__(/*! ./is-acyclic */ \"./node_modules/@dagrejs/graphlib/lib/alg/is-acyclic.js\"),\n postorder: __webpack_require__(/*! ./postorder */ \"./node_modules/@dagrejs/graphlib/lib/alg/postorder.js\"),\n preorder: __webpack_require__(/*! ./preorder */ \"./node_modules/@dagrejs/graphlib/lib/alg/preorder.js\"),\n prim: __webpack_require__(/*! ./prim */ \"./node_modules/@dagrejs/graphlib/lib/alg/prim.js\"),\n tarjan: __webpack_require__(/*! ./tarjan */ \"./node_modules/@dagrejs/graphlib/lib/alg/tarjan.js\"),\n topsort: __webpack_require__(/*! ./topsort */ \"./node_modules/@dagrejs/graphlib/lib/alg/topsort.js\")\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9pbmRleC5qcz85MTU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLDRFQUFjO0FBQ3BDLFlBQVksbUJBQU8sQ0FBQyx3RUFBWTtBQUNoQyxlQUFlLG1CQUFPLENBQUMsZ0ZBQWdCO0FBQ3ZDLGNBQWMsbUJBQU8sQ0FBQyw4RUFBZTtBQUNyQyxpQkFBaUIsbUJBQU8sQ0FBQyxvRkFBa0I7QUFDM0MsYUFBYSxtQkFBTyxDQUFDLDRFQUFjO0FBQ25DLGFBQWEsbUJBQU8sQ0FBQywwRUFBYTtBQUNsQyxZQUFZLG1CQUFPLENBQUMsd0VBQVk7QUFDaEMsUUFBUSxtQkFBTyxDQUFDLGdFQUFRO0FBQ3hCLFVBQVUsbUJBQU8sQ0FBQyxvRUFBVTtBQUM1QixXQUFXLG1CQUFPLENBQUMsc0VBQVc7QUFDOUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge1xuICBjb21wb25lbnRzOiByZXF1aXJlKFwiLi9jb21wb25lbnRzXCIpLFxuICBkaWprc3RyYTogcmVxdWlyZShcIi4vZGlqa3N0cmFcIiksXG4gIGRpamtzdHJhQWxsOiByZXF1aXJlKFwiLi9kaWprc3RyYS1hbGxcIiksXG4gIGZpbmRDeWNsZXM6IHJlcXVpcmUoXCIuL2ZpbmQtY3ljbGVzXCIpLFxuICBmbG95ZFdhcnNoYWxsOiByZXF1aXJlKFwiLi9mbG95ZC13YXJzaGFsbFwiKSxcbiAgaXNBY3ljbGljOiByZXF1aXJlKFwiLi9pcy1hY3ljbGljXCIpLFxuICBwb3N0b3JkZXI6IHJlcXVpcmUoXCIuL3Bvc3RvcmRlclwiKSxcbiAgcHJlb3JkZXI6IHJlcXVpcmUoXCIuL3ByZW9yZGVyXCIpLFxuICBwcmltOiByZXF1aXJlKFwiLi9wcmltXCIpLFxuICB0YXJqYW46IHJlcXVpcmUoXCIuL3RhcmphblwiKSxcbiAgdG9wc29ydDogcmVxdWlyZShcIi4vdG9wc29ydFwiKVxufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/index.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/is-acyclic.js": /*!**************************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/is-acyclic.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var topsort = __webpack_require__(/*! ./topsort */ \"./node_modules/@dagrejs/graphlib/lib/alg/topsort.js\");\n\nmodule.exports = isAcyclic;\n\nfunction isAcyclic(g) {\n try {\n topsort(g);\n } catch (e) {\n if (e instanceof topsort.CycleException) {\n return false;\n }\n throw e;\n }\n return true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9pcy1hY3ljbGljLmpzPzA2NGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLHNFQUFXOztBQUVqQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9pcy1hY3ljbGljLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvcHNvcnQgPSByZXF1aXJlKFwiLi90b3Bzb3J0XCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQWN5Y2xpYztcblxuZnVuY3Rpb24gaXNBY3ljbGljKGcpIHtcbiAgdHJ5IHtcbiAgICB0b3Bzb3J0KGcpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiB0b3Bzb3J0LkN5Y2xlRXhjZXB0aW9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/is-acyclic.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/postorder.js": /*!*************************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/postorder.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var dfs = __webpack_require__(/*! ./dfs */ \"./node_modules/@dagrejs/graphlib/lib/alg/dfs.js\");\n\nmodule.exports = postorder;\n\nfunction postorder(g, vs) {\n return dfs(g, vs, \"post\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9wb3N0b3JkZXIuanM/N2MxYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVLG1CQUFPLENBQUMsOERBQU87O0FBRXpCOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AZGFncmVqcy9ncmFwaGxpYi9saWIvYWxnL3Bvc3RvcmRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZnMgPSByZXF1aXJlKFwiLi9kZnNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcG9zdG9yZGVyO1xuXG5mdW5jdGlvbiBwb3N0b3JkZXIoZywgdnMpIHtcbiAgcmV0dXJuIGRmcyhnLCB2cywgXCJwb3N0XCIpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/postorder.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/preorder.js": /*!************************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/preorder.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var dfs = __webpack_require__(/*! ./dfs */ \"./node_modules/@dagrejs/graphlib/lib/alg/dfs.js\");\n\nmodule.exports = preorder;\n\nfunction preorder(g, vs) {\n return dfs(g, vs, \"pre\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9wcmVvcmRlci5qcz9lMjVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVUsbUJBQU8sQ0FBQyw4REFBTzs7QUFFekI7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BkYWdyZWpzL2dyYXBobGliL2xpYi9hbGcvcHJlb3JkZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGZzID0gcmVxdWlyZShcIi4vZGZzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByZW9yZGVyO1xuXG5mdW5jdGlvbiBwcmVvcmRlcihnLCB2cykge1xuICByZXR1cm4gZGZzKGcsIHZzLCBcInByZVwiKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/preorder.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/prim.js": /*!********************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/prim.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\"),\n Graph = __webpack_require__(/*! ../graph */ \"./node_modules/@dagrejs/graphlib/lib/graph.js\"),\n PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ \"./node_modules/@dagrejs/graphlib/lib/data/priority-queue.js\");\n\nmodule.exports = prim;\n\nfunction prim(g, weightFunc) {\n var result = new Graph(),\n parents = {},\n pq = new PriorityQueue(),\n v;\n\n function updateNeighbors(edge) {\n var w = edge.v === v ? edge.w : edge.v,\n pri = pq.priority(w);\n if (pri !== undefined) {\n var edgeWeight = weightFunc(edge);\n if (edgeWeight < pri) {\n parents[w] = v;\n pq.decrease(w, edgeWeight);\n }\n }\n }\n\n if (g.nodeCount() === 0) {\n return result;\n }\n\n _.each(g.nodes(), function(v) {\n pq.add(v, Number.POSITIVE_INFINITY);\n result.setNode(v);\n });\n\n // Start from an arbitrary node\n pq.decrease(g.nodes()[0], 0);\n\n var init = false;\n while (pq.size() > 0) {\n v = pq.removeMin();\n if (_.has(parents, v)) {\n result.setEdge(v, parents[v]);\n } else if (init) {\n throw new Error(\"Input graph is not connected: \" + g);\n } else {\n init = true;\n }\n\n g.nodeEdges(v).forEach(updateNeighbors);\n }\n\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy9wcmltLmpzPzAxNWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsUUFBUSxtQkFBTyxDQUFDLGlFQUFXO0FBQzNCLFlBQVksbUJBQU8sQ0FBQywrREFBVTtBQUM5QixvQkFBb0IsbUJBQU8sQ0FBQywyRkFBd0I7O0FBRXBEOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AZGFncmVqcy9ncmFwaGxpYi9saWIvYWxnL3ByaW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIiksXG4gICAgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhcIiksXG4gICAgUHJpb3JpdHlRdWV1ZSA9IHJlcXVpcmUoXCIuLi9kYXRhL3ByaW9yaXR5LXF1ZXVlXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByaW07XG5cbmZ1bmN0aW9uIHByaW0oZywgd2VpZ2h0RnVuYykge1xuICB2YXIgcmVzdWx0ID0gbmV3IEdyYXBoKCksXG4gICAgICBwYXJlbnRzID0ge30sXG4gICAgICBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCksXG4gICAgICB2O1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZU5laWdoYm9ycyhlZGdlKSB7XG4gICAgdmFyIHcgPSBlZGdlLnYgPT09IHYgPyBlZGdlLncgOiBlZGdlLnYsXG4gICAgICAgIHByaSA9IHBxLnByaW9yaXR5KHcpO1xuICAgIGlmIChwcmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGVkZ2VXZWlnaHQgPSB3ZWlnaHRGdW5jKGVkZ2UpO1xuICAgICAgaWYgKGVkZ2VXZWlnaHQgPCBwcmkpIHtcbiAgICAgICAgcGFyZW50c1t3XSA9IHY7XG4gICAgICAgIHBxLmRlY3JlYXNlKHcsIGVkZ2VXZWlnaHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChnLm5vZGVDb3VudCgpID09PSAwKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBwcS5hZGQodiwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICByZXN1bHQuc2V0Tm9kZSh2KTtcbiAgfSk7XG5cbiAgLy8gU3RhcnQgZnJvbSBhbiBhcmJpdHJhcnkgbm9kZVxuICBwcS5kZWNyZWFzZShnLm5vZGVzKClbMF0sIDApO1xuXG4gIHZhciBpbml0ID0gZmFsc2U7XG4gIHdoaWxlIChwcS5zaXplKCkgPiAwKSB7XG4gICAgdiA9IHBxLnJlbW92ZU1pbigpO1xuICAgIGlmIChfLmhhcyhwYXJlbnRzLCB2KSkge1xuICAgICAgcmVzdWx0LnNldEVkZ2UodiwgcGFyZW50c1t2XSk7XG4gICAgfSBlbHNlIGlmIChpbml0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBncmFwaCBpcyBub3QgY29ubmVjdGVkOiBcIiArIGcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbml0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnLm5vZGVFZGdlcyh2KS5mb3JFYWNoKHVwZGF0ZU5laWdoYm9ycyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/prim.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/tarjan.js": /*!**********************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/tarjan.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\");\n\nmodule.exports = tarjan;\n\nfunction tarjan(g) {\n var index = 0,\n stack = [],\n visited = {}, // node id -> { onStack, lowlink, index }\n results = [];\n\n function dfs(v) {\n var entry = visited[v] = {\n onStack: true,\n lowlink: index,\n index: index++\n };\n stack.push(v);\n\n g.successors(v).forEach(function(w) {\n if (!_.has(visited, w)) {\n dfs(w);\n entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink);\n } else if (visited[w].onStack) {\n entry.lowlink = Math.min(entry.lowlink, visited[w].index);\n }\n });\n\n if (entry.lowlink === entry.index) {\n var cmpt = [],\n w;\n do {\n w = stack.pop();\n visited[w].onStack = false;\n cmpt.push(w);\n } while (v !== w);\n results.push(cmpt);\n }\n }\n\n g.nodes().forEach(function(v) {\n if (!_.has(visited, v)) {\n dfs(v);\n }\n });\n\n return results;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy90YXJqYW4uanM/ZjdjMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRLG1CQUFPLENBQUMsaUVBQVc7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixpQkFBaUI7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BkYWdyZWpzL2dyYXBobGliL2xpYi9hbGcvdGFyamFuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRhcmphbjtcblxuZnVuY3Rpb24gdGFyamFuKGcpIHtcbiAgdmFyIGluZGV4ID0gMCxcbiAgICAgIHN0YWNrID0gW10sXG4gICAgICB2aXNpdGVkID0ge30sIC8vIG5vZGUgaWQgLT4geyBvblN0YWNrLCBsb3dsaW5rLCBpbmRleCB9XG4gICAgICByZXN1bHRzID0gW107XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgZW50cnkgPSB2aXNpdGVkW3ZdID0ge1xuICAgICAgb25TdGFjazogdHJ1ZSxcbiAgICAgIGxvd2xpbms6IGluZGV4LFxuICAgICAgaW5kZXg6IGluZGV4KytcbiAgICB9O1xuICAgIHN0YWNrLnB1c2godik7XG5cbiAgICBnLnN1Y2Nlc3NvcnModikuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICAgIGRmcyh3KTtcbiAgICAgICAgZW50cnkubG93bGluayA9IE1hdGgubWluKGVudHJ5Lmxvd2xpbmssIHZpc2l0ZWRbd10ubG93bGluayk7XG4gICAgICB9IGVsc2UgaWYgKHZpc2l0ZWRbd10ub25TdGFjaykge1xuICAgICAgICBlbnRyeS5sb3dsaW5rID0gTWF0aC5taW4oZW50cnkubG93bGluaywgdmlzaXRlZFt3XS5pbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoZW50cnkubG93bGluayA9PT0gZW50cnkuaW5kZXgpIHtcbiAgICAgIHZhciBjbXB0ID0gW10sXG4gICAgICAgICAgdztcbiAgICAgIGRvIHtcbiAgICAgICAgdyA9IHN0YWNrLnBvcCgpO1xuICAgICAgICB2aXNpdGVkW3ddLm9uU3RhY2sgPSBmYWxzZTtcbiAgICAgICAgY21wdC5wdXNoKHcpO1xuICAgICAgfSB3aGlsZSAodiAhPT0gdyk7XG4gICAgICByZXN1bHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9XG5cbiAgZy5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIGlmICghXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIGRmcyh2KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/tarjan.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/alg/topsort.js": /*!***********************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/alg/topsort.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\");\n\nmodule.exports = topsort;\ntopsort.CycleException = CycleException;\n\nfunction topsort(g) {\n var visited = {},\n stack = {},\n results = [];\n\n function visit(node) {\n if (_.has(stack, node)) {\n throw new CycleException();\n }\n\n if (!_.has(visited, node)) {\n stack[node] = true;\n visited[node] = true;\n _.each(g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n _.each(g.sinks(), visit);\n\n if (_.size(visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nfunction CycleException() {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2FsZy90b3Bzb3J0LmpzP2IzMGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsUUFBUSxtQkFBTyxDQUFDLGlFQUFXOztBQUUzQjtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCO0FBQ2xCLGdCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BkYWdyZWpzL2dyYXBobGliL2xpYi9hbGcvdG9wc29ydC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB0b3Bzb3J0O1xudG9wc29ydC5DeWNsZUV4Y2VwdGlvbiA9IEN5Y2xlRXhjZXB0aW9uO1xuXG5mdW5jdGlvbiB0b3Bzb3J0KGcpIHtcbiAgdmFyIHZpc2l0ZWQgPSB7fSxcbiAgICAgIHN0YWNrID0ge30sXG4gICAgICByZXN1bHRzID0gW107XG5cbiAgZnVuY3Rpb24gdmlzaXQobm9kZSkge1xuICAgIGlmIChfLmhhcyhzdGFjaywgbm9kZSkpIHtcbiAgICAgIHRocm93IG5ldyBDeWNsZUV4Y2VwdGlvbigpO1xuICAgIH1cblxuICAgIGlmICghXy5oYXModmlzaXRlZCwgbm9kZSkpIHtcbiAgICAgIHN0YWNrW25vZGVdID0gdHJ1ZTtcbiAgICAgIHZpc2l0ZWRbbm9kZV0gPSB0cnVlO1xuICAgICAgXy5lYWNoKGcucHJlZGVjZXNzb3JzKG5vZGUpLCB2aXNpdCk7XG4gICAgICBkZWxldGUgc3RhY2tbbm9kZV07XG4gICAgICByZXN1bHRzLnB1c2gobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgXy5lYWNoKGcuc2lua3MoKSwgdmlzaXQpO1xuXG4gIGlmIChfLnNpemUodmlzaXRlZCkgIT09IGcubm9kZUNvdW50KCkpIHtcbiAgICB0aHJvdyBuZXcgQ3ljbGVFeGNlcHRpb24oKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBDeWNsZUV4Y2VwdGlvbigpIHt9XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/alg/topsort.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/data/priority-queue.js": /*!*******************************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/data/priority-queue.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\");\n\nmodule.exports = PriorityQueue;\n\n/**\n * A min-priority queue data structure. This algorithm is derived from Cormen,\n * et al., \"Introduction to Algorithms\". The basic idea of a min-priority\n * queue is that you can efficiently (in O(1) time) get the smallest key in\n * the queue. Adding and removing elements takes O(log n) time. A key can\n * have its priority decreased in O(log n) time.\n */\nfunction PriorityQueue() {\n this._arr = [];\n this._keyIndices = {};\n}\n\n/**\n * Returns the number of elements in the queue. Takes `O(1)` time.\n */\nPriorityQueue.prototype.size = function() {\n return this._arr.length;\n};\n\n/**\n * Returns the keys that are in the queue. Takes `O(n)` time.\n */\nPriorityQueue.prototype.keys = function() {\n return this._arr.map(function(x) { return x.key; });\n};\n\n/**\n * Returns `true` if **key** is in the queue and `false` if not.\n */\nPriorityQueue.prototype.has = function(key) {\n return _.has(this._keyIndices, key);\n};\n\n/**\n * Returns the priority for **key**. If **key** is not present in the queue\n * then this function returns `undefined`. Takes `O(1)` time.\n *\n * @param {Object} key\n */\nPriorityQueue.prototype.priority = function(key) {\n var index = this._keyIndices[key];\n if (index !== undefined) {\n return this._arr[index].priority;\n }\n};\n\n/**\n * Returns the key for the minimum element in this queue. If the queue is\n * empty this function throws an Error. Takes `O(1)` time.\n */\nPriorityQueue.prototype.min = function() {\n if (this.size() === 0) {\n throw new Error(\"Queue underflow\");\n }\n return this._arr[0].key;\n};\n\n/**\n * Inserts a new key into the priority queue. If the key already exists in\n * the queue this function returns `false`; otherwise it will return `true`.\n * Takes `O(n)` time.\n *\n * @param {Object} key the key to add\n * @param {Number} priority the initial priority for the key\n */\nPriorityQueue.prototype.add = function(key, priority) {\n var keyIndices = this._keyIndices;\n key = String(key);\n if (!_.has(keyIndices, key)) {\n var arr = this._arr;\n var index = arr.length;\n keyIndices[key] = index;\n arr.push({key: key, priority: priority});\n this._decrease(index);\n return true;\n }\n return false;\n};\n\n/**\n * Removes and returns the smallest key in the queue. Takes `O(log n)` time.\n */\nPriorityQueue.prototype.removeMin = function() {\n this._swap(0, this._arr.length - 1);\n var min = this._arr.pop();\n delete this._keyIndices[min.key];\n this._heapify(0);\n return min.key;\n};\n\n/**\n * Decreases the priority for **key** to **priority**. If the new priority is\n * greater than the previous priority, this function will throw an Error.\n *\n * @param {Object} key the key for which to raise priority\n * @param {Number} priority the new priority for the key\n */\nPriorityQueue.prototype.decrease = function(key, priority) {\n var index = this._keyIndices[key];\n if (priority > this._arr[index].priority) {\n throw new Error(\"New priority is greater than current priority. \" +\n \"Key: \" + key + \" Old: \" + this._arr[index].priority + \" New: \" + priority);\n }\n this._arr[index].priority = priority;\n this._decrease(index);\n};\n\nPriorityQueue.prototype._heapify = function(i) {\n var arr = this._arr;\n var l = 2 * i,\n r = l + 1,\n largest = i;\n if (l < arr.length) {\n largest = arr[l].priority < arr[largest].priority ? l : largest;\n if (r < arr.length) {\n largest = arr[r].priority < arr[largest].priority ? r : largest;\n }\n if (largest !== i) {\n this._swap(i, largest);\n this._heapify(largest);\n }\n }\n};\n\nPriorityQueue.prototype._decrease = function(index) {\n var arr = this._arr;\n var priority = arr[index].priority;\n var parent;\n while (index !== 0) {\n parent = index >> 1;\n if (arr[parent].priority < priority) {\n break;\n }\n this._swap(index, parent);\n index = parent;\n }\n};\n\nPriorityQueue.prototype._swap = function(i, j) {\n var arr = this._arr;\n var keyIndices = this._keyIndices;\n var origArrI = arr[i];\n var origArrJ = arr[j];\n arr[i] = origArrJ;\n arr[j] = origArrI;\n keyIndices[origArrJ.key] = i;\n keyIndices[origArrI.key] = j;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2RhdGEvcHJpb3JpdHktcXVldWUuanM/NTk5YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRLG1CQUFPLENBQUMsaUVBQVc7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLGNBQWMsRUFBRTtBQUNwRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyw2QkFBNkI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2RhdGEvcHJpb3JpdHktcXVldWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJpb3JpdHlRdWV1ZTtcblxuLyoqXG4gKiBBIG1pbi1wcmlvcml0eSBxdWV1ZSBkYXRhIHN0cnVjdHVyZS4gVGhpcyBhbGdvcml0aG0gaXMgZGVyaXZlZCBmcm9tIENvcm1lbixcbiAqIGV0IGFsLiwgXCJJbnRyb2R1Y3Rpb24gdG8gQWxnb3JpdGhtc1wiLiBUaGUgYmFzaWMgaWRlYSBvZiBhIG1pbi1wcmlvcml0eVxuICogcXVldWUgaXMgdGhhdCB5b3UgY2FuIGVmZmljaWVudGx5IChpbiBPKDEpIHRpbWUpIGdldCB0aGUgc21hbGxlc3Qga2V5IGluXG4gKiB0aGUgcXVldWUuIEFkZGluZyBhbmQgcmVtb3ZpbmcgZWxlbWVudHMgdGFrZXMgTyhsb2cgbikgdGltZS4gQSBrZXkgY2FuXG4gKiBoYXZlIGl0cyBwcmlvcml0eSBkZWNyZWFzZWQgaW4gTyhsb2cgbikgdGltZS5cbiAqL1xuZnVuY3Rpb24gUHJpb3JpdHlRdWV1ZSgpIHtcbiAgdGhpcy5fYXJyID0gW107XG4gIHRoaXMuX2tleUluZGljZXMgPSB7fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLiBUYWtlcyBgTygxKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fYXJyLmxlbmd0aDtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUga2V5cyB0aGF0IGFyZSBpbiB0aGUgcXVldWUuIFRha2VzIGBPKG4pYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9hcnIubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgua2V5OyB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgKiprZXkqKiBpcyBpbiB0aGUgcXVldWUgYW5kIGBmYWxzZWAgaWYgbm90LlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihrZXkpIHtcbiAgcmV0dXJuIF8uaGFzKHRoaXMuX2tleUluZGljZXMsIGtleSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHByaW9yaXR5IGZvciAqKmtleSoqLiBJZiAqKmtleSoqIGlzIG5vdCBwcmVzZW50IGluIHRoZSBxdWV1ZVxuICogdGhlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYHVuZGVmaW5lZGAuIFRha2VzIGBPKDEpYCB0aW1lLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBrZXlcbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucHJpb3JpdHkgPSBmdW5jdGlvbihrZXkpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fa2V5SW5kaWNlc1trZXldO1xuICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5O1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGtleSBmb3IgdGhlIG1pbmltdW0gZWxlbWVudCBpbiB0aGlzIHF1ZXVlLiBJZiB0aGUgcXVldWUgaXNcbiAqIGVtcHR5IHRoaXMgZnVuY3Rpb24gdGhyb3dzIGFuIEVycm9yLiBUYWtlcyBgTygxKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUubWluID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnNpemUoKSA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlF1ZXVlIHVuZGVyZmxvd1wiKTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyWzBdLmtleTtcbn07XG5cbi8qKlxuICogSW5zZXJ0cyBhIG5ldyBrZXkgaW50byB0aGUgcHJpb3JpdHkgcXVldWUuIElmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMgaW5cbiAqIHRoZSBxdWV1ZSB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYDsgb3RoZXJ3aXNlIGl0IHdpbGwgcmV0dXJuIGB0cnVlYC5cbiAqIFRha2VzIGBPKG4pYCB0aW1lLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBrZXkgdGhlIGtleSB0byBhZGRcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcmlvcml0eSB0aGUgaW5pdGlhbCBwcmlvcml0eSBmb3IgdGhlIGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihrZXksIHByaW9yaXR5KSB7XG4gIHZhciBrZXlJbmRpY2VzID0gdGhpcy5fa2V5SW5kaWNlcztcbiAga2V5ID0gU3RyaW5nKGtleSk7XG4gIGlmICghXy5oYXMoa2V5SW5kaWNlcywga2V5KSkge1xuICAgIHZhciBhcnIgPSB0aGlzLl9hcnI7XG4gICAgdmFyIGluZGV4ID0gYXJyLmxlbmd0aDtcbiAgICBrZXlJbmRpY2VzW2tleV0gPSBpbmRleDtcbiAgICBhcnIucHVzaCh7a2V5OiBrZXksIHByaW9yaXR5OiBwcmlvcml0eX0pO1xuICAgIHRoaXMuX2RlY3JlYXNlKGluZGV4KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgYW5kIHJldHVybnMgdGhlIHNtYWxsZXN0IGtleSBpbiB0aGUgcXVldWUuIFRha2VzIGBPKGxvZyBuKWAgdGltZS5cbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUucmVtb3ZlTWluID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX3N3YXAoMCwgdGhpcy5fYXJyLmxlbmd0aCAtIDEpO1xuICB2YXIgbWluID0gdGhpcy5fYXJyLnBvcCgpO1xuICBkZWxldGUgdGhpcy5fa2V5SW5kaWNlc1ttaW4ua2V5XTtcbiAgdGhpcy5faGVhcGlmeSgwKTtcbiAgcmV0dXJuIG1pbi5rZXk7XG59O1xuXG4vKipcbiAqIERlY3JlYXNlcyB0aGUgcHJpb3JpdHkgZm9yICoqa2V5KiogdG8gKipwcmlvcml0eSoqLiBJZiB0aGUgbmV3IHByaW9yaXR5IGlzXG4gKiBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIHByaW9yaXR5LCB0aGlzIGZ1bmN0aW9uIHdpbGwgdGhyb3cgYW4gRXJyb3IuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleSB0aGUga2V5IGZvciB3aGljaCB0byByYWlzZSBwcmlvcml0eVxuICogQHBhcmFtIHtOdW1iZXJ9IHByaW9yaXR5IHRoZSBuZXcgcHJpb3JpdHkgZm9yIHRoZSBrZXlcbiAqL1xuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuZGVjcmVhc2UgPSBmdW5jdGlvbihrZXksIHByaW9yaXR5KSB7XG4gIHZhciBpbmRleCA9IHRoaXMuX2tleUluZGljZXNba2V5XTtcbiAgaWYgKHByaW9yaXR5ID4gdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5ldyBwcmlvcml0eSBpcyBncmVhdGVyIHRoYW4gY3VycmVudCBwcmlvcml0eS4gXCIgK1xuICAgICAgICBcIktleTogXCIgKyBrZXkgKyBcIiBPbGQ6IFwiICsgdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSArIFwiIE5ldzogXCIgKyBwcmlvcml0eSk7XG4gIH1cbiAgdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSA9IHByaW9yaXR5O1xuICB0aGlzLl9kZWNyZWFzZShpbmRleCk7XG59O1xuXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5faGVhcGlmeSA9IGZ1bmN0aW9uKGkpIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIGwgPSAyICogaSxcbiAgICAgIHIgPSBsICsgMSxcbiAgICAgIGxhcmdlc3QgPSBpO1xuICBpZiAobCA8IGFyci5sZW5ndGgpIHtcbiAgICBsYXJnZXN0ID0gYXJyW2xdLnByaW9yaXR5IDwgYXJyW2xhcmdlc3RdLnByaW9yaXR5ID8gbCA6IGxhcmdlc3Q7XG4gICAgaWYgKHIgPCBhcnIubGVuZ3RoKSB7XG4gICAgICBsYXJnZXN0ID0gYXJyW3JdLnByaW9yaXR5IDwgYXJyW2xhcmdlc3RdLnByaW9yaXR5ID8gciA6IGxhcmdlc3Q7XG4gICAgfVxuICAgIGlmIChsYXJnZXN0ICE9PSBpKSB7XG4gICAgICB0aGlzLl9zd2FwKGksIGxhcmdlc3QpO1xuICAgICAgdGhpcy5faGVhcGlmeShsYXJnZXN0KTtcbiAgICB9XG4gIH1cbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9kZWNyZWFzZSA9IGZ1bmN0aW9uKGluZGV4KSB7XG4gIHZhciBhcnIgPSB0aGlzLl9hcnI7XG4gIHZhciBwcmlvcml0eSA9IGFycltpbmRleF0ucHJpb3JpdHk7XG4gIHZhciBwYXJlbnQ7XG4gIHdoaWxlIChpbmRleCAhPT0gMCkge1xuICAgIHBhcmVudCA9IGluZGV4ID4+IDE7XG4gICAgaWYgKGFycltwYXJlbnRdLnByaW9yaXR5IDwgcHJpb3JpdHkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl9zd2FwKGluZGV4LCBwYXJlbnQpO1xuICAgIGluZGV4ID0gcGFyZW50O1xuICB9XG59O1xuXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5fc3dhcCA9IGZ1bmN0aW9uKGksIGopIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIGtleUluZGljZXMgPSB0aGlzLl9rZXlJbmRpY2VzO1xuICB2YXIgb3JpZ0FyckkgPSBhcnJbaV07XG4gIHZhciBvcmlnQXJySiA9IGFycltqXTtcbiAgYXJyW2ldID0gb3JpZ0Fycko7XG4gIGFycltqXSA9IG9yaWdBcnJJO1xuICBrZXlJbmRpY2VzW29yaWdBcnJKLmtleV0gPSBpO1xuICBrZXlJbmRpY2VzW29yaWdBcnJJLmtleV0gPSBqO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/data/priority-queue.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/graph.js": /*!*****************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/graph.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ./lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\");\n\nmodule.exports = Graph;\n\nvar DEFAULT_EDGE_NAME = \"\\x00\",\n GRAPH_NODE = \"\\x00\",\n EDGE_KEY_DELIM = \"\\x01\";\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\nfunction Graph(opts) {\n this._isDirected = _.has(opts, \"directed\") ? opts.directed : true;\n this._isMultigraph = _.has(opts, \"multigraph\") ? opts.multigraph : false;\n this._isCompound = _.has(opts, \"compound\") ? opts.compound : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\n\n/* === Graph functions ========= */\n\nGraph.prototype.isDirected = function() {\n return this._isDirected;\n};\n\nGraph.prototype.isMultigraph = function() {\n return this._isMultigraph;\n};\n\nGraph.prototype.isCompound = function() {\n return this._isCompound;\n};\n\nGraph.prototype.setGraph = function(label) {\n this._label = label;\n return this;\n};\n\nGraph.prototype.graph = function() {\n return this._label;\n};\n\n\n/* === Node functions ========== */\n\nGraph.prototype.setDefaultNodeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.nodeCount = function() {\n return this._nodeCount;\n};\n\nGraph.prototype.nodes = function() {\n return _.keys(this._nodes);\n};\n\nGraph.prototype.sources = function() {\n return _.filter(this.nodes(), _.bind(function(v) {\n return _.isEmpty(this._in[v]);\n }, this));\n};\n\nGraph.prototype.sinks = function() {\n return _.filter(this.nodes(), _.bind(function(v) {\n return _.isEmpty(this._out[v]);\n }, this));\n};\n\nGraph.prototype.setNodes = function(vs, value) {\n var args = arguments;\n _.each(vs, _.bind(function(v) {\n if (args.length > 1) {\n this.setNode(v, value);\n } else {\n this.setNode(v);\n }\n }, this));\n return this;\n};\n\nGraph.prototype.setNode = function(v, value) {\n if (_.has(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n};\n\nGraph.prototype.node = function(v) {\n return this._nodes[v];\n};\n\nGraph.prototype.hasNode = function(v) {\n return _.has(this._nodes, v);\n};\n\nGraph.prototype.removeNode = function(v) {\n var self = this;\n if (_.has(this._nodes, v)) {\n var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); };\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), _.bind(function(child) {\n this.setParent(child);\n }, this));\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n};\n\nGraph.prototype.setParent = function(v, parent) {\n if (!this._isCompound) {\n throw new Error(\"Cannot set parent in a non-compound graph\");\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += \"\";\n for (var ancestor = parent;\n !_.isUndefined(ancestor);\n ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error(\"Setting \" + parent+ \" as parent of \" + v +\n \" would create create a cycle\");\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n};\n\nGraph.prototype._removeFromParentsChildList = function(v) {\n delete this._children[this._parent[v]][v];\n};\n\nGraph.prototype.parent = function(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n};\n\nGraph.prototype.children = function(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n};\n\nGraph.prototype.predecessors = function(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n};\n\nGraph.prototype.successors = function(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n};\n\nGraph.prototype.neighbors = function(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n};\n\nGraph.prototype.isLeaf = function (v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n};\n\nGraph.prototype.filterNodes = function(filter) {\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound\n });\n\n copy.setGraph(this.graph());\n\n _.each(this._nodes, _.bind(function(value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n }, this));\n\n _.each(this._edgeObjs, _.bind(function(e) {\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, this.edge(e));\n }\n }, this));\n\n var self = this;\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function(v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n};\n\n/* === Edge functions ========== */\n\nGraph.prototype.setDefaultEdgeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.edgeCount = function() {\n return this._edgeCount;\n};\n\nGraph.prototype.edges = function() {\n return _.values(this._edgeObjs);\n};\n\nGraph.prototype.setPath = function(vs, value) {\n var self = this,\n args = arguments;\n _.reduce(vs, function(v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n};\n\n/*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\nGraph.prototype.setEdge = function() {\n var v, w, name, value,\n valueSpecified = false,\n arg0 = arguments[0];\n\n if (typeof arg0 === \"object\" && arg0 !== null && \"v\" in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = \"\" + v;\n w = \"\" + w;\n if (!_.isUndefined(name)) {\n name = \"\" + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (_.has(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error(\"Cannot set a named edge when isMultigraph = false\");\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n};\n\nGraph.prototype.edge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return this._edgeLabels[e];\n};\n\nGraph.prototype.hasEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return _.has(this._edgeLabels, e);\n};\n\nGraph.prototype.removeEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name)),\n edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n};\n\nGraph.prototype.inEdges = function(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.v === u; });\n }\n};\n\nGraph.prototype.outEdges = function(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.w === w; });\n }\n};\n\nGraph.prototype.nodeEdges = function(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n};\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) { delete map[k]; }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM +\n (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2dyYXBoLmpzPzQwOTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLGdFQUFVOztBQUUxQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0UsV0FBVztBQUMvRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msb0NBQW9DO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxlQUFlO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxxQkFBcUIsRUFBRTtBQUNsRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLHFCQUFxQixFQUFFO0FBQ2xFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsZUFBZTtBQUNqQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2dyYXBoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEdyYXBoO1xuXG52YXIgREVGQVVMVF9FREdFX05BTUUgPSBcIlxceDAwXCIsXG4gICAgR1JBUEhfTk9ERSA9IFwiXFx4MDBcIixcbiAgICBFREdFX0tFWV9ERUxJTSA9IFwiXFx4MDFcIjtcblxuLy8gSW1wbGVtZW50YXRpb24gbm90ZXM6XG4vL1xuLy8gICogTm9kZSBpZCBxdWVyeSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBzdHJpbmcgaWRzIGZvciB0aGUgbm9kZXNcbi8vICAqIEVkZ2UgaWQgcXVlcnkgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gYW4gXCJlZGdlT2JqXCIsIGVkZ2Ugb2JqZWN0LCB0aGF0IGlzXG4vLyAgICBjb21wb3NlZCBvZiBlbm91Z2ggaW5mb3JtYXRpb24gdG8gdW5pcXVlbHkgaWRlbnRpZnkgYW4gZWRnZToge3YsIHcsIG5hbWV9LlxuLy8gICogSW50ZXJuYWxseSB3ZSB1c2UgYW4gXCJlZGdlSWRcIiwgYSBzdHJpbmdpZmllZCBmb3JtIG9mIHRoZSBlZGdlT2JqLCB0b1xuLy8gICAgcmVmZXJlbmNlIGVkZ2VzLiBUaGlzIGlzIGJlY2F1c2Ugd2UgbmVlZCBhIHBlcmZvcm1hbnQgd2F5IHRvIGxvb2sgdGhlc2Vcbi8vICAgIGVkZ2VzIHVwIGFuZCwgb2JqZWN0IHByb3BlcnRpZXMsIHdoaWNoIGhhdmUgc3RyaW5nIGtleXMsIGFyZSB0aGUgY2xvc2VzdFxuLy8gICAgd2UncmUgZ29pbmcgdG8gZ2V0IHRvIGEgcGVyZm9ybWFudCBoYXNodGFibGUgaW4gSmF2YVNjcmlwdC5cblxuZnVuY3Rpb24gR3JhcGgob3B0cykge1xuICB0aGlzLl9pc0RpcmVjdGVkID0gXy5oYXMob3B0cywgXCJkaXJlY3RlZFwiKSA/IG9wdHMuZGlyZWN0ZWQgOiB0cnVlO1xuICB0aGlzLl9pc011bHRpZ3JhcGggPSBfLmhhcyhvcHRzLCBcIm11bHRpZ3JhcGhcIikgPyBvcHRzLm11bHRpZ3JhcGggOiBmYWxzZTtcbiAgdGhpcy5faXNDb21wb3VuZCA9IF8uaGFzKG9wdHMsIFwiY29tcG91bmRcIikgPyBvcHRzLmNvbXBvdW5kIDogZmFsc2U7XG5cbiAgLy8gTGFiZWwgZm9yIHRoZSBncmFwaCBpdHNlbGZcbiAgdGhpcy5fbGFiZWwgPSB1bmRlZmluZWQ7XG5cbiAgLy8gRGVmYXVsdHMgdG8gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgbm9kZVxuICB0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4gPSBfLmNvbnN0YW50KHVuZGVmaW5lZCk7XG5cbiAgLy8gRGVmYXVsdHMgdG8gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgZWRnZVxuICB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4gPSBfLmNvbnN0YW50KHVuZGVmaW5lZCk7XG5cbiAgLy8gdiAtPiBsYWJlbFxuICB0aGlzLl9ub2RlcyA9IHt9O1xuXG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgLy8gdiAtPiBwYXJlbnRcbiAgICB0aGlzLl9wYXJlbnQgPSB7fTtcblxuICAgIC8vIHYgLT4gY2hpbGRyZW5cbiAgICB0aGlzLl9jaGlsZHJlbiA9IHt9O1xuICAgIHRoaXMuX2NoaWxkcmVuW0dSQVBIX05PREVdID0ge307XG4gIH1cblxuICAvLyB2IC0+IGVkZ2VPYmpcbiAgdGhpcy5faW4gPSB7fTtcblxuICAvLyB1IC0+IHYgLT4gTnVtYmVyXG4gIHRoaXMuX3ByZWRzID0ge307XG5cbiAgLy8gdiAtPiBlZGdlT2JqXG4gIHRoaXMuX291dCA9IHt9O1xuXG4gIC8vIHYgLT4gdyAtPiBOdW1iZXJcbiAgdGhpcy5fc3VjcyA9IHt9O1xuXG4gIC8vIGUgLT4gZWRnZU9ialxuICB0aGlzLl9lZGdlT2JqcyA9IHt9O1xuXG4gIC8vIGUgLT4gbGFiZWxcbiAgdGhpcy5fZWRnZUxhYmVscyA9IHt9O1xufVxuXG4vKiBOdW1iZXIgb2Ygbm9kZXMgaW4gdGhlIGdyYXBoLiBTaG91bGQgb25seSBiZSBjaGFuZ2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4gKi9cbkdyYXBoLnByb3RvdHlwZS5fbm9kZUNvdW50ID0gMDtcblxuLyogTnVtYmVyIG9mIGVkZ2VzIGluIHRoZSBncmFwaC4gU2hvdWxkIG9ubHkgYmUgY2hhbmdlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uICovXG5HcmFwaC5wcm90b3R5cGUuX2VkZ2VDb3VudCA9IDA7XG5cblxuLyogPT09IEdyYXBoIGZ1bmN0aW9ucyA9PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLmlzRGlyZWN0ZWQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2lzRGlyZWN0ZWQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNNdWx0aWdyYXBoID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9pc011bHRpZ3JhcGg7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNDb21wb3VuZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5faXNDb21wb3VuZDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRHcmFwaCA9IGZ1bmN0aW9uKGxhYmVsKSB7XG4gIHRoaXMuX2xhYmVsID0gbGFiZWw7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmdyYXBoID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9sYWJlbDtcbn07XG5cblxuLyogPT09IE5vZGUgZnVuY3Rpb25zID09PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLnNldERlZmF1bHROb2RlTGFiZWwgPSBmdW5jdGlvbihuZXdEZWZhdWx0KSB7XG4gIGlmICghXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKSB7XG4gICAgbmV3RGVmYXVsdCA9IF8uY29uc3RhbnQobmV3RGVmYXVsdCk7XG4gIH1cbiAgdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuID0gbmV3RGVmYXVsdDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9ub2RlQ291bnQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIF8ua2V5cyh0aGlzLl9ub2Rlcyk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc291cmNlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gXy5maWx0ZXIodGhpcy5ub2RlcygpLCBfLmJpbmQoZnVuY3Rpb24odikge1xuICAgIHJldHVybiBfLmlzRW1wdHkodGhpcy5faW5bdl0pO1xuICB9LCB0aGlzKSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2lua3MgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIF8uZmlsdGVyKHRoaXMubm9kZXMoKSwgXy5iaW5kKGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gXy5pc0VtcHR5KHRoaXMuX291dFt2XSk7XG4gIH0sIHRoaXMpKTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXROb2RlcyA9IGZ1bmN0aW9uKHZzLCB2YWx1ZSkge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgXy5lYWNoKHZzLCBfLmJpbmQoZnVuY3Rpb24odikge1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuc2V0Tm9kZSh2LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0Tm9kZSh2KTtcbiAgICB9XG4gIH0sIHRoaXMpKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0Tm9kZSA9IGZ1bmN0aW9uKHYsIHZhbHVlKSB7XG4gIGlmIChfLmhhcyh0aGlzLl9ub2RlcywgdikpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuX25vZGVzW3ZdID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5fbm9kZXNbdl0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHZhbHVlIDogdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuKHYpO1xuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHRoaXMuX3BhcmVudFt2XSA9IEdSQVBIX05PREU7XG4gICAgdGhpcy5fY2hpbGRyZW5bdl0gPSB7fTtcbiAgICB0aGlzLl9jaGlsZHJlbltHUkFQSF9OT0RFXVt2XSA9IHRydWU7XG4gIH1cbiAgdGhpcy5faW5bdl0gPSB7fTtcbiAgdGhpcy5fcHJlZHNbdl0gPSB7fTtcbiAgdGhpcy5fb3V0W3ZdID0ge307XG4gIHRoaXMuX3N1Y3Nbdl0gPSB7fTtcbiAgKyt0aGlzLl9ub2RlQ291bnQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGUgPSBmdW5jdGlvbih2KSB7XG4gIHJldHVybiB0aGlzLl9ub2Rlc1t2XTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5oYXNOb2RlID0gZnVuY3Rpb24odikge1xuICByZXR1cm4gXy5oYXModGhpcy5fbm9kZXMsIHYpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnJlbW92ZU5vZGUgPSAgZnVuY3Rpb24odikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmIChfLmhhcyh0aGlzLl9ub2RlcywgdikpIHtcbiAgICB2YXIgcmVtb3ZlRWRnZSA9IGZ1bmN0aW9uKGUpIHsgc2VsZi5yZW1vdmVFZGdlKHNlbGYuX2VkZ2VPYmpzW2VdKTsgfTtcbiAgICBkZWxldGUgdGhpcy5fbm9kZXNbdl07XG4gICAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICAgIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICAgICAgZGVsZXRlIHRoaXMuX3BhcmVudFt2XTtcbiAgICAgIF8uZWFjaCh0aGlzLmNoaWxkcmVuKHYpLCBfLmJpbmQoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgICAgdGhpcy5zZXRQYXJlbnQoY2hpbGQpO1xuICAgICAgfSwgdGhpcykpO1xuICAgICAgZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3ZdO1xuICAgIH1cbiAgICBfLmVhY2goXy5rZXlzKHRoaXMuX2luW3ZdKSwgcmVtb3ZlRWRnZSk7XG4gICAgZGVsZXRlIHRoaXMuX2luW3ZdO1xuICAgIGRlbGV0ZSB0aGlzLl9wcmVkc1t2XTtcbiAgICBfLmVhY2goXy5rZXlzKHRoaXMuX291dFt2XSksIHJlbW92ZUVkZ2UpO1xuICAgIGRlbGV0ZSB0aGlzLl9vdXRbdl07XG4gICAgZGVsZXRlIHRoaXMuX3N1Y3Nbdl07XG4gICAgLS10aGlzLl9ub2RlQ291bnQ7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0UGFyZW50ID0gZnVuY3Rpb24odiwgcGFyZW50KSB7XG4gIGlmICghdGhpcy5faXNDb21wb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBzZXQgcGFyZW50IGluIGEgbm9uLWNvbXBvdW5kIGdyYXBoXCIpO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocGFyZW50KSkge1xuICAgIHBhcmVudCA9IEdSQVBIX05PREU7XG4gIH0gZWxzZSB7XG4gICAgLy8gQ29lcmNlIHBhcmVudCB0byBzdHJpbmdcbiAgICBwYXJlbnQgKz0gXCJcIjtcbiAgICBmb3IgKHZhciBhbmNlc3RvciA9IHBhcmVudDtcbiAgICAgICAgICFfLmlzVW5kZWZpbmVkKGFuY2VzdG9yKTtcbiAgICAgICAgIGFuY2VzdG9yID0gdGhpcy5wYXJlbnQoYW5jZXN0b3IpKSB7XG4gICAgICBpZiAoYW5jZXN0b3IgPT09IHYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2V0dGluZyBcIiArIHBhcmVudCsgXCIgYXMgcGFyZW50IG9mIFwiICsgdiArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiB3b3VsZCBjcmVhdGUgY3JlYXRlIGEgY3ljbGVcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXROb2RlKHBhcmVudCk7XG4gIH1cblxuICB0aGlzLnNldE5vZGUodik7XG4gIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICB0aGlzLl9wYXJlbnRbdl0gPSBwYXJlbnQ7XG4gIHRoaXMuX2NoaWxkcmVuW3BhcmVudF1bdl0gPSB0cnVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QgPSBmdW5jdGlvbih2KSB7XG4gIGRlbGV0ZSB0aGlzLl9jaGlsZHJlblt0aGlzLl9wYXJlbnRbdl1dW3ZdO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnBhcmVudCA9IGZ1bmN0aW9uKHYpIHtcbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5fcGFyZW50W3ZdO1xuICAgIGlmIChwYXJlbnQgIT09IEdSQVBIX05PREUpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuY2hpbGRyZW4gPSBmdW5jdGlvbih2KSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHYpKSB7XG4gICAgdiA9IEdSQVBIX05PREU7XG4gIH1cblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX2NoaWxkcmVuW3ZdO1xuICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgcmV0dXJuIF8ua2V5cyhjaGlsZHJlbik7XG4gICAgfVxuICB9IGVsc2UgaWYgKHYgPT09IEdSQVBIX05PREUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcygpO1xuICB9IGVsc2UgaWYgKHRoaXMuaGFzTm9kZSh2KSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLnByZWRlY2Vzc29ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHByZWRzViA9IHRoaXMuX3ByZWRzW3ZdO1xuICBpZiAocHJlZHNWKSB7XG4gICAgcmV0dXJuIF8ua2V5cyhwcmVkc1YpO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc3VjY2Vzc29ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHN1Y3NWID0gdGhpcy5fc3Vjc1t2XTtcbiAgaWYgKHN1Y3NWKSB7XG4gICAgcmV0dXJuIF8ua2V5cyhzdWNzVik7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5uZWlnaGJvcnMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBwcmVkcyA9IHRoaXMucHJlZGVjZXNzb3JzKHYpO1xuICBpZiAocHJlZHMpIHtcbiAgICByZXR1cm4gXy51bmlvbihwcmVkcywgdGhpcy5zdWNjZXNzb3JzKHYpKTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLmlzTGVhZiA9IGZ1bmN0aW9uICh2KSB7XG4gIHZhciBuZWlnaGJvcnM7XG4gIGlmICh0aGlzLmlzRGlyZWN0ZWQoKSkge1xuICAgIG5laWdoYm9ycyA9IHRoaXMuc3VjY2Vzc29ycyh2KTtcbiAgfSBlbHNlIHtcbiAgICBuZWlnaGJvcnMgPSB0aGlzLm5laWdoYm9ycyh2KTtcbiAgfVxuICByZXR1cm4gbmVpZ2hib3JzLmxlbmd0aCA9PT0gMDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5maWx0ZXJOb2RlcyA9IGZ1bmN0aW9uKGZpbHRlcikge1xuICB2YXIgY29weSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHtcbiAgICBkaXJlY3RlZDogdGhpcy5faXNEaXJlY3RlZCxcbiAgICBtdWx0aWdyYXBoOiB0aGlzLl9pc011bHRpZ3JhcGgsXG4gICAgY29tcG91bmQ6IHRoaXMuX2lzQ29tcG91bmRcbiAgfSk7XG5cbiAgY29weS5zZXRHcmFwaCh0aGlzLmdyYXBoKCkpO1xuXG4gIF8uZWFjaCh0aGlzLl9ub2RlcywgXy5iaW5kKGZ1bmN0aW9uKHZhbHVlLCB2KSB7XG4gICAgaWYgKGZpbHRlcih2KSkge1xuICAgICAgY29weS5zZXROb2RlKHYsIHZhbHVlKTtcbiAgICB9XG4gIH0sIHRoaXMpKTtcblxuICBfLmVhY2godGhpcy5fZWRnZU9ianMsIF8uYmluZChmdW5jdGlvbihlKSB7XG4gICAgaWYgKGNvcHkuaGFzTm9kZShlLnYpICYmIGNvcHkuaGFzTm9kZShlLncpKSB7XG4gICAgICBjb3B5LnNldEVkZ2UoZSwgdGhpcy5lZGdlKGUpKTtcbiAgICB9XG4gIH0sIHRoaXMpKTtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBwYXJlbnRzID0ge307XG4gIGZ1bmN0aW9uIGZpbmRQYXJlbnQodikge1xuICAgIHZhciBwYXJlbnQgPSBzZWxmLnBhcmVudCh2KTtcbiAgICBpZiAocGFyZW50ID09PSB1bmRlZmluZWQgfHwgY29weS5oYXNOb2RlKHBhcmVudCkpIHtcbiAgICAgIHBhcmVudHNbdl0gPSBwYXJlbnQ7XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH0gZWxzZSBpZiAocGFyZW50IGluIHBhcmVudHMpIHtcbiAgICAgIHJldHVybiBwYXJlbnRzW3BhcmVudF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmaW5kUGFyZW50KHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICBfLmVhY2goY29weS5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgICBjb3B5LnNldFBhcmVudCh2LCBmaW5kUGFyZW50KHYpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBjb3B5O1xufTtcblxuLyogPT09IEVkZ2UgZnVuY3Rpb25zID09PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLnNldERlZmF1bHRFZGdlTGFiZWwgPSBmdW5jdGlvbihuZXdEZWZhdWx0KSB7XG4gIGlmICghXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKSB7XG4gICAgbmV3RGVmYXVsdCA9IF8uY29uc3RhbnQobmV3RGVmYXVsdCk7XG4gIH1cbiAgdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuID0gbmV3RGVmYXVsdDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZWRnZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9lZGdlQ291bnQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZWRnZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIF8udmFsdWVzKHRoaXMuX2VkZ2VPYmpzKTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRQYXRoID0gZnVuY3Rpb24odnMsIHZhbHVlKSB7XG4gIHZhciBzZWxmID0gdGhpcyxcbiAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gIF8ucmVkdWNlKHZzLCBmdW5jdGlvbih2LCB3KSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgc2VsZi5zZXRFZGdlKHYsIHcsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5zZXRFZGdlKHYsIHcpO1xuICAgIH1cbiAgICByZXR1cm4gdztcbiAgfSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLypcbiAqIHNldEVkZ2UodiwgdywgW3ZhbHVlLCBbbmFtZV1dKVxuICogc2V0RWRnZSh7IHYsIHcsIFtuYW1lXSB9LCBbdmFsdWVdKVxuICovXG5HcmFwaC5wcm90b3R5cGUuc2V0RWRnZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdiwgdywgbmFtZSwgdmFsdWUsXG4gICAgICB2YWx1ZVNwZWNpZmllZCA9IGZhbHNlLFxuICAgICAgYXJnMCA9IGFyZ3VtZW50c1swXTtcblxuICBpZiAodHlwZW9mIGFyZzAgPT09IFwib2JqZWN0XCIgJiYgYXJnMCAhPT0gbnVsbCAmJiBcInZcIiBpbiBhcmcwKSB7XG4gICAgdiA9IGFyZzAudjtcbiAgICB3ID0gYXJnMC53O1xuICAgIG5hbWUgPSBhcmcwLm5hbWU7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHZhbHVlID0gYXJndW1lbnRzWzFdO1xuICAgICAgdmFsdWVTcGVjaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2ID0gYXJnMDtcbiAgICB3ID0gYXJndW1lbnRzWzFdO1xuICAgIG5hbWUgPSBhcmd1bWVudHNbM107XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICB2YWx1ZSA9IGFyZ3VtZW50c1syXTtcbiAgICAgIHZhbHVlU3BlY2lmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB2ID0gXCJcIiArIHY7XG4gIHcgPSBcIlwiICsgdztcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKG5hbWUpKSB7XG4gICAgbmFtZSA9IFwiXCIgKyBuYW1lO1xuICB9XG5cbiAgdmFyIGUgPSBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSk7XG4gIGlmIChfLmhhcyh0aGlzLl9lZGdlTGFiZWxzLCBlKSkge1xuICAgIGlmICh2YWx1ZVNwZWNpZmllZCkge1xuICAgICAgdGhpcy5fZWRnZUxhYmVsc1tlXSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZChuYW1lKSAmJiAhdGhpcy5faXNNdWx0aWdyYXBoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHNldCBhIG5hbWVkIGVkZ2Ugd2hlbiBpc011bHRpZ3JhcGggPSBmYWxzZVwiKTtcbiAgfVxuXG4gIC8vIEl0IGRpZG4ndCBleGlzdCwgc28gd2UgbmVlZCB0byBjcmVhdGUgaXQuXG4gIC8vIEZpcnN0IGVuc3VyZSB0aGUgbm9kZXMgZXhpc3QuXG4gIHRoaXMuc2V0Tm9kZSh2KTtcbiAgdGhpcy5zZXROb2RlKHcpO1xuXG4gIHRoaXMuX2VkZ2VMYWJlbHNbZV0gPSB2YWx1ZVNwZWNpZmllZCA/IHZhbHVlIDogdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuKHYsIHcsIG5hbWUpO1xuXG4gIHZhciBlZGdlT2JqID0gZWRnZUFyZ3NUb09iaih0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKTtcbiAgLy8gRW5zdXJlIHdlIGFkZCB1bmRpcmVjdGVkIGVkZ2VzIGluIGEgY29uc2lzdGVudCB3YXkuXG4gIHYgPSBlZGdlT2JqLnY7XG4gIHcgPSBlZGdlT2JqLnc7XG5cbiAgT2JqZWN0LmZyZWV6ZShlZGdlT2JqKTtcbiAgdGhpcy5fZWRnZU9ianNbZV0gPSBlZGdlT2JqO1xuICBpbmNyZW1lbnRPckluaXRFbnRyeSh0aGlzLl9wcmVkc1t3XSwgdik7XG4gIGluY3JlbWVudE9ySW5pdEVudHJ5KHRoaXMuX3N1Y3Nbdl0sIHcpO1xuICB0aGlzLl9pblt3XVtlXSA9IGVkZ2VPYmo7XG4gIHRoaXMuX291dFt2XVtlXSA9IGVkZ2VPYmo7XG4gIHRoaXMuX2VkZ2VDb3VudCsrO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICA/IGVkZ2VPYmpUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIGFyZ3VtZW50c1swXSlcbiAgICAgICAgICAgIDogZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpKTtcbiAgcmV0dXJuIHRoaXMuX2VkZ2VMYWJlbHNbZV07XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaGFzRWRnZSA9IGZ1bmN0aW9uKHYsIHcsIG5hbWUpIHtcbiAgdmFyIGUgPSAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgICAgICAgICA6IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKSk7XG4gIHJldHVybiBfLmhhcyh0aGlzLl9lZGdlTGFiZWxzLCBlKTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5yZW1vdmVFZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICA/IGVkZ2VPYmpUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIGFyZ3VtZW50c1swXSlcbiAgICAgICAgICAgIDogZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpKSxcbiAgICAgIGVkZ2UgPSB0aGlzLl9lZGdlT2Jqc1tlXTtcbiAgaWYgKGVkZ2UpIHtcbiAgICB2ID0gZWRnZS52O1xuICAgIHcgPSBlZGdlLnc7XG4gICAgZGVsZXRlIHRoaXMuX2VkZ2VMYWJlbHNbZV07XG4gICAgZGVsZXRlIHRoaXMuX2VkZ2VPYmpzW2VdO1xuICAgIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkodGhpcy5fcHJlZHNbd10sIHYpO1xuICAgIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkodGhpcy5fc3Vjc1t2XSwgdyk7XG4gICAgZGVsZXRlIHRoaXMuX2luW3ddW2VdO1xuICAgIGRlbGV0ZSB0aGlzLl9vdXRbdl1bZV07XG4gICAgdGhpcy5fZWRnZUNvdW50LS07XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaW5FZGdlcyA9IGZ1bmN0aW9uKHYsIHUpIHtcbiAgdmFyIGluViA9IHRoaXMuX2luW3ZdO1xuICBpZiAoaW5WKSB7XG4gICAgdmFyIGVkZ2VzID0gXy52YWx1ZXMoaW5WKTtcbiAgICBpZiAoIXUpIHtcbiAgICAgIHJldHVybiBlZGdlcztcbiAgICB9XG4gICAgcmV0dXJuIF8uZmlsdGVyKGVkZ2VzLCBmdW5jdGlvbihlZGdlKSB7IHJldHVybiBlZGdlLnYgPT09IHU7IH0pO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUub3V0RWRnZXMgPSBmdW5jdGlvbih2LCB3KSB7XG4gIHZhciBvdXRWID0gdGhpcy5fb3V0W3ZdO1xuICBpZiAob3V0Vikge1xuICAgIHZhciBlZGdlcyA9IF8udmFsdWVzKG91dFYpO1xuICAgIGlmICghdykge1xuICAgICAgcmV0dXJuIGVkZ2VzO1xuICAgIH1cbiAgICByZXR1cm4gXy5maWx0ZXIoZWRnZXMsIGZ1bmN0aW9uKGVkZ2UpIHsgcmV0dXJuIGVkZ2UudyA9PT0gdzsgfSk7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ub2RlRWRnZXMgPSBmdW5jdGlvbih2LCB3KSB7XG4gIHZhciBpbkVkZ2VzID0gdGhpcy5pbkVkZ2VzKHYsIHcpO1xuICBpZiAoaW5FZGdlcykge1xuICAgIHJldHVybiBpbkVkZ2VzLmNvbmNhdCh0aGlzLm91dEVkZ2VzKHYsIHcpKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gaW5jcmVtZW50T3JJbml0RW50cnkobWFwLCBrKSB7XG4gIGlmIChtYXBba10pIHtcbiAgICBtYXBba10rKztcbiAgfSBlbHNlIHtcbiAgICBtYXBba10gPSAxO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkobWFwLCBrKSB7XG4gIGlmICghLS1tYXBba10pIHsgZGVsZXRlIG1hcFtrXTsgfVxufVxuXG5mdW5jdGlvbiBlZGdlQXJnc1RvSWQoaXNEaXJlY3RlZCwgdl8sIHdfLCBuYW1lKSB7XG4gIHZhciB2ID0gXCJcIiArIHZfO1xuICB2YXIgdyA9IFwiXCIgKyB3XztcbiAgaWYgKCFpc0RpcmVjdGVkICYmIHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuICByZXR1cm4gdiArIEVER0VfS0VZX0RFTElNICsgdyArIEVER0VfS0VZX0RFTElNICtcbiAgICAgICAgICAgICAoXy5pc1VuZGVmaW5lZChuYW1lKSA/IERFRkFVTFRfRURHRV9OQU1FIDogbmFtZSk7XG59XG5cbmZ1bmN0aW9uIGVkZ2VBcmdzVG9PYmooaXNEaXJlY3RlZCwgdl8sIHdfLCBuYW1lKSB7XG4gIHZhciB2ID0gXCJcIiArIHZfO1xuICB2YXIgdyA9IFwiXCIgKyB3XztcbiAgaWYgKCFpc0RpcmVjdGVkICYmIHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuICB2YXIgZWRnZU9iaiA9ICB7IHY6IHYsIHc6IHcgfTtcbiAgaWYgKG5hbWUpIHtcbiAgICBlZGdlT2JqLm5hbWUgPSBuYW1lO1xuICB9XG4gIHJldHVybiBlZGdlT2JqO1xufVxuXG5mdW5jdGlvbiBlZGdlT2JqVG9JZChpc0RpcmVjdGVkLCBlZGdlT2JqKSB7XG4gIHJldHVybiBlZGdlQXJnc1RvSWQoaXNEaXJlY3RlZCwgZWRnZU9iai52LCBlZGdlT2JqLncsIGVkZ2VPYmoubmFtZSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/graph.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/index.js": /*!*****************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/index.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("// Includes only the \"core\" of graphlib\nmodule.exports = {\n Graph: __webpack_require__(/*! ./graph */ \"./node_modules/@dagrejs/graphlib/lib/graph.js\"),\n version: __webpack_require__(/*! ./version */ \"./node_modules/@dagrejs/graphlib/lib/version.js\")\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2luZGV4LmpzPzY2ZDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLFNBQVMsbUJBQU8sQ0FBQyw4REFBUztBQUMxQixXQUFXLG1CQUFPLENBQUMsa0VBQVc7QUFDOUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSW5jbHVkZXMgb25seSB0aGUgXCJjb3JlXCIgb2YgZ3JhcGhsaWJcbm1vZHVsZS5leHBvcnRzID0ge1xuICBHcmFwaDogcmVxdWlyZShcIi4vZ3JhcGhcIiksXG4gIHZlcnNpb246IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/index.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/json.js": /*!****************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/json.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ./lodash */ \"./node_modules/@dagrejs/graphlib/lib/lodash.js\"),\n Graph = __webpack_require__(/*! ./graph */ \"./node_modules/@dagrejs/graphlib/lib/graph.js\");\n\nmodule.exports = {\n write: write,\n read: read\n};\n\nfunction write(g) {\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound()\n },\n nodes: writeNodes(g),\n edges: writeEdges(g)\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\nfunction writeNodes(g) {\n return _.map(g.nodes(), function(v) {\n var nodeValue = g.node(v),\n parent = g.parent(v),\n node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\nfunction writeEdges(g) {\n return _.map(g.edges(), function(e) {\n var edgeValue = g.edge(e),\n edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function(entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function(entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2pzb24uanM/M2Q5YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRLG1CQUFPLENBQUMsZ0VBQVU7QUFDMUIsWUFBWSxtQkFBTyxDQUFDLDhEQUFTOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxlQUFlLDJDQUEyQztBQUMxRCxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AZGFncmVqcy9ncmFwaGxpYi9saWIvanNvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpLFxuICAgIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB3cml0ZTogd3JpdGUsXG4gIHJlYWQ6IHJlYWRcbn07XG5cbmZ1bmN0aW9uIHdyaXRlKGcpIHtcbiAgdmFyIGpzb24gPSB7XG4gICAgb3B0aW9uczoge1xuICAgICAgZGlyZWN0ZWQ6IGcuaXNEaXJlY3RlZCgpLFxuICAgICAgbXVsdGlncmFwaDogZy5pc011bHRpZ3JhcGgoKSxcbiAgICAgIGNvbXBvdW5kOiBnLmlzQ29tcG91bmQoKVxuICAgIH0sXG4gICAgbm9kZXM6IHdyaXRlTm9kZXMoZyksXG4gICAgZWRnZXM6IHdyaXRlRWRnZXMoZylcbiAgfTtcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKGcuZ3JhcGgoKSkpIHtcbiAgICBqc29uLnZhbHVlID0gXy5jbG9uZShnLmdyYXBoKCkpO1xuICB9XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiB3cml0ZU5vZGVzKGcpIHtcbiAgcmV0dXJuIF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlVmFsdWUgPSBnLm5vZGUodiksXG4gICAgICAgIHBhcmVudCA9IGcucGFyZW50KHYpLFxuICAgICAgICBub2RlID0geyB2OiB2IH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKG5vZGVWYWx1ZSkpIHtcbiAgICAgIG5vZGUudmFsdWUgPSBub2RlVmFsdWU7XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXJlbnQpKSB7XG4gICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZUVkZ2VzKGcpIHtcbiAgcmV0dXJuIF8ubWFwKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlVmFsdWUgPSBnLmVkZ2UoZSksXG4gICAgICAgIGVkZ2UgPSB7IHY6IGUudiwgdzogZS53IH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGUubmFtZSkpIHtcbiAgICAgIGVkZ2UubmFtZSA9IGUubmFtZTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVkZ2VWYWx1ZSkpIHtcbiAgICAgIGVkZ2UudmFsdWUgPSBlZGdlVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBlZGdlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZChqc29uKSB7XG4gIHZhciBnID0gbmV3IEdyYXBoKGpzb24ub3B0aW9ucykuc2V0R3JhcGgoanNvbi52YWx1ZSk7XG4gIF8uZWFjaChqc29uLm5vZGVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGcuc2V0Tm9kZShlbnRyeS52LCBlbnRyeS52YWx1ZSk7XG4gICAgaWYgKGVudHJ5LnBhcmVudCkge1xuICAgICAgZy5zZXRQYXJlbnQoZW50cnkudiwgZW50cnkucGFyZW50KTtcbiAgICB9XG4gIH0pO1xuICBfLmVhY2goanNvbi5lZGdlcywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICBnLnNldEVkZ2UoeyB2OiBlbnRyeS52LCB3OiBlbnRyeS53LCBuYW1lOiBlbnRyeS5uYW1lIH0sIGVudHJ5LnZhbHVlKTtcbiAgfSk7XG4gIHJldHVybiBnO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/json.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/lodash.js": /*!******************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/lodash.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* global window */\n\nvar lodash;\n\nif (true) {\n try {\n lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n } catch (e) {}\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL2xvZGFzaC5qcz9kZjNmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBOztBQUVBLElBQUksSUFBNkI7QUFDakM7QUFDQSxhQUFhLG1CQUFPLENBQUMsK0NBQVE7QUFDN0IsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AZGFncmVqcy9ncmFwaGxpYi9saWIvbG9kYXNoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqL1xuXG52YXIgbG9kYXNoO1xuXG5pZiAodHlwZW9mIHJlcXVpcmUgPT09IFwiZnVuY3Rpb25cIikge1xuICB0cnkge1xuICAgIGxvZGFzaCA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG4gIH0gY2F0Y2ggKGUpIHt9XG59XG5cbmlmICghbG9kYXNoKSB7XG4gIGxvZGFzaCA9IHdpbmRvdy5fO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxvZGFzaDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/lodash.js\n"); /***/ }), /***/ "./node_modules/@dagrejs/graphlib/lib/version.js": /*!*******************************************************!*\ !*** ./node_modules/@dagrejs/graphlib/lib/version.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = '2.1.4';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGRhZ3JlanMvZ3JhcGhsaWIvbGliL3ZlcnNpb24uanM/NDk0NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AZGFncmVqcy9ncmFwaGxpYi9saWIvdmVyc2lvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gJzIuMS40JztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@dagrejs/graphlib/lib/version.js\n"); /***/ }), /***/ "./node_modules/@webgpu/types/dist/constants.js": /*!******************************************************!*\ !*** ./node_modules/@webgpu/types/dist/constants.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n// https://github.com/gpuweb/gpuweb/blob/01b20b4ad93fabae1e8e0d7752515f69708d33e0/spec/index.bs\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// tslint:disable:variable-name\n// String enums\nvar ExtensionName;\n(function (ExtensionName) {\n ExtensionName[\"TextureCompressionBC\"] = \"texture-compression-bc\";\n})(ExtensionName = exports.ExtensionName || (exports.ExtensionName = {}));\nvar AddressMode;\n(function (AddressMode) {\n AddressMode[\"ClampToEdge\"] = \"clamp-to-edge\";\n AddressMode[\"Repeat\"] = \"repeat\";\n AddressMode[\"MirrorRepeat\"] = \"mirror-repeat\";\n})(AddressMode = exports.AddressMode || (exports.AddressMode = {}));\nvar BindingType;\n(function (BindingType) {\n BindingType[\"UniformBuffer\"] = \"uniform-buffer\";\n BindingType[\"StorageBuffer\"] = \"storage-buffer\";\n BindingType[\"ReadonlyStorageBuffer\"] = \"readonly-storage-buffer\";\n BindingType[\"Sampler\"] = \"sampler\";\n BindingType[\"ComparisonSampler\"] = \"comparison-sampler\";\n BindingType[\"SampledTexture\"] = \"sampled-texture\";\n BindingType[\"ReadonlyStorageTexture\"] = \"readonly-storage-texture\";\n BindingType[\"WriteonlyStorageTexture\"] = \"writeonly-storage-texture\";\n})(BindingType = exports.BindingType || (exports.BindingType = {}));\nvar BlendFactor;\n(function (BlendFactor) {\n BlendFactor[\"Zero\"] = \"zero\";\n BlendFactor[\"One\"] = \"one\";\n BlendFactor[\"SrcColor\"] = \"src-color\";\n BlendFactor[\"OneMinusSrcColor\"] = \"one-minus-src-color\";\n BlendFactor[\"SrcAlpha\"] = \"src-alpha\";\n BlendFactor[\"OneMinusSrcAlpha\"] = \"one-minus-src-alpha\";\n BlendFactor[\"DstColor\"] = \"dst-color\";\n BlendFactor[\"OneMinusDstColor\"] = \"one-minus-dst-color\";\n BlendFactor[\"DstAlpha\"] = \"dst-alpha\";\n BlendFactor[\"OneMinusDstAlpha\"] = \"one-minus-dst-alpha\";\n BlendFactor[\"SrcAlphaSaturated\"] = \"src-alpha-saturated\";\n BlendFactor[\"BlendColor\"] = \"blend-color\";\n BlendFactor[\"OneMinusBlendColor\"] = \"one-minus-blend-color\";\n})(BlendFactor = exports.BlendFactor || (exports.BlendFactor = {}));\nvar BlendOperation;\n(function (BlendOperation) {\n BlendOperation[\"Add\"] = \"add\";\n BlendOperation[\"Subtract\"] = \"subtract\";\n BlendOperation[\"ReverseSubtract\"] = \"reverse-subtract\";\n BlendOperation[\"Min\"] = \"min\";\n BlendOperation[\"Max\"] = \"max\";\n})(BlendOperation = exports.BlendOperation || (exports.BlendOperation = {}));\nvar CompareFunction;\n(function (CompareFunction) {\n CompareFunction[\"Never\"] = \"never\";\n CompareFunction[\"Less\"] = \"less\";\n CompareFunction[\"Equal\"] = \"equal\";\n CompareFunction[\"LessEqual\"] = \"less-equal\";\n CompareFunction[\"Greater\"] = \"greater\";\n CompareFunction[\"NotEqual\"] = \"not-equal\";\n CompareFunction[\"GreaterEqual\"] = \"greater-equal\";\n CompareFunction[\"Always\"] = \"always\";\n})(CompareFunction = exports.CompareFunction || (exports.CompareFunction = {}));\nvar CullMode;\n(function (CullMode) {\n CullMode[\"None\"] = \"none\";\n CullMode[\"Front\"] = \"front\";\n CullMode[\"Back\"] = \"back\";\n})(CullMode = exports.CullMode || (exports.CullMode = {}));\nvar FilterMode;\n(function (FilterMode) {\n FilterMode[\"Nearest\"] = \"nearest\";\n FilterMode[\"Linear\"] = \"linear\";\n})(FilterMode = exports.FilterMode || (exports.FilterMode = {}));\nvar FrontFace;\n(function (FrontFace) {\n FrontFace[\"CCW\"] = \"ccw\";\n FrontFace[\"CW\"] = \"cw\";\n})(FrontFace = exports.FrontFace || (exports.FrontFace = {}));\nvar IndexFormat;\n(function (IndexFormat) {\n IndexFormat[\"Uint16\"] = \"uint16\";\n IndexFormat[\"Uint32\"] = \"uint32\";\n})(IndexFormat = exports.IndexFormat || (exports.IndexFormat = {}));\nvar InputStepMode;\n(function (InputStepMode) {\n InputStepMode[\"Vertex\"] = \"vertex\";\n InputStepMode[\"Instance\"] = \"instance\";\n})(InputStepMode = exports.InputStepMode || (exports.InputStepMode = {}));\nvar LoadOp;\n(function (LoadOp) {\n LoadOp[\"Load\"] = \"load\";\n})(LoadOp = exports.LoadOp || (exports.LoadOp = {}));\nvar PrimitiveTopology;\n(function (PrimitiveTopology) {\n PrimitiveTopology[\"PointList\"] = \"point-list\";\n PrimitiveTopology[\"LineList\"] = \"line-list\";\n PrimitiveTopology[\"LineStrip\"] = \"line-strip\";\n PrimitiveTopology[\"TriangleList\"] = \"triangle-list\";\n PrimitiveTopology[\"TriangleStrip\"] = \"triangle-strip\";\n})(PrimitiveTopology = exports.PrimitiveTopology || (exports.PrimitiveTopology = {}));\nvar StencilOperation;\n(function (StencilOperation) {\n StencilOperation[\"Keep\"] = \"keep\";\n StencilOperation[\"Zero\"] = \"zero\";\n StencilOperation[\"Replace\"] = \"replace\";\n StencilOperation[\"Invert\"] = \"invert\";\n StencilOperation[\"IncrementClamp\"] = \"increment-clamp\";\n StencilOperation[\"DecrementClamp\"] = \"decrement-clamp\";\n StencilOperation[\"IncrementWrap\"] = \"increment-wrap\";\n StencilOperation[\"DecrementWrap\"] = \"decrement-wrap\";\n})(StencilOperation = exports.StencilOperation || (exports.StencilOperation = {}));\nvar StoreOp;\n(function (StoreOp) {\n StoreOp[\"Store\"] = \"store\";\n StoreOp[\"Clear\"] = \"clear\";\n})(StoreOp = exports.StoreOp || (exports.StoreOp = {}));\nvar TextureDimension;\n(function (TextureDimension) {\n TextureDimension[\"E1d\"] = \"1d\";\n TextureDimension[\"E2d\"] = \"2d\";\n TextureDimension[\"E3d\"] = \"3d\";\n})(TextureDimension = exports.TextureDimension || (exports.TextureDimension = {}));\nvar TextureFormat;\n(function (TextureFormat) {\n TextureFormat[\"R8Unorm\"] = \"r8unorm\";\n TextureFormat[\"R8Snorm\"] = \"r8snorm\";\n TextureFormat[\"R8Uint\"] = \"r8uint\";\n TextureFormat[\"R8Sint\"] = \"r8sint\";\n TextureFormat[\"R16Uint\"] = \"r16uint\";\n TextureFormat[\"R16Sint\"] = \"r16sint\";\n TextureFormat[\"R16Float\"] = \"r16float\";\n TextureFormat[\"RG8Unorm\"] = \"rg8unorm\";\n TextureFormat[\"RG8Snorm\"] = \"rg8snorm\";\n TextureFormat[\"RG8Uint\"] = \"rg8uint\";\n TextureFormat[\"RG8Sint\"] = \"rg8sint\";\n TextureFormat[\"R32Uint\"] = \"r32uint\";\n TextureFormat[\"R32Sint\"] = \"r32sint\";\n TextureFormat[\"R32Float\"] = \"r32float\";\n TextureFormat[\"RG16Uint\"] = \"rg16uint\";\n TextureFormat[\"RG16Sint\"] = \"rg16sint\";\n TextureFormat[\"RG16Float\"] = \"rg16float\";\n TextureFormat[\"RGBA8Unorm\"] = \"rgba8unorm\";\n TextureFormat[\"RGBA8UnormSRGB\"] = \"rgba8unorm-srgb\";\n TextureFormat[\"RGBA8Snorm\"] = \"rgba8snorm\";\n TextureFormat[\"RGBA8Uint\"] = \"rgba8uint\";\n TextureFormat[\"RGBA8Sint\"] = \"rgba8sint\";\n TextureFormat[\"BGRA8Unorm\"] = \"bgra8unorm\";\n TextureFormat[\"BGRA8UnormSRGB\"] = \"bgra8unorm-srgb\";\n TextureFormat[\"RGB10A2Unorm\"] = \"rgb10a2unorm\";\n TextureFormat[\"RG11B10Float\"] = \"rg11b10float\";\n TextureFormat[\"RG32Uint\"] = \"rg32uint\";\n TextureFormat[\"RG32Sint\"] = \"rg32sint\";\n TextureFormat[\"RG32Float\"] = \"rg32float\";\n TextureFormat[\"RGBA16Uint\"] = \"rgba16uint\";\n TextureFormat[\"RGBA16Sint\"] = \"rgba16sint\";\n TextureFormat[\"RGBA16Float\"] = \"rgba16float\";\n TextureFormat[\"RGBA32Uint\"] = \"rgba32uint\";\n TextureFormat[\"RGBA32Sint\"] = \"rgba32sint\";\n TextureFormat[\"RGBA32Float\"] = \"rgba32float\";\n TextureFormat[\"Depth32Float\"] = \"depth32float\";\n TextureFormat[\"Depth24Plus\"] = \"depth24plus\";\n TextureFormat[\"Depth24PlusStencil8\"] = \"depth24plus-stencil8\";\n})(TextureFormat = exports.TextureFormat || (exports.TextureFormat = {}));\nvar TextureComponentType;\n(function (TextureComponentType) {\n TextureComponentType[\"Float\"] = \"float\";\n TextureComponentType[\"Sint\"] = \"sint\";\n TextureComponentType[\"Uint\"] = \"uint\";\n})(TextureComponentType = exports.TextureComponentType || (exports.TextureComponentType = {}));\nvar TextureViewDimension;\n(function (TextureViewDimension) {\n TextureViewDimension[\"E1d\"] = \"1d\";\n TextureViewDimension[\"E2d\"] = \"2d\";\n TextureViewDimension[\"E2dArray\"] = \"2d-array\";\n TextureViewDimension[\"Cube\"] = \"cube\";\n TextureViewDimension[\"CubeArray\"] = \"cube-array\";\n TextureViewDimension[\"E3d\"] = \"3d\";\n})(TextureViewDimension = exports.TextureViewDimension || (exports.TextureViewDimension = {}));\nvar VertexFormat;\n(function (VertexFormat) {\n VertexFormat[\"Uchar2\"] = \"uchar2\";\n VertexFormat[\"Uchar4\"] = \"uchar4\";\n VertexFormat[\"Char2\"] = \"char2\";\n VertexFormat[\"Char4\"] = \"char4\";\n VertexFormat[\"Uchar2Norm\"] = \"uchar2norm\";\n VertexFormat[\"Uchar4Norm\"] = \"uchar4norm\";\n VertexFormat[\"Char2Norm\"] = \"char2norm\";\n VertexFormat[\"Char4Norm\"] = \"char4norm\";\n VertexFormat[\"Ushort2\"] = \"ushort2\";\n VertexFormat[\"Ushort4\"] = \"ushort4\";\n VertexFormat[\"Short2\"] = \"short2\";\n VertexFormat[\"Short4\"] = \"short4\";\n VertexFormat[\"Ushort2Norm\"] = \"ushort2norm\";\n VertexFormat[\"Ushort4Norm\"] = \"ushort4norm\";\n VertexFormat[\"Short2Norm\"] = \"short2norm\";\n VertexFormat[\"Short4Norm\"] = \"short4norm\";\n VertexFormat[\"Half2\"] = \"half2\";\n VertexFormat[\"Half4\"] = \"half4\";\n VertexFormat[\"Float\"] = \"float\";\n VertexFormat[\"Float2\"] = \"float2\";\n VertexFormat[\"Float3\"] = \"float3\";\n VertexFormat[\"Float4\"] = \"float4\";\n VertexFormat[\"Uint\"] = \"uint\";\n VertexFormat[\"Uint2\"] = \"uint2\";\n VertexFormat[\"Uint3\"] = \"uint3\";\n VertexFormat[\"Uint4\"] = \"uint4\";\n VertexFormat[\"Int\"] = \"int\";\n VertexFormat[\"Int2\"] = \"int2\";\n VertexFormat[\"Int3\"] = \"int3\";\n VertexFormat[\"Int4\"] = \"int4\";\n})(VertexFormat = exports.VertexFormat || (exports.VertexFormat = {}));\nvar TextureAspect;\n(function (TextureAspect) {\n TextureAspect[\"All\"] = \"all\";\n TextureAspect[\"StencilOnly\"] = \"stencil-only\";\n TextureAspect[\"DepthOnly\"] = \"depth-only\";\n})(TextureAspect = exports.TextureAspect || (exports.TextureAspect = {}));\nvar CompilationMessageType;\n(function (CompilationMessageType) {\n CompilationMessageType[\"Error\"] = \"error\";\n CompilationMessageType[\"Warning\"] = \"warning\";\n CompilationMessageType[\"Info\"] = \"info\";\n})(CompilationMessageType = exports.CompilationMessageType || (exports.CompilationMessageType = {}));\nvar QueryType;\n(function (QueryType) {\n QueryType[\"Occlusion\"] = \"occlusion\";\n})(QueryType = exports.QueryType || (exports.QueryType = {}));\n// Bit fields\nvar BufferUsage;\n(function (BufferUsage) {\n BufferUsage[BufferUsage[\"MapRead\"] = 1] = \"MapRead\";\n BufferUsage[BufferUsage[\"MapWrite\"] = 2] = \"MapWrite\";\n BufferUsage[BufferUsage[\"CopySrc\"] = 4] = \"CopySrc\";\n BufferUsage[BufferUsage[\"CopyDst\"] = 8] = \"CopyDst\";\n BufferUsage[BufferUsage[\"Index\"] = 16] = \"Index\";\n BufferUsage[BufferUsage[\"Vertex\"] = 32] = \"Vertex\";\n BufferUsage[BufferUsage[\"Uniform\"] = 64] = \"Uniform\";\n BufferUsage[BufferUsage[\"Storage\"] = 128] = \"Storage\";\n BufferUsage[BufferUsage[\"Indirect\"] = 256] = \"Indirect\";\n BufferUsage[BufferUsage[\"QueryResolve\"] = 512] = \"QueryResolve\";\n})(BufferUsage = exports.BufferUsage || (exports.BufferUsage = {}));\nvar ColorWrite;\n(function (ColorWrite) {\n ColorWrite[ColorWrite[\"Red\"] = 1] = \"Red\";\n ColorWrite[ColorWrite[\"Green\"] = 2] = \"Green\";\n ColorWrite[ColorWrite[\"Blue\"] = 4] = \"Blue\";\n ColorWrite[ColorWrite[\"Alpha\"] = 8] = \"Alpha\";\n ColorWrite[ColorWrite[\"All\"] = 15] = \"All\";\n})(ColorWrite = exports.ColorWrite || (exports.ColorWrite = {}));\nvar ShaderStage;\n(function (ShaderStage) {\n ShaderStage[ShaderStage[\"Vertex\"] = 1] = \"Vertex\";\n ShaderStage[ShaderStage[\"Fragment\"] = 2] = \"Fragment\";\n ShaderStage[ShaderStage[\"Compute\"] = 4] = \"Compute\";\n})(ShaderStage = exports.ShaderStage || (exports.ShaderStage = {}));\nvar TextureUsage;\n(function (TextureUsage) {\n TextureUsage[TextureUsage[\"CopySrc\"] = 1] = \"CopySrc\";\n TextureUsage[TextureUsage[\"CopyDst\"] = 2] = \"CopyDst\";\n TextureUsage[TextureUsage[\"Sampled\"] = 4] = \"Sampled\";\n TextureUsage[TextureUsage[\"Storage\"] = 8] = \"Storage\";\n TextureUsage[TextureUsage[\"OutputAttachment\"] = 16] = \"OutputAttachment\";\n})(TextureUsage = exports.TextureUsage || (exports.TextureUsage = {}));\nvar MapMode;\n(function (MapMode) {\n MapMode[MapMode[\"Read\"] = 1] = \"Read\";\n MapMode[MapMode[\"Write\"] = 2] = \"Write\";\n})(MapMode = exports.MapMode || (exports.MapMode = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cy5qcz81ZTQ1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQSw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxzRUFBc0U7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsZ0VBQWdFO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxnRUFBZ0U7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxnRUFBZ0U7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHlFQUF5RTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsNEVBQTRFO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHVEQUF1RDtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsNkRBQTZEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQywwREFBMEQ7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGdFQUFnRTtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsc0VBQXNFO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLENBQUMsaURBQWlEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrRkFBa0Y7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLCtFQUErRTtBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsb0RBQW9EO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLCtFQUErRTtBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsc0VBQXNFO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDJGQUEyRjtBQUM1RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQywyRkFBMkY7QUFDNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsbUVBQW1FO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHNFQUFzRTtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxpR0FBaUc7QUFDbEc7QUFDQTtBQUNBO0FBQ0EsQ0FBQywwREFBMEQ7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGdFQUFnRTtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsNkRBQTZEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGdFQUFnRTtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsbUVBQW1FO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxvREFBb0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi8wMWIyMGI0YWQ5M2ZhYmFlMWU4ZTBkNzc1MjUxNWY2OTcwOGQzM2UwL3NwZWMvaW5kZXguYnNcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIHRzbGludDpkaXNhYmxlOnZhcmlhYmxlLW5hbWVcbi8vIFN0cmluZyBlbnVtc1xudmFyIEV4dGVuc2lvbk5hbWU7XG4oZnVuY3Rpb24gKEV4dGVuc2lvbk5hbWUpIHtcbiAgICBFeHRlbnNpb25OYW1lW1wiVGV4dHVyZUNvbXByZXNzaW9uQkNcIl0gPSBcInRleHR1cmUtY29tcHJlc3Npb24tYmNcIjtcbn0pKEV4dGVuc2lvbk5hbWUgPSBleHBvcnRzLkV4dGVuc2lvbk5hbWUgfHwgKGV4cG9ydHMuRXh0ZW5zaW9uTmFtZSA9IHt9KSk7XG52YXIgQWRkcmVzc01vZGU7XG4oZnVuY3Rpb24gKEFkZHJlc3NNb2RlKSB7XG4gICAgQWRkcmVzc01vZGVbXCJDbGFtcFRvRWRnZVwiXSA9IFwiY2xhbXAtdG8tZWRnZVwiO1xuICAgIEFkZHJlc3NNb2RlW1wiUmVwZWF0XCJdID0gXCJyZXBlYXRcIjtcbiAgICBBZGRyZXNzTW9kZVtcIk1pcnJvclJlcGVhdFwiXSA9IFwibWlycm9yLXJlcGVhdFwiO1xufSkoQWRkcmVzc01vZGUgPSBleHBvcnRzLkFkZHJlc3NNb2RlIHx8IChleHBvcnRzLkFkZHJlc3NNb2RlID0ge30pKTtcbnZhciBCaW5kaW5nVHlwZTtcbihmdW5jdGlvbiAoQmluZGluZ1R5cGUpIHtcbiAgICBCaW5kaW5nVHlwZVtcIlVuaWZvcm1CdWZmZXJcIl0gPSBcInVuaWZvcm0tYnVmZmVyXCI7XG4gICAgQmluZGluZ1R5cGVbXCJTdG9yYWdlQnVmZmVyXCJdID0gXCJzdG9yYWdlLWJ1ZmZlclwiO1xuICAgIEJpbmRpbmdUeXBlW1wiUmVhZG9ubHlTdG9yYWdlQnVmZmVyXCJdID0gXCJyZWFkb25seS1zdG9yYWdlLWJ1ZmZlclwiO1xuICAgIEJpbmRpbmdUeXBlW1wiU2FtcGxlclwiXSA9IFwic2FtcGxlclwiO1xuICAgIEJpbmRpbmdUeXBlW1wiQ29tcGFyaXNvblNhbXBsZXJcIl0gPSBcImNvbXBhcmlzb24tc2FtcGxlclwiO1xuICAgIEJpbmRpbmdUeXBlW1wiU2FtcGxlZFRleHR1cmVcIl0gPSBcInNhbXBsZWQtdGV4dHVyZVwiO1xuICAgIEJpbmRpbmdUeXBlW1wiUmVhZG9ubHlTdG9yYWdlVGV4dHVyZVwiXSA9IFwicmVhZG9ubHktc3RvcmFnZS10ZXh0dXJlXCI7XG4gICAgQmluZGluZ1R5cGVbXCJXcml0ZW9ubHlTdG9yYWdlVGV4dHVyZVwiXSA9IFwid3JpdGVvbmx5LXN0b3JhZ2UtdGV4dHVyZVwiO1xufSkoQmluZGluZ1R5cGUgPSBleHBvcnRzLkJpbmRpbmdUeXBlIHx8IChleHBvcnRzLkJpbmRpbmdUeXBlID0ge30pKTtcbnZhciBCbGVuZEZhY3RvcjtcbihmdW5jdGlvbiAoQmxlbmRGYWN0b3IpIHtcbiAgICBCbGVuZEZhY3RvcltcIlplcm9cIl0gPSBcInplcm9cIjtcbiAgICBCbGVuZEZhY3RvcltcIk9uZVwiXSA9IFwib25lXCI7XG4gICAgQmxlbmRGYWN0b3JbXCJTcmNDb2xvclwiXSA9IFwic3JjLWNvbG9yXCI7XG4gICAgQmxlbmRGYWN0b3JbXCJPbmVNaW51c1NyY0NvbG9yXCJdID0gXCJvbmUtbWludXMtc3JjLWNvbG9yXCI7XG4gICAgQmxlbmRGYWN0b3JbXCJTcmNBbHBoYVwiXSA9IFwic3JjLWFscGhhXCI7XG4gICAgQmxlbmRGYWN0b3JbXCJPbmVNaW51c1NyY0FscGhhXCJdID0gXCJvbmUtbWludXMtc3JjLWFscGhhXCI7XG4gICAgQmxlbmRGYWN0b3JbXCJEc3RDb2xvclwiXSA9IFwiZHN0LWNvbG9yXCI7XG4gICAgQmxlbmRGYWN0b3JbXCJPbmVNaW51c0RzdENvbG9yXCJdID0gXCJvbmUtbWludXMtZHN0LWNvbG9yXCI7XG4gICAgQmxlbmRGYWN0b3JbXCJEc3RBbHBoYVwiXSA9IFwiZHN0LWFscGhhXCI7XG4gICAgQmxlbmRGYWN0b3JbXCJPbmVNaW51c0RzdEFscGhhXCJdID0gXCJvbmUtbWludXMtZHN0LWFscGhhXCI7XG4gICAgQmxlbmRGYWN0b3JbXCJTcmNBbHBoYVNhdHVyYXRlZFwiXSA9IFwic3JjLWFscGhhLXNhdHVyYXRlZFwiO1xuICAgIEJsZW5kRmFjdG9yW1wiQmxlbmRDb2xvclwiXSA9IFwiYmxlbmQtY29sb3JcIjtcbiAgICBCbGVuZEZhY3RvcltcIk9uZU1pbnVzQmxlbmRDb2xvclwiXSA9IFwib25lLW1pbnVzLWJsZW5kLWNvbG9yXCI7XG59KShCbGVuZEZhY3RvciA9IGV4cG9ydHMuQmxlbmRGYWN0b3IgfHwgKGV4cG9ydHMuQmxlbmRGYWN0b3IgPSB7fSkpO1xudmFyIEJsZW5kT3BlcmF0aW9uO1xuKGZ1bmN0aW9uIChCbGVuZE9wZXJhdGlvbikge1xuICAgIEJsZW5kT3BlcmF0aW9uW1wiQWRkXCJdID0gXCJhZGRcIjtcbiAgICBCbGVuZE9wZXJhdGlvbltcIlN1YnRyYWN0XCJdID0gXCJzdWJ0cmFjdFwiO1xuICAgIEJsZW5kT3BlcmF0aW9uW1wiUmV2ZXJzZVN1YnRyYWN0XCJdID0gXCJyZXZlcnNlLXN1YnRyYWN0XCI7XG4gICAgQmxlbmRPcGVyYXRpb25bXCJNaW5cIl0gPSBcIm1pblwiO1xuICAgIEJsZW5kT3BlcmF0aW9uW1wiTWF4XCJdID0gXCJtYXhcIjtcbn0pKEJsZW5kT3BlcmF0aW9uID0gZXhwb3J0cy5CbGVuZE9wZXJhdGlvbiB8fCAoZXhwb3J0cy5CbGVuZE9wZXJhdGlvbiA9IHt9KSk7XG52YXIgQ29tcGFyZUZ1bmN0aW9uO1xuKGZ1bmN0aW9uIChDb21wYXJlRnVuY3Rpb24pIHtcbiAgICBDb21wYXJlRnVuY3Rpb25bXCJOZXZlclwiXSA9IFwibmV2ZXJcIjtcbiAgICBDb21wYXJlRnVuY3Rpb25bXCJMZXNzXCJdID0gXCJsZXNzXCI7XG4gICAgQ29tcGFyZUZ1bmN0aW9uW1wiRXF1YWxcIl0gPSBcImVxdWFsXCI7XG4gICAgQ29tcGFyZUZ1bmN0aW9uW1wiTGVzc0VxdWFsXCJdID0gXCJsZXNzLWVxdWFsXCI7XG4gICAgQ29tcGFyZUZ1bmN0aW9uW1wiR3JlYXRlclwiXSA9IFwiZ3JlYXRlclwiO1xuICAgIENvbXBhcmVGdW5jdGlvbltcIk5vdEVxdWFsXCJdID0gXCJub3QtZXF1YWxcIjtcbiAgICBDb21wYXJlRnVuY3Rpb25bXCJHcmVhdGVyRXF1YWxcIl0gPSBcImdyZWF0ZXItZXF1YWxcIjtcbiAgICBDb21wYXJlRnVuY3Rpb25bXCJBbHdheXNcIl0gPSBcImFsd2F5c1wiO1xufSkoQ29tcGFyZUZ1bmN0aW9uID0gZXhwb3J0cy5Db21wYXJlRnVuY3Rpb24gfHwgKGV4cG9ydHMuQ29tcGFyZUZ1bmN0aW9uID0ge30pKTtcbnZhciBDdWxsTW9kZTtcbihmdW5jdGlvbiAoQ3VsbE1vZGUpIHtcbiAgICBDdWxsTW9kZVtcIk5vbmVcIl0gPSBcIm5vbmVcIjtcbiAgICBDdWxsTW9kZVtcIkZyb250XCJdID0gXCJmcm9udFwiO1xuICAgIEN1bGxNb2RlW1wiQmFja1wiXSA9IFwiYmFja1wiO1xufSkoQ3VsbE1vZGUgPSBleHBvcnRzLkN1bGxNb2RlIHx8IChleHBvcnRzLkN1bGxNb2RlID0ge30pKTtcbnZhciBGaWx0ZXJNb2RlO1xuKGZ1bmN0aW9uIChGaWx0ZXJNb2RlKSB7XG4gICAgRmlsdGVyTW9kZVtcIk5lYXJlc3RcIl0gPSBcIm5lYXJlc3RcIjtcbiAgICBGaWx0ZXJNb2RlW1wiTGluZWFyXCJdID0gXCJsaW5lYXJcIjtcbn0pKEZpbHRlck1vZGUgPSBleHBvcnRzLkZpbHRlck1vZGUgfHwgKGV4cG9ydHMuRmlsdGVyTW9kZSA9IHt9KSk7XG52YXIgRnJvbnRGYWNlO1xuKGZ1bmN0aW9uIChGcm9udEZhY2UpIHtcbiAgICBGcm9udEZhY2VbXCJDQ1dcIl0gPSBcImNjd1wiO1xuICAgIEZyb250RmFjZVtcIkNXXCJdID0gXCJjd1wiO1xufSkoRnJvbnRGYWNlID0gZXhwb3J0cy5Gcm9udEZhY2UgfHwgKGV4cG9ydHMuRnJvbnRGYWNlID0ge30pKTtcbnZhciBJbmRleEZvcm1hdDtcbihmdW5jdGlvbiAoSW5kZXhGb3JtYXQpIHtcbiAgICBJbmRleEZvcm1hdFtcIlVpbnQxNlwiXSA9IFwidWludDE2XCI7XG4gICAgSW5kZXhGb3JtYXRbXCJVaW50MzJcIl0gPSBcInVpbnQzMlwiO1xufSkoSW5kZXhGb3JtYXQgPSBleHBvcnRzLkluZGV4Rm9ybWF0IHx8IChleHBvcnRzLkluZGV4Rm9ybWF0ID0ge30pKTtcbnZhciBJbnB1dFN0ZXBNb2RlO1xuKGZ1bmN0aW9uIChJbnB1dFN0ZXBNb2RlKSB7XG4gICAgSW5wdXRTdGVwTW9kZVtcIlZlcnRleFwiXSA9IFwidmVydGV4XCI7XG4gICAgSW5wdXRTdGVwTW9kZVtcIkluc3RhbmNlXCJdID0gXCJpbnN0YW5jZVwiO1xufSkoSW5wdXRTdGVwTW9kZSA9IGV4cG9ydHMuSW5wdXRTdGVwTW9kZSB8fCAoZXhwb3J0cy5JbnB1dFN0ZXBNb2RlID0ge30pKTtcbnZhciBMb2FkT3A7XG4oZnVuY3Rpb24gKExvYWRPcCkge1xuICAgIExvYWRPcFtcIkxvYWRcIl0gPSBcImxvYWRcIjtcbn0pKExvYWRPcCA9IGV4cG9ydHMuTG9hZE9wIHx8IChleHBvcnRzLkxvYWRPcCA9IHt9KSk7XG52YXIgUHJpbWl0aXZlVG9wb2xvZ3k7XG4oZnVuY3Rpb24gKFByaW1pdGl2ZVRvcG9sb2d5KSB7XG4gICAgUHJpbWl0aXZlVG9wb2xvZ3lbXCJQb2ludExpc3RcIl0gPSBcInBvaW50LWxpc3RcIjtcbiAgICBQcmltaXRpdmVUb3BvbG9neVtcIkxpbmVMaXN0XCJdID0gXCJsaW5lLWxpc3RcIjtcbiAgICBQcmltaXRpdmVUb3BvbG9neVtcIkxpbmVTdHJpcFwiXSA9IFwibGluZS1zdHJpcFwiO1xuICAgIFByaW1pdGl2ZVRvcG9sb2d5W1wiVHJpYW5nbGVMaXN0XCJdID0gXCJ0cmlhbmdsZS1saXN0XCI7XG4gICAgUHJpbWl0aXZlVG9wb2xvZ3lbXCJUcmlhbmdsZVN0cmlwXCJdID0gXCJ0cmlhbmdsZS1zdHJpcFwiO1xufSkoUHJpbWl0aXZlVG9wb2xvZ3kgPSBleHBvcnRzLlByaW1pdGl2ZVRvcG9sb2d5IHx8IChleHBvcnRzLlByaW1pdGl2ZVRvcG9sb2d5ID0ge30pKTtcbnZhciBTdGVuY2lsT3BlcmF0aW9uO1xuKGZ1bmN0aW9uIChTdGVuY2lsT3BlcmF0aW9uKSB7XG4gICAgU3RlbmNpbE9wZXJhdGlvbltcIktlZXBcIl0gPSBcImtlZXBcIjtcbiAgICBTdGVuY2lsT3BlcmF0aW9uW1wiWmVyb1wiXSA9IFwiemVyb1wiO1xuICAgIFN0ZW5jaWxPcGVyYXRpb25bXCJSZXBsYWNlXCJdID0gXCJyZXBsYWNlXCI7XG4gICAgU3RlbmNpbE9wZXJhdGlvbltcIkludmVydFwiXSA9IFwiaW52ZXJ0XCI7XG4gICAgU3RlbmNpbE9wZXJhdGlvbltcIkluY3JlbWVudENsYW1wXCJdID0gXCJpbmNyZW1lbnQtY2xhbXBcIjtcbiAgICBTdGVuY2lsT3BlcmF0aW9uW1wiRGVjcmVtZW50Q2xhbXBcIl0gPSBcImRlY3JlbWVudC1jbGFtcFwiO1xuICAgIFN0ZW5jaWxPcGVyYXRpb25bXCJJbmNyZW1lbnRXcmFwXCJdID0gXCJpbmNyZW1lbnQtd3JhcFwiO1xuICAgIFN0ZW5jaWxPcGVyYXRpb25bXCJEZWNyZW1lbnRXcmFwXCJdID0gXCJkZWNyZW1lbnQtd3JhcFwiO1xufSkoU3RlbmNpbE9wZXJhdGlvbiA9IGV4cG9ydHMuU3RlbmNpbE9wZXJhdGlvbiB8fCAoZXhwb3J0cy5TdGVuY2lsT3BlcmF0aW9uID0ge30pKTtcbnZhciBTdG9yZU9wO1xuKGZ1bmN0aW9uIChTdG9yZU9wKSB7XG4gICAgU3RvcmVPcFtcIlN0b3JlXCJdID0gXCJzdG9yZVwiO1xuICAgIFN0b3JlT3BbXCJDbGVhclwiXSA9IFwiY2xlYXJcIjtcbn0pKFN0b3JlT3AgPSBleHBvcnRzLlN0b3JlT3AgfHwgKGV4cG9ydHMuU3RvcmVPcCA9IHt9KSk7XG52YXIgVGV4dHVyZURpbWVuc2lvbjtcbihmdW5jdGlvbiAoVGV4dHVyZURpbWVuc2lvbikge1xuICAgIFRleHR1cmVEaW1lbnNpb25bXCJFMWRcIl0gPSBcIjFkXCI7XG4gICAgVGV4dHVyZURpbWVuc2lvbltcIkUyZFwiXSA9IFwiMmRcIjtcbiAgICBUZXh0dXJlRGltZW5zaW9uW1wiRTNkXCJdID0gXCIzZFwiO1xufSkoVGV4dHVyZURpbWVuc2lvbiA9IGV4cG9ydHMuVGV4dHVyZURpbWVuc2lvbiB8fCAoZXhwb3J0cy5UZXh0dXJlRGltZW5zaW9uID0ge30pKTtcbnZhciBUZXh0dXJlRm9ybWF0O1xuKGZ1bmN0aW9uIChUZXh0dXJlRm9ybWF0KSB7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlI4VW5vcm1cIl0gPSBcInI4dW5vcm1cIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUjhTbm9ybVwiXSA9IFwicjhzbm9ybVwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSOFVpbnRcIl0gPSBcInI4dWludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSOFNpbnRcIl0gPSBcInI4c2ludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSMTZVaW50XCJdID0gXCJyMTZ1aW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlIxNlNpbnRcIl0gPSBcInIxNnNpbnRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUjE2RmxvYXRcIl0gPSBcInIxNmZsb2F0XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHOFVub3JtXCJdID0gXCJyZzh1bm9ybVwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSRzhTbm9ybVwiXSA9IFwicmc4c25vcm1cIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkc4VWludFwiXSA9IFwicmc4dWludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSRzhTaW50XCJdID0gXCJyZzhzaW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlIzMlVpbnRcIl0gPSBcInIzMnVpbnRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUjMyU2ludFwiXSA9IFwicjMyc2ludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSMzJGbG9hdFwiXSA9IFwicjMyZmxvYXRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkcxNlVpbnRcIl0gPSBcInJnMTZ1aW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHMTZTaW50XCJdID0gXCJyZzE2c2ludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSRzE2RmxvYXRcIl0gPSBcInJnMTZmbG9hdFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSR0JBOFVub3JtXCJdID0gXCJyZ2JhOHVub3JtXCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHQkE4VW5vcm1TUkdCXCJdID0gXCJyZ2JhOHVub3JtLXNyZ2JcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkdCQThTbm9ybVwiXSA9IFwicmdiYThzbm9ybVwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSR0JBOFVpbnRcIl0gPSBcInJnYmE4dWludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSR0JBOFNpbnRcIl0gPSBcInJnYmE4c2ludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJCR1JBOFVub3JtXCJdID0gXCJiZ3JhOHVub3JtXCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIkJHUkE4VW5vcm1TUkdCXCJdID0gXCJiZ3JhOHVub3JtLXNyZ2JcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkdCMTBBMlVub3JtXCJdID0gXCJyZ2IxMGEydW5vcm1cIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkcxMUIxMEZsb2F0XCJdID0gXCJyZzExYjEwZmxvYXRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkczMlVpbnRcIl0gPSBcInJnMzJ1aW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHMzJTaW50XCJdID0gXCJyZzMyc2ludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSRzMyRmxvYXRcIl0gPSBcInJnMzJmbG9hdFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSR0JBMTZVaW50XCJdID0gXCJyZ2JhMTZ1aW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHQkExNlNpbnRcIl0gPSBcInJnYmExNnNpbnRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkdCQTE2RmxvYXRcIl0gPSBcInJnYmExNmZsb2F0XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHQkEzMlVpbnRcIl0gPSBcInJnYmEzMnVpbnRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkdCQTMyU2ludFwiXSA9IFwicmdiYTMyc2ludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSR0JBMzJGbG9hdFwiXSA9IFwicmdiYTMyZmxvYXRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiRGVwdGgzMkZsb2F0XCJdID0gXCJkZXB0aDMyZmxvYXRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiRGVwdGgyNFBsdXNcIl0gPSBcImRlcHRoMjRwbHVzXCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIkRlcHRoMjRQbHVzU3RlbmNpbDhcIl0gPSBcImRlcHRoMjRwbHVzLXN0ZW5jaWw4XCI7XG59KShUZXh0dXJlRm9ybWF0ID0gZXhwb3J0cy5UZXh0dXJlRm9ybWF0IHx8IChleHBvcnRzLlRleHR1cmVGb3JtYXQgPSB7fSkpO1xudmFyIFRleHR1cmVDb21wb25lbnRUeXBlO1xuKGZ1bmN0aW9uIChUZXh0dXJlQ29tcG9uZW50VHlwZSkge1xuICAgIFRleHR1cmVDb21wb25lbnRUeXBlW1wiRmxvYXRcIl0gPSBcImZsb2F0XCI7XG4gICAgVGV4dHVyZUNvbXBvbmVudFR5cGVbXCJTaW50XCJdID0gXCJzaW50XCI7XG4gICAgVGV4dHVyZUNvbXBvbmVudFR5cGVbXCJVaW50XCJdID0gXCJ1aW50XCI7XG59KShUZXh0dXJlQ29tcG9uZW50VHlwZSA9IGV4cG9ydHMuVGV4dHVyZUNvbXBvbmVudFR5cGUgfHwgKGV4cG9ydHMuVGV4dHVyZUNvbXBvbmVudFR5cGUgPSB7fSkpO1xudmFyIFRleHR1cmVWaWV3RGltZW5zaW9uO1xuKGZ1bmN0aW9uIChUZXh0dXJlVmlld0RpbWVuc2lvbikge1xuICAgIFRleHR1cmVWaWV3RGltZW5zaW9uW1wiRTFkXCJdID0gXCIxZFwiO1xuICAgIFRleHR1cmVWaWV3RGltZW5zaW9uW1wiRTJkXCJdID0gXCIyZFwiO1xuICAgIFRleHR1cmVWaWV3RGltZW5zaW9uW1wiRTJkQXJyYXlcIl0gPSBcIjJkLWFycmF5XCI7XG4gICAgVGV4dHVyZVZpZXdEaW1lbnNpb25bXCJDdWJlXCJdID0gXCJjdWJlXCI7XG4gICAgVGV4dHVyZVZpZXdEaW1lbnNpb25bXCJDdWJlQXJyYXlcIl0gPSBcImN1YmUtYXJyYXlcIjtcbiAgICBUZXh0dXJlVmlld0RpbWVuc2lvbltcIkUzZFwiXSA9IFwiM2RcIjtcbn0pKFRleHR1cmVWaWV3RGltZW5zaW9uID0gZXhwb3J0cy5UZXh0dXJlVmlld0RpbWVuc2lvbiB8fCAoZXhwb3J0cy5UZXh0dXJlVmlld0RpbWVuc2lvbiA9IHt9KSk7XG52YXIgVmVydGV4Rm9ybWF0O1xuKGZ1bmN0aW9uIChWZXJ0ZXhGb3JtYXQpIHtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJVY2hhcjJcIl0gPSBcInVjaGFyMlwiO1xuICAgIFZlcnRleEZvcm1hdFtcIlVjaGFyNFwiXSA9IFwidWNoYXI0XCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiQ2hhcjJcIl0gPSBcImNoYXIyXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiQ2hhcjRcIl0gPSBcImNoYXI0XCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiVWNoYXIyTm9ybVwiXSA9IFwidWNoYXIybm9ybVwiO1xuICAgIFZlcnRleEZvcm1hdFtcIlVjaGFyNE5vcm1cIl0gPSBcInVjaGFyNG5vcm1cIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJDaGFyMk5vcm1cIl0gPSBcImNoYXIybm9ybVwiO1xuICAgIFZlcnRleEZvcm1hdFtcIkNoYXI0Tm9ybVwiXSA9IFwiY2hhcjRub3JtXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiVXNob3J0MlwiXSA9IFwidXNob3J0MlwiO1xuICAgIFZlcnRleEZvcm1hdFtcIlVzaG9ydDRcIl0gPSBcInVzaG9ydDRcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJTaG9ydDJcIl0gPSBcInNob3J0MlwiO1xuICAgIFZlcnRleEZvcm1hdFtcIlNob3J0NFwiXSA9IFwic2hvcnQ0XCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiVXNob3J0Mk5vcm1cIl0gPSBcInVzaG9ydDJub3JtXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiVXNob3J0NE5vcm1cIl0gPSBcInVzaG9ydDRub3JtXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiU2hvcnQyTm9ybVwiXSA9IFwic2hvcnQybm9ybVwiO1xuICAgIFZlcnRleEZvcm1hdFtcIlNob3J0NE5vcm1cIl0gPSBcInNob3J0NG5vcm1cIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJIYWxmMlwiXSA9IFwiaGFsZjJcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJIYWxmNFwiXSA9IFwiaGFsZjRcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJGbG9hdFwiXSA9IFwiZmxvYXRcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJGbG9hdDJcIl0gPSBcImZsb2F0MlwiO1xuICAgIFZlcnRleEZvcm1hdFtcIkZsb2F0M1wiXSA9IFwiZmxvYXQzXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiRmxvYXQ0XCJdID0gXCJmbG9hdDRcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJVaW50XCJdID0gXCJ1aW50XCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiVWludDJcIl0gPSBcInVpbnQyXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiVWludDNcIl0gPSBcInVpbnQzXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiVWludDRcIl0gPSBcInVpbnQ0XCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiSW50XCJdID0gXCJpbnRcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJJbnQyXCJdID0gXCJpbnQyXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiSW50M1wiXSA9IFwiaW50M1wiO1xuICAgIFZlcnRleEZvcm1hdFtcIkludDRcIl0gPSBcImludDRcIjtcbn0pKFZlcnRleEZvcm1hdCA9IGV4cG9ydHMuVmVydGV4Rm9ybWF0IHx8IChleHBvcnRzLlZlcnRleEZvcm1hdCA9IHt9KSk7XG52YXIgVGV4dHVyZUFzcGVjdDtcbihmdW5jdGlvbiAoVGV4dHVyZUFzcGVjdCkge1xuICAgIFRleHR1cmVBc3BlY3RbXCJBbGxcIl0gPSBcImFsbFwiO1xuICAgIFRleHR1cmVBc3BlY3RbXCJTdGVuY2lsT25seVwiXSA9IFwic3RlbmNpbC1vbmx5XCI7XG4gICAgVGV4dHVyZUFzcGVjdFtcIkRlcHRoT25seVwiXSA9IFwiZGVwdGgtb25seVwiO1xufSkoVGV4dHVyZUFzcGVjdCA9IGV4cG9ydHMuVGV4dHVyZUFzcGVjdCB8fCAoZXhwb3J0cy5UZXh0dXJlQXNwZWN0ID0ge30pKTtcbnZhciBDb21waWxhdGlvbk1lc3NhZ2VUeXBlO1xuKGZ1bmN0aW9uIChDb21waWxhdGlvbk1lc3NhZ2VUeXBlKSB7XG4gICAgQ29tcGlsYXRpb25NZXNzYWdlVHlwZVtcIkVycm9yXCJdID0gXCJlcnJvclwiO1xuICAgIENvbXBpbGF0aW9uTWVzc2FnZVR5cGVbXCJXYXJuaW5nXCJdID0gXCJ3YXJuaW5nXCI7XG4gICAgQ29tcGlsYXRpb25NZXNzYWdlVHlwZVtcIkluZm9cIl0gPSBcImluZm9cIjtcbn0pKENvbXBpbGF0aW9uTWVzc2FnZVR5cGUgPSBleHBvcnRzLkNvbXBpbGF0aW9uTWVzc2FnZVR5cGUgfHwgKGV4cG9ydHMuQ29tcGlsYXRpb25NZXNzYWdlVHlwZSA9IHt9KSk7XG52YXIgUXVlcnlUeXBlO1xuKGZ1bmN0aW9uIChRdWVyeVR5cGUpIHtcbiAgICBRdWVyeVR5cGVbXCJPY2NsdXNpb25cIl0gPSBcIm9jY2x1c2lvblwiO1xufSkoUXVlcnlUeXBlID0gZXhwb3J0cy5RdWVyeVR5cGUgfHwgKGV4cG9ydHMuUXVlcnlUeXBlID0ge30pKTtcbi8vIEJpdCBmaWVsZHNcbnZhciBCdWZmZXJVc2FnZTtcbihmdW5jdGlvbiAoQnVmZmVyVXNhZ2UpIHtcbiAgICBCdWZmZXJVc2FnZVtCdWZmZXJVc2FnZVtcIk1hcFJlYWRcIl0gPSAxXSA9IFwiTWFwUmVhZFwiO1xuICAgIEJ1ZmZlclVzYWdlW0J1ZmZlclVzYWdlW1wiTWFwV3JpdGVcIl0gPSAyXSA9IFwiTWFwV3JpdGVcIjtcbiAgICBCdWZmZXJVc2FnZVtCdWZmZXJVc2FnZVtcIkNvcHlTcmNcIl0gPSA0XSA9IFwiQ29weVNyY1wiO1xuICAgIEJ1ZmZlclVzYWdlW0J1ZmZlclVzYWdlW1wiQ29weURzdFwiXSA9IDhdID0gXCJDb3B5RHN0XCI7XG4gICAgQnVmZmVyVXNhZ2VbQnVmZmVyVXNhZ2VbXCJJbmRleFwiXSA9IDE2XSA9IFwiSW5kZXhcIjtcbiAgICBCdWZmZXJVc2FnZVtCdWZmZXJVc2FnZVtcIlZlcnRleFwiXSA9IDMyXSA9IFwiVmVydGV4XCI7XG4gICAgQnVmZmVyVXNhZ2VbQnVmZmVyVXNhZ2VbXCJVbmlmb3JtXCJdID0gNjRdID0gXCJVbmlmb3JtXCI7XG4gICAgQnVmZmVyVXNhZ2VbQnVmZmVyVXNhZ2VbXCJTdG9yYWdlXCJdID0gMTI4XSA9IFwiU3RvcmFnZVwiO1xuICAgIEJ1ZmZlclVzYWdlW0J1ZmZlclVzYWdlW1wiSW5kaXJlY3RcIl0gPSAyNTZdID0gXCJJbmRpcmVjdFwiO1xuICAgIEJ1ZmZlclVzYWdlW0J1ZmZlclVzYWdlW1wiUXVlcnlSZXNvbHZlXCJdID0gNTEyXSA9IFwiUXVlcnlSZXNvbHZlXCI7XG59KShCdWZmZXJVc2FnZSA9IGV4cG9ydHMuQnVmZmVyVXNhZ2UgfHwgKGV4cG9ydHMuQnVmZmVyVXNhZ2UgPSB7fSkpO1xudmFyIENvbG9yV3JpdGU7XG4oZnVuY3Rpb24gKENvbG9yV3JpdGUpIHtcbiAgICBDb2xvcldyaXRlW0NvbG9yV3JpdGVbXCJSZWRcIl0gPSAxXSA9IFwiUmVkXCI7XG4gICAgQ29sb3JXcml0ZVtDb2xvcldyaXRlW1wiR3JlZW5cIl0gPSAyXSA9IFwiR3JlZW5cIjtcbiAgICBDb2xvcldyaXRlW0NvbG9yV3JpdGVbXCJCbHVlXCJdID0gNF0gPSBcIkJsdWVcIjtcbiAgICBDb2xvcldyaXRlW0NvbG9yV3JpdGVbXCJBbHBoYVwiXSA9IDhdID0gXCJBbHBoYVwiO1xuICAgIENvbG9yV3JpdGVbQ29sb3JXcml0ZVtcIkFsbFwiXSA9IDE1XSA9IFwiQWxsXCI7XG59KShDb2xvcldyaXRlID0gZXhwb3J0cy5Db2xvcldyaXRlIHx8IChleHBvcnRzLkNvbG9yV3JpdGUgPSB7fSkpO1xudmFyIFNoYWRlclN0YWdlO1xuKGZ1bmN0aW9uIChTaGFkZXJTdGFnZSkge1xuICAgIFNoYWRlclN0YWdlW1NoYWRlclN0YWdlW1wiVmVydGV4XCJdID0gMV0gPSBcIlZlcnRleFwiO1xuICAgIFNoYWRlclN0YWdlW1NoYWRlclN0YWdlW1wiRnJhZ21lbnRcIl0gPSAyXSA9IFwiRnJhZ21lbnRcIjtcbiAgICBTaGFkZXJTdGFnZVtTaGFkZXJTdGFnZVtcIkNvbXB1dGVcIl0gPSA0XSA9IFwiQ29tcHV0ZVwiO1xufSkoU2hhZGVyU3RhZ2UgPSBleHBvcnRzLlNoYWRlclN0YWdlIHx8IChleHBvcnRzLlNoYWRlclN0YWdlID0ge30pKTtcbnZhciBUZXh0dXJlVXNhZ2U7XG4oZnVuY3Rpb24gKFRleHR1cmVVc2FnZSkge1xuICAgIFRleHR1cmVVc2FnZVtUZXh0dXJlVXNhZ2VbXCJDb3B5U3JjXCJdID0gMV0gPSBcIkNvcHlTcmNcIjtcbiAgICBUZXh0dXJlVXNhZ2VbVGV4dHVyZVVzYWdlW1wiQ29weURzdFwiXSA9IDJdID0gXCJDb3B5RHN0XCI7XG4gICAgVGV4dHVyZVVzYWdlW1RleHR1cmVVc2FnZVtcIlNhbXBsZWRcIl0gPSA0XSA9IFwiU2FtcGxlZFwiO1xuICAgIFRleHR1cmVVc2FnZVtUZXh0dXJlVXNhZ2VbXCJTdG9yYWdlXCJdID0gOF0gPSBcIlN0b3JhZ2VcIjtcbiAgICBUZXh0dXJlVXNhZ2VbVGV4dHVyZVVzYWdlW1wiT3V0cHV0QXR0YWNobWVudFwiXSA9IDE2XSA9IFwiT3V0cHV0QXR0YWNobWVudFwiO1xufSkoVGV4dHVyZVVzYWdlID0gZXhwb3J0cy5UZXh0dXJlVXNhZ2UgfHwgKGV4cG9ydHMuVGV4dHVyZVVzYWdlID0ge30pKTtcbnZhciBNYXBNb2RlO1xuKGZ1bmN0aW9uIChNYXBNb2RlKSB7XG4gICAgTWFwTW9kZVtNYXBNb2RlW1wiUmVhZFwiXSA9IDFdID0gXCJSZWFkXCI7XG4gICAgTWFwTW9kZVtNYXBNb2RlW1wiV3JpdGVcIl0gPSAyXSA9IFwiV3JpdGVcIjtcbn0pKE1hcE1vZGUgPSBleHBvcnRzLk1hcE1vZGUgfHwgKGV4cG9ydHMuTWFwTW9kZSA9IHt9KSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@webgpu/types/dist/constants.js\n"); /***/ }), /***/ "./node_modules/color-convert/conversions.js": /*!***************************************************!*\ !*** ./node_modules/color-convert/conversions.js ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* MIT license */\nvar cssKeywords = __webpack_require__(/*! color-name */ \"./node_modules/color-name/index.js\");\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9jb252ZXJzaW9ucy5qcz9iNzUzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMsc0RBQVk7O0FBRXRDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxRQUFRLDRCQUE0QjtBQUNwQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDZCQUE2QjtBQUNwQyxXQUFXLGlDQUFpQztBQUM1QyxVQUFVLGdDQUFnQztBQUMxQyxXQUFXLGlDQUFpQztBQUM1QyxPQUFPLHFDQUFxQztBQUM1QyxTQUFTLDJDQUEyQztBQUNwRCxRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsZ0JBQWdCO0FBQ3JFLG1EQUFtRCxjQUFjO0FBQ2pFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBLEVBQUU7QUFDRjtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU8sUUFBUTtBQUMvQixnQkFBZ0IsT0FBTyxRQUFRO0FBQy9CLGlCQUFpQixPQUFPLE9BQU87QUFDL0IsaUJBQWlCLE9BQU8sT0FBTztBQUMvQixnQkFBZ0IsUUFBUSxPQUFPO0FBQy9CLGdCQUFnQixRQUFRLE9BQU87QUFDL0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0VBQXNFOztBQUV0RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0NBQStDLEVBQUUsVUFBVSxFQUFFO0FBQzdEO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLGFBQWEsYUFBYTtBQUN6QztBQUNBLGVBQWUsYUFBYSxhQUFhO0FBQ3pDO0FBQ0EsZUFBZSxhQUFhLGFBQWE7QUFDekM7QUFDQSxlQUFlLGFBQWEsYUFBYTtBQUN6QztBQUNBLGVBQWUsYUFBYSxhQUFhO0FBQ3pDO0FBQ0EsZUFBZSxhQUFhO0FBQzVCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9jb252ZXJzaW9ucy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIE1JVCBsaWNlbnNlICovXG52YXIgY3NzS2V5d29yZHMgPSByZXF1aXJlKCdjb2xvci1uYW1lJyk7XG5cbi8vIE5PVEU6IGNvbnZlcnNpb25zIHNob3VsZCBvbmx5IHJldHVybiBwcmltaXRpdmUgdmFsdWVzIChpLmUuIGFycmF5cywgb3Jcbi8vICAgICAgIHZhbHVlcyB0aGF0IGdpdmUgY29ycmVjdCBgdHlwZW9mYCByZXN1bHRzKS5cbi8vICAgICAgIGRvIG5vdCB1c2UgYm94IHZhbHVlcyB0eXBlcyAoaS5lLiBOdW1iZXIoKSwgU3RyaW5nKCksIGV0Yy4pXG5cbnZhciByZXZlcnNlS2V5d29yZHMgPSB7fTtcbmZvciAodmFyIGtleSBpbiBjc3NLZXl3b3Jkcykge1xuXHRpZiAoY3NzS2V5d29yZHMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuXHRcdHJldmVyc2VLZXl3b3Jkc1tjc3NLZXl3b3Jkc1trZXldXSA9IGtleTtcblx0fVxufVxuXG52YXIgY29udmVydCA9IG1vZHVsZS5leHBvcnRzID0ge1xuXHRyZ2I6IHtjaGFubmVsczogMywgbGFiZWxzOiAncmdiJ30sXG5cdGhzbDoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdoc2wnfSxcblx0aHN2OiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2hzdid9LFxuXHRod2I6IHtjaGFubmVsczogMywgbGFiZWxzOiAnaHdiJ30sXG5cdGNteWs6IHtjaGFubmVsczogNCwgbGFiZWxzOiAnY215ayd9LFxuXHR4eXo6IHtjaGFubmVsczogMywgbGFiZWxzOiAneHl6J30sXG5cdGxhYjoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdsYWInfSxcblx0bGNoOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2xjaCd9LFxuXHRoZXg6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2hleCddfSxcblx0a2V5d29yZDoge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsna2V5d29yZCddfSxcblx0YW5zaTE2OiB7Y2hhbm5lbHM6IDEsIGxhYmVsczogWydhbnNpMTYnXX0sXG5cdGFuc2kyNTY6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2Fuc2kyNTYnXX0sXG5cdGhjZzoge2NoYW5uZWxzOiAzLCBsYWJlbHM6IFsnaCcsICdjJywgJ2cnXX0sXG5cdGFwcGxlOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogWydyMTYnLCAnZzE2JywgJ2IxNiddfSxcblx0Z3JheToge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsnZ3JheSddfVxufTtcblxuLy8gaGlkZSAuY2hhbm5lbHMgYW5kIC5sYWJlbHMgcHJvcGVydGllc1xuZm9yICh2YXIgbW9kZWwgaW4gY29udmVydCkge1xuXHRpZiAoY29udmVydC5oYXNPd25Qcm9wZXJ0eShtb2RlbCkpIHtcblx0XHRpZiAoISgnY2hhbm5lbHMnIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGNoYW5uZWxzIHByb3BlcnR5OiAnICsgbW9kZWwpO1xuXHRcdH1cblxuXHRcdGlmICghKCdsYWJlbHMnIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGNoYW5uZWwgbGFiZWxzIHByb3BlcnR5OiAnICsgbW9kZWwpO1xuXHRcdH1cblxuXHRcdGlmIChjb252ZXJ0W21vZGVsXS5sYWJlbHMubGVuZ3RoICE9PSBjb252ZXJ0W21vZGVsXS5jaGFubmVscykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdjaGFubmVsIGFuZCBsYWJlbCBjb3VudHMgbWlzbWF0Y2g6ICcgKyBtb2RlbCk7XG5cdFx0fVxuXG5cdFx0dmFyIGNoYW5uZWxzID0gY29udmVydFttb2RlbF0uY2hhbm5lbHM7XG5cdFx0dmFyIGxhYmVscyA9IGNvbnZlcnRbbW9kZWxdLmxhYmVscztcblx0XHRkZWxldGUgY29udmVydFttb2RlbF0uY2hhbm5lbHM7XG5cdFx0ZGVsZXRlIGNvbnZlcnRbbW9kZWxdLmxhYmVscztcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFttb2RlbF0sICdjaGFubmVscycsIHt2YWx1ZTogY2hhbm5lbHN9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFttb2RlbF0sICdsYWJlbHMnLCB7dmFsdWU6IGxhYmVsc30pO1xuXHR9XG59XG5cbmNvbnZlcnQucmdiLmhzbCA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0dmFyIHIgPSByZ2JbMF0gLyAyNTU7XG5cdHZhciBnID0gcmdiWzFdIC8gMjU1O1xuXHR2YXIgYiA9IHJnYlsyXSAvIDI1NTtcblx0dmFyIG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuXHR2YXIgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG5cdHZhciBkZWx0YSA9IG1heCAtIG1pbjtcblx0dmFyIGg7XG5cdHZhciBzO1xuXHR2YXIgbDtcblxuXHRpZiAobWF4ID09PSBtaW4pIHtcblx0XHRoID0gMDtcblx0fSBlbHNlIGlmIChyID09PSBtYXgpIHtcblx0XHRoID0gKGcgLSBiKSAvIGRlbHRhO1xuXHR9IGVsc2UgaWYgKGcgPT09IG1heCkge1xuXHRcdGggPSAyICsgKGIgLSByKSAvIGRlbHRhO1xuXHR9IGVsc2UgaWYgKGIgPT09IG1heCkge1xuXHRcdGggPSA0ICsgKHIgLSBnKSAvIGRlbHRhO1xuXHR9XG5cblx0aCA9IE1hdGgubWluKGggKiA2MCwgMzYwKTtcblxuXHRpZiAoaCA8IDApIHtcblx0XHRoICs9IDM2MDtcblx0fVxuXG5cdGwgPSAobWluICsgbWF4KSAvIDI7XG5cblx0aWYgKG1heCA9PT0gbWluKSB7XG5cdFx0cyA9IDA7XG5cdH0gZWxzZSBpZiAobCA8PSAwLjUpIHtcblx0XHRzID0gZGVsdGEgLyAobWF4ICsgbWluKTtcblx0fSBlbHNlIHtcblx0XHRzID0gZGVsdGEgLyAoMiAtIG1heCAtIG1pbik7XG5cdH1cblxuXHRyZXR1cm4gW2gsIHMgKiAxMDAsIGwgKiAxMDBdO1xufTtcblxuY29udmVydC5yZ2IuaHN2ID0gZnVuY3Rpb24gKHJnYikge1xuXHR2YXIgcmRpZjtcblx0dmFyIGdkaWY7XG5cdHZhciBiZGlmO1xuXHR2YXIgaDtcblx0dmFyIHM7XG5cblx0dmFyIHIgPSByZ2JbMF0gLyAyNTU7XG5cdHZhciBnID0gcmdiWzFdIC8gMjU1O1xuXHR2YXIgYiA9IHJnYlsyXSAvIDI1NTtcblx0dmFyIHYgPSBNYXRoLm1heChyLCBnLCBiKTtcblx0dmFyIGRpZmYgPSB2IC0gTWF0aC5taW4ociwgZywgYik7XG5cdHZhciBkaWZmYyA9IGZ1bmN0aW9uIChjKSB7XG5cdFx0cmV0dXJuICh2IC0gYykgLyA2IC8gZGlmZiArIDEgLyAyO1xuXHR9O1xuXG5cdGlmIChkaWZmID09PSAwKSB7XG5cdFx0aCA9IHMgPSAwO1xuXHR9IGVsc2Uge1xuXHRcdHMgPSBkaWZmIC8gdjtcblx0XHRyZGlmID0gZGlmZmMocik7XG5cdFx0Z2RpZiA9IGRpZmZjKGcpO1xuXHRcdGJkaWYgPSBkaWZmYyhiKTtcblxuXHRcdGlmIChyID09PSB2KSB7XG5cdFx0XHRoID0gYmRpZiAtIGdkaWY7XG5cdFx0fSBlbHNlIGlmIChnID09PSB2KSB7XG5cdFx0XHRoID0gKDEgLyAzKSArIHJkaWYgLSBiZGlmO1xuXHRcdH0gZWxzZSBpZiAoYiA9PT0gdikge1xuXHRcdFx0aCA9ICgyIC8gMykgKyBnZGlmIC0gcmRpZjtcblx0XHR9XG5cdFx0aWYgKGggPCAwKSB7XG5cdFx0XHRoICs9IDE7XG5cdFx0fSBlbHNlIGlmIChoID4gMSkge1xuXHRcdFx0aCAtPSAxO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBbXG5cdFx0aCAqIDM2MCxcblx0XHRzICogMTAwLFxuXHRcdHYgKiAxMDBcblx0XTtcbn07XG5cbmNvbnZlcnQucmdiLmh3YiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0dmFyIHIgPSByZ2JbMF07XG5cdHZhciBnID0gcmdiWzFdO1xuXHR2YXIgYiA9IHJnYlsyXTtcblx0dmFyIGggPSBjb252ZXJ0LnJnYi5oc2wocmdiKVswXTtcblx0dmFyIHcgPSAxIC8gMjU1ICogTWF0aC5taW4ociwgTWF0aC5taW4oZywgYikpO1xuXG5cdGIgPSAxIC0gMSAvIDI1NSAqIE1hdGgubWF4KHIsIE1hdGgubWF4KGcsIGIpKTtcblxuXHRyZXR1cm4gW2gsIHcgKiAxMDAsIGIgKiAxMDBdO1xufTtcblxuY29udmVydC5yZ2IuY215ayA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0dmFyIHIgPSByZ2JbMF0gLyAyNTU7XG5cdHZhciBnID0gcmdiWzFdIC8gMjU1O1xuXHR2YXIgYiA9IHJnYlsyXSAvIDI1NTtcblx0dmFyIGM7XG5cdHZhciBtO1xuXHR2YXIgeTtcblx0dmFyIGs7XG5cblx0ayA9IE1hdGgubWluKDEgLSByLCAxIC0gZywgMSAtIGIpO1xuXHRjID0gKDEgLSByIC0gaykgLyAoMSAtIGspIHx8IDA7XG5cdG0gPSAoMSAtIGcgLSBrKSAvICgxIC0gaykgfHwgMDtcblx0eSA9ICgxIC0gYiAtIGspIC8gKDEgLSBrKSB8fCAwO1xuXG5cdHJldHVybiBbYyAqIDEwMCwgbSAqIDEwMCwgeSAqIDEwMCwgayAqIDEwMF07XG59O1xuXG4vKipcbiAqIFNlZSBodHRwczovL2VuLm0ud2lraXBlZGlhLm9yZy93aWtpL0V1Y2xpZGVhbl9kaXN0YW5jZSNTcXVhcmVkX0V1Y2xpZGVhbl9kaXN0YW5jZVxuICogKi9cbmZ1bmN0aW9uIGNvbXBhcmF0aXZlRGlzdGFuY2UoeCwgeSkge1xuXHRyZXR1cm4gKFxuXHRcdE1hdGgucG93KHhbMF0gLSB5WzBdLCAyKSArXG5cdFx0TWF0aC5wb3coeFsxXSAtIHlbMV0sIDIpICtcblx0XHRNYXRoLnBvdyh4WzJdIC0geVsyXSwgMilcblx0KTtcbn1cblxuY29udmVydC5yZ2Iua2V5d29yZCA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0dmFyIHJldmVyc2VkID0gcmV2ZXJzZUtleXdvcmRzW3JnYl07XG5cdGlmIChyZXZlcnNlZCkge1xuXHRcdHJldHVybiByZXZlcnNlZDtcblx0fVxuXG5cdHZhciBjdXJyZW50Q2xvc2VzdERpc3RhbmNlID0gSW5maW5pdHk7XG5cdHZhciBjdXJyZW50Q2xvc2VzdEtleXdvcmQ7XG5cblx0Zm9yICh2YXIga2V5d29yZCBpbiBjc3NLZXl3b3Jkcykge1xuXHRcdGlmIChjc3NLZXl3b3Jkcy5oYXNPd25Qcm9wZXJ0eShrZXl3b3JkKSkge1xuXHRcdFx0dmFyIHZhbHVlID0gY3NzS2V5d29yZHNba2V5d29yZF07XG5cblx0XHRcdC8vIENvbXB1dGUgY29tcGFyYXRpdmUgZGlzdGFuY2Vcblx0XHRcdHZhciBkaXN0YW5jZSA9IGNvbXBhcmF0aXZlRGlzdGFuY2UocmdiLCB2YWx1ZSk7XG5cblx0XHRcdC8vIENoZWNrIGlmIGl0cyBsZXNzLCBpZiBzbyBzZXQgYXMgY2xvc2VzdFxuXHRcdFx0aWYgKGRpc3RhbmNlIDwgY3VycmVudENsb3Nlc3REaXN0YW5jZSkge1xuXHRcdFx0XHRjdXJyZW50Q2xvc2VzdERpc3RhbmNlID0gZGlzdGFuY2U7XG5cdFx0XHRcdGN1cnJlbnRDbG9zZXN0S2V5d29yZCA9IGtleXdvcmQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGN1cnJlbnRDbG9zZXN0S2V5d29yZDtcbn07XG5cbmNvbnZlcnQua2V5d29yZC5yZ2IgPSBmdW5jdGlvbiAoa2V5d29yZCkge1xuXHRyZXR1cm4gY3NzS2V5d29yZHNba2V5d29yZF07XG59O1xuXG5jb252ZXJ0LnJnYi54eXogPSBmdW5jdGlvbiAocmdiKSB7XG5cdHZhciByID0gcmdiWzBdIC8gMjU1O1xuXHR2YXIgZyA9IHJnYlsxXSAvIDI1NTtcblx0dmFyIGIgPSByZ2JbMl0gLyAyNTU7XG5cblx0Ly8gYXNzdW1lIHNSR0Jcblx0ciA9IHIgPiAwLjA0MDQ1ID8gTWF0aC5wb3coKChyICsgMC4wNTUpIC8gMS4wNTUpLCAyLjQpIDogKHIgLyAxMi45Mik7XG5cdGcgPSBnID4gMC4wNDA0NSA/IE1hdGgucG93KCgoZyArIDAuMDU1KSAvIDEuMDU1KSwgMi40KSA6IChnIC8gMTIuOTIpO1xuXHRiID0gYiA+IDAuMDQwNDUgPyBNYXRoLnBvdygoKGIgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCkgOiAoYiAvIDEyLjkyKTtcblxuXHR2YXIgeCA9IChyICogMC40MTI0KSArIChnICogMC4zNTc2KSArIChiICogMC4xODA1KTtcblx0dmFyIHkgPSAociAqIDAuMjEyNikgKyAoZyAqIDAuNzE1MikgKyAoYiAqIDAuMDcyMik7XG5cdHZhciB6ID0gKHIgKiAwLjAxOTMpICsgKGcgKiAwLjExOTIpICsgKGIgKiAwLjk1MDUpO1xuXG5cdHJldHVybiBbeCAqIDEwMCwgeSAqIDEwMCwgeiAqIDEwMF07XG59O1xuXG5jb252ZXJ0LnJnYi5sYWIgPSBmdW5jdGlvbiAocmdiKSB7XG5cdHZhciB4eXogPSBjb252ZXJ0LnJnYi54eXoocmdiKTtcblx0dmFyIHggPSB4eXpbMF07XG5cdHZhciB5ID0geHl6WzFdO1xuXHR2YXIgeiA9IHh5elsyXTtcblx0dmFyIGw7XG5cdHZhciBhO1xuXHR2YXIgYjtcblxuXHR4IC89IDk1LjA0Nztcblx0eSAvPSAxMDA7XG5cdHogLz0gMTA4Ljg4MztcblxuXHR4ID0geCA+IDAuMDA4ODU2ID8gTWF0aC5wb3coeCwgMSAvIDMpIDogKDcuNzg3ICogeCkgKyAoMTYgLyAxMTYpO1xuXHR5ID0geSA+IDAuMDA4ODU2ID8gTWF0aC5wb3coeSwgMSAvIDMpIDogKDcuNzg3ICogeSkgKyAoMTYgLyAxMTYpO1xuXHR6ID0geiA+IDAuMDA4ODU2ID8gTWF0aC5wb3coeiwgMSAvIDMpIDogKDcuNzg3ICogeikgKyAoMTYgLyAxMTYpO1xuXG5cdGwgPSAoMTE2ICogeSkgLSAxNjtcblx0YSA9IDUwMCAqICh4IC0geSk7XG5cdGIgPSAyMDAgKiAoeSAtIHopO1xuXG5cdHJldHVybiBbbCwgYSwgYl07XG59O1xuXG5jb252ZXJ0LmhzbC5yZ2IgPSBmdW5jdGlvbiAoaHNsKSB7XG5cdHZhciBoID0gaHNsWzBdIC8gMzYwO1xuXHR2YXIgcyA9IGhzbFsxXSAvIDEwMDtcblx0dmFyIGwgPSBoc2xbMl0gLyAxMDA7XG5cdHZhciB0MTtcblx0dmFyIHQyO1xuXHR2YXIgdDM7XG5cdHZhciByZ2I7XG5cdHZhciB2YWw7XG5cblx0aWYgKHMgPT09IDApIHtcblx0XHR2YWwgPSBsICogMjU1O1xuXHRcdHJldHVybiBbdmFsLCB2YWwsIHZhbF07XG5cdH1cblxuXHRpZiAobCA8IDAuNSkge1xuXHRcdHQyID0gbCAqICgxICsgcyk7XG5cdH0gZWxzZSB7XG5cdFx0dDIgPSBsICsgcyAtIGwgKiBzO1xuXHR9XG5cblx0dDEgPSAyICogbCAtIHQyO1xuXG5cdHJnYiA9IFswLCAwLCAwXTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHtcblx0XHR0MyA9IGggKyAxIC8gMyAqIC0oaSAtIDEpO1xuXHRcdGlmICh0MyA8IDApIHtcblx0XHRcdHQzKys7XG5cdFx0fVxuXHRcdGlmICh0MyA+IDEpIHtcblx0XHRcdHQzLS07XG5cdFx0fVxuXG5cdFx0aWYgKDYgKiB0MyA8IDEpIHtcblx0XHRcdHZhbCA9IHQxICsgKHQyIC0gdDEpICogNiAqIHQzO1xuXHRcdH0gZWxzZSBpZiAoMiAqIHQzIDwgMSkge1xuXHRcdFx0dmFsID0gdDI7XG5cdFx0fSBlbHNlIGlmICgzICogdDMgPCAyKSB7XG5cdFx0XHR2YWwgPSB0MSArICh0MiAtIHQxKSAqICgyIC8gMyAtIHQzKSAqIDY7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhbCA9IHQxO1xuXHRcdH1cblxuXHRcdHJnYltpXSA9IHZhbCAqIDI1NTtcblx0fVxuXG5cdHJldHVybiByZ2I7XG59O1xuXG5jb252ZXJ0LmhzbC5oc3YgPSBmdW5jdGlvbiAoaHNsKSB7XG5cdHZhciBoID0gaHNsWzBdO1xuXHR2YXIgcyA9IGhzbFsxXSAvIDEwMDtcblx0dmFyIGwgPSBoc2xbMl0gLyAxMDA7XG5cdHZhciBzbWluID0gcztcblx0dmFyIGxtaW4gPSBNYXRoLm1heChsLCAwLjAxKTtcblx0dmFyIHN2O1xuXHR2YXIgdjtcblxuXHRsICo9IDI7XG5cdHMgKj0gKGwgPD0gMSkgPyBsIDogMiAtIGw7XG5cdHNtaW4gKj0gbG1pbiA8PSAxID8gbG1pbiA6IDIgLSBsbWluO1xuXHR2ID0gKGwgKyBzKSAvIDI7XG5cdHN2ID0gbCA9PT0gMCA/ICgyICogc21pbikgLyAobG1pbiArIHNtaW4pIDogKDIgKiBzKSAvIChsICsgcyk7XG5cblx0cmV0dXJuIFtoLCBzdiAqIDEwMCwgdiAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmhzdi5yZ2IgPSBmdW5jdGlvbiAoaHN2KSB7XG5cdHZhciBoID0gaHN2WzBdIC8gNjA7XG5cdHZhciBzID0gaHN2WzFdIC8gMTAwO1xuXHR2YXIgdiA9IGhzdlsyXSAvIDEwMDtcblx0dmFyIGhpID0gTWF0aC5mbG9vcihoKSAlIDY7XG5cblx0dmFyIGYgPSBoIC0gTWF0aC5mbG9vcihoKTtcblx0dmFyIHAgPSAyNTUgKiB2ICogKDEgLSBzKTtcblx0dmFyIHEgPSAyNTUgKiB2ICogKDEgLSAocyAqIGYpKTtcblx0dmFyIHQgPSAyNTUgKiB2ICogKDEgLSAocyAqICgxIC0gZikpKTtcblx0diAqPSAyNTU7XG5cblx0c3dpdGNoIChoaSkge1xuXHRcdGNhc2UgMDpcblx0XHRcdHJldHVybiBbdiwgdCwgcF07XG5cdFx0Y2FzZSAxOlxuXHRcdFx0cmV0dXJuIFtxLCB2LCBwXTtcblx0XHRjYXNlIDI6XG5cdFx0XHRyZXR1cm4gW3AsIHYsIHRdO1xuXHRcdGNhc2UgMzpcblx0XHRcdHJldHVybiBbcCwgcSwgdl07XG5cdFx0Y2FzZSA0OlxuXHRcdFx0cmV0dXJuIFt0LCBwLCB2XTtcblx0XHRjYXNlIDU6XG5cdFx0XHRyZXR1cm4gW3YsIHAsIHFdO1xuXHR9XG59O1xuXG5jb252ZXJ0Lmhzdi5oc2wgPSBmdW5jdGlvbiAoaHN2KSB7XG5cdHZhciBoID0gaHN2WzBdO1xuXHR2YXIgcyA9IGhzdlsxXSAvIDEwMDtcblx0dmFyIHYgPSBoc3ZbMl0gLyAxMDA7XG5cdHZhciB2bWluID0gTWF0aC5tYXgodiwgMC4wMSk7XG5cdHZhciBsbWluO1xuXHR2YXIgc2w7XG5cdHZhciBsO1xuXG5cdGwgPSAoMiAtIHMpICogdjtcblx0bG1pbiA9ICgyIC0gcykgKiB2bWluO1xuXHRzbCA9IHMgKiB2bWluO1xuXHRzbCAvPSAobG1pbiA8PSAxKSA/IGxtaW4gOiAyIC0gbG1pbjtcblx0c2wgPSBzbCB8fCAwO1xuXHRsIC89IDI7XG5cblx0cmV0dXJuIFtoLCBzbCAqIDEwMCwgbCAqIDEwMF07XG59O1xuXG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtY29sb3IvI2h3Yi10by1yZ2JcbmNvbnZlcnQuaHdiLnJnYiA9IGZ1bmN0aW9uIChod2IpIHtcblx0dmFyIGggPSBod2JbMF0gLyAzNjA7XG5cdHZhciB3aCA9IGh3YlsxXSAvIDEwMDtcblx0dmFyIGJsID0gaHdiWzJdIC8gMTAwO1xuXHR2YXIgcmF0aW8gPSB3aCArIGJsO1xuXHR2YXIgaTtcblx0dmFyIHY7XG5cdHZhciBmO1xuXHR2YXIgbjtcblxuXHQvLyB3aCArIGJsIGNhbnQgYmUgPiAxXG5cdGlmIChyYXRpbyA+IDEpIHtcblx0XHR3aCAvPSByYXRpbztcblx0XHRibCAvPSByYXRpbztcblx0fVxuXG5cdGkgPSBNYXRoLmZsb29yKDYgKiBoKTtcblx0diA9IDEgLSBibDtcblx0ZiA9IDYgKiBoIC0gaTtcblxuXHRpZiAoKGkgJiAweDAxKSAhPT0gMCkge1xuXHRcdGYgPSAxIC0gZjtcblx0fVxuXG5cdG4gPSB3aCArIGYgKiAodiAtIHdoKTsgLy8gbGluZWFyIGludGVycG9sYXRpb25cblxuXHR2YXIgcjtcblx0dmFyIGc7XG5cdHZhciBiO1xuXHRzd2l0Y2ggKGkpIHtcblx0XHRkZWZhdWx0OlxuXHRcdGNhc2UgNjpcblx0XHRjYXNlIDA6IHIgPSB2OyBnID0gbjsgYiA9IHdoOyBicmVhaztcblx0XHRjYXNlIDE6IHIgPSBuOyBnID0gdjsgYiA9IHdoOyBicmVhaztcblx0XHRjYXNlIDI6IHIgPSB3aDsgZyA9IHY7IGIgPSBuOyBicmVhaztcblx0XHRjYXNlIDM6IHIgPSB3aDsgZyA9IG47IGIgPSB2OyBicmVhaztcblx0XHRjYXNlIDQ6IHIgPSBuOyBnID0gd2g7IGIgPSB2OyBicmVhaztcblx0XHRjYXNlIDU6IHIgPSB2OyBnID0gd2g7IGIgPSBuOyBicmVhaztcblx0fVxuXG5cdHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG59O1xuXG5jb252ZXJ0LmNteWsucmdiID0gZnVuY3Rpb24gKGNteWspIHtcblx0dmFyIGMgPSBjbXlrWzBdIC8gMTAwO1xuXHR2YXIgbSA9IGNteWtbMV0gLyAxMDA7XG5cdHZhciB5ID0gY215a1syXSAvIDEwMDtcblx0dmFyIGsgPSBjbXlrWzNdIC8gMTAwO1xuXHR2YXIgcjtcblx0dmFyIGc7XG5cdHZhciBiO1xuXG5cdHIgPSAxIC0gTWF0aC5taW4oMSwgYyAqICgxIC0gaykgKyBrKTtcblx0ZyA9IDEgLSBNYXRoLm1pbigxLCBtICogKDEgLSBrKSArIGspO1xuXHRiID0gMSAtIE1hdGgubWluKDEsIHkgKiAoMSAtIGspICsgayk7XG5cblx0cmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XTtcbn07XG5cbmNvbnZlcnQueHl6LnJnYiA9IGZ1bmN0aW9uICh4eXopIHtcblx0dmFyIHggPSB4eXpbMF0gLyAxMDA7XG5cdHZhciB5ID0geHl6WzFdIC8gMTAwO1xuXHR2YXIgeiA9IHh5elsyXSAvIDEwMDtcblx0dmFyIHI7XG5cdHZhciBnO1xuXHR2YXIgYjtcblxuXHRyID0gKHggKiAzLjI0MDYpICsgKHkgKiAtMS41MzcyKSArICh6ICogLTAuNDk4Nik7XG5cdGcgPSAoeCAqIC0wLjk2ODkpICsgKHkgKiAxLjg3NTgpICsgKHogKiAwLjA0MTUpO1xuXHRiID0gKHggKiAwLjA1NTcpICsgKHkgKiAtMC4yMDQwKSArICh6ICogMS4wNTcwKTtcblxuXHQvLyBhc3N1bWUgc1JHQlxuXHRyID0gciA+IDAuMDAzMTMwOFxuXHRcdD8gKCgxLjA1NSAqIE1hdGgucG93KHIsIDEuMCAvIDIuNCkpIC0gMC4wNTUpXG5cdFx0OiByICogMTIuOTI7XG5cblx0ZyA9IGcgPiAwLjAwMzEzMDhcblx0XHQ/ICgoMS4wNTUgKiBNYXRoLnBvdyhnLCAxLjAgLyAyLjQpKSAtIDAuMDU1KVxuXHRcdDogZyAqIDEyLjkyO1xuXG5cdGIgPSBiID4gMC4wMDMxMzA4XG5cdFx0PyAoKDEuMDU1ICogTWF0aC5wb3coYiwgMS4wIC8gMi40KSkgLSAwLjA1NSlcblx0XHQ6IGIgKiAxMi45MjtcblxuXHRyID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgciksIDEpO1xuXHRnID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgZyksIDEpO1xuXHRiID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgYiksIDEpO1xuXG5cdHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG59O1xuXG5jb252ZXJ0Lnh5ei5sYWIgPSBmdW5jdGlvbiAoeHl6KSB7XG5cdHZhciB4ID0geHl6WzBdO1xuXHR2YXIgeSA9IHh5elsxXTtcblx0dmFyIHogPSB4eXpbMl07XG5cdHZhciBsO1xuXHR2YXIgYTtcblx0dmFyIGI7XG5cblx0eCAvPSA5NS4wNDc7XG5cdHkgLz0gMTAwO1xuXHR6IC89IDEwOC44ODM7XG5cblx0eCA9IHggPiAwLjAwODg1NiA/IE1hdGgucG93KHgsIDEgLyAzKSA6ICg3Ljc4NyAqIHgpICsgKDE2IC8gMTE2KTtcblx0eSA9IHkgPiAwLjAwODg1NiA/IE1hdGgucG93KHksIDEgLyAzKSA6ICg3Ljc4NyAqIHkpICsgKDE2IC8gMTE2KTtcblx0eiA9IHogPiAwLjAwODg1NiA/IE1hdGgucG93KHosIDEgLyAzKSA6ICg3Ljc4NyAqIHopICsgKDE2IC8gMTE2KTtcblxuXHRsID0gKDExNiAqIHkpIC0gMTY7XG5cdGEgPSA1MDAgKiAoeCAtIHkpO1xuXHRiID0gMjAwICogKHkgLSB6KTtcblxuXHRyZXR1cm4gW2wsIGEsIGJdO1xufTtcblxuY29udmVydC5sYWIueHl6ID0gZnVuY3Rpb24gKGxhYikge1xuXHR2YXIgbCA9IGxhYlswXTtcblx0dmFyIGEgPSBsYWJbMV07XG5cdHZhciBiID0gbGFiWzJdO1xuXHR2YXIgeDtcblx0dmFyIHk7XG5cdHZhciB6O1xuXG5cdHkgPSAobCArIDE2KSAvIDExNjtcblx0eCA9IGEgLyA1MDAgKyB5O1xuXHR6ID0geSAtIGIgLyAyMDA7XG5cblx0dmFyIHkyID0gTWF0aC5wb3coeSwgMyk7XG5cdHZhciB4MiA9IE1hdGgucG93KHgsIDMpO1xuXHR2YXIgejIgPSBNYXRoLnBvdyh6LCAzKTtcblx0eSA9IHkyID4gMC4wMDg4NTYgPyB5MiA6ICh5IC0gMTYgLyAxMTYpIC8gNy43ODc7XG5cdHggPSB4MiA+IDAuMDA4ODU2ID8geDIgOiAoeCAtIDE2IC8gMTE2KSAvIDcuNzg3O1xuXHR6ID0gejIgPiAwLjAwODg1NiA/IHoyIDogKHogLSAxNiAvIDExNikgLyA3Ljc4NztcblxuXHR4ICo9IDk1LjA0Nztcblx0eSAqPSAxMDA7XG5cdHogKj0gMTA4Ljg4MztcblxuXHRyZXR1cm4gW3gsIHksIHpdO1xufTtcblxuY29udmVydC5sYWIubGNoID0gZnVuY3Rpb24gKGxhYikge1xuXHR2YXIgbCA9IGxhYlswXTtcblx0dmFyIGEgPSBsYWJbMV07XG5cdHZhciBiID0gbGFiWzJdO1xuXHR2YXIgaHI7XG5cdHZhciBoO1xuXHR2YXIgYztcblxuXHRociA9IE1hdGguYXRhbjIoYiwgYSk7XG5cdGggPSBociAqIDM2MCAvIDIgLyBNYXRoLlBJO1xuXG5cdGlmIChoIDwgMCkge1xuXHRcdGggKz0gMzYwO1xuXHR9XG5cblx0YyA9IE1hdGguc3FydChhICogYSArIGIgKiBiKTtcblxuXHRyZXR1cm4gW2wsIGMsIGhdO1xufTtcblxuY29udmVydC5sY2gubGFiID0gZnVuY3Rpb24gKGxjaCkge1xuXHR2YXIgbCA9IGxjaFswXTtcblx0dmFyIGMgPSBsY2hbMV07XG5cdHZhciBoID0gbGNoWzJdO1xuXHR2YXIgYTtcblx0dmFyIGI7XG5cdHZhciBocjtcblxuXHRociA9IGggLyAzNjAgKiAyICogTWF0aC5QSTtcblx0YSA9IGMgKiBNYXRoLmNvcyhocik7XG5cdGIgPSBjICogTWF0aC5zaW4oaHIpO1xuXG5cdHJldHVybiBbbCwgYSwgYl07XG59O1xuXG5jb252ZXJ0LnJnYi5hbnNpMTYgPSBmdW5jdGlvbiAoYXJncykge1xuXHR2YXIgciA9IGFyZ3NbMF07XG5cdHZhciBnID0gYXJnc1sxXTtcblx0dmFyIGIgPSBhcmdzWzJdO1xuXHR2YXIgdmFsdWUgPSAxIGluIGFyZ3VtZW50cyA/IGFyZ3VtZW50c1sxXSA6IGNvbnZlcnQucmdiLmhzdihhcmdzKVsyXTsgLy8gaHN2IC0+IGFuc2kxNiBvcHRpbWl6YXRpb25cblxuXHR2YWx1ZSA9IE1hdGgucm91bmQodmFsdWUgLyA1MCk7XG5cblx0aWYgKHZhbHVlID09PSAwKSB7XG5cdFx0cmV0dXJuIDMwO1xuXHR9XG5cblx0dmFyIGFuc2kgPSAzMFxuXHRcdCsgKChNYXRoLnJvdW5kKGIgLyAyNTUpIDw8IDIpXG5cdFx0fCAoTWF0aC5yb3VuZChnIC8gMjU1KSA8PCAxKVxuXHRcdHwgTWF0aC5yb3VuZChyIC8gMjU1KSk7XG5cblx0aWYgKHZhbHVlID09PSAyKSB7XG5cdFx0YW5zaSArPSA2MDtcblx0fVxuXG5cdHJldHVybiBhbnNpO1xufTtcblxuY29udmVydC5oc3YuYW5zaTE2ID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0Ly8gb3B0aW1pemF0aW9uIGhlcmU7IHdlIGFscmVhZHkga25vdyB0aGUgdmFsdWUgYW5kIGRvbid0IG5lZWQgdG8gZ2V0XG5cdC8vIGl0IGNvbnZlcnRlZCBmb3IgdXMuXG5cdHJldHVybiBjb252ZXJ0LnJnYi5hbnNpMTYoY29udmVydC5oc3YucmdiKGFyZ3MpLCBhcmdzWzJdKTtcbn07XG5cbmNvbnZlcnQucmdiLmFuc2kyNTYgPSBmdW5jdGlvbiAoYXJncykge1xuXHR2YXIgciA9IGFyZ3NbMF07XG5cdHZhciBnID0gYXJnc1sxXTtcblx0dmFyIGIgPSBhcmdzWzJdO1xuXG5cdC8vIHdlIHVzZSB0aGUgZXh0ZW5kZWQgZ3JleXNjYWxlIHBhbGV0dGUgaGVyZSwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mXG5cdC8vIGJsYWNrIGFuZCB3aGl0ZS4gbm9ybWFsIHBhbGV0dGUgb25seSBoYXMgNCBncmV5c2NhbGUgc2hhZGVzLlxuXHRpZiAociA9PT0gZyAmJiBnID09PSBiKSB7XG5cdFx0aWYgKHIgPCA4KSB7XG5cdFx0XHRyZXR1cm4gMTY7XG5cdFx0fVxuXG5cdFx0aWYgKHIgPiAyNDgpIHtcblx0XHRcdHJldHVybiAyMzE7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIE1hdGgucm91bmQoKChyIC0gOCkgLyAyNDcpICogMjQpICsgMjMyO1xuXHR9XG5cblx0dmFyIGFuc2kgPSAxNlxuXHRcdCsgKDM2ICogTWF0aC5yb3VuZChyIC8gMjU1ICogNSkpXG5cdFx0KyAoNiAqIE1hdGgucm91bmQoZyAvIDI1NSAqIDUpKVxuXHRcdCsgTWF0aC5yb3VuZChiIC8gMjU1ICogNSk7XG5cblx0cmV0dXJuIGFuc2k7XG59O1xuXG5jb252ZXJ0LmFuc2kxNi5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHR2YXIgY29sb3IgPSBhcmdzICUgMTA7XG5cblx0Ly8gaGFuZGxlIGdyZXlzY2FsZVxuXHRpZiAoY29sb3IgPT09IDAgfHwgY29sb3IgPT09IDcpIHtcblx0XHRpZiAoYXJncyA+IDUwKSB7XG5cdFx0XHRjb2xvciArPSAzLjU7XG5cdFx0fVxuXG5cdFx0Y29sb3IgPSBjb2xvciAvIDEwLjUgKiAyNTU7XG5cblx0XHRyZXR1cm4gW2NvbG9yLCBjb2xvciwgY29sb3JdO1xuXHR9XG5cblx0dmFyIG11bHQgPSAofn4oYXJncyA+IDUwKSArIDEpICogMC41O1xuXHR2YXIgciA9ICgoY29sb3IgJiAxKSAqIG11bHQpICogMjU1O1xuXHR2YXIgZyA9ICgoKGNvbG9yID4+IDEpICYgMSkgKiBtdWx0KSAqIDI1NTtcblx0dmFyIGIgPSAoKChjb2xvciA+PiAyKSAmIDEpICogbXVsdCkgKiAyNTU7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQuYW5zaTI1Ni5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHQvLyBoYW5kbGUgZ3JleXNjYWxlXG5cdGlmIChhcmdzID49IDIzMikge1xuXHRcdHZhciBjID0gKGFyZ3MgLSAyMzIpICogMTAgKyA4O1xuXHRcdHJldHVybiBbYywgYywgY107XG5cdH1cblxuXHRhcmdzIC09IDE2O1xuXG5cdHZhciByZW07XG5cdHZhciByID0gTWF0aC5mbG9vcihhcmdzIC8gMzYpIC8gNSAqIDI1NTtcblx0dmFyIGcgPSBNYXRoLmZsb29yKChyZW0gPSBhcmdzICUgMzYpIC8gNikgLyA1ICogMjU1O1xuXHR2YXIgYiA9IChyZW0gJSA2KSAvIDUgKiAyNTU7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmhleCA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdHZhciBpbnRlZ2VyID0gKChNYXRoLnJvdW5kKGFyZ3NbMF0pICYgMHhGRikgPDwgMTYpXG5cdFx0KyAoKE1hdGgucm91bmQoYXJnc1sxXSkgJiAweEZGKSA8PCA4KVxuXHRcdCsgKE1hdGgucm91bmQoYXJnc1syXSkgJiAweEZGKTtcblxuXHR2YXIgc3RyaW5nID0gaW50ZWdlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblx0cmV0dXJuICcwMDAwMDAnLnN1YnN0cmluZyhzdHJpbmcubGVuZ3RoKSArIHN0cmluZztcbn07XG5cbmNvbnZlcnQuaGV4LnJnYiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdHZhciBtYXRjaCA9IGFyZ3MudG9TdHJpbmcoMTYpLm1hdGNoKC9bYS1mMC05XXs2fXxbYS1mMC05XXszfS9pKTtcblx0aWYgKCFtYXRjaCkge1xuXHRcdHJldHVybiBbMCwgMCwgMF07XG5cdH1cblxuXHR2YXIgY29sb3JTdHJpbmcgPSBtYXRjaFswXTtcblxuXHRpZiAobWF0Y2hbMF0ubGVuZ3RoID09PSAzKSB7XG5cdFx0Y29sb3JTdHJpbmcgPSBjb2xvclN0cmluZy5zcGxpdCgnJykubWFwKGZ1bmN0aW9uIChjaGFyKSB7XG5cdFx0XHRyZXR1cm4gY2hhciArIGNoYXI7XG5cdFx0fSkuam9pbignJyk7XG5cdH1cblxuXHR2YXIgaW50ZWdlciA9IHBhcnNlSW50KGNvbG9yU3RyaW5nLCAxNik7XG5cdHZhciByID0gKGludGVnZXIgPj4gMTYpICYgMHhGRjtcblx0dmFyIGcgPSAoaW50ZWdlciA+PiA4KSAmIDB4RkY7XG5cdHZhciBiID0gaW50ZWdlciAmIDB4RkY7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmhjZyA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0dmFyIHIgPSByZ2JbMF0gLyAyNTU7XG5cdHZhciBnID0gcmdiWzFdIC8gMjU1O1xuXHR2YXIgYiA9IHJnYlsyXSAvIDI1NTtcblx0dmFyIG1heCA9IE1hdGgubWF4KE1hdGgubWF4KHIsIGcpLCBiKTtcblx0dmFyIG1pbiA9IE1hdGgubWluKE1hdGgubWluKHIsIGcpLCBiKTtcblx0dmFyIGNocm9tYSA9IChtYXggLSBtaW4pO1xuXHR2YXIgZ3JheXNjYWxlO1xuXHR2YXIgaHVlO1xuXG5cdGlmIChjaHJvbWEgPCAxKSB7XG5cdFx0Z3JheXNjYWxlID0gbWluIC8gKDEgLSBjaHJvbWEpO1xuXHR9IGVsc2Uge1xuXHRcdGdyYXlzY2FsZSA9IDA7XG5cdH1cblxuXHRpZiAoY2hyb21hIDw9IDApIHtcblx0XHRodWUgPSAwO1xuXHR9IGVsc2Vcblx0aWYgKG1heCA9PT0gcikge1xuXHRcdGh1ZSA9ICgoZyAtIGIpIC8gY2hyb21hKSAlIDY7XG5cdH0gZWxzZVxuXHRpZiAobWF4ID09PSBnKSB7XG5cdFx0aHVlID0gMiArIChiIC0gcikgLyBjaHJvbWE7XG5cdH0gZWxzZSB7XG5cdFx0aHVlID0gNCArIChyIC0gZykgLyBjaHJvbWEgKyA0O1xuXHR9XG5cblx0aHVlIC89IDY7XG5cdGh1ZSAlPSAxO1xuXG5cdHJldHVybiBbaHVlICogMzYwLCBjaHJvbWEgKiAxMDAsIGdyYXlzY2FsZSAqIDEwMF07XG59O1xuXG5jb252ZXJ0LmhzbC5oY2cgPSBmdW5jdGlvbiAoaHNsKSB7XG5cdHZhciBzID0gaHNsWzFdIC8gMTAwO1xuXHR2YXIgbCA9IGhzbFsyXSAvIDEwMDtcblx0dmFyIGMgPSAxO1xuXHR2YXIgZiA9IDA7XG5cblx0aWYgKGwgPCAwLjUpIHtcblx0XHRjID0gMi4wICogcyAqIGw7XG5cdH0gZWxzZSB7XG5cdFx0YyA9IDIuMCAqIHMgKiAoMS4wIC0gbCk7XG5cdH1cblxuXHRpZiAoYyA8IDEuMCkge1xuXHRcdGYgPSAobCAtIDAuNSAqIGMpIC8gKDEuMCAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtoc2xbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xufTtcblxuY29udmVydC5oc3YuaGNnID0gZnVuY3Rpb24gKGhzdikge1xuXHR2YXIgcyA9IGhzdlsxXSAvIDEwMDtcblx0dmFyIHYgPSBoc3ZbMl0gLyAxMDA7XG5cblx0dmFyIGMgPSBzICogdjtcblx0dmFyIGYgPSAwO1xuXG5cdGlmIChjIDwgMS4wKSB7XG5cdFx0ZiA9ICh2IC0gYykgLyAoMSAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtoc3ZbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xufTtcblxuY29udmVydC5oY2cucmdiID0gZnVuY3Rpb24gKGhjZykge1xuXHR2YXIgaCA9IGhjZ1swXSAvIDM2MDtcblx0dmFyIGMgPSBoY2dbMV0gLyAxMDA7XG5cdHZhciBnID0gaGNnWzJdIC8gMTAwO1xuXG5cdGlmIChjID09PSAwLjApIHtcblx0XHRyZXR1cm4gW2cgKiAyNTUsIGcgKiAyNTUsIGcgKiAyNTVdO1xuXHR9XG5cblx0dmFyIHB1cmUgPSBbMCwgMCwgMF07XG5cdHZhciBoaSA9IChoICUgMSkgKiA2O1xuXHR2YXIgdiA9IGhpICUgMTtcblx0dmFyIHcgPSAxIC0gdjtcblx0dmFyIG1nID0gMDtcblxuXHRzd2l0Y2ggKE1hdGguZmxvb3IoaGkpKSB7XG5cdFx0Y2FzZSAwOlxuXHRcdFx0cHVyZVswXSA9IDE7IHB1cmVbMV0gPSB2OyBwdXJlWzJdID0gMDsgYnJlYWs7XG5cdFx0Y2FzZSAxOlxuXHRcdFx0cHVyZVswXSA9IHc7IHB1cmVbMV0gPSAxOyBwdXJlWzJdID0gMDsgYnJlYWs7XG5cdFx0Y2FzZSAyOlxuXHRcdFx0cHVyZVswXSA9IDA7IHB1cmVbMV0gPSAxOyBwdXJlWzJdID0gdjsgYnJlYWs7XG5cdFx0Y2FzZSAzOlxuXHRcdFx0cHVyZVswXSA9IDA7IHB1cmVbMV0gPSB3OyBwdXJlWzJdID0gMTsgYnJlYWs7XG5cdFx0Y2FzZSA0OlxuXHRcdFx0cHVyZVswXSA9IHY7IHB1cmVbMV0gPSAwOyBwdXJlWzJdID0gMTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHB1cmVbMF0gPSAxOyBwdXJlWzFdID0gMDsgcHVyZVsyXSA9IHc7XG5cdH1cblxuXHRtZyA9ICgxLjAgLSBjKSAqIGc7XG5cblx0cmV0dXJuIFtcblx0XHQoYyAqIHB1cmVbMF0gKyBtZykgKiAyNTUsXG5cdFx0KGMgKiBwdXJlWzFdICsgbWcpICogMjU1LFxuXHRcdChjICogcHVyZVsyXSArIG1nKSAqIDI1NVxuXHRdO1xufTtcblxuY29udmVydC5oY2cuaHN2ID0gZnVuY3Rpb24gKGhjZykge1xuXHR2YXIgYyA9IGhjZ1sxXSAvIDEwMDtcblx0dmFyIGcgPSBoY2dbMl0gLyAxMDA7XG5cblx0dmFyIHYgPSBjICsgZyAqICgxLjAgLSBjKTtcblx0dmFyIGYgPSAwO1xuXG5cdGlmICh2ID4gMC4wKSB7XG5cdFx0ZiA9IGMgLyB2O1xuXHR9XG5cblx0cmV0dXJuIFtoY2dbMF0sIGYgKiAxMDAsIHYgKiAxMDBdO1xufTtcblxuY29udmVydC5oY2cuaHNsID0gZnVuY3Rpb24gKGhjZykge1xuXHR2YXIgYyA9IGhjZ1sxXSAvIDEwMDtcblx0dmFyIGcgPSBoY2dbMl0gLyAxMDA7XG5cblx0dmFyIGwgPSBnICogKDEuMCAtIGMpICsgMC41ICogYztcblx0dmFyIHMgPSAwO1xuXG5cdGlmIChsID4gMC4wICYmIGwgPCAwLjUpIHtcblx0XHRzID0gYyAvICgyICogbCk7XG5cdH0gZWxzZVxuXHRpZiAobCA+PSAwLjUgJiYgbCA8IDEuMCkge1xuXHRcdHMgPSBjIC8gKDIgKiAoMSAtIGwpKTtcblx0fVxuXG5cdHJldHVybiBbaGNnWzBdLCBzICogMTAwLCBsICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaGNnLmh3YiA9IGZ1bmN0aW9uIChoY2cpIHtcblx0dmFyIGMgPSBoY2dbMV0gLyAxMDA7XG5cdHZhciBnID0gaGNnWzJdIC8gMTAwO1xuXHR2YXIgdiA9IGMgKyBnICogKDEuMCAtIGMpO1xuXHRyZXR1cm4gW2hjZ1swXSwgKHYgLSBjKSAqIDEwMCwgKDEgLSB2KSAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmh3Yi5oY2cgPSBmdW5jdGlvbiAoaHdiKSB7XG5cdHZhciB3ID0gaHdiWzFdIC8gMTAwO1xuXHR2YXIgYiA9IGh3YlsyXSAvIDEwMDtcblx0dmFyIHYgPSAxIC0gYjtcblx0dmFyIGMgPSB2IC0gdztcblx0dmFyIGcgPSAwO1xuXG5cdGlmIChjIDwgMSkge1xuXHRcdGcgPSAodiAtIGMpIC8gKDEgLSBjKTtcblx0fVxuXG5cdHJldHVybiBbaHdiWzBdLCBjICogMTAwLCBnICogMTAwXTtcbn07XG5cbmNvbnZlcnQuYXBwbGUucmdiID0gZnVuY3Rpb24gKGFwcGxlKSB7XG5cdHJldHVybiBbKGFwcGxlWzBdIC8gNjU1MzUpICogMjU1LCAoYXBwbGVbMV0gLyA2NTUzNSkgKiAyNTUsIChhcHBsZVsyXSAvIDY1NTM1KSAqIDI1NV07XG59O1xuXG5jb252ZXJ0LnJnYi5hcHBsZSA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0cmV0dXJuIFsocmdiWzBdIC8gMjU1KSAqIDY1NTM1LCAocmdiWzFdIC8gMjU1KSAqIDY1NTM1LCAocmdiWzJdIC8gMjU1KSAqIDY1NTM1XTtcbn07XG5cbmNvbnZlcnQuZ3JheS5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHRyZXR1cm4gW2FyZ3NbMF0gLyAxMDAgKiAyNTUsIGFyZ3NbMF0gLyAxMDAgKiAyNTUsIGFyZ3NbMF0gLyAxMDAgKiAyNTVdO1xufTtcblxuY29udmVydC5ncmF5LmhzbCA9IGNvbnZlcnQuZ3JheS5oc3YgPSBmdW5jdGlvbiAoYXJncykge1xuXHRyZXR1cm4gWzAsIDAsIGFyZ3NbMF1dO1xufTtcblxuY29udmVydC5ncmF5Lmh3YiA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdHJldHVybiBbMCwgMTAwLCBncmF5WzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5jbXlrID0gZnVuY3Rpb24gKGdyYXkpIHtcblx0cmV0dXJuIFswLCAwLCAwLCBncmF5WzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5sYWIgPSBmdW5jdGlvbiAoZ3JheSkge1xuXHRyZXR1cm4gW2dyYXlbMF0sIDAsIDBdO1xufTtcblxuY29udmVydC5ncmF5LmhleCA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdHZhciB2YWwgPSBNYXRoLnJvdW5kKGdyYXlbMF0gLyAxMDAgKiAyNTUpICYgMHhGRjtcblx0dmFyIGludGVnZXIgPSAodmFsIDw8IDE2KSArICh2YWwgPDwgOCkgKyB2YWw7XG5cblx0dmFyIHN0cmluZyA9IGludGVnZXIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdHJldHVybiAnMDAwMDAwJy5zdWJzdHJpbmcoc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59O1xuXG5jb252ZXJ0LnJnYi5ncmF5ID0gZnVuY3Rpb24gKHJnYikge1xuXHR2YXIgdmFsID0gKHJnYlswXSArIHJnYlsxXSArIHJnYlsyXSkgLyAzO1xuXHRyZXR1cm4gW3ZhbCAvIDI1NSAqIDEwMF07XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/color-convert/conversions.js\n"); /***/ }), /***/ "./node_modules/color-convert/index.js": /*!*********************************************!*\ !*** ./node_modules/color-convert/index.js ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var conversions = __webpack_require__(/*! ./conversions */ \"./node_modules/color-convert/conversions.js\");\nvar route = __webpack_require__(/*! ./route */ \"./node_modules/color-convert/route.js\");\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9pbmRleC5qcz9iYjE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLGtFQUFlO0FBQ3pDLFlBQVksbUJBQU8sQ0FBQyxzREFBUzs7QUFFN0I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQSx1Q0FBdUMsU0FBUztBQUNoRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsd0RBQXdELHVDQUF1QztBQUMvRixzREFBc0QscUNBQXFDOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRixDQUFDOztBQUVEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2NvbG9yLWNvbnZlcnQvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29udmVyc2lvbnMgPSByZXF1aXJlKCcuL2NvbnZlcnNpb25zJyk7XG52YXIgcm91dGUgPSByZXF1aXJlKCcuL3JvdXRlJyk7XG5cbnZhciBjb252ZXJ0ID0ge307XG5cbnZhciBtb2RlbHMgPSBPYmplY3Qua2V5cyhjb252ZXJzaW9ucyk7XG5cbmZ1bmN0aW9uIHdyYXBSYXcoZm4pIHtcblx0dmFyIHdyYXBwZWRGbiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdFx0aWYgKGFyZ3MgPT09IHVuZGVmaW5lZCB8fCBhcmdzID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gYXJncztcblx0XHR9XG5cblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcblx0XHRcdGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBmbihhcmdzKTtcblx0fTtcblxuXHQvLyBwcmVzZXJ2ZSAuY29udmVyc2lvbiBwcm9wZXJ0eSBpZiB0aGVyZSBpcyBvbmVcblx0aWYgKCdjb252ZXJzaW9uJyBpbiBmbikge1xuXHRcdHdyYXBwZWRGbi5jb252ZXJzaW9uID0gZm4uY29udmVyc2lvbjtcblx0fVxuXG5cdHJldHVybiB3cmFwcGVkRm47XG59XG5cbmZ1bmN0aW9uIHdyYXBSb3VuZGVkKGZuKSB7XG5cdHZhciB3cmFwcGVkRm4gPSBmdW5jdGlvbiAoYXJncykge1xuXHRcdGlmIChhcmdzID09PSB1bmRlZmluZWQgfHwgYXJncyA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGFyZ3M7XG5cdFx0fVxuXG5cdFx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG5cdFx0XHRhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblx0XHR9XG5cblx0XHR2YXIgcmVzdWx0ID0gZm4oYXJncyk7XG5cblx0XHQvLyB3ZSdyZSBhc3N1bWluZyB0aGUgcmVzdWx0IGlzIGFuIGFycmF5IGhlcmUuXG5cdFx0Ly8gc2VlIG5vdGljZSBpbiBjb252ZXJzaW9ucy5qczsgZG9uJ3QgdXNlIGJveCB0eXBlc1xuXHRcdC8vIGluIGNvbnZlcnNpb24gZnVuY3Rpb25zLlxuXHRcdGlmICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0Jykge1xuXHRcdFx0Zm9yICh2YXIgbGVuID0gcmVzdWx0Lmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0XHRyZXN1bHRbaV0gPSBNYXRoLnJvdW5kKHJlc3VsdFtpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHQvLyBwcmVzZXJ2ZSAuY29udmVyc2lvbiBwcm9wZXJ0eSBpZiB0aGVyZSBpcyBvbmVcblx0aWYgKCdjb252ZXJzaW9uJyBpbiBmbikge1xuXHRcdHdyYXBwZWRGbi5jb252ZXJzaW9uID0gZm4uY29udmVyc2lvbjtcblx0fVxuXG5cdHJldHVybiB3cmFwcGVkRm47XG59XG5cbm1vZGVscy5mb3JFYWNoKGZ1bmN0aW9uIChmcm9tTW9kZWwpIHtcblx0Y29udmVydFtmcm9tTW9kZWxdID0ge307XG5cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbZnJvbU1vZGVsXSwgJ2NoYW5uZWxzJywge3ZhbHVlOiBjb252ZXJzaW9uc1tmcm9tTW9kZWxdLmNoYW5uZWxzfSk7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W2Zyb21Nb2RlbF0sICdsYWJlbHMnLCB7dmFsdWU6IGNvbnZlcnNpb25zW2Zyb21Nb2RlbF0ubGFiZWxzfSk7XG5cblx0dmFyIHJvdXRlcyA9IHJvdXRlKGZyb21Nb2RlbCk7XG5cdHZhciByb3V0ZU1vZGVscyA9IE9iamVjdC5rZXlzKHJvdXRlcyk7XG5cblx0cm91dGVNb2RlbHMuZm9yRWFjaChmdW5jdGlvbiAodG9Nb2RlbCkge1xuXHRcdHZhciBmbiA9IHJvdXRlc1t0b01vZGVsXTtcblxuXHRcdGNvbnZlcnRbZnJvbU1vZGVsXVt0b01vZGVsXSA9IHdyYXBSb3VuZGVkKGZuKTtcblx0XHRjb252ZXJ0W2Zyb21Nb2RlbF1bdG9Nb2RlbF0ucmF3ID0gd3JhcFJhdyhmbik7XG5cdH0pO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gY29udmVydDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/color-convert/index.js\n"); /***/ }), /***/ "./node_modules/color-convert/route.js": /*!*********************************************!*\ !*** ./node_modules/color-convert/route.js ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var conversions = __webpack_require__(/*! ./conversions */ \"./node_modules/color-convert/conversions.js\");\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9yb3V0ZS5qcz9hMjc5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLGtFQUFlOztBQUV6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLFNBQVM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5Q0FBeUMsU0FBUztBQUNsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUMsU0FBUztBQUM5QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9jb2xvci1jb252ZXJ0L3JvdXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvbnZlcnNpb25zID0gcmVxdWlyZSgnLi9jb252ZXJzaW9ucycpO1xuXG4vKlxuXHR0aGlzIGZ1bmN0aW9uIHJvdXRlcyBhIG1vZGVsIHRvIGFsbCBvdGhlciBtb2RlbHMuXG5cblx0YWxsIGZ1bmN0aW9ucyB0aGF0IGFyZSByb3V0ZWQgaGF2ZSBhIHByb3BlcnR5IGAuY29udmVyc2lvbmAgYXR0YWNoZWRcblx0dG8gdGhlIHJldHVybmVkIHN5bnRoZXRpYyBmdW5jdGlvbi4gVGhpcyBwcm9wZXJ0eSBpcyBhbiBhcnJheVxuXHRvZiBzdHJpbmdzLCBlYWNoIHdpdGggdGhlIHN0ZXBzIGluIGJldHdlZW4gdGhlICdmcm9tJyBhbmQgJ3RvJ1xuXHRjb2xvciBtb2RlbHMgKGluY2x1c2l2ZSkuXG5cblx0Y29udmVyc2lvbnMgdGhhdCBhcmUgbm90IHBvc3NpYmxlIHNpbXBseSBhcmUgbm90IGluY2x1ZGVkLlxuKi9cblxuZnVuY3Rpb24gYnVpbGRHcmFwaCgpIHtcblx0dmFyIGdyYXBoID0ge307XG5cdC8vIGh0dHBzOi8vanNwZXJmLmNvbS9vYmplY3Qta2V5cy12cy1mb3ItaW4td2l0aC1jbG9zdXJlLzNcblx0dmFyIG1vZGVscyA9IE9iamVjdC5rZXlzKGNvbnZlcnNpb25zKTtcblxuXHRmb3IgKHZhciBsZW4gPSBtb2RlbHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0Z3JhcGhbbW9kZWxzW2ldXSA9IHtcblx0XHRcdC8vIGh0dHA6Ly9qc3BlcmYuY29tLzEtdnMtaW5maW5pdHlcblx0XHRcdC8vIG1pY3JvLW9wdCwgYnV0IHRoaXMgaXMgc2ltcGxlLlxuXHRcdFx0ZGlzdGFuY2U6IC0xLFxuXHRcdFx0cGFyZW50OiBudWxsXG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiBncmFwaDtcbn1cblxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJlYWR0aC1maXJzdF9zZWFyY2hcbmZ1bmN0aW9uIGRlcml2ZUJGUyhmcm9tTW9kZWwpIHtcblx0dmFyIGdyYXBoID0gYnVpbGRHcmFwaCgpO1xuXHR2YXIgcXVldWUgPSBbZnJvbU1vZGVsXTsgLy8gdW5zaGlmdCAtPiBxdWV1ZSAtPiBwb3BcblxuXHRncmFwaFtmcm9tTW9kZWxdLmRpc3RhbmNlID0gMDtcblxuXHR3aGlsZSAocXVldWUubGVuZ3RoKSB7XG5cdFx0dmFyIGN1cnJlbnQgPSBxdWV1ZS5wb3AoKTtcblx0XHR2YXIgYWRqYWNlbnRzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnNbY3VycmVudF0pO1xuXG5cdFx0Zm9yICh2YXIgbGVuID0gYWRqYWNlbnRzLmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0dmFyIGFkamFjZW50ID0gYWRqYWNlbnRzW2ldO1xuXHRcdFx0dmFyIG5vZGUgPSBncmFwaFthZGphY2VudF07XG5cblx0XHRcdGlmIChub2RlLmRpc3RhbmNlID09PSAtMSkge1xuXHRcdFx0XHRub2RlLmRpc3RhbmNlID0gZ3JhcGhbY3VycmVudF0uZGlzdGFuY2UgKyAxO1xuXHRcdFx0XHRub2RlLnBhcmVudCA9IGN1cnJlbnQ7XG5cdFx0XHRcdHF1ZXVlLnVuc2hpZnQoYWRqYWNlbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBncmFwaDtcbn1cblxuZnVuY3Rpb24gbGluayhmcm9tLCB0bykge1xuXHRyZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcblx0XHRyZXR1cm4gdG8oZnJvbShhcmdzKSk7XG5cdH07XG59XG5cbmZ1bmN0aW9uIHdyYXBDb252ZXJzaW9uKHRvTW9kZWwsIGdyYXBoKSB7XG5cdHZhciBwYXRoID0gW2dyYXBoW3RvTW9kZWxdLnBhcmVudCwgdG9Nb2RlbF07XG5cdHZhciBmbiA9IGNvbnZlcnNpb25zW2dyYXBoW3RvTW9kZWxdLnBhcmVudF1bdG9Nb2RlbF07XG5cblx0dmFyIGN1ciA9IGdyYXBoW3RvTW9kZWxdLnBhcmVudDtcblx0d2hpbGUgKGdyYXBoW2N1cl0ucGFyZW50KSB7XG5cdFx0cGF0aC51bnNoaWZ0KGdyYXBoW2N1cl0ucGFyZW50KTtcblx0XHRmbiA9IGxpbmsoY29udmVyc2lvbnNbZ3JhcGhbY3VyXS5wYXJlbnRdW2N1cl0sIGZuKTtcblx0XHRjdXIgPSBncmFwaFtjdXJdLnBhcmVudDtcblx0fVxuXG5cdGZuLmNvbnZlcnNpb24gPSBwYXRoO1xuXHRyZXR1cm4gZm47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZyb21Nb2RlbCkge1xuXHR2YXIgZ3JhcGggPSBkZXJpdmVCRlMoZnJvbU1vZGVsKTtcblx0dmFyIGNvbnZlcnNpb24gPSB7fTtcblxuXHR2YXIgbW9kZWxzID0gT2JqZWN0LmtleXMoZ3JhcGgpO1xuXHRmb3IgKHZhciBsZW4gPSBtb2RlbHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0dmFyIHRvTW9kZWwgPSBtb2RlbHNbaV07XG5cdFx0dmFyIG5vZGUgPSBncmFwaFt0b01vZGVsXTtcblxuXHRcdGlmIChub2RlLnBhcmVudCA9PT0gbnVsbCkge1xuXHRcdFx0Ly8gbm8gcG9zc2libGUgY29udmVyc2lvbiwgb3IgdGhpcyBub2RlIGlzIHRoZSBzb3VyY2UgbW9kZWwuXG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRjb252ZXJzaW9uW3RvTW9kZWxdID0gd3JhcENvbnZlcnNpb24odG9Nb2RlbCwgZ3JhcGgpO1xuXHR9XG5cblx0cmV0dXJuIGNvbnZlcnNpb247XG59O1xuXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/color-convert/route.js\n"); /***/ }), /***/ "./node_modules/color-name/index.js": /*!******************************************!*\ !*** ./node_modules/color-name/index.js ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29sb3ItbmFtZS9pbmRleC5qcz80ZjRkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFZOztBQUVaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9jb2xvci1uYW1lL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuXHRcImFsaWNlYmx1ZVwiOiBbMjQwLCAyNDgsIDI1NV0sXHJcblx0XCJhbnRpcXVld2hpdGVcIjogWzI1MCwgMjM1LCAyMTVdLFxyXG5cdFwiYXF1YVwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiYXF1YW1hcmluZVwiOiBbMTI3LCAyNTUsIDIxMl0sXHJcblx0XCJhenVyZVwiOiBbMjQwLCAyNTUsIDI1NV0sXHJcblx0XCJiZWlnZVwiOiBbMjQ1LCAyNDUsIDIyMF0sXHJcblx0XCJiaXNxdWVcIjogWzI1NSwgMjI4LCAxOTZdLFxyXG5cdFwiYmxhY2tcIjogWzAsIDAsIDBdLFxyXG5cdFwiYmxhbmNoZWRhbG1vbmRcIjogWzI1NSwgMjM1LCAyMDVdLFxyXG5cdFwiYmx1ZVwiOiBbMCwgMCwgMjU1XSxcclxuXHRcImJsdWV2aW9sZXRcIjogWzEzOCwgNDMsIDIyNl0sXHJcblx0XCJicm93blwiOiBbMTY1LCA0MiwgNDJdLFxyXG5cdFwiYnVybHl3b29kXCI6IFsyMjIsIDE4NCwgMTM1XSxcclxuXHRcImNhZGV0Ymx1ZVwiOiBbOTUsIDE1OCwgMTYwXSxcclxuXHRcImNoYXJ0cmV1c2VcIjogWzEyNywgMjU1LCAwXSxcclxuXHRcImNob2NvbGF0ZVwiOiBbMjEwLCAxMDUsIDMwXSxcclxuXHRcImNvcmFsXCI6IFsyNTUsIDEyNywgODBdLFxyXG5cdFwiY29ybmZsb3dlcmJsdWVcIjogWzEwMCwgMTQ5LCAyMzddLFxyXG5cdFwiY29ybnNpbGtcIjogWzI1NSwgMjQ4LCAyMjBdLFxyXG5cdFwiY3JpbXNvblwiOiBbMjIwLCAyMCwgNjBdLFxyXG5cdFwiY3lhblwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiZGFya2JsdWVcIjogWzAsIDAsIDEzOV0sXHJcblx0XCJkYXJrY3lhblwiOiBbMCwgMTM5LCAxMzldLFxyXG5cdFwiZGFya2dvbGRlbnJvZFwiOiBbMTg0LCAxMzQsIDExXSxcclxuXHRcImRhcmtncmF5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtncmVlblwiOiBbMCwgMTAwLCAwXSxcclxuXHRcImRhcmtncmV5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtraGFraVwiOiBbMTg5LCAxODMsIDEwN10sXHJcblx0XCJkYXJrbWFnZW50YVwiOiBbMTM5LCAwLCAxMzldLFxyXG5cdFwiZGFya29saXZlZ3JlZW5cIjogWzg1LCAxMDcsIDQ3XSxcclxuXHRcImRhcmtvcmFuZ2VcIjogWzI1NSwgMTQwLCAwXSxcclxuXHRcImRhcmtvcmNoaWRcIjogWzE1MywgNTAsIDIwNF0sXHJcblx0XCJkYXJrcmVkXCI6IFsxMzksIDAsIDBdLFxyXG5cdFwiZGFya3NhbG1vblwiOiBbMjMzLCAxNTAsIDEyMl0sXHJcblx0XCJkYXJrc2VhZ3JlZW5cIjogWzE0MywgMTg4LCAxNDNdLFxyXG5cdFwiZGFya3NsYXRlYmx1ZVwiOiBbNzIsIDYxLCAxMzldLFxyXG5cdFwiZGFya3NsYXRlZ3JheVwiOiBbNDcsIDc5LCA3OV0sXHJcblx0XCJkYXJrc2xhdGVncmV5XCI6IFs0NywgNzksIDc5XSxcclxuXHRcImRhcmt0dXJxdW9pc2VcIjogWzAsIDIwNiwgMjA5XSxcclxuXHRcImRhcmt2aW9sZXRcIjogWzE0OCwgMCwgMjExXSxcclxuXHRcImRlZXBwaW5rXCI6IFsyNTUsIDIwLCAxNDddLFxyXG5cdFwiZGVlcHNreWJsdWVcIjogWzAsIDE5MSwgMjU1XSxcclxuXHRcImRpbWdyYXlcIjogWzEwNSwgMTA1LCAxMDVdLFxyXG5cdFwiZGltZ3JleVwiOiBbMTA1LCAxMDUsIDEwNV0sXHJcblx0XCJkb2RnZXJibHVlXCI6IFszMCwgMTQ0LCAyNTVdLFxyXG5cdFwiZmlyZWJyaWNrXCI6IFsxNzgsIDM0LCAzNF0sXHJcblx0XCJmbG9yYWx3aGl0ZVwiOiBbMjU1LCAyNTAsIDI0MF0sXHJcblx0XCJmb3Jlc3RncmVlblwiOiBbMzQsIDEzOSwgMzRdLFxyXG5cdFwiZnVjaHNpYVwiOiBbMjU1LCAwLCAyNTVdLFxyXG5cdFwiZ2FpbnNib3JvXCI6IFsyMjAsIDIyMCwgMjIwXSxcclxuXHRcImdob3N0d2hpdGVcIjogWzI0OCwgMjQ4LCAyNTVdLFxyXG5cdFwiZ29sZFwiOiBbMjU1LCAyMTUsIDBdLFxyXG5cdFwiZ29sZGVucm9kXCI6IFsyMTgsIDE2NSwgMzJdLFxyXG5cdFwiZ3JheVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJncmVlblwiOiBbMCwgMTI4LCAwXSxcclxuXHRcImdyZWVueWVsbG93XCI6IFsxNzMsIDI1NSwgNDddLFxyXG5cdFwiZ3JleVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJob25leWRld1wiOiBbMjQwLCAyNTUsIDI0MF0sXHJcblx0XCJob3RwaW5rXCI6IFsyNTUsIDEwNSwgMTgwXSxcclxuXHRcImluZGlhbnJlZFwiOiBbMjA1LCA5MiwgOTJdLFxyXG5cdFwiaW5kaWdvXCI6IFs3NSwgMCwgMTMwXSxcclxuXHRcIml2b3J5XCI6IFsyNTUsIDI1NSwgMjQwXSxcclxuXHRcImtoYWtpXCI6IFsyNDAsIDIzMCwgMTQwXSxcclxuXHRcImxhdmVuZGVyXCI6IFsyMzAsIDIzMCwgMjUwXSxcclxuXHRcImxhdmVuZGVyYmx1c2hcIjogWzI1NSwgMjQwLCAyNDVdLFxyXG5cdFwibGF3bmdyZWVuXCI6IFsxMjQsIDI1MiwgMF0sXHJcblx0XCJsZW1vbmNoaWZmb25cIjogWzI1NSwgMjUwLCAyMDVdLFxyXG5cdFwibGlnaHRibHVlXCI6IFsxNzMsIDIxNiwgMjMwXSxcclxuXHRcImxpZ2h0Y29yYWxcIjogWzI0MCwgMTI4LCAxMjhdLFxyXG5cdFwibGlnaHRjeWFuXCI6IFsyMjQsIDI1NSwgMjU1XSxcclxuXHRcImxpZ2h0Z29sZGVucm9keWVsbG93XCI6IFsyNTAsIDI1MCwgMjEwXSxcclxuXHRcImxpZ2h0Z3JheVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodGdyZWVuXCI6IFsxNDQsIDIzOCwgMTQ0XSxcclxuXHRcImxpZ2h0Z3JleVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodHBpbmtcIjogWzI1NSwgMTgyLCAxOTNdLFxyXG5cdFwibGlnaHRzYWxtb25cIjogWzI1NSwgMTYwLCAxMjJdLFxyXG5cdFwibGlnaHRzZWFncmVlblwiOiBbMzIsIDE3OCwgMTcwXSxcclxuXHRcImxpZ2h0c2t5Ymx1ZVwiOiBbMTM1LCAyMDYsIDI1MF0sXHJcblx0XCJsaWdodHNsYXRlZ3JheVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHNsYXRlZ3JleVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHN0ZWVsYmx1ZVwiOiBbMTc2LCAxOTYsIDIyMl0sXHJcblx0XCJsaWdodHllbGxvd1wiOiBbMjU1LCAyNTUsIDIyNF0sXHJcblx0XCJsaW1lXCI6IFswLCAyNTUsIDBdLFxyXG5cdFwibGltZWdyZWVuXCI6IFs1MCwgMjA1LCA1MF0sXHJcblx0XCJsaW5lblwiOiBbMjUwLCAyNDAsIDIzMF0sXHJcblx0XCJtYWdlbnRhXCI6IFsyNTUsIDAsIDI1NV0sXHJcblx0XCJtYXJvb25cIjogWzEyOCwgMCwgMF0sXHJcblx0XCJtZWRpdW1hcXVhbWFyaW5lXCI6IFsxMDIsIDIwNSwgMTcwXSxcclxuXHRcIm1lZGl1bWJsdWVcIjogWzAsIDAsIDIwNV0sXHJcblx0XCJtZWRpdW1vcmNoaWRcIjogWzE4NiwgODUsIDIxMV0sXHJcblx0XCJtZWRpdW1wdXJwbGVcIjogWzE0NywgMTEyLCAyMTldLFxyXG5cdFwibWVkaXVtc2VhZ3JlZW5cIjogWzYwLCAxNzksIDExM10sXHJcblx0XCJtZWRpdW1zbGF0ZWJsdWVcIjogWzEyMywgMTA0LCAyMzhdLFxyXG5cdFwibWVkaXVtc3ByaW5nZ3JlZW5cIjogWzAsIDI1MCwgMTU0XSxcclxuXHRcIm1lZGl1bXR1cnF1b2lzZVwiOiBbNzIsIDIwOSwgMjA0XSxcclxuXHRcIm1lZGl1bXZpb2xldHJlZFwiOiBbMTk5LCAyMSwgMTMzXSxcclxuXHRcIm1pZG5pZ2h0Ymx1ZVwiOiBbMjUsIDI1LCAxMTJdLFxyXG5cdFwibWludGNyZWFtXCI6IFsyNDUsIDI1NSwgMjUwXSxcclxuXHRcIm1pc3R5cm9zZVwiOiBbMjU1LCAyMjgsIDIyNV0sXHJcblx0XCJtb2NjYXNpblwiOiBbMjU1LCAyMjgsIDE4MV0sXHJcblx0XCJuYXZham93aGl0ZVwiOiBbMjU1LCAyMjIsIDE3M10sXHJcblx0XCJuYXZ5XCI6IFswLCAwLCAxMjhdLFxyXG5cdFwib2xkbGFjZVwiOiBbMjUzLCAyNDUsIDIzMF0sXHJcblx0XCJvbGl2ZVwiOiBbMTI4LCAxMjgsIDBdLFxyXG5cdFwib2xpdmVkcmFiXCI6IFsxMDcsIDE0MiwgMzVdLFxyXG5cdFwib3JhbmdlXCI6IFsyNTUsIDE2NSwgMF0sXHJcblx0XCJvcmFuZ2VyZWRcIjogWzI1NSwgNjksIDBdLFxyXG5cdFwib3JjaGlkXCI6IFsyMTgsIDExMiwgMjE0XSxcclxuXHRcInBhbGVnb2xkZW5yb2RcIjogWzIzOCwgMjMyLCAxNzBdLFxyXG5cdFwicGFsZWdyZWVuXCI6IFsxNTIsIDI1MSwgMTUyXSxcclxuXHRcInBhbGV0dXJxdW9pc2VcIjogWzE3NSwgMjM4LCAyMzhdLFxyXG5cdFwicGFsZXZpb2xldHJlZFwiOiBbMjE5LCAxMTIsIDE0N10sXHJcblx0XCJwYXBheWF3aGlwXCI6IFsyNTUsIDIzOSwgMjEzXSxcclxuXHRcInBlYWNocHVmZlwiOiBbMjU1LCAyMTgsIDE4NV0sXHJcblx0XCJwZXJ1XCI6IFsyMDUsIDEzMywgNjNdLFxyXG5cdFwicGlua1wiOiBbMjU1LCAxOTIsIDIwM10sXHJcblx0XCJwbHVtXCI6IFsyMjEsIDE2MCwgMjIxXSxcclxuXHRcInBvd2RlcmJsdWVcIjogWzE3NiwgMjI0LCAyMzBdLFxyXG5cdFwicHVycGxlXCI6IFsxMjgsIDAsIDEyOF0sXHJcblx0XCJyZWJlY2NhcHVycGxlXCI6IFsxMDIsIDUxLCAxNTNdLFxyXG5cdFwicmVkXCI6IFsyNTUsIDAsIDBdLFxyXG5cdFwicm9zeWJyb3duXCI6IFsxODgsIDE0MywgMTQzXSxcclxuXHRcInJveWFsYmx1ZVwiOiBbNjUsIDEwNSwgMjI1XSxcclxuXHRcInNhZGRsZWJyb3duXCI6IFsxMzksIDY5LCAxOV0sXHJcblx0XCJzYWxtb25cIjogWzI1MCwgMTI4LCAxMTRdLFxyXG5cdFwic2FuZHlicm93blwiOiBbMjQ0LCAxNjQsIDk2XSxcclxuXHRcInNlYWdyZWVuXCI6IFs0NiwgMTM5LCA4N10sXHJcblx0XCJzZWFzaGVsbFwiOiBbMjU1LCAyNDUsIDIzOF0sXHJcblx0XCJzaWVubmFcIjogWzE2MCwgODIsIDQ1XSxcclxuXHRcInNpbHZlclwiOiBbMTkyLCAxOTIsIDE5Ml0sXHJcblx0XCJza3libHVlXCI6IFsxMzUsIDIwNiwgMjM1XSxcclxuXHRcInNsYXRlYmx1ZVwiOiBbMTA2LCA5MCwgMjA1XSxcclxuXHRcInNsYXRlZ3JheVwiOiBbMTEyLCAxMjgsIDE0NF0sXHJcblx0XCJzbGF0ZWdyZXlcIjogWzExMiwgMTI4LCAxNDRdLFxyXG5cdFwic25vd1wiOiBbMjU1LCAyNTAsIDI1MF0sXHJcblx0XCJzcHJpbmdncmVlblwiOiBbMCwgMjU1LCAxMjddLFxyXG5cdFwic3RlZWxibHVlXCI6IFs3MCwgMTMwLCAxODBdLFxyXG5cdFwidGFuXCI6IFsyMTAsIDE4MCwgMTQwXSxcclxuXHRcInRlYWxcIjogWzAsIDEyOCwgMTI4XSxcclxuXHRcInRoaXN0bGVcIjogWzIxNiwgMTkxLCAyMTZdLFxyXG5cdFwidG9tYXRvXCI6IFsyNTUsIDk5LCA3MV0sXHJcblx0XCJ0dXJxdW9pc2VcIjogWzY0LCAyMjQsIDIwOF0sXHJcblx0XCJ2aW9sZXRcIjogWzIzOCwgMTMwLCAyMzhdLFxyXG5cdFwid2hlYXRcIjogWzI0NSwgMjIyLCAxNzldLFxyXG5cdFwid2hpdGVcIjogWzI1NSwgMjU1LCAyNTVdLFxyXG5cdFwid2hpdGVzbW9rZVwiOiBbMjQ1LCAyNDUsIDI0NV0sXHJcblx0XCJ5ZWxsb3dcIjogWzI1NSwgMjU1LCAwXSxcclxuXHRcInllbGxvd2dyZWVuXCI6IFsxNTQsIDIwNSwgNTBdXHJcbn07XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/color-name/index.js\n"); /***/ }), /***/ "./node_modules/color-string/index.js": /*!********************************************!*\ !*** ./node_modules/color-string/index.js ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* MIT license */\nvar colorNames = __webpack_require__(/*! color-name */ \"./node_modules/color-name/index.js\");\nvar swizzle = __webpack_require__(/*! simple-swizzle */ \"./node_modules/simple-swizzle/index.js\");\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29sb3Itc3RyaW5nL2luZGV4LmpzPzFhYjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxpQkFBaUIsbUJBQU8sQ0FBQyxzREFBWTtBQUNyQyxjQUFjLG1CQUFPLENBQUMsOERBQWdCO0FBQ3RDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixJQUFJO0FBQzdCLHdCQUF3QixFQUFFLFdBQVcsRUFBRTtBQUN2QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0YsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBLFlBQVksT0FBTztBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMsSUFBSTtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhCQUE4QixJQUFJO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2NvbG9yLXN0cmluZy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIE1JVCBsaWNlbnNlICovXG52YXIgY29sb3JOYW1lcyA9IHJlcXVpcmUoJ2NvbG9yLW5hbWUnKTtcbnZhciBzd2l6emxlID0gcmVxdWlyZSgnc2ltcGxlLXN3aXp6bGUnKTtcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIHJldmVyc2VOYW1lcyA9IHt9O1xuXG4vLyBjcmVhdGUgYSBsaXN0IG9mIHJldmVyc2UgY29sb3IgbmFtZXNcbmZvciAodmFyIG5hbWUgaW4gY29sb3JOYW1lcykge1xuXHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb2xvck5hbWVzLCBuYW1lKSkge1xuXHRcdHJldmVyc2VOYW1lc1tjb2xvck5hbWVzW25hbWVdXSA9IG5hbWU7XG5cdH1cbn1cblxudmFyIGNzID0gbW9kdWxlLmV4cG9ydHMgPSB7XG5cdHRvOiB7fSxcblx0Z2V0OiB7fVxufTtcblxuY3MuZ2V0ID0gZnVuY3Rpb24gKHN0cmluZykge1xuXHR2YXIgcHJlZml4ID0gc3RyaW5nLnN1YnN0cmluZygwLCAzKS50b0xvd2VyQ2FzZSgpO1xuXHR2YXIgdmFsO1xuXHR2YXIgbW9kZWw7XG5cdHN3aXRjaCAocHJlZml4KSB7XG5cdFx0Y2FzZSAnaHNsJzpcblx0XHRcdHZhbCA9IGNzLmdldC5oc2woc3RyaW5nKTtcblx0XHRcdG1vZGVsID0gJ2hzbCc7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdod2InOlxuXHRcdFx0dmFsID0gY3MuZ2V0Lmh3YihzdHJpbmcpO1xuXHRcdFx0bW9kZWwgPSAnaHdiJztcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHR2YWwgPSBjcy5nZXQucmdiKHN0cmluZyk7XG5cdFx0XHRtb2RlbCA9ICdyZ2InO1xuXHRcdFx0YnJlYWs7XG5cdH1cblxuXHRpZiAoIXZhbCkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0cmV0dXJuIHttb2RlbDogbW9kZWwsIHZhbHVlOiB2YWx9O1xufTtcblxuY3MuZ2V0LnJnYiA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcblx0aWYgKCFzdHJpbmcpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHZhciBhYmJyID0gL14jKFthLWYwLTldezMsNH0pJC9pO1xuXHR2YXIgaGV4ID0gL14jKFthLWYwLTldezZ9KShbYS1mMC05XXsyfSk/JC9pO1xuXHR2YXIgcmdiYSA9IC9ecmdiYT9cXChcXHMqKFsrLV0/XFxkKykoPz1bXFxzLF0pXFxzKig/OixcXHMqKT8oWystXT9cXGQrKSg/PVtcXHMsXSlcXHMqKD86LFxccyopPyhbKy1dP1xcZCspXFxzKig/OlssfFxcL11cXHMqKFsrLV0/W1xcZFxcLl0rKSglPylcXHMqKT9cXCkkLztcblx0dmFyIHBlciA9IC9ecmdiYT9cXChcXHMqKFsrLV0/W1xcZFxcLl0rKVxcJVxccyosP1xccyooWystXT9bXFxkXFwuXSspXFwlXFxzKiw/XFxzKihbKy1dP1tcXGRcXC5dKylcXCVcXHMqKD86Wyx8XFwvXVxccyooWystXT9bXFxkXFwuXSspKCU/KVxccyopP1xcKSQvO1xuXHR2YXIga2V5d29yZCA9IC9eKFxcdyspJC87XG5cblx0dmFyIHJnYiA9IFswLCAwLCAwLCAxXTtcblx0dmFyIG1hdGNoO1xuXHR2YXIgaTtcblx0dmFyIGhleEFscGhhO1xuXG5cdGlmIChtYXRjaCA9IHN0cmluZy5tYXRjaChoZXgpKSB7XG5cdFx0aGV4QWxwaGEgPSBtYXRjaFsyXTtcblx0XHRtYXRjaCA9IG1hdGNoWzFdO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IDM7IGkrKykge1xuXHRcdFx0Ly8gaHR0cHM6Ly9qc3BlcmYuY29tL3NsaWNlLXZzLXN1YnN0ci12cy1zdWJzdHJpbmctbWV0aG9kcy1sb25nLXN0cmluZy8xOVxuXHRcdFx0dmFyIGkyID0gaSAqIDI7XG5cdFx0XHRyZ2JbaV0gPSBwYXJzZUludChtYXRjaC5zbGljZShpMiwgaTIgKyAyKSwgMTYpO1xuXHRcdH1cblxuXHRcdGlmIChoZXhBbHBoYSkge1xuXHRcdFx0cmdiWzNdID0gcGFyc2VJbnQoaGV4QWxwaGEsIDE2KSAvIDI1NTtcblx0XHR9XG5cdH0gZWxzZSBpZiAobWF0Y2ggPSBzdHJpbmcubWF0Y2goYWJicikpIHtcblx0XHRtYXRjaCA9IG1hdGNoWzFdO1xuXHRcdGhleEFscGhhID0gbWF0Y2hbM107XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7XG5cdFx0XHRyZ2JbaV0gPSBwYXJzZUludChtYXRjaFtpXSArIG1hdGNoW2ldLCAxNik7XG5cdFx0fVxuXG5cdFx0aWYgKGhleEFscGhhKSB7XG5cdFx0XHRyZ2JbM10gPSBwYXJzZUludChoZXhBbHBoYSArIGhleEFscGhhLCAxNikgLyAyNTU7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG1hdGNoID0gc3RyaW5nLm1hdGNoKHJnYmEpKSB7XG5cdFx0Zm9yIChpID0gMDsgaSA8IDM7IGkrKykge1xuXHRcdFx0cmdiW2ldID0gcGFyc2VJbnQobWF0Y2hbaSArIDFdLCAwKTtcblx0XHR9XG5cblx0XHRpZiAobWF0Y2hbNF0pIHtcblx0XHRcdGlmIChtYXRjaFs1XSkge1xuXHRcdFx0XHRyZ2JbM10gPSBwYXJzZUZsb2F0KG1hdGNoWzRdKSAqIDAuMDE7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZ2JbM10gPSBwYXJzZUZsb2F0KG1hdGNoWzRdKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBpZiAobWF0Y2ggPSBzdHJpbmcubWF0Y2gocGVyKSkge1xuXHRcdGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHtcblx0XHRcdHJnYltpXSA9IE1hdGgucm91bmQocGFyc2VGbG9hdChtYXRjaFtpICsgMV0pICogMi41NSk7XG5cdFx0fVxuXG5cdFx0aWYgKG1hdGNoWzRdKSB7XG5cdFx0XHRpZiAobWF0Y2hbNV0pIHtcblx0XHRcdFx0cmdiWzNdID0gcGFyc2VGbG9hdChtYXRjaFs0XSkgKiAwLjAxO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmdiWzNdID0gcGFyc2VGbG9hdChtYXRjaFs0XSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG1hdGNoID0gc3RyaW5nLm1hdGNoKGtleXdvcmQpKSB7XG5cdFx0aWYgKG1hdGNoWzFdID09PSAndHJhbnNwYXJlbnQnKSB7XG5cdFx0XHRyZXR1cm4gWzAsIDAsIDAsIDBdO1xuXHRcdH1cblxuXHRcdGlmICghaGFzT3duUHJvcGVydHkuY2FsbChjb2xvck5hbWVzLCBtYXRjaFsxXSkpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdHJnYiA9IGNvbG9yTmFtZXNbbWF0Y2hbMV1dO1xuXHRcdHJnYlszXSA9IDE7XG5cblx0XHRyZXR1cm4gcmdiO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Zm9yIChpID0gMDsgaSA8IDM7IGkrKykge1xuXHRcdHJnYltpXSA9IGNsYW1wKHJnYltpXSwgMCwgMjU1KTtcblx0fVxuXHRyZ2JbM10gPSBjbGFtcChyZ2JbM10sIDAsIDEpO1xuXG5cdHJldHVybiByZ2I7XG59O1xuXG5jcy5nZXQuaHNsID0gZnVuY3Rpb24gKHN0cmluZykge1xuXHRpZiAoIXN0cmluZykge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0dmFyIGhzbCA9IC9eaHNsYT9cXChcXHMqKFsrLV0/KD86XFxkezAsM31cXC4pP1xcZCspKD86ZGVnKT9cXHMqLD9cXHMqKFsrLV0/W1xcZFxcLl0rKSVcXHMqLD9cXHMqKFsrLV0/W1xcZFxcLl0rKSVcXHMqKD86Wyx8XFwvXVxccyooWystXT8oPz1cXC5cXGR8XFxkKSg/OjB8WzEtOV1cXGQqKT8oPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pXFxzKik/XFwpJC87XG5cdHZhciBtYXRjaCA9IHN0cmluZy5tYXRjaChoc2wpO1xuXG5cdGlmIChtYXRjaCkge1xuXHRcdHZhciBhbHBoYSA9IHBhcnNlRmxvYXQobWF0Y2hbNF0pO1xuXHRcdHZhciBoID0gKChwYXJzZUZsb2F0KG1hdGNoWzFdKSAlIDM2MCkgKyAzNjApICUgMzYwO1xuXHRcdHZhciBzID0gY2xhbXAocGFyc2VGbG9hdChtYXRjaFsyXSksIDAsIDEwMCk7XG5cdFx0dmFyIGwgPSBjbGFtcChwYXJzZUZsb2F0KG1hdGNoWzNdKSwgMCwgMTAwKTtcblx0XHR2YXIgYSA9IGNsYW1wKGlzTmFOKGFscGhhKSA/IDEgOiBhbHBoYSwgMCwgMSk7XG5cblx0XHRyZXR1cm4gW2gsIHMsIGwsIGFdO1xuXHR9XG5cblx0cmV0dXJuIG51bGw7XG59O1xuXG5jcy5nZXQuaHdiID0gZnVuY3Rpb24gKHN0cmluZykge1xuXHRpZiAoIXN0cmluZykge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0dmFyIGh3YiA9IC9eaHdiXFwoXFxzKihbKy1dP1xcZHswLDN9KD86XFwuXFxkKyk/KSg/OmRlZyk/XFxzKixcXHMqKFsrLV0/W1xcZFxcLl0rKSVcXHMqLFxccyooWystXT9bXFxkXFwuXSspJVxccyooPzosXFxzKihbKy1dPyg/PVxcLlxcZHxcXGQpKD86MHxbMS05XVxcZCopPyg/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPylcXHMqKT9cXCkkLztcblx0dmFyIG1hdGNoID0gc3RyaW5nLm1hdGNoKGh3Yik7XG5cblx0aWYgKG1hdGNoKSB7XG5cdFx0dmFyIGFscGhhID0gcGFyc2VGbG9hdChtYXRjaFs0XSk7XG5cdFx0dmFyIGggPSAoKHBhcnNlRmxvYXQobWF0Y2hbMV0pICUgMzYwKSArIDM2MCkgJSAzNjA7XG5cdFx0dmFyIHcgPSBjbGFtcChwYXJzZUZsb2F0KG1hdGNoWzJdKSwgMCwgMTAwKTtcblx0XHR2YXIgYiA9IGNsYW1wKHBhcnNlRmxvYXQobWF0Y2hbM10pLCAwLCAxMDApO1xuXHRcdHZhciBhID0gY2xhbXAoaXNOYU4oYWxwaGEpID8gMSA6IGFscGhhLCAwLCAxKTtcblx0XHRyZXR1cm4gW2gsIHcsIGIsIGFdO1xuXHR9XG5cblx0cmV0dXJuIG51bGw7XG59O1xuXG5jcy50by5oZXggPSBmdW5jdGlvbiAoKSB7XG5cdHZhciByZ2JhID0gc3dpenpsZShhcmd1bWVudHMpO1xuXG5cdHJldHVybiAoXG5cdFx0JyMnICtcblx0XHRoZXhEb3VibGUocmdiYVswXSkgK1xuXHRcdGhleERvdWJsZShyZ2JhWzFdKSArXG5cdFx0aGV4RG91YmxlKHJnYmFbMl0pICtcblx0XHQocmdiYVszXSA8IDFcblx0XHRcdD8gKGhleERvdWJsZShNYXRoLnJvdW5kKHJnYmFbM10gKiAyNTUpKSlcblx0XHRcdDogJycpXG5cdCk7XG59O1xuXG5jcy50by5yZ2IgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciByZ2JhID0gc3dpenpsZShhcmd1bWVudHMpO1xuXG5cdHJldHVybiByZ2JhLmxlbmd0aCA8IDQgfHwgcmdiYVszXSA9PT0gMVxuXHRcdD8gJ3JnYignICsgTWF0aC5yb3VuZChyZ2JhWzBdKSArICcsICcgKyBNYXRoLnJvdW5kKHJnYmFbMV0pICsgJywgJyArIE1hdGgucm91bmQocmdiYVsyXSkgKyAnKSdcblx0XHQ6ICdyZ2JhKCcgKyBNYXRoLnJvdW5kKHJnYmFbMF0pICsgJywgJyArIE1hdGgucm91bmQocmdiYVsxXSkgKyAnLCAnICsgTWF0aC5yb3VuZChyZ2JhWzJdKSArICcsICcgKyByZ2JhWzNdICsgJyknO1xufTtcblxuY3MudG8ucmdiLnBlcmNlbnQgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciByZ2JhID0gc3dpenpsZShhcmd1bWVudHMpO1xuXG5cdHZhciByID0gTWF0aC5yb3VuZChyZ2JhWzBdIC8gMjU1ICogMTAwKTtcblx0dmFyIGcgPSBNYXRoLnJvdW5kKHJnYmFbMV0gLyAyNTUgKiAxMDApO1xuXHR2YXIgYiA9IE1hdGgucm91bmQocmdiYVsyXSAvIDI1NSAqIDEwMCk7XG5cblx0cmV0dXJuIHJnYmEubGVuZ3RoIDwgNCB8fCByZ2JhWzNdID09PSAxXG5cdFx0PyAncmdiKCcgKyByICsgJyUsICcgKyBnICsgJyUsICcgKyBiICsgJyUpJ1xuXHRcdDogJ3JnYmEoJyArIHIgKyAnJSwgJyArIGcgKyAnJSwgJyArIGIgKyAnJSwgJyArIHJnYmFbM10gKyAnKSc7XG59O1xuXG5jcy50by5oc2wgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBoc2xhID0gc3dpenpsZShhcmd1bWVudHMpO1xuXHRyZXR1cm4gaHNsYS5sZW5ndGggPCA0IHx8IGhzbGFbM10gPT09IDFcblx0XHQ/ICdoc2woJyArIGhzbGFbMF0gKyAnLCAnICsgaHNsYVsxXSArICclLCAnICsgaHNsYVsyXSArICclKSdcblx0XHQ6ICdoc2xhKCcgKyBoc2xhWzBdICsgJywgJyArIGhzbGFbMV0gKyAnJSwgJyArIGhzbGFbMl0gKyAnJSwgJyArIGhzbGFbM10gKyAnKSc7XG59O1xuXG4vLyBod2IgaXMgYSBiaXQgZGlmZmVyZW50IHRoYW4gcmdiKGEpICYgaHNsKGEpIHNpbmNlIHRoZXJlIGlzIG5vIGFscGhhIHNwZWNpZmljIHN5bnRheFxuLy8gKGh3YiBoYXZlIGFscGhhIG9wdGlvbmFsICYgMSBpcyBkZWZhdWx0IHZhbHVlKVxuY3MudG8uaHdiID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgaHdiYSA9IHN3aXp6bGUoYXJndW1lbnRzKTtcblxuXHR2YXIgYSA9ICcnO1xuXHRpZiAoaHdiYS5sZW5ndGggPj0gNCAmJiBod2JhWzNdICE9PSAxKSB7XG5cdFx0YSA9ICcsICcgKyBod2JhWzNdO1xuXHR9XG5cblx0cmV0dXJuICdod2IoJyArIGh3YmFbMF0gKyAnLCAnICsgaHdiYVsxXSArICclLCAnICsgaHdiYVsyXSArICclJyArIGEgKyAnKSc7XG59O1xuXG5jcy50by5rZXl3b3JkID0gZnVuY3Rpb24gKHJnYikge1xuXHRyZXR1cm4gcmV2ZXJzZU5hbWVzW3JnYi5zbGljZSgwLCAzKV07XG59O1xuXG4vLyBoZWxwZXJzXG5mdW5jdGlvbiBjbGFtcChudW0sIG1pbiwgbWF4KSB7XG5cdHJldHVybiBNYXRoLm1pbihNYXRoLm1heChtaW4sIG51bSksIG1heCk7XG59XG5cbmZ1bmN0aW9uIGhleERvdWJsZShudW0pIHtcblx0dmFyIHN0ciA9IE1hdGgucm91bmQobnVtKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblx0cmV0dXJuIChzdHIubGVuZ3RoIDwgMikgPyAnMCcgKyBzdHIgOiBzdHI7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/color-string/index.js\n"); /***/ }), /***/ "./node_modules/color/index.js": /*!*************************************!*\ !*** ./node_modules/color/index.js ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar colorString = __webpack_require__(/*! color-string */ \"./node_modules/color-string/index.js\");\nvar convert = __webpack_require__(/*! color-convert */ \"./node_modules/color-convert/index.js\");\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29sb3IvaW5kZXguanM/NjkyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0IsbUJBQU8sQ0FBQywwREFBYztBQUN4QyxjQUFjLG1CQUFPLENBQUMsNERBQWU7O0FBRXJDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLG1CQUFtQjtBQUNoQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxjQUFjO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsY0FBYztBQUMvQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxRUFBcUUsa0NBQWtDLEVBQUU7O0FBRXpHO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLGdCQUFnQjtBQUNqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0IsWUFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2NvbG9yL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY29sb3JTdHJpbmcgPSByZXF1aXJlKCdjb2xvci1zdHJpbmcnKTtcbnZhciBjb252ZXJ0ID0gcmVxdWlyZSgnY29sb3ItY29udmVydCcpO1xuXG52YXIgX3NsaWNlID0gW10uc2xpY2U7XG5cbnZhciBza2lwcGVkTW9kZWxzID0gW1xuXHQvLyB0byBiZSBob25lc3QsIEkgZG9uJ3QgcmVhbGx5IGZlZWwgbGlrZSBrZXl3b3JkIGJlbG9uZ3MgaW4gY29sb3IgY29udmVydCwgYnV0IGVoLlxuXHQna2V5d29yZCcsXG5cblx0Ly8gZ3JheSBjb25mbGljdHMgd2l0aCBzb21lIG1ldGhvZCBuYW1lcywgYW5kIGhhcyBpdHMgb3duIG1ldGhvZCBkZWZpbmVkLlxuXHQnZ3JheScsXG5cblx0Ly8gc2hvdWxkbid0IHJlYWxseSBiZSBpbiBjb2xvci1jb252ZXJ0IGVpdGhlci4uLlxuXHQnaGV4J1xuXTtcblxudmFyIGhhc2hlZE1vZGVsS2V5cyA9IHt9O1xuT2JqZWN0LmtleXMoY29udmVydCkuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcblx0aGFzaGVkTW9kZWxLZXlzW19zbGljZS5jYWxsKGNvbnZlcnRbbW9kZWxdLmxhYmVscykuc29ydCgpLmpvaW4oJycpXSA9IG1vZGVsO1xufSk7XG5cbnZhciBsaW1pdGVycyA9IHt9O1xuXG5mdW5jdGlvbiBDb2xvcihvYmosIG1vZGVsKSB7XG5cdGlmICghKHRoaXMgaW5zdGFuY2VvZiBDb2xvcikpIHtcblx0XHRyZXR1cm4gbmV3IENvbG9yKG9iaiwgbW9kZWwpO1xuXHR9XG5cblx0aWYgKG1vZGVsICYmIG1vZGVsIGluIHNraXBwZWRNb2RlbHMpIHtcblx0XHRtb2RlbCA9IG51bGw7XG5cdH1cblxuXHRpZiAobW9kZWwgJiYgIShtb2RlbCBpbiBjb252ZXJ0KSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignVW5rbm93biBtb2RlbDogJyArIG1vZGVsKTtcblx0fVxuXG5cdHZhciBpO1xuXHR2YXIgY2hhbm5lbHM7XG5cblx0aWYgKG9iaiA9PSBudWxsKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXEtbnVsbCxlcWVxZXFcblx0XHR0aGlzLm1vZGVsID0gJ3JnYic7XG5cdFx0dGhpcy5jb2xvciA9IFswLCAwLCAwXTtcblx0XHR0aGlzLnZhbHBoYSA9IDE7XG5cdH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgQ29sb3IpIHtcblx0XHR0aGlzLm1vZGVsID0gb2JqLm1vZGVsO1xuXHRcdHRoaXMuY29sb3IgPSBvYmouY29sb3Iuc2xpY2UoKTtcblx0XHR0aGlzLnZhbHBoYSA9IG9iai52YWxwaGE7XG5cdH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcblx0XHR2YXIgcmVzdWx0ID0gY29sb3JTdHJpbmcuZ2V0KG9iaik7XG5cdFx0aWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcGFyc2UgY29sb3IgZnJvbSBzdHJpbmc6ICcgKyBvYmopO1xuXHRcdH1cblxuXHRcdHRoaXMubW9kZWwgPSByZXN1bHQubW9kZWw7XG5cdFx0Y2hhbm5lbHMgPSBjb252ZXJ0W3RoaXMubW9kZWxdLmNoYW5uZWxzO1xuXHRcdHRoaXMuY29sb3IgPSByZXN1bHQudmFsdWUuc2xpY2UoMCwgY2hhbm5lbHMpO1xuXHRcdHRoaXMudmFscGhhID0gdHlwZW9mIHJlc3VsdC52YWx1ZVtjaGFubmVsc10gPT09ICdudW1iZXInID8gcmVzdWx0LnZhbHVlW2NoYW5uZWxzXSA6IDE7XG5cdH0gZWxzZSBpZiAob2JqLmxlbmd0aCkge1xuXHRcdHRoaXMubW9kZWwgPSBtb2RlbCB8fCAncmdiJztcblx0XHRjaGFubmVscyA9IGNvbnZlcnRbdGhpcy5tb2RlbF0uY2hhbm5lbHM7XG5cdFx0dmFyIG5ld0FyciA9IF9zbGljZS5jYWxsKG9iaiwgMCwgY2hhbm5lbHMpO1xuXHRcdHRoaXMuY29sb3IgPSB6ZXJvQXJyYXkobmV3QXJyLCBjaGFubmVscyk7XG5cdFx0dGhpcy52YWxwaGEgPSB0eXBlb2Ygb2JqW2NoYW5uZWxzXSA9PT0gJ251bWJlcicgPyBvYmpbY2hhbm5lbHNdIDogMTtcblx0fSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnbnVtYmVyJykge1xuXHRcdC8vIHRoaXMgaXMgYWx3YXlzIFJHQiAtIGNhbiBiZSBjb252ZXJ0ZWQgbGF0ZXIgb24uXG5cdFx0b2JqICY9IDB4RkZGRkZGO1xuXHRcdHRoaXMubW9kZWwgPSAncmdiJztcblx0XHR0aGlzLmNvbG9yID0gW1xuXHRcdFx0KG9iaiA+PiAxNikgJiAweEZGLFxuXHRcdFx0KG9iaiA+PiA4KSAmIDB4RkYsXG5cdFx0XHRvYmogJiAweEZGXG5cdFx0XTtcblx0XHR0aGlzLnZhbHBoYSA9IDE7XG5cdH0gZWxzZSB7XG5cdFx0dGhpcy52YWxwaGEgPSAxO1xuXG5cdFx0dmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuXHRcdGlmICgnYWxwaGEnIGluIG9iaikge1xuXHRcdFx0a2V5cy5zcGxpY2Uoa2V5cy5pbmRleE9mKCdhbHBoYScpLCAxKTtcblx0XHRcdHRoaXMudmFscGhhID0gdHlwZW9mIG9iai5hbHBoYSA9PT0gJ251bWJlcicgPyBvYmouYWxwaGEgOiAwO1xuXHRcdH1cblxuXHRcdHZhciBoYXNoZWRLZXlzID0ga2V5cy5zb3J0KCkuam9pbignJyk7XG5cdFx0aWYgKCEoaGFzaGVkS2V5cyBpbiBoYXNoZWRNb2RlbEtleXMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBwYXJzZSBjb2xvciBmcm9tIG9iamVjdDogJyArIEpTT04uc3RyaW5naWZ5KG9iaikpO1xuXHRcdH1cblxuXHRcdHRoaXMubW9kZWwgPSBoYXNoZWRNb2RlbEtleXNbaGFzaGVkS2V5c107XG5cblx0XHR2YXIgbGFiZWxzID0gY29udmVydFt0aGlzLm1vZGVsXS5sYWJlbHM7XG5cdFx0dmFyIGNvbG9yID0gW107XG5cdFx0Zm9yIChpID0gMDsgaSA8IGxhYmVscy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29sb3IucHVzaChvYmpbbGFiZWxzW2ldXSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5jb2xvciA9IHplcm9BcnJheShjb2xvcik7XG5cdH1cblxuXHQvLyBwZXJmb3JtIGxpbWl0YXRpb25zIChjbGFtcGluZywgZXRjLilcblx0aWYgKGxpbWl0ZXJzW3RoaXMubW9kZWxdKSB7XG5cdFx0Y2hhbm5lbHMgPSBjb252ZXJ0W3RoaXMubW9kZWxdLmNoYW5uZWxzO1xuXHRcdGZvciAoaSA9IDA7IGkgPCBjaGFubmVsczsgaSsrKSB7XG5cdFx0XHR2YXIgbGltaXQgPSBsaW1pdGVyc1t0aGlzLm1vZGVsXVtpXTtcblx0XHRcdGlmIChsaW1pdCkge1xuXHRcdFx0XHR0aGlzLmNvbG9yW2ldID0gbGltaXQodGhpcy5jb2xvcltpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0dGhpcy52YWxwaGEgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCB0aGlzLnZhbHBoYSkpO1xuXG5cdGlmIChPYmplY3QuZnJlZXplKSB7XG5cdFx0T2JqZWN0LmZyZWV6ZSh0aGlzKTtcblx0fVxufVxuXG5Db2xvci5wcm90b3R5cGUgPSB7XG5cdHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc3RyaW5nKCk7XG5cdH0sXG5cblx0dG9KU09OOiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIHRoaXNbdGhpcy5tb2RlbF0oKTtcblx0fSxcblxuXHRzdHJpbmc6IGZ1bmN0aW9uIChwbGFjZXMpIHtcblx0XHR2YXIgc2VsZiA9IHRoaXMubW9kZWwgaW4gY29sb3JTdHJpbmcudG8gPyB0aGlzIDogdGhpcy5yZ2IoKTtcblx0XHRzZWxmID0gc2VsZi5yb3VuZCh0eXBlb2YgcGxhY2VzID09PSAnbnVtYmVyJyA/IHBsYWNlcyA6IDEpO1xuXHRcdHZhciBhcmdzID0gc2VsZi52YWxwaGEgPT09IDEgPyBzZWxmLmNvbG9yIDogc2VsZi5jb2xvci5jb25jYXQodGhpcy52YWxwaGEpO1xuXHRcdHJldHVybiBjb2xvclN0cmluZy50b1tzZWxmLm1vZGVsXShhcmdzKTtcblx0fSxcblxuXHRwZXJjZW50U3RyaW5nOiBmdW5jdGlvbiAocGxhY2VzKSB7XG5cdFx0dmFyIHNlbGYgPSB0aGlzLnJnYigpLnJvdW5kKHR5cGVvZiBwbGFjZXMgPT09ICdudW1iZXInID8gcGxhY2VzIDogMSk7XG5cdFx0dmFyIGFyZ3MgPSBzZWxmLnZhbHBoYSA9PT0gMSA/IHNlbGYuY29sb3IgOiBzZWxmLmNvbG9yLmNvbmNhdCh0aGlzLnZhbHBoYSk7XG5cdFx0cmV0dXJuIGNvbG9yU3RyaW5nLnRvLnJnYi5wZXJjZW50KGFyZ3MpO1xuXHR9LFxuXG5cdGFycmF5OiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIHRoaXMudmFscGhhID09PSAxID8gdGhpcy5jb2xvci5zbGljZSgpIDogdGhpcy5jb2xvci5jb25jYXQodGhpcy52YWxwaGEpO1xuXHR9LFxuXG5cdG9iamVjdDogZnVuY3Rpb24gKCkge1xuXHRcdHZhciByZXN1bHQgPSB7fTtcblx0XHR2YXIgY2hhbm5lbHMgPSBjb252ZXJ0W3RoaXMubW9kZWxdLmNoYW5uZWxzO1xuXHRcdHZhciBsYWJlbHMgPSBjb252ZXJ0W3RoaXMubW9kZWxdLmxhYmVscztcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgY2hhbm5lbHM7IGkrKykge1xuXHRcdFx0cmVzdWx0W2xhYmVsc1tpXV0gPSB0aGlzLmNvbG9yW2ldO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnZhbHBoYSAhPT0gMSkge1xuXHRcdFx0cmVzdWx0LmFscGhhID0gdGhpcy52YWxwaGE7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSxcblxuXHR1bml0QXJyYXk6IGZ1bmN0aW9uICgpIHtcblx0XHR2YXIgcmdiID0gdGhpcy5yZ2IoKS5jb2xvcjtcblx0XHRyZ2JbMF0gLz0gMjU1O1xuXHRcdHJnYlsxXSAvPSAyNTU7XG5cdFx0cmdiWzJdIC89IDI1NTtcblxuXHRcdGlmICh0aGlzLnZhbHBoYSAhPT0gMSkge1xuXHRcdFx0cmdiLnB1c2godGhpcy52YWxwaGEpO1xuXHRcdH1cblxuXHRcdHJldHVybiByZ2I7XG5cdH0sXG5cblx0dW5pdE9iamVjdDogZnVuY3Rpb24gKCkge1xuXHRcdHZhciByZ2IgPSB0aGlzLnJnYigpLm9iamVjdCgpO1xuXHRcdHJnYi5yIC89IDI1NTtcblx0XHRyZ2IuZyAvPSAyNTU7XG5cdFx0cmdiLmIgLz0gMjU1O1xuXG5cdFx0aWYgKHRoaXMudmFscGhhICE9PSAxKSB7XG5cdFx0XHRyZ2IuYWxwaGEgPSB0aGlzLnZhbHBoYTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmdiO1xuXHR9LFxuXG5cdHJvdW5kOiBmdW5jdGlvbiAocGxhY2VzKSB7XG5cdFx0cGxhY2VzID0gTWF0aC5tYXgocGxhY2VzIHx8IDAsIDApO1xuXHRcdHJldHVybiBuZXcgQ29sb3IodGhpcy5jb2xvci5tYXAocm91bmRUb1BsYWNlKHBsYWNlcykpLmNvbmNhdCh0aGlzLnZhbHBoYSksIHRoaXMubW9kZWwpO1xuXHR9LFxuXG5cdGFscGhhOiBmdW5jdGlvbiAodmFsKSB7XG5cdFx0aWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBuZXcgQ29sb3IodGhpcy5jb2xvci5jb25jYXQoTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgdmFsKSkpLCB0aGlzLm1vZGVsKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy52YWxwaGE7XG5cdH0sXG5cblx0Ly8gcmdiXG5cdHJlZDogZ2V0c2V0KCdyZ2InLCAwLCBtYXhmbigyNTUpKSxcblx0Z3JlZW46IGdldHNldCgncmdiJywgMSwgbWF4Zm4oMjU1KSksXG5cdGJsdWU6IGdldHNldCgncmdiJywgMiwgbWF4Zm4oMjU1KSksXG5cblx0aHVlOiBnZXRzZXQoWydoc2wnLCAnaHN2JywgJ2hzbCcsICdod2InLCAnaGNnJ10sIDAsIGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuICgodmFsICUgMzYwKSArIDM2MCkgJSAzNjA7IH0pLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGJyYWNlLXN0eWxlXG5cblx0c2F0dXJhdGlvbmw6IGdldHNldCgnaHNsJywgMSwgbWF4Zm4oMTAwKSksXG5cdGxpZ2h0bmVzczogZ2V0c2V0KCdoc2wnLCAyLCBtYXhmbigxMDApKSxcblxuXHRzYXR1cmF0aW9udjogZ2V0c2V0KCdoc3YnLCAxLCBtYXhmbigxMDApKSxcblx0dmFsdWU6IGdldHNldCgnaHN2JywgMiwgbWF4Zm4oMTAwKSksXG5cblx0Y2hyb21hOiBnZXRzZXQoJ2hjZycsIDEsIG1heGZuKDEwMCkpLFxuXHRncmF5OiBnZXRzZXQoJ2hjZycsIDIsIG1heGZuKDEwMCkpLFxuXG5cdHdoaXRlOiBnZXRzZXQoJ2h3YicsIDEsIG1heGZuKDEwMCkpLFxuXHR3YmxhY2s6IGdldHNldCgnaHdiJywgMiwgbWF4Zm4oMTAwKSksXG5cblx0Y3lhbjogZ2V0c2V0KCdjbXlrJywgMCwgbWF4Zm4oMTAwKSksXG5cdG1hZ2VudGE6IGdldHNldCgnY215aycsIDEsIG1heGZuKDEwMCkpLFxuXHR5ZWxsb3c6IGdldHNldCgnY215aycsIDIsIG1heGZuKDEwMCkpLFxuXHRibGFjazogZ2V0c2V0KCdjbXlrJywgMywgbWF4Zm4oMTAwKSksXG5cblx0eDogZ2V0c2V0KCd4eXonLCAwLCBtYXhmbigxMDApKSxcblx0eTogZ2V0c2V0KCd4eXonLCAxLCBtYXhmbigxMDApKSxcblx0ejogZ2V0c2V0KCd4eXonLCAyLCBtYXhmbigxMDApKSxcblxuXHRsOiBnZXRzZXQoJ2xhYicsIDAsIG1heGZuKDEwMCkpLFxuXHRhOiBnZXRzZXQoJ2xhYicsIDEpLFxuXHRiOiBnZXRzZXQoJ2xhYicsIDIpLFxuXG5cdGtleXdvcmQ6IGZ1bmN0aW9uICh2YWwpIHtcblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIG5ldyBDb2xvcih2YWwpO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb252ZXJ0W3RoaXMubW9kZWxdLmtleXdvcmQodGhpcy5jb2xvcik7XG5cdH0sXG5cblx0aGV4OiBmdW5jdGlvbiAodmFsKSB7XG5cdFx0aWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBuZXcgQ29sb3IodmFsKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gY29sb3JTdHJpbmcudG8uaGV4KHRoaXMucmdiKCkucm91bmQoKS5jb2xvcik7XG5cdH0sXG5cblx0cmdiTnVtYmVyOiBmdW5jdGlvbiAoKSB7XG5cdFx0dmFyIHJnYiA9IHRoaXMucmdiKCkuY29sb3I7XG5cdFx0cmV0dXJuICgocmdiWzBdICYgMHhGRikgPDwgMTYpIHwgKChyZ2JbMV0gJiAweEZGKSA8PCA4KSB8IChyZ2JbMl0gJiAweEZGKTtcblx0fSxcblxuXHRsdW1pbm9zaXR5OiBmdW5jdGlvbiAoKSB7XG5cdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvV0NBRzIwLyNyZWxhdGl2ZWx1bWluYW5jZWRlZlxuXHRcdHZhciByZ2IgPSB0aGlzLnJnYigpLmNvbG9yO1xuXG5cdFx0dmFyIGx1bSA9IFtdO1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmdiLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgY2hhbiA9IHJnYltpXSAvIDI1NTtcblx0XHRcdGx1bVtpXSA9IChjaGFuIDw9IDAuMDM5MjgpID8gY2hhbiAvIDEyLjkyIDogTWF0aC5wb3coKChjaGFuICsgMC4wNTUpIC8gMS4wNTUpLCAyLjQpO1xuXHRcdH1cblxuXHRcdHJldHVybiAwLjIxMjYgKiBsdW1bMF0gKyAwLjcxNTIgKiBsdW1bMV0gKyAwLjA3MjIgKiBsdW1bMl07XG5cdH0sXG5cblx0Y29udHJhc3Q6IGZ1bmN0aW9uIChjb2xvcjIpIHtcblx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAvI2NvbnRyYXN0LXJhdGlvZGVmXG5cdFx0dmFyIGx1bTEgPSB0aGlzLmx1bWlub3NpdHkoKTtcblx0XHR2YXIgbHVtMiA9IGNvbG9yMi5sdW1pbm9zaXR5KCk7XG5cblx0XHRpZiAobHVtMSA+IGx1bTIpIHtcblx0XHRcdHJldHVybiAobHVtMSArIDAuMDUpIC8gKGx1bTIgKyAwLjA1KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKGx1bTIgKyAwLjA1KSAvIChsdW0xICsgMC4wNSk7XG5cdH0sXG5cblx0bGV2ZWw6IGZ1bmN0aW9uIChjb2xvcjIpIHtcblx0XHR2YXIgY29udHJhc3RSYXRpbyA9IHRoaXMuY29udHJhc3QoY29sb3IyKTtcblx0XHRpZiAoY29udHJhc3RSYXRpbyA+PSA3LjEpIHtcblx0XHRcdHJldHVybiAnQUFBJztcblx0XHR9XG5cblx0XHRyZXR1cm4gKGNvbnRyYXN0UmF0aW8gPj0gNC41KSA/ICdBQScgOiAnJztcblx0fSxcblxuXHRpc0Rhcms6IGZ1bmN0aW9uICgpIHtcblx0XHQvLyBZSVEgZXF1YXRpb24gZnJvbSBodHRwOi8vMjR3YXlzLm9yZy8yMDEwL2NhbGN1bGF0aW5nLWNvbG9yLWNvbnRyYXN0XG5cdFx0dmFyIHJnYiA9IHRoaXMucmdiKCkuY29sb3I7XG5cdFx0dmFyIHlpcSA9IChyZ2JbMF0gKiAyOTkgKyByZ2JbMV0gKiA1ODcgKyByZ2JbMl0gKiAxMTQpIC8gMTAwMDtcblx0XHRyZXR1cm4geWlxIDwgMTI4O1xuXHR9LFxuXG5cdGlzTGlnaHQ6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gIXRoaXMuaXNEYXJrKCk7XG5cdH0sXG5cblx0bmVnYXRlOiBmdW5jdGlvbiAoKSB7XG5cdFx0dmFyIHJnYiA9IHRoaXMucmdiKCk7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHtcblx0XHRcdHJnYi5jb2xvcltpXSA9IDI1NSAtIHJnYi5jb2xvcltpXTtcblx0XHR9XG5cdFx0cmV0dXJuIHJnYjtcblx0fSxcblxuXHRsaWdodGVuOiBmdW5jdGlvbiAocmF0aW8pIHtcblx0XHR2YXIgaHNsID0gdGhpcy5oc2woKTtcblx0XHRoc2wuY29sb3JbMl0gKz0gaHNsLmNvbG9yWzJdICogcmF0aW87XG5cdFx0cmV0dXJuIGhzbDtcblx0fSxcblxuXHRkYXJrZW46IGZ1bmN0aW9uIChyYXRpbykge1xuXHRcdHZhciBoc2wgPSB0aGlzLmhzbCgpO1xuXHRcdGhzbC5jb2xvclsyXSAtPSBoc2wuY29sb3JbMl0gKiByYXRpbztcblx0XHRyZXR1cm4gaHNsO1xuXHR9LFxuXG5cdHNhdHVyYXRlOiBmdW5jdGlvbiAocmF0aW8pIHtcblx0XHR2YXIgaHNsID0gdGhpcy5oc2woKTtcblx0XHRoc2wuY29sb3JbMV0gKz0gaHNsLmNvbG9yWzFdICogcmF0aW87XG5cdFx0cmV0dXJuIGhzbDtcblx0fSxcblxuXHRkZXNhdHVyYXRlOiBmdW5jdGlvbiAocmF0aW8pIHtcblx0XHR2YXIgaHNsID0gdGhpcy5oc2woKTtcblx0XHRoc2wuY29sb3JbMV0gLT0gaHNsLmNvbG9yWzFdICogcmF0aW87XG5cdFx0cmV0dXJuIGhzbDtcblx0fSxcblxuXHR3aGl0ZW46IGZ1bmN0aW9uIChyYXRpbykge1xuXHRcdHZhciBod2IgPSB0aGlzLmh3YigpO1xuXHRcdGh3Yi5jb2xvclsxXSArPSBod2IuY29sb3JbMV0gKiByYXRpbztcblx0XHRyZXR1cm4gaHdiO1xuXHR9LFxuXG5cdGJsYWNrZW46IGZ1bmN0aW9uIChyYXRpbykge1xuXHRcdHZhciBod2IgPSB0aGlzLmh3YigpO1xuXHRcdGh3Yi5jb2xvclsyXSArPSBod2IuY29sb3JbMl0gKiByYXRpbztcblx0XHRyZXR1cm4gaHdiO1xuXHR9LFxuXG5cdGdyYXlzY2FsZTogZnVuY3Rpb24gKCkge1xuXHRcdC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR3JheXNjYWxlI0NvbnZlcnRpbmdfY29sb3JfdG9fZ3JheXNjYWxlXG5cdFx0dmFyIHJnYiA9IHRoaXMucmdiKCkuY29sb3I7XG5cdFx0dmFyIHZhbCA9IHJnYlswXSAqIDAuMyArIHJnYlsxXSAqIDAuNTkgKyByZ2JbMl0gKiAwLjExO1xuXHRcdHJldHVybiBDb2xvci5yZ2IodmFsLCB2YWwsIHZhbCk7XG5cdH0sXG5cblx0ZmFkZTogZnVuY3Rpb24gKHJhdGlvKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWxwaGEodGhpcy52YWxwaGEgLSAodGhpcy52YWxwaGEgKiByYXRpbykpO1xuXHR9LFxuXG5cdG9wYXF1ZXI6IGZ1bmN0aW9uIChyYXRpbykge1xuXHRcdHJldHVybiB0aGlzLmFscGhhKHRoaXMudmFscGhhICsgKHRoaXMudmFscGhhICogcmF0aW8pKTtcblx0fSxcblxuXHRyb3RhdGU6IGZ1bmN0aW9uIChkZWdyZWVzKSB7XG5cdFx0dmFyIGhzbCA9IHRoaXMuaHNsKCk7XG5cdFx0dmFyIGh1ZSA9IGhzbC5jb2xvclswXTtcblx0XHRodWUgPSAoaHVlICsgZGVncmVlcykgJSAzNjA7XG5cdFx0aHVlID0gaHVlIDwgMCA/IDM2MCArIGh1ZSA6IGh1ZTtcblx0XHRoc2wuY29sb3JbMF0gPSBodWU7XG5cdFx0cmV0dXJuIGhzbDtcblx0fSxcblxuXHRtaXg6IGZ1bmN0aW9uIChtaXhpbkNvbG9yLCB3ZWlnaHQpIHtcblx0XHQvLyBwb3J0ZWQgZnJvbSBzYXNzIGltcGxlbWVudGF0aW9uIGluIENcblx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy9saWJzYXNzL2Jsb2IvMGU2YjRhMjg1MDA5MjM1NmFhM2VjZTA3YzZiMjQ5ZjAyMjFjYWNlZC9mdW5jdGlvbnMuY3BwI0wyMDlcblx0XHRpZiAoIW1peGluQ29sb3IgfHwgIW1peGluQ29sb3IucmdiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0FyZ3VtZW50IHRvIFwibWl4XCIgd2FzIG5vdCBhIENvbG9yIGluc3RhbmNlLCBidXQgcmF0aGVyIGFuIGluc3RhbmNlIG9mICcgKyB0eXBlb2YgbWl4aW5Db2xvcik7XG5cdFx0fVxuXHRcdHZhciBjb2xvcjEgPSBtaXhpbkNvbG9yLnJnYigpO1xuXHRcdHZhciBjb2xvcjIgPSB0aGlzLnJnYigpO1xuXHRcdHZhciBwID0gd2VpZ2h0ID09PSB1bmRlZmluZWQgPyAwLjUgOiB3ZWlnaHQ7XG5cblx0XHR2YXIgdyA9IDIgKiBwIC0gMTtcblx0XHR2YXIgYSA9IGNvbG9yMS5hbHBoYSgpIC0gY29sb3IyLmFscGhhKCk7XG5cblx0XHR2YXIgdzEgPSAoKCh3ICogYSA9PT0gLTEpID8gdyA6ICh3ICsgYSkgLyAoMSArIHcgKiBhKSkgKyAxKSAvIDIuMDtcblx0XHR2YXIgdzIgPSAxIC0gdzE7XG5cblx0XHRyZXR1cm4gQ29sb3IucmdiKFxuXHRcdFx0XHR3MSAqIGNvbG9yMS5yZWQoKSArIHcyICogY29sb3IyLnJlZCgpLFxuXHRcdFx0XHR3MSAqIGNvbG9yMS5ncmVlbigpICsgdzIgKiBjb2xvcjIuZ3JlZW4oKSxcblx0XHRcdFx0dzEgKiBjb2xvcjEuYmx1ZSgpICsgdzIgKiBjb2xvcjIuYmx1ZSgpLFxuXHRcdFx0XHRjb2xvcjEuYWxwaGEoKSAqIHAgKyBjb2xvcjIuYWxwaGEoKSAqICgxIC0gcCkpO1xuXHR9XG59O1xuXG4vLyBtb2RlbCBjb252ZXJzaW9uIG1ldGhvZHMgYW5kIHN0YXRpYyBjb25zdHJ1Y3RvcnNcbk9iamVjdC5rZXlzKGNvbnZlcnQpLmZvckVhY2goZnVuY3Rpb24gKG1vZGVsKSB7XG5cdGlmIChza2lwcGVkTW9kZWxzLmluZGV4T2YobW9kZWwpICE9PSAtMSkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHZhciBjaGFubmVscyA9IGNvbnZlcnRbbW9kZWxdLmNoYW5uZWxzO1xuXG5cdC8vIGNvbnZlcnNpb24gbWV0aG9kc1xuXHRDb2xvci5wcm90b3R5cGVbbW9kZWxdID0gZnVuY3Rpb24gKCkge1xuXHRcdGlmICh0aGlzLm1vZGVsID09PSBtb2RlbCkge1xuXHRcdFx0cmV0dXJuIG5ldyBDb2xvcih0aGlzKTtcblx0XHR9XG5cblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIG5ldyBDb2xvcihhcmd1bWVudHMsIG1vZGVsKTtcblx0XHR9XG5cblx0XHR2YXIgbmV3QWxwaGEgPSB0eXBlb2YgYXJndW1lbnRzW2NoYW5uZWxzXSA9PT0gJ251bWJlcicgPyBjaGFubmVscyA6IHRoaXMudmFscGhhO1xuXHRcdHJldHVybiBuZXcgQ29sb3IoYXNzZXJ0QXJyYXkoY29udmVydFt0aGlzLm1vZGVsXVttb2RlbF0ucmF3KHRoaXMuY29sb3IpKS5jb25jYXQobmV3QWxwaGEpLCBtb2RlbCk7XG5cdH07XG5cblx0Ly8gJ3N0YXRpYycgY29uc3RydWN0aW9uIG1ldGhvZHNcblx0Q29sb3JbbW9kZWxdID0gZnVuY3Rpb24gKGNvbG9yKSB7XG5cdFx0aWYgKHR5cGVvZiBjb2xvciA9PT0gJ251bWJlcicpIHtcblx0XHRcdGNvbG9yID0gemVyb0FycmF5KF9zbGljZS5jYWxsKGFyZ3VtZW50cyksIGNoYW5uZWxzKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBDb2xvcihjb2xvciwgbW9kZWwpO1xuXHR9O1xufSk7XG5cbmZ1bmN0aW9uIHJvdW5kVG8obnVtLCBwbGFjZXMpIHtcblx0cmV0dXJuIE51bWJlcihudW0udG9GaXhlZChwbGFjZXMpKTtcbn1cblxuZnVuY3Rpb24gcm91bmRUb1BsYWNlKHBsYWNlcykge1xuXHRyZXR1cm4gZnVuY3Rpb24gKG51bSkge1xuXHRcdHJldHVybiByb3VuZFRvKG51bSwgcGxhY2VzKTtcblx0fTtcbn1cblxuZnVuY3Rpb24gZ2V0c2V0KG1vZGVsLCBjaGFubmVsLCBtb2RpZmllcikge1xuXHRtb2RlbCA9IEFycmF5LmlzQXJyYXkobW9kZWwpID8gbW9kZWwgOiBbbW9kZWxdO1xuXG5cdG1vZGVsLmZvckVhY2goZnVuY3Rpb24gKG0pIHtcblx0XHQobGltaXRlcnNbbV0gfHwgKGxpbWl0ZXJzW21dID0gW10pKVtjaGFubmVsXSA9IG1vZGlmaWVyO1xuXHR9KTtcblxuXHRtb2RlbCA9IG1vZGVsWzBdO1xuXG5cdHJldHVybiBmdW5jdGlvbiAodmFsKSB7XG5cdFx0dmFyIHJlc3VsdDtcblxuXHRcdGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG5cdFx0XHRpZiAobW9kaWZpZXIpIHtcblx0XHRcdFx0dmFsID0gbW9kaWZpZXIodmFsKTtcblx0XHRcdH1cblxuXHRcdFx0cmVzdWx0ID0gdGhpc1ttb2RlbF0oKTtcblx0XHRcdHJlc3VsdC5jb2xvcltjaGFubmVsXSA9IHZhbDtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXG5cdFx0cmVzdWx0ID0gdGhpc1ttb2RlbF0oKS5jb2xvcltjaGFubmVsXTtcblx0XHRpZiAobW9kaWZpZXIpIHtcblx0XHRcdHJlc3VsdCA9IG1vZGlmaWVyKHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcbn1cblxuZnVuY3Rpb24gbWF4Zm4obWF4KSB7XG5cdHJldHVybiBmdW5jdGlvbiAodikge1xuXHRcdHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbihtYXgsIHYpKTtcblx0fTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0QXJyYXkodmFsKSB7XG5cdHJldHVybiBBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXTtcbn1cblxuZnVuY3Rpb24gemVyb0FycmF5KGFyciwgbGVuZ3RoKSB7XG5cdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcblx0XHRpZiAodHlwZW9mIGFycltpXSAhPT0gJ251bWJlcicpIHtcblx0XHRcdGFycltpXSA9IDA7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGFycjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDb2xvcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/color/index.js\n"); /***/ }), /***/ "./node_modules/d3-color/src/color.js": /*!********************************************!*\ !*** ./node_modules/d3-color/src/color.js ***! \********************************************/ /*! exports provided: Color, darker, brighter, default, rgbConvert, rgb, Rgb, hslConvert, hsl */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Color\", function() { return Color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"darker\", function() { return darker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"brighter\", function() { return brighter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbConvert\", function() { return rgbConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Rgb\", function() { return Rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslConvert\", function() { return hslConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return hsl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/d3-color/src/define.js\");\n\n\nfunction Color() {}\n\nvar darker = 0.7;\nvar brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nfunction rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Rgb, rgb, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nfunction hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nfunction hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hsl, hsl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2NvbG9yLmpzPzE2NmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQzs7QUFFcEM7O0FBRUE7QUFDQTs7QUFFUDtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsSUFBSTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBEQUFNO0FBQ047QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMERBQU0sV0FBVyx5REFBTTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBEQUFNLFdBQVcseURBQU07QUFDdkI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvY29sb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmUuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIENvbG9yKCkge31cblxuZXhwb3J0IHZhciBkYXJrZXIgPSAwLjc7XG5leHBvcnQgdmFyIGJyaWdodGVyID0gMSAvIGRhcmtlcjtcblxudmFyIHJlSSA9IFwiXFxcXHMqKFsrLV0/XFxcXGQrKVxcXFxzKlwiLFxuICAgIHJlTiA9IFwiXFxcXHMqKFsrLV0/XFxcXGQqXFxcXC4/XFxcXGQrKD86W2VFXVsrLV0/XFxcXGQrKT8pXFxcXHMqXCIsXG4gICAgcmVQID0gXCJcXFxccyooWystXT9cXFxcZCpcXFxcLj9cXFxcZCsoPzpbZUVdWystXT9cXFxcZCspPyklXFxcXHMqXCIsXG4gICAgcmVIZXggPSAvXiMoWzAtOWEtZl17Myw4fSkkLyxcbiAgICByZVJnYkludGVnZXIgPSBuZXcgUmVnRXhwKFwiXnJnYlxcXFwoXCIgKyBbcmVJLCByZUksIHJlSV0gKyBcIlxcXFwpJFwiKSxcbiAgICByZVJnYlBlcmNlbnQgPSBuZXcgUmVnRXhwKFwiXnJnYlxcXFwoXCIgKyBbcmVQLCByZVAsIHJlUF0gKyBcIlxcXFwpJFwiKSxcbiAgICByZVJnYmFJbnRlZ2VyID0gbmV3IFJlZ0V4cChcIl5yZ2JhXFxcXChcIiArIFtyZUksIHJlSSwgcmVJLCByZU5dICsgXCJcXFxcKSRcIiksXG4gICAgcmVSZ2JhUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJecmdiYVxcXFwoXCIgKyBbcmVQLCByZVAsIHJlUCwgcmVOXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlSHNsUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJeaHNsXFxcXChcIiArIFtyZU4sIHJlUCwgcmVQXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlSHNsYVBlcmNlbnQgPSBuZXcgUmVnRXhwKFwiXmhzbGFcXFxcKFwiICsgW3JlTiwgcmVQLCByZVAsIHJlTl0gKyBcIlxcXFwpJFwiKTtcblxudmFyIG5hbWVkID0ge1xuICBhbGljZWJsdWU6IDB4ZjBmOGZmLFxuICBhbnRpcXVld2hpdGU6IDB4ZmFlYmQ3LFxuICBhcXVhOiAweDAwZmZmZixcbiAgYXF1YW1hcmluZTogMHg3ZmZmZDQsXG4gIGF6dXJlOiAweGYwZmZmZixcbiAgYmVpZ2U6IDB4ZjVmNWRjLFxuICBiaXNxdWU6IDB4ZmZlNGM0LFxuICBibGFjazogMHgwMDAwMDAsXG4gIGJsYW5jaGVkYWxtb25kOiAweGZmZWJjZCxcbiAgYmx1ZTogMHgwMDAwZmYsXG4gIGJsdWV2aW9sZXQ6IDB4OGEyYmUyLFxuICBicm93bjogMHhhNTJhMmEsXG4gIGJ1cmx5d29vZDogMHhkZWI4ODcsXG4gIGNhZGV0Ymx1ZTogMHg1ZjllYTAsXG4gIGNoYXJ0cmV1c2U6IDB4N2ZmZjAwLFxuICBjaG9jb2xhdGU6IDB4ZDI2OTFlLFxuICBjb3JhbDogMHhmZjdmNTAsXG4gIGNvcm5mbG93ZXJibHVlOiAweDY0OTVlZCxcbiAgY29ybnNpbGs6IDB4ZmZmOGRjLFxuICBjcmltc29uOiAweGRjMTQzYyxcbiAgY3lhbjogMHgwMGZmZmYsXG4gIGRhcmtibHVlOiAweDAwMDA4YixcbiAgZGFya2N5YW46IDB4MDA4YjhiLFxuICBkYXJrZ29sZGVucm9kOiAweGI4ODYwYixcbiAgZGFya2dyYXk6IDB4YTlhOWE5LFxuICBkYXJrZ3JlZW46IDB4MDA2NDAwLFxuICBkYXJrZ3JleTogMHhhOWE5YTksXG4gIGRhcmtraGFraTogMHhiZGI3NmIsXG4gIGRhcmttYWdlbnRhOiAweDhiMDA4YixcbiAgZGFya29saXZlZ3JlZW46IDB4NTU2YjJmLFxuICBkYXJrb3JhbmdlOiAweGZmOGMwMCxcbiAgZGFya29yY2hpZDogMHg5OTMyY2MsXG4gIGRhcmtyZWQ6IDB4OGIwMDAwLFxuICBkYXJrc2FsbW9uOiAweGU5OTY3YSxcbiAgZGFya3NlYWdyZWVuOiAweDhmYmM4ZixcbiAgZGFya3NsYXRlYmx1ZTogMHg0ODNkOGIsXG4gIGRhcmtzbGF0ZWdyYXk6IDB4MmY0ZjRmLFxuICBkYXJrc2xhdGVncmV5OiAweDJmNGY0ZixcbiAgZGFya3R1cnF1b2lzZTogMHgwMGNlZDEsXG4gIGRhcmt2aW9sZXQ6IDB4OTQwMGQzLFxuICBkZWVwcGluazogMHhmZjE0OTMsXG4gIGRlZXBza3libHVlOiAweDAwYmZmZixcbiAgZGltZ3JheTogMHg2OTY5NjksXG4gIGRpbWdyZXk6IDB4Njk2OTY5LFxuICBkb2RnZXJibHVlOiAweDFlOTBmZixcbiAgZmlyZWJyaWNrOiAweGIyMjIyMixcbiAgZmxvcmFsd2hpdGU6IDB4ZmZmYWYwLFxuICBmb3Jlc3RncmVlbjogMHgyMjhiMjIsXG4gIGZ1Y2hzaWE6IDB4ZmYwMGZmLFxuICBnYWluc2Jvcm86IDB4ZGNkY2RjLFxuICBnaG9zdHdoaXRlOiAweGY4ZjhmZixcbiAgZ29sZDogMHhmZmQ3MDAsXG4gIGdvbGRlbnJvZDogMHhkYWE1MjAsXG4gIGdyYXk6IDB4ODA4MDgwLFxuICBncmVlbjogMHgwMDgwMDAsXG4gIGdyZWVueWVsbG93OiAweGFkZmYyZixcbiAgZ3JleTogMHg4MDgwODAsXG4gIGhvbmV5ZGV3OiAweGYwZmZmMCxcbiAgaG90cGluazogMHhmZjY5YjQsXG4gIGluZGlhbnJlZDogMHhjZDVjNWMsXG4gIGluZGlnbzogMHg0YjAwODIsXG4gIGl2b3J5OiAweGZmZmZmMCxcbiAga2hha2k6IDB4ZjBlNjhjLFxuICBsYXZlbmRlcjogMHhlNmU2ZmEsXG4gIGxhdmVuZGVyYmx1c2g6IDB4ZmZmMGY1LFxuICBsYXduZ3JlZW46IDB4N2NmYzAwLFxuICBsZW1vbmNoaWZmb246IDB4ZmZmYWNkLFxuICBsaWdodGJsdWU6IDB4YWRkOGU2LFxuICBsaWdodGNvcmFsOiAweGYwODA4MCxcbiAgbGlnaHRjeWFuOiAweGUwZmZmZixcbiAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IDB4ZmFmYWQyLFxuICBsaWdodGdyYXk6IDB4ZDNkM2QzLFxuICBsaWdodGdyZWVuOiAweDkwZWU5MCxcbiAgbGlnaHRncmV5OiAweGQzZDNkMyxcbiAgbGlnaHRwaW5rOiAweGZmYjZjMSxcbiAgbGlnaHRzYWxtb246IDB4ZmZhMDdhLFxuICBsaWdodHNlYWdyZWVuOiAweDIwYjJhYSxcbiAgbGlnaHRza3libHVlOiAweDg3Y2VmYSxcbiAgbGlnaHRzbGF0ZWdyYXk6IDB4Nzc4ODk5LFxuICBsaWdodHNsYXRlZ3JleTogMHg3Nzg4OTksXG4gIGxpZ2h0c3RlZWxibHVlOiAweGIwYzRkZSxcbiAgbGlnaHR5ZWxsb3c6IDB4ZmZmZmUwLFxuICBsaW1lOiAweDAwZmYwMCxcbiAgbGltZWdyZWVuOiAweDMyY2QzMixcbiAgbGluZW46IDB4ZmFmMGU2LFxuICBtYWdlbnRhOiAweGZmMDBmZixcbiAgbWFyb29uOiAweDgwMDAwMCxcbiAgbWVkaXVtYXF1YW1hcmluZTogMHg2NmNkYWEsXG4gIG1lZGl1bWJsdWU6IDB4MDAwMGNkLFxuICBtZWRpdW1vcmNoaWQ6IDB4YmE1NWQzLFxuICBtZWRpdW1wdXJwbGU6IDB4OTM3MGRiLFxuICBtZWRpdW1zZWFncmVlbjogMHgzY2IzNzEsXG4gIG1lZGl1bXNsYXRlYmx1ZTogMHg3YjY4ZWUsXG4gIG1lZGl1bXNwcmluZ2dyZWVuOiAweDAwZmE5YSxcbiAgbWVkaXVtdHVycXVvaXNlOiAweDQ4ZDFjYyxcbiAgbWVkaXVtdmlvbGV0cmVkOiAweGM3MTU4NSxcbiAgbWlkbmlnaHRibHVlOiAweDE5MTk3MCxcbiAgbWludGNyZWFtOiAweGY1ZmZmYSxcbiAgbWlzdHlyb3NlOiAweGZmZTRlMSxcbiAgbW9jY2FzaW46IDB4ZmZlNGI1LFxuICBuYXZham93aGl0ZTogMHhmZmRlYWQsXG4gIG5hdnk6IDB4MDAwMDgwLFxuICBvbGRsYWNlOiAweGZkZjVlNixcbiAgb2xpdmU6IDB4ODA4MDAwLFxuICBvbGl2ZWRyYWI6IDB4NmI4ZTIzLFxuICBvcmFuZ2U6IDB4ZmZhNTAwLFxuICBvcmFuZ2VyZWQ6IDB4ZmY0NTAwLFxuICBvcmNoaWQ6IDB4ZGE3MGQ2LFxuICBwYWxlZ29sZGVucm9kOiAweGVlZThhYSxcbiAgcGFsZWdyZWVuOiAweDk4ZmI5OCxcbiAgcGFsZXR1cnF1b2lzZTogMHhhZmVlZWUsXG4gIHBhbGV2aW9sZXRyZWQ6IDB4ZGI3MDkzLFxuICBwYXBheWF3aGlwOiAweGZmZWZkNSxcbiAgcGVhY2hwdWZmOiAweGZmZGFiOSxcbiAgcGVydTogMHhjZDg1M2YsXG4gIHBpbms6IDB4ZmZjMGNiLFxuICBwbHVtOiAweGRkYTBkZCxcbiAgcG93ZGVyYmx1ZTogMHhiMGUwZTYsXG4gIHB1cnBsZTogMHg4MDAwODAsXG4gIHJlYmVjY2FwdXJwbGU6IDB4NjYzMzk5LFxuICByZWQ6IDB4ZmYwMDAwLFxuICByb3N5YnJvd246IDB4YmM4ZjhmLFxuICByb3lhbGJsdWU6IDB4NDE2OWUxLFxuICBzYWRkbGVicm93bjogMHg4YjQ1MTMsXG4gIHNhbG1vbjogMHhmYTgwNzIsXG4gIHNhbmR5YnJvd246IDB4ZjRhNDYwLFxuICBzZWFncmVlbjogMHgyZThiNTcsXG4gIHNlYXNoZWxsOiAweGZmZjVlZSxcbiAgc2llbm5hOiAweGEwNTIyZCxcbiAgc2lsdmVyOiAweGMwYzBjMCxcbiAgc2t5Ymx1ZTogMHg4N2NlZWIsXG4gIHNsYXRlYmx1ZTogMHg2YTVhY2QsXG4gIHNsYXRlZ3JheTogMHg3MDgwOTAsXG4gIHNsYXRlZ3JleTogMHg3MDgwOTAsXG4gIHNub3c6IDB4ZmZmYWZhLFxuICBzcHJpbmdncmVlbjogMHgwMGZmN2YsXG4gIHN0ZWVsYmx1ZTogMHg0NjgyYjQsXG4gIHRhbjogMHhkMmI0OGMsXG4gIHRlYWw6IDB4MDA4MDgwLFxuICB0aGlzdGxlOiAweGQ4YmZkOCxcbiAgdG9tYXRvOiAweGZmNjM0NyxcbiAgdHVycXVvaXNlOiAweDQwZTBkMCxcbiAgdmlvbGV0OiAweGVlODJlZSxcbiAgd2hlYXQ6IDB4ZjVkZWIzLFxuICB3aGl0ZTogMHhmZmZmZmYsXG4gIHdoaXRlc21va2U6IDB4ZjVmNWY1LFxuICB5ZWxsb3c6IDB4ZmZmZjAwLFxuICB5ZWxsb3dncmVlbjogMHg5YWNkMzJcbn07XG5cbmRlZmluZShDb2xvciwgY29sb3IsIHtcbiAgY29weTogZnVuY3Rpb24oY2hhbm5lbHMpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3RvciwgdGhpcywgY2hhbm5lbHMpO1xuICB9LFxuICBkaXNwbGF5YWJsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKTtcbiAgfSxcbiAgaGV4OiBjb2xvcl9mb3JtYXRIZXgsIC8vIERlcHJlY2F0ZWQhIFVzZSBjb2xvci5mb3JtYXRIZXguXG4gIGZvcm1hdEhleDogY29sb3JfZm9ybWF0SGV4LFxuICBmb3JtYXRIc2w6IGNvbG9yX2Zvcm1hdEhzbCxcbiAgZm9ybWF0UmdiOiBjb2xvcl9mb3JtYXRSZ2IsXG4gIHRvU3RyaW5nOiBjb2xvcl9mb3JtYXRSZ2Jcbn0pO1xuXG5mdW5jdGlvbiBjb2xvcl9mb3JtYXRIZXgoKSB7XG4gIHJldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpO1xufVxuXG5mdW5jdGlvbiBjb2xvcl9mb3JtYXRIc2woKSB7XG4gIHJldHVybiBoc2xDb252ZXJ0KHRoaXMpLmZvcm1hdEhzbCgpO1xufVxuXG5mdW5jdGlvbiBjb2xvcl9mb3JtYXRSZ2IoKSB7XG4gIHJldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb2xvcihmb3JtYXQpIHtcbiAgdmFyIG0sIGw7XG4gIGZvcm1hdCA9IChmb3JtYXQgKyBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIChtID0gcmVIZXguZXhlYyhmb3JtYXQpKSA/IChsID0gbVsxXS5sZW5ndGgsIG0gPSBwYXJzZUludChtWzFdLCAxNiksIGwgPT09IDYgPyByZ2JuKG0pIC8vICNmZjAwMDBcbiAgICAgIDogbCA9PT0gMyA/IG5ldyBSZ2IoKG0gPj4gOCAmIDB4ZikgfCAobSA+PiA0ICYgMHhmMCksIChtID4+IDQgJiAweGYpIHwgKG0gJiAweGYwKSwgKChtICYgMHhmKSA8PCA0KSB8IChtICYgMHhmKSwgMSkgLy8gI2YwMFxuICAgICAgOiBsID09PSA4ID8gcmdiYShtID4+IDI0ICYgMHhmZiwgbSA+PiAxNiAmIDB4ZmYsIG0gPj4gOCAmIDB4ZmYsIChtICYgMHhmZikgLyAweGZmKSAvLyAjZmYwMDAwMDBcbiAgICAgIDogbCA9PT0gNCA/IHJnYmEoKG0gPj4gMTIgJiAweGYpIHwgKG0gPj4gOCAmIDB4ZjApLCAobSA+PiA4ICYgMHhmKSB8IChtID4+IDQgJiAweGYwKSwgKG0gPj4gNCAmIDB4ZikgfCAobSAmIDB4ZjApLCAoKChtICYgMHhmKSA8PCA0KSB8IChtICYgMHhmKSkgLyAweGZmKSAvLyAjZjAwMFxuICAgICAgOiBudWxsKSAvLyBpbnZhbGlkIGhleFxuICAgICAgOiAobSA9IHJlUmdiSW50ZWdlci5leGVjKGZvcm1hdCkpID8gbmV3IFJnYihtWzFdLCBtWzJdLCBtWzNdLCAxKSAvLyByZ2IoMjU1LCAwLCAwKVxuICAgICAgOiAobSA9IHJlUmdiUGVyY2VudC5leGVjKGZvcm1hdCkpID8gbmV3IFJnYihtWzFdICogMjU1IC8gMTAwLCBtWzJdICogMjU1IC8gMTAwLCBtWzNdICogMjU1IC8gMTAwLCAxKSAvLyByZ2IoMTAwJSwgMCUsIDAlKVxuICAgICAgOiAobSA9IHJlUmdiYUludGVnZXIuZXhlYyhmb3JtYXQpKSA/IHJnYmEobVsxXSwgbVsyXSwgbVszXSwgbVs0XSkgLy8gcmdiYSgyNTUsIDAsIDAsIDEpXG4gICAgICA6IChtID0gcmVSZ2JhUGVyY2VudC5leGVjKGZvcm1hdCkpID8gcmdiYShtWzFdICogMjU1IC8gMTAwLCBtWzJdICogMjU1IC8gMTAwLCBtWzNdICogMjU1IC8gMTAwLCBtWzRdKSAvLyByZ2IoMTAwJSwgMCUsIDAlLCAxKVxuICAgICAgOiAobSA9IHJlSHNsUGVyY2VudC5leGVjKGZvcm1hdCkpID8gaHNsYShtWzFdLCBtWzJdIC8gMTAwLCBtWzNdIC8gMTAwLCAxKSAvLyBoc2woMTIwLCA1MCUsIDUwJSlcbiAgICAgIDogKG0gPSByZUhzbGFQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBoc2xhKG1bMV0sIG1bMl0gLyAxMDAsIG1bM10gLyAxMDAsIG1bNF0pIC8vIGhzbGEoMTIwLCA1MCUsIDUwJSwgMSlcbiAgICAgIDogbmFtZWQuaGFzT3duUHJvcGVydHkoZm9ybWF0KSA/IHJnYm4obmFtZWRbZm9ybWF0XSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgIDogZm9ybWF0ID09PSBcInRyYW5zcGFyZW50XCIgPyBuZXcgUmdiKE5hTiwgTmFOLCBOYU4sIDApXG4gICAgICA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHJnYm4obikge1xuICByZXR1cm4gbmV3IFJnYihuID4+IDE2ICYgMHhmZiwgbiA+PiA4ICYgMHhmZiwgbiAmIDB4ZmYsIDEpO1xufVxuXG5mdW5jdGlvbiByZ2JhKHIsIGcsIGIsIGEpIHtcbiAgaWYgKGEgPD0gMCkgciA9IGcgPSBiID0gTmFOO1xuICByZXR1cm4gbmV3IFJnYihyLCBnLCBiLCBhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJnYkNvbnZlcnQobykge1xuICBpZiAoIShvIGluc3RhbmNlb2YgQ29sb3IpKSBvID0gY29sb3Iobyk7XG4gIGlmICghbykgcmV0dXJuIG5ldyBSZ2I7XG4gIG8gPSBvLnJnYigpO1xuICByZXR1cm4gbmV3IFJnYihvLnIsIG8uZywgby5iLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmdiKHIsIGcsIGIsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyByZ2JDb252ZXJ0KHIpIDogbmV3IFJnYihyLCBnLCBiLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZ2IociwgZywgYiwgb3BhY2l0eSkge1xuICB0aGlzLnIgPSArcjtcbiAgdGhpcy5nID0gK2c7XG4gIHRoaXMuYiA9ICtiO1xuICB0aGlzLm9wYWNpdHkgPSArb3BhY2l0eTtcbn1cblxuZGVmaW5lKFJnYiwgcmdiLCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gYnJpZ2h0ZXIgOiBNYXRoLnBvdyhicmlnaHRlciwgayk7XG4gICAgcmV0dXJuIG5ldyBSZ2IodGhpcy5yICogaywgdGhpcy5nICogaywgdGhpcy5iICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBSZ2IodGhpcy5yICogaywgdGhpcy5nICogaywgdGhpcy5iICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZGlzcGxheWFibGU6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAoLTAuNSA8PSB0aGlzLnIgJiYgdGhpcy5yIDwgMjU1LjUpXG4gICAgICAgICYmICgtMC41IDw9IHRoaXMuZyAmJiB0aGlzLmcgPCAyNTUuNSlcbiAgICAgICAgJiYgKC0wLjUgPD0gdGhpcy5iICYmIHRoaXMuYiA8IDI1NS41KVxuICAgICAgICAmJiAoMCA8PSB0aGlzLm9wYWNpdHkgJiYgdGhpcy5vcGFjaXR5IDw9IDEpO1xuICB9LFxuICBoZXg6IHJnYl9mb3JtYXRIZXgsIC8vIERlcHJlY2F0ZWQhIFVzZSBjb2xvci5mb3JtYXRIZXguXG4gIGZvcm1hdEhleDogcmdiX2Zvcm1hdEhleCxcbiAgZm9ybWF0UmdiOiByZ2JfZm9ybWF0UmdiLFxuICB0b1N0cmluZzogcmdiX2Zvcm1hdFJnYlxufSkpO1xuXG5mdW5jdGlvbiByZ2JfZm9ybWF0SGV4KCkge1xuICByZXR1cm4gXCIjXCIgKyBoZXgodGhpcy5yKSArIGhleCh0aGlzLmcpICsgaGV4KHRoaXMuYik7XG59XG5cbmZ1bmN0aW9uIHJnYl9mb3JtYXRSZ2IoKSB7XG4gIHZhciBhID0gdGhpcy5vcGFjaXR5OyBhID0gaXNOYU4oYSkgPyAxIDogTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgYSkpO1xuICByZXR1cm4gKGEgPT09IDEgPyBcInJnYihcIiA6IFwicmdiYShcIilcbiAgICAgICsgTWF0aC5tYXgoMCwgTWF0aC5taW4oMjU1LCBNYXRoLnJvdW5kKHRoaXMucikgfHwgMCkpICsgXCIsIFwiXG4gICAgICArIE1hdGgubWF4KDAsIE1hdGgubWluKDI1NSwgTWF0aC5yb3VuZCh0aGlzLmcpIHx8IDApKSArIFwiLCBcIlxuICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQodGhpcy5iKSB8fCAwKSlcbiAgICAgICsgKGEgPT09IDEgPyBcIilcIiA6IFwiLCBcIiArIGEgKyBcIilcIik7XG59XG5cbmZ1bmN0aW9uIGhleCh2YWx1ZSkge1xuICB2YWx1ZSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDI1NSwgTWF0aC5yb3VuZCh2YWx1ZSkgfHwgMCkpO1xuICByZXR1cm4gKHZhbHVlIDwgMTYgPyBcIjBcIiA6IFwiXCIpICsgdmFsdWUudG9TdHJpbmcoMTYpO1xufVxuXG5mdW5jdGlvbiBoc2xhKGgsIHMsIGwsIGEpIHtcbiAgaWYgKGEgPD0gMCkgaCA9IHMgPSBsID0gTmFOO1xuICBlbHNlIGlmIChsIDw9IDAgfHwgbCA+PSAxKSBoID0gcyA9IE5hTjtcbiAgZWxzZSBpZiAocyA8PSAwKSBoID0gTmFOO1xuICByZXR1cm4gbmV3IEhzbChoLCBzLCBsLCBhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhzbENvbnZlcnQobykge1xuICBpZiAobyBpbnN0YW5jZW9mIEhzbCkgcmV0dXJuIG5ldyBIc2woby5oLCBvLnMsIG8ubCwgby5vcGFjaXR5KTtcbiAgaWYgKCEobyBpbnN0YW5jZW9mIENvbG9yKSkgbyA9IGNvbG9yKG8pO1xuICBpZiAoIW8pIHJldHVybiBuZXcgSHNsO1xuICBpZiAobyBpbnN0YW5jZW9mIEhzbCkgcmV0dXJuIG87XG4gIG8gPSBvLnJnYigpO1xuICB2YXIgciA9IG8uciAvIDI1NSxcbiAgICAgIGcgPSBvLmcgLyAyNTUsXG4gICAgICBiID0gby5iIC8gMjU1LFxuICAgICAgbWluID0gTWF0aC5taW4ociwgZywgYiksXG4gICAgICBtYXggPSBNYXRoLm1heChyLCBnLCBiKSxcbiAgICAgIGggPSBOYU4sXG4gICAgICBzID0gbWF4IC0gbWluLFxuICAgICAgbCA9IChtYXggKyBtaW4pIC8gMjtcbiAgaWYgKHMpIHtcbiAgICBpZiAociA9PT0gbWF4KSBoID0gKGcgLSBiKSAvIHMgKyAoZyA8IGIpICogNjtcbiAgICBlbHNlIGlmIChnID09PSBtYXgpIGggPSAoYiAtIHIpIC8gcyArIDI7XG4gICAgZWxzZSBoID0gKHIgLSBnKSAvIHMgKyA0O1xuICAgIHMgLz0gbCA8IDAuNSA/IG1heCArIG1pbiA6IDIgLSBtYXggLSBtaW47XG4gICAgaCAqPSA2MDtcbiAgfSBlbHNlIHtcbiAgICBzID0gbCA+IDAgJiYgbCA8IDEgPyAwIDogaDtcbiAgfVxuICByZXR1cm4gbmV3IEhzbChoLCBzLCBsLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHNsKGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBoc2xDb252ZXJ0KGgpIDogbmV3IEhzbChoLCBzLCBsLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmZ1bmN0aW9uIEhzbChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHRoaXMuaCA9ICtoO1xuICB0aGlzLnMgPSArcztcbiAgdGhpcy5sID0gK2w7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoSHNsLCBoc2wsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IEhzbCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBIc2wodGhpcy5oLCB0aGlzLnMsIHRoaXMubCAqIGssIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIHJnYjogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGggPSB0aGlzLmggJSAzNjAgKyAodGhpcy5oIDwgMCkgKiAzNjAsXG4gICAgICAgIHMgPSBpc05hTihoKSB8fCBpc05hTih0aGlzLnMpID8gMCA6IHRoaXMucyxcbiAgICAgICAgbCA9IHRoaXMubCxcbiAgICAgICAgbTIgPSBsICsgKGwgPCAwLjUgPyBsIDogMSAtIGwpICogcyxcbiAgICAgICAgbTEgPSAyICogbCAtIG0yO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgaHNsMnJnYihoID49IDI0MCA/IGggLSAyNDAgOiBoICsgMTIwLCBtMSwgbTIpLFxuICAgICAgaHNsMnJnYihoLCBtMSwgbTIpLFxuICAgICAgaHNsMnJnYihoIDwgMTIwID8gaCArIDI0MCA6IGggLSAxMjAsIG0xLCBtMiksXG4gICAgICB0aGlzLm9wYWNpdHlcbiAgICApO1xuICB9LFxuICBkaXNwbGF5YWJsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICgwIDw9IHRoaXMucyAmJiB0aGlzLnMgPD0gMSB8fCBpc05hTih0aGlzLnMpKVxuICAgICAgICAmJiAoMCA8PSB0aGlzLmwgJiYgdGhpcy5sIDw9IDEpXG4gICAgICAgICYmICgwIDw9IHRoaXMub3BhY2l0eSAmJiB0aGlzLm9wYWNpdHkgPD0gMSk7XG4gIH0sXG4gIGZvcm1hdEhzbDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGEgPSB0aGlzLm9wYWNpdHk7IGEgPSBpc05hTihhKSA/IDEgOiBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBhKSk7XG4gICAgcmV0dXJuIChhID09PSAxID8gXCJoc2woXCIgOiBcImhzbGEoXCIpXG4gICAgICAgICsgKHRoaXMuaCB8fCAwKSArIFwiLCBcIlxuICAgICAgICArICh0aGlzLnMgfHwgMCkgKiAxMDAgKyBcIiUsIFwiXG4gICAgICAgICsgKHRoaXMubCB8fCAwKSAqIDEwMCArIFwiJVwiXG4gICAgICAgICsgKGEgPT09IDEgPyBcIilcIiA6IFwiLCBcIiArIGEgKyBcIilcIik7XG4gIH1cbn0pKTtcblxuLyogRnJvbSBGdkQgMTMuMzcsIENTUyBDb2xvciBNb2R1bGUgTGV2ZWwgMyAqL1xuZnVuY3Rpb24gaHNsMnJnYihoLCBtMSwgbTIpIHtcbiAgcmV0dXJuIChoIDwgNjAgPyBtMSArIChtMiAtIG0xKSAqIGggLyA2MFxuICAgICAgOiBoIDwgMTgwID8gbTJcbiAgICAgIDogaCA8IDI0MCA/IG0xICsgKG0yIC0gbTEpICogKDI0MCAtIGgpIC8gNjBcbiAgICAgIDogbTEpICogMjU1O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-color/src/color.js\n"); /***/ }), /***/ "./node_modules/d3-color/src/cubehelix.js": /*!************************************************!*\ !*** ./node_modules/d3-color/src/cubehelix.js ***! \************************************************/ /*! exports provided: default, Cubehelix */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return cubehelix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Cubehelix\", function() { return Cubehelix; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-color/src/math.js\");\n\n\n\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"rad2deg\"] - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nfunction cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Cubehelix, cubehelix, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter: function(k) {\n k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"], k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"], k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"deg2rad\"],\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2N1YmVoZWxpeC5qcz8xNWE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQztBQUN5QjtBQUN6Qjs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLDZDQUFHLE9BQU8sNERBQVU7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsZ0RBQU87QUFDekM7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBEQUFNLHVCQUF1Qix5REFBTSxDQUFDLCtDQUFLO0FBQ3pDO0FBQ0Esb0JBQW9CLGtEQUFRLFlBQVksa0RBQVE7QUFDaEQ7QUFDQSxHQUFHO0FBQ0g7QUFDQSxvQkFBb0IsZ0RBQU0sWUFBWSxnREFBTTtBQUM1QztBQUNBLEdBQUc7QUFDSDtBQUNBLGlEQUFpRCxnREFBTztBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkNBQUc7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvY3ViZWhlbGl4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmluZSwge2V4dGVuZH0gZnJvbSBcIi4vZGVmaW5lLmpzXCI7XG5pbXBvcnQge0NvbG9yLCByZ2JDb252ZXJ0LCBSZ2IsIGRhcmtlciwgYnJpZ2h0ZXJ9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5pbXBvcnQge2RlZzJyYWQsIHJhZDJkZWd9IGZyb20gXCIuL21hdGguanNcIjtcblxudmFyIEEgPSAtMC4xNDg2MSxcbiAgICBCID0gKzEuNzgyNzcsXG4gICAgQyA9IC0wLjI5MjI3LFxuICAgIEQgPSAtMC45MDY0OSxcbiAgICBFID0gKzEuOTcyOTQsXG4gICAgRUQgPSBFICogRCxcbiAgICBFQiA9IEUgKiBCLFxuICAgIEJDX0RBID0gQiAqIEMgLSBEICogQTtcblxuZnVuY3Rpb24gY3ViZWhlbGl4Q29udmVydChvKSB7XG4gIGlmIChvIGluc3RhbmNlb2YgQ3ViZWhlbGl4KSByZXR1cm4gbmV3IEN1YmVoZWxpeChvLmgsIG8ucywgby5sLCBvLm9wYWNpdHkpO1xuICBpZiAoIShvIGluc3RhbmNlb2YgUmdiKSkgbyA9IHJnYkNvbnZlcnQobyk7XG4gIHZhciByID0gby5yIC8gMjU1LFxuICAgICAgZyA9IG8uZyAvIDI1NSxcbiAgICAgIGIgPSBvLmIgLyAyNTUsXG4gICAgICBsID0gKEJDX0RBICogYiArIEVEICogciAtIEVCICogZykgLyAoQkNfREEgKyBFRCAtIEVCKSxcbiAgICAgIGJsID0gYiAtIGwsXG4gICAgICBrID0gKEUgKiAoZyAtIGwpIC0gQyAqIGJsKSAvIEQsXG4gICAgICBzID0gTWF0aC5zcXJ0KGsgKiBrICsgYmwgKiBibCkgLyAoRSAqIGwgKiAoMSAtIGwpKSwgLy8gTmFOIGlmIGw9MCBvciBsPTFcbiAgICAgIGggPSBzID8gTWF0aC5hdGFuMihrLCBibCkgKiByYWQyZGVnIC0gMTIwIDogTmFOO1xuICByZXR1cm4gbmV3IEN1YmVoZWxpeChoIDwgMCA/IGggKyAzNjAgOiBoLCBzLCBsLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjdWJlaGVsaXgoaCwgcywgbCwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGN1YmVoZWxpeENvbnZlcnQoaCkgOiBuZXcgQ3ViZWhlbGl4KGgsIHMsIGwsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEN1YmVoZWxpeChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHRoaXMuaCA9ICtoO1xuICB0aGlzLnMgPSArcztcbiAgdGhpcy5sID0gK2w7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoQ3ViZWhlbGl4LCBjdWJlaGVsaXgsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IEN1YmVoZWxpeCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBDdWJlaGVsaXgodGhpcy5oLCB0aGlzLnMsIHRoaXMubCAqIGssIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIHJnYjogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGggPSBpc05hTih0aGlzLmgpID8gMCA6ICh0aGlzLmggKyAxMjApICogZGVnMnJhZCxcbiAgICAgICAgbCA9ICt0aGlzLmwsXG4gICAgICAgIGEgPSBpc05hTih0aGlzLnMpID8gMCA6IHRoaXMucyAqIGwgKiAoMSAtIGwpLFxuICAgICAgICBjb3NoID0gTWF0aC5jb3MoaCksXG4gICAgICAgIHNpbmggPSBNYXRoLnNpbihoKTtcbiAgICByZXR1cm4gbmV3IFJnYihcbiAgICAgIDI1NSAqIChsICsgYSAqIChBICogY29zaCArIEIgKiBzaW5oKSksXG4gICAgICAyNTUgKiAobCArIGEgKiAoQyAqIGNvc2ggKyBEICogc2luaCkpLFxuICAgICAgMjU1ICogKGwgKyBhICogKEUgKiBjb3NoKSksXG4gICAgICB0aGlzLm9wYWNpdHlcbiAgICApO1xuICB9XG59KSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-color/src/cubehelix.js\n"); /***/ }), /***/ "./node_modules/d3-color/src/define.js": /*!*********************************************!*\ !*** ./node_modules/d3-color/src/define.js ***! \*********************************************/ /*! exports provided: default, extend */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n});\n\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2RlZmluZS5qcz82M2FkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQSxDQUFDOztBQUVNO0FBQ1A7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2RlZmluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnN0cnVjdG9yLCBmYWN0b3J5LCBwcm90b3R5cGUpIHtcbiAgY29uc3RydWN0b3IucHJvdG90eXBlID0gZmFjdG9yeS5wcm90b3R5cGUgPSBwcm90b3R5cGU7XG4gIHByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKHBhcmVudCwgZGVmaW5pdGlvbikge1xuICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShwYXJlbnQucHJvdG90eXBlKTtcbiAgZm9yICh2YXIga2V5IGluIGRlZmluaXRpb24pIHByb3RvdHlwZVtrZXldID0gZGVmaW5pdGlvbltrZXldO1xuICByZXR1cm4gcHJvdG90eXBlO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-color/src/define.js\n"); /***/ }), /***/ "./node_modules/d3-color/src/index.js": /*!********************************************!*\ !*** ./node_modules/d3-color/src/index.js ***! \********************************************/ /*! exports provided: color, rgb, hsl, lab, hcl, lch, gray, cubehelix */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-color/src/color.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"color\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/d3-color/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"hcl\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"lch\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"gray\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/d3-color/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2luZGV4LmpzPzQ4MmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzRDtBQUNFO0FBQ0oiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGNvbG9yLCByZ2IsIGhzbH0gZnJvbSBcIi4vY29sb3IuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBsYWIsIGhjbCwgbGNoLCBncmF5fSBmcm9tIFwiLi9sYWIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdWJlaGVsaXh9IGZyb20gXCIuL2N1YmVoZWxpeC5qc1wiO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-color/src/index.js\n"); /***/ }), /***/ "./node_modules/d3-color/src/lab.js": /*!******************************************!*\ !*** ./node_modules/d3-color/src/lab.js ***! \******************************************/ /*! exports provided: gray, default, Lab, lch, hcl, Hcl */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return gray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Lab\", function() { return Lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return lch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return hcl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Hcl\", function() { return Hcl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-color/src/math.js\");\n\n\n\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nfunction gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nfunction lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nfunction Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Lab, lab, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"rad2deg\"];\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nfunction lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"deg2rad\"];\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hcl, hcl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2xhYi5qcz82MmYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTJDO0FBQ087QUFDUDs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2Q0FBRyxPQUFPLDREQUFVO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVlO0FBQ2Y7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMERBQU0sV0FBVyx5REFBTSxDQUFDLCtDQUFLO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkNBQUc7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsZ0RBQU87QUFDeEM7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLGdEQUFPO0FBQ3ZCO0FBQ0E7O0FBRUEsMERBQU0sV0FBVyx5REFBTSxDQUFDLCtDQUFLO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9sYWIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmUuanNcIjtcbmltcG9ydCB7Q29sb3IsIHJnYkNvbnZlcnQsIFJnYn0gZnJvbSBcIi4vY29sb3IuanNcIjtcbmltcG9ydCB7ZGVnMnJhZCwgcmFkMmRlZ30gZnJvbSBcIi4vbWF0aC5qc1wiO1xuXG4vLyBodHRwczovL29ic2VydmFibGVocS5jb20vQG1ib3N0b2NrL2xhYi1hbmQtcmdiXG52YXIgSyA9IDE4LFxuICAgIFhuID0gMC45NjQyMixcbiAgICBZbiA9IDEsXG4gICAgWm4gPSAwLjgyNTIxLFxuICAgIHQwID0gNCAvIDI5LFxuICAgIHQxID0gNiAvIDI5LFxuICAgIHQyID0gMyAqIHQxICogdDEsXG4gICAgdDMgPSB0MSAqIHQxICogdDE7XG5cbmZ1bmN0aW9uIGxhYkNvbnZlcnQobykge1xuICBpZiAobyBpbnN0YW5jZW9mIExhYikgcmV0dXJuIG5ldyBMYWIoby5sLCBvLmEsIG8uYiwgby5vcGFjaXR5KTtcbiAgaWYgKG8gaW5zdGFuY2VvZiBIY2wpIHJldHVybiBoY2wybGFiKG8pO1xuICBpZiAoIShvIGluc3RhbmNlb2YgUmdiKSkgbyA9IHJnYkNvbnZlcnQobyk7XG4gIHZhciByID0gcmdiMmxyZ2Ioby5yKSxcbiAgICAgIGcgPSByZ2IybHJnYihvLmcpLFxuICAgICAgYiA9IHJnYjJscmdiKG8uYiksXG4gICAgICB5ID0geHl6MmxhYigoMC4yMjI1MDQ1ICogciArIDAuNzE2ODc4NiAqIGcgKyAwLjA2MDYxNjkgKiBiKSAvIFluKSwgeCwgejtcbiAgaWYgKHIgPT09IGcgJiYgZyA9PT0gYikgeCA9IHogPSB5OyBlbHNlIHtcbiAgICB4ID0geHl6MmxhYigoMC40MzYwNzQ3ICogciArIDAuMzg1MDY0OSAqIGcgKyAwLjE0MzA4MDQgKiBiKSAvIFhuKTtcbiAgICB6ID0geHl6MmxhYigoMC4wMTM5MzIyICogciArIDAuMDk3MTA0NSAqIGcgKyAwLjcxNDE3MzMgKiBiKSAvIFpuKTtcbiAgfVxuICByZXR1cm4gbmV3IExhYigxMTYgKiB5IC0gMTYsIDUwMCAqICh4IC0geSksIDIwMCAqICh5IC0geiksIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncmF5KGwsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIG5ldyBMYWIobCwgMCwgMCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYWIobCwgYSwgYiwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGxhYkNvbnZlcnQobCkgOiBuZXcgTGFiKGwsIGEsIGIsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExhYihsLCBhLCBiLCBvcGFjaXR5KSB7XG4gIHRoaXMubCA9ICtsO1xuICB0aGlzLmEgPSArYTtcbiAgdGhpcy5iID0gK2I7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoTGFiLCBsYWIsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIHJldHVybiBuZXcgTGFiKHRoaXMubCArIEsgKiAoayA9PSBudWxsID8gMSA6IGspLCB0aGlzLmEsIHRoaXMuYiwgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgcmV0dXJuIG5ldyBMYWIodGhpcy5sIC0gSyAqIChrID09IG51bGwgPyAxIDogayksIHRoaXMuYSwgdGhpcy5iLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICByZ2I6IGZ1bmN0aW9uKCkge1xuICAgIHZhciB5ID0gKHRoaXMubCArIDE2KSAvIDExNixcbiAgICAgICAgeCA9IGlzTmFOKHRoaXMuYSkgPyB5IDogeSArIHRoaXMuYSAvIDUwMCxcbiAgICAgICAgeiA9IGlzTmFOKHRoaXMuYikgPyB5IDogeSAtIHRoaXMuYiAvIDIwMDtcbiAgICB4ID0gWG4gKiBsYWIyeHl6KHgpO1xuICAgIHkgPSBZbiAqIGxhYjJ4eXooeSk7XG4gICAgeiA9IFpuICogbGFiMnh5eih6KTtcbiAgICByZXR1cm4gbmV3IFJnYihcbiAgICAgIGxyZ2IycmdiKCAzLjEzMzg1NjEgKiB4IC0gMS42MTY4NjY3ICogeSAtIDAuNDkwNjE0NiAqIHopLFxuICAgICAgbHJnYjJyZ2IoLTAuOTc4NzY4NCAqIHggKyAxLjkxNjE0MTUgKiB5ICsgMC4wMzM0NTQwICogeiksXG4gICAgICBscmdiMnJnYiggMC4wNzE5NDUzICogeCAtIDAuMjI4OTkxNCAqIHkgKyAxLjQwNTI0MjcgKiB6KSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH1cbn0pKTtcblxuZnVuY3Rpb24geHl6MmxhYih0KSB7XG4gIHJldHVybiB0ID4gdDMgPyBNYXRoLnBvdyh0LCAxIC8gMykgOiB0IC8gdDIgKyB0MDtcbn1cblxuZnVuY3Rpb24gbGFiMnh5eih0KSB7XG4gIHJldHVybiB0ID4gdDEgPyB0ICogdCAqIHQgOiB0MiAqICh0IC0gdDApO1xufVxuXG5mdW5jdGlvbiBscmdiMnJnYih4KSB7XG4gIHJldHVybiAyNTUgKiAoeCA8PSAwLjAwMzEzMDggPyAxMi45MiAqIHggOiAxLjA1NSAqIE1hdGgucG93KHgsIDEgLyAyLjQpIC0gMC4wNTUpO1xufVxuXG5mdW5jdGlvbiByZ2IybHJnYih4KSB7XG4gIHJldHVybiAoeCAvPSAyNTUpIDw9IDAuMDQwNDUgPyB4IC8gMTIuOTIgOiBNYXRoLnBvdygoeCArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xufVxuXG5mdW5jdGlvbiBoY2xDb252ZXJ0KG8pIHtcbiAgaWYgKG8gaW5zdGFuY2VvZiBIY2wpIHJldHVybiBuZXcgSGNsKG8uaCwgby5jLCBvLmwsIG8ub3BhY2l0eSk7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBMYWIpKSBvID0gbGFiQ29udmVydChvKTtcbiAgaWYgKG8uYSA9PT0gMCAmJiBvLmIgPT09IDApIHJldHVybiBuZXcgSGNsKE5hTiwgMCA8IG8ubCAmJiBvLmwgPCAxMDAgPyAwIDogTmFOLCBvLmwsIG8ub3BhY2l0eSk7XG4gIHZhciBoID0gTWF0aC5hdGFuMihvLmIsIG8uYSkgKiByYWQyZGVnO1xuICByZXR1cm4gbmV3IEhjbChoIDwgMCA/IGggKyAzNjAgOiBoLCBNYXRoLnNxcnQoby5hICogby5hICsgby5iICogby5iKSwgby5sLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGNoKGwsIGMsIGgsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBoY2xDb252ZXJ0KGwpIDogbmV3IEhjbChoLCBjLCBsLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoY2woaCwgYywgbCwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGhjbENvbnZlcnQoaCkgOiBuZXcgSGNsKGgsIGMsIGwsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhjbChoLCBjLCBsLCBvcGFjaXR5KSB7XG4gIHRoaXMuaCA9ICtoO1xuICB0aGlzLmMgPSArYztcbiAgdGhpcy5sID0gK2w7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5mdW5jdGlvbiBoY2wybGFiKG8pIHtcbiAgaWYgKGlzTmFOKG8uaCkpIHJldHVybiBuZXcgTGFiKG8ubCwgMCwgMCwgby5vcGFjaXR5KTtcbiAgdmFyIGggPSBvLmggKiBkZWcycmFkO1xuICByZXR1cm4gbmV3IExhYihvLmwsIE1hdGguY29zKGgpICogby5jLCBNYXRoLnNpbihoKSAqIG8uYywgby5vcGFjaXR5KTtcbn1cblxuZGVmaW5lKEhjbCwgaGNsLCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IEhjbCh0aGlzLmgsIHRoaXMuYywgdGhpcy5sICsgSyAqIChrID09IG51bGwgPyAxIDogayksIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIGRhcmtlcjogZnVuY3Rpb24oaykge1xuICAgIHJldHVybiBuZXcgSGNsKHRoaXMuaCwgdGhpcy5jLCB0aGlzLmwgLSBLICogKGsgPT0gbnVsbCA/IDEgOiBrKSwgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gaGNsMmxhYih0aGlzKS5yZ2IoKTtcbiAgfVxufSkpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-color/src/lab.js\n"); /***/ }), /***/ "./node_modules/d3-color/src/math.js": /*!*******************************************!*\ !*** ./node_modules/d3-color/src/math.js ***! \*******************************************/ /*! exports provided: deg2rad, rad2deg */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deg2rad\", function() { return deg2rad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rad2deg\", function() { return rad2deg; });\nvar deg2rad = Math.PI / 180;\nvar rad2deg = 180 / Math.PI;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL21hdGguanM/NTMwYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBTztBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9tYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBkZWcycmFkID0gTWF0aC5QSSAvIDE4MDtcbmV4cG9ydCB2YXIgcmFkMmRlZyA9IDE4MCAvIE1hdGguUEk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-color/src/math.js\n"); /***/ }), /***/ "./node_modules/d3-dispatch/src/dispatch.js": /*!**************************************************!*\ !*** ./node_modules/d3-dispatch/src/dispatch.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (dispatch);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZGlzcGF0Y2gvc3JjL2Rpc3BhdGNoLmpzP2M2OGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQSxZQUFZOztBQUVaO0FBQ0EsOENBQThDLElBQUksT0FBTztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGtGQUFrRixPQUFPO0FBQ3pGO0FBQ0EsK0NBQStDLE9BQU87QUFDdEQsR0FBRztBQUNIO0FBQ0E7QUFDQSxtREFBbUQsT0FBTztBQUMxRDtBQUNBOztBQUVBO0FBQ0EscUNBQXFDLE9BQU87QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQyxPQUFPO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsNEJBQTRCO0FBQy9EO0FBQ0E7O0FBRWUsdUVBQVEsRUFBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1kaXNwYXRjaC9zcmMvZGlzcGF0Y2guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbm9vcCA9IHt2YWx1ZTogKCkgPT4ge319O1xuXG5mdW5jdGlvbiBkaXNwYXRjaCgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBhcmd1bWVudHMubGVuZ3RoLCBfID0ge30sIHQ7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoISh0ID0gYXJndW1lbnRzW2ldICsgXCJcIikgfHwgKHQgaW4gXykgfHwgL1tcXHMuXS8udGVzdCh0KSkgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCB0eXBlOiBcIiArIHQpO1xuICAgIF9bdF0gPSBbXTtcbiAgfVxuICByZXR1cm4gbmV3IERpc3BhdGNoKF8pO1xufVxuXG5mdW5jdGlvbiBEaXNwYXRjaChfKSB7XG4gIHRoaXMuXyA9IF87XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lcywgdHlwZXMpIHtcbiAgcmV0dXJuIHR5cGVuYW1lcy50cmltKCkuc3BsaXQoL158XFxzKy8pLm1hcChmdW5jdGlvbih0KSB7XG4gICAgdmFyIG5hbWUgPSBcIlwiLCBpID0gdC5pbmRleE9mKFwiLlwiKTtcbiAgICBpZiAoaSA+PSAwKSBuYW1lID0gdC5zbGljZShpICsgMSksIHQgPSB0LnNsaWNlKDAsIGkpO1xuICAgIGlmICh0ICYmICF0eXBlcy5oYXNPd25Qcm9wZXJ0eSh0KSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHQpO1xuICAgIHJldHVybiB7dHlwZTogdCwgbmFtZTogbmFtZX07XG4gIH0pO1xufVxuXG5EaXNwYXRjaC5wcm90b3R5cGUgPSBkaXNwYXRjaC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBEaXNwYXRjaCxcbiAgb246IGZ1bmN0aW9uKHR5cGVuYW1lLCBjYWxsYmFjaykge1xuICAgIHZhciBfID0gdGhpcy5fLFxuICAgICAgICBUID0gcGFyc2VUeXBlbmFtZXModHlwZW5hbWUgKyBcIlwiLCBfKSxcbiAgICAgICAgdCxcbiAgICAgICAgaSA9IC0xLFxuICAgICAgICBuID0gVC5sZW5ndGg7XG5cbiAgICAvLyBJZiBubyBjYWxsYmFjayB3YXMgc3BlY2lmaWVkLCByZXR1cm4gdGhlIGNhbGxiYWNrIG9mIHRoZSBnaXZlbiB0eXBlIGFuZCBuYW1lLlxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgICAgd2hpbGUgKCsraSA8IG4pIGlmICgodCA9ICh0eXBlbmFtZSA9IFRbaV0pLnR5cGUpICYmICh0ID0gZ2V0KF9bdF0sIHR5cGVuYW1lLm5hbWUpKSkgcmV0dXJuIHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgYSB0eXBlIHdhcyBzcGVjaWZpZWQsIHNldCB0aGUgY2FsbGJhY2sgZm9yIHRoZSBnaXZlbiB0eXBlIGFuZCBuYW1lLlxuICAgIC8vIE90aGVyd2lzZSwgaWYgYSBudWxsIGNhbGxiYWNrIHdhcyBzcGVjaWZpZWQsIHJlbW92ZSBjYWxsYmFja3Mgb2YgdGhlIGdpdmVuIG5hbWUuXG4gICAgaWYgKGNhbGxiYWNrICE9IG51bGwgJiYgdHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgY2FsbGJhY2s6IFwiICsgY2FsbGJhY2spO1xuICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICBpZiAodCA9ICh0eXBlbmFtZSA9IFRbaV0pLnR5cGUpIF9bdF0gPSBzZXQoX1t0XSwgdHlwZW5hbWUubmFtZSwgY2FsbGJhY2spO1xuICAgICAgZWxzZSBpZiAoY2FsbGJhY2sgPT0gbnVsbCkgZm9yICh0IGluIF8pIF9bdF0gPSBzZXQoX1t0XSwgdHlwZW5hbWUubmFtZSwgbnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGNvcHk6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBjb3B5ID0ge30sIF8gPSB0aGlzLl87XG4gICAgZm9yICh2YXIgdCBpbiBfKSBjb3B5W3RdID0gX1t0XS5zbGljZSgpO1xuICAgIHJldHVybiBuZXcgRGlzcGF0Y2goY29weSk7XG4gIH0sXG4gIGNhbGw6IGZ1bmN0aW9uKHR5cGUsIHRoYXQpIHtcbiAgICBpZiAoKG4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMikgPiAwKSBmb3IgKHZhciBhcmdzID0gbmV3IEFycmF5KG4pLCBpID0gMCwgbiwgdDsgaSA8IG47ICsraSkgYXJnc1tpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgaWYgKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodHlwZSkpIHRocm93IG5ldyBFcnJvcihcInVua25vd24gdHlwZTogXCIgKyB0eXBlKTtcbiAgICBmb3IgKHQgPSB0aGlzLl9bdHlwZV0sIGkgPSAwLCBuID0gdC5sZW5ndGg7IGkgPCBuOyArK2kpIHRbaV0udmFsdWUuYXBwbHkodGhhdCwgYXJncyk7XG4gIH0sXG4gIGFwcGx5OiBmdW5jdGlvbih0eXBlLCB0aGF0LCBhcmdzKSB7XG4gICAgaWYgKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodHlwZSkpIHRocm93IG5ldyBFcnJvcihcInVua25vd24gdHlwZTogXCIgKyB0eXBlKTtcbiAgICBmb3IgKHZhciB0ID0gdGhpcy5fW3R5cGVdLCBpID0gMCwgbiA9IHQubGVuZ3RoOyBpIDwgbjsgKytpKSB0W2ldLnZhbHVlLmFwcGx5KHRoYXQsIGFyZ3MpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBnZXQodHlwZSwgbmFtZSkge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IHR5cGUubGVuZ3RoLCBjOyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKChjID0gdHlwZVtpXSkubmFtZSA9PT0gbmFtZSkge1xuICAgICAgcmV0dXJuIGMudmFsdWU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNldCh0eXBlLCBuYW1lLCBjYWxsYmFjaykge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IHR5cGUubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKHR5cGVbaV0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgdHlwZVtpXSA9IG5vb3AsIHR5cGUgPSB0eXBlLnNsaWNlKDAsIGkpLmNvbmNhdCh0eXBlLnNsaWNlKGkgKyAxKSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHR5cGUucHVzaCh7bmFtZTogbmFtZSwgdmFsdWU6IGNhbGxiYWNrfSk7XG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkaXNwYXRjaDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-dispatch/src/dispatch.js\n"); /***/ }), /***/ "./node_modules/d3-dispatch/src/index.js": /*!***********************************************!*\ !*** ./node_modules/d3-dispatch/src/index.js ***! \***********************************************/ /*! exports provided: dispatch */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dispatch_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dispatch.js */ \"./node_modules/d3-dispatch/src/dispatch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dispatch\", function() { return _dispatch_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZGlzcGF0Y2gvc3JjL2luZGV4LmpzP2RmNDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZGlzcGF0Y2gvc3JjL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGRpc3BhdGNofSBmcm9tIFwiLi9kaXNwYXRjaC5qc1wiO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-dispatch/src/index.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/back.js": /*!******************************************!*\ !*** ./node_modules/d3-ease/src/back.js ***! \******************************************/ /*! exports provided: backIn, backOut, backInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backIn\", function() { return backIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backOut\", function() { return backOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backInOut\", function() { return backInOut; });\nvar overshoot = 1.70158;\n\nvar backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nvar backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nvar backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvYmFjay5qcz84OTQ2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDOztBQUVNO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvYmFjay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBvdmVyc2hvb3QgPSAxLjcwMTU4O1xuXG5leHBvcnQgdmFyIGJhY2tJbiA9IChmdW5jdGlvbiBjdXN0b20ocykge1xuICBzID0gK3M7XG5cbiAgZnVuY3Rpb24gYmFja0luKHQpIHtcbiAgICByZXR1cm4gKHQgPSArdCkgKiB0ICogKHMgKiAodCAtIDEpICsgdCk7XG4gIH1cblxuICBiYWNrSW4ub3ZlcnNob290ID0gY3VzdG9tO1xuXG4gIHJldHVybiBiYWNrSW47XG59KShvdmVyc2hvb3QpO1xuXG5leHBvcnQgdmFyIGJhY2tPdXQgPSAoZnVuY3Rpb24gY3VzdG9tKHMpIHtcbiAgcyA9ICtzO1xuXG4gIGZ1bmN0aW9uIGJhY2tPdXQodCkge1xuICAgIHJldHVybiAtLXQgKiB0ICogKCh0ICsgMSkgKiBzICsgdCkgKyAxO1xuICB9XG5cbiAgYmFja091dC5vdmVyc2hvb3QgPSBjdXN0b207XG5cbiAgcmV0dXJuIGJhY2tPdXQ7XG59KShvdmVyc2hvb3QpO1xuXG5leHBvcnQgdmFyIGJhY2tJbk91dCA9IChmdW5jdGlvbiBjdXN0b20ocykge1xuICBzID0gK3M7XG5cbiAgZnVuY3Rpb24gYmFja0luT3V0KHQpIHtcbiAgICByZXR1cm4gKCh0ICo9IDIpIDwgMSA/IHQgKiB0ICogKChzICsgMSkgKiB0IC0gcykgOiAodCAtPSAyKSAqIHQgKiAoKHMgKyAxKSAqIHQgKyBzKSArIDIpIC8gMjtcbiAgfVxuXG4gIGJhY2tJbk91dC5vdmVyc2hvb3QgPSBjdXN0b207XG5cbiAgcmV0dXJuIGJhY2tJbk91dDtcbn0pKG92ZXJzaG9vdCk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/back.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/bounce.js": /*!********************************************!*\ !*** ./node_modules/d3-ease/src/bounce.js ***! \********************************************/ /*! exports provided: bounceIn, bounceOut, bounceInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceIn\", function() { return bounceIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceOut\", function() { return bounceOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceInOut\", function() { return bounceInOut; });\nvar b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nfunction bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nfunction bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nfunction bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvYm91bmNlLmpzPzMwNzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9ib3VuY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYjEgPSA0IC8gMTEsXG4gICAgYjIgPSA2IC8gMTEsXG4gICAgYjMgPSA4IC8gMTEsXG4gICAgYjQgPSAzIC8gNCxcbiAgICBiNSA9IDkgLyAxMSxcbiAgICBiNiA9IDEwIC8gMTEsXG4gICAgYjcgPSAxNSAvIDE2LFxuICAgIGI4ID0gMjEgLyAyMixcbiAgICBiOSA9IDYzIC8gNjQsXG4gICAgYjAgPSAxIC8gYjEgLyBiMTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJvdW5jZUluKHQpIHtcbiAgcmV0dXJuIDEgLSBib3VuY2VPdXQoMSAtIHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYm91bmNlT3V0KHQpIHtcbiAgcmV0dXJuICh0ID0gK3QpIDwgYjEgPyBiMCAqIHQgKiB0IDogdCA8IGIzID8gYjAgKiAodCAtPSBiMikgKiB0ICsgYjQgOiB0IDwgYjYgPyBiMCAqICh0IC09IGI1KSAqIHQgKyBiNyA6IGIwICogKHQgLT0gYjgpICogdCArIGI5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYm91bmNlSW5PdXQodCkge1xuICByZXR1cm4gKCh0ICo9IDIpIDw9IDEgPyAxIC0gYm91bmNlT3V0KDEgLSB0KSA6IGJvdW5jZU91dCh0IC0gMSkgKyAxKSAvIDI7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/bounce.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/circle.js": /*!********************************************!*\ !*** ./node_modules/d3-ease/src/circle.js ***! \********************************************/ /*! exports provided: circleIn, circleOut, circleInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleIn\", function() { return circleIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleOut\", function() { return circleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleInOut\", function() { return circleInOut; });\nfunction circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nfunction circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nfunction circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvY2lyY2xlLmpzP2I0ODkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9jaXJjbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY2lyY2xlSW4odCkge1xuICByZXR1cm4gMSAtIE1hdGguc3FydCgxIC0gdCAqIHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2lyY2xlT3V0KHQpIHtcbiAgcmV0dXJuIE1hdGguc3FydCgxIC0gLS10ICogdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaXJjbGVJbk91dCh0KSB7XG4gIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IDEgLSBNYXRoLnNxcnQoMSAtIHQgKiB0KSA6IE1hdGguc3FydCgxIC0gKHQgLT0gMikgKiB0KSArIDEpIC8gMjtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/circle.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/cubic.js": /*!*******************************************!*\ !*** ./node_modules/d3-ease/src/cubic.js ***! \*******************************************/ /*! exports provided: cubicIn, cubicOut, cubicInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicIn\", function() { return cubicIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicOut\", function() { return cubicOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicInOut\", function() { return cubicInOut; });\nfunction cubicIn(t) {\n return t * t * t;\n}\n\nfunction cubicOut(t) {\n return --t * t * t + 1;\n}\n\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvY3ViaWMuanM/ODkyMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2N1YmljLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGN1YmljSW4odCkge1xuICByZXR1cm4gdCAqIHQgKiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3ViaWNPdXQodCkge1xuICByZXR1cm4gLS10ICogdCAqIHQgKyAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3ViaWNJbk91dCh0KSB7XG4gIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IHQgKiB0ICogdCA6ICh0IC09IDIpICogdCAqIHQgKyAyKSAvIDI7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/cubic.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/elastic.js": /*!*********************************************!*\ !*** ./node_modules/d3-ease/src/elastic.js ***! \*********************************************/ /*! exports provided: elasticIn, elasticOut, elasticInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticIn\", function() { return elasticIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticOut\", function() { return elasticOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticInOut\", function() { return elasticInOut; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-ease/src/math.js\");\n\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nvar elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nvar elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nvar elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(-t) * Math.sin((s - t) / p)\n : 2 - a * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvZWxhc3RpYy5qcz9iOWNmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7O0FBRS9CO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0EsZUFBZSxxREFBSTtBQUNuQjs7QUFFQSxxQ0FBcUMsMkJBQTJCO0FBQ2hFLGtDQUFrQyxxQkFBcUI7O0FBRXZEO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQOztBQUVBO0FBQ0EsbUJBQW1CLHFEQUFJO0FBQ3ZCOztBQUVBLHNDQUFzQywyQkFBMkI7QUFDakUsbUNBQW1DLHFCQUFxQjs7QUFFeEQ7QUFDQSxDQUFDOztBQUVNO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLGNBQWMscURBQUk7QUFDbEIsa0JBQWtCLHFEQUFJO0FBQ3RCOztBQUVBLHdDQUF3QywyQkFBMkI7QUFDbkUscUNBQXFDLHFCQUFxQjs7QUFFMUQ7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2VsYXN0aWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RwbXR9IGZyb20gXCIuL21hdGguanNcIjtcblxudmFyIHRhdSA9IDIgKiBNYXRoLlBJLFxuICAgIGFtcGxpdHVkZSA9IDEsXG4gICAgcGVyaW9kID0gMC4zO1xuXG5leHBvcnQgdmFyIGVsYXN0aWNJbiA9IChmdW5jdGlvbiBjdXN0b20oYSwgcCkge1xuICB2YXIgcyA9IE1hdGguYXNpbigxIC8gKGEgPSBNYXRoLm1heCgxLCBhKSkpICogKHAgLz0gdGF1KTtcblxuICBmdW5jdGlvbiBlbGFzdGljSW4odCkge1xuICAgIHJldHVybiBhICogdHBtdCgtKC0tdCkpICogTWF0aC5zaW4oKHMgLSB0KSAvIHApO1xuICB9XG5cbiAgZWxhc3RpY0luLmFtcGxpdHVkZSA9IGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGN1c3RvbShhLCBwICogdGF1KTsgfTtcbiAgZWxhc3RpY0luLnBlcmlvZCA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIGN1c3RvbShhLCBwKTsgfTtcblxuICByZXR1cm4gZWxhc3RpY0luO1xufSkoYW1wbGl0dWRlLCBwZXJpb2QpO1xuXG5leHBvcnQgdmFyIGVsYXN0aWNPdXQgPSAoZnVuY3Rpb24gY3VzdG9tKGEsIHApIHtcbiAgdmFyIHMgPSBNYXRoLmFzaW4oMSAvIChhID0gTWF0aC5tYXgoMSwgYSkpKSAqIChwIC89IHRhdSk7XG5cbiAgZnVuY3Rpb24gZWxhc3RpY091dCh0KSB7XG4gICAgcmV0dXJuIDEgLSBhICogdHBtdCh0ID0gK3QpICogTWF0aC5zaW4oKHQgKyBzKSAvIHApO1xuICB9XG5cbiAgZWxhc3RpY091dC5hbXBsaXR1ZGUgPSBmdW5jdGlvbihhKSB7IHJldHVybiBjdXN0b20oYSwgcCAqIHRhdSk7IH07XG4gIGVsYXN0aWNPdXQucGVyaW9kID0gZnVuY3Rpb24ocCkgeyByZXR1cm4gY3VzdG9tKGEsIHApOyB9O1xuXG4gIHJldHVybiBlbGFzdGljT3V0O1xufSkoYW1wbGl0dWRlLCBwZXJpb2QpO1xuXG5leHBvcnQgdmFyIGVsYXN0aWNJbk91dCA9IChmdW5jdGlvbiBjdXN0b20oYSwgcCkge1xuICB2YXIgcyA9IE1hdGguYXNpbigxIC8gKGEgPSBNYXRoLm1heCgxLCBhKSkpICogKHAgLz0gdGF1KTtcblxuICBmdW5jdGlvbiBlbGFzdGljSW5PdXQodCkge1xuICAgIHJldHVybiAoKHQgPSB0ICogMiAtIDEpIDwgMFxuICAgICAgICA/IGEgKiB0cG10KC10KSAqIE1hdGguc2luKChzIC0gdCkgLyBwKVxuICAgICAgICA6IDIgLSBhICogdHBtdCh0KSAqIE1hdGguc2luKChzICsgdCkgLyBwKSkgLyAyO1xuICB9XG5cbiAgZWxhc3RpY0luT3V0LmFtcGxpdHVkZSA9IGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGN1c3RvbShhLCBwICogdGF1KTsgfTtcbiAgZWxhc3RpY0luT3V0LnBlcmlvZCA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIGN1c3RvbShhLCBwKTsgfTtcblxuICByZXR1cm4gZWxhc3RpY0luT3V0O1xufSkoYW1wbGl0dWRlLCBwZXJpb2QpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/elastic.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/exp.js": /*!*****************************************!*\ !*** ./node_modules/d3-ease/src/exp.js ***! \*****************************************/ /*! exports provided: expIn, expOut, expInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expIn\", function() { return expIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expOut\", function() { return expOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expInOut\", function() { return expInOut; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-ease/src/math.js\");\n\n\nfunction expIn(t) {\n return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(1 - +t);\n}\n\nfunction expOut(t) {\n return 1 - Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(t);\n}\n\nfunction expInOut(t) {\n return ((t *= 2) <= 1 ? Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(1 - t) : 2 - Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(t - 1)) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvZXhwLmpzPzJjZTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErQjs7QUFFeEI7QUFDUCxTQUFTLHFEQUFJO0FBQ2I7O0FBRU87QUFDUCxhQUFhLHFEQUFJO0FBQ2pCOztBQUVPO0FBQ1AsMEJBQTBCLHFEQUFJLGNBQWMscURBQUk7QUFDaEQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvZXhwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0cG10fSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBJbih0KSB7XG4gIHJldHVybiB0cG10KDEgLSArdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBPdXQodCkge1xuICByZXR1cm4gMSAtIHRwbXQodCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBJbk91dCh0KSB7XG4gIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IHRwbXQoMSAtIHQpIDogMiAtIHRwbXQodCAtIDEpKSAvIDI7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/exp.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/index.js": /*!*******************************************!*\ !*** ./node_modules/d3-ease/src/index.js ***! \*******************************************/ /*! exports provided: easeLinear, easeQuad, easeQuadIn, easeQuadOut, easeQuadInOut, easeCubic, easeCubicIn, easeCubicOut, easeCubicInOut, easePoly, easePolyIn, easePolyOut, easePolyInOut, easeSin, easeSinIn, easeSinOut, easeSinInOut, easeExp, easeExpIn, easeExpOut, easeExpInOut, easeCircle, easeCircleIn, easeCircleOut, easeCircleInOut, easeBounce, easeBounceIn, easeBounceOut, easeBounceInOut, easeBack, easeBackIn, easeBackOut, easeBackInOut, easeElastic, easeElasticIn, easeElasticOut, easeElasticInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/d3-ease/src/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeLinear\", function() { return _linear_js__WEBPACK_IMPORTED_MODULE_0__[\"linear\"]; });\n\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quad.js */ \"./node_modules/d3-ease/src/quad.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuad\", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__[\"quadInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadIn\", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__[\"quadIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadOut\", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__[\"quadOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadInOut\", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__[\"quadInOut\"]; });\n\n/* harmony import */ var _cubic_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubic.js */ \"./node_modules/d3-ease/src/cubic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubic\", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__[\"cubicInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicIn\", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__[\"cubicIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicOut\", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__[\"cubicOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicInOut\", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__[\"cubicInOut\"]; });\n\n/* harmony import */ var _poly_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./poly.js */ \"./node_modules/d3-ease/src/poly.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePoly\", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__[\"polyInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyIn\", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__[\"polyIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyOut\", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__[\"polyOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyInOut\", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__[\"polyInOut\"]; });\n\n/* harmony import */ var _sin_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sin.js */ \"./node_modules/d3-ease/src/sin.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSin\", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__[\"sinInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinIn\", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__[\"sinIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinOut\", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__[\"sinOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinInOut\", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__[\"sinInOut\"]; });\n\n/* harmony import */ var _exp_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exp.js */ \"./node_modules/d3-ease/src/exp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExp\", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__[\"expInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpIn\", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__[\"expIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpOut\", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__[\"expOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpInOut\", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__[\"expInOut\"]; });\n\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./circle.js */ \"./node_modules/d3-ease/src/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircle\", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__[\"circleInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleIn\", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__[\"circleIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleOut\", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__[\"circleOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleInOut\", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__[\"circleInOut\"]; });\n\n/* harmony import */ var _bounce_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./bounce.js */ \"./node_modules/d3-ease/src/bounce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounce\", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__[\"bounceOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceIn\", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__[\"bounceIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceOut\", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__[\"bounceOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceInOut\", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__[\"bounceInOut\"]; });\n\n/* harmony import */ var _back_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./back.js */ \"./node_modules/d3-ease/src/back.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBack\", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__[\"backInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackIn\", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__[\"backIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackOut\", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__[\"backOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackInOut\", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__[\"backInOut\"]; });\n\n/* harmony import */ var _elastic_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./elastic.js */ \"./node_modules/d3-ease/src/elastic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElastic\", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__[\"elasticOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticIn\", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__[\"elasticIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticOut\", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__[\"elasticOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticInOut\", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__[\"elasticInOut\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvaW5kZXguanM/ZmI3NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVxQjs7QUFPRjs7QUFPQzs7QUFPRDs7QUFPRDs7QUFPQTs7QUFPRzs7QUFPQTs7QUFPRjs7QUFPRyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGxpbmVhciBhcyBlYXNlTGluZWFyXG59IGZyb20gXCIuL2xpbmVhci5qc1wiO1xuXG5leHBvcnQge1xuICBxdWFkSW5PdXQgYXMgZWFzZVF1YWQsXG4gIHF1YWRJbiBhcyBlYXNlUXVhZEluLFxuICBxdWFkT3V0IGFzIGVhc2VRdWFkT3V0LFxuICBxdWFkSW5PdXQgYXMgZWFzZVF1YWRJbk91dFxufSBmcm9tIFwiLi9xdWFkLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGN1YmljSW5PdXQgYXMgZWFzZUN1YmljLFxuICBjdWJpY0luIGFzIGVhc2VDdWJpY0luLFxuICBjdWJpY091dCBhcyBlYXNlQ3ViaWNPdXQsXG4gIGN1YmljSW5PdXQgYXMgZWFzZUN1YmljSW5PdXRcbn0gZnJvbSBcIi4vY3ViaWMuanNcIjtcblxuZXhwb3J0IHtcbiAgcG9seUluT3V0IGFzIGVhc2VQb2x5LFxuICBwb2x5SW4gYXMgZWFzZVBvbHlJbixcbiAgcG9seU91dCBhcyBlYXNlUG9seU91dCxcbiAgcG9seUluT3V0IGFzIGVhc2VQb2x5SW5PdXRcbn0gZnJvbSBcIi4vcG9seS5qc1wiO1xuXG5leHBvcnQge1xuICBzaW5Jbk91dCBhcyBlYXNlU2luLFxuICBzaW5JbiBhcyBlYXNlU2luSW4sXG4gIHNpbk91dCBhcyBlYXNlU2luT3V0LFxuICBzaW5Jbk91dCBhcyBlYXNlU2luSW5PdXRcbn0gZnJvbSBcIi4vc2luLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGV4cEluT3V0IGFzIGVhc2VFeHAsXG4gIGV4cEluIGFzIGVhc2VFeHBJbixcbiAgZXhwT3V0IGFzIGVhc2VFeHBPdXQsXG4gIGV4cEluT3V0IGFzIGVhc2VFeHBJbk91dFxufSBmcm9tIFwiLi9leHAuanNcIjtcblxuZXhwb3J0IHtcbiAgY2lyY2xlSW5PdXQgYXMgZWFzZUNpcmNsZSxcbiAgY2lyY2xlSW4gYXMgZWFzZUNpcmNsZUluLFxuICBjaXJjbGVPdXQgYXMgZWFzZUNpcmNsZU91dCxcbiAgY2lyY2xlSW5PdXQgYXMgZWFzZUNpcmNsZUluT3V0XG59IGZyb20gXCIuL2NpcmNsZS5qc1wiO1xuXG5leHBvcnQge1xuICBib3VuY2VPdXQgYXMgZWFzZUJvdW5jZSxcbiAgYm91bmNlSW4gYXMgZWFzZUJvdW5jZUluLFxuICBib3VuY2VPdXQgYXMgZWFzZUJvdW5jZU91dCxcbiAgYm91bmNlSW5PdXQgYXMgZWFzZUJvdW5jZUluT3V0XG59IGZyb20gXCIuL2JvdW5jZS5qc1wiO1xuXG5leHBvcnQge1xuICBiYWNrSW5PdXQgYXMgZWFzZUJhY2ssXG4gIGJhY2tJbiBhcyBlYXNlQmFja0luLFxuICBiYWNrT3V0IGFzIGVhc2VCYWNrT3V0LFxuICBiYWNrSW5PdXQgYXMgZWFzZUJhY2tJbk91dFxufSBmcm9tIFwiLi9iYWNrLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGVsYXN0aWNPdXQgYXMgZWFzZUVsYXN0aWMsXG4gIGVsYXN0aWNJbiBhcyBlYXNlRWxhc3RpY0luLFxuICBlbGFzdGljT3V0IGFzIGVhc2VFbGFzdGljT3V0LFxuICBlbGFzdGljSW5PdXQgYXMgZWFzZUVsYXN0aWNJbk91dFxufSBmcm9tIFwiLi9lbGFzdGljLmpzXCI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/index.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/linear.js": /*!********************************************!*\ !*** ./node_modules/d3-ease/src/linear.js ***! \********************************************/ /*! exports provided: linear */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linear\", function() { return linear; });\nfunction linear(t) {\n return +t;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvbGluZWFyLmpzPzY1MTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9saW5lYXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gbGluZWFyKHQpIHtcbiAgcmV0dXJuICt0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/linear.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/math.js": /*!******************************************!*\ !*** ./node_modules/d3-ease/src/math.js ***! \******************************************/ /*! exports provided: tpmt */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tpmt\", function() { return tpmt; });\n// tpmt is two power minus ten times t scaled to [0,1]\nfunction tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvbWF0aC5qcz9lOTkxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNPO0FBQ1A7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9tYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHBtdCBpcyB0d28gcG93ZXIgbWludXMgdGVuIHRpbWVzIHQgc2NhbGVkIHRvIFswLDFdXG5leHBvcnQgZnVuY3Rpb24gdHBtdCh4KSB7XG4gIHJldHVybiAoTWF0aC5wb3coMiwgLTEwICogeCkgLSAwLjAwMDk3NjU2MjUpICogMS4wMDA5Nzc1MTcxMDY1NDk0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/math.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/poly.js": /*!******************************************!*\ !*** ./node_modules/d3-ease/src/poly.js ***! \******************************************/ /*! exports provided: polyIn, polyOut, polyInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyIn\", function() { return polyIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyOut\", function() { return polyOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyInOut\", function() { return polyInOut; });\nvar exponent = 3;\n\nvar polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nvar polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nvar polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvcG9seS5qcz9lNTdhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDOztBQUVNO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvcG9seS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHBvbmVudCA9IDM7XG5cbmV4cG9ydCB2YXIgcG9seUluID0gKGZ1bmN0aW9uIGN1c3RvbShlKSB7XG4gIGUgPSArZTtcblxuICBmdW5jdGlvbiBwb2x5SW4odCkge1xuICAgIHJldHVybiBNYXRoLnBvdyh0LCBlKTtcbiAgfVxuXG4gIHBvbHlJbi5leHBvbmVudCA9IGN1c3RvbTtcblxuICByZXR1cm4gcG9seUluO1xufSkoZXhwb25lbnQpO1xuXG5leHBvcnQgdmFyIHBvbHlPdXQgPSAoZnVuY3Rpb24gY3VzdG9tKGUpIHtcbiAgZSA9ICtlO1xuXG4gIGZ1bmN0aW9uIHBvbHlPdXQodCkge1xuICAgIHJldHVybiAxIC0gTWF0aC5wb3coMSAtIHQsIGUpO1xuICB9XG5cbiAgcG9seU91dC5leHBvbmVudCA9IGN1c3RvbTtcblxuICByZXR1cm4gcG9seU91dDtcbn0pKGV4cG9uZW50KTtcblxuZXhwb3J0IHZhciBwb2x5SW5PdXQgPSAoZnVuY3Rpb24gY3VzdG9tKGUpIHtcbiAgZSA9ICtlO1xuXG4gIGZ1bmN0aW9uIHBvbHlJbk91dCh0KSB7XG4gICAgcmV0dXJuICgodCAqPSAyKSA8PSAxID8gTWF0aC5wb3codCwgZSkgOiAyIC0gTWF0aC5wb3coMiAtIHQsIGUpKSAvIDI7XG4gIH1cblxuICBwb2x5SW5PdXQuZXhwb25lbnQgPSBjdXN0b207XG5cbiAgcmV0dXJuIHBvbHlJbk91dDtcbn0pKGV4cG9uZW50KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/poly.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/quad.js": /*!******************************************!*\ !*** ./node_modules/d3-ease/src/quad.js ***! \******************************************/ /*! exports provided: quadIn, quadOut, quadInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadIn\", function() { return quadIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadOut\", function() { return quadOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadInOut\", function() { return quadInOut; });\nfunction quadIn(t) {\n return t * t;\n}\n\nfunction quadOut(t) {\n return t * (2 - t);\n}\n\nfunction quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvcXVhZC5qcz80ZDcyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvcXVhZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBxdWFkSW4odCkge1xuICByZXR1cm4gdCAqIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWFkT3V0KHQpIHtcbiAgcmV0dXJuIHQgKiAoMiAtIHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVhZEluT3V0KHQpIHtcbiAgcmV0dXJuICgodCAqPSAyKSA8PSAxID8gdCAqIHQgOiAtLXQgKiAoMiAtIHQpICsgMSkgLyAyO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/quad.js\n"); /***/ }), /***/ "./node_modules/d3-ease/src/sin.js": /*!*****************************************!*\ !*** ./node_modules/d3-ease/src/sin.js ***! \*****************************************/ /*! exports provided: sinIn, sinOut, sinInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinIn\", function() { return sinIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinOut\", function() { return sinOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinInOut\", function() { return sinInOut; });\nvar pi = Math.PI,\n halfPi = pi / 2;\n\nfunction sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nfunction sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nfunction sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvc2luLmpzP2ViNjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL3Npbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBwaSA9IE1hdGguUEksXG4gICAgaGFsZlBpID0gcGkgLyAyO1xuXG5leHBvcnQgZnVuY3Rpb24gc2luSW4odCkge1xuICByZXR1cm4gKCt0ID09PSAxKSA/IDEgOiAxIC0gTWF0aC5jb3ModCAqIGhhbGZQaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaW5PdXQodCkge1xuICByZXR1cm4gTWF0aC5zaW4odCAqIGhhbGZQaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaW5Jbk91dCh0KSB7XG4gIHJldHVybiAoMSAtIE1hdGguY29zKHBpICogdCkpIC8gMjtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-ease/src/sin.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/center.js": /*!*********************************************!*\ !*** ./node_modules/d3-force/src/center.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2NlbnRlci5qcz9kMGIxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLE9BQU87QUFDdEI7QUFDQTs7QUFFQSwyRUFBMkUsT0FBTztBQUNsRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvY2VudGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgeSkge1xuICB2YXIgbm9kZXMsIHN0cmVuZ3RoID0gMTtcblxuICBpZiAoeCA9PSBudWxsKSB4ID0gMDtcbiAgaWYgKHkgPT0gbnVsbCkgeSA9IDA7XG5cbiAgZnVuY3Rpb24gZm9yY2UoKSB7XG4gICAgdmFyIGksXG4gICAgICAgIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIG5vZGUsXG4gICAgICAgIHN4ID0gMCxcbiAgICAgICAgc3kgPSAwO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBzeCArPSBub2RlLngsIHN5ICs9IG5vZGUueTtcbiAgICB9XG5cbiAgICBmb3IgKHN4ID0gKHN4IC8gbiAtIHgpICogc3RyZW5ndGgsIHN5ID0gKHN5IC8gbiAtIHkpICogc3RyZW5ndGgsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUueCAtPSBzeCwgbm9kZS55IC09IHN5O1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfO1xuICB9O1xuXG4gIGZvcmNlLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9ICtfLCBmb3JjZSkgOiB4O1xuICB9O1xuXG4gIGZvcmNlLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9ICtfLCBmb3JjZSkgOiB5O1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gK18sIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/center.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/collide.js": /*!**********************************************!*\ !*** ./node_modules/d3-force/src/collide.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-quadtree */ \"./node_modules/d3-quadtree/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jiggle.js */ \"./node_modules/d3-force/src/jiggle.js\");\n\n\n\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = Object(d3_quadtree__WEBPACK_IMPORTED_MODULE_0__[\"quadtree\"])(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += x * x;\n if (y === 0) y = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), initialize(), force) : radius;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2NvbGxpZGUuanM/ODkwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxQztBQUNBO0FBQ0o7O0FBRWpDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZDQUE2Qyw0REFBUTs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DLGFBQWEsNERBQVE7QUFDckIsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwwREFBTTtBQUNuQyw2QkFBNkIsMERBQU07QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEIsT0FBTztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNFQUFzRSw0REFBUTtBQUM5RTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2NvbGxpZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3F1YWR0cmVlfSBmcm9tIFwiZDMtcXVhZHRyZWVcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IGppZ2dsZSBmcm9tIFwiLi9qaWdnbGUuanNcIjtcblxuZnVuY3Rpb24geChkKSB7XG4gIHJldHVybiBkLnggKyBkLnZ4O1xufVxuXG5mdW5jdGlvbiB5KGQpIHtcbiAgcmV0dXJuIGQueSArIGQudnk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhZGl1cykge1xuICB2YXIgbm9kZXMsXG4gICAgICByYWRpaSxcbiAgICAgIHJhbmRvbSxcbiAgICAgIHN0cmVuZ3RoID0gMSxcbiAgICAgIGl0ZXJhdGlvbnMgPSAxO1xuXG4gIGlmICh0eXBlb2YgcmFkaXVzICE9PSBcImZ1bmN0aW9uXCIpIHJhZGl1cyA9IGNvbnN0YW50KHJhZGl1cyA9PSBudWxsID8gMSA6ICtyYWRpdXMpO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKCkge1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICB0cmVlLFxuICAgICAgICBub2RlLFxuICAgICAgICB4aSxcbiAgICAgICAgeWksXG4gICAgICAgIHJpLFxuICAgICAgICByaTI7XG5cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IGl0ZXJhdGlvbnM7ICsraykge1xuICAgICAgdHJlZSA9IHF1YWR0cmVlKG5vZGVzLCB4LCB5KS52aXNpdEFmdGVyKHByZXBhcmUpO1xuICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIHJpID0gcmFkaWlbbm9kZS5pbmRleF0sIHJpMiA9IHJpICogcmk7XG4gICAgICAgIHhpID0gbm9kZS54ICsgbm9kZS52eDtcbiAgICAgICAgeWkgPSBub2RlLnkgKyBub2RlLnZ5O1xuICAgICAgICB0cmVlLnZpc2l0KGFwcGx5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseShxdWFkLCB4MCwgeTAsIHgxLCB5MSkge1xuICAgICAgdmFyIGRhdGEgPSBxdWFkLmRhdGEsIHJqID0gcXVhZC5yLCByID0gcmkgKyByajtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhLmluZGV4ID4gbm9kZS5pbmRleCkge1xuICAgICAgICAgIHZhciB4ID0geGkgLSBkYXRhLnggLSBkYXRhLnZ4LFxuICAgICAgICAgICAgICB5ID0geWkgLSBkYXRhLnkgLSBkYXRhLnZ5LFxuICAgICAgICAgICAgICBsID0geCAqIHggKyB5ICogeTtcbiAgICAgICAgICBpZiAobCA8IHIgKiByKSB7XG4gICAgICAgICAgICBpZiAoeCA9PT0gMCkgeCA9IGppZ2dsZShyYW5kb20pLCBsICs9IHggKiB4O1xuICAgICAgICAgICAgaWYgKHkgPT09IDApIHkgPSBqaWdnbGUocmFuZG9tKSwgbCArPSB5ICogeTtcbiAgICAgICAgICAgIGwgPSAociAtIChsID0gTWF0aC5zcXJ0KGwpKSkgLyBsICogc3RyZW5ndGg7XG4gICAgICAgICAgICBub2RlLnZ4ICs9ICh4ICo9IGwpICogKHIgPSAocmogKj0gcmopIC8gKHJpMiArIHJqKSk7XG4gICAgICAgICAgICBub2RlLnZ5ICs9ICh5ICo9IGwpICogcjtcbiAgICAgICAgICAgIGRhdGEudnggLT0geCAqIChyID0gMSAtIHIpO1xuICAgICAgICAgICAgZGF0YS52eSAtPSB5ICogcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHgwID4geGkgKyByIHx8IHgxIDwgeGkgLSByIHx8IHkwID4geWkgKyByIHx8IHkxIDwgeWkgLSByO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHByZXBhcmUocXVhZCkge1xuICAgIGlmIChxdWFkLmRhdGEpIHJldHVybiBxdWFkLnIgPSByYWRpaVtxdWFkLmRhdGEuaW5kZXhdO1xuICAgIGZvciAodmFyIGkgPSBxdWFkLnIgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgICBpZiAocXVhZFtpXSAmJiBxdWFkW2ldLnIgPiBxdWFkLnIpIHtcbiAgICAgICAgcXVhZC5yID0gcXVhZFtpXS5yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlO1xuICAgIHJhZGlpID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIG5vZGUgPSBub2Rlc1tpXSwgcmFkaWlbbm9kZS5pbmRleF0gPSArcmFkaXVzKG5vZGUsIGksIG5vZGVzKTtcbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfbm9kZXMsIF9yYW5kb20pIHtcbiAgICBub2RlcyA9IF9ub2RlcztcbiAgICByYW5kb20gPSBfcmFuZG9tO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5pdGVyYXRpb25zID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGl0ZXJhdGlvbnMgPSArXywgZm9yY2UpIDogaXRlcmF0aW9ucztcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9ICtfLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5yYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFkaXVzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogcmFkaXVzO1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/collide.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/constant.js": /*!***********************************************!*\ !*** ./node_modules/d3-force/src/constant.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return function() {\n return x;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2NvbnN0YW50LmpzPzlkNzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2NvbnN0YW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/constant.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/index.js": /*!********************************************!*\ !*** ./node_modules/d3-force/src/index.js ***! \********************************************/ /*! exports provided: forceCenter, forceCollide, forceLink, forceManyBody, forceRadial, forceSimulation, forceX, forceY */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _center_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./center.js */ \"./node_modules/d3-force/src/center.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceCenter\", function() { return _center_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _collide_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./collide.js */ \"./node_modules/d3-force/src/collide.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceCollide\", function() { return _collide_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _link_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./link.js */ \"./node_modules/d3-force/src/link.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceLink\", function() { return _link_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _manyBody_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./manyBody.js */ \"./node_modules/d3-force/src/manyBody.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceManyBody\", function() { return _manyBody_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _radial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./radial.js */ \"./node_modules/d3-force/src/radial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceRadial\", function() { return _radial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _simulation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./simulation.js */ \"./node_modules/d3-force/src/simulation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceSimulation\", function() { return _simulation_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _x_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./x.js */ \"./node_modules/d3-force/src/x.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceX\", function() { return _x_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _y_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./y.js */ \"./node_modules/d3-force/src/y.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceY\", function() { return _y_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2luZGV4LmpzPzBhNGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUQ7QUFDRTtBQUNOO0FBQ1E7QUFDSjtBQUNRO0FBQ2xCO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlQ2VudGVyfSBmcm9tIFwiLi9jZW50ZXIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JjZUNvbGxpZGV9IGZyb20gXCIuL2NvbGxpZGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JjZUxpbmt9IGZyb20gXCIuL2xpbmsuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JjZU1hbnlCb2R5fSBmcm9tIFwiLi9tYW55Qm9keS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlUmFkaWFsfSBmcm9tIFwiLi9yYWRpYWwuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JjZVNpbXVsYXRpb259IGZyb20gXCIuL3NpbXVsYXRpb24uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JjZVh9IGZyb20gXCIuL3guanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JjZVl9IGZyb20gXCIuL3kuanNcIjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/index.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/jiggle.js": /*!*********************************************!*\ !*** ./node_modules/d3-force/src/jiggle.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(random) {\n return (random() - 0.5) * 1e-6;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2ppZ2dsZS5qcz80MmVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2ppZ2dsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhbmRvbSkge1xuICByZXR1cm4gKHJhbmRvbSgpIC0gMC41KSAqIDFlLTY7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/jiggle.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/lcg.js": /*!******************************************!*\ !*** ./node_modules/d3-force/src/lcg.js ***! \******************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2xjZy5qcz8zNjAyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVOO0FBQ2Y7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2xjZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpbmVhcl9jb25ncnVlbnRpYWxfZ2VuZXJhdG9yI1BhcmFtZXRlcnNfaW5fY29tbW9uX3VzZVxuY29uc3QgYSA9IDE2NjQ1MjU7XG5jb25zdCBjID0gMTAxMzkwNDIyMztcbmNvbnN0IG0gPSA0Mjk0OTY3Mjk2OyAvLyAyXjMyXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICBsZXQgcyA9IDE7XG4gIHJldHVybiAoKSA9PiAocyA9IChhICogcyArIGMpICUgbSkgLyBtO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/lcg.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/link.js": /*!*******************************************!*\ !*** ./node_modules/d3-force/src/link.js ***! \*******************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jiggle.js */ \"./node_modules/d3-force/src/jiggle.js\");\n\n\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(random);\n y = target.y + target.vy - source.y - source.vy || Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2xpbmsuanM/ZjNkNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDSjs7QUFFakM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNERBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQyxnQkFBZ0I7QUFDckQsdURBQXVELE9BQU87QUFDOUQ7QUFDQSwyREFBMkQsMERBQU07QUFDakUsMkRBQTJELDBEQUFNO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0NBQW9DLE9BQU87QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdFQUF3RSw0REFBUTtBQUNoRjs7QUFFQTtBQUNBLHdFQUF3RSw0REFBUTtBQUNoRjs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2xpbmsuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBqaWdnbGUgZnJvbSBcIi4vamlnZ2xlLmpzXCI7XG5cbmZ1bmN0aW9uIGluZGV4KGQpIHtcbiAgcmV0dXJuIGQuaW5kZXg7XG59XG5cbmZ1bmN0aW9uIGZpbmQobm9kZUJ5SWQsIG5vZGVJZCkge1xuICB2YXIgbm9kZSA9IG5vZGVCeUlkLmdldChub2RlSWQpO1xuICBpZiAoIW5vZGUpIHRocm93IG5ldyBFcnJvcihcIm5vZGUgbm90IGZvdW5kOiBcIiArIG5vZGVJZCk7XG4gIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihsaW5rcykge1xuICB2YXIgaWQgPSBpbmRleCxcbiAgICAgIHN0cmVuZ3RoID0gZGVmYXVsdFN0cmVuZ3RoLFxuICAgICAgc3RyZW5ndGhzLFxuICAgICAgZGlzdGFuY2UgPSBjb25zdGFudCgzMCksXG4gICAgICBkaXN0YW5jZXMsXG4gICAgICBub2RlcyxcbiAgICAgIGNvdW50LFxuICAgICAgYmlhcyxcbiAgICAgIHJhbmRvbSxcbiAgICAgIGl0ZXJhdGlvbnMgPSAxO1xuXG4gIGlmIChsaW5rcyA9PSBudWxsKSBsaW5rcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGRlZmF1bHRTdHJlbmd0aChsaW5rKSB7XG4gICAgcmV0dXJuIDEgLyBNYXRoLm1pbihjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0sIGNvdW50W2xpbmsudGFyZ2V0LmluZGV4XSk7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGsgPSAwLCBuID0gbGlua3MubGVuZ3RoOyBrIDwgaXRlcmF0aW9uczsgKytrKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGluaywgc291cmNlLCB0YXJnZXQsIHgsIHksIGwsIGI7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbGluayA9IGxpbmtzW2ldLCBzb3VyY2UgPSBsaW5rLnNvdXJjZSwgdGFyZ2V0ID0gbGluay50YXJnZXQ7XG4gICAgICAgIHggPSB0YXJnZXQueCArIHRhcmdldC52eCAtIHNvdXJjZS54IC0gc291cmNlLnZ4IHx8IGppZ2dsZShyYW5kb20pO1xuICAgICAgICB5ID0gdGFyZ2V0LnkgKyB0YXJnZXQudnkgLSBzb3VyY2UueSAtIHNvdXJjZS52eSB8fCBqaWdnbGUocmFuZG9tKTtcbiAgICAgICAgbCA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5KTtcbiAgICAgICAgbCA9IChsIC0gZGlzdGFuY2VzW2ldKSAvIGwgKiBhbHBoYSAqIHN0cmVuZ3Roc1tpXTtcbiAgICAgICAgeCAqPSBsLCB5ICo9IGw7XG4gICAgICAgIHRhcmdldC52eCAtPSB4ICogKGIgPSBiaWFzW2ldKTtcbiAgICAgICAgdGFyZ2V0LnZ5IC09IHkgKiBiO1xuICAgICAgICBzb3VyY2UudnggKz0geCAqIChiID0gMSAtIGIpO1xuICAgICAgICBzb3VyY2UudnkgKz0geSAqIGI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG5cbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgbSA9IGxpbmtzLmxlbmd0aCxcbiAgICAgICAgbm9kZUJ5SWQgPSBuZXcgTWFwKG5vZGVzLm1hcCgoZCwgaSkgPT4gW2lkKGQsIGksIG5vZGVzKSwgZF0pKSxcbiAgICAgICAgbGluaztcblxuICAgIGZvciAoaSA9IDAsIGNvdW50ID0gbmV3IEFycmF5KG4pOyBpIDwgbTsgKytpKSB7XG4gICAgICBsaW5rID0gbGlua3NbaV0sIGxpbmsuaW5kZXggPSBpO1xuICAgICAgaWYgKHR5cGVvZiBsaW5rLnNvdXJjZSAhPT0gXCJvYmplY3RcIikgbGluay5zb3VyY2UgPSBmaW5kKG5vZGVCeUlkLCBsaW5rLnNvdXJjZSk7XG4gICAgICBpZiAodHlwZW9mIGxpbmsudGFyZ2V0ICE9PSBcIm9iamVjdFwiKSBsaW5rLnRhcmdldCA9IGZpbmQobm9kZUJ5SWQsIGxpbmsudGFyZ2V0KTtcbiAgICAgIGNvdW50W2xpbmsuc291cmNlLmluZGV4XSA9IChjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0gfHwgMCkgKyAxO1xuICAgICAgY291bnRbbGluay50YXJnZXQuaW5kZXhdID0gKGNvdW50W2xpbmsudGFyZ2V0LmluZGV4XSB8fCAwKSArIDE7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMCwgYmlhcyA9IG5ldyBBcnJheShtKTsgaSA8IG07ICsraSkge1xuICAgICAgbGluayA9IGxpbmtzW2ldLCBiaWFzW2ldID0gY291bnRbbGluay5zb3VyY2UuaW5kZXhdIC8gKGNvdW50W2xpbmsuc291cmNlLmluZGV4XSArIGNvdW50W2xpbmsudGFyZ2V0LmluZGV4XSk7XG4gICAgfVxuXG4gICAgc3RyZW5ndGhzID0gbmV3IEFycmF5KG0pLCBpbml0aWFsaXplU3RyZW5ndGgoKTtcbiAgICBkaXN0YW5jZXMgPSBuZXcgQXJyYXkobSksIGluaXRpYWxpemVEaXN0YW5jZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZVN0cmVuZ3RoKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbGlua3MubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICBzdHJlbmd0aHNbaV0gPSArc3RyZW5ndGgobGlua3NbaV0sIGksIGxpbmtzKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplRGlzdGFuY2UoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBsaW5rcy5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGRpc3RhbmNlc1tpXSA9ICtkaXN0YW5jZShsaW5rc1tpXSwgaSwgbGlua3MpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfbm9kZXMsIF9yYW5kb20pIHtcbiAgICBub2RlcyA9IF9ub2RlcztcbiAgICByYW5kb20gPSBfcmFuZG9tO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5saW5rcyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChsaW5rcyA9IF8sIGluaXRpYWxpemUoKSwgZm9yY2UpIDogbGlua3M7XG4gIH07XG5cbiAgZm9yY2UuaWQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaWQgPSBfLCBmb3JjZSkgOiBpZDtcbiAgfTtcblxuICBmb3JjZS5pdGVyYXRpb25zID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGl0ZXJhdGlvbnMgPSArXywgZm9yY2UpIDogaXRlcmF0aW9ucztcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplU3RyZW5ndGgoKSwgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UuZGlzdGFuY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGlzdGFuY2UgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZURpc3RhbmNlKCksIGZvcmNlKSA6IGRpc3RhbmNlO1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/link.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/manyBody.js": /*!***********************************************!*\ !*** ./node_modules/d3-force/src/manyBody.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-quadtree */ \"./node_modules/d3-quadtree/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jiggle.js */ \"./node_modules/d3-force/src/jiggle.js\");\n/* harmony import */ var _simulation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./simulation.js */ \"./node_modules/d3-force/src/simulation.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var nodes,\n node,\n random,\n alpha,\n strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = Object(d3_quadtree__WEBPACK_IMPORTED_MODULE_0__[\"quadtree\"])(nodes, _simulation_js__WEBPACK_IMPORTED_MODULE_3__[\"x\"], _simulation_js__WEBPACK_IMPORTED_MODULE_3__[\"y\"]).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += x * x;\n if (y === 0) y = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += x * x;\n if (y === 0) y = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL21hbnlCb2R5LmpzPzY3ZDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxQztBQUNBO0FBQ0o7QUFDSTs7QUFFdEI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw0REFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyw0REFBUSxRQUFRLGdEQUFDLEVBQUUsZ0RBQUM7QUFDeEQsMEJBQTBCLE9BQU87QUFDakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCLE9BQU87QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBLHlCQUF5QiwwREFBTTtBQUMvQix5QkFBeUIsMERBQU07QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEseUNBQXlDO0FBQ3pDO0FBQ0EsdUJBQXVCLDBEQUFNO0FBQzdCLHVCQUF1QiwwREFBTTtBQUM3QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3RUFBd0UsNERBQVE7QUFDaEY7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9tYW55Qm9keS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cXVhZHRyZWV9IGZyb20gXCJkMy1xdWFkdHJlZVwiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgamlnZ2xlIGZyb20gXCIuL2ppZ2dsZS5qc1wiO1xuaW1wb3J0IHt4LCB5fSBmcm9tIFwiLi9zaW11bGF0aW9uLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbm9kZXMsXG4gICAgICBub2RlLFxuICAgICAgcmFuZG9tLFxuICAgICAgYWxwaGEsXG4gICAgICBzdHJlbmd0aCA9IGNvbnN0YW50KC0zMCksXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICBkaXN0YW5jZU1pbjIgPSAxLFxuICAgICAgZGlzdGFuY2VNYXgyID0gSW5maW5pdHksXG4gICAgICB0aGV0YTIgPSAwLjgxO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKF8pIHtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgdHJlZSA9IHF1YWR0cmVlKG5vZGVzLCB4LCB5KS52aXNpdEFmdGVyKGFjY3VtdWxhdGUpO1xuICAgIGZvciAoYWxwaGEgPSBfLCBpID0gMDsgaSA8IG47ICsraSkgbm9kZSA9IG5vZGVzW2ldLCB0cmVlLnZpc2l0KGFwcGx5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBub2RlID0gbm9kZXNbaV0sIHN0cmVuZ3Roc1tub2RlLmluZGV4XSA9ICtzdHJlbmd0aChub2RlLCBpLCBub2Rlcyk7XG4gIH1cblxuICBmdW5jdGlvbiBhY2N1bXVsYXRlKHF1YWQpIHtcbiAgICB2YXIgc3RyZW5ndGggPSAwLCBxLCBjLCB3ZWlnaHQgPSAwLCB4LCB5LCBpO1xuXG4gICAgLy8gRm9yIGludGVybmFsIG5vZGVzLCBhY2N1bXVsYXRlIGZvcmNlcyBmcm9tIGNoaWxkIHF1YWRyYW50cy5cbiAgICBpZiAocXVhZC5sZW5ndGgpIHtcbiAgICAgIGZvciAoeCA9IHkgPSBpID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgICBpZiAoKHEgPSBxdWFkW2ldKSAmJiAoYyA9IE1hdGguYWJzKHEudmFsdWUpKSkge1xuICAgICAgICAgIHN0cmVuZ3RoICs9IHEudmFsdWUsIHdlaWdodCArPSBjLCB4ICs9IGMgKiBxLngsIHkgKz0gYyAqIHEueTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcXVhZC54ID0geCAvIHdlaWdodDtcbiAgICAgIHF1YWQueSA9IHkgLyB3ZWlnaHQ7XG4gICAgfVxuXG4gICAgLy8gRm9yIGxlYWYgbm9kZXMsIGFjY3VtdWxhdGUgZm9yY2VzIGZyb20gY29pbmNpZGVudCBxdWFkcmFudHMuXG4gICAgZWxzZSB7XG4gICAgICBxID0gcXVhZDtcbiAgICAgIHEueCA9IHEuZGF0YS54O1xuICAgICAgcS55ID0gcS5kYXRhLnk7XG4gICAgICBkbyBzdHJlbmd0aCArPSBzdHJlbmd0aHNbcS5kYXRhLmluZGV4XTtcbiAgICAgIHdoaWxlIChxID0gcS5uZXh0KTtcbiAgICB9XG5cbiAgICBxdWFkLnZhbHVlID0gc3RyZW5ndGg7XG4gIH1cblxuICBmdW5jdGlvbiBhcHBseShxdWFkLCB4MSwgXywgeDIpIHtcbiAgICBpZiAoIXF1YWQudmFsdWUpIHJldHVybiB0cnVlO1xuXG4gICAgdmFyIHggPSBxdWFkLnggLSBub2RlLngsXG4gICAgICAgIHkgPSBxdWFkLnkgLSBub2RlLnksXG4gICAgICAgIHcgPSB4MiAtIHgxLFxuICAgICAgICBsID0geCAqIHggKyB5ICogeTtcblxuICAgIC8vIEFwcGx5IHRoZSBCYXJuZXMtSHV0IGFwcHJveGltYXRpb24gaWYgcG9zc2libGUuXG4gICAgLy8gTGltaXQgZm9yY2VzIGZvciB2ZXJ5IGNsb3NlIG5vZGVzOyByYW5kb21pemUgZGlyZWN0aW9uIGlmIGNvaW5jaWRlbnQuXG4gICAgaWYgKHcgKiB3IC8gdGhldGEyIDwgbCkge1xuICAgICAgaWYgKGwgPCBkaXN0YW5jZU1heDIpIHtcbiAgICAgICAgaWYgKHggPT09IDApIHggPSBqaWdnbGUocmFuZG9tKSwgbCArPSB4ICogeDtcbiAgICAgICAgaWYgKHkgPT09IDApIHkgPSBqaWdnbGUocmFuZG9tKSwgbCArPSB5ICogeTtcbiAgICAgICAgaWYgKGwgPCBkaXN0YW5jZU1pbjIpIGwgPSBNYXRoLnNxcnQoZGlzdGFuY2VNaW4yICogbCk7XG4gICAgICAgIG5vZGUudnggKz0geCAqIHF1YWQudmFsdWUgKiBhbHBoYSAvIGw7XG4gICAgICAgIG5vZGUudnkgKz0geSAqIHF1YWQudmFsdWUgKiBhbHBoYSAvIGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHByb2Nlc3MgcG9pbnRzIGRpcmVjdGx5LlxuICAgIGVsc2UgaWYgKHF1YWQubGVuZ3RoIHx8IGwgPj0gZGlzdGFuY2VNYXgyKSByZXR1cm47XG5cbiAgICAvLyBMaW1pdCBmb3JjZXMgZm9yIHZlcnkgY2xvc2Ugbm9kZXM7IHJhbmRvbWl6ZSBkaXJlY3Rpb24gaWYgY29pbmNpZGVudC5cbiAgICBpZiAocXVhZC5kYXRhICE9PSBub2RlIHx8IHF1YWQubmV4dCkge1xuICAgICAgaWYgKHggPT09IDApIHggPSBqaWdnbGUocmFuZG9tKSwgbCArPSB4ICogeDtcbiAgICAgIGlmICh5ID09PSAwKSB5ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geSAqIHk7XG4gICAgICBpZiAobCA8IGRpc3RhbmNlTWluMikgbCA9IE1hdGguc3FydChkaXN0YW5jZU1pbjIgKiBsKTtcbiAgICB9XG5cbiAgICBkbyBpZiAocXVhZC5kYXRhICE9PSBub2RlKSB7XG4gICAgICB3ID0gc3RyZW5ndGhzW3F1YWQuZGF0YS5pbmRleF0gKiBhbHBoYSAvIGw7XG4gICAgICBub2RlLnZ4ICs9IHggKiB3O1xuICAgICAgbm9kZS52eSArPSB5ICogdztcbiAgICB9IHdoaWxlIChxdWFkID0gcXVhZC5uZXh0KTtcbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfbm9kZXMsIF9yYW5kb20pIHtcbiAgICBub2RlcyA9IF9ub2RlcztcbiAgICByYW5kb20gPSBfcmFuZG9tO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLmRpc3RhbmNlTWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRpc3RhbmNlTWluMiA9IF8gKiBfLCBmb3JjZSkgOiBNYXRoLnNxcnQoZGlzdGFuY2VNaW4yKTtcbiAgfTtcblxuICBmb3JjZS5kaXN0YW5jZU1heCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkaXN0YW5jZU1heDIgPSBfICogXywgZm9yY2UpIDogTWF0aC5zcXJ0KGRpc3RhbmNlTWF4Mik7XG4gIH07XG5cbiAgZm9yY2UudGhldGEgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhldGEyID0gXyAqIF8sIGZvcmNlKSA6IE1hdGguc3FydCh0aGV0YTIpO1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/manyBody.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/radial.js": /*!*********************************************!*\ !*** ./node_modules/d3-force/src/radial.js ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-force/src/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(radius, x, y) {\n var nodes,\n strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL3JhZGlhbC5qcz81YWRjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBcUM7O0FBRXRCO0FBQ2Y7QUFDQSxpQkFBaUIsNERBQVE7QUFDekI7QUFDQTs7QUFFQSw2Q0FBNkMsNERBQVE7QUFDckQ7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdFQUF3RSw0REFBUTtBQUNoRjs7QUFFQTtBQUNBLHNFQUFzRSw0REFBUTtBQUM5RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvcmFkaWFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhZGl1cywgeCwgeSkge1xuICB2YXIgbm9kZXMsXG4gICAgICBzdHJlbmd0aCA9IGNvbnN0YW50KDAuMSksXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICByYWRpdXNlcztcblxuICBpZiAodHlwZW9mIHJhZGl1cyAhPT0gXCJmdW5jdGlvblwiKSByYWRpdXMgPSBjb25zdGFudCgrcmFkaXVzKTtcbiAgaWYgKHggPT0gbnVsbCkgeCA9IDA7XG4gIGlmICh5ID09IG51bGwpIHkgPSAwO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKGFscGhhKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBub2Rlcy5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV0sXG4gICAgICAgICAgZHggPSBub2RlLnggLSB4IHx8IDFlLTYsXG4gICAgICAgICAgZHkgPSBub2RlLnkgLSB5IHx8IDFlLTYsXG4gICAgICAgICAgciA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSksXG4gICAgICAgICAgayA9IChyYWRpdXNlc1tpXSAtIHIpICogc3RyZW5ndGhzW2ldICogYWxwaGEgLyByO1xuICAgICAgbm9kZS52eCArPSBkeCAqIGs7XG4gICAgICBub2RlLnZ5ICs9IGR5ICogaztcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aDtcbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobik7XG4gICAgcmFkaXVzZXMgPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgcmFkaXVzZXNbaV0gPSArcmFkaXVzKG5vZGVzW2ldLCBpLCBub2Rlcyk7XG4gICAgICBzdHJlbmd0aHNbaV0gPSBpc05hTihyYWRpdXNlc1tpXSkgPyAwIDogK3N0cmVuZ3RoKG5vZGVzW2ldLCBpLCBub2Rlcyk7XG4gICAgfVxuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICBub2RlcyA9IF8sIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLnJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYWRpdXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiByYWRpdXM7XG4gIH07XG5cbiAgZm9yY2UueCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4ID0gK18sIGZvcmNlKSA6IHg7XG4gIH07XG5cbiAgZm9yY2UueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5ID0gK18sIGZvcmNlKSA6IHk7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/radial.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/simulation.js": /*!*************************************************!*\ !*** ./node_modules/d3-force/src/simulation.js ***! \*************************************************/ /*! exports provided: x, y, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"x\", function() { return x; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"y\", function() { return y; });\n/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dispatch */ \"./node_modules/d3-dispatch/src/index.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-timer */ \"./node_modules/d3-timer/src/index.js\");\n/* harmony import */ var _lcg_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lcg.js */ \"./node_modules/d3-force/src/lcg.js\");\n\n\n\n\nfunction x(d) {\n return d.x;\n}\n\nfunction y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__[\"timer\"])(step),\n event = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__[\"dispatch\"])(\"tick\", \"end\"),\n random = Object(_lcg_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL3NpbXVsYXRpb24uanM/NTQ4MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDTjtBQUNKOztBQUVwQjtBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBSztBQUNyQixjQUFjLDREQUFRO0FBQ3RCLGVBQWUsdURBQUc7O0FBRWxCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQLGlCQUFpQixPQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSwyQ0FBMkMsT0FBTztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvc2ltdWxhdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlzcGF0Y2h9IGZyb20gXCJkMy1kaXNwYXRjaFwiO1xuaW1wb3J0IHt0aW1lcn0gZnJvbSBcImQzLXRpbWVyXCI7XG5pbXBvcnQgbGNnIGZyb20gXCIuL2xjZy5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24geChkKSB7XG4gIHJldHVybiBkLng7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB5KGQpIHtcbiAgcmV0dXJuIGQueTtcbn1cblxudmFyIGluaXRpYWxSYWRpdXMgPSAxMCxcbiAgICBpbml0aWFsQW5nbGUgPSBNYXRoLlBJICogKDMgLSBNYXRoLnNxcnQoNSkpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihub2Rlcykge1xuICB2YXIgc2ltdWxhdGlvbixcbiAgICAgIGFscGhhID0gMSxcbiAgICAgIGFscGhhTWluID0gMC4wMDEsXG4gICAgICBhbHBoYURlY2F5ID0gMSAtIE1hdGgucG93KGFscGhhTWluLCAxIC8gMzAwKSxcbiAgICAgIGFscGhhVGFyZ2V0ID0gMCxcbiAgICAgIHZlbG9jaXR5RGVjYXkgPSAwLjYsXG4gICAgICBmb3JjZXMgPSBuZXcgTWFwKCksXG4gICAgICBzdGVwcGVyID0gdGltZXIoc3RlcCksXG4gICAgICBldmVudCA9IGRpc3BhdGNoKFwidGlja1wiLCBcImVuZFwiKSxcbiAgICAgIHJhbmRvbSA9IGxjZygpO1xuXG4gIGlmIChub2RlcyA9PSBudWxsKSBub2RlcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIHN0ZXAoKSB7XG4gICAgdGljaygpO1xuICAgIGV2ZW50LmNhbGwoXCJ0aWNrXCIsIHNpbXVsYXRpb24pO1xuICAgIGlmIChhbHBoYSA8IGFscGhhTWluKSB7XG4gICAgICBzdGVwcGVyLnN0b3AoKTtcbiAgICAgIGV2ZW50LmNhbGwoXCJlbmRcIiwgc2ltdWxhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdGljayhpdGVyYXRpb25zKSB7XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsIG5vZGU7XG5cbiAgICBpZiAoaXRlcmF0aW9ucyA9PT0gdW5kZWZpbmVkKSBpdGVyYXRpb25zID0gMTtcblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaXRlcmF0aW9uczsgKytrKSB7XG4gICAgICBhbHBoYSArPSAoYWxwaGFUYXJnZXQgLSBhbHBoYSkgKiBhbHBoYURlY2F5O1xuXG4gICAgICBmb3JjZXMuZm9yRWFjaChmdW5jdGlvbihmb3JjZSkge1xuICAgICAgICBmb3JjZShhbHBoYSk7XG4gICAgICB9KTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIGlmIChub2RlLmZ4ID09IG51bGwpIG5vZGUueCArPSBub2RlLnZ4ICo9IHZlbG9jaXR5RGVjYXk7XG4gICAgICAgIGVsc2Ugbm9kZS54ID0gbm9kZS5meCwgbm9kZS52eCA9IDA7XG4gICAgICAgIGlmIChub2RlLmZ5ID09IG51bGwpIG5vZGUueSArPSBub2RlLnZ5ICo9IHZlbG9jaXR5RGVjYXk7XG4gICAgICAgIGVsc2Ugbm9kZS55ID0gbm9kZS5meSwgbm9kZS52eSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpbXVsYXRpb247XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplTm9kZXMoKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBub2Rlcy5sZW5ndGgsIG5vZGU7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tpXSwgbm9kZS5pbmRleCA9IGk7XG4gICAgICBpZiAobm9kZS5meCAhPSBudWxsKSBub2RlLnggPSBub2RlLmZ4O1xuICAgICAgaWYgKG5vZGUuZnkgIT0gbnVsbCkgbm9kZS55ID0gbm9kZS5meTtcbiAgICAgIGlmIChpc05hTihub2RlLngpIHx8IGlzTmFOKG5vZGUueSkpIHtcbiAgICAgICAgdmFyIHJhZGl1cyA9IGluaXRpYWxSYWRpdXMgKiBNYXRoLnNxcnQoMC41ICsgaSksIGFuZ2xlID0gaSAqIGluaXRpYWxBbmdsZTtcbiAgICAgICAgbm9kZS54ID0gcmFkaXVzICogTWF0aC5jb3MoYW5nbGUpO1xuICAgICAgICBub2RlLnkgPSByYWRpdXMgKiBNYXRoLnNpbihhbmdsZSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNOYU4obm9kZS52eCkgfHwgaXNOYU4obm9kZS52eSkpIHtcbiAgICAgICAgbm9kZS52eCA9IG5vZGUudnkgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVGb3JjZShmb3JjZSkge1xuICAgIGlmIChmb3JjZS5pbml0aWFsaXplKSBmb3JjZS5pbml0aWFsaXplKG5vZGVzLCByYW5kb20pO1xuICAgIHJldHVybiBmb3JjZTtcbiAgfVxuXG4gIGluaXRpYWxpemVOb2RlcygpO1xuXG4gIHJldHVybiBzaW11bGF0aW9uID0ge1xuICAgIHRpY2s6IHRpY2ssXG5cbiAgICByZXN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBzdGVwcGVyLnJlc3RhcnQoc3RlcCksIHNpbXVsYXRpb247XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHN0ZXBwZXIuc3RvcCgpLCBzaW11bGF0aW9uO1xuICAgIH0sXG5cbiAgICBub2RlczogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAobm9kZXMgPSBfLCBpbml0aWFsaXplTm9kZXMoKSwgZm9yY2VzLmZvckVhY2goaW5pdGlhbGl6ZUZvcmNlKSwgc2ltdWxhdGlvbikgOiBub2RlcztcbiAgICB9LFxuXG4gICAgYWxwaGE6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhID0gK18sIHNpbXVsYXRpb24pIDogYWxwaGE7XG4gICAgfSxcblxuICAgIGFscGhhTWluOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChhbHBoYU1pbiA9ICtfLCBzaW11bGF0aW9uKSA6IGFscGhhTWluO1xuICAgIH0sXG5cbiAgICBhbHBoYURlY2F5OiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChhbHBoYURlY2F5ID0gK18sIHNpbXVsYXRpb24pIDogK2FscGhhRGVjYXk7XG4gICAgfSxcblxuICAgIGFscGhhVGFyZ2V0OiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChhbHBoYVRhcmdldCA9ICtfLCBzaW11bGF0aW9uKSA6IGFscGhhVGFyZ2V0O1xuICAgIH0sXG5cbiAgICB2ZWxvY2l0eURlY2F5OiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh2ZWxvY2l0eURlY2F5ID0gMSAtIF8sIHNpbXVsYXRpb24pIDogMSAtIHZlbG9jaXR5RGVjYXk7XG4gICAgfSxcblxuICAgIHJhbmRvbVNvdXJjZTogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFuZG9tID0gXywgZm9yY2VzLmZvckVhY2goaW5pdGlhbGl6ZUZvcmNlKSwgc2ltdWxhdGlvbikgOiByYW5kb207XG4gICAgfSxcblxuICAgIGZvcmNlOiBmdW5jdGlvbihuYW1lLCBfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyAoKF8gPT0gbnVsbCA/IGZvcmNlcy5kZWxldGUobmFtZSkgOiBmb3JjZXMuc2V0KG5hbWUsIGluaXRpYWxpemVGb3JjZShfKSkpLCBzaW11bGF0aW9uKSA6IGZvcmNlcy5nZXQobmFtZSk7XG4gICAgfSxcblxuICAgIGZpbmQ6IGZ1bmN0aW9uKHgsIHksIHJhZGl1cykge1xuICAgICAgdmFyIGkgPSAwLFxuICAgICAgICAgIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgICAgZHgsXG4gICAgICAgICAgZHksXG4gICAgICAgICAgZDIsXG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBjbG9zZXN0O1xuXG4gICAgICBpZiAocmFkaXVzID09IG51bGwpIHJhZGl1cyA9IEluZmluaXR5O1xuICAgICAgZWxzZSByYWRpdXMgKj0gcmFkaXVzO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgZHggPSB4IC0gbm9kZS54O1xuICAgICAgICBkeSA9IHkgLSBub2RlLnk7XG4gICAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgICAgIGlmIChkMiA8IHJhZGl1cykgY2xvc2VzdCA9IG5vZGUsIHJhZGl1cyA9IGQyO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2xvc2VzdDtcbiAgICB9LFxuXG4gICAgb246IGZ1bmN0aW9uKG5hbWUsIF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMSA/IChldmVudC5vbihuYW1lLCBfKSwgc2ltdWxhdGlvbikgOiBldmVudC5vbihuYW1lKTtcbiAgICB9XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/simulation.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/x.js": /*!****************************************!*\ !*** ./node_modules/d3-force/src/x.js ***! \****************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-force/src/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n var strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : x;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL3guanM/NzI3NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXFDOztBQUV0QjtBQUNmLGlCQUFpQiw0REFBUTtBQUN6QjtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLDREQUFROztBQUUzQztBQUNBLDJDQUEyQyxPQUFPO0FBQ2xEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdFQUF3RSw0REFBUTtBQUNoRjs7QUFFQTtBQUNBLGlFQUFpRSw0REFBUTtBQUN6RTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL3guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICB2YXIgc3RyZW5ndGggPSBjb25zdGFudCgwLjEpLFxuICAgICAgbm9kZXMsXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICB4ejtcblxuICBpZiAodHlwZW9mIHggIT09IFwiZnVuY3Rpb25cIikgeCA9IGNvbnN0YW50KHggPT0gbnVsbCA/IDAgOiAreCk7XG5cbiAgZnVuY3Rpb24gZm9yY2UoYWxwaGEpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLnZ4ICs9ICh4eltpXSAtIG5vZGUueCkgKiBzdHJlbmd0aHNbaV0gKiBhbHBoYTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aDtcbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobik7XG4gICAgeHogPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgc3RyZW5ndGhzW2ldID0gaXNOYU4oeHpbaV0gPSAreChub2Rlc1tpXSwgaSwgbm9kZXMpKSA/IDAgOiArc3RyZW5ndGgobm9kZXNbaV0sIGksIG5vZGVzKTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oXykge1xuICAgIG5vZGVzID0gXztcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiB4O1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/x.js\n"); /***/ }), /***/ "./node_modules/d3-force/src/y.js": /*!****************************************!*\ !*** ./node_modules/d3-force/src/y.js ***! \****************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-force/src/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(y) {\n var strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : y;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL3kuanM/ZDJiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXFDOztBQUV0QjtBQUNmLGlCQUFpQiw0REFBUTtBQUN6QjtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLDREQUFROztBQUUzQztBQUNBLDJDQUEyQyxPQUFPO0FBQ2xEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdFQUF3RSw0REFBUTtBQUNoRjs7QUFFQTtBQUNBLGlFQUFpRSw0REFBUTtBQUN6RTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL3kuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeSkge1xuICB2YXIgc3RyZW5ndGggPSBjb25zdGFudCgwLjEpLFxuICAgICAgbm9kZXMsXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICB5ejtcblxuICBpZiAodHlwZW9mIHkgIT09IFwiZnVuY3Rpb25cIikgeSA9IGNvbnN0YW50KHkgPT0gbnVsbCA/IDAgOiAreSk7XG5cbiAgZnVuY3Rpb24gZm9yY2UoYWxwaGEpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLnZ5ICs9ICh5eltpXSAtIG5vZGUueSkgKiBzdHJlbmd0aHNbaV0gKiBhbHBoYTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aDtcbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobik7XG4gICAgeXogPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgc3RyZW5ndGhzW2ldID0gaXNOYU4oeXpbaV0gPSAreShub2Rlc1tpXSwgaSwgbm9kZXMpKSA/IDAgOiArc3RyZW5ndGgobm9kZXNbaV0sIGksIG5vZGVzKTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oXykge1xuICAgIG5vZGVzID0gXztcbiAgICBpbml0aWFsaXplKCk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiB5O1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-force/src/y.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/array.js": /*!**************************************************!*\ !*** ./node_modules/d3-interpolate/src/array.js ***! \**************************************************/ /*! exports provided: default, genericArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genericArray\", function() { return genericArray; });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/d3-interpolate/src/value.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return (Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : genericArray)(a, b);\n});\n\nfunction genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2FycmF5LmpzPzY3MzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDNkI7O0FBRTdDO0FBQ2YsVUFBVSxxRUFBYSxNQUFNLHVEQUFXO0FBQ3hDLENBQUM7O0FBRU07QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsUUFBUSxhQUFhLHlEQUFLO0FBQ3ZDLFFBQVEsUUFBUTs7QUFFaEI7QUFDQSxlQUFlLFFBQVE7QUFDdkI7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9hcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB2YWx1ZSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuaW1wb3J0IG51bWJlckFycmF5LCB7aXNOdW1iZXJBcnJheX0gZnJvbSBcIi4vbnVtYmVyQXJyYXkuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gKGlzTnVtYmVyQXJyYXkoYikgPyBudW1iZXJBcnJheSA6IGdlbmVyaWNBcnJheSkoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmljQXJyYXkoYSwgYikge1xuICB2YXIgbmIgPSBiID8gYi5sZW5ndGggOiAwLFxuICAgICAgbmEgPSBhID8gTWF0aC5taW4obmIsIGEubGVuZ3RoKSA6IDAsXG4gICAgICB4ID0gbmV3IEFycmF5KG5hKSxcbiAgICAgIGMgPSBuZXcgQXJyYXkobmIpLFxuICAgICAgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbmE7ICsraSkgeFtpXSA9IHZhbHVlKGFbaV0sIGJbaV0pO1xuICBmb3IgKDsgaSA8IG5iOyArK2kpIGNbaV0gPSBiW2ldO1xuXG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChpID0gMDsgaSA8IG5hOyArK2kpIGNbaV0gPSB4W2ldKHQpO1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/array.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/basis.js": /*!**************************************************!*\ !*** ./node_modules/d3-interpolate/src/basis.js ***! \**************************************************/ /*! exports provided: basis, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"basis\", function() { return basis; });\nfunction basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Jhc2lzLmpzP2M4NGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvYmFzaXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gYmFzaXModDEsIHYwLCB2MSwgdjIsIHYzKSB7XG4gIHZhciB0MiA9IHQxICogdDEsIHQzID0gdDIgKiB0MTtcbiAgcmV0dXJuICgoMSAtIDMgKiB0MSArIDMgKiB0MiAtIHQzKSAqIHYwXG4gICAgICArICg0IC0gNiAqIHQyICsgMyAqIHQzKSAqIHYxXG4gICAgICArICgxICsgMyAqIHQxICsgMyAqIHQyIC0gMyAqIHQzKSAqIHYyXG4gICAgICArIHQzICogdjMpIC8gNjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWVzKSB7XG4gIHZhciBuID0gdmFsdWVzLmxlbmd0aCAtIDE7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdmFyIGkgPSB0IDw9IDAgPyAodCA9IDApIDogdCA+PSAxID8gKHQgPSAxLCBuIC0gMSkgOiBNYXRoLmZsb29yKHQgKiBuKSxcbiAgICAgICAgdjEgPSB2YWx1ZXNbaV0sXG4gICAgICAgIHYyID0gdmFsdWVzW2kgKyAxXSxcbiAgICAgICAgdjAgPSBpID4gMCA/IHZhbHVlc1tpIC0gMV0gOiAyICogdjEgLSB2MixcbiAgICAgICAgdjMgPSBpIDwgbiAtIDEgPyB2YWx1ZXNbaSArIDJdIDogMiAqIHYyIC0gdjE7XG4gICAgcmV0dXJuIGJhc2lzKCh0IC0gaSAvIG4pICogbiwgdjAsIHYxLCB2MiwgdjMpO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/basis.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/basisClosed.js": /*!********************************************************!*\ !*** ./node_modules/d3-interpolate/src/basisClosed.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/d3-interpolate/src/basis.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return Object(_basis_js__WEBPACK_IMPORTED_MODULE_0__[\"basis\"])((t - i / n) * n, v0, v1, v2, v3);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Jhc2lzQ2xvc2VkLmpzPzRiY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFpQzs7QUFFbEI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdURBQUs7QUFDaEI7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpc0Nsb3NlZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YmFzaXN9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcykge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGg7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yKCgodCAlPSAxKSA8IDAgPyArK3QgOiB0KSAqIG4pLFxuICAgICAgICB2MCA9IHZhbHVlc1soaSArIG4gLSAxKSAlIG5dLFxuICAgICAgICB2MSA9IHZhbHVlc1tpICUgbl0sXG4gICAgICAgIHYyID0gdmFsdWVzWyhpICsgMSkgJSBuXSxcbiAgICAgICAgdjMgPSB2YWx1ZXNbKGkgKyAyKSAlIG5dO1xuICAgIHJldHVybiBiYXNpcygodCAtIGkgLyBuKSAqIG4sIHYwLCB2MSwgdjIsIHYzKTtcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/basisClosed.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/color.js": /*!**************************************************!*\ !*** ./node_modules/d3-interpolate/src/color.js ***! \**************************************************/ /*! exports provided: hue, gamma, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hue\", function() { return hue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gamma\", function() { return gamma; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return nogamma; });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-interpolate/src/constant.js\");\n\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nfunction hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n };\n}\n\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbG9yLmpzP2IwNTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxQzs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxrRkFBa0YsNERBQVE7QUFDMUY7O0FBRU87QUFDUDtBQUNBLDBDQUEwQyw0REFBUTtBQUNsRDtBQUNBOztBQUVlO0FBQ2Y7QUFDQSw0QkFBNEIsNERBQVE7QUFDcEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5cbmZ1bmN0aW9uIGxpbmVhcihhLCBkKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGEgKyB0ICogZDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZXhwb25lbnRpYWwoYSwgYiwgeSkge1xuICByZXR1cm4gYSA9IE1hdGgucG93KGEsIHkpLCBiID0gTWF0aC5wb3coYiwgeSkgLSBhLCB5ID0gMSAvIHksIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gTWF0aC5wb3coYSArIHQgKiBiLCB5KTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh1ZShhLCBiKSB7XG4gIHZhciBkID0gYiAtIGE7XG4gIHJldHVybiBkID8gbGluZWFyKGEsIGQgPiAxODAgfHwgZCA8IC0xODAgPyBkIC0gMzYwICogTWF0aC5yb3VuZChkIC8gMzYwKSA6IGQpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnYW1tYSh5KSB7XG4gIHJldHVybiAoeSA9ICt5KSA9PT0gMSA/IG5vZ2FtbWEgOiBmdW5jdGlvbihhLCBiKSB7XG4gICAgcmV0dXJuIGIgLSBhID8gZXhwb25lbnRpYWwoYSwgYiwgeSkgOiBjb25zdGFudChpc05hTihhKSA/IGIgOiBhKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9nYW1tYShhLCBiKSB7XG4gIHZhciBkID0gYiAtIGE7XG4gIHJldHVybiBkID8gbGluZWFyKGEsIGQpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/color.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/constant.js": /*!*****************************************************!*\ !*** ./node_modules/d3-interpolate/src/constant.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return function() {\n return x;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbnN0YW50LmpzP2M2OTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbnN0YW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/constant.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/cubehelix.js": /*!******************************************************!*\ !*** ./node_modules/d3-interpolate/src/cubehelix.js ***! \******************************************************/ /*! exports provided: default, cubehelixLong */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubehelixLong\", function() { return cubehelixLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(end)).h),\n s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar cubehelixLong = cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2N1YmVoZWxpeC5qcz8zODcyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFEO0FBQ2Y7O0FBRXRDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQiwwREFBYyxtQkFBbUIsMERBQWM7QUFDMUUsY0FBYyx5REFBSztBQUNuQixjQUFjLHlEQUFLO0FBQ25CLG9CQUFvQix5REFBSztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVlLHlFQUFVLDZDQUFHLENBQUMsRUFBQztBQUN2Qiw4QkFBOEIsaURBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2N1YmVoZWxpeC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3ViZWhlbGl4IGFzIGNvbG9yQ3ViZWhlbGl4fSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCBjb2xvciwge2h1ZX0gZnJvbSBcIi4vY29sb3IuanNcIjtcblxuZnVuY3Rpb24gY3ViZWhlbGl4KGh1ZSkge1xuICByZXR1cm4gKGZ1bmN0aW9uIGN1YmVoZWxpeEdhbW1hKHkpIHtcbiAgICB5ID0gK3k7XG5cbiAgICBmdW5jdGlvbiBjdWJlaGVsaXgoc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGggPSBodWUoKHN0YXJ0ID0gY29sb3JDdWJlaGVsaXgoc3RhcnQpKS5oLCAoZW5kID0gY29sb3JDdWJlaGVsaXgoZW5kKSkuaCksXG4gICAgICAgICAgcyA9IGNvbG9yKHN0YXJ0LnMsIGVuZC5zKSxcbiAgICAgICAgICBsID0gY29sb3Ioc3RhcnQubCwgZW5kLmwpLFxuICAgICAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgICBzdGFydC5oID0gaCh0KTtcbiAgICAgICAgc3RhcnQucyA9IHModCk7XG4gICAgICAgIHN0YXJ0LmwgPSBsKE1hdGgucG93KHQsIHkpKTtcbiAgICAgICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgICAgIHJldHVybiBzdGFydCArIFwiXCI7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGN1YmVoZWxpeC5nYW1tYSA9IGN1YmVoZWxpeEdhbW1hO1xuXG4gICAgcmV0dXJuIGN1YmVoZWxpeDtcbiAgfSkoMSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGN1YmVoZWxpeChodWUpO1xuZXhwb3J0IHZhciBjdWJlaGVsaXhMb25nID0gY3ViZWhlbGl4KGNvbG9yKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/cubehelix.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/date.js": /*!*************************************************!*\ !*** ./node_modules/d3-interpolate/src/date.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2RhdGUuanM/MWI2ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9kYXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgZCA9IG5ldyBEYXRlO1xuICByZXR1cm4gYSA9ICthLCBiID0gK2IsIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gZC5zZXRUaW1lKGEgKiAoMSAtIHQpICsgYiAqIHQpLCBkO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/date.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/discrete.js": /*!*****************************************************!*\ !*** ./node_modules/d3-interpolate/src/discrete.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Rpc2NyZXRlLmpzPzUwNjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvZGlzY3JldGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihyYW5nZSkge1xuICB2YXIgbiA9IHJhbmdlLmxlbmd0aDtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gcmFuZ2VbTWF0aC5tYXgoMCwgTWF0aC5taW4obiAtIDEsIE1hdGguZmxvb3IodCAqIG4pKSldO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/discrete.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/hcl.js": /*!************************************************!*\ !*** ./node_modules/d3-interpolate/src/hcl.js ***! \************************************************/ /*! exports provided: default, hclLong */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hclLong\", function() { return hclLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(end)).h),\n c = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.c, end.c),\n l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hclLong = hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2hjbC5qcz81YWNmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ0g7O0FBRXRDO0FBQ0E7QUFDQSx5QkFBeUIsb0RBQVEsbUJBQW1CLG9EQUFRO0FBQzVELFlBQVkseURBQUs7QUFDakIsWUFBWSx5REFBSztBQUNqQixrQkFBa0IseURBQUs7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLG1FQUFJLDZDQUFHLENBQUMsRUFBQztBQUNqQixrQkFBa0IsaURBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2hjbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aGNsIGFzIGNvbG9ySGNsfSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCBjb2xvciwge2h1ZX0gZnJvbSBcIi4vY29sb3IuanNcIjtcblxuZnVuY3Rpb24gaGNsKGh1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgIHZhciBoID0gaHVlKChzdGFydCA9IGNvbG9ySGNsKHN0YXJ0KSkuaCwgKGVuZCA9IGNvbG9ySGNsKGVuZCkpLmgpLFxuICAgICAgICBjID0gY29sb3Ioc3RhcnQuYywgZW5kLmMpLFxuICAgICAgICBsID0gY29sb3Ioc3RhcnQubCwgZW5kLmwpLFxuICAgICAgICBvcGFjaXR5ID0gY29sb3Ioc3RhcnQub3BhY2l0eSwgZW5kLm9wYWNpdHkpO1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICBzdGFydC5oID0gaCh0KTtcbiAgICAgIHN0YXJ0LmMgPSBjKHQpO1xuICAgICAgc3RhcnQubCA9IGwodCk7XG4gICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgIHJldHVybiBzdGFydCArIFwiXCI7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBoY2woaHVlKTtcbmV4cG9ydCB2YXIgaGNsTG9uZyA9IGhjbChjb2xvcik7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/hcl.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/hsl.js": /*!************************************************!*\ !*** ./node_modules/d3-interpolate/src/hsl.js ***! \************************************************/ /*! exports provided: default, hslLong */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslLong\", function() { return hslLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(end)).h),\n s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hslLong = hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2hzbC5qcz83MGQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ0g7O0FBRXRDO0FBQ0E7QUFDQSx5QkFBeUIsb0RBQVEsbUJBQW1CLG9EQUFRO0FBQzVELFlBQVkseURBQUs7QUFDakIsWUFBWSx5REFBSztBQUNqQixrQkFBa0IseURBQUs7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLG1FQUFJLDZDQUFHLENBQUMsRUFBQztBQUNqQixrQkFBa0IsaURBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2hzbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aHNsIGFzIGNvbG9ySHNsfSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCBjb2xvciwge2h1ZX0gZnJvbSBcIi4vY29sb3IuanNcIjtcblxuZnVuY3Rpb24gaHNsKGh1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgIHZhciBoID0gaHVlKChzdGFydCA9IGNvbG9ySHNsKHN0YXJ0KSkuaCwgKGVuZCA9IGNvbG9ySHNsKGVuZCkpLmgpLFxuICAgICAgICBzID0gY29sb3Ioc3RhcnQucywgZW5kLnMpLFxuICAgICAgICBsID0gY29sb3Ioc3RhcnQubCwgZW5kLmwpLFxuICAgICAgICBvcGFjaXR5ID0gY29sb3Ioc3RhcnQub3BhY2l0eSwgZW5kLm9wYWNpdHkpO1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICBzdGFydC5oID0gaCh0KTtcbiAgICAgIHN0YXJ0LnMgPSBzKHQpO1xuICAgICAgc3RhcnQubCA9IGwodCk7XG4gICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgIHJldHVybiBzdGFydCArIFwiXCI7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBoc2woaHVlKTtcbmV4cG9ydCB2YXIgaHNsTG9uZyA9IGhzbChjb2xvcik7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/hsl.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/hue.js": /*!************************************************!*\ !*** ./node_modules/d3-interpolate/src/hue.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var i = Object(_color_js__WEBPACK_IMPORTED_MODULE_0__[\"hue\"])(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2h1ZS5qcz81M2EzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBK0I7O0FBRWhCO0FBQ2YsVUFBVSxxREFBRztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvaHVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtodWV9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGkgPSBodWUoK2EsICtiKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgeCA9IGkodCk7XG4gICAgcmV0dXJuIHggLSAzNjAgKiBNYXRoLmZsb29yKHggLyAzNjApO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/hue.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/index.js": /*!**************************************************!*\ !*** ./node_modules/d3-interpolate/src/index.js ***! \**************************************************/ /*! exports provided: interpolate, interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateDate, interpolateDiscrete, interpolateHue, interpolateNumber, interpolateNumberArray, interpolateObject, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateHsl, interpolateHslLong, interpolateLab, interpolateHcl, interpolateHclLong, interpolateCubehelix, interpolateCubehelixLong, piecewise, quantize */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/d3-interpolate/src/value.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return _value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/d3-interpolate/src/array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateArray\", function() { return _array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/d3-interpolate/src/basis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasis\", function() { return _basis_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasisClosed\", function() { return _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./date.js */ \"./node_modules/d3-interpolate/src/date.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDate\", function() { return _date_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _discrete_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./discrete.js */ \"./node_modules/d3-interpolate/src/discrete.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDiscrete\", function() { return _discrete_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _hue_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hue.js */ \"./node_modules/d3-interpolate/src/hue.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHue\", function() { return _hue_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./number.js */ \"./node_modules/d3-interpolate/src/number.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumber\", function() { return _number_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/d3-interpolate/src/numberArray.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumberArray\", function() { return _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./object.js */ \"./node_modules/d3-interpolate/src/object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateObject\", function() { return _object_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _round_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./round.js */ \"./node_modules/d3-interpolate/src/round.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRound\", function() { return _round_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./string.js */ \"./node_modules/d3-interpolate/src/string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateString\", function() { return _string_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _transform_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./transform/index.js */ \"./node_modules/d3-interpolate/src/transform/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformCss\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformSvg\"]; });\n\n/* harmony import */ var _zoom_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./zoom.js */ \"./node_modules/d3-interpolate/src/zoom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateZoom\", function() { return _zoom_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/d3-interpolate/src/rgb.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgb\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasis\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasis\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasisClosed\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasisClosed\"]; });\n\n/* harmony import */ var _hsl_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./hsl.js */ \"./node_modules/d3-interpolate/src/hsl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHsl\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHslLong\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"hslLong\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/d3-interpolate/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateLab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _hcl_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./hcl.js */ \"./node_modules/d3-interpolate/src/hcl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHcl\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHclLong\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"hclLong\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/d3-interpolate/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelixLong\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"cubehelixLong\"]; });\n\n/* harmony import */ var _piecewise_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./piecewise.js */ \"./node_modules/d3-interpolate/src/piecewise.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"piecewise\", function() { return _piecewise_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./quantize.js */ \"./node_modules/d3-interpolate/src/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantize\", function() { return _quantize_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2luZGV4LmpzP2E0M2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0Q7QUFDSztBQUNBO0FBQ1k7QUFDZDtBQUNRO0FBQ1Y7QUFDTTtBQUNVO0FBQ1Y7QUFDRjtBQUNFO0FBQzZCO0FBQ2pDO0FBQzRFO0FBQy9DO0FBQy9CO0FBQytCO0FBQ3dCO0FBQ3REO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlfSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlQXJyYXl9IGZyb20gXCIuL2FycmF5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVCYXNpc30gZnJvbSBcIi4vYmFzaXMuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkfSBmcm9tIFwiLi9iYXNpc0Nsb3NlZC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlRGF0ZX0gZnJvbSBcIi4vZGF0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlRGlzY3JldGV9IGZyb20gXCIuL2Rpc2NyZXRlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVIdWV9IGZyb20gXCIuL2h1ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlTnVtYmVyfSBmcm9tIFwiLi9udW1iZXIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZU51bWJlckFycmF5fSBmcm9tIFwiLi9udW1iZXJBcnJheS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlT2JqZWN0fSBmcm9tIFwiLi9vYmplY3QuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVJvdW5kfSBmcm9tIFwiLi9yb3VuZC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlU3RyaW5nfSBmcm9tIFwiLi9zdHJpbmcuanNcIjtcbmV4cG9ydCB7aW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3MsIGludGVycG9sYXRlVHJhbnNmb3JtU3ZnfSBmcm9tIFwiLi90cmFuc2Zvcm0vaW5kZXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVpvb219IGZyb20gXCIuL3pvb20uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVJnYiwgcmdiQmFzaXMgYXMgaW50ZXJwb2xhdGVSZ2JCYXNpcywgcmdiQmFzaXNDbG9zZWQgYXMgaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZH0gZnJvbSBcIi4vcmdiLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVIc2wsIGhzbExvbmcgYXMgaW50ZXJwb2xhdGVIc2xMb25nfSBmcm9tIFwiLi9oc2wuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUxhYn0gZnJvbSBcIi4vbGFiLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVIY2wsIGhjbExvbmcgYXMgaW50ZXJwb2xhdGVIY2xMb25nfSBmcm9tIFwiLi9oY2wuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUN1YmVoZWxpeCwgY3ViZWhlbGl4TG9uZyBhcyBpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmd9IGZyb20gXCIuL2N1YmVoZWxpeC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHBpZWNld2lzZX0gZnJvbSBcIi4vcGllY2V3aXNlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcXVhbnRpemV9IGZyb20gXCIuL3F1YW50aXplLmpzXCI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/index.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/lab.js": /*!************************************************!*\ !*** ./node_modules/d3-interpolate/src/lab.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction lab(start, end) {\n var l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(start)).l, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(end)).l),\n a = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.a, end.a),\n b = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.b, end.b),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2xhYi5qcz8xMjVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ1Y7O0FBRWhCO0FBQ2YsVUFBVSx5REFBSyxVQUFVLG9EQUFRLG1CQUFtQixvREFBUTtBQUM1RCxVQUFVLHlEQUFLO0FBQ2YsVUFBVSx5REFBSztBQUNmLGdCQUFnQix5REFBSztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9sYWIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2xhYiBhcyBjb2xvckxhYn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgY29sb3IgZnJvbSBcIi4vY29sb3IuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFiKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGwgPSBjb2xvcigoc3RhcnQgPSBjb2xvckxhYihzdGFydCkpLmwsIChlbmQgPSBjb2xvckxhYihlbmQpKS5sKSxcbiAgICAgIGEgPSBjb2xvcihzdGFydC5hLCBlbmQuYSksXG4gICAgICBiID0gY29sb3Ioc3RhcnQuYiwgZW5kLmIpLFxuICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBzdGFydC5sID0gbCh0KTtcbiAgICBzdGFydC5hID0gYSh0KTtcbiAgICBzdGFydC5iID0gYih0KTtcbiAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/lab.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/number.js": /*!***************************************************!*\ !*** ./node_modules/d3-interpolate/src/number.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlci5qcz9lMzE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBhID0gK2EsIGIgPSArYiwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBhICogKDEgLSB0KSArIGIgKiB0O1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/number.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/numberArray.js": /*!********************************************************!*\ !*** ./node_modules/d3-interpolate/src/numberArray.js ***! \********************************************************/ /*! exports provided: default, isNumberArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberArray\", function() { return isNumberArray; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n});\n\nfunction isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlckFycmF5LmpzPzUxZGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlckFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICBpZiAoIWIpIGIgPSBbXTtcbiAgdmFyIG4gPSBhID8gTWF0aC5taW4oYi5sZW5ndGgsIGEubGVuZ3RoKSA6IDAsXG4gICAgICBjID0gYi5zbGljZSgpLFxuICAgICAgaTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBjW2ldID0gYVtpXSAqICgxIC0gdCkgKyBiW2ldICogdDtcbiAgICByZXR1cm4gYztcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyQXJyYXkoeCkge1xuICByZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KHgpICYmICEoeCBpbnN0YW5jZW9mIERhdGFWaWV3KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/numberArray.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/object.js": /*!***************************************************!*\ !*** ./node_modules/d3-interpolate/src/object.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/d3-interpolate/src/value.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL29iamVjdC5qcz83MWJkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBK0I7O0FBRWhCO0FBQ2YsWUFBWTtBQUNaLFlBQVk7QUFDWjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLHlEQUFLO0FBQ2xCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9vYmplY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdmFsdWUgZnJvbSBcIi4vdmFsdWUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgaSA9IHt9LFxuICAgICAgYyA9IHt9LFxuICAgICAgaztcblxuICBpZiAoYSA9PT0gbnVsbCB8fCB0eXBlb2YgYSAhPT0gXCJvYmplY3RcIikgYSA9IHt9O1xuICBpZiAoYiA9PT0gbnVsbCB8fCB0eXBlb2YgYiAhPT0gXCJvYmplY3RcIikgYiA9IHt9O1xuXG4gIGZvciAoayBpbiBiKSB7XG4gICAgaWYgKGsgaW4gYSkge1xuICAgICAgaVtrXSA9IHZhbHVlKGFba10sIGJba10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjW2tdID0gYltrXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIGZvciAoayBpbiBpKSBjW2tdID0gaVtrXSh0KTtcbiAgICByZXR1cm4gYztcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/object.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/piecewise.js": /*!******************************************************!*\ !*** ./node_modules/d3-interpolate/src/piecewise.js ***! \******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return piecewise; });\nfunction piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3BpZWNld2lzZS5qcz9hYzBjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9waWVjZXdpc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwaWVjZXdpc2UoaW50ZXJwb2xhdGUsIHZhbHVlcykge1xuICB2YXIgaSA9IDAsIG4gPSB2YWx1ZXMubGVuZ3RoIC0gMSwgdiA9IHZhbHVlc1swXSwgSSA9IG5ldyBBcnJheShuIDwgMCA/IDAgOiBuKTtcbiAgd2hpbGUgKGkgPCBuKSBJW2ldID0gaW50ZXJwb2xhdGUodiwgdiA9IHZhbHVlc1srK2ldKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IE1hdGgubWF4KDAsIE1hdGgubWluKG4gLSAxLCBNYXRoLmZsb29yKHQgKj0gbikpKTtcbiAgICByZXR1cm4gSVtpXSh0IC0gaSk7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/piecewise.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/quantize.js": /*!*****************************************************!*\ !*** ./node_modules/d3-interpolate/src/quantize.js ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3F1YW50aXplLmpzPzFhZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9xdWFudGl6ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGludGVycG9sYXRvciwgbikge1xuICB2YXIgc2FtcGxlcyA9IG5ldyBBcnJheShuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHNhbXBsZXNbaV0gPSBpbnRlcnBvbGF0b3IoaSAvIChuIC0gMSkpO1xuICByZXR1cm4gc2FtcGxlcztcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/quantize.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/rgb.js": /*!************************************************!*\ !*** ./node_modules/d3-interpolate/src/rgb.js ***! \************************************************/ /*! exports provided: default, rgbBasis, rgbBasisClosed */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasis\", function() { return rgbBasis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasisClosed\", function() { return rgbBasisClosed; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/d3-interpolate/src/basis.js\");\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function rgbGamma(y) {\n var color = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"gamma\"])(y);\n\n function rgb(start, end) {\n var r = color((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(start)).r, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1));\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nvar rgbBasis = rgbSpline(_basis_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nvar rgbBasisClosed = rgbSpline(_basisClosed_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3JnYi5qcz9lMzYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ1Y7QUFDWTtBQUNEOztBQUUzQjtBQUNmLGNBQWMsdURBQUs7O0FBRW5CO0FBQ0EsMkJBQTJCLG9EQUFRLG1CQUFtQixvREFBUTtBQUM5RDtBQUNBO0FBQ0Esa0JBQWtCLHlEQUFPO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDLElBQUksRUFBQzs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixjQUFjLG9EQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPLHlCQUF5QixpREFBSztBQUM5QiwrQkFBK0IsdURBQVciLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3JnYi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cmdiIGFzIGNvbG9yUmdifSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCBiYXNpcyBmcm9tIFwiLi9iYXNpcy5qc1wiO1xuaW1wb3J0IGJhc2lzQ2xvc2VkIGZyb20gXCIuL2Jhc2lzQ2xvc2VkLmpzXCI7XG5pbXBvcnQgbm9nYW1tYSwge2dhbW1hfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gcmdiR2FtbWEoeSkge1xuICB2YXIgY29sb3IgPSBnYW1tYSh5KTtcblxuICBmdW5jdGlvbiByZ2Ioc3RhcnQsIGVuZCkge1xuICAgIHZhciByID0gY29sb3IoKHN0YXJ0ID0gY29sb3JSZ2Ioc3RhcnQpKS5yLCAoZW5kID0gY29sb3JSZ2IoZW5kKSkuciksXG4gICAgICAgIGcgPSBjb2xvcihzdGFydC5nLCBlbmQuZyksXG4gICAgICAgIGIgPSBjb2xvcihzdGFydC5iLCBlbmQuYiksXG4gICAgICAgIG9wYWNpdHkgPSBub2dhbW1hKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgc3RhcnQuciA9IHIodCk7XG4gICAgICBzdGFydC5nID0gZyh0KTtcbiAgICAgIHN0YXJ0LmIgPSBiKHQpO1xuICAgICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICAgIH07XG4gIH1cblxuICByZ2IuZ2FtbWEgPSByZ2JHYW1tYTtcblxuICByZXR1cm4gcmdiO1xufSkoMSk7XG5cbmZ1bmN0aW9uIHJnYlNwbGluZShzcGxpbmUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbG9ycykge1xuICAgIHZhciBuID0gY29sb3JzLmxlbmd0aCxcbiAgICAgICAgciA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgZyA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgYiA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgaSwgY29sb3I7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgY29sb3IgPSBjb2xvclJnYihjb2xvcnNbaV0pO1xuICAgICAgcltpXSA9IGNvbG9yLnIgfHwgMDtcbiAgICAgIGdbaV0gPSBjb2xvci5nIHx8IDA7XG4gICAgICBiW2ldID0gY29sb3IuYiB8fCAwO1xuICAgIH1cbiAgICByID0gc3BsaW5lKHIpO1xuICAgIGcgPSBzcGxpbmUoZyk7XG4gICAgYiA9IHNwbGluZShiKTtcbiAgICBjb2xvci5vcGFjaXR5ID0gMTtcbiAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgY29sb3IuciA9IHIodCk7XG4gICAgICBjb2xvci5nID0gZyh0KTtcbiAgICAgIGNvbG9yLmIgPSBiKHQpO1xuICAgICAgcmV0dXJuIGNvbG9yICsgXCJcIjtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdmFyIHJnYkJhc2lzID0gcmdiU3BsaW5lKGJhc2lzKTtcbmV4cG9ydCB2YXIgcmdiQmFzaXNDbG9zZWQgPSByZ2JTcGxpbmUoYmFzaXNDbG9zZWQpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/rgb.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/round.js": /*!**************************************************!*\ !*** ./node_modules/d3-interpolate/src/round.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3JvdW5kLmpzPzU4NTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3JvdW5kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYSA9ICthLCBiID0gK2IsIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChhICogKDEgLSB0KSArIGIgKiB0KTtcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/round.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/string.js": /*!***************************************************!*\ !*** ./node_modules/d3-interpolate/src/string.js ***! \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number.js */ \"./node_modules/d3-interpolate/src/number.js\");\n\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3N0cmluZy5qcz85MGVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBaUM7O0FBRWpDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDLDJCQUEyQjtBQUMzQjtBQUNBLEtBQUssT0FBTztBQUNaO0FBQ0EsY0FBYyxTQUFTLDBEQUFNLFNBQVM7QUFDdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixPQUFPO0FBQ25DO0FBQ0EsU0FBUztBQUNULENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3N0cmluZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5cbnZhciByZUEgPSAvWy0rXT8oPzpcXGQrXFwuP1xcZCp8XFwuP1xcZCspKD86W2VFXVstK10/XFxkKyk/L2csXG4gICAgcmVCID0gbmV3IFJlZ0V4cChyZUEuc291cmNlLCBcImdcIik7XG5cbmZ1bmN0aW9uIHplcm8oYikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGI7XG4gIH07XG59XG5cbmZ1bmN0aW9uIG9uZShiKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGIodCkgKyBcIlwiO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBiaSA9IHJlQS5sYXN0SW5kZXggPSByZUIubGFzdEluZGV4ID0gMCwgLy8gc2NhbiBpbmRleCBmb3IgbmV4dCBudW1iZXIgaW4gYlxuICAgICAgYW0sIC8vIGN1cnJlbnQgbWF0Y2ggaW4gYVxuICAgICAgYm0sIC8vIGN1cnJlbnQgbWF0Y2ggaW4gYlxuICAgICAgYnMsIC8vIHN0cmluZyBwcmVjZWRpbmcgY3VycmVudCBudW1iZXIgaW4gYiwgaWYgYW55XG4gICAgICBpID0gLTEsIC8vIGluZGV4IGluIHNcbiAgICAgIHMgPSBbXSwgLy8gc3RyaW5nIGNvbnN0YW50cyBhbmQgcGxhY2Vob2xkZXJzXG4gICAgICBxID0gW107IC8vIG51bWJlciBpbnRlcnBvbGF0b3JzXG5cbiAgLy8gQ29lcmNlIGlucHV0cyB0byBzdHJpbmdzLlxuICBhID0gYSArIFwiXCIsIGIgPSBiICsgXCJcIjtcblxuICAvLyBJbnRlcnBvbGF0ZSBwYWlycyBvZiBudW1iZXJzIGluIGEgJiBiLlxuICB3aGlsZSAoKGFtID0gcmVBLmV4ZWMoYSkpXG4gICAgICAmJiAoYm0gPSByZUIuZXhlYyhiKSkpIHtcbiAgICBpZiAoKGJzID0gYm0uaW5kZXgpID4gYmkpIHsgLy8gYSBzdHJpbmcgcHJlY2VkZXMgdGhlIG5leHQgbnVtYmVyIGluIGJcbiAgICAgIGJzID0gYi5zbGljZShiaSwgYnMpO1xuICAgICAgaWYgKHNbaV0pIHNbaV0gKz0gYnM7IC8vIGNvYWxlc2NlIHdpdGggcHJldmlvdXMgc3RyaW5nXG4gICAgICBlbHNlIHNbKytpXSA9IGJzO1xuICAgIH1cbiAgICBpZiAoKGFtID0gYW1bMF0pID09PSAoYm0gPSBibVswXSkpIHsgLy8gbnVtYmVycyBpbiBhICYgYiBtYXRjaFxuICAgICAgaWYgKHNbaV0pIHNbaV0gKz0gYm07IC8vIGNvYWxlc2NlIHdpdGggcHJldmlvdXMgc3RyaW5nXG4gICAgICBlbHNlIHNbKytpXSA9IGJtO1xuICAgIH0gZWxzZSB7IC8vIGludGVycG9sYXRlIG5vbi1tYXRjaGluZyBudW1iZXJzXG4gICAgICBzWysraV0gPSBudWxsO1xuICAgICAgcS5wdXNoKHtpOiBpLCB4OiBudW1iZXIoYW0sIGJtKX0pO1xuICAgIH1cbiAgICBiaSA9IHJlQi5sYXN0SW5kZXg7XG4gIH1cblxuICAvLyBBZGQgcmVtYWlucyBvZiBiLlxuICBpZiAoYmkgPCBiLmxlbmd0aCkge1xuICAgIGJzID0gYi5zbGljZShiaSk7XG4gICAgaWYgKHNbaV0pIHNbaV0gKz0gYnM7IC8vIGNvYWxlc2NlIHdpdGggcHJldmlvdXMgc3RyaW5nXG4gICAgZWxzZSBzWysraV0gPSBicztcbiAgfVxuXG4gIC8vIFNwZWNpYWwgb3B0aW1pemF0aW9uIGZvciBvbmx5IGEgc2luZ2xlIG1hdGNoLlxuICAvLyBPdGhlcndpc2UsIGludGVycG9sYXRlIGVhY2ggb2YgdGhlIG51bWJlcnMgYW5kIHJlam9pbiB0aGUgc3RyaW5nLlxuICByZXR1cm4gcy5sZW5ndGggPCAyID8gKHFbMF1cbiAgICAgID8gb25lKHFbMF0ueClcbiAgICAgIDogemVybyhiKSlcbiAgICAgIDogKGIgPSBxLmxlbmd0aCwgZnVuY3Rpb24odCkge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBvOyBpIDwgYjsgKytpKSBzWyhvID0gcVtpXSkuaV0gPSBvLngodCk7XG4gICAgICAgICAgcmV0dXJuIHMuam9pbihcIlwiKTtcbiAgICAgICAgfSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/string.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/transform/decompose.js": /*!****************************************************************!*\ !*** ./node_modules/d3-interpolate/src/transform/decompose.js ***! \****************************************************************/ /*! exports provided: identity, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\nvar degrees = 180 / Math.PI;\n\nvar identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9kZWNvbXBvc2UuanM/MzI1OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL2RlY29tcG9zZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWdyZWVzID0gMTgwIC8gTWF0aC5QSTtcblxuZXhwb3J0IHZhciBpZGVudGl0eSA9IHtcbiAgdHJhbnNsYXRlWDogMCxcbiAgdHJhbnNsYXRlWTogMCxcbiAgcm90YXRlOiAwLFxuICBza2V3WDogMCxcbiAgc2NhbGVYOiAxLFxuICBzY2FsZVk6IDFcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFyIHNjYWxlWCwgc2NhbGVZLCBza2V3WDtcbiAgaWYgKHNjYWxlWCA9IE1hdGguc3FydChhICogYSArIGIgKiBiKSkgYSAvPSBzY2FsZVgsIGIgLz0gc2NhbGVYO1xuICBpZiAoc2tld1ggPSBhICogYyArIGIgKiBkKSBjIC09IGEgKiBza2V3WCwgZCAtPSBiICogc2tld1g7XG4gIGlmIChzY2FsZVkgPSBNYXRoLnNxcnQoYyAqIGMgKyBkICogZCkpIGMgLz0gc2NhbGVZLCBkIC89IHNjYWxlWSwgc2tld1ggLz0gc2NhbGVZO1xuICBpZiAoYSAqIGQgPCBiICogYykgYSA9IC1hLCBiID0gLWIsIHNrZXdYID0gLXNrZXdYLCBzY2FsZVggPSAtc2NhbGVYO1xuICByZXR1cm4ge1xuICAgIHRyYW5zbGF0ZVg6IGUsXG4gICAgdHJhbnNsYXRlWTogZixcbiAgICByb3RhdGU6IE1hdGguYXRhbjIoYiwgYSkgKiBkZWdyZWVzLFxuICAgIHNrZXdYOiBNYXRoLmF0YW4oc2tld1gpICogZGVncmVlcyxcbiAgICBzY2FsZVg6IHNjYWxlWCxcbiAgICBzY2FsZVk6IHNjYWxlWVxuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/transform/decompose.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/transform/index.js": /*!************************************************************!*\ !*** ./node_modules/d3-interpolate/src/transform/index.js ***! \************************************************************/ /*! exports provided: interpolateTransformCss, interpolateTransformSvg */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return interpolateTransformCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return interpolateTransformSvg; });\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../number.js */ \"./node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse.js */ \"./node_modules/d3-interpolate/src/transform/parse.js\");\n\n\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nvar interpolateTransformCss = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseCss\"], \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseSvg\"], \", \", \")\", \")\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9pbmRleC5qcz80Yjc5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDWTs7QUFFOUM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsYUFBYSwwREFBTSxTQUFTLEdBQUcsYUFBYSwwREFBTSxTQUFTO0FBQ3pFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdDQUFnQyxnQ0FBZ0M7QUFDaEUsY0FBYyxzREFBc0QsMERBQU0sT0FBTztBQUNqRixLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLHFEQUFxRCwwREFBTSxPQUFPO0FBQ2hGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxhQUFhLDBEQUFNLFNBQVMsR0FBRyxhQUFhLDBEQUFNLFNBQVM7QUFDekUsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU8sbURBQW1ELGtEQUFRO0FBQzNELG1EQUFtRCxrREFBUSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG51bWJlciBmcm9tIFwiLi4vbnVtYmVyLmpzXCI7XG5pbXBvcnQge3BhcnNlQ3NzLCBwYXJzZVN2Z30gZnJvbSBcIi4vcGFyc2UuanNcIjtcblxuZnVuY3Rpb24gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2UsIHB4Q29tbWEsIHB4UGFyZW4sIGRlZ1BhcmVuKSB7XG5cbiAgZnVuY3Rpb24gcG9wKHMpIHtcbiAgICByZXR1cm4gcy5sZW5ndGggPyBzLnBvcCgpICsgXCIgXCIgOiBcIlwiO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKHhhLCB5YSwgeGIsIHliLCBzLCBxKSB7XG4gICAgaWYgKHhhICE9PSB4YiB8fCB5YSAhPT0geWIpIHtcbiAgICAgIHZhciBpID0gcy5wdXNoKFwidHJhbnNsYXRlKFwiLCBudWxsLCBweENvbW1hLCBudWxsLCBweFBhcmVuKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgfHwgeWIpIHtcbiAgICAgIHMucHVzaChcInRyYW5zbGF0ZShcIiArIHhiICsgcHhDb21tYSArIHliICsgcHhQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcm90YXRlKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgaWYgKGEgLSBiID4gMTgwKSBiICs9IDM2MDsgZWxzZSBpZiAoYiAtIGEgPiAxODApIGEgKz0gMzYwOyAvLyBzaG9ydGVzdCBwYXRoXG4gICAgICBxLnB1c2goe2k6IHMucHVzaChwb3AocykgKyBcInJvdGF0ZShcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJyb3RhdGUoXCIgKyBiICsgZGVnUGFyZW4pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNrZXdYKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgcS5wdXNoKHtpOiBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiArIGIgKyBkZWdQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2NhbGUoeGEsIHlhLCB4YiwgeWIsIHMsIHEpIHtcbiAgICBpZiAoeGEgIT09IHhiIHx8IHlhICE9PSB5Yikge1xuICAgICAgdmFyIGkgPSBzLnB1c2gocG9wKHMpICsgXCJzY2FsZShcIiwgbnVsbCwgXCIsXCIsIG51bGwsIFwiKVwiKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgIT09IDEgfHwgeWIgIT09IDEpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInNjYWxlKFwiICsgeGIgKyBcIixcIiArIHliICsgXCIpXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbihhLCBiKSB7XG4gICAgdmFyIHMgPSBbXSwgLy8gc3RyaW5nIGNvbnN0YW50cyBhbmQgcGxhY2Vob2xkZXJzXG4gICAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcbiAgICBhID0gcGFyc2UoYSksIGIgPSBwYXJzZShiKTtcbiAgICB0cmFuc2xhdGUoYS50cmFuc2xhdGVYLCBhLnRyYW5zbGF0ZVksIGIudHJhbnNsYXRlWCwgYi50cmFuc2xhdGVZLCBzLCBxKTtcbiAgICByb3RhdGUoYS5yb3RhdGUsIGIucm90YXRlLCBzLCBxKTtcbiAgICBza2V3WChhLnNrZXdYLCBiLnNrZXdYLCBzLCBxKTtcbiAgICBzY2FsZShhLnNjYWxlWCwgYS5zY2FsZVksIGIuc2NhbGVYLCBiLnNjYWxlWSwgcywgcSk7XG4gICAgYSA9IGIgPSBudWxsOyAvLyBnY1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgaSA9IC0xLCBuID0gcS5sZW5ndGgsIG87XG4gICAgICB3aGlsZSAoKytpIDwgbikgc1sobyA9IHFbaV0pLmldID0gby54KHQpO1xuICAgICAgcmV0dXJuIHMuam9pbihcIlwiKTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtQ3NzID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VDc3MsIFwicHgsIFwiLCBcInB4KVwiLCBcImRlZylcIik7XG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtU3ZnID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VTdmcsIFwiLCBcIiwgXCIpXCIsIFwiKVwiKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/transform/index.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/transform/parse.js": /*!************************************************************!*\ !*** ./node_modules/d3-interpolate/src/transform/parse.js ***! \************************************************************/ /*! exports provided: parseCss, parseSvg */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseCss\", function() { return parseCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSvg\", function() { return parseSvg; });\n/* harmony import */ var _decompose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decompose.js */ \"./node_modules/d3-interpolate/src/transform/decompose.js\");\n\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nfunction parseCss(value) {\n if (value === \"none\") return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nfunction parseSvg(value) {\n if (value == null) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n value = value.matrix;\n return Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9wYXJzZS5qcz9kYTc1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1EOztBQUVuRDtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLCtCQUErQixzREFBUTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyw2REFBUztBQUNsQjs7QUFFTztBQUNQLDRCQUE0QixzREFBUTtBQUNwQztBQUNBO0FBQ0EsaUVBQWlFLHNEQUFRO0FBQ3pFO0FBQ0EsU0FBUyw2REFBUztBQUNsQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL3BhcnNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlY29tcG9zZSwge2lkZW50aXR5fSBmcm9tIFwiLi9kZWNvbXBvc2UuanNcIjtcblxudmFyIGNzc05vZGUsXG4gICAgY3NzUm9vdCxcbiAgICBjc3NWaWV3LFxuICAgIHN2Z05vZGU7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNzcyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IFwibm9uZVwiKSByZXR1cm4gaWRlbnRpdHk7XG4gIGlmICghY3NzTm9kZSkgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJESVZcIiksIGNzc1Jvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGNzc1ZpZXcgPSBkb2N1bWVudC5kZWZhdWx0VmlldztcbiAgY3NzTm9kZS5zdHlsZS50cmFuc2Zvcm0gPSB2YWx1ZTtcbiAgdmFsdWUgPSBjc3NWaWV3LmdldENvbXB1dGVkU3R5bGUoY3NzUm9vdC5hcHBlbmRDaGlsZChjc3NOb2RlKSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShcInRyYW5zZm9ybVwiKTtcbiAgY3NzUm9vdC5yZW1vdmVDaGlsZChjc3NOb2RlKTtcbiAgdmFsdWUgPSB2YWx1ZS5zbGljZSg3LCAtMSkuc3BsaXQoXCIsXCIpO1xuICByZXR1cm4gZGVjb21wb3NlKCt2YWx1ZVswXSwgK3ZhbHVlWzFdLCArdmFsdWVbMl0sICt2YWx1ZVszXSwgK3ZhbHVlWzRdLCArdmFsdWVbNV0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdmcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBpZGVudGl0eTtcbiAgaWYgKCFzdmdOb2RlKSBzdmdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgXCJnXCIpO1xuICBzdmdOb2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLCB2YWx1ZSk7XG4gIGlmICghKHZhbHVlID0gc3ZnTm9kZS50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKSkgcmV0dXJuIGlkZW50aXR5O1xuICB2YWx1ZSA9IHZhbHVlLm1hdHJpeDtcbiAgcmV0dXJuIGRlY29tcG9zZSh2YWx1ZS5hLCB2YWx1ZS5iLCB2YWx1ZS5jLCB2YWx1ZS5kLCB2YWx1ZS5lLCB2YWx1ZS5mKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/transform/parse.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/value.js": /*!**************************************************!*\ !*** ./node_modules/d3-interpolate/src/value.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/d3-interpolate/src/rgb.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./array.js */ \"./node_modules/d3-interpolate/src/array.js\");\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./date.js */ \"./node_modules/d3-interpolate/src/date.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./number.js */ \"./node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./object.js */ \"./node_modules/d3-interpolate/src/object.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./string.js */ \"./node_modules/d3-interpolate/src/string.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-interpolate/src/constant.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? Object(_constant_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(b)\n : (t === \"number\" ? _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n : t === \"string\" ? ((c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"])(b)) ? (b = c, _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : _string_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])\n : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"] ? _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n : b instanceof Date ? _date_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n : Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n : Array.isArray(b) ? _array_js__WEBPACK_IMPORTED_MODULE_2__[\"genericArray\"]\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? _object_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n : _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(a, b);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3ZhbHVlLmpzP2VhMWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDSjtBQUNhO0FBQ1g7QUFDSTtBQUNBO0FBQ0E7QUFDSTtBQUN1Qjs7QUFFN0M7QUFDZjtBQUNBLHdDQUF3Qyw0REFBUTtBQUNoRCwwQkFBMEIsa0RBQU07QUFDaEMsK0JBQStCLHNEQUFLLGVBQWUsK0NBQUcsSUFBSSxrREFBTTtBQUNoRSxxQkFBcUIsOENBQUssR0FBRywrQ0FBRztBQUNoQyw0QkFBNEIsZ0RBQUk7QUFDaEMsUUFBUSxxRUFBYSxNQUFNLHVEQUFXO0FBQ3RDLDJCQUEyQixzREFBWTtBQUN2QywwRkFBMEYsa0RBQU07QUFDaEcsUUFBUSxrREFBTTtBQUNkLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3ZhbHVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb2xvcn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgcmdiIGZyb20gXCIuL3JnYi5qc1wiO1xuaW1wb3J0IHtnZW5lcmljQXJyYXl9IGZyb20gXCIuL2FycmF5LmpzXCI7XG5pbXBvcnQgZGF0ZSBmcm9tIFwiLi9kYXRlLmpzXCI7XG5pbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlci5qc1wiO1xuaW1wb3J0IG9iamVjdCBmcm9tIFwiLi9vYmplY3QuanNcIjtcbmltcG9ydCBzdHJpbmcgZnJvbSBcIi4vc3RyaW5nLmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBudW1iZXJBcnJheSwge2lzTnVtYmVyQXJyYXl9IGZyb20gXCIuL251bWJlckFycmF5LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIHQgPSB0eXBlb2YgYiwgYztcbiAgcmV0dXJuIGIgPT0gbnVsbCB8fCB0ID09PSBcImJvb2xlYW5cIiA/IGNvbnN0YW50KGIpXG4gICAgICA6ICh0ID09PSBcIm51bWJlclwiID8gbnVtYmVyXG4gICAgICA6IHQgPT09IFwic3RyaW5nXCIgPyAoKGMgPSBjb2xvcihiKSkgPyAoYiA9IGMsIHJnYikgOiBzdHJpbmcpXG4gICAgICA6IGIgaW5zdGFuY2VvZiBjb2xvciA/IHJnYlxuICAgICAgOiBiIGluc3RhbmNlb2YgRGF0ZSA/IGRhdGVcbiAgICAgIDogaXNOdW1iZXJBcnJheShiKSA/IG51bWJlckFycmF5XG4gICAgICA6IEFycmF5LmlzQXJyYXkoYikgPyBnZW5lcmljQXJyYXlcbiAgICAgIDogdHlwZW9mIGIudmFsdWVPZiAhPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBiLnRvU3RyaW5nICE9PSBcImZ1bmN0aW9uXCIgfHwgaXNOYU4oYikgPyBvYmplY3RcbiAgICAgIDogbnVtYmVyKShhLCBiKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/value.js\n"); /***/ }), /***/ "./node_modules/d3-interpolate/src/zoom.js": /*!*************************************************!*\ !*** ./node_modules/d3-interpolate/src/zoom.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3pvb20uanM/Y2U3NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy96b29tLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJobyA9IE1hdGguU1FSVDIsXG4gICAgcmhvMiA9IDIsXG4gICAgcmhvNCA9IDQsXG4gICAgZXBzaWxvbjIgPSAxZS0xMjtcblxuZnVuY3Rpb24gY29zaCh4KSB7XG4gIHJldHVybiAoKHggPSBNYXRoLmV4cCh4KSkgKyAxIC8geCkgLyAyO1xufVxuXG5mdW5jdGlvbiBzaW5oKHgpIHtcbiAgcmV0dXJuICgoeCA9IE1hdGguZXhwKHgpKSAtIDEgLyB4KSAvIDI7XG59XG5cbmZ1bmN0aW9uIHRhbmgoeCkge1xuICByZXR1cm4gKCh4ID0gTWF0aC5leHAoMiAqIHgpKSAtIDEpIC8gKHggKyAxKTtcbn1cblxuLy8gcDAgPSBbdXgwLCB1eTAsIHcwXVxuLy8gcDEgPSBbdXgxLCB1eTEsIHcxXVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocDAsIHAxKSB7XG4gIHZhciB1eDAgPSBwMFswXSwgdXkwID0gcDBbMV0sIHcwID0gcDBbMl0sXG4gICAgICB1eDEgPSBwMVswXSwgdXkxID0gcDFbMV0sIHcxID0gcDFbMl0sXG4gICAgICBkeCA9IHV4MSAtIHV4MCxcbiAgICAgIGR5ID0gdXkxIC0gdXkwLFxuICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeSxcbiAgICAgIGksXG4gICAgICBTO1xuXG4gIC8vIFNwZWNpYWwgY2FzZSBmb3IgdTAg4omFIHUxLlxuICBpZiAoZDIgPCBlcHNpbG9uMikge1xuICAgIFMgPSBNYXRoLmxvZyh3MSAvIHcwKSAvIHJobztcbiAgICBpID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdXgwICsgdCAqIGR4LFxuICAgICAgICB1eTAgKyB0ICogZHksXG4gICAgICAgIHcwICogTWF0aC5leHAocmhvICogdCAqIFMpXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyYWwgY2FzZS5cbiAgZWxzZSB7XG4gICAgdmFyIGQxID0gTWF0aC5zcXJ0KGQyKSxcbiAgICAgICAgYjAgPSAodzEgKiB3MSAtIHcwICogdzAgKyByaG80ICogZDIpIC8gKDIgKiB3MCAqIHJobzIgKiBkMSksXG4gICAgICAgIGIxID0gKHcxICogdzEgLSB3MCAqIHcwIC0gcmhvNCAqIGQyKSAvICgyICogdzEgKiByaG8yICogZDEpLFxuICAgICAgICByMCA9IE1hdGgubG9nKE1hdGguc3FydChiMCAqIGIwICsgMSkgLSBiMCksXG4gICAgICAgIHIxID0gTWF0aC5sb2coTWF0aC5zcXJ0KGIxICogYjEgKyAxKSAtIGIxKTtcbiAgICBTID0gKHIxIC0gcjApIC8gcmhvO1xuICAgIGkgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgcyA9IHQgKiBTLFxuICAgICAgICAgIGNvc2hyMCA9IGNvc2gocjApLFxuICAgICAgICAgIHUgPSB3MCAvIChyaG8yICogZDEpICogKGNvc2hyMCAqIHRhbmgocmhvICogcyArIHIwKSAtIHNpbmgocjApKTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHV4MCArIHUgKiBkeCxcbiAgICAgICAgdXkwICsgdSAqIGR5LFxuICAgICAgICB3MCAqIGNvc2hyMCAvIGNvc2gocmhvICogcyArIHIwKVxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBpLmR1cmF0aW9uID0gUyAqIDEwMDA7XG5cbiAgcmV0dXJuIGk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-interpolate/src/zoom.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/add.js": /*!*********************************************!*\ !*** ./node_modules/d3-quadtree/src/add.js ***! \*********************************************/ /*! exports provided: default, addAll */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addAll\", function() { return addAll; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n});\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nfunction addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2FkZC5qcz9mNjVkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1EQUFtRDtBQUNuRCxvREFBb0Q7QUFDcEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQsb0RBQW9EO0FBQ3BELEdBQUc7QUFDSDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvYWRkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZCkge1xuICBjb25zdCB4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkKSxcbiAgICAgIHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpO1xuICByZXR1cm4gYWRkKHRoaXMuY292ZXIoeCwgeSksIHgsIHksIGQpO1xufVxuXG5mdW5jdGlvbiBhZGQodHJlZSwgeCwgeSwgZCkge1xuICBpZiAoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiB0cmVlOyAvLyBpZ25vcmUgaW52YWxpZCBwb2ludHNcblxuICB2YXIgcGFyZW50LFxuICAgICAgbm9kZSA9IHRyZWUuX3Jvb3QsXG4gICAgICBsZWFmID0ge2RhdGE6IGR9LFxuICAgICAgeDAgPSB0cmVlLl94MCxcbiAgICAgIHkwID0gdHJlZS5feTAsXG4gICAgICB4MSA9IHRyZWUuX3gxLFxuICAgICAgeTEgPSB0cmVlLl95MSxcbiAgICAgIHhtLFxuICAgICAgeW0sXG4gICAgICB4cCxcbiAgICAgIHlwLFxuICAgICAgcmlnaHQsXG4gICAgICBib3R0b20sXG4gICAgICBpLFxuICAgICAgajtcblxuICAvLyBJZiB0aGUgdHJlZSBpcyBlbXB0eSwgaW5pdGlhbGl6ZSB0aGUgcm9vdCBhcyBhIGxlYWYuXG4gIGlmICghbm9kZSkgcmV0dXJuIHRyZWUuX3Jvb3QgPSBsZWFmLCB0cmVlO1xuXG4gIC8vIEZpbmQgdGhlIGV4aXN0aW5nIGxlYWYgZm9yIHRoZSBuZXcgcG9pbnQsIG9yIGFkZCBpdC5cbiAgd2hpbGUgKG5vZGUubGVuZ3RoKSB7XG4gICAgaWYgKHJpZ2h0ID0geCA+PSAoeG0gPSAoeDAgKyB4MSkgLyAyKSkgeDAgPSB4bTsgZWxzZSB4MSA9IHhtO1xuICAgIGlmIChib3R0b20gPSB5ID49ICh5bSA9ICh5MCArIHkxKSAvIDIpKSB5MCA9IHltOyBlbHNlIHkxID0geW07XG4gICAgaWYgKHBhcmVudCA9IG5vZGUsICEobm9kZSA9IG5vZGVbaSA9IGJvdHRvbSA8PCAxIHwgcmlnaHRdKSkgcmV0dXJuIHBhcmVudFtpXSA9IGxlYWYsIHRyZWU7XG4gIH1cblxuICAvLyBJcyB0aGUgbmV3IHBvaW50IGlzIGV4YWN0bHkgY29pbmNpZGVudCB3aXRoIHRoZSBleGlzdGluZyBwb2ludD9cbiAgeHAgPSArdHJlZS5feC5jYWxsKG51bGwsIG5vZGUuZGF0YSk7XG4gIHlwID0gK3RyZWUuX3kuY2FsbChudWxsLCBub2RlLmRhdGEpO1xuICBpZiAoeCA9PT0geHAgJiYgeSA9PT0geXApIHJldHVybiBsZWFmLm5leHQgPSBub2RlLCBwYXJlbnQgPyBwYXJlbnRbaV0gPSBsZWFmIDogdHJlZS5fcm9vdCA9IGxlYWYsIHRyZWU7XG5cbiAgLy8gT3RoZXJ3aXNlLCBzcGxpdCB0aGUgbGVhZiBub2RlIHVudGlsIHRoZSBvbGQgYW5kIG5ldyBwb2ludCBhcmUgc2VwYXJhdGVkLlxuICBkbyB7XG4gICAgcGFyZW50ID0gcGFyZW50ID8gcGFyZW50W2ldID0gbmV3IEFycmF5KDQpIDogdHJlZS5fcm9vdCA9IG5ldyBBcnJheSg0KTtcbiAgICBpZiAocmlnaHQgPSB4ID49ICh4bSA9ICh4MCArIHgxKSAvIDIpKSB4MCA9IHhtOyBlbHNlIHgxID0geG07XG4gICAgaWYgKGJvdHRvbSA9IHkgPj0gKHltID0gKHkwICsgeTEpIC8gMikpIHkwID0geW07IGVsc2UgeTEgPSB5bTtcbiAgfSB3aGlsZSAoKGkgPSBib3R0b20gPDwgMSB8IHJpZ2h0KSA9PT0gKGogPSAoeXAgPj0geW0pIDw8IDEgfCAoeHAgPj0geG0pKSk7XG4gIHJldHVybiBwYXJlbnRbal0gPSBub2RlLCBwYXJlbnRbaV0gPSBsZWFmLCB0cmVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkQWxsKGRhdGEpIHtcbiAgdmFyIGQsIGksIG4gPSBkYXRhLmxlbmd0aCxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgeHogPSBuZXcgQXJyYXkobiksXG4gICAgICB5eiA9IG5ldyBBcnJheShuKSxcbiAgICAgIHgwID0gSW5maW5pdHksXG4gICAgICB5MCA9IEluZmluaXR5LFxuICAgICAgeDEgPSAtSW5maW5pdHksXG4gICAgICB5MSA9IC1JbmZpbml0eTtcblxuICAvLyBDb21wdXRlIHRoZSBwb2ludHMgYW5kIHRoZWlyIGV4dGVudC5cbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgIGlmIChpc05hTih4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkID0gZGF0YVtpXSkpIHx8IGlzTmFOKHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpKSkgY29udGludWU7XG4gICAgeHpbaV0gPSB4O1xuICAgIHl6W2ldID0geTtcbiAgICBpZiAoeCA8IHgwKSB4MCA9IHg7XG4gICAgaWYgKHggPiB4MSkgeDEgPSB4O1xuICAgIGlmICh5IDwgeTApIHkwID0geTtcbiAgICBpZiAoeSA+IHkxKSB5MSA9IHk7XG4gIH1cblxuICAvLyBJZiB0aGVyZSB3ZXJlIG5vICh2YWxpZCkgcG9pbnRzLCBhYm9ydC5cbiAgaWYgKHgwID4geDEgfHwgeTAgPiB5MSkgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRXhwYW5kIHRoZSB0cmVlIHRvIGNvdmVyIHRoZSBuZXcgcG9pbnRzLlxuICB0aGlzLmNvdmVyKHgwLCB5MCkuY292ZXIoeDEsIHkxKTtcblxuICAvLyBBZGQgdGhlIG5ldyBwb2ludHMuXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBhZGQodGhpcywgeHpbaV0sIHl6W2ldLCBkYXRhW2ldKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/add.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/cover.js": /*!***********************************************!*\ !*** ./node_modules/d3-quadtree/src/cover.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2NvdmVyLmpzP2Y0MDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmLGtEQUFrRDs7QUFFbEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDLHlDQUF5QztBQUN6Qyx5Q0FBeUM7QUFDekMseUNBQXlDO0FBQ3pDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvY292ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCB5KSB7XG4gIGlmIChpc05hTih4ID0gK3gpIHx8IGlzTmFOKHkgPSAreSkpIHJldHVybiB0aGlzOyAvLyBpZ25vcmUgaW52YWxpZCBwb2ludHNcblxuICB2YXIgeDAgPSB0aGlzLl94MCxcbiAgICAgIHkwID0gdGhpcy5feTAsXG4gICAgICB4MSA9IHRoaXMuX3gxLFxuICAgICAgeTEgPSB0aGlzLl95MTtcblxuICAvLyBJZiB0aGUgcXVhZHRyZWUgaGFzIG5vIGV4dGVudCwgaW5pdGlhbGl6ZSB0aGVtLlxuICAvLyBJbnRlZ2VyIGV4dGVudCBhcmUgbmVjZXNzYXJ5IHNvIHRoYXQgaWYgd2UgbGF0ZXIgZG91YmxlIHRoZSBleHRlbnQsXG4gIC8vIHRoZSBleGlzdGluZyBxdWFkcmFudCBib3VuZGFyaWVzIGRvbuKAmXQgY2hhbmdlIGR1ZSB0byBmbG9hdGluZyBwb2ludCBlcnJvciFcbiAgaWYgKGlzTmFOKHgwKSkge1xuICAgIHgxID0gKHgwID0gTWF0aC5mbG9vcih4KSkgKyAxO1xuICAgIHkxID0gKHkwID0gTWF0aC5mbG9vcih5KSkgKyAxO1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBkb3VibGUgcmVwZWF0ZWRseSB0byBjb3Zlci5cbiAgZWxzZSB7XG4gICAgdmFyIHogPSB4MSAtIHgwIHx8IDEsXG4gICAgICAgIG5vZGUgPSB0aGlzLl9yb290LFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIGk7XG5cbiAgICB3aGlsZSAoeDAgPiB4IHx8IHggPj0geDEgfHwgeTAgPiB5IHx8IHkgPj0geTEpIHtcbiAgICAgIGkgPSAoeSA8IHkwKSA8PCAxIHwgKHggPCB4MCk7XG4gICAgICBwYXJlbnQgPSBuZXcgQXJyYXkoNCksIHBhcmVudFtpXSA9IG5vZGUsIG5vZGUgPSBwYXJlbnQsIHogKj0gMjtcbiAgICAgIHN3aXRjaCAoaSkge1xuICAgICAgICBjYXNlIDA6IHgxID0geDAgKyB6LCB5MSA9IHkwICsgejsgYnJlYWs7XG4gICAgICAgIGNhc2UgMTogeDAgPSB4MSAtIHosIHkxID0geTAgKyB6OyBicmVhaztcbiAgICAgICAgY2FzZSAyOiB4MSA9IHgwICsgeiwgeTAgPSB5MSAtIHo7IGJyZWFrO1xuICAgICAgICBjYXNlIDM6IHgwID0geDEgLSB6LCB5MCA9IHkxIC0gejsgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Jvb3QgJiYgdGhpcy5fcm9vdC5sZW5ndGgpIHRoaXMuX3Jvb3QgPSBub2RlO1xuICB9XG5cbiAgdGhpcy5feDAgPSB4MDtcbiAgdGhpcy5feTAgPSB5MDtcbiAgdGhpcy5feDEgPSB4MTtcbiAgdGhpcy5feTEgPSB5MTtcbiAgcmV0dXJuIHRoaXM7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/cover.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/data.js": /*!**********************************************!*\ !*** ./node_modules/d3-quadtree/src/data.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2RhdGEuanM/MmNjYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBLDhDQUE4QztBQUM5QyxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9kYXRhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBkYXRhID0gW107XG4gIHRoaXMudmlzaXQoZnVuY3Rpb24obm9kZSkge1xuICAgIGlmICghbm9kZS5sZW5ndGgpIGRvIGRhdGEucHVzaChub2RlLmRhdGEpOyB3aGlsZSAobm9kZSA9IG5vZGUubmV4dClcbiAgfSk7XG4gIHJldHVybiBkYXRhO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/data.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/extent.js": /*!************************************************!*\ !*** ./node_modules/d3-quadtree/src/extent.js ***! \************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2V4dGVudC5qcz8xZmIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9leHRlbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuY292ZXIoK19bMF1bMF0sICtfWzBdWzFdKS5jb3ZlcigrX1sxXVswXSwgK19bMV1bMV0pXG4gICAgICA6IGlzTmFOKHRoaXMuX3gwKSA/IHVuZGVmaW5lZCA6IFtbdGhpcy5feDAsIHRoaXMuX3kwXSwgW3RoaXMuX3gxLCB0aGlzLl95MV1dO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/extent.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/find.js": /*!**********************************************!*\ !*** ./node_modules/d3-quadtree/src/find.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ \"./node_modules/d3-quadtree/src/quad.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[3], xm, ym, x2, y2),\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[2], x1, ym, xm, y2),\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[1], xm, y1, x2, ym),\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2ZpbmQuanM/MWQ5NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQTZCOztBQUVkO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCLGdEQUFJO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLGdEQUFJO0FBQ2hCLFlBQVksZ0RBQUk7QUFDaEIsWUFBWSxnREFBSTtBQUNoQixZQUFZLGdEQUFJO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvZmluZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBRdWFkIGZyb20gXCIuL3F1YWQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgeSwgcmFkaXVzKSB7XG4gIHZhciBkYXRhLFxuICAgICAgeDAgPSB0aGlzLl94MCxcbiAgICAgIHkwID0gdGhpcy5feTAsXG4gICAgICB4MSxcbiAgICAgIHkxLFxuICAgICAgeDIsXG4gICAgICB5MixcbiAgICAgIHgzID0gdGhpcy5feDEsXG4gICAgICB5MyA9IHRoaXMuX3kxLFxuICAgICAgcXVhZHMgPSBbXSxcbiAgICAgIG5vZGUgPSB0aGlzLl9yb290LFxuICAgICAgcSxcbiAgICAgIGk7XG5cbiAgaWYgKG5vZGUpIHF1YWRzLnB1c2gobmV3IFF1YWQobm9kZSwgeDAsIHkwLCB4MywgeTMpKTtcbiAgaWYgKHJhZGl1cyA9PSBudWxsKSByYWRpdXMgPSBJbmZpbml0eTtcbiAgZWxzZSB7XG4gICAgeDAgPSB4IC0gcmFkaXVzLCB5MCA9IHkgLSByYWRpdXM7XG4gICAgeDMgPSB4ICsgcmFkaXVzLCB5MyA9IHkgKyByYWRpdXM7XG4gICAgcmFkaXVzICo9IHJhZGl1cztcbiAgfVxuXG4gIHdoaWxlIChxID0gcXVhZHMucG9wKCkpIHtcblxuICAgIC8vIFN0b3Agc2VhcmNoaW5nIGlmIHRoaXMgcXVhZHJhbnQgY2Fu4oCZdCBjb250YWluIGEgY2xvc2VyIG5vZGUuXG4gICAgaWYgKCEobm9kZSA9IHEubm9kZSlcbiAgICAgICAgfHwgKHgxID0gcS54MCkgPiB4M1xuICAgICAgICB8fCAoeTEgPSBxLnkwKSA+IHkzXG4gICAgICAgIHx8ICh4MiA9IHEueDEpIDwgeDBcbiAgICAgICAgfHwgKHkyID0gcS55MSkgPCB5MCkgY29udGludWU7XG5cbiAgICAvLyBCaXNlY3QgdGhlIGN1cnJlbnQgcXVhZHJhbnQuXG4gICAgaWYgKG5vZGUubGVuZ3RoKSB7XG4gICAgICB2YXIgeG0gPSAoeDEgKyB4MikgLyAyLFxuICAgICAgICAgIHltID0gKHkxICsgeTIpIC8gMjtcblxuICAgICAgcXVhZHMucHVzaChcbiAgICAgICAgbmV3IFF1YWQobm9kZVszXSwgeG0sIHltLCB4MiwgeTIpLFxuICAgICAgICBuZXcgUXVhZChub2RlWzJdLCB4MSwgeW0sIHhtLCB5MiksXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbMV0sIHhtLCB5MSwgeDIsIHltKSxcbiAgICAgICAgbmV3IFF1YWQobm9kZVswXSwgeDEsIHkxLCB4bSwgeW0pXG4gICAgICApO1xuXG4gICAgICAvLyBWaXNpdCB0aGUgY2xvc2VzdCBxdWFkcmFudCBmaXJzdC5cbiAgICAgIGlmIChpID0gKHkgPj0geW0pIDw8IDEgfCAoeCA+PSB4bSkpIHtcbiAgICAgICAgcSA9IHF1YWRzW3F1YWRzLmxlbmd0aCAtIDFdO1xuICAgICAgICBxdWFkc1txdWFkcy5sZW5ndGggLSAxXSA9IHF1YWRzW3F1YWRzLmxlbmd0aCAtIDEgLSBpXTtcbiAgICAgICAgcXVhZHNbcXVhZHMubGVuZ3RoIC0gMSAtIGldID0gcTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBWaXNpdCB0aGlzIHBvaW50LiAoVmlzaXRpbmcgY29pbmNpZGVudCBwb2ludHMgaXNu4oCZdCBuZWNlc3NhcnkhKVxuICAgIGVsc2Uge1xuICAgICAgdmFyIGR4ID0geCAtICt0aGlzLl94LmNhbGwobnVsbCwgbm9kZS5kYXRhKSxcbiAgICAgICAgICBkeSA9IHkgLSArdGhpcy5feS5jYWxsKG51bGwsIG5vZGUuZGF0YSksXG4gICAgICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeTtcbiAgICAgIGlmIChkMiA8IHJhZGl1cykge1xuICAgICAgICB2YXIgZCA9IE1hdGguc3FydChyYWRpdXMgPSBkMik7XG4gICAgICAgIHgwID0geCAtIGQsIHkwID0geSAtIGQ7XG4gICAgICAgIHgzID0geCArIGQsIHkzID0geSArIGQ7XG4gICAgICAgIGRhdGEgPSBub2RlLmRhdGE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/find.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/index.js": /*!***********************************************!*\ !*** ./node_modules/d3-quadtree/src/index.js ***! \***********************************************/ /*! exports provided: quadtree */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quadtree_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quadtree.js */ \"./node_modules/d3-quadtree/src/quadtree.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quadtree\", function() { return _quadtree_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2luZGV4LmpzPzgwZWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIHF1YWR0cmVlfSBmcm9tIFwiLi9xdWFkdHJlZS5qc1wiO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/index.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/quad.js": /*!**********************************************!*\ !*** ./node_modules/d3-quadtree/src/quad.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3F1YWQuanM/YTdmZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3F1YWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihub2RlLCB4MCwgeTAsIHgxLCB5MSkge1xuICB0aGlzLm5vZGUgPSBub2RlO1xuICB0aGlzLngwID0geDA7XG4gIHRoaXMueTAgPSB5MDtcbiAgdGhpcy54MSA9IHgxO1xuICB0aGlzLnkxID0geTE7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/quad.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/quadtree.js": /*!**************************************************!*\ !*** ./node_modules/d3-quadtree/src/quadtree.js ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quadtree; });\n/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add.js */ \"./node_modules/d3-quadtree/src/add.js\");\n/* harmony import */ var _cover_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cover.js */ \"./node_modules/d3-quadtree/src/cover.js\");\n/* harmony import */ var _data_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./data.js */ \"./node_modules/d3-quadtree/src/data.js\");\n/* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./extent.js */ \"./node_modules/d3-quadtree/src/extent.js\");\n/* harmony import */ var _find_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./find.js */ \"./node_modules/d3-quadtree/src/find.js\");\n/* harmony import */ var _remove_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./remove.js */ \"./node_modules/d3-quadtree/src/remove.js\");\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./root.js */ \"./node_modules/d3-quadtree/src/root.js\");\n/* harmony import */ var _size_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./size.js */ \"./node_modules/d3-quadtree/src/size.js\");\n/* harmony import */ var _visit_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./visit.js */ \"./node_modules/d3-quadtree/src/visit.js\");\n/* harmony import */ var _visitAfter_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./visitAfter.js */ \"./node_modules/d3-quadtree/src/visitAfter.js\");\n/* harmony import */ var _x_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./x.js */ \"./node_modules/d3-quadtree/src/x.js\");\n/* harmony import */ var _y_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./y.js */ \"./node_modules/d3-quadtree/src/y.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? _x_js__WEBPACK_IMPORTED_MODULE_10__[\"defaultX\"] : x, y == null ? _y_js__WEBPACK_IMPORTED_MODULE_11__[\"defaultY\"] : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = _add_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\ntreeProto.addAll = _add_js__WEBPACK_IMPORTED_MODULE_0__[\"addAll\"];\ntreeProto.cover = _cover_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\ntreeProto.data = _data_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\ntreeProto.extent = _extent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\ntreeProto.find = _find_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\ntreeProto.remove = _remove_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\ntreeProto.removeAll = _remove_js__WEBPACK_IMPORTED_MODULE_5__[\"removeAll\"];\ntreeProto.root = _root_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\ntreeProto.size = _size_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\ntreeProto.visit = _visit_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"];\ntreeProto.visitAfter = _visitAfter_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"];\ntreeProto.x = _x_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"];\ntreeProto.y = _y_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"];\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3F1YWR0cmVlLmpzP2NmYTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5RDtBQUNyQjtBQUNGO0FBQ0k7QUFDSjtBQUNtQztBQUNuQztBQUNBO0FBQ0U7QUFDVTtBQUNOO0FBQ0E7O0FBRXpCO0FBQ2Ysc0NBQXNDLCtDQUFRLGtCQUFrQiwrQ0FBUTtBQUN4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWMsZ0JBQWdCO0FBQzlCLCtDQUErQztBQUMvQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUEsWUFBWSxnREFBZ0Q7QUFDNUQ7QUFDQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBLHNDQUFzQyxxREFBcUQ7QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxnQkFBZ0IsK0NBQVE7QUFDeEIsbUJBQW1CLDhDQUFXO0FBQzlCLGtCQUFrQixpREFBVTtBQUM1QixpQkFBaUIsZ0RBQVM7QUFDMUIsbUJBQW1CLGtEQUFXO0FBQzlCLGlCQUFpQixnREFBUztBQUMxQixtQkFBbUIsa0RBQVc7QUFDOUIsc0JBQXNCLG9EQUFjO0FBQ3BDLGlCQUFpQixnREFBUztBQUMxQixpQkFBaUIsZ0RBQVM7QUFDMUIsa0JBQWtCLGlEQUFVO0FBQzVCLHVCQUF1QixzREFBZTtBQUN0QyxjQUFjLDhDQUFNO0FBQ3BCLGNBQWMsOENBQU0iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3F1YWR0cmVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRyZWVfYWRkLCB7YWRkQWxsIGFzIHRyZWVfYWRkQWxsfSBmcm9tIFwiLi9hZGQuanNcIjtcbmltcG9ydCB0cmVlX2NvdmVyIGZyb20gXCIuL2NvdmVyLmpzXCI7XG5pbXBvcnQgdHJlZV9kYXRhIGZyb20gXCIuL2RhdGEuanNcIjtcbmltcG9ydCB0cmVlX2V4dGVudCBmcm9tIFwiLi9leHRlbnQuanNcIjtcbmltcG9ydCB0cmVlX2ZpbmQgZnJvbSBcIi4vZmluZC5qc1wiO1xuaW1wb3J0IHRyZWVfcmVtb3ZlLCB7cmVtb3ZlQWxsIGFzIHRyZWVfcmVtb3ZlQWxsfSBmcm9tIFwiLi9yZW1vdmUuanNcIjtcbmltcG9ydCB0cmVlX3Jvb3QgZnJvbSBcIi4vcm9vdC5qc1wiO1xuaW1wb3J0IHRyZWVfc2l6ZSBmcm9tIFwiLi9zaXplLmpzXCI7XG5pbXBvcnQgdHJlZV92aXNpdCBmcm9tIFwiLi92aXNpdC5qc1wiO1xuaW1wb3J0IHRyZWVfdmlzaXRBZnRlciBmcm9tIFwiLi92aXNpdEFmdGVyLmpzXCI7XG5pbXBvcnQgdHJlZV94LCB7ZGVmYXVsdFh9IGZyb20gXCIuL3guanNcIjtcbmltcG9ydCB0cmVlX3ksIHtkZWZhdWx0WX0gZnJvbSBcIi4veS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFkdHJlZShub2RlcywgeCwgeSkge1xuICB2YXIgdHJlZSA9IG5ldyBRdWFkdHJlZSh4ID09IG51bGwgPyBkZWZhdWx0WCA6IHgsIHkgPT0gbnVsbCA/IGRlZmF1bHRZIDogeSwgTmFOLCBOYU4sIE5hTiwgTmFOKTtcbiAgcmV0dXJuIG5vZGVzID09IG51bGwgPyB0cmVlIDogdHJlZS5hZGRBbGwobm9kZXMpO1xufVxuXG5mdW5jdGlvbiBRdWFkdHJlZSh4LCB5LCB4MCwgeTAsIHgxLCB5MSkge1xuICB0aGlzLl94ID0geDtcbiAgdGhpcy5feSA9IHk7XG4gIHRoaXMuX3gwID0geDA7XG4gIHRoaXMuX3kwID0geTA7XG4gIHRoaXMuX3gxID0geDE7XG4gIHRoaXMuX3kxID0geTE7XG4gIHRoaXMuX3Jvb3QgPSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGxlYWZfY29weShsZWFmKSB7XG4gIHZhciBjb3B5ID0ge2RhdGE6IGxlYWYuZGF0YX0sIG5leHQgPSBjb3B5O1xuICB3aGlsZSAobGVhZiA9IGxlYWYubmV4dCkgbmV4dCA9IG5leHQubmV4dCA9IHtkYXRhOiBsZWFmLmRhdGF9O1xuICByZXR1cm4gY29weTtcbn1cblxudmFyIHRyZWVQcm90byA9IHF1YWR0cmVlLnByb3RvdHlwZSA9IFF1YWR0cmVlLnByb3RvdHlwZTtcblxudHJlZVByb3RvLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGNvcHkgPSBuZXcgUXVhZHRyZWUodGhpcy5feCwgdGhpcy5feSwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpLFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICBub2RlcyxcbiAgICAgIGNoaWxkO1xuXG4gIGlmICghbm9kZSkgcmV0dXJuIGNvcHk7XG5cbiAgaWYgKCFub2RlLmxlbmd0aCkgcmV0dXJuIGNvcHkuX3Jvb3QgPSBsZWFmX2NvcHkobm9kZSksIGNvcHk7XG5cbiAgbm9kZXMgPSBbe3NvdXJjZTogbm9kZSwgdGFyZ2V0OiBjb3B5Ll9yb290ID0gbmV3IEFycmF5KDQpfV07XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgaWYgKGNoaWxkID0gbm9kZS5zb3VyY2VbaV0pIHtcbiAgICAgICAgaWYgKGNoaWxkLmxlbmd0aCkgbm9kZXMucHVzaCh7c291cmNlOiBjaGlsZCwgdGFyZ2V0OiBub2RlLnRhcmdldFtpXSA9IG5ldyBBcnJheSg0KX0pO1xuICAgICAgICBlbHNlIG5vZGUudGFyZ2V0W2ldID0gbGVhZl9jb3B5KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29weTtcbn07XG5cbnRyZWVQcm90by5hZGQgPSB0cmVlX2FkZDtcbnRyZWVQcm90by5hZGRBbGwgPSB0cmVlX2FkZEFsbDtcbnRyZWVQcm90by5jb3ZlciA9IHRyZWVfY292ZXI7XG50cmVlUHJvdG8uZGF0YSA9IHRyZWVfZGF0YTtcbnRyZWVQcm90by5leHRlbnQgPSB0cmVlX2V4dGVudDtcbnRyZWVQcm90by5maW5kID0gdHJlZV9maW5kO1xudHJlZVByb3RvLnJlbW92ZSA9IHRyZWVfcmVtb3ZlO1xudHJlZVByb3RvLnJlbW92ZUFsbCA9IHRyZWVfcmVtb3ZlQWxsO1xudHJlZVByb3RvLnJvb3QgPSB0cmVlX3Jvb3Q7XG50cmVlUHJvdG8uc2l6ZSA9IHRyZWVfc2l6ZTtcbnRyZWVQcm90by52aXNpdCA9IHRyZWVfdmlzaXQ7XG50cmVlUHJvdG8udmlzaXRBZnRlciA9IHRyZWVfdmlzaXRBZnRlcjtcbnRyZWVQcm90by54ID0gdHJlZV94O1xudHJlZVByb3RvLnkgPSB0cmVlX3k7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/quadtree.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/remove.js": /*!************************************************!*\ !*** ./node_modules/d3-quadtree/src/remove.js ***! \************************************************/ /*! exports provided: default, removeAll */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeAll\", function() { return removeAll; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n});\n\nfunction removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3JlbW92ZS5qcz8xYjQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmLDBGQUEwRjs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDtBQUNuRCxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQLGtDQUFrQyxPQUFPO0FBQ3pDO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3JlbW92ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGQpIHtcbiAgaWYgKGlzTmFOKHggPSArdGhpcy5feC5jYWxsKG51bGwsIGQpKSB8fCBpc05hTih5ID0gK3RoaXMuX3kuY2FsbChudWxsLCBkKSkpIHJldHVybiB0aGlzOyAvLyBpZ25vcmUgaW52YWxpZCBwb2ludHNcblxuICB2YXIgcGFyZW50LFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICByZXRhaW5lcixcbiAgICAgIHByZXZpb3VzLFxuICAgICAgbmV4dCxcbiAgICAgIHgwID0gdGhpcy5feDAsXG4gICAgICB5MCA9IHRoaXMuX3kwLFxuICAgICAgeDEgPSB0aGlzLl94MSxcbiAgICAgIHkxID0gdGhpcy5feTEsXG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHhtLFxuICAgICAgeW0sXG4gICAgICByaWdodCxcbiAgICAgIGJvdHRvbSxcbiAgICAgIGksXG4gICAgICBqO1xuXG4gIC8vIElmIHRoZSB0cmVlIGlzIGVtcHR5LCBpbml0aWFsaXplIHRoZSByb290IGFzIGEgbGVhZi5cbiAgaWYgKCFub2RlKSByZXR1cm4gdGhpcztcblxuICAvLyBGaW5kIHRoZSBsZWFmIG5vZGUgZm9yIHRoZSBwb2ludC5cbiAgLy8gV2hpbGUgZGVzY2VuZGluZywgYWxzbyByZXRhaW4gdGhlIGRlZXBlc3QgcGFyZW50IHdpdGggYSBub24tcmVtb3ZlZCBzaWJsaW5nLlxuICBpZiAobm9kZS5sZW5ndGgpIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKHJpZ2h0ID0geCA+PSAoeG0gPSAoeDAgKyB4MSkgLyAyKSkgeDAgPSB4bTsgZWxzZSB4MSA9IHhtO1xuICAgIGlmIChib3R0b20gPSB5ID49ICh5bSA9ICh5MCArIHkxKSAvIDIpKSB5MCA9IHltOyBlbHNlIHkxID0geW07XG4gICAgaWYgKCEocGFyZW50ID0gbm9kZSwgbm9kZSA9IG5vZGVbaSA9IGJvdHRvbSA8PCAxIHwgcmlnaHRdKSkgcmV0dXJuIHRoaXM7XG4gICAgaWYgKCFub2RlLmxlbmd0aCkgYnJlYWs7XG4gICAgaWYgKHBhcmVudFsoaSArIDEpICYgM10gfHwgcGFyZW50WyhpICsgMikgJiAzXSB8fCBwYXJlbnRbKGkgKyAzKSAmIDNdKSByZXRhaW5lciA9IHBhcmVudCwgaiA9IGk7XG4gIH1cblxuICAvLyBGaW5kIHRoZSBwb2ludCB0byByZW1vdmUuXG4gIHdoaWxlIChub2RlLmRhdGEgIT09IGQpIGlmICghKHByZXZpb3VzID0gbm9kZSwgbm9kZSA9IG5vZGUubmV4dCkpIHJldHVybiB0aGlzO1xuICBpZiAobmV4dCA9IG5vZGUubmV4dCkgZGVsZXRlIG5vZGUubmV4dDtcblxuICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgY29pbmNpZGVudCBwb2ludHMsIHJlbW92ZSBqdXN0IHRoZSBwb2ludC5cbiAgaWYgKHByZXZpb3VzKSByZXR1cm4gKG5leHQgPyBwcmV2aW91cy5uZXh0ID0gbmV4dCA6IGRlbGV0ZSBwcmV2aW91cy5uZXh0KSwgdGhpcztcblxuICAvLyBJZiB0aGlzIGlzIHRoZSByb290IHBvaW50LCByZW1vdmUgaXQuXG4gIGlmICghcGFyZW50KSByZXR1cm4gdGhpcy5fcm9vdCA9IG5leHQsIHRoaXM7XG5cbiAgLy8gUmVtb3ZlIHRoaXMgbGVhZi5cbiAgbmV4dCA/IHBhcmVudFtpXSA9IG5leHQgOiBkZWxldGUgcGFyZW50W2ldO1xuXG4gIC8vIElmIHRoZSBwYXJlbnQgbm93IGNvbnRhaW5zIGV4YWN0bHkgb25lIGxlYWYsIGNvbGxhcHNlIHN1cGVyZmx1b3VzIHBhcmVudHMuXG4gIGlmICgobm9kZSA9IHBhcmVudFswXSB8fCBwYXJlbnRbMV0gfHwgcGFyZW50WzJdIHx8IHBhcmVudFszXSlcbiAgICAgICYmIG5vZGUgPT09IChwYXJlbnRbM10gfHwgcGFyZW50WzJdIHx8IHBhcmVudFsxXSB8fCBwYXJlbnRbMF0pXG4gICAgICAmJiAhbm9kZS5sZW5ndGgpIHtcbiAgICBpZiAocmV0YWluZXIpIHJldGFpbmVyW2pdID0gbm9kZTtcbiAgICBlbHNlIHRoaXMuX3Jvb3QgPSBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVBbGwoZGF0YSkge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGRhdGEubGVuZ3RoOyBpIDwgbjsgKytpKSB0aGlzLnJlbW92ZShkYXRhW2ldKTtcbiAgcmV0dXJuIHRoaXM7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/remove.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/root.js": /*!**********************************************!*\ !*** ./node_modules/d3-quadtree/src/root.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return this._root;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3Jvb3QuanM/NDUwNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9yb290LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9yb290O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/root.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/size.js": /*!**********************************************!*\ !*** ./node_modules/d3-quadtree/src/size.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3NpemUuanM/YzJmNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBLGdDQUFnQztBQUNoQyxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9zaXplLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBzaXplID0gMDtcbiAgdGhpcy52aXNpdChmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKCFub2RlLmxlbmd0aCkgZG8gKytzaXplOyB3aGlsZSAobm9kZSA9IG5vZGUubmV4dClcbiAgfSk7XG4gIHJldHVybiBzaXplO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/size.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/visit.js": /*!***********************************************!*\ !*** ./node_modules/d3-quadtree/src/visit.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ \"./node_modules/d3-quadtree/src/quad.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, y0, xm, ym));\n }\n }\n return this;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3Zpc2l0LmpzPzExNTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUE2Qjs7QUFFZDtBQUNmO0FBQ0EsMkJBQTJCLGdEQUFJO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxnREFBSTtBQUM5QywwQ0FBMEMsZ0RBQUk7QUFDOUMsMENBQTBDLGdEQUFJO0FBQzlDLDBDQUEwQyxnREFBSTtBQUM5QztBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy92aXNpdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBRdWFkIGZyb20gXCIuL3F1YWQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHF1YWRzID0gW10sIHEsIG5vZGUgPSB0aGlzLl9yb290LCBjaGlsZCwgeDAsIHkwLCB4MSwgeTE7XG4gIGlmIChub2RlKSBxdWFkcy5wdXNoKG5ldyBRdWFkKG5vZGUsIHRoaXMuX3gwLCB0aGlzLl95MCwgdGhpcy5feDEsIHRoaXMuX3kxKSk7XG4gIHdoaWxlIChxID0gcXVhZHMucG9wKCkpIHtcbiAgICBpZiAoIWNhbGxiYWNrKG5vZGUgPSBxLm5vZGUsIHgwID0gcS54MCwgeTAgPSBxLnkwLCB4MSA9IHEueDEsIHkxID0gcS55MSkgJiYgbm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciB4bSA9ICh4MCArIHgxKSAvIDIsIHltID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbM10pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5bSwgeDEsIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzJdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeW0sIHhtLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsxXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHkwLCB4MSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMF0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5MCwgeG0sIHltKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/visit.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/visitAfter.js": /*!****************************************************!*\ !*** ./node_modules/d3-quadtree/src/visitAfter.js ***! \****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ \"./node_modules/d3-quadtree/src/quad.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3Zpc2l0QWZ0ZXIuanM/YjUyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQTZCOztBQUVkO0FBQ2Y7QUFDQSxpQ0FBaUMsZ0RBQUk7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsZ0RBQUk7QUFDOUMsMENBQTBDLGdEQUFJO0FBQzlDLDBDQUEwQyxnREFBSTtBQUM5QywwQ0FBMEMsZ0RBQUk7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy92aXNpdEFmdGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFF1YWQgZnJvbSBcIi4vcXVhZC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgcXVhZHMgPSBbXSwgbmV4dCA9IFtdLCBxO1xuICBpZiAodGhpcy5fcm9vdCkgcXVhZHMucHVzaChuZXcgUXVhZCh0aGlzLl9yb290LCB0aGlzLl94MCwgdGhpcy5feTAsIHRoaXMuX3gxLCB0aGlzLl95MSkpO1xuICB3aGlsZSAocSA9IHF1YWRzLnBvcCgpKSB7XG4gICAgdmFyIG5vZGUgPSBxLm5vZGU7XG4gICAgaWYgKG5vZGUubGVuZ3RoKSB7XG4gICAgICB2YXIgY2hpbGQsIHgwID0gcS54MCwgeTAgPSBxLnkwLCB4MSA9IHEueDEsIHkxID0gcS55MSwgeG0gPSAoeDAgKyB4MSkgLyAyLCB5bSA9ICh5MCArIHkxKSAvIDI7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzBdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeTAsIHhtLCB5bSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsxXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHkwLCB4MSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMl0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5bSwgeG0sIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzNdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4bSwgeW0sIHgxLCB5MSkpO1xuICAgIH1cbiAgICBuZXh0LnB1c2gocSk7XG4gIH1cbiAgd2hpbGUgKHEgPSBuZXh0LnBvcCgpKSB7XG4gICAgY2FsbGJhY2socS5ub2RlLCBxLngwLCBxLnkwLCBxLngxLCBxLnkxKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/visitAfter.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/x.js": /*!*******************************************!*\ !*** ./node_modules/d3-quadtree/src/x.js ***! \*******************************************/ /*! exports provided: defaultX, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultX\", function() { return defaultX; });\nfunction defaultX(d) {\n return d[0];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3guanM/OWJiYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBOztBQUVlO0FBQ2Y7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy94LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRYKGQpIHtcbiAgcmV0dXJuIGRbMF07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKF8pIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5feCA9IF8sIHRoaXMpIDogdGhpcy5feDtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/x.js\n"); /***/ }), /***/ "./node_modules/d3-quadtree/src/y.js": /*!*******************************************!*\ !*** ./node_modules/d3-quadtree/src/y.js ***! \*******************************************/ /*! exports provided: defaultY, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultY\", function() { return defaultY; });\nfunction defaultY(d) {\n return d[1];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3kuanM/MzZmZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBOztBQUVlO0FBQ2Y7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy95LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRZKGQpIHtcbiAgcmV0dXJuIGRbMV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKF8pIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5feSA9IF8sIHRoaXMpIDogdGhpcy5feTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-quadtree/src/y.js\n"); /***/ }), /***/ "./node_modules/d3-timer/src/index.js": /*!********************************************!*\ !*** ./node_modules/d3-timer/src/index.js ***! \********************************************/ /*! exports provided: now, timer, timerFlush, timeout, interval */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/d3-timer/src/timer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"now\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"timer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timerFlush\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"timerFlush\"]; });\n\n/* harmony import */ var _timeout_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./timeout.js */ \"./node_modules/d3-timer/src/timeout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeout\", function() { return _timeout_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-timer/src/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interval\", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtdGltZXIvc3JjL2luZGV4LmpzP2I1YWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlvQjs7QUFJRTs7QUFJQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy10aW1lci9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBub3csXG4gIHRpbWVyLFxuICB0aW1lckZsdXNoXG59IGZyb20gXCIuL3RpbWVyLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgdGltZW91dFxufSBmcm9tIFwiLi90aW1lb3V0LmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgaW50ZXJ2YWxcbn0gZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/d3-timer/src/index.js\n"); /***/ }), /***/ "./node_modules/d3-timer/src/interval.js": /*!***********************************************!*\ !*** ./node_modules/d3-timer/src/interval.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/d3-timer/src/timer.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, delay, time) {\n var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"Timer\"], total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? Object(_timer_js__WEBPACK_IMPORTED_MODULE_0__[\"now\"])() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtdGltZXIvc3JjL2ludGVydmFsLmpzP2Q1YmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFzQzs7QUFFdkI7QUFDZixjQUFjLCtDQUFLO0FBQ25CO0FBQ0Esd0NBQXdDLHFEQUFHO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9kMy10aW1lci9zcmMvaW50ZXJ2YWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RpbWVyLCBub3d9IGZyb20gXCIuL3RpbWVyLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICB2YXIgdCA9IG5ldyBUaW1lciwgdG90YWwgPSBkZWxheTtcbiAgaWYgKGRlbGF5ID09IG51bGwpIHJldHVybiB0LnJlc3RhcnQoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSwgdDtcbiAgZGVsYXkgPSArZGVsYXksIHRpbWUgPSB0aW1lID09IG51bGwgPyBub3coKSA6ICt0aW1lO1xuICB0LnJlc3RhcnQoZnVuY3Rpb24gdGljayhlbGFwc2VkKSB7XG4gICAgZWxhcHNlZCArPSB0b3RhbDtcbiAgICB0LnJlc3RhcnQodGljaywgdG90YWwgKz0gZGVsYXksIHRpbWUpO1xuICAgIGNhbGxiYWNrKGVsYXBzZWQpO1xuICB9LCBkZWxheSwgdGltZSk7XG4gIHJldHVybiB0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/d3-timer/src/interval.js\n"); /***/ }), /***/ "./node_modules/d3-timer/src/timeout.js": /*!**********************************************!*\ !*** ./node_modules/d3-timer/src/timeout.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/d3-timer/src/timer.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, delay, time) {\n var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"Timer\"];\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtdGltZXIvc3JjL3RpbWVvdXQuanM/M2UwNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWlDOztBQUVsQjtBQUNmLGNBQWMsK0NBQUs7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy90aW1lb3V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUaW1lcn0gZnJvbSBcIi4vdGltZXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyO1xuICBkZWxheSA9IGRlbGF5ID09IG51bGwgPyAwIDogK2RlbGF5O1xuICB0LnJlc3RhcnQoZnVuY3Rpb24oZWxhcHNlZCkge1xuICAgIHQuc3RvcCgpO1xuICAgIGNhbGxiYWNrKGVsYXBzZWQgKyBkZWxheSk7XG4gIH0sIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-timer/src/timeout.js\n"); /***/ }), /***/ "./node_modules/d3-timer/src/timer.js": /*!********************************************!*\ !*** ./node_modules/d3-timer/src/timer.js ***! \********************************************/ /*! exports provided: now, Timer, timer, timerFlush */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return now; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Timer\", function() { return Timer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return timer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timerFlush\", function() { return timerFlush; });\nvar frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nfunction Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nfunction timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nfunction timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZDMtdGltZXIvc3JjL3RpbWVyLmpzPzc0ZjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUlBQXFJLG1CQUFtQjs7QUFFako7QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLFFBQVE7QUFDUixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZDMtdGltZXIvc3JjL3RpbWVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGZyYW1lID0gMCwgLy8gaXMgYW4gYW5pbWF0aW9uIGZyYW1lIHBlbmRpbmc/XG4gICAgdGltZW91dCA9IDAsIC8vIGlzIGEgdGltZW91dCBwZW5kaW5nP1xuICAgIGludGVydmFsID0gMCwgLy8gYXJlIGFueSB0aW1lcnMgYWN0aXZlP1xuICAgIHBva2VEZWxheSA9IDEwMDAsIC8vIGhvdyBmcmVxdWVudGx5IHdlIGNoZWNrIGZvciBjbG9jayBza2V3XG4gICAgdGFza0hlYWQsXG4gICAgdGFza1RhaWwsXG4gICAgY2xvY2tMYXN0ID0gMCxcbiAgICBjbG9ja05vdyA9IDAsXG4gICAgY2xvY2tTa2V3ID0gMCxcbiAgICBjbG9jayA9IHR5cGVvZiBwZXJmb3JtYW5jZSA9PT0gXCJvYmplY3RcIiAmJiBwZXJmb3JtYW5jZS5ub3cgPyBwZXJmb3JtYW5jZSA6IERhdGUsXG4gICAgc2V0RnJhbWUgPSB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KSA6IGZ1bmN0aW9uKGYpIHsgc2V0VGltZW91dChmLCAxNyk7IH07XG5cbmV4cG9ydCBmdW5jdGlvbiBub3coKSB7XG4gIHJldHVybiBjbG9ja05vdyB8fCAoc2V0RnJhbWUoY2xlYXJOb3cpLCBjbG9ja05vdyA9IGNsb2NrLm5vdygpICsgY2xvY2tTa2V3KTtcbn1cblxuZnVuY3Rpb24gY2xlYXJOb3coKSB7XG4gIGNsb2NrTm93ID0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRpbWVyKCkge1xuICB0aGlzLl9jYWxsID1cbiAgdGhpcy5fdGltZSA9XG4gIHRoaXMuX25leHQgPSBudWxsO1xufVxuXG5UaW1lci5wcm90b3R5cGUgPSB0aW1lci5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBUaW1lcixcbiAgcmVzdGFydDogZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb25cIik7XG4gICAgdGltZSA9ICh0aW1lID09IG51bGwgPyBub3coKSA6ICt0aW1lKSArIChkZWxheSA9PSBudWxsID8gMCA6ICtkZWxheSk7XG4gICAgaWYgKCF0aGlzLl9uZXh0ICYmIHRhc2tUYWlsICE9PSB0aGlzKSB7XG4gICAgICBpZiAodGFza1RhaWwpIHRhc2tUYWlsLl9uZXh0ID0gdGhpcztcbiAgICAgIGVsc2UgdGFza0hlYWQgPSB0aGlzO1xuICAgICAgdGFza1RhaWwgPSB0aGlzO1xuICAgIH1cbiAgICB0aGlzLl9jYWxsID0gY2FsbGJhY2s7XG4gICAgdGhpcy5fdGltZSA9IHRpbWU7XG4gICAgc2xlZXAoKTtcbiAgfSxcbiAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2NhbGwpIHtcbiAgICAgIHRoaXMuX2NhbGwgPSBudWxsO1xuICAgICAgdGhpcy5fdGltZSA9IEluZmluaXR5O1xuICAgICAgc2xlZXAoKTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lcihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgdmFyIHQgPSBuZXcgVGltZXI7XG4gIHQucmVzdGFydChjYWxsYmFjaywgZGVsYXksIHRpbWUpO1xuICByZXR1cm4gdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVyRmx1c2goKSB7XG4gIG5vdygpOyAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZSwgaWYgbm90IGFscmVhZHkgc2V0LlxuICArK2ZyYW1lOyAvLyBQcmV0ZW5kIHdl4oCZdmUgc2V0IGFuIGFsYXJtLCBpZiB3ZSBoYXZlbuKAmXQgYWxyZWFkeS5cbiAgdmFyIHQgPSB0YXNrSGVhZCwgZTtcbiAgd2hpbGUgKHQpIHtcbiAgICBpZiAoKGUgPSBjbG9ja05vdyAtIHQuX3RpbWUpID49IDApIHQuX2NhbGwuY2FsbChudWxsLCBlKTtcbiAgICB0ID0gdC5fbmV4dDtcbiAgfVxuICAtLWZyYW1lO1xufVxuXG5mdW5jdGlvbiB3YWtlKCkge1xuICBjbG9ja05vdyA9IChjbG9ja0xhc3QgPSBjbG9jay5ub3coKSkgKyBjbG9ja1NrZXc7XG4gIGZyYW1lID0gdGltZW91dCA9IDA7XG4gIHRyeSB7XG4gICAgdGltZXJGbHVzaCgpO1xuICB9IGZpbmFsbHkge1xuICAgIGZyYW1lID0gMDtcbiAgICBuYXAoKTtcbiAgICBjbG9ja05vdyA9IDA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9rZSgpIHtcbiAgdmFyIG5vdyA9IGNsb2NrLm5vdygpLCBkZWxheSA9IG5vdyAtIGNsb2NrTGFzdDtcbiAgaWYgKGRlbGF5ID4gcG9rZURlbGF5KSBjbG9ja1NrZXcgLT0gZGVsYXksIGNsb2NrTGFzdCA9IG5vdztcbn1cblxuZnVuY3Rpb24gbmFwKCkge1xuICB2YXIgdDAsIHQxID0gdGFza0hlYWQsIHQyLCB0aW1lID0gSW5maW5pdHk7XG4gIHdoaWxlICh0MSkge1xuICAgIGlmICh0MS5fY2FsbCkge1xuICAgICAgaWYgKHRpbWUgPiB0MS5fdGltZSkgdGltZSA9IHQxLl90aW1lO1xuICAgICAgdDAgPSB0MSwgdDEgPSB0MS5fbmV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgdDIgPSB0MS5fbmV4dCwgdDEuX25leHQgPSBudWxsO1xuICAgICAgdDEgPSB0MCA/IHQwLl9uZXh0ID0gdDIgOiB0YXNrSGVhZCA9IHQyO1xuICAgIH1cbiAgfVxuICB0YXNrVGFpbCA9IHQwO1xuICBzbGVlcCh0aW1lKTtcbn1cblxuZnVuY3Rpb24gc2xlZXAodGltZSkge1xuICBpZiAoZnJhbWUpIHJldHVybjsgLy8gU29vbmVzdCBhbGFybSBhbHJlYWR5IHNldCwgb3Igd2lsbCBiZS5cbiAgaWYgKHRpbWVvdXQpIHRpbWVvdXQgPSBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gIHZhciBkZWxheSA9IHRpbWUgLSBjbG9ja05vdzsgLy8gU3RyaWN0bHkgbGVzcyB0aGFuIGlmIHdlIHJlY29tcHV0ZWQgY2xvY2tOb3cuXG4gIGlmIChkZWxheSA+IDI0KSB7XG4gICAgaWYgKHRpbWUgPCBJbmZpbml0eSkgdGltZW91dCA9IHNldFRpbWVvdXQod2FrZSwgdGltZSAtIGNsb2NrLm5vdygpIC0gY2xvY2tTa2V3KTtcbiAgICBpZiAoaW50ZXJ2YWwpIGludGVydmFsID0gY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFpbnRlcnZhbCkgY2xvY2tMYXN0ID0gY2xvY2subm93KCksIGludGVydmFsID0gc2V0SW50ZXJ2YWwocG9rZSwgcG9rZURlbGF5KTtcbiAgICBmcmFtZSA9IDEsIHNldEZyYW1lKHdha2UpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/d3-timer/src/timer.js\n"); /***/ }), /***/ "./node_modules/detect-browser/es/index.js": /*!*************************************************!*\ !*** ./node_modules/detect-browser/es/index.js ***! \*************************************************/ /*! exports provided: BrowserInfo, NodeInfo, SearchBotDeviceInfo, BotInfo, ReactNativeInfo, detect, browserName, parseUserAgent, detectOS, getNodeVersion */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(process) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BrowserInfo\", function() { return BrowserInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NodeInfo\", function() { return NodeInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SearchBotDeviceInfo\", function() { return SearchBotDeviceInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BotInfo\", function() { return BotInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReactNativeInfo\", function() { return ReactNativeInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detect\", function() { return detect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"browserName\", function() { return browserName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseUserAgent\", function() { return parseUserAgent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectOS\", function() { return detectOS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNodeVersion\", function() { return getNodeVersion; });\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\n\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\n\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\n\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\n\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\n\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nfunction detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nfunction browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nfunction parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nfunction detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nfunction getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGV0ZWN0LWJyb3dzZXIvZXMvaW5kZXguanM/N2I0NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBQXFCLFNBQUksSUFBSSxTQUFJO0FBQ2pDLDRFQUE0RSxPQUFPO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDc0I7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDbUI7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUM4QjtBQUMvQjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDa0I7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDMEI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsNENBQTRDO0FBQ3pGO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCx5REFBeUQsWUFBWTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFlBQVk7QUFDaEM7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZGV0ZWN0LWJyb3dzZXIvZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG52YXIgQnJvd3NlckluZm8gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQnJvd3NlckluZm8obmFtZSwgdmVyc2lvbiwgb3MpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgdGhpcy5vcyA9IG9zO1xuICAgICAgICB0aGlzLnR5cGUgPSAnYnJvd3Nlcic7XG4gICAgfVxuICAgIHJldHVybiBCcm93c2VySW5mbztcbn0oKSk7XG5leHBvcnQgeyBCcm93c2VySW5mbyB9O1xudmFyIE5vZGVJbmZvID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vZGVJbmZvKHZlcnNpb24pIHtcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgdGhpcy50eXBlID0gJ25vZGUnO1xuICAgICAgICB0aGlzLm5hbWUgPSAnbm9kZSc7XG4gICAgICAgIHRoaXMub3MgPSBwcm9jZXNzLnBsYXRmb3JtO1xuICAgIH1cbiAgICByZXR1cm4gTm9kZUluZm87XG59KCkpO1xuZXhwb3J0IHsgTm9kZUluZm8gfTtcbnZhciBTZWFyY2hCb3REZXZpY2VJbmZvID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNlYXJjaEJvdERldmljZUluZm8obmFtZSwgdmVyc2lvbiwgb3MsIGJvdCkge1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgICB0aGlzLm9zID0gb3M7XG4gICAgICAgIHRoaXMuYm90ID0gYm90O1xuICAgICAgICB0aGlzLnR5cGUgPSAnYm90LWRldmljZSc7XG4gICAgfVxuICAgIHJldHVybiBTZWFyY2hCb3REZXZpY2VJbmZvO1xufSgpKTtcbmV4cG9ydCB7IFNlYXJjaEJvdERldmljZUluZm8gfTtcbnZhciBCb3RJbmZvID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJvdEluZm8oKSB7XG4gICAgICAgIHRoaXMudHlwZSA9ICdib3QnO1xuICAgICAgICB0aGlzLmJvdCA9IHRydWU7IC8vIE5PVEU6IGRlcHJlY2F0ZWQgdGVzdCBuYW1lIGluc3RlYWRcbiAgICAgICAgdGhpcy5uYW1lID0gJ2JvdCc7XG4gICAgICAgIHRoaXMudmVyc2lvbiA9IG51bGw7XG4gICAgICAgIHRoaXMub3MgPSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gQm90SW5mbztcbn0oKSk7XG5leHBvcnQgeyBCb3RJbmZvIH07XG52YXIgUmVhY3ROYXRpdmVJbmZvID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFJlYWN0TmF0aXZlSW5mbygpIHtcbiAgICAgICAgdGhpcy50eXBlID0gJ3JlYWN0LW5hdGl2ZSc7XG4gICAgICAgIHRoaXMubmFtZSA9ICdyZWFjdC1uYXRpdmUnO1xuICAgICAgICB0aGlzLnZlcnNpb24gPSBudWxsO1xuICAgICAgICB0aGlzLm9zID0gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIFJlYWN0TmF0aXZlSW5mbztcbn0oKSk7XG5leHBvcnQgeyBSZWFjdE5hdGl2ZUluZm8gfTtcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbnZhciBTRUFSQ0hCT1hfVUFfUkVHRVggPSAvYWxleGF8Ym90fGNyYXdsKGVyfGluZyl8ZmFjZWJvb2tleHRlcm5hbGhpdHxmZWVkYnVybmVyfGdvb2dsZSB3ZWIgcHJldmlld3xuYWdpb3N8cG9zdHJhbmt8cGluZ2RvbXxzbHVycHxzcGlkZXJ8eWFob28hfHlhbmRleC87XG52YXIgU0VBUkNIQk9UX09TX1JFR0VYID0gLyhudWhrfGN1cmx8R29vZ2xlYm90fFlhbW15Ym90fE9wZW5ib3R8U2x1cnB8TVNOQm90fEFza1xcIEplZXZlc1xcL1Rlb21hfGlhX2FyY2hpdmVyKS87XG52YXIgUkVRVUlSRURfVkVSU0lPTl9QQVJUUyA9IDM7XG52YXIgdXNlckFnZW50UnVsZXMgPSBbXG4gICAgWydhb2wnLCAvQU9MU2hpZWxkXFwvKFswLTlcXC5fXSspL10sXG4gICAgWydlZGdlJywgL0VkZ2VcXC8oWzAtOVxcLl9dKykvXSxcbiAgICBbJ2VkZ2UtaW9zJywgL0VkZ2lPU1xcLyhbMC05XFwuX10rKS9dLFxuICAgIFsneWFuZGV4YnJvd3NlcicsIC9ZYUJyb3dzZXJcXC8oWzAtOVxcLl9dKykvXSxcbiAgICBbJ2tha2FvdGFsaycsIC9LQUtBT1RBTEtcXHMoWzAtOVxcLl0rKS9dLFxuICAgIFsnc2Ftc3VuZycsIC9TYW1zdW5nQnJvd3NlclxcLyhbMC05XFwuXSspL10sXG4gICAgWydzaWxrJywgL1xcYlNpbGtcXC8oWzAtOS5fLV0rKVxcYi9dLFxuICAgIFsnbWl1aScsIC9NaXVpQnJvd3NlclxcLyhbMC05XFwuXSspJC9dLFxuICAgIFsnYmVha2VyJywgL0JlYWtlckJyb3dzZXJcXC8oWzAtOVxcLl0rKS9dLFxuICAgIFsnZWRnZS1jaHJvbWl1bScsIC9FZGdBP1xcLyhbMC05XFwuXSspL10sXG4gICAgW1xuICAgICAgICAnY2hyb21pdW0td2VidmlldycsXG4gICAgICAgIC8oPyFDaHJvbS4qT1BSKXd2XFwpLipDaHJvbSg/OmV8aXVtKVxcLyhbMC05XFwuXSspKDo/XFxzfCQpLyxcbiAgICBdLFxuICAgIFsnY2hyb21lJywgLyg/IUNocm9tLipPUFIpQ2hyb20oPzplfGl1bSlcXC8oWzAtOVxcLl0rKSg6P1xcc3wkKS9dLFxuICAgIFsncGhhbnRvbWpzJywgL1BoYW50b21KU1xcLyhbMC05XFwuXSspKDo/XFxzfCQpL10sXG4gICAgWydjcmlvcycsIC9DcmlPU1xcLyhbMC05XFwuXSspKDo/XFxzfCQpL10sXG4gICAgWydmaXJlZm94JywgL0ZpcmVmb3hcXC8oWzAtOVxcLl0rKSg/Olxcc3wkKS9dLFxuICAgIFsnZnhpb3MnLCAvRnhpT1NcXC8oWzAtOVxcLl0rKS9dLFxuICAgIFsnb3BlcmEtbWluaScsIC9PcGVyYSBNaW5pLipWZXJzaW9uXFwvKFswLTlcXC5dKykvXSxcbiAgICBbJ29wZXJhJywgL09wZXJhXFwvKFswLTlcXC5dKykoPzpcXHN8JCkvXSxcbiAgICBbJ29wZXJhJywgL09QUlxcLyhbMC05XFwuXSspKDo/XFxzfCQpL10sXG4gICAgWydwaWUnLCAvXk1pY3Jvc29mdCBQb2NrZXQgSW50ZXJuZXQgRXhwbG9yZXJcXC8oXFxkK1xcLlxcZCspJC9dLFxuICAgIFsncGllJywgL15Nb3ppbGxhXFwvXFxkXFwuXFxkK1xcc1xcKGNvbXBhdGlibGU7XFxzKD86TVNQP0lFfE1TSW50ZXJuZXQgRXhwbG9yZXIpIChcXGQrXFwuXFxkKyk7LipXaW5kb3dzIENFLipcXCkkL10sXG4gICAgWyduZXRmcm9udCcsIC9eTW96aWxsYVxcL1xcZFxcLlxcZCsuKk5ldEZyb250XFwvKFxcZC5cXGQpL10sXG4gICAgWydpZScsIC9UcmlkZW50XFwvN1xcLjAuKnJ2XFw6KFswLTlcXC5dKykuKlxcKS4qR2Vja28kL10sXG4gICAgWydpZScsIC9NU0lFXFxzKFswLTlcXC5dKyk7LipUcmlkZW50XFwvWzQtN10uMC9dLFxuICAgIFsnaWUnLCAvTVNJRVxccyg3XFwuMCkvXSxcbiAgICBbJ2JiMTAnLCAvQkIxMDtcXHNUb3VjaC4qVmVyc2lvblxcLyhbMC05XFwuXSspL10sXG4gICAgWydhbmRyb2lkJywgL0FuZHJvaWRcXHMoWzAtOVxcLl0rKS9dLFxuICAgIFsnaW9zJywgL1ZlcnNpb25cXC8oWzAtOVxcLl9dKykuKk1vYmlsZS4qU2FmYXJpLiovXSxcbiAgICBbJ3NhZmFyaScsIC9WZXJzaW9uXFwvKFswLTlcXC5fXSspLipTYWZhcmkvXSxcbiAgICBbJ2ZhY2Vib29rJywgL0ZCW0FTXVZcXC8oWzAtOVxcLl0rKS9dLFxuICAgIFsnaW5zdGFncmFtJywgL0luc3RhZ3JhbVxccyhbMC05XFwuXSspL10sXG4gICAgWydpb3Mtd2VidmlldycsIC9BcHBsZVdlYktpdFxcLyhbMC05XFwuXSspLipNb2JpbGUvXSxcbiAgICBbJ2lvcy13ZWJ2aWV3JywgL0FwcGxlV2ViS2l0XFwvKFswLTlcXC5dKykuKkdlY2tvXFwpJC9dLFxuICAgIFsnY3VybCcsIC9eY3VybFxcLyhbMC05XFwuXSspJC9dLFxuICAgIFsnc2VhcmNoYm90JywgU0VBUkNIQk9YX1VBX1JFR0VYXSxcbl07XG52YXIgb3BlcmF0aW5nU3lzdGVtUnVsZXMgPSBbXG4gICAgWydpT1MnLCAvaVAoaG9uZXxvZHxhZCkvXSxcbiAgICBbJ0FuZHJvaWQgT1MnLCAvQW5kcm9pZC9dLFxuICAgIFsnQmxhY2tCZXJyeSBPUycsIC9CbGFja0JlcnJ5fEJCMTAvXSxcbiAgICBbJ1dpbmRvd3MgTW9iaWxlJywgL0lFTW9iaWxlL10sXG4gICAgWydBbWF6b24gT1MnLCAvS2luZGxlL10sXG4gICAgWydXaW5kb3dzIDMuMTEnLCAvV2luMTYvXSxcbiAgICBbJ1dpbmRvd3MgOTUnLCAvKFdpbmRvd3MgOTUpfChXaW45NSl8KFdpbmRvd3NfOTUpL10sXG4gICAgWydXaW5kb3dzIDk4JywgLyhXaW5kb3dzIDk4KXwoV2luOTgpL10sXG4gICAgWydXaW5kb3dzIDIwMDAnLCAvKFdpbmRvd3MgTlQgNS4wKXwoV2luZG93cyAyMDAwKS9dLFxuICAgIFsnV2luZG93cyBYUCcsIC8oV2luZG93cyBOVCA1LjEpfChXaW5kb3dzIFhQKS9dLFxuICAgIFsnV2luZG93cyBTZXJ2ZXIgMjAwMycsIC8oV2luZG93cyBOVCA1LjIpL10sXG4gICAgWydXaW5kb3dzIFZpc3RhJywgLyhXaW5kb3dzIE5UIDYuMCkvXSxcbiAgICBbJ1dpbmRvd3MgNycsIC8oV2luZG93cyBOVCA2LjEpL10sXG4gICAgWydXaW5kb3dzIDgnLCAvKFdpbmRvd3MgTlQgNi4yKS9dLFxuICAgIFsnV2luZG93cyA4LjEnLCAvKFdpbmRvd3MgTlQgNi4zKS9dLFxuICAgIFsnV2luZG93cyAxMCcsIC8oV2luZG93cyBOVCAxMC4wKS9dLFxuICAgIFsnV2luZG93cyBNRScsIC9XaW5kb3dzIE1FL10sXG4gICAgWydXaW5kb3dzIENFJywgL1dpbmRvd3MgQ0V8V2luQ0V8TWljcm9zb2Z0IFBvY2tldCBJbnRlcm5ldCBFeHBsb3Jlci9dLFxuICAgIFsnT3BlbiBCU0QnLCAvT3BlbkJTRC9dLFxuICAgIFsnU3VuIE9TJywgL1N1bk9TL10sXG4gICAgWydDaHJvbWUgT1MnLCAvQ3JPUy9dLFxuICAgIFsnTGludXgnLCAvKExpbnV4KXwoWDExKS9dLFxuICAgIFsnTWFjIE9TJywgLyhNYWNfUG93ZXJQQyl8KE1hY2ludG9zaCkvXSxcbiAgICBbJ1FOWCcsIC9RTlgvXSxcbiAgICBbJ0JlT1MnLCAvQmVPUy9dLFxuICAgIFsnT1MvMicsIC9PU1xcLzIvXSxcbl07XG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0KHVzZXJBZ2VudCkge1xuICAgIGlmICghIXVzZXJBZ2VudCkge1xuICAgICAgICByZXR1cm4gcGFyc2VVc2VyQWdlbnQodXNlckFnZW50KTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgbmF2aWdhdG9yLnByb2R1Y3QgPT09ICdSZWFjdE5hdGl2ZScpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWFjdE5hdGl2ZUluZm8oKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBwYXJzZVVzZXJBZ2VudChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGdldE5vZGVWZXJzaW9uKCk7XG59XG5mdW5jdGlvbiBtYXRjaFVzZXJBZ2VudCh1YSkge1xuICAgIC8vIG9wdGVkIGZvciB1c2luZyByZWR1Y2UgaGVyZSByYXRoZXIgdGhhbiBBcnJheSNmaXJzdCB3aXRoIGEgcmVnZXgudGVzdCBjYWxsXG4gICAgLy8gdGhpcyBpcyBwcmltYXJpbHkgYmVjYXVzZSB1c2luZyB0aGUgcmVkdWNlIHdlIG9ubHkgcGVyZm9ybSB0aGUgcmVnZXhcbiAgICAvLyBleGVjdXRpb24gb25jZSByYXRoZXIgdGhhbiBvbmNlIGZvciB0aGUgdGVzdCBhbmQgZm9yIHRoZSBleGVjIGFnYWluIGJlbG93XG4gICAgLy8gcHJvYmFibHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgYmVuY2htYXJrZWQgdGhvdWdoXG4gICAgcmV0dXJuICh1YSAhPT0gJycgJiZcbiAgICAgICAgdXNlckFnZW50UnVsZXMucmVkdWNlKGZ1bmN0aW9uIChtYXRjaGVkLCBfYSkge1xuICAgICAgICAgICAgdmFyIGJyb3dzZXIgPSBfYVswXSwgcmVnZXggPSBfYVsxXTtcbiAgICAgICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdWFNYXRjaCA9IHJlZ2V4LmV4ZWModWEpO1xuICAgICAgICAgICAgcmV0dXJuICEhdWFNYXRjaCAmJiBbYnJvd3NlciwgdWFNYXRjaF07XG4gICAgICAgIH0sIGZhbHNlKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYnJvd3Nlck5hbWUodWEpIHtcbiAgICB2YXIgZGF0YSA9IG1hdGNoVXNlckFnZW50KHVhKTtcbiAgICByZXR1cm4gZGF0YSA/IGRhdGFbMF0gOiBudWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVXNlckFnZW50KHVhKSB7XG4gICAgdmFyIG1hdGNoZWRSdWxlID0gbWF0Y2hVc2VyQWdlbnQodWEpO1xuICAgIGlmICghbWF0Y2hlZFJ1bGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBuYW1lID0gbWF0Y2hlZFJ1bGVbMF0sIG1hdGNoID0gbWF0Y2hlZFJ1bGVbMV07XG4gICAgaWYgKG5hbWUgPT09ICdzZWFyY2hib3QnKSB7XG4gICAgICAgIHJldHVybiBuZXcgQm90SW5mbygpO1xuICAgIH1cbiAgICAvLyBEbyBub3QgdXNlIFJlZ0V4cCBmb3Igc3BsaXQgb3BlcmF0aW9uIGFzIHNvbWUgYnJvd3NlciBkbyBub3Qgc3VwcG9ydCBpdCAoU2VlOiBodHRwOi8vYmxvZy5zdGV2ZW5sZXZpdGhhbi5jb20vYXJjaGl2ZXMvY3Jvc3MtYnJvd3Nlci1zcGxpdClcbiAgICB2YXIgdmVyc2lvblBhcnRzID0gbWF0Y2hbMV0gJiYgbWF0Y2hbMV0uc3BsaXQoJy4nKS5qb2luKCdfJykuc3BsaXQoJ18nKS5zbGljZSgwLCAzKTtcbiAgICBpZiAodmVyc2lvblBhcnRzKSB7XG4gICAgICAgIGlmICh2ZXJzaW9uUGFydHMubGVuZ3RoIDwgUkVRVUlSRURfVkVSU0lPTl9QQVJUUykge1xuICAgICAgICAgICAgdmVyc2lvblBhcnRzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCB2ZXJzaW9uUGFydHMsIHRydWUpLCBjcmVhdGVWZXJzaW9uUGFydHMoUkVRVUlSRURfVkVSU0lPTl9QQVJUUyAtIHZlcnNpb25QYXJ0cy5sZW5ndGgpLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmVyc2lvblBhcnRzID0gW107XG4gICAgfVxuICAgIHZhciB2ZXJzaW9uID0gdmVyc2lvblBhcnRzLmpvaW4oJy4nKTtcbiAgICB2YXIgb3MgPSBkZXRlY3RPUyh1YSk7XG4gICAgdmFyIHNlYXJjaEJvdE1hdGNoID0gU0VBUkNIQk9UX09TX1JFR0VYLmV4ZWModWEpO1xuICAgIGlmIChzZWFyY2hCb3RNYXRjaCAmJiBzZWFyY2hCb3RNYXRjaFsxXSkge1xuICAgICAgICByZXR1cm4gbmV3IFNlYXJjaEJvdERldmljZUluZm8obmFtZSwgdmVyc2lvbiwgb3MsIHNlYXJjaEJvdE1hdGNoWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBCcm93c2VySW5mbyhuYW1lLCB2ZXJzaW9uLCBvcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0T1ModWEpIHtcbiAgICBmb3IgKHZhciBpaSA9IDAsIGNvdW50ID0gb3BlcmF0aW5nU3lzdGVtUnVsZXMubGVuZ3RoOyBpaSA8IGNvdW50OyBpaSsrKSB7XG4gICAgICAgIHZhciBfYSA9IG9wZXJhdGluZ1N5c3RlbVJ1bGVzW2lpXSwgb3MgPSBfYVswXSwgcmVnZXggPSBfYVsxXTtcbiAgICAgICAgdmFyIG1hdGNoID0gcmVnZXguZXhlYyh1YSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIG9zO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE5vZGVWZXJzaW9uKCkge1xuICAgIHZhciBpc05vZGUgPSB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy52ZXJzaW9uO1xuICAgIHJldHVybiBpc05vZGUgPyBuZXcgTm9kZUluZm8ocHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDEpKSA6IG51bGw7XG59XG5mdW5jdGlvbiBjcmVhdGVWZXJzaW9uUGFydHMoY291bnQpIHtcbiAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGNvdW50OyBpaSsrKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKCcwJyk7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/detect-browser/es/index.js\n"); /***/ }), /***/ "./node_modules/fecha/lib/fecha.js": /*!*****************************************!*\ !*** ./node_modules/fecha/lib/fecha.js ***! \*****************************************/ /*! exports provided: default, assign, format, parse, defaultI18n, setGlobalDateI18n, setGlobalDateMasks */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return assign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultI18n\", function() { return defaultI18n; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setGlobalDateI18n\", function() { return setGlobalDateI18n; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setGlobalDateMasks\", function() { return setGlobalDateMasks; });\nvar token = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nvar twoDigitsOptional = \"[1-9]\\\\d?\";\nvar twoDigits = \"\\\\d\\\\d\";\nvar threeDigits = \"\\\\d{3}\";\nvar fourDigits = \"\\\\d{4}\";\nvar word = \"[^\\\\s]+\";\nvar literal = /\\[([^]*?)\\]/gm;\nfunction shorten(arr, sLen) {\n var newArr = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n}\nvar monthUpdate = function (arrName) { return function (v, i18n) {\n var lowerCaseArr = i18n[arrName].map(function (v) { return v.toLowerCase(); });\n var index = lowerCaseArr.indexOf(v.toLowerCase());\n if (index > -1) {\n return index;\n }\n return null;\n}; };\nfunction assign(origObj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var obj = args_1[_a];\n for (var key in obj) {\n // @ts-ignore ex\n origObj[key] = obj[key];\n }\n }\n return origObj;\n}\nvar dayNames = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\nvar monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\nvar monthNamesShort = shorten(monthNames, 3);\nvar dayNamesShort = shorten(dayNames, 3);\nvar defaultI18n = {\n dayNamesShort: dayNamesShort,\n dayNames: dayNames,\n monthNamesShort: monthNamesShort,\n monthNames: monthNames,\n amPm: [\"am\", \"pm\"],\n DoFn: function (dayOfMonth) {\n return (dayOfMonth +\n [\"th\", \"st\", \"nd\", \"rd\"][dayOfMonth % 10 > 3\n ? 0\n : ((dayOfMonth - (dayOfMonth % 10) !== 10 ? 1 : 0) * dayOfMonth) % 10]);\n }\n};\nvar globalI18n = assign({}, defaultI18n);\nvar setGlobalDateI18n = function (i18n) {\n return (globalI18n = assign(globalI18n, i18n));\n};\nvar regexEscape = function (str) {\n return str.replace(/[|\\\\{()[^$+*?.-]/g, \"\\\\$&\");\n};\nvar pad = function (val, len) {\n if (len === void 0) { len = 2; }\n val = String(val);\n while (val.length < len) {\n val = \"0\" + val;\n }\n return val;\n};\nvar formatFlags = {\n D: function (dateObj) { return String(dateObj.getDate()); },\n DD: function (dateObj) { return pad(dateObj.getDate()); },\n Do: function (dateObj, i18n) {\n return i18n.DoFn(dateObj.getDate());\n },\n d: function (dateObj) { return String(dateObj.getDay()); },\n dd: function (dateObj) { return pad(dateObj.getDay()); },\n ddd: function (dateObj, i18n) {\n return i18n.dayNamesShort[dateObj.getDay()];\n },\n dddd: function (dateObj, i18n) {\n return i18n.dayNames[dateObj.getDay()];\n },\n M: function (dateObj) { return String(dateObj.getMonth() + 1); },\n MM: function (dateObj) { return pad(dateObj.getMonth() + 1); },\n MMM: function (dateObj, i18n) {\n return i18n.monthNamesShort[dateObj.getMonth()];\n },\n MMMM: function (dateObj, i18n) {\n return i18n.monthNames[dateObj.getMonth()];\n },\n YY: function (dateObj) {\n return pad(String(dateObj.getFullYear()), 4).substr(2);\n },\n YYYY: function (dateObj) { return pad(dateObj.getFullYear(), 4); },\n h: function (dateObj) { return String(dateObj.getHours() % 12 || 12); },\n hh: function (dateObj) { return pad(dateObj.getHours() % 12 || 12); },\n H: function (dateObj) { return String(dateObj.getHours()); },\n HH: function (dateObj) { return pad(dateObj.getHours()); },\n m: function (dateObj) { return String(dateObj.getMinutes()); },\n mm: function (dateObj) { return pad(dateObj.getMinutes()); },\n s: function (dateObj) { return String(dateObj.getSeconds()); },\n ss: function (dateObj) { return pad(dateObj.getSeconds()); },\n S: function (dateObj) {\n return String(Math.round(dateObj.getMilliseconds() / 100));\n },\n SS: function (dateObj) {\n return pad(Math.round(dateObj.getMilliseconds() / 10), 2);\n },\n SSS: function (dateObj) { return pad(dateObj.getMilliseconds(), 3); },\n a: function (dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];\n },\n A: function (dateObj, i18n) {\n return dateObj.getHours() < 12\n ? i18n.amPm[0].toUpperCase()\n : i18n.amPm[1].toUpperCase();\n },\n ZZ: function (dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return ((offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60) * 100 + (Math.abs(offset) % 60), 4));\n },\n Z: function (dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return ((offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60), 2) +\n \":\" +\n pad(Math.abs(offset) % 60, 2));\n }\n};\nvar monthParse = function (v) { return +v - 1; };\nvar emptyDigits = [null, twoDigitsOptional];\nvar emptyWord = [null, word];\nvar amPm = [\n \"isPm\",\n word,\n function (v, i18n) {\n var val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n return 0;\n }\n else if (val === i18n.amPm[1]) {\n return 1;\n }\n return null;\n }\n];\nvar timezoneOffset = [\n \"timezoneOffset\",\n \"[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z?\",\n function (v) {\n var parts = (v + \"\").match(/([+-]|\\d\\d)/gi);\n if (parts) {\n var minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n return parts[0] === \"+\" ? minutes : -minutes;\n }\n return 0;\n }\n];\nvar parseFlags = {\n D: [\"day\", twoDigitsOptional],\n DD: [\"day\", twoDigits],\n Do: [\"day\", twoDigitsOptional + word, function (v) { return parseInt(v, 10); }],\n M: [\"month\", twoDigitsOptional, monthParse],\n MM: [\"month\", twoDigits, monthParse],\n YY: [\n \"year\",\n twoDigits,\n function (v) {\n var now = new Date();\n var cent = +(\"\" + now.getFullYear()).substr(0, 2);\n return +(\"\" + (+v > 68 ? cent - 1 : cent) + v);\n }\n ],\n h: [\"hour\", twoDigitsOptional, undefined, \"isPm\"],\n hh: [\"hour\", twoDigits, undefined, \"isPm\"],\n H: [\"hour\", twoDigitsOptional],\n HH: [\"hour\", twoDigits],\n m: [\"minute\", twoDigitsOptional],\n mm: [\"minute\", twoDigits],\n s: [\"second\", twoDigitsOptional],\n ss: [\"second\", twoDigits],\n YYYY: [\"year\", fourDigits],\n S: [\"millisecond\", \"\\\\d\", function (v) { return +v * 100; }],\n SS: [\"millisecond\", twoDigits, function (v) { return +v * 10; }],\n SSS: [\"millisecond\", threeDigits],\n d: emptyDigits,\n dd: emptyDigits,\n ddd: emptyWord,\n dddd: emptyWord,\n MMM: [\"month\", word, monthUpdate(\"monthNamesShort\")],\n MMMM: [\"month\", word, monthUpdate(\"monthNames\")],\n a: amPm,\n A: amPm,\n ZZ: timezoneOffset,\n Z: timezoneOffset\n};\n// Some common format strings\nvar globalMasks = {\n default: \"ddd MMM DD YYYY HH:mm:ss\",\n shortDate: \"M/D/YY\",\n mediumDate: \"MMM D, YYYY\",\n longDate: \"MMMM D, YYYY\",\n fullDate: \"dddd, MMMM D, YYYY\",\n isoDate: \"YYYY-MM-DD\",\n isoDateTime: \"YYYY-MM-DDTHH:mm:ssZ\",\n shortTime: \"HH:mm\",\n mediumTime: \"HH:mm:ss\",\n longTime: \"HH:mm:ss.SSS\"\n};\nvar setGlobalDateMasks = function (masks) { return assign(globalMasks, masks); };\n/***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n * @returns {string} Formatted date string\n */\nvar format = function (dateObj, mask, i18n) {\n if (mask === void 0) { mask = globalMasks[\"default\"]; }\n if (i18n === void 0) { i18n = {}; }\n if (typeof dateObj === \"number\") {\n dateObj = new Date(dateObj);\n }\n if (Object.prototype.toString.call(dateObj) !== \"[object Date]\" ||\n isNaN(dateObj.getTime())) {\n throw new Error(\"Invalid Date pass to format\");\n }\n mask = globalMasks[mask] || mask;\n var literals = [];\n // Make literals inactive by replacing them with @@@\n mask = mask.replace(literal, function ($0, $1) {\n literals.push($1);\n return \"@@@\";\n });\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // Apply formatting rules\n mask = mask.replace(token, function ($0) {\n return formatFlags[$0](dateObj, combinedI18nSettings);\n });\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, function () { return literals.shift(); });\n};\n/**\n * Parse a date string into a Javascript Date object /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @param {i18n} I18nSettingsOptional Full or subset of I18N settings\n * @returns {Date|null} Returns Date object. Returns null what date string is invalid or doesn't match format\n */\nfunction parse(dateStr, format, i18n) {\n if (i18n === void 0) { i18n = {}; }\n if (typeof format !== \"string\") {\n throw new Error(\"Invalid format in fecha parse\");\n }\n // Check to see if the format is actually a mask\n format = globalMasks[format] || format;\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n // Default to the beginning of the year.\n var today = new Date();\n var dateInfo = {\n year: today.getFullYear(),\n month: 0,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n isPm: null,\n timezoneOffset: null\n };\n var parseInfo = [];\n var literals = [];\n // Replace all the literals with @@@. Hopefully a string that won't exist in the format\n var newFormat = format.replace(literal, function ($0, $1) {\n literals.push(regexEscape($1));\n return \"@@@\";\n });\n var specifiedFields = {};\n var requiredFields = {};\n // Change every token that we find into the correct regex\n newFormat = regexEscape(newFormat).replace(token, function ($0) {\n var info = parseFlags[$0];\n var field = info[0], regex = info[1], requiredField = info[3];\n // Check if the person has specified the same field twice. This will lead to confusing results.\n if (specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" specified twice in format\");\n }\n specifiedFields[field] = true;\n // Check if there are any required fields. For instance, 12 hour time requires AM/PM specified\n if (requiredField) {\n requiredFields[requiredField] = true;\n }\n parseInfo.push(info);\n return \"(\" + regex + \")\";\n });\n // Check all the required fields are present\n Object.keys(requiredFields).forEach(function (field) {\n if (!specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" is required in specified format\");\n }\n });\n // Add back all the literals after\n newFormat = newFormat.replace(/@@@/g, function () { return literals.shift(); });\n // Check if the date string matches the format. If it doesn't return null\n var matches = dateStr.match(new RegExp(newFormat, \"i\"));\n if (!matches) {\n return null;\n }\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // For each match, call the parser function for that date part\n for (var i = 1; i < matches.length; i++) {\n var _a = parseInfo[i - 1], field = _a[0], parser = _a[2];\n var value = parser\n ? parser(matches[i], combinedI18nSettings)\n : +matches[i];\n // If the parser can't make sense of the value, return null\n if (value == null) {\n return null;\n }\n dateInfo[field] = value;\n }\n if (dateInfo.isPm === 1 && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n }\n else if (dateInfo.isPm === 0 && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n var dateWithoutTZ = new Date(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute, dateInfo.second, dateInfo.millisecond);\n var validateFields = [\n [\"month\", \"getMonth\"],\n [\"day\", \"getDate\"],\n [\"hour\", \"getHours\"],\n [\"minute\", \"getMinutes\"],\n [\"second\", \"getSeconds\"]\n ];\n for (var i = 0, len = validateFields.length; i < len; i++) {\n // Check to make sure the date field is within the allowed range. Javascript dates allows values\n // outside the allowed range. If the values don't match the value was invalid\n if (specifiedFields[validateFields[i][0]] &&\n dateInfo[validateFields[i][0]] !== dateWithoutTZ[validateFields[i][1]]()) {\n return null;\n }\n }\n if (dateInfo.timezoneOffset == null) {\n return dateWithoutTZ;\n }\n return new Date(Date.UTC(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute - dateInfo.timezoneOffset, dateInfo.second, dateInfo.millisecond));\n}\nvar fecha = {\n format: format,\n parse: parse,\n defaultI18n: defaultI18n,\n setGlobalDateI18n: setGlobalDateI18n,\n setGlobalDateMasks: setGlobalDateMasks\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (fecha);\n\n//# sourceMappingURL=fecha.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZmVjaGEvbGliL2ZlY2hhLmpzPzE3ODkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUFlLElBQUksR0FBRyxJQUFJLGFBQWEsSUFBSTtBQUMzQztBQUNBO0FBQ0EsdUJBQXVCLEVBQUU7QUFDekIsc0JBQXNCLEVBQUU7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsU0FBUztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0Qyx1REFBdUQsd0JBQXdCLEVBQUU7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQztBQUNBO0FBQ0EsbUNBQW1DLG9CQUFvQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EseUJBQXlCLFNBQVM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsa0NBQWtDLEVBQUU7QUFDL0QsNEJBQTRCLCtCQUErQixFQUFFO0FBQzdEO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsMkJBQTJCLGlDQUFpQyxFQUFFO0FBQzlELDRCQUE0Qiw4QkFBOEIsRUFBRTtBQUM1RDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsMkJBQTJCLHVDQUF1QyxFQUFFO0FBQ3BFLDRCQUE0QixvQ0FBb0MsRUFBRTtBQUNsRTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCw4QkFBOEIsc0NBQXNDLEVBQUU7QUFDdEUsMkJBQTJCLDhDQUE4QyxFQUFFO0FBQzNFLDRCQUE0QiwyQ0FBMkMsRUFBRTtBQUN6RSwyQkFBMkIsbUNBQW1DLEVBQUU7QUFDaEUsNEJBQTRCLGdDQUFnQyxFQUFFO0FBQzlELDJCQUEyQixxQ0FBcUMsRUFBRTtBQUNsRSw0QkFBNEIsa0NBQWtDLEVBQUU7QUFDaEUsMkJBQTJCLHFDQUFxQyxFQUFFO0FBQ2xFLDRCQUE0QixrQ0FBa0MsRUFBRTtBQUNoRTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsNkJBQTZCLDBDQUEwQyxFQUFFO0FBQ3pFO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixlQUFlO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELHdCQUF3QixFQUFFO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsaUJBQWlCLEVBQUU7QUFDL0QsaURBQWlELGdCQUFnQixFQUFFO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLG1DQUFtQztBQUM5RTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0EsMEJBQTBCLCtCQUErQjtBQUN6RCwwQkFBMEIsV0FBVztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNkNBQTZDLHlCQUF5QixFQUFFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0E7QUFDQSwwQkFBMEIsV0FBVztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHVEQUF1RCx5QkFBeUIsRUFBRTtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0EsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsU0FBUztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxvRUFBSyxFQUFDO0FBQ2dFO0FBQ3JGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ZlY2hhL2xpYi9mZWNoYS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciB0b2tlbiA9IC9kezEsNH18TXsxLDR9fFlZKD86WVkpP3xTezEsM318RG98Wlp8WnwoW0hoTXNEbV0pXFwxP3xbYUFdfFwiW15cIl0qXCJ8J1teJ10qJy9nO1xudmFyIHR3b0RpZ2l0c09wdGlvbmFsID0gXCJbMS05XVxcXFxkP1wiO1xudmFyIHR3b0RpZ2l0cyA9IFwiXFxcXGRcXFxcZFwiO1xudmFyIHRocmVlRGlnaXRzID0gXCJcXFxcZHszfVwiO1xudmFyIGZvdXJEaWdpdHMgPSBcIlxcXFxkezR9XCI7XG52YXIgd29yZCA9IFwiW15cXFxcc10rXCI7XG52YXIgbGl0ZXJhbCA9IC9cXFsoW15dKj8pXFxdL2dtO1xuZnVuY3Rpb24gc2hvcnRlbihhcnIsIHNMZW4pIHtcbiAgICB2YXIgbmV3QXJyID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFyci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBuZXdBcnIucHVzaChhcnJbaV0uc3Vic3RyKDAsIHNMZW4pKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0Fycjtcbn1cbnZhciBtb250aFVwZGF0ZSA9IGZ1bmN0aW9uIChhcnJOYW1lKSB7IHJldHVybiBmdW5jdGlvbiAodiwgaTE4bikge1xuICAgIHZhciBsb3dlckNhc2VBcnIgPSBpMThuW2Fyck5hbWVdLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdi50b0xvd2VyQ2FzZSgpOyB9KTtcbiAgICB2YXIgaW5kZXggPSBsb3dlckNhc2VBcnIuaW5kZXhPZih2LnRvTG93ZXJDYXNlKCkpO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59OyB9O1xuZnVuY3Rpb24gYXNzaWduKG9yaWdPYmopIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIGZvciAodmFyIF9hID0gMCwgYXJnc18xID0gYXJnczsgX2EgPCBhcmdzXzEubGVuZ3RoOyBfYSsrKSB7XG4gICAgICAgIHZhciBvYmogPSBhcmdzXzFbX2FdO1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIGV4XG4gICAgICAgICAgICBvcmlnT2JqW2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3JpZ09iajtcbn1cbnZhciBkYXlOYW1lcyA9IFtcbiAgICBcIlN1bmRheVwiLFxuICAgIFwiTW9uZGF5XCIsXG4gICAgXCJUdWVzZGF5XCIsXG4gICAgXCJXZWRuZXNkYXlcIixcbiAgICBcIlRodXJzZGF5XCIsXG4gICAgXCJGcmlkYXlcIixcbiAgICBcIlNhdHVyZGF5XCJcbl07XG52YXIgbW9udGhOYW1lcyA9IFtcbiAgICBcIkphbnVhcnlcIixcbiAgICBcIkZlYnJ1YXJ5XCIsXG4gICAgXCJNYXJjaFwiLFxuICAgIFwiQXByaWxcIixcbiAgICBcIk1heVwiLFxuICAgIFwiSnVuZVwiLFxuICAgIFwiSnVseVwiLFxuICAgIFwiQXVndXN0XCIsXG4gICAgXCJTZXB0ZW1iZXJcIixcbiAgICBcIk9jdG9iZXJcIixcbiAgICBcIk5vdmVtYmVyXCIsXG4gICAgXCJEZWNlbWJlclwiXG5dO1xudmFyIG1vbnRoTmFtZXNTaG9ydCA9IHNob3J0ZW4obW9udGhOYW1lcywgMyk7XG52YXIgZGF5TmFtZXNTaG9ydCA9IHNob3J0ZW4oZGF5TmFtZXMsIDMpO1xudmFyIGRlZmF1bHRJMThuID0ge1xuICAgIGRheU5hbWVzU2hvcnQ6IGRheU5hbWVzU2hvcnQsXG4gICAgZGF5TmFtZXM6IGRheU5hbWVzLFxuICAgIG1vbnRoTmFtZXNTaG9ydDogbW9udGhOYW1lc1Nob3J0LFxuICAgIG1vbnRoTmFtZXM6IG1vbnRoTmFtZXMsXG4gICAgYW1QbTogW1wiYW1cIiwgXCJwbVwiXSxcbiAgICBEb0ZuOiBmdW5jdGlvbiAoZGF5T2ZNb250aCkge1xuICAgICAgICByZXR1cm4gKGRheU9mTW9udGggK1xuICAgICAgICAgICAgW1widGhcIiwgXCJzdFwiLCBcIm5kXCIsIFwicmRcIl1bZGF5T2ZNb250aCAlIDEwID4gM1xuICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgIDogKChkYXlPZk1vbnRoIC0gKGRheU9mTW9udGggJSAxMCkgIT09IDEwID8gMSA6IDApICogZGF5T2ZNb250aCkgJSAxMF0pO1xuICAgIH1cbn07XG52YXIgZ2xvYmFsSTE4biA9IGFzc2lnbih7fSwgZGVmYXVsdEkxOG4pO1xudmFyIHNldEdsb2JhbERhdGVJMThuID0gZnVuY3Rpb24gKGkxOG4pIHtcbiAgICByZXR1cm4gKGdsb2JhbEkxOG4gPSBhc3NpZ24oZ2xvYmFsSTE4biwgaTE4bikpO1xufTtcbnZhciByZWdleEVzY2FwZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1t8XFxcXHsoKVteJCsqPy4tXS9nLCBcIlxcXFwkJlwiKTtcbn07XG52YXIgcGFkID0gZnVuY3Rpb24gKHZhbCwgbGVuKSB7XG4gICAgaWYgKGxlbiA9PT0gdm9pZCAwKSB7IGxlbiA9IDI7IH1cbiAgICB2YWwgPSBTdHJpbmcodmFsKTtcbiAgICB3aGlsZSAodmFsLmxlbmd0aCA8IGxlbikge1xuICAgICAgICB2YWwgPSBcIjBcIiArIHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbn07XG52YXIgZm9ybWF0RmxhZ3MgPSB7XG4gICAgRDogZnVuY3Rpb24gKGRhdGVPYmopIHsgcmV0dXJuIFN0cmluZyhkYXRlT2JqLmdldERhdGUoKSk7IH0sXG4gICAgREQ6IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBwYWQoZGF0ZU9iai5nZXREYXRlKCkpOyB9LFxuICAgIERvOiBmdW5jdGlvbiAoZGF0ZU9iaiwgaTE4bikge1xuICAgICAgICByZXR1cm4gaTE4bi5Eb0ZuKGRhdGVPYmouZ2V0RGF0ZSgpKTtcbiAgICB9LFxuICAgIGQ6IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBTdHJpbmcoZGF0ZU9iai5nZXREYXkoKSk7IH0sXG4gICAgZGQ6IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBwYWQoZGF0ZU9iai5nZXREYXkoKSk7IH0sXG4gICAgZGRkOiBmdW5jdGlvbiAoZGF0ZU9iaiwgaTE4bikge1xuICAgICAgICByZXR1cm4gaTE4bi5kYXlOYW1lc1Nob3J0W2RhdGVPYmouZ2V0RGF5KCldO1xuICAgIH0sXG4gICAgZGRkZDogZnVuY3Rpb24gKGRhdGVPYmosIGkxOG4pIHtcbiAgICAgICAgcmV0dXJuIGkxOG4uZGF5TmFtZXNbZGF0ZU9iai5nZXREYXkoKV07XG4gICAgfSxcbiAgICBNOiBmdW5jdGlvbiAoZGF0ZU9iaikgeyByZXR1cm4gU3RyaW5nKGRhdGVPYmouZ2V0TW9udGgoKSArIDEpOyB9LFxuICAgIE1NOiBmdW5jdGlvbiAoZGF0ZU9iaikgeyByZXR1cm4gcGFkKGRhdGVPYmouZ2V0TW9udGgoKSArIDEpOyB9LFxuICAgIE1NTTogZnVuY3Rpb24gKGRhdGVPYmosIGkxOG4pIHtcbiAgICAgICAgcmV0dXJuIGkxOG4ubW9udGhOYW1lc1Nob3J0W2RhdGVPYmouZ2V0TW9udGgoKV07XG4gICAgfSxcbiAgICBNTU1NOiBmdW5jdGlvbiAoZGF0ZU9iaiwgaTE4bikge1xuICAgICAgICByZXR1cm4gaTE4bi5tb250aE5hbWVzW2RhdGVPYmouZ2V0TW9udGgoKV07XG4gICAgfSxcbiAgICBZWTogZnVuY3Rpb24gKGRhdGVPYmopIHtcbiAgICAgICAgcmV0dXJuIHBhZChTdHJpbmcoZGF0ZU9iai5nZXRGdWxsWWVhcigpKSwgNCkuc3Vic3RyKDIpO1xuICAgIH0sXG4gICAgWVlZWTogZnVuY3Rpb24gKGRhdGVPYmopIHsgcmV0dXJuIHBhZChkYXRlT2JqLmdldEZ1bGxZZWFyKCksIDQpOyB9LFxuICAgIGg6IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBTdHJpbmcoZGF0ZU9iai5nZXRIb3VycygpICUgMTIgfHwgMTIpOyB9LFxuICAgIGhoOiBmdW5jdGlvbiAoZGF0ZU9iaikgeyByZXR1cm4gcGFkKGRhdGVPYmouZ2V0SG91cnMoKSAlIDEyIHx8IDEyKTsgfSxcbiAgICBIOiBmdW5jdGlvbiAoZGF0ZU9iaikgeyByZXR1cm4gU3RyaW5nKGRhdGVPYmouZ2V0SG91cnMoKSk7IH0sXG4gICAgSEg6IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBwYWQoZGF0ZU9iai5nZXRIb3VycygpKTsgfSxcbiAgICBtOiBmdW5jdGlvbiAoZGF0ZU9iaikgeyByZXR1cm4gU3RyaW5nKGRhdGVPYmouZ2V0TWludXRlcygpKTsgfSxcbiAgICBtbTogZnVuY3Rpb24gKGRhdGVPYmopIHsgcmV0dXJuIHBhZChkYXRlT2JqLmdldE1pbnV0ZXMoKSk7IH0sXG4gICAgczogZnVuY3Rpb24gKGRhdGVPYmopIHsgcmV0dXJuIFN0cmluZyhkYXRlT2JqLmdldFNlY29uZHMoKSk7IH0sXG4gICAgc3M6IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBwYWQoZGF0ZU9iai5nZXRTZWNvbmRzKCkpOyB9LFxuICAgIFM6IGZ1bmN0aW9uIChkYXRlT2JqKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcoTWF0aC5yb3VuZChkYXRlT2JqLmdldE1pbGxpc2Vjb25kcygpIC8gMTAwKSk7XG4gICAgfSxcbiAgICBTUzogZnVuY3Rpb24gKGRhdGVPYmopIHtcbiAgICAgICAgcmV0dXJuIHBhZChNYXRoLnJvdW5kKGRhdGVPYmouZ2V0TWlsbGlzZWNvbmRzKCkgLyAxMCksIDIpO1xuICAgIH0sXG4gICAgU1NTOiBmdW5jdGlvbiAoZGF0ZU9iaikgeyByZXR1cm4gcGFkKGRhdGVPYmouZ2V0TWlsbGlzZWNvbmRzKCksIDMpOyB9LFxuICAgIGE6IGZ1bmN0aW9uIChkYXRlT2JqLCBpMThuKSB7XG4gICAgICAgIHJldHVybiBkYXRlT2JqLmdldEhvdXJzKCkgPCAxMiA/IGkxOG4uYW1QbVswXSA6IGkxOG4uYW1QbVsxXTtcbiAgICB9LFxuICAgIEE6IGZ1bmN0aW9uIChkYXRlT2JqLCBpMThuKSB7XG4gICAgICAgIHJldHVybiBkYXRlT2JqLmdldEhvdXJzKCkgPCAxMlxuICAgICAgICAgICAgPyBpMThuLmFtUG1bMF0udG9VcHBlckNhc2UoKVxuICAgICAgICAgICAgOiBpMThuLmFtUG1bMV0udG9VcHBlckNhc2UoKTtcbiAgICB9LFxuICAgIFpaOiBmdW5jdGlvbiAoZGF0ZU9iaikge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gZGF0ZU9iai5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgICAgICByZXR1cm4gKChvZmZzZXQgPiAwID8gXCItXCIgOiBcIitcIikgK1xuICAgICAgICAgICAgcGFkKE1hdGguZmxvb3IoTWF0aC5hYnMob2Zmc2V0KSAvIDYwKSAqIDEwMCArIChNYXRoLmFicyhvZmZzZXQpICUgNjApLCA0KSk7XG4gICAgfSxcbiAgICBaOiBmdW5jdGlvbiAoZGF0ZU9iaikge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gZGF0ZU9iai5nZXRUaW1lem9uZU9mZnNldCgpO1xuICAgICAgICByZXR1cm4gKChvZmZzZXQgPiAwID8gXCItXCIgOiBcIitcIikgK1xuICAgICAgICAgICAgcGFkKE1hdGguZmxvb3IoTWF0aC5hYnMob2Zmc2V0KSAvIDYwKSwgMikgK1xuICAgICAgICAgICAgXCI6XCIgK1xuICAgICAgICAgICAgcGFkKE1hdGguYWJzKG9mZnNldCkgJSA2MCwgMikpO1xuICAgIH1cbn07XG52YXIgbW9udGhQYXJzZSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiArdiAtIDE7IH07XG52YXIgZW1wdHlEaWdpdHMgPSBbbnVsbCwgdHdvRGlnaXRzT3B0aW9uYWxdO1xudmFyIGVtcHR5V29yZCA9IFtudWxsLCB3b3JkXTtcbnZhciBhbVBtID0gW1xuICAgIFwiaXNQbVwiLFxuICAgIHdvcmQsXG4gICAgZnVuY3Rpb24gKHYsIGkxOG4pIHtcbiAgICAgICAgdmFyIHZhbCA9IHYudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHZhbCA9PT0gaTE4bi5hbVBtWzBdKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgPT09IGkxOG4uYW1QbVsxXSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXTtcbnZhciB0aW1lem9uZU9mZnNldCA9IFtcbiAgICBcInRpbWV6b25lT2Zmc2V0XCIsXG4gICAgXCJbXlxcXFxzXSo/W1xcXFwrXFxcXC1dXFxcXGRcXFxcZDo/XFxcXGRcXFxcZHxbXlxcXFxzXSo/Wj9cIixcbiAgICBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgcGFydHMgPSAodiArIFwiXCIpLm1hdGNoKC8oWystXXxcXGRcXGQpL2dpKTtcbiAgICAgICAgaWYgKHBhcnRzKSB7XG4gICAgICAgICAgICB2YXIgbWludXRlcyA9ICtwYXJ0c1sxXSAqIDYwICsgcGFyc2VJbnQocGFydHNbMl0sIDEwKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJ0c1swXSA9PT0gXCIrXCIgPyBtaW51dGVzIDogLW1pbnV0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXTtcbnZhciBwYXJzZUZsYWdzID0ge1xuICAgIEQ6IFtcImRheVwiLCB0d29EaWdpdHNPcHRpb25hbF0sXG4gICAgREQ6IFtcImRheVwiLCB0d29EaWdpdHNdLFxuICAgIERvOiBbXCJkYXlcIiwgdHdvRGlnaXRzT3B0aW9uYWwgKyB3b3JkLCBmdW5jdGlvbiAodikgeyByZXR1cm4gcGFyc2VJbnQodiwgMTApOyB9XSxcbiAgICBNOiBbXCJtb250aFwiLCB0d29EaWdpdHNPcHRpb25hbCwgbW9udGhQYXJzZV0sXG4gICAgTU06IFtcIm1vbnRoXCIsIHR3b0RpZ2l0cywgbW9udGhQYXJzZV0sXG4gICAgWVk6IFtcbiAgICAgICAgXCJ5ZWFyXCIsXG4gICAgICAgIHR3b0RpZ2l0cyxcbiAgICAgICAgZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgdmFyIGNlbnQgPSArKFwiXCIgKyBub3cuZ2V0RnVsbFllYXIoKSkuc3Vic3RyKDAsIDIpO1xuICAgICAgICAgICAgcmV0dXJuICsoXCJcIiArICgrdiA+IDY4ID8gY2VudCAtIDEgOiBjZW50KSArIHYpO1xuICAgICAgICB9XG4gICAgXSxcbiAgICBoOiBbXCJob3VyXCIsIHR3b0RpZ2l0c09wdGlvbmFsLCB1bmRlZmluZWQsIFwiaXNQbVwiXSxcbiAgICBoaDogW1wiaG91clwiLCB0d29EaWdpdHMsIHVuZGVmaW5lZCwgXCJpc1BtXCJdLFxuICAgIEg6IFtcImhvdXJcIiwgdHdvRGlnaXRzT3B0aW9uYWxdLFxuICAgIEhIOiBbXCJob3VyXCIsIHR3b0RpZ2l0c10sXG4gICAgbTogW1wibWludXRlXCIsIHR3b0RpZ2l0c09wdGlvbmFsXSxcbiAgICBtbTogW1wibWludXRlXCIsIHR3b0RpZ2l0c10sXG4gICAgczogW1wic2Vjb25kXCIsIHR3b0RpZ2l0c09wdGlvbmFsXSxcbiAgICBzczogW1wic2Vjb25kXCIsIHR3b0RpZ2l0c10sXG4gICAgWVlZWTogW1wieWVhclwiLCBmb3VyRGlnaXRzXSxcbiAgICBTOiBbXCJtaWxsaXNlY29uZFwiLCBcIlxcXFxkXCIsIGZ1bmN0aW9uICh2KSB7IHJldHVybiArdiAqIDEwMDsgfV0sXG4gICAgU1M6IFtcIm1pbGxpc2Vjb25kXCIsIHR3b0RpZ2l0cywgZnVuY3Rpb24gKHYpIHsgcmV0dXJuICt2ICogMTA7IH1dLFxuICAgIFNTUzogW1wibWlsbGlzZWNvbmRcIiwgdGhyZWVEaWdpdHNdLFxuICAgIGQ6IGVtcHR5RGlnaXRzLFxuICAgIGRkOiBlbXB0eURpZ2l0cyxcbiAgICBkZGQ6IGVtcHR5V29yZCxcbiAgICBkZGRkOiBlbXB0eVdvcmQsXG4gICAgTU1NOiBbXCJtb250aFwiLCB3b3JkLCBtb250aFVwZGF0ZShcIm1vbnRoTmFtZXNTaG9ydFwiKV0sXG4gICAgTU1NTTogW1wibW9udGhcIiwgd29yZCwgbW9udGhVcGRhdGUoXCJtb250aE5hbWVzXCIpXSxcbiAgICBhOiBhbVBtLFxuICAgIEE6IGFtUG0sXG4gICAgWlo6IHRpbWV6b25lT2Zmc2V0LFxuICAgIFo6IHRpbWV6b25lT2Zmc2V0XG59O1xuLy8gU29tZSBjb21tb24gZm9ybWF0IHN0cmluZ3NcbnZhciBnbG9iYWxNYXNrcyA9IHtcbiAgICBkZWZhdWx0OiBcImRkZCBNTU0gREQgWVlZWSBISDptbTpzc1wiLFxuICAgIHNob3J0RGF0ZTogXCJNL0QvWVlcIixcbiAgICBtZWRpdW1EYXRlOiBcIk1NTSBELCBZWVlZXCIsXG4gICAgbG9uZ0RhdGU6IFwiTU1NTSBELCBZWVlZXCIsXG4gICAgZnVsbERhdGU6IFwiZGRkZCwgTU1NTSBELCBZWVlZXCIsXG4gICAgaXNvRGF0ZTogXCJZWVlZLU1NLUREXCIsXG4gICAgaXNvRGF0ZVRpbWU6IFwiWVlZWS1NTS1ERFRISDptbTpzc1pcIixcbiAgICBzaG9ydFRpbWU6IFwiSEg6bW1cIixcbiAgICBtZWRpdW1UaW1lOiBcIkhIOm1tOnNzXCIsXG4gICAgbG9uZ1RpbWU6IFwiSEg6bW06c3MuU1NTXCJcbn07XG52YXIgc2V0R2xvYmFsRGF0ZU1hc2tzID0gZnVuY3Rpb24gKG1hc2tzKSB7IHJldHVybiBhc3NpZ24oZ2xvYmFsTWFza3MsIG1hc2tzKTsgfTtcbi8qKipcbiAqIEZvcm1hdCBhIGRhdGVcbiAqIEBtZXRob2QgZm9ybWF0XG4gKiBAcGFyYW0ge0RhdGV8bnVtYmVyfSBkYXRlT2JqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFzayBGb3JtYXQgb2YgdGhlIGRhdGUsIGkuZS4gJ21tLWRkLXl5JyBvciAnc2hvcnREYXRlJ1xuICogQHJldHVybnMge3N0cmluZ30gRm9ybWF0dGVkIGRhdGUgc3RyaW5nXG4gKi9cbnZhciBmb3JtYXQgPSBmdW5jdGlvbiAoZGF0ZU9iaiwgbWFzaywgaTE4bikge1xuICAgIGlmIChtYXNrID09PSB2b2lkIDApIHsgbWFzayA9IGdsb2JhbE1hc2tzW1wiZGVmYXVsdFwiXTsgfVxuICAgIGlmIChpMThuID09PSB2b2lkIDApIHsgaTE4biA9IHt9OyB9XG4gICAgaWYgKHR5cGVvZiBkYXRlT2JqID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlT2JqKTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkYXRlT2JqKSAhPT0gXCJbb2JqZWN0IERhdGVdXCIgfHxcbiAgICAgICAgaXNOYU4oZGF0ZU9iai5nZXRUaW1lKCkpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgRGF0ZSBwYXNzIHRvIGZvcm1hdFwiKTtcbiAgICB9XG4gICAgbWFzayA9IGdsb2JhbE1hc2tzW21hc2tdIHx8IG1hc2s7XG4gICAgdmFyIGxpdGVyYWxzID0gW107XG4gICAgLy8gTWFrZSBsaXRlcmFscyBpbmFjdGl2ZSBieSByZXBsYWNpbmcgdGhlbSB3aXRoIEBAQFxuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UobGl0ZXJhbCwgZnVuY3Rpb24gKCQwLCAkMSkge1xuICAgICAgICBsaXRlcmFscy5wdXNoKCQxKTtcbiAgICAgICAgcmV0dXJuIFwiQEBAXCI7XG4gICAgfSk7XG4gICAgdmFyIGNvbWJpbmVkSTE4blNldHRpbmdzID0gYXNzaWduKGFzc2lnbih7fSwgZ2xvYmFsSTE4biksIGkxOG4pO1xuICAgIC8vIEFwcGx5IGZvcm1hdHRpbmcgcnVsZXNcbiAgICBtYXNrID0gbWFzay5yZXBsYWNlKHRva2VuLCBmdW5jdGlvbiAoJDApIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdEZsYWdzWyQwXShkYXRlT2JqLCBjb21iaW5lZEkxOG5TZXR0aW5ncyk7XG4gICAgfSk7XG4gICAgLy8gSW5saW5lIGxpdGVyYWwgdmFsdWVzIGJhY2sgaW50byB0aGUgZm9ybWF0dGVkIHZhbHVlXG4gICAgcmV0dXJuIG1hc2sucmVwbGFjZSgvQEBAL2csIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGxpdGVyYWxzLnNoaWZ0KCk7IH0pO1xufTtcbi8qKlxuICogUGFyc2UgYSBkYXRlIHN0cmluZyBpbnRvIGEgSmF2YXNjcmlwdCBEYXRlIG9iamVjdCAvXG4gKiBAbWV0aG9kIHBhcnNlXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0ZVN0ciBEYXRlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCBEYXRlIHBhcnNlIGZvcm1hdFxuICogQHBhcmFtIHtpMThufSBJMThuU2V0dGluZ3NPcHRpb25hbCBGdWxsIG9yIHN1YnNldCBvZiBJMThOIHNldHRpbmdzXG4gKiBAcmV0dXJucyB7RGF0ZXxudWxsfSBSZXR1cm5zIERhdGUgb2JqZWN0LiBSZXR1cm5zIG51bGwgd2hhdCBkYXRlIHN0cmluZyBpcyBpbnZhbGlkIG9yIGRvZXNuJ3QgbWF0Y2ggZm9ybWF0XG4gKi9cbmZ1bmN0aW9uIHBhcnNlKGRhdGVTdHIsIGZvcm1hdCwgaTE4bikge1xuICAgIGlmIChpMThuID09PSB2b2lkIDApIHsgaTE4biA9IHt9OyB9XG4gICAgaWYgKHR5cGVvZiBmb3JtYXQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBmb3JtYXQgaW4gZmVjaGEgcGFyc2VcIik7XG4gICAgfVxuICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZm9ybWF0IGlzIGFjdHVhbGx5IGEgbWFza1xuICAgIGZvcm1hdCA9IGdsb2JhbE1hc2tzW2Zvcm1hdF0gfHwgZm9ybWF0O1xuICAgIC8vIEF2b2lkIHJlZ3VsYXIgZXhwcmVzc2lvbiBkZW5pYWwgb2Ygc2VydmljZSwgZmFpbCBlYXJseSBmb3IgcmVhbGx5IGxvbmcgc3RyaW5nc1xuICAgIC8vIGh0dHBzOi8vd3d3Lm93YXNwLm9yZy9pbmRleC5waHAvUmVndWxhcl9leHByZXNzaW9uX0RlbmlhbF9vZl9TZXJ2aWNlXy1fUmVEb1NcbiAgICBpZiAoZGF0ZVN0ci5sZW5ndGggPiAxMDAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBEZWZhdWx0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHllYXIuXG4gICAgdmFyIHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICB2YXIgZGF0ZUluZm8gPSB7XG4gICAgICAgIHllYXI6IHRvZGF5LmdldEZ1bGxZZWFyKCksXG4gICAgICAgIG1vbnRoOiAwLFxuICAgICAgICBkYXk6IDEsXG4gICAgICAgIGhvdXI6IDAsXG4gICAgICAgIG1pbnV0ZTogMCxcbiAgICAgICAgc2Vjb25kOiAwLFxuICAgICAgICBtaWxsaXNlY29uZDogMCxcbiAgICAgICAgaXNQbTogbnVsbCxcbiAgICAgICAgdGltZXpvbmVPZmZzZXQ6IG51bGxcbiAgICB9O1xuICAgIHZhciBwYXJzZUluZm8gPSBbXTtcbiAgICB2YXIgbGl0ZXJhbHMgPSBbXTtcbiAgICAvLyBSZXBsYWNlIGFsbCB0aGUgbGl0ZXJhbHMgd2l0aCBAQEAuIEhvcGVmdWxseSBhIHN0cmluZyB0aGF0IHdvbid0IGV4aXN0IGluIHRoZSBmb3JtYXRcbiAgICB2YXIgbmV3Rm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UobGl0ZXJhbCwgZnVuY3Rpb24gKCQwLCAkMSkge1xuICAgICAgICBsaXRlcmFscy5wdXNoKHJlZ2V4RXNjYXBlKCQxKSk7XG4gICAgICAgIHJldHVybiBcIkBAQFwiO1xuICAgIH0pO1xuICAgIHZhciBzcGVjaWZpZWRGaWVsZHMgPSB7fTtcbiAgICB2YXIgcmVxdWlyZWRGaWVsZHMgPSB7fTtcbiAgICAvLyBDaGFuZ2UgZXZlcnkgdG9rZW4gdGhhdCB3ZSBmaW5kIGludG8gdGhlIGNvcnJlY3QgcmVnZXhcbiAgICBuZXdGb3JtYXQgPSByZWdleEVzY2FwZShuZXdGb3JtYXQpLnJlcGxhY2UodG9rZW4sIGZ1bmN0aW9uICgkMCkge1xuICAgICAgICB2YXIgaW5mbyA9IHBhcnNlRmxhZ3NbJDBdO1xuICAgICAgICB2YXIgZmllbGQgPSBpbmZvWzBdLCByZWdleCA9IGluZm9bMV0sIHJlcXVpcmVkRmllbGQgPSBpbmZvWzNdO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgcGVyc29uIGhhcyBzcGVjaWZpZWQgdGhlIHNhbWUgZmllbGQgdHdpY2UuIFRoaXMgd2lsbCBsZWFkIHRvIGNvbmZ1c2luZyByZXN1bHRzLlxuICAgICAgICBpZiAoc3BlY2lmaWVkRmllbGRzW2ZpZWxkXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBmb3JtYXQuIFwiICsgZmllbGQgKyBcIiBzcGVjaWZpZWQgdHdpY2UgaW4gZm9ybWF0XCIpO1xuICAgICAgICB9XG4gICAgICAgIHNwZWNpZmllZEZpZWxkc1tmaWVsZF0gPSB0cnVlO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHJlcXVpcmVkIGZpZWxkcy4gRm9yIGluc3RhbmNlLCAxMiBob3VyIHRpbWUgcmVxdWlyZXMgQU0vUE0gc3BlY2lmaWVkXG4gICAgICAgIGlmIChyZXF1aXJlZEZpZWxkKSB7XG4gICAgICAgICAgICByZXF1aXJlZEZpZWxkc1tyZXF1aXJlZEZpZWxkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VJbmZvLnB1c2goaW5mbyk7XG4gICAgICAgIHJldHVybiBcIihcIiArIHJlZ2V4ICsgXCIpXCI7XG4gICAgfSk7XG4gICAgLy8gQ2hlY2sgYWxsIHRoZSByZXF1aXJlZCBmaWVsZHMgYXJlIHByZXNlbnRcbiAgICBPYmplY3Qua2V5cyhyZXF1aXJlZEZpZWxkcykuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgICAgaWYgKCFzcGVjaWZpZWRGaWVsZHNbZmllbGRdKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGZvcm1hdC4gXCIgKyBmaWVsZCArIFwiIGlzIHJlcXVpcmVkIGluIHNwZWNpZmllZCBmb3JtYXRcIik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBBZGQgYmFjayBhbGwgdGhlIGxpdGVyYWxzIGFmdGVyXG4gICAgbmV3Rm9ybWF0ID0gbmV3Rm9ybWF0LnJlcGxhY2UoL0BAQC9nLCBmdW5jdGlvbiAoKSB7IHJldHVybiBsaXRlcmFscy5zaGlmdCgpOyB9KTtcbiAgICAvLyBDaGVjayBpZiB0aGUgZGF0ZSBzdHJpbmcgbWF0Y2hlcyB0aGUgZm9ybWF0LiBJZiBpdCBkb2Vzbid0IHJldHVybiBudWxsXG4gICAgdmFyIG1hdGNoZXMgPSBkYXRlU3RyLm1hdGNoKG5ldyBSZWdFeHAobmV3Rm9ybWF0LCBcImlcIikpO1xuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGNvbWJpbmVkSTE4blNldHRpbmdzID0gYXNzaWduKGFzc2lnbih7fSwgZ2xvYmFsSTE4biksIGkxOG4pO1xuICAgIC8vIEZvciBlYWNoIG1hdGNoLCBjYWxsIHRoZSBwYXJzZXIgZnVuY3Rpb24gZm9yIHRoYXQgZGF0ZSBwYXJ0XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBtYXRjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBfYSA9IHBhcnNlSW5mb1tpIC0gMV0sIGZpZWxkID0gX2FbMF0sIHBhcnNlciA9IF9hWzJdO1xuICAgICAgICB2YXIgdmFsdWUgPSBwYXJzZXJcbiAgICAgICAgICAgID8gcGFyc2VyKG1hdGNoZXNbaV0sIGNvbWJpbmVkSTE4blNldHRpbmdzKVxuICAgICAgICAgICAgOiArbWF0Y2hlc1tpXTtcbiAgICAgICAgLy8gSWYgdGhlIHBhcnNlciBjYW4ndCBtYWtlIHNlbnNlIG9mIHRoZSB2YWx1ZSwgcmV0dXJuIG51bGxcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGRhdGVJbmZvW2ZpZWxkXSA9IHZhbHVlO1xuICAgIH1cbiAgICBpZiAoZGF0ZUluZm8uaXNQbSA9PT0gMSAmJiBkYXRlSW5mby5ob3VyICE9IG51bGwgJiYgK2RhdGVJbmZvLmhvdXIgIT09IDEyKSB7XG4gICAgICAgIGRhdGVJbmZvLmhvdXIgPSArZGF0ZUluZm8uaG91ciArIDEyO1xuICAgIH1cbiAgICBlbHNlIGlmIChkYXRlSW5mby5pc1BtID09PSAwICYmICtkYXRlSW5mby5ob3VyID09PSAxMikge1xuICAgICAgICBkYXRlSW5mby5ob3VyID0gMDtcbiAgICB9XG4gICAgdmFyIGRhdGVXaXRob3V0VFogPSBuZXcgRGF0ZShkYXRlSW5mby55ZWFyLCBkYXRlSW5mby5tb250aCwgZGF0ZUluZm8uZGF5LCBkYXRlSW5mby5ob3VyLCBkYXRlSW5mby5taW51dGUsIGRhdGVJbmZvLnNlY29uZCwgZGF0ZUluZm8ubWlsbGlzZWNvbmQpO1xuICAgIHZhciB2YWxpZGF0ZUZpZWxkcyA9IFtcbiAgICAgICAgW1wibW9udGhcIiwgXCJnZXRNb250aFwiXSxcbiAgICAgICAgW1wiZGF5XCIsIFwiZ2V0RGF0ZVwiXSxcbiAgICAgICAgW1wiaG91clwiLCBcImdldEhvdXJzXCJdLFxuICAgICAgICBbXCJtaW51dGVcIiwgXCJnZXRNaW51dGVzXCJdLFxuICAgICAgICBbXCJzZWNvbmRcIiwgXCJnZXRTZWNvbmRzXCJdXG4gICAgXTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdmFsaWRhdGVGaWVsZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgLy8gQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBkYXRlIGZpZWxkIGlzIHdpdGhpbiB0aGUgYWxsb3dlZCByYW5nZS4gSmF2YXNjcmlwdCBkYXRlcyBhbGxvd3MgdmFsdWVzXG4gICAgICAgIC8vIG91dHNpZGUgdGhlIGFsbG93ZWQgcmFuZ2UuIElmIHRoZSB2YWx1ZXMgZG9uJ3QgbWF0Y2ggdGhlIHZhbHVlIHdhcyBpbnZhbGlkXG4gICAgICAgIGlmIChzcGVjaWZpZWRGaWVsZHNbdmFsaWRhdGVGaWVsZHNbaV1bMF1dICYmXG4gICAgICAgICAgICBkYXRlSW5mb1t2YWxpZGF0ZUZpZWxkc1tpXVswXV0gIT09IGRhdGVXaXRob3V0VFpbdmFsaWRhdGVGaWVsZHNbaV1bMV1dKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRlSW5mby50aW1lem9uZU9mZnNldCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBkYXRlV2l0aG91dFRaO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoZGF0ZUluZm8ueWVhciwgZGF0ZUluZm8ubW9udGgsIGRhdGVJbmZvLmRheSwgZGF0ZUluZm8uaG91ciwgZGF0ZUluZm8ubWludXRlIC0gZGF0ZUluZm8udGltZXpvbmVPZmZzZXQsIGRhdGVJbmZvLnNlY29uZCwgZGF0ZUluZm8ubWlsbGlzZWNvbmQpKTtcbn1cbnZhciBmZWNoYSA9IHtcbiAgICBmb3JtYXQ6IGZvcm1hdCxcbiAgICBwYXJzZTogcGFyc2UsXG4gICAgZGVmYXVsdEkxOG46IGRlZmF1bHRJMThuLFxuICAgIHNldEdsb2JhbERhdGVJMThuOiBzZXRHbG9iYWxEYXRlSTE4bixcbiAgICBzZXRHbG9iYWxEYXRlTWFza3M6IHNldEdsb2JhbERhdGVNYXNrc1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZmVjaGE7XG5leHBvcnQgeyBhc3NpZ24sIGZvcm1hdCwgcGFyc2UsIGRlZmF1bHRJMThuLCBzZXRHbG9iYWxEYXRlSTE4biwgc2V0R2xvYmFsRGF0ZU1hc2tzIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mZWNoYS5qcy5tYXBcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/fecha/lib/fecha.js\n"); /***/ }), /***/ "./node_modules/gl-matrix/esm/common.js": /*!**********************************************!*\ !*** ./node_modules/gl-matrix/esm/common.js ***! \**********************************************/ /*! exports provided: EPSILON, ARRAY_TYPE, RANDOM, setMatrixArrayType, toRadian, equals */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EPSILON\", function() { return EPSILON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ARRAY_TYPE\", function() { return ARRAY_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RANDOM\", function() { return RANDOM; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMatrixArrayType\", function() { return setMatrixArrayType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toRadian\", function() { return toRadian; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nvar EPSILON = 0.000001;\nvar ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nvar RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nfunction setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nfunction toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nfunction equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS9jb21tb24uanM/Yzk0ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNBO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDQSxXQUFXLDJDQUEyQztBQUN0RDs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLW1hdHJpeC9lc20vY29tbW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gdXRpbGl0aWVzXG4gKiBAbW9kdWxlIGdsTWF0cml4XG4gKi9cbi8vIENvbmZpZ3VyYXRpb24gQ29uc3RhbnRzXG5leHBvcnQgdmFyIEVQU0lMT04gPSAwLjAwMDAwMTtcbmV4cG9ydCB2YXIgQVJSQVlfVFlQRSA9IHR5cGVvZiBGbG9hdDMyQXJyYXkgIT09ICd1bmRlZmluZWQnID8gRmxvYXQzMkFycmF5IDogQXJyYXk7XG5leHBvcnQgdmFyIFJBTkRPTSA9IE1hdGgucmFuZG9tO1xuLyoqXG4gKiBTZXRzIHRoZSB0eXBlIG9mIGFycmF5IHVzZWQgd2hlbiBjcmVhdGluZyBuZXcgdmVjdG9ycyBhbmQgbWF0cmljZXNcbiAqXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheUNvbnN0cnVjdG9yIHwgQXJyYXlDb25zdHJ1Y3Rvcn0gdHlwZSBBcnJheSB0eXBlLCBzdWNoIGFzIEZsb2F0MzJBcnJheSBvciBBcnJheVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRNYXRyaXhBcnJheVR5cGUodHlwZSkge1xuICBBUlJBWV9UWVBFID0gdHlwZTtcbn1cbnZhciBkZWdyZWUgPSBNYXRoLlBJIC8gMTgwO1xuLyoqXG4gKiBDb252ZXJ0IERlZ3JlZSBUbyBSYWRpYW5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gYSBBbmdsZSBpbiBEZWdyZWVzXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUmFkaWFuKGEpIHtcbiAgcmV0dXJuIGEgKiBkZWdyZWU7XG59XG4vKipcbiAqIFRlc3RzIHdoZXRoZXIgb3Igbm90IHRoZSBhcmd1bWVudHMgaGF2ZSBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIHZhbHVlLCB3aXRoaW4gYW4gYWJzb2x1dGVcbiAqIG9yIHJlbGF0aXZlIHRvbGVyYW5jZSBvZiBnbE1hdHJpeC5FUFNJTE9OIChhbiBhYnNvbHV0ZSB0b2xlcmFuY2UgaXMgdXNlZCBmb3IgdmFsdWVzIGxlc3NcbiAqIHRoYW4gb3IgZXF1YWwgdG8gMS4wLCBhbmQgYSByZWxhdGl2ZSB0b2xlcmFuY2UgaXMgdXNlZCBmb3IgbGFyZ2VyIHZhbHVlcylcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gYSBUaGUgZmlyc3QgbnVtYmVyIHRvIHRlc3QuXG4gKiBAcGFyYW0ge051bWJlcn0gYiBUaGUgc2Vjb25kIG51bWJlciB0byB0ZXN0LlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIG51bWJlcnMgYXJlIGFwcHJveGltYXRlbHkgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxzKGEsIGIpIHtcbiAgcmV0dXJuIE1hdGguYWJzKGEgLSBiKSA8PSBFUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhKSwgTWF0aC5hYnMoYikpO1xufVxuaWYgKCFNYXRoLmh5cG90KSBNYXRoLmh5cG90ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgeSA9IDAsXG4gICAgICBpID0gYXJndW1lbnRzLmxlbmd0aDtcblxuICB3aGlsZSAoaS0tKSB7XG4gICAgeSArPSBhcmd1bWVudHNbaV0gKiBhcmd1bWVudHNbaV07XG4gIH1cblxuICByZXR1cm4gTWF0aC5zcXJ0KHkpO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-matrix/esm/common.js\n"); /***/ }), /***/ "./node_modules/gl-matrix/esm/index.js": /*!*********************************************!*\ !*** ./node_modules/gl-matrix/esm/index.js ***! \*********************************************/ /*! exports provided: glMatrix, mat2, mat2d, mat3, mat4, quat, quat2, vec2, vec3, vec4 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"glMatrix\", function() { return _common_js__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _mat2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mat2.js */ \"./node_modules/gl-matrix/esm/mat2.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"mat2\", function() { return _mat2_js__WEBPACK_IMPORTED_MODULE_1__; });\n/* harmony import */ var _mat2d_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mat2d.js */ \"./node_modules/gl-matrix/esm/mat2d.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"mat2d\", function() { return _mat2d_js__WEBPACK_IMPORTED_MODULE_2__; });\n/* harmony import */ var _mat3_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mat3.js */ \"./node_modules/gl-matrix/esm/mat3.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"mat3\", function() { return _mat3_js__WEBPACK_IMPORTED_MODULE_3__; });\n/* harmony import */ var _mat4_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mat4.js */ \"./node_modules/gl-matrix/esm/mat4.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"mat4\", function() { return _mat4_js__WEBPACK_IMPORTED_MODULE_4__; });\n/* harmony import */ var _quat_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./quat.js */ \"./node_modules/gl-matrix/esm/quat.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"quat\", function() { return _quat_js__WEBPACK_IMPORTED_MODULE_5__; });\n/* harmony import */ var _quat2_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./quat2.js */ \"./node_modules/gl-matrix/esm/quat2.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"quat2\", function() { return _quat2_js__WEBPACK_IMPORTED_MODULE_6__; });\n/* harmony import */ var _vec2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./vec2.js */ \"./node_modules/gl-matrix/esm/vec2.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"vec2\", function() { return _vec2_js__WEBPACK_IMPORTED_MODULE_7__; });\n/* harmony import */ var _vec3_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./vec3.js */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"vec3\", function() { return _vec3_js__WEBPACK_IMPORTED_MODULE_8__; });\n/* harmony import */ var _vec4_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./vec4.js */ \"./node_modules/gl-matrix/esm/vec4.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"vec4\", function() { return _vec4_js__WEBPACK_IMPORTED_MODULE_9__; });\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS9pbmRleC5qcz8yMGU3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QztBQUNOO0FBQ0U7QUFDRjtBQUNBO0FBQ0E7QUFDRTtBQUNGO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC1tYXRyaXgvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ2xNYXRyaXggZnJvbSBcIi4vY29tbW9uLmpzXCI7XG5pbXBvcnQgKiBhcyBtYXQyIGZyb20gXCIuL21hdDIuanNcIjtcbmltcG9ydCAqIGFzIG1hdDJkIGZyb20gXCIuL21hdDJkLmpzXCI7XG5pbXBvcnQgKiBhcyBtYXQzIGZyb20gXCIuL21hdDMuanNcIjtcbmltcG9ydCAqIGFzIG1hdDQgZnJvbSBcIi4vbWF0NC5qc1wiO1xuaW1wb3J0ICogYXMgcXVhdCBmcm9tIFwiLi9xdWF0LmpzXCI7XG5pbXBvcnQgKiBhcyBxdWF0MiBmcm9tIFwiLi9xdWF0Mi5qc1wiO1xuaW1wb3J0ICogYXMgdmVjMiBmcm9tIFwiLi92ZWMyLmpzXCI7XG5pbXBvcnQgKiBhcyB2ZWMzIGZyb20gXCIuL3ZlYzMuanNcIjtcbmltcG9ydCAqIGFzIHZlYzQgZnJvbSBcIi4vdmVjNC5qc1wiO1xuZXhwb3J0IHsgZ2xNYXRyaXgsIG1hdDIsIG1hdDJkLCBtYXQzLCBtYXQ0LCBxdWF0LCBxdWF0MiwgdmVjMiwgdmVjMywgdmVjNCB9OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-matrix/esm/index.js\n"); /***/ }), /***/ "./node_modules/gl-matrix/esm/mat2.js": /*!********************************************!*\ !*** ./node_modules/gl-matrix/esm/mat2.js ***! \********************************************/ /*! exports provided: create, clone, copy, identity, fromValues, set, transpose, invert, adjoint, determinant, multiply, rotate, scale, fromRotation, fromScaling, str, frob, LDU, add, subtract, exactEquals, equals, multiplyScalar, multiplyScalarAndAdd, mul, sub */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return transpose; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"adjoint\", function() { return adjoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"determinant\", function() { return determinant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotation\", function() { return fromRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromScaling\", function() { return fromScaling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"frob\", function() { return frob; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LDU\", function() { return LDU; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalar\", function() { return multiplyScalar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalarAndAdd\", function() { return multiplyScalarAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 2x2 Matrix\n * @module mat2\n */\n\n/**\n * Creates a new identity mat2\n *\n * @returns {mat2} a new 2x2 matrix\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2} a matrix to clone\n * @returns {mat2} a new 2x2 matrix\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Copy the values from one mat2 to another\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set a mat2 to the identity matrix\n *\n * @param {mat2} out the receiving matrix\n * @returns {mat2} out\n */\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Create a new mat2 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out A new 2x2 matrix\n */\n\nfunction fromValues(m00, m01, m10, m11) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Set the components of a mat2 to the given values\n *\n * @param {mat2} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out\n */\n\nfunction set(out, m00, m01, m10, m11) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Transpose the values of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nfunction transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache\n // some values\n if (out === a) {\n var a1 = a[1];\n out[1] = a[2];\n out[2] = a1;\n } else {\n out[0] = a[0];\n out[1] = a[2];\n out[2] = a[1];\n out[3] = a[3];\n }\n\n return out;\n}\n/**\n * Inverts a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nfunction invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3]; // Calculate the determinant\n\n var det = a0 * a3 - a2 * a1;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = a3 * det;\n out[1] = -a1 * det;\n out[2] = -a2 * det;\n out[3] = a0 * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nfunction adjoint(out, a) {\n // Caching this value is nessecary if out == a\n var a0 = a[0];\n out[0] = a[3];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a0;\n return out;\n}\n/**\n * Calculates the determinant of a mat2\n *\n * @param {ReadonlyMat2} a the source matrix\n * @returns {Number} determinant of a\n */\n\nfunction determinant(a) {\n return a[0] * a[3] - a[2] * a[1];\n}\n/**\n * Multiplies two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nfunction multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n return out;\n}\n/**\n * Rotates a mat2 by the given angle\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nfunction rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n return out;\n}\n/**\n * Scales the mat2 by the dimensions in the given vec2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2} out\n **/\n\nfunction scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.rotate(dest, dest, rad);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nfunction fromRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.scale(dest, dest, vec);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2} out\n */\n\nfunction fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2\n *\n * @param {ReadonlyMat2} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nfunction str(a) {\n return \"mat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2\n *\n * @param {ReadonlyMat2} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nfunction frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3]);\n}\n/**\n * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\n * @param {ReadonlyMat2} L the lower triangular matrix\n * @param {ReadonlyMat2} D the diagonal matrix\n * @param {ReadonlyMat2} U the upper triangular matrix\n * @param {ReadonlyMat2} a the input matrix to factorize\n */\n\nfunction LDU(L, D, U, a) {\n L[2] = a[2] / a[0];\n U[0] = a[0];\n U[1] = a[1];\n U[3] = a[3] - L[2] * U[1];\n return [L, D, U];\n}\n/**\n * Adds two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2} out\n */\n\nfunction multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two mat2's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2} out the receiving vector\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2} out\n */\n\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Alias for {@link mat2.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link mat2.subtract}\n * @function\n */\n\nvar sub = subtract;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS9tYXQyLmpzP2VhMjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjs7QUFFbkMsTUFBTSxxREFBbUI7QUFDekI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjs7QUFFaEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCO0FBQzdTO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLW1hdHJpeC9lc20vbWF0Mi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdsTWF0cml4IGZyb20gXCIuL2NvbW1vbi5qc1wiO1xuLyoqXG4gKiAyeDIgTWF0cml4XG4gKiBAbW9kdWxlIG1hdDJcbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaWRlbnRpdHkgbWF0MlxuICpcbiAqIEByZXR1cm5zIHttYXQyfSBhIG5ldyAyeDIgbWF0cml4XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDQpO1xuXG4gIGlmIChnbE1hdHJpeC5BUlJBWV9UWVBFICE9IEZsb2F0MzJBcnJheSkge1xuICAgIG91dFsxXSA9IDA7XG4gICAgb3V0WzJdID0gMDtcbiAgfVxuXG4gIG91dFswXSA9IDE7XG4gIG91dFszXSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgbWF0MiBpbml0aWFsaXplZCB3aXRoIHZhbHVlcyBmcm9tIGFuIGV4aXN0aW5nIG1hdHJpeFxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIG1hdHJpeCB0byBjbG9uZVxuICogQHJldHVybnMge21hdDJ9IGEgbmV3IDJ4MiBtYXRyaXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoYSkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoNCk7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIG91dFszXSA9IGFbM107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENvcHkgdGhlIHZhbHVlcyBmcm9tIG9uZSBtYXQyIHRvIGFub3RoZXJcbiAqXG4gKiBAcGFyYW0ge21hdDJ9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY29weShvdXQsIGEpIHtcbiAgb3V0WzBdID0gYVswXTtcbiAgb3V0WzFdID0gYVsxXTtcbiAgb3V0WzJdID0gYVsyXTtcbiAgb3V0WzNdID0gYVszXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IGEgbWF0MiB0byB0aGUgaWRlbnRpdHkgbWF0cml4XG4gKlxuICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpdHkob3V0KSB7XG4gIG91dFswXSA9IDE7XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZSBhIG5ldyBtYXQyIHdpdGggdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDAgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDEgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggMSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTAgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTEgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggMylcbiAqIEByZXR1cm5zIHttYXQyfSBvdXQgQSBuZXcgMngyIG1hdHJpeFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVmFsdWVzKG0wMCwgbTAxLCBtMTAsIG0xMSkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoNCk7XG4gIG91dFswXSA9IG0wMDtcbiAgb3V0WzFdID0gbTAxO1xuICBvdXRbMl0gPSBtMTA7XG4gIG91dFszXSA9IG0xMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IHRoZSBjb21wb25lbnRzIG9mIGEgbWF0MiB0byB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDAgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDEgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggMSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTAgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTEgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggMylcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0KG91dCwgbTAwLCBtMDEsIG0xMCwgbTExKSB7XG4gIG91dFswXSA9IG0wMDtcbiAgb3V0WzFdID0gbTAxO1xuICBvdXRbMl0gPSBtMTA7XG4gIG91dFszXSA9IG0xMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogVHJhbnNwb3NlIHRoZSB2YWx1ZXMgb2YgYSBtYXQyXG4gKlxuICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zcG9zZShvdXQsIGEpIHtcbiAgLy8gSWYgd2UgYXJlIHRyYW5zcG9zaW5nIG91cnNlbHZlcyB3ZSBjYW4gc2tpcCBhIGZldyBzdGVwcyBidXQgaGF2ZSB0byBjYWNoZVxuICAvLyBzb21lIHZhbHVlc1xuICBpZiAob3V0ID09PSBhKSB7XG4gICAgdmFyIGExID0gYVsxXTtcbiAgICBvdXRbMV0gPSBhWzJdO1xuICAgIG91dFsyXSA9IGExO1xuICB9IGVsc2Uge1xuICAgIG91dFswXSA9IGFbMF07XG4gICAgb3V0WzFdID0gYVsyXTtcbiAgICBvdXRbMl0gPSBhWzFdO1xuICAgIG91dFszXSA9IGFbM107XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBJbnZlcnRzIGEgbWF0MlxuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnQob3V0LCBhKSB7XG4gIHZhciBhMCA9IGFbMF0sXG4gICAgICBhMSA9IGFbMV0sXG4gICAgICBhMiA9IGFbMl0sXG4gICAgICBhMyA9IGFbM107IC8vIENhbGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnRcblxuICB2YXIgZGV0ID0gYTAgKiBhMyAtIGEyICogYTE7XG5cbiAgaWYgKCFkZXQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGRldCA9IDEuMCAvIGRldDtcbiAgb3V0WzBdID0gYTMgKiBkZXQ7XG4gIG91dFsxXSA9IC1hMSAqIGRldDtcbiAgb3V0WzJdID0gLWEyICogZGV0O1xuICBvdXRbM10gPSBhMCAqIGRldDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgYWRqdWdhdGUgb2YgYSBtYXQyXG4gKlxuICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFkam9pbnQob3V0LCBhKSB7XG4gIC8vIENhY2hpbmcgdGhpcyB2YWx1ZSBpcyBuZXNzZWNhcnkgaWYgb3V0ID09IGFcbiAgdmFyIGEwID0gYVswXTtcbiAgb3V0WzBdID0gYVszXTtcbiAgb3V0WzFdID0gLWFbMV07XG4gIG91dFsyXSA9IC1hWzJdO1xuICBvdXRbM10gPSBhMDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZGV0ZXJtaW5hbnQgb2YgYSBtYXQyXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGRldGVybWluYW50IG9mIGFcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZXJtaW5hbnQoYSkge1xuICByZXR1cm4gYVswXSAqIGFbM10gLSBhWzJdICogYVsxXTtcbn1cbi8qKlxuICogTXVsdGlwbGllcyB0d28gbWF0MidzXG4gKlxuICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHkob3V0LCBhLCBiKSB7XG4gIHZhciBhMCA9IGFbMF0sXG4gICAgICBhMSA9IGFbMV0sXG4gICAgICBhMiA9IGFbMl0sXG4gICAgICBhMyA9IGFbM107XG4gIHZhciBiMCA9IGJbMF0sXG4gICAgICBiMSA9IGJbMV0sXG4gICAgICBiMiA9IGJbMl0sXG4gICAgICBiMyA9IGJbM107XG4gIG91dFswXSA9IGEwICogYjAgKyBhMiAqIGIxO1xuICBvdXRbMV0gPSBhMSAqIGIwICsgYTMgKiBiMTtcbiAgb3V0WzJdID0gYTAgKiBiMiArIGEyICogYjM7XG4gIG91dFszXSA9IGExICogYjIgKyBhMyAqIGIzO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGVzIGEgbWF0MiBieSB0aGUgZ2l2ZW4gYW5nbGVcbiAqXG4gKiBAcGFyYW0ge21hdDJ9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgdGhlIG1hdHJpeCB0byByb3RhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZShvdXQsIGEsIHJhZCkge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdO1xuICB2YXIgcyA9IE1hdGguc2luKHJhZCk7XG4gIHZhciBjID0gTWF0aC5jb3MocmFkKTtcbiAgb3V0WzBdID0gYTAgKiBjICsgYTIgKiBzO1xuICBvdXRbMV0gPSBhMSAqIGMgKyBhMyAqIHM7XG4gIG91dFsyXSA9IGEwICogLXMgKyBhMiAqIGM7XG4gIG91dFszXSA9IGExICogLXMgKyBhMyAqIGM7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNjYWxlcyB0aGUgbWF0MiBieSB0aGUgZGltZW5zaW9ucyBpbiB0aGUgZ2l2ZW4gdmVjMlxuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYSB0aGUgbWF0cml4IHRvIHJvdGF0ZVxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IHYgdGhlIHZlYzIgdG8gc2NhbGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDJ9IG91dFxuICoqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGUob3V0LCBhLCB2KSB7XG4gIHZhciBhMCA9IGFbMF0sXG4gICAgICBhMSA9IGFbMV0sXG4gICAgICBhMiA9IGFbMl0sXG4gICAgICBhMyA9IGFbM107XG4gIHZhciB2MCA9IHZbMF0sXG4gICAgICB2MSA9IHZbMV07XG4gIG91dFswXSA9IGEwICogdjA7XG4gIG91dFsxXSA9IGExICogdjA7XG4gIG91dFsyXSA9IGEyICogdjE7XG4gIG91dFszXSA9IGEzICogdjE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIGdpdmVuIGFuZ2xlXG4gKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKTpcbiAqXG4gKiAgICAgbWF0Mi5pZGVudGl0eShkZXN0KTtcbiAqICAgICBtYXQyLnJvdGF0ZShkZXN0LCBkZXN0LCByYWQpO1xuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IG1hdDIgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Sb3RhdGlvbihvdXQsIHJhZCkge1xuICB2YXIgcyA9IE1hdGguc2luKHJhZCk7XG4gIHZhciBjID0gTWF0aC5jb3MocmFkKTtcbiAgb3V0WzBdID0gYztcbiAgb3V0WzFdID0gcztcbiAgb3V0WzJdID0gLXM7XG4gIG91dFszXSA9IGM7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIHZlY3RvciBzY2FsaW5nXG4gKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKTpcbiAqXG4gKiAgICAgbWF0Mi5pZGVudGl0eShkZXN0KTtcbiAqICAgICBtYXQyLnNjYWxlKGRlc3QsIGRlc3QsIHZlYyk7XG4gKlxuICogQHBhcmFtIHttYXQyfSBvdXQgbWF0MiByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IHYgU2NhbGluZyB2ZWN0b3JcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVNjYWxpbmcob3V0LCB2KSB7XG4gIG91dFswXSA9IHZbMF07XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IHZbMV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtYXQyXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgbWF0cml4IHRvIHJlcHJlc2VudCBhcyBhIHN0cmluZ1xuICogQHJldHVybnMge1N0cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtYXRyaXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyKGEpIHtcbiAgcmV0dXJuIFwibWF0MihcIiArIGFbMF0gKyBcIiwgXCIgKyBhWzFdICsgXCIsIFwiICsgYVsyXSArIFwiLCBcIiArIGFbM10gKyBcIilcIjtcbn1cbi8qKlxuICogUmV0dXJucyBGcm9iZW5pdXMgbm9ybSBvZiBhIG1hdDJcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYSB0aGUgbWF0cml4IHRvIGNhbGN1bGF0ZSBGcm9iZW5pdXMgbm9ybSBvZlxuICogQHJldHVybnMge051bWJlcn0gRnJvYmVuaXVzIG5vcm1cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvYihhKSB7XG4gIHJldHVybiBNYXRoLmh5cG90KGFbMF0sIGFbMV0sIGFbMl0sIGFbM10pO1xufVxuLyoqXG4gKiBSZXR1cm5zIEwsIEQgYW5kIFUgbWF0cmljZXMgKExvd2VyIHRyaWFuZ3VsYXIsIERpYWdvbmFsIGFuZCBVcHBlciB0cmlhbmd1bGFyKSBieSBmYWN0b3JpemluZyB0aGUgaW5wdXQgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gTCB0aGUgbG93ZXIgdHJpYW5ndWxhciBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBEIHRoZSBkaWFnb25hbCBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBVIHRoZSB1cHBlciB0cmlhbmd1bGFyIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgdGhlIGlucHV0IG1hdHJpeCB0byBmYWN0b3JpemVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gTERVKEwsIEQsIFUsIGEpIHtcbiAgTFsyXSA9IGFbMl0gLyBhWzBdO1xuICBVWzBdID0gYVswXTtcbiAgVVsxXSA9IGFbMV07XG4gIFVbM10gPSBhWzNdIC0gTFsyXSAqIFVbMV07XG4gIHJldHVybiBbTCwgRCwgVV07XG59XG4vKipcbiAqIEFkZHMgdHdvIG1hdDInc1xuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZChvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSArIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gKyBiWzFdO1xuICBvdXRbMl0gPSBhWzJdICsgYlsyXTtcbiAgb3V0WzNdID0gYVszXSArIGJbM107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFN1YnRyYWN0cyBtYXRyaXggYiBmcm9tIG1hdHJpeCBhXG4gKlxuICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3VidHJhY3Qob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gLSBiWzBdO1xuICBvdXRbMV0gPSBhWzFdIC0gYlsxXTtcbiAgb3V0WzJdID0gYVsyXSAtIGJbMl07XG4gIG91dFszXSA9IGFbM10gLSBiWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0pXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgVGhlIGZpcnN0IG1hdHJpeC5cbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBiIFRoZSBzZWNvbmQgbWF0cml4LlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleGFjdEVxdWFscyhhLCBiKSB7XG4gIHJldHVybiBhWzBdID09PSBiWzBdICYmIGFbMV0gPT09IGJbMV0gJiYgYVsyXSA9PT0gYlsyXSAmJiBhWzNdID09PSBiWzNdO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZlIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24uXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgVGhlIGZpcnN0IG1hdHJpeC5cbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBiIFRoZSBzZWNvbmQgbWF0cml4LlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbHMoYSwgYikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdO1xuICB2YXIgYjAgPSBiWzBdLFxuICAgICAgYjEgPSBiWzFdLFxuICAgICAgYjIgPSBiWzJdLFxuICAgICAgYjMgPSBiWzNdO1xuICByZXR1cm4gTWF0aC5hYnMoYTAgLSBiMCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTApLCBNYXRoLmFicyhiMCkpICYmIE1hdGguYWJzKGExIC0gYjEpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExKSwgTWF0aC5hYnMoYjEpKSAmJiBNYXRoLmFicyhhMiAtIGIyKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMiksIE1hdGguYWJzKGIyKSkgJiYgTWF0aC5hYnMoYTMgLSBiMykgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTMpLCBNYXRoLmFicyhiMykpO1xufVxuLyoqXG4gKiBNdWx0aXBseSBlYWNoIGVsZW1lbnQgb2YgdGhlIG1hdHJpeCBieSBhIHNjYWxhci5cbiAqXG4gKiBAcGFyYW0ge21hdDJ9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgdGhlIG1hdHJpeCB0byBzY2FsZVxuICogQHBhcmFtIHtOdW1iZXJ9IGIgYW1vdW50IHRvIHNjYWxlIHRoZSBtYXRyaXgncyBlbGVtZW50cyBieVxuICogQHJldHVybnMge21hdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseVNjYWxhcihvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAqIGI7XG4gIG91dFsxXSA9IGFbMV0gKiBiO1xuICBvdXRbMl0gPSBhWzJdICogYjtcbiAgb3V0WzNdID0gYVszXSAqIGI7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEFkZHMgdHdvIG1hdDIncyBhZnRlciBtdWx0aXBseWluZyBlYWNoIGVsZW1lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGJ5IGEgc2NhbGFyIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcGFyYW0ge051bWJlcn0gc2NhbGUgdGhlIGFtb3VudCB0byBzY2FsZSBiJ3MgZWxlbWVudHMgYnkgYmVmb3JlIGFkZGluZ1xuICogQHJldHVybnMge21hdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseVNjYWxhckFuZEFkZChvdXQsIGEsIGIsIHNjYWxlKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdICogc2NhbGU7XG4gIG91dFsxXSA9IGFbMV0gKyBiWzFdICogc2NhbGU7XG4gIG91dFsyXSA9IGFbMl0gKyBiWzJdICogc2NhbGU7XG4gIG91dFszXSA9IGFbM10gKyBiWzNdICogc2NhbGU7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgbWF0Mi5tdWx0aXBseX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgbXVsID0gbXVsdGlwbHk7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgbWF0Mi5zdWJ0cmFjdH1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgc3ViID0gc3VidHJhY3Q7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-matrix/esm/mat2.js\n"); /***/ }), /***/ "./node_modules/gl-matrix/esm/mat2d.js": /*!*********************************************!*\ !*** ./node_modules/gl-matrix/esm/mat2d.js ***! \*********************************************/ /*! exports provided: create, clone, copy, identity, fromValues, set, invert, determinant, multiply, rotate, scale, translate, fromRotation, fromScaling, fromTranslation, str, frob, add, subtract, multiplyScalar, multiplyScalarAndAdd, exactEquals, equals, mul, sub */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"determinant\", function() { return determinant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotation\", function() { return fromRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromScaling\", function() { return fromScaling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromTranslation\", function() { return fromTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"frob\", function() { return frob; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalar\", function() { return multiplyScalar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalarAndAdd\", function() { return multiplyScalarAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 2x3 Matrix\n * @module mat2d\n * @description\n * A mat2d contains six elements defined as:\n *
\n * [a, b,\n *  c, d,\n *  tx, ty]\n * 
\n * This is a short form for the 3x3 matrix:\n *
\n * [a, b, 0,\n *  c, d, 0,\n *  tx, ty, 1]\n * 
\n * The last column is ignored so the array is shorter and operations are faster.\n */\n\n/**\n * Creates a new identity mat2d\n *\n * @returns {mat2d} a new 2x3 matrix\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](6);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[4] = 0;\n out[5] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2d initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2d} a matrix to clone\n * @returns {mat2d} a new 2x3 matrix\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](6);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n}\n/**\n * Copy the values from one mat2d to another\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {mat2d} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n}\n/**\n * Set a mat2d to the identity matrix\n *\n * @param {mat2d} out the receiving matrix\n * @returns {mat2d} out\n */\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Create a new mat2d with the given values\n *\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} A new mat2d\n */\n\nfunction fromValues(a, b, c, d, tx, ty) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](6);\n out[0] = a;\n out[1] = b;\n out[2] = c;\n out[3] = d;\n out[4] = tx;\n out[5] = ty;\n return out;\n}\n/**\n * Set the components of a mat2d to the given values\n *\n * @param {mat2d} out the receiving matrix\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} out\n */\n\nfunction set(out, a, b, c, d, tx, ty) {\n out[0] = a;\n out[1] = b;\n out[2] = c;\n out[3] = d;\n out[4] = tx;\n out[5] = ty;\n return out;\n}\n/**\n * Inverts a mat2d\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {mat2d} out\n */\n\nfunction invert(out, a) {\n var aa = a[0],\n ab = a[1],\n ac = a[2],\n ad = a[3];\n var atx = a[4],\n aty = a[5];\n var det = aa * ad - ab * ac;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\n/**\n * Calculates the determinant of a mat2d\n *\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {Number} determinant of a\n */\n\nfunction determinant(a) {\n return a[0] * a[3] - a[1] * a[2];\n}\n/**\n * Multiplies two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nfunction multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n out[4] = a0 * b4 + a2 * b5 + a4;\n out[5] = a1 * b4 + a3 * b5 + a5;\n return out;\n}\n/**\n * Rotates a mat2d by the given angle\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\n\nfunction rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n out[4] = a4;\n out[5] = a5;\n return out;\n}\n/**\n * Scales the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to translate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2d} out\n **/\n\nfunction scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n out[4] = a4;\n out[5] = a5;\n return out;\n}\n/**\n * Translates the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to translate\n * @param {ReadonlyVec2} v the vec2 to translate the matrix by\n * @returns {mat2d} out\n **/\n\nfunction translate(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0;\n out[1] = a1;\n out[2] = a2;\n out[3] = a3;\n out[4] = a0 * v0 + a2 * v1 + a4;\n out[5] = a1 * v0 + a3 * v1 + a5;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.rotate(dest, dest, rad);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\n\nfunction fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.scale(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2d} out\n */\n\nfunction fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.translate(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat2d} out\n */\n\nfunction fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = v[0];\n out[5] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2d\n *\n * @param {ReadonlyMat2d} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nfunction str(a) {\n return \"mat2d(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2d\n *\n * @param {ReadonlyMat2d} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nfunction frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], 1);\n}\n/**\n * Adds two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2d} out\n */\n\nfunction multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n return out;\n}\n/**\n * Adds two mat2d's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2d} out the receiving vector\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2d} out\n */\n\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2d} a The first matrix.\n * @param {ReadonlyMat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2d} a The first matrix.\n * @param {ReadonlyMat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a5), Math.abs(b5));\n}\n/**\n * Alias for {@link mat2d.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link mat2d.subtract}\n * @function\n */\n\nvar sub = subtract;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS9tYXQyZC5qcz83NTFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjs7QUFFbkMsTUFBTSxxREFBbUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixXQUFXLGNBQWM7QUFDekIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixXQUFXLGNBQWM7QUFDekIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixXQUFXLGNBQWM7QUFDekIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0I7QUFDdmQ7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC1tYXRyaXgvZXNtL21hdDJkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ2xNYXRyaXggZnJvbSBcIi4vY29tbW9uLmpzXCI7XG4vKipcbiAqIDJ4MyBNYXRyaXhcbiAqIEBtb2R1bGUgbWF0MmRcbiAqIEBkZXNjcmlwdGlvblxuICogQSBtYXQyZCBjb250YWlucyBzaXggZWxlbWVudHMgZGVmaW5lZCBhczpcbiAqIDxwcmU+XG4gKiBbYSwgYixcbiAqICBjLCBkLFxuICogIHR4LCB0eV1cbiAqIDwvcHJlPlxuICogVGhpcyBpcyBhIHNob3J0IGZvcm0gZm9yIHRoZSAzeDMgbWF0cml4OlxuICogPHByZT5cbiAqIFthLCBiLCAwLFxuICogIGMsIGQsIDAsXG4gKiAgdHgsIHR5LCAxXVxuICogPC9wcmU+XG4gKiBUaGUgbGFzdCBjb2x1bW4gaXMgaWdub3JlZCBzbyB0aGUgYXJyYXkgaXMgc2hvcnRlciBhbmQgb3BlcmF0aW9ucyBhcmUgZmFzdGVyLlxuICovXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBpZGVudGl0eSBtYXQyZFxuICpcbiAqIEByZXR1cm5zIHttYXQyZH0gYSBuZXcgMngzIG1hdHJpeFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg2KTtcblxuICBpZiAoZ2xNYXRyaXguQVJSQVlfVFlQRSAhPSBGbG9hdDMyQXJyYXkpIHtcbiAgICBvdXRbMV0gPSAwO1xuICAgIG91dFsyXSA9IDA7XG4gICAgb3V0WzRdID0gMDtcbiAgICBvdXRbNV0gPSAwO1xuICB9XG5cbiAgb3V0WzBdID0gMTtcbiAgb3V0WzNdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBtYXQyZCBpbml0aWFsaXplZCB3aXRoIHZhbHVlcyBmcm9tIGFuIGV4aXN0aW5nIG1hdHJpeFxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSBtYXRyaXggdG8gY2xvbmVcbiAqIEByZXR1cm5zIHttYXQyZH0gYSBuZXcgMngzIG1hdHJpeFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZShhKSB7XG4gIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg2KTtcbiAgb3V0WzBdID0gYVswXTtcbiAgb3V0WzFdID0gYVsxXTtcbiAgb3V0WzJdID0gYVsyXTtcbiAgb3V0WzNdID0gYVszXTtcbiAgb3V0WzRdID0gYVs0XTtcbiAgb3V0WzVdID0gYVs1XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ29weSB0aGUgdmFsdWVzIGZyb20gb25lIG1hdDJkIHRvIGFub3RoZXJcbiAqXG4gKiBAcGFyYW0ge21hdDJkfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY29weShvdXQsIGEpIHtcbiAgb3V0WzBdID0gYVswXTtcbiAgb3V0WzFdID0gYVsxXTtcbiAgb3V0WzJdID0gYVsyXTtcbiAgb3V0WzNdID0gYVszXTtcbiAgb3V0WzRdID0gYVs0XTtcbiAgb3V0WzVdID0gYVs1XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IGEgbWF0MmQgdG8gdGhlIGlkZW50aXR5IG1hdHJpeFxuICpcbiAqIEBwYXJhbSB7bWF0MmR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpdHkob3V0KSB7XG4gIG91dFswXSA9IDE7XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IDE7XG4gIG91dFs0XSA9IDA7XG4gIG91dFs1XSA9IDA7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZSBhIG5ldyBtYXQyZCB3aXRoIHRoZSBnaXZlbiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gYSBDb21wb25lbnQgQSAoaW5kZXggMClcbiAqIEBwYXJhbSB7TnVtYmVyfSBiIENvbXBvbmVudCBCIChpbmRleCAxKVxuICogQHBhcmFtIHtOdW1iZXJ9IGMgQ29tcG9uZW50IEMgKGluZGV4IDIpXG4gKiBAcGFyYW0ge051bWJlcn0gZCBDb21wb25lbnQgRCAoaW5kZXggMylcbiAqIEBwYXJhbSB7TnVtYmVyfSB0eCBDb21wb25lbnQgVFggKGluZGV4IDQpXG4gKiBAcGFyYW0ge051bWJlcn0gdHkgQ29tcG9uZW50IFRZIChpbmRleCA1KVxuICogQHJldHVybnMge21hdDJkfSBBIG5ldyBtYXQyZFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVmFsdWVzKGEsIGIsIGMsIGQsIHR4LCB0eSkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoNik7XG4gIG91dFswXSA9IGE7XG4gIG91dFsxXSA9IGI7XG4gIG91dFsyXSA9IGM7XG4gIG91dFszXSA9IGQ7XG4gIG91dFs0XSA9IHR4O1xuICBvdXRbNV0gPSB0eTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IHRoZSBjb21wb25lbnRzIG9mIGEgbWF0MmQgdG8gdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7bWF0MmR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtOdW1iZXJ9IGEgQ29tcG9uZW50IEEgKGluZGV4IDApXG4gKiBAcGFyYW0ge051bWJlcn0gYiBDb21wb25lbnQgQiAoaW5kZXggMSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBjIENvbXBvbmVudCBDIChpbmRleCAyKVxuICogQHBhcmFtIHtOdW1iZXJ9IGQgQ29tcG9uZW50IEQgKGluZGV4IDMpXG4gKiBAcGFyYW0ge051bWJlcn0gdHggQ29tcG9uZW50IFRYIChpbmRleCA0KVxuICogQHBhcmFtIHtOdW1iZXJ9IHR5IENvbXBvbmVudCBUWSAoaW5kZXggNSlcbiAqIEByZXR1cm5zIHttYXQyZH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNldChvdXQsIGEsIGIsIGMsIGQsIHR4LCB0eSkge1xuICBvdXRbMF0gPSBhO1xuICBvdXRbMV0gPSBiO1xuICBvdXRbMl0gPSBjO1xuICBvdXRbM10gPSBkO1xuICBvdXRbNF0gPSB0eDtcbiAgb3V0WzVdID0gdHk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEludmVydHMgYSBtYXQyZFxuICpcbiAqIEBwYXJhbSB7bWF0MmR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0MmR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnQob3V0LCBhKSB7XG4gIHZhciBhYSA9IGFbMF0sXG4gICAgICBhYiA9IGFbMV0sXG4gICAgICBhYyA9IGFbMl0sXG4gICAgICBhZCA9IGFbM107XG4gIHZhciBhdHggPSBhWzRdLFxuICAgICAgYXR5ID0gYVs1XTtcbiAgdmFyIGRldCA9IGFhICogYWQgLSBhYiAqIGFjO1xuXG4gIGlmICghZGV0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBkZXQgPSAxLjAgLyBkZXQ7XG4gIG91dFswXSA9IGFkICogZGV0O1xuICBvdXRbMV0gPSAtYWIgKiBkZXQ7XG4gIG91dFsyXSA9IC1hYyAqIGRldDtcbiAgb3V0WzNdID0gYWEgKiBkZXQ7XG4gIG91dFs0XSA9IChhYyAqIGF0eSAtIGFkICogYXR4KSAqIGRldDtcbiAgb3V0WzVdID0gKGFiICogYXR4IC0gYWEgKiBhdHkpICogZGV0O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBkZXRlcm1pbmFudCBvZiBhIG1hdDJkXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkZXRlcm1pbmFudCBvZiBhXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRldGVybWluYW50KGEpIHtcbiAgcmV0dXJuIGFbMF0gKiBhWzNdIC0gYVsxXSAqIGFbMl07XG59XG4vKipcbiAqIE11bHRpcGxpZXMgdHdvIG1hdDJkJ3NcbiAqXG4gKiBAcGFyYW0ge21hdDJkfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHkob3V0LCBhLCBiKSB7XG4gIHZhciBhMCA9IGFbMF0sXG4gICAgICBhMSA9IGFbMV0sXG4gICAgICBhMiA9IGFbMl0sXG4gICAgICBhMyA9IGFbM10sXG4gICAgICBhNCA9IGFbNF0sXG4gICAgICBhNSA9IGFbNV07XG4gIHZhciBiMCA9IGJbMF0sXG4gICAgICBiMSA9IGJbMV0sXG4gICAgICBiMiA9IGJbMl0sXG4gICAgICBiMyA9IGJbM10sXG4gICAgICBiNCA9IGJbNF0sXG4gICAgICBiNSA9IGJbNV07XG4gIG91dFswXSA9IGEwICogYjAgKyBhMiAqIGIxO1xuICBvdXRbMV0gPSBhMSAqIGIwICsgYTMgKiBiMTtcbiAgb3V0WzJdID0gYTAgKiBiMiArIGEyICogYjM7XG4gIG91dFszXSA9IGExICogYjIgKyBhMyAqIGIzO1xuICBvdXRbNF0gPSBhMCAqIGI0ICsgYTIgKiBiNSArIGE0O1xuICBvdXRbNV0gPSBhMSAqIGI0ICsgYTMgKiBiNSArIGE1O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGVzIGEgbWF0MmQgYnkgdGhlIGdpdmVuIGFuZ2xlXG4gKlxuICogQHBhcmFtIHttYXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGEgdGhlIG1hdHJpeCB0byByb3RhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0MmR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGUob3V0LCBhLCByYWQpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXSxcbiAgICAgIGEyID0gYVsyXSxcbiAgICAgIGEzID0gYVszXSxcbiAgICAgIGE0ID0gYVs0XSxcbiAgICAgIGE1ID0gYVs1XTtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQpO1xuICB2YXIgYyA9IE1hdGguY29zKHJhZCk7XG4gIG91dFswXSA9IGEwICogYyArIGEyICogcztcbiAgb3V0WzFdID0gYTEgKiBjICsgYTMgKiBzO1xuICBvdXRbMl0gPSBhMCAqIC1zICsgYTIgKiBjO1xuICBvdXRbM10gPSBhMSAqIC1zICsgYTMgKiBjO1xuICBvdXRbNF0gPSBhNDtcbiAgb3V0WzVdID0gYTU7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNjYWxlcyB0aGUgbWF0MmQgYnkgdGhlIGRpbWVuc2lvbnMgaW4gdGhlIGdpdmVuIHZlYzJcbiAqXG4gKiBAcGFyYW0ge21hdDJkfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSB0aGUgbWF0cml4IHRvIHRyYW5zbGF0ZVxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IHYgdGhlIHZlYzIgdG8gc2NhbGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlKG91dCwgYSwgdikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdLFxuICAgICAgYTQgPSBhWzRdLFxuICAgICAgYTUgPSBhWzVdO1xuICB2YXIgdjAgPSB2WzBdLFxuICAgICAgdjEgPSB2WzFdO1xuICBvdXRbMF0gPSBhMCAqIHYwO1xuICBvdXRbMV0gPSBhMSAqIHYwO1xuICBvdXRbMl0gPSBhMiAqIHYxO1xuICBvdXRbM10gPSBhMyAqIHYxO1xuICBvdXRbNF0gPSBhNDtcbiAgb3V0WzVdID0gYTU7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFRyYW5zbGF0ZXMgdGhlIG1hdDJkIGJ5IHRoZSBkaW1lbnNpb25zIGluIHRoZSBnaXZlbiB2ZWMyXG4gKlxuICogQHBhcmFtIHttYXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGEgdGhlIG1hdHJpeCB0byB0cmFuc2xhdGVcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSB2IHRoZSB2ZWMyIHRvIHRyYW5zbGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0MmR9IG91dFxuICoqL1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlKG91dCwgYSwgdikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdLFxuICAgICAgYTQgPSBhWzRdLFxuICAgICAgYTUgPSBhWzVdO1xuICB2YXIgdjAgPSB2WzBdLFxuICAgICAgdjEgPSB2WzFdO1xuICBvdXRbMF0gPSBhMDtcbiAgb3V0WzFdID0gYTE7XG4gIG91dFsyXSA9IGEyO1xuICBvdXRbM10gPSBhMztcbiAgb3V0WzRdID0gYTAgKiB2MCArIGEyICogdjEgKyBhNDtcbiAgb3V0WzVdID0gYTEgKiB2MCArIGEzICogdjEgKyBhNTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIGEgZ2l2ZW4gYW5nbGVcbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQyZC5pZGVudGl0eShkZXN0KTtcbiAqICAgICBtYXQyZC5yb3RhdGUoZGVzdCwgZGVzdCwgcmFkKTtcbiAqXG4gKiBAcGFyYW0ge21hdDJkfSBvdXQgbWF0MmQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0MmR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUm90YXRpb24ob3V0LCByYWQpIHtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQpLFxuICAgICAgYyA9IE1hdGguY29zKHJhZCk7XG4gIG91dFswXSA9IGM7XG4gIG91dFsxXSA9IHM7XG4gIG91dFsyXSA9IC1zO1xuICBvdXRbM10gPSBjO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSAwO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSB2ZWN0b3Igc2NhbGluZ1xuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDJkLmlkZW50aXR5KGRlc3QpO1xuICogICAgIG1hdDJkLnNjYWxlKGRlc3QsIGRlc3QsIHZlYyk7XG4gKlxuICogQHBhcmFtIHttYXQyZH0gb3V0IG1hdDJkIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gdiBTY2FsaW5nIHZlY3RvclxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVNjYWxpbmcob3V0LCB2KSB7XG4gIG91dFswXSA9IHZbMF07XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IHZbMV07XG4gIG91dFs0XSA9IDA7XG4gIG91dFs1XSA9IDA7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIHZlY3RvciB0cmFuc2xhdGlvblxuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDJkLmlkZW50aXR5KGRlc3QpO1xuICogICAgIG1hdDJkLnRyYW5zbGF0ZShkZXN0LCBkZXN0LCB2ZWMpO1xuICpcbiAqIEBwYXJhbSB7bWF0MmR9IG91dCBtYXQyZCByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IHYgVHJhbnNsYXRpb24gdmVjdG9yXG4gKiBAcmV0dXJucyB7bWF0MmR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVHJhbnNsYXRpb24ob3V0LCB2KSB7XG4gIG91dFswXSA9IDE7XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IDE7XG4gIG91dFs0XSA9IHZbMF07XG4gIG91dFs1XSA9IHZbMV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtYXQyZFxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSBtYXRyaXggdG8gcmVwcmVzZW50IGFzIGEgc3RyaW5nXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1hdHJpeFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzdHIoYSkge1xuICByZXR1cm4gXCJtYXQyZChcIiArIGFbMF0gKyBcIiwgXCIgKyBhWzFdICsgXCIsIFwiICsgYVsyXSArIFwiLCBcIiArIGFbM10gKyBcIiwgXCIgKyBhWzRdICsgXCIsIFwiICsgYVs1XSArIFwiKVwiO1xufVxuLyoqXG4gKiBSZXR1cm5zIEZyb2Jlbml1cyBub3JtIG9mIGEgbWF0MmRcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGEgdGhlIG1hdHJpeCB0byBjYWxjdWxhdGUgRnJvYmVuaXVzIG5vcm0gb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IEZyb2Jlbml1cyBub3JtXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb2IoYSkge1xuICByZXR1cm4gTWF0aC5oeXBvdChhWzBdLCBhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCAxKTtcbn1cbi8qKlxuICogQWRkcyB0d28gbWF0MmQnc1xuICpcbiAqIEBwYXJhbSB7bWF0MmR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7bWF0MmR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXTtcbiAgb3V0WzJdID0gYVsyXSArIGJbMl07XG4gIG91dFszXSA9IGFbM10gKyBiWzNdO1xuICBvdXRbNF0gPSBhWzRdICsgYls0XTtcbiAgb3V0WzVdID0gYVs1XSArIGJbNV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFN1YnRyYWN0cyBtYXRyaXggYiBmcm9tIG1hdHJpeCBhXG4gKlxuICogQHBhcmFtIHttYXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHttYXQyZH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnRyYWN0KG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdIC0gYlswXTtcbiAgb3V0WzFdID0gYVsxXSAtIGJbMV07XG4gIG91dFsyXSA9IGFbMl0gLSBiWzJdO1xuICBvdXRbM10gPSBhWzNdIC0gYlszXTtcbiAgb3V0WzRdID0gYVs0XSAtIGJbNF07XG4gIG91dFs1XSA9IGFbNV0gLSBiWzVdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBNdWx0aXBseSBlYWNoIGVsZW1lbnQgb2YgdGhlIG1hdHJpeCBieSBhIHNjYWxhci5cbiAqXG4gKiBAcGFyYW0ge21hdDJkfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSB0aGUgbWF0cml4IHRvIHNjYWxlXG4gKiBAcGFyYW0ge051bWJlcn0gYiBhbW91bnQgdG8gc2NhbGUgdGhlIG1hdHJpeCdzIGVsZW1lbnRzIGJ5XG4gKiBAcmV0dXJucyB7bWF0MmR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseVNjYWxhcihvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAqIGI7XG4gIG91dFsxXSA9IGFbMV0gKiBiO1xuICBvdXRbMl0gPSBhWzJdICogYjtcbiAgb3V0WzNdID0gYVszXSAqIGI7XG4gIG91dFs0XSA9IGFbNF0gKiBiO1xuICBvdXRbNV0gPSBhWzVdICogYjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQWRkcyB0d28gbWF0MmQncyBhZnRlciBtdWx0aXBseWluZyBlYWNoIGVsZW1lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGJ5IGEgc2NhbGFyIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7bWF0MmR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcGFyYW0ge051bWJlcn0gc2NhbGUgdGhlIGFtb3VudCB0byBzY2FsZSBiJ3MgZWxlbWVudHMgYnkgYmVmb3JlIGFkZGluZ1xuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXJBbmRBZGQob3V0LCBhLCBiLCBzY2FsZSkge1xuICBvdXRbMF0gPSBhWzBdICsgYlswXSAqIHNjYWxlO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXSAqIHNjYWxlO1xuICBvdXRbMl0gPSBhWzJdICsgYlsyXSAqIHNjYWxlO1xuICBvdXRbM10gPSBhWzNdICsgYlszXSAqIHNjYWxlO1xuICBvdXRbNF0gPSBhWzRdICsgYls0XSAqIHNjYWxlO1xuICBvdXRbNV0gPSBhWzVdICsgYls1XSAqIHNjYWxlO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0pXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBhIFRoZSBmaXJzdCBtYXRyaXguXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGIgVGhlIHNlY29uZCBtYXRyaXguXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgbWF0cmljZXMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGV4YWN0RXF1YWxzKGEsIGIpIHtcbiAgcmV0dXJuIGFbMF0gPT09IGJbMF0gJiYgYVsxXSA9PT0gYlsxXSAmJiBhWzJdID09PSBiWzJdICYmIGFbM10gPT09IGJbM10gJiYgYVs0XSA9PT0gYls0XSAmJiBhWzVdID09PSBiWzVdO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZlIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24uXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBhIFRoZSBmaXJzdCBtYXRyaXguXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGIgVGhlIHNlY29uZCBtYXRyaXguXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgbWF0cmljZXMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFscyhhLCBiKSB7XG4gIHZhciBhMCA9IGFbMF0sXG4gICAgICBhMSA9IGFbMV0sXG4gICAgICBhMiA9IGFbMl0sXG4gICAgICBhMyA9IGFbM10sXG4gICAgICBhNCA9IGFbNF0sXG4gICAgICBhNSA9IGFbNV07XG4gIHZhciBiMCA9IGJbMF0sXG4gICAgICBiMSA9IGJbMV0sXG4gICAgICBiMiA9IGJbMl0sXG4gICAgICBiMyA9IGJbM10sXG4gICAgICBiNCA9IGJbNF0sXG4gICAgICBiNSA9IGJbNV07XG4gIHJldHVybiBNYXRoLmFicyhhMCAtIGIwKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMCksIE1hdGguYWJzKGIwKSkgJiYgTWF0aC5hYnMoYTEgLSBiMSkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTEpLCBNYXRoLmFicyhiMSkpICYmIE1hdGguYWJzKGEyIC0gYjIpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEyKSwgTWF0aC5hYnMoYjIpKSAmJiBNYXRoLmFicyhhMyAtIGIzKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMyksIE1hdGguYWJzKGIzKSkgJiYgTWF0aC5hYnMoYTQgLSBiNCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTQpLCBNYXRoLmFicyhiNCkpICYmIE1hdGguYWJzKGE1IC0gYjUpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE1KSwgTWF0aC5hYnMoYjUpKTtcbn1cbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayBtYXQyZC5tdWx0aXBseX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgbXVsID0gbXVsdGlwbHk7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgbWF0MmQuc3VidHJhY3R9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHN1YiA9IHN1YnRyYWN0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-matrix/esm/mat2d.js\n"); /***/ }), /***/ "./node_modules/gl-matrix/esm/mat3.js": /*!********************************************!*\ !*** ./node_modules/gl-matrix/esm/mat3.js ***! \********************************************/ /*! exports provided: create, fromMat4, clone, copy, fromValues, set, identity, transpose, invert, adjoint, determinant, multiply, translate, rotate, scale, fromTranslation, fromRotation, fromScaling, fromMat2d, fromQuat, normalFromMat4, projection, str, frob, add, subtract, multiplyScalar, multiplyScalarAndAdd, exactEquals, equals, mul, sub */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromMat4\", function() { return fromMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return transpose; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"adjoint\", function() { return adjoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"determinant\", function() { return determinant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromTranslation\", function() { return fromTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotation\", function() { return fromRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromScaling\", function() { return fromScaling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromMat2d\", function() { return fromMat2d; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromQuat\", function() { return fromQuat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalFromMat4\", function() { return normalFromMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"projection\", function() { return projection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"frob\", function() { return frob; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalar\", function() { return multiplyScalar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalarAndAdd\", function() { return multiplyScalarAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](9);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nfunction fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nfunction fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nfunction set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nfunction determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nfunction multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nfunction translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nfunction rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nfunction scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nfunction fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nfunction fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nfunction fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nfunction fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nfunction fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nfunction normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nfunction projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nfunction str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nfunction frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nfunction multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nvar sub = subtract;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS9tYXQzLmpzPzFmMDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjs7QUFFbkMsTUFBTSxxREFBbUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsY0FBYztBQUN6QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QjtBQUNBLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEI7QUFDQSxhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQjtBQUN0dEI7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC1tYXRyaXgvZXNtL21hdDMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBnbE1hdHJpeCBmcm9tIFwiLi9jb21tb24uanNcIjtcbi8qKlxuICogM3gzIE1hdHJpeFxuICogQG1vZHVsZSBtYXQzXG4gKi9cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGlkZW50aXR5IG1hdDNcbiAqXG4gKiBAcmV0dXJucyB7bWF0M30gYSBuZXcgM3gzIG1hdHJpeFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg5KTtcblxuICBpZiAoZ2xNYXRyaXguQVJSQVlfVFlQRSAhPSBGbG9hdDMyQXJyYXkpIHtcbiAgICBvdXRbMV0gPSAwO1xuICAgIG91dFsyXSA9IDA7XG4gICAgb3V0WzNdID0gMDtcbiAgICBvdXRbNV0gPSAwO1xuICAgIG91dFs2XSA9IDA7XG4gICAgb3V0WzddID0gMDtcbiAgfVxuXG4gIG91dFswXSA9IDE7XG4gIG91dFs0XSA9IDE7XG4gIG91dFs4XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENvcGllcyB0aGUgdXBwZXItbGVmdCAzeDMgdmFsdWVzIGludG8gdGhlIGdpdmVuIG1hdDMuXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyAzeDMgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSAgIHRoZSBzb3VyY2UgNHg0IG1hdHJpeFxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tTWF0NChvdXQsIGEpIHtcbiAgb3V0WzBdID0gYVswXTtcbiAgb3V0WzFdID0gYVsxXTtcbiAgb3V0WzJdID0gYVsyXTtcbiAgb3V0WzNdID0gYVs0XTtcbiAgb3V0WzRdID0gYVs1XTtcbiAgb3V0WzVdID0gYVs2XTtcbiAgb3V0WzZdID0gYVs4XTtcbiAgb3V0WzddID0gYVs5XTtcbiAgb3V0WzhdID0gYVsxMF07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgbWF0MyBpbml0aWFsaXplZCB3aXRoIHZhbHVlcyBmcm9tIGFuIGV4aXN0aW5nIG1hdHJpeFxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIG1hdHJpeCB0byBjbG9uZVxuICogQHJldHVybnMge21hdDN9IGEgbmV3IDN4MyBtYXRyaXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoYSkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoOSk7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIG91dFszXSA9IGFbM107XG4gIG91dFs0XSA9IGFbNF07XG4gIG91dFs1XSA9IGFbNV07XG4gIG91dFs2XSA9IGFbNl07XG4gIG91dFs3XSA9IGFbN107XG4gIG91dFs4XSA9IGFbOF07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENvcHkgdGhlIHZhbHVlcyBmcm9tIG9uZSBtYXQzIHRvIGFub3RoZXJcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY29weShvdXQsIGEpIHtcbiAgb3V0WzBdID0gYVswXTtcbiAgb3V0WzFdID0gYVsxXTtcbiAgb3V0WzJdID0gYVsyXTtcbiAgb3V0WzNdID0gYVszXTtcbiAgb3V0WzRdID0gYVs0XTtcbiAgb3V0WzVdID0gYVs1XTtcbiAgb3V0WzZdID0gYVs2XTtcbiAgb3V0WzddID0gYVs3XTtcbiAgb3V0WzhdID0gYVs4XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlIGEgbmV3IG1hdDMgd2l0aCB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG0wMCBDb21wb25lbnQgaW4gY29sdW1uIDAsIHJvdyAwIHBvc2l0aW9uIChpbmRleCAwKVxuICogQHBhcmFtIHtOdW1iZXJ9IG0wMSBDb21wb25lbnQgaW4gY29sdW1uIDAsIHJvdyAxIHBvc2l0aW9uIChpbmRleCAxKVxuICogQHBhcmFtIHtOdW1iZXJ9IG0wMiBDb21wb25lbnQgaW4gY29sdW1uIDAsIHJvdyAyIHBvc2l0aW9uIChpbmRleCAyKVxuICogQHBhcmFtIHtOdW1iZXJ9IG0xMCBDb21wb25lbnQgaW4gY29sdW1uIDEsIHJvdyAwIHBvc2l0aW9uIChpbmRleCAzKVxuICogQHBhcmFtIHtOdW1iZXJ9IG0xMSBDb21wb25lbnQgaW4gY29sdW1uIDEsIHJvdyAxIHBvc2l0aW9uIChpbmRleCA0KVxuICogQHBhcmFtIHtOdW1iZXJ9IG0xMiBDb21wb25lbnQgaW4gY29sdW1uIDEsIHJvdyAyIHBvc2l0aW9uIChpbmRleCA1KVxuICogQHBhcmFtIHtOdW1iZXJ9IG0yMCBDb21wb25lbnQgaW4gY29sdW1uIDIsIHJvdyAwIHBvc2l0aW9uIChpbmRleCA2KVxuICogQHBhcmFtIHtOdW1iZXJ9IG0yMSBDb21wb25lbnQgaW4gY29sdW1uIDIsIHJvdyAxIHBvc2l0aW9uIChpbmRleCA3KVxuICogQHBhcmFtIHtOdW1iZXJ9IG0yMiBDb21wb25lbnQgaW4gY29sdW1uIDIsIHJvdyAyIHBvc2l0aW9uIChpbmRleCA4KVxuICogQHJldHVybnMge21hdDN9IEEgbmV3IG1hdDNcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVZhbHVlcyhtMDAsIG0wMSwgbTAyLCBtMTAsIG0xMSwgbTEyLCBtMjAsIG0yMSwgbTIyKSB7XG4gIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg5KTtcbiAgb3V0WzBdID0gbTAwO1xuICBvdXRbMV0gPSBtMDE7XG4gIG91dFsyXSA9IG0wMjtcbiAgb3V0WzNdID0gbTEwO1xuICBvdXRbNF0gPSBtMTE7XG4gIG91dFs1XSA9IG0xMjtcbiAgb3V0WzZdID0gbTIwO1xuICBvdXRbN10gPSBtMjE7XG4gIG91dFs4XSA9IG0yMjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IHRoZSBjb21wb25lbnRzIG9mIGEgbWF0MyB0byB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDAgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDEgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggMSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDIgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggMilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTAgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMylcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTEgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggNClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTIgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggNSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjAgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggNilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjEgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggNylcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjIgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggOClcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0KG91dCwgbTAwLCBtMDEsIG0wMiwgbTEwLCBtMTEsIG0xMiwgbTIwLCBtMjEsIG0yMikge1xuICBvdXRbMF0gPSBtMDA7XG4gIG91dFsxXSA9IG0wMTtcbiAgb3V0WzJdID0gbTAyO1xuICBvdXRbM10gPSBtMTA7XG4gIG91dFs0XSA9IG0xMTtcbiAgb3V0WzVdID0gbTEyO1xuICBvdXRbNl0gPSBtMjA7XG4gIG91dFs3XSA9IG0yMTtcbiAgb3V0WzhdID0gbTIyO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTZXQgYSBtYXQzIHRvIHRoZSBpZGVudGl0eSBtYXRyaXhcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGl0eShvdXQpIHtcbiAgb3V0WzBdID0gMTtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gMTtcbiAgb3V0WzVdID0gMDtcbiAgb3V0WzZdID0gMDtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogVHJhbnNwb3NlIHRoZSB2YWx1ZXMgb2YgYSBtYXQzXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zcG9zZShvdXQsIGEpIHtcbiAgLy8gSWYgd2UgYXJlIHRyYW5zcG9zaW5nIG91cnNlbHZlcyB3ZSBjYW4gc2tpcCBhIGZldyBzdGVwcyBidXQgaGF2ZSB0byBjYWNoZSBzb21lIHZhbHVlc1xuICBpZiAob3V0ID09PSBhKSB7XG4gICAgdmFyIGEwMSA9IGFbMV0sXG4gICAgICAgIGEwMiA9IGFbMl0sXG4gICAgICAgIGExMiA9IGFbNV07XG4gICAgb3V0WzFdID0gYVszXTtcbiAgICBvdXRbMl0gPSBhWzZdO1xuICAgIG91dFszXSA9IGEwMTtcbiAgICBvdXRbNV0gPSBhWzddO1xuICAgIG91dFs2XSA9IGEwMjtcbiAgICBvdXRbN10gPSBhMTI7XG4gIH0gZWxzZSB7XG4gICAgb3V0WzBdID0gYVswXTtcbiAgICBvdXRbMV0gPSBhWzNdO1xuICAgIG91dFsyXSA9IGFbNl07XG4gICAgb3V0WzNdID0gYVsxXTtcbiAgICBvdXRbNF0gPSBhWzRdO1xuICAgIG91dFs1XSA9IGFbN107XG4gICAgb3V0WzZdID0gYVsyXTtcbiAgICBvdXRbN10gPSBhWzVdO1xuICAgIG91dFs4XSA9IGFbOF07XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBJbnZlcnRzIGEgbWF0M1xuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnQob3V0LCBhKSB7XG4gIHZhciBhMDAgPSBhWzBdLFxuICAgICAgYTAxID0gYVsxXSxcbiAgICAgIGEwMiA9IGFbMl07XG4gIHZhciBhMTAgPSBhWzNdLFxuICAgICAgYTExID0gYVs0XSxcbiAgICAgIGExMiA9IGFbNV07XG4gIHZhciBhMjAgPSBhWzZdLFxuICAgICAgYTIxID0gYVs3XSxcbiAgICAgIGEyMiA9IGFbOF07XG4gIHZhciBiMDEgPSBhMjIgKiBhMTEgLSBhMTIgKiBhMjE7XG4gIHZhciBiMTEgPSAtYTIyICogYTEwICsgYTEyICogYTIwO1xuICB2YXIgYjIxID0gYTIxICogYTEwIC0gYTExICogYTIwOyAvLyBDYWxjdWxhdGUgdGhlIGRldGVybWluYW50XG5cbiAgdmFyIGRldCA9IGEwMCAqIGIwMSArIGEwMSAqIGIxMSArIGEwMiAqIGIyMTtcblxuICBpZiAoIWRldCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZGV0ID0gMS4wIC8gZGV0O1xuICBvdXRbMF0gPSBiMDEgKiBkZXQ7XG4gIG91dFsxXSA9ICgtYTIyICogYTAxICsgYTAyICogYTIxKSAqIGRldDtcbiAgb3V0WzJdID0gKGExMiAqIGEwMSAtIGEwMiAqIGExMSkgKiBkZXQ7XG4gIG91dFszXSA9IGIxMSAqIGRldDtcbiAgb3V0WzRdID0gKGEyMiAqIGEwMCAtIGEwMiAqIGEyMCkgKiBkZXQ7XG4gIG91dFs1XSA9ICgtYTEyICogYTAwICsgYTAyICogYTEwKSAqIGRldDtcbiAgb3V0WzZdID0gYjIxICogZGV0O1xuICBvdXRbN10gPSAoLWEyMSAqIGEwMCArIGEwMSAqIGEyMCkgKiBkZXQ7XG4gIG91dFs4XSA9IChhMTEgKiBhMDAgLSBhMDEgKiBhMTApICogZGV0O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBhZGp1Z2F0ZSBvZiBhIG1hdDNcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYWRqb2ludChvdXQsIGEpIHtcbiAgdmFyIGEwMCA9IGFbMF0sXG4gICAgICBhMDEgPSBhWzFdLFxuICAgICAgYTAyID0gYVsyXTtcbiAgdmFyIGExMCA9IGFbM10sXG4gICAgICBhMTEgPSBhWzRdLFxuICAgICAgYTEyID0gYVs1XTtcbiAgdmFyIGEyMCA9IGFbNl0sXG4gICAgICBhMjEgPSBhWzddLFxuICAgICAgYTIyID0gYVs4XTtcbiAgb3V0WzBdID0gYTExICogYTIyIC0gYTEyICogYTIxO1xuICBvdXRbMV0gPSBhMDIgKiBhMjEgLSBhMDEgKiBhMjI7XG4gIG91dFsyXSA9IGEwMSAqIGExMiAtIGEwMiAqIGExMTtcbiAgb3V0WzNdID0gYTEyICogYTIwIC0gYTEwICogYTIyO1xuICBvdXRbNF0gPSBhMDAgKiBhMjIgLSBhMDIgKiBhMjA7XG4gIG91dFs1XSA9IGEwMiAqIGExMCAtIGEwMCAqIGExMjtcbiAgb3V0WzZdID0gYTEwICogYTIxIC0gYTExICogYTIwO1xuICBvdXRbN10gPSBhMDEgKiBhMjAgLSBhMDAgKiBhMjE7XG4gIG91dFs4XSA9IGEwMCAqIGExMSAtIGEwMSAqIGExMDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZGV0ZXJtaW5hbnQgb2YgYSBtYXQzXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGRldGVybWluYW50IG9mIGFcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZXJtaW5hbnQoYSkge1xuICB2YXIgYTAwID0gYVswXSxcbiAgICAgIGEwMSA9IGFbMV0sXG4gICAgICBhMDIgPSBhWzJdO1xuICB2YXIgYTEwID0gYVszXSxcbiAgICAgIGExMSA9IGFbNF0sXG4gICAgICBhMTIgPSBhWzVdO1xuICB2YXIgYTIwID0gYVs2XSxcbiAgICAgIGEyMSA9IGFbN10sXG4gICAgICBhMjIgPSBhWzhdO1xuICByZXR1cm4gYTAwICogKGEyMiAqIGExMSAtIGExMiAqIGEyMSkgKyBhMDEgKiAoLWEyMiAqIGExMCArIGExMiAqIGEyMCkgKyBhMDIgKiAoYTIxICogYTEwIC0gYTExICogYTIwKTtcbn1cbi8qKlxuICogTXVsdGlwbGllcyB0d28gbWF0MydzXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHkob3V0LCBhLCBiKSB7XG4gIHZhciBhMDAgPSBhWzBdLFxuICAgICAgYTAxID0gYVsxXSxcbiAgICAgIGEwMiA9IGFbMl07XG4gIHZhciBhMTAgPSBhWzNdLFxuICAgICAgYTExID0gYVs0XSxcbiAgICAgIGExMiA9IGFbNV07XG4gIHZhciBhMjAgPSBhWzZdLFxuICAgICAgYTIxID0gYVs3XSxcbiAgICAgIGEyMiA9IGFbOF07XG4gIHZhciBiMDAgPSBiWzBdLFxuICAgICAgYjAxID0gYlsxXSxcbiAgICAgIGIwMiA9IGJbMl07XG4gIHZhciBiMTAgPSBiWzNdLFxuICAgICAgYjExID0gYls0XSxcbiAgICAgIGIxMiA9IGJbNV07XG4gIHZhciBiMjAgPSBiWzZdLFxuICAgICAgYjIxID0gYls3XSxcbiAgICAgIGIyMiA9IGJbOF07XG4gIG91dFswXSA9IGIwMCAqIGEwMCArIGIwMSAqIGExMCArIGIwMiAqIGEyMDtcbiAgb3V0WzFdID0gYjAwICogYTAxICsgYjAxICogYTExICsgYjAyICogYTIxO1xuICBvdXRbMl0gPSBiMDAgKiBhMDIgKyBiMDEgKiBhMTIgKyBiMDIgKiBhMjI7XG4gIG91dFszXSA9IGIxMCAqIGEwMCArIGIxMSAqIGExMCArIGIxMiAqIGEyMDtcbiAgb3V0WzRdID0gYjEwICogYTAxICsgYjExICogYTExICsgYjEyICogYTIxO1xuICBvdXRbNV0gPSBiMTAgKiBhMDIgKyBiMTEgKiBhMTIgKyBiMTIgKiBhMjI7XG4gIG91dFs2XSA9IGIyMCAqIGEwMCArIGIyMSAqIGExMCArIGIyMiAqIGEyMDtcbiAgb3V0WzddID0gYjIwICogYTAxICsgYjIxICogYTExICsgYjIyICogYTIxO1xuICBvdXRbOF0gPSBiMjAgKiBhMDIgKyBiMjEgKiBhMTIgKyBiMjIgKiBhMjI7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFRyYW5zbGF0ZSBhIG1hdDMgYnkgdGhlIGdpdmVuIHZlY3RvclxuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYSB0aGUgbWF0cml4IHRvIHRyYW5zbGF0ZVxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IHYgdmVjdG9yIHRvIHRyYW5zbGF0ZSBieVxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGUob3V0LCBhLCB2KSB7XG4gIHZhciBhMDAgPSBhWzBdLFxuICAgICAgYTAxID0gYVsxXSxcbiAgICAgIGEwMiA9IGFbMl0sXG4gICAgICBhMTAgPSBhWzNdLFxuICAgICAgYTExID0gYVs0XSxcbiAgICAgIGExMiA9IGFbNV0sXG4gICAgICBhMjAgPSBhWzZdLFxuICAgICAgYTIxID0gYVs3XSxcbiAgICAgIGEyMiA9IGFbOF0sXG4gICAgICB4ID0gdlswXSxcbiAgICAgIHkgPSB2WzFdO1xuICBvdXRbMF0gPSBhMDA7XG4gIG91dFsxXSA9IGEwMTtcbiAgb3V0WzJdID0gYTAyO1xuICBvdXRbM10gPSBhMTA7XG4gIG91dFs0XSA9IGExMTtcbiAgb3V0WzVdID0gYTEyO1xuICBvdXRbNl0gPSB4ICogYTAwICsgeSAqIGExMCArIGEyMDtcbiAgb3V0WzddID0geCAqIGEwMSArIHkgKiBhMTEgKyBhMjE7XG4gIG91dFs4XSA9IHggKiBhMDIgKyB5ICogYTEyICsgYTIyO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGVzIGEgbWF0MyBieSB0aGUgZ2l2ZW4gYW5nbGVcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgdGhlIG1hdHJpeCB0byByb3RhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZShvdXQsIGEsIHJhZCkge1xuICB2YXIgYTAwID0gYVswXSxcbiAgICAgIGEwMSA9IGFbMV0sXG4gICAgICBhMDIgPSBhWzJdLFxuICAgICAgYTEwID0gYVszXSxcbiAgICAgIGExMSA9IGFbNF0sXG4gICAgICBhMTIgPSBhWzVdLFxuICAgICAgYTIwID0gYVs2XSxcbiAgICAgIGEyMSA9IGFbN10sXG4gICAgICBhMjIgPSBhWzhdLFxuICAgICAgcyA9IE1hdGguc2luKHJhZCksXG4gICAgICBjID0gTWF0aC5jb3MocmFkKTtcbiAgb3V0WzBdID0gYyAqIGEwMCArIHMgKiBhMTA7XG4gIG91dFsxXSA9IGMgKiBhMDEgKyBzICogYTExO1xuICBvdXRbMl0gPSBjICogYTAyICsgcyAqIGExMjtcbiAgb3V0WzNdID0gYyAqIGExMCAtIHMgKiBhMDA7XG4gIG91dFs0XSA9IGMgKiBhMTEgLSBzICogYTAxO1xuICBvdXRbNV0gPSBjICogYTEyIC0gcyAqIGEwMjtcbiAgb3V0WzZdID0gYTIwO1xuICBvdXRbN10gPSBhMjE7XG4gIG91dFs4XSA9IGEyMjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2NhbGVzIHRoZSBtYXQzIGJ5IHRoZSBkaW1lbnNpb25zIGluIHRoZSBnaXZlbiB2ZWMyXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIHRoZSBtYXRyaXggdG8gcm90YXRlXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gdiB0aGUgdmVjMiB0byBzY2FsZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKiovXG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZShvdXQsIGEsIHYpIHtcbiAgdmFyIHggPSB2WzBdLFxuICAgICAgeSA9IHZbMV07XG4gIG91dFswXSA9IHggKiBhWzBdO1xuICBvdXRbMV0gPSB4ICogYVsxXTtcbiAgb3V0WzJdID0geCAqIGFbMl07XG4gIG91dFszXSA9IHkgKiBhWzNdO1xuICBvdXRbNF0gPSB5ICogYVs0XTtcbiAgb3V0WzVdID0geSAqIGFbNV07XG4gIG91dFs2XSA9IGFbNl07XG4gIG91dFs3XSA9IGFbN107XG4gIG91dFs4XSA9IGFbOF07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIHZlY3RvciB0cmFuc2xhdGlvblxuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDMuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0My50cmFuc2xhdGUoZGVzdCwgZGVzdCwgdmVjKTtcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCBtYXQzIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gdiBUcmFuc2xhdGlvbiB2ZWN0b3JcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVRyYW5zbGF0aW9uKG91dCwgdikge1xuICBvdXRbMF0gPSAxO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSAxO1xuICBvdXRbNV0gPSAwO1xuICBvdXRbNl0gPSB2WzBdO1xuICBvdXRbN10gPSB2WzFdO1xuICBvdXRbOF0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSBnaXZlbiBhbmdsZVxuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDMuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0My5yb3RhdGUoZGVzdCwgZGVzdCwgcmFkKTtcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCBtYXQzIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUm90YXRpb24ob3V0LCByYWQpIHtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQpLFxuICAgICAgYyA9IE1hdGguY29zKHJhZCk7XG4gIG91dFswXSA9IGM7XG4gIG91dFsxXSA9IHM7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IC1zO1xuICBvdXRbNF0gPSBjO1xuICBvdXRbNV0gPSAwO1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSB2ZWN0b3Igc2NhbGluZ1xuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDMuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0My5zY2FsZShkZXN0LCBkZXN0LCB2ZWMpO1xuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IG1hdDMgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSB2IFNjYWxpbmcgdmVjdG9yXG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21TY2FsaW5nKG91dCwgdikge1xuICBvdXRbMF0gPSB2WzBdO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSB2WzFdO1xuICBvdXRbNV0gPSAwO1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBmcm9tIGEgbWF0MmQgaW50byBhIG1hdDNcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBhIHRoZSBtYXRyaXggdG8gY29weVxuICogQHJldHVybnMge21hdDN9IG91dFxuICoqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbU1hdDJkKG91dCwgYSkge1xuICBvdXRbMF0gPSBhWzBdO1xuICBvdXRbMV0gPSBhWzFdO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSBhWzJdO1xuICBvdXRbNF0gPSBhWzNdO1xuICBvdXRbNV0gPSAwO1xuICBvdXRbNl0gPSBhWzRdO1xuICBvdXRbN10gPSBhWzVdO1xuICBvdXRbOF0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIGEgM3gzIG1hdHJpeCBmcm9tIHRoZSBnaXZlbiBxdWF0ZXJuaW9uXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgbWF0MyByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IHEgUXVhdGVybmlvbiB0byBjcmVhdGUgbWF0cml4IGZyb21cbiAqXG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21RdWF0KG91dCwgcSkge1xuICB2YXIgeCA9IHFbMF0sXG4gICAgICB5ID0gcVsxXSxcbiAgICAgIHogPSBxWzJdLFxuICAgICAgdyA9IHFbM107XG4gIHZhciB4MiA9IHggKyB4O1xuICB2YXIgeTIgPSB5ICsgeTtcbiAgdmFyIHoyID0geiArIHo7XG4gIHZhciB4eCA9IHggKiB4MjtcbiAgdmFyIHl4ID0geSAqIHgyO1xuICB2YXIgeXkgPSB5ICogeTI7XG4gIHZhciB6eCA9IHogKiB4MjtcbiAgdmFyIHp5ID0geiAqIHkyO1xuICB2YXIgenogPSB6ICogejI7XG4gIHZhciB3eCA9IHcgKiB4MjtcbiAgdmFyIHd5ID0gdyAqIHkyO1xuICB2YXIgd3ogPSB3ICogejI7XG4gIG91dFswXSA9IDEgLSB5eSAtIHp6O1xuICBvdXRbM10gPSB5eCAtIHd6O1xuICBvdXRbNl0gPSB6eCArIHd5O1xuICBvdXRbMV0gPSB5eCArIHd6O1xuICBvdXRbNF0gPSAxIC0geHggLSB6ejtcbiAgb3V0WzddID0genkgLSB3eDtcbiAgb3V0WzJdID0genggLSB3eTtcbiAgb3V0WzVdID0genkgKyB3eDtcbiAgb3V0WzhdID0gMSAtIHh4IC0geXk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgYSAzeDMgbm9ybWFsIG1hdHJpeCAodHJhbnNwb3NlIGludmVyc2UpIGZyb20gdGhlIDR4NCBtYXRyaXhcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCBtYXQzIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSBNYXQ0IHRvIGRlcml2ZSB0aGUgbm9ybWFsIG1hdHJpeCBmcm9tXG4gKlxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxGcm9tTWF0NChvdXQsIGEpIHtcbiAgdmFyIGEwMCA9IGFbMF0sXG4gICAgICBhMDEgPSBhWzFdLFxuICAgICAgYTAyID0gYVsyXSxcbiAgICAgIGEwMyA9IGFbM107XG4gIHZhciBhMTAgPSBhWzRdLFxuICAgICAgYTExID0gYVs1XSxcbiAgICAgIGExMiA9IGFbNl0sXG4gICAgICBhMTMgPSBhWzddO1xuICB2YXIgYTIwID0gYVs4XSxcbiAgICAgIGEyMSA9IGFbOV0sXG4gICAgICBhMjIgPSBhWzEwXSxcbiAgICAgIGEyMyA9IGFbMTFdO1xuICB2YXIgYTMwID0gYVsxMl0sXG4gICAgICBhMzEgPSBhWzEzXSxcbiAgICAgIGEzMiA9IGFbMTRdLFxuICAgICAgYTMzID0gYVsxNV07XG4gIHZhciBiMDAgPSBhMDAgKiBhMTEgLSBhMDEgKiBhMTA7XG4gIHZhciBiMDEgPSBhMDAgKiBhMTIgLSBhMDIgKiBhMTA7XG4gIHZhciBiMDIgPSBhMDAgKiBhMTMgLSBhMDMgKiBhMTA7XG4gIHZhciBiMDMgPSBhMDEgKiBhMTIgLSBhMDIgKiBhMTE7XG4gIHZhciBiMDQgPSBhMDEgKiBhMTMgLSBhMDMgKiBhMTE7XG4gIHZhciBiMDUgPSBhMDIgKiBhMTMgLSBhMDMgKiBhMTI7XG4gIHZhciBiMDYgPSBhMjAgKiBhMzEgLSBhMjEgKiBhMzA7XG4gIHZhciBiMDcgPSBhMjAgKiBhMzIgLSBhMjIgKiBhMzA7XG4gIHZhciBiMDggPSBhMjAgKiBhMzMgLSBhMjMgKiBhMzA7XG4gIHZhciBiMDkgPSBhMjEgKiBhMzIgLSBhMjIgKiBhMzE7XG4gIHZhciBiMTAgPSBhMjEgKiBhMzMgLSBhMjMgKiBhMzE7XG4gIHZhciBiMTEgPSBhMjIgKiBhMzMgLSBhMjMgKiBhMzI7IC8vIENhbGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnRcblxuICB2YXIgZGV0ID0gYjAwICogYjExIC0gYjAxICogYjEwICsgYjAyICogYjA5ICsgYjAzICogYjA4IC0gYjA0ICogYjA3ICsgYjA1ICogYjA2O1xuXG4gIGlmICghZGV0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBkZXQgPSAxLjAgLyBkZXQ7XG4gIG91dFswXSA9IChhMTEgKiBiMTEgLSBhMTIgKiBiMTAgKyBhMTMgKiBiMDkpICogZGV0O1xuICBvdXRbMV0gPSAoYTEyICogYjA4IC0gYTEwICogYjExIC0gYTEzICogYjA3KSAqIGRldDtcbiAgb3V0WzJdID0gKGExMCAqIGIxMCAtIGExMSAqIGIwOCArIGExMyAqIGIwNikgKiBkZXQ7XG4gIG91dFszXSA9IChhMDIgKiBiMTAgLSBhMDEgKiBiMTEgLSBhMDMgKiBiMDkpICogZGV0O1xuICBvdXRbNF0gPSAoYTAwICogYjExIC0gYTAyICogYjA4ICsgYTAzICogYjA3KSAqIGRldDtcbiAgb3V0WzVdID0gKGEwMSAqIGIwOCAtIGEwMCAqIGIxMCAtIGEwMyAqIGIwNikgKiBkZXQ7XG4gIG91dFs2XSA9IChhMzEgKiBiMDUgLSBhMzIgKiBiMDQgKyBhMzMgKiBiMDMpICogZGV0O1xuICBvdXRbN10gPSAoYTMyICogYjAyIC0gYTMwICogYjA1IC0gYTMzICogYjAxKSAqIGRldDtcbiAgb3V0WzhdID0gKGEzMCAqIGIwNCAtIGEzMSAqIGIwMiArIGEzMyAqIGIwMCkgKiBkZXQ7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIDJEIHByb2plY3Rpb24gbWF0cml4IHdpdGggdGhlIGdpdmVuIGJvdW5kc1xuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IG1hdDMgZnJ1c3R1bSBtYXRyaXggd2lsbCBiZSB3cml0dGVuIGludG9cbiAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCBXaWR0aCBvZiB5b3VyIGdsIGNvbnRleHRcbiAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQgSGVpZ2h0IG9mIGdsIGNvbnRleHRcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdGlvbihvdXQsIHdpZHRoLCBoZWlnaHQpIHtcbiAgb3V0WzBdID0gMiAvIHdpZHRoO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSAtMiAvIGhlaWdodDtcbiAgb3V0WzVdID0gMDtcbiAgb3V0WzZdID0gLTE7XG4gIG91dFs3XSA9IDE7XG4gIG91dFs4XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtYXQzXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgbWF0cml4IHRvIHJlcHJlc2VudCBhcyBhIHN0cmluZ1xuICogQHJldHVybnMge1N0cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtYXRyaXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyKGEpIHtcbiAgcmV0dXJuIFwibWF0MyhcIiArIGFbMF0gKyBcIiwgXCIgKyBhWzFdICsgXCIsIFwiICsgYVsyXSArIFwiLCBcIiArIGFbM10gKyBcIiwgXCIgKyBhWzRdICsgXCIsIFwiICsgYVs1XSArIFwiLCBcIiArIGFbNl0gKyBcIiwgXCIgKyBhWzddICsgXCIsIFwiICsgYVs4XSArIFwiKVwiO1xufVxuLyoqXG4gKiBSZXR1cm5zIEZyb2Jlbml1cyBub3JtIG9mIGEgbWF0M1xuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIHRoZSBtYXRyaXggdG8gY2FsY3VsYXRlIEZyb2Jlbml1cyBub3JtIG9mXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBGcm9iZW5pdXMgbm9ybVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9iKGEpIHtcbiAgcmV0dXJuIE1hdGguaHlwb3QoYVswXSwgYVsxXSwgYVsyXSwgYVszXSwgYVs0XSwgYVs1XSwgYVs2XSwgYVs3XSwgYVs4XSk7XG59XG4vKipcbiAqIEFkZHMgdHdvIG1hdDMnc1xuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZChvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSArIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gKyBiWzFdO1xuICBvdXRbMl0gPSBhWzJdICsgYlsyXTtcbiAgb3V0WzNdID0gYVszXSArIGJbM107XG4gIG91dFs0XSA9IGFbNF0gKyBiWzRdO1xuICBvdXRbNV0gPSBhWzVdICsgYls1XTtcbiAgb3V0WzZdID0gYVs2XSArIGJbNl07XG4gIG91dFs3XSA9IGFbN10gKyBiWzddO1xuICBvdXRbOF0gPSBhWzhdICsgYls4XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU3VidHJhY3RzIG1hdHJpeCBiIGZyb20gbWF0cml4IGFcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJ0cmFjdChvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAtIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gLSBiWzFdO1xuICBvdXRbMl0gPSBhWzJdIC0gYlsyXTtcbiAgb3V0WzNdID0gYVszXSAtIGJbM107XG4gIG91dFs0XSA9IGFbNF0gLSBiWzRdO1xuICBvdXRbNV0gPSBhWzVdIC0gYls1XTtcbiAgb3V0WzZdID0gYVs2XSAtIGJbNl07XG4gIG91dFs3XSA9IGFbN10gLSBiWzddO1xuICBvdXRbOF0gPSBhWzhdIC0gYls4XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTXVsdGlwbHkgZWFjaCBlbGVtZW50IG9mIHRoZSBtYXRyaXggYnkgYSBzY2FsYXIuXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIHRoZSBtYXRyaXggdG8gc2NhbGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBiIGFtb3VudCB0byBzY2FsZSB0aGUgbWF0cml4J3MgZWxlbWVudHMgYnlcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXIob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKiBiO1xuICBvdXRbMV0gPSBhWzFdICogYjtcbiAgb3V0WzJdID0gYVsyXSAqIGI7XG4gIG91dFszXSA9IGFbM10gKiBiO1xuICBvdXRbNF0gPSBhWzRdICogYjtcbiAgb3V0WzVdID0gYVs1XSAqIGI7XG4gIG91dFs2XSA9IGFbNl0gKiBiO1xuICBvdXRbN10gPSBhWzddICogYjtcbiAgb3V0WzhdID0gYVs4XSAqIGI7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEFkZHMgdHdvIG1hdDMncyBhZnRlciBtdWx0aXBseWluZyBlYWNoIGVsZW1lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGJ5IGEgc2NhbGFyIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcGFyYW0ge051bWJlcn0gc2NhbGUgdGhlIGFtb3VudCB0byBzY2FsZSBiJ3MgZWxlbWVudHMgYnkgYmVmb3JlIGFkZGluZ1xuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseVNjYWxhckFuZEFkZChvdXQsIGEsIGIsIHNjYWxlKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdICogc2NhbGU7XG4gIG91dFsxXSA9IGFbMV0gKyBiWzFdICogc2NhbGU7XG4gIG91dFsyXSA9IGFbMl0gKyBiWzJdICogc2NhbGU7XG4gIG91dFszXSA9IGFbM10gKyBiWzNdICogc2NhbGU7XG4gIG91dFs0XSA9IGFbNF0gKyBiWzRdICogc2NhbGU7XG4gIG91dFs1XSA9IGFbNV0gKyBiWzVdICogc2NhbGU7XG4gIG91dFs2XSA9IGFbNl0gKyBiWzZdICogc2NhbGU7XG4gIG91dFs3XSA9IGFbN10gKyBiWzddICogc2NhbGU7XG4gIG91dFs4XSA9IGFbOF0gKyBiWzhdICogc2NhbGU7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIG1hdHJpY2VzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbiAod2hlbiBjb21wYXJlZCB3aXRoID09PSlcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYSBUaGUgZmlyc3QgbWF0cml4LlxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGIgVGhlIHNlY29uZCBtYXRyaXguXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgbWF0cmljZXMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGV4YWN0RXF1YWxzKGEsIGIpIHtcbiAgcmV0dXJuIGFbMF0gPT09IGJbMF0gJiYgYVsxXSA9PT0gYlsxXSAmJiBhWzJdID09PSBiWzJdICYmIGFbM10gPT09IGJbM10gJiYgYVs0XSA9PT0gYls0XSAmJiBhWzVdID09PSBiWzVdICYmIGFbNl0gPT09IGJbNl0gJiYgYVs3XSA9PT0gYls3XSAmJiBhWzhdID09PSBiWzhdO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZlIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24uXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgVGhlIGZpcnN0IG1hdHJpeC5cbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBiIFRoZSBzZWNvbmQgbWF0cml4LlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbHMoYSwgYikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdLFxuICAgICAgYTQgPSBhWzRdLFxuICAgICAgYTUgPSBhWzVdLFxuICAgICAgYTYgPSBhWzZdLFxuICAgICAgYTcgPSBhWzddLFxuICAgICAgYTggPSBhWzhdO1xuICB2YXIgYjAgPSBiWzBdLFxuICAgICAgYjEgPSBiWzFdLFxuICAgICAgYjIgPSBiWzJdLFxuICAgICAgYjMgPSBiWzNdLFxuICAgICAgYjQgPSBiWzRdLFxuICAgICAgYjUgPSBiWzVdLFxuICAgICAgYjYgPSBiWzZdLFxuICAgICAgYjcgPSBiWzddLFxuICAgICAgYjggPSBiWzhdO1xuICByZXR1cm4gTWF0aC5hYnMoYTAgLSBiMCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTApLCBNYXRoLmFicyhiMCkpICYmIE1hdGguYWJzKGExIC0gYjEpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExKSwgTWF0aC5hYnMoYjEpKSAmJiBNYXRoLmFicyhhMiAtIGIyKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMiksIE1hdGguYWJzKGIyKSkgJiYgTWF0aC5hYnMoYTMgLSBiMykgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTMpLCBNYXRoLmFicyhiMykpICYmIE1hdGguYWJzKGE0IC0gYjQpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE0KSwgTWF0aC5hYnMoYjQpKSAmJiBNYXRoLmFicyhhNSAtIGI1KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNSksIE1hdGguYWJzKGI1KSkgJiYgTWF0aC5hYnMoYTYgLSBiNikgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTYpLCBNYXRoLmFicyhiNikpICYmIE1hdGguYWJzKGE3IC0gYjcpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE3KSwgTWF0aC5hYnMoYjcpKSAmJiBNYXRoLmFicyhhOCAtIGI4KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhOCksIE1hdGguYWJzKGI4KSk7XG59XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgbWF0My5tdWx0aXBseX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgbXVsID0gbXVsdGlwbHk7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgbWF0My5zdWJ0cmFjdH1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgc3ViID0gc3VidHJhY3Q7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-matrix/esm/mat3.js\n"); /***/ }), /***/ "./node_modules/gl-matrix/esm/mat4.js": /*!********************************************!*\ !*** ./node_modules/gl-matrix/esm/mat4.js ***! \********************************************/ /*! exports provided: create, clone, copy, fromValues, set, identity, transpose, invert, adjoint, determinant, multiply, translate, scale, rotate, rotateX, rotateY, rotateZ, fromTranslation, fromScaling, fromRotation, fromXRotation, fromYRotation, fromZRotation, fromRotationTranslation, fromQuat2, getTranslation, getScaling, getRotation, fromRotationTranslationScale, fromRotationTranslationScaleOrigin, fromQuat, frustum, perspectiveNO, perspective, perspectiveZO, perspectiveFromFieldOfView, orthoNO, ortho, orthoZO, lookAt, targetTo, str, frob, add, subtract, multiplyScalar, multiplyScalarAndAdd, exactEquals, equals, mul, sub */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return transpose; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"adjoint\", function() { return adjoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"determinant\", function() { return determinant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateX\", function() { return rotateX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateY\", function() { return rotateY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateZ\", function() { return rotateZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromTranslation\", function() { return fromTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromScaling\", function() { return fromScaling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotation\", function() { return fromRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromXRotation\", function() { return fromXRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromYRotation\", function() { return fromYRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromZRotation\", function() { return fromZRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotationTranslation\", function() { return fromRotationTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromQuat2\", function() { return fromQuat2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTranslation\", function() { return getTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getScaling\", function() { return getScaling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRotation\", function() { return getRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotationTranslationScale\", function() { return fromRotationTranslationScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotationTranslationScaleOrigin\", function() { return fromRotationTranslationScaleOrigin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromQuat\", function() { return fromQuat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"frustum\", function() { return frustum; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"perspectiveNO\", function() { return perspectiveNO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"perspective\", function() { return perspective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"perspectiveZO\", function() { return perspectiveZO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"perspectiveFromFieldOfView\", function() { return perspectiveFromFieldOfView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"orthoNO\", function() { return orthoNO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ortho\", function() { return ortho; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"orthoZO\", function() { return orthoZO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lookAt\", function() { return lookAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"targetTo\", function() { return targetTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"frob\", function() { return frob; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalar\", function() { return multiplyScalar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalarAndAdd\", function() { return multiplyScalarAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](16);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nfunction fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nfunction set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nfunction determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nfunction translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nfunction scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nfunction rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nfunction fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nfunction fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nfunction fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nfunction fromQuat2(out, a) {\n var translation = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nfunction getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nfunction getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nfunction getRotation(out, mat) {\n var scaling = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nfunction fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nfunction perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nvar perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nfunction perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nvar ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nfunction lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] && Math.abs(eyey - centery) < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] && Math.abs(eyez - centerz) < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nfunction targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nfunction str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nfunction frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nfunction multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nvar sub = subtract;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS9tYXQ0LmpzPzY1YTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1COztBQUVuQyxNQUFNLHFEQUFtQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsWUFBWSxrREFBZ0I7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjOztBQUVkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsWUFBWSxrREFBZ0I7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUVaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsTUFBTTtBQUNqQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGNBQWM7QUFDekIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1Asd0JBQXdCLHFEQUFtQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdEOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxLQUFLO0FBQ2pCLFlBQVksYUFBYTtBQUN6QixZQUFZLEtBQUs7QUFDakI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxLQUFLO0FBQ2pCLFlBQVksYUFBYTtBQUN6QixZQUFZLEtBQUs7QUFDakI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsWUFBWSxLQUFLO0FBQ2pCOztBQUVPO0FBQ1Asb0JBQW9CLHFEQUFtQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsTUFBTTtBQUNqQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QjtBQUNBLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsa0RBQWdCLCtCQUErQixrREFBZ0IsK0JBQStCLGtEQUFnQjtBQUMvSTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQix1RUFBdUUsa0RBQWdCLHlFQUF5RSxrREFBZ0IseUVBQXlFLGtEQUFnQix5RUFBeUUsa0RBQWdCLHlFQUF5RSxrREFBZ0IseUVBQXlFLGtEQUFnQjtBQUMvekM7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC1tYXRyaXgvZXNtL21hdDQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBnbE1hdHJpeCBmcm9tIFwiLi9jb21tb24uanNcIjtcbi8qKlxuICogNHg0IE1hdHJpeDxicj5Gb3JtYXQ6IGNvbHVtbi1tYWpvciwgd2hlbiB0eXBlZCBvdXQgaXQgbG9va3MgbGlrZSByb3ctbWFqb3I8YnI+VGhlIG1hdHJpY2VzIGFyZSBiZWluZyBwb3N0IG11bHRpcGxpZWQuXG4gKiBAbW9kdWxlIG1hdDRcbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaWRlbnRpdHkgbWF0NFxuICpcbiAqIEByZXR1cm5zIHttYXQ0fSBhIG5ldyA0eDQgbWF0cml4XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDE2KTtcblxuICBpZiAoZ2xNYXRyaXguQVJSQVlfVFlQRSAhPSBGbG9hdDMyQXJyYXkpIHtcbiAgICBvdXRbMV0gPSAwO1xuICAgIG91dFsyXSA9IDA7XG4gICAgb3V0WzNdID0gMDtcbiAgICBvdXRbNF0gPSAwO1xuICAgIG91dFs2XSA9IDA7XG4gICAgb3V0WzddID0gMDtcbiAgICBvdXRbOF0gPSAwO1xuICAgIG91dFs5XSA9IDA7XG4gICAgb3V0WzExXSA9IDA7XG4gICAgb3V0WzEyXSA9IDA7XG4gICAgb3V0WzEzXSA9IDA7XG4gICAgb3V0WzE0XSA9IDA7XG4gIH1cblxuICBvdXRbMF0gPSAxO1xuICBvdXRbNV0gPSAxO1xuICBvdXRbMTBdID0gMTtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgbWF0NCBpbml0aWFsaXplZCB3aXRoIHZhbHVlcyBmcm9tIGFuIGV4aXN0aW5nIG1hdHJpeFxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIG1hdHJpeCB0byBjbG9uZVxuICogQHJldHVybnMge21hdDR9IGEgbmV3IDR4NCBtYXRyaXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoYSkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMTYpO1xuICBvdXRbMF0gPSBhWzBdO1xuICBvdXRbMV0gPSBhWzFdO1xuICBvdXRbMl0gPSBhWzJdO1xuICBvdXRbM10gPSBhWzNdO1xuICBvdXRbNF0gPSBhWzRdO1xuICBvdXRbNV0gPSBhWzVdO1xuICBvdXRbNl0gPSBhWzZdO1xuICBvdXRbN10gPSBhWzddO1xuICBvdXRbOF0gPSBhWzhdO1xuICBvdXRbOV0gPSBhWzldO1xuICBvdXRbMTBdID0gYVsxMF07XG4gIG91dFsxMV0gPSBhWzExXTtcbiAgb3V0WzEyXSA9IGFbMTJdO1xuICBvdXRbMTNdID0gYVsxM107XG4gIG91dFsxNF0gPSBhWzE0XTtcbiAgb3V0WzE1XSA9IGFbMTVdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgbWF0NCB0byBhbm90aGVyXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHkob3V0LCBhKSB7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIG91dFszXSA9IGFbM107XG4gIG91dFs0XSA9IGFbNF07XG4gIG91dFs1XSA9IGFbNV07XG4gIG91dFs2XSA9IGFbNl07XG4gIG91dFs3XSA9IGFbN107XG4gIG91dFs4XSA9IGFbOF07XG4gIG91dFs5XSA9IGFbOV07XG4gIG91dFsxMF0gPSBhWzEwXTtcbiAgb3V0WzExXSA9IGFbMTFdO1xuICBvdXRbMTJdID0gYVsxMl07XG4gIG91dFsxM10gPSBhWzEzXTtcbiAgb3V0WzE0XSA9IGFbMTRdO1xuICBvdXRbMTVdID0gYVsxNV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZSBhIG5ldyBtYXQ0IHdpdGggdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDAgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDEgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggMSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDIgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggMilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDMgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMyBwb3NpdGlvbiAoaW5kZXggMylcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTAgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggNClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTEgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggNSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTIgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggNilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTMgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMyBwb3NpdGlvbiAoaW5kZXggNylcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjAgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggOClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjEgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggOSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjIgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggMTApXG4gKiBAcGFyYW0ge051bWJlcn0gbTIzIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDMgcG9zaXRpb24gKGluZGV4IDExKVxuICogQHBhcmFtIHtOdW1iZXJ9IG0zMCBDb21wb25lbnQgaW4gY29sdW1uIDMsIHJvdyAwIHBvc2l0aW9uIChpbmRleCAxMilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMzEgQ29tcG9uZW50IGluIGNvbHVtbiAzLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggMTMpXG4gKiBAcGFyYW0ge051bWJlcn0gbTMyIENvbXBvbmVudCBpbiBjb2x1bW4gMywgcm93IDIgcG9zaXRpb24gKGluZGV4IDE0KVxuICogQHBhcmFtIHtOdW1iZXJ9IG0zMyBDb21wb25lbnQgaW4gY29sdW1uIDMsIHJvdyAzIHBvc2l0aW9uIChpbmRleCAxNSlcbiAqIEByZXR1cm5zIHttYXQ0fSBBIG5ldyBtYXQ0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21WYWx1ZXMobTAwLCBtMDEsIG0wMiwgbTAzLCBtMTAsIG0xMSwgbTEyLCBtMTMsIG0yMCwgbTIxLCBtMjIsIG0yMywgbTMwLCBtMzEsIG0zMiwgbTMzKSB7XG4gIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSgxNik7XG4gIG91dFswXSA9IG0wMDtcbiAgb3V0WzFdID0gbTAxO1xuICBvdXRbMl0gPSBtMDI7XG4gIG91dFszXSA9IG0wMztcbiAgb3V0WzRdID0gbTEwO1xuICBvdXRbNV0gPSBtMTE7XG4gIG91dFs2XSA9IG0xMjtcbiAgb3V0WzddID0gbTEzO1xuICBvdXRbOF0gPSBtMjA7XG4gIG91dFs5XSA9IG0yMTtcbiAgb3V0WzEwXSA9IG0yMjtcbiAgb3V0WzExXSA9IG0yMztcbiAgb3V0WzEyXSA9IG0zMDtcbiAgb3V0WzEzXSA9IG0zMTtcbiAgb3V0WzE0XSA9IG0zMjtcbiAgb3V0WzE1XSA9IG0zMztcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IHRoZSBjb21wb25lbnRzIG9mIGEgbWF0NCB0byB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDAgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDEgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggMSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDIgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggMilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDMgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMyBwb3NpdGlvbiAoaW5kZXggMylcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTAgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggNClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTEgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggNSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTIgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggNilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTMgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMyBwb3NpdGlvbiAoaW5kZXggNylcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjAgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggOClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjEgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggOSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjIgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggMTApXG4gKiBAcGFyYW0ge051bWJlcn0gbTIzIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDMgcG9zaXRpb24gKGluZGV4IDExKVxuICogQHBhcmFtIHtOdW1iZXJ9IG0zMCBDb21wb25lbnQgaW4gY29sdW1uIDMsIHJvdyAwIHBvc2l0aW9uIChpbmRleCAxMilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMzEgQ29tcG9uZW50IGluIGNvbHVtbiAzLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggMTMpXG4gKiBAcGFyYW0ge051bWJlcn0gbTMyIENvbXBvbmVudCBpbiBjb2x1bW4gMywgcm93IDIgcG9zaXRpb24gKGluZGV4IDE0KVxuICogQHBhcmFtIHtOdW1iZXJ9IG0zMyBDb21wb25lbnQgaW4gY29sdW1uIDMsIHJvdyAzIHBvc2l0aW9uIChpbmRleCAxNSlcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0KG91dCwgbTAwLCBtMDEsIG0wMiwgbTAzLCBtMTAsIG0xMSwgbTEyLCBtMTMsIG0yMCwgbTIxLCBtMjIsIG0yMywgbTMwLCBtMzEsIG0zMiwgbTMzKSB7XG4gIG91dFswXSA9IG0wMDtcbiAgb3V0WzFdID0gbTAxO1xuICBvdXRbMl0gPSBtMDI7XG4gIG91dFszXSA9IG0wMztcbiAgb3V0WzRdID0gbTEwO1xuICBvdXRbNV0gPSBtMTE7XG4gIG91dFs2XSA9IG0xMjtcbiAgb3V0WzddID0gbTEzO1xuICBvdXRbOF0gPSBtMjA7XG4gIG91dFs5XSA9IG0yMTtcbiAgb3V0WzEwXSA9IG0yMjtcbiAgb3V0WzExXSA9IG0yMztcbiAgb3V0WzEyXSA9IG0zMDtcbiAgb3V0WzEzXSA9IG0zMTtcbiAgb3V0WzE0XSA9IG0zMjtcbiAgb3V0WzE1XSA9IG0zMztcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IGEgbWF0NCB0byB0aGUgaWRlbnRpdHkgbWF0cml4XG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpdHkob3V0KSB7XG4gIG91dFswXSA9IDE7XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9IDA7XG4gIG91dFs1XSA9IDE7XG4gIG91dFs2XSA9IDA7XG4gIG91dFs3XSA9IDA7XG4gIG91dFs4XSA9IDA7XG4gIG91dFs5XSA9IDA7XG4gIG91dFsxMF0gPSAxO1xuICBvdXRbMTFdID0gMDtcbiAgb3V0WzEyXSA9IDA7XG4gIG91dFsxM10gPSAwO1xuICBvdXRbMTRdID0gMDtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFRyYW5zcG9zZSB0aGUgdmFsdWVzIG9mIGEgbWF0NFxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2Uob3V0LCBhKSB7XG4gIC8vIElmIHdlIGFyZSB0cmFuc3Bvc2luZyBvdXJzZWx2ZXMgd2UgY2FuIHNraXAgYSBmZXcgc3RlcHMgYnV0IGhhdmUgdG8gY2FjaGUgc29tZSB2YWx1ZXNcbiAgaWYgKG91dCA9PT0gYSkge1xuICAgIHZhciBhMDEgPSBhWzFdLFxuICAgICAgICBhMDIgPSBhWzJdLFxuICAgICAgICBhMDMgPSBhWzNdO1xuICAgIHZhciBhMTIgPSBhWzZdLFxuICAgICAgICBhMTMgPSBhWzddO1xuICAgIHZhciBhMjMgPSBhWzExXTtcbiAgICBvdXRbMV0gPSBhWzRdO1xuICAgIG91dFsyXSA9IGFbOF07XG4gICAgb3V0WzNdID0gYVsxMl07XG4gICAgb3V0WzRdID0gYTAxO1xuICAgIG91dFs2XSA9IGFbOV07XG4gICAgb3V0WzddID0gYVsxM107XG4gICAgb3V0WzhdID0gYTAyO1xuICAgIG91dFs5XSA9IGExMjtcbiAgICBvdXRbMTFdID0gYVsxNF07XG4gICAgb3V0WzEyXSA9IGEwMztcbiAgICBvdXRbMTNdID0gYTEzO1xuICAgIG91dFsxNF0gPSBhMjM7XG4gIH0gZWxzZSB7XG4gICAgb3V0WzBdID0gYVswXTtcbiAgICBvdXRbMV0gPSBhWzRdO1xuICAgIG91dFsyXSA9IGFbOF07XG4gICAgb3V0WzNdID0gYVsxMl07XG4gICAgb3V0WzRdID0gYVsxXTtcbiAgICBvdXRbNV0gPSBhWzVdO1xuICAgIG91dFs2XSA9IGFbOV07XG4gICAgb3V0WzddID0gYVsxM107XG4gICAgb3V0WzhdID0gYVsyXTtcbiAgICBvdXRbOV0gPSBhWzZdO1xuICAgIG91dFsxMF0gPSBhWzEwXTtcbiAgICBvdXRbMTFdID0gYVsxNF07XG4gICAgb3V0WzEyXSA9IGFbM107XG4gICAgb3V0WzEzXSA9IGFbN107XG4gICAgb3V0WzE0XSA9IGFbMTFdO1xuICAgIG91dFsxNV0gPSBhWzE1XTtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEludmVydHMgYSBtYXQ0XG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGludmVydChvdXQsIGEpIHtcbiAgdmFyIGEwMCA9IGFbMF0sXG4gICAgICBhMDEgPSBhWzFdLFxuICAgICAgYTAyID0gYVsyXSxcbiAgICAgIGEwMyA9IGFbM107XG4gIHZhciBhMTAgPSBhWzRdLFxuICAgICAgYTExID0gYVs1XSxcbiAgICAgIGExMiA9IGFbNl0sXG4gICAgICBhMTMgPSBhWzddO1xuICB2YXIgYTIwID0gYVs4XSxcbiAgICAgIGEyMSA9IGFbOV0sXG4gICAgICBhMjIgPSBhWzEwXSxcbiAgICAgIGEyMyA9IGFbMTFdO1xuICB2YXIgYTMwID0gYVsxMl0sXG4gICAgICBhMzEgPSBhWzEzXSxcbiAgICAgIGEzMiA9IGFbMTRdLFxuICAgICAgYTMzID0gYVsxNV07XG4gIHZhciBiMDAgPSBhMDAgKiBhMTEgLSBhMDEgKiBhMTA7XG4gIHZhciBiMDEgPSBhMDAgKiBhMTIgLSBhMDIgKiBhMTA7XG4gIHZhciBiMDIgPSBhMDAgKiBhMTMgLSBhMDMgKiBhMTA7XG4gIHZhciBiMDMgPSBhMDEgKiBhMTIgLSBhMDIgKiBhMTE7XG4gIHZhciBiMDQgPSBhMDEgKiBhMTMgLSBhMDMgKiBhMTE7XG4gIHZhciBiMDUgPSBhMDIgKiBhMTMgLSBhMDMgKiBhMTI7XG4gIHZhciBiMDYgPSBhMjAgKiBhMzEgLSBhMjEgKiBhMzA7XG4gIHZhciBiMDcgPSBhMjAgKiBhMzIgLSBhMjIgKiBhMzA7XG4gIHZhciBiMDggPSBhMjAgKiBhMzMgLSBhMjMgKiBhMzA7XG4gIHZhciBiMDkgPSBhMjEgKiBhMzIgLSBhMjIgKiBhMzE7XG4gIHZhciBiMTAgPSBhMjEgKiBhMzMgLSBhMjMgKiBhMzE7XG4gIHZhciBiMTEgPSBhMjIgKiBhMzMgLSBhMjMgKiBhMzI7IC8vIENhbGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnRcblxuICB2YXIgZGV0ID0gYjAwICogYjExIC0gYjAxICogYjEwICsgYjAyICogYjA5ICsgYjAzICogYjA4IC0gYjA0ICogYjA3ICsgYjA1ICogYjA2O1xuXG4gIGlmICghZGV0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBkZXQgPSAxLjAgLyBkZXQ7XG4gIG91dFswXSA9IChhMTEgKiBiMTEgLSBhMTIgKiBiMTAgKyBhMTMgKiBiMDkpICogZGV0O1xuICBvdXRbMV0gPSAoYTAyICogYjEwIC0gYTAxICogYjExIC0gYTAzICogYjA5KSAqIGRldDtcbiAgb3V0WzJdID0gKGEzMSAqIGIwNSAtIGEzMiAqIGIwNCArIGEzMyAqIGIwMykgKiBkZXQ7XG4gIG91dFszXSA9IChhMjIgKiBiMDQgLSBhMjEgKiBiMDUgLSBhMjMgKiBiMDMpICogZGV0O1xuICBvdXRbNF0gPSAoYTEyICogYjA4IC0gYTEwICogYjExIC0gYTEzICogYjA3KSAqIGRldDtcbiAgb3V0WzVdID0gKGEwMCAqIGIxMSAtIGEwMiAqIGIwOCArIGEwMyAqIGIwNykgKiBkZXQ7XG4gIG91dFs2XSA9IChhMzIgKiBiMDIgLSBhMzAgKiBiMDUgLSBhMzMgKiBiMDEpICogZGV0O1xuICBvdXRbN10gPSAoYTIwICogYjA1IC0gYTIyICogYjAyICsgYTIzICogYjAxKSAqIGRldDtcbiAgb3V0WzhdID0gKGExMCAqIGIxMCAtIGExMSAqIGIwOCArIGExMyAqIGIwNikgKiBkZXQ7XG4gIG91dFs5XSA9IChhMDEgKiBiMDggLSBhMDAgKiBiMTAgLSBhMDMgKiBiMDYpICogZGV0O1xuICBvdXRbMTBdID0gKGEzMCAqIGIwNCAtIGEzMSAqIGIwMiArIGEzMyAqIGIwMCkgKiBkZXQ7XG4gIG91dFsxMV0gPSAoYTIxICogYjAyIC0gYTIwICogYjA0IC0gYTIzICogYjAwKSAqIGRldDtcbiAgb3V0WzEyXSA9IChhMTEgKiBiMDcgLSBhMTAgKiBiMDkgLSBhMTIgKiBiMDYpICogZGV0O1xuICBvdXRbMTNdID0gKGEwMCAqIGIwOSAtIGEwMSAqIGIwNyArIGEwMiAqIGIwNikgKiBkZXQ7XG4gIG91dFsxNF0gPSAoYTMxICogYjAxIC0gYTMwICogYjAzIC0gYTMyICogYjAwKSAqIGRldDtcbiAgb3V0WzE1XSA9IChhMjAgKiBiMDMgLSBhMjEgKiBiMDEgKyBhMjIgKiBiMDApICogZGV0O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBhZGp1Z2F0ZSBvZiBhIG1hdDRcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYWRqb2ludChvdXQsIGEpIHtcbiAgdmFyIGEwMCA9IGFbMF0sXG4gICAgICBhMDEgPSBhWzFdLFxuICAgICAgYTAyID0gYVsyXSxcbiAgICAgIGEwMyA9IGFbM107XG4gIHZhciBhMTAgPSBhWzRdLFxuICAgICAgYTExID0gYVs1XSxcbiAgICAgIGExMiA9IGFbNl0sXG4gICAgICBhMTMgPSBhWzddO1xuICB2YXIgYTIwID0gYVs4XSxcbiAgICAgIGEyMSA9IGFbOV0sXG4gICAgICBhMjIgPSBhWzEwXSxcbiAgICAgIGEyMyA9IGFbMTFdO1xuICB2YXIgYTMwID0gYVsxMl0sXG4gICAgICBhMzEgPSBhWzEzXSxcbiAgICAgIGEzMiA9IGFbMTRdLFxuICAgICAgYTMzID0gYVsxNV07XG4gIG91dFswXSA9IGExMSAqIChhMjIgKiBhMzMgLSBhMjMgKiBhMzIpIC0gYTIxICogKGExMiAqIGEzMyAtIGExMyAqIGEzMikgKyBhMzEgKiAoYTEyICogYTIzIC0gYTEzICogYTIyKTtcbiAgb3V0WzFdID0gLShhMDEgKiAoYTIyICogYTMzIC0gYTIzICogYTMyKSAtIGEyMSAqIChhMDIgKiBhMzMgLSBhMDMgKiBhMzIpICsgYTMxICogKGEwMiAqIGEyMyAtIGEwMyAqIGEyMikpO1xuICBvdXRbMl0gPSBhMDEgKiAoYTEyICogYTMzIC0gYTEzICogYTMyKSAtIGExMSAqIChhMDIgKiBhMzMgLSBhMDMgKiBhMzIpICsgYTMxICogKGEwMiAqIGExMyAtIGEwMyAqIGExMik7XG4gIG91dFszXSA9IC0oYTAxICogKGExMiAqIGEyMyAtIGExMyAqIGEyMikgLSBhMTEgKiAoYTAyICogYTIzIC0gYTAzICogYTIyKSArIGEyMSAqIChhMDIgKiBhMTMgLSBhMDMgKiBhMTIpKTtcbiAgb3V0WzRdID0gLShhMTAgKiAoYTIyICogYTMzIC0gYTIzICogYTMyKSAtIGEyMCAqIChhMTIgKiBhMzMgLSBhMTMgKiBhMzIpICsgYTMwICogKGExMiAqIGEyMyAtIGExMyAqIGEyMikpO1xuICBvdXRbNV0gPSBhMDAgKiAoYTIyICogYTMzIC0gYTIzICogYTMyKSAtIGEyMCAqIChhMDIgKiBhMzMgLSBhMDMgKiBhMzIpICsgYTMwICogKGEwMiAqIGEyMyAtIGEwMyAqIGEyMik7XG4gIG91dFs2XSA9IC0oYTAwICogKGExMiAqIGEzMyAtIGExMyAqIGEzMikgLSBhMTAgKiAoYTAyICogYTMzIC0gYTAzICogYTMyKSArIGEzMCAqIChhMDIgKiBhMTMgLSBhMDMgKiBhMTIpKTtcbiAgb3V0WzddID0gYTAwICogKGExMiAqIGEyMyAtIGExMyAqIGEyMikgLSBhMTAgKiAoYTAyICogYTIzIC0gYTAzICogYTIyKSArIGEyMCAqIChhMDIgKiBhMTMgLSBhMDMgKiBhMTIpO1xuICBvdXRbOF0gPSBhMTAgKiAoYTIxICogYTMzIC0gYTIzICogYTMxKSAtIGEyMCAqIChhMTEgKiBhMzMgLSBhMTMgKiBhMzEpICsgYTMwICogKGExMSAqIGEyMyAtIGExMyAqIGEyMSk7XG4gIG91dFs5XSA9IC0oYTAwICogKGEyMSAqIGEzMyAtIGEyMyAqIGEzMSkgLSBhMjAgKiAoYTAxICogYTMzIC0gYTAzICogYTMxKSArIGEzMCAqIChhMDEgKiBhMjMgLSBhMDMgKiBhMjEpKTtcbiAgb3V0WzEwXSA9IGEwMCAqIChhMTEgKiBhMzMgLSBhMTMgKiBhMzEpIC0gYTEwICogKGEwMSAqIGEzMyAtIGEwMyAqIGEzMSkgKyBhMzAgKiAoYTAxICogYTEzIC0gYTAzICogYTExKTtcbiAgb3V0WzExXSA9IC0oYTAwICogKGExMSAqIGEyMyAtIGExMyAqIGEyMSkgLSBhMTAgKiAoYTAxICogYTIzIC0gYTAzICogYTIxKSArIGEyMCAqIChhMDEgKiBhMTMgLSBhMDMgKiBhMTEpKTtcbiAgb3V0WzEyXSA9IC0oYTEwICogKGEyMSAqIGEzMiAtIGEyMiAqIGEzMSkgLSBhMjAgKiAoYTExICogYTMyIC0gYTEyICogYTMxKSArIGEzMCAqIChhMTEgKiBhMjIgLSBhMTIgKiBhMjEpKTtcbiAgb3V0WzEzXSA9IGEwMCAqIChhMjEgKiBhMzIgLSBhMjIgKiBhMzEpIC0gYTIwICogKGEwMSAqIGEzMiAtIGEwMiAqIGEzMSkgKyBhMzAgKiAoYTAxICogYTIyIC0gYTAyICogYTIxKTtcbiAgb3V0WzE0XSA9IC0oYTAwICogKGExMSAqIGEzMiAtIGExMiAqIGEzMSkgLSBhMTAgKiAoYTAxICogYTMyIC0gYTAyICogYTMxKSArIGEzMCAqIChhMDEgKiBhMTIgLSBhMDIgKiBhMTEpKTtcbiAgb3V0WzE1XSA9IGEwMCAqIChhMTEgKiBhMjIgLSBhMTIgKiBhMjEpIC0gYTEwICogKGEwMSAqIGEyMiAtIGEwMiAqIGEyMSkgKyBhMjAgKiAoYTAxICogYTEyIC0gYTAyICogYTExKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZGV0ZXJtaW5hbnQgb2YgYSBtYXQ0XG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGRldGVybWluYW50IG9mIGFcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZXJtaW5hbnQoYSkge1xuICB2YXIgYTAwID0gYVswXSxcbiAgICAgIGEwMSA9IGFbMV0sXG4gICAgICBhMDIgPSBhWzJdLFxuICAgICAgYTAzID0gYVszXTtcbiAgdmFyIGExMCA9IGFbNF0sXG4gICAgICBhMTEgPSBhWzVdLFxuICAgICAgYTEyID0gYVs2XSxcbiAgICAgIGExMyA9IGFbN107XG4gIHZhciBhMjAgPSBhWzhdLFxuICAgICAgYTIxID0gYVs5XSxcbiAgICAgIGEyMiA9IGFbMTBdLFxuICAgICAgYTIzID0gYVsxMV07XG4gIHZhciBhMzAgPSBhWzEyXSxcbiAgICAgIGEzMSA9IGFbMTNdLFxuICAgICAgYTMyID0gYVsxNF0sXG4gICAgICBhMzMgPSBhWzE1XTtcbiAgdmFyIGIwMCA9IGEwMCAqIGExMSAtIGEwMSAqIGExMDtcbiAgdmFyIGIwMSA9IGEwMCAqIGExMiAtIGEwMiAqIGExMDtcbiAgdmFyIGIwMiA9IGEwMCAqIGExMyAtIGEwMyAqIGExMDtcbiAgdmFyIGIwMyA9IGEwMSAqIGExMiAtIGEwMiAqIGExMTtcbiAgdmFyIGIwNCA9IGEwMSAqIGExMyAtIGEwMyAqIGExMTtcbiAgdmFyIGIwNSA9IGEwMiAqIGExMyAtIGEwMyAqIGExMjtcbiAgdmFyIGIwNiA9IGEyMCAqIGEzMSAtIGEyMSAqIGEzMDtcbiAgdmFyIGIwNyA9IGEyMCAqIGEzMiAtIGEyMiAqIGEzMDtcbiAgdmFyIGIwOCA9IGEyMCAqIGEzMyAtIGEyMyAqIGEzMDtcbiAgdmFyIGIwOSA9IGEyMSAqIGEzMiAtIGEyMiAqIGEzMTtcbiAgdmFyIGIxMCA9IGEyMSAqIGEzMyAtIGEyMyAqIGEzMTtcbiAgdmFyIGIxMSA9IGEyMiAqIGEzMyAtIGEyMyAqIGEzMjsgLy8gQ2FsY3VsYXRlIHRoZSBkZXRlcm1pbmFudFxuXG4gIHJldHVybiBiMDAgKiBiMTEgLSBiMDEgKiBiMTAgKyBiMDIgKiBiMDkgKyBiMDMgKiBiMDggLSBiMDQgKiBiMDcgKyBiMDUgKiBiMDY7XG59XG4vKipcbiAqIE11bHRpcGxpZXMgdHdvIG1hdDRzXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHkob3V0LCBhLCBiKSB7XG4gIHZhciBhMDAgPSBhWzBdLFxuICAgICAgYTAxID0gYVsxXSxcbiAgICAgIGEwMiA9IGFbMl0sXG4gICAgICBhMDMgPSBhWzNdO1xuICB2YXIgYTEwID0gYVs0XSxcbiAgICAgIGExMSA9IGFbNV0sXG4gICAgICBhMTIgPSBhWzZdLFxuICAgICAgYTEzID0gYVs3XTtcbiAgdmFyIGEyMCA9IGFbOF0sXG4gICAgICBhMjEgPSBhWzldLFxuICAgICAgYTIyID0gYVsxMF0sXG4gICAgICBhMjMgPSBhWzExXTtcbiAgdmFyIGEzMCA9IGFbMTJdLFxuICAgICAgYTMxID0gYVsxM10sXG4gICAgICBhMzIgPSBhWzE0XSxcbiAgICAgIGEzMyA9IGFbMTVdOyAvLyBDYWNoZSBvbmx5IHRoZSBjdXJyZW50IGxpbmUgb2YgdGhlIHNlY29uZCBtYXRyaXhcblxuICB2YXIgYjAgPSBiWzBdLFxuICAgICAgYjEgPSBiWzFdLFxuICAgICAgYjIgPSBiWzJdLFxuICAgICAgYjMgPSBiWzNdO1xuICBvdXRbMF0gPSBiMCAqIGEwMCArIGIxICogYTEwICsgYjIgKiBhMjAgKyBiMyAqIGEzMDtcbiAgb3V0WzFdID0gYjAgKiBhMDEgKyBiMSAqIGExMSArIGIyICogYTIxICsgYjMgKiBhMzE7XG4gIG91dFsyXSA9IGIwICogYTAyICsgYjEgKiBhMTIgKyBiMiAqIGEyMiArIGIzICogYTMyO1xuICBvdXRbM10gPSBiMCAqIGEwMyArIGIxICogYTEzICsgYjIgKiBhMjMgKyBiMyAqIGEzMztcbiAgYjAgPSBiWzRdO1xuICBiMSA9IGJbNV07XG4gIGIyID0gYls2XTtcbiAgYjMgPSBiWzddO1xuICBvdXRbNF0gPSBiMCAqIGEwMCArIGIxICogYTEwICsgYjIgKiBhMjAgKyBiMyAqIGEzMDtcbiAgb3V0WzVdID0gYjAgKiBhMDEgKyBiMSAqIGExMSArIGIyICogYTIxICsgYjMgKiBhMzE7XG4gIG91dFs2XSA9IGIwICogYTAyICsgYjEgKiBhMTIgKyBiMiAqIGEyMiArIGIzICogYTMyO1xuICBvdXRbN10gPSBiMCAqIGEwMyArIGIxICogYTEzICsgYjIgKiBhMjMgKyBiMyAqIGEzMztcbiAgYjAgPSBiWzhdO1xuICBiMSA9IGJbOV07XG4gIGIyID0gYlsxMF07XG4gIGIzID0gYlsxMV07XG4gIG91dFs4XSA9IGIwICogYTAwICsgYjEgKiBhMTAgKyBiMiAqIGEyMCArIGIzICogYTMwO1xuICBvdXRbOV0gPSBiMCAqIGEwMSArIGIxICogYTExICsgYjIgKiBhMjEgKyBiMyAqIGEzMTtcbiAgb3V0WzEwXSA9IGIwICogYTAyICsgYjEgKiBhMTIgKyBiMiAqIGEyMiArIGIzICogYTMyO1xuICBvdXRbMTFdID0gYjAgKiBhMDMgKyBiMSAqIGExMyArIGIyICogYTIzICsgYjMgKiBhMzM7XG4gIGIwID0gYlsxMl07XG4gIGIxID0gYlsxM107XG4gIGIyID0gYlsxNF07XG4gIGIzID0gYlsxNV07XG4gIG91dFsxMl0gPSBiMCAqIGEwMCArIGIxICogYTEwICsgYjIgKiBhMjAgKyBiMyAqIGEzMDtcbiAgb3V0WzEzXSA9IGIwICogYTAxICsgYjEgKiBhMTEgKyBiMiAqIGEyMSArIGIzICogYTMxO1xuICBvdXRbMTRdID0gYjAgKiBhMDIgKyBiMSAqIGExMiArIGIyICogYTIyICsgYjMgKiBhMzI7XG4gIG91dFsxNV0gPSBiMCAqIGEwMyArIGIxICogYTEzICsgYjIgKiBhMjMgKyBiMyAqIGEzMztcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogVHJhbnNsYXRlIGEgbWF0NCBieSB0aGUgZ2l2ZW4gdmVjdG9yXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIHRoZSBtYXRyaXggdG8gdHJhbnNsYXRlXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gdiB2ZWN0b3IgdG8gdHJhbnNsYXRlIGJ5XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0ZShvdXQsIGEsIHYpIHtcbiAgdmFyIHggPSB2WzBdLFxuICAgICAgeSA9IHZbMV0sXG4gICAgICB6ID0gdlsyXTtcbiAgdmFyIGEwMCwgYTAxLCBhMDIsIGEwMztcbiAgdmFyIGExMCwgYTExLCBhMTIsIGExMztcbiAgdmFyIGEyMCwgYTIxLCBhMjIsIGEyMztcblxuICBpZiAoYSA9PT0gb3V0KSB7XG4gICAgb3V0WzEyXSA9IGFbMF0gKiB4ICsgYVs0XSAqIHkgKyBhWzhdICogeiArIGFbMTJdO1xuICAgIG91dFsxM10gPSBhWzFdICogeCArIGFbNV0gKiB5ICsgYVs5XSAqIHogKyBhWzEzXTtcbiAgICBvdXRbMTRdID0gYVsyXSAqIHggKyBhWzZdICogeSArIGFbMTBdICogeiArIGFbMTRdO1xuICAgIG91dFsxNV0gPSBhWzNdICogeCArIGFbN10gKiB5ICsgYVsxMV0gKiB6ICsgYVsxNV07XG4gIH0gZWxzZSB7XG4gICAgYTAwID0gYVswXTtcbiAgICBhMDEgPSBhWzFdO1xuICAgIGEwMiA9IGFbMl07XG4gICAgYTAzID0gYVszXTtcbiAgICBhMTAgPSBhWzRdO1xuICAgIGExMSA9IGFbNV07XG4gICAgYTEyID0gYVs2XTtcbiAgICBhMTMgPSBhWzddO1xuICAgIGEyMCA9IGFbOF07XG4gICAgYTIxID0gYVs5XTtcbiAgICBhMjIgPSBhWzEwXTtcbiAgICBhMjMgPSBhWzExXTtcbiAgICBvdXRbMF0gPSBhMDA7XG4gICAgb3V0WzFdID0gYTAxO1xuICAgIG91dFsyXSA9IGEwMjtcbiAgICBvdXRbM10gPSBhMDM7XG4gICAgb3V0WzRdID0gYTEwO1xuICAgIG91dFs1XSA9IGExMTtcbiAgICBvdXRbNl0gPSBhMTI7XG4gICAgb3V0WzddID0gYTEzO1xuICAgIG91dFs4XSA9IGEyMDtcbiAgICBvdXRbOV0gPSBhMjE7XG4gICAgb3V0WzEwXSA9IGEyMjtcbiAgICBvdXRbMTFdID0gYTIzO1xuICAgIG91dFsxMl0gPSBhMDAgKiB4ICsgYTEwICogeSArIGEyMCAqIHogKyBhWzEyXTtcbiAgICBvdXRbMTNdID0gYTAxICogeCArIGExMSAqIHkgKyBhMjEgKiB6ICsgYVsxM107XG4gICAgb3V0WzE0XSA9IGEwMiAqIHggKyBhMTIgKiB5ICsgYTIyICogeiArIGFbMTRdO1xuICAgIG91dFsxNV0gPSBhMDMgKiB4ICsgYTEzICogeSArIGEyMyAqIHogKyBhWzE1XTtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNjYWxlcyB0aGUgbWF0NCBieSB0aGUgZGltZW5zaW9ucyBpbiB0aGUgZ2l2ZW4gdmVjMyBub3QgdXNpbmcgdmVjdG9yaXphdGlvblxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgbWF0cml4IHRvIHNjYWxlXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gdiB0aGUgdmVjMyB0byBzY2FsZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKiovXG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZShvdXQsIGEsIHYpIHtcbiAgdmFyIHggPSB2WzBdLFxuICAgICAgeSA9IHZbMV0sXG4gICAgICB6ID0gdlsyXTtcbiAgb3V0WzBdID0gYVswXSAqIHg7XG4gIG91dFsxXSA9IGFbMV0gKiB4O1xuICBvdXRbMl0gPSBhWzJdICogeDtcbiAgb3V0WzNdID0gYVszXSAqIHg7XG4gIG91dFs0XSA9IGFbNF0gKiB5O1xuICBvdXRbNV0gPSBhWzVdICogeTtcbiAgb3V0WzZdID0gYVs2XSAqIHk7XG4gIG91dFs3XSA9IGFbN10gKiB5O1xuICBvdXRbOF0gPSBhWzhdICogejtcbiAgb3V0WzldID0gYVs5XSAqIHo7XG4gIG91dFsxMF0gPSBhWzEwXSAqIHo7XG4gIG91dFsxMV0gPSBhWzExXSAqIHo7XG4gIG91dFsxMl0gPSBhWzEyXTtcbiAgb3V0WzEzXSA9IGFbMTNdO1xuICBvdXRbMTRdID0gYVsxNF07XG4gIG91dFsxNV0gPSBhWzE1XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIG1hdDQgYnkgdGhlIGdpdmVuIGFuZ2xlIGFyb3VuZCB0aGUgZ2l2ZW4gYXhpc1xuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgbWF0cml4IHRvIHJvdGF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IHJhZCB0aGUgYW5nbGUgdG8gcm90YXRlIHRoZSBtYXRyaXggYnlcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBheGlzIHRoZSBheGlzIHRvIHJvdGF0ZSBhcm91bmRcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlKG91dCwgYSwgcmFkLCBheGlzKSB7XG4gIHZhciB4ID0gYXhpc1swXSxcbiAgICAgIHkgPSBheGlzWzFdLFxuICAgICAgeiA9IGF4aXNbMl07XG4gIHZhciBsZW4gPSBNYXRoLmh5cG90KHgsIHksIHopO1xuICB2YXIgcywgYywgdDtcbiAgdmFyIGEwMCwgYTAxLCBhMDIsIGEwMztcbiAgdmFyIGExMCwgYTExLCBhMTIsIGExMztcbiAgdmFyIGEyMCwgYTIxLCBhMjIsIGEyMztcbiAgdmFyIGIwMCwgYjAxLCBiMDI7XG4gIHZhciBiMTAsIGIxMSwgYjEyO1xuICB2YXIgYjIwLCBiMjEsIGIyMjtcblxuICBpZiAobGVuIDwgZ2xNYXRyaXguRVBTSUxPTikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbGVuID0gMSAvIGxlbjtcbiAgeCAqPSBsZW47XG4gIHkgKj0gbGVuO1xuICB6ICo9IGxlbjtcbiAgcyA9IE1hdGguc2luKHJhZCk7XG4gIGMgPSBNYXRoLmNvcyhyYWQpO1xuICB0ID0gMSAtIGM7XG4gIGEwMCA9IGFbMF07XG4gIGEwMSA9IGFbMV07XG4gIGEwMiA9IGFbMl07XG4gIGEwMyA9IGFbM107XG4gIGExMCA9IGFbNF07XG4gIGExMSA9IGFbNV07XG4gIGExMiA9IGFbNl07XG4gIGExMyA9IGFbN107XG4gIGEyMCA9IGFbOF07XG4gIGEyMSA9IGFbOV07XG4gIGEyMiA9IGFbMTBdO1xuICBhMjMgPSBhWzExXTsgLy8gQ29uc3RydWN0IHRoZSBlbGVtZW50cyBvZiB0aGUgcm90YXRpb24gbWF0cml4XG5cbiAgYjAwID0geCAqIHggKiB0ICsgYztcbiAgYjAxID0geSAqIHggKiB0ICsgeiAqIHM7XG4gIGIwMiA9IHogKiB4ICogdCAtIHkgKiBzO1xuICBiMTAgPSB4ICogeSAqIHQgLSB6ICogcztcbiAgYjExID0geSAqIHkgKiB0ICsgYztcbiAgYjEyID0geiAqIHkgKiB0ICsgeCAqIHM7XG4gIGIyMCA9IHggKiB6ICogdCArIHkgKiBzO1xuICBiMjEgPSB5ICogeiAqIHQgLSB4ICogcztcbiAgYjIyID0geiAqIHogKiB0ICsgYzsgLy8gUGVyZm9ybSByb3RhdGlvbi1zcGVjaWZpYyBtYXRyaXggbXVsdGlwbGljYXRpb25cblxuICBvdXRbMF0gPSBhMDAgKiBiMDAgKyBhMTAgKiBiMDEgKyBhMjAgKiBiMDI7XG4gIG91dFsxXSA9IGEwMSAqIGIwMCArIGExMSAqIGIwMSArIGEyMSAqIGIwMjtcbiAgb3V0WzJdID0gYTAyICogYjAwICsgYTEyICogYjAxICsgYTIyICogYjAyO1xuICBvdXRbM10gPSBhMDMgKiBiMDAgKyBhMTMgKiBiMDEgKyBhMjMgKiBiMDI7XG4gIG91dFs0XSA9IGEwMCAqIGIxMCArIGExMCAqIGIxMSArIGEyMCAqIGIxMjtcbiAgb3V0WzVdID0gYTAxICogYjEwICsgYTExICogYjExICsgYTIxICogYjEyO1xuICBvdXRbNl0gPSBhMDIgKiBiMTAgKyBhMTIgKiBiMTEgKyBhMjIgKiBiMTI7XG4gIG91dFs3XSA9IGEwMyAqIGIxMCArIGExMyAqIGIxMSArIGEyMyAqIGIxMjtcbiAgb3V0WzhdID0gYTAwICogYjIwICsgYTEwICogYjIxICsgYTIwICogYjIyO1xuICBvdXRbOV0gPSBhMDEgKiBiMjAgKyBhMTEgKiBiMjEgKyBhMjEgKiBiMjI7XG4gIG91dFsxMF0gPSBhMDIgKiBiMjAgKyBhMTIgKiBiMjEgKyBhMjIgKiBiMjI7XG4gIG91dFsxMV0gPSBhMDMgKiBiMjAgKyBhMTMgKiBiMjEgKyBhMjMgKiBiMjI7XG5cbiAgaWYgKGEgIT09IG91dCkge1xuICAgIC8vIElmIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRpZmZlciwgY29weSB0aGUgdW5jaGFuZ2VkIGxhc3Qgcm93XG4gICAgb3V0WzEyXSA9IGFbMTJdO1xuICAgIG91dFsxM10gPSBhWzEzXTtcbiAgICBvdXRbMTRdID0gYVsxNF07XG4gICAgb3V0WzE1XSA9IGFbMTVdO1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIG1hdHJpeCBieSB0aGUgZ2l2ZW4gYW5nbGUgYXJvdW5kIHRoZSBYIGF4aXNcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIG1hdHJpeCB0byByb3RhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZVgob3V0LCBhLCByYWQpIHtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQpO1xuICB2YXIgYyA9IE1hdGguY29zKHJhZCk7XG4gIHZhciBhMTAgPSBhWzRdO1xuICB2YXIgYTExID0gYVs1XTtcbiAgdmFyIGExMiA9IGFbNl07XG4gIHZhciBhMTMgPSBhWzddO1xuICB2YXIgYTIwID0gYVs4XTtcbiAgdmFyIGEyMSA9IGFbOV07XG4gIHZhciBhMjIgPSBhWzEwXTtcbiAgdmFyIGEyMyA9IGFbMTFdO1xuXG4gIGlmIChhICE9PSBvdXQpIHtcbiAgICAvLyBJZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkaWZmZXIsIGNvcHkgdGhlIHVuY2hhbmdlZCByb3dzXG4gICAgb3V0WzBdID0gYVswXTtcbiAgICBvdXRbMV0gPSBhWzFdO1xuICAgIG91dFsyXSA9IGFbMl07XG4gICAgb3V0WzNdID0gYVszXTtcbiAgICBvdXRbMTJdID0gYVsxMl07XG4gICAgb3V0WzEzXSA9IGFbMTNdO1xuICAgIG91dFsxNF0gPSBhWzE0XTtcbiAgICBvdXRbMTVdID0gYVsxNV07XG4gIH0gLy8gUGVyZm9ybSBheGlzLXNwZWNpZmljIG1hdHJpeCBtdWx0aXBsaWNhdGlvblxuXG5cbiAgb3V0WzRdID0gYTEwICogYyArIGEyMCAqIHM7XG4gIG91dFs1XSA9IGExMSAqIGMgKyBhMjEgKiBzO1xuICBvdXRbNl0gPSBhMTIgKiBjICsgYTIyICogcztcbiAgb3V0WzddID0gYTEzICogYyArIGEyMyAqIHM7XG4gIG91dFs4XSA9IGEyMCAqIGMgLSBhMTAgKiBzO1xuICBvdXRbOV0gPSBhMjEgKiBjIC0gYTExICogcztcbiAgb3V0WzEwXSA9IGEyMiAqIGMgLSBhMTIgKiBzO1xuICBvdXRbMTFdID0gYTIzICogYyAtIGExMyAqIHM7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZXMgYSBtYXRyaXggYnkgdGhlIGdpdmVuIGFuZ2xlIGFyb3VuZCB0aGUgWSBheGlzXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIHRoZSBtYXRyaXggdG8gcm90YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVZKG91dCwgYSwgcmFkKSB7XG4gIHZhciBzID0gTWF0aC5zaW4ocmFkKTtcbiAgdmFyIGMgPSBNYXRoLmNvcyhyYWQpO1xuICB2YXIgYTAwID0gYVswXTtcbiAgdmFyIGEwMSA9IGFbMV07XG4gIHZhciBhMDIgPSBhWzJdO1xuICB2YXIgYTAzID0gYVszXTtcbiAgdmFyIGEyMCA9IGFbOF07XG4gIHZhciBhMjEgPSBhWzldO1xuICB2YXIgYTIyID0gYVsxMF07XG4gIHZhciBhMjMgPSBhWzExXTtcblxuICBpZiAoYSAhPT0gb3V0KSB7XG4gICAgLy8gSWYgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZGlmZmVyLCBjb3B5IHRoZSB1bmNoYW5nZWQgcm93c1xuICAgIG91dFs0XSA9IGFbNF07XG4gICAgb3V0WzVdID0gYVs1XTtcbiAgICBvdXRbNl0gPSBhWzZdO1xuICAgIG91dFs3XSA9IGFbN107XG4gICAgb3V0WzEyXSA9IGFbMTJdO1xuICAgIG91dFsxM10gPSBhWzEzXTtcbiAgICBvdXRbMTRdID0gYVsxNF07XG4gICAgb3V0WzE1XSA9IGFbMTVdO1xuICB9IC8vIFBlcmZvcm0gYXhpcy1zcGVjaWZpYyBtYXRyaXggbXVsdGlwbGljYXRpb25cblxuXG4gIG91dFswXSA9IGEwMCAqIGMgLSBhMjAgKiBzO1xuICBvdXRbMV0gPSBhMDEgKiBjIC0gYTIxICogcztcbiAgb3V0WzJdID0gYTAyICogYyAtIGEyMiAqIHM7XG4gIG91dFszXSA9IGEwMyAqIGMgLSBhMjMgKiBzO1xuICBvdXRbOF0gPSBhMDAgKiBzICsgYTIwICogYztcbiAgb3V0WzldID0gYTAxICogcyArIGEyMSAqIGM7XG4gIG91dFsxMF0gPSBhMDIgKiBzICsgYTIyICogYztcbiAgb3V0WzExXSA9IGEwMyAqIHMgKyBhMjMgKiBjO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGVzIGEgbWF0cml4IGJ5IHRoZSBnaXZlbiBhbmdsZSBhcm91bmQgdGhlIFogYXhpc1xuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgbWF0cml4IHRvIHJvdGF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IHJhZCB0aGUgYW5nbGUgdG8gcm90YXRlIHRoZSBtYXRyaXggYnlcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlWihvdXQsIGEsIHJhZCkge1xuICB2YXIgcyA9IE1hdGguc2luKHJhZCk7XG4gIHZhciBjID0gTWF0aC5jb3MocmFkKTtcbiAgdmFyIGEwMCA9IGFbMF07XG4gIHZhciBhMDEgPSBhWzFdO1xuICB2YXIgYTAyID0gYVsyXTtcbiAgdmFyIGEwMyA9IGFbM107XG4gIHZhciBhMTAgPSBhWzRdO1xuICB2YXIgYTExID0gYVs1XTtcbiAgdmFyIGExMiA9IGFbNl07XG4gIHZhciBhMTMgPSBhWzddO1xuXG4gIGlmIChhICE9PSBvdXQpIHtcbiAgICAvLyBJZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkaWZmZXIsIGNvcHkgdGhlIHVuY2hhbmdlZCBsYXN0IHJvd1xuICAgIG91dFs4XSA9IGFbOF07XG4gICAgb3V0WzldID0gYVs5XTtcbiAgICBvdXRbMTBdID0gYVsxMF07XG4gICAgb3V0WzExXSA9IGFbMTFdO1xuICAgIG91dFsxMl0gPSBhWzEyXTtcbiAgICBvdXRbMTNdID0gYVsxM107XG4gICAgb3V0WzE0XSA9IGFbMTRdO1xuICAgIG91dFsxNV0gPSBhWzE1XTtcbiAgfSAvLyBQZXJmb3JtIGF4aXMtc3BlY2lmaWMgbWF0cml4IG11bHRpcGxpY2F0aW9uXG5cblxuICBvdXRbMF0gPSBhMDAgKiBjICsgYTEwICogcztcbiAgb3V0WzFdID0gYTAxICogYyArIGExMSAqIHM7XG4gIG91dFsyXSA9IGEwMiAqIGMgKyBhMTIgKiBzO1xuICBvdXRbM10gPSBhMDMgKiBjICsgYTEzICogcztcbiAgb3V0WzRdID0gYTEwICogYyAtIGEwMCAqIHM7XG4gIG91dFs1XSA9IGExMSAqIGMgLSBhMDEgKiBzO1xuICBvdXRbNl0gPSBhMTIgKiBjIC0gYTAyICogcztcbiAgb3V0WzddID0gYTEzICogYyAtIGEwMyAqIHM7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIHZlY3RvciB0cmFuc2xhdGlvblxuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDQuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0NC50cmFuc2xhdGUoZGVzdCwgZGVzdCwgdmVjKTtcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gdiBUcmFuc2xhdGlvbiB2ZWN0b3JcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVRyYW5zbGF0aW9uKG91dCwgdikge1xuICBvdXRbMF0gPSAxO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSAxO1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSAwO1xuICBvdXRbOV0gPSAwO1xuICBvdXRbMTBdID0gMTtcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSB2WzBdO1xuICBvdXRbMTNdID0gdlsxXTtcbiAgb3V0WzE0XSA9IHZbMl07XG4gIG91dFsxNV0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSB2ZWN0b3Igc2NhbGluZ1xuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDQuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0NC5zY2FsZShkZXN0LCBkZXN0LCB2ZWMpO1xuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSB2IFNjYWxpbmcgdmVjdG9yXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21TY2FsaW5nKG91dCwgdikge1xuICBvdXRbMF0gPSB2WzBdO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSB2WzFdO1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSAwO1xuICBvdXRbOV0gPSAwO1xuICBvdXRbMTBdID0gdlsyXTtcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSAwO1xuICBvdXRbMTNdID0gMDtcbiAgb3V0WzE0XSA9IDA7XG4gIG91dFsxNV0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSBnaXZlbiBhbmdsZSBhcm91bmQgYSBnaXZlbiBheGlzXG4gKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKTpcbiAqXG4gKiAgICAgbWF0NC5pZGVudGl0eShkZXN0KTtcbiAqICAgICBtYXQ0LnJvdGF0ZShkZXN0LCBkZXN0LCByYWQsIGF4aXMpO1xuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYXhpcyB0aGUgYXhpcyB0byByb3RhdGUgYXJvdW5kXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Sb3RhdGlvbihvdXQsIHJhZCwgYXhpcykge1xuICB2YXIgeCA9IGF4aXNbMF0sXG4gICAgICB5ID0gYXhpc1sxXSxcbiAgICAgIHogPSBheGlzWzJdO1xuICB2YXIgbGVuID0gTWF0aC5oeXBvdCh4LCB5LCB6KTtcbiAgdmFyIHMsIGMsIHQ7XG5cbiAgaWYgKGxlbiA8IGdsTWF0cml4LkVQU0lMT04pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGxlbiA9IDEgLyBsZW47XG4gIHggKj0gbGVuO1xuICB5ICo9IGxlbjtcbiAgeiAqPSBsZW47XG4gIHMgPSBNYXRoLnNpbihyYWQpO1xuICBjID0gTWF0aC5jb3MocmFkKTtcbiAgdCA9IDEgLSBjOyAvLyBQZXJmb3JtIHJvdGF0aW9uLXNwZWNpZmljIG1hdHJpeCBtdWx0aXBsaWNhdGlvblxuXG4gIG91dFswXSA9IHggKiB4ICogdCArIGM7XG4gIG91dFsxXSA9IHkgKiB4ICogdCArIHogKiBzO1xuICBvdXRbMl0gPSB6ICogeCAqIHQgLSB5ICogcztcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0geCAqIHkgKiB0IC0geiAqIHM7XG4gIG91dFs1XSA9IHkgKiB5ICogdCArIGM7XG4gIG91dFs2XSA9IHogKiB5ICogdCArIHggKiBzO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSB4ICogeiAqIHQgKyB5ICogcztcbiAgb3V0WzldID0geSAqIHogKiB0IC0geCAqIHM7XG4gIG91dFsxMF0gPSB6ICogeiAqIHQgKyBjO1xuICBvdXRbMTFdID0gMDtcbiAgb3V0WzEyXSA9IDA7XG4gIG91dFsxM10gPSAwO1xuICBvdXRbMTRdID0gMDtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSB0aGUgZ2l2ZW4gYW5nbGUgYXJvdW5kIHRoZSBYIGF4aXNcbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQ0LmlkZW50aXR5KGRlc3QpO1xuICogICAgIG1hdDQucm90YXRlWChkZXN0LCBkZXN0LCByYWQpO1xuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21YUm90YXRpb24ob3V0LCByYWQpIHtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQpO1xuICB2YXIgYyA9IE1hdGguY29zKHJhZCk7IC8vIFBlcmZvcm0gYXhpcy1zcGVjaWZpYyBtYXRyaXggbXVsdGlwbGljYXRpb25cblxuICBvdXRbMF0gPSAxO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSBjO1xuICBvdXRbNl0gPSBzO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSAwO1xuICBvdXRbOV0gPSAtcztcbiAgb3V0WzEwXSA9IGM7XG4gIG91dFsxMV0gPSAwO1xuICBvdXRbMTJdID0gMDtcbiAgb3V0WzEzXSA9IDA7XG4gIG91dFsxNF0gPSAwO1xuICBvdXRbMTVdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIHRoZSBnaXZlbiBhbmdsZSBhcm91bmQgdGhlIFkgYXhpc1xuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDQuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0NC5yb3RhdGVZKGRlc3QsIGRlc3QsIHJhZCk7XG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtOdW1iZXJ9IHJhZCB0aGUgYW5nbGUgdG8gcm90YXRlIHRoZSBtYXRyaXggYnlcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVlSb3RhdGlvbihvdXQsIHJhZCkge1xuICB2YXIgcyA9IE1hdGguc2luKHJhZCk7XG4gIHZhciBjID0gTWF0aC5jb3MocmFkKTsgLy8gUGVyZm9ybSBheGlzLXNwZWNpZmljIG1hdHJpeCBtdWx0aXBsaWNhdGlvblxuXG4gIG91dFswXSA9IGM7XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IC1zO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSAxO1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSBzO1xuICBvdXRbOV0gPSAwO1xuICBvdXRbMTBdID0gYztcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSAwO1xuICBvdXRbMTNdID0gMDtcbiAgb3V0WzE0XSA9IDA7XG4gIG91dFsxNV0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gdGhlIGdpdmVuIGFuZ2xlIGFyb3VuZCB0aGUgWiBheGlzXG4gKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKTpcbiAqXG4gKiAgICAgbWF0NC5pZGVudGl0eShkZXN0KTtcbiAqICAgICBtYXQ0LnJvdGF0ZVooZGVzdCwgZGVzdCwgcmFkKTtcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tWlJvdGF0aW9uKG91dCwgcmFkKSB7XG4gIHZhciBzID0gTWF0aC5zaW4ocmFkKTtcbiAgdmFyIGMgPSBNYXRoLmNvcyhyYWQpOyAvLyBQZXJmb3JtIGF4aXMtc3BlY2lmaWMgbWF0cml4IG11bHRpcGxpY2F0aW9uXG5cbiAgb3V0WzBdID0gYztcbiAgb3V0WzFdID0gcztcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gLXM7XG4gIG91dFs1XSA9IGM7XG4gIG91dFs2XSA9IDA7XG4gIG91dFs3XSA9IDA7XG4gIG91dFs4XSA9IDA7XG4gIG91dFs5XSA9IDA7XG4gIG91dFsxMF0gPSAxO1xuICBvdXRbMTFdID0gMDtcbiAgb3V0WzEyXSA9IDA7XG4gIG91dFsxM10gPSAwO1xuICBvdXRbMTRdID0gMDtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIHF1YXRlcm5pb24gcm90YXRpb24gYW5kIHZlY3RvciB0cmFuc2xhdGlvblxuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDQuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0NC50cmFuc2xhdGUoZGVzdCwgdmVjKTtcbiAqICAgICBsZXQgcXVhdE1hdCA9IG1hdDQuY3JlYXRlKCk7XG4gKiAgICAgcXVhdDQudG9NYXQ0KHF1YXQsIHF1YXRNYXQpO1xuICogICAgIG1hdDQubXVsdGlwbHkoZGVzdCwgcXVhdE1hdCk7XG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtxdWF0NH0gcSBSb3RhdGlvbiBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gdiBUcmFuc2xhdGlvbiB2ZWN0b3JcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24ob3V0LCBxLCB2KSB7XG4gIC8vIFF1YXRlcm5pb24gbWF0aFxuICB2YXIgeCA9IHFbMF0sXG4gICAgICB5ID0gcVsxXSxcbiAgICAgIHogPSBxWzJdLFxuICAgICAgdyA9IHFbM107XG4gIHZhciB4MiA9IHggKyB4O1xuICB2YXIgeTIgPSB5ICsgeTtcbiAgdmFyIHoyID0geiArIHo7XG4gIHZhciB4eCA9IHggKiB4MjtcbiAgdmFyIHh5ID0geCAqIHkyO1xuICB2YXIgeHogPSB4ICogejI7XG4gIHZhciB5eSA9IHkgKiB5MjtcbiAgdmFyIHl6ID0geSAqIHoyO1xuICB2YXIgenogPSB6ICogejI7XG4gIHZhciB3eCA9IHcgKiB4MjtcbiAgdmFyIHd5ID0gdyAqIHkyO1xuICB2YXIgd3ogPSB3ICogejI7XG4gIG91dFswXSA9IDEgLSAoeXkgKyB6eik7XG4gIG91dFsxXSA9IHh5ICsgd3o7XG4gIG91dFsyXSA9IHh6IC0gd3k7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9IHh5IC0gd3o7XG4gIG91dFs1XSA9IDEgLSAoeHggKyB6eik7XG4gIG91dFs2XSA9IHl6ICsgd3g7XG4gIG91dFs3XSA9IDA7XG4gIG91dFs4XSA9IHh6ICsgd3k7XG4gIG91dFs5XSA9IHl6IC0gd3g7XG4gIG91dFsxMF0gPSAxIC0gKHh4ICsgeXkpO1xuICBvdXRbMTFdID0gMDtcbiAgb3V0WzEyXSA9IHZbMF07XG4gIG91dFsxM10gPSB2WzFdO1xuICBvdXRbMTRdID0gdlsyXTtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgbWF0NCBmcm9tIGEgZHVhbCBxdWF0LlxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IE1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIER1YWwgUXVhdGVybmlvblxuICogQHJldHVybnMge21hdDR9IG1hdDQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVF1YXQyKG91dCwgYSkge1xuICB2YXIgdHJhbnNsYXRpb24gPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSgzKTtcbiAgdmFyIGJ4ID0gLWFbMF0sXG4gICAgICBieSA9IC1hWzFdLFxuICAgICAgYnogPSAtYVsyXSxcbiAgICAgIGJ3ID0gYVszXSxcbiAgICAgIGF4ID0gYVs0XSxcbiAgICAgIGF5ID0gYVs1XSxcbiAgICAgIGF6ID0gYVs2XSxcbiAgICAgIGF3ID0gYVs3XTtcbiAgdmFyIG1hZ25pdHVkZSA9IGJ4ICogYnggKyBieSAqIGJ5ICsgYnogKiBieiArIGJ3ICogYnc7IC8vT25seSBzY2FsZSBpZiBpdCBtYWtlcyBzZW5zZVxuXG4gIGlmIChtYWduaXR1ZGUgPiAwKSB7XG4gICAgdHJhbnNsYXRpb25bMF0gPSAoYXggKiBidyArIGF3ICogYnggKyBheSAqIGJ6IC0gYXogKiBieSkgKiAyIC8gbWFnbml0dWRlO1xuICAgIHRyYW5zbGF0aW9uWzFdID0gKGF5ICogYncgKyBhdyAqIGJ5ICsgYXogKiBieCAtIGF4ICogYnopICogMiAvIG1hZ25pdHVkZTtcbiAgICB0cmFuc2xhdGlvblsyXSA9IChheiAqIGJ3ICsgYXcgKiBieiArIGF4ICogYnkgLSBheSAqIGJ4KSAqIDIgLyBtYWduaXR1ZGU7XG4gIH0gZWxzZSB7XG4gICAgdHJhbnNsYXRpb25bMF0gPSAoYXggKiBidyArIGF3ICogYnggKyBheSAqIGJ6IC0gYXogKiBieSkgKiAyO1xuICAgIHRyYW5zbGF0aW9uWzFdID0gKGF5ICogYncgKyBhdyAqIGJ5ICsgYXogKiBieCAtIGF4ICogYnopICogMjtcbiAgICB0cmFuc2xhdGlvblsyXSA9IChheiAqIGJ3ICsgYXcgKiBieiArIGF4ICogYnkgLSBheSAqIGJ4KSAqIDI7XG4gIH1cblxuICBmcm9tUm90YXRpb25UcmFuc2xhdGlvbihvdXQsIGEsIHRyYW5zbGF0aW9uKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgdHJhbnNsYXRpb24gdmVjdG9yIGNvbXBvbmVudCBvZiBhIHRyYW5zZm9ybWF0aW9uXG4gKiAgbWF0cml4LiBJZiBhIG1hdHJpeCBpcyBidWlsdCB3aXRoIGZyb21Sb3RhdGlvblRyYW5zbGF0aW9uLFxuICogIHRoZSByZXR1cm5lZCB2ZWN0b3Igd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgdHJhbnNsYXRpb24gdmVjdG9yXG4gKiAgb3JpZ2luYWxseSBzdXBwbGllZC5cbiAqIEBwYXJhbSAge3ZlYzN9IG91dCBWZWN0b3IgdG8gcmVjZWl2ZSB0cmFuc2xhdGlvbiBjb21wb25lbnRcbiAqIEBwYXJhbSAge1JlYWRvbmx5TWF0NH0gbWF0IE1hdHJpeCB0byBiZSBkZWNvbXBvc2VkIChpbnB1dClcbiAqIEByZXR1cm4ge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2xhdGlvbihvdXQsIG1hdCkge1xuICBvdXRbMF0gPSBtYXRbMTJdO1xuICBvdXRbMV0gPSBtYXRbMTNdO1xuICBvdXRbMl0gPSBtYXRbMTRdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzY2FsaW5nIGZhY3RvciBjb21wb25lbnQgb2YgYSB0cmFuc2Zvcm1hdGlvblxuICogIG1hdHJpeC4gSWYgYSBtYXRyaXggaXMgYnVpbHQgd2l0aCBmcm9tUm90YXRpb25UcmFuc2xhdGlvblNjYWxlXG4gKiAgd2l0aCBhIG5vcm1hbGl6ZWQgUXVhdGVybmlvbiBwYXJhbXRlciwgdGhlIHJldHVybmVkIHZlY3RvciB3aWxsIGJlXG4gKiAgdGhlIHNhbWUgYXMgdGhlIHNjYWxpbmcgdmVjdG9yXG4gKiAgb3JpZ2luYWxseSBzdXBwbGllZC5cbiAqIEBwYXJhbSAge3ZlYzN9IG91dCBWZWN0b3IgdG8gcmVjZWl2ZSBzY2FsaW5nIGZhY3RvciBjb21wb25lbnRcbiAqIEBwYXJhbSAge1JlYWRvbmx5TWF0NH0gbWF0IE1hdHJpeCB0byBiZSBkZWNvbXBvc2VkIChpbnB1dClcbiAqIEByZXR1cm4ge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsaW5nKG91dCwgbWF0KSB7XG4gIHZhciBtMTEgPSBtYXRbMF07XG4gIHZhciBtMTIgPSBtYXRbMV07XG4gIHZhciBtMTMgPSBtYXRbMl07XG4gIHZhciBtMjEgPSBtYXRbNF07XG4gIHZhciBtMjIgPSBtYXRbNV07XG4gIHZhciBtMjMgPSBtYXRbNl07XG4gIHZhciBtMzEgPSBtYXRbOF07XG4gIHZhciBtMzIgPSBtYXRbOV07XG4gIHZhciBtMzMgPSBtYXRbMTBdO1xuICBvdXRbMF0gPSBNYXRoLmh5cG90KG0xMSwgbTEyLCBtMTMpO1xuICBvdXRbMV0gPSBNYXRoLmh5cG90KG0yMSwgbTIyLCBtMjMpO1xuICBvdXRbMl0gPSBNYXRoLmh5cG90KG0zMSwgbTMyLCBtMzMpO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgcXVhdGVybmlvbiByZXByZXNlbnRpbmcgdGhlIHJvdGF0aW9uYWwgY29tcG9uZW50XG4gKiAgb2YgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguIElmIGEgbWF0cml4IGlzIGJ1aWx0IHdpdGhcbiAqICBmcm9tUm90YXRpb25UcmFuc2xhdGlvbiwgdGhlIHJldHVybmVkIHF1YXRlcm5pb24gd2lsbCBiZSB0aGVcbiAqICBzYW1lIGFzIHRoZSBxdWF0ZXJuaW9uIG9yaWdpbmFsbHkgc3VwcGxpZWQuXG4gKiBAcGFyYW0ge3F1YXR9IG91dCBRdWF0ZXJuaW9uIHRvIHJlY2VpdmUgdGhlIHJvdGF0aW9uIGNvbXBvbmVudFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IG1hdCBNYXRyaXggdG8gYmUgZGVjb21wb3NlZCAoaW5wdXQpXG4gKiBAcmV0dXJuIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um90YXRpb24ob3V0LCBtYXQpIHtcbiAgdmFyIHNjYWxpbmcgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSgzKTtcbiAgZ2V0U2NhbGluZyhzY2FsaW5nLCBtYXQpO1xuICB2YXIgaXMxID0gMSAvIHNjYWxpbmdbMF07XG4gIHZhciBpczIgPSAxIC8gc2NhbGluZ1sxXTtcbiAgdmFyIGlzMyA9IDEgLyBzY2FsaW5nWzJdO1xuICB2YXIgc20xMSA9IG1hdFswXSAqIGlzMTtcbiAgdmFyIHNtMTIgPSBtYXRbMV0gKiBpczI7XG4gIHZhciBzbTEzID0gbWF0WzJdICogaXMzO1xuICB2YXIgc20yMSA9IG1hdFs0XSAqIGlzMTtcbiAgdmFyIHNtMjIgPSBtYXRbNV0gKiBpczI7XG4gIHZhciBzbTIzID0gbWF0WzZdICogaXMzO1xuICB2YXIgc20zMSA9IG1hdFs4XSAqIGlzMTtcbiAgdmFyIHNtMzIgPSBtYXRbOV0gKiBpczI7XG4gIHZhciBzbTMzID0gbWF0WzEwXSAqIGlzMztcbiAgdmFyIHRyYWNlID0gc20xMSArIHNtMjIgKyBzbTMzO1xuICB2YXIgUyA9IDA7XG5cbiAgaWYgKHRyYWNlID4gMCkge1xuICAgIFMgPSBNYXRoLnNxcnQodHJhY2UgKyAxLjApICogMjtcbiAgICBvdXRbM10gPSAwLjI1ICogUztcbiAgICBvdXRbMF0gPSAoc20yMyAtIHNtMzIpIC8gUztcbiAgICBvdXRbMV0gPSAoc20zMSAtIHNtMTMpIC8gUztcbiAgICBvdXRbMl0gPSAoc20xMiAtIHNtMjEpIC8gUztcbiAgfSBlbHNlIGlmIChzbTExID4gc20yMiAmJiBzbTExID4gc20zMykge1xuICAgIFMgPSBNYXRoLnNxcnQoMS4wICsgc20xMSAtIHNtMjIgLSBzbTMzKSAqIDI7XG4gICAgb3V0WzNdID0gKHNtMjMgLSBzbTMyKSAvIFM7XG4gICAgb3V0WzBdID0gMC4yNSAqIFM7XG4gICAgb3V0WzFdID0gKHNtMTIgKyBzbTIxKSAvIFM7XG4gICAgb3V0WzJdID0gKHNtMzEgKyBzbTEzKSAvIFM7XG4gIH0gZWxzZSBpZiAoc20yMiA+IHNtMzMpIHtcbiAgICBTID0gTWF0aC5zcXJ0KDEuMCArIHNtMjIgLSBzbTExIC0gc20zMykgKiAyO1xuICAgIG91dFszXSA9IChzbTMxIC0gc20xMykgLyBTO1xuICAgIG91dFswXSA9IChzbTEyICsgc20yMSkgLyBTO1xuICAgIG91dFsxXSA9IDAuMjUgKiBTO1xuICAgIG91dFsyXSA9IChzbTIzICsgc20zMikgLyBTO1xuICB9IGVsc2Uge1xuICAgIFMgPSBNYXRoLnNxcnQoMS4wICsgc20zMyAtIHNtMTEgLSBzbTIyKSAqIDI7XG4gICAgb3V0WzNdID0gKHNtMTIgLSBzbTIxKSAvIFM7XG4gICAgb3V0WzBdID0gKHNtMzEgKyBzbTEzKSAvIFM7XG4gICAgb3V0WzFdID0gKHNtMjMgKyBzbTMyKSAvIFM7XG4gICAgb3V0WzJdID0gMC4yNSAqIFM7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSBxdWF0ZXJuaW9uIHJvdGF0aW9uLCB2ZWN0b3IgdHJhbnNsYXRpb24gYW5kIHZlY3RvciBzY2FsZVxuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDQuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0NC50cmFuc2xhdGUoZGVzdCwgdmVjKTtcbiAqICAgICBsZXQgcXVhdE1hdCA9IG1hdDQuY3JlYXRlKCk7XG4gKiAgICAgcXVhdDQudG9NYXQ0KHF1YXQsIHF1YXRNYXQpO1xuICogICAgIG1hdDQubXVsdGlwbHkoZGVzdCwgcXVhdE1hdCk7XG4gKiAgICAgbWF0NC5zY2FsZShkZXN0LCBzY2FsZSlcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge3F1YXQ0fSBxIFJvdGF0aW9uIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSB2IFRyYW5zbGF0aW9uIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHMgU2NhbGluZyB2ZWN0b3JcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVJvdGF0aW9uVHJhbnNsYXRpb25TY2FsZShvdXQsIHEsIHYsIHMpIHtcbiAgLy8gUXVhdGVybmlvbiBtYXRoXG4gIHZhciB4ID0gcVswXSxcbiAgICAgIHkgPSBxWzFdLFxuICAgICAgeiA9IHFbMl0sXG4gICAgICB3ID0gcVszXTtcbiAgdmFyIHgyID0geCArIHg7XG4gIHZhciB5MiA9IHkgKyB5O1xuICB2YXIgejIgPSB6ICsgejtcbiAgdmFyIHh4ID0geCAqIHgyO1xuICB2YXIgeHkgPSB4ICogeTI7XG4gIHZhciB4eiA9IHggKiB6MjtcbiAgdmFyIHl5ID0geSAqIHkyO1xuICB2YXIgeXogPSB5ICogejI7XG4gIHZhciB6eiA9IHogKiB6MjtcbiAgdmFyIHd4ID0gdyAqIHgyO1xuICB2YXIgd3kgPSB3ICogeTI7XG4gIHZhciB3eiA9IHcgKiB6MjtcbiAgdmFyIHN4ID0gc1swXTtcbiAgdmFyIHN5ID0gc1sxXTtcbiAgdmFyIHN6ID0gc1syXTtcbiAgb3V0WzBdID0gKDEgLSAoeXkgKyB6eikpICogc3g7XG4gIG91dFsxXSA9ICh4eSArIHd6KSAqIHN4O1xuICBvdXRbMl0gPSAoeHogLSB3eSkgKiBzeDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gKHh5IC0gd3opICogc3k7XG4gIG91dFs1XSA9ICgxIC0gKHh4ICsgenopKSAqIHN5O1xuICBvdXRbNl0gPSAoeXogKyB3eCkgKiBzeTtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gKHh6ICsgd3kpICogc3o7XG4gIG91dFs5XSA9ICh5eiAtIHd4KSAqIHN6O1xuICBvdXRbMTBdID0gKDEgLSAoeHggKyB5eSkpICogc3o7XG4gIG91dFsxMV0gPSAwO1xuICBvdXRbMTJdID0gdlswXTtcbiAgb3V0WzEzXSA9IHZbMV07XG4gIG91dFsxNF0gPSB2WzJdO1xuICBvdXRbMTVdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIGEgcXVhdGVybmlvbiByb3RhdGlvbiwgdmVjdG9yIHRyYW5zbGF0aW9uIGFuZCB2ZWN0b3Igc2NhbGUsIHJvdGF0aW5nIGFuZCBzY2FsaW5nIGFyb3VuZCB0aGUgZ2l2ZW4gb3JpZ2luXG4gKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKTpcbiAqXG4gKiAgICAgbWF0NC5pZGVudGl0eShkZXN0KTtcbiAqICAgICBtYXQ0LnRyYW5zbGF0ZShkZXN0LCB2ZWMpO1xuICogICAgIG1hdDQudHJhbnNsYXRlKGRlc3QsIG9yaWdpbik7XG4gKiAgICAgbGV0IHF1YXRNYXQgPSBtYXQ0LmNyZWF0ZSgpO1xuICogICAgIHF1YXQ0LnRvTWF0NChxdWF0LCBxdWF0TWF0KTtcbiAqICAgICBtYXQ0Lm11bHRpcGx5KGRlc3QsIHF1YXRNYXQpO1xuICogICAgIG1hdDQuc2NhbGUoZGVzdCwgc2NhbGUpXG4gKiAgICAgbWF0NC50cmFuc2xhdGUoZGVzdCwgbmVnYXRpdmVPcmlnaW4pO1xuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7cXVhdDR9IHEgUm90YXRpb24gcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHYgVHJhbnNsYXRpb24gdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gcyBTY2FsaW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IG8gVGhlIG9yaWdpbiB2ZWN0b3IgYXJvdW5kIHdoaWNoIHRvIHNjYWxlIGFuZCByb3RhdGVcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVJvdGF0aW9uVHJhbnNsYXRpb25TY2FsZU9yaWdpbihvdXQsIHEsIHYsIHMsIG8pIHtcbiAgLy8gUXVhdGVybmlvbiBtYXRoXG4gIHZhciB4ID0gcVswXSxcbiAgICAgIHkgPSBxWzFdLFxuICAgICAgeiA9IHFbMl0sXG4gICAgICB3ID0gcVszXTtcbiAgdmFyIHgyID0geCArIHg7XG4gIHZhciB5MiA9IHkgKyB5O1xuICB2YXIgejIgPSB6ICsgejtcbiAgdmFyIHh4ID0geCAqIHgyO1xuICB2YXIgeHkgPSB4ICogeTI7XG4gIHZhciB4eiA9IHggKiB6MjtcbiAgdmFyIHl5ID0geSAqIHkyO1xuICB2YXIgeXogPSB5ICogejI7XG4gIHZhciB6eiA9IHogKiB6MjtcbiAgdmFyIHd4ID0gdyAqIHgyO1xuICB2YXIgd3kgPSB3ICogeTI7XG4gIHZhciB3eiA9IHcgKiB6MjtcbiAgdmFyIHN4ID0gc1swXTtcbiAgdmFyIHN5ID0gc1sxXTtcbiAgdmFyIHN6ID0gc1syXTtcbiAgdmFyIG94ID0gb1swXTtcbiAgdmFyIG95ID0gb1sxXTtcbiAgdmFyIG96ID0gb1syXTtcbiAgdmFyIG91dDAgPSAoMSAtICh5eSArIHp6KSkgKiBzeDtcbiAgdmFyIG91dDEgPSAoeHkgKyB3eikgKiBzeDtcbiAgdmFyIG91dDIgPSAoeHogLSB3eSkgKiBzeDtcbiAgdmFyIG91dDQgPSAoeHkgLSB3eikgKiBzeTtcbiAgdmFyIG91dDUgPSAoMSAtICh4eCArIHp6KSkgKiBzeTtcbiAgdmFyIG91dDYgPSAoeXogKyB3eCkgKiBzeTtcbiAgdmFyIG91dDggPSAoeHogKyB3eSkgKiBzejtcbiAgdmFyIG91dDkgPSAoeXogLSB3eCkgKiBzejtcbiAgdmFyIG91dDEwID0gKDEgLSAoeHggKyB5eSkpICogc3o7XG4gIG91dFswXSA9IG91dDA7XG4gIG91dFsxXSA9IG91dDE7XG4gIG91dFsyXSA9IG91dDI7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9IG91dDQ7XG4gIG91dFs1XSA9IG91dDU7XG4gIG91dFs2XSA9IG91dDY7XG4gIG91dFs3XSA9IDA7XG4gIG91dFs4XSA9IG91dDg7XG4gIG91dFs5XSA9IG91dDk7XG4gIG91dFsxMF0gPSBvdXQxMDtcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSB2WzBdICsgb3ggLSAob3V0MCAqIG94ICsgb3V0NCAqIG95ICsgb3V0OCAqIG96KTtcbiAgb3V0WzEzXSA9IHZbMV0gKyBveSAtIChvdXQxICogb3ggKyBvdXQ1ICogb3kgKyBvdXQ5ICogb3opO1xuICBvdXRbMTRdID0gdlsyXSArIG96IC0gKG91dDIgKiBveCArIG91dDYgKiBveSArIG91dDEwICogb3opO1xuICBvdXRbMTVdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyBhIDR4NCBtYXRyaXggZnJvbSB0aGUgZ2l2ZW4gcXVhdGVybmlvblxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBxIFF1YXRlcm5pb24gdG8gY3JlYXRlIG1hdHJpeCBmcm9tXG4gKlxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUXVhdChvdXQsIHEpIHtcbiAgdmFyIHggPSBxWzBdLFxuICAgICAgeSA9IHFbMV0sXG4gICAgICB6ID0gcVsyXSxcbiAgICAgIHcgPSBxWzNdO1xuICB2YXIgeDIgPSB4ICsgeDtcbiAgdmFyIHkyID0geSArIHk7XG4gIHZhciB6MiA9IHogKyB6O1xuICB2YXIgeHggPSB4ICogeDI7XG4gIHZhciB5eCA9IHkgKiB4MjtcbiAgdmFyIHl5ID0geSAqIHkyO1xuICB2YXIgenggPSB6ICogeDI7XG4gIHZhciB6eSA9IHogKiB5MjtcbiAgdmFyIHp6ID0geiAqIHoyO1xuICB2YXIgd3ggPSB3ICogeDI7XG4gIHZhciB3eSA9IHcgKiB5MjtcbiAgdmFyIHd6ID0gdyAqIHoyO1xuICBvdXRbMF0gPSAxIC0geXkgLSB6ejtcbiAgb3V0WzFdID0geXggKyB3ejtcbiAgb3V0WzJdID0genggLSB3eTtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0geXggLSB3ejtcbiAgb3V0WzVdID0gMSAtIHh4IC0geno7XG4gIG91dFs2XSA9IHp5ICsgd3g7XG4gIG91dFs3XSA9IDA7XG4gIG91dFs4XSA9IHp4ICsgd3k7XG4gIG91dFs5XSA9IHp5IC0gd3g7XG4gIG91dFsxMF0gPSAxIC0geHggLSB5eTtcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSAwO1xuICBvdXRbMTNdID0gMDtcbiAgb3V0WzE0XSA9IDA7XG4gIG91dFsxNV0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBmcnVzdHVtIG1hdHJpeCB3aXRoIHRoZSBnaXZlbiBib3VuZHNcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IGZydXN0dW0gbWF0cml4IHdpbGwgYmUgd3JpdHRlbiBpbnRvXG4gKiBAcGFyYW0ge051bWJlcn0gbGVmdCBMZWZ0IGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcGFyYW0ge051bWJlcn0gcmlnaHQgUmlnaHQgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7TnVtYmVyfSBib3R0b20gQm90dG9tIGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcGFyYW0ge051bWJlcn0gdG9wIFRvcCBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtOdW1iZXJ9IG5lYXIgTmVhciBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtOdW1iZXJ9IGZhciBGYXIgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJ1c3R1bShvdXQsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHRvcCwgbmVhciwgZmFyKSB7XG4gIHZhciBybCA9IDEgLyAocmlnaHQgLSBsZWZ0KTtcbiAgdmFyIHRiID0gMSAvICh0b3AgLSBib3R0b20pO1xuICB2YXIgbmYgPSAxIC8gKG5lYXIgLSBmYXIpO1xuICBvdXRbMF0gPSBuZWFyICogMiAqIHJsO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSBuZWFyICogMiAqIHRiO1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSAocmlnaHQgKyBsZWZ0KSAqIHJsO1xuICBvdXRbOV0gPSAodG9wICsgYm90dG9tKSAqIHRiO1xuICBvdXRbMTBdID0gKGZhciArIG5lYXIpICogbmY7XG4gIG91dFsxMV0gPSAtMTtcbiAgb3V0WzEyXSA9IDA7XG4gIG91dFsxM10gPSAwO1xuICBvdXRbMTRdID0gZmFyICogbmVhciAqIDIgKiBuZjtcbiAgb3V0WzE1XSA9IDA7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIHBlcnNwZWN0aXZlIHByb2plY3Rpb24gbWF0cml4IHdpdGggdGhlIGdpdmVuIGJvdW5kcy5cbiAqIFRoZSBuZWFyL2ZhciBjbGlwIHBsYW5lcyBjb3JyZXNwb25kIHRvIGEgbm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZSBaIHJhbmdlIG9mIFstMSwgMV0sXG4gKiB3aGljaCBtYXRjaGVzIFdlYkdML09wZW5HTCdzIGNsaXAgdm9sdW1lLlxuICogUGFzc2luZyBudWxsL3VuZGVmaW5lZC9ubyB2YWx1ZSBmb3IgZmFyIHdpbGwgZ2VuZXJhdGUgaW5maW5pdGUgcHJvamVjdGlvbiBtYXRyaXguXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCBmcnVzdHVtIG1hdHJpeCB3aWxsIGJlIHdyaXR0ZW4gaW50b1xuICogQHBhcmFtIHtudW1iZXJ9IGZvdnkgVmVydGljYWwgZmllbGQgb2YgdmlldyBpbiByYWRpYW5zXG4gKiBAcGFyYW0ge251bWJlcn0gYXNwZWN0IEFzcGVjdCByYXRpby4gdHlwaWNhbGx5IHZpZXdwb3J0IHdpZHRoL2hlaWdodFxuICogQHBhcmFtIHtudW1iZXJ9IG5lYXIgTmVhciBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtudW1iZXJ9IGZhciBGYXIgYm91bmQgb2YgdGhlIGZydXN0dW0sIGNhbiBiZSBudWxsIG9yIEluZmluaXR5XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBlcnNwZWN0aXZlTk8ob3V0LCBmb3Z5LCBhc3BlY3QsIG5lYXIsIGZhcikge1xuICB2YXIgZiA9IDEuMCAvIE1hdGgudGFuKGZvdnkgLyAyKSxcbiAgICAgIG5mO1xuICBvdXRbMF0gPSBmIC8gYXNwZWN0O1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSBmO1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSAwO1xuICBvdXRbOV0gPSAwO1xuICBvdXRbMTFdID0gLTE7XG4gIG91dFsxMl0gPSAwO1xuICBvdXRbMTNdID0gMDtcbiAgb3V0WzE1XSA9IDA7XG5cbiAgaWYgKGZhciAhPSBudWxsICYmIGZhciAhPT0gSW5maW5pdHkpIHtcbiAgICBuZiA9IDEgLyAobmVhciAtIGZhcik7XG4gICAgb3V0WzEwXSA9IChmYXIgKyBuZWFyKSAqIG5mO1xuICAgIG91dFsxNF0gPSAyICogZmFyICogbmVhciAqIG5mO1xuICB9IGVsc2Uge1xuICAgIG91dFsxMF0gPSAtMTtcbiAgICBvdXRbMTRdID0gLTIgKiBuZWFyO1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayBtYXQ0LnBlcnNwZWN0aXZlTk99XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHBlcnNwZWN0aXZlID0gcGVyc3BlY3RpdmVOTztcbi8qKlxuICogR2VuZXJhdGVzIGEgcGVyc3BlY3RpdmUgcHJvamVjdGlvbiBtYXRyaXggc3VpdGFibGUgZm9yIFdlYkdQVSB3aXRoIHRoZSBnaXZlbiBib3VuZHMuXG4gKiBUaGUgbmVhci9mYXIgY2xpcCBwbGFuZXMgY29ycmVzcG9uZCB0byBhIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGUgWiByYW5nZSBvZiBbMCwgMV0sXG4gKiB3aGljaCBtYXRjaGVzIFdlYkdQVS9WdWxrYW4vRGlyZWN0WC9NZXRhbCdzIGNsaXAgdm9sdW1lLlxuICogUGFzc2luZyBudWxsL3VuZGVmaW5lZC9ubyB2YWx1ZSBmb3IgZmFyIHdpbGwgZ2VuZXJhdGUgaW5maW5pdGUgcHJvamVjdGlvbiBtYXRyaXguXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCBmcnVzdHVtIG1hdHJpeCB3aWxsIGJlIHdyaXR0ZW4gaW50b1xuICogQHBhcmFtIHtudW1iZXJ9IGZvdnkgVmVydGljYWwgZmllbGQgb2YgdmlldyBpbiByYWRpYW5zXG4gKiBAcGFyYW0ge251bWJlcn0gYXNwZWN0IEFzcGVjdCByYXRpby4gdHlwaWNhbGx5IHZpZXdwb3J0IHdpZHRoL2hlaWdodFxuICogQHBhcmFtIHtudW1iZXJ9IG5lYXIgTmVhciBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtudW1iZXJ9IGZhciBGYXIgYm91bmQgb2YgdGhlIGZydXN0dW0sIGNhbiBiZSBudWxsIG9yIEluZmluaXR5XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBlcnNwZWN0aXZlWk8ob3V0LCBmb3Z5LCBhc3BlY3QsIG5lYXIsIGZhcikge1xuICB2YXIgZiA9IDEuMCAvIE1hdGgudGFuKGZvdnkgLyAyKSxcbiAgICAgIG5mO1xuICBvdXRbMF0gPSBmIC8gYXNwZWN0O1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSBmO1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSAwO1xuICBvdXRbOV0gPSAwO1xuICBvdXRbMTFdID0gLTE7XG4gIG91dFsxMl0gPSAwO1xuICBvdXRbMTNdID0gMDtcbiAgb3V0WzE1XSA9IDA7XG5cbiAgaWYgKGZhciAhPSBudWxsICYmIGZhciAhPT0gSW5maW5pdHkpIHtcbiAgICBuZiA9IDEgLyAobmVhciAtIGZhcik7XG4gICAgb3V0WzEwXSA9IGZhciAqIG5mO1xuICAgIG91dFsxNF0gPSBmYXIgKiBuZWFyICogbmY7XG4gIH0gZWxzZSB7XG4gICAgb3V0WzEwXSA9IC0xO1xuICAgIG91dFsxNF0gPSAtbmVhcjtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIHBlcnNwZWN0aXZlIHByb2plY3Rpb24gbWF0cml4IHdpdGggdGhlIGdpdmVuIGZpZWxkIG9mIHZpZXcuXG4gKiBUaGlzIGlzIHByaW1hcmlseSB1c2VmdWwgZm9yIGdlbmVyYXRpbmcgcHJvamVjdGlvbiBtYXRyaWNlcyB0byBiZSB1c2VkXG4gKiB3aXRoIHRoZSBzdGlsbCBleHBlcmllbWVudGFsIFdlYlZSIEFQSS5cbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IGZydXN0dW0gbWF0cml4IHdpbGwgYmUgd3JpdHRlbiBpbnRvXG4gKiBAcGFyYW0ge09iamVjdH0gZm92IE9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiB1cERlZ3JlZXMsIGRvd25EZWdyZWVzLCBsZWZ0RGVncmVlcywgcmlnaHREZWdyZWVzXG4gKiBAcGFyYW0ge251bWJlcn0gbmVhciBOZWFyIGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcGFyYW0ge251bWJlcn0gZmFyIEZhciBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwZXJzcGVjdGl2ZUZyb21GaWVsZE9mVmlldyhvdXQsIGZvdiwgbmVhciwgZmFyKSB7XG4gIHZhciB1cFRhbiA9IE1hdGgudGFuKGZvdi51cERlZ3JlZXMgKiBNYXRoLlBJIC8gMTgwLjApO1xuICB2YXIgZG93blRhbiA9IE1hdGgudGFuKGZvdi5kb3duRGVncmVlcyAqIE1hdGguUEkgLyAxODAuMCk7XG4gIHZhciBsZWZ0VGFuID0gTWF0aC50YW4oZm92LmxlZnREZWdyZWVzICogTWF0aC5QSSAvIDE4MC4wKTtcbiAgdmFyIHJpZ2h0VGFuID0gTWF0aC50YW4oZm92LnJpZ2h0RGVncmVlcyAqIE1hdGguUEkgLyAxODAuMCk7XG4gIHZhciB4U2NhbGUgPSAyLjAgLyAobGVmdFRhbiArIHJpZ2h0VGFuKTtcbiAgdmFyIHlTY2FsZSA9IDIuMCAvICh1cFRhbiArIGRvd25UYW4pO1xuICBvdXRbMF0gPSB4U2NhbGU7XG4gIG91dFsxXSA9IDAuMDtcbiAgb3V0WzJdID0gMC4wO1xuICBvdXRbM10gPSAwLjA7XG4gIG91dFs0XSA9IDAuMDtcbiAgb3V0WzVdID0geVNjYWxlO1xuICBvdXRbNl0gPSAwLjA7XG4gIG91dFs3XSA9IDAuMDtcbiAgb3V0WzhdID0gLSgobGVmdFRhbiAtIHJpZ2h0VGFuKSAqIHhTY2FsZSAqIDAuNSk7XG4gIG91dFs5XSA9ICh1cFRhbiAtIGRvd25UYW4pICogeVNjYWxlICogMC41O1xuICBvdXRbMTBdID0gZmFyIC8gKG5lYXIgLSBmYXIpO1xuICBvdXRbMTFdID0gLTEuMDtcbiAgb3V0WzEyXSA9IDAuMDtcbiAgb3V0WzEzXSA9IDAuMDtcbiAgb3V0WzE0XSA9IGZhciAqIG5lYXIgLyAobmVhciAtIGZhcik7XG4gIG91dFsxNV0gPSAwLjA7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIG9ydGhvZ29uYWwgcHJvamVjdGlvbiBtYXRyaXggd2l0aCB0aGUgZ2l2ZW4gYm91bmRzLlxuICogVGhlIG5lYXIvZmFyIGNsaXAgcGxhbmVzIGNvcnJlc3BvbmQgdG8gYSBub3JtYWxpemVkIGRldmljZSBjb29yZGluYXRlIFogcmFuZ2Ugb2YgWy0xLCAxXSxcbiAqIHdoaWNoIG1hdGNoZXMgV2ViR0wvT3BlbkdMJ3MgY2xpcCB2b2x1bWUuXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCBmcnVzdHVtIG1hdHJpeCB3aWxsIGJlIHdyaXR0ZW4gaW50b1xuICogQHBhcmFtIHtudW1iZXJ9IGxlZnQgTGVmdCBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtudW1iZXJ9IHJpZ2h0IFJpZ2h0IGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcGFyYW0ge251bWJlcn0gYm90dG9tIEJvdHRvbSBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtudW1iZXJ9IHRvcCBUb3AgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7bnVtYmVyfSBuZWFyIE5lYXIgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7bnVtYmVyfSBmYXIgRmFyIGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG9ydGhvTk8ob3V0LCBsZWZ0LCByaWdodCwgYm90dG9tLCB0b3AsIG5lYXIsIGZhcikge1xuICB2YXIgbHIgPSAxIC8gKGxlZnQgLSByaWdodCk7XG4gIHZhciBidCA9IDEgLyAoYm90dG9tIC0gdG9wKTtcbiAgdmFyIG5mID0gMSAvIChuZWFyIC0gZmFyKTtcbiAgb3V0WzBdID0gLTIgKiBscjtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gMDtcbiAgb3V0WzVdID0gLTIgKiBidDtcbiAgb3V0WzZdID0gMDtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gMDtcbiAgb3V0WzldID0gMDtcbiAgb3V0WzEwXSA9IDIgKiBuZjtcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSAobGVmdCArIHJpZ2h0KSAqIGxyO1xuICBvdXRbMTNdID0gKHRvcCArIGJvdHRvbSkgKiBidDtcbiAgb3V0WzE0XSA9IChmYXIgKyBuZWFyKSAqIG5mO1xuICBvdXRbMTVdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayBtYXQ0Lm9ydGhvTk99XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIG9ydGhvID0gb3J0aG9OTztcbi8qKlxuICogR2VuZXJhdGVzIGEgb3J0aG9nb25hbCBwcm9qZWN0aW9uIG1hdHJpeCB3aXRoIHRoZSBnaXZlbiBib3VuZHMuXG4gKiBUaGUgbmVhci9mYXIgY2xpcCBwbGFuZXMgY29ycmVzcG9uZCB0byBhIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGUgWiByYW5nZSBvZiBbMCwgMV0sXG4gKiB3aGljaCBtYXRjaGVzIFdlYkdQVS9WdWxrYW4vRGlyZWN0WC9NZXRhbCdzIGNsaXAgdm9sdW1lLlxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgZnJ1c3R1bSBtYXRyaXggd2lsbCBiZSB3cml0dGVuIGludG9cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZWZ0IExlZnQgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7bnVtYmVyfSByaWdodCBSaWdodCBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtudW1iZXJ9IGJvdHRvbSBCb3R0b20gYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7bnVtYmVyfSB0b3AgVG9wIGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcGFyYW0ge251bWJlcn0gbmVhciBOZWFyIGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcGFyYW0ge251bWJlcn0gZmFyIEZhciBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBvcnRob1pPKG91dCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wLCBuZWFyLCBmYXIpIHtcbiAgdmFyIGxyID0gMSAvIChsZWZ0IC0gcmlnaHQpO1xuICB2YXIgYnQgPSAxIC8gKGJvdHRvbSAtIHRvcCk7XG4gIHZhciBuZiA9IDEgLyAobmVhciAtIGZhcik7XG4gIG91dFswXSA9IC0yICogbHI7XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9IDA7XG4gIG91dFs1XSA9IC0yICogYnQ7XG4gIG91dFs2XSA9IDA7XG4gIG91dFs3XSA9IDA7XG4gIG91dFs4XSA9IDA7XG4gIG91dFs5XSA9IDA7XG4gIG91dFsxMF0gPSBuZjtcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSAobGVmdCArIHJpZ2h0KSAqIGxyO1xuICBvdXRbMTNdID0gKHRvcCArIGJvdHRvbSkgKiBidDtcbiAgb3V0WzE0XSA9IG5lYXIgKiBuZjtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIGxvb2stYXQgbWF0cml4IHdpdGggdGhlIGdpdmVuIGV5ZSBwb3NpdGlvbiwgZm9jYWwgcG9pbnQsIGFuZCB1cCBheGlzLlxuICogSWYgeW91IHdhbnQgYSBtYXRyaXggdGhhdCBhY3R1YWxseSBtYWtlcyBhbiBvYmplY3QgbG9vayBhdCBhbm90aGVyIG9iamVjdCwgeW91IHNob3VsZCB1c2UgdGFyZ2V0VG8gaW5zdGVhZC5cbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IGZydXN0dW0gbWF0cml4IHdpbGwgYmUgd3JpdHRlbiBpbnRvXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gZXllIFBvc2l0aW9uIG9mIHRoZSB2aWV3ZXJcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBjZW50ZXIgUG9pbnQgdGhlIHZpZXdlciBpcyBsb29raW5nIGF0XG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gdXAgdmVjMyBwb2ludGluZyB1cFxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsb29rQXQob3V0LCBleWUsIGNlbnRlciwgdXApIHtcbiAgdmFyIHgwLCB4MSwgeDIsIHkwLCB5MSwgeTIsIHowLCB6MSwgejIsIGxlbjtcbiAgdmFyIGV5ZXggPSBleWVbMF07XG4gIHZhciBleWV5ID0gZXllWzFdO1xuICB2YXIgZXlleiA9IGV5ZVsyXTtcbiAgdmFyIHVweCA9IHVwWzBdO1xuICB2YXIgdXB5ID0gdXBbMV07XG4gIHZhciB1cHogPSB1cFsyXTtcbiAgdmFyIGNlbnRlcnggPSBjZW50ZXJbMF07XG4gIHZhciBjZW50ZXJ5ID0gY2VudGVyWzFdO1xuICB2YXIgY2VudGVyeiA9IGNlbnRlclsyXTtcblxuICBpZiAoTWF0aC5hYnMoZXlleCAtIGNlbnRlcngpIDwgZ2xNYXRyaXguRVBTSUxPTiAmJiBNYXRoLmFicyhleWV5IC0gY2VudGVyeSkgPCBnbE1hdHJpeC5FUFNJTE9OICYmIE1hdGguYWJzKGV5ZXogLSBjZW50ZXJ6KSA8IGdsTWF0cml4LkVQU0lMT04pIHtcbiAgICByZXR1cm4gaWRlbnRpdHkob3V0KTtcbiAgfVxuXG4gIHowID0gZXlleCAtIGNlbnRlcng7XG4gIHoxID0gZXlleSAtIGNlbnRlcnk7XG4gIHoyID0gZXlleiAtIGNlbnRlcno7XG4gIGxlbiA9IDEgLyBNYXRoLmh5cG90KHowLCB6MSwgejIpO1xuICB6MCAqPSBsZW47XG4gIHoxICo9IGxlbjtcbiAgejIgKj0gbGVuO1xuICB4MCA9IHVweSAqIHoyIC0gdXB6ICogejE7XG4gIHgxID0gdXB6ICogejAgLSB1cHggKiB6MjtcbiAgeDIgPSB1cHggKiB6MSAtIHVweSAqIHowO1xuICBsZW4gPSBNYXRoLmh5cG90KHgwLCB4MSwgeDIpO1xuXG4gIGlmICghbGVuKSB7XG4gICAgeDAgPSAwO1xuICAgIHgxID0gMDtcbiAgICB4MiA9IDA7XG4gIH0gZWxzZSB7XG4gICAgbGVuID0gMSAvIGxlbjtcbiAgICB4MCAqPSBsZW47XG4gICAgeDEgKj0gbGVuO1xuICAgIHgyICo9IGxlbjtcbiAgfVxuXG4gIHkwID0gejEgKiB4MiAtIHoyICogeDE7XG4gIHkxID0gejIgKiB4MCAtIHowICogeDI7XG4gIHkyID0gejAgKiB4MSAtIHoxICogeDA7XG4gIGxlbiA9IE1hdGguaHlwb3QoeTAsIHkxLCB5Mik7XG5cbiAgaWYgKCFsZW4pIHtcbiAgICB5MCA9IDA7XG4gICAgeTEgPSAwO1xuICAgIHkyID0gMDtcbiAgfSBlbHNlIHtcbiAgICBsZW4gPSAxIC8gbGVuO1xuICAgIHkwICo9IGxlbjtcbiAgICB5MSAqPSBsZW47XG4gICAgeTIgKj0gbGVuO1xuICB9XG5cbiAgb3V0WzBdID0geDA7XG4gIG91dFsxXSA9IHkwO1xuICBvdXRbMl0gPSB6MDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0geDE7XG4gIG91dFs1XSA9IHkxO1xuICBvdXRbNl0gPSB6MTtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0geDI7XG4gIG91dFs5XSA9IHkyO1xuICBvdXRbMTBdID0gejI7XG4gIG91dFsxMV0gPSAwO1xuICBvdXRbMTJdID0gLSh4MCAqIGV5ZXggKyB4MSAqIGV5ZXkgKyB4MiAqIGV5ZXopO1xuICBvdXRbMTNdID0gLSh5MCAqIGV5ZXggKyB5MSAqIGV5ZXkgKyB5MiAqIGV5ZXopO1xuICBvdXRbMTRdID0gLSh6MCAqIGV5ZXggKyB6MSAqIGV5ZXkgKyB6MiAqIGV5ZXopO1xuICBvdXRbMTVdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogR2VuZXJhdGVzIGEgbWF0cml4IHRoYXQgbWFrZXMgc29tZXRoaW5nIGxvb2sgYXQgc29tZXRoaW5nIGVsc2UuXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCBmcnVzdHVtIG1hdHJpeCB3aWxsIGJlIHdyaXR0ZW4gaW50b1xuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGV5ZSBQb3NpdGlvbiBvZiB0aGUgdmlld2VyXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gY2VudGVyIFBvaW50IHRoZSB2aWV3ZXIgaXMgbG9va2luZyBhdFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHVwIHZlYzMgcG9pbnRpbmcgdXBcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdGFyZ2V0VG8ob3V0LCBleWUsIHRhcmdldCwgdXApIHtcbiAgdmFyIGV5ZXggPSBleWVbMF0sXG4gICAgICBleWV5ID0gZXllWzFdLFxuICAgICAgZXlleiA9IGV5ZVsyXSxcbiAgICAgIHVweCA9IHVwWzBdLFxuICAgICAgdXB5ID0gdXBbMV0sXG4gICAgICB1cHogPSB1cFsyXTtcbiAgdmFyIHowID0gZXlleCAtIHRhcmdldFswXSxcbiAgICAgIHoxID0gZXlleSAtIHRhcmdldFsxXSxcbiAgICAgIHoyID0gZXlleiAtIHRhcmdldFsyXTtcbiAgdmFyIGxlbiA9IHowICogejAgKyB6MSAqIHoxICsgejIgKiB6MjtcblxuICBpZiAobGVuID4gMCkge1xuICAgIGxlbiA9IDEgLyBNYXRoLnNxcnQobGVuKTtcbiAgICB6MCAqPSBsZW47XG4gICAgejEgKj0gbGVuO1xuICAgIHoyICo9IGxlbjtcbiAgfVxuXG4gIHZhciB4MCA9IHVweSAqIHoyIC0gdXB6ICogejEsXG4gICAgICB4MSA9IHVweiAqIHowIC0gdXB4ICogejIsXG4gICAgICB4MiA9IHVweCAqIHoxIC0gdXB5ICogejA7XG4gIGxlbiA9IHgwICogeDAgKyB4MSAqIHgxICsgeDIgKiB4MjtcblxuICBpZiAobGVuID4gMCkge1xuICAgIGxlbiA9IDEgLyBNYXRoLnNxcnQobGVuKTtcbiAgICB4MCAqPSBsZW47XG4gICAgeDEgKj0gbGVuO1xuICAgIHgyICo9IGxlbjtcbiAgfVxuXG4gIG91dFswXSA9IHgwO1xuICBvdXRbMV0gPSB4MTtcbiAgb3V0WzJdID0geDI7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9IHoxICogeDIgLSB6MiAqIHgxO1xuICBvdXRbNV0gPSB6MiAqIHgwIC0gejAgKiB4MjtcbiAgb3V0WzZdID0gejAgKiB4MSAtIHoxICogeDA7XG4gIG91dFs3XSA9IDA7XG4gIG91dFs4XSA9IHowO1xuICBvdXRbOV0gPSB6MTtcbiAgb3V0WzEwXSA9IHoyO1xuICBvdXRbMTFdID0gMDtcbiAgb3V0WzEyXSA9IGV5ZXg7XG4gIG91dFsxM10gPSBleWV5O1xuICBvdXRbMTRdID0gZXllejtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtYXQ0XG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgbWF0cml4IHRvIHJlcHJlc2VudCBhcyBhIHN0cmluZ1xuICogQHJldHVybnMge1N0cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtYXRyaXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyKGEpIHtcbiAgcmV0dXJuIFwibWF0NChcIiArIGFbMF0gKyBcIiwgXCIgKyBhWzFdICsgXCIsIFwiICsgYVsyXSArIFwiLCBcIiArIGFbM10gKyBcIiwgXCIgKyBhWzRdICsgXCIsIFwiICsgYVs1XSArIFwiLCBcIiArIGFbNl0gKyBcIiwgXCIgKyBhWzddICsgXCIsIFwiICsgYVs4XSArIFwiLCBcIiArIGFbOV0gKyBcIiwgXCIgKyBhWzEwXSArIFwiLCBcIiArIGFbMTFdICsgXCIsIFwiICsgYVsxMl0gKyBcIiwgXCIgKyBhWzEzXSArIFwiLCBcIiArIGFbMTRdICsgXCIsIFwiICsgYVsxNV0gKyBcIilcIjtcbn1cbi8qKlxuICogUmV0dXJucyBGcm9iZW5pdXMgbm9ybSBvZiBhIG1hdDRcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgbWF0cml4IHRvIGNhbGN1bGF0ZSBGcm9iZW5pdXMgbm9ybSBvZlxuICogQHJldHVybnMge051bWJlcn0gRnJvYmVuaXVzIG5vcm1cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvYihhKSB7XG4gIHJldHVybiBNYXRoLmh5cG90KGFbMF0sIGFbMV0sIGFbMl0sIGFbM10sIGFbNF0sIGFbNV0sIGFbNl0sIGFbN10sIGFbOF0sIGFbOV0sIGFbMTBdLCBhWzExXSwgYVsxMl0sIGFbMTNdLCBhWzE0XSwgYVsxNV0pO1xufVxuLyoqXG4gKiBBZGRzIHR3byBtYXQ0J3NcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXTtcbiAgb3V0WzJdID0gYVsyXSArIGJbMl07XG4gIG91dFszXSA9IGFbM10gKyBiWzNdO1xuICBvdXRbNF0gPSBhWzRdICsgYls0XTtcbiAgb3V0WzVdID0gYVs1XSArIGJbNV07XG4gIG91dFs2XSA9IGFbNl0gKyBiWzZdO1xuICBvdXRbN10gPSBhWzddICsgYls3XTtcbiAgb3V0WzhdID0gYVs4XSArIGJbOF07XG4gIG91dFs5XSA9IGFbOV0gKyBiWzldO1xuICBvdXRbMTBdID0gYVsxMF0gKyBiWzEwXTtcbiAgb3V0WzExXSA9IGFbMTFdICsgYlsxMV07XG4gIG91dFsxMl0gPSBhWzEyXSArIGJbMTJdO1xuICBvdXRbMTNdID0gYVsxM10gKyBiWzEzXTtcbiAgb3V0WzE0XSA9IGFbMTRdICsgYlsxNF07XG4gIG91dFsxNV0gPSBhWzE1XSArIGJbMTVdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTdWJ0cmFjdHMgbWF0cml4IGIgZnJvbSBtYXRyaXggYVxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnRyYWN0KG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdIC0gYlswXTtcbiAgb3V0WzFdID0gYVsxXSAtIGJbMV07XG4gIG91dFsyXSA9IGFbMl0gLSBiWzJdO1xuICBvdXRbM10gPSBhWzNdIC0gYlszXTtcbiAgb3V0WzRdID0gYVs0XSAtIGJbNF07XG4gIG91dFs1XSA9IGFbNV0gLSBiWzVdO1xuICBvdXRbNl0gPSBhWzZdIC0gYls2XTtcbiAgb3V0WzddID0gYVs3XSAtIGJbN107XG4gIG91dFs4XSA9IGFbOF0gLSBiWzhdO1xuICBvdXRbOV0gPSBhWzldIC0gYls5XTtcbiAgb3V0WzEwXSA9IGFbMTBdIC0gYlsxMF07XG4gIG91dFsxMV0gPSBhWzExXSAtIGJbMTFdO1xuICBvdXRbMTJdID0gYVsxMl0gLSBiWzEyXTtcbiAgb3V0WzEzXSA9IGFbMTNdIC0gYlsxM107XG4gIG91dFsxNF0gPSBhWzE0XSAtIGJbMTRdO1xuICBvdXRbMTVdID0gYVsxNV0gLSBiWzE1XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTXVsdGlwbHkgZWFjaCBlbGVtZW50IG9mIHRoZSBtYXRyaXggYnkgYSBzY2FsYXIuXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIHRoZSBtYXRyaXggdG8gc2NhbGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBiIGFtb3VudCB0byBzY2FsZSB0aGUgbWF0cml4J3MgZWxlbWVudHMgYnlcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXIob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKiBiO1xuICBvdXRbMV0gPSBhWzFdICogYjtcbiAgb3V0WzJdID0gYVsyXSAqIGI7XG4gIG91dFszXSA9IGFbM10gKiBiO1xuICBvdXRbNF0gPSBhWzRdICogYjtcbiAgb3V0WzVdID0gYVs1XSAqIGI7XG4gIG91dFs2XSA9IGFbNl0gKiBiO1xuICBvdXRbN10gPSBhWzddICogYjtcbiAgb3V0WzhdID0gYVs4XSAqIGI7XG4gIG91dFs5XSA9IGFbOV0gKiBiO1xuICBvdXRbMTBdID0gYVsxMF0gKiBiO1xuICBvdXRbMTFdID0gYVsxMV0gKiBiO1xuICBvdXRbMTJdID0gYVsxMl0gKiBiO1xuICBvdXRbMTNdID0gYVsxM10gKiBiO1xuICBvdXRbMTRdID0gYVsxNF0gKiBiO1xuICBvdXRbMTVdID0gYVsxNV0gKiBiO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBBZGRzIHR3byBtYXQ0J3MgYWZ0ZXIgbXVsdGlwbHlpbmcgZWFjaCBlbGVtZW50IG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBieSBhIHNjYWxhciB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHNjYWxlIHRoZSBhbW91bnQgdG8gc2NhbGUgYidzIGVsZW1lbnRzIGJ5IGJlZm9yZSBhZGRpbmdcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXJBbmRBZGQob3V0LCBhLCBiLCBzY2FsZSkge1xuICBvdXRbMF0gPSBhWzBdICsgYlswXSAqIHNjYWxlO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXSAqIHNjYWxlO1xuICBvdXRbMl0gPSBhWzJdICsgYlsyXSAqIHNjYWxlO1xuICBvdXRbM10gPSBhWzNdICsgYlszXSAqIHNjYWxlO1xuICBvdXRbNF0gPSBhWzRdICsgYls0XSAqIHNjYWxlO1xuICBvdXRbNV0gPSBhWzVdICsgYls1XSAqIHNjYWxlO1xuICBvdXRbNl0gPSBhWzZdICsgYls2XSAqIHNjYWxlO1xuICBvdXRbN10gPSBhWzddICsgYls3XSAqIHNjYWxlO1xuICBvdXRbOF0gPSBhWzhdICsgYls4XSAqIHNjYWxlO1xuICBvdXRbOV0gPSBhWzldICsgYls5XSAqIHNjYWxlO1xuICBvdXRbMTBdID0gYVsxMF0gKyBiWzEwXSAqIHNjYWxlO1xuICBvdXRbMTFdID0gYVsxMV0gKyBiWzExXSAqIHNjYWxlO1xuICBvdXRbMTJdID0gYVsxMl0gKyBiWzEyXSAqIHNjYWxlO1xuICBvdXRbMTNdID0gYVsxM10gKyBiWzEzXSAqIHNjYWxlO1xuICBvdXRbMTRdID0gYVsxNF0gKyBiWzE0XSAqIHNjYWxlO1xuICBvdXRbMTVdID0gYVsxNV0gKyBiWzE1XSAqIHNjYWxlO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0pXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgVGhlIGZpcnN0IG1hdHJpeC5cbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBiIFRoZSBzZWNvbmQgbWF0cml4LlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleGFjdEVxdWFscyhhLCBiKSB7XG4gIHJldHVybiBhWzBdID09PSBiWzBdICYmIGFbMV0gPT09IGJbMV0gJiYgYVsyXSA9PT0gYlsyXSAmJiBhWzNdID09PSBiWzNdICYmIGFbNF0gPT09IGJbNF0gJiYgYVs1XSA9PT0gYls1XSAmJiBhWzZdID09PSBiWzZdICYmIGFbN10gPT09IGJbN10gJiYgYVs4XSA9PT0gYls4XSAmJiBhWzldID09PSBiWzldICYmIGFbMTBdID09PSBiWzEwXSAmJiBhWzExXSA9PT0gYlsxMV0gJiYgYVsxMl0gPT09IGJbMTJdICYmIGFbMTNdID09PSBiWzEzXSAmJiBhWzE0XSA9PT0gYlsxNF0gJiYgYVsxNV0gPT09IGJbMTVdO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZlIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24uXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgVGhlIGZpcnN0IG1hdHJpeC5cbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBiIFRoZSBzZWNvbmQgbWF0cml4LlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbHMoYSwgYikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdO1xuICB2YXIgYTQgPSBhWzRdLFxuICAgICAgYTUgPSBhWzVdLFxuICAgICAgYTYgPSBhWzZdLFxuICAgICAgYTcgPSBhWzddO1xuICB2YXIgYTggPSBhWzhdLFxuICAgICAgYTkgPSBhWzldLFxuICAgICAgYTEwID0gYVsxMF0sXG4gICAgICBhMTEgPSBhWzExXTtcbiAgdmFyIGExMiA9IGFbMTJdLFxuICAgICAgYTEzID0gYVsxM10sXG4gICAgICBhMTQgPSBhWzE0XSxcbiAgICAgIGExNSA9IGFbMTVdO1xuICB2YXIgYjAgPSBiWzBdLFxuICAgICAgYjEgPSBiWzFdLFxuICAgICAgYjIgPSBiWzJdLFxuICAgICAgYjMgPSBiWzNdO1xuICB2YXIgYjQgPSBiWzRdLFxuICAgICAgYjUgPSBiWzVdLFxuICAgICAgYjYgPSBiWzZdLFxuICAgICAgYjcgPSBiWzddO1xuICB2YXIgYjggPSBiWzhdLFxuICAgICAgYjkgPSBiWzldLFxuICAgICAgYjEwID0gYlsxMF0sXG4gICAgICBiMTEgPSBiWzExXTtcbiAgdmFyIGIxMiA9IGJbMTJdLFxuICAgICAgYjEzID0gYlsxM10sXG4gICAgICBiMTQgPSBiWzE0XSxcbiAgICAgIGIxNSA9IGJbMTVdO1xuICByZXR1cm4gTWF0aC5hYnMoYTAgLSBiMCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTApLCBNYXRoLmFicyhiMCkpICYmIE1hdGguYWJzKGExIC0gYjEpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExKSwgTWF0aC5hYnMoYjEpKSAmJiBNYXRoLmFicyhhMiAtIGIyKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMiksIE1hdGguYWJzKGIyKSkgJiYgTWF0aC5hYnMoYTMgLSBiMykgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTMpLCBNYXRoLmFicyhiMykpICYmIE1hdGguYWJzKGE0IC0gYjQpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE0KSwgTWF0aC5hYnMoYjQpKSAmJiBNYXRoLmFicyhhNSAtIGI1KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNSksIE1hdGguYWJzKGI1KSkgJiYgTWF0aC5hYnMoYTYgLSBiNikgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTYpLCBNYXRoLmFicyhiNikpICYmIE1hdGguYWJzKGE3IC0gYjcpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE3KSwgTWF0aC5hYnMoYjcpKSAmJiBNYXRoLmFicyhhOCAtIGI4KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhOCksIE1hdGguYWJzKGI4KSkgJiYgTWF0aC5hYnMoYTkgLSBiOSkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTkpLCBNYXRoLmFicyhiOSkpICYmIE1hdGguYWJzKGExMCAtIGIxMCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTEwKSwgTWF0aC5hYnMoYjEwKSkgJiYgTWF0aC5hYnMoYTExIC0gYjExKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMTEpLCBNYXRoLmFicyhiMTEpKSAmJiBNYXRoLmFicyhhMTIgLSBiMTIpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExMiksIE1hdGguYWJzKGIxMikpICYmIE1hdGguYWJzKGExMyAtIGIxMykgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTEzKSwgTWF0aC5hYnMoYjEzKSkgJiYgTWF0aC5hYnMoYTE0IC0gYjE0KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMTQpLCBNYXRoLmFicyhiMTQpKSAmJiBNYXRoLmFicyhhMTUgLSBiMTUpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExNSksIE1hdGguYWJzKGIxNSkpO1xufVxuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIG1hdDQubXVsdGlwbHl9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIG11bCA9IG11bHRpcGx5O1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIG1hdDQuc3VidHJhY3R9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHN1YiA9IHN1YnRyYWN0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-matrix/esm/mat4.js\n"); /***/ }), /***/ "./node_modules/gl-matrix/esm/quat.js": /*!********************************************!*\ !*** ./node_modules/gl-matrix/esm/quat.js ***! \********************************************/ /*! exports provided: create, identity, setAxisAngle, getAxisAngle, getAngle, multiply, rotateX, rotateY, rotateZ, calculateW, exp, ln, pow, slerp, random, invert, conjugate, fromMat3, fromEuler, str, clone, fromValues, copy, set, add, mul, scale, dot, lerp, length, len, squaredLength, sqrLen, normalize, exactEquals, equals, rotationTo, sqlerp, setAxes */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setAxisAngle\", function() { return setAxisAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAxisAngle\", function() { return getAxisAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAngle\", function() { return getAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateX\", function() { return rotateX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateY\", function() { return rotateY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateZ\", function() { return rotateZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculateW\", function() { return calculateW; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exp\", function() { return exp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ln\", function() { return ln; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pow\", function() { return pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slerp\", function() { return slerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return random; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conjugate\", function() { return conjugate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromMat3\", function() { return fromMat3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromEuler\", function() { return fromEuler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dot\", function() { return dot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"length\", function() { return length; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"len\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredLength\", function() { return squaredLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrLen\", function() { return sqrLen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotationTo\", function() { return rotationTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqlerp\", function() { return sqlerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setAxes\", function() { return setAxes; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n/* harmony import */ var _mat3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mat3.js */ \"./node_modules/gl-matrix/esm/mat3.js\");\n/* harmony import */ var _vec3_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vec3.js */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var _vec4_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./vec4.js */ \"./node_modules/gl-matrix/esm/vec4.js\");\n\n\n\n\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n out[3] = 1;\n return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nfunction identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nfunction setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param {vec3} out_axis Vector receiving the axis of rotation\n * @param {ReadonlyQuat} q Quaternion to be decomposed\n * @return {Number} Angle, in radians, of the rotation\n */\n\nfunction getAxisAngle(out_axis, q) {\n var rad = Math.acos(q[3]) * 2.0;\n var s = Math.sin(rad / 2.0);\n\n if (s > _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n\n return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param {ReadonlyQuat} a Origin unit quaternion\n * @param {ReadonlyQuat} b Destination unit quaternion\n * @return {Number} Angle, in radians, between the two quaternions\n */\n\nfunction getAngle(a, b) {\n var dotproduct = dot(a, b);\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nfunction multiply(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nfunction rotateX(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nfunction rotateY(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var by = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nfunction rotateZ(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bz = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nfunction calculateW(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nfunction exp(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var et = Math.exp(w);\n var s = r > 0 ? et * Math.sin(r) / r : 0;\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nfunction ln(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var t = r > 0 ? Math.atan2(r, w) / r : 0;\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nfunction pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nfunction slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nfunction random(out) {\n // Implementation of http://planning.cs.uiuc.edu/node198.html\n // TODO: Calling random 3 times is probably not the fastest solution\n var u1 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]();\n var u2 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]();\n var u3 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]();\n var sqrt1MinusU1 = Math.sqrt(1 - u1);\n var sqrtU1 = Math.sqrt(u1);\n out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nfunction invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nfunction conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nfunction fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n var j = (i + 1) % 3;\n var k = (i + 2) % 3;\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nfunction fromEuler(out, x, y, z) {\n var halfToRad = 0.5 * Math.PI / 180.0;\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n var sx = Math.sin(x);\n var cx = Math.cos(x);\n var sy = Math.sin(y);\n var cy = Math.cos(y);\n var sz = Math.sin(z);\n var cz = Math.cos(z);\n out[0] = sx * cy * cz - cx * sy * sz;\n out[1] = cx * sy * cz + sx * cy * sz;\n out[2] = cx * cy * sz - sx * sy * cz;\n out[3] = cx * cy * cz + sx * sy * sz;\n return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nvar clone = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"clone\"];\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nvar fromValues = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"fromValues\"];\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nvar copy = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"copy\"];\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nvar set = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"set\"];\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nvar add = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"add\"];\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nvar scale = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"scale\"];\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nvar dot = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"dot\"];\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nvar lerp = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"lerp\"];\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nvar length = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"length\"];\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nvar len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nvar squaredLength = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"squaredLength\"];\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nvar normalize = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"normalize\"];\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nvar exactEquals = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"exactEquals\"];\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nvar equals = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"equals\"];\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nvar rotationTo = function () {\n var tmpvec3 = _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"create\"]();\n var xUnitVec3 = _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"fromValues\"](1, 0, 0);\n var yUnitVec3 = _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"fromValues\"](0, 1, 0);\n return function (out, a, b) {\n var dot = _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"dot\"](a, b);\n\n if (dot < -0.999999) {\n _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"cross\"](tmpvec3, xUnitVec3, a);\n if (_vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"len\"](tmpvec3) < 0.000001) _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"cross\"](tmpvec3, yUnitVec3, a);\n _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"](tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"cross\"](tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n }\n };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nvar sqlerp = function () {\n var temp1 = create();\n var temp2 = create();\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n return out;\n };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nvar setAxes = function () {\n var matr = _mat3_js__WEBPACK_IMPORTED_MODULE_1__[\"create\"]();\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n return normalize(out, fromMat3(out, matr));\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS9xdWF0LmpzPzkyNTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QztBQUNOO0FBQ0E7QUFDQTtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1COztBQUVuQyxNQUFNLHFEQUFtQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxLQUFLO0FBQ2pCLFlBQVksYUFBYTtBQUN6QixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBOztBQUVBLFVBQVUsa0RBQWdCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGFBQWE7QUFDekIsWUFBWSxhQUFhO0FBQ3pCLFlBQVksT0FBTztBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQyxnREFBZ0Q7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdILG9CQUFvQixrREFBZ0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0EsV0FBVyxpREFBZTtBQUMxQixXQUFXLGlEQUFlO0FBQzFCLFdBQVcsaURBQWU7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjtBQUNBOztBQUVPLFlBQVksOENBQVU7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjtBQUNBOztBQUVPLGlCQUFpQixtREFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjtBQUNBOztBQUVPLFdBQVcsNkNBQVM7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7QUFDQTs7QUFFTyxVQUFVLDRDQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjtBQUNBOztBQUVPLFVBQVUsNENBQVE7QUFDekI7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjtBQUNBOztBQUVPLFlBQVksOENBQVU7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFTyxVQUFVLDRDQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7QUFDQTs7QUFFTyxXQUFXLDZDQUFTO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU8sYUFBYSwrQ0FBVztBQUMvQjtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVPLG9CQUFvQixzREFBa0I7QUFDN0M7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7O0FBRU8sZ0JBQWdCLGtEQUFjO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPLGtCQUFrQixvREFBZ0I7QUFDekM7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7O0FBRU8sYUFBYSwrQ0FBVztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IsK0NBQVc7QUFDM0Isa0JBQWtCLG1EQUFlO0FBQ2pDLGtCQUFrQixtREFBZTtBQUNqQztBQUNBLGNBQWMsNENBQVE7O0FBRXRCO0FBQ0EsTUFBTSw4Q0FBVTtBQUNoQixVQUFVLDRDQUFRLHNCQUFzQiw4Q0FBVTtBQUNsRCxNQUFNLGtEQUFjO0FBQ3BCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxNQUFNLDhDQUFVO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGFBQWEsK0NBQVc7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC1tYXRyaXgvZXNtL3F1YXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBnbE1hdHJpeCBmcm9tIFwiLi9jb21tb24uanNcIjtcbmltcG9ydCAqIGFzIG1hdDMgZnJvbSBcIi4vbWF0My5qc1wiO1xuaW1wb3J0ICogYXMgdmVjMyBmcm9tIFwiLi92ZWMzLmpzXCI7XG5pbXBvcnQgKiBhcyB2ZWM0IGZyb20gXCIuL3ZlYzQuanNcIjtcbi8qKlxuICogUXVhdGVybmlvblxuICogQG1vZHVsZSBxdWF0XG4gKi9cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGlkZW50aXR5IHF1YXRcbiAqXG4gKiBAcmV0dXJucyB7cXVhdH0gYSBuZXcgcXVhdGVybmlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg0KTtcblxuICBpZiAoZ2xNYXRyaXguQVJSQVlfVFlQRSAhPSBGbG9hdDMyQXJyYXkpIHtcbiAgICBvdXRbMF0gPSAwO1xuICAgIG91dFsxXSA9IDA7XG4gICAgb3V0WzJdID0gMDtcbiAgfVxuXG4gIG91dFszXSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCBhIHF1YXQgdG8gdGhlIGlkZW50aXR5IHF1YXRlcm5pb25cbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpdHkob3V0KSB7XG4gIG91dFswXSA9IDA7XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldHMgYSBxdWF0IGZyb20gdGhlIGdpdmVuIGFuZ2xlIGFuZCByb3RhdGlvbiBheGlzLFxuICogdGhlbiByZXR1cm5zIGl0LlxuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGF4aXMgdGhlIGF4aXMgYXJvdW5kIHdoaWNoIHRvIHJvdGF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IHJhZCB0aGUgYW5nbGUgaW4gcmFkaWFuc1xuICogQHJldHVybnMge3F1YXR9IG91dFxuICoqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0QXhpc0FuZ2xlKG91dCwgYXhpcywgcmFkKSB7XG4gIHJhZCA9IHJhZCAqIDAuNTtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQpO1xuICBvdXRbMF0gPSBzICogYXhpc1swXTtcbiAgb3V0WzFdID0gcyAqIGF4aXNbMV07XG4gIG91dFsyXSA9IHMgKiBheGlzWzJdO1xuICBvdXRbM10gPSBNYXRoLmNvcyhyYWQpO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBHZXRzIHRoZSByb3RhdGlvbiBheGlzIGFuZCBhbmdsZSBmb3IgYSBnaXZlblxuICogIHF1YXRlcm5pb24uIElmIGEgcXVhdGVybmlvbiBpcyBjcmVhdGVkIHdpdGhcbiAqICBzZXRBeGlzQW5nbGUsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBzYW1lXG4gKiAgdmFsdWVzIGFzIHByb3ZpZGllZCBpbiB0aGUgb3JpZ2luYWwgcGFyYW1ldGVyIGxpc3RcbiAqICBPUiBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB2YWx1ZXMuXG4gKiBFeGFtcGxlOiBUaGUgcXVhdGVybmlvbiBmb3JtZWQgYnkgYXhpcyBbMCwgMCwgMV0gYW5kXG4gKiAgYW5nbGUgLTkwIGlzIHRoZSBzYW1lIGFzIHRoZSBxdWF0ZXJuaW9uIGZvcm1lZCBieVxuICogIFswLCAwLCAxXSBhbmQgMjcwLiBUaGlzIG1ldGhvZCBmYXZvcnMgdGhlIGxhdHRlci5cbiAqIEBwYXJhbSAge3ZlYzN9IG91dF9heGlzICBWZWN0b3IgcmVjZWl2aW5nIHRoZSBheGlzIG9mIHJvdGF0aW9uXG4gKiBAcGFyYW0gIHtSZWFkb25seVF1YXR9IHEgICAgIFF1YXRlcm5pb24gdG8gYmUgZGVjb21wb3NlZFxuICogQHJldHVybiB7TnVtYmVyfSAgICAgQW5nbGUsIGluIHJhZGlhbnMsIG9mIHRoZSByb3RhdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBeGlzQW5nbGUob3V0X2F4aXMsIHEpIHtcbiAgdmFyIHJhZCA9IE1hdGguYWNvcyhxWzNdKSAqIDIuMDtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQgLyAyLjApO1xuXG4gIGlmIChzID4gZ2xNYXRyaXguRVBTSUxPTikge1xuICAgIG91dF9heGlzWzBdID0gcVswXSAvIHM7XG4gICAgb3V0X2F4aXNbMV0gPSBxWzFdIC8gcztcbiAgICBvdXRfYXhpc1syXSA9IHFbMl0gLyBzO1xuICB9IGVsc2Uge1xuICAgIC8vIElmIHMgaXMgemVybywgcmV0dXJuIGFueSBheGlzIChubyByb3RhdGlvbiAtIGF4aXMgZG9lcyBub3QgbWF0dGVyKVxuICAgIG91dF9heGlzWzBdID0gMTtcbiAgICBvdXRfYXhpc1sxXSA9IDA7XG4gICAgb3V0X2F4aXNbMl0gPSAwO1xuICB9XG5cbiAgcmV0dXJuIHJhZDtcbn1cbi8qKlxuICogR2V0cyB0aGUgYW5ndWxhciBkaXN0YW5jZSBiZXR3ZWVuIHR3byB1bml0IHF1YXRlcm5pb25zXG4gKlxuICogQHBhcmFtICB7UmVhZG9ubHlRdWF0fSBhICAgICBPcmlnaW4gdW5pdCBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0gIHtSZWFkb25seVF1YXR9IGIgICAgIERlc3RpbmF0aW9uIHVuaXQgcXVhdGVybmlvblxuICogQHJldHVybiB7TnVtYmVyfSAgICAgQW5nbGUsIGluIHJhZGlhbnMsIGJldHdlZW4gdGhlIHR3byBxdWF0ZXJuaW9uc1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbmdsZShhLCBiKSB7XG4gIHZhciBkb3Rwcm9kdWN0ID0gZG90KGEsIGIpO1xuICByZXR1cm4gTWF0aC5hY29zKDIgKiBkb3Rwcm9kdWN0ICogZG90cHJvZHVjdCAtIDEpO1xufVxuLyoqXG4gKiBNdWx0aXBsaWVzIHR3byBxdWF0J3NcbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHkob3V0LCBhLCBiKSB7XG4gIHZhciBheCA9IGFbMF0sXG4gICAgICBheSA9IGFbMV0sXG4gICAgICBheiA9IGFbMl0sXG4gICAgICBhdyA9IGFbM107XG4gIHZhciBieCA9IGJbMF0sXG4gICAgICBieSA9IGJbMV0sXG4gICAgICBieiA9IGJbMl0sXG4gICAgICBidyA9IGJbM107XG4gIG91dFswXSA9IGF4ICogYncgKyBhdyAqIGJ4ICsgYXkgKiBieiAtIGF6ICogYnk7XG4gIG91dFsxXSA9IGF5ICogYncgKyBhdyAqIGJ5ICsgYXogKiBieCAtIGF4ICogYno7XG4gIG91dFsyXSA9IGF6ICogYncgKyBhdyAqIGJ6ICsgYXggKiBieSAtIGF5ICogYng7XG4gIG91dFszXSA9IGF3ICogYncgLSBheCAqIGJ4IC0gYXkgKiBieSAtIGF6ICogYno7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZXMgYSBxdWF0ZXJuaW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWCBheGlzXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgcXVhdCByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgcXVhdCB0byByb3RhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSByYWQgYW5nbGUgKGluIHJhZGlhbnMpIHRvIHJvdGF0ZVxuICogQHJldHVybnMge3F1YXR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVYKG91dCwgYSwgcmFkKSB7XG4gIHJhZCAqPSAwLjU7XG4gIHZhciBheCA9IGFbMF0sXG4gICAgICBheSA9IGFbMV0sXG4gICAgICBheiA9IGFbMl0sXG4gICAgICBhdyA9IGFbM107XG4gIHZhciBieCA9IE1hdGguc2luKHJhZCksXG4gICAgICBidyA9IE1hdGguY29zKHJhZCk7XG4gIG91dFswXSA9IGF4ICogYncgKyBhdyAqIGJ4O1xuICBvdXRbMV0gPSBheSAqIGJ3ICsgYXogKiBieDtcbiAgb3V0WzJdID0gYXogKiBidyAtIGF5ICogYng7XG4gIG91dFszXSA9IGF3ICogYncgLSBheCAqIGJ4O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGVzIGEgcXVhdGVybmlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpc1xuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHF1YXQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHF1YXQgdG8gcm90YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gcmFkIGFuZ2xlIChpbiByYWRpYW5zKSB0byByb3RhdGVcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlWShvdXQsIGEsIHJhZCkge1xuICByYWQgKj0gMC41O1xuICB2YXIgYXggPSBhWzBdLFxuICAgICAgYXkgPSBhWzFdLFxuICAgICAgYXogPSBhWzJdLFxuICAgICAgYXcgPSBhWzNdO1xuICB2YXIgYnkgPSBNYXRoLnNpbihyYWQpLFxuICAgICAgYncgPSBNYXRoLmNvcyhyYWQpO1xuICBvdXRbMF0gPSBheCAqIGJ3IC0gYXogKiBieTtcbiAgb3V0WzFdID0gYXkgKiBidyArIGF3ICogYnk7XG4gIG91dFsyXSA9IGF6ICogYncgKyBheCAqIGJ5O1xuICBvdXRbM10gPSBhdyAqIGJ3IC0gYXkgKiBieTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIHF1YXRlcm5pb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBaIGF4aXNcbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCBxdWF0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSBxdWF0IHRvIHJvdGF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHJhZCBhbmdsZSAoaW4gcmFkaWFucykgdG8gcm90YXRlXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZVoob3V0LCBhLCByYWQpIHtcbiAgcmFkICo9IDAuNTtcbiAgdmFyIGF4ID0gYVswXSxcbiAgICAgIGF5ID0gYVsxXSxcbiAgICAgIGF6ID0gYVsyXSxcbiAgICAgIGF3ID0gYVszXTtcbiAgdmFyIGJ6ID0gTWF0aC5zaW4ocmFkKSxcbiAgICAgIGJ3ID0gTWF0aC5jb3MocmFkKTtcbiAgb3V0WzBdID0gYXggKiBidyArIGF5ICogYno7XG4gIG91dFsxXSA9IGF5ICogYncgLSBheCAqIGJ6O1xuICBvdXRbMl0gPSBheiAqIGJ3ICsgYXcgKiBiejtcbiAgb3V0WzNdID0gYXcgKiBidyAtIGF6ICogYno7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIFcgY29tcG9uZW50IG9mIGEgcXVhdCBmcm9tIHRoZSBYLCBZLCBhbmQgWiBjb21wb25lbnRzLlxuICogQXNzdW1lcyB0aGF0IHF1YXRlcm5pb24gaXMgMSB1bml0IGluIGxlbmd0aC5cbiAqIEFueSBleGlzdGluZyBXIGNvbXBvbmVudCB3aWxsIGJlIGlnbm9yZWQuXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSBxdWF0IHRvIGNhbGN1bGF0ZSBXIGNvbXBvbmVudCBvZlxuICogQHJldHVybnMge3F1YXR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVXKG91dCwgYSkge1xuICB2YXIgeCA9IGFbMF0sXG4gICAgICB5ID0gYVsxXSxcbiAgICAgIHogPSBhWzJdO1xuICBvdXRbMF0gPSB4O1xuICBvdXRbMV0gPSB5O1xuICBvdXRbMl0gPSB6O1xuICBvdXRbM10gPSBNYXRoLnNxcnQoTWF0aC5hYnMoMS4wIC0geCAqIHggLSB5ICogeSAtIHogKiB6KSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgZXhwb25lbnRpYWwgb2YgYSB1bml0IHF1YXRlcm5pb24uXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSBxdWF0IHRvIGNhbGN1bGF0ZSB0aGUgZXhwb25lbnRpYWwgb2ZcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXhwKG91dCwgYSkge1xuICB2YXIgeCA9IGFbMF0sXG4gICAgICB5ID0gYVsxXSxcbiAgICAgIHogPSBhWzJdLFxuICAgICAgdyA9IGFbM107XG4gIHZhciByID0gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkgKyB6ICogeik7XG4gIHZhciBldCA9IE1hdGguZXhwKHcpO1xuICB2YXIgcyA9IHIgPiAwID8gZXQgKiBNYXRoLnNpbihyKSAvIHIgOiAwO1xuICBvdXRbMF0gPSB4ICogcztcbiAgb3V0WzFdID0geSAqIHM7XG4gIG91dFsyXSA9IHogKiBzO1xuICBvdXRbM10gPSBldCAqIE1hdGguY29zKHIpO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIG9mIGEgdW5pdCBxdWF0ZXJuaW9uLlxuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgcXVhdCB0byBjYWxjdWxhdGUgdGhlIGV4cG9uZW50aWFsIG9mXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGxuKG91dCwgYSkge1xuICB2YXIgeCA9IGFbMF0sXG4gICAgICB5ID0gYVsxXSxcbiAgICAgIHogPSBhWzJdLFxuICAgICAgdyA9IGFbM107XG4gIHZhciByID0gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkgKyB6ICogeik7XG4gIHZhciB0ID0gciA+IDAgPyBNYXRoLmF0YW4yKHIsIHcpIC8gciA6IDA7XG4gIG91dFswXSA9IHggKiB0O1xuICBvdXRbMV0gPSB5ICogdDtcbiAgb3V0WzJdID0geiAqIHQ7XG4gIG91dFszXSA9IDAuNSAqIE1hdGgubG9nKHggKiB4ICsgeSAqIHkgKyB6ICogeiArIHcgKiB3KTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBzY2FsYXIgcG93ZXIgb2YgYSB1bml0IHF1YXRlcm5pb24uXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSBxdWF0IHRvIGNhbGN1bGF0ZSB0aGUgZXhwb25lbnRpYWwgb2ZcbiAqIEBwYXJhbSB7TnVtYmVyfSBiIGFtb3VudCB0byBzY2FsZSB0aGUgcXVhdGVybmlvbiBieVxuICogQHJldHVybnMge3F1YXR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwb3cob3V0LCBhLCBiKSB7XG4gIGxuKG91dCwgYSk7XG4gIHNjYWxlKG91dCwgb3V0LCBiKTtcbiAgZXhwKG91dCwgb3V0KTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUGVyZm9ybXMgYSBzcGhlcmljYWwgbGluZWFyIGludGVycG9sYXRpb24gYmV0d2VlbiB0d28gcXVhdFxuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHQgaW50ZXJwb2xhdGlvbiBhbW91bnQsIGluIHRoZSByYW5nZSBbMC0xXSwgYmV0d2VlbiB0aGUgdHdvIGlucHV0c1xuICogQHJldHVybnMge3F1YXR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzbGVycChvdXQsIGEsIGIsIHQpIHtcbiAgLy8gYmVuY2htYXJrczpcbiAgLy8gICAgaHR0cDovL2pzcGVyZi5jb20vcXVhdGVybmlvbi1zbGVycC1pbXBsZW1lbnRhdGlvbnNcbiAgdmFyIGF4ID0gYVswXSxcbiAgICAgIGF5ID0gYVsxXSxcbiAgICAgIGF6ID0gYVsyXSxcbiAgICAgIGF3ID0gYVszXTtcbiAgdmFyIGJ4ID0gYlswXSxcbiAgICAgIGJ5ID0gYlsxXSxcbiAgICAgIGJ6ID0gYlsyXSxcbiAgICAgIGJ3ID0gYlszXTtcbiAgdmFyIG9tZWdhLCBjb3NvbSwgc2lub20sIHNjYWxlMCwgc2NhbGUxOyAvLyBjYWxjIGNvc2luZVxuXG4gIGNvc29tID0gYXggKiBieCArIGF5ICogYnkgKyBheiAqIGJ6ICsgYXcgKiBidzsgLy8gYWRqdXN0IHNpZ25zIChpZiBuZWNlc3NhcnkpXG5cbiAgaWYgKGNvc29tIDwgMC4wKSB7XG4gICAgY29zb20gPSAtY29zb207XG4gICAgYnggPSAtYng7XG4gICAgYnkgPSAtYnk7XG4gICAgYnogPSAtYno7XG4gICAgYncgPSAtYnc7XG4gIH0gLy8gY2FsY3VsYXRlIGNvZWZmaWNpZW50c1xuXG5cbiAgaWYgKDEuMCAtIGNvc29tID4gZ2xNYXRyaXguRVBTSUxPTikge1xuICAgIC8vIHN0YW5kYXJkIGNhc2UgKHNsZXJwKVxuICAgIG9tZWdhID0gTWF0aC5hY29zKGNvc29tKTtcbiAgICBzaW5vbSA9IE1hdGguc2luKG9tZWdhKTtcbiAgICBzY2FsZTAgPSBNYXRoLnNpbigoMS4wIC0gdCkgKiBvbWVnYSkgLyBzaW5vbTtcbiAgICBzY2FsZTEgPSBNYXRoLnNpbih0ICogb21lZ2EpIC8gc2lub207XG4gIH0gZWxzZSB7XG4gICAgLy8gXCJmcm9tXCIgYW5kIFwidG9cIiBxdWF0ZXJuaW9ucyBhcmUgdmVyeSBjbG9zZVxuICAgIC8vICAuLi4gc28gd2UgY2FuIGRvIGEgbGluZWFyIGludGVycG9sYXRpb25cbiAgICBzY2FsZTAgPSAxLjAgLSB0O1xuICAgIHNjYWxlMSA9IHQ7XG4gIH0gLy8gY2FsY3VsYXRlIGZpbmFsIHZhbHVlc1xuXG5cbiAgb3V0WzBdID0gc2NhbGUwICogYXggKyBzY2FsZTEgKiBieDtcbiAgb3V0WzFdID0gc2NhbGUwICogYXkgKyBzY2FsZTEgKiBieTtcbiAgb3V0WzJdID0gc2NhbGUwICogYXogKyBzY2FsZTEgKiBiejtcbiAgb3V0WzNdID0gc2NhbGUwICogYXcgKyBzY2FsZTEgKiBidztcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogR2VuZXJhdGVzIGEgcmFuZG9tIHVuaXQgcXVhdGVybmlvblxuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHJldHVybnMge3F1YXR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByYW5kb20ob3V0KSB7XG4gIC8vIEltcGxlbWVudGF0aW9uIG9mIGh0dHA6Ly9wbGFubmluZy5jcy51aXVjLmVkdS9ub2RlMTk4Lmh0bWxcbiAgLy8gVE9ETzogQ2FsbGluZyByYW5kb20gMyB0aW1lcyBpcyBwcm9iYWJseSBub3QgdGhlIGZhc3Rlc3Qgc29sdXRpb25cbiAgdmFyIHUxID0gZ2xNYXRyaXguUkFORE9NKCk7XG4gIHZhciB1MiA9IGdsTWF0cml4LlJBTkRPTSgpO1xuICB2YXIgdTMgPSBnbE1hdHJpeC5SQU5ET00oKTtcbiAgdmFyIHNxcnQxTWludXNVMSA9IE1hdGguc3FydCgxIC0gdTEpO1xuICB2YXIgc3FydFUxID0gTWF0aC5zcXJ0KHUxKTtcbiAgb3V0WzBdID0gc3FydDFNaW51c1UxICogTWF0aC5zaW4oMi4wICogTWF0aC5QSSAqIHUyKTtcbiAgb3V0WzFdID0gc3FydDFNaW51c1UxICogTWF0aC5jb3MoMi4wICogTWF0aC5QSSAqIHUyKTtcbiAgb3V0WzJdID0gc3FydFUxICogTWF0aC5zaW4oMi4wICogTWF0aC5QSSAqIHUzKTtcbiAgb3V0WzNdID0gc3FydFUxICogTWF0aC5jb3MoMi4wICogTWF0aC5QSSAqIHUzKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgaW52ZXJzZSBvZiBhIHF1YXRcbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHF1YXQgdG8gY2FsY3VsYXRlIGludmVyc2Ugb2ZcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0KG91dCwgYSkge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdO1xuICB2YXIgZG90ID0gYTAgKiBhMCArIGExICogYTEgKyBhMiAqIGEyICsgYTMgKiBhMztcbiAgdmFyIGludkRvdCA9IGRvdCA/IDEuMCAvIGRvdCA6IDA7IC8vIFRPRE86IFdvdWxkIGJlIGZhc3RlciB0byByZXR1cm4gWzAsMCwwLDBdIGltbWVkaWF0ZWx5IGlmIGRvdCA9PSAwXG5cbiAgb3V0WzBdID0gLWEwICogaW52RG90O1xuICBvdXRbMV0gPSAtYTEgKiBpbnZEb3Q7XG4gIG91dFsyXSA9IC1hMiAqIGludkRvdDtcbiAgb3V0WzNdID0gYTMgKiBpbnZEb3Q7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGNvbmp1Z2F0ZSBvZiBhIHF1YXRcbiAqIElmIHRoZSBxdWF0ZXJuaW9uIGlzIG5vcm1hbGl6ZWQsIHRoaXMgZnVuY3Rpb24gaXMgZmFzdGVyIHRoYW4gcXVhdC5pbnZlcnNlIGFuZCBwcm9kdWNlcyB0aGUgc2FtZSByZXN1bHQuXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSBxdWF0IHRvIGNhbGN1bGF0ZSBjb25qdWdhdGUgb2ZcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY29uanVnYXRlKG91dCwgYSkge1xuICBvdXRbMF0gPSAtYVswXTtcbiAgb3V0WzFdID0gLWFbMV07XG4gIG91dFsyXSA9IC1hWzJdO1xuICBvdXRbM10gPSBhWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgcXVhdGVybmlvbiBmcm9tIHRoZSBnaXZlbiAzeDMgcm90YXRpb24gbWF0cml4LlxuICpcbiAqIE5PVEU6IFRoZSByZXN1bHRhbnQgcXVhdGVybmlvbiBpcyBub3Qgbm9ybWFsaXplZCwgc28geW91IHNob3VsZCBiZSBzdXJlXG4gKiB0byByZW5vcm1hbGl6ZSB0aGUgcXVhdGVybmlvbiB5b3Vyc2VsZiB3aGVyZSBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gbSByb3RhdGlvbiBtYXRyaXhcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tTWF0MyhvdXQsIG0pIHtcbiAgLy8gQWxnb3JpdGhtIGluIEtlbiBTaG9lbWFrZSdzIGFydGljbGUgaW4gMTk4NyBTSUdHUkFQSCBjb3Vyc2Ugbm90ZXNcbiAgLy8gYXJ0aWNsZSBcIlF1YXRlcm5pb24gQ2FsY3VsdXMgYW5kIEZhc3QgQW5pbWF0aW9uXCIuXG4gIHZhciBmVHJhY2UgPSBtWzBdICsgbVs0XSArIG1bOF07XG4gIHZhciBmUm9vdDtcblxuICBpZiAoZlRyYWNlID4gMC4wKSB7XG4gICAgLy8gfHd8ID4gMS8yLCBtYXkgYXMgd2VsbCBjaG9vc2UgdyA+IDEvMlxuICAgIGZSb290ID0gTWF0aC5zcXJ0KGZUcmFjZSArIDEuMCk7IC8vIDJ3XG5cbiAgICBvdXRbM10gPSAwLjUgKiBmUm9vdDtcbiAgICBmUm9vdCA9IDAuNSAvIGZSb290OyAvLyAxLyg0dylcblxuICAgIG91dFswXSA9IChtWzVdIC0gbVs3XSkgKiBmUm9vdDtcbiAgICBvdXRbMV0gPSAobVs2XSAtIG1bMl0pICogZlJvb3Q7XG4gICAgb3V0WzJdID0gKG1bMV0gLSBtWzNdKSAqIGZSb290O1xuICB9IGVsc2Uge1xuICAgIC8vIHx3fCA8PSAxLzJcbiAgICB2YXIgaSA9IDA7XG4gICAgaWYgKG1bNF0gPiBtWzBdKSBpID0gMTtcbiAgICBpZiAobVs4XSA+IG1baSAqIDMgKyBpXSkgaSA9IDI7XG4gICAgdmFyIGogPSAoaSArIDEpICUgMztcbiAgICB2YXIgayA9IChpICsgMikgJSAzO1xuICAgIGZSb290ID0gTWF0aC5zcXJ0KG1baSAqIDMgKyBpXSAtIG1baiAqIDMgKyBqXSAtIG1bayAqIDMgKyBrXSArIDEuMCk7XG4gICAgb3V0W2ldID0gMC41ICogZlJvb3Q7XG4gICAgZlJvb3QgPSAwLjUgLyBmUm9vdDtcbiAgICBvdXRbM10gPSAobVtqICogMyArIGtdIC0gbVtrICogMyArIGpdKSAqIGZSb290O1xuICAgIG91dFtqXSA9IChtW2ogKiAzICsgaV0gKyBtW2kgKiAzICsgal0pICogZlJvb3Q7XG4gICAgb3V0W2tdID0gKG1bayAqIDMgKyBpXSArIG1baSAqIDMgKyBrXSkgKiBmUm9vdDtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBxdWF0ZXJuaW9uIGZyb20gdGhlIGdpdmVuIGV1bGVyIGFuZ2xlIHgsIHksIHouXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge3h9IEFuZ2xlIHRvIHJvdGF0ZSBhcm91bmQgWCBheGlzIGluIGRlZ3JlZXMuXG4gKiBAcGFyYW0ge3l9IEFuZ2xlIHRvIHJvdGF0ZSBhcm91bmQgWSBheGlzIGluIGRlZ3JlZXMuXG4gKiBAcGFyYW0ge3p9IEFuZ2xlIHRvIHJvdGF0ZSBhcm91bmQgWiBheGlzIGluIGRlZ3JlZXMuXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbUV1bGVyKG91dCwgeCwgeSwgeikge1xuICB2YXIgaGFsZlRvUmFkID0gMC41ICogTWF0aC5QSSAvIDE4MC4wO1xuICB4ICo9IGhhbGZUb1JhZDtcbiAgeSAqPSBoYWxmVG9SYWQ7XG4gIHogKj0gaGFsZlRvUmFkO1xuICB2YXIgc3ggPSBNYXRoLnNpbih4KTtcbiAgdmFyIGN4ID0gTWF0aC5jb3MoeCk7XG4gIHZhciBzeSA9IE1hdGguc2luKHkpO1xuICB2YXIgY3kgPSBNYXRoLmNvcyh5KTtcbiAgdmFyIHN6ID0gTWF0aC5zaW4oeik7XG4gIHZhciBjeiA9IE1hdGguY29zKHopO1xuICBvdXRbMF0gPSBzeCAqIGN5ICogY3ogLSBjeCAqIHN5ICogc3o7XG4gIG91dFsxXSA9IGN4ICogc3kgKiBjeiArIHN4ICogY3kgKiBzejtcbiAgb3V0WzJdID0gY3ggKiBjeSAqIHN6IC0gc3ggKiBzeSAqIGN6O1xuICBvdXRbM10gPSBjeCAqIGN5ICogY3ogKyBzeCAqIHN5ICogc3o7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBxdWF0ZW5pb25cbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSB2ZWN0b3IgdG8gcmVwcmVzZW50IGFzIGEgc3RyaW5nXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZlY3RvclxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzdHIoYSkge1xuICByZXR1cm4gXCJxdWF0KFwiICsgYVswXSArIFwiLCBcIiArIGFbMV0gKyBcIiwgXCIgKyBhWzJdICsgXCIsIFwiICsgYVszXSArIFwiKVwiO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHF1YXQgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyBxdWF0ZXJuaW9uXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgcXVhdGVybmlvbiB0byBjbG9uZVxuICogQHJldHVybnMge3F1YXR9IGEgbmV3IHF1YXRlcm5pb25cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgY2xvbmUgPSB2ZWM0LmNsb25lO1xuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHF1YXQgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHggWCBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5IFkgY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geiBaIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHcgVyBjb21wb25lbnRcbiAqIEByZXR1cm5zIHtxdWF0fSBhIG5ldyBxdWF0ZXJuaW9uXG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGZyb21WYWx1ZXMgPSB2ZWM0LmZyb21WYWx1ZXM7XG4vKipcbiAqIENvcHkgdGhlIHZhbHVlcyBmcm9tIG9uZSBxdWF0IHRvIGFub3RoZXJcbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHRoZSBzb3VyY2UgcXVhdGVybmlvblxuICogQHJldHVybnMge3F1YXR9IG91dFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBjb3B5ID0gdmVjNC5jb3B5O1xuLyoqXG4gKiBTZXQgdGhlIGNvbXBvbmVudHMgb2YgYSBxdWF0IHRvIHRoZSBnaXZlbiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7TnVtYmVyfSB4IFggY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geSBZIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHogWiBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB3IFcgY29tcG9uZW50XG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHNldCA9IHZlYzQuc2V0O1xuLyoqXG4gKiBBZGRzIHR3byBxdWF0J3NcbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgYWRkID0gdmVjNC5hZGQ7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgcXVhdC5tdWx0aXBseX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgbXVsID0gbXVsdGlwbHk7XG4vKipcbiAqIFNjYWxlcyBhIHF1YXQgYnkgYSBzY2FsYXIgbnVtYmVyXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHRoZSB2ZWN0b3IgdG8gc2NhbGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBiIGFtb3VudCB0byBzY2FsZSB0aGUgdmVjdG9yIGJ5XG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHNjYWxlID0gdmVjNC5zY2FsZTtcbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZG90IHByb2R1Y3Qgb2YgdHdvIHF1YXQnc1xuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGRvdCBwcm9kdWN0IG9mIGEgYW5kIGJcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgZG90ID0gdmVjNC5kb3Q7XG4vKipcbiAqIFBlcmZvcm1zIGEgbGluZWFyIGludGVycG9sYXRpb24gYmV0d2VlbiB0d28gcXVhdCdzXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcGFyYW0ge051bWJlcn0gdCBpbnRlcnBvbGF0aW9uIGFtb3VudCwgaW4gdGhlIHJhbmdlIFswLTFdLCBiZXR3ZWVuIHRoZSB0d28gaW5wdXRzXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGxlcnAgPSB2ZWM0LmxlcnA7XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGxlbmd0aCBvZiBhIHF1YXRcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSB2ZWN0b3IgdG8gY2FsY3VsYXRlIGxlbmd0aCBvZlxuICogQHJldHVybnMge051bWJlcn0gbGVuZ3RoIG9mIGFcbiAqL1xuXG5leHBvcnQgdmFyIGxlbmd0aCA9IHZlYzQubGVuZ3RoO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHF1YXQubGVuZ3RofVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBsZW4gPSBsZW5ndGg7XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHNxdWFyZWQgbGVuZ3RoIG9mIGEgcXVhdFxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHZlY3RvciB0byBjYWxjdWxhdGUgc3F1YXJlZCBsZW5ndGggb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHNxdWFyZWQgbGVuZ3RoIG9mIGFcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgc3F1YXJlZExlbmd0aCA9IHZlYzQuc3F1YXJlZExlbmd0aDtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayBxdWF0LnNxdWFyZWRMZW5ndGh9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHNxckxlbiA9IHNxdWFyZWRMZW5ndGg7XG4vKipcbiAqIE5vcm1hbGl6ZSBhIHF1YXRcbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHF1YXRlcm5pb24gdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIG5vcm1hbGl6ZSA9IHZlYzQubm9ybWFsaXplO1xuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBxdWF0ZXJuaW9ucyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0pXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgVGhlIGZpcnN0IHF1YXRlcm5pb24uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYiBUaGUgc2Vjb25kIHF1YXRlcm5pb24uXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgdmFyIGV4YWN0RXF1YWxzID0gdmVjNC5leGFjdEVxdWFscztcbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgcXVhdGVybmlvbnMgaGF2ZSBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uLlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYiBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSB2ZWN0b3JzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCB2YXIgZXF1YWxzID0gdmVjNC5lcXVhbHM7XG4vKipcbiAqIFNldHMgYSBxdWF0ZXJuaW9uIHRvIHJlcHJlc2VudCB0aGUgc2hvcnRlc3Qgcm90YXRpb24gZnJvbSBvbmVcbiAqIHZlY3RvciB0byBhbm90aGVyLlxuICpcbiAqIEJvdGggdmVjdG9ycyBhcmUgYXNzdW1lZCB0byBiZSB1bml0IGxlbmd0aC5cbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb24uXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgaW5pdGlhbCB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3JcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgdmFyIHJvdGF0aW9uVG8gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0bXB2ZWMzID0gdmVjMy5jcmVhdGUoKTtcbiAgdmFyIHhVbml0VmVjMyA9IHZlYzMuZnJvbVZhbHVlcygxLCAwLCAwKTtcbiAgdmFyIHlVbml0VmVjMyA9IHZlYzMuZnJvbVZhbHVlcygwLCAxLCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvdXQsIGEsIGIpIHtcbiAgICB2YXIgZG90ID0gdmVjMy5kb3QoYSwgYik7XG5cbiAgICBpZiAoZG90IDwgLTAuOTk5OTk5KSB7XG4gICAgICB2ZWMzLmNyb3NzKHRtcHZlYzMsIHhVbml0VmVjMywgYSk7XG4gICAgICBpZiAodmVjMy5sZW4odG1wdmVjMykgPCAwLjAwMDAwMSkgdmVjMy5jcm9zcyh0bXB2ZWMzLCB5VW5pdFZlYzMsIGEpO1xuICAgICAgdmVjMy5ub3JtYWxpemUodG1wdmVjMywgdG1wdmVjMyk7XG4gICAgICBzZXRBeGlzQW5nbGUob3V0LCB0bXB2ZWMzLCBNYXRoLlBJKTtcbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfSBlbHNlIGlmIChkb3QgPiAwLjk5OTk5OSkge1xuICAgICAgb3V0WzBdID0gMDtcbiAgICAgIG91dFsxXSA9IDA7XG4gICAgICBvdXRbMl0gPSAwO1xuICAgICAgb3V0WzNdID0gMTtcbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZlYzMuY3Jvc3ModG1wdmVjMywgYSwgYik7XG4gICAgICBvdXRbMF0gPSB0bXB2ZWMzWzBdO1xuICAgICAgb3V0WzFdID0gdG1wdmVjM1sxXTtcbiAgICAgIG91dFsyXSA9IHRtcHZlYzNbMl07XG4gICAgICBvdXRbM10gPSAxICsgZG90O1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZShvdXQsIG91dCk7XG4gICAgfVxuICB9O1xufSgpO1xuLyoqXG4gKiBQZXJmb3JtcyBhIHNwaGVyaWNhbCBsaW5lYXIgaW50ZXJwb2xhdGlvbiB3aXRoIHR3byBjb250cm9sIHBvaW50c1xuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGMgdGhlIHRoaXJkIG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBkIHRoZSBmb3VydGggb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHQgaW50ZXJwb2xhdGlvbiBhbW91bnQsIGluIHRoZSByYW5nZSBbMC0xXSwgYmV0d2VlbiB0aGUgdHdvIGlucHV0c1xuICogQHJldHVybnMge3F1YXR9IG91dFxuICovXG5cbmV4cG9ydCB2YXIgc3FsZXJwID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGVtcDEgPSBjcmVhdGUoKTtcbiAgdmFyIHRlbXAyID0gY3JlYXRlKCk7XG4gIHJldHVybiBmdW5jdGlvbiAob3V0LCBhLCBiLCBjLCBkLCB0KSB7XG4gICAgc2xlcnAodGVtcDEsIGEsIGQsIHQpO1xuICAgIHNsZXJwKHRlbXAyLCBiLCBjLCB0KTtcbiAgICBzbGVycChvdXQsIHRlbXAxLCB0ZW1wMiwgMiAqIHQgKiAoMSAtIHQpKTtcbiAgICByZXR1cm4gb3V0O1xuICB9O1xufSgpO1xuLyoqXG4gKiBTZXRzIHRoZSBzcGVjaWZpZWQgcXVhdGVybmlvbiB3aXRoIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlblxuICogYXhlcy4gRWFjaCBheGlzIGlzIGEgdmVjMyBhbmQgaXMgZXhwZWN0ZWQgdG8gYmUgdW5pdCBsZW5ndGggYW5kXG4gKiBwZXJwZW5kaWN1bGFyIHRvIGFsbCBvdGhlciBzcGVjaWZpZWQgYXhlcy5cbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gdmlldyAgdGhlIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIHZpZXdpbmcgZGlyZWN0aW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gcmlnaHQgdGhlIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIGxvY2FsIFwicmlnaHRcIiBkaXJlY3Rpb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSB1cCAgICB0aGUgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgbG9jYWwgXCJ1cFwiIGRpcmVjdGlvblxuICogQHJldHVybnMge3F1YXR9IG91dFxuICovXG5cbmV4cG9ydCB2YXIgc2V0QXhlcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG1hdHIgPSBtYXQzLmNyZWF0ZSgpO1xuICByZXR1cm4gZnVuY3Rpb24gKG91dCwgdmlldywgcmlnaHQsIHVwKSB7XG4gICAgbWF0clswXSA9IHJpZ2h0WzBdO1xuICAgIG1hdHJbM10gPSByaWdodFsxXTtcbiAgICBtYXRyWzZdID0gcmlnaHRbMl07XG4gICAgbWF0clsxXSA9IHVwWzBdO1xuICAgIG1hdHJbNF0gPSB1cFsxXTtcbiAgICBtYXRyWzddID0gdXBbMl07XG4gICAgbWF0clsyXSA9IC12aWV3WzBdO1xuICAgIG1hdHJbNV0gPSAtdmlld1sxXTtcbiAgICBtYXRyWzhdID0gLXZpZXdbMl07XG4gICAgcmV0dXJuIG5vcm1hbGl6ZShvdXQsIGZyb21NYXQzKG91dCwgbWF0cikpO1xuICB9O1xufSgpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-matrix/esm/quat.js\n"); /***/ }), /***/ "./node_modules/gl-matrix/esm/quat2.js": /*!*********************************************!*\ !*** ./node_modules/gl-matrix/esm/quat2.js ***! \*********************************************/ /*! exports provided: create, clone, fromValues, fromRotationTranslationValues, fromRotationTranslation, fromTranslation, fromRotation, fromMat4, copy, identity, set, getReal, getDual, setReal, setDual, getTranslation, translate, rotateX, rotateY, rotateZ, rotateByQuatAppend, rotateByQuatPrepend, rotateAroundAxis, add, multiply, mul, scale, dot, lerp, invert, conjugate, length, len, squaredLength, sqrLen, normalize, str, exactEquals, equals */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotationTranslationValues\", function() { return fromRotationTranslationValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotationTranslation\", function() { return fromRotationTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromTranslation\", function() { return fromTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotation\", function() { return fromRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromMat4\", function() { return fromMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getReal\", function() { return getReal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDual\", function() { return getDual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setReal\", function() { return setReal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDual\", function() { return setDual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTranslation\", function() { return getTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateX\", function() { return rotateX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateY\", function() { return rotateY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateZ\", function() { return rotateZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateByQuatAppend\", function() { return rotateByQuatAppend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateByQuatPrepend\", function() { return rotateByQuatPrepend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateAroundAxis\", function() { return rotateAroundAxis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dot\", function() { return dot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conjugate\", function() { return conjugate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"length\", function() { return length; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"len\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredLength\", function() { return squaredLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrLen\", function() { return sqrLen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n/* harmony import */ var _quat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quat.js */ \"./node_modules/gl-matrix/esm/quat.js\");\n/* harmony import */ var _mat4_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mat4.js */ \"./node_modules/gl-matrix/esm/mat4.js\");\n\n\n\n/**\n * Dual Quaternion
\n * Format: [real, dual]
\n * Quaternion format: XYZW
\n * Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.
\n * @module quat2\n */\n\n/**\n * Creates a new identity dual quat\n *\n * @returns {quat2} a new dual quaternion [real -> rotation, dual -> translation]\n */\n\nfunction create() {\n var dq = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](8);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n dq[0] = 0;\n dq[1] = 0;\n dq[2] = 0;\n dq[4] = 0;\n dq[5] = 0;\n dq[6] = 0;\n dq[7] = 0;\n }\n\n dq[3] = 1;\n return dq;\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat2} a dual quaternion to clone\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nfunction clone(a) {\n var dq = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](8);\n dq[0] = a[0];\n dq[1] = a[1];\n dq[2] = a[2];\n dq[3] = a[3];\n dq[4] = a[4];\n dq[5] = a[5];\n dq[6] = a[6];\n dq[7] = a[7];\n return dq;\n}\n/**\n * Creates a new dual quat initialized with the given values\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nfunction fromValues(x1, y1, z1, w1, x2, y2, z2, w2) {\n var dq = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](8);\n dq[0] = x1;\n dq[1] = y1;\n dq[2] = z1;\n dq[3] = w1;\n dq[4] = x2;\n dq[5] = y2;\n dq[6] = z2;\n dq[7] = w2;\n return dq;\n}\n/**\n * Creates a new dual quat from the given values (quat and translation)\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component (translation)\n * @param {Number} y2 Y component (translation)\n * @param {Number} z2 Z component (translation)\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nfunction fromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2) {\n var dq = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](8);\n dq[0] = x1;\n dq[1] = y1;\n dq[2] = z1;\n dq[3] = w1;\n var ax = x2 * 0.5,\n ay = y2 * 0.5,\n az = z2 * 0.5;\n dq[4] = ax * w1 + ay * z1 - az * y1;\n dq[5] = ay * w1 + az * x1 - ax * z1;\n dq[6] = az * w1 + ax * y1 - ay * x1;\n dq[7] = -ax * x1 - ay * y1 - az * z1;\n return dq;\n}\n/**\n * Creates a dual quat from a quaternion and a translation\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyQuat} q a normalized quaternion\n * @param {ReadonlyVec3} t tranlation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nfunction fromRotationTranslation(out, q, t) {\n var ax = t[0] * 0.5,\n ay = t[1] * 0.5,\n az = t[2] * 0.5,\n bx = q[0],\n by = q[1],\n bz = q[2],\n bw = q[3];\n out[0] = bx;\n out[1] = by;\n out[2] = bz;\n out[3] = bw;\n out[4] = ax * bw + ay * bz - az * by;\n out[5] = ay * bw + az * bx - ax * bz;\n out[6] = az * bw + ax * by - ay * bx;\n out[7] = -ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Creates a dual quat from a translation\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyVec3} t translation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nfunction fromTranslation(out, t) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = t[0] * 0.5;\n out[5] = t[1] * 0.5;\n out[6] = t[2] * 0.5;\n out[7] = 0;\n return out;\n}\n/**\n * Creates a dual quat from a quaternion\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyQuat} q the quaternion\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nfunction fromRotation(out, q) {\n out[0] = q[0];\n out[1] = q[1];\n out[2] = q[2];\n out[3] = q[3];\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n return out;\n}\n/**\n * Creates a new dual quat from a matrix (4x4)\n *\n * @param {quat2} out the dual quaternion\n * @param {ReadonlyMat4} a the matrix\n * @returns {quat2} dual quat receiving operation result\n * @function\n */\n\nfunction fromMat4(out, a) {\n //TODO Optimize this\n var outer = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"create\"]();\n _mat4_js__WEBPACK_IMPORTED_MODULE_2__[\"getRotation\"](outer, a);\n var t = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n _mat4_js__WEBPACK_IMPORTED_MODULE_2__[\"getTranslation\"](t, a);\n fromRotationTranslation(out, outer, t);\n return out;\n}\n/**\n * Copy the values from one dual quat to another\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the source dual quaternion\n * @returns {quat2} out\n * @function\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n return out;\n}\n/**\n * Set a dual quat to the identity dual quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @returns {quat2} out\n */\n\nfunction identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n return out;\n}\n/**\n * Set the components of a dual quat to the given values\n *\n * @param {quat2} out the receiving quaternion\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} out\n * @function\n */\n\nfunction set(out, x1, y1, z1, w1, x2, y2, z2, w2) {\n out[0] = x1;\n out[1] = y1;\n out[2] = z1;\n out[3] = w1;\n out[4] = x2;\n out[5] = y2;\n out[6] = z2;\n out[7] = w2;\n return out;\n}\n/**\n * Gets the real part of a dual quat\n * @param {quat} out real part\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @return {quat} real part\n */\n\nvar getReal = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"];\n/**\n * Gets the dual part of a dual quat\n * @param {quat} out dual part\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @return {quat} dual part\n */\n\nfunction getDual(out, a) {\n out[0] = a[4];\n out[1] = a[5];\n out[2] = a[6];\n out[3] = a[7];\n return out;\n}\n/**\n * Set the real component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat} q a quaternion representing the real part\n * @returns {quat2} out\n * @function\n */\n\nvar setReal = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"];\n/**\n * Set the dual component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat} q a quaternion representing the dual part\n * @returns {quat2} out\n * @function\n */\n\nfunction setDual(out, q) {\n out[4] = q[0];\n out[5] = q[1];\n out[6] = q[2];\n out[7] = q[3];\n return out;\n}\n/**\n * Gets the translation of a normalized dual quat\n * @param {vec3} out translation\n * @param {ReadonlyQuat2} a Dual Quaternion to be decomposed\n * @return {vec3} translation\n */\n\nfunction getTranslation(out, a) {\n var ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3];\n out[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n out[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n out[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n return out;\n}\n/**\n * Translates a dual quat by the given vector\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {quat2} out\n */\n\nfunction translate(out, a, v) {\n var ax1 = a[0],\n ay1 = a[1],\n az1 = a[2],\n aw1 = a[3],\n bx1 = v[0] * 0.5,\n by1 = v[1] * 0.5,\n bz1 = v[2] * 0.5,\n ax2 = a[4],\n ay2 = a[5],\n az2 = a[6],\n aw2 = a[7];\n out[0] = ax1;\n out[1] = ay1;\n out[2] = az1;\n out[3] = aw1;\n out[4] = aw1 * bx1 + ay1 * bz1 - az1 * by1 + ax2;\n out[5] = aw1 * by1 + az1 * bx1 - ax1 * bz1 + ay2;\n out[6] = aw1 * bz1 + ax1 * by1 - ay1 * bx1 + az2;\n out[7] = -ax1 * bx1 - ay1 * by1 - az1 * bz1 + aw2;\n return out;\n}\n/**\n * Rotates a dual quat around the X axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nfunction rotateX(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"rotateX\"](out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat around the Y axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nfunction rotateY(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"rotateY\"](out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat around the Z axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nfunction rotateZ(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"rotateZ\"](out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat by a given quaternion (a * q)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {ReadonlyQuat} q quaternion to rotate by\n * @returns {quat2} out\n */\n\nfunction rotateByQuatAppend(out, a, q) {\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3],\n ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n out[0] = ax * qw + aw * qx + ay * qz - az * qy;\n out[1] = ay * qw + aw * qy + az * qx - ax * qz;\n out[2] = az * qw + aw * qz + ax * qy - ay * qx;\n out[3] = aw * qw - ax * qx - ay * qy - az * qz;\n ax = a[4];\n ay = a[5];\n az = a[6];\n aw = a[7];\n out[4] = ax * qw + aw * qx + ay * qz - az * qy;\n out[5] = ay * qw + aw * qy + az * qx - ax * qz;\n out[6] = az * qw + aw * qz + ax * qy - ay * qx;\n out[7] = aw * qw - ax * qx - ay * qy - az * qz;\n return out;\n}\n/**\n * Rotates a dual quat by a given quaternion (q * a)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat} q quaternion to rotate by\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @returns {quat2} out\n */\n\nfunction rotateByQuatPrepend(out, q, a) {\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3],\n bx = a[0],\n by = a[1],\n bz = a[2],\n bw = a[3];\n out[0] = qx * bw + qw * bx + qy * bz - qz * by;\n out[1] = qy * bw + qw * by + qz * bx - qx * bz;\n out[2] = qz * bw + qw * bz + qx * by - qy * bx;\n out[3] = qw * bw - qx * bx - qy * by - qz * bz;\n bx = a[4];\n by = a[5];\n bz = a[6];\n bw = a[7];\n out[4] = qx * bw + qw * bx + qy * bz - qz * by;\n out[5] = qy * bw + qw * by + qz * bx - qx * bz;\n out[6] = qz * bw + qw * bz + qx * by - qy * bx;\n out[7] = qw * bw - qx * bx - qy * by - qz * bz;\n return out;\n}\n/**\n * Rotates a dual quat around a given axis. Does the normalisation automatically\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @param {Number} rad how far the rotation should be\n * @returns {quat2} out\n */\n\nfunction rotateAroundAxis(out, a, axis, rad) {\n //Special case for rad = 0\n if (Math.abs(rad) < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n return copy(out, a);\n }\n\n var axisLength = Math.hypot(axis[0], axis[1], axis[2]);\n rad = rad * 0.5;\n var s = Math.sin(rad);\n var bx = s * axis[0] / axisLength;\n var by = s * axis[1] / axisLength;\n var bz = s * axis[2] / axisLength;\n var bw = Math.cos(rad);\n var ax1 = a[0],\n ay1 = a[1],\n az1 = a[2],\n aw1 = a[3];\n out[0] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[1] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[2] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[3] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n var ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n out[4] = ax * bw + aw * bx + ay * bz - az * by;\n out[5] = ay * bw + aw * by + az * bx - ax * bz;\n out[6] = az * bw + aw * bz + ax * by - ay * bx;\n out[7] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Adds two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {quat2} out\n * @function\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n return out;\n}\n/**\n * Multiplies two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {quat2} out\n */\n\nfunction multiply(out, a, b) {\n var ax0 = a[0],\n ay0 = a[1],\n az0 = a[2],\n aw0 = a[3],\n bx1 = b[4],\n by1 = b[5],\n bz1 = b[6],\n bw1 = b[7],\n ax1 = a[4],\n ay1 = a[5],\n az1 = a[6],\n aw1 = a[7],\n bx0 = b[0],\n by0 = b[1],\n bz0 = b[2],\n bw0 = b[3];\n out[0] = ax0 * bw0 + aw0 * bx0 + ay0 * bz0 - az0 * by0;\n out[1] = ay0 * bw0 + aw0 * by0 + az0 * bx0 - ax0 * bz0;\n out[2] = az0 * bw0 + aw0 * bz0 + ax0 * by0 - ay0 * bx0;\n out[3] = aw0 * bw0 - ax0 * bx0 - ay0 * by0 - az0 * bz0;\n out[4] = ax0 * bw1 + aw0 * bx1 + ay0 * bz1 - az0 * by1 + ax1 * bw0 + aw1 * bx0 + ay1 * bz0 - az1 * by0;\n out[5] = ay0 * bw1 + aw0 * by1 + az0 * bx1 - ax0 * bz1 + ay1 * bw0 + aw1 * by0 + az1 * bx0 - ax1 * bz0;\n out[6] = az0 * bw1 + aw0 * bz1 + ax0 * by1 - ay0 * bx1 + az1 * bw0 + aw1 * bz0 + ax1 * by0 - ay1 * bx0;\n out[7] = aw0 * bw1 - ax0 * bx1 - ay0 * by1 - az0 * bz1 + aw1 * bw0 - ax1 * bx0 - ay1 * by0 - az1 * bz0;\n return out;\n}\n/**\n * Alias for {@link quat2.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Scales a dual quat by a scalar number\n *\n * @param {quat2} out the receiving dual quat\n * @param {ReadonlyQuat2} a the dual quat to scale\n * @param {Number} b amount to scale the dual quat by\n * @returns {quat2} out\n * @function\n */\n\nfunction scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n return out;\n}\n/**\n * Calculates the dot product of two dual quat's (The dot product of the real parts)\n *\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nvar dot = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"dot\"];\n/**\n * Performs a linear interpolation between two dual quats's\n * NOTE: The resulting dual quaternions won't always be normalized (The error is most noticeable when t = 0.5)\n *\n * @param {quat2} out the receiving dual quat\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat2} out\n */\n\nfunction lerp(out, a, b, t) {\n var mt = 1 - t;\n if (dot(a, b) < 0) t = -t;\n out[0] = a[0] * mt + b[0] * t;\n out[1] = a[1] * mt + b[1] * t;\n out[2] = a[2] * mt + b[2] * t;\n out[3] = a[3] * mt + b[3] * t;\n out[4] = a[4] * mt + b[4] * t;\n out[5] = a[5] * mt + b[5] * t;\n out[6] = a[6] * mt + b[6] * t;\n out[7] = a[7] * mt + b[7] * t;\n return out;\n}\n/**\n * Calculates the inverse of a dual quat. If they are normalized, conjugate is cheaper\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a dual quat to calculate inverse of\n * @returns {quat2} out\n */\n\nfunction invert(out, a) {\n var sqlen = squaredLength(a);\n out[0] = -a[0] / sqlen;\n out[1] = -a[1] / sqlen;\n out[2] = -a[2] / sqlen;\n out[3] = a[3] / sqlen;\n out[4] = -a[4] / sqlen;\n out[5] = -a[5] / sqlen;\n out[6] = -a[6] / sqlen;\n out[7] = a[7] / sqlen;\n return out;\n}\n/**\n * Calculates the conjugate of a dual quat\n * If the dual quaternion is normalized, this function is faster than quat2.inverse and produces the same result.\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat2} a quat to calculate conjugate of\n * @returns {quat2} out\n */\n\nfunction conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n out[4] = -a[4];\n out[5] = -a[5];\n out[6] = -a[6];\n out[7] = a[7];\n return out;\n}\n/**\n * Calculates the length of a dual quat\n *\n * @param {ReadonlyQuat2} a dual quat to calculate length of\n * @returns {Number} length of a\n * @function\n */\n\nvar length = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"length\"];\n/**\n * Alias for {@link quat2.length}\n * @function\n */\n\nvar len = length;\n/**\n * Calculates the squared length of a dual quat\n *\n * @param {ReadonlyQuat2} a dual quat to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nvar squaredLength = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"squaredLength\"];\n/**\n * Alias for {@link quat2.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Normalize a dual quat\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a dual quaternion to normalize\n * @returns {quat2} out\n * @function\n */\n\nfunction normalize(out, a) {\n var magnitude = squaredLength(a);\n\n if (magnitude > 0) {\n magnitude = Math.sqrt(magnitude);\n var a0 = a[0] / magnitude;\n var a1 = a[1] / magnitude;\n var a2 = a[2] / magnitude;\n var a3 = a[3] / magnitude;\n var b0 = a[4];\n var b1 = a[5];\n var b2 = a[6];\n var b3 = a[7];\n var a_dot_b = a0 * b0 + a1 * b1 + a2 * b2 + a3 * b3;\n out[0] = a0;\n out[1] = a1;\n out[2] = a2;\n out[3] = a3;\n out[4] = (b0 - a0 * a_dot_b) / magnitude;\n out[5] = (b1 - a1 * a_dot_b) / magnitude;\n out[6] = (b2 - a2 * a_dot_b) / magnitude;\n out[7] = (b3 - a3 * a_dot_b) / magnitude;\n }\n\n return out;\n}\n/**\n * Returns a string representation of a dual quatenion\n *\n * @param {ReadonlyQuat2} a dual quaternion to represent as a string\n * @returns {String} string representation of the dual quat\n */\n\nfunction str(a) {\n return \"quat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \")\";\n}\n/**\n * Returns whether or not the dual quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat2} a the first dual quaternion.\n * @param {ReadonlyQuat2} b the second dual quaternion.\n * @returns {Boolean} true if the dual quaternions are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7];\n}\n/**\n * Returns whether or not the dual quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat2} a the first dual quat.\n * @param {ReadonlyQuat2} b the second dual quat.\n * @returns {Boolean} true if the dual quats are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a7), Math.abs(b7));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS9xdWF0Mi5qcz9lNmJlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ047QUFDQTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUCxlQUFlLHFEQUFtQjs7QUFFbEMsTUFBTSxxREFBbUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7O0FBRU87QUFDUCxlQUFlLHFEQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7O0FBRU87QUFDUCxlQUFlLHFEQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQLGVBQWUscURBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYywrQ0FBVztBQUN6QixFQUFFLG9EQUFnQjtBQUNsQixjQUFjLHFEQUFtQjtBQUNqQyxFQUFFLHVEQUFtQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksS0FBSztBQUNqQixZQUFZLGNBQWM7QUFDMUIsWUFBWSxLQUFLO0FBQ2pCOztBQUVPLGNBQWMsNkNBQVM7QUFDOUI7QUFDQTtBQUNBLFlBQVksS0FBSztBQUNqQixZQUFZLGNBQWM7QUFDMUIsWUFBWSxLQUFLO0FBQ2pCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTyxjQUFjLDZDQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxLQUFLO0FBQ2pCLFlBQVksY0FBYztBQUMxQixZQUFZLEtBQUs7QUFDakI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsZ0RBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsZ0RBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsZ0RBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGNBQWM7QUFDekIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQSxzQkFBc0Isa0RBQWdCO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixXQUFXLGNBQWM7QUFDekIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFTyxVQUFVLDRDQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixXQUFXLGNBQWM7QUFDekIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFTyxhQUFhLCtDQUFXO0FBQy9CO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7O0FBRU8sb0JBQW9CLHNEQUFrQjtBQUM3QztBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQjtBQUNqb0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS9xdWF0Mi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdsTWF0cml4IGZyb20gXCIuL2NvbW1vbi5qc1wiO1xuaW1wb3J0ICogYXMgcXVhdCBmcm9tIFwiLi9xdWF0LmpzXCI7XG5pbXBvcnQgKiBhcyBtYXQ0IGZyb20gXCIuL21hdDQuanNcIjtcbi8qKlxuICogRHVhbCBRdWF0ZXJuaW9uPGJyPlxuICogRm9ybWF0OiBbcmVhbCwgZHVhbF08YnI+XG4gKiBRdWF0ZXJuaW9uIGZvcm1hdDogWFlaVzxicj5cbiAqIE1ha2Ugc3VyZSB0byBoYXZlIG5vcm1hbGl6ZWQgZHVhbCBxdWF0ZXJuaW9ucywgb3RoZXJ3aXNlIHRoZSBmdW5jdGlvbnMgbWF5IG5vdCB3b3JrIGFzIGludGVuZGVkLjxicj5cbiAqIEBtb2R1bGUgcXVhdDJcbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaWRlbnRpdHkgZHVhbCBxdWF0XG4gKlxuICogQHJldHVybnMge3F1YXQyfSBhIG5ldyBkdWFsIHF1YXRlcm5pb24gW3JlYWwgLT4gcm90YXRpb24sIGR1YWwgLT4gdHJhbnNsYXRpb25dXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgdmFyIGRxID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoOCk7XG5cbiAgaWYgKGdsTWF0cml4LkFSUkFZX1RZUEUgIT0gRmxvYXQzMkFycmF5KSB7XG4gICAgZHFbMF0gPSAwO1xuICAgIGRxWzFdID0gMDtcbiAgICBkcVsyXSA9IDA7XG4gICAgZHFbNF0gPSAwO1xuICAgIGRxWzVdID0gMDtcbiAgICBkcVs2XSA9IDA7XG4gICAgZHFbN10gPSAwO1xuICB9XG5cbiAgZHFbM10gPSAxO1xuICByZXR1cm4gZHE7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgcXVhdCBpbml0aWFsaXplZCB3aXRoIHZhbHVlcyBmcm9tIGFuIGV4aXN0aW5nIHF1YXRlcm5pb25cbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgZHVhbCBxdWF0ZXJuaW9uIHRvIGNsb25lXG4gKiBAcmV0dXJucyB7cXVhdDJ9IG5ldyBkdWFsIHF1YXRlcm5pb25cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZShhKSB7XG4gIHZhciBkcSA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDgpO1xuICBkcVswXSA9IGFbMF07XG4gIGRxWzFdID0gYVsxXTtcbiAgZHFbMl0gPSBhWzJdO1xuICBkcVszXSA9IGFbM107XG4gIGRxWzRdID0gYVs0XTtcbiAgZHFbNV0gPSBhWzVdO1xuICBkcVs2XSA9IGFbNl07XG4gIGRxWzddID0gYVs3XTtcbiAgcmV0dXJuIGRxO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGR1YWwgcXVhdCBpbml0aWFsaXplZCB3aXRoIHRoZSBnaXZlbiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0geDEgWCBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5MSBZIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHoxIFogY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0gdzEgVyBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB4MiBYIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHkyIFkgY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0gejIgWiBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB3MiBXIGNvbXBvbmVudFxuICogQHJldHVybnMge3F1YXQyfSBuZXcgZHVhbCBxdWF0ZXJuaW9uXG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVZhbHVlcyh4MSwgeTEsIHoxLCB3MSwgeDIsIHkyLCB6MiwgdzIpIHtcbiAgdmFyIGRxID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoOCk7XG4gIGRxWzBdID0geDE7XG4gIGRxWzFdID0geTE7XG4gIGRxWzJdID0gejE7XG4gIGRxWzNdID0gdzE7XG4gIGRxWzRdID0geDI7XG4gIGRxWzVdID0geTI7XG4gIGRxWzZdID0gejI7XG4gIGRxWzddID0gdzI7XG4gIHJldHVybiBkcTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBkdWFsIHF1YXQgZnJvbSB0aGUgZ2l2ZW4gdmFsdWVzIChxdWF0IGFuZCB0cmFuc2xhdGlvbilcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0geDEgWCBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5MSBZIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHoxIFogY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0gdzEgVyBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB4MiBYIGNvbXBvbmVudCAodHJhbnNsYXRpb24pXG4gKiBAcGFyYW0ge051bWJlcn0geTIgWSBjb21wb25lbnQgKHRyYW5zbGF0aW9uKVxuICogQHBhcmFtIHtOdW1iZXJ9IHoyIFogY29tcG9uZW50ICh0cmFuc2xhdGlvbilcbiAqIEByZXR1cm5zIHtxdWF0Mn0gbmV3IGR1YWwgcXVhdGVybmlvblxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Sb3RhdGlvblRyYW5zbGF0aW9uVmFsdWVzKHgxLCB5MSwgejEsIHcxLCB4MiwgeTIsIHoyKSB7XG4gIHZhciBkcSA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDgpO1xuICBkcVswXSA9IHgxO1xuICBkcVsxXSA9IHkxO1xuICBkcVsyXSA9IHoxO1xuICBkcVszXSA9IHcxO1xuICB2YXIgYXggPSB4MiAqIDAuNSxcbiAgICAgIGF5ID0geTIgKiAwLjUsXG4gICAgICBheiA9IHoyICogMC41O1xuICBkcVs0XSA9IGF4ICogdzEgKyBheSAqIHoxIC0gYXogKiB5MTtcbiAgZHFbNV0gPSBheSAqIHcxICsgYXogKiB4MSAtIGF4ICogejE7XG4gIGRxWzZdID0gYXogKiB3MSArIGF4ICogeTEgLSBheSAqIHgxO1xuICBkcVs3XSA9IC1heCAqIHgxIC0gYXkgKiB5MSAtIGF6ICogejE7XG4gIHJldHVybiBkcTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIGR1YWwgcXVhdCBmcm9tIGEgcXVhdGVybmlvbiBhbmQgYSB0cmFuc2xhdGlvblxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gZHVhbCBxdWF0ZXJuaW9uIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gcSBhIG5vcm1hbGl6ZWQgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHQgdHJhbmxhdGlvbiB2ZWN0b3JcbiAqIEByZXR1cm5zIHtxdWF0Mn0gZHVhbCBxdWF0ZXJuaW9uIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24ob3V0LCBxLCB0KSB7XG4gIHZhciBheCA9IHRbMF0gKiAwLjUsXG4gICAgICBheSA9IHRbMV0gKiAwLjUsXG4gICAgICBheiA9IHRbMl0gKiAwLjUsXG4gICAgICBieCA9IHFbMF0sXG4gICAgICBieSA9IHFbMV0sXG4gICAgICBieiA9IHFbMl0sXG4gICAgICBidyA9IHFbM107XG4gIG91dFswXSA9IGJ4O1xuICBvdXRbMV0gPSBieTtcbiAgb3V0WzJdID0gYno7XG4gIG91dFszXSA9IGJ3O1xuICBvdXRbNF0gPSBheCAqIGJ3ICsgYXkgKiBieiAtIGF6ICogYnk7XG4gIG91dFs1XSA9IGF5ICogYncgKyBheiAqIGJ4IC0gYXggKiBiejtcbiAgb3V0WzZdID0gYXogKiBidyArIGF4ICogYnkgLSBheSAqIGJ4O1xuICBvdXRbN10gPSAtYXggKiBieCAtIGF5ICogYnkgLSBheiAqIGJ6O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgZHVhbCBxdWF0IGZyb20gYSB0cmFuc2xhdGlvblxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gZHVhbCBxdWF0ZXJuaW9uIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gdCB0cmFuc2xhdGlvbiB2ZWN0b3JcbiAqIEByZXR1cm5zIHtxdWF0Mn0gZHVhbCBxdWF0ZXJuaW9uIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVRyYW5zbGF0aW9uKG91dCwgdCkge1xuICBvdXRbMF0gPSAwO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAxO1xuICBvdXRbNF0gPSB0WzBdICogMC41O1xuICBvdXRbNV0gPSB0WzFdICogMC41O1xuICBvdXRbNl0gPSB0WzJdICogMC41O1xuICBvdXRbN10gPSAwO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgZHVhbCBxdWF0IGZyb20gYSBxdWF0ZXJuaW9uXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBkdWFsIHF1YXRlcm5pb24gcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBxIHRoZSBxdWF0ZXJuaW9uXG4gKiBAcmV0dXJucyB7cXVhdDJ9IGR1YWwgcXVhdGVybmlvbiByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Sb3RhdGlvbihvdXQsIHEpIHtcbiAgb3V0WzBdID0gcVswXTtcbiAgb3V0WzFdID0gcVsxXTtcbiAgb3V0WzJdID0gcVsyXTtcbiAgb3V0WzNdID0gcVszXTtcbiAgb3V0WzRdID0gMDtcbiAgb3V0WzVdID0gMDtcbiAgb3V0WzZdID0gMDtcbiAgb3V0WzddID0gMDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBkdWFsIHF1YXQgZnJvbSBhIG1hdHJpeCAoNHg0KVxuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgZHVhbCBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgbWF0cml4XG4gKiBAcmV0dXJucyB7cXVhdDJ9IGR1YWwgcXVhdCByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21NYXQ0KG91dCwgYSkge1xuICAvL1RPRE8gT3B0aW1pemUgdGhpc1xuICB2YXIgb3V0ZXIgPSBxdWF0LmNyZWF0ZSgpO1xuICBtYXQ0LmdldFJvdGF0aW9uKG91dGVyLCBhKTtcbiAgdmFyIHQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSgzKTtcbiAgbWF0NC5nZXRUcmFuc2xhdGlvbih0LCBhKTtcbiAgZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24ob3V0LCBvdXRlciwgdCk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENvcHkgdGhlIHZhbHVlcyBmcm9tIG9uZSBkdWFsIHF1YXQgdG8gYW5vdGhlclxuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIGR1YWwgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIHRoZSBzb3VyY2UgZHVhbCBxdWF0ZXJuaW9uXG4gKiBAcmV0dXJucyB7cXVhdDJ9IG91dFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHkob3V0LCBhKSB7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIG91dFszXSA9IGFbM107XG4gIG91dFs0XSA9IGFbNF07XG4gIG91dFs1XSA9IGFbNV07XG4gIG91dFs2XSA9IGFbNl07XG4gIG91dFs3XSA9IGFbN107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCBhIGR1YWwgcXVhdCB0byB0aGUgaWRlbnRpdHkgZHVhbCBxdWF0ZXJuaW9uXG4gKlxuICogQHBhcmFtIHtxdWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpdHkob3V0KSB7XG4gIG91dFswXSA9IDA7XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IDE7XG4gIG91dFs0XSA9IDA7XG4gIG91dFs1XSA9IDA7XG4gIG91dFs2XSA9IDA7XG4gIG91dFs3XSA9IDA7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIGR1YWwgcXVhdCB0byB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHtxdWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHtOdW1iZXJ9IHgxIFggY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geTEgWSBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB6MSBaIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHcxIFcgY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geDIgWCBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5MiBZIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHoyIFogY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0gdzIgVyBjb21wb25lbnRcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0KG91dCwgeDEsIHkxLCB6MSwgdzEsIHgyLCB5MiwgejIsIHcyKSB7XG4gIG91dFswXSA9IHgxO1xuICBvdXRbMV0gPSB5MTtcbiAgb3V0WzJdID0gejE7XG4gIG91dFszXSA9IHcxO1xuICBvdXRbNF0gPSB4MjtcbiAgb3V0WzVdID0geTI7XG4gIG91dFs2XSA9IHoyO1xuICBvdXRbN10gPSB3MjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogR2V0cyB0aGUgcmVhbCBwYXJ0IG9mIGEgZHVhbCBxdWF0XG4gKiBAcGFyYW0gIHtxdWF0fSBvdXQgcmVhbCBwYXJ0XG4gKiBAcGFyYW0gIHtSZWFkb25seVF1YXQyfSBhIER1YWwgUXVhdGVybmlvblxuICogQHJldHVybiB7cXVhdH0gcmVhbCBwYXJ0XG4gKi9cblxuZXhwb3J0IHZhciBnZXRSZWFsID0gcXVhdC5jb3B5O1xuLyoqXG4gKiBHZXRzIHRoZSBkdWFsIHBhcnQgb2YgYSBkdWFsIHF1YXRcbiAqIEBwYXJhbSAge3F1YXR9IG91dCBkdWFsIHBhcnRcbiAqIEBwYXJhbSAge1JlYWRvbmx5UXVhdDJ9IGEgRHVhbCBRdWF0ZXJuaW9uXG4gKiBAcmV0dXJuIHtxdWF0fSBkdWFsIHBhcnRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHVhbChvdXQsIGEpIHtcbiAgb3V0WzBdID0gYVs0XTtcbiAgb3V0WzFdID0gYVs1XTtcbiAgb3V0WzJdID0gYVs2XTtcbiAgb3V0WzNdID0gYVs3XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IHRoZSByZWFsIGNvbXBvbmVudCBvZiBhIGR1YWwgcXVhdCB0byB0aGUgZ2l2ZW4gcXVhdGVybmlvblxuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBxIGEgcXVhdGVybmlvbiByZXByZXNlbnRpbmcgdGhlIHJlYWwgcGFydFxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgc2V0UmVhbCA9IHF1YXQuY29weTtcbi8qKlxuICogU2V0IHRoZSBkdWFsIGNvbXBvbmVudCBvZiBhIGR1YWwgcXVhdCB0byB0aGUgZ2l2ZW4gcXVhdGVybmlvblxuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBxIGEgcXVhdGVybmlvbiByZXByZXNlbnRpbmcgdGhlIGR1YWwgcGFydFxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXREdWFsKG91dCwgcSkge1xuICBvdXRbNF0gPSBxWzBdO1xuICBvdXRbNV0gPSBxWzFdO1xuICBvdXRbNl0gPSBxWzJdO1xuICBvdXRbN10gPSBxWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBHZXRzIHRoZSB0cmFuc2xhdGlvbiBvZiBhIG5vcm1hbGl6ZWQgZHVhbCBxdWF0XG4gKiBAcGFyYW0gIHt2ZWMzfSBvdXQgdHJhbnNsYXRpb25cbiAqIEBwYXJhbSAge1JlYWRvbmx5UXVhdDJ9IGEgRHVhbCBRdWF0ZXJuaW9uIHRvIGJlIGRlY29tcG9zZWRcbiAqIEByZXR1cm4ge3ZlYzN9IHRyYW5zbGF0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zbGF0aW9uKG91dCwgYSkge1xuICB2YXIgYXggPSBhWzRdLFxuICAgICAgYXkgPSBhWzVdLFxuICAgICAgYXogPSBhWzZdLFxuICAgICAgYXcgPSBhWzddLFxuICAgICAgYnggPSAtYVswXSxcbiAgICAgIGJ5ID0gLWFbMV0sXG4gICAgICBieiA9IC1hWzJdLFxuICAgICAgYncgPSBhWzNdO1xuICBvdXRbMF0gPSAoYXggKiBidyArIGF3ICogYnggKyBheSAqIGJ6IC0gYXogKiBieSkgKiAyO1xuICBvdXRbMV0gPSAoYXkgKiBidyArIGF3ICogYnkgKyBheiAqIGJ4IC0gYXggKiBieikgKiAyO1xuICBvdXRbMl0gPSAoYXogKiBidyArIGF3ICogYnogKyBheCAqIGJ5IC0gYXkgKiBieCkgKiAyO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc2xhdGVzIGEgZHVhbCBxdWF0IGJ5IHRoZSBnaXZlbiB2ZWN0b3JcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgZHVhbCBxdWF0ZXJuaW9uIHRvIHRyYW5zbGF0ZVxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHYgdmVjdG9yIHRvIHRyYW5zbGF0ZSBieVxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlKG91dCwgYSwgdikge1xuICB2YXIgYXgxID0gYVswXSxcbiAgICAgIGF5MSA9IGFbMV0sXG4gICAgICBhejEgPSBhWzJdLFxuICAgICAgYXcxID0gYVszXSxcbiAgICAgIGJ4MSA9IHZbMF0gKiAwLjUsXG4gICAgICBieTEgPSB2WzFdICogMC41LFxuICAgICAgYnoxID0gdlsyXSAqIDAuNSxcbiAgICAgIGF4MiA9IGFbNF0sXG4gICAgICBheTIgPSBhWzVdLFxuICAgICAgYXoyID0gYVs2XSxcbiAgICAgIGF3MiA9IGFbN107XG4gIG91dFswXSA9IGF4MTtcbiAgb3V0WzFdID0gYXkxO1xuICBvdXRbMl0gPSBhejE7XG4gIG91dFszXSA9IGF3MTtcbiAgb3V0WzRdID0gYXcxICogYngxICsgYXkxICogYnoxIC0gYXoxICogYnkxICsgYXgyO1xuICBvdXRbNV0gPSBhdzEgKiBieTEgKyBhejEgKiBieDEgLSBheDEgKiBiejEgKyBheTI7XG4gIG91dFs2XSA9IGF3MSAqIGJ6MSArIGF4MSAqIGJ5MSAtIGF5MSAqIGJ4MSArIGF6MjtcbiAgb3V0WzddID0gLWF4MSAqIGJ4MSAtIGF5MSAqIGJ5MSAtIGF6MSAqIGJ6MSArIGF3MjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIGR1YWwgcXVhdCBhcm91bmQgdGhlIFggYXhpc1xuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIGR1YWwgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIHRoZSBkdWFsIHF1YXRlcm5pb24gdG8gcm90YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gcmFkIGhvdyBmYXIgc2hvdWxkIHRoZSByb3RhdGlvbiBiZVxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlWChvdXQsIGEsIHJhZCkge1xuICB2YXIgYnggPSAtYVswXSxcbiAgICAgIGJ5ID0gLWFbMV0sXG4gICAgICBieiA9IC1hWzJdLFxuICAgICAgYncgPSBhWzNdLFxuICAgICAgYXggPSBhWzRdLFxuICAgICAgYXkgPSBhWzVdLFxuICAgICAgYXogPSBhWzZdLFxuICAgICAgYXcgPSBhWzddLFxuICAgICAgYXgxID0gYXggKiBidyArIGF3ICogYnggKyBheSAqIGJ6IC0gYXogKiBieSxcbiAgICAgIGF5MSA9IGF5ICogYncgKyBhdyAqIGJ5ICsgYXogKiBieCAtIGF4ICogYnosXG4gICAgICBhejEgPSBheiAqIGJ3ICsgYXcgKiBieiArIGF4ICogYnkgLSBheSAqIGJ4LFxuICAgICAgYXcxID0gYXcgKiBidyAtIGF4ICogYnggLSBheSAqIGJ5IC0gYXogKiBiejtcbiAgcXVhdC5yb3RhdGVYKG91dCwgYSwgcmFkKTtcbiAgYnggPSBvdXRbMF07XG4gIGJ5ID0gb3V0WzFdO1xuICBieiA9IG91dFsyXTtcbiAgYncgPSBvdXRbM107XG4gIG91dFs0XSA9IGF4MSAqIGJ3ICsgYXcxICogYnggKyBheTEgKiBieiAtIGF6MSAqIGJ5O1xuICBvdXRbNV0gPSBheTEgKiBidyArIGF3MSAqIGJ5ICsgYXoxICogYnggLSBheDEgKiBiejtcbiAgb3V0WzZdID0gYXoxICogYncgKyBhdzEgKiBieiArIGF4MSAqIGJ5IC0gYXkxICogYng7XG4gIG91dFs3XSA9IGF3MSAqIGJ3IC0gYXgxICogYnggLSBheTEgKiBieSAtIGF6MSAqIGJ6O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGVzIGEgZHVhbCBxdWF0IGFyb3VuZCB0aGUgWSBheGlzXG4gKlxuICogQHBhcmFtIHtxdWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgZHVhbCBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgdGhlIGR1YWwgcXVhdGVybmlvbiB0byByb3RhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSByYWQgaG93IGZhciBzaG91bGQgdGhlIHJvdGF0aW9uIGJlXG4gKiBAcmV0dXJucyB7cXVhdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVZKG91dCwgYSwgcmFkKSB7XG4gIHZhciBieCA9IC1hWzBdLFxuICAgICAgYnkgPSAtYVsxXSxcbiAgICAgIGJ6ID0gLWFbMl0sXG4gICAgICBidyA9IGFbM10sXG4gICAgICBheCA9IGFbNF0sXG4gICAgICBheSA9IGFbNV0sXG4gICAgICBheiA9IGFbNl0sXG4gICAgICBhdyA9IGFbN10sXG4gICAgICBheDEgPSBheCAqIGJ3ICsgYXcgKiBieCArIGF5ICogYnogLSBheiAqIGJ5LFxuICAgICAgYXkxID0gYXkgKiBidyArIGF3ICogYnkgKyBheiAqIGJ4IC0gYXggKiBieixcbiAgICAgIGF6MSA9IGF6ICogYncgKyBhdyAqIGJ6ICsgYXggKiBieSAtIGF5ICogYngsXG4gICAgICBhdzEgPSBhdyAqIGJ3IC0gYXggKiBieCAtIGF5ICogYnkgLSBheiAqIGJ6O1xuICBxdWF0LnJvdGF0ZVkob3V0LCBhLCByYWQpO1xuICBieCA9IG91dFswXTtcbiAgYnkgPSBvdXRbMV07XG4gIGJ6ID0gb3V0WzJdO1xuICBidyA9IG91dFszXTtcbiAgb3V0WzRdID0gYXgxICogYncgKyBhdzEgKiBieCArIGF5MSAqIGJ6IC0gYXoxICogYnk7XG4gIG91dFs1XSA9IGF5MSAqIGJ3ICsgYXcxICogYnkgKyBhejEgKiBieCAtIGF4MSAqIGJ6O1xuICBvdXRbNl0gPSBhejEgKiBidyArIGF3MSAqIGJ6ICsgYXgxICogYnkgLSBheTEgKiBieDtcbiAgb3V0WzddID0gYXcxICogYncgLSBheDEgKiBieCAtIGF5MSAqIGJ5IC0gYXoxICogYno7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZXMgYSBkdWFsIHF1YXQgYXJvdW5kIHRoZSBaIGF4aXNcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgZHVhbCBxdWF0ZXJuaW9uIHRvIHJvdGF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHJhZCBob3cgZmFyIHNob3VsZCB0aGUgcm90YXRpb24gYmVcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZVoob3V0LCBhLCByYWQpIHtcbiAgdmFyIGJ4ID0gLWFbMF0sXG4gICAgICBieSA9IC1hWzFdLFxuICAgICAgYnogPSAtYVsyXSxcbiAgICAgIGJ3ID0gYVszXSxcbiAgICAgIGF4ID0gYVs0XSxcbiAgICAgIGF5ID0gYVs1XSxcbiAgICAgIGF6ID0gYVs2XSxcbiAgICAgIGF3ID0gYVs3XSxcbiAgICAgIGF4MSA9IGF4ICogYncgKyBhdyAqIGJ4ICsgYXkgKiBieiAtIGF6ICogYnksXG4gICAgICBheTEgPSBheSAqIGJ3ICsgYXcgKiBieSArIGF6ICogYnggLSBheCAqIGJ6LFxuICAgICAgYXoxID0gYXogKiBidyArIGF3ICogYnogKyBheCAqIGJ5IC0gYXkgKiBieCxcbiAgICAgIGF3MSA9IGF3ICogYncgLSBheCAqIGJ4IC0gYXkgKiBieSAtIGF6ICogYno7XG4gIHF1YXQucm90YXRlWihvdXQsIGEsIHJhZCk7XG4gIGJ4ID0gb3V0WzBdO1xuICBieSA9IG91dFsxXTtcbiAgYnogPSBvdXRbMl07XG4gIGJ3ID0gb3V0WzNdO1xuICBvdXRbNF0gPSBheDEgKiBidyArIGF3MSAqIGJ4ICsgYXkxICogYnogLSBhejEgKiBieTtcbiAgb3V0WzVdID0gYXkxICogYncgKyBhdzEgKiBieSArIGF6MSAqIGJ4IC0gYXgxICogYno7XG4gIG91dFs2XSA9IGF6MSAqIGJ3ICsgYXcxICogYnogKyBheDEgKiBieSAtIGF5MSAqIGJ4O1xuICBvdXRbN10gPSBhdzEgKiBidyAtIGF4MSAqIGJ4IC0gYXkxICogYnkgLSBhejEgKiBiejtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIGR1YWwgcXVhdCBieSBhIGdpdmVuIHF1YXRlcm5pb24gKGEgKiBxKVxuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIGR1YWwgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIHRoZSBkdWFsIHF1YXRlcm5pb24gdG8gcm90YXRlXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gcSBxdWF0ZXJuaW9uIHRvIHJvdGF0ZSBieVxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlQnlRdWF0QXBwZW5kKG91dCwgYSwgcSkge1xuICB2YXIgcXggPSBxWzBdLFxuICAgICAgcXkgPSBxWzFdLFxuICAgICAgcXogPSBxWzJdLFxuICAgICAgcXcgPSBxWzNdLFxuICAgICAgYXggPSBhWzBdLFxuICAgICAgYXkgPSBhWzFdLFxuICAgICAgYXogPSBhWzJdLFxuICAgICAgYXcgPSBhWzNdO1xuICBvdXRbMF0gPSBheCAqIHF3ICsgYXcgKiBxeCArIGF5ICogcXogLSBheiAqIHF5O1xuICBvdXRbMV0gPSBheSAqIHF3ICsgYXcgKiBxeSArIGF6ICogcXggLSBheCAqIHF6O1xuICBvdXRbMl0gPSBheiAqIHF3ICsgYXcgKiBxeiArIGF4ICogcXkgLSBheSAqIHF4O1xuICBvdXRbM10gPSBhdyAqIHF3IC0gYXggKiBxeCAtIGF5ICogcXkgLSBheiAqIHF6O1xuICBheCA9IGFbNF07XG4gIGF5ID0gYVs1XTtcbiAgYXogPSBhWzZdO1xuICBhdyA9IGFbN107XG4gIG91dFs0XSA9IGF4ICogcXcgKyBhdyAqIHF4ICsgYXkgKiBxeiAtIGF6ICogcXk7XG4gIG91dFs1XSA9IGF5ICogcXcgKyBhdyAqIHF5ICsgYXogKiBxeCAtIGF4ICogcXo7XG4gIG91dFs2XSA9IGF6ICogcXcgKyBhdyAqIHF6ICsgYXggKiBxeSAtIGF5ICogcXg7XG4gIG91dFs3XSA9IGF3ICogcXcgLSBheCAqIHF4IC0gYXkgKiBxeSAtIGF6ICogcXo7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZXMgYSBkdWFsIHF1YXQgYnkgYSBnaXZlbiBxdWF0ZXJuaW9uIChxICogYSlcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBxIHF1YXRlcm5pb24gdG8gcm90YXRlIGJ5XG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgdGhlIGR1YWwgcXVhdGVybmlvbiB0byByb3RhdGVcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZUJ5UXVhdFByZXBlbmQob3V0LCBxLCBhKSB7XG4gIHZhciBxeCA9IHFbMF0sXG4gICAgICBxeSA9IHFbMV0sXG4gICAgICBxeiA9IHFbMl0sXG4gICAgICBxdyA9IHFbM10sXG4gICAgICBieCA9IGFbMF0sXG4gICAgICBieSA9IGFbMV0sXG4gICAgICBieiA9IGFbMl0sXG4gICAgICBidyA9IGFbM107XG4gIG91dFswXSA9IHF4ICogYncgKyBxdyAqIGJ4ICsgcXkgKiBieiAtIHF6ICogYnk7XG4gIG91dFsxXSA9IHF5ICogYncgKyBxdyAqIGJ5ICsgcXogKiBieCAtIHF4ICogYno7XG4gIG91dFsyXSA9IHF6ICogYncgKyBxdyAqIGJ6ICsgcXggKiBieSAtIHF5ICogYng7XG4gIG91dFszXSA9IHF3ICogYncgLSBxeCAqIGJ4IC0gcXkgKiBieSAtIHF6ICogYno7XG4gIGJ4ID0gYVs0XTtcbiAgYnkgPSBhWzVdO1xuICBieiA9IGFbNl07XG4gIGJ3ID0gYVs3XTtcbiAgb3V0WzRdID0gcXggKiBidyArIHF3ICogYnggKyBxeSAqIGJ6IC0gcXogKiBieTtcbiAgb3V0WzVdID0gcXkgKiBidyArIHF3ICogYnkgKyBxeiAqIGJ4IC0gcXggKiBiejtcbiAgb3V0WzZdID0gcXogKiBidyArIHF3ICogYnogKyBxeCAqIGJ5IC0gcXkgKiBieDtcbiAgb3V0WzddID0gcXcgKiBidyAtIHF4ICogYnggLSBxeSAqIGJ5IC0gcXogKiBiejtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIGR1YWwgcXVhdCBhcm91bmQgYSBnaXZlbiBheGlzLiBEb2VzIHRoZSBub3JtYWxpc2F0aW9uIGF1dG9tYXRpY2FsbHlcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgZHVhbCBxdWF0ZXJuaW9uIHRvIHJvdGF0ZVxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGF4aXMgdGhlIGF4aXMgdG8gcm90YXRlIGFyb3VuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHJhZCBob3cgZmFyIHRoZSByb3RhdGlvbiBzaG91bGQgYmVcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZUFyb3VuZEF4aXMob3V0LCBhLCBheGlzLCByYWQpIHtcbiAgLy9TcGVjaWFsIGNhc2UgZm9yIHJhZCA9IDBcbiAgaWYgKE1hdGguYWJzKHJhZCkgPCBnbE1hdHJpeC5FUFNJTE9OKSB7XG4gICAgcmV0dXJuIGNvcHkob3V0LCBhKTtcbiAgfVxuXG4gIHZhciBheGlzTGVuZ3RoID0gTWF0aC5oeXBvdChheGlzWzBdLCBheGlzWzFdLCBheGlzWzJdKTtcbiAgcmFkID0gcmFkICogMC41O1xuICB2YXIgcyA9IE1hdGguc2luKHJhZCk7XG4gIHZhciBieCA9IHMgKiBheGlzWzBdIC8gYXhpc0xlbmd0aDtcbiAgdmFyIGJ5ID0gcyAqIGF4aXNbMV0gLyBheGlzTGVuZ3RoO1xuICB2YXIgYnogPSBzICogYXhpc1syXSAvIGF4aXNMZW5ndGg7XG4gIHZhciBidyA9IE1hdGguY29zKHJhZCk7XG4gIHZhciBheDEgPSBhWzBdLFxuICAgICAgYXkxID0gYVsxXSxcbiAgICAgIGF6MSA9IGFbMl0sXG4gICAgICBhdzEgPSBhWzNdO1xuICBvdXRbMF0gPSBheDEgKiBidyArIGF3MSAqIGJ4ICsgYXkxICogYnogLSBhejEgKiBieTtcbiAgb3V0WzFdID0gYXkxICogYncgKyBhdzEgKiBieSArIGF6MSAqIGJ4IC0gYXgxICogYno7XG4gIG91dFsyXSA9IGF6MSAqIGJ3ICsgYXcxICogYnogKyBheDEgKiBieSAtIGF5MSAqIGJ4O1xuICBvdXRbM10gPSBhdzEgKiBidyAtIGF4MSAqIGJ4IC0gYXkxICogYnkgLSBhejEgKiBiejtcbiAgdmFyIGF4ID0gYVs0XSxcbiAgICAgIGF5ID0gYVs1XSxcbiAgICAgIGF6ID0gYVs2XSxcbiAgICAgIGF3ID0gYVs3XTtcbiAgb3V0WzRdID0gYXggKiBidyArIGF3ICogYnggKyBheSAqIGJ6IC0gYXogKiBieTtcbiAgb3V0WzVdID0gYXkgKiBidyArIGF3ICogYnkgKyBheiAqIGJ4IC0gYXggKiBiejtcbiAgb3V0WzZdID0gYXogKiBidyArIGF3ICogYnogKyBheCAqIGJ5IC0gYXkgKiBieDtcbiAgb3V0WzddID0gYXcgKiBidyAtIGF4ICogYnggLSBheSAqIGJ5IC0gYXogKiBiejtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQWRkcyB0d28gZHVhbCBxdWF0J3NcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXTtcbiAgb3V0WzJdID0gYVsyXSArIGJbMl07XG4gIG91dFszXSA9IGFbM10gKyBiWzNdO1xuICBvdXRbNF0gPSBhWzRdICsgYls0XTtcbiAgb3V0WzVdID0gYVs1XSArIGJbNV07XG4gIG91dFs2XSA9IGFbNl0gKyBiWzZdO1xuICBvdXRbN10gPSBhWzddICsgYls3XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTXVsdGlwbGllcyB0d28gZHVhbCBxdWF0J3NcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHkob3V0LCBhLCBiKSB7XG4gIHZhciBheDAgPSBhWzBdLFxuICAgICAgYXkwID0gYVsxXSxcbiAgICAgIGF6MCA9IGFbMl0sXG4gICAgICBhdzAgPSBhWzNdLFxuICAgICAgYngxID0gYls0XSxcbiAgICAgIGJ5MSA9IGJbNV0sXG4gICAgICBiejEgPSBiWzZdLFxuICAgICAgYncxID0gYls3XSxcbiAgICAgIGF4MSA9IGFbNF0sXG4gICAgICBheTEgPSBhWzVdLFxuICAgICAgYXoxID0gYVs2XSxcbiAgICAgIGF3MSA9IGFbN10sXG4gICAgICBieDAgPSBiWzBdLFxuICAgICAgYnkwID0gYlsxXSxcbiAgICAgIGJ6MCA9IGJbMl0sXG4gICAgICBidzAgPSBiWzNdO1xuICBvdXRbMF0gPSBheDAgKiBidzAgKyBhdzAgKiBieDAgKyBheTAgKiBiejAgLSBhejAgKiBieTA7XG4gIG91dFsxXSA9IGF5MCAqIGJ3MCArIGF3MCAqIGJ5MCArIGF6MCAqIGJ4MCAtIGF4MCAqIGJ6MDtcbiAgb3V0WzJdID0gYXowICogYncwICsgYXcwICogYnowICsgYXgwICogYnkwIC0gYXkwICogYngwO1xuICBvdXRbM10gPSBhdzAgKiBidzAgLSBheDAgKiBieDAgLSBheTAgKiBieTAgLSBhejAgKiBiejA7XG4gIG91dFs0XSA9IGF4MCAqIGJ3MSArIGF3MCAqIGJ4MSArIGF5MCAqIGJ6MSAtIGF6MCAqIGJ5MSArIGF4MSAqIGJ3MCArIGF3MSAqIGJ4MCArIGF5MSAqIGJ6MCAtIGF6MSAqIGJ5MDtcbiAgb3V0WzVdID0gYXkwICogYncxICsgYXcwICogYnkxICsgYXowICogYngxIC0gYXgwICogYnoxICsgYXkxICogYncwICsgYXcxICogYnkwICsgYXoxICogYngwIC0gYXgxICogYnowO1xuICBvdXRbNl0gPSBhejAgKiBidzEgKyBhdzAgKiBiejEgKyBheDAgKiBieTEgLSBheTAgKiBieDEgKyBhejEgKiBidzAgKyBhdzEgKiBiejAgKyBheDEgKiBieTAgLSBheTEgKiBieDA7XG4gIG91dFs3XSA9IGF3MCAqIGJ3MSAtIGF4MCAqIGJ4MSAtIGF5MCAqIGJ5MSAtIGF6MCAqIGJ6MSArIGF3MSAqIGJ3MCAtIGF4MSAqIGJ4MCAtIGF5MSAqIGJ5MCAtIGF6MSAqIGJ6MDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayBxdWF0Mi5tdWx0aXBseX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgbXVsID0gbXVsdGlwbHk7XG4vKipcbiAqIFNjYWxlcyBhIGR1YWwgcXVhdCBieSBhIHNjYWxhciBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgZHVhbCBxdWF0IHRvIHNjYWxlXG4gKiBAcGFyYW0ge051bWJlcn0gYiBhbW91bnQgdG8gc2NhbGUgdGhlIGR1YWwgcXVhdCBieVxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZShvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAqIGI7XG4gIG91dFsxXSA9IGFbMV0gKiBiO1xuICBvdXRbMl0gPSBhWzJdICogYjtcbiAgb3V0WzNdID0gYVszXSAqIGI7XG4gIG91dFs0XSA9IGFbNF0gKiBiO1xuICBvdXRbNV0gPSBhWzVdICogYjtcbiAgb3V0WzZdID0gYVs2XSAqIGI7XG4gIG91dFs3XSA9IGFbN10gKiBiO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBkb3QgcHJvZHVjdCBvZiB0d28gZHVhbCBxdWF0J3MgKFRoZSBkb3QgcHJvZHVjdCBvZiB0aGUgcmVhbCBwYXJ0cylcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGRvdCBwcm9kdWN0IG9mIGEgYW5kIGJcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgZG90ID0gcXVhdC5kb3Q7XG4vKipcbiAqIFBlcmZvcm1zIGEgbGluZWFyIGludGVycG9sYXRpb24gYmV0d2VlbiB0d28gZHVhbCBxdWF0cydzXG4gKiBOT1RFOiBUaGUgcmVzdWx0aW5nIGR1YWwgcXVhdGVybmlvbnMgd29uJ3QgYWx3YXlzIGJlIG5vcm1hbGl6ZWQgKFRoZSBlcnJvciBpcyBtb3N0IG5vdGljZWFibGUgd2hlbiB0ID0gMC41KVxuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIGR1YWwgcXVhdFxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcGFyYW0ge051bWJlcn0gdCBpbnRlcnBvbGF0aW9uIGFtb3VudCwgaW4gdGhlIHJhbmdlIFswLTFdLCBiZXR3ZWVuIHRoZSB0d28gaW5wdXRzXG4gKiBAcmV0dXJucyB7cXVhdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsZXJwKG91dCwgYSwgYiwgdCkge1xuICB2YXIgbXQgPSAxIC0gdDtcbiAgaWYgKGRvdChhLCBiKSA8IDApIHQgPSAtdDtcbiAgb3V0WzBdID0gYVswXSAqIG10ICsgYlswXSAqIHQ7XG4gIG91dFsxXSA9IGFbMV0gKiBtdCArIGJbMV0gKiB0O1xuICBvdXRbMl0gPSBhWzJdICogbXQgKyBiWzJdICogdDtcbiAgb3V0WzNdID0gYVszXSAqIG10ICsgYlszXSAqIHQ7XG4gIG91dFs0XSA9IGFbNF0gKiBtdCArIGJbNF0gKiB0O1xuICBvdXRbNV0gPSBhWzVdICogbXQgKyBiWzVdICogdDtcbiAgb3V0WzZdID0gYVs2XSAqIG10ICsgYls2XSAqIHQ7XG4gIG91dFs3XSA9IGFbN10gKiBtdCArIGJbN10gKiB0O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBpbnZlcnNlIG9mIGEgZHVhbCBxdWF0LiBJZiB0aGV5IGFyZSBub3JtYWxpemVkLCBjb25qdWdhdGUgaXMgY2hlYXBlclxuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIGR1YWwgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIGR1YWwgcXVhdCB0byBjYWxjdWxhdGUgaW52ZXJzZSBvZlxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0KG91dCwgYSkge1xuICB2YXIgc3FsZW4gPSBzcXVhcmVkTGVuZ3RoKGEpO1xuICBvdXRbMF0gPSAtYVswXSAvIHNxbGVuO1xuICBvdXRbMV0gPSAtYVsxXSAvIHNxbGVuO1xuICBvdXRbMl0gPSAtYVsyXSAvIHNxbGVuO1xuICBvdXRbM10gPSBhWzNdIC8gc3FsZW47XG4gIG91dFs0XSA9IC1hWzRdIC8gc3FsZW47XG4gIG91dFs1XSA9IC1hWzVdIC8gc3FsZW47XG4gIG91dFs2XSA9IC1hWzZdIC8gc3FsZW47XG4gIG91dFs3XSA9IGFbN10gLyBzcWxlbjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgY29uanVnYXRlIG9mIGEgZHVhbCBxdWF0XG4gKiBJZiB0aGUgZHVhbCBxdWF0ZXJuaW9uIGlzIG5vcm1hbGl6ZWQsIHRoaXMgZnVuY3Rpb24gaXMgZmFzdGVyIHRoYW4gcXVhdDIuaW52ZXJzZSBhbmQgcHJvZHVjZXMgdGhlIHNhbWUgcmVzdWx0LlxuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSBxdWF0IHRvIGNhbGN1bGF0ZSBjb25qdWdhdGUgb2ZcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmp1Z2F0ZShvdXQsIGEpIHtcbiAgb3V0WzBdID0gLWFbMF07XG4gIG91dFsxXSA9IC1hWzFdO1xuICBvdXRbMl0gPSAtYVsyXTtcbiAgb3V0WzNdID0gYVszXTtcbiAgb3V0WzRdID0gLWFbNF07XG4gIG91dFs1XSA9IC1hWzVdO1xuICBvdXRbNl0gPSAtYVs2XTtcbiAgb3V0WzddID0gYVs3XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgbGVuZ3RoIG9mIGEgZHVhbCBxdWF0XG4gKlxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIGR1YWwgcXVhdCB0byBjYWxjdWxhdGUgbGVuZ3RoIG9mXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBsZW5ndGggb2YgYVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBsZW5ndGggPSBxdWF0Lmxlbmd0aDtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayBxdWF0Mi5sZW5ndGh9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGxlbiA9IGxlbmd0aDtcbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgc3F1YXJlZCBsZW5ndGggb2YgYSBkdWFsIHF1YXRcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgZHVhbCBxdWF0IHRvIGNhbGN1bGF0ZSBzcXVhcmVkIGxlbmd0aCBvZlxuICogQHJldHVybnMge051bWJlcn0gc3F1YXJlZCBsZW5ndGggb2YgYVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzcXVhcmVkTGVuZ3RoID0gcXVhdC5zcXVhcmVkTGVuZ3RoO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHF1YXQyLnNxdWFyZWRMZW5ndGh9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHNxckxlbiA9IHNxdWFyZWRMZW5ndGg7XG4vKipcbiAqIE5vcm1hbGl6ZSBhIGR1YWwgcXVhdFxuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIGR1YWwgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIGR1YWwgcXVhdGVybmlvbiB0byBub3JtYWxpemVcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKG91dCwgYSkge1xuICB2YXIgbWFnbml0dWRlID0gc3F1YXJlZExlbmd0aChhKTtcblxuICBpZiAobWFnbml0dWRlID4gMCkge1xuICAgIG1hZ25pdHVkZSA9IE1hdGguc3FydChtYWduaXR1ZGUpO1xuICAgIHZhciBhMCA9IGFbMF0gLyBtYWduaXR1ZGU7XG4gICAgdmFyIGExID0gYVsxXSAvIG1hZ25pdHVkZTtcbiAgICB2YXIgYTIgPSBhWzJdIC8gbWFnbml0dWRlO1xuICAgIHZhciBhMyA9IGFbM10gLyBtYWduaXR1ZGU7XG4gICAgdmFyIGIwID0gYVs0XTtcbiAgICB2YXIgYjEgPSBhWzVdO1xuICAgIHZhciBiMiA9IGFbNl07XG4gICAgdmFyIGIzID0gYVs3XTtcbiAgICB2YXIgYV9kb3RfYiA9IGEwICogYjAgKyBhMSAqIGIxICsgYTIgKiBiMiArIGEzICogYjM7XG4gICAgb3V0WzBdID0gYTA7XG4gICAgb3V0WzFdID0gYTE7XG4gICAgb3V0WzJdID0gYTI7XG4gICAgb3V0WzNdID0gYTM7XG4gICAgb3V0WzRdID0gKGIwIC0gYTAgKiBhX2RvdF9iKSAvIG1hZ25pdHVkZTtcbiAgICBvdXRbNV0gPSAoYjEgLSBhMSAqIGFfZG90X2IpIC8gbWFnbml0dWRlO1xuICAgIG91dFs2XSA9IChiMiAtIGEyICogYV9kb3RfYikgLyBtYWduaXR1ZGU7XG4gICAgb3V0WzddID0gKGIzIC0gYTMgKiBhX2RvdF9iKSAvIG1hZ25pdHVkZTtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBkdWFsIHF1YXRlbmlvblxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSBkdWFsIHF1YXRlcm5pb24gdG8gcmVwcmVzZW50IGFzIGEgc3RyaW5nXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGR1YWwgcXVhdFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzdHIoYSkge1xuICByZXR1cm4gXCJxdWF0MihcIiArIGFbMF0gKyBcIiwgXCIgKyBhWzFdICsgXCIsIFwiICsgYVsyXSArIFwiLCBcIiArIGFbM10gKyBcIiwgXCIgKyBhWzRdICsgXCIsIFwiICsgYVs1XSArIFwiLCBcIiArIGFbNl0gKyBcIiwgXCIgKyBhWzddICsgXCIpXCI7XG59XG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGR1YWwgcXVhdGVybmlvbnMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uICh3aGVuIGNvbXBhcmVkIHdpdGggPT09KVxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgZmlyc3QgZHVhbCBxdWF0ZXJuaW9uLlxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBiIHRoZSBzZWNvbmQgZHVhbCBxdWF0ZXJuaW9uLlxuICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgdGhlIGR1YWwgcXVhdGVybmlvbnMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGV4YWN0RXF1YWxzKGEsIGIpIHtcbiAgcmV0dXJuIGFbMF0gPT09IGJbMF0gJiYgYVsxXSA9PT0gYlsxXSAmJiBhWzJdID09PSBiWzJdICYmIGFbM10gPT09IGJbM10gJiYgYVs0XSA9PT0gYls0XSAmJiBhWzVdID09PSBiWzVdICYmIGFbNl0gPT09IGJbNl0gJiYgYVs3XSA9PT0gYls3XTtcbn1cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgZHVhbCBxdWF0ZXJuaW9ucyBoYXZlIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24uXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIHRoZSBmaXJzdCBkdWFsIHF1YXQuXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGIgdGhlIHNlY29uZCBkdWFsIHF1YXQuXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdHJ1ZSBpZiB0aGUgZHVhbCBxdWF0cyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxzKGEsIGIpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXSxcbiAgICAgIGEyID0gYVsyXSxcbiAgICAgIGEzID0gYVszXSxcbiAgICAgIGE0ID0gYVs0XSxcbiAgICAgIGE1ID0gYVs1XSxcbiAgICAgIGE2ID0gYVs2XSxcbiAgICAgIGE3ID0gYVs3XTtcbiAgdmFyIGIwID0gYlswXSxcbiAgICAgIGIxID0gYlsxXSxcbiAgICAgIGIyID0gYlsyXSxcbiAgICAgIGIzID0gYlszXSxcbiAgICAgIGI0ID0gYls0XSxcbiAgICAgIGI1ID0gYls1XSxcbiAgICAgIGI2ID0gYls2XSxcbiAgICAgIGI3ID0gYls3XTtcbiAgcmV0dXJuIE1hdGguYWJzKGEwIC0gYjApIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEwKSwgTWF0aC5hYnMoYjApKSAmJiBNYXRoLmFicyhhMSAtIGIxKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMSksIE1hdGguYWJzKGIxKSkgJiYgTWF0aC5hYnMoYTIgLSBiMikgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTIpLCBNYXRoLmFicyhiMikpICYmIE1hdGguYWJzKGEzIC0gYjMpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEzKSwgTWF0aC5hYnMoYjMpKSAmJiBNYXRoLmFicyhhNCAtIGI0KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNCksIE1hdGguYWJzKGI0KSkgJiYgTWF0aC5hYnMoYTUgLSBiNSkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTUpLCBNYXRoLmFicyhiNSkpICYmIE1hdGguYWJzKGE2IC0gYjYpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE2KSwgTWF0aC5hYnMoYjYpKSAmJiBNYXRoLmFicyhhNyAtIGI3KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNyksIE1hdGguYWJzKGI3KSk7XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-matrix/esm/quat2.js\n"); /***/ }), /***/ "./node_modules/gl-matrix/esm/vec2.js": /*!********************************************!*\ !*** ./node_modules/gl-matrix/esm/vec2.js ***! \********************************************/ /*! exports provided: create, clone, fromValues, copy, set, add, subtract, multiply, divide, ceil, floor, min, max, round, scale, scaleAndAdd, distance, squaredDistance, length, squaredLength, negate, inverse, normalize, dot, cross, lerp, random, transformMat2, transformMat2d, transformMat3, transformMat4, rotate, angle, zero, str, exactEquals, equals, len, sub, mul, div, dist, sqrDist, sqrLen, forEach */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divide\", function() { return divide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ceil\", function() { return ceil; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floor\", function() { return floor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return min; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return max; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"round\", function() { return round; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleAndAdd\", function() { return scaleAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredDistance\", function() { return squaredDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"length\", function() { return length; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredLength\", function() { return squaredLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return negate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inverse\", function() { return inverse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dot\", function() { return dot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return cross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return random; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat2\", function() { return transformMat2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat2d\", function() { return transformMat2d; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat3\", function() { return transformMat3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat4\", function() { return transformMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angle\", function() { return angle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"len\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"div\", function() { return div; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dist\", function() { return dist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrDist\", function() { return sqrDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrLen\", function() { return sqrLen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return forEach; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](2);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nfunction fromValues(x, y) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nfunction set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nfunction ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nfunction floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nfunction round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nfunction scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nfunction negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nfunction inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nfunction normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nfunction cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nfunction lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nfunction random(out, scale) {\n scale = scale || 1.0;\n var r = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nfunction rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nfunction angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nfunction zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS92ZWMyLmpzPzY3MTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1COztBQUVuQyxNQUFNLHFEQUFtQjtBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBLFVBQVUsaURBQWU7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsY0FBYztBQUN6QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGtEQUFnQixxRUFBcUUsa0RBQWdCO0FBQ25JO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC1tYXRyaXgvZXNtL3ZlYzIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBnbE1hdHJpeCBmcm9tIFwiLi9jb21tb24uanNcIjtcbi8qKlxuICogMiBEaW1lbnNpb25hbCBWZWN0b3JcbiAqIEBtb2R1bGUgdmVjMlxuICovXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldywgZW1wdHkgdmVjMlxuICpcbiAqIEByZXR1cm5zIHt2ZWMyfSBhIG5ldyAyRCB2ZWN0b3JcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMik7XG5cbiAgaWYgKGdsTWF0cml4LkFSUkFZX1RZUEUgIT0gRmxvYXQzMkFycmF5KSB7XG4gICAgb3V0WzBdID0gMDtcbiAgICBvdXRbMV0gPSAwO1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2ZWMyIGluaXRpYWxpemVkIHdpdGggdmFsdWVzIGZyb20gYW4gZXhpc3RpbmcgdmVjdG9yXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdmVjdG9yIHRvIGNsb25lXG4gKiBAcmV0dXJucyB7dmVjMn0gYSBuZXcgMkQgdmVjdG9yXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lKGEpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDIpO1xuICBvdXRbMF0gPSBhWzBdO1xuICBvdXRbMV0gPSBhWzFdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHZlYzIgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHggWCBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5IFkgY29tcG9uZW50XG4gKiBAcmV0dXJucyB7dmVjMn0gYSBuZXcgMkQgdmVjdG9yXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21WYWx1ZXMoeCwgeSkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMik7XG4gIG91dFswXSA9IHg7XG4gIG91dFsxXSA9IHk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENvcHkgdGhlIHZhbHVlcyBmcm9tIG9uZSB2ZWMyIHRvIGFub3RoZXJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIHNvdXJjZSB2ZWN0b3JcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY29weShvdXQsIGEpIHtcbiAgb3V0WzBdID0gYVswXTtcbiAgb3V0WzFdID0gYVsxXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IHRoZSBjb21wb25lbnRzIG9mIGEgdmVjMiB0byB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7TnVtYmVyfSB4IFggY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geSBZIGNvbXBvbmVudFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXQob3V0LCB4LCB5KSB7XG4gIG91dFswXSA9IHg7XG4gIG91dFsxXSA9IHk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEFkZHMgdHdvIHZlYzInc1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZChvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSArIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gKyBiWzFdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTdWJ0cmFjdHMgdmVjdG9yIGIgZnJvbSB2ZWN0b3IgYVxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnRyYWN0KG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdIC0gYlswXTtcbiAgb3V0WzFdID0gYVsxXSAtIGJbMV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE11bHRpcGxpZXMgdHdvIHZlYzInc1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5KG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdICogYlswXTtcbiAgb3V0WzFdID0gYVsxXSAqIGJbMV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIERpdmlkZXMgdHdvIHZlYzInc1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRpdmlkZShvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAvIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gLyBiWzFdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBNYXRoLmNlaWwgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHZlY3RvciB0byBjZWlsXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNlaWwob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGguY2VpbChhWzBdKTtcbiAgb3V0WzFdID0gTWF0aC5jZWlsKGFbMV0pO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBNYXRoLmZsb29yIHRoZSBjb21wb25lbnRzIG9mIGEgdmVjMlxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB2ZWN0b3IgdG8gZmxvb3JcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZmxvb3Iob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGguZmxvb3IoYVswXSk7XG4gIG91dFsxXSA9IE1hdGguZmxvb3IoYVsxXSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIG1pbmltdW0gb2YgdHdvIHZlYzInc1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG1pbihvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gTWF0aC5taW4oYVswXSwgYlswXSk7XG4gIG91dFsxXSA9IE1hdGgubWluKGFbMV0sIGJbMV0pO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtYXhpbXVtIG9mIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtYXgob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IE1hdGgubWF4KGFbMF0sIGJbMF0pO1xuICBvdXRbMV0gPSBNYXRoLm1heChhWzFdLCBiWzFdKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTWF0aC5yb3VuZCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdmVjdG9yIHRvIHJvdW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kKG91dCwgYSkge1xuICBvdXRbMF0gPSBNYXRoLnJvdW5kKGFbMF0pO1xuICBvdXRbMV0gPSBNYXRoLnJvdW5kKGFbMV0pO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTY2FsZXMgYSB2ZWMyIGJ5IGEgc2NhbGFyIG51bWJlclxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgdmVjdG9yIHRvIHNjYWxlXG4gKiBAcGFyYW0ge051bWJlcn0gYiBhbW91bnQgdG8gc2NhbGUgdGhlIHZlY3RvciBieVxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZShvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAqIGI7XG4gIG91dFsxXSA9IGFbMV0gKiBiO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBBZGRzIHR3byB2ZWMyJ3MgYWZ0ZXIgc2NhbGluZyB0aGUgc2Vjb25kIG9wZXJhbmQgYnkgYSBzY2FsYXIgdmFsdWVcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHNjYWxlIHRoZSBhbW91bnQgdG8gc2NhbGUgYiBieSBiZWZvcmUgYWRkaW5nXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlQW5kQWRkKG91dCwgYSwgYiwgc2NhbGUpIHtcbiAgb3V0WzBdID0gYVswXSArIGJbMF0gKiBzY2FsZTtcbiAgb3V0WzFdID0gYVsxXSArIGJbMV0gKiBzY2FsZTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZXVjbGlkaWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlYzInc1xuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGRpc3RhbmNlIGJldHdlZW4gYSBhbmQgYlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZShhLCBiKSB7XG4gIHZhciB4ID0gYlswXSAtIGFbMF0sXG4gICAgICB5ID0gYlsxXSAtIGFbMV07XG4gIHJldHVybiBNYXRoLmh5cG90KHgsIHkpO1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBzcXVhcmVkIGV1Y2xpZGlhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBzcXVhcmVkIGRpc3RhbmNlIGJldHdlZW4gYSBhbmQgYlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzcXVhcmVkRGlzdGFuY2UoYSwgYikge1xuICB2YXIgeCA9IGJbMF0gLSBhWzBdLFxuICAgICAgeSA9IGJbMV0gLSBhWzFdO1xuICByZXR1cm4geCAqIHggKyB5ICogeTtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgbGVuZ3RoIG9mIGEgdmVjMlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHZlY3RvciB0byBjYWxjdWxhdGUgbGVuZ3RoIG9mXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBsZW5ndGggb2YgYVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsZW5ndGgoYSkge1xuICB2YXIgeCA9IGFbMF0sXG4gICAgICB5ID0gYVsxXTtcbiAgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHNxdWFyZWQgbGVuZ3RoIG9mIGEgdmVjMlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHZlY3RvciB0byBjYWxjdWxhdGUgc3F1YXJlZCBsZW5ndGggb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHNxdWFyZWQgbGVuZ3RoIG9mIGFcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3F1YXJlZExlbmd0aChhKSB7XG4gIHZhciB4ID0gYVswXSxcbiAgICAgIHkgPSBhWzFdO1xuICByZXR1cm4geCAqIHggKyB5ICogeTtcbn1cbi8qKlxuICogTmVnYXRlcyB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdmVjdG9yIHRvIG5lZ2F0ZVxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBuZWdhdGUob3V0LCBhKSB7XG4gIG91dFswXSA9IC1hWzBdO1xuICBvdXRbMV0gPSAtYVsxXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgaW52ZXJzZSBvZiB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdmVjdG9yIHRvIGludmVydFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnNlKG91dCwgYSkge1xuICBvdXRbMF0gPSAxLjAgLyBhWzBdO1xuICBvdXRbMV0gPSAxLjAgLyBhWzFdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBOb3JtYWxpemUgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHZlY3RvciB0byBub3JtYWxpemVcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKG91dCwgYSkge1xuICB2YXIgeCA9IGFbMF0sXG4gICAgICB5ID0gYVsxXTtcbiAgdmFyIGxlbiA9IHggKiB4ICsgeSAqIHk7XG5cbiAgaWYgKGxlbiA+IDApIHtcbiAgICAvL1RPRE86IGV2YWx1YXRlIHVzZSBvZiBnbG1faW52c3FydCBoZXJlP1xuICAgIGxlbiA9IDEgLyBNYXRoLnNxcnQobGVuKTtcbiAgfVxuXG4gIG91dFswXSA9IGFbMF0gKiBsZW47XG4gIG91dFsxXSA9IGFbMV0gKiBsZW47XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGRvdCBwcm9kdWN0IG9mIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkb3QgcHJvZHVjdCBvZiBhIGFuZCBiXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRvdChhLCBiKSB7XG4gIHJldHVybiBhWzBdICogYlswXSArIGFbMV0gKiBiWzFdO1xufVxuLyoqXG4gKiBDb21wdXRlcyB0aGUgY3Jvc3MgcHJvZHVjdCBvZiB0d28gdmVjMidzXG4gKiBOb3RlIHRoYXQgdGhlIGNyb3NzIHByb2R1Y3QgbXVzdCBieSBkZWZpbml0aW9uIHByb2R1Y2UgYSAzRCB2ZWN0b3JcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcm9zcyhvdXQsIGEsIGIpIHtcbiAgdmFyIHogPSBhWzBdICogYlsxXSAtIGFbMV0gKiBiWzBdO1xuICBvdXRbMF0gPSBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSB6O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBQZXJmb3JtcyBhIGxpbmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gdHdvIHZlYzInc1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcGFyYW0ge051bWJlcn0gdCBpbnRlcnBvbGF0aW9uIGFtb3VudCwgaW4gdGhlIHJhbmdlIFswLTFdLCBiZXR3ZWVuIHRoZSB0d28gaW5wdXRzXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGxlcnAob3V0LCBhLCBiLCB0KSB7XG4gIHZhciBheCA9IGFbMF0sXG4gICAgICBheSA9IGFbMV07XG4gIG91dFswXSA9IGF4ICsgdCAqIChiWzBdIC0gYXgpO1xuICBvdXRbMV0gPSBheSArIHQgKiAoYlsxXSAtIGF5KTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogR2VuZXJhdGVzIGEgcmFuZG9tIHZlY3RvciB3aXRoIHRoZSBnaXZlbiBzY2FsZVxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge051bWJlcn0gW3NjYWxlXSBMZW5ndGggb2YgdGhlIHJlc3VsdGluZyB2ZWN0b3IuIElmIG9tbWl0dGVkLCBhIHVuaXQgdmVjdG9yIHdpbGwgYmUgcmV0dXJuZWRcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tKG91dCwgc2NhbGUpIHtcbiAgc2NhbGUgPSBzY2FsZSB8fCAxLjA7XG4gIHZhciByID0gZ2xNYXRyaXguUkFORE9NKCkgKiAyLjAgKiBNYXRoLlBJO1xuICBvdXRbMF0gPSBNYXRoLmNvcyhyKSAqIHNjYWxlO1xuICBvdXRbMV0gPSBNYXRoLnNpbihyKSAqIHNjYWxlO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWMyIHdpdGggYSBtYXQyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHRoZSB2ZWN0b3IgdG8gdHJhbnNmb3JtXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gbSBtYXRyaXggdG8gdHJhbnNmb3JtIHdpdGhcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTWF0MihvdXQsIGEsIG0pIHtcbiAgdmFyIHggPSBhWzBdLFxuICAgICAgeSA9IGFbMV07XG4gIG91dFswXSA9IG1bMF0gKiB4ICsgbVsyXSAqIHk7XG4gIG91dFsxXSA9IG1bMV0gKiB4ICsgbVszXSAqIHk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFRyYW5zZm9ybXMgdGhlIHZlYzIgd2l0aCBhIG1hdDJkXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHRoZSB2ZWN0b3IgdG8gdHJhbnNmb3JtXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IG0gbWF0cml4IHRvIHRyYW5zZm9ybSB3aXRoXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1hdDJkKG91dCwgYSwgbSkge1xuICB2YXIgeCA9IGFbMF0sXG4gICAgICB5ID0gYVsxXTtcbiAgb3V0WzBdID0gbVswXSAqIHggKyBtWzJdICogeSArIG1bNF07XG4gIG91dFsxXSA9IG1bMV0gKiB4ICsgbVszXSAqIHkgKyBtWzVdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWMyIHdpdGggYSBtYXQzXG4gKiAzcmQgdmVjdG9yIGNvbXBvbmVudCBpcyBpbXBsaWNpdGx5ICcxJ1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgdmVjdG9yIHRvIHRyYW5zZm9ybVxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IG0gbWF0cml4IHRvIHRyYW5zZm9ybSB3aXRoXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1hdDMob3V0LCBhLCBtKSB7XG4gIHZhciB4ID0gYVswXSxcbiAgICAgIHkgPSBhWzFdO1xuICBvdXRbMF0gPSBtWzBdICogeCArIG1bM10gKiB5ICsgbVs2XTtcbiAgb3V0WzFdID0gbVsxXSAqIHggKyBtWzRdICogeSArIG1bN107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFRyYW5zZm9ybXMgdGhlIHZlYzIgd2l0aCBhIG1hdDRcbiAqIDNyZCB2ZWN0b3IgY29tcG9uZW50IGlzIGltcGxpY2l0bHkgJzAnXG4gKiA0dGggdmVjdG9yIGNvbXBvbmVudCBpcyBpbXBsaWNpdGx5ICcxJ1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgdmVjdG9yIHRvIHRyYW5zZm9ybVxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IG0gbWF0cml4IHRvIHRyYW5zZm9ybSB3aXRoXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1hdDQob3V0LCBhLCBtKSB7XG4gIHZhciB4ID0gYVswXTtcbiAgdmFyIHkgPSBhWzFdO1xuICBvdXRbMF0gPSBtWzBdICogeCArIG1bNF0gKiB5ICsgbVsxMl07XG4gIG91dFsxXSA9IG1bMV0gKiB4ICsgbVs1XSAqIHkgKyBtWzEzXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlIGEgMkQgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCBUaGUgcmVjZWl2aW5nIHZlYzJcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIFRoZSB2ZWMyIHBvaW50IHRvIHJvdGF0ZVxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgVGhlIG9yaWdpbiBvZiB0aGUgcm90YXRpb25cbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgVGhlIGFuZ2xlIG9mIHJvdGF0aW9uIGluIHJhZGlhbnNcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlKG91dCwgYSwgYiwgcmFkKSB7XG4gIC8vVHJhbnNsYXRlIHBvaW50IHRvIHRoZSBvcmlnaW5cbiAgdmFyIHAwID0gYVswXSAtIGJbMF0sXG4gICAgICBwMSA9IGFbMV0gLSBiWzFdLFxuICAgICAgc2luQyA9IE1hdGguc2luKHJhZCksXG4gICAgICBjb3NDID0gTWF0aC5jb3MocmFkKTsgLy9wZXJmb3JtIHJvdGF0aW9uIGFuZCB0cmFuc2xhdGUgdG8gY29ycmVjdCBwb3NpdGlvblxuXG4gIG91dFswXSA9IHAwICogY29zQyAtIHAxICogc2luQyArIGJbMF07XG4gIG91dFsxXSA9IHAwICogc2luQyArIHAxICogY29zQyArIGJbMV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdldCB0aGUgYW5nbGUgYmV0d2VlbiB0d28gMkQgdmVjdG9yc1xuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgVGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIFRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gVGhlIGFuZ2xlIGluIHJhZGlhbnNcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYW5nbGUoYSwgYikge1xuICB2YXIgeDEgPSBhWzBdLFxuICAgICAgeTEgPSBhWzFdLFxuICAgICAgeDIgPSBiWzBdLFxuICAgICAgeTIgPSBiWzFdLFxuICAgICAgLy8gbWFnIGlzIHRoZSBwcm9kdWN0IG9mIHRoZSBtYWduaXR1ZGVzIG9mIGEgYW5kIGJcbiAgbWFnID0gTWF0aC5zcXJ0KHgxICogeDEgKyB5MSAqIHkxKSAqIE1hdGguc3FydCh4MiAqIHgyICsgeTIgKiB5MiksXG4gICAgICAvLyBtYWcgJiYuLiBzaG9ydCBjaXJjdWl0cyBpZiBtYWcgPT0gMFxuICBjb3NpbmUgPSBtYWcgJiYgKHgxICogeDIgKyB5MSAqIHkyKSAvIG1hZzsgLy8gTWF0aC5taW4oTWF0aC5tYXgoY29zaW5lLCAtMSksIDEpIGNsYW1wcyB0aGUgY29zaW5lIGJldHdlZW4gLTEgYW5kIDFcblxuICByZXR1cm4gTWF0aC5hY29zKE1hdGgubWluKE1hdGgubWF4KGNvc2luZSwgLTEpLCAxKSk7XG59XG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzIgdG8gemVyb1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHplcm8ob3V0KSB7XG4gIG91dFswXSA9IDAuMDtcbiAgb3V0WzFdID0gMC4wO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdmVjdG9yXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdmVjdG9yIHRvIHJlcHJlc2VudCBhcyBhIHN0cmluZ1xuICogQHJldHVybnMge1N0cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2ZWN0b3JcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyKGEpIHtcbiAgcmV0dXJuIFwidmVjMihcIiArIGFbMF0gKyBcIiwgXCIgKyBhWzFdICsgXCIpXCI7XG59XG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHZlY3RvcnMgZXhhY3RseSBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uICh3aGVuIGNvbXBhcmVkIHdpdGggPT09KVxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYiBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSB2ZWN0b3JzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleGFjdEVxdWFscyhhLCBiKSB7XG4gIHJldHVybiBhWzBdID09PSBiWzBdICYmIGFbMV0gPT09IGJbMV07XG59XG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHZlY3RvcnMgaGF2ZSBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uLlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYiBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSB2ZWN0b3JzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbHMoYSwgYikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdO1xuICB2YXIgYjAgPSBiWzBdLFxuICAgICAgYjEgPSBiWzFdO1xuICByZXR1cm4gTWF0aC5hYnMoYTAgLSBiMCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTApLCBNYXRoLmFicyhiMCkpICYmIE1hdGguYWJzKGExIC0gYjEpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExKSwgTWF0aC5hYnMoYjEpKTtcbn1cbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWMyLmxlbmd0aH1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgbGVuID0gbGVuZ3RoO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzIuc3VidHJhY3R9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHN1YiA9IHN1YnRyYWN0O1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzIubXVsdGlwbHl9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIG11bCA9IG11bHRpcGx5O1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzIuZGl2aWRlfVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBkaXYgPSBkaXZpZGU7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgdmVjMi5kaXN0YW5jZX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgZGlzdCA9IGRpc3RhbmNlO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzIuc3F1YXJlZERpc3RhbmNlfVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzcXJEaXN0ID0gc3F1YXJlZERpc3RhbmNlO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzIuc3F1YXJlZExlbmd0aH1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgc3FyTGVuID0gc3F1YXJlZExlbmd0aDtcbi8qKlxuICogUGVyZm9ybSBzb21lIG9wZXJhdGlvbiBvdmVyIGFuIGFycmF5IG9mIHZlYzJzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGEgdGhlIGFycmF5IG9mIHZlY3RvcnMgdG8gaXRlcmF0ZSBvdmVyXG4gKiBAcGFyYW0ge051bWJlcn0gc3RyaWRlIE51bWJlciBvZiBlbGVtZW50cyBiZXR3ZWVuIHRoZSBzdGFydCBvZiBlYWNoIHZlYzIuIElmIDAgYXNzdW1lcyB0aWdodGx5IHBhY2tlZFxuICogQHBhcmFtIHtOdW1iZXJ9IG9mZnNldCBOdW1iZXIgb2YgZWxlbWVudHMgdG8gc2tpcCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhcnJheVxuICogQHBhcmFtIHtOdW1iZXJ9IGNvdW50IE51bWJlciBvZiB2ZWMycyB0byBpdGVyYXRlIG92ZXIuIElmIDAgaXRlcmF0ZXMgb3ZlciBlbnRpcmUgYXJyYXlcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIEZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggdmVjdG9yIGluIHRoZSBhcnJheVxuICogQHBhcmFtIHtPYmplY3R9IFthcmddIGFkZGl0aW9uYWwgYXJndW1lbnQgdG8gcGFzcyB0byBmblxuICogQHJldHVybnMge0FycmF5fSBhXG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGZvckVhY2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB2ZWMgPSBjcmVhdGUoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhLCBzdHJpZGUsIG9mZnNldCwgY291bnQsIGZuLCBhcmcpIHtcbiAgICB2YXIgaSwgbDtcblxuICAgIGlmICghc3RyaWRlKSB7XG4gICAgICBzdHJpZGUgPSAyO1xuICAgIH1cblxuICAgIGlmICghb2Zmc2V0KSB7XG4gICAgICBvZmZzZXQgPSAwO1xuICAgIH1cblxuICAgIGlmIChjb3VudCkge1xuICAgICAgbCA9IE1hdGgubWluKGNvdW50ICogc3RyaWRlICsgb2Zmc2V0LCBhLmxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGwgPSBhLmxlbmd0aDtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBvZmZzZXQ7IGkgPCBsOyBpICs9IHN0cmlkZSkge1xuICAgICAgdmVjWzBdID0gYVtpXTtcbiAgICAgIHZlY1sxXSA9IGFbaSArIDFdO1xuICAgICAgZm4odmVjLCB2ZWMsIGFyZyk7XG4gICAgICBhW2ldID0gdmVjWzBdO1xuICAgICAgYVtpICsgMV0gPSB2ZWNbMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGE7XG4gIH07XG59KCk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-matrix/esm/vec2.js\n"); /***/ }), /***/ "./node_modules/gl-matrix/esm/vec3.js": /*!********************************************!*\ !*** ./node_modules/gl-matrix/esm/vec3.js ***! \********************************************/ /*! exports provided: create, clone, length, fromValues, copy, set, add, subtract, multiply, divide, ceil, floor, min, max, round, scale, scaleAndAdd, distance, squaredDistance, squaredLength, negate, inverse, normalize, dot, cross, lerp, hermite, bezier, random, transformMat4, transformMat3, transformQuat, rotateX, rotateY, rotateZ, angle, zero, str, exactEquals, equals, sub, mul, div, dist, sqrDist, len, sqrLen, forEach */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"length\", function() { return length; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divide\", function() { return divide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ceil\", function() { return ceil; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floor\", function() { return floor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return min; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return max; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"round\", function() { return round; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleAndAdd\", function() { return scaleAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredDistance\", function() { return squaredDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredLength\", function() { return squaredLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return negate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inverse\", function() { return inverse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dot\", function() { return dot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return cross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hermite\", function() { return hermite; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bezier\", function() { return bezier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return random; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat4\", function() { return transformMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat3\", function() { return transformMat3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformQuat\", function() { return transformQuat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateX\", function() { return rotateX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateY\", function() { return rotateY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateZ\", function() { return rotateZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angle\", function() { return angle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"div\", function() { return div; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dist\", function() { return dist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrDist\", function() { return sqrDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"len\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrLen\", function() { return sqrLen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return forEach; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nfunction fromValues(x, y, z) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nfunction set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nfunction ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nfunction floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nfunction round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nfunction scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nfunction negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nfunction inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nfunction normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nfunction random(out, scale) {\n scale = scale || 1.0;\n var r = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2.0 * Math.PI;\n var z = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nfunction transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nfunction transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nfunction transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nfunction angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nfunction zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS92ZWMzLmpzPzlmZTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1COztBQUVuQyxNQUFNLHFEQUFtQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBLFVBQVUsaURBQWU7QUFDekIsVUFBVSxpREFBZTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7O0FBRUE7QUFDQTtBQUNBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsWUFBWTs7QUFFWjtBQUNBO0FBQ0EsWUFBWTs7QUFFWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0EsY0FBYzs7QUFFZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0I7QUFDeE47QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC1tYXRyaXgvZXNtL3ZlYzMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBnbE1hdHJpeCBmcm9tIFwiLi9jb21tb24uanNcIjtcbi8qKlxuICogMyBEaW1lbnNpb25hbCBWZWN0b3JcbiAqIEBtb2R1bGUgdmVjM1xuICovXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldywgZW1wdHkgdmVjM1xuICpcbiAqIEByZXR1cm5zIHt2ZWMzfSBhIG5ldyAzRCB2ZWN0b3JcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMyk7XG5cbiAgaWYgKGdsTWF0cml4LkFSUkFZX1RZUEUgIT0gRmxvYXQzMkFycmF5KSB7XG4gICAgb3V0WzBdID0gMDtcbiAgICBvdXRbMV0gPSAwO1xuICAgIG91dFsyXSA9IDA7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHZlYzMgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyB2ZWN0b3JcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB2ZWN0b3IgdG8gY2xvbmVcbiAqIEByZXR1cm5zIHt2ZWMzfSBhIG5ldyAzRCB2ZWN0b3JcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoYSkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMyk7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGxlbmd0aCBvZiBhIHZlYzNcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB2ZWN0b3IgdG8gY2FsY3VsYXRlIGxlbmd0aCBvZlxuICogQHJldHVybnMge051bWJlcn0gbGVuZ3RoIG9mIGFcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbGVuZ3RoKGEpIHtcbiAgdmFyIHggPSBhWzBdO1xuICB2YXIgeSA9IGFbMV07XG4gIHZhciB6ID0gYVsyXTtcbiAgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSwgeik7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgdmVjMyBpbml0aWFsaXplZCB3aXRoIHRoZSBnaXZlbiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0geCBYIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHkgWSBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB6IFogY29tcG9uZW50XG4gKiBAcmV0dXJucyB7dmVjM30gYSBuZXcgM0QgdmVjdG9yXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21WYWx1ZXMoeCwgeSwgeikge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMyk7XG4gIG91dFswXSA9IHg7XG4gIG91dFsxXSA9IHk7XG4gIG91dFsyXSA9IHo7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENvcHkgdGhlIHZhbHVlcyBmcm9tIG9uZSB2ZWMzIHRvIGFub3RoZXJcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIHNvdXJjZSB2ZWN0b3JcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY29weShvdXQsIGEpIHtcbiAgb3V0WzBdID0gYVswXTtcbiAgb3V0WzFdID0gYVsxXTtcbiAgb3V0WzJdID0gYVsyXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IHRoZSBjb21wb25lbnRzIG9mIGEgdmVjMyB0byB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7TnVtYmVyfSB4IFggY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geSBZIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHogWiBjb21wb25lbnRcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0KG91dCwgeCwgeSwgeikge1xuICBvdXRbMF0gPSB4O1xuICBvdXRbMV0gPSB5O1xuICBvdXRbMl0gPSB6O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBBZGRzIHR3byB2ZWMzJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXTtcbiAgb3V0WzJdID0gYVsyXSArIGJbMl07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFN1YnRyYWN0cyB2ZWN0b3IgYiBmcm9tIHZlY3RvciBhXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3VidHJhY3Qob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gLSBiWzBdO1xuICBvdXRbMV0gPSBhWzFdIC0gYlsxXTtcbiAgb3V0WzJdID0gYVsyXSAtIGJbMl07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE11bHRpcGxpZXMgdHdvIHZlYzMnc1xuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5KG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdICogYlswXTtcbiAgb3V0WzFdID0gYVsxXSAqIGJbMV07XG4gIG91dFsyXSA9IGFbMl0gKiBiWzJdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBEaXZpZGVzIHR3byB2ZWMzJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXZpZGUob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gLyBiWzBdO1xuICBvdXRbMV0gPSBhWzFdIC8gYlsxXTtcbiAgb3V0WzJdID0gYVsyXSAvIGJbMl07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE1hdGguY2VpbCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzNcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdmVjdG9yIHRvIGNlaWxcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2VpbChvdXQsIGEpIHtcbiAgb3V0WzBdID0gTWF0aC5jZWlsKGFbMF0pO1xuICBvdXRbMV0gPSBNYXRoLmNlaWwoYVsxXSk7XG4gIG91dFsyXSA9IE1hdGguY2VpbChhWzJdKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTWF0aC5mbG9vciB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzNcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdmVjdG9yIHRvIGZsb29yXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZsb29yKG91dCwgYSkge1xuICBvdXRbMF0gPSBNYXRoLmZsb29yKGFbMF0pO1xuICBvdXRbMV0gPSBNYXRoLmZsb29yKGFbMV0pO1xuICBvdXRbMl0gPSBNYXRoLmZsb29yKGFbMl0pO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtaW5pbXVtIG9mIHR3byB2ZWMzJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtaW4ob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IE1hdGgubWluKGFbMF0sIGJbMF0pO1xuICBvdXRbMV0gPSBNYXRoLm1pbihhWzFdLCBiWzFdKTtcbiAgb3V0WzJdID0gTWF0aC5taW4oYVsyXSwgYlsyXSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIG1heGltdW0gb2YgdHdvIHZlYzMnc1xuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG1heChvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gTWF0aC5tYXgoYVswXSwgYlswXSk7XG4gIG91dFsxXSA9IE1hdGgubWF4KGFbMV0sIGJbMV0pO1xuICBvdXRbMl0gPSBNYXRoLm1heChhWzJdLCBiWzJdKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTWF0aC5yb3VuZCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzNcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdmVjdG9yIHRvIHJvdW5kXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kKG91dCwgYSkge1xuICBvdXRbMF0gPSBNYXRoLnJvdW5kKGFbMF0pO1xuICBvdXRbMV0gPSBNYXRoLnJvdW5kKGFbMV0pO1xuICBvdXRbMl0gPSBNYXRoLnJvdW5kKGFbMl0pO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTY2FsZXMgYSB2ZWMzIGJ5IGEgc2NhbGFyIG51bWJlclxuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgdmVjdG9yIHRvIHNjYWxlXG4gKiBAcGFyYW0ge051bWJlcn0gYiBhbW91bnQgdG8gc2NhbGUgdGhlIHZlY3RvciBieVxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZShvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAqIGI7XG4gIG91dFsxXSA9IGFbMV0gKiBiO1xuICBvdXRbMl0gPSBhWzJdICogYjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjMydzIGFmdGVyIHNjYWxpbmcgdGhlIHNlY29uZCBvcGVyYW5kIGJ5IGEgc2NhbGFyIHZhbHVlXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSBzY2FsZSB0aGUgYW1vdW50IHRvIHNjYWxlIGIgYnkgYmVmb3JlIGFkZGluZ1xuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZUFuZEFkZChvdXQsIGEsIGIsIHNjYWxlKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdICogc2NhbGU7XG4gIG91dFsxXSA9IGFbMV0gKyBiWzFdICogc2NhbGU7XG4gIG91dFsyXSA9IGFbMl0gKyBiWzJdICogc2NhbGU7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGV1Y2xpZGlhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWMzJ3NcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkaXN0YW5jZSBiZXR3ZWVuIGEgYW5kIGJcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2UoYSwgYikge1xuICB2YXIgeCA9IGJbMF0gLSBhWzBdO1xuICB2YXIgeSA9IGJbMV0gLSBhWzFdO1xuICB2YXIgeiA9IGJbMl0gLSBhWzJdO1xuICByZXR1cm4gTWF0aC5oeXBvdCh4LCB5LCB6KTtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgc3F1YXJlZCBldWNsaWRpYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjMydzXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gc3F1YXJlZCBkaXN0YW5jZSBiZXR3ZWVuIGEgYW5kIGJcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3F1YXJlZERpc3RhbmNlKGEsIGIpIHtcbiAgdmFyIHggPSBiWzBdIC0gYVswXTtcbiAgdmFyIHkgPSBiWzFdIC0gYVsxXTtcbiAgdmFyIHogPSBiWzJdIC0gYVsyXTtcbiAgcmV0dXJuIHggKiB4ICsgeSAqIHkgKyB6ICogejtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgc3F1YXJlZCBsZW5ndGggb2YgYSB2ZWMzXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdmVjdG9yIHRvIGNhbGN1bGF0ZSBzcXVhcmVkIGxlbmd0aCBvZlxuICogQHJldHVybnMge051bWJlcn0gc3F1YXJlZCBsZW5ndGggb2YgYVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzcXVhcmVkTGVuZ3RoKGEpIHtcbiAgdmFyIHggPSBhWzBdO1xuICB2YXIgeSA9IGFbMV07XG4gIHZhciB6ID0gYVsyXTtcbiAgcmV0dXJuIHggKiB4ICsgeSAqIHkgKyB6ICogejtcbn1cbi8qKlxuICogTmVnYXRlcyB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzNcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdmVjdG9yIHRvIG5lZ2F0ZVxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBuZWdhdGUob3V0LCBhKSB7XG4gIG91dFswXSA9IC1hWzBdO1xuICBvdXRbMV0gPSAtYVsxXTtcbiAgb3V0WzJdID0gLWFbMl07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGludmVyc2Ugb2YgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMzXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHZlY3RvciB0byBpbnZlcnRcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJzZShvdXQsIGEpIHtcbiAgb3V0WzBdID0gMS4wIC8gYVswXTtcbiAgb3V0WzFdID0gMS4wIC8gYVsxXTtcbiAgb3V0WzJdID0gMS4wIC8gYVsyXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTm9ybWFsaXplIGEgdmVjM1xuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB2ZWN0b3IgdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShvdXQsIGEpIHtcbiAgdmFyIHggPSBhWzBdO1xuICB2YXIgeSA9IGFbMV07XG4gIHZhciB6ID0gYVsyXTtcbiAgdmFyIGxlbiA9IHggKiB4ICsgeSAqIHkgKyB6ICogejtcblxuICBpZiAobGVuID4gMCkge1xuICAgIC8vVE9ETzogZXZhbHVhdGUgdXNlIG9mIGdsbV9pbnZzcXJ0IGhlcmU/XG4gICAgbGVuID0gMSAvIE1hdGguc3FydChsZW4pO1xuICB9XG5cbiAgb3V0WzBdID0gYVswXSAqIGxlbjtcbiAgb3V0WzFdID0gYVsxXSAqIGxlbjtcbiAgb3V0WzJdID0gYVsyXSAqIGxlbjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZG90IHByb2R1Y3Qgb2YgdHdvIHZlYzMnc1xuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGRvdCBwcm9kdWN0IG9mIGEgYW5kIGJcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZG90KGEsIGIpIHtcbiAgcmV0dXJuIGFbMF0gKiBiWzBdICsgYVsxXSAqIGJbMV0gKyBhWzJdICogYlsyXTtcbn1cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGNyb3NzIHByb2R1Y3Qgb2YgdHdvIHZlYzMnc1xuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyb3NzKG91dCwgYSwgYikge1xuICB2YXIgYXggPSBhWzBdLFxuICAgICAgYXkgPSBhWzFdLFxuICAgICAgYXogPSBhWzJdO1xuICB2YXIgYnggPSBiWzBdLFxuICAgICAgYnkgPSBiWzFdLFxuICAgICAgYnogPSBiWzJdO1xuICBvdXRbMF0gPSBheSAqIGJ6IC0gYXogKiBieTtcbiAgb3V0WzFdID0gYXogKiBieCAtIGF4ICogYno7XG4gIG91dFsyXSA9IGF4ICogYnkgLSBheSAqIGJ4O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBQZXJmb3JtcyBhIGxpbmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gdHdvIHZlYzMnc1xuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcGFyYW0ge051bWJlcn0gdCBpbnRlcnBvbGF0aW9uIGFtb3VudCwgaW4gdGhlIHJhbmdlIFswLTFdLCBiZXR3ZWVuIHRoZSB0d28gaW5wdXRzXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGxlcnAob3V0LCBhLCBiLCB0KSB7XG4gIHZhciBheCA9IGFbMF07XG4gIHZhciBheSA9IGFbMV07XG4gIHZhciBheiA9IGFbMl07XG4gIG91dFswXSA9IGF4ICsgdCAqIChiWzBdIC0gYXgpO1xuICBvdXRbMV0gPSBheSArIHQgKiAoYlsxXSAtIGF5KTtcbiAgb3V0WzJdID0gYXogKyB0ICogKGJbMl0gLSBheik7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFBlcmZvcm1zIGEgaGVybWl0ZSBpbnRlcnBvbGF0aW9uIHdpdGggdHdvIGNvbnRyb2wgcG9pbnRzXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBjIHRoZSB0aGlyZCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gZCB0aGUgZm91cnRoIG9wZXJhbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSB0IGludGVycG9sYXRpb24gYW1vdW50LCBpbiB0aGUgcmFuZ2UgWzAtMV0sIGJldHdlZW4gdGhlIHR3byBpbnB1dHNcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaGVybWl0ZShvdXQsIGEsIGIsIGMsIGQsIHQpIHtcbiAgdmFyIGZhY3RvclRpbWVzMiA9IHQgKiB0O1xuICB2YXIgZmFjdG9yMSA9IGZhY3RvclRpbWVzMiAqICgyICogdCAtIDMpICsgMTtcbiAgdmFyIGZhY3RvcjIgPSBmYWN0b3JUaW1lczIgKiAodCAtIDIpICsgdDtcbiAgdmFyIGZhY3RvcjMgPSBmYWN0b3JUaW1lczIgKiAodCAtIDEpO1xuICB2YXIgZmFjdG9yNCA9IGZhY3RvclRpbWVzMiAqICgzIC0gMiAqIHQpO1xuICBvdXRbMF0gPSBhWzBdICogZmFjdG9yMSArIGJbMF0gKiBmYWN0b3IyICsgY1swXSAqIGZhY3RvcjMgKyBkWzBdICogZmFjdG9yNDtcbiAgb3V0WzFdID0gYVsxXSAqIGZhY3RvcjEgKyBiWzFdICogZmFjdG9yMiArIGNbMV0gKiBmYWN0b3IzICsgZFsxXSAqIGZhY3RvcjQ7XG4gIG91dFsyXSA9IGFbMl0gKiBmYWN0b3IxICsgYlsyXSAqIGZhY3RvcjIgKyBjWzJdICogZmFjdG9yMyArIGRbMl0gKiBmYWN0b3I0O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBQZXJmb3JtcyBhIGJlemllciBpbnRlcnBvbGF0aW9uIHdpdGggdHdvIGNvbnRyb2wgcG9pbnRzXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBjIHRoZSB0aGlyZCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gZCB0aGUgZm91cnRoIG9wZXJhbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSB0IGludGVycG9sYXRpb24gYW1vdW50LCBpbiB0aGUgcmFuZ2UgWzAtMV0sIGJldHdlZW4gdGhlIHR3byBpbnB1dHNcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYmV6aWVyKG91dCwgYSwgYiwgYywgZCwgdCkge1xuICB2YXIgaW52ZXJzZUZhY3RvciA9IDEgLSB0O1xuICB2YXIgaW52ZXJzZUZhY3RvclRpbWVzVHdvID0gaW52ZXJzZUZhY3RvciAqIGludmVyc2VGYWN0b3I7XG4gIHZhciBmYWN0b3JUaW1lczIgPSB0ICogdDtcbiAgdmFyIGZhY3RvcjEgPSBpbnZlcnNlRmFjdG9yVGltZXNUd28gKiBpbnZlcnNlRmFjdG9yO1xuICB2YXIgZmFjdG9yMiA9IDMgKiB0ICogaW52ZXJzZUZhY3RvclRpbWVzVHdvO1xuICB2YXIgZmFjdG9yMyA9IDMgKiBmYWN0b3JUaW1lczIgKiBpbnZlcnNlRmFjdG9yO1xuICB2YXIgZmFjdG9yNCA9IGZhY3RvclRpbWVzMiAqIHQ7XG4gIG91dFswXSA9IGFbMF0gKiBmYWN0b3IxICsgYlswXSAqIGZhY3RvcjIgKyBjWzBdICogZmFjdG9yMyArIGRbMF0gKiBmYWN0b3I0O1xuICBvdXRbMV0gPSBhWzFdICogZmFjdG9yMSArIGJbMV0gKiBmYWN0b3IyICsgY1sxXSAqIGZhY3RvcjMgKyBkWzFdICogZmFjdG9yNDtcbiAgb3V0WzJdID0gYVsyXSAqIGZhY3RvcjEgKyBiWzJdICogZmFjdG9yMiArIGNbMl0gKiBmYWN0b3IzICsgZFsyXSAqIGZhY3RvcjQ7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIHJhbmRvbSB2ZWN0b3Igd2l0aCB0aGUgZ2l2ZW4gc2NhbGVcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtOdW1iZXJ9IFtzY2FsZV0gTGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgdmVjdG9yLiBJZiBvbW1pdHRlZCwgYSB1bml0IHZlY3RvciB3aWxsIGJlIHJldHVybmVkXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbShvdXQsIHNjYWxlKSB7XG4gIHNjYWxlID0gc2NhbGUgfHwgMS4wO1xuICB2YXIgciA9IGdsTWF0cml4LlJBTkRPTSgpICogMi4wICogTWF0aC5QSTtcbiAgdmFyIHogPSBnbE1hdHJpeC5SQU5ET00oKSAqIDIuMCAtIDEuMDtcbiAgdmFyIHpTY2FsZSA9IE1hdGguc3FydCgxLjAgLSB6ICogeikgKiBzY2FsZTtcbiAgb3V0WzBdID0gTWF0aC5jb3MocikgKiB6U2NhbGU7XG4gIG91dFsxXSA9IE1hdGguc2luKHIpICogelNjYWxlO1xuICBvdXRbMl0gPSB6ICogc2NhbGU7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFRyYW5zZm9ybXMgdGhlIHZlYzMgd2l0aCBhIG1hdDQuXG4gKiA0dGggdmVjdG9yIGNvbXBvbmVudCBpcyBpbXBsaWNpdGx5ICcxJ1xuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgdmVjdG9yIHRvIHRyYW5zZm9ybVxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IG0gbWF0cml4IHRvIHRyYW5zZm9ybSB3aXRoXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1hdDQob3V0LCBhLCBtKSB7XG4gIHZhciB4ID0gYVswXSxcbiAgICAgIHkgPSBhWzFdLFxuICAgICAgeiA9IGFbMl07XG4gIHZhciB3ID0gbVszXSAqIHggKyBtWzddICogeSArIG1bMTFdICogeiArIG1bMTVdO1xuICB3ID0gdyB8fCAxLjA7XG4gIG91dFswXSA9IChtWzBdICogeCArIG1bNF0gKiB5ICsgbVs4XSAqIHogKyBtWzEyXSkgLyB3O1xuICBvdXRbMV0gPSAobVsxXSAqIHggKyBtWzVdICogeSArIG1bOV0gKiB6ICsgbVsxM10pIC8gdztcbiAgb3V0WzJdID0gKG1bMl0gKiB4ICsgbVs2XSAqIHkgKyBtWzEwXSAqIHogKyBtWzE0XSkgLyB3O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWMzIHdpdGggYSBtYXQzLlxuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgdmVjdG9yIHRvIHRyYW5zZm9ybVxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IG0gdGhlIDN4MyBtYXRyaXggdG8gdHJhbnNmb3JtIHdpdGhcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTWF0MyhvdXQsIGEsIG0pIHtcbiAgdmFyIHggPSBhWzBdLFxuICAgICAgeSA9IGFbMV0sXG4gICAgICB6ID0gYVsyXTtcbiAgb3V0WzBdID0geCAqIG1bMF0gKyB5ICogbVszXSArIHogKiBtWzZdO1xuICBvdXRbMV0gPSB4ICogbVsxXSArIHkgKiBtWzRdICsgeiAqIG1bN107XG4gIG91dFsyXSA9IHggKiBtWzJdICsgeSAqIG1bNV0gKyB6ICogbVs4XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogVHJhbnNmb3JtcyB0aGUgdmVjMyB3aXRoIGEgcXVhdFxuICogQ2FuIGFsc28gYmUgdXNlZCBmb3IgZHVhbCBxdWF0ZXJuaW9ucy4gKE11bHRpcGx5IGl0IHdpdGggdGhlIHJlYWwgcGFydClcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBxIHF1YXRlcm5pb24gdG8gdHJhbnNmb3JtIHdpdGhcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtUXVhdChvdXQsIGEsIHEpIHtcbiAgLy8gYmVuY2htYXJrczogaHR0cHM6Ly9qc3BlcmYuY29tL3F1YXRlcm5pb24tdHJhbnNmb3JtLXZlYzMtaW1wbGVtZW50YXRpb25zLWZpeGVkXG4gIHZhciBxeCA9IHFbMF0sXG4gICAgICBxeSA9IHFbMV0sXG4gICAgICBxeiA9IHFbMl0sXG4gICAgICBxdyA9IHFbM107XG4gIHZhciB4ID0gYVswXSxcbiAgICAgIHkgPSBhWzFdLFxuICAgICAgeiA9IGFbMl07IC8vIHZhciBxdmVjID0gW3F4LCBxeSwgcXpdO1xuICAvLyB2YXIgdXYgPSB2ZWMzLmNyb3NzKFtdLCBxdmVjLCBhKTtcblxuICB2YXIgdXZ4ID0gcXkgKiB6IC0gcXogKiB5LFxuICAgICAgdXZ5ID0gcXogKiB4IC0gcXggKiB6LFxuICAgICAgdXZ6ID0gcXggKiB5IC0gcXkgKiB4OyAvLyB2YXIgdXV2ID0gdmVjMy5jcm9zcyhbXSwgcXZlYywgdXYpO1xuXG4gIHZhciB1dXZ4ID0gcXkgKiB1dnogLSBxeiAqIHV2eSxcbiAgICAgIHV1dnkgPSBxeiAqIHV2eCAtIHF4ICogdXZ6LFxuICAgICAgdXV2eiA9IHF4ICogdXZ5IC0gcXkgKiB1dng7IC8vIHZlYzMuc2NhbGUodXYsIHV2LCAyICogdyk7XG5cbiAgdmFyIHcyID0gcXcgKiAyO1xuICB1dnggKj0gdzI7XG4gIHV2eSAqPSB3MjtcbiAgdXZ6ICo9IHcyOyAvLyB2ZWMzLnNjYWxlKHV1diwgdXV2LCAyKTtcblxuICB1dXZ4ICo9IDI7XG4gIHV1dnkgKj0gMjtcbiAgdXV2eiAqPSAyOyAvLyByZXR1cm4gdmVjMy5hZGQob3V0LCBhLCB2ZWMzLmFkZChvdXQsIHV2LCB1dXYpKTtcblxuICBvdXRbMF0gPSB4ICsgdXZ4ICsgdXV2eDtcbiAgb3V0WzFdID0geSArIHV2eSArIHV1dnk7XG4gIG91dFsyXSA9IHogKyB1dnogKyB1dXZ6O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGUgYSAzRCB2ZWN0b3IgYXJvdW5kIHRoZSB4LWF4aXNcbiAqIEBwYXJhbSB7dmVjM30gb3V0IFRoZSByZWNlaXZpbmcgdmVjM1xuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgVGhlIHZlYzMgcG9pbnQgdG8gcm90YXRlXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiBUaGUgb3JpZ2luIG9mIHRoZSByb3RhdGlvblxuICogQHBhcmFtIHtOdW1iZXJ9IHJhZCBUaGUgYW5nbGUgb2Ygcm90YXRpb24gaW4gcmFkaWFuc1xuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVYKG91dCwgYSwgYiwgcmFkKSB7XG4gIHZhciBwID0gW10sXG4gICAgICByID0gW107IC8vVHJhbnNsYXRlIHBvaW50IHRvIHRoZSBvcmlnaW5cblxuICBwWzBdID0gYVswXSAtIGJbMF07XG4gIHBbMV0gPSBhWzFdIC0gYlsxXTtcbiAgcFsyXSA9IGFbMl0gLSBiWzJdOyAvL3BlcmZvcm0gcm90YXRpb25cblxuICByWzBdID0gcFswXTtcbiAgclsxXSA9IHBbMV0gKiBNYXRoLmNvcyhyYWQpIC0gcFsyXSAqIE1hdGguc2luKHJhZCk7XG4gIHJbMl0gPSBwWzFdICogTWF0aC5zaW4ocmFkKSArIHBbMl0gKiBNYXRoLmNvcyhyYWQpOyAvL3RyYW5zbGF0ZSB0byBjb3JyZWN0IHBvc2l0aW9uXG5cbiAgb3V0WzBdID0gclswXSArIGJbMF07XG4gIG91dFsxXSA9IHJbMV0gKyBiWzFdO1xuICBvdXRbMl0gPSByWzJdICsgYlsyXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlIGEgM0QgdmVjdG9yIGFyb3VuZCB0aGUgeS1heGlzXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCBUaGUgcmVjZWl2aW5nIHZlYzNcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIFRoZSB2ZWMzIHBvaW50IHRvIHJvdGF0ZVxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgVGhlIG9yaWdpbiBvZiB0aGUgcm90YXRpb25cbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgVGhlIGFuZ2xlIG9mIHJvdGF0aW9uIGluIHJhZGlhbnNcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlWShvdXQsIGEsIGIsIHJhZCkge1xuICB2YXIgcCA9IFtdLFxuICAgICAgciA9IFtdOyAvL1RyYW5zbGF0ZSBwb2ludCB0byB0aGUgb3JpZ2luXG5cbiAgcFswXSA9IGFbMF0gLSBiWzBdO1xuICBwWzFdID0gYVsxXSAtIGJbMV07XG4gIHBbMl0gPSBhWzJdIC0gYlsyXTsgLy9wZXJmb3JtIHJvdGF0aW9uXG5cbiAgclswXSA9IHBbMl0gKiBNYXRoLnNpbihyYWQpICsgcFswXSAqIE1hdGguY29zKHJhZCk7XG4gIHJbMV0gPSBwWzFdO1xuICByWzJdID0gcFsyXSAqIE1hdGguY29zKHJhZCkgLSBwWzBdICogTWF0aC5zaW4ocmFkKTsgLy90cmFuc2xhdGUgdG8gY29ycmVjdCBwb3NpdGlvblxuXG4gIG91dFswXSA9IHJbMF0gKyBiWzBdO1xuICBvdXRbMV0gPSByWzFdICsgYlsxXTtcbiAgb3V0WzJdID0gclsyXSArIGJbMl07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZSBhIDNEIHZlY3RvciBhcm91bmQgdGhlIHotYXhpc1xuICogQHBhcmFtIHt2ZWMzfSBvdXQgVGhlIHJlY2VpdmluZyB2ZWMzXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSBUaGUgdmVjMyBwb2ludCB0byByb3RhdGVcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIFRoZSBvcmlnaW4gb2YgdGhlIHJvdGF0aW9uXG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIFRoZSBhbmdsZSBvZiByb3RhdGlvbiBpbiByYWRpYW5zXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZVoob3V0LCBhLCBiLCByYWQpIHtcbiAgdmFyIHAgPSBbXSxcbiAgICAgIHIgPSBbXTsgLy9UcmFuc2xhdGUgcG9pbnQgdG8gdGhlIG9yaWdpblxuXG4gIHBbMF0gPSBhWzBdIC0gYlswXTtcbiAgcFsxXSA9IGFbMV0gLSBiWzFdO1xuICBwWzJdID0gYVsyXSAtIGJbMl07IC8vcGVyZm9ybSByb3RhdGlvblxuXG4gIHJbMF0gPSBwWzBdICogTWF0aC5jb3MocmFkKSAtIHBbMV0gKiBNYXRoLnNpbihyYWQpO1xuICByWzFdID0gcFswXSAqIE1hdGguc2luKHJhZCkgKyBwWzFdICogTWF0aC5jb3MocmFkKTtcbiAgclsyXSA9IHBbMl07IC8vdHJhbnNsYXRlIHRvIGNvcnJlY3QgcG9zaXRpb25cblxuICBvdXRbMF0gPSByWzBdICsgYlswXTtcbiAgb3V0WzFdID0gclsxXSArIGJbMV07XG4gIG91dFsyXSA9IHJbMl0gKyBiWzJdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBHZXQgdGhlIGFuZ2xlIGJldHdlZW4gdHdvIDNEIHZlY3RvcnNcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIFRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiBUaGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBhbmdsZSBpbiByYWRpYW5zXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFuZ2xlKGEsIGIpIHtcbiAgdmFyIGF4ID0gYVswXSxcbiAgICAgIGF5ID0gYVsxXSxcbiAgICAgIGF6ID0gYVsyXSxcbiAgICAgIGJ4ID0gYlswXSxcbiAgICAgIGJ5ID0gYlsxXSxcbiAgICAgIGJ6ID0gYlsyXSxcbiAgICAgIG1hZzEgPSBNYXRoLnNxcnQoYXggKiBheCArIGF5ICogYXkgKyBheiAqIGF6KSxcbiAgICAgIG1hZzIgPSBNYXRoLnNxcnQoYnggKiBieCArIGJ5ICogYnkgKyBieiAqIGJ6KSxcbiAgICAgIG1hZyA9IG1hZzEgKiBtYWcyLFxuICAgICAgY29zaW5lID0gbWFnICYmIGRvdChhLCBiKSAvIG1hZztcbiAgcmV0dXJuIE1hdGguYWNvcyhNYXRoLm1pbihNYXRoLm1heChjb3NpbmUsIC0xKSwgMSkpO1xufVxuLyoqXG4gKiBTZXQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMzIHRvIHplcm9cbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB6ZXJvKG91dCkge1xuICBvdXRbMF0gPSAwLjA7XG4gIG91dFsxXSA9IDAuMDtcbiAgb3V0WzJdID0gMC4wO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdmVjdG9yXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdmVjdG9yIHRvIHJlcHJlc2VudCBhcyBhIHN0cmluZ1xuICogQHJldHVybnMge1N0cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2ZWN0b3JcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyKGEpIHtcbiAgcmV0dXJuIFwidmVjMyhcIiArIGFbMF0gKyBcIiwgXCIgKyBhWzFdICsgXCIsIFwiICsgYVsyXSArIFwiKVwiO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSB2ZWN0b3JzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbiAod2hlbiBjb21wYXJlZCB3aXRoID09PSlcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXhhY3RFcXVhbHMoYSwgYikge1xuICByZXR1cm4gYVswXSA9PT0gYlswXSAmJiBhWzFdID09PSBiWzFdICYmIGFbMl0gPT09IGJbMl07XG59XG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHZlY3RvcnMgaGF2ZSBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uLlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSB2ZWN0b3JzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbHMoYSwgYikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdO1xuICB2YXIgYjAgPSBiWzBdLFxuICAgICAgYjEgPSBiWzFdLFxuICAgICAgYjIgPSBiWzJdO1xuICByZXR1cm4gTWF0aC5hYnMoYTAgLSBiMCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTApLCBNYXRoLmFicyhiMCkpICYmIE1hdGguYWJzKGExIC0gYjEpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExKSwgTWF0aC5hYnMoYjEpKSAmJiBNYXRoLmFicyhhMiAtIGIyKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMiksIE1hdGguYWJzKGIyKSk7XG59XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgdmVjMy5zdWJ0cmFjdH1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgc3ViID0gc3VidHJhY3Q7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgdmVjMy5tdWx0aXBseX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgbXVsID0gbXVsdGlwbHk7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgdmVjMy5kaXZpZGV9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGRpdiA9IGRpdmlkZTtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWMzLmRpc3RhbmNlfVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBkaXN0ID0gZGlzdGFuY2U7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgdmVjMy5zcXVhcmVkRGlzdGFuY2V9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHNxckRpc3QgPSBzcXVhcmVkRGlzdGFuY2U7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgdmVjMy5sZW5ndGh9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGxlbiA9IGxlbmd0aDtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWMzLnNxdWFyZWRMZW5ndGh9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHNxckxlbiA9IHNxdWFyZWRMZW5ndGg7XG4vKipcbiAqIFBlcmZvcm0gc29tZSBvcGVyYXRpb24gb3ZlciBhbiBhcnJheSBvZiB2ZWMzcy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhIHRoZSBhcnJheSBvZiB2ZWN0b3JzIHRvIGl0ZXJhdGUgb3ZlclxuICogQHBhcmFtIHtOdW1iZXJ9IHN0cmlkZSBOdW1iZXIgb2YgZWxlbWVudHMgYmV0d2VlbiB0aGUgc3RhcnQgb2YgZWFjaCB2ZWMzLiBJZiAwIGFzc3VtZXMgdGlnaHRseSBwYWNrZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBvZmZzZXQgTnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNraXAgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXlcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb3VudCBOdW1iZXIgb2YgdmVjM3MgdG8gaXRlcmF0ZSBvdmVyLiBJZiAwIGl0ZXJhdGVzIG92ZXIgZW50aXJlIGFycmF5XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBGdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIHZlY3RvciBpbiB0aGUgYXJyYXlcbiAqIEBwYXJhbSB7T2JqZWN0fSBbYXJnXSBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIHBhc3MgdG8gZm5cbiAqIEByZXR1cm5zIHtBcnJheX0gYVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBmb3JFYWNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdmVjID0gY3JlYXRlKCk7XG4gIHJldHVybiBmdW5jdGlvbiAoYSwgc3RyaWRlLCBvZmZzZXQsIGNvdW50LCBmbiwgYXJnKSB7XG4gICAgdmFyIGksIGw7XG5cbiAgICBpZiAoIXN0cmlkZSkge1xuICAgICAgc3RyaWRlID0gMztcbiAgICB9XG5cbiAgICBpZiAoIW9mZnNldCkge1xuICAgICAgb2Zmc2V0ID0gMDtcbiAgICB9XG5cbiAgICBpZiAoY291bnQpIHtcbiAgICAgIGwgPSBNYXRoLm1pbihjb3VudCAqIHN0cmlkZSArIG9mZnNldCwgYS5sZW5ndGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsID0gYS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZm9yIChpID0gb2Zmc2V0OyBpIDwgbDsgaSArPSBzdHJpZGUpIHtcbiAgICAgIHZlY1swXSA9IGFbaV07XG4gICAgICB2ZWNbMV0gPSBhW2kgKyAxXTtcbiAgICAgIHZlY1syXSA9IGFbaSArIDJdO1xuICAgICAgZm4odmVjLCB2ZWMsIGFyZyk7XG4gICAgICBhW2ldID0gdmVjWzBdO1xuICAgICAgYVtpICsgMV0gPSB2ZWNbMV07XG4gICAgICBhW2kgKyAyXSA9IHZlY1syXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYTtcbiAgfTtcbn0oKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-matrix/esm/vec3.js\n"); /***/ }), /***/ "./node_modules/gl-matrix/esm/vec4.js": /*!********************************************!*\ !*** ./node_modules/gl-matrix/esm/vec4.js ***! \********************************************/ /*! exports provided: create, clone, fromValues, copy, set, add, subtract, multiply, divide, ceil, floor, min, max, round, scale, scaleAndAdd, distance, squaredDistance, length, squaredLength, negate, inverse, normalize, dot, cross, lerp, random, transformMat4, transformQuat, zero, str, exactEquals, equals, sub, mul, div, dist, sqrDist, len, sqrLen, forEach */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divide\", function() { return divide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ceil\", function() { return ceil; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floor\", function() { return floor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return min; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return max; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"round\", function() { return round; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleAndAdd\", function() { return scaleAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredDistance\", function() { return squaredDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"length\", function() { return length; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredLength\", function() { return squaredLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return negate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inverse\", function() { return inverse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dot\", function() { return dot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return cross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return random; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat4\", function() { return transformMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformQuat\", function() { return transformQuat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"div\", function() { return div; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dist\", function() { return dist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrDist\", function() { return sqrDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"len\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrLen\", function() { return sqrLen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return forEach; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nfunction fromValues(x, y, z, w) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nfunction set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nfunction ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nfunction floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nfunction round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nfunction scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nfunction negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nfunction inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nfunction normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nfunction cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nfunction lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nfunction random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2 - 1;\n v2 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2 - 1;\n v4 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nfunction transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nfunction transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nfunction zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS92ZWM0LmpzPzZlNWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjs7QUFFbkMsTUFBTSxxREFBbUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLHVCQUF1QjtBQUN2QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTLGlEQUFlO0FBQ3hCLFNBQVMsaURBQWU7QUFDeEI7QUFDQSxHQUFHOztBQUVIO0FBQ0EsU0FBUyxpREFBZTtBQUN4QixTQUFTLGlEQUFlO0FBQ3hCO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0I7QUFDN1M7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtbWF0cml4L2VzbS92ZWM0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ2xNYXRyaXggZnJvbSBcIi4vY29tbW9uLmpzXCI7XG4vKipcbiAqIDQgRGltZW5zaW9uYWwgVmVjdG9yXG4gKiBAbW9kdWxlIHZlYzRcbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcsIGVtcHR5IHZlYzRcbiAqXG4gKiBAcmV0dXJucyB7dmVjNH0gYSBuZXcgNEQgdmVjdG9yXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDQpO1xuXG4gIGlmIChnbE1hdHJpeC5BUlJBWV9UWVBFICE9IEZsb2F0MzJBcnJheSkge1xuICAgIG91dFswXSA9IDA7XG4gICAgb3V0WzFdID0gMDtcbiAgICBvdXRbMl0gPSAwO1xuICAgIG91dFszXSA9IDA7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHZlYzQgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyB2ZWN0b3JcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB2ZWN0b3IgdG8gY2xvbmVcbiAqIEByZXR1cm5zIHt2ZWM0fSBhIG5ldyA0RCB2ZWN0b3JcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoYSkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoNCk7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIG91dFszXSA9IGFbM107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgdmVjNCBpbml0aWFsaXplZCB3aXRoIHRoZSBnaXZlbiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0geCBYIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHkgWSBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB6IFogY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0gdyBXIGNvbXBvbmVudFxuICogQHJldHVybnMge3ZlYzR9IGEgbmV3IDREIHZlY3RvclxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVmFsdWVzKHgsIHksIHosIHcpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDQpO1xuICBvdXRbMF0gPSB4O1xuICBvdXRbMV0gPSB5O1xuICBvdXRbMl0gPSB6O1xuICBvdXRbM10gPSB3O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgdmVjNCB0byBhbm90aGVyXG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHRoZSBzb3VyY2UgdmVjdG9yXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHkob3V0LCBhKSB7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIG91dFszXSA9IGFbM107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzQgdG8gdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge051bWJlcn0geCBYIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHkgWSBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB6IFogY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0gdyBXIGNvbXBvbmVudFxuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXQob3V0LCB4LCB5LCB6LCB3KSB7XG4gIG91dFswXSA9IHg7XG4gIG91dFsxXSA9IHk7XG4gIG91dFsyXSA9IHo7XG4gIG91dFszXSA9IHc7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEFkZHMgdHdvIHZlYzQnc1xuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZChvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSArIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gKyBiWzFdO1xuICBvdXRbMl0gPSBhWzJdICsgYlsyXTtcbiAgb3V0WzNdID0gYVszXSArIGJbM107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFN1YnRyYWN0cyB2ZWN0b3IgYiBmcm9tIHZlY3RvciBhXG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3VidHJhY3Qob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gLSBiWzBdO1xuICBvdXRbMV0gPSBhWzFdIC0gYlsxXTtcbiAgb3V0WzJdID0gYVsyXSAtIGJbMl07XG4gIG91dFszXSA9IGFbM10gLSBiWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBNdWx0aXBsaWVzIHR3byB2ZWM0J3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseShvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAqIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gKiBiWzFdO1xuICBvdXRbMl0gPSBhWzJdICogYlsyXTtcbiAgb3V0WzNdID0gYVszXSAqIGJbM107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIERpdmlkZXMgdHdvIHZlYzQnc1xuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRpdmlkZShvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAvIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gLyBiWzFdO1xuICBvdXRbMl0gPSBhWzJdIC8gYlsyXTtcbiAgb3V0WzNdID0gYVszXSAvIGJbM107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE1hdGguY2VpbCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzRcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdmVjdG9yIHRvIGNlaWxcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2VpbChvdXQsIGEpIHtcbiAgb3V0WzBdID0gTWF0aC5jZWlsKGFbMF0pO1xuICBvdXRbMV0gPSBNYXRoLmNlaWwoYVsxXSk7XG4gIG91dFsyXSA9IE1hdGguY2VpbChhWzJdKTtcbiAgb3V0WzNdID0gTWF0aC5jZWlsKGFbM10pO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBNYXRoLmZsb29yIHRoZSBjb21wb25lbnRzIG9mIGEgdmVjNFxuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB2ZWN0b3IgdG8gZmxvb3JcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZmxvb3Iob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGguZmxvb3IoYVswXSk7XG4gIG91dFsxXSA9IE1hdGguZmxvb3IoYVsxXSk7XG4gIG91dFsyXSA9IE1hdGguZmxvb3IoYVsyXSk7XG4gIG91dFszXSA9IE1hdGguZmxvb3IoYVszXSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIG1pbmltdW0gb2YgdHdvIHZlYzQnc1xuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG1pbihvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gTWF0aC5taW4oYVswXSwgYlswXSk7XG4gIG91dFsxXSA9IE1hdGgubWluKGFbMV0sIGJbMV0pO1xuICBvdXRbMl0gPSBNYXRoLm1pbihhWzJdLCBiWzJdKTtcbiAgb3V0WzNdID0gTWF0aC5taW4oYVszXSwgYlszXSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIG1heGltdW0gb2YgdHdvIHZlYzQnc1xuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG1heChvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gTWF0aC5tYXgoYVswXSwgYlswXSk7XG4gIG91dFsxXSA9IE1hdGgubWF4KGFbMV0sIGJbMV0pO1xuICBvdXRbMl0gPSBNYXRoLm1heChhWzJdLCBiWzJdKTtcbiAgb3V0WzNdID0gTWF0aC5tYXgoYVszXSwgYlszXSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE1hdGgucm91bmQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWM0XG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHZlY3RvciB0byByb3VuZFxuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3VuZChvdXQsIGEpIHtcbiAgb3V0WzBdID0gTWF0aC5yb3VuZChhWzBdKTtcbiAgb3V0WzFdID0gTWF0aC5yb3VuZChhWzFdKTtcbiAgb3V0WzJdID0gTWF0aC5yb3VuZChhWzJdKTtcbiAgb3V0WzNdID0gTWF0aC5yb3VuZChhWzNdKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2NhbGVzIGEgdmVjNCBieSBhIHNjYWxhciBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIHZlY3RvciB0byBzY2FsZVxuICogQHBhcmFtIHtOdW1iZXJ9IGIgYW1vdW50IHRvIHNjYWxlIHRoZSB2ZWN0b3IgYnlcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGUob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKiBiO1xuICBvdXRbMV0gPSBhWzFdICogYjtcbiAgb3V0WzJdID0gYVsyXSAqIGI7XG4gIG91dFszXSA9IGFbM10gKiBiO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBBZGRzIHR3byB2ZWM0J3MgYWZ0ZXIgc2NhbGluZyB0aGUgc2Vjb25kIG9wZXJhbmQgYnkgYSBzY2FsYXIgdmFsdWVcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHNjYWxlIHRoZSBhbW91bnQgdG8gc2NhbGUgYiBieSBiZWZvcmUgYWRkaW5nXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlQW5kQWRkKG91dCwgYSwgYiwgc2NhbGUpIHtcbiAgb3V0WzBdID0gYVswXSArIGJbMF0gKiBzY2FsZTtcbiAgb3V0WzFdID0gYVsxXSArIGJbMV0gKiBzY2FsZTtcbiAgb3V0WzJdID0gYVsyXSArIGJbMl0gKiBzY2FsZTtcbiAgb3V0WzNdID0gYVszXSArIGJbM10gKiBzY2FsZTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZXVjbGlkaWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlYzQnc1xuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGRpc3RhbmNlIGJldHdlZW4gYSBhbmQgYlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZShhLCBiKSB7XG4gIHZhciB4ID0gYlswXSAtIGFbMF07XG4gIHZhciB5ID0gYlsxXSAtIGFbMV07XG4gIHZhciB6ID0gYlsyXSAtIGFbMl07XG4gIHZhciB3ID0gYlszXSAtIGFbM107XG4gIHJldHVybiBNYXRoLmh5cG90KHgsIHksIHosIHcpO1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBzcXVhcmVkIGV1Y2xpZGlhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWM0J3NcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBzcXVhcmVkIGRpc3RhbmNlIGJldHdlZW4gYSBhbmQgYlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzcXVhcmVkRGlzdGFuY2UoYSwgYikge1xuICB2YXIgeCA9IGJbMF0gLSBhWzBdO1xuICB2YXIgeSA9IGJbMV0gLSBhWzFdO1xuICB2YXIgeiA9IGJbMl0gLSBhWzJdO1xuICB2YXIgdyA9IGJbM10gLSBhWzNdO1xuICByZXR1cm4geCAqIHggKyB5ICogeSArIHogKiB6ICsgdyAqIHc7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGxlbmd0aCBvZiBhIHZlYzRcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB2ZWN0b3IgdG8gY2FsY3VsYXRlIGxlbmd0aCBvZlxuICogQHJldHVybnMge051bWJlcn0gbGVuZ3RoIG9mIGFcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbGVuZ3RoKGEpIHtcbiAgdmFyIHggPSBhWzBdO1xuICB2YXIgeSA9IGFbMV07XG4gIHZhciB6ID0gYVsyXTtcbiAgdmFyIHcgPSBhWzNdO1xuICByZXR1cm4gTWF0aC5oeXBvdCh4LCB5LCB6LCB3KTtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgc3F1YXJlZCBsZW5ndGggb2YgYSB2ZWM0XG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdmVjdG9yIHRvIGNhbGN1bGF0ZSBzcXVhcmVkIGxlbmd0aCBvZlxuICogQHJldHVybnMge051bWJlcn0gc3F1YXJlZCBsZW5ndGggb2YgYVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzcXVhcmVkTGVuZ3RoKGEpIHtcbiAgdmFyIHggPSBhWzBdO1xuICB2YXIgeSA9IGFbMV07XG4gIHZhciB6ID0gYVsyXTtcbiAgdmFyIHcgPSBhWzNdO1xuICByZXR1cm4geCAqIHggKyB5ICogeSArIHogKiB6ICsgdyAqIHc7XG59XG4vKipcbiAqIE5lZ2F0ZXMgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWM0XG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHZlY3RvciB0byBuZWdhdGVcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlKG91dCwgYSkge1xuICBvdXRbMF0gPSAtYVswXTtcbiAgb3V0WzFdID0gLWFbMV07XG4gIG91dFsyXSA9IC1hWzJdO1xuICBvdXRbM10gPSAtYVszXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgaW52ZXJzZSBvZiB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzRcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdmVjdG9yIHRvIGludmVydFxuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnNlKG91dCwgYSkge1xuICBvdXRbMF0gPSAxLjAgLyBhWzBdO1xuICBvdXRbMV0gPSAxLjAgLyBhWzFdO1xuICBvdXRbMl0gPSAxLjAgLyBhWzJdO1xuICBvdXRbM10gPSAxLjAgLyBhWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBOb3JtYWxpemUgYSB2ZWM0XG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHZlY3RvciB0byBub3JtYWxpemVcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKG91dCwgYSkge1xuICB2YXIgeCA9IGFbMF07XG4gIHZhciB5ID0gYVsxXTtcbiAgdmFyIHogPSBhWzJdO1xuICB2YXIgdyA9IGFbM107XG4gIHZhciBsZW4gPSB4ICogeCArIHkgKiB5ICsgeiAqIHogKyB3ICogdztcblxuICBpZiAobGVuID4gMCkge1xuICAgIGxlbiA9IDEgLyBNYXRoLnNxcnQobGVuKTtcbiAgfVxuXG4gIG91dFswXSA9IHggKiBsZW47XG4gIG91dFsxXSA9IHkgKiBsZW47XG4gIG91dFsyXSA9IHogKiBsZW47XG4gIG91dFszXSA9IHcgKiBsZW47XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGRvdCBwcm9kdWN0IG9mIHR3byB2ZWM0J3NcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkb3QgcHJvZHVjdCBvZiBhIGFuZCBiXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRvdChhLCBiKSB7XG4gIHJldHVybiBhWzBdICogYlswXSArIGFbMV0gKiBiWzFdICsgYVsyXSAqIGJbMl0gKyBhWzNdICogYlszXTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgY3Jvc3MtcHJvZHVjdCBvZiB0aHJlZSB2ZWN0b3JzIGluIGEgNC1kaW1lbnNpb25hbCBzcGFjZVxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSByZXN1bHQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBVIHRoZSBmaXJzdCB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBWIHRoZSBzZWNvbmQgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gVyB0aGUgdGhpcmQgdmVjdG9yXG4gKiBAcmV0dXJucyB7dmVjNH0gcmVzdWx0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyb3NzKG91dCwgdSwgdiwgdykge1xuICB2YXIgQSA9IHZbMF0gKiB3WzFdIC0gdlsxXSAqIHdbMF0sXG4gICAgICBCID0gdlswXSAqIHdbMl0gLSB2WzJdICogd1swXSxcbiAgICAgIEMgPSB2WzBdICogd1szXSAtIHZbM10gKiB3WzBdLFxuICAgICAgRCA9IHZbMV0gKiB3WzJdIC0gdlsyXSAqIHdbMV0sXG4gICAgICBFID0gdlsxXSAqIHdbM10gLSB2WzNdICogd1sxXSxcbiAgICAgIEYgPSB2WzJdICogd1szXSAtIHZbM10gKiB3WzJdO1xuICB2YXIgRyA9IHVbMF07XG4gIHZhciBIID0gdVsxXTtcbiAgdmFyIEkgPSB1WzJdO1xuICB2YXIgSiA9IHVbM107XG4gIG91dFswXSA9IEggKiBGIC0gSSAqIEUgKyBKICogRDtcbiAgb3V0WzFdID0gLShHICogRikgKyBJICogQyAtIEogKiBCO1xuICBvdXRbMl0gPSBHICogRSAtIEggKiBDICsgSiAqIEE7XG4gIG91dFszXSA9IC0oRyAqIEQpICsgSCAqIEIgLSBJICogQTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUGVyZm9ybXMgYSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIHR3byB2ZWM0J3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHQgaW50ZXJwb2xhdGlvbiBhbW91bnQsIGluIHRoZSByYW5nZSBbMC0xXSwgYmV0d2VlbiB0aGUgdHdvIGlucHV0c1xuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsZXJwKG91dCwgYSwgYiwgdCkge1xuICB2YXIgYXggPSBhWzBdO1xuICB2YXIgYXkgPSBhWzFdO1xuICB2YXIgYXogPSBhWzJdO1xuICB2YXIgYXcgPSBhWzNdO1xuICBvdXRbMF0gPSBheCArIHQgKiAoYlswXSAtIGF4KTtcbiAgb3V0WzFdID0gYXkgKyB0ICogKGJbMV0gLSBheSk7XG4gIG91dFsyXSA9IGF6ICsgdCAqIChiWzJdIC0gYXopO1xuICBvdXRbM10gPSBhdyArIHQgKiAoYlszXSAtIGF3KTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogR2VuZXJhdGVzIGEgcmFuZG9tIHZlY3RvciB3aXRoIHRoZSBnaXZlbiBzY2FsZVxuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge051bWJlcn0gW3NjYWxlXSBMZW5ndGggb2YgdGhlIHJlc3VsdGluZyB2ZWN0b3IuIElmIG9tbWl0dGVkLCBhIHVuaXQgdmVjdG9yIHdpbGwgYmUgcmV0dXJuZWRcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tKG91dCwgc2NhbGUpIHtcbiAgc2NhbGUgPSBzY2FsZSB8fCAxLjA7IC8vIE1hcnNhZ2xpYSwgR2VvcmdlLiBDaG9vc2luZyBhIFBvaW50IGZyb20gdGhlIFN1cmZhY2Ugb2YgYVxuICAvLyBTcGhlcmUuIEFubi4gTWF0aC4gU3RhdGlzdC4gNDMgKDE5NzIpLCBuby4gMiwgNjQ1LS02NDYuXG4gIC8vIGh0dHA6Ly9wcm9qZWN0ZXVjbGlkLm9yZy9ldWNsaWQuYW9tcy8xMTc3NjkyNjQ0O1xuXG4gIHZhciB2MSwgdjIsIHYzLCB2NDtcbiAgdmFyIHMxLCBzMjtcblxuICBkbyB7XG4gICAgdjEgPSBnbE1hdHJpeC5SQU5ET00oKSAqIDIgLSAxO1xuICAgIHYyID0gZ2xNYXRyaXguUkFORE9NKCkgKiAyIC0gMTtcbiAgICBzMSA9IHYxICogdjEgKyB2MiAqIHYyO1xuICB9IHdoaWxlIChzMSA+PSAxKTtcblxuICBkbyB7XG4gICAgdjMgPSBnbE1hdHJpeC5SQU5ET00oKSAqIDIgLSAxO1xuICAgIHY0ID0gZ2xNYXRyaXguUkFORE9NKCkgKiAyIC0gMTtcbiAgICBzMiA9IHYzICogdjMgKyB2NCAqIHY0O1xuICB9IHdoaWxlIChzMiA+PSAxKTtcblxuICB2YXIgZCA9IE1hdGguc3FydCgoMSAtIHMxKSAvIHMyKTtcbiAgb3V0WzBdID0gc2NhbGUgKiB2MTtcbiAgb3V0WzFdID0gc2NhbGUgKiB2MjtcbiAgb3V0WzJdID0gc2NhbGUgKiB2MyAqIGQ7XG4gIG91dFszXSA9IHNjYWxlICogdjQgKiBkO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWM0IHdpdGggYSBtYXQ0LlxuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB0aGUgdmVjdG9yIHRvIHRyYW5zZm9ybVxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IG0gbWF0cml4IHRvIHRyYW5zZm9ybSB3aXRoXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1hdDQob3V0LCBhLCBtKSB7XG4gIHZhciB4ID0gYVswXSxcbiAgICAgIHkgPSBhWzFdLFxuICAgICAgeiA9IGFbMl0sXG4gICAgICB3ID0gYVszXTtcbiAgb3V0WzBdID0gbVswXSAqIHggKyBtWzRdICogeSArIG1bOF0gKiB6ICsgbVsxMl0gKiB3O1xuICBvdXRbMV0gPSBtWzFdICogeCArIG1bNV0gKiB5ICsgbVs5XSAqIHogKyBtWzEzXSAqIHc7XG4gIG91dFsyXSA9IG1bMl0gKiB4ICsgbVs2XSAqIHkgKyBtWzEwXSAqIHogKyBtWzE0XSAqIHc7XG4gIG91dFszXSA9IG1bM10gKiB4ICsgbVs3XSAqIHkgKyBtWzExXSAqIHogKyBtWzE1XSAqIHc7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFRyYW5zZm9ybXMgdGhlIHZlYzQgd2l0aCBhIHF1YXRcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBxIHF1YXRlcm5pb24gdG8gdHJhbnNmb3JtIHdpdGhcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtUXVhdChvdXQsIGEsIHEpIHtcbiAgdmFyIHggPSBhWzBdLFxuICAgICAgeSA9IGFbMV0sXG4gICAgICB6ID0gYVsyXTtcbiAgdmFyIHF4ID0gcVswXSxcbiAgICAgIHF5ID0gcVsxXSxcbiAgICAgIHF6ID0gcVsyXSxcbiAgICAgIHF3ID0gcVszXTsgLy8gY2FsY3VsYXRlIHF1YXQgKiB2ZWNcblxuICB2YXIgaXggPSBxdyAqIHggKyBxeSAqIHogLSBxeiAqIHk7XG4gIHZhciBpeSA9IHF3ICogeSArIHF6ICogeCAtIHF4ICogejtcbiAgdmFyIGl6ID0gcXcgKiB6ICsgcXggKiB5IC0gcXkgKiB4O1xuICB2YXIgaXcgPSAtcXggKiB4IC0gcXkgKiB5IC0gcXogKiB6OyAvLyBjYWxjdWxhdGUgcmVzdWx0ICogaW52ZXJzZSBxdWF0XG5cbiAgb3V0WzBdID0gaXggKiBxdyArIGl3ICogLXF4ICsgaXkgKiAtcXogLSBpeiAqIC1xeTtcbiAgb3V0WzFdID0gaXkgKiBxdyArIGl3ICogLXF5ICsgaXogKiAtcXggLSBpeCAqIC1xejtcbiAgb3V0WzJdID0gaXogKiBxdyArIGl3ICogLXF6ICsgaXggKiAtcXkgLSBpeSAqIC1xeDtcbiAgb3V0WzNdID0gYVszXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IHRoZSBjb21wb25lbnRzIG9mIGEgdmVjNCB0byB6ZXJvXG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gemVybyhvdXQpIHtcbiAgb3V0WzBdID0gMC4wO1xuICBvdXRbMV0gPSAwLjA7XG4gIG91dFsyXSA9IDAuMDtcbiAgb3V0WzNdID0gMC4wO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdmVjdG9yXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdmVjdG9yIHRvIHJlcHJlc2VudCBhcyBhIHN0cmluZ1xuICogQHJldHVybnMge1N0cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2ZWN0b3JcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyKGEpIHtcbiAgcmV0dXJuIFwidmVjNChcIiArIGFbMF0gKyBcIiwgXCIgKyBhWzFdICsgXCIsIFwiICsgYVsyXSArIFwiLCBcIiArIGFbM10gKyBcIilcIjtcbn1cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgdmVjdG9ycyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0pXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgVGhlIGZpcnN0IHZlY3Rvci5cbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBiIFRoZSBzZWNvbmQgdmVjdG9yLlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIHZlY3RvcnMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGV4YWN0RXF1YWxzKGEsIGIpIHtcbiAgcmV0dXJuIGFbMF0gPT09IGJbMF0gJiYgYVsxXSA9PT0gYlsxXSAmJiBhWzJdID09PSBiWzJdICYmIGFbM10gPT09IGJbM107XG59XG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHZlY3RvcnMgaGF2ZSBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uLlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYiBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSB2ZWN0b3JzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbHMoYSwgYikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdO1xuICB2YXIgYjAgPSBiWzBdLFxuICAgICAgYjEgPSBiWzFdLFxuICAgICAgYjIgPSBiWzJdLFxuICAgICAgYjMgPSBiWzNdO1xuICByZXR1cm4gTWF0aC5hYnMoYTAgLSBiMCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTApLCBNYXRoLmFicyhiMCkpICYmIE1hdGguYWJzKGExIC0gYjEpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExKSwgTWF0aC5hYnMoYjEpKSAmJiBNYXRoLmFicyhhMiAtIGIyKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMiksIE1hdGguYWJzKGIyKSkgJiYgTWF0aC5hYnMoYTMgLSBiMykgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTMpLCBNYXRoLmFicyhiMykpO1xufVxuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzQuc3VidHJhY3R9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHN1YiA9IHN1YnRyYWN0O1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzQubXVsdGlwbHl9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIG11bCA9IG11bHRpcGx5O1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzQuZGl2aWRlfVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBkaXYgPSBkaXZpZGU7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgdmVjNC5kaXN0YW5jZX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgZGlzdCA9IGRpc3RhbmNlO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzQuc3F1YXJlZERpc3RhbmNlfVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzcXJEaXN0ID0gc3F1YXJlZERpc3RhbmNlO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzQubGVuZ3RofVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBsZW4gPSBsZW5ndGg7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgdmVjNC5zcXVhcmVkTGVuZ3RofVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzcXJMZW4gPSBzcXVhcmVkTGVuZ3RoO1xuLyoqXG4gKiBQZXJmb3JtIHNvbWUgb3BlcmF0aW9uIG92ZXIgYW4gYXJyYXkgb2YgdmVjNHMuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYSB0aGUgYXJyYXkgb2YgdmVjdG9ycyB0byBpdGVyYXRlIG92ZXJcbiAqIEBwYXJhbSB7TnVtYmVyfSBzdHJpZGUgTnVtYmVyIG9mIGVsZW1lbnRzIGJldHdlZW4gdGhlIHN0YXJ0IG9mIGVhY2ggdmVjNC4gSWYgMCBhc3N1bWVzIHRpZ2h0bHkgcGFja2VkXG4gKiBAcGFyYW0ge051bWJlcn0gb2Zmc2V0IE51bWJlciBvZiBlbGVtZW50cyB0byBza2lwIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gY291bnQgTnVtYmVyIG9mIHZlYzRzIHRvIGl0ZXJhdGUgb3Zlci4gSWYgMCBpdGVyYXRlcyBvdmVyIGVudGlyZSBhcnJheVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gRnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCB2ZWN0b3IgaW4gdGhlIGFycmF5XG4gKiBAcGFyYW0ge09iamVjdH0gW2FyZ10gYWRkaXRpb25hbCBhcmd1bWVudCB0byBwYXNzIHRvIGZuXG4gKiBAcmV0dXJucyB7QXJyYXl9IGFcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgZm9yRWFjaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHZlYyA9IGNyZWF0ZSgpO1xuICByZXR1cm4gZnVuY3Rpb24gKGEsIHN0cmlkZSwgb2Zmc2V0LCBjb3VudCwgZm4sIGFyZykge1xuICAgIHZhciBpLCBsO1xuXG4gICAgaWYgKCFzdHJpZGUpIHtcbiAgICAgIHN0cmlkZSA9IDQ7XG4gICAgfVxuXG4gICAgaWYgKCFvZmZzZXQpIHtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICBsID0gTWF0aC5taW4oY291bnQgKiBzdHJpZGUgKyBvZmZzZXQsIGEubGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbCA9IGEubGVuZ3RoO1xuICAgIH1cblxuICAgIGZvciAoaSA9IG9mZnNldDsgaSA8IGw7IGkgKz0gc3RyaWRlKSB7XG4gICAgICB2ZWNbMF0gPSBhW2ldO1xuICAgICAgdmVjWzFdID0gYVtpICsgMV07XG4gICAgICB2ZWNbMl0gPSBhW2kgKyAyXTtcbiAgICAgIHZlY1szXSA9IGFbaSArIDNdO1xuICAgICAgZm4odmVjLCB2ZWMsIGFyZyk7XG4gICAgICBhW2ldID0gdmVjWzBdO1xuICAgICAgYVtpICsgMV0gPSB2ZWNbMV07XG4gICAgICBhW2kgKyAyXSA9IHZlY1syXTtcbiAgICAgIGFbaSArIDNdID0gdmVjWzNdO1xuICAgIH1cblxuICAgIHJldHVybiBhO1xuICB9O1xufSgpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-matrix/esm/vec4.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/add.js": /*!*************************************!*\ !*** ./node_modules/gl-vec2/add.js ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = add\n\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction add(out, a, b) {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9hZGQuanM/ZmFjMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvYWRkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBhZGRcblxuLyoqXG4gKiBBZGRzIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIGFkZChvdXQsIGEsIGIpIHtcbiAgICBvdXRbMF0gPSBhWzBdICsgYlswXVxuICAgIG91dFsxXSA9IGFbMV0gKyBiWzFdXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/add.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/ceil.js": /*!**************************************!*\ !*** ./node_modules/gl-vec2/ceil.js ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = ceil\n\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to ceil\n * @returns {vec2} out\n */\nfunction ceil(out, a) {\n out[0] = Math.ceil(a[0])\n out[1] = Math.ceil(a[1])\n return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9jZWlsLmpzP2NjYmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvY2VpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gY2VpbFxuXG4vKipcbiAqIE1hdGguY2VpbCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHZlY3RvciB0byBjZWlsXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIGNlaWwob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGguY2VpbChhWzBdKVxuICBvdXRbMV0gPSBNYXRoLmNlaWwoYVsxXSlcbiAgcmV0dXJuIG91dFxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/ceil.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/clone.js": /*!***************************************!*\ !*** ./node_modules/gl-vec2/clone.js ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = clone\n\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {vec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\nfunction clone(a) {\n var out = new Float32Array(2)\n out[0] = a[0]\n out[1] = a[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9jbG9uZS5qcz80YmNjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9jbG9uZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gY2xvbmVcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHZlYzIgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyB2ZWN0b3JcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdmVjdG9yIHRvIGNsb25lXG4gKiBAcmV0dXJucyB7dmVjMn0gYSBuZXcgMkQgdmVjdG9yXG4gKi9cbmZ1bmN0aW9uIGNsb25lKGEpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEZsb2F0MzJBcnJheSgyKVxuICAgIG91dFswXSA9IGFbMF1cbiAgICBvdXRbMV0gPSBhWzFdXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/clone.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/copy.js": /*!**************************************!*\ !*** ./node_modules/gl-vec2/copy.js ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = copy\n\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the source vector\n * @returns {vec2} out\n */\nfunction copy(out, a) {\n out[0] = a[0]\n out[1] = a[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9jb3B5LmpzPzNjYzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvY29weS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gY29weVxuXG4vKipcbiAqIENvcHkgdGhlIHZhbHVlcyBmcm9tIG9uZSB2ZWMyIHRvIGFub3RoZXJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBzb3VyY2UgdmVjdG9yXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIGNvcHkob3V0LCBhKSB7XG4gICAgb3V0WzBdID0gYVswXVxuICAgIG91dFsxXSA9IGFbMV1cbiAgICByZXR1cm4gb3V0XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/copy.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/create.js": /*!****************************************!*\ !*** ./node_modules/gl-vec2/create.js ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = create\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\nfunction create() {\n var out = new Float32Array(2)\n out[0] = 0\n out[1] = 0\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9jcmVhdGUuanM/MTIzZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9jcmVhdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcsIGVtcHR5IHZlYzJcbiAqXG4gKiBAcmV0dXJucyB7dmVjMn0gYSBuZXcgMkQgdmVjdG9yXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEZsb2F0MzJBcnJheSgyKVxuICAgIG91dFswXSA9IDBcbiAgICBvdXRbMV0gPSAwXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/create.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/cross.js": /*!***************************************!*\ !*** ./node_modules/gl-vec2/cross.js ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = cross\n\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec3} out\n */\nfunction cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0]\n out[0] = out[1] = 0\n out[2] = z\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9jcm9zcy5qcz8zNzYxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvY3Jvc3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGNyb3NzXG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGNyb3NzIHByb2R1Y3Qgb2YgdHdvIHZlYzInc1xuICogTm90ZSB0aGF0IHRoZSBjcm9zcyBwcm9kdWN0IG11c3QgYnkgZGVmaW5pdGlvbiBwcm9kdWNlIGEgM0QgdmVjdG9yXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5mdW5jdGlvbiBjcm9zcyhvdXQsIGEsIGIpIHtcbiAgICB2YXIgeiA9IGFbMF0gKiBiWzFdIC0gYVsxXSAqIGJbMF1cbiAgICBvdXRbMF0gPSBvdXRbMV0gPSAwXG4gICAgb3V0WzJdID0gelxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/cross.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/dist.js": /*!**************************************!*\ !*** ./node_modules/gl-vec2/dist.js ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./distance */ \"./node_modules/gl-vec2/distance.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9kaXN0LmpzPzA4NmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsc0RBQVkiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9kaXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Rpc3RhbmNlJylcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/dist.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/distance.js": /*!******************************************!*\ !*** ./node_modules/gl-vec2/distance.js ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = distance\n\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} distance between a and b\n */\nfunction distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1]\n return Math.sqrt(x*x + y*y)\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9kaXN0YW5jZS5qcz8zMzliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL2Rpc3RhbmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBkaXN0YW5jZVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGV1Y2xpZGlhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7dmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGRpc3RhbmNlIGJldHdlZW4gYSBhbmQgYlxuICovXG5mdW5jdGlvbiBkaXN0YW5jZShhLCBiKSB7XG4gICAgdmFyIHggPSBiWzBdIC0gYVswXSxcbiAgICAgICAgeSA9IGJbMV0gLSBhWzFdXG4gICAgcmV0dXJuIE1hdGguc3FydCh4KnggKyB5KnkpXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/distance.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/div.js": /*!*************************************!*\ !*** ./node_modules/gl-vec2/div.js ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./divide */ \"./node_modules/gl-vec2/divide.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9kaXYuanM/NGFmNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQyxrREFBVSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL2Rpdi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kaXZpZGUnKVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/div.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/divide.js": /*!****************************************!*\ !*** ./node_modules/gl-vec2/divide.js ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = divide\n\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction divide(out, a, b) {\n out[0] = a[0] / b[0]\n out[1] = a[1] / b[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9kaXZpZGUuanM/MDZlZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvZGl2aWRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBkaXZpZGVcblxuLyoqXG4gKiBEaXZpZGVzIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIGRpdmlkZShvdXQsIGEsIGIpIHtcbiAgICBvdXRbMF0gPSBhWzBdIC8gYlswXVxuICAgIG91dFsxXSA9IGFbMV0gLyBiWzFdXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/divide.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/dot.js": /*!*************************************!*\ !*** ./node_modules/gl-vec2/dot.js ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = dot\n\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1]\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9kb3QuanM/NmJjNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL2RvdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZG90XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZG90IHByb2R1Y3Qgb2YgdHdvIHZlYzInc1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gZG90IHByb2R1Y3Qgb2YgYSBhbmQgYlxuICovXG5mdW5jdGlvbiBkb3QoYSwgYikge1xuICAgIHJldHVybiBhWzBdICogYlswXSArIGFbMV0gKiBiWzFdXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/dot.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/epsilon.js": /*!*****************************************!*\ !*** ./node_modules/gl-vec2/epsilon.js ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = 0.000001\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9lcHNpbG9uLmpzPzM0NDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9lcHNpbG9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAwLjAwMDAwMVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/epsilon.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/equals.js": /*!****************************************!*\ !*** ./node_modules/gl-vec2/equals.js ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = equals\n\nvar EPSILON = __webpack_require__(/*! ./epsilon */ \"./node_modules/gl-vec2/epsilon.js\")\n\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {vec2} a The first vector.\n * @param {vec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction equals(a, b) {\n var a0 = a[0]\n var a1 = a[1]\n var b0 = b[0]\n var b1 = b[1]\n return (Math.abs(a0 - b0) <= EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n Math.abs(a1 - b1) <= EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)))\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9lcXVhbHMuanM/MTc4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxjQUFjLG1CQUFPLENBQUMsb0RBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL2VxdWFscy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZXF1YWxzXG5cbnZhciBFUFNJTE9OID0gcmVxdWlyZSgnLi9lcHNpbG9uJylcblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSB2ZWN0b3JzIGhhdmUgYXBwcm94aW1hdGVseSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgVGhlIGZpcnN0IHZlY3Rvci5cbiAqIEBwYXJhbSB7dmVjMn0gYiBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSB2ZWN0b3JzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBlcXVhbHMoYSwgYikge1xuICB2YXIgYTAgPSBhWzBdXG4gIHZhciBhMSA9IGFbMV1cbiAgdmFyIGIwID0gYlswXVxuICB2YXIgYjEgPSBiWzFdXG4gIHJldHVybiAoTWF0aC5hYnMoYTAgLSBiMCkgPD0gRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTApLCBNYXRoLmFicyhiMCkpICYmXG4gICAgICAgICAgTWF0aC5hYnMoYTEgLSBiMSkgPD0gRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTEpLCBNYXRoLmFicyhiMSkpKVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/equals.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/exactEquals.js": /*!*********************************************!*\ !*** ./node_modules/gl-vec2/exactEquals.js ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = exactEquals\n\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {vec2} a The first vector.\n * @param {vec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1]\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9leGFjdEVxdWFscy5qcz80NTE2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvZXhhY3RFcXVhbHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGV4YWN0RXF1YWxzXG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgdmVjdG9ycyBleGFjdGx5IGhhdmUgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0pXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBhIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZnVuY3Rpb24gZXhhY3RFcXVhbHMoYSwgYikge1xuICByZXR1cm4gYVswXSA9PT0gYlswXSAmJiBhWzFdID09PSBiWzFdXG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/exactEquals.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/floor.js": /*!***************************************!*\ !*** ./node_modules/gl-vec2/floor.js ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = floor\n\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to floor\n * @returns {vec2} out\n */\nfunction floor(out, a) {\n out[0] = Math.floor(a[0])\n out[1] = Math.floor(a[1])\n return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9mbG9vci5qcz8wYWFlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL2Zsb29yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmbG9vclxuXG4vKipcbiAqIE1hdGguZmxvb3IgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gZmxvb3JcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gZmxvb3Iob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGguZmxvb3IoYVswXSlcbiAgb3V0WzFdID0gTWF0aC5mbG9vcihhWzFdKVxuICByZXR1cm4gb3V0XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/floor.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/forEach.js": /*!*****************************************!*\ !*** ./node_modules/gl-vec2/forEach.js ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = forEach\n\nvar vec = __webpack_require__(/*! ./create */ \"./node_modules/gl-vec2/create.js\")()\n\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nfunction forEach(a, stride, offset, count, fn, arg) {\n var i, l\n if(!stride) {\n stride = 2\n }\n\n if(!offset) {\n offset = 0\n }\n \n if(count) {\n l = Math.min((count * stride) + offset, a.length)\n } else {\n l = a.length\n }\n\n for(i = offset; i < l; i += stride) {\n vec[0] = a[i]\n vec[1] = a[i+1]\n fn(vec, vec, arg)\n a[i] = vec[0]\n a[i+1] = vec[1]\n }\n \n return a\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9mb3JFYWNoLmpzPzE0YTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsVUFBVSxtQkFBTyxDQUFDLGtEQUFVOztBQUU1QjtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL2ZvckVhY2guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZvckVhY2hcblxudmFyIHZlYyA9IHJlcXVpcmUoJy4vY3JlYXRlJykoKVxuXG4vKipcbiAqIFBlcmZvcm0gc29tZSBvcGVyYXRpb24gb3ZlciBhbiBhcnJheSBvZiB2ZWMycy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhIHRoZSBhcnJheSBvZiB2ZWN0b3JzIHRvIGl0ZXJhdGUgb3ZlclxuICogQHBhcmFtIHtOdW1iZXJ9IHN0cmlkZSBOdW1iZXIgb2YgZWxlbWVudHMgYmV0d2VlbiB0aGUgc3RhcnQgb2YgZWFjaCB2ZWMyLiBJZiAwIGFzc3VtZXMgdGlnaHRseSBwYWNrZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBvZmZzZXQgTnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNraXAgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXlcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb3VudCBOdW1iZXIgb2YgdmVjMnMgdG8gaXRlcmF0ZSBvdmVyLiBJZiAwIGl0ZXJhdGVzIG92ZXIgZW50aXJlIGFycmF5XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBGdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIHZlY3RvciBpbiB0aGUgYXJyYXlcbiAqIEBwYXJhbSB7T2JqZWN0fSBbYXJnXSBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIHBhc3MgdG8gZm5cbiAqIEByZXR1cm5zIHtBcnJheX0gYVxuICogQGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2goYSwgc3RyaWRlLCBvZmZzZXQsIGNvdW50LCBmbiwgYXJnKSB7XG4gICAgdmFyIGksIGxcbiAgICBpZighc3RyaWRlKSB7XG4gICAgICAgIHN0cmlkZSA9IDJcbiAgICB9XG5cbiAgICBpZighb2Zmc2V0KSB7XG4gICAgICAgIG9mZnNldCA9IDBcbiAgICB9XG4gICAgXG4gICAgaWYoY291bnQpIHtcbiAgICAgICAgbCA9IE1hdGgubWluKChjb3VudCAqIHN0cmlkZSkgKyBvZmZzZXQsIGEubGVuZ3RoKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGwgPSBhLmxlbmd0aFxuICAgIH1cblxuICAgIGZvcihpID0gb2Zmc2V0OyBpIDwgbDsgaSArPSBzdHJpZGUpIHtcbiAgICAgICAgdmVjWzBdID0gYVtpXVxuICAgICAgICB2ZWNbMV0gPSBhW2krMV1cbiAgICAgICAgZm4odmVjLCB2ZWMsIGFyZylcbiAgICAgICAgYVtpXSA9IHZlY1swXVxuICAgICAgICBhW2krMV0gPSB2ZWNbMV1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGFcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/forEach.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/fromValues.js": /*!********************************************!*\ !*** ./node_modules/gl-vec2/fromValues.js ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = fromValues\n\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\nfunction fromValues(x, y) {\n var out = new Float32Array(2)\n out[0] = x\n out[1] = y\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9mcm9tVmFsdWVzLmpzP2Q4NjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9mcm9tVmFsdWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmcm9tVmFsdWVzXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2ZWMyIGluaXRpYWxpemVkIHdpdGggdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSB4IFggY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geSBZIGNvbXBvbmVudFxuICogQHJldHVybnMge3ZlYzJ9IGEgbmV3IDJEIHZlY3RvclxuICovXG5mdW5jdGlvbiBmcm9tVmFsdWVzKHgsIHkpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEZsb2F0MzJBcnJheSgyKVxuICAgIG91dFswXSA9IHhcbiAgICBvdXRbMV0gPSB5XG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/fromValues.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/index.js": /*!***************************************!*\ !*** ./node_modules/gl-vec2/index.js ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = {\n EPSILON: __webpack_require__(/*! ./epsilon */ \"./node_modules/gl-vec2/epsilon.js\")\n , create: __webpack_require__(/*! ./create */ \"./node_modules/gl-vec2/create.js\")\n , clone: __webpack_require__(/*! ./clone */ \"./node_modules/gl-vec2/clone.js\")\n , fromValues: __webpack_require__(/*! ./fromValues */ \"./node_modules/gl-vec2/fromValues.js\")\n , copy: __webpack_require__(/*! ./copy */ \"./node_modules/gl-vec2/copy.js\")\n , set: __webpack_require__(/*! ./set */ \"./node_modules/gl-vec2/set.js\")\n , equals: __webpack_require__(/*! ./equals */ \"./node_modules/gl-vec2/equals.js\")\n , exactEquals: __webpack_require__(/*! ./exactEquals */ \"./node_modules/gl-vec2/exactEquals.js\")\n , add: __webpack_require__(/*! ./add */ \"./node_modules/gl-vec2/add.js\")\n , subtract: __webpack_require__(/*! ./subtract */ \"./node_modules/gl-vec2/subtract.js\")\n , sub: __webpack_require__(/*! ./sub */ \"./node_modules/gl-vec2/sub.js\")\n , multiply: __webpack_require__(/*! ./multiply */ \"./node_modules/gl-vec2/multiply.js\")\n , mul: __webpack_require__(/*! ./mul */ \"./node_modules/gl-vec2/mul.js\")\n , divide: __webpack_require__(/*! ./divide */ \"./node_modules/gl-vec2/divide.js\")\n , div: __webpack_require__(/*! ./div */ \"./node_modules/gl-vec2/div.js\")\n , inverse: __webpack_require__(/*! ./inverse */ \"./node_modules/gl-vec2/inverse.js\")\n , min: __webpack_require__(/*! ./min */ \"./node_modules/gl-vec2/min.js\")\n , max: __webpack_require__(/*! ./max */ \"./node_modules/gl-vec2/max.js\")\n , rotate: __webpack_require__(/*! ./rotate */ \"./node_modules/gl-vec2/rotate.js\")\n , floor: __webpack_require__(/*! ./floor */ \"./node_modules/gl-vec2/floor.js\")\n , ceil: __webpack_require__(/*! ./ceil */ \"./node_modules/gl-vec2/ceil.js\")\n , round: __webpack_require__(/*! ./round */ \"./node_modules/gl-vec2/round.js\")\n , scale: __webpack_require__(/*! ./scale */ \"./node_modules/gl-vec2/scale.js\")\n , scaleAndAdd: __webpack_require__(/*! ./scaleAndAdd */ \"./node_modules/gl-vec2/scaleAndAdd.js\")\n , distance: __webpack_require__(/*! ./distance */ \"./node_modules/gl-vec2/distance.js\")\n , dist: __webpack_require__(/*! ./dist */ \"./node_modules/gl-vec2/dist.js\")\n , squaredDistance: __webpack_require__(/*! ./squaredDistance */ \"./node_modules/gl-vec2/squaredDistance.js\")\n , sqrDist: __webpack_require__(/*! ./sqrDist */ \"./node_modules/gl-vec2/sqrDist.js\")\n , length: __webpack_require__(/*! ./length */ \"./node_modules/gl-vec2/length.js\")\n , len: __webpack_require__(/*! ./len */ \"./node_modules/gl-vec2/len.js\")\n , squaredLength: __webpack_require__(/*! ./squaredLength */ \"./node_modules/gl-vec2/squaredLength.js\")\n , sqrLen: __webpack_require__(/*! ./sqrLen */ \"./node_modules/gl-vec2/sqrLen.js\")\n , negate: __webpack_require__(/*! ./negate */ \"./node_modules/gl-vec2/negate.js\")\n , normalize: __webpack_require__(/*! ./normalize */ \"./node_modules/gl-vec2/normalize.js\")\n , dot: __webpack_require__(/*! ./dot */ \"./node_modules/gl-vec2/dot.js\")\n , cross: __webpack_require__(/*! ./cross */ \"./node_modules/gl-vec2/cross.js\")\n , lerp: __webpack_require__(/*! ./lerp */ \"./node_modules/gl-vec2/lerp.js\")\n , random: __webpack_require__(/*! ./random */ \"./node_modules/gl-vec2/random.js\")\n , transformMat2: __webpack_require__(/*! ./transformMat2 */ \"./node_modules/gl-vec2/transformMat2.js\")\n , transformMat2d: __webpack_require__(/*! ./transformMat2d */ \"./node_modules/gl-vec2/transformMat2d.js\")\n , transformMat3: __webpack_require__(/*! ./transformMat3 */ \"./node_modules/gl-vec2/transformMat3.js\")\n , transformMat4: __webpack_require__(/*! ./transformMat4 */ \"./node_modules/gl-vec2/transformMat4.js\")\n , forEach: __webpack_require__(/*! ./forEach */ \"./node_modules/gl-vec2/forEach.js\")\n , limit: __webpack_require__(/*! ./limit */ \"./node_modules/gl-vec2/limit.js\")\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9pbmRleC5qcz9lMjEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsV0FBVyxtQkFBTyxDQUFDLG9EQUFXO0FBQzlCLFlBQVksbUJBQU8sQ0FBQyxrREFBVTtBQUM5QixXQUFXLG1CQUFPLENBQUMsZ0RBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMsMERBQWM7QUFDdEMsVUFBVSxtQkFBTyxDQUFDLDhDQUFRO0FBQzFCLFNBQVMsbUJBQU8sQ0FBQyw0Q0FBTztBQUN4QixZQUFZLG1CQUFPLENBQUMsa0RBQVU7QUFDOUIsaUJBQWlCLG1CQUFPLENBQUMsNERBQWU7QUFDeEMsU0FBUyxtQkFBTyxDQUFDLDRDQUFPO0FBQ3hCLGNBQWMsbUJBQU8sQ0FBQyxzREFBWTtBQUNsQyxTQUFTLG1CQUFPLENBQUMsNENBQU87QUFDeEIsY0FBYyxtQkFBTyxDQUFDLHNEQUFZO0FBQ2xDLFNBQVMsbUJBQU8sQ0FBQyw0Q0FBTztBQUN4QixZQUFZLG1CQUFPLENBQUMsa0RBQVU7QUFDOUIsU0FBUyxtQkFBTyxDQUFDLDRDQUFPO0FBQ3hCLGFBQWEsbUJBQU8sQ0FBQyxvREFBVztBQUNoQyxTQUFTLG1CQUFPLENBQUMsNENBQU87QUFDeEIsU0FBUyxtQkFBTyxDQUFDLDRDQUFPO0FBQ3hCLFlBQVksbUJBQU8sQ0FBQyxrREFBVTtBQUM5QixXQUFXLG1CQUFPLENBQUMsZ0RBQVM7QUFDNUIsVUFBVSxtQkFBTyxDQUFDLDhDQUFRO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxnREFBUztBQUM1QixXQUFXLG1CQUFPLENBQUMsZ0RBQVM7QUFDNUIsaUJBQWlCLG1CQUFPLENBQUMsNERBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLHNEQUFZO0FBQ2xDLFVBQVUsbUJBQU8sQ0FBQyw4Q0FBUTtBQUMxQixxQkFBcUIsbUJBQU8sQ0FBQyxvRUFBbUI7QUFDaEQsYUFBYSxtQkFBTyxDQUFDLG9EQUFXO0FBQ2hDLFlBQVksbUJBQU8sQ0FBQyxrREFBVTtBQUM5QixTQUFTLG1CQUFPLENBQUMsNENBQU87QUFDeEIsbUJBQW1CLG1CQUFPLENBQUMsZ0VBQWlCO0FBQzVDLFlBQVksbUJBQU8sQ0FBQyxrREFBVTtBQUM5QixZQUFZLG1CQUFPLENBQUMsa0RBQVU7QUFDOUIsZUFBZSxtQkFBTyxDQUFDLHdEQUFhO0FBQ3BDLFNBQVMsbUJBQU8sQ0FBQyw0Q0FBTztBQUN4QixXQUFXLG1CQUFPLENBQUMsZ0RBQVM7QUFDNUIsVUFBVSxtQkFBTyxDQUFDLDhDQUFRO0FBQzFCLFlBQVksbUJBQU8sQ0FBQyxrREFBVTtBQUM5QixtQkFBbUIsbUJBQU8sQ0FBQyxnRUFBaUI7QUFDNUMsb0JBQW9CLG1CQUFPLENBQUMsa0VBQWtCO0FBQzlDLG1CQUFtQixtQkFBTyxDQUFDLGdFQUFpQjtBQUM1QyxtQkFBbUIsbUJBQU8sQ0FBQyxnRUFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLG9EQUFXO0FBQ2hDLFdBQVcsbUJBQU8sQ0FBQyxnREFBUztBQUM1QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVQU0lMT046IHJlcXVpcmUoJy4vZXBzaWxvbicpXG4gICwgY3JlYXRlOiByZXF1aXJlKCcuL2NyZWF0ZScpXG4gICwgY2xvbmU6IHJlcXVpcmUoJy4vY2xvbmUnKVxuICAsIGZyb21WYWx1ZXM6IHJlcXVpcmUoJy4vZnJvbVZhbHVlcycpXG4gICwgY29weTogcmVxdWlyZSgnLi9jb3B5JylcbiAgLCBzZXQ6IHJlcXVpcmUoJy4vc2V0JylcbiAgLCBlcXVhbHM6IHJlcXVpcmUoJy4vZXF1YWxzJylcbiAgLCBleGFjdEVxdWFsczogcmVxdWlyZSgnLi9leGFjdEVxdWFscycpXG4gICwgYWRkOiByZXF1aXJlKCcuL2FkZCcpXG4gICwgc3VidHJhY3Q6IHJlcXVpcmUoJy4vc3VidHJhY3QnKVxuICAsIHN1YjogcmVxdWlyZSgnLi9zdWInKVxuICAsIG11bHRpcGx5OiByZXF1aXJlKCcuL211bHRpcGx5JylcbiAgLCBtdWw6IHJlcXVpcmUoJy4vbXVsJylcbiAgLCBkaXZpZGU6IHJlcXVpcmUoJy4vZGl2aWRlJylcbiAgLCBkaXY6IHJlcXVpcmUoJy4vZGl2JylcbiAgLCBpbnZlcnNlOiByZXF1aXJlKCcuL2ludmVyc2UnKVxuICAsIG1pbjogcmVxdWlyZSgnLi9taW4nKVxuICAsIG1heDogcmVxdWlyZSgnLi9tYXgnKVxuICAsIHJvdGF0ZTogcmVxdWlyZSgnLi9yb3RhdGUnKVxuICAsIGZsb29yOiByZXF1aXJlKCcuL2Zsb29yJylcbiAgLCBjZWlsOiByZXF1aXJlKCcuL2NlaWwnKVxuICAsIHJvdW5kOiByZXF1aXJlKCcuL3JvdW5kJylcbiAgLCBzY2FsZTogcmVxdWlyZSgnLi9zY2FsZScpXG4gICwgc2NhbGVBbmRBZGQ6IHJlcXVpcmUoJy4vc2NhbGVBbmRBZGQnKVxuICAsIGRpc3RhbmNlOiByZXF1aXJlKCcuL2Rpc3RhbmNlJylcbiAgLCBkaXN0OiByZXF1aXJlKCcuL2Rpc3QnKVxuICAsIHNxdWFyZWREaXN0YW5jZTogcmVxdWlyZSgnLi9zcXVhcmVkRGlzdGFuY2UnKVxuICAsIHNxckRpc3Q6IHJlcXVpcmUoJy4vc3FyRGlzdCcpXG4gICwgbGVuZ3RoOiByZXF1aXJlKCcuL2xlbmd0aCcpXG4gICwgbGVuOiByZXF1aXJlKCcuL2xlbicpXG4gICwgc3F1YXJlZExlbmd0aDogcmVxdWlyZSgnLi9zcXVhcmVkTGVuZ3RoJylcbiAgLCBzcXJMZW46IHJlcXVpcmUoJy4vc3FyTGVuJylcbiAgLCBuZWdhdGU6IHJlcXVpcmUoJy4vbmVnYXRlJylcbiAgLCBub3JtYWxpemU6IHJlcXVpcmUoJy4vbm9ybWFsaXplJylcbiAgLCBkb3Q6IHJlcXVpcmUoJy4vZG90JylcbiAgLCBjcm9zczogcmVxdWlyZSgnLi9jcm9zcycpXG4gICwgbGVycDogcmVxdWlyZSgnLi9sZXJwJylcbiAgLCByYW5kb206IHJlcXVpcmUoJy4vcmFuZG9tJylcbiAgLCB0cmFuc2Zvcm1NYXQyOiByZXF1aXJlKCcuL3RyYW5zZm9ybU1hdDInKVxuICAsIHRyYW5zZm9ybU1hdDJkOiByZXF1aXJlKCcuL3RyYW5zZm9ybU1hdDJkJylcbiAgLCB0cmFuc2Zvcm1NYXQzOiByZXF1aXJlKCcuL3RyYW5zZm9ybU1hdDMnKVxuICAsIHRyYW5zZm9ybU1hdDQ6IHJlcXVpcmUoJy4vdHJhbnNmb3JtTWF0NCcpXG4gICwgZm9yRWFjaDogcmVxdWlyZSgnLi9mb3JFYWNoJylcbiAgLCBsaW1pdDogcmVxdWlyZSgnLi9saW1pdCcpXG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/index.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/inverse.js": /*!*****************************************!*\ !*** ./node_modules/gl-vec2/inverse.js ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = inverse\n\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to invert\n * @returns {vec2} out\n */\nfunction inverse(out, a) {\n out[0] = 1.0 / a[0]\n out[1] = 1.0 / a[1]\n return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9pbnZlcnNlLmpzPzQwZWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvaW52ZXJzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gaW52ZXJzZVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGludmVyc2Ugb2YgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gaW52ZXJ0XG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIGludmVyc2Uob3V0LCBhKSB7XG4gIG91dFswXSA9IDEuMCAvIGFbMF1cbiAgb3V0WzFdID0gMS4wIC8gYVsxXVxuICByZXR1cm4gb3V0XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/inverse.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/len.js": /*!*************************************!*\ !*** ./node_modules/gl-vec2/len.js ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./length */ \"./node_modules/gl-vec2/length.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9sZW4uanM/YmUyYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQyxrREFBVSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL2xlbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9sZW5ndGgnKVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/len.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/length.js": /*!****************************************!*\ !*** ./node_modules/gl-vec2/length.js ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = length\n\n/**\n * Calculates the length of a vec2\n *\n * @param {vec2} a vector to calculate length of\n * @returns {Number} length of a\n */\nfunction length(a) {\n var x = a[0],\n y = a[1]\n return Math.sqrt(x*x + y*y)\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9sZW5ndGguanM/Yzg0OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL2xlbmd0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gbGVuZ3RoXG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgbGVuZ3RoIG9mIGEgdmVjMlxuICpcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gY2FsY3VsYXRlIGxlbmd0aCBvZlxuICogQHJldHVybnMge051bWJlcn0gbGVuZ3RoIG9mIGFcbiAqL1xuZnVuY3Rpb24gbGVuZ3RoKGEpIHtcbiAgICB2YXIgeCA9IGFbMF0sXG4gICAgICAgIHkgPSBhWzFdXG4gICAgcmV0dXJuIE1hdGguc3FydCh4KnggKyB5KnkpXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/length.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/lerp.js": /*!**************************************!*\ !*** ./node_modules/gl-vec2/lerp.js ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = lerp\n\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec2} out\n */\nfunction lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1]\n out[0] = ax + t * (b[0] - ax)\n out[1] = ay + t * (b[1] - ay)\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9sZXJwLmpzP2M0MzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvbGVycC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gbGVycFxuXG4vKipcbiAqIFBlcmZvcm1zIGEgbGluZWFyIGludGVycG9sYXRpb24gYmV0d2VlbiB0d28gdmVjMidzXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHQgaW50ZXJwb2xhdGlvbiBhbW91bnQgYmV0d2VlbiB0aGUgdHdvIGlucHV0c1xuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiBsZXJwKG91dCwgYSwgYiwgdCkge1xuICAgIHZhciBheCA9IGFbMF0sXG4gICAgICAgIGF5ID0gYVsxXVxuICAgIG91dFswXSA9IGF4ICsgdCAqIChiWzBdIC0gYXgpXG4gICAgb3V0WzFdID0gYXkgKyB0ICogKGJbMV0gLSBheSlcbiAgICByZXR1cm4gb3V0XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/lerp.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/limit.js": /*!***************************************!*\ !*** ./node_modules/gl-vec2/limit.js ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = limit;\n\n/**\n * Limit the magnitude of this vector to the value used for the `max`\n * parameter.\n *\n * @param {vec2} the vector to limit\n * @param {Number} max the maximum magnitude for the vector\n * @returns {vec2} out\n */\nfunction limit(out, a, max) {\n var mSq = a[0] * a[0] + a[1] * a[1];\n\n if (mSq > max * max) {\n var n = Math.sqrt(mSq);\n out[0] = a[0] / n * max;\n out[1] = a[1] / n * max;\n } else {\n out[0] = a[0];\n out[1] = a[1];\n }\n\n return out;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9saW1pdC5qcz9lNmI5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxLQUFLO0FBQ2pCLFlBQVksT0FBTztBQUNuQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvbGltaXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGxpbWl0O1xuXG4vKipcbiAqIExpbWl0IHRoZSBtYWduaXR1ZGUgb2YgdGhpcyB2ZWN0b3IgdG8gdGhlIHZhbHVlIHVzZWQgZm9yIHRoZSBgbWF4YFxuICogcGFyYW1ldGVyLlxuICpcbiAqIEBwYXJhbSAge3ZlYzJ9IHRoZSB2ZWN0b3IgdG8gbGltaXRcbiAqIEBwYXJhbSAge051bWJlcn0gbWF4IHRoZSBtYXhpbXVtIG1hZ25pdHVkZSBmb3IgdGhlIHZlY3RvclxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiBsaW1pdChvdXQsIGEsIG1heCkge1xuICB2YXIgbVNxID0gYVswXSAqIGFbMF0gKyBhWzFdICogYVsxXTtcblxuICBpZiAobVNxID4gbWF4ICogbWF4KSB7XG4gICAgdmFyIG4gPSBNYXRoLnNxcnQobVNxKTtcbiAgICBvdXRbMF0gPSBhWzBdIC8gbiAqIG1heDtcbiAgICBvdXRbMV0gPSBhWzFdIC8gbiAqIG1heDtcbiAgfSBlbHNlIHtcbiAgICBvdXRbMF0gPSBhWzBdO1xuICAgIG91dFsxXSA9IGFbMV07XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/limit.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/max.js": /*!*************************************!*\ !*** ./node_modules/gl-vec2/max.js ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = max\n\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction max(out, a, b) {\n out[0] = Math.max(a[0], b[0])\n out[1] = Math.max(a[1], b[1])\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9tYXguanM/ZjgwZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvbWF4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBtYXhcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtYXhpbXVtIG9mIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIG1heChvdXQsIGEsIGIpIHtcbiAgICBvdXRbMF0gPSBNYXRoLm1heChhWzBdLCBiWzBdKVxuICAgIG91dFsxXSA9IE1hdGgubWF4KGFbMV0sIGJbMV0pXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/max.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/min.js": /*!*************************************!*\ !*** ./node_modules/gl-vec2/min.js ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = min\n\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction min(out, a, b) {\n out[0] = Math.min(a[0], b[0])\n out[1] = Math.min(a[1], b[1])\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9taW4uanM/NzRlNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvbWluLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBtaW5cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtaW5pbXVtIG9mIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIG1pbihvdXQsIGEsIGIpIHtcbiAgICBvdXRbMF0gPSBNYXRoLm1pbihhWzBdLCBiWzBdKVxuICAgIG91dFsxXSA9IE1hdGgubWluKGFbMV0sIGJbMV0pXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/min.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/mul.js": /*!*************************************!*\ !*** ./node_modules/gl-vec2/mul.js ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./multiply */ \"./node_modules/gl-vec2/multiply.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9tdWwuanM/MzA1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQyxzREFBWSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL211bC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9tdWx0aXBseScpXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/mul.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/multiply.js": /*!******************************************!*\ !*** ./node_modules/gl-vec2/multiply.js ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = multiply\n\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction multiply(out, a, b) {\n out[0] = a[0] * b[0]\n out[1] = a[1] * b[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9tdWx0aXBseS5qcz9iYmFhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9tdWx0aXBseS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gbXVsdGlwbHlcblxuLyoqXG4gKiBNdWx0aXBsaWVzIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIG11bHRpcGx5KG91dCwgYSwgYikge1xuICAgIG91dFswXSA9IGFbMF0gKiBiWzBdXG4gICAgb3V0WzFdID0gYVsxXSAqIGJbMV1cbiAgICByZXR1cm4gb3V0XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/multiply.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/negate.js": /*!****************************************!*\ !*** ./node_modules/gl-vec2/negate.js ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = negate\n\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to negate\n * @returns {vec2} out\n */\nfunction negate(out, a) {\n out[0] = -a[0]\n out[1] = -a[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9uZWdhdGUuanM/MDMzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9uZWdhdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IG5lZ2F0ZVxuXG4vKipcbiAqIE5lZ2F0ZXMgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gbmVnYXRlXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIG5lZ2F0ZShvdXQsIGEpIHtcbiAgICBvdXRbMF0gPSAtYVswXVxuICAgIG91dFsxXSA9IC1hWzFdXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/negate.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/normalize.js": /*!*******************************************!*\ !*** ./node_modules/gl-vec2/normalize.js ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = normalize\n\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to normalize\n * @returns {vec2} out\n */\nfunction normalize(out, a) {\n var x = a[0],\n y = a[1]\n var len = x*x + y*y\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len)\n out[0] = a[0] * len\n out[1] = a[1] * len\n }\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9ub3JtYWxpemUuanM/YjdjMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL25vcm1hbGl6ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gbm9ybWFsaXplXG5cbi8qKlxuICogTm9ybWFsaXplIGEgdmVjMlxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdmVjdG9yIHRvIG5vcm1hbGl6ZVxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiBub3JtYWxpemUob3V0LCBhKSB7XG4gICAgdmFyIHggPSBhWzBdLFxuICAgICAgICB5ID0gYVsxXVxuICAgIHZhciBsZW4gPSB4KnggKyB5KnlcbiAgICBpZiAobGVuID4gMCkge1xuICAgICAgICAvL1RPRE86IGV2YWx1YXRlIHVzZSBvZiBnbG1faW52c3FydCBoZXJlP1xuICAgICAgICBsZW4gPSAxIC8gTWF0aC5zcXJ0KGxlbilcbiAgICAgICAgb3V0WzBdID0gYVswXSAqIGxlblxuICAgICAgICBvdXRbMV0gPSBhWzFdICogbGVuXG4gICAgfVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/normalize.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/random.js": /*!****************************************!*\ !*** ./node_modules/gl-vec2/random.js ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = random\n\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\nfunction random(out, scale) {\n scale = scale || 1.0\n var r = Math.random() * 2.0 * Math.PI\n out[0] = Math.cos(r) * scale\n out[1] = Math.sin(r) * scale\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9yYW5kb20uanM/MmY2ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvcmFuZG9tLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByYW5kb21cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSByYW5kb20gdmVjdG9yIHdpdGggdGhlIGdpdmVuIHNjYWxlXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7TnVtYmVyfSBbc2NhbGVdIExlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIHZlY3Rvci4gSWYgb21taXR0ZWQsIGEgdW5pdCB2ZWN0b3Igd2lsbCBiZSByZXR1cm5lZFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiByYW5kb20ob3V0LCBzY2FsZSkge1xuICAgIHNjYWxlID0gc2NhbGUgfHwgMS4wXG4gICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpICogMi4wICogTWF0aC5QSVxuICAgIG91dFswXSA9IE1hdGguY29zKHIpICogc2NhbGVcbiAgICBvdXRbMV0gPSBNYXRoLnNpbihyKSAqIHNjYWxlXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/random.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/rotate.js": /*!****************************************!*\ !*** ./node_modules/gl-vec2/rotate.js ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = rotate\n\n/**\n * Rotates a vec2 by an angle\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to rotate\n * @param {Number} angle the angle of rotation (in radians)\n * @returns {vec2} out\n */\nfunction rotate(out, a, angle) {\n var c = Math.cos(angle),\n s = Math.sin(angle)\n var x = a[0],\n y = a[1]\n\n out[0] = x * c - y * s\n out[1] = x * s + y * c\n\n return out\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9yb3RhdGUuanM/YjIzZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL3JvdGF0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcm90YXRlXG5cbi8qKlxuICogUm90YXRlcyBhIHZlYzIgYnkgYW4gYW5nbGVcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSB2ZWN0b3IgdG8gcm90YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gYW5nbGUgdGhlIGFuZ2xlIG9mIHJvdGF0aW9uIChpbiByYWRpYW5zKVxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiByb3RhdGUob3V0LCBhLCBhbmdsZSkge1xuICB2YXIgYyA9IE1hdGguY29zKGFuZ2xlKSxcbiAgICAgIHMgPSBNYXRoLnNpbihhbmdsZSlcbiAgdmFyIHggPSBhWzBdLFxuICAgICAgeSA9IGFbMV1cblxuICBvdXRbMF0gPSB4ICogYyAtIHkgKiBzXG4gIG91dFsxXSA9IHggKiBzICsgeSAqIGNcblxuICByZXR1cm4gb3V0XG59XG5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/rotate.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/round.js": /*!***************************************!*\ !*** ./node_modules/gl-vec2/round.js ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = round\n\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to round\n * @returns {vec2} out\n */\nfunction round(out, a) {\n out[0] = Math.round(a[0])\n out[1] = Math.round(a[1])\n return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9yb3VuZC5qcz80YTQ2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL3JvdW5kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByb3VuZFxuXG4vKipcbiAqIE1hdGgucm91bmQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gcm91bmRcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gcm91bmQob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGgucm91bmQoYVswXSlcbiAgb3V0WzFdID0gTWF0aC5yb3VuZChhWzFdKVxuICByZXR1cm4gb3V0XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/round.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/scale.js": /*!***************************************!*\ !*** ./node_modules/gl-vec2/scale.js ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = scale\n\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\nfunction scale(out, a, b) {\n out[0] = a[0] * b\n out[1] = a[1] * b\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zY2FsZS5qcz8zMzJlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zY2FsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gc2NhbGVcblxuLyoqXG4gKiBTY2FsZXMgYSB2ZWMyIGJ5IGEgc2NhbGFyIG51bWJlclxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIHZlY3RvciB0byBzY2FsZVxuICogQHBhcmFtIHtOdW1iZXJ9IGIgYW1vdW50IHRvIHNjYWxlIHRoZSB2ZWN0b3IgYnlcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gc2NhbGUob3V0LCBhLCBiKSB7XG4gICAgb3V0WzBdID0gYVswXSAqIGJcbiAgICBvdXRbMV0gPSBhWzFdICogYlxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/scale.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/scaleAndAdd.js": /*!*********************************************!*\ !*** ./node_modules/gl-vec2/scaleAndAdd.js ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = scaleAndAdd\n\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\nfunction scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + (b[0] * scale)\n out[1] = a[1] + (b[1] * scale)\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zY2FsZUFuZEFkZC5qcz9mYTdmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvc2NhbGVBbmRBZGQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHNjYWxlQW5kQWRkXG5cbi8qKlxuICogQWRkcyB0d28gdmVjMidzIGFmdGVyIHNjYWxpbmcgdGhlIHNlY29uZCBvcGVyYW5kIGJ5IGEgc2NhbGFyIHZhbHVlXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHNjYWxlIHRoZSBhbW91bnQgdG8gc2NhbGUgYiBieSBiZWZvcmUgYWRkaW5nXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIHNjYWxlQW5kQWRkKG91dCwgYSwgYiwgc2NhbGUpIHtcbiAgICBvdXRbMF0gPSBhWzBdICsgKGJbMF0gKiBzY2FsZSlcbiAgICBvdXRbMV0gPSBhWzFdICsgKGJbMV0gKiBzY2FsZSlcbiAgICByZXR1cm4gb3V0XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/scaleAndAdd.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/set.js": /*!*************************************!*\ !*** ./node_modules/gl-vec2/set.js ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = set\n\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\nfunction set(out, x, y) {\n out[0] = x\n out[1] = y\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zZXQuanM/ZTA3OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvc2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBzZXRcblxuLyoqXG4gKiBTZXQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyIHRvIHRoZSBnaXZlbiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtOdW1iZXJ9IHggWCBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5IFkgY29tcG9uZW50XG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIHNldChvdXQsIHgsIHkpIHtcbiAgICBvdXRbMF0gPSB4XG4gICAgb3V0WzFdID0geVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/set.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/sqrDist.js": /*!*****************************************!*\ !*** ./node_modules/gl-vec2/sqrDist.js ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./squaredDistance */ \"./node_modules/gl-vec2/squaredDistance.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zcXJEaXN0LmpzP2E2NTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsb0VBQW1CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvc3FyRGlzdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9zcXVhcmVkRGlzdGFuY2UnKVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/sqrDist.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/sqrLen.js": /*!****************************************!*\ !*** ./node_modules/gl-vec2/sqrLen.js ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./squaredLength */ \"./node_modules/gl-vec2/squaredLength.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zcXJMZW4uanM/NjJiZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQyxnRUFBaUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zcXJMZW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vc3F1YXJlZExlbmd0aCcpXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/sqrLen.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/squaredDistance.js": /*!*************************************************!*\ !*** ./node_modules/gl-vec2/squaredDistance.js ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = squaredDistance\n\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\nfunction squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1]\n return x*x + y*y\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zcXVhcmVkRGlzdGFuY2UuanM/MGI3MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zcXVhcmVkRGlzdGFuY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHNxdWFyZWREaXN0YW5jZVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHNxdWFyZWQgZXVjbGlkaWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlYzInc1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gc3F1YXJlZCBkaXN0YW5jZSBiZXR3ZWVuIGEgYW5kIGJcbiAqL1xuZnVuY3Rpb24gc3F1YXJlZERpc3RhbmNlKGEsIGIpIHtcbiAgICB2YXIgeCA9IGJbMF0gLSBhWzBdLFxuICAgICAgICB5ID0gYlsxXSAtIGFbMV1cbiAgICByZXR1cm4geCp4ICsgeSp5XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/squaredDistance.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/squaredLength.js": /*!***********************************************!*\ !*** ./node_modules/gl-vec2/squaredLength.js ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = squaredLength\n\n/**\n * Calculates the squared length of a vec2\n *\n * @param {vec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nfunction squaredLength(a) {\n var x = a[0],\n y = a[1]\n return x*x + y*y\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zcXVhcmVkTGVuZ3RoLmpzPzQ4NjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zcXVhcmVkTGVuZ3RoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBzcXVhcmVkTGVuZ3RoXG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgc3F1YXJlZCBsZW5ndGggb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBhIHZlY3RvciB0byBjYWxjdWxhdGUgc3F1YXJlZCBsZW5ndGggb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHNxdWFyZWQgbGVuZ3RoIG9mIGFcbiAqL1xuZnVuY3Rpb24gc3F1YXJlZExlbmd0aChhKSB7XG4gICAgdmFyIHggPSBhWzBdLFxuICAgICAgICB5ID0gYVsxXVxuICAgIHJldHVybiB4KnggKyB5Knlcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/squaredLength.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/sub.js": /*!*************************************!*\ !*** ./node_modules/gl-vec2/sub.js ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./subtract */ \"./node_modules/gl-vec2/subtract.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zdWIuanM/YjhmMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQyxzREFBWSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL3N1Yi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9zdWJ0cmFjdCcpXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/sub.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/subtract.js": /*!******************************************!*\ !*** ./node_modules/gl-vec2/subtract.js ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = subtract\n\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0]\n out[1] = a[1] - b[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zdWJ0cmFjdC5qcz83MDZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi9zdWJ0cmFjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gc3VidHJhY3RcblxuLyoqXG4gKiBTdWJ0cmFjdHMgdmVjdG9yIGIgZnJvbSB2ZWN0b3IgYVxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7dmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gc3VidHJhY3Qob3V0LCBhLCBiKSB7XG4gICAgb3V0WzBdID0gYVswXSAtIGJbMF1cbiAgICBvdXRbMV0gPSBhWzFdIC0gYlsxXVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/subtract.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/transformMat2.js": /*!***********************************************!*\ !*** ./node_modules/gl-vec2/transformMat2.js ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = transformMat2\n\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat2(out, a, m) {\n var x = a[0],\n y = a[1]\n out[0] = m[0] * x + m[2] * y\n out[1] = m[1] * x + m[3] * y\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi90cmFuc2Zvcm1NYXQyLmpzP2RmNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi90cmFuc2Zvcm1NYXQyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB0cmFuc2Zvcm1NYXQyXG5cbi8qKlxuICogVHJhbnNmb3JtcyB0aGUgdmVjMiB3aXRoIGEgbWF0MlxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7bWF0Mn0gbSBtYXRyaXggdG8gdHJhbnNmb3JtIHdpdGhcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gdHJhbnNmb3JtTWF0MihvdXQsIGEsIG0pIHtcbiAgICB2YXIgeCA9IGFbMF0sXG4gICAgICAgIHkgPSBhWzFdXG4gICAgb3V0WzBdID0gbVswXSAqIHggKyBtWzJdICogeVxuICAgIG91dFsxXSA9IG1bMV0gKiB4ICsgbVszXSAqIHlcbiAgICByZXR1cm4gb3V0XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/transformMat2.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/transformMat2d.js": /*!************************************************!*\ !*** ./node_modules/gl-vec2/transformMat2d.js ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = transformMat2d\n\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2d} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1]\n out[0] = m[0] * x + m[2] * y + m[4]\n out[1] = m[1] * x + m[3] * y + m[5]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi90cmFuc2Zvcm1NYXQyZC5qcz82ZTUzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvdHJhbnNmb3JtTWF0MmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRyYW5zZm9ybU1hdDJkXG5cbi8qKlxuICogVHJhbnNmb3JtcyB0aGUgdmVjMiB3aXRoIGEgbWF0MmRcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSB2ZWN0b3IgdG8gdHJhbnNmb3JtXG4gKiBAcGFyYW0ge21hdDJkfSBtIG1hdHJpeCB0byB0cmFuc2Zvcm0gd2l0aFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm1NYXQyZChvdXQsIGEsIG0pIHtcbiAgICB2YXIgeCA9IGFbMF0sXG4gICAgICAgIHkgPSBhWzFdXG4gICAgb3V0WzBdID0gbVswXSAqIHggKyBtWzJdICogeSArIG1bNF1cbiAgICBvdXRbMV0gPSBtWzFdICogeCArIG1bM10gKiB5ICsgbVs1XVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/transformMat2d.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/transformMat3.js": /*!***********************************************!*\ !*** ./node_modules/gl-vec2/transformMat3.js ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = transformMat3\n\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat3} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat3(out, a, m) {\n var x = a[0],\n y = a[1]\n out[0] = m[0] * x + m[3] * y + m[6]\n out[1] = m[1] * x + m[4] * y + m[7]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi90cmFuc2Zvcm1NYXQzLmpzPzRmMDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9nbC12ZWMyL3RyYW5zZm9ybU1hdDMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRyYW5zZm9ybU1hdDNcblxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWMyIHdpdGggYSBtYXQzXG4gKiAzcmQgdmVjdG9yIGNvbXBvbmVudCBpcyBpbXBsaWNpdGx5ICcxJ1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7bWF0M30gbSBtYXRyaXggdG8gdHJhbnNmb3JtIHdpdGhcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gdHJhbnNmb3JtTWF0MyhvdXQsIGEsIG0pIHtcbiAgICB2YXIgeCA9IGFbMF0sXG4gICAgICAgIHkgPSBhWzFdXG4gICAgb3V0WzBdID0gbVswXSAqIHggKyBtWzNdICogeSArIG1bNl1cbiAgICBvdXRbMV0gPSBtWzFdICogeCArIG1bNF0gKiB5ICsgbVs3XVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/transformMat3.js\n"); /***/ }), /***/ "./node_modules/gl-vec2/transformMat4.js": /*!***********************************************!*\ !*** ./node_modules/gl-vec2/transformMat4.js ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = transformMat4\n\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat4(out, a, m) {\n var x = a[0], \n y = a[1]\n out[0] = m[0] * x + m[4] * y + m[12]\n out[1] = m[1] * x + m[5] * y + m[13]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZ2wtdmVjMi90cmFuc2Zvcm1NYXQ0LmpzPzAwNDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2dsLXZlYzIvdHJhbnNmb3JtTWF0NC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gdHJhbnNmb3JtTWF0NFxuXG4vKipcbiAqIFRyYW5zZm9ybXMgdGhlIHZlYzIgd2l0aCBhIG1hdDRcbiAqIDNyZCB2ZWN0b3IgY29tcG9uZW50IGlzIGltcGxpY2l0bHkgJzAnXG4gKiA0dGggdmVjdG9yIGNvbXBvbmVudCBpcyBpbXBsaWNpdGx5ICcxJ1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7bWF0NH0gbSBtYXRyaXggdG8gdHJhbnNmb3JtIHdpdGhcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gdHJhbnNmb3JtTWF0NChvdXQsIGEsIG0pIHtcbiAgICB2YXIgeCA9IGFbMF0sIFxuICAgICAgICB5ID0gYVsxXVxuICAgIG91dFswXSA9IG1bMF0gKiB4ICsgbVs0XSAqIHkgKyBtWzEyXVxuICAgIG91dFsxXSA9IG1bMV0gKiB4ICsgbVs1XSAqIHkgKyBtWzEzXVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/gl-vec2/transformMat4.js\n"); /***/ }), /***/ "./node_modules/insert-css/index.js": /*!******************************************!*\ !*** ./node_modules/insert-css/index.js ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("var containers = []; // will store container HTMLElement references\nvar styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}\n\nvar usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';\n\nfunction insertCss(css, options) {\n options = options || {};\n\n if (css === undefined) {\n throw new Error(usage);\n }\n\n var position = options.prepend === true ? 'prepend' : 'append';\n var container = options.container !== undefined ? options.container : document.querySelector('head');\n var containerId = containers.indexOf(container);\n\n // first time we see this container, create the necessary entries\n if (containerId === -1) {\n containerId = containers.push(container) - 1;\n styleElements[containerId] = {};\n }\n\n // try to get the correponding container + position styleElement, create it otherwise\n var styleElement;\n\n if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {\n styleElement = styleElements[containerId][position];\n } else {\n styleElement = styleElements[containerId][position] = createStyleElement();\n\n if (position === 'prepend') {\n container.insertBefore(styleElement, container.childNodes[0]);\n } else {\n container.appendChild(styleElement);\n }\n }\n\n // strip potential UTF-8 BOM if css was read from a file\n if (css.charCodeAt(0) === 0xFEFF) { css = css.substr(1, css.length); }\n\n // actually add the stylesheet\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText += css\n } else {\n styleElement.textContent += css;\n }\n\n return styleElement;\n};\n\nfunction createStyleElement() {\n var styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n return styleElement;\n}\n\nmodule.exports = insertCss;\nmodule.exports.insertCss = insertCss;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW5zZXJ0LWNzcy9pbmRleC5qcz8xYWVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQix1QkFBdUIsZ0JBQWdCOztBQUV2Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUMsaUNBQWlDOztBQUV4RTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnNlcnQtY3NzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvbnRhaW5lcnMgPSBbXTsgLy8gd2lsbCBzdG9yZSBjb250YWluZXIgSFRNTEVsZW1lbnQgcmVmZXJlbmNlc1xudmFyIHN0eWxlRWxlbWVudHMgPSBbXTsgLy8gd2lsbCBzdG9yZSB7cHJlcGVuZDogSFRNTEVsZW1lbnQsIGFwcGVuZDogSFRNTEVsZW1lbnR9XG5cbnZhciB1c2FnZSA9ICdpbnNlcnQtY3NzOiBZb3UgbmVlZCB0byBwcm92aWRlIGEgQ1NTIHN0cmluZy4gVXNhZ2U6IGluc2VydENzcyhjc3NTdHJpbmdbLCBvcHRpb25zXSkuJztcblxuZnVuY3Rpb24gaW5zZXJ0Q3NzKGNzcywgb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgaWYgKGNzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcih1c2FnZSk7XG4gICAgfVxuXG4gICAgdmFyIHBvc2l0aW9uID0gb3B0aW9ucy5wcmVwZW5kID09PSB0cnVlID8gJ3ByZXBlbmQnIDogJ2FwcGVuZCc7XG4gICAgdmFyIGNvbnRhaW5lciA9IG9wdGlvbnMuY29udGFpbmVyICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmNvbnRhaW5lciA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICB2YXIgY29udGFpbmVySWQgPSBjb250YWluZXJzLmluZGV4T2YoY29udGFpbmVyKTtcblxuICAgIC8vIGZpcnN0IHRpbWUgd2Ugc2VlIHRoaXMgY29udGFpbmVyLCBjcmVhdGUgdGhlIG5lY2Vzc2FyeSBlbnRyaWVzXG4gICAgaWYgKGNvbnRhaW5lcklkID09PSAtMSkge1xuICAgICAgICBjb250YWluZXJJZCA9IGNvbnRhaW5lcnMucHVzaChjb250YWluZXIpIC0gMTtcbiAgICAgICAgc3R5bGVFbGVtZW50c1tjb250YWluZXJJZF0gPSB7fTtcbiAgICB9XG5cbiAgICAvLyB0cnkgdG8gZ2V0IHRoZSBjb3JyZXBvbmRpbmcgY29udGFpbmVyICsgcG9zaXRpb24gc3R5bGVFbGVtZW50LCBjcmVhdGUgaXQgb3RoZXJ3aXNlXG4gICAgdmFyIHN0eWxlRWxlbWVudDtcblxuICAgIGlmIChzdHlsZUVsZW1lbnRzW2NvbnRhaW5lcklkXSAhPT0gdW5kZWZpbmVkICYmIHN0eWxlRWxlbWVudHNbY29udGFpbmVySWRdW3Bvc2l0aW9uXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHN0eWxlRWxlbWVudCA9IHN0eWxlRWxlbWVudHNbY29udGFpbmVySWRdW3Bvc2l0aW9uXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzdHlsZUVsZW1lbnQgPSBzdHlsZUVsZW1lbnRzW2NvbnRhaW5lcklkXVtwb3NpdGlvbl0gPSBjcmVhdGVTdHlsZUVsZW1lbnQoKTtcblxuICAgICAgICBpZiAocG9zaXRpb24gPT09ICdwcmVwZW5kJykge1xuICAgICAgICAgICAgY29udGFpbmVyLmluc2VydEJlZm9yZShzdHlsZUVsZW1lbnQsIGNvbnRhaW5lci5jaGlsZE5vZGVzWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc3RyaXAgcG90ZW50aWFsIFVURi04IEJPTSBpZiBjc3Mgd2FzIHJlYWQgZnJvbSBhIGZpbGVcbiAgICBpZiAoY3NzLmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikgeyBjc3MgPSBjc3Muc3Vic3RyKDEsIGNzcy5sZW5ndGgpOyB9XG5cbiAgICAvLyBhY3R1YWxseSBhZGQgdGhlIHN0eWxlc2hlZXRcbiAgICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICAgICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCArPSBjc3NcbiAgICB9IGVsc2Uge1xuICAgICAgICBzdHlsZUVsZW1lbnQudGV4dENvbnRlbnQgKz0gY3NzO1xuICAgIH1cblxuICAgIHJldHVybiBzdHlsZUVsZW1lbnQ7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQoKSB7XG4gICAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L2NzcycpO1xuICAgIHJldHVybiBzdHlsZUVsZW1lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0Q3NzO1xubW9kdWxlLmV4cG9ydHMuaW5zZXJ0Q3NzID0gaW5zZXJ0Q3NzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/insert-css/index.js\n"); /***/ }), /***/ "./node_modules/inversify-inject-decorators/lib/decorators.js": /*!********************************************************************!*\ !*** ./node_modules/inversify-inject-decorators/lib/decorators.js ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar INJECTION = Symbol.for(\"INJECTION\");\nfunction _proxyGetter(proto, key, resolve, doCache) {\n function getter() {\n if (doCache && !Reflect.hasMetadata(INJECTION, this, key)) {\n Reflect.defineMetadata(INJECTION, resolve(), this, key);\n }\n if (Reflect.hasMetadata(INJECTION, this, key)) {\n return Reflect.getMetadata(INJECTION, this, key);\n }\n else {\n return resolve();\n }\n }\n function setter(newVal) {\n Reflect.defineMetadata(INJECTION, newVal, this, key);\n }\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: true,\n get: getter,\n set: setter\n });\n}\nfunction makePropertyInjectDecorator(container, doCache) {\n return function (serviceIdentifier) {\n return function (proto, key) {\n var resolve = function () {\n return container.get(serviceIdentifier);\n };\n _proxyGetter(proto, key, resolve, doCache);\n };\n };\n}\nexports.makePropertyInjectDecorator = makePropertyInjectDecorator;\nfunction makePropertyInjectNamedDecorator(container, doCache) {\n return function (serviceIdentifier, named) {\n return function (proto, key) {\n var resolve = function () {\n return container.getNamed(serviceIdentifier, named);\n };\n _proxyGetter(proto, key, resolve, doCache);\n };\n };\n}\nexports.makePropertyInjectNamedDecorator = makePropertyInjectNamedDecorator;\nfunction makePropertyInjectTaggedDecorator(container, doCache) {\n return function (serviceIdentifier, key, value) {\n return function (proto, propertyName) {\n var resolve = function () {\n return container.getTagged(serviceIdentifier, key, value);\n };\n _proxyGetter(proto, propertyName, resolve, doCache);\n };\n };\n}\nexports.makePropertyInjectTaggedDecorator = makePropertyInjectTaggedDecorator;\nfunction makePropertyMultiInjectDecorator(container, doCache) {\n return function (serviceIdentifier) {\n return function (proto, key) {\n var resolve = function () {\n return container.getAll(serviceIdentifier);\n };\n _proxyGetter(proto, key, resolve, doCache);\n };\n };\n}\nexports.makePropertyMultiInjectDecorator = makePropertyMultiInjectDecorator;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5LWluamVjdC1kZWNvcmF0b3JzL2xpYi9kZWNvcmF0b3JzLmpzPzUxY2IiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9ycy9saWIvZGVjb3JhdG9ycy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIElOSkVDVElPTiA9IFN5bWJvbC5mb3IoXCJJTkpFQ1RJT05cIik7XG5mdW5jdGlvbiBfcHJveHlHZXR0ZXIocHJvdG8sIGtleSwgcmVzb2x2ZSwgZG9DYWNoZSkge1xuICAgIGZ1bmN0aW9uIGdldHRlcigpIHtcbiAgICAgICAgaWYgKGRvQ2FjaGUgJiYgIVJlZmxlY3QuaGFzTWV0YWRhdGEoSU5KRUNUSU9OLCB0aGlzLCBrZXkpKSB7XG4gICAgICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKElOSkVDVElPTiwgcmVzb2x2ZSgpLCB0aGlzLCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChSZWZsZWN0Lmhhc01ldGFkYXRhKElOSkVDVElPTiwgdGhpcywga2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoSU5KRUNUSU9OLCB0aGlzLCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzZXR0ZXIobmV3VmFsKSB7XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoSU5KRUNUSU9OLCBuZXdWYWwsIHRoaXMsIGtleSk7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywga2V5LCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBnZXR0ZXIsXG4gICAgICAgIHNldDogc2V0dGVyXG4gICAgfSk7XG59XG5mdW5jdGlvbiBtYWtlUHJvcGVydHlJbmplY3REZWNvcmF0b3IoY29udGFpbmVyLCBkb0NhY2hlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHByb3RvLCBrZXkpIHtcbiAgICAgICAgICAgIHZhciByZXNvbHZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIuZ2V0KHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBfcHJveHlHZXR0ZXIocHJvdG8sIGtleSwgcmVzb2x2ZSwgZG9DYWNoZSk7XG4gICAgICAgIH07XG4gICAgfTtcbn1cbmV4cG9ydHMubWFrZVByb3BlcnR5SW5qZWN0RGVjb3JhdG9yID0gbWFrZVByb3BlcnR5SW5qZWN0RGVjb3JhdG9yO1xuZnVuY3Rpb24gbWFrZVByb3BlcnR5SW5qZWN0TmFtZWREZWNvcmF0b3IoY29udGFpbmVyLCBkb0NhY2hlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllciwgbmFtZWQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwcm90bywga2V5KSB7XG4gICAgICAgICAgICB2YXIgcmVzb2x2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLmdldE5hbWVkKHNlcnZpY2VJZGVudGlmaWVyLCBuYW1lZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgX3Byb3h5R2V0dGVyKHByb3RvLCBrZXksIHJlc29sdmUsIGRvQ2FjaGUpO1xuICAgICAgICB9O1xuICAgIH07XG59XG5leHBvcnRzLm1ha2VQcm9wZXJ0eUluamVjdE5hbWVkRGVjb3JhdG9yID0gbWFrZVByb3BlcnR5SW5qZWN0TmFtZWREZWNvcmF0b3I7XG5mdW5jdGlvbiBtYWtlUHJvcGVydHlJbmplY3RUYWdnZWREZWNvcmF0b3IoY29udGFpbmVyLCBkb0NhY2hlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllciwga2V5LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHByb3RvLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICAgICAgICAgIHZhciByZXNvbHZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIuZ2V0VGFnZ2VkKHNlcnZpY2VJZGVudGlmaWVyLCBrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBfcHJveHlHZXR0ZXIocHJvdG8sIHByb3BlcnR5TmFtZSwgcmVzb2x2ZSwgZG9DYWNoZSk7XG4gICAgICAgIH07XG4gICAgfTtcbn1cbmV4cG9ydHMubWFrZVByb3BlcnR5SW5qZWN0VGFnZ2VkRGVjb3JhdG9yID0gbWFrZVByb3BlcnR5SW5qZWN0VGFnZ2VkRGVjb3JhdG9yO1xuZnVuY3Rpb24gbWFrZVByb3BlcnR5TXVsdGlJbmplY3REZWNvcmF0b3IoY29udGFpbmVyLCBkb0NhY2hlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHByb3RvLCBrZXkpIHtcbiAgICAgICAgICAgIHZhciByZXNvbHZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIuZ2V0QWxsKHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBfcHJveHlHZXR0ZXIocHJvdG8sIGtleSwgcmVzb2x2ZSwgZG9DYWNoZSk7XG4gICAgICAgIH07XG4gICAgfTtcbn1cbmV4cG9ydHMubWFrZVByb3BlcnR5TXVsdGlJbmplY3REZWNvcmF0b3IgPSBtYWtlUHJvcGVydHlNdWx0aUluamVjdERlY29yYXRvcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify-inject-decorators/lib/decorators.js\n"); /***/ }), /***/ "./node_modules/inversify-inject-decorators/lib/index.js": /*!***************************************************************!*\ !*** ./node_modules/inversify-inject-decorators/lib/index.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decorators_1 = __webpack_require__(/*! ./decorators */ \"./node_modules/inversify-inject-decorators/lib/decorators.js\");\nfunction getDecorators(container, doCache) {\n if (doCache === void 0) { doCache = true; }\n var lazyInject = decorators_1.makePropertyInjectDecorator(container, doCache);\n var lazyInjectNamed = decorators_1.makePropertyInjectNamedDecorator(container, doCache);\n var lazyInjectTagged = decorators_1.makePropertyInjectTaggedDecorator(container, doCache);\n var lazyMultiInject = decorators_1.makePropertyMultiInjectDecorator(container, doCache);\n return {\n lazyInject: lazyInject,\n lazyInjectNamed: lazyInjectNamed,\n lazyInjectTagged: lazyInjectTagged,\n lazyMultiInject: lazyMultiInject\n };\n}\nexports.default = getDecorators;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5LWluamVjdC1kZWNvcmF0b3JzL2xpYi9pbmRleC5qcz8wMGZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsbUJBQW1CLG1CQUFPLENBQUMsa0ZBQWM7QUFDekM7QUFDQSw2QkFBNkIsZ0JBQWdCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnZlcnNpZnktaW5qZWN0LWRlY29yYXRvcnMvbGliL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgZGVjb3JhdG9yc18xID0gcmVxdWlyZShcIi4vZGVjb3JhdG9yc1wiKTtcbmZ1bmN0aW9uIGdldERlY29yYXRvcnMoY29udGFpbmVyLCBkb0NhY2hlKSB7XG4gICAgaWYgKGRvQ2FjaGUgPT09IHZvaWQgMCkgeyBkb0NhY2hlID0gdHJ1ZTsgfVxuICAgIHZhciBsYXp5SW5qZWN0ID0gZGVjb3JhdG9yc18xLm1ha2VQcm9wZXJ0eUluamVjdERlY29yYXRvcihjb250YWluZXIsIGRvQ2FjaGUpO1xuICAgIHZhciBsYXp5SW5qZWN0TmFtZWQgPSBkZWNvcmF0b3JzXzEubWFrZVByb3BlcnR5SW5qZWN0TmFtZWREZWNvcmF0b3IoY29udGFpbmVyLCBkb0NhY2hlKTtcbiAgICB2YXIgbGF6eUluamVjdFRhZ2dlZCA9IGRlY29yYXRvcnNfMS5tYWtlUHJvcGVydHlJbmplY3RUYWdnZWREZWNvcmF0b3IoY29udGFpbmVyLCBkb0NhY2hlKTtcbiAgICB2YXIgbGF6eU11bHRpSW5qZWN0ID0gZGVjb3JhdG9yc18xLm1ha2VQcm9wZXJ0eU11bHRpSW5qZWN0RGVjb3JhdG9yKGNvbnRhaW5lciwgZG9DYWNoZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbGF6eUluamVjdDogbGF6eUluamVjdCxcbiAgICAgICAgbGF6eUluamVjdE5hbWVkOiBsYXp5SW5qZWN0TmFtZWQsXG4gICAgICAgIGxhenlJbmplY3RUYWdnZWQ6IGxhenlJbmplY3RUYWdnZWQsXG4gICAgICAgIGxhenlNdWx0aUluamVjdDogbGF6eU11bHRpSW5qZWN0XG4gICAgfTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGdldERlY29yYXRvcnM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify-inject-decorators/lib/index.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/annotation/decorator_utils.js": /*!******************************************************************!*\ !*** ./node_modules/inversify/lib/annotation/decorator_utils.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tagProperty = exports.tagParameter = exports.decorate = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nfunction tagParameter(annotationTarget, propertyName, parameterIndex, metadata) {\n var metadataKey = METADATA_KEY.TAGGED;\n _tagParameterOrProperty(metadataKey, annotationTarget, propertyName, metadata, parameterIndex);\n}\nexports.tagParameter = tagParameter;\nfunction tagProperty(annotationTarget, propertyName, metadata) {\n var metadataKey = METADATA_KEY.TAGGED_PROP;\n _tagParameterOrProperty(metadataKey, annotationTarget.constructor, propertyName, metadata);\n}\nexports.tagProperty = tagProperty;\nfunction _tagParameterOrProperty(metadataKey, annotationTarget, propertyName, metadata, parameterIndex) {\n var paramsOrPropertiesMetadata = {};\n var isParameterDecorator = (typeof parameterIndex === \"number\");\n var key = (parameterIndex !== undefined && isParameterDecorator) ? parameterIndex.toString() : propertyName;\n if (isParameterDecorator && propertyName !== undefined) {\n throw new Error(ERROR_MSGS.INVALID_DECORATOR_OPERATION);\n }\n if (Reflect.hasOwnMetadata(metadataKey, annotationTarget)) {\n paramsOrPropertiesMetadata = Reflect.getMetadata(metadataKey, annotationTarget);\n }\n var paramOrPropertyMetadata = paramsOrPropertiesMetadata[key];\n if (!Array.isArray(paramOrPropertyMetadata)) {\n paramOrPropertyMetadata = [];\n }\n else {\n for (var _i = 0, paramOrPropertyMetadata_1 = paramOrPropertyMetadata; _i < paramOrPropertyMetadata_1.length; _i++) {\n var m = paramOrPropertyMetadata_1[_i];\n if (m.key === metadata.key) {\n throw new Error(ERROR_MSGS.DUPLICATED_METADATA + \" \" + m.key.toString());\n }\n }\n }\n paramOrPropertyMetadata.push(metadata);\n paramsOrPropertiesMetadata[key] = paramOrPropertyMetadata;\n Reflect.defineMetadata(metadataKey, paramsOrPropertiesMetadata, annotationTarget);\n}\nfunction _decorate(decorators, target) {\n Reflect.decorate(decorators, target);\n}\nfunction _param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); };\n}\nfunction decorate(decorator, target, parameterIndex) {\n if (typeof parameterIndex === \"number\") {\n _decorate([_param(parameterIndex, decorator)], target);\n }\n else if (typeof parameterIndex === \"string\") {\n Reflect.decorate([decorator], target, parameterIndex);\n }\n else {\n _decorate([decorator], target);\n }\n}\nexports.decorate = decorate;\n//# sourceMappingURL=decorator_utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL2RlY29yYXRvcl91dGlscy5qcz82NmQ3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxpQkFBaUIsbUJBQU8sQ0FBQyxxRkFBeUI7QUFDbEQsbUJBQW1CLG1CQUFPLENBQUMsMkZBQTRCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkVBQTZFLHVDQUF1QztBQUNwSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLG9DQUFvQztBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvYW5ub3RhdGlvbi9kZWNvcmF0b3JfdXRpbHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudGFnUHJvcGVydHkgPSBleHBvcnRzLnRhZ1BhcmFtZXRlciA9IGV4cG9ydHMuZGVjb3JhdGUgPSB2b2lkIDA7XG52YXIgRVJST1JfTVNHUyA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvZXJyb3JfbXNnc1wiKTtcbnZhciBNRVRBREFUQV9LRVkgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL21ldGFkYXRhX2tleXNcIik7XG5mdW5jdGlvbiB0YWdQYXJhbWV0ZXIoYW5ub3RhdGlvblRhcmdldCwgcHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJJbmRleCwgbWV0YWRhdGEpIHtcbiAgICB2YXIgbWV0YWRhdGFLZXkgPSBNRVRBREFUQV9LRVkuVEFHR0VEO1xuICAgIF90YWdQYXJhbWV0ZXJPclByb3BlcnR5KG1ldGFkYXRhS2V5LCBhbm5vdGF0aW9uVGFyZ2V0LCBwcm9wZXJ0eU5hbWUsIG1ldGFkYXRhLCBwYXJhbWV0ZXJJbmRleCk7XG59XG5leHBvcnRzLnRhZ1BhcmFtZXRlciA9IHRhZ1BhcmFtZXRlcjtcbmZ1bmN0aW9uIHRhZ1Byb3BlcnR5KGFubm90YXRpb25UYXJnZXQsIHByb3BlcnR5TmFtZSwgbWV0YWRhdGEpIHtcbiAgICB2YXIgbWV0YWRhdGFLZXkgPSBNRVRBREFUQV9LRVkuVEFHR0VEX1BST1A7XG4gICAgX3RhZ1BhcmFtZXRlck9yUHJvcGVydHkobWV0YWRhdGFLZXksIGFubm90YXRpb25UYXJnZXQuY29uc3RydWN0b3IsIHByb3BlcnR5TmFtZSwgbWV0YWRhdGEpO1xufVxuZXhwb3J0cy50YWdQcm9wZXJ0eSA9IHRhZ1Byb3BlcnR5O1xuZnVuY3Rpb24gX3RhZ1BhcmFtZXRlck9yUHJvcGVydHkobWV0YWRhdGFLZXksIGFubm90YXRpb25UYXJnZXQsIHByb3BlcnR5TmFtZSwgbWV0YWRhdGEsIHBhcmFtZXRlckluZGV4KSB7XG4gICAgdmFyIHBhcmFtc09yUHJvcGVydGllc01ldGFkYXRhID0ge307XG4gICAgdmFyIGlzUGFyYW1ldGVyRGVjb3JhdG9yID0gKHR5cGVvZiBwYXJhbWV0ZXJJbmRleCA9PT0gXCJudW1iZXJcIik7XG4gICAgdmFyIGtleSA9IChwYXJhbWV0ZXJJbmRleCAhPT0gdW5kZWZpbmVkICYmIGlzUGFyYW1ldGVyRGVjb3JhdG9yKSA/IHBhcmFtZXRlckluZGV4LnRvU3RyaW5nKCkgOiBwcm9wZXJ0eU5hbWU7XG4gICAgaWYgKGlzUGFyYW1ldGVyRGVjb3JhdG9yICYmIHByb3BlcnR5TmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLklOVkFMSURfREVDT1JBVE9SX09QRVJBVElPTik7XG4gICAgfVxuICAgIGlmIChSZWZsZWN0Lmhhc093bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbm5vdGF0aW9uVGFyZ2V0KSkge1xuICAgICAgICBwYXJhbXNPclByb3BlcnRpZXNNZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIGFubm90YXRpb25UYXJnZXQpO1xuICAgIH1cbiAgICB2YXIgcGFyYW1PclByb3BlcnR5TWV0YWRhdGEgPSBwYXJhbXNPclByb3BlcnRpZXNNZXRhZGF0YVtrZXldO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwYXJhbU9yUHJvcGVydHlNZXRhZGF0YSkpIHtcbiAgICAgICAgcGFyYW1PclByb3BlcnR5TWV0YWRhdGEgPSBbXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgcGFyYW1PclByb3BlcnR5TWV0YWRhdGFfMSA9IHBhcmFtT3JQcm9wZXJ0eU1ldGFkYXRhOyBfaSA8IHBhcmFtT3JQcm9wZXJ0eU1ldGFkYXRhXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgbSA9IHBhcmFtT3JQcm9wZXJ0eU1ldGFkYXRhXzFbX2ldO1xuICAgICAgICAgICAgaWYgKG0ua2V5ID09PSBtZXRhZGF0YS5rZXkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5EVVBMSUNBVEVEX01FVEFEQVRBICsgXCIgXCIgKyBtLmtleS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXJhbU9yUHJvcGVydHlNZXRhZGF0YS5wdXNoKG1ldGFkYXRhKTtcbiAgICBwYXJhbXNPclByb3BlcnRpZXNNZXRhZGF0YVtrZXldID0gcGFyYW1PclByb3BlcnR5TWV0YWRhdGE7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShtZXRhZGF0YUtleSwgcGFyYW1zT3JQcm9wZXJ0aWVzTWV0YWRhdGEsIGFubm90YXRpb25UYXJnZXQpO1xufVxuZnVuY3Rpb24gX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCkge1xuICAgIFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0KTtcbn1cbmZ1bmN0aW9uIF9wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH07XG59XG5mdW5jdGlvbiBkZWNvcmF0ZShkZWNvcmF0b3IsIHRhcmdldCwgcGFyYW1ldGVySW5kZXgpIHtcbiAgICBpZiAodHlwZW9mIHBhcmFtZXRlckluZGV4ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIF9kZWNvcmF0ZShbX3BhcmFtKHBhcmFtZXRlckluZGV4LCBkZWNvcmF0b3IpXSwgdGFyZ2V0KTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIHBhcmFtZXRlckluZGV4ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIFJlZmxlY3QuZGVjb3JhdGUoW2RlY29yYXRvcl0sIHRhcmdldCwgcGFyYW1ldGVySW5kZXgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgX2RlY29yYXRlKFtkZWNvcmF0b3JdLCB0YXJnZXQpO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVjb3JhdGUgPSBkZWNvcmF0ZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlY29yYXRvcl91dGlscy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/annotation/decorator_utils.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/annotation/inject.js": /*!*********************************************************!*\ !*** ./node_modules/inversify/lib/annotation/inject.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.inject = exports.LazyServiceIdentifer = void 0;\nvar error_msgs_1 = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/inversify/lib/annotation/decorator_utils.js\");\nvar LazyServiceIdentifer = (function () {\n function LazyServiceIdentifer(cb) {\n this._cb = cb;\n }\n LazyServiceIdentifer.prototype.unwrap = function () {\n return this._cb();\n };\n return LazyServiceIdentifer;\n}());\nexports.LazyServiceIdentifer = LazyServiceIdentifer;\nfunction inject(serviceIdentifier) {\n return function (target, targetKey, index) {\n if (serviceIdentifier === undefined) {\n throw new Error(error_msgs_1.UNDEFINED_INJECT_ANNOTATION(target.name));\n }\n var metadata = new metadata_1.Metadata(METADATA_KEY.INJECT_TAG, serviceIdentifier);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.inject = inject;\n//# sourceMappingURL=inject.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL2luamVjdC5qcz82MjRmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxtQkFBbUIsbUJBQU8sQ0FBQyxxRkFBeUI7QUFDcEQsbUJBQW1CLG1CQUFPLENBQUMsMkZBQTRCO0FBQ3ZELGlCQUFpQixtQkFBTyxDQUFDLCtFQUFzQjtBQUMvQyx3QkFBd0IsbUJBQU8sQ0FBQyxxRkFBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvYW5ub3RhdGlvbi9pbmplY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaW5qZWN0ID0gZXhwb3J0cy5MYXp5U2VydmljZUlkZW50aWZlciA9IHZvaWQgMDtcbnZhciBlcnJvcl9tc2dzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2Vycm9yX21zZ3NcIik7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xudmFyIG1ldGFkYXRhXzEgPSByZXF1aXJlKFwiLi4vcGxhbm5pbmcvbWV0YWRhdGFcIik7XG52YXIgZGVjb3JhdG9yX3V0aWxzXzEgPSByZXF1aXJlKFwiLi9kZWNvcmF0b3JfdXRpbHNcIik7XG52YXIgTGF6eVNlcnZpY2VJZGVudGlmZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIExhenlTZXJ2aWNlSWRlbnRpZmVyKGNiKSB7XG4gICAgICAgIHRoaXMuX2NiID0gY2I7XG4gICAgfVxuICAgIExhenlTZXJ2aWNlSWRlbnRpZmVyLnByb3RvdHlwZS51bndyYXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYigpO1xuICAgIH07XG4gICAgcmV0dXJuIExhenlTZXJ2aWNlSWRlbnRpZmVyO1xufSgpKTtcbmV4cG9ydHMuTGF6eVNlcnZpY2VJZGVudGlmZXIgPSBMYXp5U2VydmljZUlkZW50aWZlcjtcbmZ1bmN0aW9uIGluamVjdChzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCB0YXJnZXRLZXksIGluZGV4KSB7XG4gICAgICAgIGlmIChzZXJ2aWNlSWRlbnRpZmllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JfbXNnc18xLlVOREVGSU5FRF9JTkpFQ1RfQU5OT1RBVElPTih0YXJnZXQubmFtZSkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtZXRhZGF0YSA9IG5ldyBtZXRhZGF0YV8xLk1ldGFkYXRhKE1FVEFEQVRBX0tFWS5JTkpFQ1RfVEFHLCBzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgIGlmICh0eXBlb2YgaW5kZXggPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGRlY29yYXRvcl91dGlsc18xLnRhZ1BhcmFtZXRlcih0YXJnZXQsIHRhcmdldEtleSwgaW5kZXgsIG1ldGFkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlY29yYXRvcl91dGlsc18xLnRhZ1Byb3BlcnR5KHRhcmdldCwgdGFyZ2V0S2V5LCBtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZXhwb3J0cy5pbmplY3QgPSBpbmplY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmplY3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/annotation/inject.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/annotation/injectable.js": /*!*************************************************************!*\ !*** ./node_modules/inversify/lib/annotation/injectable.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.injectable = void 0;\nvar ERRORS_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nfunction injectable() {\n return function (target) {\n if (Reflect.hasOwnMetadata(METADATA_KEY.PARAM_TYPES, target)) {\n throw new Error(ERRORS_MSGS.DUPLICATED_INJECTABLE_DECORATOR);\n }\n var types = Reflect.getMetadata(METADATA_KEY.DESIGN_PARAM_TYPES, target) || [];\n Reflect.defineMetadata(METADATA_KEY.PARAM_TYPES, types, target);\n return target;\n };\n}\nexports.injectable = injectable;\n//# sourceMappingURL=injectable.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL2luamVjdGFibGUuanM/NzE5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMscUZBQXlCO0FBQ25ELG1CQUFtQixtQkFBTyxDQUFDLDJGQUE0QjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL2luamVjdGFibGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaW5qZWN0YWJsZSA9IHZvaWQgMDtcbnZhciBFUlJPUlNfTVNHUyA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvZXJyb3JfbXNnc1wiKTtcbnZhciBNRVRBREFUQV9LRVkgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL21ldGFkYXRhX2tleXNcIik7XG5mdW5jdGlvbiBpbmplY3RhYmxlKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgIGlmIChSZWZsZWN0Lmhhc093bk1ldGFkYXRhKE1FVEFEQVRBX0tFWS5QQVJBTV9UWVBFUywgdGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SU19NU0dTLkRVUExJQ0FURURfSU5KRUNUQUJMRV9ERUNPUkFUT1IpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0eXBlcyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoTUVUQURBVEFfS0VZLkRFU0lHTl9QQVJBTV9UWVBFUywgdGFyZ2V0KSB8fCBbXTtcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShNRVRBREFUQV9LRVkuUEFSQU1fVFlQRVMsIHR5cGVzLCB0YXJnZXQpO1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH07XG59XG5leHBvcnRzLmluamVjdGFibGUgPSBpbmplY3RhYmxlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5qZWN0YWJsZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/annotation/injectable.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/annotation/multi_inject.js": /*!***************************************************************!*\ !*** ./node_modules/inversify/lib/annotation/multi_inject.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multiInject = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/inversify/lib/annotation/decorator_utils.js\");\nfunction multiInject(serviceIdentifier) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.MULTI_INJECT_TAG, serviceIdentifier);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.multiInject = multiInject;\n//# sourceMappingURL=multi_inject.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL211bHRpX2luamVjdC5qcz84Yzg4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxtQkFBbUIsbUJBQU8sQ0FBQywyRkFBNEI7QUFDdkQsaUJBQWlCLG1CQUFPLENBQUMsK0VBQXNCO0FBQy9DLHdCQUF3QixtQkFBTyxDQUFDLHFGQUFtQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnZlcnNpZnkvbGliL2Fubm90YXRpb24vbXVsdGlfaW5qZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm11bHRpSW5qZWN0ID0gdm9pZCAwO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbnZhciBtZXRhZGF0YV8xID0gcmVxdWlyZShcIi4uL3BsYW5uaW5nL21ldGFkYXRhXCIpO1xudmFyIGRlY29yYXRvcl91dGlsc18xID0gcmVxdWlyZShcIi4vZGVjb3JhdG9yX3V0aWxzXCIpO1xuZnVuY3Rpb24gbXVsdGlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCkge1xuICAgICAgICB2YXIgbWV0YWRhdGEgPSBuZXcgbWV0YWRhdGFfMS5NZXRhZGF0YShNRVRBREFUQV9LRVkuTVVMVElfSU5KRUNUX1RBRywgc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBkZWNvcmF0b3JfdXRpbHNfMS50YWdQYXJhbWV0ZXIodGFyZ2V0LCB0YXJnZXRLZXksIGluZGV4LCBtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWNvcmF0b3JfdXRpbHNfMS50YWdQcm9wZXJ0eSh0YXJnZXQsIHRhcmdldEtleSwgbWV0YWRhdGEpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydHMubXVsdGlJbmplY3QgPSBtdWx0aUluamVjdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW11bHRpX2luamVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/annotation/multi_inject.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/annotation/named.js": /*!********************************************************!*\ !*** ./node_modules/inversify/lib/annotation/named.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.named = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/inversify/lib/annotation/decorator_utils.js\");\nfunction named(name) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, name);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.named = named;\n//# sourceMappingURL=named.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL25hbWVkLmpzPzY3MzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLDJGQUE0QjtBQUN2RCxpQkFBaUIsbUJBQU8sQ0FBQywrRUFBc0I7QUFDL0Msd0JBQXdCLG1CQUFPLENBQUMscUZBQW1CO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvYW5ub3RhdGlvbi9uYW1lZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5uYW1lZCA9IHZvaWQgMDtcbnZhciBNRVRBREFUQV9LRVkgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL21ldGFkYXRhX2tleXNcIik7XG52YXIgbWV0YWRhdGFfMSA9IHJlcXVpcmUoXCIuLi9wbGFubmluZy9tZXRhZGF0YVwiKTtcbnZhciBkZWNvcmF0b3JfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2RlY29yYXRvcl91dGlsc1wiKTtcbmZ1bmN0aW9uIG5hbWVkKG5hbWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCkge1xuICAgICAgICB2YXIgbWV0YWRhdGEgPSBuZXcgbWV0YWRhdGFfMS5NZXRhZGF0YShNRVRBREFUQV9LRVkuTkFNRURfVEFHLCBuYW1lKTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbmRleCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgZGVjb3JhdG9yX3V0aWxzXzEudGFnUGFyYW1ldGVyKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCwgbWV0YWRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVjb3JhdG9yX3V0aWxzXzEudGFnUHJvcGVydHkodGFyZ2V0LCB0YXJnZXRLZXksIG1ldGFkYXRhKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnRzLm5hbWVkID0gbmFtZWQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1uYW1lZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/annotation/named.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/annotation/optional.js": /*!***********************************************************!*\ !*** ./node_modules/inversify/lib/annotation/optional.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.optional = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/inversify/lib/annotation/decorator_utils.js\");\nfunction optional() {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.OPTIONAL_TAG, true);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.optional = optional;\n//# sourceMappingURL=optional.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL29wdGlvbmFsLmpzPzhkOGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLDJGQUE0QjtBQUN2RCxpQkFBaUIsbUJBQU8sQ0FBQywrRUFBc0I7QUFDL0Msd0JBQXdCLG1CQUFPLENBQUMscUZBQW1CO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvYW5ub3RhdGlvbi9vcHRpb25hbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5vcHRpb25hbCA9IHZvaWQgMDtcbnZhciBNRVRBREFUQV9LRVkgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL21ldGFkYXRhX2tleXNcIik7XG52YXIgbWV0YWRhdGFfMSA9IHJlcXVpcmUoXCIuLi9wbGFubmluZy9tZXRhZGF0YVwiKTtcbnZhciBkZWNvcmF0b3JfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2RlY29yYXRvcl91dGlsc1wiKTtcbmZ1bmN0aW9uIG9wdGlvbmFsKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCB0YXJnZXRLZXksIGluZGV4KSB7XG4gICAgICAgIHZhciBtZXRhZGF0YSA9IG5ldyBtZXRhZGF0YV8xLk1ldGFkYXRhKE1FVEFEQVRBX0tFWS5PUFRJT05BTF9UQUcsIHRydWUpO1xuICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBkZWNvcmF0b3JfdXRpbHNfMS50YWdQYXJhbWV0ZXIodGFyZ2V0LCB0YXJnZXRLZXksIGluZGV4LCBtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWNvcmF0b3JfdXRpbHNfMS50YWdQcm9wZXJ0eSh0YXJnZXQsIHRhcmdldEtleSwgbWV0YWRhdGEpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydHMub3B0aW9uYWwgPSBvcHRpb25hbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9wdGlvbmFsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/annotation/optional.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/annotation/post_construct.js": /*!*****************************************************************!*\ !*** ./node_modules/inversify/lib/annotation/post_construct.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.postConstruct = void 0;\nvar ERRORS_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/inversify/lib/planning/metadata.js\");\nfunction postConstruct() {\n return function (target, propertyKey, descriptor) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.POST_CONSTRUCT, propertyKey);\n if (Reflect.hasOwnMetadata(METADATA_KEY.POST_CONSTRUCT, target.constructor)) {\n throw new Error(ERRORS_MSGS.MULTIPLE_POST_CONSTRUCT_METHODS);\n }\n Reflect.defineMetadata(METADATA_KEY.POST_CONSTRUCT, metadata, target.constructor);\n };\n}\nexports.postConstruct = postConstruct;\n//# sourceMappingURL=post_construct.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL3Bvc3RfY29uc3RydWN0LmpzPzRhNGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGtCQUFrQixtQkFBTyxDQUFDLHFGQUF5QjtBQUNuRCxtQkFBbUIsbUJBQU8sQ0FBQywyRkFBNEI7QUFDdkQsaUJBQWlCLG1CQUFPLENBQUMsK0VBQXNCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL3Bvc3RfY29uc3RydWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnBvc3RDb25zdHJ1Y3QgPSB2b2lkIDA7XG52YXIgRVJST1JTX01TR1MgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2Vycm9yX21zZ3NcIik7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xudmFyIG1ldGFkYXRhXzEgPSByZXF1aXJlKFwiLi4vcGxhbm5pbmcvbWV0YWRhdGFcIik7XG5mdW5jdGlvbiBwb3N0Q29uc3RydWN0KCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBwcm9wZXJ0eUtleSwgZGVzY3JpcHRvcikge1xuICAgICAgICB2YXIgbWV0YWRhdGEgPSBuZXcgbWV0YWRhdGFfMS5NZXRhZGF0YShNRVRBREFUQV9LRVkuUE9TVF9DT05TVFJVQ1QsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgaWYgKFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoTUVUQURBVEFfS0VZLlBPU1RfQ09OU1RSVUNULCB0YXJnZXQuY29uc3RydWN0b3IpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JTX01TR1MuTVVMVElQTEVfUE9TVF9DT05TVFJVQ1RfTUVUSE9EUyk7XG4gICAgICAgIH1cbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShNRVRBREFUQV9LRVkuUE9TVF9DT05TVFJVQ1QsIG1ldGFkYXRhLCB0YXJnZXQuY29uc3RydWN0b3IpO1xuICAgIH07XG59XG5leHBvcnRzLnBvc3RDb25zdHJ1Y3QgPSBwb3N0Q29uc3RydWN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9zdF9jb25zdHJ1Y3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/annotation/post_construct.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/annotation/tagged.js": /*!*********************************************************!*\ !*** ./node_modules/inversify/lib/annotation/tagged.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tagged = void 0;\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/inversify/lib/annotation/decorator_utils.js\");\nfunction tagged(metadataKey, metadataValue) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(metadataKey, metadataValue);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.tagged = tagged;\n//# sourceMappingURL=tagged.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL3RhZ2dlZC5qcz9kMjA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxpQkFBaUIsbUJBQU8sQ0FBQywrRUFBc0I7QUFDL0Msd0JBQXdCLG1CQUFPLENBQUMscUZBQW1CO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvYW5ub3RhdGlvbi90YWdnZWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudGFnZ2VkID0gdm9pZCAwO1xudmFyIG1ldGFkYXRhXzEgPSByZXF1aXJlKFwiLi4vcGxhbm5pbmcvbWV0YWRhdGFcIik7XG52YXIgZGVjb3JhdG9yX3V0aWxzXzEgPSByZXF1aXJlKFwiLi9kZWNvcmF0b3JfdXRpbHNcIik7XG5mdW5jdGlvbiB0YWdnZWQobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCkge1xuICAgICAgICB2YXIgbWV0YWRhdGEgPSBuZXcgbWV0YWRhdGFfMS5NZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5kZXggPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGRlY29yYXRvcl91dGlsc18xLnRhZ1BhcmFtZXRlcih0YXJnZXQsIHRhcmdldEtleSwgaW5kZXgsIG1ldGFkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlY29yYXRvcl91dGlsc18xLnRhZ1Byb3BlcnR5KHRhcmdldCwgdGFyZ2V0S2V5LCBtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZXhwb3J0cy50YWdnZWQgPSB0YWdnZWQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10YWdnZWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/annotation/tagged.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/annotation/target_name.js": /*!**************************************************************!*\ !*** ./node_modules/inversify/lib/annotation/target_name.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.targetName = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/inversify/lib/annotation/decorator_utils.js\");\nfunction targetName(name) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.NAME_TAG, name);\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n };\n}\nexports.targetName = targetName;\n//# sourceMappingURL=target_name.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL3RhcmdldF9uYW1lLmpzP2ExYTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLDJGQUE0QjtBQUN2RCxpQkFBaUIsbUJBQU8sQ0FBQywrRUFBc0I7QUFDL0Msd0JBQXdCLG1CQUFPLENBQUMscUZBQW1CO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL3RhcmdldF9uYW1lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnRhcmdldE5hbWUgPSB2b2lkIDA7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xudmFyIG1ldGFkYXRhXzEgPSByZXF1aXJlKFwiLi4vcGxhbm5pbmcvbWV0YWRhdGFcIik7XG52YXIgZGVjb3JhdG9yX3V0aWxzXzEgPSByZXF1aXJlKFwiLi9kZWNvcmF0b3JfdXRpbHNcIik7XG5mdW5jdGlvbiB0YXJnZXROYW1lKG5hbWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCkge1xuICAgICAgICB2YXIgbWV0YWRhdGEgPSBuZXcgbWV0YWRhdGFfMS5NZXRhZGF0YShNRVRBREFUQV9LRVkuTkFNRV9UQUcsIG5hbWUpO1xuICAgICAgICBkZWNvcmF0b3JfdXRpbHNfMS50YWdQYXJhbWV0ZXIodGFyZ2V0LCB0YXJnZXRLZXksIGluZGV4LCBtZXRhZGF0YSk7XG4gICAgfTtcbn1cbmV4cG9ydHMudGFyZ2V0TmFtZSA9IHRhcmdldE5hbWU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10YXJnZXRfbmFtZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/annotation/target_name.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/annotation/unmanaged.js": /*!************************************************************!*\ !*** ./node_modules/inversify/lib/annotation/unmanaged.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unmanaged = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/inversify/lib/annotation/decorator_utils.js\");\nfunction unmanaged() {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.UNMANAGED_TAG, true);\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n };\n}\nexports.unmanaged = unmanaged;\n//# sourceMappingURL=unmanaged.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL3VubWFuYWdlZC5qcz85ZjYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxtQkFBbUIsbUJBQU8sQ0FBQywyRkFBNEI7QUFDdkQsaUJBQWlCLG1CQUFPLENBQUMsK0VBQXNCO0FBQy9DLHdCQUF3QixtQkFBTyxDQUFDLHFGQUFtQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvYW5ub3RhdGlvbi91bm1hbmFnZWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudW5tYW5hZ2VkID0gdm9pZCAwO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbnZhciBtZXRhZGF0YV8xID0gcmVxdWlyZShcIi4uL3BsYW5uaW5nL21ldGFkYXRhXCIpO1xudmFyIGRlY29yYXRvcl91dGlsc18xID0gcmVxdWlyZShcIi4vZGVjb3JhdG9yX3V0aWxzXCIpO1xuZnVuY3Rpb24gdW5tYW5hZ2VkKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCB0YXJnZXRLZXksIGluZGV4KSB7XG4gICAgICAgIHZhciBtZXRhZGF0YSA9IG5ldyBtZXRhZGF0YV8xLk1ldGFkYXRhKE1FVEFEQVRBX0tFWS5VTk1BTkFHRURfVEFHLCB0cnVlKTtcbiAgICAgICAgZGVjb3JhdG9yX3V0aWxzXzEudGFnUGFyYW1ldGVyKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCwgbWV0YWRhdGEpO1xuICAgIH07XG59XG5leHBvcnRzLnVubWFuYWdlZCA9IHVubWFuYWdlZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVubWFuYWdlZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/annotation/unmanaged.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/bindings/binding.js": /*!********************************************************!*\ !*** ./node_modules/inversify/lib/bindings/binding.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Binding = void 0;\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/inversify/lib/constants/literal_types.js\");\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/inversify/lib/utils/id.js\");\nvar Binding = (function () {\n function Binding(serviceIdentifier, scope) {\n this.id = id_1.id();\n this.activated = false;\n this.serviceIdentifier = serviceIdentifier;\n this.scope = scope;\n this.type = literal_types_1.BindingTypeEnum.Invalid;\n this.constraint = function (request) { return true; };\n this.implementationType = null;\n this.cache = null;\n this.factory = null;\n this.provider = null;\n this.onActivation = null;\n this.dynamicValue = null;\n }\n Binding.prototype.clone = function () {\n var clone = new Binding(this.serviceIdentifier, this.scope);\n clone.activated = (clone.scope === literal_types_1.BindingScopeEnum.Singleton) ? this.activated : false;\n clone.implementationType = this.implementationType;\n clone.dynamicValue = this.dynamicValue;\n clone.scope = this.scope;\n clone.type = this.type;\n clone.factory = this.factory;\n clone.provider = this.provider;\n clone.constraint = this.constraint;\n clone.onActivation = this.onActivation;\n clone.cache = this.cache;\n return clone;\n };\n return Binding;\n}());\nexports.Binding = Binding;\n//# sourceMappingURL=binding.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9iaW5kaW5ncy9iaW5kaW5nLmpzPzJlMGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLHNCQUFzQixtQkFBTyxDQUFDLDJGQUE0QjtBQUMxRCxXQUFXLG1CQUFPLENBQUMsNkRBQWE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsYUFBYTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvYmluZGluZ3MvYmluZGluZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5CaW5kaW5nID0gdm9pZCAwO1xudmFyIGxpdGVyYWxfdHlwZXNfMSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbGl0ZXJhbF90eXBlc1wiKTtcbnZhciBpZF8xID0gcmVxdWlyZShcIi4uL3V0aWxzL2lkXCIpO1xudmFyIEJpbmRpbmcgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJpbmRpbmcoc2VydmljZUlkZW50aWZpZXIsIHNjb3BlKSB7XG4gICAgICAgIHRoaXMuaWQgPSBpZF8xLmlkKCk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VydmljZUlkZW50aWZpZXIgPSBzZXJ2aWNlSWRlbnRpZmllcjtcbiAgICAgICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgICAgICB0aGlzLnR5cGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkludmFsaWQ7XG4gICAgICAgIHRoaXMuY29uc3RyYWludCA9IGZ1bmN0aW9uIChyZXF1ZXN0KSB7IHJldHVybiB0cnVlOyB9O1xuICAgICAgICB0aGlzLmltcGxlbWVudGF0aW9uVHlwZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgICAgICB0aGlzLmZhY3RvcnkgPSBudWxsO1xuICAgICAgICB0aGlzLnByb3ZpZGVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5vbkFjdGl2YXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmR5bmFtaWNWYWx1ZSA9IG51bGw7XG4gICAgfVxuICAgIEJpbmRpbmcucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2xvbmUgPSBuZXcgQmluZGluZyh0aGlzLnNlcnZpY2VJZGVudGlmaWVyLCB0aGlzLnNjb3BlKTtcbiAgICAgICAgY2xvbmUuYWN0aXZhdGVkID0gKGNsb25lLnNjb3BlID09PSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1Njb3BlRW51bS5TaW5nbGV0b24pID8gdGhpcy5hY3RpdmF0ZWQgOiBmYWxzZTtcbiAgICAgICAgY2xvbmUuaW1wbGVtZW50YXRpb25UeXBlID0gdGhpcy5pbXBsZW1lbnRhdGlvblR5cGU7XG4gICAgICAgIGNsb25lLmR5bmFtaWNWYWx1ZSA9IHRoaXMuZHluYW1pY1ZhbHVlO1xuICAgICAgICBjbG9uZS5zY29wZSA9IHRoaXMuc2NvcGU7XG4gICAgICAgIGNsb25lLnR5cGUgPSB0aGlzLnR5cGU7XG4gICAgICAgIGNsb25lLmZhY3RvcnkgPSB0aGlzLmZhY3Rvcnk7XG4gICAgICAgIGNsb25lLnByb3ZpZGVyID0gdGhpcy5wcm92aWRlcjtcbiAgICAgICAgY2xvbmUuY29uc3RyYWludCA9IHRoaXMuY29uc3RyYWludDtcbiAgICAgICAgY2xvbmUub25BY3RpdmF0aW9uID0gdGhpcy5vbkFjdGl2YXRpb247XG4gICAgICAgIGNsb25lLmNhY2hlID0gdGhpcy5jYWNoZTtcbiAgICAgICAgcmV0dXJuIGNsb25lO1xuICAgIH07XG4gICAgcmV0dXJuIEJpbmRpbmc7XG59KCkpO1xuZXhwb3J0cy5CaW5kaW5nID0gQmluZGluZztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJpbmRpbmcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/bindings/binding.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/bindings/binding_count.js": /*!**************************************************************!*\ !*** ./node_modules/inversify/lib/bindings/binding_count.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingCount = void 0;\nvar BindingCount = {\n MultipleBindingsAvailable: 2,\n NoBindingsAvailable: 0,\n OnlyOneBindingAvailable: 1\n};\nexports.BindingCount = BindingCount;\n//# sourceMappingURL=binding_count.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9iaW5kaW5ncy9iaW5kaW5nX2NvdW50LmpzPzc2ODUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvYmluZGluZ3MvYmluZGluZ19jb3VudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5CaW5kaW5nQ291bnQgPSB2b2lkIDA7XG52YXIgQmluZGluZ0NvdW50ID0ge1xuICAgIE11bHRpcGxlQmluZGluZ3NBdmFpbGFibGU6IDIsXG4gICAgTm9CaW5kaW5nc0F2YWlsYWJsZTogMCxcbiAgICBPbmx5T25lQmluZGluZ0F2YWlsYWJsZTogMVxufTtcbmV4cG9ydHMuQmluZGluZ0NvdW50ID0gQmluZGluZ0NvdW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmluZGluZ19jb3VudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/bindings/binding_count.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/constants/error_msgs.js": /*!************************************************************!*\ !*** ./node_modules/inversify/lib/constants/error_msgs.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STACK_OVERFLOW = exports.CIRCULAR_DEPENDENCY_IN_FACTORY = exports.POST_CONSTRUCT_ERROR = exports.MULTIPLE_POST_CONSTRUCT_METHODS = exports.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK = exports.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE = exports.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE = exports.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT = exports.ARGUMENTS_LENGTH_MISMATCH = exports.INVALID_DECORATOR_OPERATION = exports.INVALID_TO_SELF_VALUE = exports.INVALID_FUNCTION_BINDING = exports.INVALID_MIDDLEWARE_RETURN = exports.NO_MORE_SNAPSHOTS_AVAILABLE = exports.INVALID_BINDING_TYPE = exports.NOT_IMPLEMENTED = exports.CIRCULAR_DEPENDENCY = exports.UNDEFINED_INJECT_ANNOTATION = exports.MISSING_INJECT_ANNOTATION = exports.MISSING_INJECTABLE_ANNOTATION = exports.NOT_REGISTERED = exports.CANNOT_UNBIND = exports.AMBIGUOUS_MATCH = exports.KEY_NOT_FOUND = exports.NULL_ARGUMENT = exports.DUPLICATED_METADATA = exports.DUPLICATED_INJECTABLE_DECORATOR = void 0;\nexports.DUPLICATED_INJECTABLE_DECORATOR = \"Cannot apply @injectable decorator multiple times.\";\nexports.DUPLICATED_METADATA = \"Metadata key was used more than once in a parameter:\";\nexports.NULL_ARGUMENT = \"NULL argument\";\nexports.KEY_NOT_FOUND = \"Key Not Found\";\nexports.AMBIGUOUS_MATCH = \"Ambiguous match found for serviceIdentifier:\";\nexports.CANNOT_UNBIND = \"Could not unbind serviceIdentifier:\";\nexports.NOT_REGISTERED = \"No matching bindings found for serviceIdentifier:\";\nexports.MISSING_INJECTABLE_ANNOTATION = \"Missing required @injectable annotation in:\";\nexports.MISSING_INJECT_ANNOTATION = \"Missing required @inject or @multiInject annotation in:\";\nvar UNDEFINED_INJECT_ANNOTATION = function (name) {\n return \"@inject called with undefined this could mean that the class \" + name + \" has \" +\n \"a circular dependency problem. You can use a LazyServiceIdentifer to \" +\n \"overcome this limitation.\";\n};\nexports.UNDEFINED_INJECT_ANNOTATION = UNDEFINED_INJECT_ANNOTATION;\nexports.CIRCULAR_DEPENDENCY = \"Circular dependency found:\";\nexports.NOT_IMPLEMENTED = \"Sorry, this feature is not fully implemented yet.\";\nexports.INVALID_BINDING_TYPE = \"Invalid binding type:\";\nexports.NO_MORE_SNAPSHOTS_AVAILABLE = \"No snapshot available to restore.\";\nexports.INVALID_MIDDLEWARE_RETURN = \"Invalid return type in middleware. Middleware must return!\";\nexports.INVALID_FUNCTION_BINDING = \"Value provided to function binding must be a function!\";\nexports.INVALID_TO_SELF_VALUE = \"The toSelf function can only be applied when a constructor is \" +\n \"used as service identifier\";\nexports.INVALID_DECORATOR_OPERATION = \"The @inject @multiInject @tagged and @named decorators \" +\n \"must be applied to the parameters of a class constructor or a class property.\";\nvar ARGUMENTS_LENGTH_MISMATCH = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return \"The number of constructor arguments in the derived class \" +\n (values[0] + \" must be >= than the number of constructor arguments of its base class.\");\n};\nexports.ARGUMENTS_LENGTH_MISMATCH = ARGUMENTS_LENGTH_MISMATCH;\nexports.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT = \"Invalid Container constructor argument. Container options \" +\n \"must be an object.\";\nexports.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE = \"Invalid Container option. Default scope must \" +\n \"be a string ('singleton' or 'transient').\";\nexports.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE = \"Invalid Container option. Auto bind injectable must \" +\n \"be a boolean\";\nexports.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK = \"Invalid Container option. Skip base check must \" +\n \"be a boolean\";\nexports.MULTIPLE_POST_CONSTRUCT_METHODS = \"Cannot apply @postConstruct decorator multiple times in the same class\";\nvar POST_CONSTRUCT_ERROR = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return \"@postConstruct error in class \" + values[0] + \": \" + values[1];\n};\nexports.POST_CONSTRUCT_ERROR = POST_CONSTRUCT_ERROR;\nvar CIRCULAR_DEPENDENCY_IN_FACTORY = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return \"It looks like there is a circular dependency \" +\n (\"in one of the '\" + values[0] + \"' bindings. Please investigate bindings with\") +\n (\"service identifier '\" + values[1] + \"'.\");\n};\nexports.CIRCULAR_DEPENDENCY_IN_FACTORY = CIRCULAR_DEPENDENCY_IN_FACTORY;\nexports.STACK_OVERFLOW = \"Maximum call stack size exceeded\";\n//# sourceMappingURL=error_msgs.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9jb25zdGFudHMvZXJyb3JfbXNncy5qcz8zMGUzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9jb25zdGFudHMvZXJyb3JfbXNncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5TVEFDS19PVkVSRkxPVyA9IGV4cG9ydHMuQ0lSQ1VMQVJfREVQRU5ERU5DWV9JTl9GQUNUT1JZID0gZXhwb3J0cy5QT1NUX0NPTlNUUlVDVF9FUlJPUiA9IGV4cG9ydHMuTVVMVElQTEVfUE9TVF9DT05TVFJVQ1RfTUVUSE9EUyA9IGV4cG9ydHMuQ09OVEFJTkVSX09QVElPTlNfSU5WQUxJRF9TS0lQX0JBU0VfQ0hFQ0sgPSBleHBvcnRzLkNPTlRBSU5FUl9PUFRJT05TX0lOVkFMSURfQVVUT19CSU5EX0lOSkVDVEFCTEUgPSBleHBvcnRzLkNPTlRBSU5FUl9PUFRJT05TX0lOVkFMSURfREVGQVVMVF9TQ09QRSA9IGV4cG9ydHMuQ09OVEFJTkVSX09QVElPTlNfTVVTVF9CRV9BTl9PQkpFQ1QgPSBleHBvcnRzLkFSR1VNRU5UU19MRU5HVEhfTUlTTUFUQ0ggPSBleHBvcnRzLklOVkFMSURfREVDT1JBVE9SX09QRVJBVElPTiA9IGV4cG9ydHMuSU5WQUxJRF9UT19TRUxGX1ZBTFVFID0gZXhwb3J0cy5JTlZBTElEX0ZVTkNUSU9OX0JJTkRJTkcgPSBleHBvcnRzLklOVkFMSURfTUlERExFV0FSRV9SRVRVUk4gPSBleHBvcnRzLk5PX01PUkVfU05BUFNIT1RTX0FWQUlMQUJMRSA9IGV4cG9ydHMuSU5WQUxJRF9CSU5ESU5HX1RZUEUgPSBleHBvcnRzLk5PVF9JTVBMRU1FTlRFRCA9IGV4cG9ydHMuQ0lSQ1VMQVJfREVQRU5ERU5DWSA9IGV4cG9ydHMuVU5ERUZJTkVEX0lOSkVDVF9BTk5PVEFUSU9OID0gZXhwb3J0cy5NSVNTSU5HX0lOSkVDVF9BTk5PVEFUSU9OID0gZXhwb3J0cy5NSVNTSU5HX0lOSkVDVEFCTEVfQU5OT1RBVElPTiA9IGV4cG9ydHMuTk9UX1JFR0lTVEVSRUQgPSBleHBvcnRzLkNBTk5PVF9VTkJJTkQgPSBleHBvcnRzLkFNQklHVU9VU19NQVRDSCA9IGV4cG9ydHMuS0VZX05PVF9GT1VORCA9IGV4cG9ydHMuTlVMTF9BUkdVTUVOVCA9IGV4cG9ydHMuRFVQTElDQVRFRF9NRVRBREFUQSA9IGV4cG9ydHMuRFVQTElDQVRFRF9JTkpFQ1RBQkxFX0RFQ09SQVRPUiA9IHZvaWQgMDtcbmV4cG9ydHMuRFVQTElDQVRFRF9JTkpFQ1RBQkxFX0RFQ09SQVRPUiA9IFwiQ2Fubm90IGFwcGx5IEBpbmplY3RhYmxlIGRlY29yYXRvciBtdWx0aXBsZSB0aW1lcy5cIjtcbmV4cG9ydHMuRFVQTElDQVRFRF9NRVRBREFUQSA9IFwiTWV0YWRhdGEga2V5IHdhcyB1c2VkIG1vcmUgdGhhbiBvbmNlIGluIGEgcGFyYW1ldGVyOlwiO1xuZXhwb3J0cy5OVUxMX0FSR1VNRU5UID0gXCJOVUxMIGFyZ3VtZW50XCI7XG5leHBvcnRzLktFWV9OT1RfRk9VTkQgPSBcIktleSBOb3QgRm91bmRcIjtcbmV4cG9ydHMuQU1CSUdVT1VTX01BVENIID0gXCJBbWJpZ3VvdXMgbWF0Y2ggZm91bmQgZm9yIHNlcnZpY2VJZGVudGlmaWVyOlwiO1xuZXhwb3J0cy5DQU5OT1RfVU5CSU5EID0gXCJDb3VsZCBub3QgdW5iaW5kIHNlcnZpY2VJZGVudGlmaWVyOlwiO1xuZXhwb3J0cy5OT1RfUkVHSVNURVJFRCA9IFwiTm8gbWF0Y2hpbmcgYmluZGluZ3MgZm91bmQgZm9yIHNlcnZpY2VJZGVudGlmaWVyOlwiO1xuZXhwb3J0cy5NSVNTSU5HX0lOSkVDVEFCTEVfQU5OT1RBVElPTiA9IFwiTWlzc2luZyByZXF1aXJlZCBAaW5qZWN0YWJsZSBhbm5vdGF0aW9uIGluOlwiO1xuZXhwb3J0cy5NSVNTSU5HX0lOSkVDVF9BTk5PVEFUSU9OID0gXCJNaXNzaW5nIHJlcXVpcmVkIEBpbmplY3Qgb3IgQG11bHRpSW5qZWN0IGFubm90YXRpb24gaW46XCI7XG52YXIgVU5ERUZJTkVEX0lOSkVDVF9BTk5PVEFUSU9OID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gXCJAaW5qZWN0IGNhbGxlZCB3aXRoIHVuZGVmaW5lZCB0aGlzIGNvdWxkIG1lYW4gdGhhdCB0aGUgY2xhc3MgXCIgKyBuYW1lICsgXCIgaGFzIFwiICtcbiAgICAgICAgXCJhIGNpcmN1bGFyIGRlcGVuZGVuY3kgcHJvYmxlbS4gWW91IGNhbiB1c2UgYSBMYXp5U2VydmljZUlkZW50aWZlciB0byAgXCIgK1xuICAgICAgICBcIm92ZXJjb21lIHRoaXMgbGltaXRhdGlvbi5cIjtcbn07XG5leHBvcnRzLlVOREVGSU5FRF9JTkpFQ1RfQU5OT1RBVElPTiA9IFVOREVGSU5FRF9JTkpFQ1RfQU5OT1RBVElPTjtcbmV4cG9ydHMuQ0lSQ1VMQVJfREVQRU5ERU5DWSA9IFwiQ2lyY3VsYXIgZGVwZW5kZW5jeSBmb3VuZDpcIjtcbmV4cG9ydHMuTk9UX0lNUExFTUVOVEVEID0gXCJTb3JyeSwgdGhpcyBmZWF0dXJlIGlzIG5vdCBmdWxseSBpbXBsZW1lbnRlZCB5ZXQuXCI7XG5leHBvcnRzLklOVkFMSURfQklORElOR19UWVBFID0gXCJJbnZhbGlkIGJpbmRpbmcgdHlwZTpcIjtcbmV4cG9ydHMuTk9fTU9SRV9TTkFQU0hPVFNfQVZBSUxBQkxFID0gXCJObyBzbmFwc2hvdCBhdmFpbGFibGUgdG8gcmVzdG9yZS5cIjtcbmV4cG9ydHMuSU5WQUxJRF9NSURETEVXQVJFX1JFVFVSTiA9IFwiSW52YWxpZCByZXR1cm4gdHlwZSBpbiBtaWRkbGV3YXJlLiBNaWRkbGV3YXJlIG11c3QgcmV0dXJuIVwiO1xuZXhwb3J0cy5JTlZBTElEX0ZVTkNUSU9OX0JJTkRJTkcgPSBcIlZhbHVlIHByb3ZpZGVkIHRvIGZ1bmN0aW9uIGJpbmRpbmcgbXVzdCBiZSBhIGZ1bmN0aW9uIVwiO1xuZXhwb3J0cy5JTlZBTElEX1RPX1NFTEZfVkFMVUUgPSBcIlRoZSB0b1NlbGYgZnVuY3Rpb24gY2FuIG9ubHkgYmUgYXBwbGllZCB3aGVuIGEgY29uc3RydWN0b3IgaXMgXCIgK1xuICAgIFwidXNlZCBhcyBzZXJ2aWNlIGlkZW50aWZpZXJcIjtcbmV4cG9ydHMuSU5WQUxJRF9ERUNPUkFUT1JfT1BFUkFUSU9OID0gXCJUaGUgQGluamVjdCBAbXVsdGlJbmplY3QgQHRhZ2dlZCBhbmQgQG5hbWVkIGRlY29yYXRvcnMgXCIgK1xuICAgIFwibXVzdCBiZSBhcHBsaWVkIHRvIHRoZSBwYXJhbWV0ZXJzIG9mIGEgY2xhc3MgY29uc3RydWN0b3Igb3IgYSBjbGFzcyBwcm9wZXJ0eS5cIjtcbnZhciBBUkdVTUVOVFNfTEVOR1RIX01JU01BVENIID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YWx1ZXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIFwiVGhlIG51bWJlciBvZiBjb25zdHJ1Y3RvciBhcmd1bWVudHMgaW4gdGhlIGRlcml2ZWQgY2xhc3MgXCIgK1xuICAgICAgICAodmFsdWVzWzBdICsgXCIgbXVzdCBiZSA+PSB0aGFuIHRoZSBudW1iZXIgb2YgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mIGl0cyBiYXNlIGNsYXNzLlwiKTtcbn07XG5leHBvcnRzLkFSR1VNRU5UU19MRU5HVEhfTUlTTUFUQ0ggPSBBUkdVTUVOVFNfTEVOR1RIX01JU01BVENIO1xuZXhwb3J0cy5DT05UQUlORVJfT1BUSU9OU19NVVNUX0JFX0FOX09CSkVDVCA9IFwiSW52YWxpZCBDb250YWluZXIgY29uc3RydWN0b3IgYXJndW1lbnQuIENvbnRhaW5lciBvcHRpb25zIFwiICtcbiAgICBcIm11c3QgYmUgYW4gb2JqZWN0LlwiO1xuZXhwb3J0cy5DT05UQUlORVJfT1BUSU9OU19JTlZBTElEX0RFRkFVTFRfU0NPUEUgPSBcIkludmFsaWQgQ29udGFpbmVyIG9wdGlvbi4gRGVmYXVsdCBzY29wZSBtdXN0IFwiICtcbiAgICBcImJlIGEgc3RyaW5nICgnc2luZ2xldG9uJyBvciAndHJhbnNpZW50JykuXCI7XG5leHBvcnRzLkNPTlRBSU5FUl9PUFRJT05TX0lOVkFMSURfQVVUT19CSU5EX0lOSkVDVEFCTEUgPSBcIkludmFsaWQgQ29udGFpbmVyIG9wdGlvbi4gQXV0byBiaW5kIGluamVjdGFibGUgbXVzdCBcIiArXG4gICAgXCJiZSBhIGJvb2xlYW5cIjtcbmV4cG9ydHMuQ09OVEFJTkVSX09QVElPTlNfSU5WQUxJRF9TS0lQX0JBU0VfQ0hFQ0sgPSBcIkludmFsaWQgQ29udGFpbmVyIG9wdGlvbi4gU2tpcCBiYXNlIGNoZWNrIG11c3QgXCIgK1xuICAgIFwiYmUgYSBib29sZWFuXCI7XG5leHBvcnRzLk1VTFRJUExFX1BPU1RfQ09OU1RSVUNUX01FVEhPRFMgPSBcIkNhbm5vdCBhcHBseSBAcG9zdENvbnN0cnVjdCBkZWNvcmF0b3IgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHNhbWUgY2xhc3NcIjtcbnZhciBQT1NUX0NPTlNUUlVDVF9FUlJPUiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFsdWVzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHJldHVybiBcIkBwb3N0Q29uc3RydWN0IGVycm9yIGluIGNsYXNzIFwiICsgdmFsdWVzWzBdICsgXCI6IFwiICsgdmFsdWVzWzFdO1xufTtcbmV4cG9ydHMuUE9TVF9DT05TVFJVQ1RfRVJST1IgPSBQT1NUX0NPTlNUUlVDVF9FUlJPUjtcbnZhciBDSVJDVUxBUl9ERVBFTkRFTkNZX0lOX0ZBQ1RPUlkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhbHVlc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gXCJJdCBsb29rcyBsaWtlIHRoZXJlIGlzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBcIiArXG4gICAgICAgIChcImluIG9uZSBvZiB0aGUgJ1wiICsgdmFsdWVzWzBdICsgXCInIGJpbmRpbmdzLiBQbGVhc2UgaW52ZXN0aWdhdGUgYmluZGluZ3Mgd2l0aFwiKSArXG4gICAgICAgIChcInNlcnZpY2UgaWRlbnRpZmllciAnXCIgKyB2YWx1ZXNbMV0gKyBcIicuXCIpO1xufTtcbmV4cG9ydHMuQ0lSQ1VMQVJfREVQRU5ERU5DWV9JTl9GQUNUT1JZID0gQ0lSQ1VMQVJfREVQRU5ERU5DWV9JTl9GQUNUT1JZO1xuZXhwb3J0cy5TVEFDS19PVkVSRkxPVyA9IFwiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVycm9yX21zZ3MuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/constants/error_msgs.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/constants/literal_types.js": /*!***************************************************************!*\ !*** ./node_modules/inversify/lib/constants/literal_types.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TargetTypeEnum = exports.BindingTypeEnum = exports.BindingScopeEnum = void 0;\nvar BindingScopeEnum = {\n Request: \"Request\",\n Singleton: \"Singleton\",\n Transient: \"Transient\"\n};\nexports.BindingScopeEnum = BindingScopeEnum;\nvar BindingTypeEnum = {\n ConstantValue: \"ConstantValue\",\n Constructor: \"Constructor\",\n DynamicValue: \"DynamicValue\",\n Factory: \"Factory\",\n Function: \"Function\",\n Instance: \"Instance\",\n Invalid: \"Invalid\",\n Provider: \"Provider\"\n};\nexports.BindingTypeEnum = BindingTypeEnum;\nvar TargetTypeEnum = {\n ClassProperty: \"ClassProperty\",\n ConstructorArgument: \"ConstructorArgument\",\n Variable: \"Variable\"\n};\nexports.TargetTypeEnum = TargetTypeEnum;\n//# sourceMappingURL=literal_types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9jb25zdGFudHMvbGl0ZXJhbF90eXBlcy5qcz8xNTVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9jb25zdGFudHMvbGl0ZXJhbF90eXBlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UYXJnZXRUeXBlRW51bSA9IGV4cG9ydHMuQmluZGluZ1R5cGVFbnVtID0gZXhwb3J0cy5CaW5kaW5nU2NvcGVFbnVtID0gdm9pZCAwO1xudmFyIEJpbmRpbmdTY29wZUVudW0gPSB7XG4gICAgUmVxdWVzdDogXCJSZXF1ZXN0XCIsXG4gICAgU2luZ2xldG9uOiBcIlNpbmdsZXRvblwiLFxuICAgIFRyYW5zaWVudDogXCJUcmFuc2llbnRcIlxufTtcbmV4cG9ydHMuQmluZGluZ1Njb3BlRW51bSA9IEJpbmRpbmdTY29wZUVudW07XG52YXIgQmluZGluZ1R5cGVFbnVtID0ge1xuICAgIENvbnN0YW50VmFsdWU6IFwiQ29uc3RhbnRWYWx1ZVwiLFxuICAgIENvbnN0cnVjdG9yOiBcIkNvbnN0cnVjdG9yXCIsXG4gICAgRHluYW1pY1ZhbHVlOiBcIkR5bmFtaWNWYWx1ZVwiLFxuICAgIEZhY3Rvcnk6IFwiRmFjdG9yeVwiLFxuICAgIEZ1bmN0aW9uOiBcIkZ1bmN0aW9uXCIsXG4gICAgSW5zdGFuY2U6IFwiSW5zdGFuY2VcIixcbiAgICBJbnZhbGlkOiBcIkludmFsaWRcIixcbiAgICBQcm92aWRlcjogXCJQcm92aWRlclwiXG59O1xuZXhwb3J0cy5CaW5kaW5nVHlwZUVudW0gPSBCaW5kaW5nVHlwZUVudW07XG52YXIgVGFyZ2V0VHlwZUVudW0gPSB7XG4gICAgQ2xhc3NQcm9wZXJ0eTogXCJDbGFzc1Byb3BlcnR5XCIsXG4gICAgQ29uc3RydWN0b3JBcmd1bWVudDogXCJDb25zdHJ1Y3RvckFyZ3VtZW50XCIsXG4gICAgVmFyaWFibGU6IFwiVmFyaWFibGVcIlxufTtcbmV4cG9ydHMuVGFyZ2V0VHlwZUVudW0gPSBUYXJnZXRUeXBlRW51bTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpdGVyYWxfdHlwZXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/constants/literal_types.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/constants/metadata_keys.js": /*!***************************************************************!*\ !*** ./node_modules/inversify/lib/constants/metadata_keys.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NON_CUSTOM_TAG_KEYS = exports.POST_CONSTRUCT = exports.DESIGN_PARAM_TYPES = exports.PARAM_TYPES = exports.TAGGED_PROP = exports.TAGGED = exports.MULTI_INJECT_TAG = exports.INJECT_TAG = exports.OPTIONAL_TAG = exports.UNMANAGED_TAG = exports.NAME_TAG = exports.NAMED_TAG = void 0;\nexports.NAMED_TAG = \"named\";\nexports.NAME_TAG = \"name\";\nexports.UNMANAGED_TAG = \"unmanaged\";\nexports.OPTIONAL_TAG = \"optional\";\nexports.INJECT_TAG = \"inject\";\nexports.MULTI_INJECT_TAG = \"multi_inject\";\nexports.TAGGED = \"inversify:tagged\";\nexports.TAGGED_PROP = \"inversify:tagged_props\";\nexports.PARAM_TYPES = \"inversify:paramtypes\";\nexports.DESIGN_PARAM_TYPES = \"design:paramtypes\";\nexports.POST_CONSTRUCT = \"post_construct\";\nfunction getNonCustomTagKeys() {\n return [\n exports.INJECT_TAG,\n exports.MULTI_INJECT_TAG,\n exports.NAME_TAG,\n exports.UNMANAGED_TAG,\n exports.NAMED_TAG,\n exports.OPTIONAL_TAG,\n ];\n}\nexports.NON_CUSTOM_TAG_KEYS = getNonCustomTagKeys();\n//# sourceMappingURL=metadata_keys.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9jb25zdGFudHMvbWV0YWRhdGFfa2V5cy5qcz9jNWY0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvY29uc3RhbnRzL21ldGFkYXRhX2tleXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTk9OX0NVU1RPTV9UQUdfS0VZUyA9IGV4cG9ydHMuUE9TVF9DT05TVFJVQ1QgPSBleHBvcnRzLkRFU0lHTl9QQVJBTV9UWVBFUyA9IGV4cG9ydHMuUEFSQU1fVFlQRVMgPSBleHBvcnRzLlRBR0dFRF9QUk9QID0gZXhwb3J0cy5UQUdHRUQgPSBleHBvcnRzLk1VTFRJX0lOSkVDVF9UQUcgPSBleHBvcnRzLklOSkVDVF9UQUcgPSBleHBvcnRzLk9QVElPTkFMX1RBRyA9IGV4cG9ydHMuVU5NQU5BR0VEX1RBRyA9IGV4cG9ydHMuTkFNRV9UQUcgPSBleHBvcnRzLk5BTUVEX1RBRyA9IHZvaWQgMDtcbmV4cG9ydHMuTkFNRURfVEFHID0gXCJuYW1lZFwiO1xuZXhwb3J0cy5OQU1FX1RBRyA9IFwibmFtZVwiO1xuZXhwb3J0cy5VTk1BTkFHRURfVEFHID0gXCJ1bm1hbmFnZWRcIjtcbmV4cG9ydHMuT1BUSU9OQUxfVEFHID0gXCJvcHRpb25hbFwiO1xuZXhwb3J0cy5JTkpFQ1RfVEFHID0gXCJpbmplY3RcIjtcbmV4cG9ydHMuTVVMVElfSU5KRUNUX1RBRyA9IFwibXVsdGlfaW5qZWN0XCI7XG5leHBvcnRzLlRBR0dFRCA9IFwiaW52ZXJzaWZ5OnRhZ2dlZFwiO1xuZXhwb3J0cy5UQUdHRURfUFJPUCA9IFwiaW52ZXJzaWZ5OnRhZ2dlZF9wcm9wc1wiO1xuZXhwb3J0cy5QQVJBTV9UWVBFUyA9IFwiaW52ZXJzaWZ5OnBhcmFtdHlwZXNcIjtcbmV4cG9ydHMuREVTSUdOX1BBUkFNX1RZUEVTID0gXCJkZXNpZ246cGFyYW10eXBlc1wiO1xuZXhwb3J0cy5QT1NUX0NPTlNUUlVDVCA9IFwicG9zdF9jb25zdHJ1Y3RcIjtcbmZ1bmN0aW9uIGdldE5vbkN1c3RvbVRhZ0tleXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZXhwb3J0cy5JTkpFQ1RfVEFHLFxuICAgICAgICBleHBvcnRzLk1VTFRJX0lOSkVDVF9UQUcsXG4gICAgICAgIGV4cG9ydHMuTkFNRV9UQUcsXG4gICAgICAgIGV4cG9ydHMuVU5NQU5BR0VEX1RBRyxcbiAgICAgICAgZXhwb3J0cy5OQU1FRF9UQUcsXG4gICAgICAgIGV4cG9ydHMuT1BUSU9OQUxfVEFHLFxuICAgIF07XG59XG5leHBvcnRzLk5PTl9DVVNUT01fVEFHX0tFWVMgPSBnZXROb25DdXN0b21UYWdLZXlzKCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZXRhZGF0YV9rZXlzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/constants/metadata_keys.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/container/container.js": /*!***********************************************************!*\ !*** ./node_modules/inversify/lib/container/container.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Container = void 0;\nvar binding_1 = __webpack_require__(/*! ../bindings/binding */ \"./node_modules/inversify/lib/bindings/binding.js\");\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/inversify/lib/constants/literal_types.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar metadata_reader_1 = __webpack_require__(/*! ../planning/metadata_reader */ \"./node_modules/inversify/lib/planning/metadata_reader.js\");\nvar planner_1 = __webpack_require__(/*! ../planning/planner */ \"./node_modules/inversify/lib/planning/planner.js\");\nvar resolver_1 = __webpack_require__(/*! ../resolution/resolver */ \"./node_modules/inversify/lib/resolution/resolver.js\");\nvar binding_to_syntax_1 = __webpack_require__(/*! ../syntax/binding_to_syntax */ \"./node_modules/inversify/lib/syntax/binding_to_syntax.js\");\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/inversify/lib/utils/id.js\");\nvar serialization_1 = __webpack_require__(/*! ../utils/serialization */ \"./node_modules/inversify/lib/utils/serialization.js\");\nvar container_snapshot_1 = __webpack_require__(/*! ./container_snapshot */ \"./node_modules/inversify/lib/container/container_snapshot.js\");\nvar lookup_1 = __webpack_require__(/*! ./lookup */ \"./node_modules/inversify/lib/container/lookup.js\");\nvar Container = (function () {\n function Container(containerOptions) {\n this._appliedMiddleware = [];\n var options = containerOptions || {};\n if (typeof options !== \"object\") {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT);\n }\n if (options.defaultScope === undefined) {\n options.defaultScope = literal_types_1.BindingScopeEnum.Transient;\n }\n else if (options.defaultScope !== literal_types_1.BindingScopeEnum.Singleton &&\n options.defaultScope !== literal_types_1.BindingScopeEnum.Transient &&\n options.defaultScope !== literal_types_1.BindingScopeEnum.Request) {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE);\n }\n if (options.autoBindInjectable === undefined) {\n options.autoBindInjectable = false;\n }\n else if (typeof options.autoBindInjectable !== \"boolean\") {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE);\n }\n if (options.skipBaseClassChecks === undefined) {\n options.skipBaseClassChecks = false;\n }\n else if (typeof options.skipBaseClassChecks !== \"boolean\") {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK);\n }\n this.options = {\n autoBindInjectable: options.autoBindInjectable,\n defaultScope: options.defaultScope,\n skipBaseClassChecks: options.skipBaseClassChecks\n };\n this.id = id_1.id();\n this._bindingDictionary = new lookup_1.Lookup();\n this._snapshots = [];\n this._middleware = null;\n this.parent = null;\n this._metadataReader = new metadata_reader_1.MetadataReader();\n }\n Container.merge = function (container1, container2) {\n var container3 = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n container3[_i - 2] = arguments[_i];\n }\n var container = new Container();\n var targetContainers = __spreadArray([container1, container2], container3).map(function (targetContainer) { return planner_1.getBindingDictionary(targetContainer); });\n var bindingDictionary = planner_1.getBindingDictionary(container);\n function copyDictionary(origin, destination) {\n origin.traverse(function (key, value) {\n value.forEach(function (binding) {\n destination.add(binding.serviceIdentifier, binding.clone());\n });\n });\n }\n targetContainers.forEach(function (targetBindingDictionary) {\n copyDictionary(targetBindingDictionary, bindingDictionary);\n });\n return container;\n };\n Container.prototype.load = function () {\n var modules = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n modules[_i] = arguments[_i];\n }\n var getHelpers = this._getContainerModuleHelpersFactory();\n for (var _a = 0, modules_1 = modules; _a < modules_1.length; _a++) {\n var currentModule = modules_1[_a];\n var containerModuleHelpers = getHelpers(currentModule.id);\n currentModule.registry(containerModuleHelpers.bindFunction, containerModuleHelpers.unbindFunction, containerModuleHelpers.isboundFunction, containerModuleHelpers.rebindFunction);\n }\n };\n Container.prototype.loadAsync = function () {\n var modules = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n modules[_i] = arguments[_i];\n }\n return __awaiter(this, void 0, void 0, function () {\n var getHelpers, _a, modules_2, currentModule, containerModuleHelpers;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n getHelpers = this._getContainerModuleHelpersFactory();\n _a = 0, modules_2 = modules;\n _b.label = 1;\n case 1:\n if (!(_a < modules_2.length)) return [3, 4];\n currentModule = modules_2[_a];\n containerModuleHelpers = getHelpers(currentModule.id);\n return [4, currentModule.registry(containerModuleHelpers.bindFunction, containerModuleHelpers.unbindFunction, containerModuleHelpers.isboundFunction, containerModuleHelpers.rebindFunction)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n _a++;\n return [3, 1];\n case 4: return [2];\n }\n });\n });\n };\n Container.prototype.unload = function () {\n var _this = this;\n var modules = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n modules[_i] = arguments[_i];\n }\n var conditionFactory = function (expected) { return function (item) {\n return item.moduleId === expected;\n }; };\n modules.forEach(function (module) {\n var condition = conditionFactory(module.id);\n _this._bindingDictionary.removeByCondition(condition);\n });\n };\n Container.prototype.bind = function (serviceIdentifier) {\n var scope = this.options.defaultScope || literal_types_1.BindingScopeEnum.Transient;\n var binding = new binding_1.Binding(serviceIdentifier, scope);\n this._bindingDictionary.add(serviceIdentifier, binding);\n return new binding_to_syntax_1.BindingToSyntax(binding);\n };\n Container.prototype.rebind = function (serviceIdentifier) {\n this.unbind(serviceIdentifier);\n return this.bind(serviceIdentifier);\n };\n Container.prototype.unbind = function (serviceIdentifier) {\n try {\n this._bindingDictionary.remove(serviceIdentifier);\n }\n catch (e) {\n throw new Error(ERROR_MSGS.CANNOT_UNBIND + \" \" + serialization_1.getServiceIdentifierAsString(serviceIdentifier));\n }\n };\n Container.prototype.unbindAll = function () {\n this._bindingDictionary = new lookup_1.Lookup();\n };\n Container.prototype.isBound = function (serviceIdentifier) {\n var bound = this._bindingDictionary.hasKey(serviceIdentifier);\n if (!bound && this.parent) {\n bound = this.parent.isBound(serviceIdentifier);\n }\n return bound;\n };\n Container.prototype.isBoundNamed = function (serviceIdentifier, named) {\n return this.isBoundTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n };\n Container.prototype.isBoundTagged = function (serviceIdentifier, key, value) {\n var bound = false;\n if (this._bindingDictionary.hasKey(serviceIdentifier)) {\n var bindings = this._bindingDictionary.get(serviceIdentifier);\n var request_1 = planner_1.createMockRequest(this, serviceIdentifier, key, value);\n bound = bindings.some(function (b) { return b.constraint(request_1); });\n }\n if (!bound && this.parent) {\n bound = this.parent.isBoundTagged(serviceIdentifier, key, value);\n }\n return bound;\n };\n Container.prototype.snapshot = function () {\n this._snapshots.push(container_snapshot_1.ContainerSnapshot.of(this._bindingDictionary.clone(), this._middleware));\n };\n Container.prototype.restore = function () {\n var snapshot = this._snapshots.pop();\n if (snapshot === undefined) {\n throw new Error(ERROR_MSGS.NO_MORE_SNAPSHOTS_AVAILABLE);\n }\n this._bindingDictionary = snapshot.bindings;\n this._middleware = snapshot.middleware;\n };\n Container.prototype.createChild = function (containerOptions) {\n var child = new Container(containerOptions || this.options);\n child.parent = this;\n return child;\n };\n Container.prototype.applyMiddleware = function () {\n var middlewares = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n middlewares[_i] = arguments[_i];\n }\n this._appliedMiddleware = this._appliedMiddleware.concat(middlewares);\n var initial = (this._middleware) ? this._middleware : this._planAndResolve();\n this._middleware = middlewares.reduce(function (prev, curr) { return curr(prev); }, initial);\n };\n Container.prototype.applyCustomMetadataReader = function (metadataReader) {\n this._metadataReader = metadataReader;\n };\n Container.prototype.get = function (serviceIdentifier) {\n return this._get(false, false, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier);\n };\n Container.prototype.getTagged = function (serviceIdentifier, key, value) {\n return this._get(false, false, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier, key, value);\n };\n Container.prototype.getNamed = function (serviceIdentifier, named) {\n return this.getTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n };\n Container.prototype.getAll = function (serviceIdentifier) {\n return this._get(true, true, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier);\n };\n Container.prototype.getAllTagged = function (serviceIdentifier, key, value) {\n return this._get(false, true, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier, key, value);\n };\n Container.prototype.getAllNamed = function (serviceIdentifier, named) {\n return this.getAllTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n };\n Container.prototype.resolve = function (constructorFunction) {\n var tempContainer = this.createChild();\n tempContainer.bind(constructorFunction).toSelf();\n this._appliedMiddleware.forEach(function (m) {\n tempContainer.applyMiddleware(m);\n });\n return tempContainer.get(constructorFunction);\n };\n Container.prototype._getContainerModuleHelpersFactory = function () {\n var _this = this;\n var setModuleId = function (bindingToSyntax, moduleId) {\n bindingToSyntax._binding.moduleId = moduleId;\n };\n var getBindFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _bind = _this.bind.bind(_this);\n var bindingToSyntax = _bind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax;\n };\n };\n var getUnbindFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _unbind = _this.unbind.bind(_this);\n _unbind(serviceIdentifier);\n };\n };\n var getIsboundFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _isBound = _this.isBound.bind(_this);\n return _isBound(serviceIdentifier);\n };\n };\n var getRebindFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _rebind = _this.rebind.bind(_this);\n var bindingToSyntax = _rebind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax;\n };\n };\n return function (mId) { return ({\n bindFunction: getBindFunction(mId),\n isboundFunction: getIsboundFunction(mId),\n rebindFunction: getRebindFunction(mId),\n unbindFunction: getUnbindFunction(mId)\n }); };\n };\n Container.prototype._get = function (avoidConstraints, isMultiInject, targetType, serviceIdentifier, key, value) {\n var result = null;\n var defaultArgs = {\n avoidConstraints: avoidConstraints,\n contextInterceptor: function (context) { return context; },\n isMultiInject: isMultiInject,\n key: key,\n serviceIdentifier: serviceIdentifier,\n targetType: targetType,\n value: value\n };\n if (this._middleware) {\n result = this._middleware(defaultArgs);\n if (result === undefined || result === null) {\n throw new Error(ERROR_MSGS.INVALID_MIDDLEWARE_RETURN);\n }\n }\n else {\n result = this._planAndResolve()(defaultArgs);\n }\n return result;\n };\n Container.prototype._planAndResolve = function () {\n var _this = this;\n return function (args) {\n var context = planner_1.plan(_this._metadataReader, _this, args.isMultiInject, args.targetType, args.serviceIdentifier, args.key, args.value, args.avoidConstraints);\n context = args.contextInterceptor(context);\n var result = resolver_1.resolve(context);\n return result;\n };\n };\n return Container;\n}());\nexports.Container = Container;\n//# sourceMappingURL=container.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9jb250YWluZXIvY29udGFpbmVyLmpzP2Y0NTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBLDJCQUEyQiwrREFBK0QsZ0JBQWdCLEVBQUUsRUFBRTtBQUM5RztBQUNBLG1DQUFtQyxNQUFNLDZCQUE2QixFQUFFLFlBQVksV0FBVyxFQUFFO0FBQ2pHLGtDQUFrQyxNQUFNLGlDQUFpQyxFQUFFLFlBQVksV0FBVyxFQUFFO0FBQ3BHLCtCQUErQixxRkFBcUY7QUFDcEg7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGFBQWEsNkJBQTZCLDBCQUEwQixhQUFhLEVBQUUscUJBQXFCO0FBQ3hHLGdCQUFnQixxREFBcUQsb0VBQW9FLGFBQWEsRUFBRTtBQUN4SixzQkFBc0Isc0JBQXNCLHFCQUFxQixHQUFHO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QyxrQ0FBa0MsU0FBUztBQUMzQyxrQ0FBa0MsV0FBVyxVQUFVO0FBQ3ZELHlDQUF5QyxjQUFjO0FBQ3ZEO0FBQ0EsNkdBQTZHLE9BQU8sVUFBVTtBQUM5SCxnRkFBZ0YsaUJBQWlCLE9BQU87QUFDeEcsd0RBQXdELGdCQUFnQixRQUFRLE9BQU87QUFDdkYsOENBQThDLGdCQUFnQixnQkFBZ0IsT0FBTztBQUNyRjtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsU0FBUyxZQUFZLGFBQWEsT0FBTyxFQUFFLFVBQVUsV0FBVztBQUNoRSxtQ0FBbUMsU0FBUztBQUM1QztBQUNBO0FBQ0E7QUFDQSxvREFBb0QsUUFBUTtBQUM1RDtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLDZFQUFxQjtBQUM3QyxpQkFBaUIsbUJBQU8sQ0FBQyxxRkFBeUI7QUFDbEQsc0JBQXNCLG1CQUFPLENBQUMsMkZBQTRCO0FBQzFELG1CQUFtQixtQkFBTyxDQUFDLDJGQUE0QjtBQUN2RCx3QkFBd0IsbUJBQU8sQ0FBQyw2RkFBNkI7QUFDN0QsZ0JBQWdCLG1CQUFPLENBQUMsNkVBQXFCO0FBQzdDLGlCQUFpQixtQkFBTyxDQUFDLG1GQUF3QjtBQUNqRCwwQkFBMEIsbUJBQU8sQ0FBQyw2RkFBNkI7QUFDL0QsV0FBVyxtQkFBTyxDQUFDLDZEQUFhO0FBQ2hDLHNCQUFzQixtQkFBTyxDQUFDLG1GQUF3QjtBQUN0RCwyQkFBMkIsbUJBQU8sQ0FBQywwRkFBc0I7QUFDekQsZUFBZSxtQkFBTyxDQUFDLGtFQUFVO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLG1IQUFtSCx3REFBd0QsRUFBRTtBQUM3SztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qyx1QkFBdUI7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BEO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxnQ0FBZ0MsRUFBRTtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUVBQXFFLG1CQUFtQixFQUFFO0FBQzFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxnQkFBZ0IsRUFBRTtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnZlcnNpZnkvbGliL2NvbnRhaW5lci9jb250YWluZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGlsID0gZnJvbS5sZW5ndGgsIGogPSB0by5sZW5ndGg7IGkgPCBpbDsgaSsrLCBqKyspXG4gICAgICAgIHRvW2pdID0gZnJvbVtpXTtcbiAgICByZXR1cm4gdG87XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db250YWluZXIgPSB2b2lkIDA7XG52YXIgYmluZGluZ18xID0gcmVxdWlyZShcIi4uL2JpbmRpbmdzL2JpbmRpbmdcIik7XG52YXIgRVJST1JfTVNHUyA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvZXJyb3JfbXNnc1wiKTtcbnZhciBsaXRlcmFsX3R5cGVzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2xpdGVyYWxfdHlwZXNcIik7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xudmFyIG1ldGFkYXRhX3JlYWRlcl8xID0gcmVxdWlyZShcIi4uL3BsYW5uaW5nL21ldGFkYXRhX3JlYWRlclwiKTtcbnZhciBwbGFubmVyXzEgPSByZXF1aXJlKFwiLi4vcGxhbm5pbmcvcGxhbm5lclwiKTtcbnZhciByZXNvbHZlcl8xID0gcmVxdWlyZShcIi4uL3Jlc29sdXRpb24vcmVzb2x2ZXJcIik7XG52YXIgYmluZGluZ190b19zeW50YXhfMSA9IHJlcXVpcmUoXCIuLi9zeW50YXgvYmluZGluZ190b19zeW50YXhcIik7XG52YXIgaWRfMSA9IHJlcXVpcmUoXCIuLi91dGlscy9pZFwiKTtcbnZhciBzZXJpYWxpemF0aW9uXzEgPSByZXF1aXJlKFwiLi4vdXRpbHMvc2VyaWFsaXphdGlvblwiKTtcbnZhciBjb250YWluZXJfc25hcHNob3RfMSA9IHJlcXVpcmUoXCIuL2NvbnRhaW5lcl9zbmFwc2hvdFwiKTtcbnZhciBsb29rdXBfMSA9IHJlcXVpcmUoXCIuL2xvb2t1cFwiKTtcbnZhciBDb250YWluZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENvbnRhaW5lcihjb250YWluZXJPcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX2FwcGxpZWRNaWRkbGV3YXJlID0gW107XG4gICAgICAgIHZhciBvcHRpb25zID0gY29udGFpbmVyT3B0aW9ucyB8fCB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJcIiArIEVSUk9SX01TR1MuQ09OVEFJTkVSX09QVElPTlNfTVVTVF9CRV9BTl9PQkpFQ1QpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmRlZmF1bHRTY29wZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBvcHRpb25zLmRlZmF1bHRTY29wZSA9IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nU2NvcGVFbnVtLlRyYW5zaWVudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zLmRlZmF1bHRTY29wZSAhPT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uU2luZ2xldG9uICYmXG4gICAgICAgICAgICBvcHRpb25zLmRlZmF1bHRTY29wZSAhPT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uVHJhbnNpZW50ICYmXG4gICAgICAgICAgICBvcHRpb25zLmRlZmF1bHRTY29wZSAhPT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uUmVxdWVzdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiXCIgKyBFUlJPUl9NU0dTLkNPTlRBSU5FUl9PUFRJT05TX0lOVkFMSURfREVGQVVMVF9TQ09QRSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuYXV0b0JpbmRJbmplY3RhYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuYXV0b0JpbmRJbmplY3RhYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b0JpbmRJbmplY3RhYmxlICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiXCIgKyBFUlJPUl9NU0dTLkNPTlRBSU5FUl9PUFRJT05TX0lOVkFMSURfQVVUT19CSU5EX0lOSkVDVEFCTEUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLnNraXBCYXNlQ2xhc3NDaGVja3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3B0aW9ucy5za2lwQmFzZUNsYXNzQ2hlY2tzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMuc2tpcEJhc2VDbGFzc0NoZWNrcyAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlwiICsgRVJST1JfTVNHUy5DT05UQUlORVJfT1BUSU9OU19JTlZBTElEX1NLSVBfQkFTRV9DSEVDSyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgICAgICAgYXV0b0JpbmRJbmplY3RhYmxlOiBvcHRpb25zLmF1dG9CaW5kSW5qZWN0YWJsZSxcbiAgICAgICAgICAgIGRlZmF1bHRTY29wZTogb3B0aW9ucy5kZWZhdWx0U2NvcGUsXG4gICAgICAgICAgICBza2lwQmFzZUNsYXNzQ2hlY2tzOiBvcHRpb25zLnNraXBCYXNlQ2xhc3NDaGVja3NcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5pZCA9IGlkXzEuaWQoKTtcbiAgICAgICAgdGhpcy5fYmluZGluZ0RpY3Rpb25hcnkgPSBuZXcgbG9va3VwXzEuTG9va3VwKCk7XG4gICAgICAgIHRoaXMuX3NuYXBzaG90cyA9IFtdO1xuICAgICAgICB0aGlzLl9taWRkbGV3YXJlID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICAgICAgICB0aGlzLl9tZXRhZGF0YVJlYWRlciA9IG5ldyBtZXRhZGF0YV9yZWFkZXJfMS5NZXRhZGF0YVJlYWRlcigpO1xuICAgIH1cbiAgICBDb250YWluZXIubWVyZ2UgPSBmdW5jdGlvbiAoY29udGFpbmVyMSwgY29udGFpbmVyMikge1xuICAgICAgICB2YXIgY29udGFpbmVyMyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgY29udGFpbmVyM1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29udGFpbmVyID0gbmV3IENvbnRhaW5lcigpO1xuICAgICAgICB2YXIgdGFyZ2V0Q29udGFpbmVycyA9IF9fc3ByZWFkQXJyYXkoW2NvbnRhaW5lcjEsIGNvbnRhaW5lcjJdLCBjb250YWluZXIzKS5tYXAoZnVuY3Rpb24gKHRhcmdldENvbnRhaW5lcikgeyByZXR1cm4gcGxhbm5lcl8xLmdldEJpbmRpbmdEaWN0aW9uYXJ5KHRhcmdldENvbnRhaW5lcik7IH0pO1xuICAgICAgICB2YXIgYmluZGluZ0RpY3Rpb25hcnkgPSBwbGFubmVyXzEuZ2V0QmluZGluZ0RpY3Rpb25hcnkoY29udGFpbmVyKTtcbiAgICAgICAgZnVuY3Rpb24gY29weURpY3Rpb25hcnkob3JpZ2luLCBkZXN0aW5hdGlvbikge1xuICAgICAgICAgICAgb3JpZ2luLnRyYXZlcnNlKGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbiAoYmluZGluZykge1xuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5hZGQoYmluZGluZy5zZXJ2aWNlSWRlbnRpZmllciwgYmluZGluZy5jbG9uZSgpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRhcmdldENvbnRhaW5lcnMuZm9yRWFjaChmdW5jdGlvbiAodGFyZ2V0QmluZGluZ0RpY3Rpb25hcnkpIHtcbiAgICAgICAgICAgIGNvcHlEaWN0aW9uYXJ5KHRhcmdldEJpbmRpbmdEaWN0aW9uYXJ5LCBiaW5kaW5nRGljdGlvbmFyeSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29udGFpbmVyO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbW9kdWxlcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgbW9kdWxlc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBnZXRIZWxwZXJzID0gdGhpcy5fZ2V0Q29udGFpbmVyTW9kdWxlSGVscGVyc0ZhY3RvcnkoKTtcbiAgICAgICAgZm9yICh2YXIgX2EgPSAwLCBtb2R1bGVzXzEgPSBtb2R1bGVzOyBfYSA8IG1vZHVsZXNfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgICAgIHZhciBjdXJyZW50TW9kdWxlID0gbW9kdWxlc18xW19hXTtcbiAgICAgICAgICAgIHZhciBjb250YWluZXJNb2R1bGVIZWxwZXJzID0gZ2V0SGVscGVycyhjdXJyZW50TW9kdWxlLmlkKTtcbiAgICAgICAgICAgIGN1cnJlbnRNb2R1bGUucmVnaXN0cnkoY29udGFpbmVyTW9kdWxlSGVscGVycy5iaW5kRnVuY3Rpb24sIGNvbnRhaW5lck1vZHVsZUhlbHBlcnMudW5iaW5kRnVuY3Rpb24sIGNvbnRhaW5lck1vZHVsZUhlbHBlcnMuaXNib3VuZEZ1bmN0aW9uLCBjb250YWluZXJNb2R1bGVIZWxwZXJzLnJlYmluZEZ1bmN0aW9uKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5sb2FkQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBtb2R1bGVzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBtb2R1bGVzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGdldEhlbHBlcnMsIF9hLCBtb2R1bGVzXzIsIGN1cnJlbnRNb2R1bGUsIGNvbnRhaW5lck1vZHVsZUhlbHBlcnM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYi5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRIZWxwZXJzID0gdGhpcy5fZ2V0Q29udGFpbmVyTW9kdWxlSGVscGVyc0ZhY3RvcnkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hID0gMCwgbW9kdWxlc18yID0gbW9kdWxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoX2EgPCBtb2R1bGVzXzIubGVuZ3RoKSkgcmV0dXJuIFszLCA0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb2R1bGUgPSBtb2R1bGVzXzJbX2FdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyTW9kdWxlSGVscGVycyA9IGdldEhlbHBlcnMoY3VycmVudE1vZHVsZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQsIGN1cnJlbnRNb2R1bGUucmVnaXN0cnkoY29udGFpbmVyTW9kdWxlSGVscGVycy5iaW5kRnVuY3Rpb24sIGNvbnRhaW5lck1vZHVsZUhlbHBlcnMudW5iaW5kRnVuY3Rpb24sIGNvbnRhaW5lck1vZHVsZUhlbHBlcnMuaXNib3VuZEZ1bmN0aW9uLCBjb250YWluZXJNb2R1bGVIZWxwZXJzLnJlYmluZEZ1bmN0aW9uKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2ErKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLnVubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIG1vZHVsZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIG1vZHVsZXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29uZGl0aW9uRmFjdG9yeSA9IGZ1bmN0aW9uIChleHBlY3RlZCkgeyByZXR1cm4gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLm1vZHVsZUlkID09PSBleHBlY3RlZDtcbiAgICAgICAgfTsgfTtcbiAgICAgICAgbW9kdWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChtb2R1bGUpIHtcbiAgICAgICAgICAgIHZhciBjb25kaXRpb24gPSBjb25kaXRpb25GYWN0b3J5KG1vZHVsZS5pZCk7XG4gICAgICAgICAgICBfdGhpcy5fYmluZGluZ0RpY3Rpb25hcnkucmVtb3ZlQnlDb25kaXRpb24oY29uZGl0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgdmFyIHNjb3BlID0gdGhpcy5vcHRpb25zLmRlZmF1bHRTY29wZSB8fCBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1Njb3BlRW51bS5UcmFuc2llbnQ7XG4gICAgICAgIHZhciBiaW5kaW5nID0gbmV3IGJpbmRpbmdfMS5CaW5kaW5nKHNlcnZpY2VJZGVudGlmaWVyLCBzY29wZSk7XG4gICAgICAgIHRoaXMuX2JpbmRpbmdEaWN0aW9uYXJ5LmFkZChzZXJ2aWNlSWRlbnRpZmllciwgYmluZGluZyk7XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ190b19zeW50YXhfMS5CaW5kaW5nVG9TeW50YXgoYmluZGluZyk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLnJlYmluZCA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgICAgICB0aGlzLnVuYmluZChzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgIHJldHVybiB0aGlzLmJpbmQoc2VydmljZUlkZW50aWZpZXIpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS51bmJpbmQgPSBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuX2JpbmRpbmdEaWN0aW9uYXJ5LnJlbW92ZShzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLkNBTk5PVF9VTkJJTkQgKyBcIiBcIiArIHNlcmlhbGl6YXRpb25fMS5nZXRTZXJ2aWNlSWRlbnRpZmllckFzU3RyaW5nKHNlcnZpY2VJZGVudGlmaWVyKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUudW5iaW5kQWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nRGljdGlvbmFyeSA9IG5ldyBsb29rdXBfMS5Mb29rdXAoKTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuaXNCb3VuZCA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgICAgICB2YXIgYm91bmQgPSB0aGlzLl9iaW5kaW5nRGljdGlvbmFyeS5oYXNLZXkoc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICBpZiAoIWJvdW5kICYmIHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICBib3VuZCA9IHRoaXMucGFyZW50LmlzQm91bmQoc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBib3VuZDtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuaXNCb3VuZE5hbWVkID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyLCBuYW1lZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0JvdW5kVGFnZ2VkKHNlcnZpY2VJZGVudGlmaWVyLCBNRVRBREFUQV9LRVkuTkFNRURfVEFHLCBuYW1lZCk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmlzQm91bmRUYWdnZWQgPSBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIGJvdW5kID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLl9iaW5kaW5nRGljdGlvbmFyeS5oYXNLZXkoc2VydmljZUlkZW50aWZpZXIpKSB7XG4gICAgICAgICAgICB2YXIgYmluZGluZ3MgPSB0aGlzLl9iaW5kaW5nRGljdGlvbmFyeS5nZXQoc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgdmFyIHJlcXVlc3RfMSA9IHBsYW5uZXJfMS5jcmVhdGVNb2NrUmVxdWVzdCh0aGlzLCBzZXJ2aWNlSWRlbnRpZmllciwga2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICBib3VuZCA9IGJpbmRpbmdzLnNvbWUoZnVuY3Rpb24gKGIpIHsgcmV0dXJuIGIuY29uc3RyYWludChyZXF1ZXN0XzEpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWJvdW5kICYmIHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICBib3VuZCA9IHRoaXMucGFyZW50LmlzQm91bmRUYWdnZWQoc2VydmljZUlkZW50aWZpZXIsIGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBib3VuZDtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuc25hcHNob3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX3NuYXBzaG90cy5wdXNoKGNvbnRhaW5lcl9zbmFwc2hvdF8xLkNvbnRhaW5lclNuYXBzaG90Lm9mKHRoaXMuX2JpbmRpbmdEaWN0aW9uYXJ5LmNsb25lKCksIHRoaXMuX21pZGRsZXdhcmUpKTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUucmVzdG9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNuYXBzaG90ID0gdGhpcy5fc25hcHNob3RzLnBvcCgpO1xuICAgICAgICBpZiAoc25hcHNob3QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX01TR1MuTk9fTU9SRV9TTkFQU0hPVFNfQVZBSUxBQkxFKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9iaW5kaW5nRGljdGlvbmFyeSA9IHNuYXBzaG90LmJpbmRpbmdzO1xuICAgICAgICB0aGlzLl9taWRkbGV3YXJlID0gc25hcHNob3QubWlkZGxld2FyZTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuY3JlYXRlQ2hpbGQgPSBmdW5jdGlvbiAoY29udGFpbmVyT3B0aW9ucykge1xuICAgICAgICB2YXIgY2hpbGQgPSBuZXcgQ29udGFpbmVyKGNvbnRhaW5lck9wdGlvbnMgfHwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgY2hpbGQucGFyZW50ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5hcHBseU1pZGRsZXdhcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBtaWRkbGV3YXJlcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgbWlkZGxld2FyZXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hcHBsaWVkTWlkZGxld2FyZSA9IHRoaXMuX2FwcGxpZWRNaWRkbGV3YXJlLmNvbmNhdChtaWRkbGV3YXJlcyk7XG4gICAgICAgIHZhciBpbml0aWFsID0gKHRoaXMuX21pZGRsZXdhcmUpID8gdGhpcy5fbWlkZGxld2FyZSA6IHRoaXMuX3BsYW5BbmRSZXNvbHZlKCk7XG4gICAgICAgIHRoaXMuX21pZGRsZXdhcmUgPSBtaWRkbGV3YXJlcy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cnIpIHsgcmV0dXJuIGN1cnIocHJldik7IH0sIGluaXRpYWwpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5hcHBseUN1c3RvbU1ldGFkYXRhUmVhZGVyID0gZnVuY3Rpb24gKG1ldGFkYXRhUmVhZGVyKSB7XG4gICAgICAgIHRoaXMuX21ldGFkYXRhUmVhZGVyID0gbWV0YWRhdGFSZWFkZXI7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0KGZhbHNlLCBmYWxzZSwgbGl0ZXJhbF90eXBlc18xLlRhcmdldFR5cGVFbnVtLlZhcmlhYmxlLCBzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldFRhZ2dlZCA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllciwga2V5LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0KGZhbHNlLCBmYWxzZSwgbGl0ZXJhbF90eXBlc18xLlRhcmdldFR5cGVFbnVtLlZhcmlhYmxlLCBzZXJ2aWNlSWRlbnRpZmllciwga2V5LCB2YWx1ZSk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldE5hbWVkID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyLCBuYW1lZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUYWdnZWQoc2VydmljZUlkZW50aWZpZXIsIE1FVEFEQVRBX0tFWS5OQU1FRF9UQUcsIG5hbWVkKTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0QWxsID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXQodHJ1ZSwgdHJ1ZSwgbGl0ZXJhbF90eXBlc18xLlRhcmdldFR5cGVFbnVtLlZhcmlhYmxlLCBzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldEFsbFRhZ2dlZCA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllciwga2V5LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0KGZhbHNlLCB0cnVlLCBsaXRlcmFsX3R5cGVzXzEuVGFyZ2V0VHlwZUVudW0uVmFyaWFibGUsIHNlcnZpY2VJZGVudGlmaWVyLCBrZXksIHZhbHVlKTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0QWxsTmFtZWQgPSBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIsIG5hbWVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFsbFRhZ2dlZChzZXJ2aWNlSWRlbnRpZmllciwgTUVUQURBVEFfS0VZLk5BTUVEX1RBRywgbmFtZWQpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gKGNvbnN0cnVjdG9yRnVuY3Rpb24pIHtcbiAgICAgICAgdmFyIHRlbXBDb250YWluZXIgPSB0aGlzLmNyZWF0ZUNoaWxkKCk7XG4gICAgICAgIHRlbXBDb250YWluZXIuYmluZChjb25zdHJ1Y3RvckZ1bmN0aW9uKS50b1NlbGYoKTtcbiAgICAgICAgdGhpcy5fYXBwbGllZE1pZGRsZXdhcmUuZm9yRWFjaChmdW5jdGlvbiAobSkge1xuICAgICAgICAgICAgdGVtcENvbnRhaW5lci5hcHBseU1pZGRsZXdhcmUobSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGVtcENvbnRhaW5lci5nZXQoY29uc3RydWN0b3JGdW5jdGlvbik7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLl9nZXRDb250YWluZXJNb2R1bGVIZWxwZXJzRmFjdG9yeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHNldE1vZHVsZUlkID0gZnVuY3Rpb24gKGJpbmRpbmdUb1N5bnRheCwgbW9kdWxlSWQpIHtcbiAgICAgICAgICAgIGJpbmRpbmdUb1N5bnRheC5fYmluZGluZy5tb2R1bGVJZCA9IG1vZHVsZUlkO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0QmluZEZ1bmN0aW9uID0gZnVuY3Rpb24gKG1vZHVsZUlkKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9iaW5kID0gX3RoaXMuYmluZC5iaW5kKF90aGlzKTtcbiAgICAgICAgICAgICAgICB2YXIgYmluZGluZ1RvU3ludGF4ID0gX2JpbmQoc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHNldE1vZHVsZUlkKGJpbmRpbmdUb1N5bnRheCwgbW9kdWxlSWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBiaW5kaW5nVG9TeW50YXg7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0VW5iaW5kRnVuY3Rpb24gPSBmdW5jdGlvbiAobW9kdWxlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICB2YXIgX3VuYmluZCA9IF90aGlzLnVuYmluZC5iaW5kKF90aGlzKTtcbiAgICAgICAgICAgICAgICBfdW5iaW5kKHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIHZhciBnZXRJc2JvdW5kRnVuY3Rpb24gPSBmdW5jdGlvbiAobW9kdWxlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2lzQm91bmQgPSBfdGhpcy5pc0JvdW5kLmJpbmQoX3RoaXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfaXNCb3VuZChzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0UmViaW5kRnVuY3Rpb24gPSBmdW5jdGlvbiAobW9kdWxlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICB2YXIgX3JlYmluZCA9IF90aGlzLnJlYmluZC5iaW5kKF90aGlzKTtcbiAgICAgICAgICAgICAgICB2YXIgYmluZGluZ1RvU3ludGF4ID0gX3JlYmluZChzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgc2V0TW9kdWxlSWQoYmluZGluZ1RvU3ludGF4LCBtb2R1bGVJZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJpbmRpbmdUb1N5bnRheDtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobUlkKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgYmluZEZ1bmN0aW9uOiBnZXRCaW5kRnVuY3Rpb24obUlkKSxcbiAgICAgICAgICAgIGlzYm91bmRGdW5jdGlvbjogZ2V0SXNib3VuZEZ1bmN0aW9uKG1JZCksXG4gICAgICAgICAgICByZWJpbmRGdW5jdGlvbjogZ2V0UmViaW5kRnVuY3Rpb24obUlkKSxcbiAgICAgICAgICAgIHVuYmluZEZ1bmN0aW9uOiBnZXRVbmJpbmRGdW5jdGlvbihtSWQpXG4gICAgICAgIH0pOyB9O1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5fZ2V0ID0gZnVuY3Rpb24gKGF2b2lkQ29uc3RyYWludHMsIGlzTXVsdGlJbmplY3QsIHRhcmdldFR5cGUsIHNlcnZpY2VJZGVudGlmaWVyLCBrZXksIHZhbHVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgICAgICB2YXIgZGVmYXVsdEFyZ3MgPSB7XG4gICAgICAgICAgICBhdm9pZENvbnN0cmFpbnRzOiBhdm9pZENvbnN0cmFpbnRzLFxuICAgICAgICAgICAgY29udGV4dEludGVyY2VwdG9yOiBmdW5jdGlvbiAoY29udGV4dCkgeyByZXR1cm4gY29udGV4dDsgfSxcbiAgICAgICAgICAgIGlzTXVsdGlJbmplY3Q6IGlzTXVsdGlJbmplY3QsXG4gICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgIHNlcnZpY2VJZGVudGlmaWVyOiBzZXJ2aWNlSWRlbnRpZmllcixcbiAgICAgICAgICAgIHRhcmdldFR5cGU6IHRhcmdldFR5cGUsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuX21pZGRsZXdhcmUpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuX21pZGRsZXdhcmUoZGVmYXVsdEFyZ3MpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLklOVkFMSURfTUlERExFV0FSRV9SRVRVUk4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5fcGxhbkFuZFJlc29sdmUoKShkZWZhdWx0QXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuX3BsYW5BbmRSZXNvbHZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gcGxhbm5lcl8xLnBsYW4oX3RoaXMuX21ldGFkYXRhUmVhZGVyLCBfdGhpcywgYXJncy5pc011bHRpSW5qZWN0LCBhcmdzLnRhcmdldFR5cGUsIGFyZ3Muc2VydmljZUlkZW50aWZpZXIsIGFyZ3Mua2V5LCBhcmdzLnZhbHVlLCBhcmdzLmF2b2lkQ29uc3RyYWludHMpO1xuICAgICAgICAgICAgY29udGV4dCA9IGFyZ3MuY29udGV4dEludGVyY2VwdG9yKGNvbnRleHQpO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHJlc29sdmVyXzEucmVzb2x2ZShjb250ZXh0KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICByZXR1cm4gQ29udGFpbmVyO1xufSgpKTtcbmV4cG9ydHMuQ29udGFpbmVyID0gQ29udGFpbmVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29udGFpbmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/container/container.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/container/container_module.js": /*!******************************************************************!*\ !*** ./node_modules/inversify/lib/container/container_module.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncContainerModule = exports.ContainerModule = void 0;\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/inversify/lib/utils/id.js\");\nvar ContainerModule = (function () {\n function ContainerModule(registry) {\n this.id = id_1.id();\n this.registry = registry;\n }\n return ContainerModule;\n}());\nexports.ContainerModule = ContainerModule;\nvar AsyncContainerModule = (function () {\n function AsyncContainerModule(registry) {\n this.id = id_1.id();\n this.registry = registry;\n }\n return AsyncContainerModule;\n}());\nexports.AsyncContainerModule = AsyncContainerModule;\n//# sourceMappingURL=container_module.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9jb250YWluZXIvY29udGFpbmVyX21vZHVsZS5qcz83NzFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxXQUFXLG1CQUFPLENBQUMsNkRBQWE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9jb250YWluZXIvY29udGFpbmVyX21vZHVsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Bc3luY0NvbnRhaW5lck1vZHVsZSA9IGV4cG9ydHMuQ29udGFpbmVyTW9kdWxlID0gdm9pZCAwO1xudmFyIGlkXzEgPSByZXF1aXJlKFwiLi4vdXRpbHMvaWRcIik7XG52YXIgQ29udGFpbmVyTW9kdWxlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb250YWluZXJNb2R1bGUocmVnaXN0cnkpIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkXzEuaWQoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xuICAgIH1cbiAgICByZXR1cm4gQ29udGFpbmVyTW9kdWxlO1xufSgpKTtcbmV4cG9ydHMuQ29udGFpbmVyTW9kdWxlID0gQ29udGFpbmVyTW9kdWxlO1xudmFyIEFzeW5jQ29udGFpbmVyTW9kdWxlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBBc3luY0NvbnRhaW5lck1vZHVsZShyZWdpc3RyeSkge1xuICAgICAgICB0aGlzLmlkID0gaWRfMS5pZCgpO1xuICAgICAgICB0aGlzLnJlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gICAgfVxuICAgIHJldHVybiBBc3luY0NvbnRhaW5lck1vZHVsZTtcbn0oKSk7XG5leHBvcnRzLkFzeW5jQ29udGFpbmVyTW9kdWxlID0gQXN5bmNDb250YWluZXJNb2R1bGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb250YWluZXJfbW9kdWxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/container/container_module.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/container/container_snapshot.js": /*!********************************************************************!*\ !*** ./node_modules/inversify/lib/container/container_snapshot.js ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContainerSnapshot = void 0;\nvar ContainerSnapshot = (function () {\n function ContainerSnapshot() {\n }\n ContainerSnapshot.of = function (bindings, middleware) {\n var snapshot = new ContainerSnapshot();\n snapshot.bindings = bindings;\n snapshot.middleware = middleware;\n return snapshot;\n };\n return ContainerSnapshot;\n}());\nexports.ContainerSnapshot = ContainerSnapshot;\n//# sourceMappingURL=container_snapshot.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9jb250YWluZXIvY29udGFpbmVyX3NuYXBzaG90LmpzPzFlOTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9jb250YWluZXIvY29udGFpbmVyX3NuYXBzaG90LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNvbnRhaW5lclNuYXBzaG90ID0gdm9pZCAwO1xudmFyIENvbnRhaW5lclNuYXBzaG90ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb250YWluZXJTbmFwc2hvdCgpIHtcbiAgICB9XG4gICAgQ29udGFpbmVyU25hcHNob3Qub2YgPSBmdW5jdGlvbiAoYmluZGluZ3MsIG1pZGRsZXdhcmUpIHtcbiAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IENvbnRhaW5lclNuYXBzaG90KCk7XG4gICAgICAgIHNuYXBzaG90LmJpbmRpbmdzID0gYmluZGluZ3M7XG4gICAgICAgIHNuYXBzaG90Lm1pZGRsZXdhcmUgPSBtaWRkbGV3YXJlO1xuICAgICAgICByZXR1cm4gc25hcHNob3Q7XG4gICAgfTtcbiAgICByZXR1cm4gQ29udGFpbmVyU25hcHNob3Q7XG59KCkpO1xuZXhwb3J0cy5Db250YWluZXJTbmFwc2hvdCA9IENvbnRhaW5lclNuYXBzaG90O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29udGFpbmVyX3NuYXBzaG90LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/container/container_snapshot.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/container/lookup.js": /*!********************************************************!*\ !*** ./node_modules/inversify/lib/container/lookup.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Lookup = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nvar Lookup = (function () {\n function Lookup() {\n this._map = new Map();\n }\n Lookup.prototype.getMap = function () {\n return this._map;\n };\n Lookup.prototype.add = function (serviceIdentifier, value) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n if (value === null || value === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n var entry = this._map.get(serviceIdentifier);\n if (entry !== undefined) {\n entry.push(value);\n this._map.set(serviceIdentifier, entry);\n }\n else {\n this._map.set(serviceIdentifier, [value]);\n }\n };\n Lookup.prototype.get = function (serviceIdentifier) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n var entry = this._map.get(serviceIdentifier);\n if (entry !== undefined) {\n return entry;\n }\n else {\n throw new Error(ERROR_MSGS.KEY_NOT_FOUND);\n }\n };\n Lookup.prototype.remove = function (serviceIdentifier) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n if (!this._map.delete(serviceIdentifier)) {\n throw new Error(ERROR_MSGS.KEY_NOT_FOUND);\n }\n };\n Lookup.prototype.removeByCondition = function (condition) {\n var _this = this;\n this._map.forEach(function (entries, key) {\n var updatedEntries = entries.filter(function (entry) { return !condition(entry); });\n if (updatedEntries.length > 0) {\n _this._map.set(key, updatedEntries);\n }\n else {\n _this._map.delete(key);\n }\n });\n };\n Lookup.prototype.hasKey = function (serviceIdentifier) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n return this._map.has(serviceIdentifier);\n };\n Lookup.prototype.clone = function () {\n var copy = new Lookup();\n this._map.forEach(function (value, key) {\n value.forEach(function (b) { return copy.add(key, b.clone()); });\n });\n return copy;\n };\n Lookup.prototype.traverse = function (func) {\n this._map.forEach(function (value, key) {\n func(key, value);\n });\n };\n return Lookup;\n}());\nexports.Lookup = Lookup;\n//# sourceMappingURL=lookup.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9jb250YWluZXIvbG9va3VwLmpzPzAzMDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGlCQUFpQixtQkFBTyxDQUFDLHFGQUF5QjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtFQUFrRSwwQkFBMEIsRUFBRTtBQUM5RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsaUNBQWlDLEVBQUU7QUFDM0UsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvY29udGFpbmVyL2xvb2t1cC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Mb29rdXAgPSB2b2lkIDA7XG52YXIgRVJST1JfTVNHUyA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvZXJyb3JfbXNnc1wiKTtcbnZhciBMb29rdXAgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIExvb2t1cCgpIHtcbiAgICAgICAgdGhpcy5fbWFwID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICBMb29rdXAucHJvdG90eXBlLmdldE1hcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcDtcbiAgICB9O1xuICAgIExvb2t1cC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyLCB2YWx1ZSkge1xuICAgICAgICBpZiAoc2VydmljZUlkZW50aWZpZXIgPT09IG51bGwgfHwgc2VydmljZUlkZW50aWZpZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX01TR1MuTlVMTF9BUkdVTUVOVCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLk5VTExfQVJHVU1FTlQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMuX21hcC5nZXQoc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICBpZiAoZW50cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZW50cnkucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9tYXAuc2V0KHNlcnZpY2VJZGVudGlmaWVyLCBlbnRyeSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9tYXAuc2V0KHNlcnZpY2VJZGVudGlmaWVyLCBbdmFsdWVdKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgaWYgKHNlcnZpY2VJZGVudGlmaWVyID09PSBudWxsIHx8IHNlcnZpY2VJZGVudGlmaWVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLk5VTExfQVJHVU1FTlQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMuX21hcC5nZXQoc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICBpZiAoZW50cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX01TR1MuS0VZX05PVF9GT1VORCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIExvb2t1cC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgICAgIGlmIChzZXJ2aWNlSWRlbnRpZmllciA9PT0gbnVsbCB8fCBzZXJ2aWNlSWRlbnRpZmllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5OVUxMX0FSR1VNRU5UKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX21hcC5kZWxldGUoc2VydmljZUlkZW50aWZpZXIpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5LRVlfTk9UX0ZPVU5EKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgTG9va3VwLnByb3RvdHlwZS5yZW1vdmVCeUNvbmRpdGlvbiA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5fbWFwLmZvckVhY2goZnVuY3Rpb24gKGVudHJpZXMsIGtleSkge1xuICAgICAgICAgICAgdmFyIHVwZGF0ZWRFbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZnVuY3Rpb24gKGVudHJ5KSB7IHJldHVybiAhY29uZGl0aW9uKGVudHJ5KTsgfSk7XG4gICAgICAgICAgICBpZiAodXBkYXRlZEVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIF90aGlzLl9tYXAuc2V0KGtleSwgdXBkYXRlZEVudHJpZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX21hcC5kZWxldGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBMb29rdXAucHJvdG90eXBlLmhhc0tleSA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgICAgICBpZiAoc2VydmljZUlkZW50aWZpZXIgPT09IG51bGwgfHwgc2VydmljZUlkZW50aWZpZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX01TR1MuTlVMTF9BUkdVTUVOVCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcC5oYXMoc2VydmljZUlkZW50aWZpZXIpO1xuICAgIH07XG4gICAgTG9va3VwLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNvcHkgPSBuZXcgTG9va3VwKCk7XG4gICAgICAgIHRoaXMuX21hcC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7IHJldHVybiBjb3B5LmFkZChrZXksIGIuY2xvbmUoKSk7IH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfTtcbiAgICBMb29rdXAucHJvdG90eXBlLnRyYXZlcnNlID0gZnVuY3Rpb24gKGZ1bmMpIHtcbiAgICAgICAgdGhpcy5fbWFwLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICAgIGZ1bmMoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIExvb2t1cDtcbn0oKSk7XG5leHBvcnRzLkxvb2t1cCA9IExvb2t1cDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvb2t1cC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/container/lookup.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/inversify.js": /*!*************************************************!*\ !*** ./node_modules/inversify/lib/inversify.js ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multiBindToService = exports.getServiceIdentifierAsString = exports.typeConstraint = exports.namedConstraint = exports.taggedConstraint = exports.traverseAncerstors = exports.decorate = exports.id = exports.MetadataReader = exports.postConstruct = exports.targetName = exports.multiInject = exports.unmanaged = exports.optional = exports.LazyServiceIdentifer = exports.inject = exports.named = exports.tagged = exports.injectable = exports.ContainerModule = exports.AsyncContainerModule = exports.TargetTypeEnum = exports.BindingTypeEnum = exports.BindingScopeEnum = exports.Container = exports.METADATA_KEY = void 0;\nvar keys = __webpack_require__(/*! ./constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nexports.METADATA_KEY = keys;\nvar container_1 = __webpack_require__(/*! ./container/container */ \"./node_modules/inversify/lib/container/container.js\");\nObject.defineProperty(exports, \"Container\", { enumerable: true, get: function () { return container_1.Container; } });\nvar literal_types_1 = __webpack_require__(/*! ./constants/literal_types */ \"./node_modules/inversify/lib/constants/literal_types.js\");\nObject.defineProperty(exports, \"BindingScopeEnum\", { enumerable: true, get: function () { return literal_types_1.BindingScopeEnum; } });\nObject.defineProperty(exports, \"BindingTypeEnum\", { enumerable: true, get: function () { return literal_types_1.BindingTypeEnum; } });\nObject.defineProperty(exports, \"TargetTypeEnum\", { enumerable: true, get: function () { return literal_types_1.TargetTypeEnum; } });\nvar container_module_1 = __webpack_require__(/*! ./container/container_module */ \"./node_modules/inversify/lib/container/container_module.js\");\nObject.defineProperty(exports, \"AsyncContainerModule\", { enumerable: true, get: function () { return container_module_1.AsyncContainerModule; } });\nObject.defineProperty(exports, \"ContainerModule\", { enumerable: true, get: function () { return container_module_1.ContainerModule; } });\nvar injectable_1 = __webpack_require__(/*! ./annotation/injectable */ \"./node_modules/inversify/lib/annotation/injectable.js\");\nObject.defineProperty(exports, \"injectable\", { enumerable: true, get: function () { return injectable_1.injectable; } });\nvar tagged_1 = __webpack_require__(/*! ./annotation/tagged */ \"./node_modules/inversify/lib/annotation/tagged.js\");\nObject.defineProperty(exports, \"tagged\", { enumerable: true, get: function () { return tagged_1.tagged; } });\nvar named_1 = __webpack_require__(/*! ./annotation/named */ \"./node_modules/inversify/lib/annotation/named.js\");\nObject.defineProperty(exports, \"named\", { enumerable: true, get: function () { return named_1.named; } });\nvar inject_1 = __webpack_require__(/*! ./annotation/inject */ \"./node_modules/inversify/lib/annotation/inject.js\");\nObject.defineProperty(exports, \"inject\", { enumerable: true, get: function () { return inject_1.inject; } });\nObject.defineProperty(exports, \"LazyServiceIdentifer\", { enumerable: true, get: function () { return inject_1.LazyServiceIdentifer; } });\nvar optional_1 = __webpack_require__(/*! ./annotation/optional */ \"./node_modules/inversify/lib/annotation/optional.js\");\nObject.defineProperty(exports, \"optional\", { enumerable: true, get: function () { return optional_1.optional; } });\nvar unmanaged_1 = __webpack_require__(/*! ./annotation/unmanaged */ \"./node_modules/inversify/lib/annotation/unmanaged.js\");\nObject.defineProperty(exports, \"unmanaged\", { enumerable: true, get: function () { return unmanaged_1.unmanaged; } });\nvar multi_inject_1 = __webpack_require__(/*! ./annotation/multi_inject */ \"./node_modules/inversify/lib/annotation/multi_inject.js\");\nObject.defineProperty(exports, \"multiInject\", { enumerable: true, get: function () { return multi_inject_1.multiInject; } });\nvar target_name_1 = __webpack_require__(/*! ./annotation/target_name */ \"./node_modules/inversify/lib/annotation/target_name.js\");\nObject.defineProperty(exports, \"targetName\", { enumerable: true, get: function () { return target_name_1.targetName; } });\nvar post_construct_1 = __webpack_require__(/*! ./annotation/post_construct */ \"./node_modules/inversify/lib/annotation/post_construct.js\");\nObject.defineProperty(exports, \"postConstruct\", { enumerable: true, get: function () { return post_construct_1.postConstruct; } });\nvar metadata_reader_1 = __webpack_require__(/*! ./planning/metadata_reader */ \"./node_modules/inversify/lib/planning/metadata_reader.js\");\nObject.defineProperty(exports, \"MetadataReader\", { enumerable: true, get: function () { return metadata_reader_1.MetadataReader; } });\nvar id_1 = __webpack_require__(/*! ./utils/id */ \"./node_modules/inversify/lib/utils/id.js\");\nObject.defineProperty(exports, \"id\", { enumerable: true, get: function () { return id_1.id; } });\nvar decorator_utils_1 = __webpack_require__(/*! ./annotation/decorator_utils */ \"./node_modules/inversify/lib/annotation/decorator_utils.js\");\nObject.defineProperty(exports, \"decorate\", { enumerable: true, get: function () { return decorator_utils_1.decorate; } });\nvar constraint_helpers_1 = __webpack_require__(/*! ./syntax/constraint_helpers */ \"./node_modules/inversify/lib/syntax/constraint_helpers.js\");\nObject.defineProperty(exports, \"traverseAncerstors\", { enumerable: true, get: function () { return constraint_helpers_1.traverseAncerstors; } });\nObject.defineProperty(exports, \"taggedConstraint\", { enumerable: true, get: function () { return constraint_helpers_1.taggedConstraint; } });\nObject.defineProperty(exports, \"namedConstraint\", { enumerable: true, get: function () { return constraint_helpers_1.namedConstraint; } });\nObject.defineProperty(exports, \"typeConstraint\", { enumerable: true, get: function () { return constraint_helpers_1.typeConstraint; } });\nvar serialization_1 = __webpack_require__(/*! ./utils/serialization */ \"./node_modules/inversify/lib/utils/serialization.js\");\nObject.defineProperty(exports, \"getServiceIdentifierAsString\", { enumerable: true, get: function () { return serialization_1.getServiceIdentifierAsString; } });\nvar binding_utils_1 = __webpack_require__(/*! ./utils/binding_utils */ \"./node_modules/inversify/lib/utils/binding_utils.js\");\nObject.defineProperty(exports, \"multiBindToService\", { enumerable: true, get: function () { return binding_utils_1.multiBindToService; } });\n//# sourceMappingURL=inversify.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9pbnZlcnNpZnkuanM/ZTFjNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsV0FBVyxtQkFBTyxDQUFDLDBGQUEyQjtBQUM5QztBQUNBLGtCQUFrQixtQkFBTyxDQUFDLGtGQUF1QjtBQUNqRCw2Q0FBNkMscUNBQXFDLDhCQUE4QixFQUFFLEVBQUU7QUFDcEgsc0JBQXNCLG1CQUFPLENBQUMsMEZBQTJCO0FBQ3pELG9EQUFvRCxxQ0FBcUMseUNBQXlDLEVBQUUsRUFBRTtBQUN0SSxtREFBbUQscUNBQXFDLHdDQUF3QyxFQUFFLEVBQUU7QUFDcEksa0RBQWtELHFDQUFxQyx1Q0FBdUMsRUFBRSxFQUFFO0FBQ2xJLHlCQUF5QixtQkFBTyxDQUFDLGdHQUE4QjtBQUMvRCx3REFBd0QscUNBQXFDLGdEQUFnRCxFQUFFLEVBQUU7QUFDakosbURBQW1ELHFDQUFxQywyQ0FBMkMsRUFBRSxFQUFFO0FBQ3ZJLG1CQUFtQixtQkFBTyxDQUFDLHNGQUF5QjtBQUNwRCw4Q0FBOEMscUNBQXFDLGdDQUFnQyxFQUFFLEVBQUU7QUFDdkgsZUFBZSxtQkFBTyxDQUFDLDhFQUFxQjtBQUM1QywwQ0FBMEMscUNBQXFDLHdCQUF3QixFQUFFLEVBQUU7QUFDM0csY0FBYyxtQkFBTyxDQUFDLDRFQUFvQjtBQUMxQyx5Q0FBeUMscUNBQXFDLHNCQUFzQixFQUFFLEVBQUU7QUFDeEcsZUFBZSxtQkFBTyxDQUFDLDhFQUFxQjtBQUM1QywwQ0FBMEMscUNBQXFDLHdCQUF3QixFQUFFLEVBQUU7QUFDM0csd0RBQXdELHFDQUFxQyxzQ0FBc0MsRUFBRSxFQUFFO0FBQ3ZJLGlCQUFpQixtQkFBTyxDQUFDLGtGQUF1QjtBQUNoRCw0Q0FBNEMscUNBQXFDLDRCQUE0QixFQUFFLEVBQUU7QUFDakgsa0JBQWtCLG1CQUFPLENBQUMsb0ZBQXdCO0FBQ2xELDZDQUE2QyxxQ0FBcUMsOEJBQThCLEVBQUUsRUFBRTtBQUNwSCxxQkFBcUIsbUJBQU8sQ0FBQywwRkFBMkI7QUFDeEQsK0NBQStDLHFDQUFxQyxtQ0FBbUMsRUFBRSxFQUFFO0FBQzNILG9CQUFvQixtQkFBTyxDQUFDLHdGQUEwQjtBQUN0RCw4Q0FBOEMscUNBQXFDLGlDQUFpQyxFQUFFLEVBQUU7QUFDeEgsdUJBQXVCLG1CQUFPLENBQUMsOEZBQTZCO0FBQzVELGlEQUFpRCxxQ0FBcUMsdUNBQXVDLEVBQUUsRUFBRTtBQUNqSSx3QkFBd0IsbUJBQU8sQ0FBQyw0RkFBNEI7QUFDNUQsa0RBQWtELHFDQUFxQyx5Q0FBeUMsRUFBRSxFQUFFO0FBQ3BJLFdBQVcsbUJBQU8sQ0FBQyw0REFBWTtBQUMvQixzQ0FBc0MscUNBQXFDLGdCQUFnQixFQUFFLEVBQUU7QUFDL0Ysd0JBQXdCLG1CQUFPLENBQUMsZ0dBQThCO0FBQzlELDRDQUE0QyxxQ0FBcUMsbUNBQW1DLEVBQUUsRUFBRTtBQUN4SCwyQkFBMkIsbUJBQU8sQ0FBQyw4RkFBNkI7QUFDaEUsc0RBQXNELHFDQUFxQyxnREFBZ0QsRUFBRSxFQUFFO0FBQy9JLG9EQUFvRCxxQ0FBcUMsOENBQThDLEVBQUUsRUFBRTtBQUMzSSxtREFBbUQscUNBQXFDLDZDQUE2QyxFQUFFLEVBQUU7QUFDekksa0RBQWtELHFDQUFxQyw0Q0FBNEMsRUFBRSxFQUFFO0FBQ3ZJLHNCQUFzQixtQkFBTyxDQUFDLGtGQUF1QjtBQUNyRCxnRUFBZ0UscUNBQXFDLHFEQUFxRCxFQUFFLEVBQUU7QUFDOUosc0JBQXNCLG1CQUFPLENBQUMsa0ZBQXVCO0FBQ3JELHNEQUFzRCxxQ0FBcUMsMkNBQTJDLEVBQUUsRUFBRTtBQUMxSSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnZlcnNpZnkvbGliL2ludmVyc2lmeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tdWx0aUJpbmRUb1NlcnZpY2UgPSBleHBvcnRzLmdldFNlcnZpY2VJZGVudGlmaWVyQXNTdHJpbmcgPSBleHBvcnRzLnR5cGVDb25zdHJhaW50ID0gZXhwb3J0cy5uYW1lZENvbnN0cmFpbnQgPSBleHBvcnRzLnRhZ2dlZENvbnN0cmFpbnQgPSBleHBvcnRzLnRyYXZlcnNlQW5jZXJzdG9ycyA9IGV4cG9ydHMuZGVjb3JhdGUgPSBleHBvcnRzLmlkID0gZXhwb3J0cy5NZXRhZGF0YVJlYWRlciA9IGV4cG9ydHMucG9zdENvbnN0cnVjdCA9IGV4cG9ydHMudGFyZ2V0TmFtZSA9IGV4cG9ydHMubXVsdGlJbmplY3QgPSBleHBvcnRzLnVubWFuYWdlZCA9IGV4cG9ydHMub3B0aW9uYWwgPSBleHBvcnRzLkxhenlTZXJ2aWNlSWRlbnRpZmVyID0gZXhwb3J0cy5pbmplY3QgPSBleHBvcnRzLm5hbWVkID0gZXhwb3J0cy50YWdnZWQgPSBleHBvcnRzLmluamVjdGFibGUgPSBleHBvcnRzLkNvbnRhaW5lck1vZHVsZSA9IGV4cG9ydHMuQXN5bmNDb250YWluZXJNb2R1bGUgPSBleHBvcnRzLlRhcmdldFR5cGVFbnVtID0gZXhwb3J0cy5CaW5kaW5nVHlwZUVudW0gPSBleHBvcnRzLkJpbmRpbmdTY29wZUVudW0gPSBleHBvcnRzLkNvbnRhaW5lciA9IGV4cG9ydHMuTUVUQURBVEFfS0VZID0gdm9pZCAwO1xudmFyIGtleXMgPSByZXF1aXJlKFwiLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbmV4cG9ydHMuTUVUQURBVEFfS0VZID0ga2V5cztcbnZhciBjb250YWluZXJfMSA9IHJlcXVpcmUoXCIuL2NvbnRhaW5lci9jb250YWluZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb250YWluZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbnRhaW5lcl8xLkNvbnRhaW5lcjsgfSB9KTtcbnZhciBsaXRlcmFsX3R5cGVzXzEgPSByZXF1aXJlKFwiLi9jb25zdGFudHMvbGl0ZXJhbF90eXBlc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJpbmRpbmdTY29wZUVudW1cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nU2NvcGVFbnVtOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQmluZGluZ1R5cGVFbnVtXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGFyZ2V0VHlwZUVudW1cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGxpdGVyYWxfdHlwZXNfMS5UYXJnZXRUeXBlRW51bTsgfSB9KTtcbnZhciBjb250YWluZXJfbW9kdWxlXzEgPSByZXF1aXJlKFwiLi9jb250YWluZXIvY29udGFpbmVyX21vZHVsZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFzeW5jQ29udGFpbmVyTW9kdWxlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb250YWluZXJfbW9kdWxlXzEuQXN5bmNDb250YWluZXJNb2R1bGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb250YWluZXJNb2R1bGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbnRhaW5lcl9tb2R1bGVfMS5Db250YWluZXJNb2R1bGU7IH0gfSk7XG52YXIgaW5qZWN0YWJsZV8xID0gcmVxdWlyZShcIi4vYW5ub3RhdGlvbi9pbmplY3RhYmxlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaW5qZWN0YWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gaW5qZWN0YWJsZV8xLmluamVjdGFibGU7IH0gfSk7XG52YXIgdGFnZ2VkXzEgPSByZXF1aXJlKFwiLi9hbm5vdGF0aW9uL3RhZ2dlZFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInRhZ2dlZFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFnZ2VkXzEudGFnZ2VkOyB9IH0pO1xudmFyIG5hbWVkXzEgPSByZXF1aXJlKFwiLi9hbm5vdGF0aW9uL25hbWVkXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibmFtZWRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5hbWVkXzEubmFtZWQ7IH0gfSk7XG52YXIgaW5qZWN0XzEgPSByZXF1aXJlKFwiLi9hbm5vdGF0aW9uL2luamVjdFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImluamVjdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gaW5qZWN0XzEuaW5qZWN0OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTGF6eVNlcnZpY2VJZGVudGlmZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGluamVjdF8xLkxhenlTZXJ2aWNlSWRlbnRpZmVyOyB9IH0pO1xudmFyIG9wdGlvbmFsXzEgPSByZXF1aXJlKFwiLi9hbm5vdGF0aW9uL29wdGlvbmFsXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwib3B0aW9uYWxcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9wdGlvbmFsXzEub3B0aW9uYWw7IH0gfSk7XG52YXIgdW5tYW5hZ2VkXzEgPSByZXF1aXJlKFwiLi9hbm5vdGF0aW9uL3VubWFuYWdlZFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInVubWFuYWdlZFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5tYW5hZ2VkXzEudW5tYW5hZ2VkOyB9IH0pO1xudmFyIG11bHRpX2luamVjdF8xID0gcmVxdWlyZShcIi4vYW5ub3RhdGlvbi9tdWx0aV9pbmplY3RcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJtdWx0aUluamVjdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbXVsdGlfaW5qZWN0XzEubXVsdGlJbmplY3Q7IH0gfSk7XG52YXIgdGFyZ2V0X25hbWVfMSA9IHJlcXVpcmUoXCIuL2Fubm90YXRpb24vdGFyZ2V0X25hbWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ0YXJnZXROYW1lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0YXJnZXRfbmFtZV8xLnRhcmdldE5hbWU7IH0gfSk7XG52YXIgcG9zdF9jb25zdHJ1Y3RfMSA9IHJlcXVpcmUoXCIuL2Fubm90YXRpb24vcG9zdF9jb25zdHJ1Y3RcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJwb3N0Q29uc3RydWN0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0X2NvbnN0cnVjdF8xLnBvc3RDb25zdHJ1Y3Q7IH0gfSk7XG52YXIgbWV0YWRhdGFfcmVhZGVyXzEgPSByZXF1aXJlKFwiLi9wbGFubmluZy9tZXRhZGF0YV9yZWFkZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJNZXRhZGF0YVJlYWRlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbWV0YWRhdGFfcmVhZGVyXzEuTWV0YWRhdGFSZWFkZXI7IH0gfSk7XG52YXIgaWRfMSA9IHJlcXVpcmUoXCIuL3V0aWxzL2lkXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaWRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGlkXzEuaWQ7IH0gfSk7XG52YXIgZGVjb3JhdG9yX3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hbm5vdGF0aW9uL2RlY29yYXRvcl91dGlsc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlY29yYXRlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBkZWNvcmF0b3JfdXRpbHNfMS5kZWNvcmF0ZTsgfSB9KTtcbnZhciBjb25zdHJhaW50X2hlbHBlcnNfMSA9IHJlcXVpcmUoXCIuL3N5bnRheC9jb25zdHJhaW50X2hlbHBlcnNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ0cmF2ZXJzZUFuY2Vyc3RvcnNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbnN0cmFpbnRfaGVscGVyc18xLnRyYXZlcnNlQW5jZXJzdG9yczsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInRhZ2dlZENvbnN0cmFpbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbnN0cmFpbnRfaGVscGVyc18xLnRhZ2dlZENvbnN0cmFpbnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJuYW1lZENvbnN0cmFpbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbnN0cmFpbnRfaGVscGVyc18xLm5hbWVkQ29uc3RyYWludDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInR5cGVDb25zdHJhaW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb25zdHJhaW50X2hlbHBlcnNfMS50eXBlQ29uc3RyYWludDsgfSB9KTtcbnZhciBzZXJpYWxpemF0aW9uXzEgPSByZXF1aXJlKFwiLi91dGlscy9zZXJpYWxpemF0aW9uXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0U2VydmljZUlkZW50aWZpZXJBc1N0cmluZ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VyaWFsaXphdGlvbl8xLmdldFNlcnZpY2VJZGVudGlmaWVyQXNTdHJpbmc7IH0gfSk7XG52YXIgYmluZGluZ191dGlsc18xID0gcmVxdWlyZShcIi4vdXRpbHMvYmluZGluZ191dGlsc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIm11bHRpQmluZFRvU2VydmljZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gYmluZGluZ191dGlsc18xLm11bHRpQmluZFRvU2VydmljZTsgfSB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludmVyc2lmeS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/inversify.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/planning/context.js": /*!********************************************************!*\ !*** ./node_modules/inversify/lib/planning/context.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/inversify/lib/utils/id.js\");\nvar Context = (function () {\n function Context(container) {\n this.id = id_1.id();\n this.container = container;\n }\n Context.prototype.addPlan = function (plan) {\n this.plan = plan;\n };\n Context.prototype.setCurrentRequest = function (currentRequest) {\n this.currentRequest = currentRequest;\n };\n return Context;\n}());\nexports.Context = Context;\n//# sourceMappingURL=context.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9jb250ZXh0LmpzP2EzMmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLFdBQVcsbUJBQU8sQ0FBQyw2REFBYTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnZlcnNpZnkvbGliL3BsYW5uaW5nL2NvbnRleHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ29udGV4dCA9IHZvaWQgMDtcbnZhciBpZF8xID0gcmVxdWlyZShcIi4uL3V0aWxzL2lkXCIpO1xudmFyIENvbnRleHQgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENvbnRleHQoY29udGFpbmVyKSB7XG4gICAgICAgIHRoaXMuaWQgPSBpZF8xLmlkKCk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIH1cbiAgICBDb250ZXh0LnByb3RvdHlwZS5hZGRQbGFuID0gZnVuY3Rpb24gKHBsYW4pIHtcbiAgICAgICAgdGhpcy5wbGFuID0gcGxhbjtcbiAgICB9O1xuICAgIENvbnRleHQucHJvdG90eXBlLnNldEN1cnJlbnRSZXF1ZXN0ID0gZnVuY3Rpb24gKGN1cnJlbnRSZXF1ZXN0KSB7XG4gICAgICAgIHRoaXMuY3VycmVudFJlcXVlc3QgPSBjdXJyZW50UmVxdWVzdDtcbiAgICB9O1xuICAgIHJldHVybiBDb250ZXh0O1xufSgpKTtcbmV4cG9ydHMuQ29udGV4dCA9IENvbnRleHQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb250ZXh0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/planning/context.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/planning/metadata.js": /*!*********************************************************!*\ !*** ./node_modules/inversify/lib/planning/metadata.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Metadata = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar Metadata = (function () {\n function Metadata(key, value) {\n this.key = key;\n this.value = value;\n }\n Metadata.prototype.toString = function () {\n if (this.key === METADATA_KEY.NAMED_TAG) {\n return \"named: \" + this.value.toString() + \" \";\n }\n else {\n return \"tagged: { key:\" + this.key.toString() + \", value: \" + this.value + \" }\";\n }\n };\n return Metadata;\n}());\nexports.Metadata = Metadata;\n//# sourceMappingURL=metadata.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9tZXRhZGF0YS5qcz8xOTc5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxtQkFBbUIsbUJBQU8sQ0FBQywyRkFBNEI7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsNkRBQTZEO0FBQzFGO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvcGxhbm5pbmcvbWV0YWRhdGEuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTWV0YWRhdGEgPSB2b2lkIDA7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xudmFyIE1ldGFkYXRhID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBNZXRhZGF0YShrZXksIHZhbHVlKSB7XG4gICAgICAgIHRoaXMua2V5ID0ga2V5O1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIE1ldGFkYXRhLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMua2V5ID09PSBNRVRBREFUQV9LRVkuTkFNRURfVEFHKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJuYW1lZDogXCIgKyB0aGlzLnZhbHVlLnRvU3RyaW5nKCkgKyBcIiBcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBcInRhZ2dlZDogeyBrZXk6XCIgKyB0aGlzLmtleS50b1N0cmluZygpICsgXCIsIHZhbHVlOiBcIiArIHRoaXMudmFsdWUgKyBcIiB9XCI7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBNZXRhZGF0YTtcbn0oKSk7XG5leHBvcnRzLk1ldGFkYXRhID0gTWV0YWRhdGE7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZXRhZGF0YS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/planning/metadata.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/planning/metadata_reader.js": /*!****************************************************************!*\ !*** ./node_modules/inversify/lib/planning/metadata_reader.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetadataReader = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar MetadataReader = (function () {\n function MetadataReader() {\n }\n MetadataReader.prototype.getConstructorMetadata = function (constructorFunc) {\n var compilerGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.PARAM_TYPES, constructorFunc);\n var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED, constructorFunc);\n return {\n compilerGeneratedMetadata: compilerGeneratedMetadata,\n userGeneratedMetadata: userGeneratedMetadata || {}\n };\n };\n MetadataReader.prototype.getPropertiesMetadata = function (constructorFunc) {\n var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED_PROP, constructorFunc) || [];\n return userGeneratedMetadata;\n };\n return MetadataReader;\n}());\nexports.MetadataReader = MetadataReader;\n//# sourceMappingURL=metadata_reader.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9tZXRhZGF0YV9yZWFkZXIuanM/YzI3OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsbUJBQW1CLG1CQUFPLENBQUMsMkZBQTRCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9tZXRhZGF0YV9yZWFkZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTWV0YWRhdGFSZWFkZXIgPSB2b2lkIDA7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xudmFyIE1ldGFkYXRhUmVhZGVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBNZXRhZGF0YVJlYWRlcigpIHtcbiAgICB9XG4gICAgTWV0YWRhdGFSZWFkZXIucHJvdG90eXBlLmdldENvbnN0cnVjdG9yTWV0YWRhdGEgPSBmdW5jdGlvbiAoY29uc3RydWN0b3JGdW5jKSB7XG4gICAgICAgIHZhciBjb21waWxlckdlbmVyYXRlZE1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YShNRVRBREFUQV9LRVkuUEFSQU1fVFlQRVMsIGNvbnN0cnVjdG9yRnVuYyk7XG4gICAgICAgIHZhciB1c2VyR2VuZXJhdGVkTWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKE1FVEFEQVRBX0tFWS5UQUdHRUQsIGNvbnN0cnVjdG9yRnVuYyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb21waWxlckdlbmVyYXRlZE1ldGFkYXRhOiBjb21waWxlckdlbmVyYXRlZE1ldGFkYXRhLFxuICAgICAgICAgICAgdXNlckdlbmVyYXRlZE1ldGFkYXRhOiB1c2VyR2VuZXJhdGVkTWV0YWRhdGEgfHwge31cbiAgICAgICAgfTtcbiAgICB9O1xuICAgIE1ldGFkYXRhUmVhZGVyLnByb3RvdHlwZS5nZXRQcm9wZXJ0aWVzTWV0YWRhdGEgPSBmdW5jdGlvbiAoY29uc3RydWN0b3JGdW5jKSB7XG4gICAgICAgIHZhciB1c2VyR2VuZXJhdGVkTWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKE1FVEFEQVRBX0tFWS5UQUdHRURfUFJPUCwgY29uc3RydWN0b3JGdW5jKSB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHVzZXJHZW5lcmF0ZWRNZXRhZGF0YTtcbiAgICB9O1xuICAgIHJldHVybiBNZXRhZGF0YVJlYWRlcjtcbn0oKSk7XG5leHBvcnRzLk1ldGFkYXRhUmVhZGVyID0gTWV0YWRhdGFSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZXRhZGF0YV9yZWFkZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/planning/metadata_reader.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/planning/plan.js": /*!*****************************************************!*\ !*** ./node_modules/inversify/lib/planning/plan.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Plan = void 0;\nvar Plan = (function () {\n function Plan(parentContext, rootRequest) {\n this.parentContext = parentContext;\n this.rootRequest = rootRequest;\n }\n return Plan;\n}());\nexports.Plan = Plan;\n//# sourceMappingURL=plan.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9wbGFuLmpzP2M4YzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvcGxhbm5pbmcvcGxhbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QbGFuID0gdm9pZCAwO1xudmFyIFBsYW4gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFBsYW4ocGFyZW50Q29udGV4dCwgcm9vdFJlcXVlc3QpIHtcbiAgICAgICAgdGhpcy5wYXJlbnRDb250ZXh0ID0gcGFyZW50Q29udGV4dDtcbiAgICAgICAgdGhpcy5yb290UmVxdWVzdCA9IHJvb3RSZXF1ZXN0O1xuICAgIH1cbiAgICByZXR1cm4gUGxhbjtcbn0oKSk7XG5leHBvcnRzLlBsYW4gPSBQbGFuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGxhbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/planning/plan.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/planning/planner.js": /*!********************************************************!*\ !*** ./node_modules/inversify/lib/planning/planner.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBindingDictionary = exports.createMockRequest = exports.plan = void 0;\nvar binding_count_1 = __webpack_require__(/*! ../bindings/binding_count */ \"./node_modules/inversify/lib/bindings/binding_count.js\");\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/inversify/lib/constants/literal_types.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar exceptions_1 = __webpack_require__(/*! ../utils/exceptions */ \"./node_modules/inversify/lib/utils/exceptions.js\");\nvar serialization_1 = __webpack_require__(/*! ../utils/serialization */ \"./node_modules/inversify/lib/utils/serialization.js\");\nvar context_1 = __webpack_require__(/*! ./context */ \"./node_modules/inversify/lib/planning/context.js\");\nvar metadata_1 = __webpack_require__(/*! ./metadata */ \"./node_modules/inversify/lib/planning/metadata.js\");\nvar plan_1 = __webpack_require__(/*! ./plan */ \"./node_modules/inversify/lib/planning/plan.js\");\nvar reflection_utils_1 = __webpack_require__(/*! ./reflection_utils */ \"./node_modules/inversify/lib/planning/reflection_utils.js\");\nvar request_1 = __webpack_require__(/*! ./request */ \"./node_modules/inversify/lib/planning/request.js\");\nvar target_1 = __webpack_require__(/*! ./target */ \"./node_modules/inversify/lib/planning/target.js\");\nfunction getBindingDictionary(cntnr) {\n return cntnr._bindingDictionary;\n}\nexports.getBindingDictionary = getBindingDictionary;\nfunction _createTarget(isMultiInject, targetType, serviceIdentifier, name, key, value) {\n var metadataKey = isMultiInject ? METADATA_KEY.MULTI_INJECT_TAG : METADATA_KEY.INJECT_TAG;\n var injectMetadata = new metadata_1.Metadata(metadataKey, serviceIdentifier);\n var target = new target_1.Target(targetType, name, serviceIdentifier, injectMetadata);\n if (key !== undefined) {\n var tagMetadata = new metadata_1.Metadata(key, value);\n target.metadata.push(tagMetadata);\n }\n return target;\n}\nfunction _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target) {\n var bindings = getBindings(context.container, target.serviceIdentifier);\n var activeBindings = [];\n if (bindings.length === binding_count_1.BindingCount.NoBindingsAvailable &&\n context.container.options.autoBindInjectable &&\n typeof target.serviceIdentifier === \"function\" &&\n metadataReader.getConstructorMetadata(target.serviceIdentifier).compilerGeneratedMetadata) {\n context.container.bind(target.serviceIdentifier).toSelf();\n bindings = getBindings(context.container, target.serviceIdentifier);\n }\n if (!avoidConstraints) {\n activeBindings = bindings.filter(function (binding) {\n var request = new request_1.Request(binding.serviceIdentifier, context, parentRequest, binding, target);\n return binding.constraint(request);\n });\n }\n else {\n activeBindings = bindings;\n }\n _validateActiveBindingCount(target.serviceIdentifier, activeBindings, target, context.container);\n return activeBindings;\n}\nfunction _validateActiveBindingCount(serviceIdentifier, bindings, target, container) {\n switch (bindings.length) {\n case binding_count_1.BindingCount.NoBindingsAvailable:\n if (target.isOptional()) {\n return bindings;\n }\n else {\n var serviceIdentifierString = serialization_1.getServiceIdentifierAsString(serviceIdentifier);\n var msg = ERROR_MSGS.NOT_REGISTERED;\n msg += serialization_1.listMetadataForTarget(serviceIdentifierString, target);\n msg += serialization_1.listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings);\n throw new Error(msg);\n }\n case binding_count_1.BindingCount.OnlyOneBindingAvailable:\n if (!target.isArray()) {\n return bindings;\n }\n case binding_count_1.BindingCount.MultipleBindingsAvailable:\n default:\n if (!target.isArray()) {\n var serviceIdentifierString = serialization_1.getServiceIdentifierAsString(serviceIdentifier);\n var msg = ERROR_MSGS.AMBIGUOUS_MATCH + \" \" + serviceIdentifierString;\n msg += serialization_1.listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings);\n throw new Error(msg);\n }\n else {\n return bindings;\n }\n }\n}\nfunction _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, parentRequest, target) {\n var activeBindings;\n var childRequest;\n if (parentRequest === null) {\n activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, null, target);\n childRequest = new request_1.Request(serviceIdentifier, context, null, activeBindings, target);\n var thePlan = new plan_1.Plan(context, childRequest);\n context.addPlan(thePlan);\n }\n else {\n activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target);\n childRequest = parentRequest.addChildRequest(target.serviceIdentifier, activeBindings, target);\n }\n activeBindings.forEach(function (binding) {\n var subChildRequest = null;\n if (target.isArray()) {\n subChildRequest = childRequest.addChildRequest(binding.serviceIdentifier, binding, target);\n }\n else {\n if (binding.cache) {\n return;\n }\n subChildRequest = childRequest;\n }\n if (binding.type === literal_types_1.BindingTypeEnum.Instance && binding.implementationType !== null) {\n var dependencies = reflection_utils_1.getDependencies(metadataReader, binding.implementationType);\n if (!context.container.options.skipBaseClassChecks) {\n var baseClassDependencyCount = reflection_utils_1.getBaseClassDependencyCount(metadataReader, binding.implementationType);\n if (dependencies.length < baseClassDependencyCount) {\n var error = ERROR_MSGS.ARGUMENTS_LENGTH_MISMATCH(reflection_utils_1.getFunctionName(binding.implementationType));\n throw new Error(error);\n }\n }\n dependencies.forEach(function (dependency) {\n _createSubRequests(metadataReader, false, dependency.serviceIdentifier, context, subChildRequest, dependency);\n });\n }\n });\n}\nfunction getBindings(container, serviceIdentifier) {\n var bindings = [];\n var bindingDictionary = getBindingDictionary(container);\n if (bindingDictionary.hasKey(serviceIdentifier)) {\n bindings = bindingDictionary.get(serviceIdentifier);\n }\n else if (container.parent !== null) {\n bindings = getBindings(container.parent, serviceIdentifier);\n }\n return bindings;\n}\nfunction plan(metadataReader, container, isMultiInject, targetType, serviceIdentifier, key, value, avoidConstraints) {\n if (avoidConstraints === void 0) { avoidConstraints = false; }\n var context = new context_1.Context(container);\n var target = _createTarget(isMultiInject, targetType, serviceIdentifier, \"\", key, value);\n try {\n _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, null, target);\n return context;\n }\n catch (error) {\n if (exceptions_1.isStackOverflowExeption(error)) {\n if (context.plan) {\n serialization_1.circularDependencyToException(context.plan.rootRequest);\n }\n }\n throw error;\n }\n}\nexports.plan = plan;\nfunction createMockRequest(container, serviceIdentifier, key, value) {\n var target = new target_1.Target(literal_types_1.TargetTypeEnum.Variable, \"\", serviceIdentifier, new metadata_1.Metadata(key, value));\n var context = new context_1.Context(container);\n var request = new request_1.Request(serviceIdentifier, context, null, [], target);\n return request;\n}\nexports.createMockRequest = createMockRequest;\n//# sourceMappingURL=planner.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9wbGFubmVyLmpzPzg3YjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLHNCQUFzQixtQkFBTyxDQUFDLHlGQUEyQjtBQUN6RCxpQkFBaUIsbUJBQU8sQ0FBQyxxRkFBeUI7QUFDbEQsc0JBQXNCLG1CQUFPLENBQUMsMkZBQTRCO0FBQzFELG1CQUFtQixtQkFBTyxDQUFDLDJGQUE0QjtBQUN2RCxtQkFBbUIsbUJBQU8sQ0FBQyw2RUFBcUI7QUFDaEQsc0JBQXNCLG1CQUFPLENBQUMsbUZBQXdCO0FBQ3RELGdCQUFnQixtQkFBTyxDQUFDLG1FQUFXO0FBQ25DLGlCQUFpQixtQkFBTyxDQUFDLHFFQUFZO0FBQ3JDLGFBQWEsbUJBQU8sQ0FBQyw2REFBUTtBQUM3Qix5QkFBeUIsbUJBQU8sQ0FBQyxxRkFBb0I7QUFDckQsZ0JBQWdCLG1CQUFPLENBQUMsbUVBQVc7QUFDbkMsZUFBZSxtQkFBTyxDQUFDLGlFQUFVO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQywwQkFBMEI7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvcGxhbm5pbmcvcGxhbm5lci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5nZXRCaW5kaW5nRGljdGlvbmFyeSA9IGV4cG9ydHMuY3JlYXRlTW9ja1JlcXVlc3QgPSBleHBvcnRzLnBsYW4gPSB2b2lkIDA7XG52YXIgYmluZGluZ19jb3VudF8xID0gcmVxdWlyZShcIi4uL2JpbmRpbmdzL2JpbmRpbmdfY291bnRcIik7XG52YXIgRVJST1JfTVNHUyA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvZXJyb3JfbXNnc1wiKTtcbnZhciBsaXRlcmFsX3R5cGVzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2xpdGVyYWxfdHlwZXNcIik7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xudmFyIGV4Y2VwdGlvbnNfMSA9IHJlcXVpcmUoXCIuLi91dGlscy9leGNlcHRpb25zXCIpO1xudmFyIHNlcmlhbGl6YXRpb25fMSA9IHJlcXVpcmUoXCIuLi91dGlscy9zZXJpYWxpemF0aW9uXCIpO1xudmFyIGNvbnRleHRfMSA9IHJlcXVpcmUoXCIuL2NvbnRleHRcIik7XG52YXIgbWV0YWRhdGFfMSA9IHJlcXVpcmUoXCIuL21ldGFkYXRhXCIpO1xudmFyIHBsYW5fMSA9IHJlcXVpcmUoXCIuL3BsYW5cIik7XG52YXIgcmVmbGVjdGlvbl91dGlsc18xID0gcmVxdWlyZShcIi4vcmVmbGVjdGlvbl91dGlsc1wiKTtcbnZhciByZXF1ZXN0XzEgPSByZXF1aXJlKFwiLi9yZXF1ZXN0XCIpO1xudmFyIHRhcmdldF8xID0gcmVxdWlyZShcIi4vdGFyZ2V0XCIpO1xuZnVuY3Rpb24gZ2V0QmluZGluZ0RpY3Rpb25hcnkoY250bnIpIHtcbiAgICByZXR1cm4gY250bnIuX2JpbmRpbmdEaWN0aW9uYXJ5O1xufVxuZXhwb3J0cy5nZXRCaW5kaW5nRGljdGlvbmFyeSA9IGdldEJpbmRpbmdEaWN0aW9uYXJ5O1xuZnVuY3Rpb24gX2NyZWF0ZVRhcmdldChpc011bHRpSW5qZWN0LCB0YXJnZXRUeXBlLCBzZXJ2aWNlSWRlbnRpZmllciwgbmFtZSwga2V5LCB2YWx1ZSkge1xuICAgIHZhciBtZXRhZGF0YUtleSA9IGlzTXVsdGlJbmplY3QgPyBNRVRBREFUQV9LRVkuTVVMVElfSU5KRUNUX1RBRyA6IE1FVEFEQVRBX0tFWS5JTkpFQ1RfVEFHO1xuICAgIHZhciBpbmplY3RNZXRhZGF0YSA9IG5ldyBtZXRhZGF0YV8xLk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgdmFyIHRhcmdldCA9IG5ldyB0YXJnZXRfMS5UYXJnZXQodGFyZ2V0VHlwZSwgbmFtZSwgc2VydmljZUlkZW50aWZpZXIsIGluamVjdE1ldGFkYXRhKTtcbiAgICBpZiAoa2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIHRhZ01ldGFkYXRhID0gbmV3IG1ldGFkYXRhXzEuTWV0YWRhdGEoa2V5LCB2YWx1ZSk7XG4gICAgICAgIHRhcmdldC5tZXRhZGF0YS5wdXNoKHRhZ01ldGFkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIF9nZXRBY3RpdmVCaW5kaW5ncyhtZXRhZGF0YVJlYWRlciwgYXZvaWRDb25zdHJhaW50cywgY29udGV4dCwgcGFyZW50UmVxdWVzdCwgdGFyZ2V0KSB7XG4gICAgdmFyIGJpbmRpbmdzID0gZ2V0QmluZGluZ3MoY29udGV4dC5jb250YWluZXIsIHRhcmdldC5zZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgdmFyIGFjdGl2ZUJpbmRpbmdzID0gW107XG4gICAgaWYgKGJpbmRpbmdzLmxlbmd0aCA9PT0gYmluZGluZ19jb3VudF8xLkJpbmRpbmdDb3VudC5Ob0JpbmRpbmdzQXZhaWxhYmxlICYmXG4gICAgICAgIGNvbnRleHQuY29udGFpbmVyLm9wdGlvbnMuYXV0b0JpbmRJbmplY3RhYmxlICYmXG4gICAgICAgIHR5cGVvZiB0YXJnZXQuc2VydmljZUlkZW50aWZpZXIgPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgICAgICBtZXRhZGF0YVJlYWRlci5nZXRDb25zdHJ1Y3Rvck1ldGFkYXRhKHRhcmdldC5zZXJ2aWNlSWRlbnRpZmllcikuY29tcGlsZXJHZW5lcmF0ZWRNZXRhZGF0YSkge1xuICAgICAgICBjb250ZXh0LmNvbnRhaW5lci5iaW5kKHRhcmdldC5zZXJ2aWNlSWRlbnRpZmllcikudG9TZWxmKCk7XG4gICAgICAgIGJpbmRpbmdzID0gZ2V0QmluZGluZ3MoY29udGV4dC5jb250YWluZXIsIHRhcmdldC5zZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgfVxuICAgIGlmICghYXZvaWRDb25zdHJhaW50cykge1xuICAgICAgICBhY3RpdmVCaW5kaW5ncyA9IGJpbmRpbmdzLmZpbHRlcihmdW5jdGlvbiAoYmluZGluZykge1xuICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgcmVxdWVzdF8xLlJlcXVlc3QoYmluZGluZy5zZXJ2aWNlSWRlbnRpZmllciwgY29udGV4dCwgcGFyZW50UmVxdWVzdCwgYmluZGluZywgdGFyZ2V0KTtcbiAgICAgICAgICAgIHJldHVybiBiaW5kaW5nLmNvbnN0cmFpbnQocmVxdWVzdCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgYWN0aXZlQmluZGluZ3MgPSBiaW5kaW5ncztcbiAgICB9XG4gICAgX3ZhbGlkYXRlQWN0aXZlQmluZGluZ0NvdW50KHRhcmdldC5zZXJ2aWNlSWRlbnRpZmllciwgYWN0aXZlQmluZGluZ3MsIHRhcmdldCwgY29udGV4dC5jb250YWluZXIpO1xuICAgIHJldHVybiBhY3RpdmVCaW5kaW5ncztcbn1cbmZ1bmN0aW9uIF92YWxpZGF0ZUFjdGl2ZUJpbmRpbmdDb3VudChzZXJ2aWNlSWRlbnRpZmllciwgYmluZGluZ3MsIHRhcmdldCwgY29udGFpbmVyKSB7XG4gICAgc3dpdGNoIChiaW5kaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSBiaW5kaW5nX2NvdW50XzEuQmluZGluZ0NvdW50Lk5vQmluZGluZ3NBdmFpbGFibGU6XG4gICAgICAgICAgICBpZiAodGFyZ2V0LmlzT3B0aW9uYWwoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBiaW5kaW5ncztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBzZXJ2aWNlSWRlbnRpZmllclN0cmluZyA9IHNlcmlhbGl6YXRpb25fMS5nZXRTZXJ2aWNlSWRlbnRpZmllckFzU3RyaW5nKHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB2YXIgbXNnID0gRVJST1JfTVNHUy5OT1RfUkVHSVNURVJFRDtcbiAgICAgICAgICAgICAgICBtc2cgKz0gc2VyaWFsaXphdGlvbl8xLmxpc3RNZXRhZGF0YUZvclRhcmdldChzZXJ2aWNlSWRlbnRpZmllclN0cmluZywgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBtc2cgKz0gc2VyaWFsaXphdGlvbl8xLmxpc3RSZWdpc3RlcmVkQmluZGluZ3NGb3JTZXJ2aWNlSWRlbnRpZmllcihjb250YWluZXIsIHNlcnZpY2VJZGVudGlmaWVyU3RyaW5nLCBnZXRCaW5kaW5ncyk7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgYmluZGluZ19jb3VudF8xLkJpbmRpbmdDb3VudC5Pbmx5T25lQmluZGluZ0F2YWlsYWJsZTpcbiAgICAgICAgICAgIGlmICghdGFyZ2V0LmlzQXJyYXkoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBiaW5kaW5ncztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBiaW5kaW5nX2NvdW50XzEuQmluZGluZ0NvdW50Lk11bHRpcGxlQmluZGluZ3NBdmFpbGFibGU6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBpZiAoIXRhcmdldC5pc0FycmF5KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VydmljZUlkZW50aWZpZXJTdHJpbmcgPSBzZXJpYWxpemF0aW9uXzEuZ2V0U2VydmljZUlkZW50aWZpZXJBc1N0cmluZyhzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdmFyIG1zZyA9IEVSUk9SX01TR1MuQU1CSUdVT1VTX01BVENIICsgXCIgXCIgKyBzZXJ2aWNlSWRlbnRpZmllclN0cmluZztcbiAgICAgICAgICAgICAgICBtc2cgKz0gc2VyaWFsaXphdGlvbl8xLmxpc3RSZWdpc3RlcmVkQmluZGluZ3NGb3JTZXJ2aWNlSWRlbnRpZmllcihjb250YWluZXIsIHNlcnZpY2VJZGVudGlmaWVyU3RyaW5nLCBnZXRCaW5kaW5ncyk7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmluZGluZ3M7XG4gICAgICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZVN1YlJlcXVlc3RzKG1ldGFkYXRhUmVhZGVyLCBhdm9pZENvbnN0cmFpbnRzLCBzZXJ2aWNlSWRlbnRpZmllciwgY29udGV4dCwgcGFyZW50UmVxdWVzdCwgdGFyZ2V0KSB7XG4gICAgdmFyIGFjdGl2ZUJpbmRpbmdzO1xuICAgIHZhciBjaGlsZFJlcXVlc3Q7XG4gICAgaWYgKHBhcmVudFJlcXVlc3QgPT09IG51bGwpIHtcbiAgICAgICAgYWN0aXZlQmluZGluZ3MgPSBfZ2V0QWN0aXZlQmluZGluZ3MobWV0YWRhdGFSZWFkZXIsIGF2b2lkQ29uc3RyYWludHMsIGNvbnRleHQsIG51bGwsIHRhcmdldCk7XG4gICAgICAgIGNoaWxkUmVxdWVzdCA9IG5ldyByZXF1ZXN0XzEuUmVxdWVzdChzZXJ2aWNlSWRlbnRpZmllciwgY29udGV4dCwgbnVsbCwgYWN0aXZlQmluZGluZ3MsIHRhcmdldCk7XG4gICAgICAgIHZhciB0aGVQbGFuID0gbmV3IHBsYW5fMS5QbGFuKGNvbnRleHQsIGNoaWxkUmVxdWVzdCk7XG4gICAgICAgIGNvbnRleHQuYWRkUGxhbih0aGVQbGFuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGFjdGl2ZUJpbmRpbmdzID0gX2dldEFjdGl2ZUJpbmRpbmdzKG1ldGFkYXRhUmVhZGVyLCBhdm9pZENvbnN0cmFpbnRzLCBjb250ZXh0LCBwYXJlbnRSZXF1ZXN0LCB0YXJnZXQpO1xuICAgICAgICBjaGlsZFJlcXVlc3QgPSBwYXJlbnRSZXF1ZXN0LmFkZENoaWxkUmVxdWVzdCh0YXJnZXQuc2VydmljZUlkZW50aWZpZXIsIGFjdGl2ZUJpbmRpbmdzLCB0YXJnZXQpO1xuICAgIH1cbiAgICBhY3RpdmVCaW5kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uIChiaW5kaW5nKSB7XG4gICAgICAgIHZhciBzdWJDaGlsZFJlcXVlc3QgPSBudWxsO1xuICAgICAgICBpZiAodGFyZ2V0LmlzQXJyYXkoKSkge1xuICAgICAgICAgICAgc3ViQ2hpbGRSZXF1ZXN0ID0gY2hpbGRSZXF1ZXN0LmFkZENoaWxkUmVxdWVzdChiaW5kaW5nLnNlcnZpY2VJZGVudGlmaWVyLCBiaW5kaW5nLCB0YXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGJpbmRpbmcuY2FjaGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdWJDaGlsZFJlcXVlc3QgPSBjaGlsZFJlcXVlc3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJpbmRpbmcudHlwZSA9PT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5JbnN0YW5jZSAmJiBiaW5kaW5nLmltcGxlbWVudGF0aW9uVHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIGRlcGVuZGVuY2llcyA9IHJlZmxlY3Rpb25fdXRpbHNfMS5nZXREZXBlbmRlbmNpZXMobWV0YWRhdGFSZWFkZXIsIGJpbmRpbmcuaW1wbGVtZW50YXRpb25UeXBlKTtcbiAgICAgICAgICAgIGlmICghY29udGV4dC5jb250YWluZXIub3B0aW9ucy5za2lwQmFzZUNsYXNzQ2hlY2tzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJhc2VDbGFzc0RlcGVuZGVuY3lDb3VudCA9IHJlZmxlY3Rpb25fdXRpbHNfMS5nZXRCYXNlQ2xhc3NEZXBlbmRlbmN5Q291bnQobWV0YWRhdGFSZWFkZXIsIGJpbmRpbmcuaW1wbGVtZW50YXRpb25UeXBlKTtcbiAgICAgICAgICAgICAgICBpZiAoZGVwZW5kZW5jaWVzLmxlbmd0aCA8IGJhc2VDbGFzc0RlcGVuZGVuY3lDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3IgPSBFUlJPUl9NU0dTLkFSR1VNRU5UU19MRU5HVEhfTUlTTUFUQ0gocmVmbGVjdGlvbl91dGlsc18xLmdldEZ1bmN0aW9uTmFtZShiaW5kaW5nLmltcGxlbWVudGF0aW9uVHlwZSkpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlcGVuZGVuY2llcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXBlbmRlbmN5KSB7XG4gICAgICAgICAgICAgICAgX2NyZWF0ZVN1YlJlcXVlc3RzKG1ldGFkYXRhUmVhZGVyLCBmYWxzZSwgZGVwZW5kZW5jeS5zZXJ2aWNlSWRlbnRpZmllciwgY29udGV4dCwgc3ViQ2hpbGRSZXF1ZXN0LCBkZXBlbmRlbmN5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBnZXRCaW5kaW5ncyhjb250YWluZXIsIHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgdmFyIGJpbmRpbmdzID0gW107XG4gICAgdmFyIGJpbmRpbmdEaWN0aW9uYXJ5ID0gZ2V0QmluZGluZ0RpY3Rpb25hcnkoY29udGFpbmVyKTtcbiAgICBpZiAoYmluZGluZ0RpY3Rpb25hcnkuaGFzS2V5KHNlcnZpY2VJZGVudGlmaWVyKSkge1xuICAgICAgICBiaW5kaW5ncyA9IGJpbmRpbmdEaWN0aW9uYXJ5LmdldChzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNvbnRhaW5lci5wYXJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgYmluZGluZ3MgPSBnZXRCaW5kaW5ncyhjb250YWluZXIucGFyZW50LCBzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgfVxuICAgIHJldHVybiBiaW5kaW5ncztcbn1cbmZ1bmN0aW9uIHBsYW4obWV0YWRhdGFSZWFkZXIsIGNvbnRhaW5lciwgaXNNdWx0aUluamVjdCwgdGFyZ2V0VHlwZSwgc2VydmljZUlkZW50aWZpZXIsIGtleSwgdmFsdWUsIGF2b2lkQ29uc3RyYWludHMpIHtcbiAgICBpZiAoYXZvaWRDb25zdHJhaW50cyA9PT0gdm9pZCAwKSB7IGF2b2lkQ29uc3RyYWludHMgPSBmYWxzZTsgfVxuICAgIHZhciBjb250ZXh0ID0gbmV3IGNvbnRleHRfMS5Db250ZXh0KGNvbnRhaW5lcik7XG4gICAgdmFyIHRhcmdldCA9IF9jcmVhdGVUYXJnZXQoaXNNdWx0aUluamVjdCwgdGFyZ2V0VHlwZSwgc2VydmljZUlkZW50aWZpZXIsIFwiXCIsIGtleSwgdmFsdWUpO1xuICAgIHRyeSB7XG4gICAgICAgIF9jcmVhdGVTdWJSZXF1ZXN0cyhtZXRhZGF0YVJlYWRlciwgYXZvaWRDb25zdHJhaW50cywgc2VydmljZUlkZW50aWZpZXIsIGNvbnRleHQsIG51bGwsIHRhcmdldCk7XG4gICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGV4Y2VwdGlvbnNfMS5pc1N0YWNrT3ZlcmZsb3dFeGVwdGlvbihlcnJvcikpIHtcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnBsYW4pIHtcbiAgICAgICAgICAgICAgICBzZXJpYWxpemF0aW9uXzEuY2lyY3VsYXJEZXBlbmRlbmN5VG9FeGNlcHRpb24oY29udGV4dC5wbGFuLnJvb3RSZXF1ZXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG5leHBvcnRzLnBsYW4gPSBwbGFuO1xuZnVuY3Rpb24gY3JlYXRlTW9ja1JlcXVlc3QoY29udGFpbmVyLCBzZXJ2aWNlSWRlbnRpZmllciwga2V5LCB2YWx1ZSkge1xuICAgIHZhciB0YXJnZXQgPSBuZXcgdGFyZ2V0XzEuVGFyZ2V0KGxpdGVyYWxfdHlwZXNfMS5UYXJnZXRUeXBlRW51bS5WYXJpYWJsZSwgXCJcIiwgc2VydmljZUlkZW50aWZpZXIsIG5ldyBtZXRhZGF0YV8xLk1ldGFkYXRhKGtleSwgdmFsdWUpKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBjb250ZXh0XzEuQ29udGV4dChjb250YWluZXIpO1xuICAgIHZhciByZXF1ZXN0ID0gbmV3IHJlcXVlc3RfMS5SZXF1ZXN0KHNlcnZpY2VJZGVudGlmaWVyLCBjb250ZXh0LCBudWxsLCBbXSwgdGFyZ2V0KTtcbiAgICByZXR1cm4gcmVxdWVzdDtcbn1cbmV4cG9ydHMuY3JlYXRlTW9ja1JlcXVlc3QgPSBjcmVhdGVNb2NrUmVxdWVzdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBsYW5uZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/planning/planner.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/planning/queryable_string.js": /*!*****************************************************************!*\ !*** ./node_modules/inversify/lib/planning/queryable_string.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueryableString = void 0;\nvar QueryableString = (function () {\n function QueryableString(str) {\n this.str = str;\n }\n QueryableString.prototype.startsWith = function (searchString) {\n return this.str.indexOf(searchString) === 0;\n };\n QueryableString.prototype.endsWith = function (searchString) {\n var reverseString = \"\";\n var reverseSearchString = searchString.split(\"\").reverse().join(\"\");\n reverseString = this.str.split(\"\").reverse().join(\"\");\n return this.startsWith.call({ str: reverseString }, reverseSearchString);\n };\n QueryableString.prototype.contains = function (searchString) {\n return (this.str.indexOf(searchString) !== -1);\n };\n QueryableString.prototype.equals = function (compareString) {\n return this.str === compareString;\n };\n QueryableString.prototype.value = function () {\n return this.str;\n };\n return QueryableString;\n}());\nexports.QueryableString = QueryableString;\n//# sourceMappingURL=queryable_string.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9xdWVyeWFibGVfc3RyaW5nLmpzP2NmMTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscUJBQXFCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnZlcnNpZnkvbGliL3BsYW5uaW5nL3F1ZXJ5YWJsZV9zdHJpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUXVlcnlhYmxlU3RyaW5nID0gdm9pZCAwO1xudmFyIFF1ZXJ5YWJsZVN0cmluZyA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUXVlcnlhYmxlU3RyaW5nKHN0cikge1xuICAgICAgICB0aGlzLnN0ciA9IHN0cjtcbiAgICB9XG4gICAgUXVlcnlhYmxlU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoID0gZnVuY3Rpb24gKHNlYXJjaFN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHIuaW5kZXhPZihzZWFyY2hTdHJpbmcpID09PSAwO1xuICAgIH07XG4gICAgUXVlcnlhYmxlU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aCA9IGZ1bmN0aW9uIChzZWFyY2hTdHJpbmcpIHtcbiAgICAgICAgdmFyIHJldmVyc2VTdHJpbmcgPSBcIlwiO1xuICAgICAgICB2YXIgcmV2ZXJzZVNlYXJjaFN0cmluZyA9IHNlYXJjaFN0cmluZy5zcGxpdChcIlwiKS5yZXZlcnNlKCkuam9pbihcIlwiKTtcbiAgICAgICAgcmV2ZXJzZVN0cmluZyA9IHRoaXMuc3RyLnNwbGl0KFwiXCIpLnJldmVyc2UoKS5qb2luKFwiXCIpO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydHNXaXRoLmNhbGwoeyBzdHI6IHJldmVyc2VTdHJpbmcgfSwgcmV2ZXJzZVNlYXJjaFN0cmluZyk7XG4gICAgfTtcbiAgICBRdWVyeWFibGVTdHJpbmcucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gKHNlYXJjaFN0cmluZykge1xuICAgICAgICByZXR1cm4gKHRoaXMuc3RyLmluZGV4T2Yoc2VhcmNoU3RyaW5nKSAhPT0gLTEpO1xuICAgIH07XG4gICAgUXVlcnlhYmxlU3RyaW5nLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAoY29tcGFyZVN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHIgPT09IGNvbXBhcmVTdHJpbmc7XG4gICAgfTtcbiAgICBRdWVyeWFibGVTdHJpbmcucHJvdG90eXBlLnZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHI7XG4gICAgfTtcbiAgICByZXR1cm4gUXVlcnlhYmxlU3RyaW5nO1xufSgpKTtcbmV4cG9ydHMuUXVlcnlhYmxlU3RyaW5nID0gUXVlcnlhYmxlU3RyaW5nO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cXVlcnlhYmxlX3N0cmluZy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/planning/queryable_string.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/planning/reflection_utils.js": /*!*****************************************************************!*\ !*** ./node_modules/inversify/lib/planning/reflection_utils.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFunctionName = exports.getBaseClassDependencyCount = exports.getDependencies = void 0;\nvar inject_1 = __webpack_require__(/*! ../annotation/inject */ \"./node_modules/inversify/lib/annotation/inject.js\");\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/inversify/lib/constants/literal_types.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar serialization_1 = __webpack_require__(/*! ../utils/serialization */ \"./node_modules/inversify/lib/utils/serialization.js\");\nObject.defineProperty(exports, \"getFunctionName\", { enumerable: true, get: function () { return serialization_1.getFunctionName; } });\nvar target_1 = __webpack_require__(/*! ./target */ \"./node_modules/inversify/lib/planning/target.js\");\nfunction getDependencies(metadataReader, func) {\n var constructorName = serialization_1.getFunctionName(func);\n var targets = getTargets(metadataReader, constructorName, func, false);\n return targets;\n}\nexports.getDependencies = getDependencies;\nfunction getTargets(metadataReader, constructorName, func, isBaseClass) {\n var metadata = metadataReader.getConstructorMetadata(func);\n var serviceIdentifiers = metadata.compilerGeneratedMetadata;\n if (serviceIdentifiers === undefined) {\n var msg = ERROR_MSGS.MISSING_INJECTABLE_ANNOTATION + \" \" + constructorName + \".\";\n throw new Error(msg);\n }\n var constructorArgsMetadata = metadata.userGeneratedMetadata;\n var keys = Object.keys(constructorArgsMetadata);\n var hasUserDeclaredUnknownInjections = (func.length === 0 && keys.length > 0);\n var hasOptionalParameters = keys.length > func.length;\n var iterations = (hasUserDeclaredUnknownInjections || hasOptionalParameters) ? keys.length : func.length;\n var constructorTargets = getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations);\n var propertyTargets = getClassPropsAsTargets(metadataReader, func);\n var targets = __spreadArray(__spreadArray([], constructorTargets), propertyTargets);\n return targets;\n}\nfunction getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata) {\n var targetMetadata = constructorArgsMetadata[index.toString()] || [];\n var metadata = formatTargetMetadata(targetMetadata);\n var isManaged = metadata.unmanaged !== true;\n var serviceIdentifier = serviceIdentifiers[index];\n var injectIdentifier = (metadata.inject || metadata.multiInject);\n serviceIdentifier = (injectIdentifier) ? (injectIdentifier) : serviceIdentifier;\n if (serviceIdentifier instanceof inject_1.LazyServiceIdentifer) {\n serviceIdentifier = serviceIdentifier.unwrap();\n }\n if (isManaged) {\n var isObject = serviceIdentifier === Object;\n var isFunction = serviceIdentifier === Function;\n var isUndefined = serviceIdentifier === undefined;\n var isUnknownType = (isObject || isFunction || isUndefined);\n if (!isBaseClass && isUnknownType) {\n var msg = ERROR_MSGS.MISSING_INJECT_ANNOTATION + \" argument \" + index + \" in class \" + constructorName + \".\";\n throw new Error(msg);\n }\n var target = new target_1.Target(literal_types_1.TargetTypeEnum.ConstructorArgument, metadata.targetName, serviceIdentifier);\n target.metadata = targetMetadata;\n return target;\n }\n return null;\n}\nfunction getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations) {\n var targets = [];\n for (var i = 0; i < iterations; i++) {\n var index = i;\n var target = getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata);\n if (target !== null) {\n targets.push(target);\n }\n }\n return targets;\n}\nfunction getClassPropsAsTargets(metadataReader, constructorFunc) {\n var classPropsMetadata = metadataReader.getPropertiesMetadata(constructorFunc);\n var targets = [];\n var keys = Object.keys(classPropsMetadata);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var targetMetadata = classPropsMetadata[key];\n var metadata = formatTargetMetadata(classPropsMetadata[key]);\n var targetName = metadata.targetName || key;\n var serviceIdentifier = (metadata.inject || metadata.multiInject);\n var target = new target_1.Target(literal_types_1.TargetTypeEnum.ClassProperty, targetName, serviceIdentifier);\n target.metadata = targetMetadata;\n targets.push(target);\n }\n var baseConstructor = Object.getPrototypeOf(constructorFunc.prototype).constructor;\n if (baseConstructor !== Object) {\n var baseTargets = getClassPropsAsTargets(metadataReader, baseConstructor);\n targets = __spreadArray(__spreadArray([], targets), baseTargets);\n }\n return targets;\n}\nfunction getBaseClassDependencyCount(metadataReader, func) {\n var baseConstructor = Object.getPrototypeOf(func.prototype).constructor;\n if (baseConstructor !== Object) {\n var baseConstructorName = serialization_1.getFunctionName(baseConstructor);\n var targets = getTargets(metadataReader, baseConstructorName, baseConstructor, true);\n var metadata = targets.map(function (t) {\n return t.metadata.filter(function (m) {\n return m.key === METADATA_KEY.UNMANAGED_TAG;\n });\n });\n var unmanagedCount = [].concat.apply([], metadata).length;\n var dependencyCount = targets.length - unmanagedCount;\n if (dependencyCount > 0) {\n return dependencyCount;\n }\n else {\n return getBaseClassDependencyCount(metadataReader, baseConstructor);\n }\n }\n else {\n return 0;\n }\n}\nexports.getBaseClassDependencyCount = getBaseClassDependencyCount;\nfunction formatTargetMetadata(targetMetadata) {\n var targetMetadataMap = {};\n targetMetadata.forEach(function (m) {\n targetMetadataMap[m.key.toString()] = m.value;\n });\n return {\n inject: targetMetadataMap[METADATA_KEY.INJECT_TAG],\n multiInject: targetMetadataMap[METADATA_KEY.MULTI_INJECT_TAG],\n targetName: targetMetadataMap[METADATA_KEY.NAME_TAG],\n unmanaged: targetMetadataMap[METADATA_KEY.UNMANAGED_TAG]\n };\n}\n//# sourceMappingURL=reflection_utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9yZWZsZWN0aW9uX3V0aWxzLmpzPzdkYmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBLG9EQUFvRCxRQUFRO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLCtFQUFzQjtBQUM3QyxpQkFBaUIsbUJBQU8sQ0FBQyxxRkFBeUI7QUFDbEQsc0JBQXNCLG1CQUFPLENBQUMsMkZBQTRCO0FBQzFELG1CQUFtQixtQkFBTyxDQUFDLDJGQUE0QjtBQUN2RCxzQkFBc0IsbUJBQU8sQ0FBQyxtRkFBd0I7QUFDdEQsbURBQW1ELHFDQUFxQyx3Q0FBd0MsRUFBRSxFQUFFO0FBQ3BJLGVBQWUsbUJBQU8sQ0FBQyxpRUFBVTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsb0JBQW9CO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9yZWZsZWN0aW9uX3V0aWxzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGlsID0gZnJvbS5sZW5ndGgsIGogPSB0by5sZW5ndGg7IGkgPCBpbDsgaSsrLCBqKyspXG4gICAgICAgIHRvW2pdID0gZnJvbVtpXTtcbiAgICByZXR1cm4gdG87XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5nZXRGdW5jdGlvbk5hbWUgPSBleHBvcnRzLmdldEJhc2VDbGFzc0RlcGVuZGVuY3lDb3VudCA9IGV4cG9ydHMuZ2V0RGVwZW5kZW5jaWVzID0gdm9pZCAwO1xudmFyIGluamVjdF8xID0gcmVxdWlyZShcIi4uL2Fubm90YXRpb24vaW5qZWN0XCIpO1xudmFyIEVSUk9SX01TR1MgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2Vycm9yX21zZ3NcIik7XG52YXIgbGl0ZXJhbF90eXBlc18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9saXRlcmFsX3R5cGVzXCIpO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbnZhciBzZXJpYWxpemF0aW9uXzEgPSByZXF1aXJlKFwiLi4vdXRpbHMvc2VyaWFsaXphdGlvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldEZ1bmN0aW9uTmFtZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VyaWFsaXphdGlvbl8xLmdldEZ1bmN0aW9uTmFtZTsgfSB9KTtcbnZhciB0YXJnZXRfMSA9IHJlcXVpcmUoXCIuL3RhcmdldFwiKTtcbmZ1bmN0aW9uIGdldERlcGVuZGVuY2llcyhtZXRhZGF0YVJlYWRlciwgZnVuYykge1xuICAgIHZhciBjb25zdHJ1Y3Rvck5hbWUgPSBzZXJpYWxpemF0aW9uXzEuZ2V0RnVuY3Rpb25OYW1lKGZ1bmMpO1xuICAgIHZhciB0YXJnZXRzID0gZ2V0VGFyZ2V0cyhtZXRhZGF0YVJlYWRlciwgY29uc3RydWN0b3JOYW1lLCBmdW5jLCBmYWxzZSk7XG4gICAgcmV0dXJuIHRhcmdldHM7XG59XG5leHBvcnRzLmdldERlcGVuZGVuY2llcyA9IGdldERlcGVuZGVuY2llcztcbmZ1bmN0aW9uIGdldFRhcmdldHMobWV0YWRhdGFSZWFkZXIsIGNvbnN0cnVjdG9yTmFtZSwgZnVuYywgaXNCYXNlQ2xhc3MpIHtcbiAgICB2YXIgbWV0YWRhdGEgPSBtZXRhZGF0YVJlYWRlci5nZXRDb25zdHJ1Y3Rvck1ldGFkYXRhKGZ1bmMpO1xuICAgIHZhciBzZXJ2aWNlSWRlbnRpZmllcnMgPSBtZXRhZGF0YS5jb21waWxlckdlbmVyYXRlZE1ldGFkYXRhO1xuICAgIGlmIChzZXJ2aWNlSWRlbnRpZmllcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgbXNnID0gRVJST1JfTVNHUy5NSVNTSU5HX0lOSkVDVEFCTEVfQU5OT1RBVElPTiArIFwiIFwiICsgY29uc3RydWN0b3JOYW1lICsgXCIuXCI7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgIH1cbiAgICB2YXIgY29uc3RydWN0b3JBcmdzTWV0YWRhdGEgPSBtZXRhZGF0YS51c2VyR2VuZXJhdGVkTWV0YWRhdGE7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhjb25zdHJ1Y3RvckFyZ3NNZXRhZGF0YSk7XG4gICAgdmFyIGhhc1VzZXJEZWNsYXJlZFVua25vd25JbmplY3Rpb25zID0gKGZ1bmMubGVuZ3RoID09PSAwICYmIGtleXMubGVuZ3RoID4gMCk7XG4gICAgdmFyIGhhc09wdGlvbmFsUGFyYW1ldGVycyA9IGtleXMubGVuZ3RoID4gZnVuYy5sZW5ndGg7XG4gICAgdmFyIGl0ZXJhdGlvbnMgPSAoaGFzVXNlckRlY2xhcmVkVW5rbm93bkluamVjdGlvbnMgfHwgaGFzT3B0aW9uYWxQYXJhbWV0ZXJzKSA/IGtleXMubGVuZ3RoIDogZnVuYy5sZW5ndGg7XG4gICAgdmFyIGNvbnN0cnVjdG9yVGFyZ2V0cyA9IGdldENvbnN0cnVjdG9yQXJnc0FzVGFyZ2V0cyhpc0Jhc2VDbGFzcywgY29uc3RydWN0b3JOYW1lLCBzZXJ2aWNlSWRlbnRpZmllcnMsIGNvbnN0cnVjdG9yQXJnc01ldGFkYXRhLCBpdGVyYXRpb25zKTtcbiAgICB2YXIgcHJvcGVydHlUYXJnZXRzID0gZ2V0Q2xhc3NQcm9wc0FzVGFyZ2V0cyhtZXRhZGF0YVJlYWRlciwgZnVuYyk7XG4gICAgdmFyIHRhcmdldHMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIGNvbnN0cnVjdG9yVGFyZ2V0cyksIHByb3BlcnR5VGFyZ2V0cyk7XG4gICAgcmV0dXJuIHRhcmdldHM7XG59XG5mdW5jdGlvbiBnZXRDb25zdHJ1Y3RvckFyZ3NBc1RhcmdldChpbmRleCwgaXNCYXNlQ2xhc3MsIGNvbnN0cnVjdG9yTmFtZSwgc2VydmljZUlkZW50aWZpZXJzLCBjb25zdHJ1Y3RvckFyZ3NNZXRhZGF0YSkge1xuICAgIHZhciB0YXJnZXRNZXRhZGF0YSA9IGNvbnN0cnVjdG9yQXJnc01ldGFkYXRhW2luZGV4LnRvU3RyaW5nKCldIHx8IFtdO1xuICAgIHZhciBtZXRhZGF0YSA9IGZvcm1hdFRhcmdldE1ldGFkYXRhKHRhcmdldE1ldGFkYXRhKTtcbiAgICB2YXIgaXNNYW5hZ2VkID0gbWV0YWRhdGEudW5tYW5hZ2VkICE9PSB0cnVlO1xuICAgIHZhciBzZXJ2aWNlSWRlbnRpZmllciA9IHNlcnZpY2VJZGVudGlmaWVyc1tpbmRleF07XG4gICAgdmFyIGluamVjdElkZW50aWZpZXIgPSAobWV0YWRhdGEuaW5qZWN0IHx8IG1ldGFkYXRhLm11bHRpSW5qZWN0KTtcbiAgICBzZXJ2aWNlSWRlbnRpZmllciA9IChpbmplY3RJZGVudGlmaWVyKSA/IChpbmplY3RJZGVudGlmaWVyKSA6IHNlcnZpY2VJZGVudGlmaWVyO1xuICAgIGlmIChzZXJ2aWNlSWRlbnRpZmllciBpbnN0YW5jZW9mIGluamVjdF8xLkxhenlTZXJ2aWNlSWRlbnRpZmVyKSB7XG4gICAgICAgIHNlcnZpY2VJZGVudGlmaWVyID0gc2VydmljZUlkZW50aWZpZXIudW53cmFwKCk7XG4gICAgfVxuICAgIGlmIChpc01hbmFnZWQpIHtcbiAgICAgICAgdmFyIGlzT2JqZWN0ID0gc2VydmljZUlkZW50aWZpZXIgPT09IE9iamVjdDtcbiAgICAgICAgdmFyIGlzRnVuY3Rpb24gPSBzZXJ2aWNlSWRlbnRpZmllciA9PT0gRnVuY3Rpb247XG4gICAgICAgIHZhciBpc1VuZGVmaW5lZCA9IHNlcnZpY2VJZGVudGlmaWVyID09PSB1bmRlZmluZWQ7XG4gICAgICAgIHZhciBpc1Vua25vd25UeXBlID0gKGlzT2JqZWN0IHx8IGlzRnVuY3Rpb24gfHwgaXNVbmRlZmluZWQpO1xuICAgICAgICBpZiAoIWlzQmFzZUNsYXNzICYmIGlzVW5rbm93blR5cGUpIHtcbiAgICAgICAgICAgIHZhciBtc2cgPSBFUlJPUl9NU0dTLk1JU1NJTkdfSU5KRUNUX0FOTk9UQVRJT04gKyBcIiBhcmd1bWVudCBcIiArIGluZGV4ICsgXCIgaW4gY2xhc3MgXCIgKyBjb25zdHJ1Y3Rvck5hbWUgKyBcIi5cIjtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0YXJnZXQgPSBuZXcgdGFyZ2V0XzEuVGFyZ2V0KGxpdGVyYWxfdHlwZXNfMS5UYXJnZXRUeXBlRW51bS5Db25zdHJ1Y3RvckFyZ3VtZW50LCBtZXRhZGF0YS50YXJnZXROYW1lLCBzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgIHRhcmdldC5tZXRhZGF0YSA9IHRhcmdldE1ldGFkYXRhO1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGdldENvbnN0cnVjdG9yQXJnc0FzVGFyZ2V0cyhpc0Jhc2VDbGFzcywgY29uc3RydWN0b3JOYW1lLCBzZXJ2aWNlSWRlbnRpZmllcnMsIGNvbnN0cnVjdG9yQXJnc01ldGFkYXRhLCBpdGVyYXRpb25zKSB7XG4gICAgdmFyIHRhcmdldHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZXJhdGlvbnM7IGkrKykge1xuICAgICAgICB2YXIgaW5kZXggPSBpO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gZ2V0Q29uc3RydWN0b3JBcmdzQXNUYXJnZXQoaW5kZXgsIGlzQmFzZUNsYXNzLCBjb25zdHJ1Y3Rvck5hbWUsIHNlcnZpY2VJZGVudGlmaWVycywgY29uc3RydWN0b3JBcmdzTWV0YWRhdGEpO1xuICAgICAgICBpZiAodGFyZ2V0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0YXJnZXRzLnB1c2godGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0cztcbn1cbmZ1bmN0aW9uIGdldENsYXNzUHJvcHNBc1RhcmdldHMobWV0YWRhdGFSZWFkZXIsIGNvbnN0cnVjdG9yRnVuYykge1xuICAgIHZhciBjbGFzc1Byb3BzTWV0YWRhdGEgPSBtZXRhZGF0YVJlYWRlci5nZXRQcm9wZXJ0aWVzTWV0YWRhdGEoY29uc3RydWN0b3JGdW5jKTtcbiAgICB2YXIgdGFyZ2V0cyA9IFtdO1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoY2xhc3NQcm9wc01ldGFkYXRhKTtcbiAgICBmb3IgKHZhciBfaSA9IDAsIGtleXNfMSA9IGtleXM7IF9pIDwga2V5c18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIga2V5ID0ga2V5c18xW19pXTtcbiAgICAgICAgdmFyIHRhcmdldE1ldGFkYXRhID0gY2xhc3NQcm9wc01ldGFkYXRhW2tleV07XG4gICAgICAgIHZhciBtZXRhZGF0YSA9IGZvcm1hdFRhcmdldE1ldGFkYXRhKGNsYXNzUHJvcHNNZXRhZGF0YVtrZXldKTtcbiAgICAgICAgdmFyIHRhcmdldE5hbWUgPSBtZXRhZGF0YS50YXJnZXROYW1lIHx8IGtleTtcbiAgICAgICAgdmFyIHNlcnZpY2VJZGVudGlmaWVyID0gKG1ldGFkYXRhLmluamVjdCB8fCBtZXRhZGF0YS5tdWx0aUluamVjdCk7XG4gICAgICAgIHZhciB0YXJnZXQgPSBuZXcgdGFyZ2V0XzEuVGFyZ2V0KGxpdGVyYWxfdHlwZXNfMS5UYXJnZXRUeXBlRW51bS5DbGFzc1Byb3BlcnR5LCB0YXJnZXROYW1lLCBzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgIHRhcmdldC5tZXRhZGF0YSA9IHRhcmdldE1ldGFkYXRhO1xuICAgICAgICB0YXJnZXRzLnB1c2godGFyZ2V0KTtcbiAgICB9XG4gICAgdmFyIGJhc2VDb25zdHJ1Y3RvciA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjb25zdHJ1Y3RvckZ1bmMucHJvdG90eXBlKS5jb25zdHJ1Y3RvcjtcbiAgICBpZiAoYmFzZUNvbnN0cnVjdG9yICE9PSBPYmplY3QpIHtcbiAgICAgICAgdmFyIGJhc2VUYXJnZXRzID0gZ2V0Q2xhc3NQcm9wc0FzVGFyZ2V0cyhtZXRhZGF0YVJlYWRlciwgYmFzZUNvbnN0cnVjdG9yKTtcbiAgICAgICAgdGFyZ2V0cyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgdGFyZ2V0cyksIGJhc2VUYXJnZXRzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldHM7XG59XG5mdW5jdGlvbiBnZXRCYXNlQ2xhc3NEZXBlbmRlbmN5Q291bnQobWV0YWRhdGFSZWFkZXIsIGZ1bmMpIHtcbiAgICB2YXIgYmFzZUNvbnN0cnVjdG9yID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGZ1bmMucHJvdG90eXBlKS5jb25zdHJ1Y3RvcjtcbiAgICBpZiAoYmFzZUNvbnN0cnVjdG9yICE9PSBPYmplY3QpIHtcbiAgICAgICAgdmFyIGJhc2VDb25zdHJ1Y3Rvck5hbWUgPSBzZXJpYWxpemF0aW9uXzEuZ2V0RnVuY3Rpb25OYW1lKGJhc2VDb25zdHJ1Y3Rvcik7XG4gICAgICAgIHZhciB0YXJnZXRzID0gZ2V0VGFyZ2V0cyhtZXRhZGF0YVJlYWRlciwgYmFzZUNvbnN0cnVjdG9yTmFtZSwgYmFzZUNvbnN0cnVjdG9yLCB0cnVlKTtcbiAgICAgICAgdmFyIG1ldGFkYXRhID0gdGFyZ2V0cy5tYXAoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0Lm1ldGFkYXRhLmZpbHRlcihmdW5jdGlvbiAobSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtLmtleSA9PT0gTUVUQURBVEFfS0VZLlVOTUFOQUdFRF9UQUc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB1bm1hbmFnZWRDb3VudCA9IFtdLmNvbmNhdC5hcHBseShbXSwgbWV0YWRhdGEpLmxlbmd0aDtcbiAgICAgICAgdmFyIGRlcGVuZGVuY3lDb3VudCA9IHRhcmdldHMubGVuZ3RoIC0gdW5tYW5hZ2VkQ291bnQ7XG4gICAgICAgIGlmIChkZXBlbmRlbmN5Q291bnQgPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVwZW5kZW5jeUNvdW50O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldEJhc2VDbGFzc0RlcGVuZGVuY3lDb3VudChtZXRhZGF0YVJlYWRlciwgYmFzZUNvbnN0cnVjdG9yKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxufVxuZXhwb3J0cy5nZXRCYXNlQ2xhc3NEZXBlbmRlbmN5Q291bnQgPSBnZXRCYXNlQ2xhc3NEZXBlbmRlbmN5Q291bnQ7XG5mdW5jdGlvbiBmb3JtYXRUYXJnZXRNZXRhZGF0YSh0YXJnZXRNZXRhZGF0YSkge1xuICAgIHZhciB0YXJnZXRNZXRhZGF0YU1hcCA9IHt9O1xuICAgIHRhcmdldE1ldGFkYXRhLmZvckVhY2goZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgdGFyZ2V0TWV0YWRhdGFNYXBbbS5rZXkudG9TdHJpbmcoKV0gPSBtLnZhbHVlO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIGluamVjdDogdGFyZ2V0TWV0YWRhdGFNYXBbTUVUQURBVEFfS0VZLklOSkVDVF9UQUddLFxuICAgICAgICBtdWx0aUluamVjdDogdGFyZ2V0TWV0YWRhdGFNYXBbTUVUQURBVEFfS0VZLk1VTFRJX0lOSkVDVF9UQUddLFxuICAgICAgICB0YXJnZXROYW1lOiB0YXJnZXRNZXRhZGF0YU1hcFtNRVRBREFUQV9LRVkuTkFNRV9UQUddLFxuICAgICAgICB1bm1hbmFnZWQ6IHRhcmdldE1ldGFkYXRhTWFwW01FVEFEQVRBX0tFWS5VTk1BTkFHRURfVEFHXVxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWZsZWN0aW9uX3V0aWxzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/planning/reflection_utils.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/planning/request.js": /*!********************************************************!*\ !*** ./node_modules/inversify/lib/planning/request.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Request = void 0;\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/inversify/lib/utils/id.js\");\nvar Request = (function () {\n function Request(serviceIdentifier, parentContext, parentRequest, bindings, target) {\n this.id = id_1.id();\n this.serviceIdentifier = serviceIdentifier;\n this.parentContext = parentContext;\n this.parentRequest = parentRequest;\n this.target = target;\n this.childRequests = [];\n this.bindings = (Array.isArray(bindings) ? bindings : [bindings]);\n this.requestScope = parentRequest === null\n ? new Map()\n : null;\n }\n Request.prototype.addChildRequest = function (serviceIdentifier, bindings, target) {\n var child = new Request(serviceIdentifier, this.parentContext, this, bindings, target);\n this.childRequests.push(child);\n return child;\n };\n return Request;\n}());\nexports.Request = Request;\n//# sourceMappingURL=request.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9yZXF1ZXN0LmpzP2M2MjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLFdBQVcsbUJBQU8sQ0FBQyw2REFBYTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvcGxhbm5pbmcvcmVxdWVzdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5SZXF1ZXN0ID0gdm9pZCAwO1xudmFyIGlkXzEgPSByZXF1aXJlKFwiLi4vdXRpbHMvaWRcIik7XG52YXIgUmVxdWVzdCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUmVxdWVzdChzZXJ2aWNlSWRlbnRpZmllciwgcGFyZW50Q29udGV4dCwgcGFyZW50UmVxdWVzdCwgYmluZGluZ3MsIHRhcmdldCkge1xuICAgICAgICB0aGlzLmlkID0gaWRfMS5pZCgpO1xuICAgICAgICB0aGlzLnNlcnZpY2VJZGVudGlmaWVyID0gc2VydmljZUlkZW50aWZpZXI7XG4gICAgICAgIHRoaXMucGFyZW50Q29udGV4dCA9IHBhcmVudENvbnRleHQ7XG4gICAgICAgIHRoaXMucGFyZW50UmVxdWVzdCA9IHBhcmVudFJlcXVlc3Q7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICB0aGlzLmNoaWxkUmVxdWVzdHMgPSBbXTtcbiAgICAgICAgdGhpcy5iaW5kaW5ncyA9IChBcnJheS5pc0FycmF5KGJpbmRpbmdzKSA/IGJpbmRpbmdzIDogW2JpbmRpbmdzXSk7XG4gICAgICAgIHRoaXMucmVxdWVzdFNjb3BlID0gcGFyZW50UmVxdWVzdCA9PT0gbnVsbFxuICAgICAgICAgICAgPyBuZXcgTWFwKClcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG4gICAgUmVxdWVzdC5wcm90b3R5cGUuYWRkQ2hpbGRSZXF1ZXN0ID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyLCBiaW5kaW5ncywgdGFyZ2V0KSB7XG4gICAgICAgIHZhciBjaGlsZCA9IG5ldyBSZXF1ZXN0KHNlcnZpY2VJZGVudGlmaWVyLCB0aGlzLnBhcmVudENvbnRleHQsIHRoaXMsIGJpbmRpbmdzLCB0YXJnZXQpO1xuICAgICAgICB0aGlzLmNoaWxkUmVxdWVzdHMucHVzaChjaGlsZCk7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9O1xuICAgIHJldHVybiBSZXF1ZXN0O1xufSgpKTtcbmV4cG9ydHMuUmVxdWVzdCA9IFJlcXVlc3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXF1ZXN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/planning/request.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/planning/target.js": /*!*******************************************************!*\ !*** ./node_modules/inversify/lib/planning/target.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Target = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/inversify/lib/utils/id.js\");\nvar metadata_1 = __webpack_require__(/*! ./metadata */ \"./node_modules/inversify/lib/planning/metadata.js\");\nvar queryable_string_1 = __webpack_require__(/*! ./queryable_string */ \"./node_modules/inversify/lib/planning/queryable_string.js\");\nvar Target = (function () {\n function Target(type, name, serviceIdentifier, namedOrTagged) {\n this.id = id_1.id();\n this.type = type;\n this.serviceIdentifier = serviceIdentifier;\n this.name = new queryable_string_1.QueryableString(name || \"\");\n this.metadata = new Array();\n var metadataItem = null;\n if (typeof namedOrTagged === \"string\") {\n metadataItem = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, namedOrTagged);\n }\n else if (namedOrTagged instanceof metadata_1.Metadata) {\n metadataItem = namedOrTagged;\n }\n if (metadataItem !== null) {\n this.metadata.push(metadataItem);\n }\n }\n Target.prototype.hasTag = function (key) {\n for (var _i = 0, _a = this.metadata; _i < _a.length; _i++) {\n var m = _a[_i];\n if (m.key === key) {\n return true;\n }\n }\n return false;\n };\n Target.prototype.isArray = function () {\n return this.hasTag(METADATA_KEY.MULTI_INJECT_TAG);\n };\n Target.prototype.matchesArray = function (name) {\n return this.matchesTag(METADATA_KEY.MULTI_INJECT_TAG)(name);\n };\n Target.prototype.isNamed = function () {\n return this.hasTag(METADATA_KEY.NAMED_TAG);\n };\n Target.prototype.isTagged = function () {\n return this.metadata.some(function (metadata) { return METADATA_KEY.NON_CUSTOM_TAG_KEYS.every(function (key) { return metadata.key !== key; }); });\n };\n Target.prototype.isOptional = function () {\n return this.matchesTag(METADATA_KEY.OPTIONAL_TAG)(true);\n };\n Target.prototype.getNamedTag = function () {\n if (this.isNamed()) {\n return this.metadata.filter(function (m) { return m.key === METADATA_KEY.NAMED_TAG; })[0];\n }\n return null;\n };\n Target.prototype.getCustomTags = function () {\n if (this.isTagged()) {\n return this.metadata.filter(function (metadata) { return METADATA_KEY.NON_CUSTOM_TAG_KEYS.every(function (key) { return metadata.key !== key; }); });\n }\n else {\n return null;\n }\n };\n Target.prototype.matchesNamedTag = function (name) {\n return this.matchesTag(METADATA_KEY.NAMED_TAG)(name);\n };\n Target.prototype.matchesTag = function (key) {\n var _this = this;\n return function (value) {\n for (var _i = 0, _a = _this.metadata; _i < _a.length; _i++) {\n var m = _a[_i];\n if (m.key === key && m.value === value) {\n return true;\n }\n }\n return false;\n };\n };\n return Target;\n}());\nexports.Target = Target;\n//# sourceMappingURL=target.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9wbGFubmluZy90YXJnZXQuanM/NzU3ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsbUJBQW1CLG1CQUFPLENBQUMsMkZBQTRCO0FBQ3ZELFdBQVcsbUJBQU8sQ0FBQyw2REFBYTtBQUNoQyxpQkFBaUIsbUJBQU8sQ0FBQyxxRUFBWTtBQUNyQyx5QkFBeUIsbUJBQU8sQ0FBQyxxRkFBb0I7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsZ0JBQWdCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsK0RBQStELDZCQUE2QixFQUFFLEVBQUUsRUFBRTtBQUN6SjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QseUNBQXlDLEVBQUU7QUFDakc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCwrREFBK0QsNkJBQTZCLEVBQUUsRUFBRSxFQUFFO0FBQy9KO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsZ0JBQWdCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvcGxhbm5pbmcvdGFyZ2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRhcmdldCA9IHZvaWQgMDtcbnZhciBNRVRBREFUQV9LRVkgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL21ldGFkYXRhX2tleXNcIik7XG52YXIgaWRfMSA9IHJlcXVpcmUoXCIuLi91dGlscy9pZFwiKTtcbnZhciBtZXRhZGF0YV8xID0gcmVxdWlyZShcIi4vbWV0YWRhdGFcIik7XG52YXIgcXVlcnlhYmxlX3N0cmluZ18xID0gcmVxdWlyZShcIi4vcXVlcnlhYmxlX3N0cmluZ1wiKTtcbnZhciBUYXJnZXQgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFRhcmdldCh0eXBlLCBuYW1lLCBzZXJ2aWNlSWRlbnRpZmllciwgbmFtZWRPclRhZ2dlZCkge1xuICAgICAgICB0aGlzLmlkID0gaWRfMS5pZCgpO1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLnNlcnZpY2VJZGVudGlmaWVyID0gc2VydmljZUlkZW50aWZpZXI7XG4gICAgICAgIHRoaXMubmFtZSA9IG5ldyBxdWVyeWFibGVfc3RyaW5nXzEuUXVlcnlhYmxlU3RyaW5nKG5hbWUgfHwgXCJcIik7XG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgdmFyIG1ldGFkYXRhSXRlbSA9IG51bGw7XG4gICAgICAgIGlmICh0eXBlb2YgbmFtZWRPclRhZ2dlZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgbWV0YWRhdGFJdGVtID0gbmV3IG1ldGFkYXRhXzEuTWV0YWRhdGEoTUVUQURBVEFfS0VZLk5BTUVEX1RBRywgbmFtZWRPclRhZ2dlZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobmFtZWRPclRhZ2dlZCBpbnN0YW5jZW9mIG1ldGFkYXRhXzEuTWV0YWRhdGEpIHtcbiAgICAgICAgICAgIG1ldGFkYXRhSXRlbSA9IG5hbWVkT3JUYWdnZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGFkYXRhSXRlbSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5tZXRhZGF0YS5wdXNoKG1ldGFkYXRhSXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgVGFyZ2V0LnByb3RvdHlwZS5oYXNUYWcgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSB0aGlzLm1ldGFkYXRhOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIG0gPSBfYVtfaV07XG4gICAgICAgICAgICBpZiAobS5rZXkgPT09IGtleSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIFRhcmdldC5wcm90b3R5cGUuaXNBcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzVGFnKE1FVEFEQVRBX0tFWS5NVUxUSV9JTkpFQ1RfVEFHKTtcbiAgICB9O1xuICAgIFRhcmdldC5wcm90b3R5cGUubWF0Y2hlc0FycmF5ID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF0Y2hlc1RhZyhNRVRBREFUQV9LRVkuTVVMVElfSU5KRUNUX1RBRykobmFtZSk7XG4gICAgfTtcbiAgICBUYXJnZXQucHJvdG90eXBlLmlzTmFtZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc1RhZyhNRVRBREFUQV9LRVkuTkFNRURfVEFHKTtcbiAgICB9O1xuICAgIFRhcmdldC5wcm90b3R5cGUuaXNUYWdnZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGFkYXRhLnNvbWUoZnVuY3Rpb24gKG1ldGFkYXRhKSB7IHJldHVybiBNRVRBREFUQV9LRVkuTk9OX0NVU1RPTV9UQUdfS0VZUy5ldmVyeShmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBtZXRhZGF0YS5rZXkgIT09IGtleTsgfSk7IH0pO1xuICAgIH07XG4gICAgVGFyZ2V0LnByb3RvdHlwZS5pc09wdGlvbmFsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXRjaGVzVGFnKE1FVEFEQVRBX0tFWS5PUFRJT05BTF9UQUcpKHRydWUpO1xuICAgIH07XG4gICAgVGFyZ2V0LnByb3RvdHlwZS5nZXROYW1lZFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOYW1lZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZXRhZGF0YS5maWx0ZXIoZnVuY3Rpb24gKG0pIHsgcmV0dXJuIG0ua2V5ID09PSBNRVRBREFUQV9LRVkuTkFNRURfVEFHOyB9KVswXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIFRhcmdldC5wcm90b3R5cGUuZ2V0Q3VzdG9tVGFncyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUYWdnZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWV0YWRhdGEuZmlsdGVyKGZ1bmN0aW9uIChtZXRhZGF0YSkgeyByZXR1cm4gTUVUQURBVEFfS0VZLk5PTl9DVVNUT01fVEFHX0tFWVMuZXZlcnkoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gbWV0YWRhdGEua2V5ICE9PSBrZXk7IH0pOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBUYXJnZXQucHJvdG90eXBlLm1hdGNoZXNOYW1lZFRhZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hdGNoZXNUYWcoTUVUQURBVEFfS0VZLk5BTUVEX1RBRykobmFtZSk7XG4gICAgfTtcbiAgICBUYXJnZXQucHJvdG90eXBlLm1hdGNoZXNUYWcgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBfdGhpcy5tZXRhZGF0YTsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgbSA9IF9hW19pXTtcbiAgICAgICAgICAgICAgICBpZiAobS5rZXkgPT09IGtleSAmJiBtLnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICByZXR1cm4gVGFyZ2V0O1xufSgpKTtcbmV4cG9ydHMuVGFyZ2V0ID0gVGFyZ2V0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGFyZ2V0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/planning/target.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/resolution/instantiation.js": /*!****************************************************************!*\ !*** ./node_modules/inversify/lib/resolution/instantiation.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveInstance = void 0;\nvar error_msgs_1 = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/inversify/lib/constants/literal_types.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nfunction _injectProperties(instance, childRequests, resolveRequest) {\n var propertyInjectionsRequests = childRequests.filter(function (childRequest) {\n return (childRequest.target !== null &&\n childRequest.target.type === literal_types_1.TargetTypeEnum.ClassProperty);\n });\n var propertyInjections = propertyInjectionsRequests.map(resolveRequest);\n propertyInjectionsRequests.forEach(function (r, index) {\n var propertyName = \"\";\n propertyName = r.target.name.value();\n var injection = propertyInjections[index];\n instance[propertyName] = injection;\n });\n return instance;\n}\nfunction _createInstance(Func, injections) {\n return new (Func.bind.apply(Func, __spreadArray([void 0], injections)))();\n}\nfunction _postConstruct(constr, result) {\n if (Reflect.hasMetadata(METADATA_KEY.POST_CONSTRUCT, constr)) {\n var data = Reflect.getMetadata(METADATA_KEY.POST_CONSTRUCT, constr);\n try {\n result[data.value]();\n }\n catch (e) {\n throw new Error(error_msgs_1.POST_CONSTRUCT_ERROR(constr.name, e.message));\n }\n }\n}\nfunction resolveInstance(constr, childRequests, resolveRequest) {\n var result = null;\n if (childRequests.length > 0) {\n var constructorInjectionsRequests = childRequests.filter(function (childRequest) {\n return (childRequest.target !== null && childRequest.target.type === literal_types_1.TargetTypeEnum.ConstructorArgument);\n });\n var constructorInjections = constructorInjectionsRequests.map(resolveRequest);\n result = _createInstance(constr, constructorInjections);\n result = _injectProperties(result, childRequests, resolveRequest);\n }\n else {\n result = new constr();\n }\n _postConstruct(constr, result);\n return result;\n}\nexports.resolveInstance = resolveInstance;\n//# sourceMappingURL=instantiation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9yZXNvbHV0aW9uL2luc3RhbnRpYXRpb24uanM/NzEyMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0Esb0RBQW9ELFFBQVE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxtQkFBbUIsbUJBQU8sQ0FBQyxxRkFBeUI7QUFDcEQsc0JBQXNCLG1CQUFPLENBQUMsMkZBQTRCO0FBQzFELG1CQUFtQixtQkFBTyxDQUFDLDJGQUE0QjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnZlcnNpZnkvbGliL3Jlc29sdXRpb24vaW5zdGFudGlhdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBpbCA9IGZyb20ubGVuZ3RoLCBqID0gdG8ubGVuZ3RoOyBpIDwgaWw7IGkrKywgaisrKVxuICAgICAgICB0b1tqXSA9IGZyb21baV07XG4gICAgcmV0dXJuIHRvO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucmVzb2x2ZUluc3RhbmNlID0gdm9pZCAwO1xudmFyIGVycm9yX21zZ3NfMSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvZXJyb3JfbXNnc1wiKTtcbnZhciBsaXRlcmFsX3R5cGVzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2xpdGVyYWxfdHlwZXNcIik7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xuZnVuY3Rpb24gX2luamVjdFByb3BlcnRpZXMoaW5zdGFuY2UsIGNoaWxkUmVxdWVzdHMsIHJlc29sdmVSZXF1ZXN0KSB7XG4gICAgdmFyIHByb3BlcnR5SW5qZWN0aW9uc1JlcXVlc3RzID0gY2hpbGRSZXF1ZXN0cy5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkUmVxdWVzdCkge1xuICAgICAgICByZXR1cm4gKGNoaWxkUmVxdWVzdC50YXJnZXQgIT09IG51bGwgJiZcbiAgICAgICAgICAgIGNoaWxkUmVxdWVzdC50YXJnZXQudHlwZSA9PT0gbGl0ZXJhbF90eXBlc18xLlRhcmdldFR5cGVFbnVtLkNsYXNzUHJvcGVydHkpO1xuICAgIH0pO1xuICAgIHZhciBwcm9wZXJ0eUluamVjdGlvbnMgPSBwcm9wZXJ0eUluamVjdGlvbnNSZXF1ZXN0cy5tYXAocmVzb2x2ZVJlcXVlc3QpO1xuICAgIHByb3BlcnR5SW5qZWN0aW9uc1JlcXVlc3RzLmZvckVhY2goZnVuY3Rpb24gKHIsIGluZGV4KSB7XG4gICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBcIlwiO1xuICAgICAgICBwcm9wZXJ0eU5hbWUgPSByLnRhcmdldC5uYW1lLnZhbHVlKCk7XG4gICAgICAgIHZhciBpbmplY3Rpb24gPSBwcm9wZXJ0eUluamVjdGlvbnNbaW5kZXhdO1xuICAgICAgICBpbnN0YW5jZVtwcm9wZXJ0eU5hbWVdID0gaW5qZWN0aW9uO1xuICAgIH0pO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbn1cbmZ1bmN0aW9uIF9jcmVhdGVJbnN0YW5jZShGdW5jLCBpbmplY3Rpb25zKSB7XG4gICAgcmV0dXJuIG5ldyAoRnVuYy5iaW5kLmFwcGx5KEZ1bmMsIF9fc3ByZWFkQXJyYXkoW3ZvaWQgMF0sIGluamVjdGlvbnMpKSkoKTtcbn1cbmZ1bmN0aW9uIF9wb3N0Q29uc3RydWN0KGNvbnN0ciwgcmVzdWx0KSB7XG4gICAgaWYgKFJlZmxlY3QuaGFzTWV0YWRhdGEoTUVUQURBVEFfS0VZLlBPU1RfQ09OU1RSVUNULCBjb25zdHIpKSB7XG4gICAgICAgIHZhciBkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YShNRVRBREFUQV9LRVkuUE9TVF9DT05TVFJVQ1QsIGNvbnN0cik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHRbZGF0YS52YWx1ZV0oKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yX21zZ3NfMS5QT1NUX0NPTlNUUlVDVF9FUlJPUihjb25zdHIubmFtZSwgZS5tZXNzYWdlKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiByZXNvbHZlSW5zdGFuY2UoY29uc3RyLCBjaGlsZFJlcXVlc3RzLCByZXNvbHZlUmVxdWVzdCkge1xuICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgIGlmIChjaGlsZFJlcXVlc3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIGNvbnN0cnVjdG9ySW5qZWN0aW9uc1JlcXVlc3RzID0gY2hpbGRSZXF1ZXN0cy5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkUmVxdWVzdCkge1xuICAgICAgICAgICAgcmV0dXJuIChjaGlsZFJlcXVlc3QudGFyZ2V0ICE9PSBudWxsICYmIGNoaWxkUmVxdWVzdC50YXJnZXQudHlwZSA9PT0gbGl0ZXJhbF90eXBlc18xLlRhcmdldFR5cGVFbnVtLkNvbnN0cnVjdG9yQXJndW1lbnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNvbnN0cnVjdG9ySW5qZWN0aW9ucyA9IGNvbnN0cnVjdG9ySW5qZWN0aW9uc1JlcXVlc3RzLm1hcChyZXNvbHZlUmVxdWVzdCk7XG4gICAgICAgIHJlc3VsdCA9IF9jcmVhdGVJbnN0YW5jZShjb25zdHIsIGNvbnN0cnVjdG9ySW5qZWN0aW9ucyk7XG4gICAgICAgIHJlc3VsdCA9IF9pbmplY3RQcm9wZXJ0aWVzKHJlc3VsdCwgY2hpbGRSZXF1ZXN0cywgcmVzb2x2ZVJlcXVlc3QpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IGNvbnN0cigpO1xuICAgIH1cbiAgICBfcG9zdENvbnN0cnVjdChjb25zdHIsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydHMucmVzb2x2ZUluc3RhbmNlID0gcmVzb2x2ZUluc3RhbmNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5zdGFudGlhdGlvbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/resolution/instantiation.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/resolution/resolver.js": /*!***********************************************************!*\ !*** ./node_modules/inversify/lib/resolution/resolver.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolve = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/inversify/lib/constants/literal_types.js\");\nvar exceptions_1 = __webpack_require__(/*! ../utils/exceptions */ \"./node_modules/inversify/lib/utils/exceptions.js\");\nvar serialization_1 = __webpack_require__(/*! ../utils/serialization */ \"./node_modules/inversify/lib/utils/serialization.js\");\nvar instantiation_1 = __webpack_require__(/*! ./instantiation */ \"./node_modules/inversify/lib/resolution/instantiation.js\");\nvar invokeFactory = function (factoryType, serviceIdentifier, fn) {\n try {\n return fn();\n }\n catch (error) {\n if (exceptions_1.isStackOverflowExeption(error)) {\n throw new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY_IN_FACTORY(factoryType, serviceIdentifier.toString()));\n }\n else {\n throw error;\n }\n }\n};\nvar _resolveRequest = function (requestScope) {\n return function (request) {\n request.parentContext.setCurrentRequest(request);\n var bindings = request.bindings;\n var childRequests = request.childRequests;\n var targetIsAnArray = request.target && request.target.isArray();\n var targetParentIsNotAnArray = !request.parentRequest ||\n !request.parentRequest.target ||\n !request.target ||\n !request.parentRequest.target.matchesArray(request.target.serviceIdentifier);\n if (targetIsAnArray && targetParentIsNotAnArray) {\n return childRequests.map(function (childRequest) {\n var _f = _resolveRequest(requestScope);\n return _f(childRequest);\n });\n }\n else {\n var result = null;\n if (request.target.isOptional() && bindings.length === 0) {\n return undefined;\n }\n var binding_1 = bindings[0];\n var isSingleton = binding_1.scope === literal_types_1.BindingScopeEnum.Singleton;\n var isRequestSingleton = binding_1.scope === literal_types_1.BindingScopeEnum.Request;\n if (isSingleton && binding_1.activated) {\n return binding_1.cache;\n }\n if (isRequestSingleton &&\n requestScope !== null &&\n requestScope.has(binding_1.id)) {\n return requestScope.get(binding_1.id);\n }\n if (binding_1.type === literal_types_1.BindingTypeEnum.ConstantValue) {\n result = binding_1.cache;\n binding_1.activated = true;\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Function) {\n result = binding_1.cache;\n binding_1.activated = true;\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Constructor) {\n result = binding_1.implementationType;\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.DynamicValue && binding_1.dynamicValue !== null) {\n result = invokeFactory(\"toDynamicValue\", binding_1.serviceIdentifier, function () { return binding_1.dynamicValue(request.parentContext); });\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Factory && binding_1.factory !== null) {\n result = invokeFactory(\"toFactory\", binding_1.serviceIdentifier, function () { return binding_1.factory(request.parentContext); });\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Provider && binding_1.provider !== null) {\n result = invokeFactory(\"toProvider\", binding_1.serviceIdentifier, function () { return binding_1.provider(request.parentContext); });\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Instance && binding_1.implementationType !== null) {\n result = instantiation_1.resolveInstance(binding_1.implementationType, childRequests, _resolveRequest(requestScope));\n }\n else {\n var serviceIdentifier = serialization_1.getServiceIdentifierAsString(request.serviceIdentifier);\n throw new Error(ERROR_MSGS.INVALID_BINDING_TYPE + \" \" + serviceIdentifier);\n }\n if (typeof binding_1.onActivation === \"function\") {\n result = binding_1.onActivation(request.parentContext, result);\n }\n if (isSingleton) {\n binding_1.cache = result;\n binding_1.activated = true;\n }\n if (isRequestSingleton &&\n requestScope !== null &&\n !requestScope.has(binding_1.id)) {\n requestScope.set(binding_1.id, result);\n }\n return result;\n }\n };\n};\nfunction resolve(context) {\n var _f = _resolveRequest(context.plan.rootRequest.requestScope);\n return _f(context.plan.rootRequest);\n}\nexports.resolve = resolve;\n//# sourceMappingURL=resolver.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9yZXNvbHV0aW9uL3Jlc29sdmVyLmpzPzY4ZjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGlCQUFpQixtQkFBTyxDQUFDLHFGQUF5QjtBQUNsRCxzQkFBc0IsbUJBQU8sQ0FBQywyRkFBNEI7QUFDMUQsbUJBQW1CLG1CQUFPLENBQUMsNkVBQXFCO0FBQ2hELHNCQUFzQixtQkFBTyxDQUFDLG1GQUF3QjtBQUN0RCxzQkFBc0IsbUJBQU8sQ0FBQyxpRkFBaUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtR0FBbUcsc0RBQXNELEVBQUU7QUFDM0o7QUFDQTtBQUNBLDhGQUE4RixpREFBaUQsRUFBRTtBQUNqSjtBQUNBO0FBQ0EsK0ZBQStGLGtEQUFrRCxFQUFFO0FBQ25KO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnZlcnNpZnkvbGliL3Jlc29sdXRpb24vcmVzb2x2ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucmVzb2x2ZSA9IHZvaWQgMDtcbnZhciBFUlJPUl9NU0dTID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9lcnJvcl9tc2dzXCIpO1xudmFyIGxpdGVyYWxfdHlwZXNfMSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbGl0ZXJhbF90eXBlc1wiKTtcbnZhciBleGNlcHRpb25zXzEgPSByZXF1aXJlKFwiLi4vdXRpbHMvZXhjZXB0aW9uc1wiKTtcbnZhciBzZXJpYWxpemF0aW9uXzEgPSByZXF1aXJlKFwiLi4vdXRpbHMvc2VyaWFsaXphdGlvblwiKTtcbnZhciBpbnN0YW50aWF0aW9uXzEgPSByZXF1aXJlKFwiLi9pbnN0YW50aWF0aW9uXCIpO1xudmFyIGludm9rZUZhY3RvcnkgPSBmdW5jdGlvbiAoZmFjdG9yeVR5cGUsIHNlcnZpY2VJZGVudGlmaWVyLCBmbikge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGV4Y2VwdGlvbnNfMS5pc1N0YWNrT3ZlcmZsb3dFeGVwdGlvbihlcnJvcikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLkNJUkNVTEFSX0RFUEVOREVOQ1lfSU5fRkFDVE9SWShmYWN0b3J5VHlwZSwgc2VydmljZUlkZW50aWZpZXIudG9TdHJpbmcoKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG59O1xudmFyIF9yZXNvbHZlUmVxdWVzdCA9IGZ1bmN0aW9uIChyZXF1ZXN0U2NvcGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgcmVxdWVzdC5wYXJlbnRDb250ZXh0LnNldEN1cnJlbnRSZXF1ZXN0KHJlcXVlc3QpO1xuICAgICAgICB2YXIgYmluZGluZ3MgPSByZXF1ZXN0LmJpbmRpbmdzO1xuICAgICAgICB2YXIgY2hpbGRSZXF1ZXN0cyA9IHJlcXVlc3QuY2hpbGRSZXF1ZXN0cztcbiAgICAgICAgdmFyIHRhcmdldElzQW5BcnJheSA9IHJlcXVlc3QudGFyZ2V0ICYmIHJlcXVlc3QudGFyZ2V0LmlzQXJyYXkoKTtcbiAgICAgICAgdmFyIHRhcmdldFBhcmVudElzTm90QW5BcnJheSA9ICFyZXF1ZXN0LnBhcmVudFJlcXVlc3QgfHxcbiAgICAgICAgICAgICFyZXF1ZXN0LnBhcmVudFJlcXVlc3QudGFyZ2V0IHx8XG4gICAgICAgICAgICAhcmVxdWVzdC50YXJnZXQgfHxcbiAgICAgICAgICAgICFyZXF1ZXN0LnBhcmVudFJlcXVlc3QudGFyZ2V0Lm1hdGNoZXNBcnJheShyZXF1ZXN0LnRhcmdldC5zZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgIGlmICh0YXJnZXRJc0FuQXJyYXkgJiYgdGFyZ2V0UGFyZW50SXNOb3RBbkFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGRSZXF1ZXN0cy5tYXAoZnVuY3Rpb24gKGNoaWxkUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgIHZhciBfZiA9IF9yZXNvbHZlUmVxdWVzdChyZXF1ZXN0U2NvcGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfZihjaGlsZFJlcXVlc3QpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0LnRhcmdldC5pc09wdGlvbmFsKCkgJiYgYmluZGluZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBiaW5kaW5nXzEgPSBiaW5kaW5nc1swXTtcbiAgICAgICAgICAgIHZhciBpc1NpbmdsZXRvbiA9IGJpbmRpbmdfMS5zY29wZSA9PT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uU2luZ2xldG9uO1xuICAgICAgICAgICAgdmFyIGlzUmVxdWVzdFNpbmdsZXRvbiA9IGJpbmRpbmdfMS5zY29wZSA9PT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uUmVxdWVzdDtcbiAgICAgICAgICAgIGlmIChpc1NpbmdsZXRvbiAmJiBiaW5kaW5nXzEuYWN0aXZhdGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJpbmRpbmdfMS5jYWNoZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1JlcXVlc3RTaW5nbGV0b24gJiZcbiAgICAgICAgICAgICAgICByZXF1ZXN0U2NvcGUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICByZXF1ZXN0U2NvcGUuaGFzKGJpbmRpbmdfMS5pZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFNjb3BlLmdldChiaW5kaW5nXzEuaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJpbmRpbmdfMS50eXBlID09PSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkNvbnN0YW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBiaW5kaW5nXzEuY2FjaGU7XG4gICAgICAgICAgICAgICAgYmluZGluZ18xLmFjdGl2YXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChiaW5kaW5nXzEudHlwZSA9PT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5GdW5jdGlvbikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJpbmRpbmdfMS5jYWNoZTtcbiAgICAgICAgICAgICAgICBiaW5kaW5nXzEuYWN0aXZhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGJpbmRpbmdfMS50eXBlID09PSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYmluZGluZ18xLmltcGxlbWVudGF0aW9uVHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGJpbmRpbmdfMS50eXBlID09PSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkR5bmFtaWNWYWx1ZSAmJiBiaW5kaW5nXzEuZHluYW1pY1ZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaW52b2tlRmFjdG9yeShcInRvRHluYW1pY1ZhbHVlXCIsIGJpbmRpbmdfMS5zZXJ2aWNlSWRlbnRpZmllciwgZnVuY3Rpb24gKCkgeyByZXR1cm4gYmluZGluZ18xLmR5bmFtaWNWYWx1ZShyZXF1ZXN0LnBhcmVudENvbnRleHQpOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGJpbmRpbmdfMS50eXBlID09PSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkZhY3RvcnkgJiYgYmluZGluZ18xLmZhY3RvcnkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpbnZva2VGYWN0b3J5KFwidG9GYWN0b3J5XCIsIGJpbmRpbmdfMS5zZXJ2aWNlSWRlbnRpZmllciwgZnVuY3Rpb24gKCkgeyByZXR1cm4gYmluZGluZ18xLmZhY3RvcnkocmVxdWVzdC5wYXJlbnRDb250ZXh0KTsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChiaW5kaW5nXzEudHlwZSA9PT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5Qcm92aWRlciAmJiBiaW5kaW5nXzEucHJvdmlkZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpbnZva2VGYWN0b3J5KFwidG9Qcm92aWRlclwiLCBiaW5kaW5nXzEuc2VydmljZUlkZW50aWZpZXIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGJpbmRpbmdfMS5wcm92aWRlcihyZXF1ZXN0LnBhcmVudENvbnRleHQpOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGJpbmRpbmdfMS50eXBlID09PSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkluc3RhbmNlICYmIGJpbmRpbmdfMS5pbXBsZW1lbnRhdGlvblR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpbnN0YW50aWF0aW9uXzEucmVzb2x2ZUluc3RhbmNlKGJpbmRpbmdfMS5pbXBsZW1lbnRhdGlvblR5cGUsIGNoaWxkUmVxdWVzdHMsIF9yZXNvbHZlUmVxdWVzdChyZXF1ZXN0U2NvcGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBzZXJ2aWNlSWRlbnRpZmllciA9IHNlcmlhbGl6YXRpb25fMS5nZXRTZXJ2aWNlSWRlbnRpZmllckFzU3RyaW5nKHJlcXVlc3Quc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLklOVkFMSURfQklORElOR19UWVBFICsgXCIgXCIgKyBzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGJpbmRpbmdfMS5vbkFjdGl2YXRpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJpbmRpbmdfMS5vbkFjdGl2YXRpb24ocmVxdWVzdC5wYXJlbnRDb250ZXh0LCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU2luZ2xldG9uKSB7XG4gICAgICAgICAgICAgICAgYmluZGluZ18xLmNhY2hlID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIGJpbmRpbmdfMS5hY3RpdmF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzUmVxdWVzdFNpbmdsZXRvbiAmJlxuICAgICAgICAgICAgICAgIHJlcXVlc3RTY29wZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICFyZXF1ZXN0U2NvcGUuaGFzKGJpbmRpbmdfMS5pZCkpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0U2NvcGUuc2V0KGJpbmRpbmdfMS5pZCwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmZ1bmN0aW9uIHJlc29sdmUoY29udGV4dCkge1xuICAgIHZhciBfZiA9IF9yZXNvbHZlUmVxdWVzdChjb250ZXh0LnBsYW4ucm9vdFJlcXVlc3QucmVxdWVzdFNjb3BlKTtcbiAgICByZXR1cm4gX2YoY29udGV4dC5wbGFuLnJvb3RSZXF1ZXN0KTtcbn1cbmV4cG9ydHMucmVzb2x2ZSA9IHJlc29sdmU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXNvbHZlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/resolution/resolver.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/syntax/binding_in_syntax.js": /*!****************************************************************!*\ !*** ./node_modules/inversify/lib/syntax/binding_in_syntax.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingInSyntax = void 0;\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/inversify/lib/constants/literal_types.js\");\nvar binding_when_on_syntax_1 = __webpack_require__(/*! ./binding_when_on_syntax */ \"./node_modules/inversify/lib/syntax/binding_when_on_syntax.js\");\nvar BindingInSyntax = (function () {\n function BindingInSyntax(binding) {\n this._binding = binding;\n }\n BindingInSyntax.prototype.inRequestScope = function () {\n this._binding.scope = literal_types_1.BindingScopeEnum.Request;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingInSyntax.prototype.inSingletonScope = function () {\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingInSyntax.prototype.inTransientScope = function () {\n this._binding.scope = literal_types_1.BindingScopeEnum.Transient;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n return BindingInSyntax;\n}());\nexports.BindingInSyntax = BindingInSyntax;\n//# sourceMappingURL=binding_in_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9zeW50YXgvYmluZGluZ19pbl9zeW50YXguanM/ZTgwMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0Esc0JBQXNCLG1CQUFPLENBQUMsMkZBQTRCO0FBQzFELCtCQUErQixtQkFBTyxDQUFDLCtGQUEwQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9zeW50YXgvYmluZGluZ19pbl9zeW50YXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQmluZGluZ0luU3ludGF4ID0gdm9pZCAwO1xudmFyIGxpdGVyYWxfdHlwZXNfMSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbGl0ZXJhbF90eXBlc1wiKTtcbnZhciBiaW5kaW5nX3doZW5fb25fc3ludGF4XzEgPSByZXF1aXJlKFwiLi9iaW5kaW5nX3doZW5fb25fc3ludGF4XCIpO1xudmFyIEJpbmRpbmdJblN5bnRheCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQmluZGluZ0luU3ludGF4KGJpbmRpbmcpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZyA9IGJpbmRpbmc7XG4gICAgfVxuICAgIEJpbmRpbmdJblN5bnRheC5wcm90b3R5cGUuaW5SZXF1ZXN0U2NvcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuc2NvcGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1Njb3BlRW51bS5SZXF1ZXN0O1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfd2hlbl9vbl9zeW50YXhfMS5CaW5kaW5nV2hlbk9uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ0luU3ludGF4LnByb3RvdHlwZS5pblNpbmdsZXRvblNjb3BlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnNjb3BlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uU2luZ2xldG9uO1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfd2hlbl9vbl9zeW50YXhfMS5CaW5kaW5nV2hlbk9uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ0luU3ludGF4LnByb3RvdHlwZS5pblRyYW5zaWVudFNjb3BlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnNjb3BlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uVHJhbnNpZW50O1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfd2hlbl9vbl9zeW50YXhfMS5CaW5kaW5nV2hlbk9uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgcmV0dXJuIEJpbmRpbmdJblN5bnRheDtcbn0oKSk7XG5leHBvcnRzLkJpbmRpbmdJblN5bnRheCA9IEJpbmRpbmdJblN5bnRheDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJpbmRpbmdfaW5fc3ludGF4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/syntax/binding_in_syntax.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/syntax/binding_in_when_on_syntax.js": /*!************************************************************************!*\ !*** ./node_modules/inversify/lib/syntax/binding_in_when_on_syntax.js ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingInWhenOnSyntax = void 0;\nvar binding_in_syntax_1 = __webpack_require__(/*! ./binding_in_syntax */ \"./node_modules/inversify/lib/syntax/binding_in_syntax.js\");\nvar binding_on_syntax_1 = __webpack_require__(/*! ./binding_on_syntax */ \"./node_modules/inversify/lib/syntax/binding_on_syntax.js\");\nvar binding_when_syntax_1 = __webpack_require__(/*! ./binding_when_syntax */ \"./node_modules/inversify/lib/syntax/binding_when_syntax.js\");\nvar BindingInWhenOnSyntax = (function () {\n function BindingInWhenOnSyntax(binding) {\n this._binding = binding;\n this._bindingWhenSyntax = new binding_when_syntax_1.BindingWhenSyntax(this._binding);\n this._bindingOnSyntax = new binding_on_syntax_1.BindingOnSyntax(this._binding);\n this._bindingInSyntax = new binding_in_syntax_1.BindingInSyntax(binding);\n }\n BindingInWhenOnSyntax.prototype.inRequestScope = function () {\n return this._bindingInSyntax.inRequestScope();\n };\n BindingInWhenOnSyntax.prototype.inSingletonScope = function () {\n return this._bindingInSyntax.inSingletonScope();\n };\n BindingInWhenOnSyntax.prototype.inTransientScope = function () {\n return this._bindingInSyntax.inTransientScope();\n };\n BindingInWhenOnSyntax.prototype.when = function (constraint) {\n return this._bindingWhenSyntax.when(constraint);\n };\n BindingInWhenOnSyntax.prototype.whenTargetNamed = function (name) {\n return this._bindingWhenSyntax.whenTargetNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenTargetIsDefault = function () {\n return this._bindingWhenSyntax.whenTargetIsDefault();\n };\n BindingInWhenOnSyntax.prototype.whenTargetTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenTargetTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenInjectedInto = function (parent) {\n return this._bindingWhenSyntax.whenInjectedInto(parent);\n };\n BindingInWhenOnSyntax.prototype.whenParentNamed = function (name) {\n return this._bindingWhenSyntax.whenParentNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenParentTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenParentTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenAnyAncestorIs(ancestor);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenNoAncestorIs(ancestor);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenAnyAncestorNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenAnyAncestorTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenNoAncestorNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenNoAncestorTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenAnyAncestorMatches(constraint);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenNoAncestorMatches(constraint);\n };\n BindingInWhenOnSyntax.prototype.onActivation = function (handler) {\n return this._bindingOnSyntax.onActivation(handler);\n };\n return BindingInWhenOnSyntax;\n}());\nexports.BindingInWhenOnSyntax = BindingInWhenOnSyntax;\n//# sourceMappingURL=binding_in_when_on_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9zeW50YXgvYmluZGluZ19pbl93aGVuX29uX3N5bnRheC5qcz8wZmQ5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSwwQkFBMEIsbUJBQU8sQ0FBQyxxRkFBcUI7QUFDdkQsMEJBQTBCLG1CQUFPLENBQUMscUZBQXFCO0FBQ3ZELDRCQUE0QixtQkFBTyxDQUFDLHlGQUF1QjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9zeW50YXgvYmluZGluZ19pbl93aGVuX29uX3N5bnRheC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5CaW5kaW5nSW5XaGVuT25TeW50YXggPSB2b2lkIDA7XG52YXIgYmluZGluZ19pbl9zeW50YXhfMSA9IHJlcXVpcmUoXCIuL2JpbmRpbmdfaW5fc3ludGF4XCIpO1xudmFyIGJpbmRpbmdfb25fc3ludGF4XzEgPSByZXF1aXJlKFwiLi9iaW5kaW5nX29uX3N5bnRheFwiKTtcbnZhciBiaW5kaW5nX3doZW5fc3ludGF4XzEgPSByZXF1aXJlKFwiLi9iaW5kaW5nX3doZW5fc3ludGF4XCIpO1xudmFyIEJpbmRpbmdJbldoZW5PblN5bnRheCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQmluZGluZ0luV2hlbk9uU3ludGF4KGJpbmRpbmcpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZyA9IGJpbmRpbmc7XG4gICAgICAgIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4ID0gbmV3IGJpbmRpbmdfd2hlbl9zeW50YXhfMS5CaW5kaW5nV2hlblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICAgICAgdGhpcy5fYmluZGluZ09uU3ludGF4ID0gbmV3IGJpbmRpbmdfb25fc3ludGF4XzEuQmluZGluZ09uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgICAgICB0aGlzLl9iaW5kaW5nSW5TeW50YXggPSBuZXcgYmluZGluZ19pbl9zeW50YXhfMS5CaW5kaW5nSW5TeW50YXgoYmluZGluZyk7XG4gICAgfVxuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUuaW5SZXF1ZXN0U2NvcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nSW5TeW50YXguaW5SZXF1ZXN0U2NvcGUoKTtcbiAgICB9O1xuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUuaW5TaW5nbGV0b25TY29wZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdJblN5bnRheC5pblNpbmdsZXRvblNjb3BlKCk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLmluVHJhbnNpZW50U2NvcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nSW5TeW50YXguaW5UcmFuc2llbnRTY29wZSgpO1xuICAgIH07XG4gICAgQmluZGluZ0luV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuID0gZnVuY3Rpb24gKGNvbnN0cmFpbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW4oY29uc3RyYWludCk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5UYXJnZXROYW1lZCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuVGFyZ2V0TmFtZWQobmFtZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5UYXJnZXRJc0RlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuVGFyZ2V0SXNEZWZhdWx0KCk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5UYXJnZXRUYWdnZWQgPSBmdW5jdGlvbiAodGFnLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlblRhcmdldFRhZ2dlZCh0YWcsIHZhbHVlKTtcbiAgICB9O1xuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUud2hlbkluamVjdGVkSW50byA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5JbmplY3RlZEludG8ocGFyZW50KTtcbiAgICB9O1xuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUud2hlblBhcmVudE5hbWVkID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5QYXJlbnROYW1lZChuYW1lKTtcbiAgICB9O1xuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUud2hlblBhcmVudFRhZ2dlZCA9IGZ1bmN0aW9uICh0YWcsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuUGFyZW50VGFnZ2VkKHRhZywgdmFsdWUpO1xuICAgIH07XG4gICAgQmluZGluZ0luV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuQW55QW5jZXN0b3JJcyA9IGZ1bmN0aW9uIChhbmNlc3Rvcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbkFueUFuY2VzdG9ySXMoYW5jZXN0b3IpO1xuICAgIH07XG4gICAgQmluZGluZ0luV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuTm9BbmNlc3RvcklzID0gZnVuY3Rpb24gKGFuY2VzdG9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuTm9BbmNlc3RvcklzKGFuY2VzdG9yKTtcbiAgICB9O1xuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUud2hlbkFueUFuY2VzdG9yTmFtZWQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbkFueUFuY2VzdG9yTmFtZWQobmFtZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5BbnlBbmNlc3RvclRhZ2dlZCA9IGZ1bmN0aW9uICh0YWcsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuQW55QW5jZXN0b3JUYWdnZWQodGFnLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5Ob0FuY2VzdG9yTmFtZWQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbk5vQW5jZXN0b3JOYW1lZChuYW1lKTtcbiAgICB9O1xuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUud2hlbk5vQW5jZXN0b3JUYWdnZWQgPSBmdW5jdGlvbiAodGFnLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbk5vQW5jZXN0b3JUYWdnZWQodGFnLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5BbnlBbmNlc3Rvck1hdGNoZXMgPSBmdW5jdGlvbiAoY29uc3RyYWludCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbkFueUFuY2VzdG9yTWF0Y2hlcyhjb25zdHJhaW50KTtcbiAgICB9O1xuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUud2hlbk5vQW5jZXN0b3JNYXRjaGVzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5Ob0FuY2VzdG9yTWF0Y2hlcyhjb25zdHJhaW50KTtcbiAgICB9O1xuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUub25BY3RpdmF0aW9uID0gZnVuY3Rpb24gKGhhbmRsZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdPblN5bnRheC5vbkFjdGl2YXRpb24oaGFuZGxlcik7XG4gICAgfTtcbiAgICByZXR1cm4gQmluZGluZ0luV2hlbk9uU3ludGF4O1xufSgpKTtcbmV4cG9ydHMuQmluZGluZ0luV2hlbk9uU3ludGF4ID0gQmluZGluZ0luV2hlbk9uU3ludGF4O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmluZGluZ19pbl93aGVuX29uX3N5bnRheC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/syntax/binding_in_when_on_syntax.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/syntax/binding_on_syntax.js": /*!****************************************************************!*\ !*** ./node_modules/inversify/lib/syntax/binding_on_syntax.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingOnSyntax = void 0;\nvar binding_when_syntax_1 = __webpack_require__(/*! ./binding_when_syntax */ \"./node_modules/inversify/lib/syntax/binding_when_syntax.js\");\nvar BindingOnSyntax = (function () {\n function BindingOnSyntax(binding) {\n this._binding = binding;\n }\n BindingOnSyntax.prototype.onActivation = function (handler) {\n this._binding.onActivation = handler;\n return new binding_when_syntax_1.BindingWhenSyntax(this._binding);\n };\n return BindingOnSyntax;\n}());\nexports.BindingOnSyntax = BindingOnSyntax;\n//# sourceMappingURL=binding_on_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9zeW50YXgvYmluZGluZ19vbl9zeW50YXguanM/ZTM0ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsNEJBQTRCLG1CQUFPLENBQUMseUZBQXVCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvc3ludGF4L2JpbmRpbmdfb25fc3ludGF4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkJpbmRpbmdPblN5bnRheCA9IHZvaWQgMDtcbnZhciBiaW5kaW5nX3doZW5fc3ludGF4XzEgPSByZXF1aXJlKFwiLi9iaW5kaW5nX3doZW5fc3ludGF4XCIpO1xudmFyIEJpbmRpbmdPblN5bnRheCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQmluZGluZ09uU3ludGF4KGJpbmRpbmcpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZyA9IGJpbmRpbmc7XG4gICAgfVxuICAgIEJpbmRpbmdPblN5bnRheC5wcm90b3R5cGUub25BY3RpdmF0aW9uID0gZnVuY3Rpb24gKGhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5vbkFjdGl2YXRpb24gPSBoYW5kbGVyO1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfd2hlbl9zeW50YXhfMS5CaW5kaW5nV2hlblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIHJldHVybiBCaW5kaW5nT25TeW50YXg7XG59KCkpO1xuZXhwb3J0cy5CaW5kaW5nT25TeW50YXggPSBCaW5kaW5nT25TeW50YXg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iaW5kaW5nX29uX3N5bnRheC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/syntax/binding_on_syntax.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/syntax/binding_to_syntax.js": /*!****************************************************************!*\ !*** ./node_modules/inversify/lib/syntax/binding_to_syntax.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingToSyntax = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/inversify/lib/constants/literal_types.js\");\nvar binding_in_when_on_syntax_1 = __webpack_require__(/*! ./binding_in_when_on_syntax */ \"./node_modules/inversify/lib/syntax/binding_in_when_on_syntax.js\");\nvar binding_when_on_syntax_1 = __webpack_require__(/*! ./binding_when_on_syntax */ \"./node_modules/inversify/lib/syntax/binding_when_on_syntax.js\");\nvar BindingToSyntax = (function () {\n function BindingToSyntax(binding) {\n this._binding = binding;\n }\n BindingToSyntax.prototype.to = function (constructor) {\n this._binding.type = literal_types_1.BindingTypeEnum.Instance;\n this._binding.implementationType = constructor;\n return new binding_in_when_on_syntax_1.BindingInWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toSelf = function () {\n if (typeof this._binding.serviceIdentifier !== \"function\") {\n throw new Error(\"\" + ERROR_MSGS.INVALID_TO_SELF_VALUE);\n }\n var self = this._binding.serviceIdentifier;\n return this.to(self);\n };\n BindingToSyntax.prototype.toConstantValue = function (value) {\n this._binding.type = literal_types_1.BindingTypeEnum.ConstantValue;\n this._binding.cache = value;\n this._binding.dynamicValue = null;\n this._binding.implementationType = null;\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toDynamicValue = function (func) {\n this._binding.type = literal_types_1.BindingTypeEnum.DynamicValue;\n this._binding.cache = null;\n this._binding.dynamicValue = func;\n this._binding.implementationType = null;\n return new binding_in_when_on_syntax_1.BindingInWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toConstructor = function (constructor) {\n this._binding.type = literal_types_1.BindingTypeEnum.Constructor;\n this._binding.implementationType = constructor;\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toFactory = function (factory) {\n this._binding.type = literal_types_1.BindingTypeEnum.Factory;\n this._binding.factory = factory;\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toFunction = function (func) {\n if (typeof func !== \"function\") {\n throw new Error(ERROR_MSGS.INVALID_FUNCTION_BINDING);\n }\n var bindingWhenOnSyntax = this.toConstantValue(func);\n this._binding.type = literal_types_1.BindingTypeEnum.Function;\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return bindingWhenOnSyntax;\n };\n BindingToSyntax.prototype.toAutoFactory = function (serviceIdentifier) {\n this._binding.type = literal_types_1.BindingTypeEnum.Factory;\n this._binding.factory = function (context) {\n var autofactory = function () { return context.container.get(serviceIdentifier); };\n return autofactory;\n };\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toProvider = function (provider) {\n this._binding.type = literal_types_1.BindingTypeEnum.Provider;\n this._binding.provider = provider;\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toService = function (service) {\n this.toDynamicValue(function (context) { return context.container.get(service); });\n };\n return BindingToSyntax;\n}());\nexports.BindingToSyntax = BindingToSyntax;\n//# sourceMappingURL=binding_to_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9zeW50YXgvYmluZGluZ190b19zeW50YXguanM/ODMzNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMscUZBQXlCO0FBQ2xELHNCQUFzQixtQkFBTyxDQUFDLDJGQUE0QjtBQUMxRCxrQ0FBa0MsbUJBQU8sQ0FBQyxxR0FBNkI7QUFDdkUsK0JBQStCLG1CQUFPLENBQUMsK0ZBQTBCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLGlEQUFpRDtBQUM1RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsdUNBQXVDLEVBQUU7QUFDekY7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2ludmVyc2lmeS9saWIvc3ludGF4L2JpbmRpbmdfdG9fc3ludGF4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkJpbmRpbmdUb1N5bnRheCA9IHZvaWQgMDtcbnZhciBFUlJPUl9NU0dTID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9lcnJvcl9tc2dzXCIpO1xudmFyIGxpdGVyYWxfdHlwZXNfMSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbGl0ZXJhbF90eXBlc1wiKTtcbnZhciBiaW5kaW5nX2luX3doZW5fb25fc3ludGF4XzEgPSByZXF1aXJlKFwiLi9iaW5kaW5nX2luX3doZW5fb25fc3ludGF4XCIpO1xudmFyIGJpbmRpbmdfd2hlbl9vbl9zeW50YXhfMSA9IHJlcXVpcmUoXCIuL2JpbmRpbmdfd2hlbl9vbl9zeW50YXhcIik7XG52YXIgQmluZGluZ1RvU3ludGF4ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCaW5kaW5nVG9TeW50YXgoYmluZGluZykge1xuICAgICAgICB0aGlzLl9iaW5kaW5nID0gYmluZGluZztcbiAgICB9XG4gICAgQmluZGluZ1RvU3ludGF4LnByb3RvdHlwZS50byA9IGZ1bmN0aW9uIChjb25zdHJ1Y3Rvcikge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnR5cGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkluc3RhbmNlO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmltcGxlbWVudGF0aW9uVHlwZSA9IGNvbnN0cnVjdG9yO1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfaW5fd2hlbl9vbl9zeW50YXhfMS5CaW5kaW5nSW5XaGVuT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nVG9TeW50YXgucHJvdG90eXBlLnRvU2VsZiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9iaW5kaW5nLnNlcnZpY2VJZGVudGlmaWVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlwiICsgRVJST1JfTVNHUy5JTlZBTElEX1RPX1NFTEZfVkFMVUUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzZWxmID0gdGhpcy5fYmluZGluZy5zZXJ2aWNlSWRlbnRpZmllcjtcbiAgICAgICAgcmV0dXJuIHRoaXMudG8oc2VsZik7XG4gICAgfTtcbiAgICBCaW5kaW5nVG9TeW50YXgucHJvdG90eXBlLnRvQ29uc3RhbnRWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnR5cGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkNvbnN0YW50VmFsdWU7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuY2FjaGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fYmluZGluZy5keW5hbWljVmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmltcGxlbWVudGF0aW9uVHlwZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuc2NvcGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1Njb3BlRW51bS5TaW5nbGV0b247XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ193aGVuX29uX3N5bnRheF8xLkJpbmRpbmdXaGVuT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nVG9TeW50YXgucHJvdG90eXBlLnRvRHluYW1pY1ZhbHVlID0gZnVuY3Rpb24gKGZ1bmMpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy50eXBlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5EeW5hbWljVmFsdWU7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuY2FjaGUgPSBudWxsO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmR5bmFtaWNWYWx1ZSA9IGZ1bmM7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuaW1wbGVtZW50YXRpb25UeXBlID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX2luX3doZW5fb25fc3ludGF4XzEuQmluZGluZ0luV2hlbk9uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1RvU3ludGF4LnByb3RvdHlwZS50b0NvbnN0cnVjdG9yID0gZnVuY3Rpb24gKGNvbnN0cnVjdG9yKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcudHlwZSA9IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nVHlwZUVudW0uQ29uc3RydWN0b3I7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuaW1wbGVtZW50YXRpb25UeXBlID0gY29uc3RydWN0b3I7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuc2NvcGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1Njb3BlRW51bS5TaW5nbGV0b247XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ193aGVuX29uX3N5bnRheF8xLkJpbmRpbmdXaGVuT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nVG9TeW50YXgucHJvdG90eXBlLnRvRmFjdG9yeSA9IGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcudHlwZSA9IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nVHlwZUVudW0uRmFjdG9yeTtcbiAgICAgICAgdGhpcy5fYmluZGluZy5mYWN0b3J5ID0gZmFjdG9yeTtcbiAgICAgICAgdGhpcy5fYmluZGluZy5zY29wZSA9IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nU2NvcGVFbnVtLlNpbmdsZXRvbjtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX3doZW5fb25fc3ludGF4XzEuQmluZGluZ1doZW5PblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdUb1N5bnRheC5wcm90b3R5cGUudG9GdW5jdGlvbiA9IGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5JTlZBTElEX0ZVTkNUSU9OX0JJTkRJTkcpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiaW5kaW5nV2hlbk9uU3ludGF4ID0gdGhpcy50b0NvbnN0YW50VmFsdWUoZnVuYyk7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcudHlwZSA9IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nVHlwZUVudW0uRnVuY3Rpb247XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuc2NvcGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1Njb3BlRW51bS5TaW5nbGV0b247XG4gICAgICAgIHJldHVybiBiaW5kaW5nV2hlbk9uU3ludGF4O1xuICAgIH07XG4gICAgQmluZGluZ1RvU3ludGF4LnByb3RvdHlwZS50b0F1dG9GYWN0b3J5ID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcudHlwZSA9IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nVHlwZUVudW0uRmFjdG9yeTtcbiAgICAgICAgdGhpcy5fYmluZGluZy5mYWN0b3J5ID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgICAgIHZhciBhdXRvZmFjdG9yeSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbnRleHQuY29udGFpbmVyLmdldChzZXJ2aWNlSWRlbnRpZmllcik7IH07XG4gICAgICAgICAgICByZXR1cm4gYXV0b2ZhY3Rvcnk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuc2NvcGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1Njb3BlRW51bS5TaW5nbGV0b247XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ193aGVuX29uX3N5bnRheF8xLkJpbmRpbmdXaGVuT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nVG9TeW50YXgucHJvdG90eXBlLnRvUHJvdmlkZXIgPSBmdW5jdGlvbiAocHJvdmlkZXIpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy50eXBlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5Qcm92aWRlcjtcbiAgICAgICAgdGhpcy5fYmluZGluZy5wcm92aWRlciA9IHByb3ZpZGVyO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnNjb3BlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uU2luZ2xldG9uO1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfd2hlbl9vbl9zeW50YXhfMS5CaW5kaW5nV2hlbk9uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1RvU3ludGF4LnByb3RvdHlwZS50b1NlcnZpY2UgPSBmdW5jdGlvbiAoc2VydmljZSkge1xuICAgICAgICB0aGlzLnRvRHluYW1pY1ZhbHVlKGZ1bmN0aW9uIChjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmNvbnRhaW5lci5nZXQoc2VydmljZSk7IH0pO1xuICAgIH07XG4gICAgcmV0dXJuIEJpbmRpbmdUb1N5bnRheDtcbn0oKSk7XG5leHBvcnRzLkJpbmRpbmdUb1N5bnRheCA9IEJpbmRpbmdUb1N5bnRheDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJpbmRpbmdfdG9fc3ludGF4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/syntax/binding_to_syntax.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/syntax/binding_when_on_syntax.js": /*!*********************************************************************!*\ !*** ./node_modules/inversify/lib/syntax/binding_when_on_syntax.js ***! \*********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingWhenOnSyntax = void 0;\nvar binding_on_syntax_1 = __webpack_require__(/*! ./binding_on_syntax */ \"./node_modules/inversify/lib/syntax/binding_on_syntax.js\");\nvar binding_when_syntax_1 = __webpack_require__(/*! ./binding_when_syntax */ \"./node_modules/inversify/lib/syntax/binding_when_syntax.js\");\nvar BindingWhenOnSyntax = (function () {\n function BindingWhenOnSyntax(binding) {\n this._binding = binding;\n this._bindingWhenSyntax = new binding_when_syntax_1.BindingWhenSyntax(this._binding);\n this._bindingOnSyntax = new binding_on_syntax_1.BindingOnSyntax(this._binding);\n }\n BindingWhenOnSyntax.prototype.when = function (constraint) {\n return this._bindingWhenSyntax.when(constraint);\n };\n BindingWhenOnSyntax.prototype.whenTargetNamed = function (name) {\n return this._bindingWhenSyntax.whenTargetNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenTargetIsDefault = function () {\n return this._bindingWhenSyntax.whenTargetIsDefault();\n };\n BindingWhenOnSyntax.prototype.whenTargetTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenTargetTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenInjectedInto = function (parent) {\n return this._bindingWhenSyntax.whenInjectedInto(parent);\n };\n BindingWhenOnSyntax.prototype.whenParentNamed = function (name) {\n return this._bindingWhenSyntax.whenParentNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenParentTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenParentTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenAnyAncestorIs(ancestor);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenNoAncestorIs(ancestor);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenAnyAncestorNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenAnyAncestorTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenNoAncestorNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenNoAncestorTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenAnyAncestorMatches(constraint);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenNoAncestorMatches(constraint);\n };\n BindingWhenOnSyntax.prototype.onActivation = function (handler) {\n return this._bindingOnSyntax.onActivation(handler);\n };\n return BindingWhenOnSyntax;\n}());\nexports.BindingWhenOnSyntax = BindingWhenOnSyntax;\n//# sourceMappingURL=binding_when_on_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9zeW50YXgvYmluZGluZ193aGVuX29uX3N5bnRheC5qcz8yY2FjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSwwQkFBMEIsbUJBQU8sQ0FBQyxxRkFBcUI7QUFDdkQsNEJBQTRCLG1CQUFPLENBQUMseUZBQXVCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9zeW50YXgvYmluZGluZ193aGVuX29uX3N5bnRheC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5CaW5kaW5nV2hlbk9uU3ludGF4ID0gdm9pZCAwO1xudmFyIGJpbmRpbmdfb25fc3ludGF4XzEgPSByZXF1aXJlKFwiLi9iaW5kaW5nX29uX3N5bnRheFwiKTtcbnZhciBiaW5kaW5nX3doZW5fc3ludGF4XzEgPSByZXF1aXJlKFwiLi9iaW5kaW5nX3doZW5fc3ludGF4XCIpO1xudmFyIEJpbmRpbmdXaGVuT25TeW50YXggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJpbmRpbmdXaGVuT25TeW50YXgoYmluZGluZykge1xuICAgICAgICB0aGlzLl9iaW5kaW5nID0gYmluZGluZztcbiAgICAgICAgdGhpcy5fYmluZGluZ1doZW5TeW50YXggPSBuZXcgYmluZGluZ193aGVuX3N5bnRheF8xLkJpbmRpbmdXaGVuU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgICAgICB0aGlzLl9iaW5kaW5nT25TeW50YXggPSBuZXcgYmluZGluZ19vbl9zeW50YXhfMS5CaW5kaW5nT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfVxuICAgIEJpbmRpbmdXaGVuT25TeW50YXgucHJvdG90eXBlLndoZW4gPSBmdW5jdGlvbiAoY29uc3RyYWludCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbihjb25zdHJhaW50KTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5UYXJnZXROYW1lZCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuVGFyZ2V0TmFtZWQobmFtZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuVGFyZ2V0SXNEZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlblRhcmdldElzRGVmYXVsdCgpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5PblN5bnRheC5wcm90b3R5cGUud2hlblRhcmdldFRhZ2dlZCA9IGZ1bmN0aW9uICh0YWcsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuVGFyZ2V0VGFnZ2VkKHRhZywgdmFsdWUpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5PblN5bnRheC5wcm90b3R5cGUud2hlbkluamVjdGVkSW50byA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5JbmplY3RlZEludG8ocGFyZW50KTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5QYXJlbnROYW1lZCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuUGFyZW50TmFtZWQobmFtZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuUGFyZW50VGFnZ2VkID0gZnVuY3Rpb24gKHRhZywgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5QYXJlbnRUYWdnZWQodGFnLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuQW55QW5jZXN0b3JJcyA9IGZ1bmN0aW9uIChhbmNlc3Rvcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbkFueUFuY2VzdG9ySXMoYW5jZXN0b3IpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5PblN5bnRheC5wcm90b3R5cGUud2hlbk5vQW5jZXN0b3JJcyA9IGZ1bmN0aW9uIChhbmNlc3Rvcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbk5vQW5jZXN0b3JJcyhhbmNlc3Rvcik7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuQW55QW5jZXN0b3JOYW1lZCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuQW55QW5jZXN0b3JOYW1lZChuYW1lKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5BbnlBbmNlc3RvclRhZ2dlZCA9IGZ1bmN0aW9uICh0YWcsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuQW55QW5jZXN0b3JUYWdnZWQodGFnLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuTm9BbmNlc3Rvck5hbWVkID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5Ob0FuY2VzdG9yTmFtZWQobmFtZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuTm9BbmNlc3RvclRhZ2dlZCA9IGZ1bmN0aW9uICh0YWcsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuTm9BbmNlc3RvclRhZ2dlZCh0YWcsIHZhbHVlKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5BbnlBbmNlc3Rvck1hdGNoZXMgPSBmdW5jdGlvbiAoY29uc3RyYWludCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbkFueUFuY2VzdG9yTWF0Y2hlcyhjb25zdHJhaW50KTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5Ob0FuY2VzdG9yTWF0Y2hlcyA9IGZ1bmN0aW9uIChjb25zdHJhaW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuTm9BbmNlc3Rvck1hdGNoZXMoY29uc3RyYWludCk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS5vbkFjdGl2YXRpb24gPSBmdW5jdGlvbiAoaGFuZGxlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ09uU3ludGF4Lm9uQWN0aXZhdGlvbihoYW5kbGVyKTtcbiAgICB9O1xuICAgIHJldHVybiBCaW5kaW5nV2hlbk9uU3ludGF4O1xufSgpKTtcbmV4cG9ydHMuQmluZGluZ1doZW5PblN5bnRheCA9IEJpbmRpbmdXaGVuT25TeW50YXg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iaW5kaW5nX3doZW5fb25fc3ludGF4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/syntax/binding_when_on_syntax.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/syntax/binding_when_syntax.js": /*!******************************************************************!*\ !*** ./node_modules/inversify/lib/syntax/binding_when_syntax.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingWhenSyntax = void 0;\nvar binding_on_syntax_1 = __webpack_require__(/*! ./binding_on_syntax */ \"./node_modules/inversify/lib/syntax/binding_on_syntax.js\");\nvar constraint_helpers_1 = __webpack_require__(/*! ./constraint_helpers */ \"./node_modules/inversify/lib/syntax/constraint_helpers.js\");\nvar BindingWhenSyntax = (function () {\n function BindingWhenSyntax(binding) {\n this._binding = binding;\n }\n BindingWhenSyntax.prototype.when = function (constraint) {\n this._binding.constraint = constraint;\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenTargetNamed = function (name) {\n this._binding.constraint = constraint_helpers_1.namedConstraint(name);\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenTargetIsDefault = function () {\n this._binding.constraint = function (request) {\n var targetIsDefault = (request.target !== null) &&\n (!request.target.isNamed()) &&\n (!request.target.isTagged());\n return targetIsDefault;\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenTargetTagged = function (tag, value) {\n this._binding.constraint = constraint_helpers_1.taggedConstraint(tag)(value);\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenInjectedInto = function (parent) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.typeConstraint(parent)(request.parentRequest);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenParentNamed = function (name) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.namedConstraint(name)(request.parentRequest);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenParentTagged = function (tag, value) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.taggedConstraint(tag)(value)(request.parentRequest);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.typeConstraint(ancestor));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorIs = function (ancestor) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.typeConstraint(ancestor));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorNamed = function (name) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.namedConstraint(name));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorNamed = function (name) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.namedConstraint(name));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.taggedConstraint(tag)(value));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.taggedConstraint(tag)(value));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorMatches = function (constraint) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n return BindingWhenSyntax;\n}());\nexports.BindingWhenSyntax = BindingWhenSyntax;\n//# sourceMappingURL=binding_when_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9zeW50YXgvYmluZGluZ193aGVuX3N5bnRheC5qcz9jZjgxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSwwQkFBMEIsbUJBQU8sQ0FBQyxxRkFBcUI7QUFDdkQsMkJBQTJCLG1CQUFPLENBQUMsdUZBQXNCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnZlcnNpZnkvbGliL3N5bnRheC9iaW5kaW5nX3doZW5fc3ludGF4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkJpbmRpbmdXaGVuU3ludGF4ID0gdm9pZCAwO1xudmFyIGJpbmRpbmdfb25fc3ludGF4XzEgPSByZXF1aXJlKFwiLi9iaW5kaW5nX29uX3N5bnRheFwiKTtcbnZhciBjb25zdHJhaW50X2hlbHBlcnNfMSA9IHJlcXVpcmUoXCIuL2NvbnN0cmFpbnRfaGVscGVyc1wiKTtcbnZhciBCaW5kaW5nV2hlblN5bnRheCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQmluZGluZ1doZW5TeW50YXgoYmluZGluZykge1xuICAgICAgICB0aGlzLl9iaW5kaW5nID0gYmluZGluZztcbiAgICB9XG4gICAgQmluZGluZ1doZW5TeW50YXgucHJvdG90eXBlLndoZW4gPSBmdW5jdGlvbiAoY29uc3RyYWludCkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNvbnN0cmFpbnQgPSBjb25zdHJhaW50O1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfb25fc3ludGF4XzEuQmluZGluZ09uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5TeW50YXgucHJvdG90eXBlLndoZW5UYXJnZXROYW1lZCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuY29uc3RyYWludCA9IGNvbnN0cmFpbnRfaGVscGVyc18xLm5hbWVkQ29uc3RyYWludChuYW1lKTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuVGFyZ2V0SXNEZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNvbnN0cmFpbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgICAgICAgICAgdmFyIHRhcmdldElzRGVmYXVsdCA9IChyZXF1ZXN0LnRhcmdldCAhPT0gbnVsbCkgJiZcbiAgICAgICAgICAgICAgICAoIXJlcXVlc3QudGFyZ2V0LmlzTmFtZWQoKSkgJiZcbiAgICAgICAgICAgICAgICAoIXJlcXVlc3QudGFyZ2V0LmlzVGFnZ2VkKCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldElzRGVmYXVsdDtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuVGFyZ2V0VGFnZ2VkID0gZnVuY3Rpb24gKHRhZywgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gY29uc3RyYWludF9oZWxwZXJzXzEudGFnZ2VkQ29uc3RyYWludCh0YWcpKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuSW5qZWN0ZWRJbnRvID0gZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNvbnN0cmFpbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRfaGVscGVyc18xLnR5cGVDb25zdHJhaW50KHBhcmVudCkocmVxdWVzdC5wYXJlbnRSZXF1ZXN0KTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuUGFyZW50TmFtZWQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNvbnN0cmFpbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRfaGVscGVyc18xLm5hbWVkQ29uc3RyYWludChuYW1lKShyZXF1ZXN0LnBhcmVudFJlcXVlc3QpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfb25fc3ludGF4XzEuQmluZGluZ09uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5TeW50YXgucHJvdG90eXBlLndoZW5QYXJlbnRUYWdnZWQgPSBmdW5jdGlvbiAodGFnLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNvbnN0cmFpbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRfaGVscGVyc18xLnRhZ2dlZENvbnN0cmFpbnQodGFnKSh2YWx1ZSkocmVxdWVzdC5wYXJlbnRSZXF1ZXN0KTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuQW55QW5jZXN0b3JJcyA9IGZ1bmN0aW9uIChhbmNlc3Rvcikge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNvbnN0cmFpbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRfaGVscGVyc18xLnRyYXZlcnNlQW5jZXJzdG9ycyhyZXF1ZXN0LCBjb25zdHJhaW50X2hlbHBlcnNfMS50eXBlQ29uc3RyYWludChhbmNlc3RvcikpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfb25fc3ludGF4XzEuQmluZGluZ09uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5TeW50YXgucHJvdG90eXBlLndoZW5Ob0FuY2VzdG9ySXMgPSBmdW5jdGlvbiAoYW5jZXN0b3IpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiAhY29uc3RyYWludF9oZWxwZXJzXzEudHJhdmVyc2VBbmNlcnN0b3JzKHJlcXVlc3QsIGNvbnN0cmFpbnRfaGVscGVyc18xLnR5cGVDb25zdHJhaW50KGFuY2VzdG9yKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ19vbl9zeW50YXhfMS5CaW5kaW5nT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlblN5bnRheC5wcm90b3R5cGUud2hlbkFueUFuY2VzdG9yTmFtZWQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNvbnN0cmFpbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRfaGVscGVyc18xLnRyYXZlcnNlQW5jZXJzdG9ycyhyZXF1ZXN0LCBjb25zdHJhaW50X2hlbHBlcnNfMS5uYW1lZENvbnN0cmFpbnQobmFtZSkpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfb25fc3ludGF4XzEuQmluZGluZ09uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5TeW50YXgucHJvdG90eXBlLndoZW5Ob0FuY2VzdG9yTmFtZWQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNvbnN0cmFpbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgICAgICAgICAgcmV0dXJuICFjb25zdHJhaW50X2hlbHBlcnNfMS50cmF2ZXJzZUFuY2Vyc3RvcnMocmVxdWVzdCwgY29uc3RyYWludF9oZWxwZXJzXzEubmFtZWRDb25zdHJhaW50KG5hbWUpKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuQW55QW5jZXN0b3JUYWdnZWQgPSBmdW5jdGlvbiAodGFnLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNvbnN0cmFpbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRfaGVscGVyc18xLnRyYXZlcnNlQW5jZXJzdG9ycyhyZXF1ZXN0LCBjb25zdHJhaW50X2hlbHBlcnNfMS50YWdnZWRDb25zdHJhaW50KHRhZykodmFsdWUpKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuTm9BbmNlc3RvclRhZ2dlZCA9IGZ1bmN0aW9uICh0YWcsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuY29uc3RyYWludCA9IGZ1bmN0aW9uIChyZXF1ZXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gIWNvbnN0cmFpbnRfaGVscGVyc18xLnRyYXZlcnNlQW5jZXJzdG9ycyhyZXF1ZXN0LCBjb25zdHJhaW50X2hlbHBlcnNfMS50YWdnZWRDb25zdHJhaW50KHRhZykodmFsdWUpKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuQW55QW5jZXN0b3JNYXRjaGVzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnQpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25zdHJhaW50X2hlbHBlcnNfMS50cmF2ZXJzZUFuY2Vyc3RvcnMocmVxdWVzdCwgY29uc3RyYWludCk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ19vbl9zeW50YXhfMS5CaW5kaW5nT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlblN5bnRheC5wcm90b3R5cGUud2hlbk5vQW5jZXN0b3JNYXRjaGVzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnQpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiAhY29uc3RyYWludF9oZWxwZXJzXzEudHJhdmVyc2VBbmNlcnN0b3JzKHJlcXVlc3QsIGNvbnN0cmFpbnQpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfb25fc3ludGF4XzEuQmluZGluZ09uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgcmV0dXJuIEJpbmRpbmdXaGVuU3ludGF4O1xufSgpKTtcbmV4cG9ydHMuQmluZGluZ1doZW5TeW50YXggPSBCaW5kaW5nV2hlblN5bnRheDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJpbmRpbmdfd2hlbl9zeW50YXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/syntax/binding_when_syntax.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/syntax/constraint_helpers.js": /*!*****************************************************************!*\ !*** ./node_modules/inversify/lib/syntax/constraint_helpers.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.typeConstraint = exports.namedConstraint = exports.taggedConstraint = exports.traverseAncerstors = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/inversify/lib/planning/metadata.js\");\nvar traverseAncerstors = function (request, constraint) {\n var parent = request.parentRequest;\n if (parent !== null) {\n return constraint(parent) ? true : traverseAncerstors(parent, constraint);\n }\n else {\n return false;\n }\n};\nexports.traverseAncerstors = traverseAncerstors;\nvar taggedConstraint = function (key) { return function (value) {\n var constraint = function (request) {\n return request !== null && request.target !== null && request.target.matchesTag(key)(value);\n };\n constraint.metaData = new metadata_1.Metadata(key, value);\n return constraint;\n}; };\nexports.taggedConstraint = taggedConstraint;\nvar namedConstraint = taggedConstraint(METADATA_KEY.NAMED_TAG);\nexports.namedConstraint = namedConstraint;\nvar typeConstraint = function (type) { return function (request) {\n var binding = null;\n if (request !== null) {\n binding = request.bindings[0];\n if (typeof type === \"string\") {\n var serviceIdentifier = binding.serviceIdentifier;\n return serviceIdentifier === type;\n }\n else {\n var constructor = request.bindings[0].implementationType;\n return type === constructor;\n }\n }\n return false;\n}; };\nexports.typeConstraint = typeConstraint;\n//# sourceMappingURL=constraint_helpers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi9zeW50YXgvY29uc3RyYWludF9oZWxwZXJzLmpzPzQ1MWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLDJGQUE0QjtBQUN2RCxpQkFBaUIsbUJBQU8sQ0FBQywrRUFBc0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnZlcnNpZnkvbGliL3N5bnRheC9jb25zdHJhaW50X2hlbHBlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudHlwZUNvbnN0cmFpbnQgPSBleHBvcnRzLm5hbWVkQ29uc3RyYWludCA9IGV4cG9ydHMudGFnZ2VkQ29uc3RyYWludCA9IGV4cG9ydHMudHJhdmVyc2VBbmNlcnN0b3JzID0gdm9pZCAwO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbnZhciBtZXRhZGF0YV8xID0gcmVxdWlyZShcIi4uL3BsYW5uaW5nL21ldGFkYXRhXCIpO1xudmFyIHRyYXZlcnNlQW5jZXJzdG9ycyA9IGZ1bmN0aW9uIChyZXF1ZXN0LCBjb25zdHJhaW50KSB7XG4gICAgdmFyIHBhcmVudCA9IHJlcXVlc3QucGFyZW50UmVxdWVzdDtcbiAgICBpZiAocGFyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBjb25zdHJhaW50KHBhcmVudCkgPyB0cnVlIDogdHJhdmVyc2VBbmNlcnN0b3JzKHBhcmVudCwgY29uc3RyYWludCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufTtcbmV4cG9ydHMudHJhdmVyc2VBbmNlcnN0b3JzID0gdHJhdmVyc2VBbmNlcnN0b3JzO1xudmFyIHRhZ2dlZENvbnN0cmFpbnQgPSBmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB2YXIgY29uc3RyYWludCA9IGZ1bmN0aW9uIChyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybiByZXF1ZXN0ICE9PSBudWxsICYmIHJlcXVlc3QudGFyZ2V0ICE9PSBudWxsICYmIHJlcXVlc3QudGFyZ2V0Lm1hdGNoZXNUYWcoa2V5KSh2YWx1ZSk7XG4gICAgfTtcbiAgICBjb25zdHJhaW50Lm1ldGFEYXRhID0gbmV3IG1ldGFkYXRhXzEuTWV0YWRhdGEoa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG59OyB9O1xuZXhwb3J0cy50YWdnZWRDb25zdHJhaW50ID0gdGFnZ2VkQ29uc3RyYWludDtcbnZhciBuYW1lZENvbnN0cmFpbnQgPSB0YWdnZWRDb25zdHJhaW50KE1FVEFEQVRBX0tFWS5OQU1FRF9UQUcpO1xuZXhwb3J0cy5uYW1lZENvbnN0cmFpbnQgPSBuYW1lZENvbnN0cmFpbnQ7XG52YXIgdHlwZUNvbnN0cmFpbnQgPSBmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICB2YXIgYmluZGluZyA9IG51bGw7XG4gICAgaWYgKHJlcXVlc3QgIT09IG51bGwpIHtcbiAgICAgICAgYmluZGluZyA9IHJlcXVlc3QuYmluZGluZ3NbMF07XG4gICAgICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgdmFyIHNlcnZpY2VJZGVudGlmaWVyID0gYmluZGluZy5zZXJ2aWNlSWRlbnRpZmllcjtcbiAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlSWRlbnRpZmllciA9PT0gdHlwZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjb25zdHJ1Y3RvciA9IHJlcXVlc3QuYmluZGluZ3NbMF0uaW1wbGVtZW50YXRpb25UeXBlO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT09IGNvbnN0cnVjdG9yO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07IH07XG5leHBvcnRzLnR5cGVDb25zdHJhaW50ID0gdHlwZUNvbnN0cmFpbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25zdHJhaW50X2hlbHBlcnMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/syntax/constraint_helpers.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/utils/binding_utils.js": /*!***********************************************************!*\ !*** ./node_modules/inversify/lib/utils/binding_utils.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multiBindToService = void 0;\nvar multiBindToService = function (container) {\n return function (service) {\n return function () {\n var types = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n types[_i] = arguments[_i];\n }\n return types.forEach(function (t) { return container.bind(t).toService(service); });\n };\n };\n};\nexports.multiBindToService = multiBindToService;\n//# sourceMappingURL=binding_utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi91dGlscy9iaW5kaW5nX3V0aWxzLmpzP2VmYzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHVCQUF1QjtBQUNuRDtBQUNBO0FBQ0EsK0NBQStDLDZDQUE2QyxFQUFFO0FBQzlGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi91dGlscy9iaW5kaW5nX3V0aWxzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm11bHRpQmluZFRvU2VydmljZSA9IHZvaWQgMDtcbnZhciBtdWx0aUJpbmRUb1NlcnZpY2UgPSBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdHlwZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdHlwZXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0eXBlcy5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7IHJldHVybiBjb250YWluZXIuYmluZCh0KS50b1NlcnZpY2Uoc2VydmljZSk7IH0pO1xuICAgICAgICB9O1xuICAgIH07XG59O1xuZXhwb3J0cy5tdWx0aUJpbmRUb1NlcnZpY2UgPSBtdWx0aUJpbmRUb1NlcnZpY2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iaW5kaW5nX3V0aWxzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/utils/binding_utils.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/utils/exceptions.js": /*!********************************************************!*\ !*** ./node_modules/inversify/lib/utils/exceptions.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isStackOverflowExeption = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nfunction isStackOverflowExeption(error) {\n return (error instanceof RangeError ||\n error.message === ERROR_MSGS.STACK_OVERFLOW);\n}\nexports.isStackOverflowExeption = isStackOverflowExeption;\n//# sourceMappingURL=exceptions.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi91dGlscy9leGNlcHRpb25zLmpzP2E4YWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGlCQUFpQixtQkFBTyxDQUFDLHFGQUF5QjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi91dGlscy9leGNlcHRpb25zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmlzU3RhY2tPdmVyZmxvd0V4ZXB0aW9uID0gdm9pZCAwO1xudmFyIEVSUk9SX01TR1MgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2Vycm9yX21zZ3NcIik7XG5mdW5jdGlvbiBpc1N0YWNrT3ZlcmZsb3dFeGVwdGlvbihlcnJvcikge1xuICAgIHJldHVybiAoZXJyb3IgaW5zdGFuY2VvZiBSYW5nZUVycm9yIHx8XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgPT09IEVSUk9SX01TR1MuU1RBQ0tfT1ZFUkZMT1cpO1xufVxuZXhwb3J0cy5pc1N0YWNrT3ZlcmZsb3dFeGVwdGlvbiA9IGlzU3RhY2tPdmVyZmxvd0V4ZXB0aW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXhjZXB0aW9ucy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/utils/exceptions.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/utils/id.js": /*!************************************************!*\ !*** ./node_modules/inversify/lib/utils/id.js ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.id = void 0;\nvar idCounter = 0;\nfunction id() {\n return idCounter++;\n}\nexports.id = id;\n//# sourceMappingURL=id.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi91dGlscy9pZC5qcz83N2QzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi91dGlscy9pZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5pZCA9IHZvaWQgMDtcbnZhciBpZENvdW50ZXIgPSAwO1xuZnVuY3Rpb24gaWQoKSB7XG4gICAgcmV0dXJuIGlkQ291bnRlcisrO1xufVxuZXhwb3J0cy5pZCA9IGlkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/utils/id.js\n"); /***/ }), /***/ "./node_modules/inversify/lib/utils/serialization.js": /*!***********************************************************!*\ !*** ./node_modules/inversify/lib/utils/serialization.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.circularDependencyToException = exports.listMetadataForTarget = exports.listRegisteredBindingsForServiceIdentifier = exports.getServiceIdentifierAsString = exports.getFunctionName = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/inversify/lib/constants/error_msgs.js\");\nfunction getServiceIdentifierAsString(serviceIdentifier) {\n if (typeof serviceIdentifier === \"function\") {\n var _serviceIdentifier = serviceIdentifier;\n return _serviceIdentifier.name;\n }\n else if (typeof serviceIdentifier === \"symbol\") {\n return serviceIdentifier.toString();\n }\n else {\n var _serviceIdentifier = serviceIdentifier;\n return _serviceIdentifier;\n }\n}\nexports.getServiceIdentifierAsString = getServiceIdentifierAsString;\nfunction listRegisteredBindingsForServiceIdentifier(container, serviceIdentifier, getBindings) {\n var registeredBindingsList = \"\";\n var registeredBindings = getBindings(container, serviceIdentifier);\n if (registeredBindings.length !== 0) {\n registeredBindingsList = \"\\nRegistered bindings:\";\n registeredBindings.forEach(function (binding) {\n var name = \"Object\";\n if (binding.implementationType !== null) {\n name = getFunctionName(binding.implementationType);\n }\n registeredBindingsList = registeredBindingsList + \"\\n \" + name;\n if (binding.constraint.metaData) {\n registeredBindingsList = registeredBindingsList + \" - \" + binding.constraint.metaData;\n }\n });\n }\n return registeredBindingsList;\n}\nexports.listRegisteredBindingsForServiceIdentifier = listRegisteredBindingsForServiceIdentifier;\nfunction alreadyDependencyChain(request, serviceIdentifier) {\n if (request.parentRequest === null) {\n return false;\n }\n else if (request.parentRequest.serviceIdentifier === serviceIdentifier) {\n return true;\n }\n else {\n return alreadyDependencyChain(request.parentRequest, serviceIdentifier);\n }\n}\nfunction dependencyChainToString(request) {\n function _createStringArr(req, result) {\n if (result === void 0) { result = []; }\n var serviceIdentifier = getServiceIdentifierAsString(req.serviceIdentifier);\n result.push(serviceIdentifier);\n if (req.parentRequest !== null) {\n return _createStringArr(req.parentRequest, result);\n }\n return result;\n }\n var stringArr = _createStringArr(request);\n return stringArr.reverse().join(\" --> \");\n}\nfunction circularDependencyToException(request) {\n request.childRequests.forEach(function (childRequest) {\n if (alreadyDependencyChain(childRequest, childRequest.serviceIdentifier)) {\n var services = dependencyChainToString(childRequest);\n throw new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY + \" \" + services);\n }\n else {\n circularDependencyToException(childRequest);\n }\n });\n}\nexports.circularDependencyToException = circularDependencyToException;\nfunction listMetadataForTarget(serviceIdentifierString, target) {\n if (target.isTagged() || target.isNamed()) {\n var m_1 = \"\";\n var namedTag = target.getNamedTag();\n var otherTags = target.getCustomTags();\n if (namedTag !== null) {\n m_1 += namedTag.toString() + \"\\n\";\n }\n if (otherTags !== null) {\n otherTags.forEach(function (tag) {\n m_1 += tag.toString() + \"\\n\";\n });\n }\n return \" \" + serviceIdentifierString + \"\\n \" + serviceIdentifierString + \" - \" + m_1;\n }\n else {\n return \" \" + serviceIdentifierString;\n }\n}\nexports.listMetadataForTarget = listMetadataForTarget;\nfunction getFunctionName(v) {\n if (v.name) {\n return v.name;\n }\n else {\n var name_1 = v.toString();\n var match = name_1.match(/^function\\s*([^\\s(]+)/);\n return match ? match[1] : \"Anonymous function: \" + name_1;\n }\n}\nexports.getFunctionName = getFunctionName;\n//# sourceMappingURL=serialization.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW52ZXJzaWZ5L2xpYi91dGlscy9zZXJpYWxpemF0aW9uLmpzP2JhMzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGlCQUFpQixtQkFBTyxDQUFDLHFGQUF5QjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLGFBQWE7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pbnZlcnNpZnkvbGliL3V0aWxzL3NlcmlhbGl6YXRpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY2lyY3VsYXJEZXBlbmRlbmN5VG9FeGNlcHRpb24gPSBleHBvcnRzLmxpc3RNZXRhZGF0YUZvclRhcmdldCA9IGV4cG9ydHMubGlzdFJlZ2lzdGVyZWRCaW5kaW5nc0ZvclNlcnZpY2VJZGVudGlmaWVyID0gZXhwb3J0cy5nZXRTZXJ2aWNlSWRlbnRpZmllckFzU3RyaW5nID0gZXhwb3J0cy5nZXRGdW5jdGlvbk5hbWUgPSB2b2lkIDA7XG52YXIgRVJST1JfTVNHUyA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvZXJyb3JfbXNnc1wiKTtcbmZ1bmN0aW9uIGdldFNlcnZpY2VJZGVudGlmaWVyQXNTdHJpbmcoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICBpZiAodHlwZW9mIHNlcnZpY2VJZGVudGlmaWVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdmFyIF9zZXJ2aWNlSWRlbnRpZmllciA9IHNlcnZpY2VJZGVudGlmaWVyO1xuICAgICAgICByZXR1cm4gX3NlcnZpY2VJZGVudGlmaWVyLm5hbWU7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBzZXJ2aWNlSWRlbnRpZmllciA9PT0gXCJzeW1ib2xcIikge1xuICAgICAgICByZXR1cm4gc2VydmljZUlkZW50aWZpZXIudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBfc2VydmljZUlkZW50aWZpZXIgPSBzZXJ2aWNlSWRlbnRpZmllcjtcbiAgICAgICAgcmV0dXJuIF9zZXJ2aWNlSWRlbnRpZmllcjtcbiAgICB9XG59XG5leHBvcnRzLmdldFNlcnZpY2VJZGVudGlmaWVyQXNTdHJpbmcgPSBnZXRTZXJ2aWNlSWRlbnRpZmllckFzU3RyaW5nO1xuZnVuY3Rpb24gbGlzdFJlZ2lzdGVyZWRCaW5kaW5nc0ZvclNlcnZpY2VJZGVudGlmaWVyKGNvbnRhaW5lciwgc2VydmljZUlkZW50aWZpZXIsIGdldEJpbmRpbmdzKSB7XG4gICAgdmFyIHJlZ2lzdGVyZWRCaW5kaW5nc0xpc3QgPSBcIlwiO1xuICAgIHZhciByZWdpc3RlcmVkQmluZGluZ3MgPSBnZXRCaW5kaW5ncyhjb250YWluZXIsIHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICBpZiAocmVnaXN0ZXJlZEJpbmRpbmdzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZWdpc3RlcmVkQmluZGluZ3NMaXN0ID0gXCJcXG5SZWdpc3RlcmVkIGJpbmRpbmdzOlwiO1xuICAgICAgICByZWdpc3RlcmVkQmluZGluZ3MuZm9yRWFjaChmdW5jdGlvbiAoYmluZGluZykge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBcIk9iamVjdFwiO1xuICAgICAgICAgICAgaWYgKGJpbmRpbmcuaW1wbGVtZW50YXRpb25UeXBlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbmFtZSA9IGdldEZ1bmN0aW9uTmFtZShiaW5kaW5nLmltcGxlbWVudGF0aW9uVHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWdpc3RlcmVkQmluZGluZ3NMaXN0ID0gcmVnaXN0ZXJlZEJpbmRpbmdzTGlzdCArIFwiXFxuIFwiICsgbmFtZTtcbiAgICAgICAgICAgIGlmIChiaW5kaW5nLmNvbnN0cmFpbnQubWV0YURhdGEpIHtcbiAgICAgICAgICAgICAgICByZWdpc3RlcmVkQmluZGluZ3NMaXN0ID0gcmVnaXN0ZXJlZEJpbmRpbmdzTGlzdCArIFwiIC0gXCIgKyBiaW5kaW5nLmNvbnN0cmFpbnQubWV0YURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVnaXN0ZXJlZEJpbmRpbmdzTGlzdDtcbn1cbmV4cG9ydHMubGlzdFJlZ2lzdGVyZWRCaW5kaW5nc0ZvclNlcnZpY2VJZGVudGlmaWVyID0gbGlzdFJlZ2lzdGVyZWRCaW5kaW5nc0ZvclNlcnZpY2VJZGVudGlmaWVyO1xuZnVuY3Rpb24gYWxyZWFkeURlcGVuZGVuY3lDaGFpbihyZXF1ZXN0LCBzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgIGlmIChyZXF1ZXN0LnBhcmVudFJlcXVlc3QgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIGlmIChyZXF1ZXN0LnBhcmVudFJlcXVlc3Quc2VydmljZUlkZW50aWZpZXIgPT09IHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGFscmVhZHlEZXBlbmRlbmN5Q2hhaW4ocmVxdWVzdC5wYXJlbnRSZXF1ZXN0LCBzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgfVxufVxuZnVuY3Rpb24gZGVwZW5kZW5jeUNoYWluVG9TdHJpbmcocmVxdWVzdCkge1xuICAgIGZ1bmN0aW9uIF9jcmVhdGVTdHJpbmdBcnIocmVxLCByZXN1bHQpIHtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwKSB7IHJlc3VsdCA9IFtdOyB9XG4gICAgICAgIHZhciBzZXJ2aWNlSWRlbnRpZmllciA9IGdldFNlcnZpY2VJZGVudGlmaWVyQXNTdHJpbmcocmVxLnNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgcmVzdWx0LnB1c2goc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICBpZiAocmVxLnBhcmVudFJlcXVlc3QgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBfY3JlYXRlU3RyaW5nQXJyKHJlcS5wYXJlbnRSZXF1ZXN0LCByZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHZhciBzdHJpbmdBcnIgPSBfY3JlYXRlU3RyaW5nQXJyKHJlcXVlc3QpO1xuICAgIHJldHVybiBzdHJpbmdBcnIucmV2ZXJzZSgpLmpvaW4oXCIgLS0+IFwiKTtcbn1cbmZ1bmN0aW9uIGNpcmN1bGFyRGVwZW5kZW5jeVRvRXhjZXB0aW9uKHJlcXVlc3QpIHtcbiAgICByZXF1ZXN0LmNoaWxkUmVxdWVzdHMuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGRSZXF1ZXN0KSB7XG4gICAgICAgIGlmIChhbHJlYWR5RGVwZW5kZW5jeUNoYWluKGNoaWxkUmVxdWVzdCwgY2hpbGRSZXF1ZXN0LnNlcnZpY2VJZGVudGlmaWVyKSkge1xuICAgICAgICAgICAgdmFyIHNlcnZpY2VzID0gZGVwZW5kZW5jeUNoYWluVG9TdHJpbmcoY2hpbGRSZXF1ZXN0KTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLkNJUkNVTEFSX0RFUEVOREVOQ1kgKyBcIiBcIiArIHNlcnZpY2VzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNpcmN1bGFyRGVwZW5kZW5jeVRvRXhjZXB0aW9uKGNoaWxkUmVxdWVzdCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmV4cG9ydHMuY2lyY3VsYXJEZXBlbmRlbmN5VG9FeGNlcHRpb24gPSBjaXJjdWxhckRlcGVuZGVuY3lUb0V4Y2VwdGlvbjtcbmZ1bmN0aW9uIGxpc3RNZXRhZGF0YUZvclRhcmdldChzZXJ2aWNlSWRlbnRpZmllclN0cmluZywgdGFyZ2V0KSB7XG4gICAgaWYgKHRhcmdldC5pc1RhZ2dlZCgpIHx8IHRhcmdldC5pc05hbWVkKCkpIHtcbiAgICAgICAgdmFyIG1fMSA9IFwiXCI7XG4gICAgICAgIHZhciBuYW1lZFRhZyA9IHRhcmdldC5nZXROYW1lZFRhZygpO1xuICAgICAgICB2YXIgb3RoZXJUYWdzID0gdGFyZ2V0LmdldEN1c3RvbVRhZ3MoKTtcbiAgICAgICAgaWYgKG5hbWVkVGFnICE9PSBudWxsKSB7XG4gICAgICAgICAgICBtXzEgKz0gbmFtZWRUYWcudG9TdHJpbmcoKSArIFwiXFxuXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG90aGVyVGFncyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgb3RoZXJUYWdzLmZvckVhY2goZnVuY3Rpb24gKHRhZykge1xuICAgICAgICAgICAgICAgIG1fMSArPSB0YWcudG9TdHJpbmcoKSArIFwiXFxuXCI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCIgXCIgKyBzZXJ2aWNlSWRlbnRpZmllclN0cmluZyArIFwiXFxuIFwiICsgc2VydmljZUlkZW50aWZpZXJTdHJpbmcgKyBcIiAtIFwiICsgbV8xO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiIFwiICsgc2VydmljZUlkZW50aWZpZXJTdHJpbmc7XG4gICAgfVxufVxuZXhwb3J0cy5saXN0TWV0YWRhdGFGb3JUYXJnZXQgPSBsaXN0TWV0YWRhdGFGb3JUYXJnZXQ7XG5mdW5jdGlvbiBnZXRGdW5jdGlvbk5hbWUodikge1xuICAgIGlmICh2Lm5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHYubmFtZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBuYW1lXzEgPSB2LnRvU3RyaW5nKCk7XG4gICAgICAgIHZhciBtYXRjaCA9IG5hbWVfMS5tYXRjaCgvXmZ1bmN0aW9uXFxzKihbXlxccyhdKykvKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBcIkFub255bW91cyBmdW5jdGlvbjogXCIgKyBuYW1lXzE7XG4gICAgfVxufVxuZXhwb3J0cy5nZXRGdW5jdGlvbk5hbWUgPSBnZXRGdW5jdGlvbk5hbWU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZXJpYWxpemF0aW9uLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/inversify/lib/utils/serialization.js\n"); /***/ }), /***/ "./node_modules/is-any-array/lib-esm/index.js": /*!****************************************************!*\ !*** ./node_modules/is-any-array/lib-esm/index.js ***! \****************************************************/ /*! exports provided: isAnyArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAnyArray\", function() { return isAnyArray; });\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nfunction isAnyArray(value) {\n return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L2xpYi1lc20vaW5kZXguanM/YjBhZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLElBQUk7QUFDZixhQUFhLFFBQVE7QUFDckI7QUFDTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pcy1hbnktYXJyYXkvbGliLWVzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhbiBBcnJheSAoYXJyYXkgb3IgdHlwZWQgYXJyYXkpLlxuICpcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIE9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FueUFycmF5KHZhbHVlKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpLmVuZHNXaXRoKCdBcnJheV0nKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/is-any-array/lib-esm/index.js\n"); /***/ }), /***/ "./node_modules/is-arrayish/index.js": /*!*******************************************!*\ !*** ./node_modules/is-arrayish/index.js ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaXMtYXJyYXlpc2gvaW5kZXguanM/ZjBjYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9pcy1hcnJheWlzaC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBcnJheWlzaChvYmopIHtcblx0aWYgKCFvYmogfHwgdHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRyZXR1cm4gb2JqIGluc3RhbmNlb2YgQXJyYXkgfHwgQXJyYXkuaXNBcnJheShvYmopIHx8XG5cdFx0KG9iai5sZW5ndGggPj0gMCAmJiAob2JqLnNwbGljZSBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8XG5cdFx0XHQoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIChvYmoubGVuZ3RoIC0gMSkpICYmIG9iai5jb25zdHJ1Y3Rvci5uYW1lICE9PSAnU3RyaW5nJykpKTtcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/is-arrayish/index.js\n"); /***/ }), /***/ "./node_modules/lodash/lodash.js": /*!***************************************!*\ !*** ./node_modules/lodash/lodash.js ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = true && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '